summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMagnus Hagander2012-11-27 17:22:32 +0000
committerMagnus Hagander2012-11-27 17:22:32 +0000
commitfb11598dada50b48a03385940e5b477e7c512b03 (patch)
tree4b84c5c41aa8ecd49f0d493b50601bfdbb7fea27
parent00ba6912c15e04221e15574072449051af645685 (diff)
Fix queries reading pg_shdescription
These queries need to be classoid qualified, so they work when there are multiple objects with the same oid but of different classes. (Which can always happen, but is a lot more likely to happen after a cluster has been pg_upgrade'd)
-rwxr-xr-xclasses/database/Postgres.php8
-rw-r--r--classes/database/Postgres83.php2
-rwxr-xr-xclasses/database/Postgres91.php4
3 files changed, 7 insertions, 7 deletions
diff --git a/classes/database/Postgres.php b/classes/database/Postgres.php
index 0d8a6887..b9737733 100755
--- a/classes/database/Postgres.php
+++ b/classes/database/Postgres.php
@@ -466,7 +466,7 @@ class Postgres extends ADODB_base {
$sql = "
SELECT pdb.datname AS datname, pr.rolname AS datowner, pg_encoding_to_char(encoding) AS datencoding,
- (SELECT description FROM pg_catalog.pg_shdescription pd WHERE pdb.oid=pd.objoid) AS datcomment,
+ (SELECT description FROM pg_catalog.pg_shdescription pd WHERE pdb.oid=pd.objoid AND pd.classoid='pg_database'::regclass) AS datcomment,
(SELECT spcname FROM pg_catalog.pg_tablespace pt WHERE pt.oid=pdb.dattablespace) AS tablespace,
CASE WHEN pg_catalog.has_database_privilege(current_user, pdb.oid, 'CONNECT')
THEN pg_catalog.pg_database_size(pdb.oid)
@@ -489,7 +489,7 @@ class Postgres extends ADODB_base {
*/
function getDatabaseComment($database) {
$this->clean($database);
- $sql = "SELECT description FROM pg_catalog.pg_database JOIN pg_catalog.pg_shdescription ON (oid=objoid) WHERE pg_database.datname = '{$database}' ";
+ $sql = "SELECT description FROM pg_catalog.pg_database JOIN pg_catalog.pg_shdescription ON (oid=objoid AND classoid='pg_database'::regclass) WHERE pg_database.datname = '{$database}' ";
return $this->selectSet($sql);
}
@@ -6939,7 +6939,7 @@ class Postgres extends ADODB_base {
global $conf;
$sql = "SELECT spcname, pg_catalog.pg_get_userbyid(spcowner) AS spcowner, pg_catalog.pg_tablespace_location(oid) as spclocation,
- (SELECT description FROM pg_catalog.pg_shdescription pd WHERE pg_tablespace.oid=pd.objoid) AS spccomment
+ (SELECT description FROM pg_catalog.pg_shdescription pd WHERE pg_tablespace.oid=pd.objoid AND pd.classoid='pg_tablespace'::regclass) AS spccomment
FROM pg_catalog.pg_tablespace";
if (!$conf['show_system'] && !$all) {
@@ -6959,7 +6959,7 @@ class Postgres extends ADODB_base {
$this->clean($spcname);
$sql = "SELECT spcname, pg_catalog.pg_get_userbyid(spcowner) AS spcowner, pg_catalog.pg_tablespace_location(oid) as spclocation,
- (SELECT description FROM pg_catalog.pg_shdescription pd WHERE pg_tablespace.oid=pd.objoid) AS spccomment
+ (SELECT description FROM pg_catalog.pg_shdescription pd WHERE pg_tablespace.oid=pd.objoid AND pd.classoid='pg_tablespace'::regclass) AS spccomment
FROM pg_catalog.pg_tablespace WHERE spcname='{$spcname}'";
return $this->selectSet($sql);
diff --git a/classes/database/Postgres83.php b/classes/database/Postgres83.php
index cc80e65e..3ac4f789 100644
--- a/classes/database/Postgres83.php
+++ b/classes/database/Postgres83.php
@@ -90,7 +90,7 @@ class Postgres83 extends Postgres84 {
$sql = "
SELECT pdb.datname AS datname, pr.rolname AS datowner, pg_encoding_to_char(encoding) AS datencoding,
- (SELECT description FROM pg_catalog.pg_shdescription pd WHERE pdb.oid=pd.objoid) AS datcomment,
+ (SELECT description FROM pg_catalog.pg_shdescription pd WHERE pdb.oid=pd.objoid AND pd.classoid='pg_database'::regclass) AS datcomment,
(SELECT spcname FROM pg_catalog.pg_tablespace pt WHERE pt.oid=pdb.dattablespace) AS tablespace,
pg_catalog.pg_database_size(pdb.oid) as dbsize
FROM pg_catalog.pg_database pdb LEFT JOIN pg_catalog.pg_roles pr ON (pdb.datdba = pr.oid)
diff --git a/classes/database/Postgres91.php b/classes/database/Postgres91.php
index 07dda493..f238925a 100755
--- a/classes/database/Postgres91.php
+++ b/classes/database/Postgres91.php
@@ -62,7 +62,7 @@ class Postgres91 extends Postgres {
global $conf;
$sql = "SELECT spcname, pg_catalog.pg_get_userbyid(spcowner) AS spcowner, spclocation,
- (SELECT description FROM pg_catalog.pg_shdescription pd WHERE pg_tablespace.oid=pd.objoid) AS spccomment
+ (SELECT description FROM pg_catalog.pg_shdescription pd WHERE pg_tablespace.oid=pd.objoid AND pd.classoid='pg_tablespace'::regclass) AS spccomment
FROM pg_catalog.pg_tablespace";
if (!$conf['show_system'] && !$all) {
@@ -82,7 +82,7 @@ class Postgres91 extends Postgres {
$this->clean($spcname);
$sql = "SELECT spcname, pg_catalog.pg_get_userbyid(spcowner) AS spcowner, spclocation,
- (SELECT description FROM pg_catalog.pg_shdescription pd WHERE pg_tablespace.oid=pd.objoid) AS spccomment
+ (SELECT description FROM pg_catalog.pg_shdescription pd WHERE pg_tablespace.oid=pd.objoid AND pd.classoid='pg_tablespace'::regclass) AS spccomment
FROM pg_catalog.pg_tablespace WHERE spcname='{$spcname}'";
return $this->selectSet($sql);