Xmin calculations should consider only top transaction IDs, and

therefore starting with GetCurrentTransactionId is wrong.  Fixes
miscomputation of RecentGlobalXmin leading to bizarre behavior
reported by Gavin Sherry.
REL8_0_STABLE
Tom Lane 22 years ago
parent 2820f05ef9
commit 057ea3471f
  1. 6
      src/backend/storage/ipc/sinval.c

@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/storage/ipc/sinval.c,v 1.67 2004/08/01 17:32:16 tgl Exp $
* $PostgreSQL: pgsql/src/backend/storage/ipc/sinval.c,v 1.68 2004/08/15 17:03:36 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@ -673,7 +673,7 @@ GetOldestXmin(bool allDbs)
TransactionId result;
int index;
result = GetCurrentTransactionId();
result = GetTopTransactionId();
LWLockAcquire(SInvalLock, LW_SHARED);
@ -763,7 +763,7 @@ GetSnapshotData(Snapshot snapshot, bool serializable)
errmsg("out of memory")));
}
globalxmin = xmin = GetCurrentTransactionId();
globalxmin = xmin = GetTopTransactionId();
/*
* If we are going to set MyProc->xmin then we'd better get exclusive

Loading…
Cancel
Save