Skip to content

Commit 7438d7e

Browse files
authored
Merge pull request ClickHouse#89483 from ClickHouse/backport/25.8/89458
Backport ClickHouse#89458 to 25.8: Fix handling of empty parts with non-empty projections during merge
2 parents 30825af + 8a1e45e commit 7438d7e

File tree

3 files changed

+24
-10
lines changed

3 files changed

+24
-10
lines changed

src/Storages/MergeTree/MergeTask.cpp

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1376,16 +1376,6 @@ bool MergeTask::MergeProjectionsStage::mergeMinMaxIndexAndPrepareProjections() c
13761376
projection_parts.front()->name,
13771377
projection_parts.back()->name);
13781378

1379-
/// Skip parts with empty parent parts.
1380-
chassert(global_ctx->future_part->parts.size() == projection_parts.size());
1381-
std::erase_if(
1382-
projection_parts,
1383-
[&](const auto & part)
1384-
{
1385-
size_t index = &part - projection_parts.data();
1386-
return global_ctx->future_part->parts[index]->isEmpty();
1387-
});
1388-
13891379
auto projection_future_part = std::make_shared<FutureMergedMutatedPart>();
13901380
projection_future_part->assign(std::move(projection_parts), /*patch_parts_=*/ {});
13911381
projection_future_part->name = projection->name;
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
-- { echoOn }
2+
3+
drop table if exists mt1;
4+
create table mt1 (time DateTime, projection proj (select min(time))) engine MergeTree order by () TTL time + interval 1 second settings remove_empty_parts=0, merge_with_ttl_timeout=0, deduplicate_merge_projection_mode='ignore';
5+
system stop merges mt1;
6+
insert into mt1 select number from numbers(4) settings max_block_size=1, min_insert_block_size_bytes=1;
7+
system start merges mt1;
8+
optimize table mt1 final;
9+
optimize table mt1 final;
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
-- { echoOn }
2+
3+
drop table if exists mt1;
4+
5+
create table mt1 (time DateTime, projection proj (select min(time))) engine MergeTree order by () TTL time + interval 1 second settings remove_empty_parts=0, merge_with_ttl_timeout=0, deduplicate_merge_projection_mode='ignore';
6+
7+
system stop merges mt1;
8+
9+
insert into mt1 select number from numbers(4) settings max_block_size=1, min_insert_block_size_bytes=1;
10+
11+
system start merges mt1;
12+
13+
optimize table mt1 final;
14+
15+
optimize table mt1 final;

0 commit comments

Comments
 (0)