De: pgbr-geral [mailto:[email protected]] Em nome de 
Fabrízio de Royes Mello
Enviada em: terça-feira, 27 de junho de 2017 10:05
Para: Comunidade PostgreSQL Brasileira
Assunto: Re: [pgbr-geral] Como descobrir as dependência de uma function/view no 
Postgresql 9.2?

 


Em 27 de junho de 2017 09:14, Celso - Gmail <[email protected]> escreveu:
>
> Bom dia senhores,
>
> Estou tentando descobrir na pg_depend as dependências entre os objetos do 
> banco de dados.
> O objetivo é exportar eles na ordem correta que devem ser criados/atualizados 
> em outro banco de dados.
> Imagino que em algum lugar deva existir essa informação, visto que o 
> pg_dump/pg_restore faz isso.
>
> Ou exista outro caminho para chegar neste objetivo.
>
> Abaixo criei 3 objetos simples para exemplicar e facilitar que puder ajudar.
>
> CREATE OR REPLACE VIEW vw_teste AS SELECT 1 AS emp_empresa;
> CREATE OR REPLACE VIEW vw_teste_2 AS SELECT emp_empresa FROM vw_teste;
>
> CREATE OR REPLACE FUNCTION fc_empresa() RETURNS INTEGER AS
> $BODY$
>    SELECT emp_empresa FROM vw_teste;
> $BODY$
> LANGUAGE sql;
>
> O SQL abaixo retorna apenas o Schema como dependência e “deveria” retornar a 
> vw_teste também.
>
> SELECT * FROM pg_depend where objid in (select oid from pg_class where 
> relname = 'vw_teste_2');
>

Essa informação de "dependência" entre os objetos é armazenada na tabela 
"pg_depend" [1]  do catálogo. No wiki [2] tem uns exemplos de como usar ela 
para mostrar dependências entre objetos.

 

Att,

[1] https://www.postgresql.org/docs/current/static/catalog-pg-depend.html

[2] https://wiki.postgresql.org/wiki/Pg_depend_display




Olá Fabrízio, 

 

já estudei esse código e utilizo a pg_depend para alguns tratamentos, mas agora 
estava tentando evoluir minha ferramenta diff (como o Euler disse).

 

O que achei curioso e que a consulta abaixo não retorna essa “dependência” 
entre as duas views.

SELECT * FROM pg_depend where objid in (select oid from pg_class where relname 
= 'vw_teste_2');

 

 

Att,

 

Celso Lorenzetti

_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a