0002-Isolation-test-fixes-1.patch
application/octet-stream
Filename: 0002-Isolation-test-fixes-1.patch
Type: application/octet-stream
Part: 0
Patch
Format: format-patch
Series: patch 0002
Subject: Isolation test fixes -1
| File | + | − |
|---|---|---|
| src/backend/access/heap/heapam_handler.c | 6 | 3 |
| src/backend/executor/execMain.c | 3 | 2 |
| src/backend/executor/nodeModifyTable.c | 5 | 1 |
From 3e4d02fd2ade9b9b116b013899b4b81b435379a8 Mon Sep 17 00:00:00 2001
From: kommih <haribabuk@fast.au.fujitsu.com>
Date: Fri, 3 Aug 2018 11:29:05 +1000
Subject: [PATCH 2/2] Isolation test fixes -1
---
src/backend/access/heap/heapam_handler.c | 9 ++++++---
src/backend/executor/execMain.c | 5 +++--
src/backend/executor/nodeModifyTable.c | 6 +++++-
3 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/src/backend/access/heap/heapam_handler.c b/src/backend/access/heap/heapam_handler.c
index a3fe110efe..cce2123416 100644
--- a/src/backend/access/heap/heapam_handler.c
+++ b/src/backend/access/heap/heapam_handler.c
@@ -317,7 +317,8 @@ retry:
if (!TransactionIdEquals(HeapTupleHeaderGetXmin(tuple->t_data),
priorXmax))
{
- ReleaseBuffer(buffer);
+ if (BufferIsValid(buffer))
+ ReleaseBuffer(buffer);
return HeapTupleDeleted;
}
@@ -336,7 +337,8 @@ retry:
if (ItemPointerEquals(&tuple->t_self, &tuple->t_data->t_ctid))
{
/* deleted, so forget about it */
- ReleaseBuffer(buffer);
+ if (BufferIsValid(buffer))
+ ReleaseBuffer(buffer);
return HeapTupleDeleted;
}
@@ -344,7 +346,8 @@ retry:
*tid = tuple->t_data->t_ctid;
/* updated row should have xmin matching this xmax */
priorXmax = HeapTupleHeaderGetUpdateXid(tuple->t_data);
- ReleaseBuffer(buffer);
+ if (BufferIsValid(buffer))
+ ReleaseBuffer(buffer);
/* loop back to fetch next in chain */
}
}
diff --git a/src/backend/executor/execMain.c b/src/backend/executor/execMain.c
index ea60e588a5..fd3e53d1ee 100644
--- a/src/backend/executor/execMain.c
+++ b/src/backend/executor/execMain.c
@@ -2552,8 +2552,9 @@ EvalPlanQual(EState *estate, EPQState *epqstate,
* datums that may be present in copyTuple). As with the next step, this
* is to guard against early re-use of the EPQ query.
*/
- if (!TupIsNull(slot))
- ExecMaterializeSlot(slot);
+ /*if (!TupIsNull(slot))
+ * ExecMaterializeSlot(slot);
+ */
#if FIXME
/*
diff --git a/src/backend/executor/nodeModifyTable.c b/src/backend/executor/nodeModifyTable.c
index 5ae0bab9f5..71150ad32e 100644
--- a/src/backend/executor/nodeModifyTable.c
+++ b/src/backend/executor/nodeModifyTable.c
@@ -1177,7 +1177,11 @@ lreplace:;
if (result == HeapTupleUpdated && !IsolationUsesXactSnapshot())
{
- TupleTableSlot *inputslot = EvalPlanQualSlot(epqstate, resultRelationDesc, resultRelInfo->ri_RangeTableIndex);
+ TupleTableSlot *inputslot;
+
+ EvalPlanQualBegin(epqstate, estate);
+
+ inputslot = EvalPlanQualSlot(epqstate, resultRelationDesc, resultRelInfo->ri_RangeTableIndex);
result = table_lock_tuple(resultRelationDesc, tupleid,
estate->es_snapshot,
--
2.18.0.windows.1