diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml index e10cdd9aa1683649e770fc86606d0c668c0e2ba7..e2cec12ad29ec11d327b6b57efd3c5633bb0e8b9 100644 --- a/doc/src/sgml/ref/psql-ref.sgml +++ b/doc/src/sgml/ref/psql-ref.sgml @@ -1,5 +1,5 @@ <!-- -$Header: /cvsroot/pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.76 2002/09/21 18:32:54 petere Exp $ +$Header: /cvsroot/pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.77 2002/09/22 20:44:22 tgl Exp $ PostgreSQL documentation --> @@ -884,7 +884,9 @@ testdb=> This is not the actual command name: the letters i, s, t, v, S stand for index, sequence, table, view, and system table, respectively. You can specify any or all of these letters, in any - order, to obtain a listing of all the matching objects. + order, to obtain a listing of all the matching objects. The letter + S restricts the listing to system objects; without S, only non-system + objects are shown. If <quote>+</quote> is appended to the command name, each object is listed with its associated description, if any. </para> diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c index 239d984a08eba91332aba68a67387cd82673194b..9c4c93c0df41ed245f2262dd35e8f5c75cdb89a8 100644 --- a/src/bin/psql/describe.c +++ b/src/bin/psql/describe.c @@ -3,7 +3,7 @@ * * Copyright 2000-2002 by PostgreSQL Global Development Group * - * $Header: /cvsroot/pgsql/src/bin/psql/describe.c,v 1.68 2002/09/04 20:31:35 momjian Exp $ + * $Header: /cvsroot/pgsql/src/bin/psql/describe.c,v 1.69 2002/09/22 20:44:22 tgl Exp $ */ #include "postgres_fe.h" #include "describe.h" @@ -1231,7 +1231,7 @@ describeUsers(const char *pattern) * i - indexes * v - views * s - sequences - * S - system tables (~ '^pg_') + * S - system tables (pg_catalog) * (any order of the above is fine) */ bool @@ -1247,7 +1247,7 @@ listTables(const char *tabtypes, const char *pattern, bool verbose) PGresult *res; printQueryOpt myopt = pset.popt; - if (showSystem && !(showSeq || showIndexes || showViews || showTables)) + if (!(showTables || showIndexes || showViews || showSeq)) showTables = showViews = showSeq = true; initPQExpBuffer(&buf); @@ -1296,18 +1296,19 @@ listTables(const char *tabtypes, const char *pattern, bool verbose) appendPQExpBuffer(&buf, ")\n"); /* - * Unless showSystem is specified, we suppress system tables, ie, + * 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) - processNamePattern(&buf, pattern, true, false, - "n.nspname", "c.relname", NULL, - "pg_catalog.pg_table_is_visible(c.oid)"); + appendPQExpBuffer(&buf, " AND n.nspname = 'pg_catalog'\n"); else - processNamePattern(&buf, pattern, true, false, - "n.nspname", "c.relname", NULL, - "pg_catalog.pg_table_is_visible(c.oid) AND n.nspname <> 'pg_catalog' AND n.nspname <> 'pg_toast'"); + appendPQExpBuffer(&buf, " AND n.nspname NOT IN ('pg_catalog', 'pg_toast')\n"); + + processNamePattern(&buf, pattern, true, false, + "n.nspname", "c.relname", NULL, + "pg_catalog.pg_table_is_visible(c.oid)"); appendPQExpBuffer(&buf, "ORDER BY 1,2;");