diff --git a/src/io/json/read/deserialize.rs b/src/io/json/read/deserialize.rs index 97b68098914..dab81f9392a 100644 --- a/src/io/json/read/deserialize.rs +++ b/src/io/json/read/deserialize.rs @@ -572,35 +572,31 @@ pub fn deserialize(json: &Value, data_type: DataType) -> Result, } fn allocate_array(f: &Field) -> Box { - fn allocate_inner(f: &Field) -> Box { - match f.data_type() { - DataType::Int8 => Box::new(MutablePrimitiveArray::::new()), - DataType::Int16 => Box::new(MutablePrimitiveArray::::new()), - DataType::Int32 => Box::new(MutablePrimitiveArray::::new()), - DataType::Int64 => Box::new(MutablePrimitiveArray::::new()), - DataType::UInt8 => Box::new(MutablePrimitiveArray::::new()), - DataType::UInt16 => Box::new(MutablePrimitiveArray::::new()), - DataType::UInt32 => Box::new(MutablePrimitiveArray::::new()), - DataType::UInt64 => Box::new(MutablePrimitiveArray::::new()), - DataType::Float16 => Box::new(MutablePrimitiveArray::::new()), - DataType::Float32 => Box::new(MutablePrimitiveArray::::new()), - DataType::Float64 => Box::new(MutablePrimitiveArray::::new()), - DataType::List(..) => allocate_array(f), - DataType::FixedSizeList(..) => allocate_array(f), - _ => todo!(), - } - } match f.data_type() { - DataType::List(inner) => Box::new(MutableListArray::::new_from( + DataType::Int8 => Box::new(MutablePrimitiveArray::::new()), + DataType::Int16 => Box::new(MutablePrimitiveArray::::new()), + DataType::Int32 => Box::new(MutablePrimitiveArray::::new()), + DataType::Int64 => Box::new(MutablePrimitiveArray::::new()), + DataType::UInt8 => Box::new(MutablePrimitiveArray::::new()), + DataType::UInt16 => Box::new(MutablePrimitiveArray::::new()), + DataType::UInt32 => Box::new(MutablePrimitiveArray::::new()), + DataType::UInt64 => Box::new(MutablePrimitiveArray::::new()), + DataType::Float16 => Box::new(MutablePrimitiveArray::::new()), + DataType::Float32 => Box::new(MutablePrimitiveArray::::new()), + DataType::Float64 => Box::new(MutablePrimitiveArray::::new()), + DataType::FixedSizeList(inner, size) => Box::new(MutableFixedSizeListArray::<_>::new_from( allocate_array(inner), f.data_type().clone(), - 0, - )), - DataType::FixedSizeList(child, size) => Box::new(MutableFixedSizeListArray::<_>::new_from( - allocate_inner(child), - f.data_type().clone(), *size, )), + DataType::List(inner) => match inner.data_type() { + DataType::List(_) => Box::new(MutableListArray::::new_from( + allocate_array(inner), + inner.data_type().clone(), + 0, + )), + _ => allocate_array(inner), + }, _ => todo!(), } }