Можете да намерите всички зависимости в системния каталог pg_depend
.
Това връща всички функции в зависимост от типа . т.е. не само тези с типа в RETURNS
клауза, но също и тези с типа като функционален параметър:
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
Това работи и за таблични функции:
...
RETURNS TABLE (foo my_type, bar int)
Използване на функции за системна каталожна информация .
Може да има други зависимости (не към функции). Премахнете последния WHERE
условие от моята заявка за тестване (и адаптиране на SELECT
списък, очевидно).
И все още има възможност типът да бъде използван изрично (в преобразуване например) в заявки в тялото на функцията или в динамичен SQL. Можете да идентифицирате такива случаи на употреба само чрез анализиране на текста на тялото на функцията. Няма изрично регистрирани зависимости в системата.
Свързани:
- Как да получа списъци с параметри на функции (за да мога да премахна функция)
- DROP FUNCTION, без да знаете броя/типа на параметрите?