diff options
Diffstat (limited to 'src/backend/executor/execMain.c')
-rw-r--r-- | src/backend/executor/execMain.c | 41 |
1 files changed, 21 insertions, 20 deletions
diff --git a/src/backend/executor/execMain.c b/src/backend/executor/execMain.c index cc8d98d8986..62e76e6cfb7 100644 --- a/src/backend/executor/execMain.c +++ b/src/backend/executor/execMain.c @@ -26,7 +26,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.19 1997/08/22 14:28:20 vadim Exp $ + * $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.20 1997/08/27 09:02:24 vadim Exp $ * *------------------------------------------------------------------------- */ @@ -65,7 +65,7 @@ static TupleTableSlot *ExecutePlan(EState *estate, Plan *plan, int numberTuples, ScanDirection direction, void (*printfunc)()); static void ExecRetrieve(TupleTableSlot *slot, void (*printfunc)(), - Relation intoRelationDesc); + EState *estate); static void ExecAppend(TupleTableSlot *slot,ItemPointer tupleid, EState *estate); static void ExecDelete(TupleTableSlot *slot, ItemPointer tupleid, @@ -171,6 +171,8 @@ ExecutorRun(QueryDesc *queryDesc, EState *estate, int feature, int count) plan = queryDesc->plantree; dest = queryDesc->dest; destination = (void (*)()) DestToFunction(dest); + estate->es_processed = 0; + estate->es_lastoid = InvalidOid; #if 0 /* @@ -665,7 +667,6 @@ ExecutePlan(EState *estate, ScanDirection direction, void (*printfunc)()) { - Relation intoRelationDesc; JunkFilter *junkfilter; TupleTableSlot *slot; @@ -675,12 +676,6 @@ ExecutePlan(EState *estate, TupleTableSlot *result; /* ---------------- - * get information - * ---------------- - */ - intoRelationDesc = estate->es_into_relation_descriptor; - - /* ---------------- * initialize local variables * ---------------- */ @@ -780,9 +775,9 @@ ExecutePlan(EState *estate, switch(operation) { case CMD_SELECT: - ExecRetrieve(slot, /* slot containing tuple */ - printfunc, /* print function */ - intoRelationDesc); /* "into" relation */ + ExecRetrieve(slot, /* slot containing tuple */ + printfunc, /* print function */ + estate); /* */ result = slot; break; @@ -853,7 +848,7 @@ ExecutePlan(EState *estate, static void ExecRetrieve(TupleTableSlot *slot, void (*printfunc)(), - Relation intoRelationDesc) + EState *estate) { HeapTuple tuple; TupleDesc attrtype; @@ -869,9 +864,10 @@ ExecRetrieve(TupleTableSlot *slot, * insert the tuple into the "into relation" * ---------------- */ - if (intoRelationDesc != NULL) { - heap_insert (intoRelationDesc, tuple); - IncrAppended(); + if ( estate->es_into_relation_descriptor != NULL ) + { + heap_insert (estate->es_into_relation_descriptor, tuple); + IncrAppended(); } /* ---------------- @@ -880,6 +876,7 @@ ExecRetrieve(TupleTableSlot *slot, */ (*printfunc)(tuple, attrtype); IncrRetrieved(); + (estate->es_processed)++; } /* ---------------------------------------------------------------- @@ -947,7 +944,6 @@ ExecAppend(TupleTableSlot *slot, newId = heap_insert(resultRelationDesc, /* relation desc */ tuple); /* heap tuple */ IncrAppended(); - UpdateAppendOid(newId); /* ---------------- * process indices @@ -961,6 +957,8 @@ ExecAppend(TupleTableSlot *slot, if (numIndices > 0) { ExecInsertIndexTuples(slot, &(tuple->t_ctid), estate, false); } + (estate->es_processed)++; + estate->es_lastoid = newId; } /* ---------------------------------------------------------------- @@ -989,10 +987,12 @@ ExecDelete(TupleTableSlot *slot, * delete the tuple * ---------------- */ - heap_delete(resultRelationDesc, /* relation desc */ - tupleid); /* item pointer to tuple */ - + if ( heap_delete(resultRelationDesc, /* relation desc */ + tupleid) ) /* item pointer to tuple */ + return; + IncrDeleted(); + (estate->es_processed)++; /* ---------------- * Note: Normally one would think that we have to @@ -1094,6 +1094,7 @@ ExecReplace(TupleTableSlot *slot, } IncrReplaced(); + (estate->es_processed)++; /* ---------------- * Note: instead of having to update the old index tuples |