SELECT CASE WHEN p.proretset THEN 'setof ' ELSE '' END ||
         pg_catalog.format_type(p.prorettype, NULL) as "Result data type",
       n.nspname as "Schema",
       p.proname as "Name",
       pg_catalog.oidvectortypes(p.proargtypes) as "Argument data types"
  FROM pg_catalog.pg_proc p
       LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace,
       (SELECT $1 AS cmd) AS cmd
 WHERE p.prorettype <> 'pg_catalog.cstring'::pg_catalog.regtype
   AND p.proargtypes[0] <> 'pg_catalog.cstring'::pg_catalog.regtype
   AND NOT p.proisagg
   AND pg_catalog.pg_function_is_visible(p.oid)
 ORDER BY 2, 3, 1, 4