Du kan hitta alla beroenden i systemkatalogen pg_depend
.
Detta returnerar alla funktioner beroende på typ . d.v.s. inte bara de med typen i RETURNS
sats, men även de med typen som 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
Detta fungerar även för tabellfunktioner:
...
RETURNS TABLE (foo my_type, bar int)
Använda funktioner för systemkataloginformation a> .
Det kan finnas andra beroenden (inte till funktioner). Ta bort den sista WHERE
villkor från min fråga för att testa (och anpassa SELECT
lista, uppenbarligen).
Och det finns fortfarande möjligheten att typen används explicit (i en cast till exempel) i frågor i funktionskroppen eller i dynamisk SQL. Du kan bara identifiera sådana användningsfall genom att analysera texten i funktionskroppen. Det finns inga explicita beroenden registrerade i systemet.
Relaterat:
- Hur får man funktionsparameterlistor (så att jag kan släppa en funktion)
- DROP FUNCTION utan att veta antalet/typ av parametrar?