Conforme comentado por @Craig, as dependências são armazenadas em
pg_catalog.pg_depend
. A consulta pode ficar assim (Postgres 11 ou mais tarde):
SELECT p.proname AS function_name
, pg_get_function_identity_arguments(p.oid) AS parameter_list
, pg_get_functiondef(p.oid) AS function_def -- CREATE FUNCTION statement
FROM pg_proc p
LEFT JOIN pg_depend d ON d.objid = p.oid
AND d.deptype = 'e' -- would depend on extension
WHERE p.pronamespace = 'public'::regnamespace -- your schema(s) of interest
AND d.objid IS NULL -- no such dependency
AND p.prokind = 'f'; -- only plain functions
Isso exclui todas as funções dependendo de uma extensão do resultado. O manual sobre o tipo de dependência
deptype = 'e'
:E
p.prokind = 'f'
restringe o resultado a funções simples. O manual:
Isso é novo no Postgres 11. Para Postgres 10 ou mais antigo use em vez disso:
SELECT ...
...
AND NOT proisagg -- no aggregate functions
AND NOT proiswindow -- no window functions
Não houve procedimentos , ainda.
Encontre
pg_get_function_identity_arguments()
e pg_get_functiondef()
no manual aqui
. Relacionado: