Skip to content

Commit

Permalink
add ability to terminate backend processes for 8.4+
Browse files Browse the repository at this point in the history
  • Loading branch information
Robert Treat committed Jul 6, 2009
1 parent c36a674 commit fa11cd6
Show file tree
Hide file tree
Showing 6 changed files with 34 additions and 18 deletions.
14 changes: 9 additions & 5 deletions classes/database/Postgres.php
Expand Up @@ -6814,16 +6814,19 @@ function sendSignal($pid, $signal) {
// Clean
$pid = (int)$pid;

if ($signal == 'CANCEL')
if ($signal == 'CANCEL')
$sql = "SELECT pg_catalog.pg_cancel_backend({$pid}) AS val";
else
elseif ($signal == 'KILL')
$sql = "SELECT pg_catalog.pg_terminate_backend({$pid}) AS val";
else
return -1;


// Execute the query
$val = $this->selectField($sql, 'val');

if ($val === -1) return -1;
elseif ($val == '1') return 0;
if ($val === 'f') return -1;
elseif ($val === 't') return 0;
else return -1;
}

Expand Down Expand Up @@ -7558,7 +7561,7 @@ function hasRecluster() { return true; }
function hasRoles() { return true; }
function hasServerAdminFuncs() { return true; }
function hasSharedComments() { return true; }
function hasSignals() { return true; }
function hasQueryCancel() { return true; }
function hasStatsCollector() { return true; }
function hasTablespaces() { return true; }
function hasUserAndDbVariables() { return true; }
Expand All @@ -7571,6 +7574,7 @@ function hasWithoutOIDs() { return true; }
function hasAlterDatabase() { return $this->hasAlterDatabaseRename(); }
function hasForeignKeysInfo() { return $this->hasConstraintsInfo(); }
function hasMagicTypes() { return true; }
function hasQueryKill() { return true; }

}
?>
2 changes: 1 addition & 1 deletion classes/database/Postgres74.php
Expand Up @@ -341,7 +341,7 @@ function hasAlterDatabaseOwner() { return false; }
function hasAlterSchemaOwner() { return false; }
function hasFunctionAlterOwner() { return false; }
function hasNamedParams() { return false; }
function hasSignals() { return false; }
function hasQueryCancel() { return false; }
function hasTablespaces() { return false; }
function hasMagicTypes() { return false; }
}
Expand Down
1 change: 1 addition & 0 deletions classes/database/Postgres83.php
Expand Up @@ -57,6 +57,7 @@ function getHelpPages() {
}

function hasAutovacuumSysTable() { return true; }
function hasQueryKill() { return false; }

}

Expand Down
33 changes: 21 additions & 12 deletions database.php
Expand Up @@ -444,19 +444,28 @@ function doProcesses($msg = '') {
),
);

if ($data->hasSignals()) {
$columns['actions'] = array('title' => $lang['stractions']);
// Build possible actions for our process list
$columns['actions'] = array('title' => $lang['stractions']);

$actions = array(
'cancel' => array(
'title' => $lang['strcancel'],
'url' => "database.php?action=signal&signal=CANCEL&{$misc->href}&",
'vars' => array('procpid' => 'procpid')
)
);
}
else $actions = array();

$actions = array(
'cancel' => array(
'title' => $lang['strcancel'],
'url' => "database.php?action=signal&signal=CANCEL&{$misc->href}&",
'vars' => array('procpid' => 'procpid')
),
'kill' => array(
'title' => $lang['strkill'],
'url' => "database.php?action=signal&signal=KILL&{$misc->href}&",
'vars' => array('procpid' => 'procpid')
)
);

// Remove actions where not supported
if (!$data->hasQueryKill()) unset($actions['kill']);
if (!$data->hasQueryCancel()) unset($actions['cancel']);

if (count($actions) == 0) unset($columns['actions']);

// Remove query start time for <7.4
if (!isset($processes->fields['query_start'])) unset($columns['start_time']);

Expand Down
1 change: 1 addition & 0 deletions lang/english.php
Expand Up @@ -60,6 +60,7 @@
$lang['stralter'] = 'Alter';
$lang['strok'] = 'OK';
$lang['strcancel'] = 'Cancel';
$lang['strkill'] = 'Kill';
$lang['strac'] = 'Enable AutoComplete';
$lang['strsave'] = 'Save';
$lang['strreset'] = 'Reset';
Expand Down
1 change: 1 addition & 0 deletions lang/recoded/english.php
Expand Up @@ -60,6 +60,7 @@
$lang['stralter'] = 'Alter';
$lang['strok'] = 'OK';
$lang['strcancel'] = 'Cancel';
$lang['strkill'] = 'Kill';
$lang['strac'] = 'Enable AutoComplete';
$lang['strsave'] = 'Save';
$lang['strreset'] = 'Reset';
Expand Down

0 comments on commit fa11cd6

Please sign in to comment.