From 134754ef6c0e82b2e654de6e9b13c9a1a9a3b673 Mon Sep 17 00:00:00 2001
From: Thomas Munro <thomas.munro@gmail.com>
Date: Wed, 8 May 2019 14:44:32 +1200
Subject: [PATCH] Fix SxactGlobalXmin tracking.

Commit bb16aba50 broke the code that maintains SxactGlobalXmin, so
that could get stuck.  When it stops advancing, later transactions
effectively leak resources.

Reported-by: Tom Lane
Discussion: https://postgr.es/m/16170.1557251214%40sss.pgh.pa.us
---
 src/backend/storage/lmgr/predicate.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/src/backend/storage/lmgr/predicate.c b/src/backend/storage/lmgr/predicate.c
index 4e4d04bae37..15ef221c143 100644
--- a/src/backend/storage/lmgr/predicate.c
+++ b/src/backend/storage/lmgr/predicate.c
@@ -3635,8 +3635,7 @@ ReleasePredicateLocks(bool isCommit, bool isReadOnlySafe)
 	 * was launched.
 	 */
 	needToClear = false;
-	if (!isReadOnlySafe &&
-		TransactionIdEquals(MySerializableXact->xmin, PredXact->SxactGlobalXmin))
+	if (TransactionIdEquals(MySerializableXact->xmin, PredXact->SxactGlobalXmin))
 	{
 		Assert(PredXact->SxactGlobalXminCount > 0);
 		if (--(PredXact->SxactGlobalXminCount) == 0)
-- 
2.21.0

