On 2020-Mar-31, Alvaro Herrera wrote: > I'm not sure if I explained my proposal clearly. What if > XLogGetLastRemovedSegno returning zero means that every segment is > valid? We don't need to scan pg_xlog at all.
I mean this: XLogSegNo FindOldestXLogFileSegNo(void) { XLogSegNo segno = XLogGetLastRemovedSegno(); /* this is the only special case we need to care about */ if (segno == 0) return some-value; return segno + 1; } ... and that point one can further note that a freshly initdb'd system (no file has been removed) has "1" as the first file. So when segno is 0, you can return 1 and all should be well. That means you can reduce the function to this: XLogSegNo FindOldestXLogFileSegNo(void) { return XLogGetLastRemovedSegno() + 1; } The tests still pass with this coding. -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services