15 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC>
16 static inline void operation(
void* inputVector, uint64_t inputPos,
void* resultVector,
17 uint64_t resultPos,
void* ) {
20 FUNC::operation(inputVector_.getValue<OPERAND_TYPE>(inputPos),
21 resultVector_.getValue<RESULT_TYPE>(resultPos));
26 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC>
27 static inline void operation(
void* inputVector, uint64_t inputPos,
void* resultVector,
28 uint64_t ,
void* dataPtr) {
31 FUNC::operation(inputVector_.getValue<OPERAND_TYPE>(inputPos), resultVector_, dataPtr);
36 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC>
37 static void operation(
void* inputVector, uint64_t inputPos,
void* resultVector,
38 uint64_t resultPos,
void* ) {
41 FUNC::operation(inputVector_.getValue<OPERAND_TYPE>(inputPos),
42 resultVector_.getValue<RESULT_TYPE>(resultPos), resultVector_);
47 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC>
48 static void operation(
void* , uint64_t ,
void* resultVector,
49 uint64_t resultPos,
void* dataPtr) {
51 FUNC::operation(resultVector_.getValue<RESULT_TYPE>(resultPos), resultVector_, dataPtr);
56 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC>
57 static void operation(
void* inputVector, uint64_t inputPos,
void* resultVector,
58 uint64_t resultPos,
void* dataPtr) {
63 FUNC::operation(inputVector_.getValue<OPERAND_TYPE>(inputPos),
64 resultVector_->getValue<RESULT_TYPE>(resultPos), resultVector_, inputPos,
70 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC>
71 static inline void operation(
void* inputVector, uint64_t inputPos,
void* resultVector,
72 uint64_t resultPos,
void* ) {
75 FUNC::operation(inputVector_.getValue<OPERAND_TYPE>(inputPos),
76 resultVector_.getValue<RESULT_TYPE>(resultPos), inputVector_, resultVector_);
81 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC>
82 static void operation(
void* inputVector, uint64_t inputPos,
void* resultVector,
83 uint64_t resultPos,
void* ) {
86 FUNC::operation(inputVector_.getValue<OPERAND_TYPE>(inputPos),
87 resultVector_.getValue<RESULT_TYPE>(resultPos), inputVector_, resultVector_);
92 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC>
93 static inline void operation(
void* inputVector, uint64_t inputPos,
void* resultVector,
94 uint64_t resultPos,
void* dataPtr) {
97 FUNC::operation(inputVector_.getValue<OPERAND_TYPE>(inputPos),
98 resultVector_.getValue<RESULT_TYPE>(resultPos), dataPtr);
104 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC,
typename OP_WRAPPER>
107 OP_WRAPPER::template operation<OPERAND_TYPE, RESULT_TYPE, FUNC>((
void*)&inputVector,
108 inputPos, (
void*)&resultVector, resultPos, dataPtr);
113 bool operandIsUnfiltered,
bool resultIsUnfiltered) {
114 common::sel_t operandPos = operandIsUnfiltered ? selIdx : (*operandSelVector)[selIdx];
115 common::sel_t resultPos = resultIsUnfiltered ? selIdx : (*resultSelVector)[selIdx];
116 return {operandPos, resultPos};
119 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC,
typename OP_WRAPPER>
124 if (noNullsGuaranteed) {
128 const bool operandIsUnfiltered = operandSelVector->
isUnfiltered();
129 const bool resultIsUnfiltered = resultSelVector->
isUnfiltered();
131 for (
auto i = 0u; i < operandSelVector->
getSelSize(); i++) {
132 const auto [operandPos, resultPos] =
getSelectedPos(i, operandSelVector,
133 resultSelVector, operandIsUnfiltered, resultIsUnfiltered);
134 if (noNullsGuaranteed) {
136 result, resultPos, dataPtr);
139 if (!result.
isNull(resultPos)) {
141 result, resultPos, dataPtr);
147 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC,
typename OP_WRAPPER>
152 if (operand.
state->isFlat()) {
153 auto inputPos = (*operandSelVector)[0];
154 auto resultPos = (*resultSelVector)[0];
156 if (!result.
isNull(resultPos)) {
158 result, resultPos, dataPtr);
162 operandSelVector, result, resultSelVector, dataPtr);
166 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC>
170 operandSelVector, result, resultSelVector,
nullptr );
173 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC>
178 auto inputPos = (*operandSelVector)[0];
179 auto resultPos = (*resultSelVector)[0];
181 inputPos, result, resultPos, dataPtr);
Definition sel_vector.h:98
sel_t getSelSize() const
Definition sel_vector.h:68
bool isUnfiltered() const
Definition sel_vector.h:75
Definition value_vector.h:21
void resetAuxiliaryBuffer()
void setAllNonNull()
Definition value_vector.h:76
uint8_t isNull(uint32_t pos) const
Definition value_vector.h:84
bool hasNoNullsGuarantee() const
Definition value_vector.h:78
void setNull(uint32_t pos, bool isNull)
std::shared_ptr< DataChunkState > state
Definition value_vector.h:146
uint32_t idx_t
Definition types.h:45
uint64_t sel_t
Definition types.h:30
Definition binary_function_executor.h:6
Definition array_utils.h:7
Definition cast_function_bind_data.h:9
common::CSVOption option
Definition cast_function_bind_data.h:12
Definition unary_function_executor.h:80
static void operation(void *inputVector, uint64_t inputPos, void *resultVector, uint64_t resultPos, void *)
Definition unary_function_executor.h:82
Definition unary_function_executor.h:55
static void operation(void *inputVector, uint64_t inputPos, void *resultVector, uint64_t resultPos, void *dataPtr)
Definition unary_function_executor.h:57
Definition unary_function_executor.h:102
static void executeOnValue(common::ValueVector &inputVector, uint64_t inputPos, common::ValueVector &resultVector, uint64_t resultPos, void *dataPtr)
Definition unary_function_executor.h:105
static std::pair< common::sel_t, common::sel_t > getSelectedPos(common::idx_t selIdx, common::SelectionVector *operandSelVector, common::SelectionVector *resultSelVector, bool operandIsUnfiltered, bool resultIsUnfiltered)
Definition unary_function_executor.h:111
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
static void executeOnSelectedValues(common::ValueVector &operand, common::SelectionVector *operandSelVector, common::ValueVector &result, common::SelectionVector *resultSelVector, void *dataPtr)
Definition unary_function_executor.h:120
static void execute(common::ValueVector &operand, common::SelectionVector *operandSelVector, common::ValueVector &result, common::SelectionVector *resultSelVector)
Definition unary_function_executor.h:167
Definition unary_function_executor.h:14
static void operation(void *inputVector, uint64_t inputPos, void *resultVector, uint64_t resultPos, void *)
Definition unary_function_executor.h:16
Definition unary_function_executor.h:69
static void operation(void *inputVector, uint64_t inputPos, void *resultVector, uint64_t resultPos, void *)
Definition unary_function_executor.h:71
Definition unary_function_executor.h:25
static void operation(void *inputVector, uint64_t inputPos, void *resultVector, uint64_t, void *dataPtr)
Definition unary_function_executor.h:27
Definition unary_function_executor.h:35
static void operation(void *inputVector, uint64_t inputPos, void *resultVector, uint64_t resultPos, void *)
Definition unary_function_executor.h:37
Definition unary_function_executor.h:46
static void operation(void *, uint64_t, void *resultVector, uint64_t resultPos, void *dataPtr)
Definition unary_function_executor.h:48
Definition unary_function_executor.h:91
static void operation(void *inputVector, uint64_t inputPos, void *resultVector, uint64_t resultPos, void *dataPtr)
Definition unary_function_executor.h:93