Všechny závislosti najdete v systémovém katalogu pg_depend
.
Tím se vrátí všechny funkce v závislosti na typu . Tj. nejen ty s typem v RETURNS
klauzule, ale také s parametrem type as function:
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
Toto funguje také pro tabulkové funkce:
...
RETURNS TABLE (foo my_type, bar int)
Použití informačních funkcí systémového katalogu .
Mohou existovat další závislosti (ne na funkcích). Odstraňte poslední WHERE
podmínku z mého dotazu k testování (a přizpůsobte SELECT
seznam, samozřejmě).
A stále existuje možnost použití typu explicitně (například v přetypování) v dotazech v těle funkce nebo v dynamickém SQL. Takové případy použití můžete identifikovat pouze analýzou textu těla funkce. V systému nejsou registrovány žádné explicitní závislosti.
Související:
- Jak získat seznamy parametrů funkcí (abych mohl funkci vypustit)
- DROP FUNCTION bez znalosti počtu/typu parametrů?