Skip to content

Commit 3c43685

Browse files
Address review comment
1 parent 7c1604e commit 3c43685

1 file changed

Lines changed: 7 additions & 12 deletions

File tree

  • datafusion/spark/src/function/array

datafusion/spark/src/function/array/slice.rs

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@
1515
// specific language governing permissions and limitations
1616
// under the License.
1717

18-
use arrow::array::{Array, ArrayData, ArrayRef, Int64Builder, ListArray};
18+
use arrow::array::{Array, ArrayRef, Int64Builder};
1919
use arrow::datatypes::{DataType, Field, FieldRef};
2020
use datafusion_common::cast::{as_int64_array, as_list_array};
2121
use datafusion_common::utils::ListCoercion;
22-
use datafusion_common::{Result, exec_err, internal_err, utils::take_function_args};
22+
use datafusion_common::{Result, exec_err, internal_err, utils::take_function_args, ScalarValue};
2323
use datafusion_expr::{
2424
ArrayFunctionArgument, ArrayFunctionSignature, ColumnarValue, ReturnFieldArgs,
2525
ScalarFunctionArgs, ScalarUDFImpl, Signature, TypeSignature, Volatility,
@@ -93,11 +93,11 @@ impl ScalarUDFImpl for SparkSlice {
9393
mut func_args: ScalarFunctionArgs,
9494
) -> Result<ColumnarValue> {
9595
if func_args.args[0].data_type() == DataType::Null {
96-
let len = match &func_args.args[0] {
97-
ColumnarValue::Array(a) => a.len(),
98-
ColumnarValue::Scalar(_) => func_args.number_rows,
99-
};
100-
return Ok(ColumnarValue::Array(list_null_array(len)));
96+
return Ok(ColumnarValue::Scalar(ScalarValue::new_null_list(
97+
DataType::Null,
98+
true,
99+
1,
100+
)));
101101
}
102102

103103
let array_len = func_args
@@ -134,11 +134,6 @@ impl ScalarUDFImpl for SparkSlice {
134134
}
135135
}
136136

137-
fn list_null_array(len: usize) -> ArrayRef {
138-
let list_type = DataType::List(Arc::new(Field::new_list_field(DataType::Null, true)));
139-
Arc::new(ListArray::from(ArrayData::new_null(&list_type, len)))
140-
}
141-
142137
fn calculate_start_end(args: &[ArrayRef]) -> Result<(ArrayRef, ArrayRef)> {
143138
let [values, start, length] = take_function_args("slice", args)?;
144139

0 commit comments

Comments
 (0)