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* inputVector, uint64_t inputPos,
void* resultVector,
49 uint64_t resultPos,
void* dataPtr) {
54 FUNC::operation(inputVector_.getValue<OPERAND_TYPE>(inputPos),
55 resultVector_->getValue<RESULT_TYPE>(resultPos), resultVector_, inputPos,
61 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC>
62 static inline void operation(
void* inputVector, uint64_t inputPos,
void* resultVector,
63 uint64_t resultPos,
void* ) {
66 FUNC::operation(inputVector_.getValue<OPERAND_TYPE>(inputPos),
67 resultVector_.getValue<RESULT_TYPE>(resultPos), inputVector_, resultVector_);
72 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC>
73 static inline void operation(
void* inputVector, uint64_t inputPos,
void* resultVector,
74 uint64_t resultPos,
void* dataPtr) {
77 resultVector_.setNull(resultPos,
true );
78 FUNC::operation(inputVector_.getValue<OPERAND_TYPE>(inputPos), dataPtr);
83 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC>
84 static void operation(
void* inputVector, uint64_t inputPos,
void* resultVector,
85 uint64_t resultPos,
void* ) {
88 FUNC::operation(inputVector_.getValue<OPERAND_TYPE>(inputPos),
89 resultVector_.getValue<RESULT_TYPE>(resultPos), inputVector_, resultVector_);
94 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC>
95 static void operation(
void* inputVector, uint64_t inputPos,
void* resultVector,
96 uint64_t resultPos,
void* dataPtr) {
99 FUNC::operation(inputVector_, resultVector_, inputPos, resultPos, dataPtr);
104 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC>
105 static inline void operation(
void* inputVector, uint64_t inputPos,
void* resultVector,
106 uint64_t resultPos,
void* dataPtr) {
109 FUNC::operation(inputVector_.getValue<OPERAND_TYPE>(inputPos),
110 resultVector_.getValue<RESULT_TYPE>(resultPos), dataPtr);
116 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC,
typename OP_WRAPPER>
119 OP_WRAPPER::template operation<OPERAND_TYPE, RESULT_TYPE, FUNC>((
void*)&inputVector,
120 inputPos, (
void*)&resultVector, resultPos, dataPtr);
125 bool operandIsUnfiltered,
bool resultIsUnfiltered) {
126 common::sel_t operandPos = operandIsUnfiltered ? selIdx : (*operandSelVector)[selIdx];
127 common::sel_t resultPos = resultIsUnfiltered ? selIdx : (*resultSelVector)[selIdx];
128 return {operandPos, resultPos};
131 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC,
typename OP_WRAPPER>
136 if (noNullsGuaranteed) {
140 const bool operandIsUnfiltered = operandSelVector->
isUnfiltered();
141 const bool resultIsUnfiltered = resultSelVector->
isUnfiltered();
143 for (
auto i = 0u; i < operandSelVector->
getSelSize(); i++) {
144 const auto [operandPos, resultPos] =
getSelectedPos(i, operandSelVector,
145 resultSelVector, operandIsUnfiltered, resultIsUnfiltered);
146 if (noNullsGuaranteed) {
148 result, resultPos, dataPtr);
151 if (!result.
isNull(resultPos)) {
153 result, resultPos, dataPtr);
159 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC,
typename OP_WRAPPER>
164 if (operand.
state->isFlat()) {
165 auto inputPos = (*operandSelVector)[0];
166 auto resultPos = (*resultSelVector)[0];
168 if (!result.
isNull(resultPos)) {
170 result, resultPos, dataPtr);
174 operandSelVector, result, resultSelVector, dataPtr);
178 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC>
182 operandSelVector, result, resultSelVector,
nullptr );
185 template<
typename OPERAND_TYPE,
typename RESULT_TYPE,
typename FUNC>
190 auto inputPos = (*operandSelVector)[0];
191 auto resultPos = (*resultSelVector)[0];
193 inputPos, result, resultPos, dataPtr);
Definition sel_vector.h:96
bool isUnfiltered() const
Definition sel_vector.h:73
sel_t getSelSize() const
Definition sel_vector.h:66
Definition value_vector.h:21
std::shared_ptr< DataChunkState > state
Definition value_vector.h:146
void resetAuxiliaryBuffer()
void setNull(uint32_t pos, bool isNull)
uint8_t isNull(uint32_t pos) const
Definition value_vector.h:84
bool hasNoNullsGuarantee() const
Definition value_vector.h:78
void setAllNonNull()
Definition value_vector.h:76
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:71
static void operation(void *inputVector, uint64_t inputPos, void *resultVector, uint64_t resultPos, void *dataPtr)
Definition unary_function_executor.h:73
Definition unary_function_executor.h:82
static void operation(void *inputVector, uint64_t inputPos, void *resultVector, uint64_t resultPos, void *)
Definition unary_function_executor.h:84
Definition unary_function_executor.h:46
static void operation(void *inputVector, uint64_t inputPos, void *resultVector, uint64_t resultPos, void *dataPtr)
Definition unary_function_executor.h:48
Definition unary_function_executor.h:93
static void operation(void *inputVector, uint64_t inputPos, void *resultVector, uint64_t resultPos, void *dataPtr)
Definition unary_function_executor.h:95
Definition unary_function_executor.h:114
static void executeOnValue(common::ValueVector &inputVector, uint64_t inputPos, common::ValueVector &resultVector, uint64_t resultPos, void *dataPtr)
Definition unary_function_executor.h:117
static void executeOnSelectedValues(common::ValueVector &operand, common::SelectionVector *operandSelVector, common::ValueVector &result, common::SelectionVector *resultSelVector, void *dataPtr)
Definition unary_function_executor.h:132
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
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:123
static void execute(common::ValueVector &operand, common::SelectionVector *operandSelVector, common::ValueVector &result, common::SelectionVector *resultSelVector)
Definition unary_function_executor.h:179
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:60
static void operation(void *inputVector, uint64_t inputPos, void *resultVector, uint64_t resultPos, void *)
Definition unary_function_executor.h:62
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:103
static void operation(void *inputVector, uint64_t inputPos, void *resultVector, uint64_t resultPos, void *dataPtr)
Definition unary_function_executor.h:105