From 9cae93d3099fead04567af93f0edeabbff4d8a0c Mon Sep 17 00:00:00 2001 From: "Vadim B. Mikheev" Date: Mon, 5 Apr 1999 10:55:49 +0000 Subject: [PATCH] Fix HEAP_MOVED_OFF handling in HeapTupleSatisfiesDirty (may be used while vacuuming unique btree-s). --- src/backend/utils/time/tqual.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/backend/utils/time/tqual.c b/src/backend/utils/time/tqual.c index 47f3e25834..26c2d43c00 100644 --- a/src/backend/utils/time/tqual.c +++ b/src/backend/utils/time/tqual.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/time/tqual.c,v 1.26 1999/03/28 20:32:29 vadim Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/time/tqual.c,v 1.27 1999/04/05 10:55:49 vadim Exp $ * *------------------------------------------------------------------------- */ @@ -411,6 +411,12 @@ HeapTupleSatisfiesDirty(HeapTupleHeader tuple) if (tuple->t_infomask & HEAP_MOVED_OFF) { + /* + * HeapTupleSatisfiesDirty is used by unique btree-s and so + * may be used while vacuuming. + */ + if (TransactionIdIsCurrentTransactionId((TransactionId)tuple->t_cmin)) + return false; if (TransactionIdDidCommit((TransactionId)tuple->t_cmin)) { tuple->t_infomask |= HEAP_XMIN_INVALID; @@ -419,6 +425,8 @@ HeapTupleSatisfiesDirty(HeapTupleHeader tuple) } else if (tuple->t_infomask & HEAP_MOVED_IN) { + if (TransactionIdIsCurrentTransactionId((TransactionId)tuple->t_cmin)) + return true; if (!TransactionIdDidCommit((TransactionId)tuple->t_cmin)) { tuple->t_infomask |= HEAP_XMIN_INVALID; -- GitLab