aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2010-11-06 21:41:14 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2010-11-06 21:41:14 -0400
commite43fb604d6db229d70d3101aa53348cc16a5473a (patch)
tree5aaa9c838272896e941c2c390c8e8d10ddda894e /src
parentd7a2ce4905da7d812407b6354f038aac17e97024 (diff)
downloadpostgresql-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.c2
-rw-r--r--src/bin/psql/describe.c13
-rw-r--r--src/bin/psql/describe.h2
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);