|
27 | 27 | * |
28 | 28 | * |
29 | 29 | * IDENTIFICATION |
30 | | - * $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.111 2000/04/0700:59:17 tgl Exp $ |
| 30 | + * $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.112 2000/04/0707:24:47 vadim Exp $ |
31 | 31 | * |
32 | 32 | *------------------------------------------------------------------------- |
33 | 33 | */ |
@@ -2022,15 +2022,21 @@ EndEvalPlanQual(EState *estate) |
2022 | 2022 | EState*epqstate=&(epq->estate); |
2023 | 2023 | evalPlanQual*oldepq; |
2024 | 2024 |
|
2025 | | -if (epq->rti==0)/* still live? */ |
| 2025 | +if (epq->rti==0)/* plans already shutdowned */ |
| 2026 | +{ |
| 2027 | +Assert(epq->estate.es_evalPlanQual==NULL); |
2026 | 2028 | return; |
| 2029 | +} |
2027 | 2030 |
|
2028 | 2031 | for (;;) |
2029 | 2032 | { |
2030 | 2033 | ExecEndNode(epq->plan,epq->plan); |
2031 | 2034 | epqstate->es_tupleTable->next=0; |
2032 | | -heap_freetuple(epqstate->es_evTuple[epq->rti-1]); |
2033 | | -epqstate->es_evTuple[epq->rti-1]=NULL; |
| 2035 | +if (epqstate->es_evTuple[epq->rti-1]!=NULL) |
| 2036 | +{ |
| 2037 | +heap_freetuple(epqstate->es_evTuple[epq->rti-1]); |
| 2038 | +epqstate->es_evTuple[epq->rti-1]=NULL; |
| 2039 | +} |
2034 | 2040 | /* pop old PQ from the stack */ |
2035 | 2041 | oldepq= (evalPlanQual*)epqstate->es_evalPlanQual; |
2036 | 2042 | if (oldepq== (evalPlanQual*)NULL) |
|