Add information about access method for partitioned relations in \dP+

Since 374c7a2290, 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
This commit is contained in:
Michael Paquier 2024-07-02 09:01:38 +09:00
parent edadeb0710
commit 978f38c771

View 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,