Me pregunto cómo consultar la definición de una vista materializada en Postgres. Como referencia, lo que esperaba hacer es muy similar a lo que puede hacer para una vista normal:
SELECT * FROM information_schema.views WHERE table_name = 'some_view';
que te da las siguientes columnas:
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
¿Es esto posible para vistas materializadas?
Según mi investigación hasta el momento, parece que las vistas materializadas se excluyen deliberadamente del esquema de información, porque
Information_schema solo puede mostrar objetos que existen en el estándar SQL.
( http://www.postgresql.org/message-id/3794.1412980686@sss.pgh.pa.us )
Como parecen estar completamente excluidos del esquema de información, no estoy seguro de cómo hacerlo, pero lo que me gustaría hacer es doble:
- Pregunte si existe una vista materializada particular. (Hasta ahora, la única forma en que he encontrado para hacer esto es intentar crear una vista mate con el mismo nombre y ver si explota).
- Y luego consulte la definición de la vista materializada (similar a la
view_definition
columna eninformation_schema.views
).
SELECT to_regclass('some_schema.some_mat_view')
si se encuentra, no tiene que ser un MV. Detalles: stackoverflow.com/questions/20582500/…