mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-23 18:20:50 +00:00
MergeSelector: development [#METR-21840].
This commit is contained in:
parent
4dec8babf1
commit
a832a8cd71
@ -71,10 +71,20 @@ void selectWithinPartition(
|
|||||||
}
|
}
|
||||||
|
|
||||||
size_t max_level = 0;
|
size_t max_level = 0;
|
||||||
|
size_t prev_level = -1;
|
||||||
|
bool has_range_of_same_level = false;
|
||||||
|
|
||||||
for (const auto & part : parts)
|
for (const auto & part : parts)
|
||||||
|
{
|
||||||
if (part.level > max_level)
|
if (part.level > max_level)
|
||||||
max_level = part.level;
|
max_level = part.level;
|
||||||
|
|
||||||
|
if (part.level == prev_level)
|
||||||
|
has_range_of_same_level = true;
|
||||||
|
|
||||||
|
prev_level = part.level;
|
||||||
|
}
|
||||||
|
|
||||||
for (size_t level = 0; level <= max_level; ++level)
|
for (size_t level = 0; level <= max_level; ++level)
|
||||||
{
|
{
|
||||||
bool in_range = false;
|
bool in_range = false;
|
||||||
@ -83,7 +93,7 @@ void selectWithinPartition(
|
|||||||
|
|
||||||
for (size_t i = 0; i <= parts_size; ++i)
|
for (size_t i = 0; i <= parts_size; ++i)
|
||||||
{
|
{
|
||||||
if (i < parts_size && parts[i].level == level)
|
if (i < parts_size && (parts[i].level == level || !has_range_of_same_level))
|
||||||
{
|
{
|
||||||
if (!in_range)
|
if (!in_range)
|
||||||
{
|
{
|
||||||
@ -118,6 +128,9 @@ void selectWithinPartition(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!has_range_of_same_level)
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user