On Sat, Jul 9, 2016 at 8:12 AM, Michael Paquier <michael.paqu...@gmail.com> wrote: > So to sum up: > - Add "Parallel" column > - Add ACLs > - Reordering the columns, I'd suggest as follows): > -- Schema > -- Name > -- Result data type > -- Argument data types > -- Type > -- Language > -- Volatility > -- Parallel > -- Owner > -- Security > -- ACL > -- Source code > -- Description > Or by thema, 1) General info, 2) specificity (volatility, parallel, > type), 3) Ownership. > And regarding "source code", I think that's useful for debugging.
Giving the attached, including doc clarifications and column reshuffling with translatable state set up as well. -- Michael
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml index aeffd63..e7bd2d7 100644 --- a/doc/src/sgml/ref/psql-ref.sgml +++ b/doc/src/sgml/ref/psql-ref.sgml @@ -1380,8 +1380,9 @@ testdb=> 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 - about each function is shown, including security classification, - volatility, owner, language, source code and description. + about each function is shown, including language, volatility, + parallel mode, owner, security classification, access privileges, + source code and description. </para> <tip> diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c index 2cdc5ac..e297891 100644 --- a/src/bin/psql/describe.c +++ b/src/bin/psql/describe.c @@ -298,7 +298,7 @@ describeFunctions(const char *functypes, const char *pattern, bool verbose, bool PQExpBufferData buf; PGresult *res; printQueryOpt myopt = pset.popt; - static const bool translate_columns[] = {false, false, false, false, true, true, true, false, false, false, false}; + static const bool translate_columns[] = {false, false, false, false, true, false, true, false, false, true, false, true, false}; if (strlen(functypes) != strspn(functypes, "antwS+")) { @@ -410,28 +410,42 @@ describeFunctions(const char *functypes, const char *pattern, bool verbose, bool gettext_noop("Type")); if (verbose) + { appendPQExpBuffer(&buf, - ",\n CASE WHEN prosecdef THEN '%s' ELSE '%s' END AS \"%s\"" + ",\n l.lanname as \"%s\"" ",\n CASE\n" " WHEN p.provolatile = 'i' THEN '%s'\n" " WHEN p.provolatile = 's' THEN '%s'\n" " WHEN p.provolatile = 'v' THEN '%s'\n" " END as \"%s\"" - ",\n pg_catalog.pg_get_userbyid(p.proowner) as \"%s\",\n" - " l.lanname as \"%s\",\n" - " p.prosrc as \"%s\",\n" - " pg_catalog.obj_description(p.oid, 'pg_proc') as \"%s\"", - gettext_noop("definer"), - gettext_noop("invoker"), - gettext_noop("Security"), + ",\n CASE\n" + " WHEN p.proparallel = 'r' THEN '%s'\n" + " WHEN p.proparallel = 's' THEN '%s'\n" + " WHEN p.proparallel = 'u' THEN '%s'\n" + " END as \"%s\"" + ",\n pg_catalog.pg_get_userbyid(p.proowner) as \"%s\"" + ",\n CASE WHEN prosecdef THEN '%s' ELSE '%s' END AS \"%s\"", + gettext_noop("Language"), gettext_noop("immutable"), gettext_noop("stable"), gettext_noop("volatile"), gettext_noop("Volatility"), + gettext_noop("restricted"), + gettext_noop("safe"), + gettext_noop("unsafe"), + gettext_noop("Parallel"), gettext_noop("Owner"), - gettext_noop("Language"), + gettext_noop("definer"), + gettext_noop("invoker"), + gettext_noop("Security")); + appendPQExpBufferStr(&buf, ",\n "); + printACLColumn(&buf, "p.proacl"); + appendPQExpBuffer(&buf, + ",\n p.prosrc as \"%s\"" + ",\n pg_catalog.obj_description(p.oid, 'pg_proc') as \"%s\"", gettext_noop("Source code"), gettext_noop("Description")); + } appendPQExpBufferStr(&buf, "\nFROM pg_catalog.pg_proc p"
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers