diff options
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); |