Re: small psql patch - show Schema name for \dt \dv \dS - Mailing list pgsql-patches

From Bruce Momjian
Subject Re: small psql patch - show Schema name for \dt \dv \dS
Date
Msg-id 200207191604.g6JG47k13963@candle.pha.pa.us
Whole thread Raw
In response to small psql patch - show Schema name for \dt \dv \dS  (Joe Conway <mail@joeconway.com>)
List pgsql-patches
Your patch has been added to the PostgreSQL unapplied patches list at:

    http://candle.pha.pa.us/cgi-bin/pgpatches

I will try to apply it within the next 48 hours.

---------------------------------------------------------------------------


Joe Conway wrote:
> I can't remember who said they were working on schema related psql
> changes, but I kept finding myself wishing I could see what schema a
> table or view exists in when I use \dt, \dv, etc. So, here is a patch
> which does just that.
>
> It sorts on "Schema" first, and "Name" second.
>
> It also changes the test for system objects to key off the namespace
> name starting with 'pg_' instead of the object name.
>
> Sample output:
>
> test=# create schema testschema;
> CREATE SCHEMA
> test=# create view testschema.ts_view as select 1;
> CREATE VIEW
> test=# \dv
>                   List of relations
>          Name        |   Schema   | Type |  Owner
> --------------------+------------+------+----------
>   __testpassbyval    | public     | view | postgres
>   fooview            | public     | view | postgres
>   master_pg_proc     | public     | view | postgres
>   rmt_pg_proc        | public     | view | postgres
>   vw_dblink_get_pkey | public     | view | postgres
>   vw_dblink_replace  | public     | view | postgres
>   ts_view            | testschema | view | postgres
> (7 rows)
>
> If there are no objections, please apply.
>
> Thanks!
>
> Joe
>

> Index: src/bin/psql/describe.c
> ===================================================================
> RCS file: /opt/src/cvs/pgsql/src/bin/psql/describe.c,v
> retrieving revision 1.55
> diff -c -r1.55 describe.c
> *** src/bin/psql/describe.c    12 Jul 2002 18:43:19 -0000    1.55
> --- src/bin/psql/describe.c    18 Jul 2002 21:53:52 -0000
> ***************
> *** 1022,1030 ****
>
>       printfPQExpBuffer(&buf,
>                "SELECT c.relname as \"%s\",\n"
>                "  CASE c.relkind WHEN 'r' THEN '%s' WHEN 'v' THEN '%s' WHEN 'i' THEN '%s' WHEN 'S' THEN '%s' WHEN 's'
THEN'%s' END as \"%s\",\n" 
>                "  u.usename as \"%s\"",
> !              _("Name"), _("table"), _("view"), _("index"), _("sequence"),
>                _("special"), _("Type"), _("Owner"));
>
>       if (desc)
> --- 1022,1031 ----
>
>       printfPQExpBuffer(&buf,
>                "SELECT c.relname as \"%s\",\n"
> +              "  n.nspname as \"%s\",\n"
>                "  CASE c.relkind WHEN 'r' THEN '%s' WHEN 'v' THEN '%s' WHEN 'i' THEN '%s' WHEN 'S' THEN '%s' WHEN 's'
THEN'%s' END as \"%s\",\n" 
>                "  u.usename as \"%s\"",
> !              _("Name"), _("Schema"), _("table"), _("view"), _("index"), _("sequence"),
>                _("special"), _("Type"), _("Owner"));
>
>       if (desc)
> ***************
> *** 1034,1047 ****
>       if (showIndexes)
>           appendPQExpBuffer(&buf,
>                             ",\n c2.relname as \"%s\""
> !                           "\nFROM pg_class c, pg_class c2, pg_index i, pg_user u\n"
>                             "WHERE c.relowner = u.usesysid\n"
>                             "AND i.indrelid = c2.oid AND i.indexrelid = c.oid\n",
>                             _("Table"));
>       else
>           appendPQExpBuffer(&buf,
> !                           "\nFROM pg_class c, pg_user u\n"
> !                           "WHERE c.relowner = u.usesysid\n");
>
>       appendPQExpBuffer(&buf, "AND c.relkind IN (");
>       if (showTables)
> --- 1035,1050 ----
>       if (showIndexes)
>           appendPQExpBuffer(&buf,
>                             ",\n c2.relname as \"%s\""
> !                           "\nFROM pg_class c, pg_class c2, pg_index i, pg_user u, pg_namespace n\n"
>                             "WHERE c.relowner = u.usesysid\n"
> +                           "AND c.relnamespace = n.oid\n"
>                             "AND i.indrelid = c2.oid AND i.indexrelid = c.oid\n",
>                             _("Table"));
>       else
>           appendPQExpBuffer(&buf,
> !                           "\nFROM pg_class c, pg_user u, pg_namespace n\n"
> !                           "WHERE c.relowner = u.usesysid\n"
> !                           "AND c.relnamespace = n.oid\n");
>
>       appendPQExpBuffer(&buf, "AND c.relkind IN (");
>       if (showTables)
> ***************
> *** 1058,1071 ****
>       appendPQExpBuffer(&buf, ")\n");
>
>       if (showSystem)
> !         appendPQExpBuffer(&buf, "  AND c.relname ~ '^pg_'\n");
>       else
> !         appendPQExpBuffer(&buf, "  AND c.relname !~ '^pg_'\n");
>
>       if (name)
>           appendPQExpBuffer(&buf, "  AND c.relname ~ '^%s'\n", name);
>
> !     appendPQExpBuffer(&buf, "ORDER BY 1;");
>
>       res = PSQLexec(buf.data);
>       termPQExpBuffer(&buf);
> --- 1061,1074 ----
>       appendPQExpBuffer(&buf, ")\n");
>
>       if (showSystem)
> !         appendPQExpBuffer(&buf, "  AND n.nspname ~ '^pg_'\n");
>       else
> !         appendPQExpBuffer(&buf, "  AND n.nspname !~ '^pg_'\n");
>
>       if (name)
>           appendPQExpBuffer(&buf, "  AND c.relname ~ '^%s'\n", name);
>
> !     appendPQExpBuffer(&buf, "ORDER BY 2,1;");
>
>       res = PSQLexec(buf.data);
>       termPQExpBuffer(&buf);

>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
>     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026

pgsql-patches by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: fix bison warnings
Next
From: Bruce Momjian
Date:
Subject: Re: show() function - updated patch