Make MergeTreeSetIndex::checkInRange const.

This commit is contained in:
Nikolai Kochetov 2020-07-21 14:13:35 +03:00
parent 12c5e376c6
commit 2759d5b6ad
2 changed files with 11 additions and 14 deletions

View File

@ -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;

View File

@ -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;
}; };
} }