This is an automated email from the ASF dual-hosted git repository.

github-bot 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 240e2e39ae chore: enforce clippy lint needless_pass_by_value to 
datafusion-functions-nested (#18839)
240e2e39ae is described below

commit 240e2e39ae6e6afffbfabbcddc6b1e1f2f1b7eb2
Author: Dhanush <[email protected]>
AuthorDate: Sat Nov 22 07:21:04 2025 +0530

    chore: enforce clippy lint needless_pass_by_value to 
datafusion-functions-nested (#18839)
    
    ## Which issue does this PR close?
    - Closes #18835.
    - Part of #18503.
    
    ## What changes are included in this PR?
    enforce clippy lint `needless_pass_by_value` to
    `datafusion-functions-nested`
    
    ## Are these changes tested?
    yes
    
    ## Are there any user-facing changes?
    no
---
 datafusion/functions-nested/src/array_has.rs | 35 ++++++++--------
 datafusion/functions-nested/src/flatten.rs   | 12 +++---
 datafusion/functions-nested/src/lib.rs       |  3 ++
 datafusion/functions-nested/src/map.rs       | 56 +++++++++++++-------------
 datafusion/functions-nested/src/position.rs  |  4 +-
 datafusion/functions-nested/src/remove.rs    | 10 ++---
 datafusion/functions-nested/src/replace.rs   | 14 +++----
 datafusion/functions-nested/src/set_ops.rs   |  2 +-
 datafusion/functions-nested/src/string.rs    | 60 ++++++++++++++--------------
 9 files changed, 100 insertions(+), 96 deletions(-)

diff --git a/datafusion/functions-nested/src/array_has.rs 
b/datafusion/functions-nested/src/array_has.rs
index 080b2f16d9..8ae8c42b79 100644
--- a/datafusion/functions-nested/src/array_has.rs
+++ b/datafusion/functions-nested/src/array_has.rs
@@ -239,6 +239,7 @@ fn array_has_inner_for_array(haystack: &ArrayRef, needle: 
&ArrayRef) -> Result<A
     array_has_dispatch_for_array(haystack, needle)
 }
 
+#[derive(Copy, Clone)]
 enum ArrayWrapper<'a> {
     FixedSizeList(&'a arrow::array::FixedSizeListArray),
     List(&'a arrow::array::GenericListArray<i32>),
@@ -317,8 +318,8 @@ impl<'a> ArrayWrapper<'a> {
     }
 }
 
-fn array_has_dispatch_for_array(
-    haystack: ArrayWrapper<'_>,
+fn array_has_dispatch_for_array<'a>(
+    haystack: ArrayWrapper<'a>,
     needle: &ArrayRef,
 ) -> Result<ArrayRef> {
     let mut boolean_builder = BooleanArray::builder(haystack.len());
@@ -390,8 +391,8 @@ fn array_has_all_inner(args: &[ArrayRef]) -> 
Result<ArrayRef> {
 
 // General row comparison for array_has_all and array_has_any
 fn general_array_has_for_all_and_any<'a>(
-    haystack: &ArrayWrapper<'a>,
-    needle: &ArrayWrapper<'a>,
+    haystack: ArrayWrapper<'a>,
+    needle: ArrayWrapper<'a>,
     comparison_type: ComparisonType,
 ) -> Result<ArrayRef> {
     let mut boolean_builder = BooleanArray::builder(haystack.len());
@@ -402,8 +403,8 @@ fn general_array_has_for_all_and_any<'a>(
             let arr_values = converter.convert_columns(&[arr])?;
             let sub_arr_values = converter.convert_columns(&[sub_arr])?;
             boolean_builder.append_value(general_array_has_all_and_any_kernel(
-                arr_values,
-                sub_arr_values,
+                &arr_values,
+                &sub_arr_values,
                 comparison_type,
             ));
         } else {
@@ -416,8 +417,8 @@ fn general_array_has_for_all_and_any<'a>(
 
 // String comparison for array_has_all and array_has_any
 fn array_has_all_and_any_string_internal<'a>(
-    haystack: &ArrayWrapper<'a>,
-    needle: &ArrayWrapper<'a>,
+    haystack: ArrayWrapper<'a>,
+    needle: ArrayWrapper<'a>,
     comparison_type: ComparisonType,
 ) -> Result<ArrayRef> {
     let mut boolean_builder = BooleanArray::builder(haystack.len());
@@ -427,8 +428,8 @@ fn array_has_all_and_any_string_internal<'a>(
                 let haystack_array = string_array_to_vec(&arr);
                 let needle_array = string_array_to_vec(&sub_arr);
                 boolean_builder.append_value(array_has_string_kernel(
-                    haystack_array,
-                    needle_array,
+                    &haystack_array,
+                    &needle_array,
                     comparison_type,
                 ));
             }
@@ -442,8 +443,8 @@ fn array_has_all_and_any_string_internal<'a>(
 }
 
 fn array_has_all_and_any_dispatch<'a>(
-    haystack: &ArrayWrapper<'a>,
-    needle: &ArrayWrapper<'a>,
+    haystack: ArrayWrapper<'a>,
+    needle: ArrayWrapper<'a>,
     comparison_type: ComparisonType,
 ) -> Result<ArrayRef> {
     if needle.values().is_empty() {
@@ -468,7 +469,7 @@ fn array_has_all_and_any_inner(
 ) -> Result<ArrayRef> {
     let haystack: ArrayWrapper = args[0].as_ref().try_into()?;
     let needle: ArrayWrapper = args[1].as_ref().try_into()?;
-    array_has_all_and_any_dispatch(&haystack, &needle, comparison_type)
+    array_has_all_and_any_dispatch(haystack, needle, comparison_type)
 }
 
 fn array_has_any_inner(args: &[ArrayRef]) -> Result<ArrayRef> {
@@ -633,8 +634,8 @@ enum ComparisonType {
 }
 
 fn array_has_string_kernel(
-    haystack: Vec<Option<&str>>,
-    needle: Vec<Option<&str>>,
+    haystack: &[Option<&str>],
+    needle: &[Option<&str>],
     comparison_type: ComparisonType,
 ) -> bool {
     match comparison_type {
@@ -650,8 +651,8 @@ fn array_has_string_kernel(
 }
 
 fn general_array_has_all_and_any_kernel(
-    haystack_rows: Rows,
-    needle_rows: Rows,
+    haystack_rows: &Rows,
+    needle_rows: &Rows,
     comparison_type: ComparisonType,
 ) -> bool {
     match comparison_type {
diff --git a/datafusion/functions-nested/src/flatten.rs 
b/datafusion/functions-nested/src/flatten.rs
index 49f4110fae..e84a942fab 100644
--- a/datafusion/functions-nested/src/flatten.rs
+++ b/datafusion/functions-nested/src/flatten.rs
@@ -145,7 +145,7 @@ pub fn flatten_inner(args: &[ArrayRef]) -> Result<ArrayRef> 
{
                     let (inner_field, inner_offsets, inner_values, _) =
                         as_list_array(&values)?.clone().into_parts();
                     let offsets =
-                        get_offsets_for_flatten::<i32, i32>(inner_offsets, 
offsets);
+                        get_offsets_for_flatten::<i32, i32>(inner_offsets, 
&offsets);
                     let flattened_array = GenericListArray::<i32>::new(
                         inner_field,
                         offsets,
@@ -159,7 +159,7 @@ pub fn flatten_inner(args: &[ArrayRef]) -> Result<ArrayRef> 
{
                     let (inner_field, inner_offsets, inner_values, _) =
                         as_large_list_array(&values)?.clone().into_parts();
                     let offsets =
-                        get_offsets_for_flatten::<i64, i32>(inner_offsets, 
offsets);
+                        get_offsets_for_flatten::<i64, i32>(inner_offsets, 
&offsets);
                     let flattened_array = GenericListArray::<i64>::new(
                         inner_field,
                         offsets,
@@ -180,7 +180,7 @@ pub fn flatten_inner(args: &[ArrayRef]) -> Result<ArrayRef> 
{
                 List(_) => {
                     let (inner_field, inner_offsets, inner_values, _) =
                         as_list_array(&values)?.clone().into_parts();
-                    let offsets = get_large_offsets_for_flatten(inner_offsets, 
offsets);
+                    let offsets = get_large_offsets_for_flatten(inner_offsets, 
&offsets);
                     let flattened_array = GenericListArray::<i64>::new(
                         inner_field,
                         offsets,
@@ -194,7 +194,7 @@ pub fn flatten_inner(args: &[ArrayRef]) -> Result<ArrayRef> 
{
                     let (inner_field, inner_offsets, inner_values, _) =
                         as_large_list_array(&values)?.clone().into_parts();
                     let offsets =
-                        get_offsets_for_flatten::<i64, i64>(inner_offsets, 
offsets);
+                        get_offsets_for_flatten::<i64, i64>(inner_offsets, 
&offsets);
                     let flattened_array = GenericListArray::<i64>::new(
                         inner_field,
                         offsets,
@@ -217,7 +217,7 @@ pub fn flatten_inner(args: &[ArrayRef]) -> Result<ArrayRef> 
{
 // Create new offsets that are equivalent to `flatten` the array.
 fn get_offsets_for_flatten<O: OffsetSizeTrait, P: OffsetSizeTrait>(
     inner_offsets: OffsetBuffer<O>,
-    outer_offsets: OffsetBuffer<P>,
+    outer_offsets: &OffsetBuffer<P>,
 ) -> OffsetBuffer<O> {
     let buffer = inner_offsets.into_inner();
     let offsets: Vec<O> = outer_offsets
@@ -230,7 +230,7 @@ fn get_offsets_for_flatten<O: OffsetSizeTrait, P: 
OffsetSizeTrait>(
 // Create new large offsets that are equivalent to `flatten` the array.
 fn get_large_offsets_for_flatten<O: OffsetSizeTrait, P: OffsetSizeTrait>(
     inner_offsets: OffsetBuffer<O>,
-    outer_offsets: OffsetBuffer<P>,
+    outer_offsets: &OffsetBuffer<P>,
 ) -> OffsetBuffer<i64> {
     let buffer = inner_offsets.into_inner();
     let offsets: Vec<i64> = outer_offsets
diff --git a/datafusion/functions-nested/src/lib.rs 
b/datafusion/functions-nested/src/lib.rs
index 3a66e65694..51210b9ae2 100644
--- a/datafusion/functions-nested/src/lib.rs
+++ b/datafusion/functions-nested/src/lib.rs
@@ -23,6 +23,9 @@
 // Make sure fast / cheap clones on Arc are explicit:
 // https://github.com/apache/datafusion/issues/11143
 #![deny(clippy::clone_on_ref_ptr)]
+// https://github.com/apache/datafusion/issues/18503
+#![deny(clippy::needless_pass_by_value)]
+#![cfg_attr(test, allow(clippy::needless_pass_by_value))]
 
 //! Nested type Functions for [DataFusion].
 //!
diff --git a/datafusion/functions-nested/src/map.rs 
b/datafusion/functions-nested/src/map.rs
index c3c11beaf9..fe9bc609c0 100644
--- a/datafusion/functions-nested/src/map.rs
+++ b/datafusion/functions-nested/src/map.rs
@@ -89,7 +89,7 @@ fn make_map_batch(args: &[ColumnarValue]) -> 
Result<ColumnarValue> {
 
     let values = get_first_array_ref(values_arg)?;
 
-    make_map_batch_internal(keys, values, can_evaluate_to_const, 
keys_arg.data_type())
+    make_map_batch_internal(&keys, &values, can_evaluate_to_const, 
&keys_arg.data_type())
 }
 
 /// Validates that map keys are non-null and unique.
@@ -126,10 +126,10 @@ fn get_first_array_ref(columnar_value: &ColumnarValue) -> 
Result<ArrayRef> {
 }
 
 fn make_map_batch_internal(
-    keys: ArrayRef,
-    values: ArrayRef,
+    keys: &ArrayRef,
+    values: &ArrayRef,
     can_evaluate_to_const: bool,
-    data_type: DataType,
+    data_type: &DataType,
 ) -> Result<ColumnarValue> {
     if keys.len() != values.len() {
         return exec_err!("map requires key and value lists to have the same 
length");
@@ -159,8 +159,8 @@ fn make_map_batch_internal(
     let mut entry_offsets_buffer = VecDeque::new();
     entry_offsets_buffer.push_back(0);
 
-    entry_struct_buffer.push_back((Arc::clone(&key_field), Arc::clone(&keys)));
-    entry_struct_buffer.push_back((Arc::clone(&value_field), 
Arc::clone(&values)));
+    entry_struct_buffer.push_back((Arc::clone(&key_field), Arc::clone(keys)));
+    entry_struct_buffer.push_back((Arc::clone(&value_field), 
Arc::clone(values)));
     entry_offsets_buffer.push_back(keys.len() as u32);
 
     let entry_struct: Vec<(Arc<Field>, ArrayRef)> = entry_struct_buffer.into();
@@ -368,8 +368,8 @@ fn get_element_type(data_type: &DataType) -> 
Result<&DataType> {
 /// +-----------+      +-----------+
 /// ```text
 fn make_map_array_internal<O: OffsetSizeTrait>(
-    keys: ArrayRef,
-    values: ArrayRef,
+    keys: &ArrayRef,
+    values: &ArrayRef,
 ) -> Result<ColumnarValue> {
     // Save original data types and array length before list_to_arrays 
transforms them
     let keys_data_type = keys.data_type().clone();
@@ -380,14 +380,14 @@ fn make_map_array_internal<O: OffsetSizeTrait>(
     // This tells us which MAP values are NULL (not which keys within maps are 
null)
     let nulls_bitmap = keys.nulls().cloned();
 
-    let keys = list_to_arrays::<O>(&keys);
-    let values = list_to_arrays::<O>(&values);
+    let keys = list_to_arrays::<O>(keys);
+    let values = list_to_arrays::<O>(values);
 
     build_map_array(
-        keys,
-        values,
-        keys_data_type,
-        values_data_type,
+        &keys,
+        &values,
+        &keys_data_type,
+        &values_data_type,
         original_len,
         nulls_bitmap,
     )
@@ -396,8 +396,8 @@ fn make_map_array_internal<O: OffsetSizeTrait>(
 /// Helper function specifically for FixedSizeList inputs
 /// Similar to make_map_array_internal but uses fixed_size_list_to_arrays 
instead of list_to_arrays
 fn make_map_array_from_fixed_size_list(
-    keys: ArrayRef,
-    values: ArrayRef,
+    keys: &ArrayRef,
+    values: &ArrayRef,
 ) -> Result<ColumnarValue> {
     // Save original data types and array length
     let keys_data_type = keys.data_type().clone();
@@ -407,14 +407,14 @@ fn make_map_array_from_fixed_size_list(
     // Save the nulls bitmap from the original keys array
     let nulls_bitmap = keys.nulls().cloned();
 
-    let keys = fixed_size_list_to_arrays(&keys);
-    let values = fixed_size_list_to_arrays(&values);
+    let keys = fixed_size_list_to_arrays(keys);
+    let values = fixed_size_list_to_arrays(values);
 
     build_map_array(
-        keys,
-        values,
-        keys_data_type,
-        values_data_type,
+        &keys,
+        &values,
+        &keys_data_type,
+        &values_data_type,
         original_len,
         nulls_bitmap,
     )
@@ -422,10 +422,10 @@ fn make_map_array_from_fixed_size_list(
 
 /// Common logic to build a MapArray from decomposed list arrays
 fn build_map_array(
-    keys: Vec<ArrayRef>,
-    values: Vec<ArrayRef>,
-    keys_data_type: DataType,
-    values_data_type: DataType,
+    keys: &[ArrayRef],
+    values: &[ArrayRef],
+    keys_data_type: &DataType,
+    values_data_type: &DataType,
     original_len: usize,
     nulls_bitmap: Option<arrow::buffer::NullBuffer>,
 ) -> Result<ColumnarValue> {
@@ -470,8 +470,8 @@ fn build_map_array(
     let (flattened_keys, flattened_values) = if key_array_vec.is_empty() {
         // All maps are NULL - create empty arrays
         // We need to infer the data type from the original keys/values arrays
-        let key_type = get_element_type(&keys_data_type)?;
-        let value_type = get_element_type(&values_data_type)?;
+        let key_type = get_element_type(keys_data_type)?;
+        let value_type = get_element_type(values_data_type)?;
 
         (
             arrow::array::new_empty_array(key_type),
diff --git a/datafusion/functions-nested/src/position.rs 
b/datafusion/functions-nested/src/position.rs
index a585da0610..b390bf3c42 100644
--- a/datafusion/functions-nested/src/position.rs
+++ b/datafusion/functions-nested/src/position.rs
@@ -181,13 +181,13 @@ fn general_position_dispatch<O: OffsetSizeTrait>(args: 
&[ArrayRef]) -> Result<Ar
         );
     }
 
-    generic_position::<O>(list_array, element_array, arr_from)
+    generic_position::<O>(list_array, element_array, &arr_from)
 }
 
 fn generic_position<OffsetSize: OffsetSizeTrait>(
     list_array: &GenericListArray<OffsetSize>,
     element_array: &ArrayRef,
-    arr_from: Vec<i64>, // 0-indexed
+    arr_from: &[i64], // 0-indexed
 ) -> Result<ArrayRef> {
     let mut data = Vec::with_capacity(list_array.len());
 
diff --git a/datafusion/functions-nested/src/remove.rs 
b/datafusion/functions-nested/src/remove.rs
index d330606cdd..e1ebc9cda0 100644
--- a/datafusion/functions-nested/src/remove.rs
+++ b/datafusion/functions-nested/src/remove.rs
@@ -289,7 +289,7 @@ pub fn array_remove_inner(args: &[ArrayRef]) -> 
Result<ArrayRef> {
     let [array, element] = take_function_args("array_remove", args)?;
 
     let arr_n = vec![1; array.len()];
-    array_remove_internal(array, element, arr_n)
+    array_remove_internal(array, element, &arr_n)
 }
 
 /// Array_remove_n SQL function
@@ -297,7 +297,7 @@ pub fn array_remove_n_inner(args: &[ArrayRef]) -> 
Result<ArrayRef> {
     let [array, element, max] = take_function_args("array_remove_n", args)?;
 
     let arr_n = as_int64_array(max)?.values().to_vec();
-    array_remove_internal(array, element, arr_n)
+    array_remove_internal(array, element, &arr_n)
 }
 
 /// Array_remove_all SQL function
@@ -305,13 +305,13 @@ pub fn array_remove_all_inner(args: &[ArrayRef]) -> 
Result<ArrayRef> {
     let [array, element] = take_function_args("array_remove_all", args)?;
 
     let arr_n = vec![i64::MAX; array.len()];
-    array_remove_internal(array, element, arr_n)
+    array_remove_internal(array, element, &arr_n)
 }
 
 fn array_remove_internal(
     array: &ArrayRef,
     element_array: &ArrayRef,
-    arr_n: Vec<i64>,
+    arr_n: &[i64],
 ) -> Result<ArrayRef> {
     match array.data_type() {
         DataType::List(_) => {
@@ -348,7 +348,7 @@ fn array_remove_internal(
 fn general_remove<OffsetSize: OffsetSizeTrait>(
     list_array: &GenericListArray<OffsetSize>,
     element_array: &ArrayRef,
-    arr_n: Vec<i64>,
+    arr_n: &[i64],
 ) -> Result<ArrayRef> {
     let data_type = list_array.value_type();
     let mut new_values = vec![];
diff --git a/datafusion/functions-nested/src/replace.rs 
b/datafusion/functions-nested/src/replace.rs
index 4314d41419..079c28175d 100644
--- a/datafusion/functions-nested/src/replace.rs
+++ b/datafusion/functions-nested/src/replace.rs
@@ -328,7 +328,7 @@ fn general_replace<O: OffsetSizeTrait>(
     list_array: &GenericListArray<O>,
     from_array: &ArrayRef,
     to_array: &ArrayRef,
-    arr_n: Vec<i64>,
+    arr_n: &[i64],
 ) -> Result<ArrayRef> {
     // Build up the offsets for the final output array
     let mut offsets: Vec<O> = vec![O::usize_as(0)];
@@ -426,11 +426,11 @@ pub(crate) fn array_replace_inner(args: &[ArrayRef]) -> 
Result<ArrayRef> {
     match array.data_type() {
         DataType::List(_) => {
             let list_array = array.as_list::<i32>();
-            general_replace::<i32>(list_array, from, to, arr_n)
+            general_replace::<i32>(list_array, from, to, &arr_n)
         }
         DataType::LargeList(_) => {
             let list_array = array.as_list::<i64>();
-            general_replace::<i64>(list_array, from, to, arr_n)
+            general_replace::<i64>(list_array, from, to, &arr_n)
         }
         DataType::Null => Ok(new_null_array(array.data_type(), 1)),
         array_type => exec_err!("array_replace does not support type 
'{array_type}'."),
@@ -445,11 +445,11 @@ pub(crate) fn array_replace_n_inner(args: &[ArrayRef]) -> 
Result<ArrayRef> {
     match array.data_type() {
         DataType::List(_) => {
             let list_array = array.as_list::<i32>();
-            general_replace::<i32>(list_array, from, to, arr_n)
+            general_replace::<i32>(list_array, from, to, &arr_n)
         }
         DataType::LargeList(_) => {
             let list_array = array.as_list::<i64>();
-            general_replace::<i64>(list_array, from, to, arr_n)
+            general_replace::<i64>(list_array, from, to, &arr_n)
         }
         DataType::Null => Ok(new_null_array(array.data_type(), 1)),
         array_type => {
@@ -466,11 +466,11 @@ pub(crate) fn array_replace_all_inner(args: &[ArrayRef]) 
-> Result<ArrayRef> {
     match array.data_type() {
         DataType::List(_) => {
             let list_array = array.as_list::<i32>();
-            general_replace::<i32>(list_array, from, to, arr_n)
+            general_replace::<i32>(list_array, from, to, &arr_n)
         }
         DataType::LargeList(_) => {
             let list_array = array.as_list::<i64>();
-            general_replace::<i64>(list_array, from, to, arr_n)
+            general_replace::<i64>(list_array, from, to, &arr_n)
         }
         DataType::Null => Ok(new_null_array(array.data_type(), 1)),
         array_type => {
diff --git a/datafusion/functions-nested/src/set_ops.rs 
b/datafusion/functions-nested/src/set_ops.rs
index 1e7ae5c147..71a42531f9 100644
--- a/datafusion/functions-nested/src/set_ops.rs
+++ b/datafusion/functions-nested/src/set_ops.rs
@@ -327,7 +327,7 @@ fn array_distinct_inner(args: &[ArrayRef]) -> 
Result<ArrayRef> {
     }
 }
 
-#[derive(Debug, PartialEq)]
+#[derive(Debug, PartialEq, Copy, Clone)]
 enum SetOp {
     Union,
     Intersect,
diff --git a/datafusion/functions-nested/src/string.rs 
b/datafusion/functions-nested/src/string.rs
index 61caa3ac70..b87ac0f8c4 100644
--- a/datafusion/functions-nested/src/string.rs
+++ b/datafusion/functions-nested/src/string.rs
@@ -358,13 +358,13 @@ pub(super) fn array_to_string_inner(args: &[ArrayRef]) -> 
Result<ArrayRef> {
 
     /// Creates a single string from single element of a ListArray (which is
     /// itself another Array)
-    fn compute_array_to_string(
-        arg: &mut String,
-        arr: ArrayRef,
+    fn compute_array_to_string<'a>(
+        arg: &'a mut String,
+        arr: &ArrayRef,
         delimiter: String,
         null_string: String,
         with_null_string: bool,
-    ) -> Result<&mut String> {
+    ) -> Result<&'a mut String> {
         match arr.data_type() {
             List(..) => {
                 let list_array = as_list_array(&arr)?;
@@ -372,7 +372,7 @@ pub(super) fn array_to_string_inner(args: &[ArrayRef]) -> 
Result<ArrayRef> {
                     if !list_array.is_null(i) {
                         compute_array_to_string(
                             arg,
-                            list_array.value(i),
+                            &list_array.value(i),
                             delimiter.clone(),
                             null_string.clone(),
                             with_null_string,
@@ -392,7 +392,7 @@ pub(super) fn array_to_string_inner(args: &[ArrayRef]) -> 
Result<ArrayRef> {
                     if !list_array.is_null(i) {
                         compute_array_to_string(
                             arg,
-                            list_array.value(i),
+                            &list_array.value(i),
                             delimiter.clone(),
                             null_string.clone(),
                             with_null_string,
@@ -411,7 +411,7 @@ pub(super) fn array_to_string_inner(args: &[ArrayRef]) -> 
Result<ArrayRef> {
                     if !list_array.is_null(i) {
                         compute_array_to_string(
                             arg,
-                            list_array.value(i),
+                            &list_array.value(i),
                             delimiter.clone(),
                             null_string.clone(),
                             with_null_string,
@@ -434,7 +434,7 @@ pub(super) fn array_to_string_inner(args: &[ArrayRef]) -> 
Result<ArrayRef> {
                 })?;
                 compute_array_to_string(
                     arg,
-                    values,
+                    &values,
                     delimiter,
                     null_string,
                     with_null_string,
@@ -461,8 +461,8 @@ pub(super) fn array_to_string_inner(args: &[ArrayRef]) -> 
Result<ArrayRef> {
 
     fn generate_string_array<O: OffsetSizeTrait>(
         list_arr: &GenericListArray<O>,
-        delimiters: Vec<Option<&str>>,
-        null_string: String,
+        delimiters: &[Option<&str>],
+        null_string: &str,
         with_null_string: bool,
     ) -> Result<StringArray> {
         let mut res: Vec<Option<String>> = Vec::new();
@@ -471,9 +471,9 @@ pub(super) fn array_to_string_inner(args: &[ArrayRef]) -> 
Result<ArrayRef> {
                 let mut arg = String::from("");
                 let s = compute_array_to_string(
                     &mut arg,
-                    arr,
+                    &arr,
                     delimiter.to_string(),
-                    null_string.clone(),
+                    null_string.to_string(),
                     with_null_string,
                 )?
                 .clone();
@@ -496,8 +496,8 @@ pub(super) fn array_to_string_inner(args: &[ArrayRef]) -> 
Result<ArrayRef> {
             let list_array = as_list_array(&arr)?;
             generate_string_array::<i32>(
                 list_array,
-                delimiters,
-                null_string,
+                &delimiters,
+                &null_string,
                 with_null_string,
             )?
         }
@@ -505,8 +505,8 @@ pub(super) fn array_to_string_inner(args: &[ArrayRef]) -> 
Result<ArrayRef> {
             let list_array = as_large_list_array(&arr)?;
             generate_string_array::<i64>(
                 list_array,
-                delimiters,
-                null_string,
+                &delimiters,
+                &null_string,
                 with_null_string,
             )?
         }
@@ -529,17 +529,17 @@ fn string_to_array_inner<T: OffsetSizeTrait>(args: 
&[ArrayRef]) -> Result<ArrayR
         Utf8 => {
             let string_array = args[0].as_string::<T>();
             let builder = StringBuilder::with_capacity(string_array.len(), 
string_array.get_buffer_memory_size());
-            string_to_array_inner_2::<&GenericStringArray<T>, 
StringBuilder>(args, string_array, builder)
+            string_to_array_inner_2::<&GenericStringArray<T>, 
StringBuilder>(args, &string_array, builder)
         }
         Utf8View => {
             let string_array = args[0].as_string_view();
             let builder = StringViewBuilder::with_capacity(string_array.len());
-            string_to_array_inner_2::<&StringViewArray, 
StringViewBuilder>(args, string_array, builder)
+            string_to_array_inner_2::<&StringViewArray, 
StringViewBuilder>(args, &string_array, builder)
         }
         LargeUtf8 => {
             let string_array = args[0].as_string::<T>();
             let builder = 
LargeStringBuilder::with_capacity(string_array.len(), 
string_array.get_buffer_memory_size());
-            string_to_array_inner_2::<&GenericStringArray<T>, 
LargeStringBuilder>(args, string_array, builder)
+            string_to_array_inner_2::<&GenericStringArray<T>, 
LargeStringBuilder>(args, &string_array, builder)
         }
         other =>  exec_err!("unsupported type for first argument to 
string_to_array function as {other:?}")
     }
@@ -547,7 +547,7 @@ fn string_to_array_inner<T: OffsetSizeTrait>(args: 
&[ArrayRef]) -> Result<ArrayR
 
 fn string_to_array_inner_2<'a, StringArrType, StringBuilderType>(
     args: &'a [ArrayRef],
-    string_array: StringArrType,
+    string_array: &StringArrType,
     string_builder: StringBuilderType,
 ) -> Result<ArrayRef>
 where
@@ -563,11 +563,11 @@ where
                     &GenericStringArray<i32>,
                     &StringViewArray,
                     StringBuilderType,
-                >(string_array, delimiter_array, None, string_builder)
+                >(string_array, &delimiter_array, None, string_builder)
             } else {
                 string_to_array_inner_3::<StringArrType,
                     &GenericStringArray<i32>,
-                    StringBuilderType>(args, string_array, delimiter_array, 
string_builder)
+                    StringBuilderType>(args, string_array, &delimiter_array, 
string_builder)
             }
         }
         Utf8View => {
@@ -579,11 +579,11 @@ where
                     &StringViewArray,
                     &StringViewArray,
                     StringBuilderType,
-                >(string_array, delimiter_array, None, string_builder)
+                >(string_array, &delimiter_array, None, string_builder)
             } else {
                 string_to_array_inner_3::<StringArrType,
                     &StringViewArray,
-                    StringBuilderType>(args, string_array, delimiter_array, 
string_builder)
+                    StringBuilderType>(args, string_array, &delimiter_array, 
string_builder)
             }
         }
         LargeUtf8 => {
@@ -594,11 +594,11 @@ where
                     &GenericStringArray<i64>,
                     &StringViewArray,
                     StringBuilderType,
-                >(string_array, delimiter_array, None, string_builder)
+                >(string_array, &delimiter_array, None, string_builder)
             } else {
                 string_to_array_inner_3::<StringArrType,
                     &GenericStringArray<i64>,
-                    StringBuilderType>(args, string_array, delimiter_array, 
string_builder)
+                    StringBuilderType>(args, string_array, &delimiter_array, 
string_builder)
             }
         }
         other =>  exec_err!("unsupported type for second argument to 
string_to_array function as {other:?}")
@@ -607,8 +607,8 @@ where
 
 fn string_to_array_inner_3<'a, StringArrType, DelimiterArrType, 
StringBuilderType>(
     args: &'a [ArrayRef],
-    string_array: StringArrType,
-    delimiter_array: DelimiterArrType,
+    string_array: &StringArrType,
+    delimiter_array: &DelimiterArrType,
     string_builder: StringBuilderType,
 ) -> Result<ArrayRef>
 where
@@ -672,8 +672,8 @@ fn string_to_array_impl<
     NullValueArrType,
     StringBuilderType,
 >(
-    string_array: StringArrType,
-    delimiter_array: DelimiterArrType,
+    string_array: &StringArrType,
+    delimiter_array: &DelimiterArrType,
     null_value_array: Option<NullValueArrType>,
     string_builder: StringBuilderType,
 ) -> Result<ArrayRef>


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

Reply via email to