U kunt alle afhankelijkheden vinden in de systeemcatalogus pg_depend
.
Dit retourneert alle functies afhankelijk van het type . D.w.z. niet alleen degenen met het type in de RETURNS
clausule, maar ook die met het type als functieparameter:
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
Dit werkt ook voor tabelfuncties:
...
RETURNS TABLE (foo my_type, bar int)
Met behulp van functies voor systeemcatalogusinformatie .
Er kunnen andere afhankelijkheden zijn (niet aan functies). Verwijder de laatste WHERE
voorwaarde van mijn vraag om te testen (en pas de SELECT
lijst natuurlijk).
En er is nog steeds de mogelijkheid dat het type expliciet wordt gebruikt (in een cast bijvoorbeeld) in query's in de functie-body of in dynamische SQL. U kunt dergelijke use-cases alleen identificeren door de tekst van de functie-body te ontleden. Er zijn geen expliciete afhankelijkheden geregistreerd in het systeem.
Gerelateerd:
- Hoe krijg ik lijsten met functieparameters (zodat ik een functie kan neerzetten)
- DROP-FUNCTIE zonder het aantal/type parameters te kennen?