15 std::function<void(
FunctionBindData*,
const std::vector<std::shared_ptr<common::ValueVector>>&,
16 std::shared_ptr<common::ValueVector>&)>;
19 std::function<void(
const std::vector<std::shared_ptr<common::ValueVector>>&,
47 template<
typename A_TYPE,
typename B_TYPE,
typename C_TYPE,
typename RESULT_TYPE,
typename FUNC>
54 *params[2], paramSelVectors[2], result, resultSelVector, dataPtr);
57 template<
typename A_TYPE,
typename B_TYPE,
typename C_TYPE,
typename RESULT_TYPE,
typename FUNC>
59 const std::vector<std::shared_ptr<common::ValueVector>>& params,
65 paramSelVectors[1], *params[2], paramSelVectors[2], result, resultSelVector, dataPtr);
68 template<
typename A_TYPE,
typename B_TYPE,
typename C_TYPE,
typename RESULT_TYPE,
typename FUNC>
70 const std::vector<std::shared_ptr<common::ValueVector>>& params,
75 paramSelVectors[1], *params[2], paramSelVectors[2], result, resultSelVector, dataPtr);
78 template<
typename A_TYPE,
typename B_TYPE,
typename C_TYPE,
typename RESULT_TYPE,
typename FUNC>
80 const std::vector<std::shared_ptr<common::ValueVector>>& params,
86 paramSelVectors[1], *params[2], paramSelVectors[2], result, resultSelVector, dataPtr);
89 template<
typename LEFT_TYPE,
typename RIGHT_TYPE,
typename RESULT_TYPE,
typename FUNC>
95 paramSelVectors[0], *params[1], paramSelVectors[1], result, resultSelVector);
98 template<
typename LEFT_TYPE,
typename RIGHT_TYPE,
typename RESULT_TYPE,
typename FUNC>
100 const std::vector<std::shared_ptr<common::ValueVector>>& params,
106 paramSelVectors[1], result, resultSelVector, dataPtr);
109 template<
typename LEFT_TYPE,
typename RIGHT_TYPE,
typename RESULT_TYPE,
typename FUNC>
111 const std::vector<std::shared_ptr<common::ValueVector>>& params,
117 paramSelVectors[1], result, resultSelVector, dataPtr);
120 template<
typename LEFT_TYPE,
typename RIGHT_TYPE,
typename RESULT_TYPE,
typename FUNC>
122 const std::vector<std::shared_ptr<common::ValueVector>>& params,
128 paramSelVectors[1], result, resultSelVector, dataPtr);
131 template<
typename LEFT_TYPE,
typename RIGHT_TYPE,
typename FUNC>
133 const std::vector<std::shared_ptr<common::ValueVector>>& params,
140 template<
typename LEFT_TYPE,
typename RIGHT_TYPE,
typename FUNC>
142 const std::vector<std::shared_ptr<common::ValueVector>>& params,
149 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC,
155 EXECUTOR::template executeSwitch<OPERAND_TYPE, RESULT_TYPE, FUNC, UnaryFunctionWrapper>(
156 *params[0], paramSelVectors[0], result, resultSelVector, dataPtr);
159 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC>
161 const std::vector<std::shared_ptr<common::ValueVector>>& params,
166 paramSelVectors[0], result, resultSelVector, dataPtr);
169 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC>
171 const std::vector<std::shared_ptr<common::ValueVector>>& params,
180 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC,
183 const std::vector<std::shared_ptr<common::ValueVector>>& params,
187 EXECUTOR::template executeSwitch<OPERAND_TYPE, RESULT_TYPE, FUNC,
192 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC,
195 const std::vector<std::shared_ptr<common::ValueVector>>& params,
199 EXECUTOR::template executeSwitch<OPERAND_TYPE, RESULT_TYPE, FUNC, WRAPPER>(*params[0],
200 paramSelVectors[0], result, resultSelVector, dataPtr);
203 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC,
206 const std::vector<std::shared_ptr<common::ValueVector>>& params,
210 EXECUTOR::template executeSwitch<OPERAND_TYPE, RESULT_TYPE, FUNC,
215 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC,
218 const std::vector<std::shared_ptr<common::ValueVector>>& params,
222 EXECUTOR::template executeSwitch<OPERAND_TYPE, RESULT_TYPE, FUNC, SetSeedFunctionWrapper>(
223 *params[0], paramSelVectors[0], result, resultSelVector, dataPtr);
226 template<
typename RESULT_TYPE,
typename FUNC>
228 [[maybe_unused]]
const std::vector<std::shared_ptr<common::ValueVector>>& params,
229 [[maybe_unused]]
const std::vector<common::SelectionVector*>& paramSelVectors,
232 KU_ASSERT(params.empty() && paramSelVectors.empty());
236 template<
typename RESULT_TYPE,
typename FUNC>
238 [[maybe_unused]]
const std::vector<std::shared_ptr<common::ValueVector>>& params,
239 [[maybe_unused]]
const std::vector<common::SelectionVector*>& paramSelVectors,
241 KU_ASSERT(params.empty() && paramSelVectors.empty());
245 virtual std::unique_ptr<ScalarFunction>
copy()
const {
246 return std::make_unique<ScalarFunction>(*
this);
#define LBUG_API
Definition api.h:25
#define KU_ASSERT(condition)
Definition assert.h:24
Definition sel_vector.h:96
Definition value_vector.h:21
LogicalTypeID
Definition types.h:184
Definition binary_function_executor.h:6
std::function< void(const std::vector< std::shared_ptr< common::ValueVector > > &, const std::vector< common::SelectionVector * > &, common::ValueVector &, common::SelectionVector *, void *)> scalar_func_exec_t
Definition scalar_function.h:18
std::function< void(FunctionBindData *, const std::vector< std::shared_ptr< common::ValueVector > > &, std::shared_ptr< common::ValueVector > &)> scalar_func_compile_exec_t
Definition scalar_function.h:14
std::function< bool( const std::vector< std::shared_ptr< common::ValueVector > > &, common::SelectionVector &, void *)> scalar_func_select_t
Definition scalar_function.h:23
Definition array_utils.h:7
static void executeSwitch(common::ValueVector &left, common::SelectionVector *leftSelVector, common::ValueVector &right, common::SelectionVector *rightSelVector, common::ValueVector &result, common::SelectionVector *resultSelVector, void *dataPtr)
Definition binary_function_executor.h:152
static bool select(common::ValueVector &left, common::ValueVector &right, common::SelectionVector &selVector, void *dataPtr)
Definition binary_function_executor.h:292
static void execute(common::ValueVector &left, common::SelectionVector *leftSelVector, common::ValueVector &right, common::SelectionVector *rightSelVector, common::ValueVector &result, common::SelectionVector *resultSelVector)
Definition binary_function_executor.h:161
Definition binary_function_executor.h:22
Definition binary_function_executor.h:31
Definition binary_function_executor.h:78
Definition binary_function_executor.h:51
static void execute(common::ValueVector &result, common::SelectionVector &sel)
Definition const_function_executor.h:11
std::vector< common::LogicalTypeID > parameterTypeIDs
Definition function.h:63
std::string name
Definition function.h:62
static void execute(common::ValueVector &result, common::SelectionVector &sel, void *dataPtr)
Definition pointer_function_executor.h:10
static void NullaryAuxilaryExecFunction(const std::vector< std::shared_ptr< common::ValueVector > > ¶ms, const std::vector< common::SelectionVector * > ¶mSelVectors, common::ValueVector &result, common::SelectionVector *resultSelVector, void *dataPtr)
Definition scalar_function.h:237
static void BinaryExecWithBindData(const std::vector< std::shared_ptr< common::ValueVector > > ¶ms, const std::vector< common::SelectionVector * > ¶mSelVectors, common::ValueVector &result, common::SelectionVector *resultSelVector, void *dataPtr)
Definition scalar_function.h:121
static void UnaryStringExecFunction(const std::vector< std::shared_ptr< common::ValueVector > > ¶ms, const std::vector< common::SelectionVector * > ¶mSelVectors, common::ValueVector &result, common::SelectionVector *resultSelVector, void *=nullptr)
Definition scalar_function.h:170
static void BinaryStringExecFunction(const std::vector< std::shared_ptr< common::ValueVector > > ¶ms, const std::vector< common::SelectionVector * > ¶mSelVectors, common::ValueVector &result, common::SelectionVector *resultSelVector, void *dataPtr=nullptr)
Definition scalar_function.h:99
scalar_func_select_t selectFunc
Definition scalar_function.h:28
virtual std::unique_ptr< ScalarFunction > copy() const
Definition scalar_function.h:245
ScalarFunction(std::string name, std::vector< common::LogicalTypeID > parameterTypeIDs, common::LogicalTypeID returnTypeID, scalar_func_exec_t execFunc)
Definition scalar_function.h:37
ScalarFunction(std::string name, std::vector< common::LogicalTypeID > parameterTypeIDs, common::LogicalTypeID returnTypeID, scalar_func_exec_t execFunc, scalar_func_select_t selectFunc)
Definition scalar_function.h:41
static void UnarySequenceExecFunction(const std::vector< std::shared_ptr< common::ValueVector > > ¶ms, const std::vector< common::SelectionVector * > ¶mSelVectors, common::ValueVector &result, common::SelectionVector *resultSelVector, void *dataPtr)
Definition scalar_function.h:160
bool isVarLength
Definition scalar_function.h:31
static void TernaryRegexExecFunction(const std::vector< std::shared_ptr< common::ValueVector > > ¶ms, const std::vector< common::SelectionVector * > ¶mSelVectors, common::ValueVector &result, common::SelectionVector *resultSelVector, void *dataPtr)
Definition scalar_function.h:69
static void BinaryExecFunction(const std::vector< std::shared_ptr< common::ValueVector > > ¶ms, const std::vector< common::SelectionVector * > ¶mSelVectors, common::ValueVector &result, common::SelectionVector *resultSelVector, void *=nullptr)
Definition scalar_function.h:90
ScalarFunction(std::string name, std::vector< common::LogicalTypeID > parameterTypeIDs, common::LogicalTypeID returnTypeID)
Definition scalar_function.h:34
static void UnarySetSeedFunction(const std::vector< std::shared_ptr< common::ValueVector > > ¶ms, const std::vector< common::SelectionVector * > ¶mSelVectors, common::ValueVector &result, common::SelectionVector *resultSelVector, void *dataPtr)
Definition scalar_function.h:217
static void NullaryExecFunction(const std::vector< std::shared_ptr< common::ValueVector > > ¶ms, const std::vector< common::SelectionVector * > ¶mSelVectors, common::ValueVector &result, common::SelectionVector *resultSelVector, void *=nullptr)
Definition scalar_function.h:227
static void UnaryExecNestedTypeFunction(const std::vector< std::shared_ptr< common::ValueVector > > ¶ms, const std::vector< common::SelectionVector * > ¶mSelVectors, common::ValueVector &result, common::SelectionVector *resultSelVector, void *dataPtr)
Definition scalar_function.h:205
static void TernaryStringExecFunction(const std::vector< std::shared_ptr< common::ValueVector > > ¶ms, const std::vector< common::SelectionVector * > ¶mSelVectors, common::ValueVector &result, common::SelectionVector *resultSelVector, void *dataPtr=nullptr)
Definition scalar_function.h:58
static bool BinarySelectFunction(const std::vector< std::shared_ptr< common::ValueVector > > ¶ms, common::SelectionVector &selVector, void *dataPtr)
Definition scalar_function.h:132
scalar_func_exec_t execFunc
Definition scalar_function.h:27
static bool BinarySelectWithBindData(const std::vector< std::shared_ptr< common::ValueVector > > ¶ms, common::SelectionVector &selVector, void *dataPtr)
Definition scalar_function.h:141
static void UnaryExecFunction(const std::vector< std::shared_ptr< common::ValueVector > > ¶ms, const std::vector< common::SelectionVector * > ¶mSelVectors, common::ValueVector &result, common::SelectionVector *resultSelVector, void *dataPtr)
Definition scalar_function.h:151
static void UnaryCastExecFunction(const std::vector< std::shared_ptr< common::ValueVector > > ¶ms, const std::vector< common::SelectionVector * > ¶mSelVectors, common::ValueVector &result, common::SelectionVector *resultSelVector, void *dataPtr)
Definition scalar_function.h:194
static void BinaryExecListStructFunction(const std::vector< std::shared_ptr< common::ValueVector > > ¶ms, const std::vector< common::SelectionVector * > ¶mSelVectors, common::ValueVector &result, common::SelectionVector *resultSelVector, void *dataPtr=nullptr)
Definition scalar_function.h:110
bool isListLambda
Definition scalar_function.h:30
static void TernaryExecListStructFunction(const std::vector< std::shared_ptr< common::ValueVector > > ¶ms, const std::vector< common::SelectionVector * > ¶mSelVectors, common::ValueVector &result, common::SelectionVector *resultSelVector, void *dataPtr=nullptr)
Definition scalar_function.h:79
static void UnaryCastStringExecFunction(const std::vector< std::shared_ptr< common::ValueVector > > ¶ms, const std::vector< common::SelectionVector * > ¶mSelVectors, common::ValueVector &result, common::SelectionVector *resultSelVector, void *dataPtr)
Definition scalar_function.h:182
scalar_func_compile_exec_t compileFunc
Definition scalar_function.h:29
static void TernaryExecFunction(const std::vector< std::shared_ptr< common::ValueVector > > ¶ms, const std::vector< common::SelectionVector * > ¶mSelVectors, common::ValueVector &result, common::SelectionVector *resultSelVector, void *dataPtr=nullptr)
Definition scalar_function.h:48
ScalarOrAggregateFunction()
Definition function.h:91
common::LogicalTypeID returnTypeID
Definition function.h:88
static void executeSwitch(common::ValueVector &a, common::SelectionVector *aSelVector, common::ValueVector &b, common::SelectionVector *bSelVector, common::ValueVector &c, common::SelectionVector *cSelVector, common::ValueVector &result, common::SelectionVector *resultSelVector, void *dataPtr)
Definition ternary_function_executor.h:419
Definition ternary_function_executor.h:8
Definition ternary_function_executor.h:32
Definition ternary_function_executor.h:24
Definition ternary_function_executor.h:16
Definition unary_function_executor.h:82
Definition unary_function_executor.h:46
Definition unary_function_executor.h:114
static void executeSequence(common::ValueVector &operand, common::SelectionVector *operandSelVector, common::ValueVector &result, common::SelectionVector *resultSelVector, void *dataPtr)
Definition unary_function_executor.h:186
static void executeSwitch(common::ValueVector &operand, common::SelectionVector *operandSelVector, common::ValueVector &result, common::SelectionVector *resultSelVector, void *dataPtr)
Definition unary_function_executor.h:160
Definition unary_function_executor.h:60
Definition unary_function_executor.h:35