Auxiliary class to squeeze two 32 bits integers into a 64 bits one, cf.
More...
#include <basic_row_iterators.h>
|
union { |
uint32_t m_value [2] |
| [0]: # of duplicates on left side of INTERSECT ALL [1]: # of duplicates on right side of INTERSECT ALL. More...
|
|
uint64_t m_value64 |
|
} | data |
|
Auxiliary class to squeeze two 32 bits integers into a 64 bits one, cf.
logic of INTERSECT ALL in MaterializeIterator<Profiler>::MaterializeQueryBlock. For INTERSECT ALL we need two counters: the number of duplicates in the left operand, and the number of matches seen (so far) from the right operand. Instead of adding another field to the temporary table, we subdivide the 64 bits counter we already have. This imposes an implementation restriction on INTERSECT ALL: the resulting table must have <= uint32::max duplicates of any row.
◆ HalfCounter()
HalfCounter::HalfCounter |
( |
uint64_t |
packed | ) |
|
|
inline |
◆ operator[]()
uint32_t & HalfCounter::operator[] |
( |
size_t |
idx | ) |
|
|
inline |
◆ value()
uint64_t HalfCounter::value |
( |
| ) |
const |
|
inline |
union { ... } HalfCounter::data |
◆ m_value
uint32_t HalfCounter::m_value[2] |
[0]: # of duplicates on left side of INTERSECT ALL [1]: # of duplicates on right side of INTERSECT ALL.
Always <= [0].
◆ m_value64
uint64_t HalfCounter::m_value64 |
The documentation for this class was generated from the following file: