Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit bfa6d51

Browse files
committed
Small fix for READ COMMITTED isolevel.
1 parent aaef7be commit bfa6d51

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

src/backend/executor/execMain.c

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
*
2727
*
2828
* IDENTIFICATION
29-
* $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.68 1999/01/29 11:56:00 vadim Exp $
29+
* $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.69 1999/01/29 13:24:36 vadim Exp $
3030
*
3131
*-------------------------------------------------------------------------
3232
*/
@@ -1593,7 +1593,7 @@ EvalPlanQual(EState *estate, Index rti, ItemPointer tid)
15931593
/* try to reuse plan used previously */
15941594
evalPlanQual *newepq = (epq != NULL) ? epq->free : NULL;
15951595

1596-
if (newepq == NULL)
1596+
if (newepq == NULL) /* first call or freePQ stack is empty */
15971597
{
15981598
newepq = (evalPlanQual*) palloc(sizeof(evalPlanQual));
15991599
/* Init EState */
@@ -1614,21 +1614,18 @@ EvalPlanQual(EState *estate, Index rti, ItemPointer tid)
16141614
/* ... rest */
16151615
newepq->plan = copyObject(estate->es_origPlan);
16161616
newepq->free = NULL;
1617-
if (epq == NULL)
1617+
epqstate->es_evTupleNull = (bool*)
1618+
palloc(length(estate->es_range_table) * sizeof(bool));
1619+
if (epq == NULL) /* first call */
16181620
{
16191621
epqstate->es_evTuple = (HeapTuple*)
16201622
palloc(length(estate->es_range_table) * sizeof(HeapTuple));
16211623
memset(epqstate->es_evTuple, 0,
16221624
length(estate->es_range_table) * sizeof(HeapTuple));
1623-
epqstate->es_evTupleNull = (bool*)
1624-
palloc(length(estate->es_range_table) * sizeof(bool));
1625-
memset(epqstate->es_evTupleNull, false,
1626-
length(estate->es_range_table) * sizeof(bool));
16271625
}
16281626
else
16291627
{
16301628
epqstate->es_evTuple = epq->estate.es_evTuple;
1631-
epqstate->es_evTupleNull = epq->estate.es_evTupleNull;
16321629
}
16331630
}
16341631
else
@@ -1697,8 +1694,9 @@ EvalPlanQual(EState *estate, Index rti, ItemPointer tid)
16971694
/*
16981695
* Nice! We got tuple - now copy it.
16991696
*/
1697+
if (epqstate->es_evTuple[epq->rti - 1] != NULL)
1698+
pfree(epqstate->es_evTuple[epq->rti - 1]);
17001699
epqstate->es_evTuple[epq->rti - 1] = heap_copytuple(&tuple);
1701-
epqstate->es_evTupleNull[epq->rti - 1] = false;
17021700
ReleaseBuffer(buffer);
17031701
break;
17041702
}
@@ -1738,6 +1736,8 @@ EvalPlanQual(EState *estate, Index rti, ItemPointer tid)
17381736
if (estate->es_origPlan->nParamExec > 0)
17391737
memset(epqstate->es_param_exec_vals, 0,
17401738
estate->es_origPlan->nParamExec * sizeof(ParamExecData));
1739+
memset(epqstate->es_evTupleNull, false,
1740+
length(estate->es_range_table) * sizeof(bool));
17411741
ExecInitNode(epq->plan, epqstate, NULL);
17421742

17431743
/*

0 commit comments

Comments
 (0)