SELECT
pg_namespace.nspname AS routine_schema,
pg_proc.proname AS routine_name,
pg_get_function_identity_arguments(pg_proc.oid) AS parameters,
regexp_replace(pg_get_functiondef(pg_proc.oid),'[\r\n]','<br>','g') AS routine_src,
pg_type.typname AS function_return_type,
CASE WHEN pg_proc.prokind='f' THEN 'FUNCTION'
WHEN pg_proc.prokind='p' THEN 'PROCEDURE'
WHEN pg_proc.prokind='w' THEN 'WINDOW FUNCTION' END AS object_type,
pg_language.lanname AS language
FROM pg_catalog.pg_proc INNER JOIN pg_catalog.pg_namespace ON pg_proc.pronamespace = pg_namespace.oid
INNER JOIN pg_catalog.pg_language ON pg_proc.prolang = pg_language.oid
LEFT JOIN pg_catalog.pg_type ON pg_proc.prorettype = pg_type.oid
WHERE (EXISTS (SELECT 1 FROM
information_schema.parameters AS p
WHERE p.specific_schema=pg_namespace.nspname
AND regexp_replace(specific_name,'_[0-9]*$','')=pg_proc.proname
AND p.data_type LIKE 'any%')
OR pg_type.typname LIKE 'any%')
AND pg_proc.prokind<>'a'
AND pg_proc.proname NOT IN ('f_assume_you_must_use_files', 'f_check_format_comma_separated_list', 'f_check_password', 'f_default_value_with_no_match')
AND pg_namespace.nspname NOT IN (SELECT schema_name
FROM INFORMATION_SCHEMA.schemata
WHERE schema_name<>'public' AND
schema_owner='postgres' AND schema_name IS NOT NULL)
AND NOT EXISTS (SELECT 1
FROM pg_catalog.pg_depend d
WHERE EXISTS (SELECT 1
FROM pg_catalog.pg_extension e
WHERE d.refobjid=e.oid) AND
d.objid=pg_proc.oid)
ORDER BY routine_schema, routine_name, parameters;