postgres.git / summary / log / commit / refs

commit    e4fddfd49241dc8dfda354993bad8d5518df1873
Author:   Peter Eisentraut <peter_e@gmx.net>
Date:     Fri Apr 28 18:43:36 2017 +0000

    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>


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 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; + } } /* [parent: 5e1ccd48442d]