diff --git a/src/array/fixed_size_binary/mod.rs b/src/array/fixed_size_binary/mod.rs index 98dc365ff33..82695c437e7 100644 --- a/src/array/fixed_size_binary/mod.rs +++ b/src/array/fixed_size_binary/mod.rs @@ -81,9 +81,10 @@ impl FixedSizeBinaryArray { /// Returns a new null [`FixedSizeBinaryArray`]. pub fn new_null(data_type: DataType, length: usize) -> Self { + let size = Self::maybe_get_size(&data_type).unwrap(); Self::new( data_type, - Buffer::new_zeroed(length), + Buffer::new_zeroed(length * size), Some(Bitmap::new_zeroed(length)), ) } diff --git a/tests/it/array/fixed_size_binary/mod.rs b/tests/it/array/fixed_size_binary/mod.rs index cecaf402aae..f1edb8bf76d 100644 --- a/tests/it/array/fixed_size_binary/mod.rs +++ b/tests/it/array/fixed_size_binary/mod.rs @@ -50,6 +50,13 @@ fn empty() { assert_eq!(array.validity(), None); } +#[test] +fn null() { + let array = FixedSizeBinaryArray::new_null(DataType::FixedSizeBinary(2), 2); + assert_eq!(array.values().len(), 4); + assert_eq!(array.validity().cloned(), Some([false, false].into())); +} + #[test] fn from_iter() { let iter = std::iter::repeat(vec![1u8, 2]).take(2).map(Some);