Add information about access method for partitioned relations in \dP+
authorMichael Paquier
Tue, 2 Jul 2024 00:01:38 +0000 (09:01 +0900)
committerMichael Paquier
Tue, 2 Jul 2024 00:01:38 +0000 (09:01 +0900)
Since 374c7a229042, it is possible to set a table AM on a partitioned
table.  This information was showing up already in psql with \d+, while
\dP+ provided no information.

This commit extends \dP+ to show the access method used by a partitioned
table or index, if set.

Author: Justin Pryzby
Discussion: https://postgr.es/m/ZkyivySXnbvOogZz@pryzbyj2023

src/bin/psql/describe.c

index f67bf0b8925312242540597e6fc72c142bf4a08d..7c9a1f234c626fb1c1fa6cf8cb95ea781eb4b325 100644 (file)
@@ -4113,7 +4113,7 @@ listPartitionedTables(const char *reltypes, const char *pattern, bool verbose)
    PQExpBufferData title;
    PGresult   *res;
    printQueryOpt myopt = pset.popt;
-   bool        translate_columns[] = {false, false, false, false, false, false, false, false, false};
+   bool        translate_columns[] = {false, false, false, false, false, false, false, false, false, false};
    const char *tabletitle;
    bool        mixed_output = false;
 
@@ -4181,6 +4181,13 @@ listPartitionedTables(const char *reltypes, const char *pattern, bool verbose)
 
    if (verbose)
    {
+       /*
+        * Table access methods were introduced in v12, and can be set on
+        * partitioned tables since v17.
+        */
+       appendPQExpBuffer(&buf, ",\n  am.amname as \"%s\"",
+                         gettext_noop("Access method"));
+
        if (showNested)
        {
            appendPQExpBuffer(&buf,
@@ -4216,6 +4223,9 @@ listPartitionedTables(const char *reltypes, const char *pattern, bool verbose)
 
    if (verbose)
    {
+       appendPQExpBufferStr(&buf,
+                            "\n     LEFT JOIN pg_catalog.pg_am am ON c.relam = am.oid");
+
        if (pset.sversion < 120000)
        {
            appendPQExpBufferStr(&buf,