我有一个想要更改的类型,但我不知道还有谁在使用它。
如何检查所有返回此类型的函数?
您可以在系统目录中找到所有依赖项pg_depend。
pg_depend
这将 根据类型 返回 所有功能 。即,不仅是那些在RETURNS子句中具有类型的变量,而且还有那些具有类型作为函数参数的变量:
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显然是对列表进行了调整)。
WHERE
SELECT
而且仍然有可能在函数体或动态SQL中的查询中显式使用该类型(例如在强制转换中)。您只能通过解析函数主体的文本来识别此类用例。系统中没有注册任何显式依赖项。