1
0
mirror of https://github.com/postgres/postgres.git synced 2025-05-03 22:24:49 +03:00

psql: Add option to use expanded mode to all list commands.

This allows "x" to be appended to any psql list-like meta-command,
forcing its output to be displayed in expanded mode. This improves
readability in cases where the output is very wide. For example,
"\dfx+" (or equivalently "\df+x") will produce a list of functions,
with additional details, in expanded mode.

This works with all \d* meta-commands, plus \l, \z, and \lo_list, with
the one exception that the expanded mode option "x" cannot be appended
to "\d" by itself, since "\dx" already means something else.

Dean Rasheed, reviewed by Greg Sabino Mullane.

Discussion: https://postgr.es/m/CAEZATCVXJk3KsmCncf7PAVbxdDAUDm3QzDgGT7mBYySWikuOYw@mail.gmail.com
This commit is contained in:
Dean Rasheed 2025-01-14 16:29:15 +00:00
parent 94b914f601
commit 00f4c2959d
6 changed files with 418 additions and 131 deletions

View File

@ -864,6 +864,13 @@ testdb=>
same line.
</para>
<para>
Many of the meta-commands also allow <literal>x</literal> to be appended
as an option. This will cause the results to be displayed in expanded
mode, as if <command>\x</command> or <command>\pset expanded</command>
had been used.
</para>
<para>
The following meta-commands are defined:
@ -1272,7 +1279,7 @@ SELECT $1 \parse stmt1
<varlistentry id="app-psql-meta-command-d">
<term><literal>\d[S+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\d[Sx+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
@ -1321,12 +1328,24 @@ SELECT $1 \parse stmt1
foreign tables.
This is purely a convenience measure.
</para>
<para>
As with many other commands, if <literal>x</literal> is appended to
the command name, the results are displayed in expanded mode, but note
that this only applies when <command>\d</command> is used without a
<replaceable class="parameter">pattern</replaceable> argument, and
the <literal>x</literal> modifier cannot appear immediately after the
<command>\d</command> (because <command>\dx</command> is a different
command); the <literal>x</literal> modifier may only appear after an
<literal>S</literal> or <literal>+</literal> modifier. For example,
<command>\d+x</command> is equivalent to <command>\dtvmsE+x</command>
and will show a list of all relations in expanded mode.
</para>
</note>
</listitem>
</varlistentry>
<varlistentry id="app-psql-meta-command-da-lc">
<term><literal>\da[S] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\da[Sx] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
@ -1337,19 +1356,23 @@ SELECT $1 \parse stmt1
By default, only user-created objects are shown; supply a
pattern or the <literal>S</literal> modifier to include system
objects.
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
</para>
</listitem>
</varlistentry>
<varlistentry id="app-psql-meta-command-da-uc">
<term><literal>\dA[+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\dA[x+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
Lists access methods. If <replaceable
class="parameter">pattern</replaceable> is specified, only access
methods whose names match the pattern are shown. If
<literal>+</literal> is appended to the command name, each access
methods whose names match the pattern are shown.
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, each access
method is listed with its associated handler function and description.
</para>
</listitem>
@ -1357,7 +1380,7 @@ SELECT $1 \parse stmt1
<varlistentry id="app-psql-meta-command-dac">
<term>
<literal>\dAc[+]
<literal>\dAc[x+]
[<link linkend="app-psql-patterns"><replaceable class="parameter">access-method-pattern</replaceable></link>
[<link linkend="app-psql-patterns"><replaceable class="parameter">input-type-pattern</replaceable></link>]]
</literal>
@ -1372,6 +1395,8 @@ SELECT $1 \parse stmt1
If <replaceable class="parameter">input-type-pattern</replaceable>
is specified, only operator classes associated with input types whose
names match that pattern are listed.
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, each operator
class is listed with its associated operator family and owner.
</para>
@ -1380,7 +1405,7 @@ SELECT $1 \parse stmt1
<varlistentry id="app-psql-meta-command-daf">
<term>
<literal>\dAf[+]
<literal>\dAf[x+]
[<link linkend="app-psql-patterns"><replaceable class="parameter">access-method-pattern</replaceable></link>
[<link linkend="app-psql-patterns"><replaceable class="parameter">input-type-pattern</replaceable></link>]]
</literal>
@ -1395,6 +1420,8 @@ SELECT $1 \parse stmt1
If <replaceable class="parameter">input-type-pattern</replaceable>
is specified, only operator families associated with input types whose
names match that pattern are listed.
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, each operator
family is listed with its owner.
</para>
@ -1403,7 +1430,7 @@ SELECT $1 \parse stmt1
<varlistentry id="app-psql-meta-command-dao">
<term>
<literal>\dAo[+]
<literal>\dAo[x+]
[<link linkend="app-psql-patterns"><replaceable class="parameter">access-method-pattern</replaceable></link>
[<link linkend="app-psql-patterns"><replaceable class="parameter">operator-family-pattern</replaceable></link>]]
</literal>
@ -1419,6 +1446,8 @@ SELECT $1 \parse stmt1
If <replaceable class="parameter">operator-family-pattern</replaceable>
is specified, only members of operator families whose names match that
pattern are listed.
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, each operator
is listed with its sort operator family (if it is an ordering operator),
and whether its underlying function is leakproof.
@ -1428,7 +1457,7 @@ SELECT $1 \parse stmt1
<varlistentry id="app-psql-meta-command-dap">
<term>
<literal>\dAp[+]
<literal>\dAp[x+]
[<link linkend="app-psql-patterns"><replaceable class="parameter">access-method-pattern</replaceable></link>
[<link linkend="app-psql-patterns"><replaceable class="parameter">operator-family-pattern</replaceable></link>]]
</literal>
@ -1443,6 +1472,8 @@ SELECT $1 \parse stmt1
If <replaceable class="parameter">operator-family-pattern</replaceable>
is specified, only functions of operator families whose names match
that pattern are listed.
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, functions are
displayed verbosely, with their actual parameter lists.
</para>
@ -1450,13 +1481,15 @@ SELECT $1 \parse stmt1
</varlistentry>
<varlistentry id="app-psql-meta-command-db">
<term><literal>\db[+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\db[x+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
Lists tablespaces. If <replaceable
class="parameter">pattern</replaceable>
is specified, only tablespaces whose names match the pattern are shown.
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, each tablespace
is listed with its associated options, on-disk size, permissions and
description.
@ -1466,7 +1499,7 @@ SELECT $1 \parse stmt1
<varlistentry id="app-psql-meta-command-dc-lc">
<term><literal>\dc[S+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\dc[Sx+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
Lists conversions between character-set encodings.
@ -1476,6 +1509,8 @@ SELECT $1 \parse stmt1
By default, only user-created objects are shown; supply a
pattern or the <literal>S</literal> modifier to include system
objects.
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, each object
is listed with its associated description.
</para>
@ -1484,7 +1519,7 @@ SELECT $1 \parse stmt1
<varlistentry id="app-psql-meta-command-dconfig">
<term><literal>\dconfig[+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\dconfig[x+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
Lists server configuration parameters and their values.
@ -1493,6 +1528,8 @@ SELECT $1 \parse stmt1
a <replaceable class="parameter">pattern</replaceable>, only
parameters that are set to non-default values are listed.
(Use <literal>\dconfig *</literal> to see all parameters.)
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, each
parameter is listed with its data type, context in which the
parameter can be set, and access privileges (if non-default access
@ -1503,13 +1540,15 @@ SELECT $1 \parse stmt1
<varlistentry id="app-psql-meta-command-dc-uc">
<term><literal>\dC[+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\dC[x+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
Lists type casts.
If <replaceable class="parameter">pattern</replaceable>
is specified, only casts whose source or target types match the
pattern are listed.
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, additional
information about each cast is shown, including whether its underlying
function is leakproof, and the cast's description.
@ -1519,7 +1558,7 @@ SELECT $1 \parse stmt1
<varlistentry id="app-psql-meta-command-dd-lc">
<term><literal>\dd[S] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\dd[Sx] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
Shows the descriptions of objects of type <literal>constraint</literal>,
@ -1536,6 +1575,8 @@ SELECT $1 \parse stmt1
By default, only user-created objects are shown; supply a
pattern or the <literal>S</literal> modifier to include system
objects.
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
</para>
<para>
@ -1548,7 +1589,7 @@ SELECT $1 \parse stmt1
<varlistentry id="app-psql-meta-command-dd-uc">
<term><literal>\dD[S+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\dD[Sx+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
Lists domains. If <replaceable
@ -1557,6 +1598,8 @@ SELECT $1 \parse stmt1
By default, only user-created objects are shown; supply a
pattern or the <literal>S</literal> modifier to include system
objects.
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, each object
is listed with its associated permissions and description.
</para>
@ -1565,7 +1608,7 @@ SELECT $1 \parse stmt1
<varlistentry id="app-psql-meta-command-ddp">
<term><literal>\ddp [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\ddp[x] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
Lists default access privilege settings. An entry is shown for
@ -1574,6 +1617,8 @@ SELECT $1 \parse stmt1
If <replaceable class="parameter">pattern</replaceable> is
specified, only entries whose role name or schema name matches
the pattern are listed.
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
</para>
<para>
@ -1587,12 +1632,12 @@ SELECT $1 \parse stmt1
<varlistentry id="app-psql-meta-command-de">
<term><literal>\dE[S+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\di[S+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\dm[S+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\ds[S+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\dt[S+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\dv[S+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\dE[Sx+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\di[Sx+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\dm[Sx+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\ds[Sx+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\dt[Sx+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\dv[Sx+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
@ -1605,7 +1650,10 @@ SELECT $1 \parse stmt1
You can specify any or all of
these letters, in any order, to obtain a listing of objects
of these types. For example, <literal>\dti</literal> lists
tables and indexes. If <literal>+</literal> is
tables and indexes.
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
If <literal>+</literal> is
appended to the command name, each object is listed with its
persistence status (permanent, temporary, or unlogged),
physical size on disk, and associated description if any.
@ -1620,14 +1668,17 @@ SELECT $1 \parse stmt1
<varlistentry id="app-psql-meta-command-des">
<term><literal>\des[+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\des[x+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
Lists foreign servers (mnemonic: <quote>external
servers</quote>).
If <replaceable class="parameter">pattern</replaceable> is
specified, only those servers whose name matches the pattern
are listed. If the form <literal>\des+</literal> is used, a
are listed.
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, a
full description of each server is shown, including the
server's access privileges, type, version, options, and description.
</para>
@ -1636,14 +1687,17 @@ SELECT $1 \parse stmt1
<varlistentry id="app-psql-meta-command-det">
<term><literal>\det[+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\det[x+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
Lists foreign tables (mnemonic: <quote>external tables</quote>).
If <replaceable class="parameter">pattern</replaceable> is
specified, only entries whose table name or schema name matches
the pattern are listed. If the form <literal>\det+</literal>
is used, generic options and the foreign table description
the pattern are listed.
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name,
generic options and the foreign table description
are also displayed.
</para>
</listitem>
@ -1651,15 +1705,18 @@ SELECT $1 \parse stmt1
<varlistentry id="app-psql-meta-command-deu">
<term><literal>\deu[+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\deu[x+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
Lists user mappings (mnemonic: <quote>external
users</quote>).
If <replaceable class="parameter">pattern</replaceable> is
specified, only those mappings whose user names match the
pattern are listed. If the form <literal>\deu+</literal> is
used, additional information about each mapping is shown.
pattern are listed.
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name,
additional information about each mapping is shown.
</para>
<caution>
@ -1674,15 +1731,18 @@ SELECT $1 \parse stmt1
<varlistentry id="app-psql-meta-command-dew">
<term><literal>\dew[+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\dew[x+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
Lists foreign-data wrappers (mnemonic: <quote>external
wrappers</quote>).
If <replaceable class="parameter">pattern</replaceable> is
specified, only those foreign-data wrappers whose name matches
the pattern are listed. If the form <literal>\dew+</literal>
is used, the access privileges, options, and description of the
the pattern are listed.
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name,
the access privileges, options, and description of the
foreign-data wrapper are also shown.
</para>
</listitem>
@ -1690,7 +1750,7 @@ SELECT $1 \parse stmt1
<varlistentry id="app-psql-meta-command-df-lc">
<term><literal>\df[anptwS+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> [ <replaceable class="parameter">arg_pattern</replaceable> ... ] ]</literal></term>
<term><literal>\df[anptwSx+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> [ <replaceable class="parameter">arg_pattern</replaceable> ... ] ]</literal></term>
<listitem>
<para>
@ -1711,7 +1771,9 @@ SELECT $1 \parse stmt1
By default, only user-created
objects are shown; supply a pattern or the <literal>S</literal>
modifier to include system objects.
If the form <literal>\df+</literal> is used, additional information
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, additional information
about each function is shown, including volatility,
parallel safety, owner, security classification, whether it is
leakproof, access privileges, language, internal name (for C and
@ -1724,13 +1786,15 @@ SELECT $1 \parse stmt1
</varlistentry>
<varlistentry id="app-psql-meta-command-df-uc">
<term><literal>\dF[+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\dF[x+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
Lists text search configurations.
If <replaceable class="parameter">pattern</replaceable> is specified,
only configurations whose names match the pattern are shown.
If the form <literal>\dF+</literal> is used, a full description of
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, a full description of
each configuration is shown, including the underlying text search
parser and the dictionary list for each parser token type.
</para>
@ -1738,13 +1802,15 @@ SELECT $1 \parse stmt1
</varlistentry>
<varlistentry id="app-psql-meta-command-dfd">
<term><literal>\dFd[+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\dFd[x+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
Lists text search dictionaries.
If <replaceable class="parameter">pattern</replaceable> is specified,
only dictionaries whose names match the pattern are shown.
If the form <literal>\dFd+</literal> is used, additional information
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, additional information
is shown about each selected dictionary, including the underlying
text search template and the option values.
</para>
@ -1752,13 +1818,15 @@ SELECT $1 \parse stmt1
</varlistentry>
<varlistentry id="app-psql-meta-command-dfp">
<term><literal>\dFp[+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\dFp[x+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
Lists text search parsers.
If <replaceable class="parameter">pattern</replaceable> is specified,
only parsers whose names match the pattern are shown.
If the form <literal>\dFp+</literal> is used, a full description of
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, a full description of
each parser is shown, including the underlying functions and the
list of recognized token types.
</para>
@ -1766,13 +1834,15 @@ SELECT $1 \parse stmt1
</varlistentry>
<varlistentry id="app-psql-meta-command-dft">
<term><literal>\dFt[+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\dFt[x+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
Lists text search templates.
If <replaceable class="parameter">pattern</replaceable> is specified,
only templates whose names match the pattern are shown.
If the form <literal>\dFt+</literal> is used, additional information
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, additional information
is shown about each template, including the underlying function names.
</para>
</listitem>
@ -1780,7 +1850,7 @@ SELECT $1 \parse stmt1
<varlistentry id="app-psql-meta-command-dg">
<term><literal>\dg[S+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\dg[Sx+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
Lists database roles.
@ -1791,7 +1861,9 @@ SELECT $1 \parse stmt1
<literal>S</literal> modifier to include system roles.
If <replaceable class="parameter">pattern</replaceable> is specified,
only those roles whose names match the pattern are listed.
If the form <literal>\dg+</literal> is used, additional information
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, additional information
is shown about each role; currently this adds the comment for each
role.
</para>
@ -1800,11 +1872,13 @@ SELECT $1 \parse stmt1
<varlistentry id="app-psql-meta-command-dl-lc">
<term><literal>\dl[+]</literal></term>
<term><literal>\dl[x+]</literal></term>
<listitem>
<para>
This is an alias for <command>\lo_list</command>, which shows a
list of large objects.
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name,
each large object is listed with its associated permissions,
if any.
@ -1813,7 +1887,7 @@ SELECT $1 \parse stmt1
</varlistentry>
<varlistentry id="app-psql-meta-command-dl-uc">
<term><literal>\dL[S+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\dL[Sx+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
Lists procedural languages. If <replaceable
@ -1821,7 +1895,10 @@ SELECT $1 \parse stmt1
is specified, only languages whose names match the pattern are listed.
By default, only user-created languages
are shown; supply the <literal>S</literal> modifier to include system
objects. If <literal>+</literal> is appended to the command name, each
objects.
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, each
language is listed with its call handler, validator, access privileges,
and whether it is a system object.
</para>
@ -1830,7 +1907,7 @@ SELECT $1 \parse stmt1
<varlistentry id="app-psql-meta-command-dn">
<term><literal>\dn[S+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\dn[Sx+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
@ -1839,6 +1916,8 @@ SELECT $1 \parse stmt1
is specified, only schemas whose names match the pattern are listed.
By default, only user-created objects are shown; supply a
pattern or the <literal>S</literal> modifier to include system objects.
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, each object
is listed with its associated permissions and description, if any.
</para>
@ -1847,7 +1926,7 @@ SELECT $1 \parse stmt1
<varlistentry id="app-psql-meta-command-do-lc">
<term><literal>\do[S+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> [ <replaceable class="parameter">arg_pattern</replaceable> [ <replaceable class="parameter">arg_pattern</replaceable> ] ] ]</literal></term>
<term><literal>\do[Sx+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> [ <replaceable class="parameter">arg_pattern</replaceable> [ <replaceable class="parameter">arg_pattern</replaceable> ] ] ]</literal></term>
<listitem>
<para>
Lists operators with their operand and result types.
@ -1863,6 +1942,8 @@ SELECT $1 \parse stmt1
By default, only user-created objects are shown; supply a
pattern or the <literal>S</literal> modifier to include system
objects.
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name,
additional information about each operator is shown, including
the name of the underlying function, and whether it is leakproof.
@ -1872,7 +1953,7 @@ SELECT $1 \parse stmt1
<varlistentry id="app-psql-meta-command-do-uc">
<term><literal>\dO[S+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\dO[Sx+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
Lists collations.
@ -1880,7 +1961,10 @@ SELECT $1 \parse stmt1
specified, only collations whose names match the pattern are
listed. By default, only user-created objects are shown;
supply a pattern or the <literal>S</literal> modifier to
include system objects. If <literal>+</literal> is appended
include system objects.
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
If <literal>+</literal> is appended
to the command name, each collation is listed with its associated
description, if any.
Note that only collations usable with the current database's encoding
@ -1892,7 +1976,7 @@ SELECT $1 \parse stmt1
<varlistentry id="app-psql-meta-command-dp-lc">
<term><literal>\dp[S] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\dp[Sx] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
Lists tables, views and sequences with their
@ -1902,6 +1986,8 @@ SELECT $1 \parse stmt1
pattern are listed. By default only user-created objects are shown;
supply a pattern or the <literal>S</literal> modifier to include
system objects.
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
</para>
<para>
@ -1916,7 +2002,7 @@ SELECT $1 \parse stmt1
<varlistentry id="app-psql-meta-command-dp-uc">
<term><literal>\dP[itn+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\dP[itnx+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
Lists partitioned relations.
@ -1936,6 +2022,8 @@ SELECT $1 \parse stmt1
</para>
<para>
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, the sum of the
sizes of each relation's partitions is also displayed, along with the
relation's description.
@ -1949,7 +2037,7 @@ SELECT $1 \parse stmt1
<varlistentry id="app-psql-meta-command-drds">
<term><literal>\drds [ <link linkend="app-psql-patterns"><replaceable class="parameter">role-pattern</replaceable></link> [ <link linkend="app-psql-patterns"><replaceable class="parameter">database-pattern</replaceable></link> ] ]</literal></term>
<term><literal>\drds[x] [ <link linkend="app-psql-patterns"><replaceable class="parameter">role-pattern</replaceable></link> [ <link linkend="app-psql-patterns"><replaceable class="parameter">database-pattern</replaceable></link> ] ]</literal></term>
<listitem>
<para>
Lists defined configuration settings. These settings can be
@ -1959,6 +2047,8 @@ SELECT $1 \parse stmt1
specific roles and databases to list, respectively. If omitted, or if
<literal>*</literal> is specified, all settings are listed, including those
not role-specific or database-specific, respectively.
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
</para>
<para>
@ -1972,7 +2062,7 @@ SELECT $1 \parse stmt1
<varlistentry id="app-psql-meta-command-drg">
<term><literal>\drg[S] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\drg[Sx] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
Lists information about each granted role membership, including
@ -1986,19 +2076,23 @@ SELECT $1 \parse stmt1
<literal>S</literal> modifier to include system roles.
If <replaceable class="parameter">pattern</replaceable> is specified,
only grants to those roles whose names match the pattern are listed.
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
</para>
</listitem>
</varlistentry>
<varlistentry id="app-psql-meta-command-drp">
<term><literal>\dRp[+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\dRp[x+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
Lists replication publications.
If <replaceable class="parameter">pattern</replaceable> is
specified, only those publications whose names match the pattern are
listed.
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, the tables and
schemas associated with each publication are shown as well.
</para>
@ -2006,13 +2100,15 @@ SELECT $1 \parse stmt1
</varlistentry>
<varlistentry id="app-psql-meta-command-drs">
<term><literal>\dRs[+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\dRs[x+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
Lists replication subscriptions.
If <replaceable class="parameter">pattern</replaceable> is
specified, only those subscriptions whose names match the pattern are
listed.
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, additional
properties of the subscriptions are shown.
</para>
@ -2020,12 +2116,14 @@ SELECT $1 \parse stmt1
</varlistentry>
<varlistentry id="app-psql-meta-command-dt">
<term><literal>\dT[S+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\dT[Sx+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
Lists data types.
If <replaceable class="parameter">pattern</replaceable> is
specified, only types whose names match the pattern are listed.
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, each type is
listed with its internal name and size, its allowed values
if it is an <type>enum</type> type, and its associated permissions.
@ -2037,7 +2135,7 @@ SELECT $1 \parse stmt1
</varlistentry>
<varlistentry id="app-psql-meta-command-du">
<term><literal>\du[S+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\du[Sx+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
Lists database roles.
@ -2048,7 +2146,9 @@ SELECT $1 \parse stmt1
<literal>S</literal> modifier to include system roles.
If <replaceable class="parameter">pattern</replaceable> is specified,
only those roles whose names match the pattern are listed.
If the form <literal>\du+</literal> is used, additional information
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, additional information
is shown about each role; currently this adds the comment for each
role.
</para>
@ -2056,27 +2156,31 @@ SELECT $1 \parse stmt1
</varlistentry>
<varlistentry id="app-psql-meta-command-dx-lc">
<term><literal>\dx[+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\dx[x+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
Lists installed extensions.
If <replaceable class="parameter">pattern</replaceable>
is specified, only those extensions whose names match the pattern
are listed.
If the form <literal>\dx+</literal> is used, all the objects belonging
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, all the objects belonging
to each matching extension are listed.
</para>
</listitem>
</varlistentry>
<varlistentry id="app-psql-meta-command-dx-uc">
<term><literal>\dX [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\dX[x] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
Lists extended statistics.
If <replaceable class="parameter">pattern</replaceable>
is specified, only those extended statistics whose names match the
pattern are listed.
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
</para>
<para>
@ -2092,13 +2196,15 @@ SELECT $1 \parse stmt1
</varlistentry>
<varlistentry id="app-psql-meta-command-dy">
<term><literal>\dy[+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\dy[x+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
Lists event triggers.
If <replaceable class="parameter">pattern</replaceable>
is specified, only those event triggers whose names match the pattern
are listed.
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, each object
is listed with its associated description.
</para>
@ -2686,13 +2792,15 @@ SELECT
<varlistentry id="app-psql-meta-command-list">
<term><literal>\l[+]</literal> or <literal>\list[+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\l[x+]</literal> or <literal>\list[x+] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
List the databases in the server and show their names, owners,
character set encodings, and access privileges.
If <replaceable class="parameter">pattern</replaceable> is specified,
only databases whose names match the pattern are listed.
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name, database
sizes, default tablespaces, and descriptions are also displayed.
(Size information is only available for databases that the current
@ -2756,12 +2864,14 @@ lo_import 152801
</varlistentry>
<varlistentry id="app-psql-meta-command-lo-list">
<term><literal>\lo_list[+]</literal></term>
<term><literal>\lo_list[x+]</literal></term>
<listitem>
<para>
Shows a list of all <productname>PostgreSQL</productname>
large objects currently stored in the database,
along with any comments provided for them.
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
If <literal>+</literal> is appended to the command name,
each large object is listed with its associated permissions,
if any.
@ -3695,7 +3805,7 @@ testdb=&gt; <userinput>\setenv LESS -imx4F</userinput>
<varlistentry id="app-psql-meta-command-z">
<term><literal>\z[S] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<term><literal>\z[Sx] [ <link linkend="app-psql-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
Lists tables, views and sequences with their
@ -3705,6 +3815,8 @@ testdb=&gt; <userinput>\setenv LESS -imx4F</userinput>
pattern are listed. By default only user-created objects are shown;
supply a pattern or the <literal>S</literal> modifier to include
system objects.
If <literal>x</literal> is appended to the command name, the results
are displayed in expanded mode.
</para>
<para>
@ -5388,6 +5500,31 @@ testdb=&gt; <userinput>\df int*pl * bigint</userinput>
</programlisting>
</para>
<para>
Here, the <literal>+</literal> option is used to display additional
information about one of these functions, and <literal>x</literal> is used
to display the results in expanded mode:
<programlisting>
testdb=&gt; <userinput>\df+x int*pl integer bigint</userinput>
List of functions
-[ RECORD 1 ]-------+-----------------------------
Schema | pg_catalog
Name | int48pl
Result data type | bigint
Argument data types | integer, bigint
Type | func
Volatility | immutable
Parallel | safe
Owner | postgres
Security | invoker
Leakproof? | no
Access privileges |
Language | internal
Internal name | int48pl
Description | implementation of + operator
</programlisting>
</para>
<para>
When suitable, query results can be shown in a crosstab representation
with the <command>\crosstabview</command> command:

View File

@ -377,7 +377,10 @@ exec_command(const char *cmd,
else if (strcmp(cmd, "if") == 0)
status = exec_command_if(scan_state, cstack, query_buf);
else if (strcmp(cmd, "l") == 0 || strcmp(cmd, "list") == 0 ||
strcmp(cmd, "l+") == 0 || strcmp(cmd, "list+") == 0)
strcmp(cmd, "lx") == 0 || strcmp(cmd, "listx") == 0 ||
strcmp(cmd, "l+") == 0 || strcmp(cmd, "list+") == 0 ||
strcmp(cmd, "lx+") == 0 || strcmp(cmd, "listx+") == 0 ||
strcmp(cmd, "l+x") == 0 || strcmp(cmd, "list+x") == 0)
status = exec_command_list(scan_state, active_branch, cmd);
else if (strncmp(cmd, "lo_", 3) == 0)
status = exec_command_lo(scan_state, active_branch, cmd);
@ -424,7 +427,9 @@ exec_command(const char *cmd,
query_buf, previous_buf);
else if (strcmp(cmd, "x") == 0)
status = exec_command_x(scan_state, active_branch);
else if (strcmp(cmd, "z") == 0 || strcmp(cmd, "zS") == 0)
else if (strcmp(cmd, "z") == 0 ||
strcmp(cmd, "zS") == 0 || strcmp(cmd, "zx") == 0 ||
strcmp(cmd, "zSx") == 0 || strcmp(cmd, "zxS") == 0)
status = exec_command_z(scan_state, active_branch, cmd);
else if (strcmp(cmd, "!") == 0)
status = exec_command_shell_escape(scan_state, active_branch);
@ -850,6 +855,7 @@ exec_command_d(PsqlScanState scan_state, bool active_branch, const char *cmd)
char *pattern;
bool show_verbose,
show_system;
unsigned short int save_expanded;
/* We don't do SQLID reduction on the pattern yet */
pattern = psql_scan_slash_option(scan_state,
@ -858,6 +864,16 @@ exec_command_d(PsqlScanState scan_state, bool active_branch, const char *cmd)
show_verbose = strchr(cmd, '+') ? true : false;
show_system = strchr(cmd, 'S') ? true : false;
/*
* The 'x' option turns expanded mode on for this command only. This
* is allowed in all \d* commands, except \d by itself, since \dx is a
* separate command. So the 'x' option cannot appear immediately after
* \d, but it can appear after \d followed by other options.
*/
save_expanded = pset.popt.topt.expanded;
if (cmd[1] != '\0' && strchr(&cmd[2], 'x'))
pset.popt.topt.expanded = 1;
switch (cmd[1])
{
case '\0':
@ -873,13 +889,14 @@ exec_command_d(PsqlScanState scan_state, bool active_branch, const char *cmd)
{
char *pattern2 = NULL;
if (pattern && cmd[2] != '\0' && cmd[2] != '+')
if (pattern && cmd[2] != '\0' && cmd[2] != '+' && cmd[2] != 'x')
pattern2 = psql_scan_slash_option(scan_state, OT_NORMAL, NULL, true);
switch (cmd[2])
{
case '\0':
case '+':
case 'x':
success = describeAccessMethods(pattern, show_verbose);
break;
case 'c':
@ -941,6 +958,7 @@ exec_command_d(PsqlScanState scan_state, bool active_branch, const char *cmd)
case 'p':
case 't':
case 'w':
case 'x':
success = exec_command_dfo(scan_state, cmd, pattern,
show_verbose, show_system);
break;
@ -981,6 +999,7 @@ exec_command_d(PsqlScanState scan_state, bool active_branch, const char *cmd)
case 't':
case 'i':
case 'n':
case 'x':
success = listPartitionedTables(&cmd[2], pattern, show_verbose);
break;
default:
@ -1041,6 +1060,7 @@ exec_command_d(PsqlScanState scan_state, bool active_branch, const char *cmd)
{
case '\0':
case '+':
case 'x':
success = listTSConfigs(pattern, show_verbose);
break;
case 'p':
@ -1093,6 +1113,9 @@ exec_command_d(PsqlScanState scan_state, bool active_branch, const char *cmd)
status = PSQL_CMD_UNKNOWN;
}
/* Restore original expanded mode */
pset.popt.topt.expanded = save_expanded;
free(pattern);
}
else
@ -2044,14 +2067,23 @@ exec_command_list(PsqlScanState scan_state, bool active_branch, const char *cmd)
{
char *pattern;
bool show_verbose;
unsigned short int save_expanded;
pattern = psql_scan_slash_option(scan_state,
OT_NORMAL, NULL, true);
show_verbose = strchr(cmd, '+') ? true : false;
/* if 'x' option specified, force expanded mode */
save_expanded = pset.popt.topt.expanded;
if (strchr(cmd, 'x'))
pset.popt.topt.expanded = 1;
success = listAllDbs(pattern, show_verbose);
/* restore original expanded mode */
pset.popt.topt.expanded = save_expanded;
free(pattern);
}
else
@ -2107,10 +2139,23 @@ exec_command_lo(PsqlScanState scan_state, bool active_branch, const char *cmd)
}
}
else if (strcmp(cmd + 3, "list") == 0)
success = listLargeObjects(false);
else if (strcmp(cmd + 3, "list+") == 0)
success = listLargeObjects(true);
else if (strncmp(cmd + 3, "list", 4) == 0)
{
bool show_verbose;
unsigned short int save_expanded;
show_verbose = strchr(cmd, '+') ? true : false;
/* if 'x' option specified, force expanded mode */
save_expanded = pset.popt.topt.expanded;
if (strchr(cmd, 'x'))
pset.popt.topt.expanded = 1;
success = listLargeObjects(show_verbose);
/* restore original expanded mode */
pset.popt.topt.expanded = save_expanded;
}
else if (strcmp(cmd + 3, "unlink") == 0)
{
@ -3061,14 +3106,23 @@ exec_command_z(PsqlScanState scan_state, bool active_branch, const char *cmd)
{
char *pattern;
bool show_system;
unsigned short int save_expanded;
pattern = psql_scan_slash_option(scan_state,
OT_NORMAL, NULL, true);
show_system = strchr(cmd, 'S') ? true : false;
/* if 'x' option specified, force expanded mode */
save_expanded = pset.popt.topt.expanded;
if (strchr(cmd, 'x'))
pset.popt.topt.expanded = 1;
success = permissionsList(pattern, show_system);
/* restore original expanded mode */
pset.popt.topt.expanded = save_expanded;
free(pattern);
}
else

View File

@ -309,9 +309,9 @@ describeFunctions(const char *functypes, const char *func_pattern,
/* No "Parallel" column before 9.6 */
static const bool translate_columns_pre_96[] = {false, false, false, false, true, true, false, true, true, false, false, false, false};
if (strlen(functypes) != strspn(functypes, "anptwS+"))
if (strlen(functypes) != strspn(functypes, "anptwSx+"))
{
pg_log_error("\\df only takes [anptwS+] as options");
pg_log_error("\\df only takes [anptwSx+] as options");
return true;
}

View File

@ -219,67 +219,67 @@ slashUsage(unsigned short int pager)
HELP0("\n");
HELP0("Informational\n");
HELP0(" (options: S = show system objects, + = additional detail)\n");
HELP0(" \\d[S+] list tables, views, and sequences\n");
HELP0(" (options: S = show system objects, x = expanded mode, + = additional detail)\n");
HELP0(" \\d[Sx+] list tables, views, and sequences\n");
HELP0(" \\d[S+] NAME describe table, view, sequence, or index\n");
HELP0(" \\da[S] [PATTERN] list aggregates\n");
HELP0(" \\dA[+] [PATTERN] list access methods\n");
HELP0(" \\dAc[+] [AMPTRN [TYPEPTRN]] list operator classes\n");
HELP0(" \\dAf[+] [AMPTRN [TYPEPTRN]] list operator families\n");
HELP0(" \\dAo[+] [AMPTRN [OPFPTRN]] list operators of operator families\n");
HELP0(" \\dAp[+] [AMPTRN [OPFPTRN]] list support functions of operator families\n");
HELP0(" \\db[+] [PATTERN] list tablespaces\n");
HELP0(" \\dc[S+] [PATTERN] list conversions\n");
HELP0(" \\dconfig[+] [PATTERN] list configuration parameters\n");
HELP0(" \\dC[+] [PATTERN] list casts\n");
HELP0(" \\dd[S] [PATTERN] show object descriptions not displayed elsewhere\n");
HELP0(" \\dD[S+] [PATTERN] list domains\n");
HELP0(" \\ddp [PATTERN] list default privileges\n");
HELP0(" \\dE[S+] [PATTERN] list foreign tables\n");
HELP0(" \\des[+] [PATTERN] list foreign servers\n");
HELP0(" \\det[+] [PATTERN] list foreign tables\n");
HELP0(" \\deu[+] [PATTERN] list user mappings\n");
HELP0(" \\dew[+] [PATTERN] list foreign-data wrappers\n");
HELP0(" \\df[anptw][S+] [FUNCPTRN [TYPEPTRN ...]]\n"
HELP0(" \\da[Sx] [PATTERN] list aggregates\n");
HELP0(" \\dA[x+] [PATTERN] list access methods\n");
HELP0(" \\dAc[x+] [AMPTRN [TYPEPTRN]] list operator classes\n");
HELP0(" \\dAf[x+] [AMPTRN [TYPEPTRN]] list operator families\n");
HELP0(" \\dAo[x+] [AMPTRN [OPFPTRN]] list operators of operator families\n");
HELP0(" \\dAp[x+] [AMPTRN [OPFPTRN]] list support functions of operator families\n");
HELP0(" \\db[x+] [PATTERN] list tablespaces\n");
HELP0(" \\dc[Sx+] [PATTERN] list conversions\n");
HELP0(" \\dconfig[x+] [PATTERN] list configuration parameters\n");
HELP0(" \\dC[x+] [PATTERN] list casts\n");
HELP0(" \\dd[Sx] [PATTERN] show object descriptions not displayed elsewhere\n");
HELP0(" \\dD[Sx+] [PATTERN] list domains\n");
HELP0(" \\ddp[x] [PATTERN] list default privileges\n");
HELP0(" \\dE[Sx+] [PATTERN] list foreign tables\n");
HELP0(" \\des[x+] [PATTERN] list foreign servers\n");
HELP0(" \\det[x+] [PATTERN] list foreign tables\n");
HELP0(" \\deu[x+] [PATTERN] list user mappings\n");
HELP0(" \\dew[x+] [PATTERN] list foreign-data wrappers\n");
HELP0(" \\df[anptw][Sx+] [FUNCPTRN [TYPEPTRN ...]]\n"
" list [only agg/normal/procedure/trigger/window] functions\n");
HELP0(" \\dF[+] [PATTERN] list text search configurations\n");
HELP0(" \\dFd[+] [PATTERN] list text search dictionaries\n");
HELP0(" \\dFp[+] [PATTERN] list text search parsers\n");
HELP0(" \\dFt[+] [PATTERN] list text search templates\n");
HELP0(" \\dg[S+] [PATTERN] list roles\n");
HELP0(" \\di[S+] [PATTERN] list indexes\n");
HELP0(" \\dl[+] list large objects, same as \\lo_list\n");
HELP0(" \\dL[S+] [PATTERN] list procedural languages\n");
HELP0(" \\dm[S+] [PATTERN] list materialized views\n");
HELP0(" \\dn[S+] [PATTERN] list schemas\n");
HELP0(" \\do[S+] [OPPTRN [TYPEPTRN [TYPEPTRN]]]\n"
HELP0(" \\dF[x+] [PATTERN] list text search configurations\n");
HELP0(" \\dFd[x+] [PATTERN] list text search dictionaries\n");
HELP0(" \\dFp[x+] [PATTERN] list text search parsers\n");
HELP0(" \\dFt[x+] [PATTERN] list text search templates\n");
HELP0(" \\dg[Sx+] [PATTERN] list roles\n");
HELP0(" \\di[Sx+] [PATTERN] list indexes\n");
HELP0(" \\dl[x+] list large objects, same as \\lo_list\n");
HELP0(" \\dL[Sx+] [PATTERN] list procedural languages\n");
HELP0(" \\dm[Sx+] [PATTERN] list materialized views\n");
HELP0(" \\dn[Sx+] [PATTERN] list schemas\n");
HELP0(" \\do[Sx+] [OPPTRN [TYPEPTRN [TYPEPTRN]]]\n"
" list operators\n");
HELP0(" \\dO[S+] [PATTERN] list collations\n");
HELP0(" \\dp[S] [PATTERN] list table, view, and sequence access privileges\n");
HELP0(" \\dP[itn+] [PATTERN] list [only index/table] partitioned relations [n=nested]\n");
HELP0(" \\drds [ROLEPTRN [DBPTRN]] list per-database role settings\n");
HELP0(" \\drg[S] [PATTERN] list role grants\n");
HELP0(" \\dRp[+] [PATTERN] list replication publications\n");
HELP0(" \\dRs[+] [PATTERN] list replication subscriptions\n");
HELP0(" \\ds[S+] [PATTERN] list sequences\n");
HELP0(" \\dt[S+] [PATTERN] list tables\n");
HELP0(" \\dT[S+] [PATTERN] list data types\n");
HELP0(" \\du[S+] [PATTERN] list roles\n");
HELP0(" \\dv[S+] [PATTERN] list views\n");
HELP0(" \\dx[+] [PATTERN] list extensions\n");
HELP0(" \\dX [PATTERN] list extended statistics\n");
HELP0(" \\dy[+] [PATTERN] list event triggers\n");
HELP0(" \\l[+] [PATTERN] list databases\n");
HELP0(" \\dO[Sx+] [PATTERN] list collations\n");
HELP0(" \\dp[Sx] [PATTERN] list table, view, and sequence access privileges\n");
HELP0(" \\dP[itnx+] [PATTERN] list [only index/table] partitioned relations [n=nested]\n");
HELP0(" \\drds[x] [ROLEPTRN [DBPTRN]] list per-database role settings\n");
HELP0(" \\drg[Sx] [PATTERN] list role grants\n");
HELP0(" \\dRp[x+] [PATTERN] list replication publications\n");
HELP0(" \\dRs[x+] [PATTERN] list replication subscriptions\n");
HELP0(" \\ds[Sx+] [PATTERN] list sequences\n");
HELP0(" \\dt[Sx+] [PATTERN] list tables\n");
HELP0(" \\dT[Sx+] [PATTERN] list data types\n");
HELP0(" \\du[Sx+] [PATTERN] list roles\n");
HELP0(" \\dv[Sx+] [PATTERN] list views\n");
HELP0(" \\dx[x+] [PATTERN] list extensions\n");
HELP0(" \\dX[x] [PATTERN] list extended statistics\n");
HELP0(" \\dy[x+] [PATTERN] list event triggers\n");
HELP0(" \\l[x+] [PATTERN] list databases\n");
HELP0(" \\sf[+] FUNCNAME show a function's definition\n");
HELP0(" \\sv[+] VIEWNAME show a view's definition\n");
HELP0(" \\z[S] [PATTERN] same as \\dp\n");
HELP0(" \\z[Sx] [PATTERN] same as \\dp\n");
HELP0("\n");
HELP0("Large Objects\n");
HELP0(" \\lo_export LOBOID FILE write large object to file\n");
HELP0(" \\lo_import FILE [COMMENT]\n"
" read large object from file\n");
HELP0(" \\lo_list[+] list large objects\n");
HELP0(" \\lo_list[x+] list large objects\n");
HELP0(" \\lo_unlink LOBOID delete a large object\n");
HELP0("\n");

View File

@ -2841,6 +2841,19 @@ Owned by: public.psql_serial_tab.id
pg_catalog | exp | double precision | double precision | func
pg_catalog | exp | numeric | numeric | func
\dfx exp
Schema | pg_catalog
Name | exp
Result data type | double precision
Argument data types | double precision
Type | func
--------------------+-----------------
Schema | pg_catalog
Name | exp
Result data type | numeric
Argument data types | numeric
Type | func
\pset tuples_only false
\pset expanded on
\d psql_serial_tab_id_seq
@ -3047,6 +3060,49 @@ Access method: heap
tableam_display | view_heap_psql | view | regress_display_role | permanent | 0 bytes |
(4 rows)
-- \d with 'x' enables expanded mode, but only without a pattern
\d+x tbl_heap
Table "tableam_display.tbl_heap"
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
--------+----------------+-----------+----------+---------+----------+--------------+-------------
f1 | integer | | | | plain | |
f2 | character(100) | | | | extended | |
\d+x
List of relations
-[ RECORD 1 ]---------------------
Schema | tableam_display
Name | mat_view_heap_psql
Type | materialized view
Owner | regress_display_role
Persistence | permanent
Size | 0 bytes
Description |
-[ RECORD 2 ]---------------------
Schema | tableam_display
Name | tbl_heap
Type | table
Owner | regress_display_role
Persistence | permanent
Size | 0 bytes
Description |
-[ RECORD 3 ]---------------------
Schema | tableam_display
Name | tbl_heap_psql
Type | table
Owner | regress_display_role
Persistence | permanent
Size | 0 bytes
Description |
-[ RECORD 4 ]---------------------
Schema | tableam_display
Name | view_heap_psql
Type | view
Owner | regress_display_role
Persistence | permanent
Size | 0 bytes
Description |
RESET ROLE;
RESET search_path;
DROP SCHEMA tableam_display CASCADE;
@ -5238,6 +5294,30 @@ List of access methods
btree | float_ops | real | double precision | 3 | in_range(real,real,double precision,boolean,boolean)
(8 rows)
\dApx+ btree time_ops
List of support functions of operator families
-[ RECORD 1 ]---------+---------------------------------------------------------------------------------
AM | btree
Operator family | time_ops
Registered left type | time without time zone
Registered right type | time without time zone
Number | 1
Function | time_cmp(time without time zone,time without time zone)
-[ RECORD 2 ]---------+---------------------------------------------------------------------------------
AM | btree
Operator family | time_ops
Registered left type | time without time zone
Registered right type | time without time zone
Number | 4
Function | btequalimage(oid)
-[ RECORD 3 ]---------+---------------------------------------------------------------------------------
AM | btree
Operator family | time_ops
Registered left type | time without time zone
Registered right type | interval
Number | 3
Function | in_range(time without time zone,time without time zone,interval,boolean,boolean)
\dAp * pg_catalog.uuid_ops
List of support functions of operator families
AM | Operator family | Registered left type | Registered right type | Number | Function
@ -6831,5 +6911,15 @@ CREATE TABLE defprivs (a int);
public | defprivs | table | (default) | |
(1 row)
\zx defprivs
Access privileges
-[ RECORD 1 ]-----+----------
Schema | public
Name | defprivs
Type | table
Access privileges | (default)
Column privileges |
Policies |
\pset null ''
DROP TABLE defprivs;

View File

@ -498,6 +498,7 @@ create table psql_serial_tab (id serial);
\d psql_serial_tab_id_seq
\pset tuples_only true
\df exp
\dfx exp
\pset tuples_only false
\pset expanded on
\d psql_serial_tab_id_seq
@ -560,6 +561,9 @@ CREATE MATERIALIZED VIEW mat_view_heap_psql USING heap_psql AS SELECT f1 from tb
\dv+
\set HIDE_TABLEAM on
\d+
-- \d with 'x' enables expanded mode, but only without a pattern
\d+x tbl_heap
\d+x
RESET ROLE;
RESET search_path;
DROP SCHEMA tableam_display CASCADE;
@ -1309,6 +1313,7 @@ drop role regress_partitioning_role;
\dAo+ btree array_ops|float_ops
\dAo * pg_catalog.jsonb_path_ops
\dAp+ btree float_ops
\dApx+ btree time_ops
\dAp * pg_catalog.uuid_ops
-- check \dconfig
@ -1927,5 +1932,6 @@ ROLLBACK;
CREATE TABLE defprivs (a int);
\pset null '(default)'
\z defprivs
\zx defprivs
\pset null ''
DROP TABLE defprivs;