> 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.

Reply via email to