AttrNumber last_scan;
} LastAttnumInfo;
-static void ExecReadyExpr(ExprState *state);
+static void ExecReadyExpr(ExprState *state, PlanState *parent);
static void ExecInitExprRec(Expr *node, PlanState *parent, ExprState *state,
Datum *resv, bool *resnull);
static void ExprEvalPushStep(ExprState *es, const ExprEvalStep *s);
state = makeNode(ExprState);
state->expr = node;
+ scratch.resvalue = NULL;
+ scratch.resnull = NULL;
+
/* Insert EEOP_*_FETCHSOME steps as needed */
ExecInitExprSlots(state, (Node *) node);
scratch.opcode = EEOP_DONE;
ExprEvalPushStep(state, &scratch);
- ExecReadyExpr(state);
+ ExecReadyExpr(state, parent);
return state;
}
scratch.opcode = EEOP_DONE;
ExprEvalPushStep(state, &scratch);
- ExecReadyExpr(state);
+ ExecReadyExpr(state, parent);
return state;
}
state->expr = (Expr *) targetList;
state->resultslot = slot;
+ scratch.resvalue = NULL;
+ scratch.resnull = NULL;
+
/* Insert EEOP_*_FETCHSOME steps as needed */
ExecInitExprSlots(state, (Node *) targetList);
scratch.opcode = EEOP_DONE;
ExprEvalPushStep(state, &scratch);
- ExecReadyExpr(state);
+ ExecReadyExpr(state, parent);
return projInfo;
}
* ExecReadyInterpretedExpr().
*/
static void
-ExecReadyExpr(ExprState *state)
+ExecReadyExpr(ExprState *state, PlanState *parent)
{
- ExecReadyInterpretedExpr(state);
+ ExecReadyInterpretedExpr(state, parent);
}
/*
LastAttnumInfo info = {0, 0, 0};
ExprEvalStep scratch;
+ scratch.resvalue = NULL;
+ scratch.resnull = NULL;
+
/*
* Figure out which attributes we're going to need.
*/