WITH routines AS (SELECT
pg_namespace.nspname AS routine_schema,
pg_proc.proname AS routine_name,
pg_get_function_identity_arguments(pg_proc.oid) AS parameters,
pg_language.lanname AS language,
pg_type.typname AS return_type,
regexp_replace(pg_get_functiondef(pg_proc.oid),'[\r\n]',' ','g') AS routine_src
FROM
pg_catalog.pg_proc,
pg_catalog.pg_namespace,
pg_catalog.pg_language,
pg_catalog.pg_type
WHERE
pg_proc.pronamespace = pg_namespace.oid
AND pg_proc.prolang = pg_language.oid
AND pg_type.oid=pg_proc.prorettype
AND pg_language.lanname in ('plpgsql', 'sql')
AND pg_type.typname<>'trigger'
AND pg_get_functiondef(pg_proc.oid)~*'(insert[[:space:]]+into|(?'public' AND
schema_owner='postgres' AND schema_name IS NOT NULL))
SELECT routine_schema, routine_name, parameters, return_type, language, routine_src
FROM routines
WHERE EXISTS (SELECT * FROM routines WHERE return_type='void')
AND EXISTS (SELECT * FROM routines WHERE return_type<>'void')
ORDER BY routine_schema, routine_name, parameters;
Collections
This query belongs to the following collections:
Name
Description
Find problems automatically
Queries, that results point to problems in the database. Each query in the collection produces an initial assessment. However, a human reviewer has the final say as to whether there is a problem or not .
Categories
This query is classified under the following categories:
Name
Description
Inconsistencies
Queries of this catergory provide information about inconsistencies of solving the same problem in different places.
User-defined routines
Queries of this category provide information about the user-defined routines