summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDarik Gamble <darik.gamble@gmail.com>2015-02-12 11:26:02 -0500
committerDarik Gamble <darik.gamble@gmail.com>2015-02-12 11:26:02 -0500
commita305309b30ecf5b260264d9fe9fae6ee1b44c0ac (patch)
treeaaccc3865899fa693314ef92f17e124dc18d8d7f
parent2576ce1bf59b6b10c22118e5e85181267c78227f (diff)
\dt query shouldn't restrict schemas if schema qualifer supplied
Otherwise it's impossible to list tables from e.g. pg_catalog, even if pg_catalog is explicitly specified
-rw-r--r--pgcli/packages/pgspecial.py11
1 files changed, 7 insertions, 4 deletions
diff --git a/pgcli/packages/pgspecial.py b/pgcli/packages/pgspecial.py
index 48efb82a..3c8d0d9e 100644
--- a/pgcli/packages/pgspecial.py
+++ b/pgcli/packages/pgspecial.py
@@ -81,16 +81,19 @@ def list_objects(cur, pattern, verbose, relkinds):
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n
ON n.oid = c.relnamespace
- WHERE c.relkind = ANY(%s)
- AND n.nspname <> 'pg_catalog'
- AND n.nspname <> 'information_schema'
- AND n.nspname !~ '^pg_toast' '''
+ WHERE c.relkind = ANY(%s) '''
params = [relkinds]
if schema_pattern:
sql += ' AND n.nspname ~ %s'
params.append(schema_pattern)
+ else:
+ sql += '''
+ AND n.nspname <> 'pg_catalog'
+ AND n.nspname <> 'information_schema'
+ AND n.nspname !~ '^pg_toast'
+ AND pg_catalog.pg_table_is_visible(c.oid) '''
if table_pattern:
sql += ' AND c.relname ~ %s'