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>>&,
45 template<
typename A_TYPE,
typename B_TYPE,
typename C_TYPE,
typename RESULT_TYPE,
typename FUNC>
52 *params[2], paramSelVectors[2], result, resultSelVector, dataPtr);
55 template<
typename A_TYPE,
typename B_TYPE,
typename C_TYPE,
typename RESULT_TYPE,
typename FUNC>
57 const std::vector<std::shared_ptr<common::ValueVector>>& params,
63 paramSelVectors[1], *params[2], paramSelVectors[2], result, resultSelVector, dataPtr);
66 template<
typename A_TYPE,
typename B_TYPE,
typename C_TYPE,
typename RESULT_TYPE,
typename FUNC>
68 const std::vector<std::shared_ptr<common::ValueVector>>& params,
73 paramSelVectors[1], *params[2], paramSelVectors[2], result, resultSelVector, dataPtr);
76 template<
typename A_TYPE,
typename B_TYPE,
typename C_TYPE,
typename RESULT_TYPE,
typename FUNC>
78 const std::vector<std::shared_ptr<common::ValueVector>>& params,
84 paramSelVectors[1], *params[2], paramSelVectors[2], result, resultSelVector, dataPtr);
87 template<
typename LEFT_TYPE,
typename RIGHT_TYPE,
typename RESULT_TYPE,
typename FUNC>
93 paramSelVectors[0], *params[1], paramSelVectors[1], result, resultSelVector);
96 template<
typename LEFT_TYPE,
typename RIGHT_TYPE,
typename RESULT_TYPE,
typename FUNC>
98 const std::vector<std::shared_ptr<common::ValueVector>>& params,
104 paramSelVectors[1], result, resultSelVector, dataPtr);
107 template<
typename LEFT_TYPE,
typename RIGHT_TYPE,
typename RESULT_TYPE,
typename FUNC>
109 const std::vector<std::shared_ptr<common::ValueVector>>& params,
115 paramSelVectors[1], result, resultSelVector, dataPtr);
118 template<
typename LEFT_TYPE,
typename RIGHT_TYPE,
typename RESULT_TYPE,
typename FUNC>
120 const std::vector<std::shared_ptr<common::ValueVector>>& params,
126 paramSelVectors[1], result, resultSelVector, dataPtr);
129 template<
typename LEFT_TYPE,
typename RIGHT_TYPE,
typename FUNC>
131 const std::vector<std::shared_ptr<common::ValueVector>>& params,
138 template<
typename LEFT_TYPE,
typename RIGHT_TYPE,
typename FUNC>
140 const std::vector<std::shared_ptr<common::ValueVector>>& params,
147 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC,
153 EXECUTOR::template executeSwitch<OPERAND_TYPE, RESULT_TYPE, FUNC, UnaryFunctionWrapper>(
154 *params[0], paramSelVectors[0], result, resultSelVector, dataPtr);
157 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC>
159 const std::vector<std::shared_ptr<common::ValueVector>>& params,
164 paramSelVectors[0], result, resultSelVector, dataPtr);
167 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC>
169 const std::vector<std::shared_ptr<common::ValueVector>>& params,
178 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC,
181 const std::vector<std::shared_ptr<common::ValueVector>>& params,
185 EXECUTOR::template executeSwitch<OPERAND_TYPE, RESULT_TYPE, FUNC,
190 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC,
193 const std::vector<std::shared_ptr<common::ValueVector>>& params,
197 EXECUTOR::template executeSwitch<OPERAND_TYPE, RESULT_TYPE, FUNC, UnaryCastFunctionWrapper>(
198 *params[0], paramSelVectors[0], result, resultSelVector, dataPtr);
201 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC>
203 const std::vector<std::shared_ptr<common::ValueVector>>& params,
212 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC>
214 const std::vector<std::shared_ptr<common::ValueVector>>& params,
223 template<
typename RESULT_TYPE,
typename FUNC>
225 [[maybe_unused]]
const std::vector<std::shared_ptr<common::ValueVector>>& params,
226 [[maybe_unused]]
const std::vector<common::SelectionVector*>& paramSelVectors,
229 KU_ASSERT(params.empty() && paramSelVectors.empty());
233 template<
typename RESULT_TYPE,
typename FUNC>
235 [[maybe_unused]]
const std::vector<std::shared_ptr<common::ValueVector>>& params,
236 [[maybe_unused]]
const std::vector<common::SelectionVector*>& paramSelVectors,
238 KU_ASSERT(params.empty() && paramSelVectors.empty());
242 virtual std::unique_ptr<ScalarFunction>
copy()
const {
243 return std::make_unique<ScalarFunction>(*
this);
#define KUZU_API
Definition api.h:25
#define KU_ASSERT(condition)
Definition assert.h:19
Definition sel_vector.h:98
Definition value_vector.h:21
LogicalTypeID
Definition types.h:177
Definition binary_function_executor.h:6
std::function< bool( const std::vector< std::shared_ptr< common::ValueVector > > &, common::SelectionVector &, void *)> scalar_func_select_t
Definition scalar_function.h:23
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< 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
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::string name
Definition function.h:62
std::vector< common::LogicalTypeID > parameterTypeIDs
Definition function.h:63
static void execute(common::ValueVector &result, common::SelectionVector &sel, void *dataPtr)
Definition pointer_function_executor.h:10
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:46
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 *=nullptr)
Definition scalar_function.h:202
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:39
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:158
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:168
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:67
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:234
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:192
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:88
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:97
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:180
ScalarFunction(std::string name, std::vector< common::LogicalTypeID > parameterTypeIDs, common::LogicalTypeID returnTypeID, scalar_func_exec_t execFunc)
Definition scalar_function.h:35
static bool BinarySelectWithBindData(const std::vector< std::shared_ptr< common::ValueVector > > ¶ms, common::SelectionVector &selVector, void *dataPtr)
Definition scalar_function.h:139
static bool BinarySelectFunction(const std::vector< std::shared_ptr< common::ValueVector > > ¶ms, common::SelectionVector &selVector, void *dataPtr)
Definition scalar_function.h:130
scalar_func_exec_t execFunc
Definition scalar_function.h:27
scalar_func_compile_exec_t compileFunc
Definition scalar_function.h:29
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:224
virtual std::unique_ptr< ScalarFunction > copy() const
Definition scalar_function.h:242
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:108
ScalarFunction(std::string name, std::vector< common::LogicalTypeID > parameterTypeIDs, common::LogicalTypeID returnTypeID)
Definition scalar_function.h:32
static void UnaryExecStructFunction(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:213
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:77
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:119
scalar_func_select_t selectFunc
Definition scalar_function.h:28
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:56
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:149
ScalarOrAggregateFunction()
Definition function.h:97
common::LogicalTypeID returnTypeID
Definition function.h:94
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:392
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:55
Definition unary_function_executor.h:102
static void executeSequence(common::ValueVector &operand, common::SelectionVector *operandSelVector, common::ValueVector &result, common::SelectionVector *resultSelVector, void *dataPtr)
Definition unary_function_executor.h:174
static void executeSwitch(common::ValueVector &operand, common::SelectionVector *operandSelVector, common::ValueVector &result, common::SelectionVector *resultSelVector, void *dataPtr)
Definition unary_function_executor.h:148
Definition unary_function_executor.h:69
Definition unary_function_executor.h:35
Definition unary_function_executor.h:46