Improve psql \d+ to show TOAST reloptions too. Per complaint from

ITAGAKI Takahiro.
This commit is contained in:
Alvaro Herrera 2009-02-11 19:12:04 +00:00
parent 20a43b16b4
commit 787020fd3d
1 changed files with 46 additions and 11 deletions

View File

@ -8,7 +8,7 @@
* *
* Copyright (c) 2000-2009, PostgreSQL Global Development Group * Copyright (c) 2000-2009, PostgreSQL Global Development Group
* *
* $PostgreSQL: pgsql/src/bin/psql/describe.c,v 1.198 2009/01/22 20:16:08 tgl Exp $ * $PostgreSQL: pgsql/src/bin/psql/describe.c,v 1.199 2009/02/11 19:12:04 alvherre Exp $
*/ */
#include "postgres_fe.h" #include "postgres_fe.h"
@ -909,16 +909,51 @@ describeOneTableDetails(const char *schemaname,
initPQExpBuffer(&tmpbuf); initPQExpBuffer(&tmpbuf);
/* Get general table info */ /* Get general table info */
printfPQExpBuffer(&buf, if (pset.sversion >= 80400)
"SELECT relchecks, relkind, relhasindex, relhasrules, %s, " {
"relhasoids" printfPQExpBuffer(&buf,
"%s%s\n" "SELECT c.relchecks, c.relkind, c.relhasindex, c.relhasrules, "
"FROM pg_catalog.pg_class WHERE oid = '%s'", "c.relhastriggers, c.relhasoids, "
(pset.sversion >= 80400 ? "relhastriggers" : "reltriggers <> 0"), "%s, c.reltablespace\n"
(pset.sversion >= 80200 && verbose ? "FROM pg_catalog.pg_class c\n "
", pg_catalog.array_to_string(reloptions, E', ')" : ",''"), "LEFT JOIN pg_catalog.pg_class tc ON (c.reltoastrelid = tc.oid)\n"
(pset.sversion >= 80000 ? ", reltablespace" : ""), "WHERE c.oid = '%s'\n",
oid); (verbose ?
"pg_catalog.array_to_string(c.reloptions || "
"array(select 'toast.' || x from pg_catalog.unnest(tc.reloptions) x), ', ')\n"
: "''"),
oid);
}
else if (pset.sversion >= 80200)
{
printfPQExpBuffer(&buf,
"SELECT relchecks, relkind, relhasindex, relhasrules, "
"reltriggers <> 0, relhasoids, "
"%s, reltablespace\n"
"FROM pg_catalog.pg_class WHERE oid = '%s'",
(verbose ?
"pg_catalog.array_to_string(reloptions, E', ')" : ",''"),
oid);
}
else if (pset.sversion >= 80000)
{
printfPQExpBuffer(&buf,
"SELECT relchecks, relkind, relhasindex, relhasrules, "
"reltriggers <> 0, relhasoids, "
"'', reltablespace\n"
"FROM pg_catalog.pg_class WHERE oid = '%s'",
oid);
}
else
{
printfPQExpBuffer(&buf,
"SELECT relchecks, relkind, relhasindex, relhasrules, "
"reltriggers <> 0, relhasoids, "
"'', ''\n"
"FROM pg_catalog.pg_class WHERE oid = '%s'",
oid);
}
res = PSQLexec(buf.data, false); res = PSQLexec(buf.data, false);
if (!res) if (!res)
goto error_return; goto error_return;