PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment vérifier quelle fonction utilise un type ?

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 :