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 /classes/database | |
| 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
Diffstat (limited to 'classes/database')
| -rwxr-xr-x | classes/database/Postgres.php | 6 | ||||
| -rw-r--r-- | classes/database/Postgres81.php | 24 |
2 files changed, 28 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 |
