Skip to content

Commit dae1ccf

Browse files
committed
Minor: Remove redundant implementation of StringArrayType
Signed-off-by: Tai Le Manh <manhtai.lmt@gmail.com>
1 parent 487b952 commit dae1ccf

File tree

11 files changed

+16
-111
lines changed

11 files changed

+16
-111
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: 2 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -18,102 +18,12 @@
1818
use std::mem::size_of;
1919

2020
use arrow::array::{
21-
make_view, Array, ArrayAccessor, ArrayDataBuilder, ArrayIter, ByteView,
22-
GenericStringArray, LargeStringArray, OffsetSizeTrait, StringArray, StringViewArray,
23-
StringViewBuilder,
21+
make_view, Array, ArrayAccessor, ArrayDataBuilder, ByteView, LargeStringArray,
22+
StringArray, StringViewArray, StringViewBuilder,
2423
};
2524
use arrow::datatypes::DataType;
2625
use arrow_buffer::{MutableBuffer, NullBuffer, NullBufferBuilder};
2726

28-
/// 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
87-
pub trait StringArrayType<'a>: ArrayAccessor<Item = &'a str> + Sized {
88-
/// Return an [`ArrayIter`] over the values of the array.
89-
///
90-
/// This iterator iterates returns `Option<&str>` for each item in the array.
91-
fn iter(&self) -> ArrayIter<Self>;
92-
93-
/// Check if the array is ASCII only.
94-
fn is_ascii(&self) -> bool;
95-
}
96-
97-
impl<'a, T: OffsetSizeTrait> StringArrayType<'a> for &'a GenericStringArray<T> {
98-
fn iter(&self) -> ArrayIter<Self> {
99-
GenericStringArray::<T>::iter(self)
100-
}
101-
102-
fn is_ascii(&self) -> bool {
103-
GenericStringArray::<T>::is_ascii(self)
104-
}
105-
}
106-
107-
impl<'a> StringArrayType<'a> for &'a StringViewArray {
108-
fn iter(&self) -> ArrayIter<Self> {
109-
StringViewArray::iter(self)
110-
}
111-
112-
fn is_ascii(&self) -> bool {
113-
StringViewArray::is_ascii(self)
114-
}
115-
}
116-
11727
/// Optimized version of the StringBuilder in Arrow that:
11828
/// 1. Precalculating the expected length of the result, avoiding reallocations.
11929
/// 2. Avoids creating / incrementally creating a `NullBufferBuilder`

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)