From 19f06c96961a276754a94195fa2409a8a95c39d4 Mon Sep 17 00:00:00 2001 From: Elizaveta Reutt Date: Fri, 7 Aug 2026 14:52:47 +0300 Subject: [PATCH 1/3] assert expression misprint --- src/backend/executor/nodeLockRows.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/executor/nodeLockRows.c b/src/backend/executor/nodeLockRows.c index ac401d7a470..2d3ad904a64 100644 --- a/src/backend/executor/nodeLockRows.c +++ b/src/backend/executor/nodeLockRows.c @@ -165,7 +165,7 @@ ExecLockRows(PlanState *pstate) } else { - Assert(erm->refType = ROW_REF_ROWID); + Assert(erm->refType == ROW_REF_ROWID); datum = datumCopy(datum, false, -1); } switch (erm->markType) From 0e894785350f7ec3c93b0672b997b48c064f1b74 Mon Sep 17 00:00:00 2001 From: Elizaveta Reutt Date: Fri, 7 Aug 2026 15:03:10 +0300 Subject: [PATCH 2/3] Stop check custom wal-record after hook alredy done the checks Code bellow hook on custom record have to be execute only for RM_XACT_ID. Otherwise flags checking is inconsist to record resource manager. --- src/backend/access/transam/xlogrecovery.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/backend/access/transam/xlogrecovery.c b/src/backend/access/transam/xlogrecovery.c index fad092d1c71..70181151954 100644 --- a/src/backend/access/transam/xlogrecovery.c +++ b/src/backend/access/transam/xlogrecovery.c @@ -2663,9 +2663,11 @@ recoveryStopsBefore(XLogReaderState *record) timestamptz_to_str(recoveryStopTime)))); return true; } + return false; } + /* Otherwise we only consider stopping before COMMIT or ABORT records. */ - else if (XLogRecGetRmid(record) != RM_XACT_ID) + if (XLogRecGetRmid(record) != RM_XACT_ID) return false; xact_info = XLogRecGetInfo(record) & XLOG_XACT_OPMASK; From ff04356aac45b8043589fcd96423c969f77d693f Mon Sep 17 00:00:00 2001 From: Elizaveta Reutt Date: Fri, 7 Aug 2026 15:18:54 +0300 Subject: [PATCH 3/3] invoke RecoveryInProgress outside SpinLock in GetEffectiveXlogReplayRecPtr --- src/backend/access/transam/xlogrecovery.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/backend/access/transam/xlogrecovery.c b/src/backend/access/transam/xlogrecovery.c index 70181151954..9979fcb63f9 100644 --- a/src/backend/access/transam/xlogrecovery.c +++ b/src/backend/access/transam/xlogrecovery.c @@ -4629,9 +4629,10 @@ XLogRecPtr GetEffectiveXlogReplayRecPtr(void) { XLogRecPtr recptr = InvalidXLogRecPtr; + bool useHook = GetReplayXlogPtrHook != NULL && RecoveryInProgress(); SpinLockAcquire(&XLogRecoveryCtl->info_lck); - if (GetReplayXlogPtrHook) + if (useHook) recptr = GetReplayXlogPtrHook(); if (recptr == InvalidXLogRecPtr) recptr = XLogRecoveryCtl->lastReplayedEndRecPtr;