Show table persistence in psql's \dt+ and related commands.
In verbose mode, listTables() now emits a "Persistence" column showing whether the table/index/view/etc is permanent, temporary, or unlogged. David Fetter, reviewed by Fabien Coelho and Rafia Sabih Discussion: https://postgr.es/m/20190423005642.GZ28936@fetter.org
This commit is contained in:
parent
a5be4062f7
commit
9a2ea61832
@ -3632,7 +3632,8 @@ listTables(const char *tabtypes, const char *pattern, bool verbose, bool showSys
|
|||||||
PQExpBufferData buf;
|
PQExpBufferData buf;
|
||||||
PGresult *res;
|
PGresult *res;
|
||||||
printQueryOpt myopt = pset.popt;
|
printQueryOpt myopt = pset.popt;
|
||||||
static const bool translate_columns[] = {false, false, true, false, false, false, false};
|
int cols_so_far;
|
||||||
|
bool translate_columns[] = {false, false, true, false, false, false, false, false};
|
||||||
|
|
||||||
/* If tabtypes is empty, we default to \dtvmsE (but see also command.c) */
|
/* If tabtypes is empty, we default to \dtvmsE (but see also command.c) */
|
||||||
if (!(showTables || showIndexes || showViews || showMatViews || showSeq || showForeign))
|
if (!(showTables || showIndexes || showViews || showMatViews || showSeq || showForeign))
|
||||||
@ -3672,14 +3673,39 @@ listTables(const char *tabtypes, const char *pattern, bool verbose, bool showSys
|
|||||||
gettext_noop("partitioned index"),
|
gettext_noop("partitioned index"),
|
||||||
gettext_noop("Type"),
|
gettext_noop("Type"),
|
||||||
gettext_noop("Owner"));
|
gettext_noop("Owner"));
|
||||||
|
cols_so_far = 4;
|
||||||
|
|
||||||
if (showIndexes)
|
if (showIndexes)
|
||||||
|
{
|
||||||
appendPQExpBuffer(&buf,
|
appendPQExpBuffer(&buf,
|
||||||
",\n c2.relname as \"%s\"",
|
",\n c2.relname as \"%s\"",
|
||||||
gettext_noop("Table"));
|
gettext_noop("Table"));
|
||||||
|
cols_so_far++;
|
||||||
|
}
|
||||||
|
|
||||||
if (verbose)
|
if (verbose)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
* Show whether a relation is permanent, temporary, or unlogged. Like
|
||||||
|
* describeOneTableDetails(), we consider that persistence emerged in
|
||||||
|
* v9.1, even though related concepts existed before.
|
||||||
|
*/
|
||||||
|
if (pset.sversion >= 90100)
|
||||||
|
{
|
||||||
|
appendPQExpBuffer(&buf,
|
||||||
|
",\n CASE c.relpersistence WHEN 'p' THEN '%s' WHEN 't' THEN '%s' WHEN 'u' THEN '%s' END as \"%s\"",
|
||||||
|
gettext_noop("permanent"),
|
||||||
|
gettext_noop("temporary"),
|
||||||
|
gettext_noop("unlogged"),
|
||||||
|
gettext_noop("Persistence"));
|
||||||
|
translate_columns[cols_so_far] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* We don't bother to count cols_so_far below here, as there's no need
|
||||||
|
* to; this might change with future additions to the output columns.
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* As of PostgreSQL 9.0, use pg_table_size() to show a more accurate
|
* As of PostgreSQL 9.0, use pg_table_size() to show a more accurate
|
||||||
* size of a table, including FSM, VM and TOAST tables.
|
* size of a table, including FSM, VM and TOAST tables.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user