From 61fdb87d0f3507ef87a7337b818a71c09264b1a9 Mon Sep 17 00:00:00 2001 From: Ritchie Vink Date: Sat, 5 Nov 2022 15:11:23 +0100 Subject: [PATCH] report sliced memory usage in binary/list/utf8arrays --- src/compute/aggregate/memory.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/compute/aggregate/memory.rs b/src/compute/aggregate/memory.rs index 8c8617d936c..5b2e0e07e2d 100644 --- a/src/compute/aggregate/memory.rs +++ b/src/compute/aggregate/memory.rs @@ -9,9 +9,15 @@ fn validity_size(validity: Option<&Bitmap>) -> usize { macro_rules! dyn_binary { ($array:expr, $ty:ty, $o:ty) => {{ let array = $array.as_any().downcast_ref::<$ty>().unwrap(); + let offsets = array.offsets(); - array.values().len() - + array.offsets().len() * std::mem::size_of::<$o>() + // in case of Binary/Utf8/List the offsets are sliced, + // not the values buffer + let values_start = offsets[0] as usize; + let values_end = offsets[offsets.len() - 1] as usize; + + values_end - values_start + + offsets.len() * std::mem::size_of::<$o>() + validity_size(array.validity()) }}; }