On 20/03/2026 15:39, Andrey Borodin wrote:
On 20 Mar 2026, at 16:19, Heikki Linnakangas <[email protected]> wrote:

Hmm, after startup, before we have zeroed any pages, it still works though. So 
I think my patch works, but it means that tracking the latest page we have 
zeroed is not merely an optimization to avoid excessive 
SimpleLruDoesPhysicalPageExist() calls, it's needed for correctness. Need to 
adjust the comments for that.

If we are sure buffers have no this page we can detect it via FS.
Otherwise... nothing bad can happen, actually. We might get false positive and 
zero the page once more.

Zeroing the page again is dangerous because the CREATE_ID records can be out of order. The page might already contain some later multixids, and zeroing will overwrite them.

If we got init_needed==false, maybe cache it for this page and set 
last_initialized_offsets_page = pageno?
Or, perhaps, XLOG_MULTIXACT_ZERO_OFF_PAGE will do it for us anyway, but a bit 
later.

My patch does set last_initialized_offsets_page = pageno, if it initializes the page, so yeah I think we're good there.

- Heikki



Reply via email to