Skip to content

Commit f6c3f70

Browse files
Address review comment
1 parent 7c1604e commit f6c3f70

1 file changed

Lines changed: 9 additions & 12 deletions

File tree

  • datafusion/spark/src/function/array

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

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,13 @@
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::{
23+
Result, ScalarValue, exec_err, internal_err, utils::take_function_args,
24+
};
2325
use datafusion_expr::{
2426
ArrayFunctionArgument, ArrayFunctionSignature, ColumnarValue, ReturnFieldArgs,
2527
ScalarFunctionArgs, ScalarUDFImpl, Signature, TypeSignature, Volatility,
@@ -93,11 +95,11 @@ impl ScalarUDFImpl for SparkSlice {
9395
mut func_args: ScalarFunctionArgs,
9496
) -> Result<ColumnarValue> {
9597
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)));
98+
return Ok(ColumnarValue::Scalar(ScalarValue::new_null_list(
99+
DataType::Null,
100+
true,
101+
1,
102+
)));
101103
}
102104

103105
let array_len = func_args
@@ -134,11 +136,6 @@ impl ScalarUDFImpl for SparkSlice {
134136
}
135137
}
136138

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-
142139
fn calculate_start_end(args: &[ArrayRef]) -> Result<(ArrayRef, ArrayRef)> {
143140
let [values, start, length] = take_function_args("slice", args)?;
144141

0 commit comments

Comments
 (0)