提交 1eec10a2 编写于 作者: A Alvaro Herrera

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.
上级 adac22bf
......@@ -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,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册