diff --git a/src/Processors/Formats/Impl/Parquet/Decoding.cpp b/src/Processors/Formats/Impl/Parquet/Decoding.cpp index 060d14f2cefc..e667182d0c89 100644 --- a/src/Processors/Formats/Impl/Parquet/Decoding.cpp +++ b/src/Processors/Formats/Impl/Parquet/Decoding.cpp @@ -1096,6 +1096,8 @@ void IntConverter::convertField(std::span data, bool /*is_max*/, Fie UInt64 val = 0; switch (input_size) { + case 1: val = unalignedLoad(data.data()); break; + case 2: val = unalignedLoad(data.data()); break; case 4: val = unalignedLoad(data.data()); break; case 8: val = unalignedLoad(data.data()); break; default: chassert(false); diff --git a/src/Processors/Formats/Impl/Parquet/Decoding.h b/src/Processors/Formats/Impl/Parquet/Decoding.h index 9682c9848fc5..44f8f047bf98 100644 --- a/src/Processors/Formats/Impl/Parquet/Decoding.h +++ b/src/Processors/Formats/Impl/Parquet/Decoding.h @@ -155,7 +155,8 @@ struct PageDecoderInfo }; -/// Input physical type: INT32 or INT64. +/// Input physical type: BOOLEAN, INT32, or INT64. +/// input_size in {1, 4, 8}. /// Output column type: [U]Int{8,16,32,64}. /// Output Field type: [U]Int64, IPv4, or Decimal{32,64}. struct IntConverter : public FixedSizeConverter diff --git a/src/Processors/Formats/Impl/Parquet/SchemaConverter.cpp b/src/Processors/Formats/Impl/Parquet/SchemaConverter.cpp index dfc26b7adcd3..dc3948f1c185 100644 --- a/src/Processors/Formats/Impl/Parquet/SchemaConverter.cpp +++ b/src/Processors/Formats/Impl/Parquet/SchemaConverter.cpp @@ -1136,6 +1136,8 @@ void SchemaConverter::processPrimitiveColumn( out_inferred_type = DataTypeFactory::instance().get("Bool"); auto converter = std::make_shared(); converter->input_size = 1; + converter->input_signed = false; + converter->field_signed = false; out_decoder.allow_stats = dispatch_int_stats_converter(/*allow_datetime_and_ipv4=*/ false, *converter); out_decoder.fixed_size_converter = std::move(converter); return; diff --git a/tests/queries/0_stateless/03623_parquet_bool.reference b/tests/queries/0_stateless/03623_parquet_bool.reference new file mode 100644 index 000000000000..27ba77ddaf61 --- /dev/null +++ b/tests/queries/0_stateless/03623_parquet_bool.reference @@ -0,0 +1 @@ +true diff --git a/tests/queries/0_stateless/03623_parquet_bool.sql b/tests/queries/0_stateless/03623_parquet_bool.sql new file mode 100644 index 000000000000..654caa5ff53d --- /dev/null +++ b/tests/queries/0_stateless/03623_parquet_bool.sql @@ -0,0 +1,4 @@ +-- Tags: no-parallel, no-fasttest + +insert into function file('03626_parquet_bool.parquet') select true as x settings engine_file_truncate_on_insert=1; +select * from file('03626_parquet_bool.parquet') where x=1 settings input_format_parquet_use_native_reader_v3=1;