aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlvaro Herrera <alvherre@alvh.no-ip.org>2008-12-19 14:39:58 +0000
committerAlvaro Herrera <alvherre@alvh.no-ip.org>2008-12-19 14:39:58 +0000
commit1eec10a2de3925ef791904835e2437d1efe97139 (patch)
tree980e0cf9482df0de3f966dd08269c16493c9c4b2
parentadac22bf8a451eef87ff5693cde021e738191c24 (diff)
downloadpostgresql-1eec10a2de3925ef791904835e2437d1efe97139.tar.gz
postgresql-1eec10a2de3925ef791904835e2437d1efe97139.zip
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.
-rw-r--r--src/bin/psql/describe.c25
1 files changed, 22 insertions, 3 deletions
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index 53087771afd..5eb760513ec 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -8,7 +8,7 @@
*
* Copyright (c) 2000-2008, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/bin/psql/describe.c,v 1.188 2008/11/09 21:24:33 tgl Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/describe.c,v 1.189 2008/12/19 14:39:58 alvherre Exp $
*/
#include "postgres_fe.h"
@@ -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,