Comme l'a commenté @Craig, les dépendances sont stockées dans pg_catalog.pg_depend
.
La requête peut ressembler à ceci (Postgres 11 ou version ultérieure) :
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
Cela exclut toutes les fonctions dépendant d'une extension du résultat. Le manuel
à propos du type de dépendance deptype = 'e'
:
Et p.prokind = 'f'
limite le résultat à des fonctions simples. Le manuel :
C'est nouveau dans Postgres 11. Pour Postgres 10 ou plus ancien utilisez à la place :
SELECT ...
...
AND NOT proisagg -- no aggregate functions
AND NOT proiswindow -- no window functions
Il n'y avait pas de procédures , encore.
Trouvez pg_get_function_identity_arguments()
et pg_get_functiondef()
dans le manuel ici
. Connexe :