Heikki Linnakangas <heikki.linnakangas@enterprisedb.com> writes:
> Can we get away with not setting the LSN on the heap page, even though
> we set the PD_ALL_VISIBLE flag? If we don't set the LSN, the heap page
> can be flushed to disk before the WAL record, but I think that's fine
> because it's OK to have the flag set in the heap page even if the VM bit
> is not set.
Why is that fine? It's certainly not fine from the standpoint of
someone wondering why his index-only scan performs so badly.
I think all this hair-splitting about cases where it's okay to have one
bit set and not the other is misguided. To me, crash-safety of the VM
means that its copy of the page-header bit is right. Period. Yes, it
will cost something to ensure that; so what? If we don't get more than
enough compensating performance gain from index-only scans, the whole
patch is going to end up reverted.
regards, tom lane