diff options
author | Robert Treat | 2013-05-24 22:01:19 +0000 |
---|---|---|
committer | Robert Treat | 2013-05-24 22:01:19 +0000 |
commit | 974abee83d88534339c2aa77137c2a89993dc06e (patch) | |
tree | a8976327d3b0d3fdf7a7b037a1067acc1cb67df5 | |
parent | 7ab9c747256c143e5e1c7ed0406207abedb82f0d (diff) |
Make process screen report information in a way that makes sense in postgres 9.2
Also add in the waiting option, making it work back to at least 8.1
-rwxr-xr-x | classes/database/Postgres.php | 6 | ||||
-rw-r--r-- | classes/database/Postgres81.php | 24 | ||||
-rwxr-xr-x | database.php | 4 | ||||
-rw-r--r-- | lang/english.php | 1 |
4 files changed, 33 insertions, 2 deletions
diff --git a/classes/database/Postgres.php b/classes/database/Postgres.php index cba4cd6e..73ea2af8 100755 --- a/classes/database/Postgres.php +++ b/classes/database/Postgres.php @@ -7198,12 +7198,14 @@ class Postgres extends ADODB_base { */ function getProcesses($database = null) { if ($database === null) - $sql = "SELECT datname, usename, pid, query, query_start + $sql = "SELECT datname, usename, pid, waiting, state_change as query_start, + case when state='idle in transaction' then '<IDLE> in transaction' when state = 'idle' then '<IDLE>' else query end as query FROM pg_catalog.pg_stat_activity ORDER BY datname, usename, pid"; else { $this->clean($database); - $sql = "SELECT datname, usename, pid, query, query_start + $sql = "SELECT datname, usename, pid, waiting, state_change as query_start, + case when state='idle in transaction' then '<IDLE> in transaction' when state = 'idle' then '<IDLE>' else query end as query FROM pg_catalog.pg_stat_activity WHERE datname='{$database}' ORDER BY usename, pid"; diff --git a/classes/database/Postgres81.php b/classes/database/Postgres81.php index f3ec6d18..70d40b82 100644 --- a/classes/database/Postgres81.php +++ b/classes/database/Postgres81.php @@ -226,6 +226,30 @@ class Postgres81 extends Postgres82 { return $status; } + /** + * Returns all available process information. + * @param $database (optional) Find only connections to specified database + * @return A recordset + */ + function getProcesses($database = null) { + if ($database === null) + $sql = "SELECT datname, usename, procpid AS pid, current_query AS query, query_start, + case when (select count(*) from pg_locks where pid=pg_stat_activity.procpid and granted is false) > 0 then 't' else 'f' end as waiting + FROM pg_catalog.pg_stat_activity + ORDER BY datname, usename, procpid"; + else { + $this->clean($database); + $sql = "SELECT datname, usename, procpid AS pid, current_query AS query, query_start + case when (select count(*) from pg_locks where pid=pg_stat_activity.procpid and granted is false) > 0 then 't' else 'f' end as waiting + FROM pg_catalog.pg_stat_activity + WHERE datname='{$database}' + ORDER BY usename, procpid"; + } + + $rc = $this->selectSet($sql); + + return $rc; + } // Tablespace functions diff --git a/database.php b/database.php index bb22ab52..db45594f 100755 --- a/database.php +++ b/database.php @@ -445,6 +445,10 @@ 'title' => $lang['strprocess'], 'field' => field('pid'), ), + 'blocked' => array( + 'title' => $lang['strblocked'], + 'field' => field('waiting'), + ), 'query' => array( 'title' => $lang['strsql'], 'field' => field('query'), diff --git a/lang/english.php b/lang/english.php index 7f1e7e79..c232a752 100644 --- a/lang/english.php +++ b/lang/english.php @@ -126,6 +126,7 @@ $lang['strvariables'] = 'Variables'; $lang['strprocess'] = 'Process'; $lang['strprocesses'] = 'Processes'; + $lang['strblocked'] = 'Blocked'; $lang['strsetting'] = 'Setting'; $lang['streditsql'] = 'Edit SQL'; $lang['strruntime'] = 'Total runtime: %s ms'; |