Re: [PATCH v5] Show detailed table persistence in \dt+

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: [PATCH v5] Show detailed table persistence in \dt+
Дата
Msg-id 4561.1562094637@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: [PATCH v5] Show detailed table persistence in \dt+  (David Fetter <david@fetter.org>)
Ответы Re: [PATCH v5] Show detailed table persistence in \dt+  (Alvaro Herrera <alvherre@2ndquadrant.com>)
Список pgsql-hackers
David Fetter <david@fetter.org> writes:
> [ v7-0001-Show-detailed-relation-persistence-in-dt.patch ]

I looked this over and had a few suggestions, as per attached v8:

* The persistence description values ought to be translatable, as
is the usual practice in describe.c.  This is slightly painful
because it requires tweaking the translate_columns[] values in a
non-constant way, but it's not that bad.

* I dropped the "ELSE 'unknown'" bit in favor of just emitting NULL
if the persistence isn't recognized.  This is the same way that the
table-type CASE just above does it, and I see no reason to be different.
Moreover, there are message-style-guidelines issues with what to print
if you do want to print something; "unknown" doesn't cut it.

* I also dropped the logic for pre-9.1 servers, because the existing
precedent in describeOneTableDetails() is that we only consider
relpersistence for >= 9.1, and I don't see a real good reason to
deviate from that.  9.0 and before are long out of support anyway.

If there aren't objections, I think v8 is committable.

            regards, tom lane

diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index 1c770b4..0e0af5f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -3632,7 +3632,8 @@ listTables(const char *tabtypes, const char *pattern, bool verbose, bool showSys
     PQExpBufferData buf;
     PGresult   *res;
     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 (!(showTables || showIndexes || showViews || showMatViews || showSeq || showForeign))
@@ -3672,15 +3673,40 @@ listTables(const char *tabtypes, const char *pattern, bool verbose, bool showSys
                       gettext_noop("partitioned index"),
                       gettext_noop("Type"),
                       gettext_noop("Owner"));
+    cols_so_far = 4;

     if (showIndexes)
+    {
         appendPQExpBuffer(&buf,
-                          ",\n c2.relname as \"%s\"",
+                          ",\n  c2.relname as \"%s\"",
                           gettext_noop("Table"));
+        cols_so_far++;
+    }

     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
          * size of a table, including FSM, VM and TOAST tables.
          */

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Alexander Korotkov
Дата:
Сообщение: Re: Add missing operator <->(box, point)
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Add missing operator <->(box, point)