From 93fa0c35f2c2204dcf22e257af212bf4312012d9 Mon Sep 17 00:00:00 2001 From: "Jorge C. Leitao" Date: Thu, 5 May 2022 05:47:46 +0000 Subject: [PATCH] Added support for nested binary --- src/io/parquet/read/deserialize/mod.rs | 52 ++++++++++---------------- 1 file changed, 19 insertions(+), 33 deletions(-) diff --git a/src/io/parquet/read/deserialize/mod.rs b/src/io/parquet/read/deserialize/mod.rs index 03b90f46222..846f51a4ed6 100644 --- a/src/io/parquet/read/deserialize/mod.rs +++ b/src/io/parquet/read/deserialize/mod.rs @@ -221,31 +221,34 @@ where chunk_size, ) } - LargeBinary => { + LargeUtf8 => { types.pop(); - binary::iter_to_arrays_nested::, _>( + binary::iter_to_arrays_nested::, _>( columns.pop().unwrap(), init.pop().unwrap(), field.data_type().clone(), chunk_size, ) } - List(inner) => { - let iter = columns_to_iter_recursive( - vec![columns.pop().unwrap()], - types, - inner.as_ref().clone(), - init, + Binary => { + types.pop(); + binary::iter_to_arrays_nested::, _>( + columns.pop().unwrap(), + init.pop().unwrap(), + field.data_type().clone(), 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 _ + ) + } + LargeBinary => { + types.pop(); + binary::iter_to_arrays_nested::, _>( + columns.pop().unwrap(), + init.pop().unwrap(), + field.data_type().clone(), + chunk_size, + ) } - LargeList(inner) => { + List(inner) | LargeList(inner) | FixedSizeList(inner, _) => { let iter = columns_to_iter_recursive( vec![columns.pop().unwrap()], types, @@ -277,23 +280,6 @@ where let columns = columns.into_iter().rev().collect(); Box::new(struct_::StructIterator::new(columns, fields.clone())) } - FixedSizeList(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?; - println!("{nested:?}"); - println!("{array:?}"); - let array = create_list(field.data_type().clone(), &mut nested, array)?; - Ok((nested, array)) - }); - Box::new(iter) as _ - } other => todo!("{other:?}"), }) }