Skip to content

Commit f31ca5b

Browse files
tlm365alamb
andauthored
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]>
1 parent 4e877a0 commit f31ca5b

File tree

11 files changed

+17
-77
lines changed

11 files changed

+17
-77
lines changed

datafusion/functions-nested/src/string.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ use crate::utils::make_scalar_function;
3636
use arrow::compute::cast;
3737
use arrow_array::builder::{ArrayBuilder, LargeStringBuilder, StringViewBuilder};
3838
use arrow_array::cast::AsArray;
39-
use arrow_array::{GenericStringArray, StringViewArray};
39+
use arrow_array::{GenericStringArray, StringArrayType, StringViewArray};
4040
use arrow_schema::DataType::{
4141
Dictionary, FixedSizeList, LargeList, LargeUtf8, List, Null, Utf8, Utf8View,
4242
};
@@ -45,7 +45,6 @@ use datafusion_common::exec_err;
4545
use datafusion_expr::{
4646
ColumnarValue, Documentation, ScalarUDFImpl, Signature, Volatility,
4747
};
48-
use datafusion_functions::strings::StringArrayType;
4948
use datafusion_functions::{downcast_arg, downcast_named_arg};
5049
use datafusion_macros::user_doc;
5150
use std::sync::Arc;

datafusion/functions/src/datetime/common.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,14 @@ use std::sync::Arc;
1919

2020
use arrow::array::{
2121
Array, ArrowPrimitiveType, AsArray, GenericStringArray, PrimitiveArray,
22-
StringViewArray,
22+
StringArrayType, StringViewArray,
2323
};
2424
use arrow::compute::kernels::cast_utils::string_to_timestamp_nanos;
2525
use arrow::datatypes::DataType;
2626
use chrono::format::{parse, Parsed, StrftimeItems};
2727
use chrono::LocalResult::Single;
2828
use chrono::{DateTime, TimeZone, Utc};
2929

30-
use crate::strings::StringArrayType;
3130
use datafusion_common::cast::as_generic_string_array;
3231
use datafusion_common::{
3332
exec_err, unwrap_or_internal_err, DataFusionError, Result, ScalarType, ScalarValue,

datafusion/functions/src/regex/regexpcount.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@
1515
// specific language governing permissions and limitations
1616
// under the License.
1717

18-
use crate::strings::StringArrayType;
19-
use arrow::array::{Array, ArrayRef, AsArray, Datum, Int64Array};
18+
use arrow::array::{Array, ArrayRef, AsArray, Datum, Int64Array, StringArrayType};
2019
use arrow::datatypes::{DataType, Int64Type};
2120
use arrow::datatypes::{
2221
DataType::Int64, DataType::LargeUtf8, DataType::Utf8, DataType::Utf8View,

datafusion/functions/src/string/repeat.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,10 @@
1818
use std::any::Any;
1919
use std::sync::Arc;
2020

21-
use crate::strings::StringArrayType;
2221
use crate::utils::{make_scalar_function, utf8_to_str_type};
2322
use arrow::array::{
2423
ArrayRef, AsArray, GenericStringArray, GenericStringBuilder, Int64Array,
25-
OffsetSizeTrait, StringViewArray,
24+
OffsetSizeTrait, StringArrayType, StringViewArray,
2625
};
2726
use arrow::datatypes::DataType;
2827
use arrow::datatypes::DataType::{LargeUtf8, Utf8, Utf8View};

datafusion/functions/src/string/split_part.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@
1515
// specific language governing permissions and limitations
1616
// under the License.
1717

18-
use crate::strings::StringArrayType;
1918
use crate::utils::utf8_to_str_type;
2019
use arrow::array::{
21-
ArrayRef, GenericStringArray, Int64Array, OffsetSizeTrait, StringViewArray,
20+
ArrayRef, GenericStringArray, Int64Array, OffsetSizeTrait, StringArrayType,
21+
StringViewArray,
2222
};
2323
use arrow::array::{AsArray, GenericStringBuilder};
2424
use arrow::datatypes::DataType;

datafusion/functions/src/strings.rs

Lines changed: 3 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -26,64 +26,7 @@ use arrow::datatypes::DataType;
2626
use arrow_buffer::{MutableBuffer, NullBuffer, NullBufferBuilder};
2727

2828
/// Abstracts iteration over different types of string arrays.
29-
///
30-
/// The [`StringArrayType`] trait helps write generic code for string functions that can work with
31-
/// different types of string arrays.
32-
///
33-
/// Currently three types are supported:
34-
/// - [`StringArray`]
35-
/// - [`LargeStringArray`]
36-
/// - [`StringViewArray`]
37-
///
38-
/// It is inspired / copied from [arrow-rs].
39-
///
40-
/// [arrow-rs]: https://github.com/apache/arrow-rs/blob/bf0ea9129e617e4a3cf915a900b747cc5485315f/arrow-string/src/like.rs#L151-L157
41-
///
42-
/// # Examples
43-
/// Generic function that works for [`StringArray`], [`LargeStringArray`]
44-
/// and [`StringViewArray`]:
45-
/// ```
46-
/// # use arrow::array::{StringArray, LargeStringArray, StringViewArray};
47-
/// # use datafusion_functions::strings::StringArrayType;
48-
///
49-
/// /// Combines string values for any StringArrayType type. It can be invoked on
50-
/// /// and combination of `StringArray`, `LargeStringArray` or `StringViewArray`
51-
/// fn combine_values<'a, S1, S2>(array1: S1, array2: S2) -> Vec<String>
52-
/// where S1: StringArrayType<'a>, S2: StringArrayType<'a>
53-
/// {
54-
/// // iterate over the elements of the 2 arrays in parallel
55-
/// array1
56-
/// .iter()
57-
/// .zip(array2.iter())
58-
/// .map(|(s1, s2)| {
59-
/// // if both values are non null, combine them
60-
/// if let (Some(s1), Some(s2)) = (s1, s2) {
61-
/// format!("{s1}{s2}")
62-
/// } else {
63-
/// "None".to_string()
64-
/// }
65-
/// })
66-
/// .collect()
67-
/// }
68-
///
69-
/// let string_array = StringArray::from(vec!["foo", "bar"]);
70-
/// let large_string_array = LargeStringArray::from(vec!["foo2", "bar2"]);
71-
/// let string_view_array = StringViewArray::from(vec!["foo3", "bar3"]);
72-
///
73-
/// // can invoke this function a string array and large string array
74-
/// assert_eq!(
75-
/// combine_values(&string_array, &large_string_array),
76-
/// vec![String::from("foofoo2"), String::from("barbar2")]
77-
/// );
78-
///
79-
/// // Can call the same function with string array and string view array
80-
/// assert_eq!(
81-
/// combine_values(&string_array, &string_view_array),
82-
/// vec![String::from("foofoo3"), String::from("barbar3")]
83-
/// );
84-
/// ```
85-
///
86-
/// [`LargeStringArray`]: arrow::array::LargeStringArray
29+
#[deprecated(since = "45.0.0", note = "Use arrow::array::StringArrayType instead")]
8730
pub trait StringArrayType<'a>: ArrayAccessor<Item = &'a str> + Sized {
8831
/// Return an [`ArrayIter`] over the values of the array.
8932
///
@@ -94,6 +37,7 @@ pub trait StringArrayType<'a>: ArrayAccessor<Item = &'a str> + Sized {
9437
fn is_ascii(&self) -> bool;
9538
}
9639

40+
#[allow(deprecated)]
9741
impl<'a, T: OffsetSizeTrait> StringArrayType<'a> for &'a GenericStringArray<T> {
9842
fn iter(&self) -> ArrayIter<Self> {
9943
GenericStringArray::<T>::iter(self)
@@ -104,6 +48,7 @@ impl<'a, T: OffsetSizeTrait> StringArrayType<'a> for &'a GenericStringArray<T> {
10448
}
10549
}
10650

51+
#[allow(deprecated)]
10752
impl<'a> StringArrayType<'a> for &'a StringViewArray {
10853
fn iter(&self) -> ArrayIter<Self> {
10954
StringViewArray::iter(self)

datafusion/functions/src/unicode/character_length.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@
1515
// specific language governing permissions and limitations
1616
// under the License.
1717

18-
use crate::strings::StringArrayType;
1918
use crate::utils::{make_scalar_function, utf8_to_int_type};
2019
use arrow::array::{
2120
Array, ArrayRef, ArrowPrimitiveType, AsArray, OffsetSizeTrait, PrimitiveBuilder,
21+
StringArrayType,
2222
};
2323
use arrow::datatypes::{ArrowNativeType, DataType, Int32Type, Int64Type};
2424
use datafusion_common::Result;

datafusion/functions/src/unicode/lpad.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,12 @@ use std::sync::Arc;
2121

2222
use arrow::array::{
2323
Array, ArrayRef, AsArray, GenericStringArray, GenericStringBuilder, Int64Array,
24-
OffsetSizeTrait, StringViewArray,
24+
OffsetSizeTrait, StringArrayType, StringViewArray,
2525
};
2626
use arrow::datatypes::DataType;
2727
use unicode_segmentation::UnicodeSegmentation;
2828
use DataType::{LargeUtf8, Utf8, Utf8View};
2929

30-
use crate::strings::StringArrayType;
3130
use crate::utils::{make_scalar_function, utf8_to_str_type};
3231
use datafusion_common::cast::as_int64_array;
3332
use datafusion_common::{exec_err, Result};

datafusion/functions/src/unicode/rpad.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,10 @@
1515
// specific language governing permissions and limitations
1616
// under the License.
1717

18-
use crate::strings::StringArrayType;
1918
use crate::utils::{make_scalar_function, utf8_to_str_type};
2019
use arrow::array::{
2120
ArrayRef, AsArray, GenericStringArray, GenericStringBuilder, Int64Array,
22-
OffsetSizeTrait, StringViewArray,
21+
OffsetSizeTrait, StringArrayType, StringViewArray,
2322
};
2423
use arrow::datatypes::DataType;
2524
use datafusion_common::cast::as_int64_array;

datafusion/functions/src/unicode/strpos.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,10 @@
1818
use std::any::Any;
1919
use std::sync::Arc;
2020

21-
use crate::strings::StringArrayType;
2221
use crate::utils::{make_scalar_function, utf8_to_int_type};
23-
use arrow::array::{ArrayRef, ArrowPrimitiveType, AsArray, PrimitiveArray};
22+
use arrow::array::{
23+
ArrayRef, ArrowPrimitiveType, AsArray, PrimitiveArray, StringArrayType,
24+
};
2425
use arrow::datatypes::{ArrowNativeType, DataType, Int32Type, Int64Type};
2526
use datafusion_common::{exec_err, Result};
2627
use datafusion_expr::{

0 commit comments

Comments
 (0)