Fix determination of broken LSN in OVERWRITTEN_CONTRECORD
In commit ff9f111bce
I mixed up inconsistent definitions of the LSN of
the first record in a page, when the previous record ends exactly at the
page boundary. The correct LSN is adjusted to skip the WAL page header;
I failed to use that when setting XLogReaderState->overwrittenRecPtr,
so at WAL replay time VerifyOverwriteContrecord would refuse to let
replay continue past that record.
Backpatch to 10. 9.6 also contains this bug, but it's no longer being
maintained.
Discussion: https://postgr.es/m/45597.1637694259@sss.pgh.pa.us
This commit is contained in:
parent
4597fd78d6
commit
44bd3ed332
|
@ -467,7 +467,7 @@ restart:
|
||||||
*/
|
*/
|
||||||
if (pageHeader->xlp_info & XLP_FIRST_IS_OVERWRITE_CONTRECORD)
|
if (pageHeader->xlp_info & XLP_FIRST_IS_OVERWRITE_CONTRECORD)
|
||||||
{
|
{
|
||||||
state->overwrittenRecPtr = state->currRecPtr;
|
state->overwrittenRecPtr = RecPtr;
|
||||||
ResetDecoder(state);
|
ResetDecoder(state);
|
||||||
RecPtr = targetPagePtr;
|
RecPtr = targetPagePtr;
|
||||||
goto restart;
|
goto restart;
|
||||||
|
|
Loading…
Reference in New Issue