MergeSelector: development [#METR-21840].

This commit is contained in:
Alexey Milovidov 2016-10-30 11:54:27 +03:00
parent 4dec8babf1
commit a832a8cd71

View File

@ -71,10 +71,20 @@ void selectWithinPartition(
}
size_t max_level = 0;
size_t prev_level = -1;
bool has_range_of_same_level = false;
for (const auto & part : parts)
{
if (part.level > max_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)
{
bool in_range = false;
@ -83,7 +93,7 @@ void selectWithinPartition(
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)
{
@ -118,6 +128,9 @@ void selectWithinPartition(
}
}
}
if (!has_range_of_same_level)
break;
}
}