AtEOXact_ComboCid();
AtEOXact_HashTables(true);
AtEOXact_PgStat(true);
- AtEOXact_Snapshot(true, false);
+ AtEOXact_Snapshot(true);
AtCommit_ApplyLauncher();
pgstat_report_xact_timestamp(0);
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;
* 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)
*
* 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
* 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
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();
}
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);