Alle Abhängigkeiten finden Sie im Systemkatalog pg_depend
.
Dies gibt alle Funktionen je nach Typ zurück . Dh nicht nur die mit dem Typ im RETURNS
-Klausel, sondern auch solche mit dem Typ als Funktionsparameter:
SELECT objid::regproc AS function_name
, pg_get_functiondef(objid) AS function_definition
, pg_get_function_identity_arguments(objid) AS function_args
, pg_get_function_result(objid) AS function_returns
FROM pg_depend
WHERE refclassid = 'pg_type'::regclass
AND refobjid = 'my_type'::regtype -- insert your type name here
AND classid = 'pg_proc'::regclass; -- only find functions
Dies funktioniert auch für Tabellenfunktionen:
...
RETURNS TABLE (foo my_type, bar int)
Verwenden von Systemkatalog-Informationsfunktionen .
Es kann andere Abhängigkeiten geben (nicht zu Funktionen). Entfernen Sie das letzte WHERE
Bedingung aus meiner zu testenden Abfrage (und passen Sie die SELECT
Liste, natürlich).
Und es besteht immer noch die Möglichkeit, dass der Typ explizit (zB in einem Cast) in Abfragen im Funktionsrumpf oder in dynamischem SQL verwendet wird. Sie können solche Anwendungsfälle nur identifizieren, indem Sie den Text des Funktionskörpers analysieren. Es sind keine expliziten Abhängigkeiten im System registriert.
Verwandte:
- Wie erhalte ich Funktionsparameterlisten (damit ich eine Funktion löschen kann)
- DROP-FUNKTION, ohne die Anzahl/Art der Parameter zu kennen?