postgres.git / summary / log / commit / refs

commit    1ac7db4468e1989ea7c775ad786468b7fd3baa4e
Author:   Bruce Momjian <bruce@momjian.us>
Date:     Sat Jul 20 05:57:31 2002 +0000

    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)
    
    Joe Conway


src/bin/psql/describe.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c index d3c386284b4..d60483870a9 100644 --- a/src/bin/psql/describe.c +++ b/src/bin/psql/describe.c @@ -3,7 +3,7 @@ * * Copyright 2000 by PostgreSQL Global Development Group * - * $Header: /cvsroot/pgsql/src/bin/psql/describe.c,v 1.55 2002/07/12 18:43:19 tgl Exp $ + * $Header: /cvsroot/pgsql/src/bin/psql/describe.c,v 1.56 2002/07/20 05:57:31 momjian Exp $ */ #include "postgres_fe.h" #include "describe.h" @@ -1022,9 +1022,10 @@ listTables(const char *infotype, const char *name, bool desc) 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"), _("table"), _("view"), _("index"), _("sequence"), + _("Name"), _("Schema"), _("table"), _("view"), _("index"), _("sequence"), _("special"), _("Type"), _("Owner")); if (desc) @@ -1034,14 +1035,16 @@ listTables(const char *infotype, const char *name, bool desc) if (showIndexes) appendPQExpBuffer(&buf, ",\n c2.relname as \"%s\"" - "\nFROM pg_class c, pg_class c2, pg_index i, pg_user u\n" + "\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\n" - "WHERE c.relowner = u.usesysid\n"); + "\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,14 +1061,14 @@ listTables(const char *infotype, const char *name, bool desc) appendPQExpBuffer(&buf, ")\n"); if (showSystem) - appendPQExpBuffer(&buf, " AND c.relname ~ '^pg_'\n"); + appendPQExpBuffer(&buf, " AND n.nspname ~ '^pg_'\n"); else - appendPQExpBuffer(&buf, " AND c.relname !~ '^pg_'\n"); + appendPQExpBuffer(&buf, " AND n.nspname !~ '^pg_'\n"); if (name) appendPQExpBuffer(&buf, " AND c.relname ~ '^%s'\n", name); - appendPQExpBuffer(&buf, "ORDER BY 1;"); + appendPQExpBuffer(&buf, "ORDER BY 2,1;"); res = PSQLexec(buf.data); termPQExpBuffer(&buf); [parent: 1ce03603ccc6]