Skip to content
This repository has been archived by the owner on Feb 18, 2024. It is now read-only.

Commit

Permalink
Simpler
Browse files Browse the repository at this point in the history
  • Loading branch information
jorgecarleitao committed May 27, 2022
1 parent bbe7209 commit 7e2f110
Showing 1 changed file with 12 additions and 22 deletions.
34 changes: 12 additions & 22 deletions src/io/parquet/read/deserialize/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ mod utils;
use crate::{
array::{Array, BinaryArray, FixedSizeListArray, ListArray, Utf8Array},
datatypes::{DataType, Field},
error::{Error, Result},
error::Result,
};

use self::nested_utils::{InitNested, NestedArrayIter, NestedState};
Expand Down Expand Up @@ -41,10 +41,10 @@ fn create_list(
data_type: DataType,
nested: &mut NestedState,
values: Arc<dyn Array>,
) -> Result<Arc<dyn Array>> {
Ok(match data_type {
) -> Arc<dyn Array> {
let (mut offsets, validity) = nested.nested.pop().unwrap().inner();
match data_type.to_logical_type() {
DataType::List(_) => {
let (mut offsets, validity) = nested.nested.pop().unwrap().inner();
offsets.push(values.len() as i64);

let offsets = offsets.iter().map(|x| *x as i32).collect::<Vec<_>>();
Expand All @@ -56,7 +56,6 @@ fn create_list(
))
}
DataType::LargeList(_) => {
let (mut offsets, validity) = nested.nested.pop().unwrap().inner();
offsets.push(values.len() as i64);

Arc::new(ListArray::<i64>::new(
Expand All @@ -66,22 +65,13 @@ fn create_list(
validity.and_then(|x| x.into()),
))
}
DataType::FixedSizeList(_, _) => {
let (_, validity) = nested.nested.pop().unwrap().inner();

Arc::new(FixedSizeListArray::new(
data_type,
values,
validity.and_then(|x| x.into()),
))
}
_ => {
return Err(Error::NotYetImplemented(format!(
"Read nested datatype {:?}",
data_type
)))
}
})
DataType::FixedSizeList(_, _) => Arc::new(FixedSizeListArray::new(
data_type,
values,
validity.and_then(|x| x.into()),
)),
_ => unreachable!(),
}
}

fn columns_to_iter_recursive<'a, I: 'a>(
Expand Down Expand Up @@ -258,7 +248,7 @@ where
)?;
let iter = iter.map(move |x| {
let (mut nested, array) = x?;
let array = create_list(field.data_type().clone(), &mut nested, array)?;
let array = create_list(field.data_type().clone(), &mut nested, array);
Ok((nested, array))
});
Box::new(iter) as _
Expand Down

0 comments on commit 7e2f110

Please sign in to comment.