*
*
* 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 $
*
*-------------------------------------------------------------------------
*/
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);
CmdType operation,
int numberTuples,
ScanDirection direction,
- void (*printfunc) ())
+ DestReceiver *destfunc)
{
JunkFilter *junkfilter;
{
case CMD_SELECT:
ExecRetrieve(slot, /* slot containing tuple */
- printfunc, /* print function */
+ destfunc, /* print function */
estate); /* */
result = slot;
break;
*/
static void
ExecRetrieve(TupleTableSlot *slot,
- void (*printfunc) (),
+ DestReceiver *destfunc,
EState *estate)
{
HeapTuple tuple;
{
RelationInfo *resultRelationInfo;
Relation resultRelationDesc;
- ItemPointerData ctid,
- oldtid;
+ ItemPointerData ctid;
int result;
/******************
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;
}
HeapTuple tuple;
RelationInfo *resultRelationInfo;
Relation resultRelationDesc;
- ItemPointerData ctid,
- oldtid;
+ ItemPointerData ctid;
int result;
int numIndices;
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;
}
}