Wszystkie zależności znajdziesz w katalogu systemowym pg_depend
.
Zwraca wszystkie funkcje w zależności od typu . Tj. nie tylko te z typem w RETURNS
klauzula, ale także te z typem jako parametrem funkcji:
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
Działa to również w przypadku funkcji tabeli:
...
RETURNS TABLE (foo my_type, bar int)
Korzystanie z funkcji informacji o katalogu systemowym .
Mogą istnieć inne zależności (nie do funkcji). Usuń ostatnie WHERE
warunek z mojego zapytania do przetestowania (i dostosuj SELECT
lista, oczywiście).
I nadal istnieje możliwość, że typ zostanie użyty jawnie (na przykład w rzutowaniu) w zapytaniach w treści funkcji lub w dynamicznym SQL. Takie przypadki użycia można zidentyfikować tylko przez przeanalizowanie tekstu treści funkcji. W systemie nie ma zarejestrowanych wyraźnych zależności.
Powiązane:
- Jak uzyskać listy parametrów funkcji (abym mógł usunąć funkcję)
- FUNKCJA UPUSZCZANIA bez znajomości liczby/typu parametrów?