Noah Misch <noah@leadboat.com> wrote:
> The SQL commands I cited as responsible for creating or removing
> the fork all make a new relfilenode anyway. Thus, "add" actually
> means creating the fork with the new relfilenode, and "remove"
> actually means omitting the fork from the new relfilenode. The
> association between relfilenodes and relations is, of course,
> transactional.
The same argument applies to the currently-committed code. The
goal is to not change a matview between zero-length and non-zero
length once the heap exists; but to only have this state change
when REFRESH replaces the heap in the style of CLUSTER, TRUNCATE,
ALTER TABLE with heap rewrite, or the new VACUUM FULL.
--
Kevin Grittner
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company