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