diff --git a/src/statistics/fixed_len_binary.rs b/src/statistics/fixed_len_binary.rs index 25f3bbccc..b1771d51a 100644 --- a/src/statistics/fixed_len_binary.rs +++ b/src/statistics/fixed_len_binary.rs @@ -3,13 +3,11 @@ use std::sync::Arc; use parquet_format_async_temp::Statistics as ParquetStatistics; use super::Statistics; -use crate::{ - error::{ParquetError, Result}, - schema::types::PhysicalType, -}; +use crate::{error::{ParquetError, Result}, metadata::ColumnDescriptor, schema::types::PhysicalType}; #[derive(Debug, Clone, PartialEq)] pub struct FixedLenStatistics { + pub descriptor: ColumnDescriptor, pub null_count: Option, pub distinct_count: Option, pub max_value: Option>, @@ -31,7 +29,7 @@ impl Statistics for FixedLenStatistics { } } -pub fn read(v: &ParquetStatistics, size: i32) -> Result> { +pub fn read(v: &ParquetStatistics, size: i32, descriptor: ColumnDescriptor) -> Result> { if let Some(ref v) = v.max_value { if v.len() != size as usize { return Err(ParquetError::OutOfSpec( @@ -48,6 +46,7 @@ pub fn read(v: &ParquetStatistics, size: i32) -> Result> { }; Ok(Arc::new(FixedLenStatistics { + descriptor, null_count: v.null_count, distinct_count: v.distinct_count, max_value: v.max_value.clone().map(|mut x| { diff --git a/src/statistics/mod.rs b/src/statistics/mod.rs index c30a823b7..469e7e636 100644 --- a/src/statistics/mod.rs +++ b/src/statistics/mod.rs @@ -108,7 +108,7 @@ pub fn deserialize_statistics( PhysicalType::Float => primitive::read::(statistics, descriptor), PhysicalType::Double => primitive::read::(statistics, descriptor), PhysicalType::ByteArray => binary::read(statistics, descriptor), - PhysicalType::FixedLenByteArray(size) => fixed_len_binary::read(statistics, *size), + PhysicalType::FixedLenByteArray(size) => fixed_len_binary::read(statistics, *size, descriptor), } }