すべての依存関係は、システムカタログ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のクエリで、型が明示的に(たとえば、キャストで)使用される可能性があります。このようなユースケースは、関数本体のテキストを解析することによってのみ識別できます。システムに登録されている明示的な依存関係はありません。
関連: