Мне интересно, как запросить определение материализованного представления в Postgres. Для справки, то, что я надеялся сделать, очень похоже на то, что вы можете сделать для обычного просмотра:
SELECT * FROM information_schema.views WHERE table_name = 'some_view';
который дает вам следующие столбцы:
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
Возможно ли это для материализованных представлений?
Из моих исследований покажется, что материализованные взгляды преднамеренно исключены из information_schema, потому что
Информационная_схема может показывать только те объекты, которые существуют в стандарте SQL.
( http://www.postgresql.org/message-id/3794.1412980686@sss.pgh.pa.us )
Поскольку они, похоже, полностью исключены из information_schema, я не уверен, как это сделать, но я хотел бы сделать что-то двойное:
- Запросить, существует ли конкретный материализованный вид. (Пока что единственный способ сделать это - попытаться создать вид с тем же именем и посмотреть, не взорвется ли он.)
- А затем запросите определение материализованного представления (аналогично
view_definition
столбцу наinformation_schema.views
).
SELECT to_regclass('some_schema.some_mat_view')
- если он найден, он не обязательно должен быть MV. Подробности: stackoverflow.com/questions/20582500/…