On 2020-Jul-09, Tom Lane wrote:
> and even the most cursory look at the code confirms that there's a
> real bug here. KeepLogSeg expects *logSegNo to be defined on entry,
> but GetWALAvailability hasn't bothered to initialize oldestSlotSeg.
> It is not clear to me which one is in the wrong; the comment for
> KeepLogSeg isn't particularly clear on this.
Oh, so I introduced the bug when I removed the initialization in this
fix. That one was using the wrong datatype, but evidently it achieved
the right effect. And KeepLogSeg is using the wrong datatype Invalid
macro also.
I think we should define InvalidXLogSegNo to be ~((uint64)0) and add a
macro to test for that.
--
Álvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services