From ceb51aac2cdab60855a8b28958ea28cbb9564991 Mon Sep 17 00:00:00 2001 From: Jeremy Leibs Date: Fri, 6 Jan 2023 21:49:05 +0100 Subject: [PATCH] Fix incorrect downcast in `estimated_size_bytes` (#1351) --- src/compute/aggregate/memory.rs | 2 +- tests/it/compute/aggregate/memory.rs | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/compute/aggregate/memory.rs b/src/compute/aggregate/memory.rs index 90a2bc3a762..d497a60ae99 100644 --- a/src/compute/aggregate/memory.rs +++ b/src/compute/aggregate/memory.rs @@ -67,7 +67,7 @@ pub fn estimated_bytes_size(array: &dyn Array) -> usize { + validity_size(array.validity()) } FixedSizeList => { - let array = array.as_any().downcast_ref::>().unwrap(); + let array = array.as_any().downcast_ref::().unwrap(); estimated_bytes_size(array.values().as_ref()) + validity_size(array.validity()) } LargeList => { diff --git a/tests/it/compute/aggregate/memory.rs b/tests/it/compute/aggregate/memory.rs index b1a839319a2..be6ca35ee06 100644 --- a/tests/it/compute/aggregate/memory.rs +++ b/tests/it/compute/aggregate/memory.rs @@ -1,4 +1,8 @@ -use arrow2::{array::*, compute::aggregate::estimated_bytes_size}; +use arrow2::{ + array::*, + compute::aggregate::estimated_bytes_size, + datatypes::{DataType, Field}, +}; #[test] fn primitive() { @@ -17,3 +21,12 @@ fn utf8() { let a = Utf8Array::::from_slice(["aaa"]); assert_eq!(3 + 2 * std::mem::size_of::(), estimated_bytes_size(&a)); } + +#[test] +fn fixed_size_list() { + let data_type = + DataType::FixedSizeList(Box::new(Field::new("elem", DataType::Float32, false)), 3); + let values = Box::new(Float32Array::from_slice([1.0, 2.0, 3.0, 4.0, 5.0, 6.0])); + let a = FixedSizeListArray::new(data_type, values, None); + assert_eq!(6 * std::mem::size_of::(), estimated_bytes_size(&a)); +}