mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-25 09:02:00 +00:00
Fix bug in MergerMutator parts selector
This commit is contained in:
parent
b8bdb17b8c
commit
47b29092b4
@ -264,6 +264,10 @@ SelectPartsDecision MergeTreeDataMergerMutator::selectPartsToMerge(
|
|||||||
if (!can_merge_callback(nullptr, part, nullptr))
|
if (!can_merge_callback(nullptr, part, nullptr))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
/// This part can be merged only with next parts (no prev part exists), so start
|
||||||
|
/// new interval if previous was not empty.
|
||||||
|
if (!parts_ranges.back().empty())
|
||||||
|
parts_ranges.emplace_back();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -271,12 +275,21 @@ SelectPartsDecision MergeTreeDataMergerMutator::selectPartsToMerge(
|
|||||||
/// interval (in the same partition)
|
/// interval (in the same partition)
|
||||||
if (!can_merge_callback(*prev_part, part, nullptr))
|
if (!can_merge_callback(*prev_part, part, nullptr))
|
||||||
{
|
{
|
||||||
/// Starting new interval in the same partition
|
/// Now we have no previous part
|
||||||
assert(!parts_ranges.back().empty());
|
|
||||||
parts_ranges.emplace_back();
|
|
||||||
|
|
||||||
/// Now we have no previous part, but it affects only logging
|
|
||||||
prev_part = nullptr;
|
prev_part = nullptr;
|
||||||
|
|
||||||
|
/// Mustn't be empty
|
||||||
|
assert(!parts_ranges.back().empty());
|
||||||
|
|
||||||
|
/// Some parts cannot be merged with previous parts and also cannot be merged with themselves,
|
||||||
|
/// for example, merge is already assigned for such parts, or they participate in quorum inserts
|
||||||
|
/// and so on.
|
||||||
|
/// Also we don't start new interval here (maybe all next parts cannot be merged and we don't want to have empty interval)
|
||||||
|
if (!can_merge_callback(nullptr, part, nullptr))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
/// Starting new interval in the same partition
|
||||||
|
parts_ranges.emplace_back();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ for i in $(seq 1 $NUM_REPLICAS); do
|
|||||||
$CLICKHOUSE_CLIENT -n --query "CREATE TABLE ttl_table$i(
|
$CLICKHOUSE_CLIENT -n --query "CREATE TABLE ttl_table$i(
|
||||||
key DateTime
|
key DateTime
|
||||||
)
|
)
|
||||||
ENGINE ReplicatedMergeTree('/test/01921_concurrent_ttl_and_normal_merges/${CLICKHOUSE_TEST_ZOOKEEPER_PREFIX}/ttl_table', '$i')
|
ENGINE ReplicatedMergeTree('/test/01921_concurrent_ttl_and_normal_merges/$CLICKHOUSE_TEST_ZOOKEEPER_PREFIX/ttl_table', '$i')
|
||||||
ORDER BY tuple()
|
ORDER BY tuple()
|
||||||
TTL key + INTERVAL 1 SECOND
|
TTL key + INTERVAL 1 SECOND
|
||||||
SETTINGS merge_with_ttl_timeout=1, max_replicated_merges_with_ttl_in_queue=100, max_number_of_merges_with_ttl_in_pool=100;"
|
SETTINGS merge_with_ttl_timeout=1, max_replicated_merges_with_ttl_in_queue=100, max_number_of_merges_with_ttl_in_pool=100;"
|
||||||
|
Loading…
Reference in New Issue
Block a user