From 7a5a3f9dde67356df1e1d735d1d90e99a06b0cab Mon Sep 17 00:00:00 2001 From: sundyli <543950155@qq.com> Date: Mon, 18 Jul 2022 11:49:45 +0800 Subject: [PATCH] fix(parquet): enforce to use for PhysicalType::Int96 --- src/io/parquet/read/deserialize/simple.rs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/io/parquet/read/deserialize/simple.rs b/src/io/parquet/read/deserialize/simple.rs index 8f75ea6ad9c..ea6dacf609b 100644 --- a/src/io/parquet/read/deserialize/simple.rs +++ b/src/io/parquet/read/deserialize/simple.rs @@ -320,8 +320,11 @@ fn timestamp<'a, I: 'a + DataPages>( ) -> Result> { if physical_type == &PhysicalType::Int96 { let iter = primitive::Iter::new(pages, data_type, chunk_size, int96_to_i64_ns); - - let (factor, is_multiplier) = unifiy_timestmap_unit(logical_type, time_unit); + let logical_type = PrimitiveLogicalType::Timestamp { + unit: ParquetTimeUnit::Nanoseconds, + is_adjusted_to_utc: false, + }; + let (factor, is_multiplier) = unifiy_timestmap_unit(&Some(logical_type), time_unit); return match (factor, is_multiplier) { (1, _) => Ok(dyn_iter(iden(iter))), (a, true) => Ok(dyn_iter(op(iter, move |x| x * a))), @@ -353,7 +356,11 @@ fn timestamp_dict<'a, K: DictionaryKey, I: 'a + DataPages>( time_unit: TimeUnit, ) -> Result> { if physical_type == &PhysicalType::Int96 { - let (factor, is_multiplier) = unifiy_timestmap_unit(logical_type, time_unit); + let logical_type = PrimitiveLogicalType::Timestamp { + unit: ParquetTimeUnit::Nanoseconds, + is_adjusted_to_utc: false, + }; + let (factor, is_multiplier) = unifiy_timestmap_unit(&Some(logical_type), time_unit); return match (factor, is_multiplier) { (a, true) => Ok(dyn_iter(primitive::DictIter::::new( pages,