diff --git a/datafusion/spark/src/function/array/spark_array.rs b/datafusion/spark/src/function/array/spark_array.rs index bf5842cb5a5a..f2a43559fdd8 100644 --- a/datafusion/spark/src/function/array/spark_array.rs +++ b/datafusion/spark/src/function/array/spark_array.rs @@ -22,12 +22,12 @@ use arrow::array::{ MutableArrayData, NullArray, OffsetSizeTrait, }; use arrow::buffer::OffsetBuffer; -use arrow::datatypes::{DataType, Field, FieldRef}; +use arrow::datatypes::{DataType, Field}; use datafusion_common::utils::SingleRowListArrayBuilder; use datafusion_common::{plan_datafusion_err, plan_err, Result}; use datafusion_expr::type_coercion::binary::comparison_coercion; use datafusion_expr::{ - ColumnarValue, ReturnFieldArgs, ScalarFunctionArgs, ScalarUDFImpl, Signature, + ColumnarValue,ScalarFunctionArgs, ScalarUDFImpl, Signature, TypeSignature, Volatility, }; @@ -92,21 +92,6 @@ impl ScalarUDFImpl for SparkArray { )))) } - fn return_field_from_args(&self, args: ReturnFieldArgs) -> Result { - let data_types = args - .arg_fields - .iter() - .map(|f| f.data_type()) - .cloned() - .collect::>(); - let return_type = self.return_type(&data_types)?; - Ok(Arc::new(Field::new( - "this_field_name_is_irrelevant", - return_type, - false, - ))) - } - fn invoke_with_args(&self, args: ScalarFunctionArgs) -> Result { let ScalarFunctionArgs { args, .. } = args; make_scalar_function(make_array_inner)(args.as_slice()) @@ -166,7 +151,6 @@ pub fn make_array_inner(arrays: &[ArrayRef]) -> Result { .build_list_array(), )) } - DataType::LargeList(..) => array_array::(arrays, data_type), _ => array_array::(arrays, data_type), } } diff --git a/datafusion/sqllogictest/test_files/spark/array/array.slt b/datafusion/sqllogictest/test_files/spark/array/array.slt index 09821e6d582d..79dca1c10a7d 100644 --- a/datafusion/sqllogictest/test_files/spark/array/array.slt +++ b/datafusion/sqllogictest/test_files/spark/array/array.slt @@ -70,3 +70,18 @@ query ? SELECT array(array(1,2)); ---- [[1, 2]] + +query ? +SELECT array(arrow_cast(array(1), 'LargeList(Int64)')); +---- +[[1]] + +query ? +SELECT array(arrow_cast(array(1), 'LargeList(Int64)'), arrow_cast(array(), 'LargeList(Int64)')); +---- +[[1], []] + +query ? +SELECT array(arrow_cast(array(1,2), 'LargeList(Int64)'), array(3)); +---- +[[1, 2], [3]]