Wie von @Craig kommentiert, werden Abhängigkeiten in pg_catalog.pg_depend
.
Die Abfrage kann so aussehen (Postgres 11 oder später):
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
Dadurch werden alle Funktionen, die von einer Erweiterung abhängen, vom Ergebnis ausgeschlossen. Das Handbuch
über den Abhängigkeitstyp deptype = 'e'
:
Und p.prokind = 'f'
schränkt das Ergebnis auf einfache Funktionen ein. Das Handbuch:
Das ist neu in Postgres 11. Für Postgres 10 oder älter Verwenden Sie stattdessen:
SELECT ...
...
AND NOT proisagg -- no aggregate functions
AND NOT proiswindow -- no window functions
Es gab keine Verfahren , noch.
Finden Sie pg_get_function_identity_arguments()
und pg_get_functiondef()
im Handbuch hier
. Verwandte: