Eu estou querendo saber como consultar a definição de uma visão materializada no Postgres. Para referência, o que eu esperava fazer é muito semelhante ao que você pode fazer para uma exibição regular:
SELECT * FROM information_schema.views WHERE table_name = 'some_view';
que fornece as seguintes colunas:
table_catalog
table_schema
table_name
view_definition
check_option
is_updatable
is_insertable_into
is_trigger_updatable
is_trigger_deletable
is_trigger_insertable_into
Isso é possível para visualizações materializadas?
De minhas pesquisas até agora, parece que as visualizações materializadas são deliberadamente excluídas do information_schema, porque
O information_schema pode mostrar apenas objetos que existem no padrão SQL.
( http://www.postgresql.org/message-id/3794.1412980686@sss.pgh.pa.us )
Como eles parecem ser totalmente excluídos do information_schema, não sei como fazer isso, mas o que eu gostaria de fazer é duplo:
- Pergunte se existe uma exibição materializada específica. (Até agora, a única maneira que encontrei para fazer isso é tentar criar uma exibição de tapete com o mesmo nome e ver se ela explode.)
- E, em seguida, consulte a definição da visualização materializada (semelhante à
view_definition
colunainformation_schema.views
).
SELECT to_regclass('some_schema.some_mat_view')
- se encontrado, não precisa ser um MV. Detalhes: stackoverflow.com/questions/20582500/…