Show aggregate return types in psql \da output.
authorMagnus Hagander <magnus@hagander.net>
Fri, 16 Mar 2007 08:28:01 +0000 (08:28 +0000)
committerMagnus Hagander <magnus@hagander.net>
Fri, 16 Mar 2007 08:28:01 +0000 (08:28 +0000)
Greg Sabino Mullane

doc/src/sgml/ref/psql-ref.sgml
src/bin/psql/describe.c

index 3fb33c6fcc631f7f21154423190a6462f26f2ac1..c1db985bf6d76b53d6d661cb423c54b9d350cd95 100644 (file)
@@ -875,8 +875,8 @@ testdb=&gt;
 
         <listitem>
         <para>
-        Lists all available aggregate functions, together with the data
-        types they operate on. If <replaceable
+        Lists all available aggregate functions, together with their
+        return type and the data types they operate on. If <replaceable
         class="parameter">pattern</replaceable>
         is specified, only aggregates whose names match the pattern are shown.
         </para>
index bd4303bc9ba4876b58b1f5160fb841ed550d8c16..a85d7ebfde602070da45b4a23c7f88fd81c9b879 100644 (file)
@@ -62,21 +62,22 @@ describeAggregates(const char *pattern, bool verbose)
        printfPQExpBuffer(&buf,
                                          "SELECT n.nspname as \"%s\",\n"
                                          "  p.proname AS \"%s\",\n"
+                                         "  pg_catalog.format_type(p.prorettype, NULL) AS \"%s\",\n" 
                                          "  CASE WHEN p.pronargs = 0\n"
                                          "    THEN CAST('*' AS pg_catalog.text)\n"
                                          "    ELSE\n"
                                          "    pg_catalog.array_to_string(ARRAY(\n"
                                          "      SELECT\n"
-                                "        pg_catalog.format_type(p.proargtypes[s.i], NULL)\n"
+                                         "        pg_catalog.format_type(p.proargtypes[s.i], NULL)\n"
                                          "      FROM\n"
                                          "        pg_catalog.generate_series(0, pg_catalog.array_upper(p.proargtypes, 1)) AS s(i)\n"
                                          "    ), ', ')\n"
                                          "  END AS \"%s\",\n"
-                                "  pg_catalog.obj_description(p.oid, 'pg_proc') as \"%s\"\n"
+                                         "  pg_catalog.obj_description(p.oid, 'pg_proc') as \"%s\"\n"
                                          "FROM pg_catalog.pg_proc p\n"
-          "     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace\n"
+                                         "     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace\n"
                                          "WHERE p.proisagg\n",
-                                         _("Schema"), _("Name"),
+                                         _("Schema"), _("Name"), _("Result data type"),
                                          _("Argument data types"), _("Description"));
 
        processSQLNamePattern(pset.db, &buf, pattern, true, false,