SELECT *
wordt uitgebreid tijdens de uitvoeringstijd, net als bij alle vergelijkbare bewerkingen (CREATE VIEW
, CREATE TABLE AS
)
Het sleutelwoord is "vroege binding" in tegenstelling tot "late binding". Postgres bewaart de lijst met kolommen die aanwezig zijn op het moment van uitvoering van SELECT *
, kolommen die later worden toegevoegd zijn niet automatisch opgenomen. De zoekreeks zelf wordt niet opgeslagen, alleen de interne weergave na uitbreiden SELECT *
en andere dingen zoals het oplossen van alle identifiers.
REFRESH MATERIALIZED VIEW
nooit verandert de gegevensdefinitie, alleen gegevens:
De handleiding zou er explicieter over kunnen zijn, maar de vergelijking met het gedrag van CREATE TABLE AS
maakte het me duidelijk: