diff --git a/src/sql/engine/expr/ob_expr_eval_functions.cpp b/src/sql/engine/expr/ob_expr_eval_functions.cpp index f560997c91..1195276e25 100644 --- a/src/sql/engine/expr/ob_expr_eval_functions.cpp +++ b/src/sql/engine/expr/ob_expr_eval_functions.cpp @@ -1710,5 +1710,63 @@ REG_SER_FUNC_ARRAY(OB_SFA_DECIMAL_INT_EXPR_EVAL, REG_SER_FUNC_ARRAY(OB_SFA_DECIMAL_INT_EXPR_EVAL_BATCH, g_decimal_int_eval_batch_functions, ARRAYSIZEOF(g_decimal_int_eval_batch_functions)); + +static ObExpr::EvalFunc g_collection_eval_functions[] = { + NULL, // ObExprAdd::add_collection_collection_int8_t, + NULL, // ObExprAdd::add_collection_collection_int16_t, + NULL, // ObExprAdd::add_collection_collection_int32_t, + NULL, // ObExprAdd::add_collection_collection_int64_t, + NULL, // ObExprAdd::add_collection_collection_float, + NULL, // ObExprAdd::add_collection_collection_double, + NULL, // ObExprMinus::minus_collection_collection_int8_t, + NULL, // ObExprMinus::minus_collection_collection_int16_t, + NULL, // ObExprMinus::minus_collection_collection_int32_t, + NULL, // ObExprMinus::minus_collection_collection_int64_t, + NULL, // ObExprMinus::minus_collection_collection_float, + NULL // ObExprMinus::minus_collection_collection_double, +}; + +static ObExpr::EvalBatchFunc g_collection_eval_batch_functions[] = { + NULL, // ObExprAdd::add_collection_collection_int8_t_batch, + NULL, // ObExprAdd::add_collection_collection_int16_t_batch, + NULL, // ObExprAdd::add_collection_collection_int32_t_batch, + NULL, // ObExprAdd::add_collection_collection_int64_t_batch, + NULL, // ObExprAdd::add_collection_collection_float_batch, + NULL, // ObExprAdd::add_collection_collection_double_batch, + NULL, // ObExprMinus::minus_collection_collection_int8_t_batch, + NULL, // ObExprMinus::minus_collection_collection_int16_t_batch, + NULL, // ObExprMinus::minus_collection_collection_int32_t_batch, + NULL, // ObExprMinus::minus_collection_collection_int64_t_batch, + NULL, // ObExprMinus::minus_collection_collection_float_batch, + NULL // ObExprMinus::minus_collection_collection_double_batch, +}; + +static ObExpr::EvalVectorFunc g_collection_expr_eval_vector_functions[] = { + NULL, // ObExprAdd::add_collection_collection_int8_t_vector, + NULL, // ObExprAdd::add_collection_collection_int16_t_vector, + NULL, // ObExprAdd::add_collection_collection_int32_t_vector, + NULL, // ObExprAdd::add_collection_collection_int64_t_vector, + NULL, // ObExprAdd::add_collection_collection_float_vector, + NULL, // ObExprAdd::add_collection_collection_double_vector, + NULL, // ObExprMinus::minus_collection_collection_int8_t_vector, + NULL, // ObExprMinus::minus_collection_collection_int16_t_vector, + NULL, // ObExprMinus::minus_collection_collection_int32_t_vector, + NULL, // ObExprMinus::minus_collection_collection_int64_t_vector, + NULL, // ObExprMinus::minus_collection_collection_float_vector, + NULL // ObExprMinus::minus_collection_collection_double_vector, +}; + +REG_SER_FUNC_ARRAY(OB_SFA_COLLECTION_EXPR_EVAL, + g_collection_eval_functions, + ARRAYSIZEOF(g_collection_eval_functions)); + +REG_SER_FUNC_ARRAY(OB_SFA_COLLECTION_EXPR_EVAL_BATCH, + g_collection_eval_batch_functions, + ARRAYSIZEOF(g_collection_eval_batch_functions)); + +REG_SER_FUNC_ARRAY(OB_SFA_COLLECTION_EXPR_EVAL_VEC, + g_collection_expr_eval_vector_functions, + ARRAYSIZEOF(g_collection_expr_eval_vector_functions)); + } // end namespace sql } // end namespace oceanbase diff --git a/src/sql/engine/ob_serializable_function.h b/src/sql/engine/ob_serializable_function.h index 6d0cada88e..26d8ecbb1d 100644 --- a/src/sql/engine/ob_serializable_function.h +++ b/src/sql/engine/ob_serializable_function.h @@ -124,6 +124,9 @@ typedef void (*ser_eval_vector_function)(ObEvalVectorFuncTag &); OB_SFA_SQL_EXPR_ABS_EVAL_VEC, \ OB_SFA_VECTOR_CAST, \ OB_SFA_VECTOR_EVAL_ARG_CAST, \ + OB_SFA_COLLECTION_EXPR_EVAL, \ + OB_SFA_COLLECTION_EXPR_EVAL_BATCH, \ + OB_SFA_COLLECTION_EXPR_EVAL_VEC, \ OB_SFA_MAX enum ObSerFuncArrayID {