From 9ed6aba422068514413bea39a1c255d1adae458f Mon Sep 17 00:00:00 2001 From: Guillaume Balaine Date: Wed, 5 Jan 2022 18:55:30 +0100 Subject: [PATCH] arrays can be null and should be unboxed when deserializing items (#727) --- src/io/avro/read/deserialize.rs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/io/avro/read/deserialize.rs b/src/io/avro/read/deserialize.rs index f3b37ec1546..fae7c148bd9 100644 --- a/src/io/avro/read/deserialize.rs +++ b/src/io/avro/read/deserialize.rs @@ -96,10 +96,15 @@ fn deserialize_value<'a>( let data_type = array.data_type(); match data_type { DataType::List(inner) => { - let avro_inner = if let AvroSchema::Array(inner) = avro_field { - inner.as_ref() - } else { - unreachable!() + let avro_inner = match avro_field { + AvroSchema::Array(inner) => inner.as_ref(), + AvroSchema::Union(u) => match &u.as_slice() { + &[AvroSchema::Array(inner), _] | &[_, AvroSchema::Array(inner)] => { + inner.as_ref() + } + _ => unreachable!(), + }, + _ => unreachable!(), }; let is_nullable = inner.is_nullable();