Você pode encontrar todas as dependências no catálogo do sistema
pg_depend
. Isso retorna todas as funções dependendo do tipo . Ou seja não apenas aqueles com o tipo no
RETURNS
cláusula, mas também aqueles com o tipo como parâmetro de função: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
Isso também funciona para funções de tabela:
...
RETURNS TABLE (foo my_type, bar int)
Usando funções de informações do catálogo do sistema .
Pode haver outras dependências (não para funções). Remova o último
WHERE
condição da minha consulta para testar (e adaptar o SELECT
lista, obviamente). E ainda existe a possibilidade do tipo ser usado explicitamente (em um cast por exemplo) em consultas no corpo da função ou em SQL dinâmico. Você só pode identificar esses casos de uso analisando o texto do corpo da função. Não há dependências explícitas registradas no sistema.
Relacionado:
- Como obter listas de parâmetros de função (para que eu possa descartar uma função)
- DROP FUNCTION sem saber o número/tipo de parâmetros?