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]