From e4fddfd49241dc8dfda354993bad8d5518df1873 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Fri, 28 Apr 2017 14:43:36 -0400 Subject: [PATCH] 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 --- src/bin/psql/describe.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c index 0f9f497c66..dbfc7339e5 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; + } } /* -- 2.40.0