From 28322d3102a1cc4dabf2d011a5cb6ee6566c0920 Mon Sep 17 00:00:00 2001 From: liukun4515 Date: Wed, 23 Feb 2022 13:21:39 +0800 Subject: [PATCH] support as_decimal_array api --- arrow/src/array/cast.rs | 13 +++++++++++++ arrow/src/array/mod.rs | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/arrow/src/array/cast.rs b/arrow/src/array/cast.rs index a708b267439a..6897e18861c7 100644 --- a/arrow/src/array/cast.rs +++ b/arrow/src/array/cast.rs @@ -96,6 +96,7 @@ array_downcast_fn!(as_null_array, NullArray); array_downcast_fn!(as_struct_array, StructArray); array_downcast_fn!(as_union_array, UnionArray); array_downcast_fn!(as_map_array, MapArray); +array_downcast_fn!(as_decimal_array, DecimalArray); #[cfg(test)] mod tests { @@ -103,6 +104,18 @@ mod tests { use super::*; + #[test] + fn test_as_decimal_array_ref() { + let array: DecimalArray = vec![Some(123), None, Some(1111)] + .into_iter() + .collect::() + .with_precision_and_scale(10, 2) + .unwrap(); + assert!(!as_decimal_array(&array).is_empty()); + let result_decimal = as_decimal_array(&array); + assert_eq!(result_decimal, &array); + } + #[test] fn test_as_primitive_array_ref() { let array: Int32Array = vec![1, 2, 3].into_iter().map(Some).collect(); diff --git a/arrow/src/array/mod.rs b/arrow/src/array/mod.rs index 6929bfdc46d3..9447e9a72259 100644 --- a/arrow/src/array/mod.rs +++ b/arrow/src/array/mod.rs @@ -512,7 +512,7 @@ pub use self::ord::{build_compare, DynComparator}; // --------------------- Array downcast helper functions --------------------- pub use self::cast::{ - as_boolean_array, as_dictionary_array, as_generic_binary_array, + as_boolean_array, as_decimal_array, as_dictionary_array, as_generic_binary_array, as_generic_list_array, as_large_list_array, as_largestring_array, as_list_array, as_map_array, as_null_array, as_primitive_array, as_string_array, as_struct_array, as_union_array,