Skip to content

Commit 17fafc3

Browse files
Merge pull request ClickHouse#87948 from ClickHouse/backport/25.8/87442
Backport ClickHouse#87442 to 25.8: Fix bool decoding in parquet reader v3
2 parents 684e873 + 6e89039 commit 17fafc3

File tree

3 files changed

+11
-1
lines changed

3 files changed

+11
-1
lines changed

src/Processors/Formats/Impl/Parquet/Decoding.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ struct PlainBooleanDecoder : public PageDecoder
249249
/// x = 00000000 000000hg 00000000 000000fe 00000000 000000dc 00000000 000000ba
250250
x = (x | (x << 7)) & 0x0101010101010101ul;
251251
/// x = 0000000h 0000000g 0000000f 0000000e 0000000d 0000000c 0000000b 0000000a
252-
memcpy(to + i * 8, &x, 8);
252+
memcpy(to + i, &x, 8);
253253
i += 8;
254254
}
255255
else
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
8
2+
256
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
-- Tags: no-parallel, no-fasttest
2+
3+
insert into function file('03630_parquet_bool_bug.parquet', Parquet, 'tags Array(Bool)') settings engine_file_truncate_on_insert=1 values ([false,false,false,false,false,false,false,false]), ([true,true,true,true,true,true,true,true]);
4+
select sum(tags) from file('03630_parquet_bool_bug.parquet') array join tags settings input_format_parquet_use_native_reader_v3=1;
5+
6+
-- Try all 256 1-byte masks to verify the bit shifting nonsense in PlainBooleanDecoder.
7+
insert into function file('03630_parquet_bool_bug.parquet') select number as n, arrayMap(i -> toBool(bitShiftRight(number, i) % 2 = 1), range(8)) as bits from numbers(256) settings engine_file_truncate_on_insert=1;
8+
select sum(n = arraySum(arrayMap(i -> bitShiftLeft(bits[i+1], i), range(8)))) as ok from file('03630_parquet_bool_bug.parquet') settings input_format_parquet_use_native_reader_v3=1, schema_inference_make_columns_nullable=0;

0 commit comments

Comments
 (0)