ORDER BY index_method, opfamily_name, opfamily_operator;
</programlisting>
</para>
+
+ <tip>
+ <para>
+ <xref linkend="app-psql"/> has
+ commands <command>\dAc</command>, <command>\dAf</command>,
+ and <command>\dAo</command>, which provide slightly more sophisticated
+ versions of these queries.
+ </para>
+ </tip>
</sect1>
<listitem>
<para>
Lists operator classes
- (see <xref linkend="catalog-pg-opclass"/>).
+ (see <xref linkend="xindex-opclass"/>).
If <replaceable class="parameter">access-method-pattern</replaceable>
is specified, only operator classes associated with access methods whose
- names match the pattern are listed.
+ names match that pattern are listed.
If <replaceable class="parameter">input-type-pattern</replaceable>
is specified, only operator classes associated with input types whose
- names match the pattern are listed.
+ names match that pattern are listed.
If <literal>+</literal> is appended to the command name, each operator
class is listed with its associated operator family and owner.
</para>
<listitem>
<para>
Lists operator families
- (see <xref linkend="catalog-pg-opfamily"/>).
+ (see <xref linkend="xindex-opfamily"/>).
If <replaceable class="parameter">access-method-pattern</replaceable>
is specified, only operator families associated with access methods whose
- names match the pattern are listed.
+ names match that pattern are listed.
If <replaceable class="parameter">input-type-pattern</replaceable>
is specified, only operator families associated with input types whose
- names match the pattern are listed.
+ names match that pattern are listed.
If <literal>+</literal> is appended to the command name, each operator
family is listed with its owner.
</para>
<listitem>
<para>
Lists operators associated with operator families
- (<xref linkend="catalog-pg-amop"/>).
+ (see <xref linkend="xindex-strategies"/>).
If <replaceable class="parameter">access-method-pattern</replaceable>
is specified, only members of operator families associated with access
- methods whose names match the pattern are listed.
- If <replaceable class="parameter">input-type-pattern</replaceable>
- is specified, only members of operator families whose names match the
+ methods whose names match that pattern are listed.
+ If <replaceable class="parameter">operator-family-pattern</replaceable>
+ is specified, only members of operator families whose names match that
pattern are listed.
If <literal>+</literal> is appended to the command name, each operator
- is listed with its strategy number, purpose and sort operator family.
+ is listed with its sort operator family (if it is an ordering operator).
</para>
</listitem>
</varlistentry>
</term>
<listitem>
<para>
- Lists functions associated with operator families
- (<xref linkend="catalog-pg-amproc"/>).
+ Lists support functions associated with operator families
+ (see <xref linkend="xindex-support"/>).
If <replaceable class="parameter">access-method-pattern</replaceable>
- is specified, only members of operator families associated with access
- methods whose names match the pattern are listed.
- If <replaceable class="parameter">input-type-pattern</replaceable>
- is specified, only members of operator families whose names match the
- pattern are listed.
+ is specified, only functions of operator families associated with
+ access methods whose names match that pattern are listed.
+ If <replaceable class="parameter">operator-family-pattern</replaceable>
+ is specified, only functions of operator families whose names match
+ that pattern are listed.
+ If <literal>+</literal> is appended to the command name, functions are
+ displayed verbosely, with their actual parameter lists.
</para>
</listitem>
</varlistentry>
* \dAc
* Lists operator classes
*
- * Takes an optional regexps to filter by index access method and type.
+ * Takes optional regexps to filter by index access method and input data type.
*/
bool
listOperatorClasses(const char *access_method_pattern,
" LEFT JOIN pg_catalog.pg_am am on am.oid = c.opcmethod\n"
" LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.opcnamespace\n"
" LEFT JOIN pg_catalog.pg_type t ON t.oid = c.opcintype\n"
+ " LEFT JOIN pg_catalog.pg_namespace tn ON tn.oid = t.typnamespace\n"
);
if (verbose)
appendPQExpBuffer(&buf,
have_where = processSQLNamePattern(pset.db, &buf, access_method_pattern,
false, false, NULL, "am.amname", NULL, NULL);
if (type_pattern)
+ {
+ /* Match type name pattern against either internal or external name */
processSQLNamePattern(pset.db, &buf, type_pattern, have_where, false,
- NULL, "t.typname", NULL, NULL);
+ "tn.nspname", "t.typname",
+ "pg_catalog.format_type(t.oid, NULL)",
+ "pg_catalog.pg_type_is_visible(t.oid)");
+ }
appendPQExpBufferStr(&buf, "ORDER BY 1, 2, 4;");
res = PSQLexec(buf.data);
* \dAf
* Lists operator families
*
- * Takes an optional regexps to filter by index access method and type.
+ * Takes optional regexps to filter by index access method and input data type.
*/
bool
listOperatorFamilies(const char *access_method_pattern,
if (type_pattern)
{
appendPQExpBuffer(&buf,
- "\n %s EXISTS (\n"
+ " %s EXISTS (\n"
" SELECT 1\n"
" FROM pg_catalog.pg_type t\n"
" JOIN pg_catalog.pg_opclass oc ON oc.opcintype = t.oid\n"
- " WHERE oc.opcfamily = f.oid",
+ " LEFT JOIN pg_catalog.pg_namespace tn ON tn.oid = t.typnamespace\n"
+ " WHERE oc.opcfamily = f.oid\n",
have_where ? "AND" : "WHERE");
+ /* Match type name pattern against either internal or external name */
processSQLNamePattern(pset.db, &buf, type_pattern, true, false,
- NULL, "t.typname", NULL, NULL);
- appendPQExpBuffer(&buf, ")");
+ "tn.nspname", "t.typname",
+ "pg_catalog.format_type(t.oid, NULL)",
+ "pg_catalog.pg_type_is_visible(t.oid)");
+ appendPQExpBuffer(&buf, " )\n");
}
appendPQExpBufferStr(&buf, "ORDER BY 1, 2;");
* \dAo
* Lists operators of operator families
*
- * Takes an optional regexps to filter by index access method and operator
+ * Takes optional regexps to filter by index access method and operator
* family.
*/
bool
* \dAp
* Lists support functions of operator families
*
- * Takes an optional regexps to filter by index access method and operator
+ * Takes optional regexps to filter by index access method and operator
* family.
*/
bool