]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Trying to fix bad merging...
authorVadim B. Mikheev <vadim4o@yahoo.com>
Fri, 29 Jan 1999 10:15:09 +0000 (10:15 +0000)
committerVadim B. Mikheev <vadim4o@yahoo.com>
Fri, 29 Jan 1999 10:15:09 +0000 (10:15 +0000)
src/backend/executor/execMain.c

index 7623649a4fae76970b76ab223151974e65066b57..ba4d09eaa38ff5439e9c6e0a93090aa29c70cb70 100644 (file)
@@ -26,7 +26,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.66 1999/01/29 09:22:57 vadim Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.67 1999/01/29 10:15:09 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -65,7 +65,7 @@ static TupleDesc InitPlan(CmdType operation, Query *parseTree,
 static void EndPlan(Plan *plan, EState *estate);
 static TupleTableSlot *ExecutePlan(EState *estate, Plan *plan,
                        CmdType operation, int numberTuples, ScanDirection direction,
-                       void (*printfunc) ());
+                       DestReceiver *destfunc);
 static void ExecRetrieve(TupleTableSlot *slot, 
                                                 DestReceiver *destfunc,
                                                 EState *estate);
@@ -756,7 +756,7 @@ ExecutePlan(EState *estate,
                        CmdType operation,
                        int numberTuples,
                        ScanDirection direction,
-                       void (*printfunc) ())
+                       DestReceiver *destfunc)
 {
        JunkFilter *junkfilter;
 
@@ -941,7 +941,7 @@ lmark:;
                {
                        case CMD_SELECT:
                                ExecRetrieve(slot,              /* slot containing tuple */
-                                                        printfunc, /* print function */
+                                                        destfunc,      /* print function */
                                                         estate);       /* */
                                result = slot;
                                break;
@@ -997,7 +997,7 @@ lmark:;
  */
 static void
 ExecRetrieve(TupleTableSlot *slot,
-                        void (*printfunc) (),
+                        DestReceiver *destfunc,
                         EState *estate)
 {
        HeapTuple       tuple;
@@ -1139,8 +1139,7 @@ ExecDelete(TupleTableSlot *slot,
 {
        RelationInfo       *resultRelationInfo;
        Relation                        resultRelationDesc;
-       ItemPointerData         ctid,
-                                               oldtid;
+       ItemPointerData         ctid;
        int                                     result;
 
        /******************
@@ -1180,12 +1179,11 @@ ldelete:;
                                elog(ERROR, "Can't serialize access due to concurrent update");
                        else if (!(ItemPointerEquals(tupleid, &ctid)))
                        {
-                               TupleTableSlot *slot = EvalPlanQual(estate, 
+                               TupleTableSlot *epqslot = EvalPlanQual(estate, 
                                                resultRelationInfo->ri_RangeTableIndex, &ctid);
 
-                               if (!TupIsNull(slot))
+                               if (!TupIsNull(epqslot))
                                {
-                                       tupleid = &oldtid;
                                        *tupleid = ctid;
                                        goto ldelete;
                                }
@@ -1238,8 +1236,7 @@ ExecReplace(TupleTableSlot *slot,
        HeapTuple                       tuple;
        RelationInfo       *resultRelationInfo;
        Relation                        resultRelationDesc;
-       ItemPointerData         ctid,
-                                               oldtid;
+       ItemPointerData         ctid;
        int                                     result;
        int                                     numIndices;
 
@@ -1321,13 +1318,14 @@ lreplace:;
                                elog(ERROR, "Can't serialize access due to concurrent update");
                        else if (!(ItemPointerEquals(tupleid, &ctid)))
                        {
-                               TupleTableSlot *slot = EvalPlanQual(estate, 
+                               TupleTableSlot *epqslot = EvalPlanQual(estate, 
                                                resultRelationInfo->ri_RangeTableIndex, &ctid);
 
-                               if (!TupIsNull(slot))
+                               if (!TupIsNull(epqslot))
                                {
-                                       tupleid = &oldtid;
                                        *tupleid = ctid;
+                                       tuple = ExecRemoveJunk(estate->es_junkFilter, epqslot);
+                                       slot = ExecStoreTuple(tuple, slot, InvalidBuffer, true);
                                        goto lreplace;
                                }
                        }