diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2010-11-06 21:41:14 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2010-11-06 21:41:14 -0400 |
commit | e43fb604d6db229d70d3101aa53348cc16a5473a (patch) | |
tree | 5aaa9c838272896e941c2c390c8e8d10ddda894e /src | |
parent | d7a2ce4905da7d812407b6354f038aac17e97024 (diff) | |
download | postgresql-e43fb604d6db229d70d3101aa53348cc16a5473a.tar.gz postgresql-e43fb604d6db229d70d3101aa53348cc16a5473a.zip |
Implement an "S" option for psql's \dn command.
\dn without "S" now hides all pg_XXX schemas as well as information_schema.
Thus, in a bare database you'll only see "public". ("public" is considered
a user schema, not a system schema, mainly because it's droppable.)
Per discussion back in late September.
Diffstat (limited to 'src')
-rw-r--r-- | src/bin/psql/command.c | 2 | ||||
-rw-r--r-- | src/bin/psql/describe.c | 13 | ||||
-rw-r--r-- | src/bin/psql/describe.h | 2 |
3 files changed, 10 insertions, 7 deletions
diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c index fe37be66f2a..c1edf44a607 100644 --- a/src/bin/psql/command.c +++ b/src/bin/psql/command.c @@ -417,7 +417,7 @@ exec_command(const char *cmd, success = do_lo_list(); break; case 'n': - success = listSchemas(pattern, show_verbose); + success = listSchemas(pattern, show_verbose, show_system); break; case 'o': success = describeOperators(pattern, show_system); diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c index b705cb29dd4..c4370a1dd39 100644 --- a/src/bin/psql/describe.c +++ b/src/bin/psql/describe.c @@ -2697,7 +2697,7 @@ listCasts(const char *pattern) * Describes schemas (namespaces) */ bool -listSchemas(const char *pattern, bool verbose) +listSchemas(const char *pattern, bool verbose, bool showSystem) { PQExpBufferData buf; PGresult *res; @@ -2720,11 +2720,14 @@ listSchemas(const char *pattern, bool verbose) } appendPQExpBuffer(&buf, - "\nFROM pg_catalog.pg_namespace n\n" - "WHERE (n.nspname !~ '^pg_temp_' OR\n" - " n.nspname = (pg_catalog.current_schemas(true))[1])\n"); /* temp schema is first */ + "\nFROM pg_catalog.pg_namespace n\n"); - processSQLNamePattern(pset.db, &buf, pattern, true, false, + if (!showSystem && !pattern) + appendPQExpBuffer(&buf, + "WHERE n.nspname !~ '^pg_' AND n.nspname <> 'information_schema'\n"); + + processSQLNamePattern(pset.db, &buf, pattern, + !showSystem && !pattern, false, NULL, "n.nspname", NULL, NULL); diff --git a/src/bin/psql/describe.h b/src/bin/psql/describe.h index ddf4aac482b..6a6abdba471 100644 --- a/src/bin/psql/describe.h +++ b/src/bin/psql/describe.h @@ -70,7 +70,7 @@ extern bool listConversions(const char *pattern, bool showSystem); extern bool listCasts(const char *pattern); /* \dn */ -extern bool listSchemas(const char *pattern, bool verbose); +extern bool listSchemas(const char *pattern, bool verbose, bool showSystem); /* \dew */ extern bool listForeignDataWrappers(const char *pattern, bool verbose); |