summaryrefslogtreecommitdiff
path: root/src/include
diff options
context:
space:
mode:
Diffstat (limited to 'src/include')
-rw-r--r--src/include/executor/execExpr.h14
-rw-r--r--src/include/nodes/execnodes.h3
2 files changed, 11 insertions, 6 deletions
diff --git a/src/include/executor/execExpr.h b/src/include/executor/execExpr.h
index 080252fad6..511205b5ac 100644
--- a/src/include/executor/execExpr.h
+++ b/src/include/executor/execExpr.h
@@ -51,12 +51,8 @@ typedef enum ExprEvalOp
EEOP_SCAN_FETCHSOME,
/* compute non-system Var value */
- /* "FIRST" variants are used only the first time through */
- EEOP_INNER_VAR_FIRST,
EEOP_INNER_VAR,
- EEOP_OUTER_VAR_FIRST,
EEOP_OUTER_VAR,
- EEOP_SCAN_VAR_FIRST,
EEOP_SCAN_VAR,
/* compute system Var value */
@@ -67,8 +63,11 @@ typedef enum ExprEvalOp
/* compute wholerow Var */
EEOP_WHOLEROW,
- /* compute non-system Var value, assign it into ExprState's resultslot */
- /* (these are not used if _FIRST checks would be needed) */
+ /*
+ * Compute non-system Var value, assign it into ExprState's
+ * resultslot. These are not used if a CheckVarSlotCompatibility() check
+ * would be needed.
+ */
EEOP_ASSIGN_INNER_VAR,
EEOP_ASSIGN_OUTER_VAR,
EEOP_ASSIGN_SCAN_VAR,
@@ -621,6 +620,9 @@ extern void ExprEvalPushStep(ExprState *es, const ExprEvalStep *s);
extern void ExecReadyInterpretedExpr(ExprState *state);
extern ExprEvalOp ExecEvalStepOp(ExprState *state, ExprEvalStep *op);
+extern Datum ExecInterpExprStillValid(ExprState *state, ExprContext *econtext, bool *isNull);
+extern void CheckExprStillValid(ExprState *state, ExprContext *econtext);
+
/*
* Non fast-path execution functions. These are externs instead of statics in
* execExprInterp.c, because that allows them to be used by other methods of
diff --git a/src/include/nodes/execnodes.h b/src/include/nodes/execnodes.h
index c9a5279dc5..94351eafad 100644
--- a/src/include/nodes/execnodes.h
+++ b/src/include/nodes/execnodes.h
@@ -87,6 +87,9 @@ typedef struct ExprState
/* original expression tree, for debugging only */
Expr *expr;
+ /* private state for an evalfunc */
+ void *evalfunc_private;
+
/*
* XXX: following fields only needed during "compilation" (ExecInitExpr);
* could be thrown away afterwards.