From 94e6313350de0ee91ac9c83b3bf7b2e37a5e7706 Mon Sep 17 00:00:00 2001 From: irenjj Date: Mon, 17 Feb 2025 20:36:33 +0800 Subject: [PATCH 1/3] chore" Migrate Regex function to invoke_with_args --- datafusion/functions/src/regex/regexpcount.rs | 184 ++++++++---------- datafusion/functions/src/regex/regexplike.rs | 7 +- datafusion/functions/src/regex/regexpmatch.rs | 7 +- .../functions/src/regex/regexpreplace.rs | 8 +- 4 files changed, 92 insertions(+), 114 deletions(-) diff --git a/datafusion/functions/src/regex/regexpcount.rs b/datafusion/functions/src/regex/regexpcount.rs index a81133713360..5db494960308 100644 --- a/datafusion/functions/src/regex/regexpcount.rs +++ b/datafusion/functions/src/regex/regexpcount.rs @@ -108,11 +108,12 @@ impl ScalarUDFImpl for RegexpCountFunc { Ok(Int64) } - fn invoke_batch( + fn invoke_with_args( &self, - args: &[ColumnarValue], - _number_rows: usize, + args: datafusion_expr::ScalarFunctionArgs, ) -> Result { + let args = &args.args; + let len = args .iter() .fold(Option::::None, |acc, arg| match arg { @@ -655,11 +656,11 @@ mod tests { let v_sv = ScalarValue::Utf8(Some(v.to_string())); let regex_sv = ScalarValue::Utf8(Some(regex.to_string())); let expected = expected.get(pos).cloned(); - #[allow(deprecated)] // TODO: migrate to invoke_with_args - let re = RegexpCountFunc::new().invoke_batch( - &[ColumnarValue::Scalar(v_sv), ColumnarValue::Scalar(regex_sv)], - 1, - ); + #[allow(deprecated)] + let re = RegexpCountFunc::new().invoke_with_args(&[ + ColumnarValue::Scalar(v_sv), + ColumnarValue::Scalar(regex_sv), + ]); match re { Ok(ColumnarValue::Scalar(ScalarValue::Int64(v))) => { assert_eq!(v, expected, "regexp_count scalar test failed"); @@ -670,11 +671,11 @@ mod tests { // largeutf8 let v_sv = ScalarValue::LargeUtf8(Some(v.to_string())); let regex_sv = ScalarValue::LargeUtf8(Some(regex.to_string())); - #[allow(deprecated)] // TODO: migrate to invoke_with_args - let re = RegexpCountFunc::new().invoke_batch( - &[ColumnarValue::Scalar(v_sv), ColumnarValue::Scalar(regex_sv)], - 1, - ); + #[allow(deprecated)] + let re = RegexpCountFunc::new().invoke_with_args(&[ + ColumnarValue::Scalar(v_sv), + ColumnarValue::Scalar(regex_sv), + ]); match re { Ok(ColumnarValue::Scalar(ScalarValue::Int64(v))) => { assert_eq!(v, expected, "regexp_count scalar test failed"); @@ -685,11 +686,11 @@ mod tests { // utf8view let v_sv = ScalarValue::Utf8View(Some(v.to_string())); let regex_sv = ScalarValue::Utf8View(Some(regex.to_string())); - #[allow(deprecated)] // TODO: migrate to invoke_with_args - let re = RegexpCountFunc::new().invoke_batch( - &[ColumnarValue::Scalar(v_sv), ColumnarValue::Scalar(regex_sv)], - 1, - ); + #[allow(deprecated)] + let re = RegexpCountFunc::new().invoke_with_args(&[ + ColumnarValue::Scalar(v_sv), + ColumnarValue::Scalar(regex_sv), + ]); match re { Ok(ColumnarValue::Scalar(ScalarValue::Int64(v))) => { assert_eq!(v, expected, "regexp_count scalar test failed"); @@ -711,15 +712,12 @@ mod tests { let regex_sv = ScalarValue::Utf8(Some(regex.to_string())); let start_sv = ScalarValue::Int64(Some(start)); let expected = expected.get(pos).cloned(); - #[allow(deprecated)] // TODO: migrate to invoke_with_args - let re = RegexpCountFunc::new().invoke_batch( - &[ - ColumnarValue::Scalar(v_sv), - ColumnarValue::Scalar(regex_sv), - ColumnarValue::Scalar(start_sv.clone()), - ], - 1, - ); + #[allow(deprecated)] + let re = RegexpCountFunc::new().invoke_with_args(&[ + ColumnarValue::Scalar(v_sv), + ColumnarValue::Scalar(regex_sv), + ColumnarValue::Scalar(start_sv.clone()), + ]); match re { Ok(ColumnarValue::Scalar(ScalarValue::Int64(v))) => { assert_eq!(v, expected, "regexp_count scalar test failed"); @@ -730,15 +728,12 @@ mod tests { // largeutf8 let v_sv = ScalarValue::LargeUtf8(Some(v.to_string())); let regex_sv = ScalarValue::LargeUtf8(Some(regex.to_string())); - #[allow(deprecated)] // TODO: migrate to invoke_with_args - let re = RegexpCountFunc::new().invoke_batch( - &[ - ColumnarValue::Scalar(v_sv), - ColumnarValue::Scalar(regex_sv), - ColumnarValue::Scalar(start_sv.clone()), - ], - 1, - ); + #[allow(deprecated)] + let re = RegexpCountFunc::new().invoke_with_args(&[ + ColumnarValue::Scalar(v_sv), + ColumnarValue::Scalar(regex_sv), + ColumnarValue::Scalar(start_sv.clone()), + ]); match re { Ok(ColumnarValue::Scalar(ScalarValue::Int64(v))) => { assert_eq!(v, expected, "regexp_count scalar test failed"); @@ -749,15 +744,12 @@ mod tests { // utf8view let v_sv = ScalarValue::Utf8View(Some(v.to_string())); let regex_sv = ScalarValue::Utf8View(Some(regex.to_string())); - #[allow(deprecated)] // TODO: migrate to invoke_with_args - let re = RegexpCountFunc::new().invoke_batch( - &[ - ColumnarValue::Scalar(v_sv), - ColumnarValue::Scalar(regex_sv), - ColumnarValue::Scalar(start_sv), - ], - 1, - ); + #[allow(deprecated)] + let re = RegexpCountFunc::new().invoke_with_args(&[ + ColumnarValue::Scalar(v_sv), + ColumnarValue::Scalar(regex_sv), + ColumnarValue::Scalar(start_sv), + ]); match re { Ok(ColumnarValue::Scalar(ScalarValue::Int64(v))) => { assert_eq!(v, expected, "regexp_count scalar test failed"); @@ -781,16 +773,13 @@ mod tests { let start_sv = ScalarValue::Int64(Some(start)); let flags_sv = ScalarValue::Utf8(Some(flags.to_string())); let expected = expected.get(pos).cloned(); - #[allow(deprecated)] // TODO: migrate to invoke_with_args - let re = RegexpCountFunc::new().invoke_batch( - &[ - ColumnarValue::Scalar(v_sv), - ColumnarValue::Scalar(regex_sv), - ColumnarValue::Scalar(start_sv.clone()), - ColumnarValue::Scalar(flags_sv.clone()), - ], - 1, - ); + #[allow(deprecated)] + let re = RegexpCountFunc::new().invoke_with_args(&[ + ColumnarValue::Scalar(v_sv), + ColumnarValue::Scalar(regex_sv), + ColumnarValue::Scalar(start_sv.clone()), + ColumnarValue::Scalar(flags_sv.clone()), + ]); match re { Ok(ColumnarValue::Scalar(ScalarValue::Int64(v))) => { assert_eq!(v, expected, "regexp_count scalar test failed"); @@ -802,16 +791,13 @@ mod tests { let v_sv = ScalarValue::LargeUtf8(Some(v.to_string())); let regex_sv = ScalarValue::LargeUtf8(Some(regex.to_string())); let flags_sv = ScalarValue::LargeUtf8(Some(flags.to_string())); - #[allow(deprecated)] // TODO: migrate to invoke_with_args - let re = RegexpCountFunc::new().invoke_batch( - &[ - ColumnarValue::Scalar(v_sv), - ColumnarValue::Scalar(regex_sv), - ColumnarValue::Scalar(start_sv.clone()), - ColumnarValue::Scalar(flags_sv.clone()), - ], - 1, - ); + #[allow(deprecated)] + let re = RegexpCountFunc::new().invoke_with_args(&[ + ColumnarValue::Scalar(v_sv), + ColumnarValue::Scalar(regex_sv), + ColumnarValue::Scalar(start_sv.clone()), + ColumnarValue::Scalar(flags_sv.clone()), + ]); match re { Ok(ColumnarValue::Scalar(ScalarValue::Int64(v))) => { assert_eq!(v, expected, "regexp_count scalar test failed"); @@ -823,16 +809,13 @@ mod tests { let v_sv = ScalarValue::Utf8View(Some(v.to_string())); let regex_sv = ScalarValue::Utf8View(Some(regex.to_string())); let flags_sv = ScalarValue::Utf8View(Some(flags.to_string())); - #[allow(deprecated)] // TODO: migrate to invoke_with_args - let re = RegexpCountFunc::new().invoke_batch( - &[ - ColumnarValue::Scalar(v_sv), - ColumnarValue::Scalar(regex_sv), - ColumnarValue::Scalar(start_sv), - ColumnarValue::Scalar(flags_sv.clone()), - ], - 1, - ); + #[allow(deprecated)] + let re = RegexpCountFunc::new().invoke_with_args(&[ + ColumnarValue::Scalar(v_sv), + ColumnarValue::Scalar(regex_sv), + ColumnarValue::Scalar(start_sv), + ColumnarValue::Scalar(flags_sv.clone()), + ]); match re { Ok(ColumnarValue::Scalar(ScalarValue::Int64(v))) => { assert_eq!(v, expected, "regexp_count scalar test failed"); @@ -905,16 +888,13 @@ mod tests { let start_sv = ScalarValue::Int64(Some(start)); let flags_sv = ScalarValue::Utf8(flags.get(pos).map(|f| f.to_string())); let expected = expected.get(pos).cloned(); - #[allow(deprecated)] // TODO: migrate to invoke_with_args - let re = RegexpCountFunc::new().invoke_batch( - &[ - ColumnarValue::Scalar(v_sv), - ColumnarValue::Scalar(regex_sv), - ColumnarValue::Scalar(start_sv.clone()), - ColumnarValue::Scalar(flags_sv.clone()), - ], - 1, - ); + #[allow(deprecated)] + let re = RegexpCountFunc::new().invoke_with_args(&[ + ColumnarValue::Scalar(v_sv), + ColumnarValue::Scalar(regex_sv), + ColumnarValue::Scalar(start_sv.clone()), + ColumnarValue::Scalar(flags_sv.clone()), + ]); match re { Ok(ColumnarValue::Scalar(ScalarValue::Int64(v))) => { assert_eq!(v, expected, "regexp_count scalar test failed"); @@ -926,16 +906,13 @@ mod tests { let v_sv = ScalarValue::LargeUtf8(Some(v.to_string())); let regex_sv = ScalarValue::LargeUtf8(regex.get(pos).map(|s| s.to_string())); let flags_sv = ScalarValue::LargeUtf8(flags.get(pos).map(|f| f.to_string())); - #[allow(deprecated)] // TODO: migrate to invoke_with_args - let re = RegexpCountFunc::new().invoke_batch( - &[ - ColumnarValue::Scalar(v_sv), - ColumnarValue::Scalar(regex_sv), - ColumnarValue::Scalar(start_sv.clone()), - ColumnarValue::Scalar(flags_sv.clone()), - ], - 1, - ); + #[allow(deprecated)] + let re = RegexpCountFunc::new().invoke_with_args(&[ + ColumnarValue::Scalar(v_sv), + ColumnarValue::Scalar(regex_sv), + ColumnarValue::Scalar(start_sv.clone()), + ColumnarValue::Scalar(flags_sv.clone()), + ]); match re { Ok(ColumnarValue::Scalar(ScalarValue::Int64(v))) => { assert_eq!(v, expected, "regexp_count scalar test failed"); @@ -947,16 +924,13 @@ mod tests { let v_sv = ScalarValue::Utf8View(Some(v.to_string())); let regex_sv = ScalarValue::Utf8View(regex.get(pos).map(|s| s.to_string())); let flags_sv = ScalarValue::Utf8View(flags.get(pos).map(|f| f.to_string())); - #[allow(deprecated)] // TODO: migrate to invoke_with_args - let re = RegexpCountFunc::new().invoke_batch( - &[ - ColumnarValue::Scalar(v_sv), - ColumnarValue::Scalar(regex_sv), - ColumnarValue::Scalar(start_sv), - ColumnarValue::Scalar(flags_sv.clone()), - ], - 1, - ); + #[allow(deprecated)] + let re = RegexpCountFunc::new().invoke_with_args(&[ + ColumnarValue::Scalar(v_sv), + ColumnarValue::Scalar(regex_sv), + ColumnarValue::Scalar(start_sv), + ColumnarValue::Scalar(flags_sv.clone()), + ]); match re { Ok(ColumnarValue::Scalar(ScalarValue::Int64(v))) => { assert_eq!(v, expected, "regexp_count scalar test failed"); diff --git a/datafusion/functions/src/regex/regexplike.rs b/datafusion/functions/src/regex/regexplike.rs index 296ec339a623..6006309306d5 100644 --- a/datafusion/functions/src/regex/regexplike.rs +++ b/datafusion/functions/src/regex/regexplike.rs @@ -110,11 +110,12 @@ impl ScalarUDFImpl for RegexpLikeFunc { }) } - fn invoke_batch( + fn invoke_with_args( &self, - args: &[ColumnarValue], - _number_rows: usize, + args: datafusion_expr::ScalarFunctionArgs, ) -> Result { + let args = &args.args; + let len = args .iter() .fold(Option::::None, |acc, arg| match arg { diff --git a/datafusion/functions/src/regex/regexpmatch.rs b/datafusion/functions/src/regex/regexpmatch.rs index 57207ecfdacd..1119e66398d1 100644 --- a/datafusion/functions/src/regex/regexpmatch.rs +++ b/datafusion/functions/src/regex/regexpmatch.rs @@ -118,11 +118,12 @@ impl ScalarUDFImpl for RegexpMatchFunc { other => DataType::List(Arc::new(Field::new_list_field(other.clone(), true))), }) } - fn invoke_batch( + + fn invoke_with_args( &self, - args: &[ColumnarValue], - _number_rows: usize, + args: datafusion_expr::ScalarFunctionArgs, ) -> Result { + let args = &args.args; let len = args .iter() .fold(Option::::None, |acc, arg| match arg { diff --git a/datafusion/functions/src/regex/regexpreplace.rs b/datafusion/functions/src/regex/regexpreplace.rs index 130c66caeecd..3a83564ff11f 100644 --- a/datafusion/functions/src/regex/regexpreplace.rs +++ b/datafusion/functions/src/regex/regexpreplace.rs @@ -147,11 +147,13 @@ impl ScalarUDFImpl for RegexpReplaceFunc { } }) } - fn invoke_batch( + + fn invoke_with_args( &self, - args: &[ColumnarValue], - _number_rows: usize, + args: datafusion_expr::ScalarFunctionArgs, ) -> Result { + let args = &args.args; + let len = args .iter() .fold(Option::::None, |acc, arg| match arg { From 24e9f78e8e6bafc57854ba579c0a4383a32f068f Mon Sep 17 00:00:00 2001 From: irenjj Date: Mon, 17 Feb 2025 21:27:27 +0800 Subject: [PATCH 2/3] fix --- datafusion/functions/src/regex/regexpcount.rs | 166 +++++++++++------- 1 file changed, 103 insertions(+), 63 deletions(-) diff --git a/datafusion/functions/src/regex/regexpcount.rs b/datafusion/functions/src/regex/regexpcount.rs index 5db494960308..471df3b48c9e 100644 --- a/datafusion/functions/src/regex/regexpcount.rs +++ b/datafusion/functions/src/regex/regexpcount.rs @@ -619,6 +619,7 @@ fn count_matches( mod tests { use super::*; use arrow::array::{GenericStringArray, StringViewArray}; + use datafusion_expr::ScalarFunctionArgs; #[test] fn test_regexp_count() { @@ -657,10 +658,11 @@ mod tests { let regex_sv = ScalarValue::Utf8(Some(regex.to_string())); let expected = expected.get(pos).cloned(); #[allow(deprecated)] - let re = RegexpCountFunc::new().invoke_with_args(&[ - ColumnarValue::Scalar(v_sv), - ColumnarValue::Scalar(regex_sv), - ]); + let re = RegexpCountFunc::new().invoke_with_args(ScalarFunctionArgs { + args: vec![ColumnarValue::Scalar(v_sv), ColumnarValue::Scalar(regex_sv)], + number_rows: 2, + return_type: &Int64, + }); match re { Ok(ColumnarValue::Scalar(ScalarValue::Int64(v))) => { assert_eq!(v, expected, "regexp_count scalar test failed"); @@ -672,10 +674,11 @@ mod tests { let v_sv = ScalarValue::LargeUtf8(Some(v.to_string())); let regex_sv = ScalarValue::LargeUtf8(Some(regex.to_string())); #[allow(deprecated)] - let re = RegexpCountFunc::new().invoke_with_args(&[ - ColumnarValue::Scalar(v_sv), - ColumnarValue::Scalar(regex_sv), - ]); + let re = RegexpCountFunc::new().invoke_with_args(ScalarFunctionArgs { + args: vec![ColumnarValue::Scalar(v_sv), ColumnarValue::Scalar(regex_sv)], + number_rows: 2, + return_type: &Int64, + }); match re { Ok(ColumnarValue::Scalar(ScalarValue::Int64(v))) => { assert_eq!(v, expected, "regexp_count scalar test failed"); @@ -687,10 +690,11 @@ mod tests { let v_sv = ScalarValue::Utf8View(Some(v.to_string())); let regex_sv = ScalarValue::Utf8View(Some(regex.to_string())); #[allow(deprecated)] - let re = RegexpCountFunc::new().invoke_with_args(&[ - ColumnarValue::Scalar(v_sv), - ColumnarValue::Scalar(regex_sv), - ]); + let re = RegexpCountFunc::new().invoke_with_args(ScalarFunctionArgs { + args: vec![ColumnarValue::Scalar(v_sv), ColumnarValue::Scalar(regex_sv)], + number_rows: 2, + return_type: &Int64, + }); match re { Ok(ColumnarValue::Scalar(ScalarValue::Int64(v))) => { assert_eq!(v, expected, "regexp_count scalar test failed"); @@ -713,11 +717,15 @@ mod tests { let start_sv = ScalarValue::Int64(Some(start)); let expected = expected.get(pos).cloned(); #[allow(deprecated)] - let re = RegexpCountFunc::new().invoke_with_args(&[ - ColumnarValue::Scalar(v_sv), - ColumnarValue::Scalar(regex_sv), - ColumnarValue::Scalar(start_sv.clone()), - ]); + let re = RegexpCountFunc::new().invoke_with_args(ScalarFunctionArgs { + args: vec![ + ColumnarValue::Scalar(v_sv), + ColumnarValue::Scalar(regex_sv), + ColumnarValue::Scalar(start_sv.clone()), + ], + number_rows: 3, + return_type: &Int64, + }); match re { Ok(ColumnarValue::Scalar(ScalarValue::Int64(v))) => { assert_eq!(v, expected, "regexp_count scalar test failed"); @@ -729,11 +737,15 @@ mod tests { let v_sv = ScalarValue::LargeUtf8(Some(v.to_string())); let regex_sv = ScalarValue::LargeUtf8(Some(regex.to_string())); #[allow(deprecated)] - let re = RegexpCountFunc::new().invoke_with_args(&[ - ColumnarValue::Scalar(v_sv), - ColumnarValue::Scalar(regex_sv), - ColumnarValue::Scalar(start_sv.clone()), - ]); + let re = RegexpCountFunc::new().invoke_with_args(ScalarFunctionArgs { + args: vec![ + ColumnarValue::Scalar(v_sv), + ColumnarValue::Scalar(regex_sv), + ColumnarValue::Scalar(start_sv.clone()), + ], + number_rows: 3, + return_type: &Int64, + }); match re { Ok(ColumnarValue::Scalar(ScalarValue::Int64(v))) => { assert_eq!(v, expected, "regexp_count scalar test failed"); @@ -745,11 +757,15 @@ mod tests { let v_sv = ScalarValue::Utf8View(Some(v.to_string())); let regex_sv = ScalarValue::Utf8View(Some(regex.to_string())); #[allow(deprecated)] - let re = RegexpCountFunc::new().invoke_with_args(&[ - ColumnarValue::Scalar(v_sv), - ColumnarValue::Scalar(regex_sv), - ColumnarValue::Scalar(start_sv), - ]); + let re = RegexpCountFunc::new().invoke_with_args(ScalarFunctionArgs { + args: vec![ + ColumnarValue::Scalar(v_sv), + ColumnarValue::Scalar(regex_sv), + ColumnarValue::Scalar(start_sv.clone()), + ], + number_rows: 3, + return_type: &Int64, + }); match re { Ok(ColumnarValue::Scalar(ScalarValue::Int64(v))) => { assert_eq!(v, expected, "regexp_count scalar test failed"); @@ -774,12 +790,16 @@ mod tests { let flags_sv = ScalarValue::Utf8(Some(flags.to_string())); let expected = expected.get(pos).cloned(); #[allow(deprecated)] - let re = RegexpCountFunc::new().invoke_with_args(&[ - ColumnarValue::Scalar(v_sv), - ColumnarValue::Scalar(regex_sv), - ColumnarValue::Scalar(start_sv.clone()), - ColumnarValue::Scalar(flags_sv.clone()), - ]); + let re = RegexpCountFunc::new().invoke_with_args(ScalarFunctionArgs { + args: vec![ + ColumnarValue::Scalar(v_sv), + ColumnarValue::Scalar(regex_sv), + ColumnarValue::Scalar(start_sv.clone()), + ColumnarValue::Scalar(flags_sv.clone()), + ], + number_rows: 4, + return_type: &Int64, + }); match re { Ok(ColumnarValue::Scalar(ScalarValue::Int64(v))) => { assert_eq!(v, expected, "regexp_count scalar test failed"); @@ -792,12 +812,16 @@ mod tests { let regex_sv = ScalarValue::LargeUtf8(Some(regex.to_string())); let flags_sv = ScalarValue::LargeUtf8(Some(flags.to_string())); #[allow(deprecated)] - let re = RegexpCountFunc::new().invoke_with_args(&[ - ColumnarValue::Scalar(v_sv), - ColumnarValue::Scalar(regex_sv), - ColumnarValue::Scalar(start_sv.clone()), - ColumnarValue::Scalar(flags_sv.clone()), - ]); + let re = RegexpCountFunc::new().invoke_with_args(ScalarFunctionArgs { + args: vec![ + ColumnarValue::Scalar(v_sv), + ColumnarValue::Scalar(regex_sv), + ColumnarValue::Scalar(start_sv.clone()), + ColumnarValue::Scalar(flags_sv.clone()), + ], + number_rows: 4, + return_type: &Int64, + }); match re { Ok(ColumnarValue::Scalar(ScalarValue::Int64(v))) => { assert_eq!(v, expected, "regexp_count scalar test failed"); @@ -810,12 +834,16 @@ mod tests { let regex_sv = ScalarValue::Utf8View(Some(regex.to_string())); let flags_sv = ScalarValue::Utf8View(Some(flags.to_string())); #[allow(deprecated)] - let re = RegexpCountFunc::new().invoke_with_args(&[ - ColumnarValue::Scalar(v_sv), - ColumnarValue::Scalar(regex_sv), - ColumnarValue::Scalar(start_sv), - ColumnarValue::Scalar(flags_sv.clone()), - ]); + let re = RegexpCountFunc::new().invoke_with_args(ScalarFunctionArgs { + args: vec![ + ColumnarValue::Scalar(v_sv), + ColumnarValue::Scalar(regex_sv), + ColumnarValue::Scalar(start_sv.clone()), + ColumnarValue::Scalar(flags_sv.clone()), + ], + number_rows: 4, + return_type: &Int64, + }); match re { Ok(ColumnarValue::Scalar(ScalarValue::Int64(v))) => { assert_eq!(v, expected, "regexp_count scalar test failed"); @@ -889,12 +917,16 @@ mod tests { let flags_sv = ScalarValue::Utf8(flags.get(pos).map(|f| f.to_string())); let expected = expected.get(pos).cloned(); #[allow(deprecated)] - let re = RegexpCountFunc::new().invoke_with_args(&[ - ColumnarValue::Scalar(v_sv), - ColumnarValue::Scalar(regex_sv), - ColumnarValue::Scalar(start_sv.clone()), - ColumnarValue::Scalar(flags_sv.clone()), - ]); + let re = RegexpCountFunc::new().invoke_with_args(ScalarFunctionArgs { + args: vec![ + ColumnarValue::Scalar(v_sv), + ColumnarValue::Scalar(regex_sv), + ColumnarValue::Scalar(start_sv.clone()), + ColumnarValue::Scalar(flags_sv.clone()), + ], + number_rows: 4, + return_type: &Int64, + }); match re { Ok(ColumnarValue::Scalar(ScalarValue::Int64(v))) => { assert_eq!(v, expected, "regexp_count scalar test failed"); @@ -907,12 +939,16 @@ mod tests { let regex_sv = ScalarValue::LargeUtf8(regex.get(pos).map(|s| s.to_string())); let flags_sv = ScalarValue::LargeUtf8(flags.get(pos).map(|f| f.to_string())); #[allow(deprecated)] - let re = RegexpCountFunc::new().invoke_with_args(&[ - ColumnarValue::Scalar(v_sv), - ColumnarValue::Scalar(regex_sv), - ColumnarValue::Scalar(start_sv.clone()), - ColumnarValue::Scalar(flags_sv.clone()), - ]); + let re = RegexpCountFunc::new().invoke_with_args(ScalarFunctionArgs { + args: vec![ + ColumnarValue::Scalar(v_sv), + ColumnarValue::Scalar(regex_sv), + ColumnarValue::Scalar(start_sv.clone()), + ColumnarValue::Scalar(flags_sv.clone()), + ], + number_rows: 4, + return_type: &Int64, + }); match re { Ok(ColumnarValue::Scalar(ScalarValue::Int64(v))) => { assert_eq!(v, expected, "regexp_count scalar test failed"); @@ -925,12 +961,16 @@ mod tests { let regex_sv = ScalarValue::Utf8View(regex.get(pos).map(|s| s.to_string())); let flags_sv = ScalarValue::Utf8View(flags.get(pos).map(|f| f.to_string())); #[allow(deprecated)] - let re = RegexpCountFunc::new().invoke_with_args(&[ - ColumnarValue::Scalar(v_sv), - ColumnarValue::Scalar(regex_sv), - ColumnarValue::Scalar(start_sv), - ColumnarValue::Scalar(flags_sv.clone()), - ]); + let re = RegexpCountFunc::new().invoke_with_args(ScalarFunctionArgs { + args: vec![ + ColumnarValue::Scalar(v_sv), + ColumnarValue::Scalar(regex_sv), + ColumnarValue::Scalar(start_sv.clone()), + ColumnarValue::Scalar(flags_sv.clone()), + ], + number_rows: 4, + return_type: &Int64, + }); match re { Ok(ColumnarValue::Scalar(ScalarValue::Int64(v))) => { assert_eq!(v, expected, "regexp_count scalar test failed"); From 3b20008d0ce4937a83ce07861ddb8478f6a19e9a Mon Sep 17 00:00:00 2001 From: irenjj Date: Tue, 18 Feb 2025 20:29:36 +0800 Subject: [PATCH 3/3] fix issues --- datafusion/functions/src/regex/regexpcount.rs | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/datafusion/functions/src/regex/regexpcount.rs b/datafusion/functions/src/regex/regexpcount.rs index 471df3b48c9e..8cb1a4ff3d60 100644 --- a/datafusion/functions/src/regex/regexpcount.rs +++ b/datafusion/functions/src/regex/regexpcount.rs @@ -657,7 +657,6 @@ mod tests { let v_sv = ScalarValue::Utf8(Some(v.to_string())); let regex_sv = ScalarValue::Utf8(Some(regex.to_string())); let expected = expected.get(pos).cloned(); - #[allow(deprecated)] let re = RegexpCountFunc::new().invoke_with_args(ScalarFunctionArgs { args: vec![ColumnarValue::Scalar(v_sv), ColumnarValue::Scalar(regex_sv)], number_rows: 2, @@ -673,7 +672,6 @@ mod tests { // largeutf8 let v_sv = ScalarValue::LargeUtf8(Some(v.to_string())); let regex_sv = ScalarValue::LargeUtf8(Some(regex.to_string())); - #[allow(deprecated)] let re = RegexpCountFunc::new().invoke_with_args(ScalarFunctionArgs { args: vec![ColumnarValue::Scalar(v_sv), ColumnarValue::Scalar(regex_sv)], number_rows: 2, @@ -689,7 +687,6 @@ mod tests { // utf8view let v_sv = ScalarValue::Utf8View(Some(v.to_string())); let regex_sv = ScalarValue::Utf8View(Some(regex.to_string())); - #[allow(deprecated)] let re = RegexpCountFunc::new().invoke_with_args(ScalarFunctionArgs { args: vec![ColumnarValue::Scalar(v_sv), ColumnarValue::Scalar(regex_sv)], number_rows: 2, @@ -716,7 +713,6 @@ mod tests { let regex_sv = ScalarValue::Utf8(Some(regex.to_string())); let start_sv = ScalarValue::Int64(Some(start)); let expected = expected.get(pos).cloned(); - #[allow(deprecated)] let re = RegexpCountFunc::new().invoke_with_args(ScalarFunctionArgs { args: vec![ ColumnarValue::Scalar(v_sv), @@ -736,7 +732,6 @@ mod tests { // largeutf8 let v_sv = ScalarValue::LargeUtf8(Some(v.to_string())); let regex_sv = ScalarValue::LargeUtf8(Some(regex.to_string())); - #[allow(deprecated)] let re = RegexpCountFunc::new().invoke_with_args(ScalarFunctionArgs { args: vec![ ColumnarValue::Scalar(v_sv), @@ -756,7 +751,6 @@ mod tests { // utf8view let v_sv = ScalarValue::Utf8View(Some(v.to_string())); let regex_sv = ScalarValue::Utf8View(Some(regex.to_string())); - #[allow(deprecated)] let re = RegexpCountFunc::new().invoke_with_args(ScalarFunctionArgs { args: vec![ ColumnarValue::Scalar(v_sv), @@ -789,7 +783,6 @@ mod tests { let start_sv = ScalarValue::Int64(Some(start)); let flags_sv = ScalarValue::Utf8(Some(flags.to_string())); let expected = expected.get(pos).cloned(); - #[allow(deprecated)] let re = RegexpCountFunc::new().invoke_with_args(ScalarFunctionArgs { args: vec![ ColumnarValue::Scalar(v_sv), @@ -811,7 +804,6 @@ mod tests { let v_sv = ScalarValue::LargeUtf8(Some(v.to_string())); let regex_sv = ScalarValue::LargeUtf8(Some(regex.to_string())); let flags_sv = ScalarValue::LargeUtf8(Some(flags.to_string())); - #[allow(deprecated)] let re = RegexpCountFunc::new().invoke_with_args(ScalarFunctionArgs { args: vec![ ColumnarValue::Scalar(v_sv), @@ -833,7 +825,6 @@ mod tests { let v_sv = ScalarValue::Utf8View(Some(v.to_string())); let regex_sv = ScalarValue::Utf8View(Some(regex.to_string())); let flags_sv = ScalarValue::Utf8View(Some(flags.to_string())); - #[allow(deprecated)] let re = RegexpCountFunc::new().invoke_with_args(ScalarFunctionArgs { args: vec![ ColumnarValue::Scalar(v_sv), @@ -916,7 +907,6 @@ mod tests { let start_sv = ScalarValue::Int64(Some(start)); let flags_sv = ScalarValue::Utf8(flags.get(pos).map(|f| f.to_string())); let expected = expected.get(pos).cloned(); - #[allow(deprecated)] let re = RegexpCountFunc::new().invoke_with_args(ScalarFunctionArgs { args: vec![ ColumnarValue::Scalar(v_sv), @@ -938,7 +928,6 @@ mod tests { let v_sv = ScalarValue::LargeUtf8(Some(v.to_string())); let regex_sv = ScalarValue::LargeUtf8(regex.get(pos).map(|s| s.to_string())); let flags_sv = ScalarValue::LargeUtf8(flags.get(pos).map(|f| f.to_string())); - #[allow(deprecated)] let re = RegexpCountFunc::new().invoke_with_args(ScalarFunctionArgs { args: vec![ ColumnarValue::Scalar(v_sv), @@ -960,7 +949,6 @@ mod tests { let v_sv = ScalarValue::Utf8View(Some(v.to_string())); let regex_sv = ScalarValue::Utf8View(regex.get(pos).map(|s| s.to_string())); let flags_sv = ScalarValue::Utf8View(flags.get(pos).map(|f| f.to_string())); - #[allow(deprecated)] let re = RegexpCountFunc::new().invoke_with_args(ScalarFunctionArgs { args: vec![ ColumnarValue::Scalar(v_sv),