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
