SELECT *
é expandido em tempo de execução, assim como em todas as operações semelhantes (CREATE VIEW
, CREATE TABLE AS
) A palavra-chave é "ligação antecipada" em oposição a "ligação tardia". Postgres salva a lista de colunas presentes em tempo de execução de
SELECT *
, as colunas adicionadas posteriormente não incluído automaticamente. A sequência de consulta em si não é salvo, apenas a representação interna depois expandindo SELECT *
e outras coisas como resolver todos os identificadores. REFRESH MATERIALIZED VIEW
nunca altera a definição de dados, apenas dados:O manual poderia ser mais explícito sobre isso, mas a comparação com o comportamento de
CREATE TABLE AS
deixou claro para mim: