88 *
99 * Copyright (c) 2000-2009, PostgreSQL Global Development Group
1010 *
11- * $PostgreSQL: pgsql/src/bin/psql/describe.c,v 1.203 2009/03/26 22:26:07 petere Exp $
11+ * $PostgreSQL: pgsql/src/bin/psql/describe.c,v 1.204 2009/04/02 15:15:32 momjian Exp $
1212 */
1313#include "postgres_fe.h"
1414
@@ -94,7 +94,7 @@ describeAggregates(const char *pattern, bool verbose, bool showSystem)
9494"WHERE p.proisagg\n" ,
9595gettext_noop ("Description" ));
9696
97- if (!showSystem )
97+ if (!showSystem && ! pattern )
9898appendPQExpBuffer (& buf ," AND n.nspname <> 'pg_catalog'\n" );
9999
100100processSQLNamePattern (pset .db ,& buf ,pattern , true, false,
@@ -281,7 +281,7 @@ describeFunctions(const char *pattern, bool verbose, bool showSystem)
281281" AND p.proargtypes[0] IS DISTINCT FROM 'pg_catalog.cstring'::pg_catalog.regtype\n"
282282" AND NOT p.proisagg\n" );
283283
284- if (!showSystem )
284+ if (!showSystem && ! pattern )
285285appendPQExpBuffer (& buf ," AND n.nspname <> 'pg_catalog'\n" );
286286
287287processSQLNamePattern (pset .db ,& buf ,pattern , true, false,
@@ -372,7 +372,7 @@ describeTypes(const char *pattern, bool verbose, bool showSystem)
372372else
373373appendPQExpBuffer (& buf ," AND t.typname !~ '^_'\n" );
374374
375- if (!showSystem )
375+ if (!showSystem && ! pattern )
376376appendPQExpBuffer (& buf ," AND n.nspname <> 'pg_catalog'\n" );
377377
378378/* Match name pattern against either internal or external name */
@@ -427,10 +427,10 @@ describeOperators(const char *pattern, bool showSystem)
427427gettext_noop ("Result type" ),
428428gettext_noop ("Description" ));
429429
430- if (!showSystem )
430+ if (!showSystem && ! pattern )
431431appendPQExpBuffer (& buf ," WHERE n.nspname <> 'pg_catalog'\n" );
432432
433- processSQLNamePattern (pset .db ,& buf ,pattern , !showSystem , true,
433+ processSQLNamePattern (pset .db ,& buf ,pattern , !showSystem && ! pattern , true,
434434"n.nspname" ,"o.oprname" ,NULL ,
435435"pg_catalog.pg_operator_is_visible(o.oid)" );
436436
@@ -631,7 +631,7 @@ objectDescription(const char *pattern, bool showSystem)
631631" WHERE p.proisagg\n" ,
632632gettext_noop ("aggregate" ));
633633
634- if (!showSystem )
634+ if (!showSystem && ! pattern )
635635appendPQExpBuffer (& buf ," AND n.nspname <> 'pg_catalog'\n" );
636636
637637processSQLNamePattern (pset .db ,& buf ,pattern , true, false,
@@ -654,7 +654,7 @@ objectDescription(const char *pattern, bool showSystem)
654654" AND NOT p.proisagg\n" ,
655655gettext_noop ("function" ));
656656
657- if (!showSystem )
657+ if (!showSystem && ! pattern )
658658appendPQExpBuffer (& buf ," AND n.nspname <> 'pg_catalog'\n" );
659659
660660processSQLNamePattern (pset .db ,& buf ,pattern , true, false,
@@ -672,10 +672,10 @@ objectDescription(const char *pattern, bool showSystem)
672672" LEFT JOIN pg_catalog.pg_namespace n ON n.oid = o.oprnamespace\n" ,
673673gettext_noop ("operator" ));
674674
675- if (!showSystem )
675+ if (!showSystem && ! pattern )
676676appendPQExpBuffer (& buf ," WHERE n.nspname <> 'pg_catalog'\n" );
677677
678- processSQLNamePattern (pset .db ,& buf ,pattern , !showSystem , false,
678+ processSQLNamePattern (pset .db ,& buf ,pattern , !showSystem && ! pattern , false,
679679"n.nspname" ,"o.oprname" ,NULL ,
680680"pg_catalog.pg_operator_is_visible(o.oid)" );
681681
@@ -690,10 +690,10 @@ objectDescription(const char *pattern, bool showSystem)
690690" LEFT JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace\n" ,
691691gettext_noop ("data type" ));
692692
693- if (!showSystem )
693+ if (!showSystem && ! pattern )
694694appendPQExpBuffer (& buf ," WHERE n.nspname <> 'pg_catalog'\n" );
695695
696- processSQLNamePattern (pset .db ,& buf ,pattern , !showSystem , false,
696+ processSQLNamePattern (pset .db ,& buf ,pattern , !showSystem && ! pattern , false,
697697"n.nspname" ,"pg_catalog.format_type(t.oid, NULL)" ,
698698NULL ,
699699"pg_catalog.pg_type_is_visible(t.oid)" );
@@ -714,7 +714,7 @@ objectDescription(const char *pattern, bool showSystem)
714714gettext_noop ("view" ),
715715gettext_noop ("index" ),
716716gettext_noop ("sequence" ));
717- if (!showSystem )
717+ if (!showSystem && ! pattern )
718718appendPQExpBuffer (& buf ," AND n.nspname <> 'pg_catalog'\n" );
719719
720720processSQLNamePattern (pset .db ,& buf ,pattern , true, false,
@@ -734,7 +734,7 @@ objectDescription(const char *pattern, bool showSystem)
734734" WHERE r.rulename != '_RETURN'\n" ,
735735gettext_noop ("rule" ));
736736
737- if (!showSystem )
737+ if (!showSystem && ! pattern )
738738appendPQExpBuffer (& buf ," AND n.nspname <> 'pg_catalog'\n" );
739739
740740/* XXX not sure what to do about visibility rule here? */
@@ -753,11 +753,11 @@ objectDescription(const char *pattern, bool showSystem)
753753" JOIN pg_catalog.pg_class c ON c.oid = t.tgrelid\n"
754754" LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace\n" ,
755755gettext_noop ("trigger" ));
756- if (!showSystem )
756+ if (!showSystem && ! pattern )
757757appendPQExpBuffer (& buf ," WHERE n.nspname <> 'pg_catalog'\n" );
758758
759759/* XXX not sure what to do about visibility rule here? */
760- processSQLNamePattern (pset .db ,& buf ,pattern , !showSystem , false,
760+ processSQLNamePattern (pset .db ,& buf ,pattern , !showSystem && ! pattern , false,
761761"n.nspname" ,"t.tgname" ,NULL ,
762762"pg_catalog.pg_table_is_visible(c.oid)" );
763763
@@ -808,10 +808,10 @@ describeTableDetails(const char *pattern, bool verbose, bool showSystem)
808808"FROM pg_catalog.pg_class c\n"
809809" LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace\n" );
810810
811- if (!showSystem )
811+ if (!showSystem && ! pattern )
812812appendPQExpBuffer (& buf ," WHERE n.nspname <> 'pg_catalog'\n" );
813813
814- processSQLNamePattern (pset .db ,& buf ,pattern , !showSystem , false,
814+ processSQLNamePattern (pset .db ,& buf ,pattern , !showSystem && ! pattern , false,
815815"n.nspname" ,"c.relname" ,NULL ,
816816"pg_catalog.pg_table_is_visible(c.oid)" );
817817
@@ -2008,12 +2008,12 @@ listTables(const char *tabtypes, const char *pattern, bool verbose, bool showSys
20082008appendPQExpBuffer (& buf ,"'i'," );
20092009if (showSeq )
20102010appendPQExpBuffer (& buf ,"'S'," );
2011- if (showSystem )
2011+ if (showSystem || pattern )
20122012appendPQExpBuffer (& buf ,"'s'," );/* was RELKIND_SPECIAL in <= 8.1 */
20132013appendPQExpBuffer (& buf ,"''" );/* dummy */
20142014appendPQExpBuffer (& buf ,")\n" );
20152015
2016- if (!showSystem )
2016+ if (!showSystem && ! pattern )
20172017/* Exclude system and pg_toast objects, but show temp tables */
20182018appendPQExpBuffer (& buf ,
20192019" AND n.nspname <> 'pg_catalog'\n"
@@ -2087,7 +2087,7 @@ listDomains(const char *pattern, bool showSystem)
20872087gettext_noop ("Modifier" ),
20882088gettext_noop ("Check" ));
20892089
2090- if (!showSystem )
2090+ if (!showSystem && ! pattern )
20912091appendPQExpBuffer (& buf ," AND n.nspname <> 'pg_catalog'\n" );
20922092
20932093processSQLNamePattern (pset .db ,& buf ,pattern , true, false,
@@ -2142,7 +2142,7 @@ listConversions(const char *pattern, bool showSystem)
21422142gettext_noop ("yes" ),gettext_noop ("no" ),
21432143gettext_noop ("Default?" ));
21442144
2145- if (!showSystem )
2145+ if (!showSystem && ! pattern )
21462146appendPQExpBuffer (& buf ," AND n.nspname <> 'pg_catalog'\n" );
21472147
21482148processSQLNamePattern (pset .db ,& buf ,pattern , true, false,