From a7b683f217d9c1e157a052417908701ebb4f5ef3 Mon Sep 17 00:00:00 2001 From: Alvaro Herrera Date: Fri, 19 Dec 2008 14:39:58 +0000 Subject: [PATCH] Have psql's \d+ print reloptions. Extracted from Euler Taveira de Oliveira's reloptions patch for autovacuum and revised by me. Note that there doesn't seem to be a way to display an index's reloptions. --- src/bin/psql/describe.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c index c1e1913040..6c1c2c965a 100644 --- a/src/bin/psql/describe.c +++ b/src/bin/psql/describe.c @@ -846,6 +846,7 @@ describeOneTableDetails(const char *schemaname, bool hastriggers; bool hasoids; Oid tablespace; + char *reloptions; } tableinfo; bool show_modifiers = false; bool retval; @@ -862,9 +863,12 @@ describeOneTableDetails(const char *schemaname, /* Get general table info */ printfPQExpBuffer(&buf, "SELECT relchecks, relkind, relhasindex, relhasrules, %s, " - "relhasoids%s\n" + "relhasoids" + "%s%s\n" "FROM pg_catalog.pg_class WHERE oid = '%s'", (pset.sversion >= 80400 ? "relhastriggers" : "reltriggers <> 0"), + (pset.sversion >= 80200 && verbose ? + ", pg_catalog.array_to_string(reloptions, E', ')" : ",''"), (pset.sversion >= 80000 ? ", reltablespace" : ""), oid); res = PSQLexec(buf.data, false); @@ -886,8 +890,10 @@ describeOneTableDetails(const char *schemaname, tableinfo.hasrules = strcmp(PQgetvalue(res, 0, 3), "t") == 0; tableinfo.hastriggers = strcmp(PQgetvalue(res, 0, 4), "t") == 0; tableinfo.hasoids = strcmp(PQgetvalue(res, 0, 5), "t") == 0; + tableinfo.reloptions = pset.sversion >= 80200 ? + strdup(PQgetvalue(res, 0, 6)) : 0; tableinfo.tablespace = (pset.sversion >= 80000) ? - atooid(PQgetvalue(res, 0, 6)) : 0; + atooid(PQgetvalue(res, 0, 7)) : 0; PQclear(res); res = NULL; @@ -1586,6 +1592,19 @@ describeOneTableDetails(const char *schemaname, printfPQExpBuffer(&buf, "%s: %s", s, (tableinfo.hasoids ? _("yes") : _("no"))); printTableAddFooter(&cont, buf.data); + + /* print reloptions */ + if (pset.sversion >= 80200) + { + if (tableinfo.reloptions && tableinfo.reloptions[0] != '\0') + { + const char *t = _("Options"); + + printfPQExpBuffer(&buf, "%s: %s", t, + tableinfo.reloptions); + printTableAddFooter(&cont, buf.data); + } + } } add_tablespace_footer(&cont, tableinfo.relkind, tableinfo.tablespace, -- 2.39.5