diff options
Diffstat (limited to 'src/bin/psql/describe.c')
-rw-r--r-- | src/bin/psql/describe.c | 93 |
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" |