diff options
| author | Kevin Grittner | 2011-08-09 14:06:50 +0000 |
|---|---|---|
| committer | Kevin Grittner | 2011-08-09 14:06:50 +0000 |
| commit | 4ab003fa8692a7c88300435ccc864efd1cf5e896 (patch) | |
| tree | 508aecca2f196e92970dc96225d10bac4d735947 /src/bin/psql/describe.c | |
| parent | cfa9d7f040ae1a9d1fe8fbf32b6a003d251a59f0 (diff) | |
| parent | 77949a2913b3cbaa7b2e2a73f014d541e251f18b (diff) | |
Merge branch 'master' into bug6123bug6123
Diffstat (limited to 'src/bin/psql/describe.c')
| -rw-r--r-- | src/bin/psql/describe.c | 129 |
1 files changed, 93 insertions, 36 deletions
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c index a8d5ddc96c..f08f917501 100644 --- a/src/bin/psql/describe.c +++ b/src/bin/psql/describe.c @@ -2665,10 +2665,8 @@ listLanguages(const char *pattern, bool verbose, bool showSystem) gettext_noop("Owner")); appendPQExpBuffer(&buf, - " l.lanpltrusted AS \"%s\",\n" - " d.description AS \"%s\"", - gettext_noop("Trusted"), - gettext_noop("Description")); + " l.lanpltrusted AS \"%s\"", + gettext_noop("Trusted")); if (verbose) { @@ -2686,10 +2684,12 @@ listLanguages(const char *pattern, bool verbose, bool showSystem) } appendPQExpBuffer(&buf, + ",\n d.description AS \"%s\"" "\nFROM pg_catalog.pg_language l\n" "LEFT JOIN pg_catalog.pg_description d\n" " ON d.classoid = l.tableoid AND d.objoid = l.oid\n" - " AND d.objsubid = 0\n"); + " AND d.objsubid = 0\n", + gettext_noop("Description")); if (pattern) processSQLNamePattern(pset.db, &buf, pattern, false, false, @@ -2723,7 +2723,7 @@ listLanguages(const char *pattern, bool verbose, bool showSystem) * Describes domains. */ bool -listDomains(const char *pattern, bool showSystem) +listDomains(const char *pattern, bool verbose, bool showSystem) { PQExpBufferData buf; PGresult *res; @@ -2746,17 +2746,30 @@ listDomains(const char *pattern, bool showSystem) appendPQExpBuffer(&buf, " CASE WHEN t.typnotnull THEN ' not null' ELSE '' END ||\n" " CASE WHEN t.typdefault IS NOT NULL THEN ' default ' || t.typdefault ELSE '' END\n" - " ) as \"%s\",\n", - gettext_noop("Modifier")); - appendPQExpBuffer(&buf, + " ) as \"%s\",\n" " pg_catalog.array_to_string(ARRAY(\n" " SELECT pg_catalog.pg_get_constraintdef(r.oid, true) FROM pg_catalog.pg_constraint r WHERE t.oid = r.contypid\n" - " ), ' ') as \"%s\"\n" - "FROM pg_catalog.pg_type t\n" - " LEFT JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace\n" - "WHERE t.typtype = 'd'\n", + " ), ' ') as \"%s\"", + gettext_noop("Modifier"), gettext_noop("Check")); + if (verbose) + appendPQExpBuffer(&buf, + ",\n d.description as \"%s\"", + gettext_noop("Description")); + + appendPQExpBuffer(&buf, + "\nFROM pg_catalog.pg_type t\n" + " LEFT JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace\n"); + + if (verbose) + appendPQExpBuffer(&buf, + " LEFT JOIN pg_catalog.pg_description d " + "ON d.classoid = t.tableoid AND d.objoid = t.oid " + "AND d.objsubid = 0\n"); + + appendPQExpBuffer(&buf, "WHERE t.typtype = 'd'\n"); + if (!showSystem && !pattern) appendPQExpBuffer(&buf, " AND n.nspname <> 'pg_catalog'\n" " AND n.nspname <> 'information_schema'\n"); @@ -2788,7 +2801,7 @@ listDomains(const char *pattern, bool showSystem) * Describes conversions. */ bool -listConversions(const char *pattern, bool showSystem) +listConversions(const char *pattern, bool verbose, bool showSystem) { PQExpBufferData buf; PGresult *res; @@ -2803,9 +2816,7 @@ listConversions(const char *pattern, bool showSystem) " pg_catalog.pg_encoding_to_char(c.conforencoding) AS \"%s\",\n" " pg_catalog.pg_encoding_to_char(c.contoencoding) AS \"%s\",\n" " CASE WHEN c.condefault THEN '%s'\n" - " ELSE '%s' END AS \"%s\"\n" - "FROM pg_catalog.pg_conversion c, pg_catalog.pg_namespace n\n" - "WHERE n.oid = c.connamespace\n", + " ELSE '%s' END AS \"%s\"", gettext_noop("Schema"), gettext_noop("Name"), gettext_noop("Source"), @@ -2813,9 +2824,28 @@ listConversions(const char *pattern, bool showSystem) gettext_noop("yes"), gettext_noop("no"), gettext_noop("Default?")); + if (verbose) + appendPQExpBuffer(&buf, + ",\n d.description AS \"%s\"", + gettext_noop("Description")); + + appendPQExpBuffer(&buf, + "\nFROM pg_catalog.pg_conversion c\n" + " JOIN pg_catalog.pg_namespace n " + "ON n.oid = c.connamespace\n"); + + if (verbose) + appendPQExpBuffer(&buf, + "LEFT JOIN pg_catalog.pg_description d " + "ON d.classoid = c.tableoid\n" + " AND d.objoid = c.oid " + "AND d.objsubid = 0\n"); + + appendPQExpBuffer(&buf, "WHERE true\n"); + if (!showSystem && !pattern) - appendPQExpBuffer(&buf, " AND n.nspname <> 'pg_catalog'\n" - " AND n.nspname <> 'information_schema'\n"); + appendPQExpBuffer(&buf, " AND n.nspname <> 'pg_catalog'\n" + " AND n.nspname <> 'information_schema'\n"); processSQLNamePattern(pset.db, &buf, pattern, true, false, "n.nspname", "c.conname", NULL, @@ -3650,16 +3680,16 @@ listForeignDataWrappers(const char *pattern, bool verbose) initPQExpBuffer(&buf); printfPQExpBuffer(&buf, - "SELECT fdwname AS \"%s\",\n" - " pg_catalog.pg_get_userbyid(fdwowner) AS \"%s\",\n", + "SELECT fdw.fdwname AS \"%s\",\n" + " pg_catalog.pg_get_userbyid(fdw.fdwowner) AS \"%s\",\n", gettext_noop("Name"), gettext_noop("Owner")); if (pset.sversion >= 90100) appendPQExpBuffer(&buf, - " fdwhandler::pg_catalog.regproc AS \"%s\",\n", + " fdw.fdwhandler::pg_catalog.regproc AS \"%s\",\n", gettext_noop("Handler")); appendPQExpBuffer(&buf, - " fdwvalidator::pg_catalog.regproc AS \"%s\"", + " fdw.fdwvalidator::pg_catalog.regproc AS \"%s\"", gettext_noop("Validator")); if (verbose) @@ -3669,9 +3699,20 @@ listForeignDataWrappers(const char *pattern, bool verbose) appendPQExpBuffer(&buf, ",\n fdwoptions AS \"%s\"", gettext_noop("Options")); + + if (pset.sversion >= 90100) + appendPQExpBuffer(&buf, + ",\n d.description AS \"%s\" ", + gettext_noop("Description")); } - appendPQExpBuffer(&buf, "\nFROM pg_catalog.pg_foreign_data_wrapper\n"); + appendPQExpBuffer(&buf, "\nFROM pg_catalog.pg_foreign_data_wrapper fdw\n"); + + if (verbose && pset.sversion >= 90100) + appendPQExpBuffer(&buf, + "LEFT JOIN pg_catalog.pg_description d\n" + " ON d.classoid = fdw.tableoid " + "AND d.objoid = fdw.oid AND d.objsubid = 0\n"); processSQLNamePattern(pset.db, &buf, pattern, false, false, NULL, "fdwname", NULL, NULL); @@ -3729,16 +3770,24 @@ listForeignServers(const char *pattern, bool verbose) ",\n" " s.srvtype AS \"%s\",\n" " s.srvversion AS \"%s\",\n" - " s.srvoptions AS \"%s\"", + " s.srvoptions AS \"%s\",\n" + " d.description AS \"%s\"", gettext_noop("Type"), gettext_noop("Version"), - gettext_noop("Options")); + gettext_noop("Options"), + gettext_noop("Description")); } appendPQExpBuffer(&buf, "\nFROM pg_catalog.pg_foreign_server s\n" " JOIN pg_catalog.pg_foreign_data_wrapper f ON f.oid=s.srvfdw\n"); + if (verbose) + appendPQExpBuffer(&buf, + "LEFT JOIN pg_description d\n " + "ON d.classoid = s.tableoid AND d.objoid = s.oid " + "AND d.objsubid = 0\n"); + processSQLNamePattern(pset.db, &buf, pattern, false, false, NULL, "s.srvname", NULL, NULL); @@ -3842,18 +3891,26 @@ listForeignTables(const char *pattern, bool verbose) if (verbose) appendPQExpBuffer(&buf, - ",\n ft.ftoptions AS \"%s\"", - gettext_noop("Options")); + ",\n ft.ftoptions AS \"%s\",\n" + " d.description AS \"%s\"", + gettext_noop("Options"), + gettext_noop("Description")); - appendPQExpBuffer(&buf, "\nFROM pg_catalog.pg_foreign_table ft,"); - appendPQExpBuffer(&buf, "\n pg_catalog.pg_class c,"); - appendPQExpBuffer(&buf, "\n pg_catalog.pg_namespace n,"); - appendPQExpBuffer(&buf, "\n pg_catalog.pg_foreign_server s\n"); - appendPQExpBuffer(&buf, "\nWHERE c.oid = ft.ftrelid"); - appendPQExpBuffer(&buf, "\nAND s.oid = ft.ftserver\n"); - appendPQExpBuffer(&buf, "\nAND n.oid = c.relnamespace\n"); + appendPQExpBuffer(&buf, + "\nFROM pg_catalog.pg_foreign_table ft\n" + " INNER JOIN pg_catalog.pg_class c" + " ON c.oid = ft.ftrelid\n" + " INNER JOIN pg_catalog.pg_namespace n" + " ON n.oid = c.relnamespace\n" + " INNER JOIN pg_catalog.pg_foreign_server s" + " ON s.oid = ft.ftserver\n"); + if (verbose) + appendPQExpBuffer(&buf, + " LEFT JOIN pg_catalog.pg_description d\n" + " ON d.classoid = c.tableoid AND " + "d.objoid = c.oid AND d.objsubid = 0\n"); - processSQLNamePattern(pset.db, &buf, pattern, true, false, + processSQLNamePattern(pset.db, &buf, pattern, false, false, NULL, "n.nspname", "c.relname", NULL); appendPQExpBuffer(&buf, "ORDER BY 1, 2;"); |
