diff options
Diffstat (limited to 'src/include/executor/execExpr.h')
-rw-r--r-- | src/include/executor/execExpr.h | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/src/include/executor/execExpr.h b/src/include/executor/execExpr.h index b875bbad4fb..2c1697dd766 100644 --- a/src/include/executor/execExpr.h +++ b/src/include/executor/execExpr.h @@ -223,7 +223,8 @@ typedef enum ExprEvalOp /* aggregation related nodes */ EEOP_AGG_STRICT_DESERIALIZE, EEOP_AGG_DESERIALIZE, - EEOP_AGG_STRICT_INPUT_CHECK, + EEOP_AGG_STRICT_INPUT_CHECK_ARGS, + EEOP_AGG_STRICT_INPUT_CHECK_NULLS, EEOP_AGG_INIT_TRANS, EEOP_AGG_STRICT_TRANS_CHECK, EEOP_AGG_PLAIN_TRANS_BYVAL, @@ -601,9 +602,21 @@ typedef struct ExprEvalStep int jumpnull; } agg_deserialize; - /* for EEOP_AGG_STRICT_INPUT_CHECK */ - struct - { + /* for EEOP_AGG_STRICT_INPUT_CHECK_NULLS / STRICT_INPUT_CHECK_ARGS */ + struct + { + /* + * For EEOP_AGG_STRICT_INPUT_CHECK_ARGS args contains pointers to + * the NullableDatums that need to be checked for NULLs. + * + * For EEOP_AGG_STRICT_INPUT_CHECK_NULLS nulls contains pointers + * to booleans that need to be checked for NULLs. + * + * Both cases currently need to exist because sometimes the + * to-be-checked nulls are in TupleTableSlot.isnull array, and + * sometimes in FunctionCallInfoBaseData.args[i].isnull. + */ + NullableDatum *args; bool *nulls; int nargs; int jumpnull; |