This is an automated email from the ASF dual-hosted git repository.

weijun pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/datafusion.git


The following commit(s) were added to refs/heads/main by this push:
     new b7ea7d52ce Supplement as_*_array functions (#13580)
b7ea7d52ce is described below

commit b7ea7d52ce50c477ca46b70d2abf847094c64f1d
Author: Piotr Findeisen <[email protected]>
AuthorDate: Thu Nov 28 10:28:50 2024 +0100

    Supplement as_*_array functions (#13580)
    
    * Supplement as_*_array functions
    
    These functions are useful when implementing UDFs. It would be helpful
    for downstream projects to provide graceful cast functions for all data
    types.
    
    * add as_large_string_array
    
    * add as_large_binary_array
---
 datafusion/common/src/cast.rs | 61 +++++++++++++++++++++++++++++++++----------
 1 file changed, 47 insertions(+), 14 deletions(-)

diff --git a/datafusion/common/src/cast.rs b/datafusion/common/src/cast.rs
index 0586fcf5e2..bb9d809965 100644
--- a/datafusion/common/src/cast.rs
+++ b/datafusion/common/src/cast.rs
@@ -36,33 +36,66 @@ use arrow::{
     },
     datatypes::{ArrowDictionaryKeyType, ArrowPrimitiveType},
 };
-use arrow_array::{BinaryViewArray, StringViewArray};
+use arrow_array::{
+    BinaryViewArray, Float16Array, Int16Array, Int8Array, LargeBinaryArray,
+    LargeStringArray, StringViewArray, UInt16Array,
+};
 
 // Downcast ArrayRef to Date32Array
 pub fn as_date32_array(array: &dyn Array) -> Result<&Date32Array> {
     Ok(downcast_value!(array, Date32Array))
 }
 
+// Downcast ArrayRef to Date64Array
+pub fn as_date64_array(array: &dyn Array) -> Result<&Date64Array> {
+    Ok(downcast_value!(array, Date64Array))
+}
+
 // Downcast ArrayRef to StructArray
 pub fn as_struct_array(array: &dyn Array) -> Result<&StructArray> {
     Ok(downcast_value!(array, StructArray))
 }
 
+// Downcast ArrayRef to Int8Array
+pub fn as_int8_array(array: &dyn Array) -> Result<&Int8Array> {
+    Ok(downcast_value!(array, Int8Array))
+}
+
 // Downcast ArrayRef to UInt8Array
 pub fn as_uint8_array(array: &dyn Array) -> Result<&UInt8Array> {
     Ok(downcast_value!(array, UInt8Array))
 }
 
+// Downcast ArrayRef to Int16Array
+pub fn as_int16_array(array: &dyn Array) -> Result<&Int16Array> {
+    Ok(downcast_value!(array, Int16Array))
+}
+
+// Downcast ArrayRef to UInt16Array
+pub fn as_uint16_array(array: &dyn Array) -> Result<&UInt16Array> {
+    Ok(downcast_value!(array, UInt16Array))
+}
+
 // Downcast ArrayRef to Int32Array
 pub fn as_int32_array(array: &dyn Array) -> Result<&Int32Array> {
     Ok(downcast_value!(array, Int32Array))
 }
 
+// Downcast ArrayRef to UInt32Array
+pub fn as_uint32_array(array: &dyn Array) -> Result<&UInt32Array> {
+    Ok(downcast_value!(array, UInt32Array))
+}
+
 // Downcast ArrayRef to Int64Array
 pub fn as_int64_array(array: &dyn Array) -> Result<&Int64Array> {
     Ok(downcast_value!(array, Int64Array))
 }
 
+// Downcast ArrayRef to UInt64Array
+pub fn as_uint64_array(array: &dyn Array) -> Result<&UInt64Array> {
+    Ok(downcast_value!(array, UInt64Array))
+}
+
 // Downcast ArrayRef to Decimal128Array
 pub fn as_decimal128_array(array: &dyn Array) -> Result<&Decimal128Array> {
     Ok(downcast_value!(array, Decimal128Array))
@@ -73,6 +106,11 @@ pub fn as_decimal256_array(array: &dyn Array) -> 
Result<&Decimal256Array> {
     Ok(downcast_value!(array, Decimal256Array))
 }
 
+// Downcast ArrayRef to Float16Array
+pub fn as_float16_array(array: &dyn Array) -> Result<&Float16Array> {
+    Ok(downcast_value!(array, Float16Array))
+}
+
 // Downcast ArrayRef to Float32Array
 pub fn as_float32_array(array: &dyn Array) -> Result<&Float32Array> {
     Ok(downcast_value!(array, Float32Array))
@@ -93,14 +131,9 @@ pub fn as_string_view_array(array: &dyn Array) -> 
Result<&StringViewArray> {
     Ok(downcast_value!(array, StringViewArray))
 }
 
-// Downcast ArrayRef to UInt32Array
-pub fn as_uint32_array(array: &dyn Array) -> Result<&UInt32Array> {
-    Ok(downcast_value!(array, UInt32Array))
-}
-
-// Downcast ArrayRef to UInt64Array
-pub fn as_uint64_array(array: &dyn Array) -> Result<&UInt64Array> {
-    Ok(downcast_value!(array, UInt64Array))
+// Downcast ArrayRef to LargeStringArray
+pub fn as_large_string_array(array: &dyn Array) -> Result<&LargeStringArray> {
+    Ok(downcast_value!(array, LargeStringArray))
 }
 
 // Downcast ArrayRef to BooleanArray
@@ -232,6 +265,11 @@ pub fn as_binary_view_array(array: &dyn Array) -> 
Result<&BinaryViewArray> {
     Ok(downcast_value!(array, BinaryViewArray))
 }
 
+// Downcast ArrayRef to LargeBinaryArray
+pub fn as_large_binary_array(array: &dyn Array) -> Result<&LargeBinaryArray> {
+    Ok(downcast_value!(array, LargeBinaryArray))
+}
+
 // Downcast ArrayRef to FixedSizeListArray
 pub fn as_fixed_size_list_array(array: &dyn Array) -> 
Result<&FixedSizeListArray> {
     Ok(downcast_value!(array, FixedSizeListArray))
@@ -242,11 +280,6 @@ pub fn as_fixed_size_binary_array(array: &dyn Array) -> 
Result<&FixedSizeBinaryA
     Ok(downcast_value!(array, FixedSizeBinaryArray))
 }
 
-// Downcast ArrayRef to Date64Array
-pub fn as_date64_array(array: &dyn Array) -> Result<&Date64Array> {
-    Ok(downcast_value!(array, Date64Array))
-}
-
 // Downcast ArrayRef to GenericBinaryArray
 pub fn as_generic_string_array<T: OffsetSizeTrait>(
     array: &dyn Array,


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to