aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/bin/psql/command.c8
-rw-r--r--src/bin/psql/describe.c22
-rw-r--r--src/bin/psql/describe.h4
3 files changed, 15 insertions, 19 deletions
diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c
index 0788bb8e71a..41888666de1 100644
--- a/src/bin/psql/command.c
+++ b/src/bin/psql/command.c
@@ -3,7 +3,7 @@
*
* Copyright (c) 2000-2009, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/bin/psql/command.c,v 1.201 2009/01/06 21:10:30 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/command.c,v 1.202 2009/01/20 02:13:42 momjian Exp $
*/
#include "postgres_fe.h"
#include "command.h"
@@ -334,14 +334,15 @@ exec_command(const char *cmd,
OT_NORMAL, NULL, true);
show_verbose = strchr(cmd, '+') ? true : false;
- show_system = strchr(cmd, 'S') ? true: false;
+ show_system = strchr(cmd, 'S') ? true : false;
switch (cmd[1])
{
case '\0':
case '+':
+ case 'S':
if (pattern)
- success = describeTableDetails(pattern, show_verbose);
+ success = describeTableDetails(pattern, show_verbose, show_system);
else
/* standard listing of interesting things */
success = listTables("tvs", NULL, show_verbose, show_system);
@@ -390,7 +391,6 @@ exec_command(const char *cmd,
case 'v':
case 'i':
case 's':
- case 'S':
success = listTables(&cmd[1], pattern, show_verbose, show_system);
break;
case 'u':
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index 1ff7513e8e7..01cb9bee4be 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -8,7 +8,7 @@
*
* Copyright (c) 2000-2009, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/bin/psql/describe.c,v 1.196 2009/01/19 18:44:32 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/describe.c,v 1.197 2009/01/20 02:13:42 momjian Exp $
*/
#include "postgres_fe.h"
@@ -782,7 +782,7 @@ objectDescription(const char *pattern, bool showSystem)
* verbose: if true, this is \d+
*/
bool
-describeTableDetails(const char *pattern, bool verbose)
+describeTableDetails(const char *pattern, bool verbose, bool showSystem)
{
PQExpBufferData buf;
PGresult *res;
@@ -797,7 +797,10 @@ describeTableDetails(const char *pattern, bool verbose)
"FROM pg_catalog.pg_class c\n"
" LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace\n");
- processSQLNamePattern(pset.db, &buf, pattern, false, false,
+ if (!showSystem)
+ appendPQExpBuffer(&buf, " WHERE n.nspname <> 'pg_catalog'\n");
+
+ processSQLNamePattern(pset.db, &buf, pattern, !showSystem, false,
"n.nspname", "c.relname", NULL,
"pg_catalog.pg_table_is_visible(c.oid)");
@@ -1961,20 +1964,13 @@ listTables(const char *tabtypes, const char *pattern, bool verbose, bool showSys
appendPQExpBuffer(&buf, "'i',");
if (showSeq)
appendPQExpBuffer(&buf, "'S',");
- if (showSystem && showTables)
+ if (showSystem)
appendPQExpBuffer(&buf, "'s',"); /* was RELKIND_SPECIAL in <= 8.1.X */
appendPQExpBuffer(&buf, "''"); /* dummy */
appendPQExpBuffer(&buf, ")\n");
- /*
- * If showSystem is specified, show only system objects (those in
- * pg_catalog). Otherwise, suppress system objects, including those in
- * pg_catalog and pg_toast. (We don't want to hide temp tables though.)
- */
- if (showSystem)
- appendPQExpBuffer(&buf,
- " AND n.nspname = 'pg_catalog'\n");
- else
+ if (!showSystem)
+ /* Exclude system and pg_toast objects, but show temp tables */
appendPQExpBuffer(&buf,
" AND n.nspname <> 'pg_catalog'\n"
" AND n.nspname !~ '^pg_toast'\n");
diff --git a/src/bin/psql/describe.h b/src/bin/psql/describe.h
index e45f7ac56c9..95c70a842de 100644
--- a/src/bin/psql/describe.h
+++ b/src/bin/psql/describe.h
@@ -3,7 +3,7 @@
*
* Copyright (c) 2000-2009, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/bin/psql/describe.h,v 1.38 2009/01/06 21:10:30 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/describe.h,v 1.39 2009/01/20 02:13:42 momjian Exp $
*/
#ifndef DESCRIBE_H
#define DESCRIBE_H
@@ -34,7 +34,7 @@ extern bool permissionsList(const char *pattern);
extern bool objectDescription(const char *pattern, bool showSystem);
/* \d foo */
-extern bool describeTableDetails(const char *pattern, bool verbose);
+extern bool describeTableDetails(const char *pattern, bool verbose, bool showSystem);
/* \dF */
extern bool listTSConfigs(const char *pattern, bool verbose);