summaryrefslogtreecommitdiff
path: root/src/bin/psql/describe.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/bin/psql/describe.c')
-rw-r--r--src/bin/psql/describe.c93
1 files changed, 46 insertions, 47 deletions
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index cd39b913cda..3b870c3b17e 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -6067,15 +6067,16 @@ listOperatorClasses(const char *access_method_pattern,
printfPQExpBuffer(&buf,
"SELECT DISTINCT"
" am.amname AS \"%s\",\n"
- " c.opcintype::pg_catalog.regtype AS \"%s\",\n"
- " (CASE WHEN c.opckeytype <> 0 AND c.opckeytype <> c.opcintype\n"
- " THEN c.opckeytype\n"
- " ELSE NULL -- c.opcintype\n"
- " END)::pg_catalog.regtype AS \"%s\",\n"
+ " pg_catalog.format_type(c.opcintype, NULL) AS \"%s\",\n"
+ " CASE\n"
+ " WHEN c.opckeytype <> 0 AND c.opckeytype <> c.opcintype\n"
+ " THEN pg_catalog.format_type(c.opckeytype, NULL)\n"
+ " ELSE NULL\n"
+ " END AS \"%s\",\n"
" CASE\n"
" WHEN pg_catalog.pg_opclass_is_visible(c.oid)\n"
- " THEN format('%%I', c.opcname)\n"
- " ELSE format('%%I.%%I', n.nspname, c.opcname)\n"
+ " THEN pg_catalog.format('%%I', c.opcname)\n"
+ " ELSE pg_catalog.format('%%I.%%I', n.nspname, c.opcname)\n"
" END AS \"%s\",\n"
" (CASE WHEN c.opcdefault\n"
" THEN '%s'\n"
@@ -6092,8 +6093,8 @@ listOperatorClasses(const char *access_method_pattern,
appendPQExpBuffer(&buf,
",\n CASE\n"
" WHEN pg_catalog.pg_opfamily_is_visible(of.oid)\n"
- " THEN format('%%I', of.opfname)\n"
- " ELSE format('%%I.%%I', ofn.nspname, of.opfname)\n"
+ " THEN pg_catalog.format('%%I', of.opfname)\n"
+ " ELSE pg_catalog.format('%%I.%%I', ofn.nspname, of.opfname)\n"
" END AS \"%s\",\n"
" pg_catalog.pg_get_userbyid(c.opcowner) AS \"%s\"\n",
gettext_noop("Operator family"),
@@ -6157,12 +6158,12 @@ listOperatorFamilies(const char *access_method_pattern,
" am.amname AS \"%s\",\n"
" CASE\n"
" WHEN pg_catalog.pg_opfamily_is_visible(f.oid)\n"
- " THEN format('%%I', f.opfname)\n"
- " ELSE format('%%I.%%I', n.nspname, f.opfname)\n"
+ " THEN pg_catalog.format('%%I', f.opfname)\n"
+ " ELSE pg_catalog.format('%%I.%%I', n.nspname, f.opfname)\n"
" END AS \"%s\",\n"
" (SELECT\n"
- " string_agg(format_type(oc.opcintype, -1), ', ')\n"
- " FROM pg_opclass oc\n"
+ " pg_catalog.string_agg(pg_catalog.format_type(oc.opcintype, NULL), ', ')\n"
+ " FROM pg_catalog.pg_opclass oc\n"
" WHERE oc.opcfamily = f.oid) \"%s\"",
gettext_noop("AM"),
gettext_noop("Operator family"),
@@ -6185,8 +6186,8 @@ listOperatorFamilies(const char *access_method_pattern,
appendPQExpBuffer(&buf,
"\n %s EXISTS (\n"
" SELECT 1\n"
- " FROM pg_type t\n"
- " JOIN pg_opclass oc ON oc.opcintype = t.oid\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",
have_where ? "AND" : "WHERE");
processSQLNamePattern(pset.db, &buf, type_pattern, true, false,
@@ -6237,38 +6238,29 @@ listOpFamilyOperators(const char *access_method_pattern,
" am.amname AS \"%s\",\n"
" CASE\n"
" WHEN pg_catalog.pg_opfamily_is_visible(of.oid)\n"
- " THEN format('%%I', of.opfname)\n"
- " ELSE format('%%I.%%I', nsf.nspname, of.opfname)\n"
+ " THEN pg_catalog.format('%%I', of.opfname)\n"
+ " ELSE pg_catalog.format('%%I.%%I', nsf.nspname, of.opfname)\n"
" END AS \"%s\",\n"
- " format ('%%s (%%s, %%s)',\n"
- " CASE\n"
- " WHEN pg_catalog.pg_operator_is_visible(op.oid) \n"
- " THEN op.oprname::pg_catalog.text \n"
- " ELSE o.amopopr::pg_catalog.regoper::pg_catalog.text \n"
- " END,\n"
- " pg_catalog.format_type(o.amoplefttype, NULL),\n"
- " pg_catalog.format_type(o.amoprighttype, NULL)\n"
- " ) AS \"%s\"\n",
+ " o.amopopr::pg_catalog.regoperator AS \"%s\"\n,"
+ " o.amopstrategy AS \"%s\",\n"
+ " CASE o.amoppurpose\n"
+ " WHEN 'o' THEN '%s'\n"
+ " WHEN 's' THEN '%s'\n"
+ " END AS \"%s\"\n",
gettext_noop("AM"),
gettext_noop("Operator family"),
- gettext_noop("Operator"));
+ gettext_noop("Operator"),
+ gettext_noop("Strategy"),
+ gettext_noop("ordering"),
+ gettext_noop("search"),
+ gettext_noop("Purpose"));
if (verbose)
appendPQExpBuffer(&buf,
- ", o.amopstrategy AS \"%s\",\n"
- " CASE o.amoppurpose\n"
- " WHEN 'o' THEN '%s'\n"
- " WHEN 's' THEN '%s'\n"
- " END AS \"%s\",\n"
- " ofs.opfname AS \"%s\"\n",
- gettext_noop("Strategy"),
- gettext_noop("ordering"),
- gettext_noop("search"),
- gettext_noop("Purpose"),
+ ", ofs.opfname AS \"%s\"\n",
gettext_noop("Sort opfamily"));
appendPQExpBuffer(&buf,
"FROM pg_catalog.pg_amop o\n"
- " LEFT JOIN pg_catalog.pg_operator op ON op.oid = o.amopopr\n"
" LEFT JOIN pg_catalog.pg_opfamily of ON of.oid = o.amopfamily\n"
" LEFT JOIN pg_catalog.pg_am am ON am.oid = of.opfmethod AND am.oid = o.amopmethod\n"
" LEFT JOIN pg_catalog.pg_namespace nsf ON of.opfnamespace = nsf.oid\n");
@@ -6317,7 +6309,7 @@ listOpFamilyOperators(const char *access_method_pattern,
*/
bool
listOpFamilyFunctions(const char *access_method_pattern,
- const char *family_pattern)
+ const char *family_pattern, bool verbose)
{
PQExpBufferData buf;
PGresult *res;
@@ -6332,19 +6324,26 @@ listOpFamilyFunctions(const char *access_method_pattern,
" am.amname AS \"%s\",\n"
" CASE\n"
" WHEN pg_catalog.pg_opfamily_is_visible(of.oid)\n"
- " THEN format('%%I', of.opfname)\n"
- " ELSE format('%%I.%%I', ns.nspname, of.opfname)\n"
+ " THEN pg_catalog.format('%%I', of.opfname)\n"
+ " ELSE pg_catalog.format('%%I.%%I', ns.nspname, of.opfname)\n"
" END AS \"%s\",\n"
" pg_catalog.format_type(ap.amproclefttype, NULL) AS \"%s\",\n"
" pg_catalog.format_type(ap.amprocrighttype, NULL) AS \"%s\",\n"
- " ap.amprocnum AS \"%s\"\n,"
- " p.proname AS \"%s\"\n",
+ " ap.amprocnum AS \"%s\"\n",
gettext_noop("AM"),
gettext_noop("Operator family"),
- gettext_noop("Left arg type"),
- gettext_noop("Right arg type"),
- gettext_noop("Number"),
- gettext_noop("Function"));
+ gettext_noop("Registered left type"),
+ gettext_noop("Registered right type"),
+ gettext_noop("Number"));
+
+ if (!verbose)
+ appendPQExpBuffer(&buf,
+ ", p.proname AS \"%s\"\n",
+ gettext_noop("Function"));
+ else
+ appendPQExpBuffer(&buf,
+ ", ap.amproc::pg_catalog.regprocedure AS \"%s\"\n",
+ gettext_noop("Function"));
appendPQExpBuffer(&buf,
"FROM pg_catalog.pg_amproc ap\n"