edmondop commented on code in PR #7897:
URL: https://github.com/apache/arrow-datafusion/pull/7897#discussion_r1387344858


##########
datafusion/physical-expr/src/array_expressions.rs:
##########
@@ -1358,6 +1360,94 @@ macro_rules! to_string {
     }};
 }
 
+fn union_generic_lists<OffsetSize: OffsetSizeTrait>(
+    l: &GenericListArray<OffsetSize>,
+    r: &GenericListArray<OffsetSize>,
+) -> Result<GenericListArray<OffsetSize>, DataFusionError> {
+    let converter =
+        
RowConverter::new(vec![SortField::new(l.value_type().clone())]).unwrap();
+    
+    let nulls = NullBuffer::union(l.nulls(), r.nulls());
+    let field = Arc::new(Field::new(
+        "item",
+        l.value_type().to_owned(),
+        l.is_nullable(),
+    ));
+    let l_values = l.values().clone();
+    let r_values = r.values().clone();
+    let l_values = converter.convert_columns(&[l_values]).unwrap();
+    let r_values = converter.convert_columns(&[r_values]).unwrap();
+
+    // Might be worth adding an upstream OffsetBufferBuilder
+    let mut offsets = Vec::<OffsetSize>::with_capacity(l.len() + 1);
+    offsets.push(OffsetSize::usize_as(0));
+    let mut rows = Vec::with_capacity(l_values.num_rows() + 
r_values.num_rows());
+
+    for (l_w, r_w) in l.offsets().windows(2).zip(r.offsets().windows(2)) {
+        let mut dedup = HashSet::new();
+        // Needed to preserve ordering
+        let mut row_elements:Vec<Row<'_>> = vec![];
+        let l_slice = l_w[0].as_usize()..l_w[1].as_usize();
+        let r_slice = r_w[0].as_usize()..r_w[1].as_usize();
+        for i in l_slice {
+            let left_row = l_values.row(i);
+            if dedup.insert(left_row) {
+                row_elements.push(left_row);

Review Comment:
   Fixed with 
https://github.com/apache/arrow-datafusion/commit/648ae5d659142082d085418dc7b84ad857ba8136



-- 
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]

Reply via email to