From 3783b90a889adce1c229f4ca69ccec38c2cfe9cc Mon Sep 17 00:00:00 2001 From: "Jorge C. Leitao" Date: Mon, 30 Aug 2021 12:29:30 +0000 Subject: [PATCH] migrated. --- src/compute/aggregate/memory.rs | 43 ++++++++++++--------------------- 1 file changed, 16 insertions(+), 27 deletions(-) diff --git a/src/compute/aggregate/memory.rs b/src/compute/aggregate/memory.rs index 8ec120da5c1..1174a1d4967 100644 --- a/src/compute/aggregate/memory.rs +++ b/src/compute/aggregate/memory.rs @@ -1,6 +1,6 @@ use crate::array::*; use crate::bitmap::Bitmap; -use crate::datatypes::{DataType, IntervalUnit}; +use crate::datatypes::PhysicalType; use crate::types::days_ms; fn validity_size(validity: &Option) -> usize { @@ -50,8 +50,8 @@ macro_rules! dyn_dict { /// /// FFI buffers are included in this estimation. pub fn estimated_bytes_size(array: &dyn Array) -> usize { - use DataType::*; - match array.data_type() { + use PhysicalType::*; + match array.data_type().to_physical_type() { Null => 0, Boolean => { let array = array.as_any().downcast_ref::().unwrap(); @@ -59,21 +59,18 @@ pub fn estimated_bytes_size(array: &dyn Array) -> usize { } Int8 => dyn_primitive!(array, i8), Int16 => dyn_primitive!(array, i16), - Int32 | Date32 | Time32(_) | Interval(IntervalUnit::YearMonth) => { - dyn_primitive!(array, i32) - } - Int64 | Date64 | Timestamp(_, _) | Time64(_) | Duration(_) => dyn_primitive!(array, i64), + Int32 => dyn_primitive!(array, i32), + Int64 => dyn_primitive!(array, i64), + Int128 => dyn_primitive!(array, i128), + DaysMs => dyn_primitive!(array, days_ms), UInt8 => dyn_primitive!(array, u16), UInt16 => dyn_primitive!(array, u16), UInt32 => dyn_primitive!(array, u32), UInt64 => dyn_primitive!(array, u64), - Float16 => unreachable!(), Float32 => dyn_primitive!(array, f32), Float64 => dyn_primitive!(array, f64), - Decimal(_, _) => dyn_primitive!(array, i128), - Interval(IntervalUnit::DayTime) => dyn_primitive!(array, days_ms), Binary => dyn_binary!(array, BinaryArray, i32), - FixedSizeBinary(_) => { + FixedSizeBinary => { let array = array .as_any() .downcast_ref::() @@ -83,23 +80,23 @@ pub fn estimated_bytes_size(array: &dyn Array) -> usize { LargeBinary => dyn_binary!(array, BinaryArray, i64), Utf8 => dyn_binary!(array, Utf8Array, i32), LargeUtf8 => dyn_binary!(array, Utf8Array, i64), - List(_) => { + List => { let array = array.as_any().downcast_ref::>().unwrap(); estimated_bytes_size(array.values().as_ref()) + array.offsets().len() * std::mem::size_of::() + validity_size(array.validity()) } - FixedSizeList(_, _) => { + FixedSizeList => { let array = array.as_any().downcast_ref::>().unwrap(); estimated_bytes_size(array.values().as_ref()) + validity_size(array.validity()) } - LargeList(_) => { + LargeList => { let array = array.as_any().downcast_ref::>().unwrap(); estimated_bytes_size(array.values().as_ref()) + array.offsets().len() * std::mem::size_of::() + validity_size(array.validity()) } - Struct(_) => { + Struct => { let array = array.as_any().downcast_ref::().unwrap(); array .values() @@ -109,7 +106,7 @@ pub fn estimated_bytes_size(array: &dyn Array) -> usize { .sum::() + validity_size(array.validity()) } - Union(_, _, _) => { + Union => { let array = array.as_any().downcast_ref::().unwrap(); let types = array.types().len() * std::mem::size_of::(); let offsets = array @@ -125,17 +122,9 @@ pub fn estimated_bytes_size(array: &dyn Array) -> usize { .sum::(); types + offsets + fields } - Dictionary(keys, _) => match keys.as_ref() { - Int8 => dyn_dict!(array, i8), - Int16 => dyn_dict!(array, i16), - Int32 => dyn_dict!(array, i32), - Int64 => dyn_dict!(array, i64), - UInt8 => dyn_dict!(array, u8), - UInt16 => dyn_dict!(array, u16), - UInt32 => dyn_dict!(array, u32), - UInt64 => dyn_dict!(array, u64), - _ => unreachable!(), - }, + Dictionary(key_type) => with_match_physical_dictionary_key_type!(key_type, |$T| { + dyn_dict!(array, $T) + }), } }