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]