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 3ee9b3dfb6 Performance: enable array allocation reuse 
(`ScalarFunctionArgs` gets owned `ColumnReference`) (#13637)
3ee9b3dfb6 is described below

commit 3ee9b3dfb6d9c4e95a93d694b6aaf5c21ab61354
Author: Andrew Lamb <[email protected]>
AuthorDate: Sun Dec 8 08:28:05 2024 -0500

    Performance: enable array allocation reuse (`ScalarFunctionArgs` gets owned 
`ColumnReference`) (#13637)
    
    * Improve documentation
    
    * Pass owned args to ScalarFunctionArgs
    
    * Update advanced_udf with example of reusing arrays
    
    * clarify rationale for cloning
    
    * clarify comments
    
    * fix expected output
---
 datafusion-examples/examples/advanced_udf.rs       | 126 ++++++++++++++++-----
 datafusion/expr/src/udf.rs                         |  14 ++-
 datafusion/functions/src/datetime/to_local_time.rs |   2 +-
 datafusion/functions/src/string/ascii.rs           |   6 +-
 datafusion/functions/src/string/btrim.rs           |  24 ++--
 datafusion/functions/src/string/concat.rs          |  12 +-
 datafusion/functions/src/string/concat_ws.rs       |   8 +-
 datafusion/functions/src/string/ends_with.rs       |   8 +-
 datafusion/functions/src/string/initcap.rs         |  16 +--
 datafusion/functions/src/string/ltrim.rs           |  22 ++--
 datafusion/functions/src/string/octet_length.rs    |  20 ++--
 datafusion/functions/src/string/repeat.rs          |  12 +-
 datafusion/functions/src/string/replace.rs         |   6 +-
 datafusion/functions/src/string/rtrim.rs           |  22 ++--
 datafusion/functions/src/string/split_part.rs      |   8 +-
 datafusion/functions/src/string/starts_with.rs     |   2 +-
 .../functions/src/unicode/character_length.rs      |   6 +-
 datafusion/functions/src/unicode/left.rs           |  18 +--
 datafusion/functions/src/unicode/lpad.rs           |  24 ++--
 datafusion/functions/src/unicode/reverse.rs        |   6 +-
 datafusion/functions/src/unicode/right.rs          |  18 +--
 datafusion/functions/src/unicode/rpad.rs           |  28 ++---
 datafusion/functions/src/unicode/strpos.rs         |   2 +-
 datafusion/functions/src/unicode/substr.rs         |  56 ++++-----
 datafusion/functions/src/unicode/substrindex.rs    |  14 +--
 datafusion/functions/src/unicode/translate.rs      |  12 +-
 datafusion/physical-expr/src/scalar_function.rs    |   8 +-
 27 files changed, 288 insertions(+), 212 deletions(-)

diff --git a/datafusion-examples/examples/advanced_udf.rs 
b/datafusion-examples/examples/advanced_udf.rs
index aee3be6c92..ae35cff6fa 100644
--- a/datafusion-examples/examples/advanced_udf.rs
+++ b/datafusion-examples/examples/advanced_udf.rs
@@ -27,9 +27,11 @@ use arrow::record_batch::RecordBatch;
 use datafusion::error::Result;
 use datafusion::logical_expr::Volatility;
 use datafusion::prelude::*;
-use datafusion_common::{internal_err, ScalarValue};
+use datafusion_common::{exec_err, internal_err, ScalarValue};
 use datafusion_expr::sort_properties::{ExprProperties, SortProperties};
-use datafusion_expr::{ColumnarValue, ScalarUDF, ScalarUDFImpl, Signature};
+use datafusion_expr::{
+    ColumnarValue, ScalarFunctionArgs, ScalarUDF, ScalarUDFImpl, Signature,
+};
 
 /// This example shows how to use the full ScalarUDFImpl API to implement a 
user
 /// defined function. As in the `simple_udf.rs` example, this struct implements
@@ -83,23 +85,27 @@ impl ScalarUDFImpl for PowUdf {
         Ok(DataType::Float64)
     }
 
-    /// This is the function that actually calculates the results.
+    /// This function actually calculates the results of the scalar function.
+    ///
+    /// This is the same way that functions provided with DataFusion are 
invoked,
+    /// which permits important special cases:
     ///
-    /// This is the same way that functions built into DataFusion are invoked,
-    /// which permits important special cases when one or both of the arguments
-    /// are single values (constants). For example `pow(a, 2)`
+    ///1. When one or both of the arguments are single values (constants).
+    ///   For example `pow(a, 2)`
+    /// 2. When the input arrays can be reused (avoid allocating a new output 
array)
     ///
     /// However, it also means the implementation is more complex than when
     /// using `create_udf`.
-    fn invoke_batch(
-        &self,
-        args: &[ColumnarValue],
-        _number_rows: usize,
-    ) -> Result<ColumnarValue> {
+    fn invoke_with_args(&self, args: ScalarFunctionArgs) -> 
Result<ColumnarValue> {
+        // The other fields of the `args` struct are used for more specialized
+        // uses, and are not needed in this example
+        let ScalarFunctionArgs { mut args, .. } = args;
         // DataFusion has arranged for the correct inputs to be passed to this
         // function, but we check again to make sure
         assert_eq!(args.len(), 2);
-        let (base, exp) = (&args[0], &args[1]);
+        // take ownership of arguments by popping in reverse order
+        let exp = args.pop().unwrap();
+        let base = args.pop().unwrap();
         assert_eq!(base.data_type(), DataType::Float64);
         assert_eq!(exp.data_type(), DataType::Float64);
 
@@ -118,7 +124,7 @@ impl ScalarUDFImpl for PowUdf {
             ) => {
                 // compute the output. Note DataFusion treats `None` as NULL.
                 let res = match (base, exp) {
-                    (Some(base), Some(exp)) => Some(base.powf(*exp)),
+                    (Some(base), Some(exp)) => Some(base.powf(exp)),
                     // one or both arguments were NULL
                     _ => None,
                 };
@@ -140,31 +146,33 @@ impl ScalarUDFImpl for PowUdf {
                         // kernel creates very fast "vectorized" code and
                         // handles things like null values for us.
                         let res: Float64Array =
-                            compute::unary(base_array, |base| base.powf(*exp));
+                            compute::unary(base_array, |base| base.powf(exp));
                         Arc::new(res)
                     }
                 };
                 Ok(ColumnarValue::Array(result_array))
             }
 
-            // special case if the base is a constant (note this code is quite
-            // similar to the previous case, so we omit comments)
+            // special case if the base is a constant.
+            //
+            // Note this case is very similar to the previous case, so we could
+            // use the same pattern. However, for this case we demonstrate an
+            // even more advanced pattern to potentially avoid allocating a 
new array
             (
                 ColumnarValue::Scalar(ScalarValue::Float64(base)),
                 ColumnarValue::Array(exp_array),
             ) => {
                 let res = match base {
                     None => new_null_array(exp_array.data_type(), 
exp_array.len()),
-                    Some(base) => {
-                        let exp_array = 
exp_array.as_primitive::<Float64Type>();
-                        let res: Float64Array =
-                            compute::unary(exp_array, |exp| base.powf(exp));
-                        Arc::new(res)
-                    }
+                    Some(base) => maybe_pow_in_place(base, exp_array)?,
                 };
                 Ok(ColumnarValue::Array(res))
             }
-            // Both arguments are arrays so we have to perform the calculation 
for every row
+            // Both arguments are arrays so we have to perform the calculation
+            // for every row
+            //
+            // Note this could also be done in place using `binary_mut` as
+            // is done in `maybe_pow_in_place` but here we use binary for 
simplicity
             (ColumnarValue::Array(base_array), 
ColumnarValue::Array(exp_array)) => {
                 let res: Float64Array = compute::binary(
                     base_array.as_primitive::<Float64Type>(),
@@ -191,6 +199,52 @@ impl ScalarUDFImpl for PowUdf {
     }
 }
 
+/// Evaluate `base ^ exp` *without* allocating a new array, if possible
+fn maybe_pow_in_place(base: f64, exp_array: ArrayRef) -> Result<ArrayRef> {
+    // Calling `unary` creates a new array for the results. Avoiding
+    // allocations is a common optimization in performance critical code.
+    // arrow-rs allows this optimization via the `unary_mut`
+    // and `binary_mut` kernels in certain cases
+    //
+    // These kernels can only be used if there are no other references to
+    // the arrays (exp_array has to be the last remaining reference).
+    let owned_array = exp_array
+        // as in the previous example, we first downcast to &Float64Array
+        .as_primitive::<Float64Type>()
+        // non-obviously, we call clone here to get an owned `Float64Array`.
+        // Calling clone() is relatively inexpensive as it increments
+        // some ref counts but doesn't clone the data)
+        //
+        // Once we have the owned Float64Array we can drop the original
+        // exp_array (untyped) reference
+        .clone();
+
+    // We *MUST* drop the reference to `exp_array` explicitly so that
+    // owned_array is the only reference remaining in this function.
+    //
+    // Note that depending on the query there may still be other references
+    // to the underlying buffers, which would prevent reuse. The only way to
+    // know for sure is the result of `compute::unary_mut`
+    drop(exp_array);
+
+    // If we have the only reference, compute the result directly into the same
+    // allocation as was used for the input array
+    match compute::unary_mut(owned_array, |exp| base.powf(exp)) {
+        Err(_orig_array) => {
+            // unary_mut will return the original array if there are other
+            // references into the underling buffer (and thus reuse is
+            // impossible)
+            //
+            // In a real implementation, this case should fall back to
+            // calling `unary` and allocate a new array; In this example
+            // we will return an error for demonstration purposes
+            exec_err!("Could not reuse array for maybe_pow_in_place")
+        }
+        // a result of OK means the operation was run successfully
+        Ok(res) => Ok(Arc::new(res)),
+    }
+}
+
 /// In this example we register `PowUdf` as a user defined function
 /// and invoke it via the DataFrame API and SQL
 #[tokio::main]
@@ -215,9 +269,29 @@ async fn main() -> Result<()> {
     // print the results
     df.show().await?;
 
-    // You can also invoke both pow(2, 10)  and its alias my_pow(a, b) using 
SQL
-    let sql_df = ctx.sql("SELECT pow(2, 10), my_pow(a, b) FROM t").await?;
-    sql_df.show().await?;
+    // You can also invoke both pow(2, 10) and its alias my_pow(a, b) using SQL
+    ctx.sql("SELECT pow(2, 10), my_pow(a, b) FROM t")
+        .await?
+        .show()
+        .await?;
+
+    // You can also invoke pow_in_place by passing a constant base and a
+    // column `a` as the exponent . If there is only a single
+    // reference to `a` the code works well
+    ctx.sql("SELECT pow(2, a) FROM t").await?.show().await?;
+
+    // However, if there are multiple references to `a` in the evaluation
+    // the array storage can not be reused
+    let err = ctx
+        .sql("SELECT pow(2, a), pow(3, a) FROM t")
+        .await?
+        .show()
+        .await
+        .unwrap_err();
+    assert_eq!(
+        err.to_string(),
+        "Execution error: Could not reuse array for maybe_pow_in_place"
+    );
 
     Ok(())
 }
diff --git a/datafusion/expr/src/udf.rs b/datafusion/expr/src/udf.rs
index bf9c9f407e..809c78f30e 100644
--- a/datafusion/expr/src/udf.rs
+++ b/datafusion/expr/src/udf.rs
@@ -326,13 +326,15 @@ where
     }
 }
 
+/// Arguments passed to [`ScalarUDFImpl::invoke_with_args`] when invoking a
+/// scalar function.
 pub struct ScalarFunctionArgs<'a> {
-    // The evaluated arguments to the function
-    pub args: &'a [ColumnarValue],
-    // The number of rows in record batch being evaluated
+    /// The evaluated arguments to the function
+    pub args: Vec<ColumnarValue>,
+    /// The number of rows in record batch being evaluated
     pub number_rows: usize,
-    // The return type of the scalar function returned (from `return_type` or 
`return_type_from_exprs`)
-    // when creating the physical expression from the logical expression
+    /// The return type of the scalar function returned (from `return_type` or 
`return_type_from_exprs`)
+    /// when creating the physical expression from the logical expression
     pub return_type: &'a DataType,
 }
 
@@ -539,7 +541,7 @@ pub trait ScalarUDFImpl: Debug + Send + Sync {
     /// [`ColumnarValue::values_to_arrays`] can be used to convert the 
arguments
     /// to arrays, which will likely be simpler code, but be slower.
     fn invoke_with_args(&self, args: ScalarFunctionArgs) -> 
Result<ColumnarValue> {
-        self.invoke_batch(args.args, args.number_rows)
+        self.invoke_batch(&args.args, args.number_rows)
     }
 
     /// Invoke the function without `args`, instead the number of rows are 
provided,
diff --git a/datafusion/functions/src/datetime/to_local_time.rs 
b/datafusion/functions/src/datetime/to_local_time.rs
index eaa91d1140..9f95b780ea 100644
--- a/datafusion/functions/src/datetime/to_local_time.rs
+++ b/datafusion/functions/src/datetime/to_local_time.rs
@@ -562,7 +562,7 @@ mod tests {
     fn test_to_local_time_helper(input: ScalarValue, expected: ScalarValue) {
         let res = ToLocalTimeFunc::new()
             .invoke_with_args(ScalarFunctionArgs {
-                args: &[ColumnarValue::Scalar(input)],
+                args: vec![ColumnarValue::Scalar(input)],
                 number_rows: 1,
                 return_type: &expected.data_type(),
             })
diff --git a/datafusion/functions/src/string/ascii.rs 
b/datafusion/functions/src/string/ascii.rs
index 4f615b5b2c..f366329b4f 100644
--- a/datafusion/functions/src/string/ascii.rs
+++ b/datafusion/functions/src/string/ascii.rs
@@ -157,7 +157,7 @@ mod tests {
         ($INPUT:expr, $EXPECTED:expr) => {
             test_function!(
                 AsciiFunc::new(),
-                &[ColumnarValue::Scalar(ScalarValue::Utf8($INPUT))],
+                vec![ColumnarValue::Scalar(ScalarValue::Utf8($INPUT))],
                 $EXPECTED,
                 i32,
                 Int32,
@@ -166,7 +166,7 @@ mod tests {
 
             test_function!(
                 AsciiFunc::new(),
-                &[ColumnarValue::Scalar(ScalarValue::LargeUtf8($INPUT))],
+                vec![ColumnarValue::Scalar(ScalarValue::LargeUtf8($INPUT))],
                 $EXPECTED,
                 i32,
                 Int32,
@@ -175,7 +175,7 @@ mod tests {
 
             test_function!(
                 AsciiFunc::new(),
-                &[ColumnarValue::Scalar(ScalarValue::Utf8View($INPUT))],
+                vec![ColumnarValue::Scalar(ScalarValue::Utf8View($INPUT))],
                 $EXPECTED,
                 i32,
                 Int32,
diff --git a/datafusion/functions/src/string/btrim.rs 
b/datafusion/functions/src/string/btrim.rs
index ae79bb59f9..298d64f04a 100644
--- a/datafusion/functions/src/string/btrim.rs
+++ b/datafusion/functions/src/string/btrim.rs
@@ -152,9 +152,9 @@ mod tests {
         // String view cases for checking normal logic
         test_function!(
             BTrimFunc::new(),
-            &[ColumnarValue::Scalar(ScalarValue::Utf8View(Some(
+            vec![ColumnarValue::Scalar(ScalarValue::Utf8View(Some(
                 String::from("alphabet  ")
-            ))),],
+            )))],
             Ok(Some("alphabet")),
             &str,
             Utf8View,
@@ -162,7 +162,7 @@ mod tests {
         );
         test_function!(
             BTrimFunc::new(),
-            &[ColumnarValue::Scalar(ScalarValue::Utf8View(Some(
+            vec![ColumnarValue::Scalar(ScalarValue::Utf8View(Some(
                 String::from("  alphabet  ")
             ))),],
             Ok(Some("alphabet")),
@@ -172,7 +172,7 @@ mod tests {
         );
         test_function!(
             BTrimFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::Utf8View(Some(String::from(
                     "alphabet"
                 )))),
@@ -185,7 +185,7 @@ mod tests {
         );
         test_function!(
             BTrimFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::Utf8View(Some(String::from(
                     "alphabet"
                 )))),
@@ -200,7 +200,7 @@ mod tests {
         );
         test_function!(
             BTrimFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::Utf8View(Some(String::from(
                     "alphabet"
                 )))),
@@ -214,7 +214,7 @@ mod tests {
         // Special string view case for checking unlined output(len > 12)
         test_function!(
             BTrimFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::Utf8View(Some(String::from(
                     "xxxalphabetalphabetxxx"
                 )))),
@@ -228,7 +228,7 @@ mod tests {
         // String cases
         test_function!(
             BTrimFunc::new(),
-            &[ColumnarValue::Scalar(ScalarValue::Utf8(Some(
+            vec![ColumnarValue::Scalar(ScalarValue::Utf8(Some(
                 String::from("alphabet  ")
             ))),],
             Ok(Some("alphabet")),
@@ -238,7 +238,7 @@ mod tests {
         );
         test_function!(
             BTrimFunc::new(),
-            &[ColumnarValue::Scalar(ScalarValue::Utf8(Some(
+            vec![ColumnarValue::Scalar(ScalarValue::Utf8(Some(
                 String::from("alphabet  ")
             ))),],
             Ok(Some("alphabet")),
@@ -248,7 +248,7 @@ mod tests {
         );
         test_function!(
             BTrimFunc::new(),
-            &[
+            vec![
                 
ColumnarValue::Scalar(ScalarValue::Utf8(Some(String::from("alphabet")))),
                 
ColumnarValue::Scalar(ScalarValue::Utf8(Some(String::from("t")))),
             ],
@@ -259,7 +259,7 @@ mod tests {
         );
         test_function!(
             BTrimFunc::new(),
-            &[
+            vec![
                 
ColumnarValue::Scalar(ScalarValue::Utf8(Some(String::from("alphabet")))),
                 
ColumnarValue::Scalar(ScalarValue::Utf8(Some(String::from("alphabe")))),
             ],
@@ -270,7 +270,7 @@ mod tests {
         );
         test_function!(
             BTrimFunc::new(),
-            &[
+            vec![
                 
ColumnarValue::Scalar(ScalarValue::Utf8(Some(String::from("alphabet")))),
                 ColumnarValue::Scalar(ScalarValue::Utf8(None)),
             ],
diff --git a/datafusion/functions/src/string/concat.rs 
b/datafusion/functions/src/string/concat.rs
index 576c891ce4..895a7cdbf3 100644
--- a/datafusion/functions/src/string/concat.rs
+++ b/datafusion/functions/src/string/concat.rs
@@ -388,7 +388,7 @@ mod tests {
     fn test_functions() -> Result<()> {
         test_function!(
             ConcatFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("aa")),
                 ColumnarValue::Scalar(ScalarValue::from("bb")),
                 ColumnarValue::Scalar(ScalarValue::from("cc")),
@@ -400,7 +400,7 @@ mod tests {
         );
         test_function!(
             ConcatFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("aa")),
                 ColumnarValue::Scalar(ScalarValue::Utf8(None)),
                 ColumnarValue::Scalar(ScalarValue::from("cc")),
@@ -412,7 +412,7 @@ mod tests {
         );
         test_function!(
             ConcatFunc::new(),
-            &[ColumnarValue::Scalar(ScalarValue::Utf8(None))],
+            vec![ColumnarValue::Scalar(ScalarValue::Utf8(None))],
             Ok(Some("")),
             &str,
             Utf8,
@@ -420,7 +420,7 @@ mod tests {
         );
         test_function!(
             ConcatFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("aa")),
                 ColumnarValue::Scalar(ScalarValue::Utf8View(None)),
                 ColumnarValue::Scalar(ScalarValue::LargeUtf8(None)),
@@ -433,7 +433,7 @@ mod tests {
         );
         test_function!(
             ConcatFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("aa")),
                 ColumnarValue::Scalar(ScalarValue::LargeUtf8(None)),
                 ColumnarValue::Scalar(ScalarValue::from("cc")),
@@ -445,7 +445,7 @@ mod tests {
         );
         test_function!(
             ConcatFunc::new(),
-            &[
+            vec![
                 
ColumnarValue::Scalar(ScalarValue::Utf8View(Some("aa".to_string()))),
                 
ColumnarValue::Scalar(ScalarValue::Utf8(Some("cc".to_string()))),
             ],
diff --git a/datafusion/functions/src/string/concat_ws.rs 
b/datafusion/functions/src/string/concat_ws.rs
index 610c4f0be6..7db8dbec4a 100644
--- a/datafusion/functions/src/string/concat_ws.rs
+++ b/datafusion/functions/src/string/concat_ws.rs
@@ -404,7 +404,7 @@ mod tests {
     fn test_functions() -> Result<()> {
         test_function!(
             ConcatWsFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("|")),
                 ColumnarValue::Scalar(ScalarValue::from("aa")),
                 ColumnarValue::Scalar(ScalarValue::from("bb")),
@@ -417,7 +417,7 @@ mod tests {
         );
         test_function!(
             ConcatWsFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("|")),
                 ColumnarValue::Scalar(ScalarValue::Utf8(None)),
             ],
@@ -428,7 +428,7 @@ mod tests {
         );
         test_function!(
             ConcatWsFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::Utf8(None)),
                 ColumnarValue::Scalar(ScalarValue::from("aa")),
                 ColumnarValue::Scalar(ScalarValue::from("bb")),
@@ -441,7 +441,7 @@ mod tests {
         );
         test_function!(
             ConcatWsFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("|")),
                 ColumnarValue::Scalar(ScalarValue::from("aa")),
                 ColumnarValue::Scalar(ScalarValue::Utf8(None)),
diff --git a/datafusion/functions/src/string/ends_with.rs 
b/datafusion/functions/src/string/ends_with.rs
index fc7fc04f43..1632fdd994 100644
--- a/datafusion/functions/src/string/ends_with.rs
+++ b/datafusion/functions/src/string/ends_with.rs
@@ -138,7 +138,7 @@ mod tests {
     fn test_functions() -> Result<()> {
         test_function!(
             EndsWithFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("alphabet")),
                 ColumnarValue::Scalar(ScalarValue::from("alph")),
             ],
@@ -149,7 +149,7 @@ mod tests {
         );
         test_function!(
             EndsWithFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("alphabet")),
                 ColumnarValue::Scalar(ScalarValue::from("bet")),
             ],
@@ -160,7 +160,7 @@ mod tests {
         );
         test_function!(
             EndsWithFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::Utf8(None)),
                 ColumnarValue::Scalar(ScalarValue::from("alph")),
             ],
@@ -171,7 +171,7 @@ mod tests {
         );
         test_function!(
             EndsWithFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("alphabet")),
                 ColumnarValue::Scalar(ScalarValue::Utf8(None)),
             ],
diff --git a/datafusion/functions/src/string/initcap.rs 
b/datafusion/functions/src/string/initcap.rs
index a9090b0a6f..338a89091d 100644
--- a/datafusion/functions/src/string/initcap.rs
+++ b/datafusion/functions/src/string/initcap.rs
@@ -163,7 +163,7 @@ mod tests {
     fn test_functions() -> Result<()> {
         test_function!(
             InitcapFunc::new(),
-            &[ColumnarValue::Scalar(ScalarValue::from("hi THOMAS"))],
+            vec![ColumnarValue::Scalar(ScalarValue::from("hi THOMAS"))],
             Ok(Some("Hi Thomas")),
             &str,
             Utf8,
@@ -171,7 +171,7 @@ mod tests {
         );
         test_function!(
             InitcapFunc::new(),
-            &[ColumnarValue::Scalar(ScalarValue::from(""))],
+            vec![ColumnarValue::Scalar(ScalarValue::from(""))],
             Ok(Some("")),
             &str,
             Utf8,
@@ -179,7 +179,7 @@ mod tests {
         );
         test_function!(
             InitcapFunc::new(),
-            &[ColumnarValue::Scalar(ScalarValue::from(""))],
+            vec![ColumnarValue::Scalar(ScalarValue::from(""))],
             Ok(Some("")),
             &str,
             Utf8,
@@ -187,7 +187,7 @@ mod tests {
         );
         test_function!(
             InitcapFunc::new(),
-            &[ColumnarValue::Scalar(ScalarValue::Utf8(None))],
+            vec![ColumnarValue::Scalar(ScalarValue::Utf8(None))],
             Ok(None),
             &str,
             Utf8,
@@ -195,7 +195,7 @@ mod tests {
         );
         test_function!(
             InitcapFunc::new(),
-            &[ColumnarValue::Scalar(ScalarValue::Utf8View(Some(
+            vec![ColumnarValue::Scalar(ScalarValue::Utf8View(Some(
                 "hi THOMAS".to_string()
             )))],
             Ok(Some("Hi Thomas")),
@@ -205,7 +205,7 @@ mod tests {
         );
         test_function!(
             InitcapFunc::new(),
-            &[ColumnarValue::Scalar(ScalarValue::Utf8View(Some(
+            vec![ColumnarValue::Scalar(ScalarValue::Utf8View(Some(
                 "hi THOMAS wIth M0re ThAN 12 ChaRs".to_string()
             )))],
             Ok(Some("Hi Thomas With M0re Than 12 Chars")),
@@ -215,7 +215,7 @@ mod tests {
         );
         test_function!(
             InitcapFunc::new(),
-            &[ColumnarValue::Scalar(ScalarValue::Utf8View(Some(
+            vec![ColumnarValue::Scalar(ScalarValue::Utf8View(Some(
                 "".to_string()
             )))],
             Ok(Some("")),
@@ -225,7 +225,7 @@ mod tests {
         );
         test_function!(
             InitcapFunc::new(),
-            &[ColumnarValue::Scalar(ScalarValue::Utf8View(None))],
+            vec![ColumnarValue::Scalar(ScalarValue::Utf8View(None))],
             Ok(None),
             &str,
             Utf8,
diff --git a/datafusion/functions/src/string/ltrim.rs 
b/datafusion/functions/src/string/ltrim.rs
index e0e83d1b01..b3e7f0bf00 100644
--- a/datafusion/functions/src/string/ltrim.rs
+++ b/datafusion/functions/src/string/ltrim.rs
@@ -148,7 +148,7 @@ mod tests {
         // String view cases for checking normal logic
         test_function!(
             LtrimFunc::new(),
-            &[ColumnarValue::Scalar(ScalarValue::Utf8View(Some(
+            vec![ColumnarValue::Scalar(ScalarValue::Utf8View(Some(
                 String::from("alphabet  ")
             ))),],
             Ok(Some("alphabet  ")),
@@ -158,7 +158,7 @@ mod tests {
         );
         test_function!(
             LtrimFunc::new(),
-            &[ColumnarValue::Scalar(ScalarValue::Utf8View(Some(
+            vec![ColumnarValue::Scalar(ScalarValue::Utf8View(Some(
                 String::from("  alphabet  ")
             ))),],
             Ok(Some("alphabet  ")),
@@ -168,7 +168,7 @@ mod tests {
         );
         test_function!(
             LtrimFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::Utf8View(Some(String::from(
                     "alphabet"
                 )))),
@@ -181,7 +181,7 @@ mod tests {
         );
         test_function!(
             LtrimFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::Utf8View(Some(String::from(
                     "alphabet"
                 )))),
@@ -196,7 +196,7 @@ mod tests {
         );
         test_function!(
             LtrimFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::Utf8View(Some(String::from(
                     "alphabet"
                 )))),
@@ -210,7 +210,7 @@ mod tests {
         // Special string view case for checking unlined output(len > 12)
         test_function!(
             LtrimFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::Utf8View(Some(String::from(
                     "xxxalphabetalphabet"
                 )))),
@@ -224,7 +224,7 @@ mod tests {
         // String cases
         test_function!(
             LtrimFunc::new(),
-            &[ColumnarValue::Scalar(ScalarValue::Utf8(Some(
+            vec![ColumnarValue::Scalar(ScalarValue::Utf8(Some(
                 String::from("alphabet  ")
             ))),],
             Ok(Some("alphabet  ")),
@@ -234,7 +234,7 @@ mod tests {
         );
         test_function!(
             LtrimFunc::new(),
-            &[ColumnarValue::Scalar(ScalarValue::Utf8(Some(
+            vec![ColumnarValue::Scalar(ScalarValue::Utf8(Some(
                 String::from("alphabet  ")
             ))),],
             Ok(Some("alphabet  ")),
@@ -244,7 +244,7 @@ mod tests {
         );
         test_function!(
             LtrimFunc::new(),
-            &[
+            vec![
                 
ColumnarValue::Scalar(ScalarValue::Utf8(Some(String::from("alphabet")))),
                 
ColumnarValue::Scalar(ScalarValue::Utf8(Some(String::from("t")))),
             ],
@@ -255,7 +255,7 @@ mod tests {
         );
         test_function!(
             LtrimFunc::new(),
-            &[
+            vec![
                 
ColumnarValue::Scalar(ScalarValue::Utf8(Some(String::from("alphabet")))),
                 
ColumnarValue::Scalar(ScalarValue::Utf8(Some(String::from("alphabe")))),
             ],
@@ -266,7 +266,7 @@ mod tests {
         );
         test_function!(
             LtrimFunc::new(),
-            &[
+            vec![
                 
ColumnarValue::Scalar(ScalarValue::Utf8(Some(String::from("alphabet")))),
                 ColumnarValue::Scalar(ScalarValue::Utf8(None)),
             ],
diff --git a/datafusion/functions/src/string/octet_length.rs 
b/datafusion/functions/src/string/octet_length.rs
index 2dbfa6746d..26355556ff 100644
--- a/datafusion/functions/src/string/octet_length.rs
+++ b/datafusion/functions/src/string/octet_length.rs
@@ -140,7 +140,7 @@ mod tests {
     fn test_functions() -> Result<()> {
         test_function!(
             OctetLengthFunc::new(),
-            &[ColumnarValue::Scalar(ScalarValue::Int32(Some(12)))],
+            vec![ColumnarValue::Scalar(ScalarValue::Int32(Some(12)))],
             exec_err!(
                 "The OCTET_LENGTH function can only accept strings, but got 
Int32."
             ),
@@ -150,7 +150,7 @@ mod tests {
         );
         test_function!(
             OctetLengthFunc::new(),
-            &[ColumnarValue::Array(Arc::new(StringArray::from(vec![
+            vec![ColumnarValue::Array(Arc::new(StringArray::from(vec![
                 String::from("chars"),
                 String::from("chars2"),
             ])))],
@@ -161,7 +161,7 @@ mod tests {
         );
         test_function!(
             OctetLengthFunc::new(),
-            &[
+            vec![
                 
ColumnarValue::Scalar(ScalarValue::Utf8(Some(String::from("chars")))),
                 
ColumnarValue::Scalar(ScalarValue::Utf8(Some(String::from("chars"))))
             ],
@@ -172,7 +172,7 @@ mod tests {
         );
         test_function!(
             OctetLengthFunc::new(),
-            &[ColumnarValue::Scalar(ScalarValue::Utf8(Some(
+            vec![ColumnarValue::Scalar(ScalarValue::Utf8(Some(
                 String::from("chars")
             )))],
             Ok(Some(5)),
@@ -182,7 +182,7 @@ mod tests {
         );
         test_function!(
             OctetLengthFunc::new(),
-            &[ColumnarValue::Scalar(ScalarValue::Utf8(Some(
+            vec![ColumnarValue::Scalar(ScalarValue::Utf8(Some(
                 String::from("josé")
             )))],
             Ok(Some(5)),
@@ -192,7 +192,7 @@ mod tests {
         );
         test_function!(
             OctetLengthFunc::new(),
-            &[ColumnarValue::Scalar(ScalarValue::Utf8(Some(
+            vec![ColumnarValue::Scalar(ScalarValue::Utf8(Some(
                 String::from("")
             )))],
             Ok(Some(0)),
@@ -202,7 +202,7 @@ mod tests {
         );
         test_function!(
             OctetLengthFunc::new(),
-            &[ColumnarValue::Scalar(ScalarValue::Utf8(None))],
+            vec![ColumnarValue::Scalar(ScalarValue::Utf8(None))],
             Ok(None),
             i32,
             Int32,
@@ -210,7 +210,7 @@ mod tests {
         );
         test_function!(
             OctetLengthFunc::new(),
-            &[ColumnarValue::Scalar(ScalarValue::Utf8View(Some(
+            vec![ColumnarValue::Scalar(ScalarValue::Utf8View(Some(
                 String::from("joséjoséjoséjosé")
             )))],
             Ok(Some(20)),
@@ -220,7 +220,7 @@ mod tests {
         );
         test_function!(
             OctetLengthFunc::new(),
-            &[ColumnarValue::Scalar(ScalarValue::Utf8View(Some(
+            vec![ColumnarValue::Scalar(ScalarValue::Utf8View(Some(
                 String::from("josé")
             )))],
             Ok(Some(5)),
@@ -230,7 +230,7 @@ mod tests {
         );
         test_function!(
             OctetLengthFunc::new(),
-            &[ColumnarValue::Scalar(ScalarValue::Utf8View(Some(
+            vec![ColumnarValue::Scalar(ScalarValue::Utf8View(Some(
                 String::from("")
             )))],
             Ok(Some(0)),
diff --git a/datafusion/functions/src/string/repeat.rs 
b/datafusion/functions/src/string/repeat.rs
index 4140a9b913..d16508c6af 100644
--- a/datafusion/functions/src/string/repeat.rs
+++ b/datafusion/functions/src/string/repeat.rs
@@ -171,7 +171,7 @@ mod tests {
     fn test_functions() -> Result<()> {
         test_function!(
             RepeatFunc::new(),
-            &[
+            vec![
                 
ColumnarValue::Scalar(ScalarValue::Utf8(Some(String::from("Pg")))),
                 ColumnarValue::Scalar(ScalarValue::Int64(Some(4))),
             ],
@@ -182,7 +182,7 @@ mod tests {
         );
         test_function!(
             RepeatFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::Utf8(None)),
                 ColumnarValue::Scalar(ScalarValue::Int64(Some(4))),
             ],
@@ -193,7 +193,7 @@ mod tests {
         );
         test_function!(
             RepeatFunc::new(),
-            &[
+            vec![
                 
ColumnarValue::Scalar(ScalarValue::Utf8(Some(String::from("Pg")))),
                 ColumnarValue::Scalar(ScalarValue::Int64(None)),
             ],
@@ -205,7 +205,7 @@ mod tests {
 
         test_function!(
             RepeatFunc::new(),
-            &[
+            vec![
                 
ColumnarValue::Scalar(ScalarValue::Utf8View(Some(String::from("Pg")))),
                 ColumnarValue::Scalar(ScalarValue::Int64(Some(4))),
             ],
@@ -216,7 +216,7 @@ mod tests {
         );
         test_function!(
             RepeatFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::Utf8View(None)),
                 ColumnarValue::Scalar(ScalarValue::Int64(Some(4))),
             ],
@@ -227,7 +227,7 @@ mod tests {
         );
         test_function!(
             RepeatFunc::new(),
-            &[
+            vec![
                 
ColumnarValue::Scalar(ScalarValue::Utf8View(Some(String::from("Pg")))),
                 ColumnarValue::Scalar(ScalarValue::Int64(None)),
             ],
diff --git a/datafusion/functions/src/string/replace.rs 
b/datafusion/functions/src/string/replace.rs
index 2439799f96..9b71d3871e 100644
--- a/datafusion/functions/src/string/replace.rs
+++ b/datafusion/functions/src/string/replace.rs
@@ -157,7 +157,7 @@ mod tests {
     fn test_functions() -> Result<()> {
         test_function!(
             ReplaceFunc::new(),
-            &[
+            vec![
                 
ColumnarValue::Scalar(ScalarValue::Utf8(Some(String::from("aabbdqcbb")))),
                 
ColumnarValue::Scalar(ScalarValue::Utf8(Some(String::from("bb")))),
                 
ColumnarValue::Scalar(ScalarValue::Utf8(Some(String::from("ccc")))),
@@ -170,7 +170,7 @@ mod tests {
 
         test_function!(
             ReplaceFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::LargeUtf8(Some(String::from(
                     "aabbb"
                 )))),
@@ -185,7 +185,7 @@ mod tests {
 
         test_function!(
             ReplaceFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::Utf8View(Some(String::from(
                     "aabbbcw"
                 )))),
diff --git a/datafusion/functions/src/string/rtrim.rs 
b/datafusion/functions/src/string/rtrim.rs
index b4fe8d4324..ff8430f153 100644
--- a/datafusion/functions/src/string/rtrim.rs
+++ b/datafusion/functions/src/string/rtrim.rs
@@ -151,7 +151,7 @@ mod tests {
         // String view cases for checking normal logic
         test_function!(
             RtrimFunc::new(),
-            &[ColumnarValue::Scalar(ScalarValue::Utf8View(Some(
+            vec![ColumnarValue::Scalar(ScalarValue::Utf8View(Some(
                 String::from("alphabet  ")
             ))),],
             Ok(Some("alphabet")),
@@ -161,7 +161,7 @@ mod tests {
         );
         test_function!(
             RtrimFunc::new(),
-            &[ColumnarValue::Scalar(ScalarValue::Utf8View(Some(
+            vec![ColumnarValue::Scalar(ScalarValue::Utf8View(Some(
                 String::from("  alphabet  ")
             ))),],
             Ok(Some("  alphabet")),
@@ -171,7 +171,7 @@ mod tests {
         );
         test_function!(
             RtrimFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::Utf8View(Some(String::from(
                     "alphabet"
                 )))),
@@ -184,7 +184,7 @@ mod tests {
         );
         test_function!(
             RtrimFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::Utf8View(Some(String::from(
                     "alphabet"
                 )))),
@@ -199,7 +199,7 @@ mod tests {
         );
         test_function!(
             RtrimFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::Utf8View(Some(String::from(
                     "alphabet"
                 )))),
@@ -213,7 +213,7 @@ mod tests {
         // Special string view case for checking unlined output(len > 12)
         test_function!(
             RtrimFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::Utf8View(Some(String::from(
                     "alphabetalphabetxxx"
                 )))),
@@ -227,7 +227,7 @@ mod tests {
         // String cases
         test_function!(
             RtrimFunc::new(),
-            &[ColumnarValue::Scalar(ScalarValue::Utf8(Some(
+            vec![ColumnarValue::Scalar(ScalarValue::Utf8(Some(
                 String::from("alphabet  ")
             ))),],
             Ok(Some("alphabet")),
@@ -237,7 +237,7 @@ mod tests {
         );
         test_function!(
             RtrimFunc::new(),
-            &[ColumnarValue::Scalar(ScalarValue::Utf8(Some(
+            vec![ColumnarValue::Scalar(ScalarValue::Utf8(Some(
                 String::from("  alphabet  ")
             ))),],
             Ok(Some("  alphabet")),
@@ -247,7 +247,7 @@ mod tests {
         );
         test_function!(
             RtrimFunc::new(),
-            &[
+            vec![
                 
ColumnarValue::Scalar(ScalarValue::Utf8(Some(String::from("alphabet")))),
                 ColumnarValue::Scalar(ScalarValue::Utf8(Some(String::from("t 
")))),
             ],
@@ -258,7 +258,7 @@ mod tests {
         );
         test_function!(
             RtrimFunc::new(),
-            &[
+            vec![
                 
ColumnarValue::Scalar(ScalarValue::Utf8(Some(String::from("alphabet")))),
                 
ColumnarValue::Scalar(ScalarValue::Utf8(Some(String::from("alphabe")))),
             ],
@@ -269,7 +269,7 @@ mod tests {
         );
         test_function!(
             RtrimFunc::new(),
-            &[
+            vec![
                 
ColumnarValue::Scalar(ScalarValue::Utf8(Some(String::from("alphabet")))),
                 ColumnarValue::Scalar(ScalarValue::Utf8(None)),
             ],
diff --git a/datafusion/functions/src/string/split_part.rs 
b/datafusion/functions/src/string/split_part.rs
index e55325db75..40bdd3ad01 100644
--- a/datafusion/functions/src/string/split_part.rs
+++ b/datafusion/functions/src/string/split_part.rs
@@ -270,7 +270,7 @@ mod tests {
     fn test_functions() -> Result<()> {
         test_function!(
             SplitPartFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::Utf8(Some(String::from(
                     "abc~@~def~@~ghi"
                 )))),
@@ -284,7 +284,7 @@ mod tests {
         );
         test_function!(
             SplitPartFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::Utf8(Some(String::from(
                     "abc~@~def~@~ghi"
                 )))),
@@ -298,7 +298,7 @@ mod tests {
         );
         test_function!(
             SplitPartFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::Utf8(Some(String::from(
                     "abc~@~def~@~ghi"
                 )))),
@@ -312,7 +312,7 @@ mod tests {
         );
         test_function!(
             SplitPartFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::Utf8(Some(String::from(
                     "abc~@~def~@~ghi"
                 )))),
diff --git a/datafusion/functions/src/string/starts_with.rs 
b/datafusion/functions/src/string/starts_with.rs
index 36dbd8167b..7354fda095 100644
--- a/datafusion/functions/src/string/starts_with.rs
+++ b/datafusion/functions/src/string/starts_with.rs
@@ -159,7 +159,7 @@ mod tests {
         for (args, expected) in test_cases {
             test_function!(
                 StartsWithFunc::new(),
-                &args,
+                args,
                 Ok(expected),
                 bool,
                 Boolean,
diff --git a/datafusion/functions/src/unicode/character_length.rs 
b/datafusion/functions/src/unicode/character_length.rs
index 726822a8f8..822bdca9ac 100644
--- a/datafusion/functions/src/unicode/character_length.rs
+++ b/datafusion/functions/src/unicode/character_length.rs
@@ -176,7 +176,7 @@ mod tests {
         ($INPUT:expr, $EXPECTED:expr) => {
             test_function!(
                 CharacterLengthFunc::new(),
-                &[ColumnarValue::Scalar(ScalarValue::Utf8($INPUT))],
+                vec![ColumnarValue::Scalar(ScalarValue::Utf8($INPUT))],
                 $EXPECTED,
                 i32,
                 Int32,
@@ -185,7 +185,7 @@ mod tests {
 
             test_function!(
                 CharacterLengthFunc::new(),
-                &[ColumnarValue::Scalar(ScalarValue::LargeUtf8($INPUT))],
+                vec![ColumnarValue::Scalar(ScalarValue::LargeUtf8($INPUT))],
                 $EXPECTED,
                 i64,
                 Int64,
@@ -194,7 +194,7 @@ mod tests {
 
             test_function!(
                 CharacterLengthFunc::new(),
-                &[ColumnarValue::Scalar(ScalarValue::Utf8View($INPUT))],
+                vec![ColumnarValue::Scalar(ScalarValue::Utf8View($INPUT))],
                 $EXPECTED,
                 i32,
                 Int32,
diff --git a/datafusion/functions/src/unicode/left.rs 
b/datafusion/functions/src/unicode/left.rs
index ef2802340b..e583523d84 100644
--- a/datafusion/functions/src/unicode/left.rs
+++ b/datafusion/functions/src/unicode/left.rs
@@ -188,7 +188,7 @@ mod tests {
     fn test_functions() -> Result<()> {
         test_function!(
             LeftFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("abcde")),
                 ColumnarValue::Scalar(ScalarValue::from(2i64)),
             ],
@@ -199,7 +199,7 @@ mod tests {
         );
         test_function!(
             LeftFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("abcde")),
                 ColumnarValue::Scalar(ScalarValue::from(200i64)),
             ],
@@ -210,7 +210,7 @@ mod tests {
         );
         test_function!(
             LeftFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("abcde")),
                 ColumnarValue::Scalar(ScalarValue::from(-2i64)),
             ],
@@ -221,7 +221,7 @@ mod tests {
         );
         test_function!(
             LeftFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("abcde")),
                 ColumnarValue::Scalar(ScalarValue::from(-200i64)),
             ],
@@ -232,7 +232,7 @@ mod tests {
         );
         test_function!(
             LeftFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("abcde")),
                 ColumnarValue::Scalar(ScalarValue::from(0i64)),
             ],
@@ -243,7 +243,7 @@ mod tests {
         );
         test_function!(
             LeftFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::Utf8(None)),
                 ColumnarValue::Scalar(ScalarValue::from(2i64)),
             ],
@@ -254,7 +254,7 @@ mod tests {
         );
         test_function!(
             LeftFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("abcde")),
                 ColumnarValue::Scalar(ScalarValue::Int64(None)),
             ],
@@ -265,7 +265,7 @@ mod tests {
         );
         test_function!(
             LeftFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("joséésoj")),
                 ColumnarValue::Scalar(ScalarValue::from(5i64)),
             ],
@@ -276,7 +276,7 @@ mod tests {
         );
         test_function!(
             LeftFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("joséésoj")),
                 ColumnarValue::Scalar(ScalarValue::from(-3i64)),
             ],
diff --git a/datafusion/functions/src/unicode/lpad.rs 
b/datafusion/functions/src/unicode/lpad.rs
index 6c8a4ec97b..f1750d2277 100644
--- a/datafusion/functions/src/unicode/lpad.rs
+++ b/datafusion/functions/src/unicode/lpad.rs
@@ -298,7 +298,7 @@ mod tests {
         ($INPUT:expr, $LENGTH:expr, $EXPECTED:expr) => {
             test_function!(
                 LPadFunc::new(),
-                &[
+                vec![
                     ColumnarValue::Scalar(ScalarValue::Utf8($INPUT)),
                     ColumnarValue::Scalar($LENGTH)
                 ],
@@ -310,7 +310,7 @@ mod tests {
 
             test_function!(
                 LPadFunc::new(),
-                &[
+                vec![
                     ColumnarValue::Scalar(ScalarValue::LargeUtf8($INPUT)),
                     ColumnarValue::Scalar($LENGTH)
                 ],
@@ -322,7 +322,7 @@ mod tests {
 
             test_function!(
                 LPadFunc::new(),
-                &[
+                vec![
                     ColumnarValue::Scalar(ScalarValue::Utf8View($INPUT)),
                     ColumnarValue::Scalar($LENGTH)
                 ],
@@ -337,7 +337,7 @@ mod tests {
             // utf8, utf8
             test_function!(
                 LPadFunc::new(),
-                &[
+                vec![
                     ColumnarValue::Scalar(ScalarValue::Utf8($INPUT)),
                     ColumnarValue::Scalar($LENGTH),
                     ColumnarValue::Scalar(ScalarValue::Utf8($REPLACE))
@@ -350,7 +350,7 @@ mod tests {
             // utf8, largeutf8
             test_function!(
                 LPadFunc::new(),
-                &[
+                vec![
                     ColumnarValue::Scalar(ScalarValue::Utf8($INPUT)),
                     ColumnarValue::Scalar($LENGTH),
                     ColumnarValue::Scalar(ScalarValue::LargeUtf8($REPLACE))
@@ -363,7 +363,7 @@ mod tests {
             // utf8, utf8view
             test_function!(
                 LPadFunc::new(),
-                &[
+                vec![
                     ColumnarValue::Scalar(ScalarValue::Utf8($INPUT)),
                     ColumnarValue::Scalar($LENGTH),
                     ColumnarValue::Scalar(ScalarValue::Utf8View($REPLACE))
@@ -377,7 +377,7 @@ mod tests {
             // largeutf8, utf8
             test_function!(
                 LPadFunc::new(),
-                &[
+                vec![
                     ColumnarValue::Scalar(ScalarValue::LargeUtf8($INPUT)),
                     ColumnarValue::Scalar($LENGTH),
                     ColumnarValue::Scalar(ScalarValue::Utf8($REPLACE))
@@ -390,7 +390,7 @@ mod tests {
             // largeutf8, largeutf8
             test_function!(
                 LPadFunc::new(),
-                &[
+                vec![
                     ColumnarValue::Scalar(ScalarValue::LargeUtf8($INPUT)),
                     ColumnarValue::Scalar($LENGTH),
                     ColumnarValue::Scalar(ScalarValue::LargeUtf8($REPLACE))
@@ -403,7 +403,7 @@ mod tests {
             // largeutf8, utf8view
             test_function!(
                 LPadFunc::new(),
-                &[
+                vec![
                     ColumnarValue::Scalar(ScalarValue::LargeUtf8($INPUT)),
                     ColumnarValue::Scalar($LENGTH),
                     ColumnarValue::Scalar(ScalarValue::Utf8View($REPLACE))
@@ -417,7 +417,7 @@ mod tests {
             // utf8view, utf8
             test_function!(
                 LPadFunc::new(),
-                &[
+                vec![
                     ColumnarValue::Scalar(ScalarValue::Utf8View($INPUT)),
                     ColumnarValue::Scalar($LENGTH),
                     ColumnarValue::Scalar(ScalarValue::Utf8($REPLACE))
@@ -430,7 +430,7 @@ mod tests {
             // utf8view, largeutf8
             test_function!(
                 LPadFunc::new(),
-                &[
+                vec![
                     ColumnarValue::Scalar(ScalarValue::Utf8View($INPUT)),
                     ColumnarValue::Scalar($LENGTH),
                     ColumnarValue::Scalar(ScalarValue::LargeUtf8($REPLACE))
@@ -443,7 +443,7 @@ mod tests {
             // utf8view, utf8view
             test_function!(
                 LPadFunc::new(),
-                &[
+                vec![
                     ColumnarValue::Scalar(ScalarValue::Utf8View($INPUT)),
                     ColumnarValue::Scalar($LENGTH),
                     ColumnarValue::Scalar(ScalarValue::Utf8View($REPLACE))
diff --git a/datafusion/functions/src/unicode/reverse.rs 
b/datafusion/functions/src/unicode/reverse.rs
index 38c1f23cbd..8e3cf8845f 100644
--- a/datafusion/functions/src/unicode/reverse.rs
+++ b/datafusion/functions/src/unicode/reverse.rs
@@ -151,7 +151,7 @@ mod tests {
         ($INPUT:expr, $EXPECTED:expr) => {
             test_function!(
                 ReverseFunc::new(),
-                &[ColumnarValue::Scalar(ScalarValue::Utf8($INPUT))],
+                vec![ColumnarValue::Scalar(ScalarValue::Utf8($INPUT))],
                 $EXPECTED,
                 &str,
                 Utf8,
@@ -160,7 +160,7 @@ mod tests {
 
             test_function!(
                 ReverseFunc::new(),
-                &[ColumnarValue::Scalar(ScalarValue::LargeUtf8($INPUT))],
+                vec![ColumnarValue::Scalar(ScalarValue::LargeUtf8($INPUT))],
                 $EXPECTED,
                 &str,
                 LargeUtf8,
@@ -169,7 +169,7 @@ mod tests {
 
             test_function!(
                 ReverseFunc::new(),
-                &[ColumnarValue::Scalar(ScalarValue::Utf8View($INPUT))],
+                vec![ColumnarValue::Scalar(ScalarValue::Utf8View($INPUT))],
                 $EXPECTED,
                 &str,
                 Utf8,
diff --git a/datafusion/functions/src/unicode/right.rs 
b/datafusion/functions/src/unicode/right.rs
index 1586e23eb8..4e414fbae5 100644
--- a/datafusion/functions/src/unicode/right.rs
+++ b/datafusion/functions/src/unicode/right.rs
@@ -192,7 +192,7 @@ mod tests {
     fn test_functions() -> Result<()> {
         test_function!(
             RightFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("abcde")),
                 ColumnarValue::Scalar(ScalarValue::from(2i64)),
             ],
@@ -203,7 +203,7 @@ mod tests {
         );
         test_function!(
             RightFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("abcde")),
                 ColumnarValue::Scalar(ScalarValue::from(200i64)),
             ],
@@ -214,7 +214,7 @@ mod tests {
         );
         test_function!(
             RightFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("abcde")),
                 ColumnarValue::Scalar(ScalarValue::from(-2i64)),
             ],
@@ -225,7 +225,7 @@ mod tests {
         );
         test_function!(
             RightFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("abcde")),
                 ColumnarValue::Scalar(ScalarValue::from(-200i64)),
             ],
@@ -236,7 +236,7 @@ mod tests {
         );
         test_function!(
             RightFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("abcde")),
                 ColumnarValue::Scalar(ScalarValue::from(0i64)),
             ],
@@ -247,7 +247,7 @@ mod tests {
         );
         test_function!(
             RightFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::Utf8(None)),
                 ColumnarValue::Scalar(ScalarValue::from(2i64)),
             ],
@@ -258,7 +258,7 @@ mod tests {
         );
         test_function!(
             RightFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("abcde")),
                 ColumnarValue::Scalar(ScalarValue::Int64(None)),
             ],
@@ -269,7 +269,7 @@ mod tests {
         );
         test_function!(
             RightFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("joséésoj")),
                 ColumnarValue::Scalar(ScalarValue::from(5i64)),
             ],
@@ -280,7 +280,7 @@ mod tests {
         );
         test_function!(
             RightFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("joséésoj")),
                 ColumnarValue::Scalar(ScalarValue::from(-3i64)),
             ],
diff --git a/datafusion/functions/src/unicode/rpad.rs 
b/datafusion/functions/src/unicode/rpad.rs
index 6e6bde3e17..d5a0079c72 100644
--- a/datafusion/functions/src/unicode/rpad.rs
+++ b/datafusion/functions/src/unicode/rpad.rs
@@ -319,7 +319,7 @@ mod tests {
     fn test_functions() -> Result<()> {
         test_function!(
             RPadFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("josé")),
                 ColumnarValue::Scalar(ScalarValue::from(5i64)),
             ],
@@ -330,7 +330,7 @@ mod tests {
         );
         test_function!(
             RPadFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("hi")),
                 ColumnarValue::Scalar(ScalarValue::from(5i64)),
             ],
@@ -341,7 +341,7 @@ mod tests {
         );
         test_function!(
             RPadFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("hi")),
                 ColumnarValue::Scalar(ScalarValue::from(0i64)),
             ],
@@ -352,7 +352,7 @@ mod tests {
         );
         test_function!(
             RPadFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("hi")),
                 ColumnarValue::Scalar(ScalarValue::Int64(None)),
             ],
@@ -363,7 +363,7 @@ mod tests {
         );
         test_function!(
             RPadFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::Utf8(None)),
                 ColumnarValue::Scalar(ScalarValue::from(5i64)),
             ],
@@ -374,7 +374,7 @@ mod tests {
         );
         test_function!(
             RPadFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("hi")),
                 ColumnarValue::Scalar(ScalarValue::from(5i64)),
                 ColumnarValue::Scalar(ScalarValue::from("xy")),
@@ -386,7 +386,7 @@ mod tests {
         );
         test_function!(
             RPadFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("hi")),
                 ColumnarValue::Scalar(ScalarValue::from(21i64)),
                 ColumnarValue::Scalar(ScalarValue::from("abcdef")),
@@ -398,7 +398,7 @@ mod tests {
         );
         test_function!(
             RPadFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("hi")),
                 ColumnarValue::Scalar(ScalarValue::from(5i64)),
                 ColumnarValue::Scalar(ScalarValue::from(" ")),
@@ -410,7 +410,7 @@ mod tests {
         );
         test_function!(
             RPadFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("hi")),
                 ColumnarValue::Scalar(ScalarValue::from(5i64)),
                 ColumnarValue::Scalar(ScalarValue::from("")),
@@ -422,7 +422,7 @@ mod tests {
         );
         test_function!(
             RPadFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::Utf8(None)),
                 ColumnarValue::Scalar(ScalarValue::from(5i64)),
                 ColumnarValue::Scalar(ScalarValue::from("xy")),
@@ -434,7 +434,7 @@ mod tests {
         );
         test_function!(
             RPadFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("hi")),
                 ColumnarValue::Scalar(ScalarValue::Int64(None)),
                 ColumnarValue::Scalar(ScalarValue::from("xy")),
@@ -446,7 +446,7 @@ mod tests {
         );
         test_function!(
             RPadFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("hi")),
                 ColumnarValue::Scalar(ScalarValue::from(5i64)),
                 ColumnarValue::Scalar(ScalarValue::Utf8(None)),
@@ -458,7 +458,7 @@ mod tests {
         );
         test_function!(
             RPadFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("josé")),
                 ColumnarValue::Scalar(ScalarValue::from(10i64)),
                 ColumnarValue::Scalar(ScalarValue::from("xy")),
@@ -470,7 +470,7 @@ mod tests {
         );
         test_function!(
             RPadFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("josé")),
                 ColumnarValue::Scalar(ScalarValue::from(10i64)),
                 ColumnarValue::Scalar(ScalarValue::from("éñ")),
diff --git a/datafusion/functions/src/unicode/strpos.rs 
b/datafusion/functions/src/unicode/strpos.rs
index 5d1986e44c..569af87a4b 100644
--- a/datafusion/functions/src/unicode/strpos.rs
+++ b/datafusion/functions/src/unicode/strpos.rs
@@ -218,7 +218,7 @@ mod tests {
         ($lhs:literal, $rhs:literal -> $result:literal; $t1:ident $t2:ident 
$t3:ident $t4:ident $t5:ident) => {
             test_function!(
                 StrposFunc::new(),
-                &[
+                vec![
                     
ColumnarValue::Scalar(ScalarValue::$t1(Some($lhs.to_owned()))),
                     
ColumnarValue::Scalar(ScalarValue::$t2(Some($rhs.to_owned()))),
                 ],
diff --git a/datafusion/functions/src/unicode/substr.rs 
b/datafusion/functions/src/unicode/substr.rs
index 0ac050c707..141984cf26 100644
--- a/datafusion/functions/src/unicode/substr.rs
+++ b/datafusion/functions/src/unicode/substr.rs
@@ -523,7 +523,7 @@ mod tests {
     fn test_functions() -> Result<()> {
         test_function!(
             SubstrFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::Utf8View(None)),
                 ColumnarValue::Scalar(ScalarValue::from(1i64)),
             ],
@@ -534,7 +534,7 @@ mod tests {
         );
         test_function!(
             SubstrFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::Utf8View(Some(String::from(
                     "alphabet"
                 )))),
@@ -547,7 +547,7 @@ mod tests {
         );
         test_function!(
             SubstrFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::Utf8View(Some(String::from(
                     "this és longer than 12B"
                 )))),
@@ -561,7 +561,7 @@ mod tests {
         );
         test_function!(
             SubstrFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::Utf8View(Some(String::from(
                     "this is longer than 12B"
                 )))),
@@ -574,7 +574,7 @@ mod tests {
         );
         test_function!(
             SubstrFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::Utf8View(Some(String::from(
                     "joséésoj"
                 )))),
@@ -587,7 +587,7 @@ mod tests {
         );
         test_function!(
             SubstrFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::Utf8View(Some(String::from(
                     "alphabet"
                 )))),
@@ -601,7 +601,7 @@ mod tests {
         );
         test_function!(
             SubstrFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::Utf8View(Some(String::from(
                     "alphabet"
                 )))),
@@ -615,7 +615,7 @@ mod tests {
         );
         test_function!(
             SubstrFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("alphabet")),
                 ColumnarValue::Scalar(ScalarValue::from(0i64)),
             ],
@@ -626,7 +626,7 @@ mod tests {
         );
         test_function!(
             SubstrFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("joséésoj")),
                 ColumnarValue::Scalar(ScalarValue::from(5i64)),
             ],
@@ -637,7 +637,7 @@ mod tests {
         );
         test_function!(
             SubstrFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("joséésoj")),
                 ColumnarValue::Scalar(ScalarValue::from(-5i64)),
             ],
@@ -648,7 +648,7 @@ mod tests {
         );
         test_function!(
             SubstrFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("alphabet")),
                 ColumnarValue::Scalar(ScalarValue::from(1i64)),
             ],
@@ -659,7 +659,7 @@ mod tests {
         );
         test_function!(
             SubstrFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("alphabet")),
                 ColumnarValue::Scalar(ScalarValue::from(2i64)),
             ],
@@ -670,7 +670,7 @@ mod tests {
         );
         test_function!(
             SubstrFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("alphabet")),
                 ColumnarValue::Scalar(ScalarValue::from(3i64)),
             ],
@@ -681,7 +681,7 @@ mod tests {
         );
         test_function!(
             SubstrFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("alphabet")),
                 ColumnarValue::Scalar(ScalarValue::from(-3i64)),
             ],
@@ -692,7 +692,7 @@ mod tests {
         );
         test_function!(
             SubstrFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("alphabet")),
                 ColumnarValue::Scalar(ScalarValue::from(30i64)),
             ],
@@ -703,7 +703,7 @@ mod tests {
         );
         test_function!(
             SubstrFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("alphabet")),
                 ColumnarValue::Scalar(ScalarValue::Int64(None)),
             ],
@@ -714,7 +714,7 @@ mod tests {
         );
         test_function!(
             SubstrFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("alphabet")),
                 ColumnarValue::Scalar(ScalarValue::from(3i64)),
                 ColumnarValue::Scalar(ScalarValue::from(2i64)),
@@ -726,7 +726,7 @@ mod tests {
         );
         test_function!(
             SubstrFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("alphabet")),
                 ColumnarValue::Scalar(ScalarValue::from(3i64)),
                 ColumnarValue::Scalar(ScalarValue::from(20i64)),
@@ -738,7 +738,7 @@ mod tests {
         );
         test_function!(
             SubstrFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("alphabet")),
                 ColumnarValue::Scalar(ScalarValue::from(0i64)),
                 ColumnarValue::Scalar(ScalarValue::from(5i64)),
@@ -751,7 +751,7 @@ mod tests {
         // starting from 5 (10 + -5)
         test_function!(
             SubstrFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("alphabet")),
                 ColumnarValue::Scalar(ScalarValue::from(-5i64)),
                 ColumnarValue::Scalar(ScalarValue::from(10i64)),
@@ -764,7 +764,7 @@ mod tests {
         // starting from -1 (4 + -5)
         test_function!(
             SubstrFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("alphabet")),
                 ColumnarValue::Scalar(ScalarValue::from(-5i64)),
                 ColumnarValue::Scalar(ScalarValue::from(4i64)),
@@ -777,7 +777,7 @@ mod tests {
         // starting from 0 (5 + -5)
         test_function!(
             SubstrFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("alphabet")),
                 ColumnarValue::Scalar(ScalarValue::from(-5i64)),
                 ColumnarValue::Scalar(ScalarValue::from(5i64)),
@@ -789,7 +789,7 @@ mod tests {
         );
         test_function!(
             SubstrFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("alphabet")),
                 ColumnarValue::Scalar(ScalarValue::Int64(None)),
                 ColumnarValue::Scalar(ScalarValue::from(20i64)),
@@ -801,7 +801,7 @@ mod tests {
         );
         test_function!(
             SubstrFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("alphabet")),
                 ColumnarValue::Scalar(ScalarValue::from(3i64)),
                 ColumnarValue::Scalar(ScalarValue::Int64(None)),
@@ -813,7 +813,7 @@ mod tests {
         );
         test_function!(
             SubstrFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("alphabet")),
                 ColumnarValue::Scalar(ScalarValue::from(1i64)),
                 ColumnarValue::Scalar(ScalarValue::from(-1i64)),
@@ -825,7 +825,7 @@ mod tests {
         );
         test_function!(
             SubstrFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("joséésoj")),
                 ColumnarValue::Scalar(ScalarValue::from(5i64)),
                 ColumnarValue::Scalar(ScalarValue::from(2i64)),
@@ -851,7 +851,7 @@ mod tests {
         );
         test_function!(
             SubstrFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("abc")),
                 
ColumnarValue::Scalar(ScalarValue::from(-9223372036854775808i64)),
             ],
@@ -862,7 +862,7 @@ mod tests {
         );
         test_function!(
             SubstrFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("overflow")),
                 
ColumnarValue::Scalar(ScalarValue::from(-9223372036854775808i64)),
                 ColumnarValue::Scalar(ScalarValue::from(1i64)),
diff --git a/datafusion/functions/src/unicode/substrindex.rs 
b/datafusion/functions/src/unicode/substrindex.rs
index 825666b045..61cd989bb9 100644
--- a/datafusion/functions/src/unicode/substrindex.rs
+++ b/datafusion/functions/src/unicode/substrindex.rs
@@ -253,7 +253,7 @@ mod tests {
     fn test_functions() -> Result<()> {
         test_function!(
             SubstrIndexFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("www.apache.org")),
                 ColumnarValue::Scalar(ScalarValue::from(".")),
                 ColumnarValue::Scalar(ScalarValue::from(1i64)),
@@ -265,7 +265,7 @@ mod tests {
         );
         test_function!(
             SubstrIndexFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("www.apache.org")),
                 ColumnarValue::Scalar(ScalarValue::from(".")),
                 ColumnarValue::Scalar(ScalarValue::from(2i64)),
@@ -277,7 +277,7 @@ mod tests {
         );
         test_function!(
             SubstrIndexFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("www.apache.org")),
                 ColumnarValue::Scalar(ScalarValue::from(".")),
                 ColumnarValue::Scalar(ScalarValue::from(-2i64)),
@@ -289,7 +289,7 @@ mod tests {
         );
         test_function!(
             SubstrIndexFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("www.apache.org")),
                 ColumnarValue::Scalar(ScalarValue::from(".")),
                 ColumnarValue::Scalar(ScalarValue::from(-1i64)),
@@ -301,7 +301,7 @@ mod tests {
         );
         test_function!(
             SubstrIndexFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("www.apache.org")),
                 ColumnarValue::Scalar(ScalarValue::from(".")),
                 ColumnarValue::Scalar(ScalarValue::from(0i64)),
@@ -313,7 +313,7 @@ mod tests {
         );
         test_function!(
             SubstrIndexFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("")),
                 ColumnarValue::Scalar(ScalarValue::from(".")),
                 ColumnarValue::Scalar(ScalarValue::from(1i64)),
@@ -325,7 +325,7 @@ mod tests {
         );
         test_function!(
             SubstrIndexFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("www.apache.org")),
                 ColumnarValue::Scalar(ScalarValue::from("")),
                 ColumnarValue::Scalar(ScalarValue::from(1i64)),
diff --git a/datafusion/functions/src/unicode/translate.rs 
b/datafusion/functions/src/unicode/translate.rs
index 7806037771..9257b0b04e 100644
--- a/datafusion/functions/src/unicode/translate.rs
+++ b/datafusion/functions/src/unicode/translate.rs
@@ -201,7 +201,7 @@ mod tests {
     fn test_functions() -> Result<()> {
         test_function!(
             TranslateFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("12345")),
                 ColumnarValue::Scalar(ScalarValue::from("143")),
                 ColumnarValue::Scalar(ScalarValue::from("ax"))
@@ -213,7 +213,7 @@ mod tests {
         );
         test_function!(
             TranslateFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::Utf8(None)),
                 ColumnarValue::Scalar(ScalarValue::from("143")),
                 ColumnarValue::Scalar(ScalarValue::from("ax"))
@@ -225,7 +225,7 @@ mod tests {
         );
         test_function!(
             TranslateFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("12345")),
                 ColumnarValue::Scalar(ScalarValue::Utf8(None)),
                 ColumnarValue::Scalar(ScalarValue::from("ax"))
@@ -237,7 +237,7 @@ mod tests {
         );
         test_function!(
             TranslateFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("12345")),
                 ColumnarValue::Scalar(ScalarValue::from("143")),
                 ColumnarValue::Scalar(ScalarValue::Utf8(None))
@@ -249,7 +249,7 @@ mod tests {
         );
         test_function!(
             TranslateFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("é2íñ5")),
                 ColumnarValue::Scalar(ScalarValue::from("éñí")),
                 ColumnarValue::Scalar(ScalarValue::from("óü")),
@@ -262,7 +262,7 @@ mod tests {
         #[cfg(not(feature = "unicode_expressions"))]
         test_function!(
             TranslateFunc::new(),
-            &[
+            vec![
                 ColumnarValue::Scalar(ScalarValue::from("12345")),
                 ColumnarValue::Scalar(ScalarValue::from("143")),
                 ColumnarValue::Scalar(ScalarValue::from("ax")),
diff --git a/datafusion/physical-expr/src/scalar_function.rs 
b/datafusion/physical-expr/src/scalar_function.rs
index 45f77325ee..e312d5de59 100644
--- a/datafusion/physical-expr/src/scalar_function.rs
+++ b/datafusion/physical-expr/src/scalar_function.rs
@@ -134,20 +134,20 @@ impl PhysicalExpr for ScalarFunctionExpr {
     }
 
     fn evaluate(&self, batch: &RecordBatch) -> Result<ColumnarValue> {
-        let inputs = self
+        let args = self
             .args
             .iter()
             .map(|e| e.evaluate(batch))
             .collect::<Result<Vec<_>>>()?;
 
-        let input_empty = inputs.is_empty();
-        let input_all_scalar = inputs
+        let input_empty = args.is_empty();
+        let input_all_scalar = args
             .iter()
             .all(|arg| matches!(arg, ColumnarValue::Scalar(_)));
 
         // evaluate the function
         let output = self.fun.invoke_with_args(ScalarFunctionArgs {
-            args: inputs.as_slice(),
+            args,
             number_rows: batch.num_rows(),
             return_type: &self.return_type,
         })?;


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to