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

alamb 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 f31ca5b927 Minor: Remove redundant implementation of `StringArrayType` 
(#14023)
f31ca5b927 is described below

commit f31ca5b927c040ce03f6a3c8c8dc3d7f4ef5be34
Author: Tai Le Manh <[email protected]>
AuthorDate: Tue Jan 7 18:30:10 2025 +0700

    Minor: Remove redundant implementation of `StringArrayType` (#14023)
    
    * Minor: Remove redundant implementation of StringArrayType
    
    Signed-off-by: Tai Le Manh <[email protected]>
    
    * Deprecate rather than remove StringArrayType
    
    ---------
    
    Signed-off-by: Tai Le Manh <[email protected]>
    Co-authored-by: Andrew Lamb <[email protected]>
---
 datafusion/functions-nested/src/string.rs          |  3 +-
 datafusion/functions/src/datetime/common.rs        |  3 +-
 datafusion/functions/src/regex/regexpcount.rs      |  3 +-
 datafusion/functions/src/string/repeat.rs          |  3 +-
 datafusion/functions/src/string/split_part.rs      |  4 +-
 datafusion/functions/src/strings.rs                | 61 ++--------------------
 .../functions/src/unicode/character_length.rs      |  2 +-
 datafusion/functions/src/unicode/lpad.rs           |  3 +-
 datafusion/functions/src/unicode/rpad.rs           |  3 +-
 datafusion/functions/src/unicode/strpos.rs         |  5 +-
 datafusion/functions/src/unicode/substr.rs         |  4 +-
 11 files changed, 17 insertions(+), 77 deletions(-)

diff --git a/datafusion/functions-nested/src/string.rs 
b/datafusion/functions-nested/src/string.rs
index 7fc5e800e2..bbe1dc2a01 100644
--- a/datafusion/functions-nested/src/string.rs
+++ b/datafusion/functions-nested/src/string.rs
@@ -36,7 +36,7 @@ use crate::utils::make_scalar_function;
 use arrow::compute::cast;
 use arrow_array::builder::{ArrayBuilder, LargeStringBuilder, 
StringViewBuilder};
 use arrow_array::cast::AsArray;
-use arrow_array::{GenericStringArray, StringViewArray};
+use arrow_array::{GenericStringArray, StringArrayType, StringViewArray};
 use arrow_schema::DataType::{
     Dictionary, FixedSizeList, LargeList, LargeUtf8, List, Null, Utf8, 
Utf8View,
 };
@@ -45,7 +45,6 @@ use datafusion_common::exec_err;
 use datafusion_expr::{
     ColumnarValue, Documentation, ScalarUDFImpl, Signature, Volatility,
 };
-use datafusion_functions::strings::StringArrayType;
 use datafusion_functions::{downcast_arg, downcast_named_arg};
 use datafusion_macros::user_doc;
 use std::sync::Arc;
diff --git a/datafusion/functions/src/datetime/common.rs 
b/datafusion/functions/src/datetime/common.rs
index 6e3106a5bc..c674ae09ec 100644
--- a/datafusion/functions/src/datetime/common.rs
+++ b/datafusion/functions/src/datetime/common.rs
@@ -19,7 +19,7 @@ use std::sync::Arc;
 
 use arrow::array::{
     Array, ArrowPrimitiveType, AsArray, GenericStringArray, PrimitiveArray,
-    StringViewArray,
+    StringArrayType, StringViewArray,
 };
 use arrow::compute::kernels::cast_utils::string_to_timestamp_nanos;
 use arrow::datatypes::DataType;
@@ -27,7 +27,6 @@ use chrono::format::{parse, Parsed, StrftimeItems};
 use chrono::LocalResult::Single;
 use chrono::{DateTime, TimeZone, Utc};
 
-use crate::strings::StringArrayType;
 use datafusion_common::cast::as_generic_string_array;
 use datafusion_common::{
     exec_err, unwrap_or_internal_err, DataFusionError, Result, ScalarType, 
ScalarValue,
diff --git a/datafusion/functions/src/regex/regexpcount.rs 
b/datafusion/functions/src/regex/regexpcount.rs
index 8f06c75b2f..fdeea30908 100644
--- a/datafusion/functions/src/regex/regexpcount.rs
+++ b/datafusion/functions/src/regex/regexpcount.rs
@@ -15,8 +15,7 @@
 // specific language governing permissions and limitations
 // under the License.
 
-use crate::strings::StringArrayType;
-use arrow::array::{Array, ArrayRef, AsArray, Datum, Int64Array};
+use arrow::array::{Array, ArrayRef, AsArray, Datum, Int64Array, 
StringArrayType};
 use arrow::datatypes::{DataType, Int64Type};
 use arrow::datatypes::{
     DataType::Int64, DataType::LargeUtf8, DataType::Utf8, DataType::Utf8View,
diff --git a/datafusion/functions/src/string/repeat.rs 
b/datafusion/functions/src/string/repeat.rs
index d5ebf902c1..eea9af2ba7 100644
--- a/datafusion/functions/src/string/repeat.rs
+++ b/datafusion/functions/src/string/repeat.rs
@@ -18,11 +18,10 @@
 use std::any::Any;
 use std::sync::Arc;
 
-use crate::strings::StringArrayType;
 use crate::utils::{make_scalar_function, utf8_to_str_type};
 use arrow::array::{
     ArrayRef, AsArray, GenericStringArray, GenericStringBuilder, Int64Array,
-    OffsetSizeTrait, StringViewArray,
+    OffsetSizeTrait, StringArrayType, StringViewArray,
 };
 use arrow::datatypes::DataType;
 use arrow::datatypes::DataType::{LargeUtf8, Utf8, Utf8View};
diff --git a/datafusion/functions/src/string/split_part.rs 
b/datafusion/functions/src/string/split_part.rs
index 9a6ee72669..a597e1be5d 100644
--- a/datafusion/functions/src/string/split_part.rs
+++ b/datafusion/functions/src/string/split_part.rs
@@ -15,10 +15,10 @@
 // specific language governing permissions and limitations
 // under the License.
 
-use crate::strings::StringArrayType;
 use crate::utils::utf8_to_str_type;
 use arrow::array::{
-    ArrayRef, GenericStringArray, Int64Array, OffsetSizeTrait, StringViewArray,
+    ArrayRef, GenericStringArray, Int64Array, OffsetSizeTrait, StringArrayType,
+    StringViewArray,
 };
 use arrow::array::{AsArray, GenericStringBuilder};
 use arrow::datatypes::DataType;
diff --git a/datafusion/functions/src/strings.rs 
b/datafusion/functions/src/strings.rs
index f18573db82..bb991c28fe 100644
--- a/datafusion/functions/src/strings.rs
+++ b/datafusion/functions/src/strings.rs
@@ -26,64 +26,7 @@ use arrow::datatypes::DataType;
 use arrow_buffer::{MutableBuffer, NullBuffer, NullBufferBuilder};
 
 /// Abstracts iteration over different types of string arrays.
-///
-/// The [`StringArrayType`] trait helps write generic code for string 
functions that can work with
-/// different types of string arrays.
-///
-/// Currently three types are supported:
-/// - [`StringArray`]
-/// - [`LargeStringArray`]
-/// - [`StringViewArray`]
-///
-/// It is inspired / copied from [arrow-rs].
-///
-/// [arrow-rs]: 
https://github.com/apache/arrow-rs/blob/bf0ea9129e617e4a3cf915a900b747cc5485315f/arrow-string/src/like.rs#L151-L157
-///
-/// # Examples
-/// Generic function that works for [`StringArray`], [`LargeStringArray`]
-/// and [`StringViewArray`]:
-/// ```
-/// # use arrow::array::{StringArray, LargeStringArray, StringViewArray};
-/// # use datafusion_functions::strings::StringArrayType;
-///
-/// /// Combines string values for any StringArrayType type. It can be invoked 
on
-/// /// and combination of `StringArray`, `LargeStringArray` or 
`StringViewArray`
-/// fn combine_values<'a, S1, S2>(array1: S1, array2: S2) -> Vec<String>
-///   where S1: StringArrayType<'a>, S2: StringArrayType<'a>
-/// {
-///   // iterate over the elements of the 2 arrays in parallel
-///   array1
-///   .iter()
-///   .zip(array2.iter())
-///   .map(|(s1, s2)| {
-///      // if both values are non null, combine them
-///      if let (Some(s1), Some(s2)) = (s1, s2) {
-///        format!("{s1}{s2}")
-///      } else {
-///        "None".to_string()
-///     }
-///    })
-///   .collect()
-/// }
-///
-/// let string_array = StringArray::from(vec!["foo", "bar"]);
-/// let large_string_array = LargeStringArray::from(vec!["foo2", "bar2"]);
-/// let string_view_array = StringViewArray::from(vec!["foo3", "bar3"]);
-///
-/// // can invoke this function a string array and large string array
-/// assert_eq!(
-///   combine_values(&string_array, &large_string_array),
-///   vec![String::from("foofoo2"), String::from("barbar2")]
-/// );
-///
-/// // Can call the same function with string array and string view array
-/// assert_eq!(
-///   combine_values(&string_array, &string_view_array),
-///   vec![String::from("foofoo3"), String::from("barbar3")]
-/// );
-/// ```
-///
-/// [`LargeStringArray`]: arrow::array::LargeStringArray
+#[deprecated(since = "45.0.0", note = "Use arrow::array::StringArrayType 
instead")]
 pub trait StringArrayType<'a>: ArrayAccessor<Item = &'a str> + Sized {
     /// Return an [`ArrayIter`]  over the values of the array.
     ///
@@ -94,6 +37,7 @@ pub trait StringArrayType<'a>: ArrayAccessor<Item = &'a str> 
+ Sized {
     fn is_ascii(&self) -> bool;
 }
 
+#[allow(deprecated)]
 impl<'a, T: OffsetSizeTrait> StringArrayType<'a> for &'a GenericStringArray<T> 
{
     fn iter(&self) -> ArrayIter<Self> {
         GenericStringArray::<T>::iter(self)
@@ -104,6 +48,7 @@ impl<'a, T: OffsetSizeTrait> StringArrayType<'a> for &'a 
GenericStringArray<T> {
     }
 }
 
+#[allow(deprecated)]
 impl<'a> StringArrayType<'a> for &'a StringViewArray {
     fn iter(&self) -> ArrayIter<Self> {
         StringViewArray::iter(self)
diff --git a/datafusion/functions/src/unicode/character_length.rs 
b/datafusion/functions/src/unicode/character_length.rs
index ee436276fb..6ef0871f36 100644
--- a/datafusion/functions/src/unicode/character_length.rs
+++ b/datafusion/functions/src/unicode/character_length.rs
@@ -15,10 +15,10 @@
 // specific language governing permissions and limitations
 // under the License.
 
-use crate::strings::StringArrayType;
 use crate::utils::{make_scalar_function, utf8_to_int_type};
 use arrow::array::{
     Array, ArrayRef, ArrowPrimitiveType, AsArray, OffsetSizeTrait, 
PrimitiveBuilder,
+    StringArrayType,
 };
 use arrow::datatypes::{ArrowNativeType, DataType, Int32Type, Int64Type};
 use datafusion_common::Result;
diff --git a/datafusion/functions/src/unicode/lpad.rs 
b/datafusion/functions/src/unicode/lpad.rs
index 0b41071cad..216037e906 100644
--- a/datafusion/functions/src/unicode/lpad.rs
+++ b/datafusion/functions/src/unicode/lpad.rs
@@ -21,13 +21,12 @@ use std::sync::Arc;
 
 use arrow::array::{
     Array, ArrayRef, AsArray, GenericStringArray, GenericStringBuilder, 
Int64Array,
-    OffsetSizeTrait, StringViewArray,
+    OffsetSizeTrait, StringArrayType, StringViewArray,
 };
 use arrow::datatypes::DataType;
 use unicode_segmentation::UnicodeSegmentation;
 use DataType::{LargeUtf8, Utf8, Utf8View};
 
-use crate::strings::StringArrayType;
 use crate::utils::{make_scalar_function, utf8_to_str_type};
 use datafusion_common::cast::as_int64_array;
 use datafusion_common::{exec_err, Result};
diff --git a/datafusion/functions/src/unicode/rpad.rs 
b/datafusion/functions/src/unicode/rpad.rs
index 890230ac43..72bb112e6f 100644
--- a/datafusion/functions/src/unicode/rpad.rs
+++ b/datafusion/functions/src/unicode/rpad.rs
@@ -15,11 +15,10 @@
 // specific language governing permissions and limitations
 // under the License.
 
-use crate::strings::StringArrayType;
 use crate::utils::{make_scalar_function, utf8_to_str_type};
 use arrow::array::{
     ArrayRef, AsArray, GenericStringArray, GenericStringBuilder, Int64Array,
-    OffsetSizeTrait, StringViewArray,
+    OffsetSizeTrait, StringArrayType, StringViewArray,
 };
 use arrow::datatypes::DataType;
 use datafusion_common::cast::as_int64_array;
diff --git a/datafusion/functions/src/unicode/strpos.rs 
b/datafusion/functions/src/unicode/strpos.rs
index b4bfc2d876..19b82ccc23 100644
--- a/datafusion/functions/src/unicode/strpos.rs
+++ b/datafusion/functions/src/unicode/strpos.rs
@@ -18,9 +18,10 @@
 use std::any::Any;
 use std::sync::Arc;
 
-use crate::strings::StringArrayType;
 use crate::utils::{make_scalar_function, utf8_to_int_type};
-use arrow::array::{ArrayRef, ArrowPrimitiveType, AsArray, PrimitiveArray};
+use arrow::array::{
+    ArrayRef, ArrowPrimitiveType, AsArray, PrimitiveArray, StringArrayType,
+};
 use arrow::datatypes::{ArrowNativeType, DataType, Int32Type, Int64Type};
 use datafusion_common::{exec_err, Result};
 use datafusion_expr::{
diff --git a/datafusion/functions/src/unicode/substr.rs 
b/datafusion/functions/src/unicode/substr.rs
index df6a50ef17..00737a2fe8 100644
--- a/datafusion/functions/src/unicode/substr.rs
+++ b/datafusion/functions/src/unicode/substr.rs
@@ -18,11 +18,11 @@
 use std::any::Any;
 use std::sync::Arc;
 
-use crate::strings::{make_and_append_view, StringArrayType};
+use crate::strings::make_and_append_view;
 use crate::utils::{make_scalar_function, utf8_to_str_type};
 use arrow::array::{
     Array, ArrayIter, ArrayRef, AsArray, GenericStringBuilder, Int64Array,
-    OffsetSizeTrait, StringViewArray,
+    OffsetSizeTrait, StringArrayType, StringViewArray,
 };
 use arrow::datatypes::DataType;
 use arrow_buffer::{NullBufferBuilder, ScalarBuffer};


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

Reply via email to