> On 27 Nov 2025, at 01:59, Heikki Linnakangas <[email protected]> wrote:
>
> This is because the WAL, created with old version, contains records like this:
>
> lsn: 0/05561030, prev 0/05561008, desc: CREATE_ID 2047 offset 4093 nmembers
> 2: 2830 (keysh) 2831 (keysh)
> lsn: 0/055611A8, prev 0/05561180, desc: ZERO_OFF_PAGE 1
> lsn: 0/055611D0, prev 0/055611A8, desc: CREATE_ID 2048 offset 4095 nmembers
> 2: 2831 (keysh) 2832 (keysh)
>
That's an interesting case. I don't see how SLRU interface can be used to test
if SLRU page is initialized correctly. We need a version of SimpleLruReadPage()
that can avoid failure if page does not exist yet, and this must not be more
expensive than current SimpleLruReadPage(). Alternatively we need new
XLOG_MULTIXACT_CREATE_ID_2 in back branches.
BTW, my concern about MultiXactState->nextMXact was wrong, now I see it. I was
almost certain that something is wrong and works by accident during summer, but
now everything looks 100% correct...
Also, when working on v10 I've asked LLM for help with commit message, and it
hallucinated Álvaro's e-mail <[email protected]> IDK, maybe it's real,
but it was not used in this thread.
>
> - I reverted the changes to ExtendMultiXactOffset(), so that it deals with
> wraparound and FirstMultiXactId the same way as before. The caller never
> passes FirstMultiXactId, but the changed comments and the assertion were
> confusing, so I felt it's best to just leave it alone
Maybe move a decision (to extend or not to extend) out of this function? Now
its purpose is "MaybeExtendMultiXactOffset". And there's just one caller.
Thanks for picking this up! (And reading other thread about multixacts more
attentively I see I misinformed you that this bug is connected to that
bug...sorry! I'll review that one too!)
Best regards, Andrey Borodin.