*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.86 1999/06/06 15:14:40 vadim Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.87 1999/06/09 12:23:42 vadim Exp $
*
*-------------------------------------------------------------------------
*/
Assert(oldepq->rti != 0);
/* stop execution */
ExecEndNode(epq->plan, epq->plan);
+ epqstate->es_tupleTable->next = 0;
pfree(epqstate->es_evTuple[epq->rti - 1]);
epqstate->es_evTuple[epq->rti - 1] = NULL;
/* push current PQ to freePQ stack */
* ability to use ExecReScan instead of ExecInitNode, so...
*/
if (endNode)
+ {
ExecEndNode(epq->plan, epq->plan);
+ epqstate->es_tupleTable->next = 0;
+ }
/* free old RTE' tuple */
if (epqstate->es_evTuple[epq->rti - 1] != NULL)
TransactionId xwait = SnapshotDirty->xmax;
if (TransactionIdIsValid(SnapshotDirty->xmin))
- elog(ERROR, "EvalPlanQual: t_xmin is uncommitted ?!");
+ {
+ elog(NOTICE, "EvalPlanQual: t_xmin is uncommitted ?!");
+ Assert(!TransactionIdIsValid(SnapshotDirty->xmin));
+ elog(ERROR, "Aborting this transaction");
+ }
/*
* If tuple is being updated by other transaction then we have
estate->es_origPlan->nParamExec * sizeof(ParamExecData));
memset(epqstate->es_evTupleNull, false,
length(estate->es_range_table) * sizeof(bool));
+ Assert(epqstate->es_tupleTable->next == 0);
ExecInitNode(epq->plan, epqstate, NULL);
/*
if (TupIsNull(slot))
{
ExecEndNode(epq->plan, epq->plan);
+ epqstate->es_tupleTable->next = 0;
pfree(epqstate->es_evTuple[epq->rti - 1]);
epqstate->es_evTuple[epq->rti - 1] = NULL;
/* pop old PQ from the stack */