summaryrefslogtreecommitdiff
path: root/src/backend
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend')
-rw-r--r--src/backend/access/heap/vacuumlazy.c8
-rw-r--r--src/backend/storage/ipc/standby.c1
2 files changed, 6 insertions, 3 deletions
diff --git a/src/backend/access/heap/vacuumlazy.c b/src/backend/access/heap/vacuumlazy.c
index 9923994b50e..5d8fd2fb727 100644
--- a/src/backend/access/heap/vacuumlazy.c
+++ b/src/backend/access/heap/vacuumlazy.c
@@ -1698,7 +1698,8 @@ retry:
}
/* Track newest xmin on page. */
- if (TransactionIdFollows(xmin, prunestate->visibility_cutoff_xid))
+ if (TransactionIdFollows(xmin, prunestate->visibility_cutoff_xid) &&
+ TransactionIdIsNormal(xmin))
prunestate->visibility_cutoff_xid = xmin;
}
break;
@@ -1863,7 +1864,7 @@ retry:
* because visibility_cutoff_xid will be logged by our caller in a
* moment.
*/
- Assert(cutoff == FrozenTransactionId ||
+ Assert(!TransactionIdIsValid(cutoff) ||
cutoff == prunestate->visibility_cutoff_xid);
}
#endif
@@ -3293,7 +3294,8 @@ heap_page_is_all_visible(LVRelState *vacrel, Buffer buf,
}
/* Track newest xmin on page. */
- if (TransactionIdFollows(xmin, *visibility_cutoff_xid))
+ if (TransactionIdFollows(xmin, *visibility_cutoff_xid) &&
+ TransactionIdIsNormal(xmin))
*visibility_cutoff_xid = xmin;
/* Check whether this tuple is already frozen or not */
diff --git a/src/backend/storage/ipc/standby.c b/src/backend/storage/ipc/standby.c
index f43229dfda6..ede00fee935 100644
--- a/src/backend/storage/ipc/standby.c
+++ b/src/backend/storage/ipc/standby.c
@@ -493,6 +493,7 @@ ResolveRecoveryConflictWithSnapshot(TransactionId snapshotConflictHorizon,
if (!TransactionIdIsValid(snapshotConflictHorizon))
return;
+ Assert(TransactionIdIsNormal(snapshotConflictHorizon));
backends = GetConflictingVirtualXIDs(snapshotConflictHorizon,
locator.dbOid);
ResolveRecoveryConflictWithVirtualXIDs(backends,