diff options
| author | Robert Haas <rhaas@postgresql.org> | 2010-12-29 06:48:53 -0500 |
|---|---|---|
| committer | Robert Haas <rhaas@postgresql.org> | 2010-12-29 06:48:53 -0500 |
| commit | 53dbc27c62d8e1b6c5253feba04a5094cb8fe046 (patch) | |
| tree | b27563b69fa73dc4b7dc873bfc653bedc6ba1e05 /src/bin/psql/describe.c | |
| parent | 9b8aff8c192e2f313f90395d114c58a9ef84f97f (diff) | |
| download | postgresql-53dbc27c62d8e1b6c5253feba04a5094cb8fe046.tar.gz | |
Support unlogged tables.
The contents of an unlogged table are WAL-logged; thus, they are not
available on standby servers and are truncated whenever the database
system enters recovery. Indexes on unlogged tables are also unlogged.
Unlogged GiST indexes are not currently supported.
Diffstat (limited to 'src/bin/psql/describe.c')
| -rw-r--r-- | src/bin/psql/describe.c | 36 |
1 files changed, 32 insertions, 4 deletions
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c index edbe882963..406cc838e9 100644 --- a/src/bin/psql/describe.c +++ b/src/bin/psql/describe.c @@ -1118,6 +1118,7 @@ describeOneTableDetails(const char *schemaname, Oid tablespace; char *reloptions; char *reloftype; + char relpersistence; } tableinfo; bool show_modifiers = false; bool retval; @@ -1138,6 +1139,23 @@ describeOneTableDetails(const char *schemaname, "SELECT c.relchecks, c.relkind, c.relhasindex, c.relhasrules, " "c.relhastriggers, c.relhasoids, " "%s, c.reltablespace, " + "CASE WHEN c.reloftype = 0 THEN '' ELSE c.reloftype::pg_catalog.regtype::pg_catalog.text END, " + "c.relpersistence\n" + "FROM pg_catalog.pg_class c\n " + "LEFT JOIN pg_catalog.pg_class tc ON (c.reltoastrelid = tc.oid)\n" + "WHERE c.oid = '%s'\n", + (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 >= 90000) + { + printfPQExpBuffer(&buf, + "SELECT c.relchecks, c.relkind, c.relhasindex, c.relhasrules, " + "c.relhastriggers, c.relhasoids, " + "%s, c.reltablespace, " "CASE WHEN c.reloftype = 0 THEN '' ELSE c.reloftype::pg_catalog.regtype::pg_catalog.text END\n" "FROM pg_catalog.pg_class c\n " "LEFT JOIN pg_catalog.pg_class tc ON (c.reltoastrelid = tc.oid)\n" @@ -1218,6 +1236,8 @@ describeOneTableDetails(const char *schemaname, atooid(PQgetvalue(res, 0, 7)) : 0; tableinfo.reloftype = (pset.sversion >= 90000 && strcmp(PQgetvalue(res, 0, 8), "") != 0) ? strdup(PQgetvalue(res, 0, 8)) : 0; + tableinfo.relpersistence = (pset.sversion >= 90100 && strcmp(PQgetvalue(res, 0, 9), "") != 0) ? + PQgetvalue(res, 0, 9)[0] : 0; PQclear(res); res = NULL; @@ -1269,8 +1289,12 @@ describeOneTableDetails(const char *schemaname, switch (tableinfo.relkind) { case 'r': - printfPQExpBuffer(&title, _("Table \"%s.%s\""), - schemaname, relationname); + if (tableinfo.relpersistence == 'u') + printfPQExpBuffer(&title, _("Unlogged Table \"%s.%s\""), + schemaname, relationname); + else + printfPQExpBuffer(&title, _("Table \"%s.%s\""), + schemaname, relationname); break; case 'v': printfPQExpBuffer(&title, _("View \"%s.%s\""), @@ -1281,8 +1305,12 @@ describeOneTableDetails(const char *schemaname, schemaname, relationname); break; case 'i': - printfPQExpBuffer(&title, _("Index \"%s.%s\""), - schemaname, relationname); + if (tableinfo.relpersistence == 'u') + printfPQExpBuffer(&title, _("Unlogged Index \"%s.%s\""), + schemaname, relationname); + else + printfPQExpBuffer(&title, _("Index \"%s.%s\""), + schemaname, relationname); break; case 's': /* not used as of 8.2, but keep it for backwards compatibility */ |
