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/arrow-rs.git
The following commit(s) were added to refs/heads/main by this push:
new e45354a413 Remove deprecated legacy `like` kernels in `arrow-string`
(#9674)
e45354a413 is described below
commit e45354a4137ce92380953dcc23ffbf909cfa3539
Author: Adam Gutglick <[email protected]>
AuthorDate: Thu May 7 18:56:13 2026 +0100
Remove deprecated legacy `like` kernels in `arrow-string` (#9674)
# Which issue does this PR close?
- Closes #9675
# Rationale for this change
The legacy kernels have been deprecated for 2 years and hidden from
docs, and its just more code to build.
# What changes are included in this PR?
1. Removing long deprecated legacy like kernels
2. Keeps all tests, just folded them into the existing pattern. This
also increases the effective coverage - testing scalar comparison both
for Utf8 scalars and Dict scalars
# Are these changes tested?
No functional changes, but refactors existing tests
# Are there any user-facing changes?
Only for users using long hidden and deprecated functions, but I this
isn't a meaningfully public API. The functionality is also still
available with very minor changes.
Co-authored-by: Andrew Lamb <[email protected]>
---
Cargo.lock | 52 ++--
arrow-string/src/like.rs | 752 +++++------------------------------------------
2 files changed, 98 insertions(+), 706 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
index a3465ba9e4..11979eb583 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -170,7 +170,7 @@ dependencies = [
[[package]]
name = "arrow"
-version = "58.2.0"
+version = "58.3.0"
dependencies = [
"arrow-arith",
"arrow-array",
@@ -197,7 +197,7 @@ dependencies = [
[[package]]
name = "arrow-arith"
-version = "58.2.0"
+version = "58.3.0"
dependencies = [
"arrow-array",
"arrow-buffer",
@@ -209,7 +209,7 @@ dependencies = [
[[package]]
name = "arrow-array"
-version = "58.2.0"
+version = "58.3.0"
dependencies = [
"ahash",
"arrow-buffer",
@@ -229,7 +229,7 @@ dependencies = [
[[package]]
name = "arrow-avro"
-version = "58.2.0"
+version = "58.3.0"
dependencies = [
"apache-avro",
"arrow",
@@ -266,7 +266,7 @@ dependencies = [
[[package]]
name = "arrow-buffer"
-version = "58.2.0"
+version = "58.3.0"
dependencies = [
"bytes",
"criterion",
@@ -278,7 +278,7 @@ dependencies = [
[[package]]
name = "arrow-cast"
-version = "58.2.0"
+version = "58.3.0"
dependencies = [
"arrow-array",
"arrow-buffer",
@@ -301,7 +301,7 @@ dependencies = [
[[package]]
name = "arrow-csv"
-version = "58.2.0"
+version = "58.3.0"
dependencies = [
"arrow-array",
"arrow-buffer",
@@ -319,7 +319,7 @@ dependencies = [
[[package]]
name = "arrow-data"
-version = "58.2.0"
+version = "58.3.0"
dependencies = [
"arrow-buffer",
"arrow-schema",
@@ -330,7 +330,7 @@ dependencies = [
[[package]]
name = "arrow-flight"
-version = "58.2.0"
+version = "58.3.0"
dependencies = [
"anyhow",
"arrow-arith",
@@ -370,7 +370,7 @@ dependencies = [
[[package]]
name = "arrow-integration-test"
-version = "58.2.0"
+version = "58.3.0"
dependencies = [
"arrow",
"arrow-buffer",
@@ -383,7 +383,7 @@ dependencies = [
[[package]]
name = "arrow-integration-testing"
-version = "58.2.0"
+version = "58.3.0"
dependencies = [
"arrow",
"arrow-buffer",
@@ -402,7 +402,7 @@ dependencies = [
[[package]]
name = "arrow-ipc"
-version = "58.2.0"
+version = "58.3.0"
dependencies = [
"arrow-array",
"arrow-buffer",
@@ -421,7 +421,7 @@ dependencies = [
[[package]]
name = "arrow-json"
-version = "58.2.0"
+version = "58.3.0"
dependencies = [
"arbitrary",
"arrow-array",
@@ -452,7 +452,7 @@ dependencies = [
[[package]]
name = "arrow-ord"
-version = "58.2.0"
+version = "58.3.0"
dependencies = [
"arrow-array",
"arrow-buffer",
@@ -465,7 +465,7 @@ dependencies = [
[[package]]
name = "arrow-pyarrow"
-version = "58.2.0"
+version = "58.3.0"
dependencies = [
"arrow-array",
"arrow-data",
@@ -475,7 +475,7 @@ dependencies = [
[[package]]
name = "arrow-row"
-version = "58.2.0"
+version = "58.3.0"
dependencies = [
"arrow-array",
"arrow-buffer",
@@ -490,7 +490,7 @@ dependencies = [
[[package]]
name = "arrow-schema"
-version = "58.2.0"
+version = "58.3.0"
dependencies = [
"bitflags",
"criterion",
@@ -503,7 +503,7 @@ dependencies = [
[[package]]
name = "arrow-select"
-version = "58.2.0"
+version = "58.3.0"
dependencies = [
"ahash",
"arrow-array",
@@ -516,7 +516,7 @@ dependencies = [
[[package]]
name = "arrow-string"
-version = "58.2.0"
+version = "58.3.0"
dependencies = [
"arrow-array",
"arrow-buffer",
@@ -2327,7 +2327,7 @@ dependencies = [
[[package]]
name = "parquet"
-version = "58.2.0"
+version = "58.3.0"
dependencies = [
"ahash",
"arrow",
@@ -2378,7 +2378,7 @@ dependencies = [
[[package]]
name = "parquet-geospatial"
-version = "58.2.0"
+version = "58.3.0"
dependencies = [
"arrow-schema",
"geo-traits",
@@ -2390,7 +2390,7 @@ dependencies = [
[[package]]
name = "parquet-variant"
-version = "58.2.0"
+version = "58.3.0"
dependencies = [
"arrow",
"arrow-schema",
@@ -2407,7 +2407,7 @@ dependencies = [
[[package]]
name = "parquet-variant-compute"
-version = "58.2.0"
+version = "58.3.0"
dependencies = [
"arrow",
"arrow-schema",
@@ -2424,7 +2424,7 @@ dependencies = [
[[package]]
name = "parquet-variant-json"
-version = "58.2.0"
+version = "58.3.0"
dependencies = [
"arrow-schema",
"base64",
@@ -2436,7 +2436,7 @@ dependencies = [
[[package]]
name = "parquet_derive"
-version = "58.2.0"
+version = "58.3.0"
dependencies = [
"parquet",
"proc-macro2",
@@ -2446,7 +2446,7 @@ dependencies = [
[[package]]
name = "parquet_derive_test"
-version = "58.2.0"
+version = "58.3.0"
dependencies = [
"chrono",
"parquet",
diff --git a/arrow-string/src/like.rs b/arrow-string/src/like.rs
index 2ad7e1cfd9..e9077d4b09 100644
--- a/arrow-string/src/like.rs
+++ b/arrow-string/src/like.rs
@@ -28,8 +28,6 @@ use arrow_array::*;
use arrow_schema::*;
use arrow_select::take::take;
-use std::sync::Arc;
-
use crate::binary_like::binary_apply;
pub use arrow_array::StringArrayType;
@@ -433,118 +431,7 @@ fn binary_predicate<'a>(
.collect()
}
-// Deprecated kernels
-
-fn make_scalar(data_type: &DataType, scalar: &str) -> Result<ArrayRef,
ArrowError> {
- match data_type {
- DataType::Utf8 =>
Ok(Arc::new(StringArray::from_iter_values([scalar]))),
- DataType::LargeUtf8 =>
Ok(Arc::new(LargeStringArray::from_iter_values([scalar]))),
- DataType::Dictionary(_, v) => make_scalar(v.as_ref(), scalar),
- d => Err(ArrowError::InvalidArgumentError(format!(
- "Unsupported string scalar data type {d:?}",
- ))),
- }
-}
-
-macro_rules! legacy_kernels {
- ($fn_datum:ident, $fn_array:ident, $fn_scalar:ident, $fn_array_dyn:ident,
$fn_scalar_dyn:ident, $deprecation:expr) => {
- #[doc(hidden)]
- #[deprecated(note = $deprecation)]
- pub fn $fn_array<O: OffsetSizeTrait>(
- left: &GenericStringArray<O>,
- right: &GenericStringArray<O>,
- ) -> Result<BooleanArray, ArrowError> {
- $fn_datum(left, right)
- }
-
- #[doc(hidden)]
- #[deprecated(note = $deprecation)]
- pub fn $fn_scalar<O: OffsetSizeTrait>(
- left: &GenericStringArray<O>,
- right: &str,
- ) -> Result<BooleanArray, ArrowError> {
- let scalar = GenericStringArray::<O>::from_iter_values([right]);
- $fn_datum(left, &Scalar::new(&scalar))
- }
-
- #[doc(hidden)]
- #[deprecated(note = $deprecation)]
- pub fn $fn_array_dyn(
- left: &dyn Array,
- right: &dyn Array,
- ) -> Result<BooleanArray, ArrowError> {
- $fn_datum(&left, &right)
- }
-
- #[doc(hidden)]
- #[deprecated(note = $deprecation)]
- pub fn $fn_scalar_dyn(left: &dyn Array, right: &str) ->
Result<BooleanArray, ArrowError> {
- let scalar = make_scalar(left.data_type(), right)?;
- $fn_datum(&left, &Scalar::new(&scalar))
- }
- };
-}
-
-legacy_kernels!(
- like,
- like_utf8,
- like_utf8_scalar,
- like_dyn,
- like_utf8_scalar_dyn,
- "Use arrow_string::like::like"
-);
-legacy_kernels!(
- ilike,
- ilike_utf8,
- ilike_utf8_scalar,
- ilike_dyn,
- ilike_utf8_scalar_dyn,
- "Use arrow_string::like::ilike"
-);
-legacy_kernels!(
- nlike,
- nlike_utf8,
- nlike_utf8_scalar,
- nlike_dyn,
- nlike_utf8_scalar_dyn,
- "Use arrow_string::like::nlike"
-);
-legacy_kernels!(
- nilike,
- nilike_utf8,
- nilike_utf8_scalar,
- nilike_dyn,
- nilike_utf8_scalar_dyn,
- "Use arrow_string::like::nilike"
-);
-legacy_kernels!(
- contains,
- contains_utf8,
- contains_utf8_scalar,
- contains_dyn,
- contains_utf8_scalar_dyn,
- "Use arrow_string::like::contains"
-);
-legacy_kernels!(
- starts_with,
- starts_with_utf8,
- starts_with_utf8_scalar,
- starts_with_dyn,
- starts_with_utf8_scalar_dyn,
- "Use arrow_string::like::starts_with"
-);
-
-legacy_kernels!(
- ends_with,
- ends_with_utf8,
- ends_with_utf8_scalar,
- ends_with_dyn,
- ends_with_utf8_scalar_dyn,
- "Use arrow_string::like::ends_with"
-);
-
#[cfg(test)]
-#[allow(deprecated)]
mod tests {
use super::*;
use arrow_array::builder::BinaryDictionaryBuilder;
@@ -688,6 +575,10 @@ mod tests {
assert_eq!(res, expected);
let left: DictionaryArray<Int8Type> =
$left.into_iter().collect();
+ let right = StringArray::from_iter_values([$right]);
+ let res = $op(&left, &Scalar::new(&right)).unwrap();
+ assert_eq!(res, expected);
+
let right: DictionaryArray<Int8Type> =
[$right].into_iter().collect();
let res = $op(&left, &Scalar::new(&right)).unwrap();
assert_eq!(res, expected);
@@ -1429,601 +1320,102 @@ mod tests {
vec![true, false, true, true, true]
);
- test_utf8!(
- test_utf8_array_eq_ignore_ascii_case,
- vec!["arrow", "arrow", "arrow", "arrow", "parquet", "parquet"],
- vec!["arrow", "ARROW", "arro", "aRrOw", "arrow", "ARROW"],
- eq_ignore_ascii_case,
- vec![true, true, false, true, false, false]
- );
-
+ // Nullable, repeated values exercise dictionary remapping with a plain
UTF8 scalar RHS.
test_utf8_scalar!(
- test_utf8_array_eq_ignore_ascii_case_scalar,
- vec!["arrow", "aRrOW", "arro", "ARROW", "parquet", "PARQUET"],
- "arrow",
- eq_ignore_ascii_case,
- vec![true, true, false, true, false, false]
- );
-
- #[test]
- fn test_dict_like_kernels() {
- let data = vec![
+ test_utf8_scalar_nullable_like,
+ vec![
Some("Earth"),
Some("Fire"),
Some("Water"),
Some("Air"),
None,
Some("Air"),
- Some("bbbbb\nAir"),
- ];
-
- let dict_array: DictionaryArray<Int8Type> = data.into_iter().collect();
-
- assert_eq!(
- like_utf8_scalar_dyn(&dict_array, "Air").unwrap(),
- BooleanArray::from(vec![
- Some(false),
- Some(false),
- Some(false),
- Some(true),
- None,
- Some(true),
- Some(false),
- ]),
- );
-
- assert_eq!(
- like_utf8_scalar_dyn(&dict_array, "Air").unwrap(),
- BooleanArray::from(vec![
- Some(false),
- Some(false),
- Some(false),
- Some(true),
- None,
- Some(true),
- Some(false),
- ]),
- );
-
- assert_eq!(
- like_utf8_scalar_dyn(&dict_array, "Wa%").unwrap(),
- BooleanArray::from(vec![
- Some(false),
- Some(false),
- Some(true),
- Some(false),
- None,
- Some(false),
- Some(false),
- ]),
- );
-
- assert_eq!(
- like_utf8_scalar_dyn(&dict_array, "Wa%").unwrap(),
- BooleanArray::from(vec![
- Some(false),
- Some(false),
- Some(true),
- Some(false),
- None,
- Some(false),
- Some(false),
- ]),
- );
-
- assert_eq!(
- like_utf8_scalar_dyn(&dict_array, "%r").unwrap(),
- BooleanArray::from(vec![
- Some(false),
- Some(false),
- Some(true),
- Some(true),
- None,
- Some(true),
- Some(true),
- ]),
- );
-
- assert_eq!(
- like_utf8_scalar_dyn(&dict_array, "%r").unwrap(),
- BooleanArray::from(vec![
- Some(false),
- Some(false),
- Some(true),
- Some(true),
- None,
- Some(true),
- Some(true),
- ]),
- );
-
- assert_eq!(
- like_utf8_scalar_dyn(&dict_array, "%i%").unwrap(),
- BooleanArray::from(vec![
- Some(false),
- Some(true),
- Some(false),
- Some(true),
- None,
- Some(true),
- Some(true),
- ]),
- );
-
- assert_eq!(
- like_utf8_scalar_dyn(&dict_array, "%i%").unwrap(),
- BooleanArray::from(vec![
- Some(false),
- Some(true),
- Some(false),
- Some(true),
- None,
- Some(true),
- Some(true),
- ]),
- );
-
- assert_eq!(
- like_utf8_scalar_dyn(&dict_array, "%a%r%").unwrap(),
- BooleanArray::from(vec![
- Some(true),
- Some(false),
- Some(true),
- Some(false),
- None,
- Some(false),
- Some(false),
- ]),
- );
-
- assert_eq!(
- like_utf8_scalar_dyn(&dict_array, "%a%r%").unwrap(),
- BooleanArray::from(vec![
- Some(true),
- Some(false),
- Some(true),
- Some(false),
- None,
- Some(false),
- Some(false),
- ]),
- );
- }
+ Some("bbbbb\nAir")
+ ],
+ "Air",
+ like,
+ vec![
+ Some(false),
+ Some(false),
+ Some(false),
+ Some(true),
+ None,
+ Some(true),
+ Some(false)
+ ]
+ );
- #[test]
- fn test_dict_nlike_kernels() {
- let data = vec![
+ test_utf8_scalar!(
+ test_utf8_scalar_nullable_nlike,
+ vec![
Some("Earth"),
Some("Fire"),
Some("Water"),
Some("Air"),
None,
Some("Air"),
- Some("bbbbb\nAir"),
- ];
-
- let dict_array: DictionaryArray<Int8Type> = data.into_iter().collect();
-
- assert_eq!(
- nlike_utf8_scalar_dyn(&dict_array, "Air").unwrap(),
- BooleanArray::from(vec![
- Some(true),
- Some(true),
- Some(true),
- Some(false),
- None,
- Some(false),
- Some(true),
- ]),
- );
-
- assert_eq!(
- nlike_utf8_scalar_dyn(&dict_array, "Air").unwrap(),
- BooleanArray::from(vec![
- Some(true),
- Some(true),
- Some(true),
- Some(false),
- None,
- Some(false),
- Some(true),
- ]),
- );
-
- assert_eq!(
- nlike_utf8_scalar_dyn(&dict_array, "Wa%").unwrap(),
- BooleanArray::from(vec![
- Some(true),
- Some(true),
- Some(false),
- Some(true),
- None,
- Some(true),
- Some(true),
- ]),
- );
-
- assert_eq!(
- nlike_utf8_scalar_dyn(&dict_array, "Wa%").unwrap(),
- BooleanArray::from(vec![
- Some(true),
- Some(true),
- Some(false),
- Some(true),
- None,
- Some(true),
- Some(true),
- ]),
- );
-
- assert_eq!(
- nlike_utf8_scalar_dyn(&dict_array, "%r").unwrap(),
- BooleanArray::from(vec![
- Some(true),
- Some(true),
- Some(false),
- Some(false),
- None,
- Some(false),
- Some(false),
- ]),
- );
-
- assert_eq!(
- nlike_utf8_scalar_dyn(&dict_array, "%r").unwrap(),
- BooleanArray::from(vec![
- Some(true),
- Some(true),
- Some(false),
- Some(false),
- None,
- Some(false),
- Some(false),
- ]),
- );
-
- assert_eq!(
- nlike_utf8_scalar_dyn(&dict_array, "%i%").unwrap(),
- BooleanArray::from(vec![
- Some(true),
- Some(false),
- Some(true),
- Some(false),
- None,
- Some(false),
- Some(false),
- ]),
- );
-
- assert_eq!(
- nlike_utf8_scalar_dyn(&dict_array, "%i%").unwrap(),
- BooleanArray::from(vec![
- Some(true),
- Some(false),
- Some(true),
- Some(false),
- None,
- Some(false),
- Some(false),
- ]),
- );
-
- assert_eq!(
- nlike_utf8_scalar_dyn(&dict_array, "%a%r%").unwrap(),
- BooleanArray::from(vec![
- Some(false),
- Some(true),
- Some(false),
- Some(true),
- None,
- Some(true),
- Some(true),
- ]),
- );
-
- assert_eq!(
- nlike_utf8_scalar_dyn(&dict_array, "%a%r%").unwrap(),
- BooleanArray::from(vec![
- Some(false),
- Some(true),
- Some(false),
- Some(true),
- None,
- Some(true),
- Some(true),
- ]),
- );
- }
+ Some("bbbbb\nAir")
+ ],
+ "%a%r%",
+ nlike,
+ vec![
+ Some(false),
+ Some(true),
+ Some(false),
+ Some(true),
+ None,
+ Some(true),
+ Some(true)
+ ]
+ );
- #[test]
- fn test_dict_ilike_kernels() {
- let data = vec![
+ test_utf8_scalar!(
+ test_utf8_scalar_nullable_ilike,
+ vec![
Some("Earth"),
Some("Fire"),
Some("Water"),
Some("Air"),
None,
Some("Air"),
- Some("bbbbb\nAir"),
- ];
-
- let dict_array: DictionaryArray<Int8Type> = data.into_iter().collect();
-
- assert_eq!(
- ilike_utf8_scalar_dyn(&dict_array, "air").unwrap(),
- BooleanArray::from(vec![
- Some(false),
- Some(false),
- Some(false),
- Some(true),
- None,
- Some(true),
- Some(false),
- ]),
- );
-
- assert_eq!(
- ilike_utf8_scalar_dyn(&dict_array, "air").unwrap(),
- BooleanArray::from(vec![
- Some(false),
- Some(false),
- Some(false),
- Some(true),
- None,
- Some(true),
- Some(false),
- ]),
- );
-
- assert_eq!(
- ilike_utf8_scalar_dyn(&dict_array, "wa%").unwrap(),
- BooleanArray::from(vec![
- Some(false),
- Some(false),
- Some(true),
- Some(false),
- None,
- Some(false),
- Some(false),
- ]),
- );
-
- assert_eq!(
- ilike_utf8_scalar_dyn(&dict_array, "wa%").unwrap(),
- BooleanArray::from(vec![
- Some(false),
- Some(false),
- Some(true),
- Some(false),
- None,
- Some(false),
- Some(false),
- ]),
- );
-
- assert_eq!(
- ilike_utf8_scalar_dyn(&dict_array, "%R").unwrap(),
- BooleanArray::from(vec![
- Some(false),
- Some(false),
- Some(true),
- Some(true),
- None,
- Some(true),
- Some(true),
- ]),
- );
-
- assert_eq!(
- ilike_utf8_scalar_dyn(&dict_array, "%R").unwrap(),
- BooleanArray::from(vec![
- Some(false),
- Some(false),
- Some(true),
- Some(true),
- None,
- Some(true),
- Some(true),
- ]),
- );
-
- assert_eq!(
- ilike_utf8_scalar_dyn(&dict_array, "%I%").unwrap(),
- BooleanArray::from(vec![
- Some(false),
- Some(true),
- Some(false),
- Some(true),
- None,
- Some(true),
- Some(true),
- ]),
- );
-
- assert_eq!(
- ilike_utf8_scalar_dyn(&dict_array, "%I%").unwrap(),
- BooleanArray::from(vec![
- Some(false),
- Some(true),
- Some(false),
- Some(true),
- None,
- Some(true),
- Some(true),
- ]),
- );
-
- assert_eq!(
- ilike_utf8_scalar_dyn(&dict_array, "%A%r%").unwrap(),
- BooleanArray::from(vec![
- Some(true),
- Some(false),
- Some(true),
- Some(true),
- None,
- Some(true),
- Some(true),
- ]),
- );
-
- assert_eq!(
- ilike_utf8_scalar_dyn(&dict_array, "%A%r%").unwrap(),
- BooleanArray::from(vec![
- Some(true),
- Some(false),
- Some(true),
- Some(true),
- None,
- Some(true),
- Some(true),
- ]),
- );
- }
+ Some("bbbbb\nAir")
+ ],
+ "%I%",
+ ilike,
+ vec![
+ Some(false),
+ Some(true),
+ Some(false),
+ Some(true),
+ None,
+ Some(true),
+ Some(true)
+ ]
+ );
- #[test]
- fn test_dict_nilike_kernels() {
- let data = vec![
+ test_utf8_scalar!(
+ test_utf8_scalar_nullable_nilike,
+ vec![
Some("Earth"),
Some("Fire"),
Some("Water"),
Some("Air"),
None,
Some("Air"),
- Some("bbbbb\nAir"),
- ];
-
- let dict_array: DictionaryArray<Int8Type> = data.into_iter().collect();
-
- assert_eq!(
- nilike_utf8_scalar_dyn(&dict_array, "air").unwrap(),
- BooleanArray::from(vec![
- Some(true),
- Some(true),
- Some(true),
- Some(false),
- None,
- Some(false),
- Some(true),
- ]),
- );
-
- assert_eq!(
- nilike_utf8_scalar_dyn(&dict_array, "air").unwrap(),
- BooleanArray::from(vec![
- Some(true),
- Some(true),
- Some(true),
- Some(false),
- None,
- Some(false),
- Some(true),
- ]),
- );
-
- assert_eq!(
- nilike_utf8_scalar_dyn(&dict_array, "wa%").unwrap(),
- BooleanArray::from(vec![
- Some(true),
- Some(true),
- Some(false),
- Some(true),
- None,
- Some(true),
- Some(true),
- ]),
- );
-
- assert_eq!(
- nilike_utf8_scalar_dyn(&dict_array, "wa%").unwrap(),
- BooleanArray::from(vec![
- Some(true),
- Some(true),
- Some(false),
- Some(true),
- None,
- Some(true),
- Some(true),
- ]),
- );
-
- assert_eq!(
- nilike_utf8_scalar_dyn(&dict_array, "%R").unwrap(),
- BooleanArray::from(vec![
- Some(true),
- Some(true),
- Some(false),
- Some(false),
- None,
- Some(false),
- Some(false),
- ]),
- );
-
- assert_eq!(
- nilike_utf8_scalar_dyn(&dict_array, "%R").unwrap(),
- BooleanArray::from(vec![
- Some(true),
- Some(true),
- Some(false),
- Some(false),
- None,
- Some(false),
- Some(false),
- ]),
- );
-
- assert_eq!(
- nilike_utf8_scalar_dyn(&dict_array, "%I%").unwrap(),
- BooleanArray::from(vec![
- Some(true),
- Some(false),
- Some(true),
- Some(false),
- None,
- Some(false),
- Some(false),
- ]),
- );
-
- assert_eq!(
- nilike_utf8_scalar_dyn(&dict_array, "%I%").unwrap(),
- BooleanArray::from(vec![
- Some(true),
- Some(false),
- Some(true),
- Some(false),
- None,
- Some(false),
- Some(false),
- ]),
- );
-
- assert_eq!(
- nilike_utf8_scalar_dyn(&dict_array, "%A%r%").unwrap(),
- BooleanArray::from(vec![
- Some(false),
- Some(true),
- Some(false),
- Some(false),
- None,
- Some(false),
- Some(false),
- ]),
- );
-
- assert_eq!(
- nilike_utf8_scalar_dyn(&dict_array, "%A%r%").unwrap(),
- BooleanArray::from(vec![
- Some(false),
- Some(true),
- Some(false),
- Some(false),
- None,
- Some(false),
- Some(false),
- ]),
- );
- }
+ Some("bbbbb\nAir")
+ ],
+ "%R",
+ nilike,
+ vec![
+ Some(true),
+ Some(true),
+ Some(false),
+ Some(false),
+ None,
+ Some(false),
+ Some(false)
+ ]
+ );
#[test]
fn string_null_like_pattern() {