Skip to content

Commit 05b6f93

Browse files
authored
Fix error on array_distinct when input is empty #13810 (#14034)
* fix * add test * oops --------- Co-authored-by: Cyprien Huet <chuet@palantir.com>
1 parent b0bd899 commit 05b6f93

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

datafusion/functions-nested/src/set_ops.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -513,7 +513,7 @@ fn general_array_distinct<OffsetSize: OffsetSizeTrait>(
513513
array: &GenericListArray<OffsetSize>,
514514
field: &FieldRef,
515515
) -> Result<ArrayRef> {
516-
if array.len() == 0 {
516+
if array.is_empty() {
517517
return Ok(Arc::new(array.clone()) as ArrayRef);
518518
}
519519
let dt = array.value_type();
@@ -542,6 +542,9 @@ fn general_array_distinct<OffsetSize: OffsetSizeTrait>(
542542
};
543543
new_arrays.push(array);
544544
}
545+
if new_arrays.is_empty() {
546+
return Ok(Arc::new(array.clone()) as ArrayRef);
547+
}
545548
let offsets = OffsetBuffer::new(offsets.into());
546549
let new_arrays_ref = new_arrays.iter().map(|v| v.as_ref()).collect::<Vec<_>>();
547550
let values = compute::concat(&new_arrays_ref)?;

datafusion/sqllogictest/test_files/array.slt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5681,6 +5681,11 @@ select array_distinct(a) from values ([1, 2, 3]), (null), ([1, 3, 1]) as X(a);
56815681
NULL
56825682
[1, 3]
56835683

5684+
query ?
5685+
select array_distinct(arrow_cast(null, 'LargeList(Int64)'));
5686+
----
5687+
NULL
5688+
56845689
query ?
56855690
select array_distinct([]);
56865691
----

0 commit comments

Comments
 (0)