From 3428ef79115927c92c6e2ab6f261f5de5dc4e914 Mon Sep 17 00:00:00 2001
From: Simon Riggs <simon@2ndQuadrant.com>
Date: Fri, 24 Mar 2017 17:56:17 +0000
Subject: [PATCH] Reverting 42b4b0b2413b9b472aaf2112a3bbfd80a6ab4dc5

Buildfarm issues and other reported issues
---
 src/backend/access/transam/xact.c |  6 +++---
 src/backend/utils/time/snapmgr.c  | 21 +++------------------
 src/include/utils/snapmgr.h       |  2 +-
 3 files changed, 7 insertions(+), 22 deletions(-)

diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c
index cc11177bce0..c8751c697d4 100644
--- a/src/backend/access/transam/xact.c
+++ b/src/backend/access/transam/xact.c
@@ -2137,7 +2137,7 @@ CommitTransaction(void)
 	AtEOXact_ComboCid();
 	AtEOXact_HashTables(true);
 	AtEOXact_PgStat(true);
-	AtEOXact_Snapshot(true, false);
+	AtEOXact_Snapshot(true);
 	AtCommit_ApplyLauncher();
 	pgstat_report_xact_timestamp(0);
 
@@ -2409,7 +2409,7 @@ PrepareTransaction(void)
 	AtEOXact_ComboCid();
 	AtEOXact_HashTables(true);
 	/* don't call AtEOXact_PgStat here; we fixed pgstat state above */
-	AtEOXact_Snapshot(true, true);
+	AtEOXact_Snapshot(true);
 	pgstat_report_xact_timestamp(0);
 
 	CurrentResourceOwner = NULL;
@@ -2640,7 +2640,7 @@ CleanupTransaction(void)
 	 * do abort cleanup processing
 	 */
 	AtCleanup_Portals();		/* now safe to release portal memory */
-	AtEOXact_Snapshot(false, false); /* and release the transaction's snapshots */
+	AtEOXact_Snapshot(false);	/* and release the transaction's snapshots */
 
 	CurrentResourceOwner = NULL;	/* and resource owner */
 	if (TopTransactionResourceOwner)
diff --git a/src/backend/utils/time/snapmgr.c b/src/backend/utils/time/snapmgr.c
index 67f3e2d667d..ecc32cb3fe7 100644
--- a/src/backend/utils/time/snapmgr.c
+++ b/src/backend/utils/time/snapmgr.c
@@ -954,12 +954,7 @@ xmin_cmp(const pairingheap_node *a, const pairingheap_node *b, void *arg)
  *
  * If there are no more snapshots, we can reset our PGXACT->xmin to InvalidXid.
  * Note we can do this without locking because we assume that storing an Xid
- * is atomic. We do this because it will allow multi-statement transactions to
- * reset their xmin and prevent us from holding back removal of dead rows;
- * this has little purpose when we are dealing with very fast statements in
- * read committed mode since the xmin will advance quickly anyway. It has no
- * use at all when we are running single statement transactions since the xmin
- * is reset as part of end of transaction anyway.
+ * is atomic.
  *
  * Even if there are some remaining snapshots, we may be able to advance our
  * PGXACT->xmin to some degree.  This typically happens when a portal is
@@ -1056,7 +1051,7 @@ AtSubAbort_Snapshot(int level)
  *		Snapshot manager's cleanup function for end of transaction
  */
 void
-AtEOXact_Snapshot(bool isCommit, bool isPrepare)
+AtEOXact_Snapshot(bool isCommit)
 {
 	/*
 	 * In transaction-snapshot mode we must release our privately-managed
@@ -1141,17 +1136,7 @@ AtEOXact_Snapshot(bool isCommit, bool isPrepare)
 
 	FirstSnapshotSet = false;
 
-	/*
-	 * During normal commit and abort processing, we call
-	 * ProcArrayEndTransaction() or ProcArrayClearTransaction() to
-	 * reset the PgXact->xmin. That call happens prior to the call to
-	 * AtEOXact_Snapshot(), so we need not touch xmin here at all,
-	 * accept when we are preparing a transaction.
-	 */
-	if (isPrepare)
-		SnapshotResetXmin();
-
-	Assert(MyPgXact->xmin == 0);
+	SnapshotResetXmin();
 }
 
 
diff --git a/src/include/utils/snapmgr.h b/src/include/utils/snapmgr.h
index 2f8d4fd4a0c..86c48d9c8ef 100644
--- a/src/include/utils/snapmgr.h
+++ b/src/include/utils/snapmgr.h
@@ -85,7 +85,7 @@ extern void UnregisterSnapshotFromOwner(Snapshot snapshot, ResourceOwner owner);
 
 extern void AtSubCommit_Snapshot(int level);
 extern void AtSubAbort_Snapshot(int level);
-extern void AtEOXact_Snapshot(bool isCommit, bool isPrepare);
+extern void AtEOXact_Snapshot(bool isCommit);
 
 extern void ImportSnapshot(const char *idstr);
 extern bool XactHasExportedSnapshots(void);
-- 
GitLab