34 return &chunk_data[index_inside_chunk * join_column->
elem_sz];
75 index_inside_chunk +=
step;
77 index_inside_chunk >= join_chunk_array[index_of_chunk].num_elems) {
80 if (index_of_chunk < join_column->num_chunks) {
96 : join_column(join_column)
97 , type_info(type_info)
99 reinterpret_cast<const struct
JoinChunk*>(join_column->col_chunks_buff))
100 , chunk_data(join_column->num_elems > 0 ? join_chunk_array->col_buff : nullptr)
102 , index_inside_chunk(0)
107 auto temp = this->
step;
108 this->step = this->
start;
166 : num_cols(num_cols) {
172 for (
size_t i = 0; i < num_cols; ++i) {
173 join_column_iterators[i] =
175 type_info_per_key ? &type_info_per_key[i] :
nullptr,
182 for (
size_t i = 0; i < num_cols; ++i) {
183 if (join_column_iterators[i]) {
192 for (
size_t i = 0; i < num_cols; ++i) {
193 ++join_column_iterators[i];
209 : num_cols(0), join_column_per_key(nullptr), type_info_per_key(nullptr) {}
215 , join_column_per_key(join_column_per_key)
216 , type_info_per_key(type_info_per_key) {}
220 num_cols, join_column_per_key, type_info_per_key, 0, 1);
const int8_t * chunk_data
const ColumnType column_type
DEVICE Slice slice(size_t start, size_t step)
DEVICE JoinColumnTupleIterator(size_t num_cols, const JoinColumn *join_column_per_key, const JoinColumnTypeInfo *type_info_per_key, size_t start, size_t step)
DEVICE FORCE_INLINE JoinColumnTupleIterator & operator*()
DEVICE FORCE_INLINE JoinColumnTupleIterator & operator++()
DEVICE JoinColumnTuple(size_t num_cols, const JoinColumn *join_column_per_key, const JoinColumnTypeInfo *type_info_per_key)
DEVICE JoinColumnTupleIterator()
DEVICE NEVER_INLINE int64_t SUFFIX() fixed_width_int_decode_noinline(const int8_t *byte_stream, const int32_t byte_width, const int64_t pos)
DEVICE JoinColumnIterator end()
DEVICE FORCE_INLINE int64_t getElementSwitch() const
const struct JoinColumnTypeInfo * type_info
DEVICE JoinColumnTupleIterator begin()
JoinColumnTyped * join_column_typed
Iterates over the rows of a JoinColumnTuple across multiple fragments/chunks.
DEVICE FORCE_INLINE const int8_t * ptr() const
JoinColumnTuple * join_column_tuple
Iterates over the rows of a JoinColumn across multiple fragments/chunks.
DEVICE JoinColumnIterator end()
DEVICE JoinColumnIterator begin()
DEVICE JoinColumnIterator begin()
const JoinColumn * join_column
DEVICE NEVER_INLINE int64_t SUFFIX() fixed_width_unsigned_decode_noinline(const int8_t *byte_stream, const int32_t byte_width, const int64_t pos)
DEVICE JoinColumnIterator()
const struct JoinChunk * join_chunk_array
DEVICE JoinColumnIterator(const JoinColumn *join_column, const JoinColumnTypeInfo *type_info, size_t start, size_t step)
size_t index_inside_chunk
const struct JoinColumn * join_column
DEVICE FORCE_INLINE JoinColumnIterator & operator++()
DEVICE JoinColumnTupleIterator end()
DEVICE NEVER_INLINE int64_t SUFFIX() fixed_width_small_date_decode_noinline(const int8_t *byte_stream, const int32_t byte_width, const int32_t null_val, const int64_t ret_null_val, const int64_t pos)
const JoinColumnTypeInfo * type_info_per_key
DEVICE JoinColumnTupleIterator begin()
DEVICE FORCE_INLINE IndexedElement operator*() const
DEVICE Slice slice(size_t start, size_t step)
const JoinColumn * join_column_per_key
DEVICE JoinColumnTupleIterator end()
DEVICE NEVER_INLINE double SUFFIX() fixed_width_double_decode_noinline(const int8_t *byte_stream, const int64_t pos)
const JoinColumnTypeInfo * type_info
const size_t g_maximum_conditions_to_coalesce