mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-18 13:42:02 +00:00
Make MergeTreeSetIndex::checkInRange const.
This commit is contained in:
parent
12c5e376c6
commit
2759d5b6ad
@ -473,18 +473,9 @@ MergeTreeSetIndex::MergeTreeSetIndex(const Columns & set_elements, std::vector<K
|
|||||||
size_t tuple_size = indexes_mapping.size();
|
size_t tuple_size = indexes_mapping.size();
|
||||||
ordered_set.resize(tuple_size);
|
ordered_set.resize(tuple_size);
|
||||||
|
|
||||||
/// Create columns for points here to avoid extra allocations at 'checkInRange'.
|
|
||||||
left_point.reserve(tuple_size);
|
|
||||||
right_point.reserve(tuple_size);
|
|
||||||
|
|
||||||
for (size_t i = 0; i < tuple_size; ++i)
|
for (size_t i = 0; i < tuple_size; ++i)
|
||||||
{
|
|
||||||
ordered_set[i] = set_elements[indexes_mapping[i].tuple_index];
|
ordered_set[i] = set_elements[indexes_mapping[i].tuple_index];
|
||||||
|
|
||||||
left_point.emplace_back(ordered_set[i]->cloneEmpty());
|
|
||||||
right_point.emplace_back(ordered_set[i]->cloneEmpty());
|
|
||||||
}
|
|
||||||
|
|
||||||
Block block_to_sort;
|
Block block_to_sort;
|
||||||
SortDescription sort_description;
|
SortDescription sort_description;
|
||||||
for (size_t i = 0; i < tuple_size; ++i)
|
for (size_t i = 0; i < tuple_size; ++i)
|
||||||
@ -504,10 +495,19 @@ MergeTreeSetIndex::MergeTreeSetIndex(const Columns & set_elements, std::vector<K
|
|||||||
* 1: the intersection of the set and the range is non-empty
|
* 1: the intersection of the set and the range is non-empty
|
||||||
* 2: the range contains elements not in the set
|
* 2: the range contains elements not in the set
|
||||||
*/
|
*/
|
||||||
BoolMask MergeTreeSetIndex::checkInRange(const std::vector<Range> & key_ranges, const DataTypes & data_types)
|
BoolMask MergeTreeSetIndex::checkInRange(const std::vector<Range> & key_ranges, const DataTypes & data_types) const
|
||||||
{
|
{
|
||||||
size_t tuple_size = indexes_mapping.size();
|
size_t tuple_size = indexes_mapping.size();
|
||||||
|
|
||||||
|
ColumnsWithInfinity left_point(tuple_size);
|
||||||
|
ColumnsWithInfinity right_point(tuple_size);
|
||||||
|
|
||||||
|
for (size_t i = 0; i < tuple_size; ++i)
|
||||||
|
{
|
||||||
|
left_point.emplace_back(ordered_set[i]->cloneEmpty());
|
||||||
|
right_point.emplace_back(ordered_set[i]->cloneEmpty());
|
||||||
|
}
|
||||||
|
|
||||||
bool invert_left_infinities = false;
|
bool invert_left_infinities = false;
|
||||||
bool invert_right_infinities = false;
|
bool invert_right_infinities = false;
|
||||||
|
|
||||||
|
@ -234,16 +234,13 @@ public:
|
|||||||
|
|
||||||
bool hasMonotonicFunctionsChain() const;
|
bool hasMonotonicFunctionsChain() const;
|
||||||
|
|
||||||
BoolMask checkInRange(const std::vector<Range> & key_ranges, const DataTypes & data_types);
|
BoolMask checkInRange(const std::vector<Range> & key_ranges, const DataTypes & data_types) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Columns ordered_set;
|
Columns ordered_set;
|
||||||
std::vector<KeyTuplePositionMapping> indexes_mapping;
|
std::vector<KeyTuplePositionMapping> indexes_mapping;
|
||||||
|
|
||||||
using ColumnsWithInfinity = std::vector<ValueWithInfinity>;
|
using ColumnsWithInfinity = std::vector<ValueWithInfinity>;
|
||||||
|
|
||||||
ColumnsWithInfinity left_point;
|
|
||||||
ColumnsWithInfinity right_point;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user