diff --git a/libs/Zend/Db/Adapter/Pdo/Pgsql.php b/libs/Zend/Db/Adapter/Pdo/Pgsql.php index 660a4c2..f4adbcd 100644 --- a/libs/Zend/Db/Adapter/Pdo/Pgsql.php +++ b/libs/Zend/Db/Adapter/Pdo/Pgsql.php @@ -100,18 +100,14 @@ class Zend_Db_Adapter_Pdo_Pgsql extends Zend_Db_Adapter_Pdo_Abstract public function listTables() { // @todo use a better query with joins instead of subqueries - $sql = "SELECT c.relname AS table_name " - . "FROM pg_class c, pg_user u " - . "WHERE c.relowner = u.usesysid AND c.relkind = 'r' " - . "AND NOT EXISTS (SELECT 1 FROM pg_views WHERE viewname = c.relname) " - . "AND c.relname !~ '^(pg_|sql_)' " - . "UNION " - . "SELECT c.relname AS table_name " - . "FROM pg_class c " - . "WHERE c.relkind = 'r' " - . "AND NOT EXISTS (SELECT 1 FROM pg_views WHERE viewname = c.relname) " - . "AND NOT EXISTS (SELECT 1 FROM pg_user WHERE usesysid = c.relowner) " - . "AND c.relname !~ '^pg_'"; + $sql = "SELECT c.relname AS table_name " + . "FROM pg_catalog.pg_class c " + . "JOIN pg_catalog.pg_roles r ON r.oid = c.relowner " + . "LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace " + . "WHERE n.nspname <> 'pg_catalog' " + . "AND n.nspname !~ '^pg_toast' " + . "AND pg_catalog.pg_table_is_visible(c.oid) " + . "AND c.relkind = 'r' "; return $this->fetchCol($sql); }