Skip to content

Commit 4942c2d

Browse files
Backport #92860 to 25.12: Fix bad creation of sparse columns during mutation in Wide part
1 parent c3b847d commit 4942c2d

3 files changed

Lines changed: 32 additions & 1 deletion

File tree

src/Storages/MergeTree/MutateTask.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -591,7 +591,14 @@ getColumnsForNewDataPart(
591591
/// settings will not be applied for them (for example, new serialization versions for data types).
592592
if (!affects_all_columns)
593593
{
594-
settings = serialization_infos.getSettings();
594+
settings = SerializationInfo::Settings
595+
{
596+
(*source_part->storage.getSettings())[MergeTreeSetting::ratio_of_defaults_for_sparse_serialization],
597+
false,
598+
serialization_infos.getSettings().version,
599+
serialization_infos.getSettings().string_serialization_version,
600+
serialization_infos.getSettings().nullable_serialization_version,
601+
};
595602
}
596603
/// Otherwise use fresh settings from storage.
597604
else
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
0 42
2+
1 42
3+
2 42
4+
3 42
5+
4 42
6+
5 42
7+
6 42
8+
7 42
9+
8 42
10+
9 42
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
drop table if exists test;
2+
create table test (a UInt32, b UInt32) engine=MergeTree order by tuple() settings min_bytes_for_wide_part=0, ratio_of_defaults_for_sparse_serialization=0.0, max_suspicious_broken_parts=0, max_suspicious_broken_parts_bytes=0;
3+
insert into test select number, number from numbers(10);
4+
5+
detach table test;
6+
attach table test;
7+
8+
alter table test update b = 42 where 1 settings mutations_sync=2;
9+
10+
detach table test;
11+
attach table test;
12+
13+
select * from test;
14+
drop table test;

0 commit comments

Comments
 (0)