diff --git a/classes/database/Postgres.php b/classes/database/Postgres.php index f579f2997..5e4dba0bb 100755 --- a/classes/database/Postgres.php +++ b/classes/database/Postgres.php @@ -861,10 +861,10 @@ function getSchemas() { } else $where = "WHERE nspname !~ '^pg_t(emp_[0-9]+|oast)$'"; $sql = " - SELECT pn.nspname, pu.usename AS nspowner, + SELECT pn.nspname, pu.rolname AS nspowner, pg_catalog.obj_description(pn.oid, 'pg_namespace') AS nspcomment FROM pg_catalog.pg_namespace pn - LEFT JOIN pg_catalog.pg_user pu ON (pn.nspowner = pu.usesysid) + LEFT JOIN pg_catalog.pg_authid pu ON (pn.nspowner = pu.oid) {$where} ORDER BY nspname"; diff --git a/classes/database/Postgres80.php b/classes/database/Postgres80.php index b64327b76..0bb9db649 100644 --- a/classes/database/Postgres80.php +++ b/classes/database/Postgres80.php @@ -105,6 +105,34 @@ function getDatabases($currentdatabase = NULL) { // Schema functions + /** + * Return all schemas in the current database. + * @return All schemas, sorted alphabetically + */ + function getSchemas() { + global $conf, $slony; + + if (!$conf['show_system']) { + $where = "WHERE nspname NOT LIKE 'pg@_%' ESCAPE '@' AND nspname != 'information_schema'"; + if (isset($slony) && $slony->isEnabled()) { + $temp = $slony->slony_schema; + $this->clean($temp); + $where .= " AND nspname != '{$temp}'"; + } + + } + else $where = "WHERE nspname !~ '^pg_t(emp_[0-9]+|oast)$'"; + $sql = " + SELECT pn.nspname, pu.usename AS nspowner, + pg_catalog.obj_description(pn.oid, 'pg_namespace') AS nspcomment + FROM pg_catalog.pg_namespace pn + LEFT JOIN pg_catalog.pg_user pu ON (pn.nspowner = pu.usesysid) + {$where} + ORDER BY nspname"; + + return $this->selectSet($sql); + } + /** * Return all information relating to a schema * @param $schema The name of the schema