From 380dcc26d5b4db75233938130057d66547ddeae5 Mon Sep 17 00:00:00 2001
From: Tomas Vondra <tomas@vondra.me>
Date: Sat, 9 Nov 2024 12:14:49 +0100
Subject: [PATCH 2/2] asserts for candidate lsn fields

---
 src/backend/replication/logical/logical.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/src/backend/replication/logical/logical.c b/src/backend/replication/logical/logical.c
index 28d70e732d5..fe030d147c6 100644
--- a/src/backend/replication/logical/logical.c
+++ b/src/backend/replication/logical/logical.c
@@ -1718,6 +1718,8 @@ LogicalIncreaseXminForSlot(XLogRecPtr current_lsn, TransactionId xmin)
 	 */
 	else if (current_lsn <= slot->data.confirmed_flush)
 	{
+		Assert(slot->candidate_xmin_lsn <= current_lsn);
+
 		slot->candidate_catalog_xmin = xmin;
 		slot->candidate_xmin_lsn = current_lsn;
 
@@ -1731,6 +1733,8 @@ LogicalIncreaseXminForSlot(XLogRecPtr current_lsn, TransactionId xmin)
 	 */
 	else if (slot->candidate_xmin_lsn == InvalidXLogRecPtr)
 	{
+		Assert(slot->candidate_xmin_lsn <= current_lsn);
+
 		slot->candidate_catalog_xmin = xmin;
 		slot->candidate_xmin_lsn = current_lsn;
 
@@ -1784,6 +1788,9 @@ LogicalIncreaseRestartDecodingForSlot(XLogRecPtr current_lsn, XLogRecPtr restart
 	 */
 	else if (current_lsn <= slot->data.confirmed_flush)
 	{
+		Assert(slot->candidate_restart_valid <= current_lsn);
+		Assert(slot->candidate_restart_lsn <= restart_lsn);
+
 		slot->candidate_restart_valid = current_lsn;
 		slot->candidate_restart_lsn = restart_lsn;
 
@@ -1798,6 +1805,9 @@ LogicalIncreaseRestartDecodingForSlot(XLogRecPtr current_lsn, XLogRecPtr restart
 	 */
 	else if (slot->candidate_restart_valid == InvalidXLogRecPtr)
 	{
+		Assert(slot->candidate_restart_valid <= current_lsn);
+		Assert(slot->candidate_restart_lsn <= restart_lsn);
+
 		slot->candidate_restart_valid = current_lsn;
 		slot->candidate_restart_lsn = restart_lsn;
 		SpinLockRelease(&slot->mutex);
-- 
2.47.0

