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