Commebts & one check in EndEvalPlanQual().
authorVadim B. Mikheev
Fri, 7 Apr 2000 07:24:47 +0000 (07:24 +0000)
committerVadim B. Mikheev
Fri, 7 Apr 2000 07:24:47 +0000 (07:24 +0000)
src/backend/executor/execMain.c

index d19baaa84dc93814f4ccff87398eaad3de6afdff..bbcba0fbc12c7db2f78001d2082856ab5db4e2aa 100644 (file)
@@ -27,7 +27,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.111 2000/04/07 00:59:17 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.112 2000/04/07 07:24:47 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -2022,15 +2022,21 @@ EndEvalPlanQual(EState *estate)
    EState     *epqstate = &(epq->estate);
    evalPlanQual *oldepq;
 
-   if (epq->rti == 0)          /* still live? */
+   if (epq->rti == 0)          /* plans already shutdowned */
+   {
+       Assert(epq->estate.es_evalPlanQual == NULL);
        return;
+   }
 
    for (;;)
    {
        ExecEndNode(epq->plan, epq->plan);
        epqstate->es_tupleTable->next = 0;
-       heap_freetuple(epqstate->es_evTuple[epq->rti - 1]);
-       epqstate->es_evTuple[epq->rti - 1] = NULL;
+       if (epqstate->es_evTuple[epq->rti - 1] != NULL)
+       {
+           heap_freetuple(epqstate->es_evTuple[epq->rti - 1]);
+           epqstate->es_evTuple[epq->rti - 1] = NULL;
+       }
        /* pop old PQ from the stack */
        oldepq = (evalPlanQual *) epqstate->es_evalPlanQual;
        if (oldepq == (evalPlanQual *) NULL)