Fix bug in KnownAssignedXidsMany(). I saw this when looking at the
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Thu, 11 Mar 2010 09:26:59 +0000 (09:26 +0000)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Thu, 11 Mar 2010 09:26:59 +0000 (09:26 +0000)
assertion failure reported by Erik Rijkers, but this alone doesn't explain
the failure.

src/backend/storage/ipc/procarray.c

index baa2e43f50d659c7376a967e2633e20aeefa95b6..e927759258948e88ae0b10892482b6da3d202daf 100644 (file)
@@ -37,7 +37,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/storage/ipc/procarray.c,v 1.60 2010/02/26 02:01:00 momjian Exp $
+ *   $PostgreSQL: pgsql/src/backend/storage/ipc/procarray.c,v 1.61 2010/03/11 09:26:59 heikki Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -448,6 +448,7 @@ ProcArrayApplyRecoveryInfo(RunningTransactions running)
    /*
     * Remove stale transactions, if any.
     */
+   Assert(TransactionIdIsValid(running->oldestRunningXid));
    ExpireOldKnownAssignedTransactionIds(running->oldestRunningXid);
    StandbyReleaseOldLocks(running->oldestRunningXid);
 
@@ -2518,7 +2519,7 @@ KnownAssignedXidsRemoveMany(TransactionId xid, bool keepPreparedXacts)
 
        if (!TransactionIdIsValid(xid) || TransactionIdPrecedes(removeXid, xid))
        {
-           if (keepPreparedXacts && StandbyTransactionIdIsPrepared(xid))
+           if (keepPreparedXacts && StandbyTransactionIdIsPrepared(removeXid))
                continue;
            else
            {