joroKr21 commented on code in PR #10790:
URL: https://github.com/apache/datafusion/pull/10790#discussion_r1988691322
##########
datafusion/functions-array/src/set_ops.rs:
##########
@@ -259,6 +259,17 @@ fn generic_set_lists<OffsetSize: OffsetSizeTrait>(
return general_array_distinct::<OffsetSize>(l, &field);
}
+ // Handle empty array at rhs case
+ // array_union(arr, []) -> arr;
+ // array_intersect(arr, []) -> [];
+ if r.value_length(0).is_zero() {
+ if set_op == SetOp::Union {
+ return Ok(Arc::new(l.clone()) as ArrayRef);
+ } else {
+ return Ok(Arc::new(r.clone()) as ArrayRef);
+ }
+ }
Review Comment:
```diff
diff --git a/datafusion/sqllogictest/test_files/array.slt
b/datafusion/sqllogictest/test_files/array.slt
index 3b7f12960..17598be8c 100644
--- a/datafusion/sqllogictest/test_files/array.slt
+++ b/datafusion/sqllogictest/test_files/array.slt
@@ -4371,7 +4371,8 @@ select array_union(arrow_cast([1, 2, 3, 4],
'LargeList(Int64)'), arrow_cast([5,
statement ok
CREATE TABLE arrays_with_repeating_elements_for_union
AS VALUES
- ([1], [2]),
+ ([0, 1, 1], []),
+ ([1, 1], [2]),
([2, 3], [3]),
([3], [3, 4])
;
@@ -4379,6 +4380,7 @@ AS VALUES
query ?
select array_union(column1, column2) from
arrays_with_repeating_elements_for_union;
----
+[0, 1]
[1, 2]
[2, 3]
[3, 4]
@@ -4386,6 +4388,7 @@ select array_union(column1, column2) from
arrays_with_repeating_elements_for_uni
query ?
select array_union(arrow_cast(column1, 'LargeList(Int64)'),
arrow_cast(column2, 'LargeList(Int64)')) from
arrays_with_repeating_elements_for_union;
----
+[0, 1]
[1, 2]
[2, 3]
[3, 4]
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]