From 2d70fbf46fd37f4ef532945c588be69a71998e44 Mon Sep 17 00:00:00 2001 From: baishen Date: Thu, 5 May 2022 15:15:11 +0800 Subject: [PATCH] Added support parquet deserialize largelist and uint (#979) --- src/io/parquet/read/deserialize/mod.rs | 55 ++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/src/io/parquet/read/deserialize/mod.rs b/src/io/parquet/read/deserialize/mod.rs index 7370479a262..03b90f46222 100644 --- a/src/io/parquet/read/deserialize/mod.rs +++ b/src/io/parquet/read/deserialize/mod.rs @@ -152,6 +152,46 @@ where |x: i64| x, ) } + UInt8 => { + types.pop(); + primitive::iter_to_arrays_nested( + columns.pop().unwrap(), + init.pop().unwrap(), + field.data_type().clone(), + chunk_size, + |x: i32| x as u8, + ) + } + UInt16 => { + types.pop(); + primitive::iter_to_arrays_nested( + columns.pop().unwrap(), + init.pop().unwrap(), + field.data_type().clone(), + chunk_size, + |x: i32| x as u16, + ) + } + UInt32 => { + types.pop(); + primitive::iter_to_arrays_nested( + columns.pop().unwrap(), + init.pop().unwrap(), + field.data_type().clone(), + chunk_size, + |x: i32| x as u32, + ) + } + UInt64 => { + types.pop(); + primitive::iter_to_arrays_nested( + columns.pop().unwrap(), + init.pop().unwrap(), + field.data_type().clone(), + chunk_size, + |x: i64| x as u64, + ) + } Float32 => { types.pop(); primitive::iter_to_arrays_nested( @@ -205,6 +245,21 @@ where }); Box::new(iter) as _ } + LargeList(inner) => { + let iter = columns_to_iter_recursive( + vec![columns.pop().unwrap()], + types, + inner.as_ref().clone(), + init, + chunk_size, + )?; + let iter = iter.map(move |x| { + let (mut nested, array) = x?; + let array = create_list(field.data_type().clone(), &mut nested, array)?; + Ok((nested, array)) + }); + Box::new(iter) as _ + } Struct(fields) => { let columns = fields .iter()