Puoi trovare tutte le dipendenze nel catalogo di sistema pg_depend
.
Questo restituisce tutte le funzioni a seconda del tipo . Cioè. non solo quelli con il tipo in RETURNS
clausola, ma anche quelli con il tipo come parametro di funzione:
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
Funziona anche per le funzioni tabella:
...
RETURNS TABLE (foo my_type, bar int)
Utilizzo di funzioni di informazione del catalogo di sistema .
Potrebbero esserci altre dipendenze (non alle funzioni). Rimuovi l'ultimo WHERE
condizione dalla mia query per testare (e adattare il SELECT
lista, ovviamente).
E c'è ancora la possibilità che il tipo venga utilizzato in modo esplicito (ad esempio in un cast) nelle query nel corpo della funzione o nell'SQL dinamico. È possibile identificare tali casi d'uso solo analizzando il testo del corpo della funzione. Non ci sono dipendenze esplicite registrate nel sistema.
Correlati:
- Come ottenere elenchi di parametri di funzione (in modo da poter eliminare una funzione)
- FUNZIONE DROP senza conoscere il numero/tipo di parametri?