diff options
author | Peter Eisentraut <peter_e@gmx.net> | 2017-04-28 14:43:36 -0400 |
---|---|---|
committer | Peter Eisentraut <peter_e@gmx.net> | 2017-04-28 14:43:36 -0400 |
commit | e4fddfd49241dc8dfda354993bad8d5518df1873 (patch) | |
tree | 8e353b1b803aae54aaf354e116cd7db41d00ca8a /src | |
parent | 5e1ccd48442dbdbe812c95cd70cc1d3c1c960c4c (diff) | |
download | postgresql-e4fddfd49241dc8dfda354993bad8d5518df1873.tar.gz postgresql-e4fddfd49241dc8dfda354993bad8d5518df1873.zip |
psql: Support identity columns in sequence display
Where the footer for an owned serial sequence would say "Owned by", put
something analogous for a sequence belonging to an identity column.
Reported-by: Vitaly Burovoy <vitaly.burovoy@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/bin/psql/describe.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c index 0f9f497c664..dbfc7339e57 100644 --- a/src/bin/psql/describe.c +++ b/src/bin/psql/describe.c @@ -2006,7 +2006,8 @@ describeOneTableDetails(const char *schemaname, /* Get the column that owns this sequence */ printfPQExpBuffer(&buf, "SELECT pg_catalog.quote_ident(nspname) || '.' ||" "\n pg_catalog.quote_ident(relname) || '.' ||" - "\n pg_catalog.quote_ident(attname)" + "\n pg_catalog.quote_ident(attname)," + "\n d.deptype" "\nFROM pg_catalog.pg_class c" "\nINNER JOIN pg_catalog.pg_depend d ON c.oid=d.refobjid" "\nINNER JOIN pg_catalog.pg_namespace n ON n.oid=c.relnamespace" @@ -2016,7 +2017,7 @@ describeOneTableDetails(const char *schemaname, "\nWHERE d.classid='pg_catalog.pg_class'::pg_catalog.regclass" "\n AND d.refclassid='pg_catalog.pg_class'::pg_catalog.regclass" "\n AND d.objid=%s" - "\n AND d.deptype='a'", + "\n AND d.deptype IN ('a', 'i')", oid); result = PSQLexec(buf.data); @@ -2024,9 +2025,19 @@ describeOneTableDetails(const char *schemaname, goto error_return; else if (PQntuples(result) == 1) { - printfPQExpBuffer(&buf, _("Owned by: %s"), - PQgetvalue(result, 0, 0)); - printTableAddFooter(&cont, buf.data); + switch (PQgetvalue(result, 0, 1)[0]) + { + case 'a': + printfPQExpBuffer(&buf, _("Owned by: %s"), + PQgetvalue(result, 0, 0)); + printTableAddFooter(&cont, buf.data); + break; + case 'i': + printfPQExpBuffer(&buf, _("Sequence for identity column: %s"), + PQgetvalue(result, 0, 0)); + printTableAddFooter(&cont, buf.data); + break; + } } /* |