Vous pouvez trouver toutes les dépendances dans le catalogue système pg_depend
.
Cela renvoie toutes les fonctions selon le type . C'est à dire. pas seulement ceux avec le type dans le RETURNS
clause, mais aussi celles avec le type comme paramètre de fonction :
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
Cela fonctionne également pour les fonctions de table :
...
RETURNS TABLE (foo my_type, bar int)
Utilisation des fonctions d'information du catalogue système .
Il peut y avoir d'autres dépendances (pas aux fonctions). Supprimer le dernier WHERE
condition de ma requête à tester (et adapter le SELECT
liste, évidemment).
Et il est toujours possible que le type soit utilisé explicitement (dans un cast par exemple) dans les requêtes dans le corps de la fonction ou en SQL dynamique. Vous ne pouvez identifier ces cas d'utilisation qu'en analysant le texte du corps de la fonction. Il n'y a pas de dépendances explicites enregistrées dans le système.
Connexe :
- Comment obtenir des listes de paramètres de fonction (afin que je puisse supprimer une fonction)
- DROP FUNCTION sans connaître le nombre/type de paramètres ?