diff options
author | Robert Treat | 2009-07-06 00:13:42 +0000 |
---|---|---|
committer | Robert Treat | 2009-07-06 00:13:42 +0000 |
commit | fa11cd60083b96a5bb8b4fd96c01f60369e55d8e (patch) | |
tree | 25934074d38e59ab0e31ef8567802a5d6d77ef3f | |
parent | c36a6741dd28d263bcc53ba31de1ef03f76bb86a (diff) |
add ability to terminate backend processes for 8.4+
-rwxr-xr-x | classes/database/Postgres.php | 14 | ||||
-rw-r--r-- | classes/database/Postgres74.php | 2 | ||||
-rw-r--r-- | classes/database/Postgres83.php | 1 | ||||
-rwxr-xr-x | database.php | 33 | ||||
-rw-r--r-- | lang/english.php | 1 | ||||
-rw-r--r-- | lang/recoded/english.php | 1 |
6 files changed, 34 insertions, 18 deletions
diff --git a/classes/database/Postgres.php b/classes/database/Postgres.php index 80c0e078..7f42dd89 100755 --- a/classes/database/Postgres.php +++ b/classes/database/Postgres.php @@ -6814,16 +6814,19 @@ class Postgres extends ADODB_base { // 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; } @@ -7558,7 +7561,7 @@ class Postgres extends ADODB_base { 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; } @@ -7571,6 +7574,7 @@ class Postgres extends ADODB_base { function hasAlterDatabase() { return $this->hasAlterDatabaseRename(); } function hasForeignKeysInfo() { return $this->hasConstraintsInfo(); } function hasMagicTypes() { return true; } + function hasQueryKill() { return true; } } ?> diff --git a/classes/database/Postgres74.php b/classes/database/Postgres74.php index 894e1a0c..b0955b3c 100644 --- a/classes/database/Postgres74.php +++ b/classes/database/Postgres74.php @@ -341,7 +341,7 @@ class Postgres74 extends Postgres80 { 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; } } diff --git a/classes/database/Postgres83.php b/classes/database/Postgres83.php index 3f5734ca..cc399dc5 100644 --- a/classes/database/Postgres83.php +++ b/classes/database/Postgres83.php @@ -57,6 +57,7 @@ class Postgres83 extends Postgres { } function hasAutovacuumSysTable() { return true; } + function hasQueryKill() { return false; } } diff --git a/database.php b/database.php index 789ef23a..d98a6190 100755 --- a/database.php +++ b/database.php @@ -444,19 +444,28 @@ ), ); - 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']); diff --git a/lang/english.php b/lang/english.php index 01578710..db9a0d66 100644 --- a/lang/english.php +++ b/lang/english.php @@ -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'; diff --git a/lang/recoded/english.php b/lang/recoded/english.php index d3c90201..7357470a 100644 --- a/lang/recoded/english.php +++ b/lang/recoded/english.php @@ -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'; |