> On Oct 23, 2026, at 01:59, Ayush Tiwari <[email protected]> wrote:
>
> Hi,
>
> Moving the corner case I mentioned in the BUG #19774 thread [1] here,
> as Fujii-san suggested.
>
> IIUC, a standby can summarize WAL ahead of replay. So if recovery
> ends at the start of one of those summaries, we could still have an
> old-timeline summary for WAL we didn't replay. FilterWalSummaries()
> seems to keep that file, unlike GetWalSummaries().
>
> My worry was that a truncation in that summary could drop block
> references from the new timeline when we merge it. We'd then miss
> those blocks in the incremental backup and take stale ones from the
> earlier backup instead.
>
> The attached patch makes the >= / <= checks match GetWalSummaries().
>
> I have a TAP reproducer, but it's fairly involved, so I've kept it out
> of the patch for now. Happy to share it if it's useful.
>
> [1] https://postgr.es/m/[email protected]
>
> Regards,
> Ayush
> <v1-0001-Use-half-open-LSN-ranges-in-FilterWalSummaries.patch>
I think the fix is correct. FilterWalSummaries()’s header comment already
correctly describes the behavior with “after” and “before”, but the code was
wrong.
Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/