88 *
99 * Copyright (c) 2000-2009, PostgreSQL Global Development Group
1010 *
11- * $PostgreSQL: pgsql/src/bin/psql/describe.c,v 1.196 2009/01/19 18:44:32 momjian Exp $
11+ * $PostgreSQL: pgsql/src/bin/psql/describe.c,v 1.197 2009/01/20 02:13:42 momjian Exp $
1212 */
1313#include "postgres_fe.h"
1414
@@ -782,7 +782,7 @@ objectDescription(const char *pattern, bool showSystem)
782782 * verbose: if true, this is \d+
783783 */
784784bool
785- describeTableDetails (const char * pattern ,bool verbose )
785+ describeTableDetails (const char * pattern ,bool verbose , bool showSystem )
786786{
787787PQExpBufferData buf ;
788788PGresult * res ;
@@ -797,7 +797,10 @@ describeTableDetails(const char *pattern, bool verbose)
797797"FROM pg_catalog.pg_class c\n"
798798" LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace\n" );
799799
800- processSQLNamePattern (pset .db ,& buf ,pattern , false, false,
800+ if (!showSystem )
801+ appendPQExpBuffer (& buf ," WHERE n.nspname <> 'pg_catalog'\n" );
802+
803+ processSQLNamePattern (pset .db ,& buf ,pattern , !showSystem , false,
801804"n.nspname" ,"c.relname" ,NULL ,
802805"pg_catalog.pg_table_is_visible(c.oid)" );
803806
@@ -1961,20 +1964,13 @@ listTables(const char *tabtypes, const char *pattern, bool verbose, bool showSys
19611964appendPQExpBuffer (& buf ,"'i'," );
19621965if (showSeq )
19631966appendPQExpBuffer (& buf ,"'S'," );
1964- if (showSystem && showTables )
1967+ if (showSystem )
19651968appendPQExpBuffer (& buf ,"'s'," );/* was RELKIND_SPECIAL in <= 8.1.X */
19661969appendPQExpBuffer (& buf ,"''" );/* dummy */
19671970appendPQExpBuffer (& buf ,")\n" );
19681971
1969- /*
1970- * If showSystem is specified, show only system objects (those in
1971- * pg_catalog). Otherwise, suppress system objects, including those in
1972- * pg_catalog and pg_toast. (We don't want to hide temp tables though.)
1973- */
1974- if (showSystem )
1975- appendPQExpBuffer (& buf ,
1976- " AND n.nspname = 'pg_catalog'\n" );
1977- else
1972+ if (!showSystem )
1973+ /* Exclude system and pg_toast objects, but show temp tables */
19781974appendPQExpBuffer (& buf ,
19791975" AND n.nspname <> 'pg_catalog'\n"
19801976" AND n.nspname !~ '^pg_toast'\n" );