This is an automated email from the ASF dual-hosted git repository.

jeffreyvo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-rs.git


The following commit(s) were added to refs/heads/main by this push:
     new 88b135a2fa fix: `GenericListViewArray::new_null` returns empty array 
(#8905)
88b135a2fa is described below

commit 88b135a2fadfce80d7962ca0d91473f9c62337fb
Author: Khanh Duong <[email protected]>
AuthorDate: Mon Nov 24 21:10:38 2025 +0900

    fix: `GenericListViewArray::new_null` returns empty array (#8905)
    
    # Which issue does this PR close?
    
    - Closes #8904.
    
    # Rationale for this change
    
    `GenericListViewArray::new_null` should return an array with correct
    len.
    
    # What changes are included in this PR?
    
    Construct zeroed offsets and sizes for list view.
    
    # Are these changes tested?
    
    Yes.
    
    # Are there any user-facing changes?
    
    No.
---
 arrow-array/src/array/fixed_size_list_array.rs |  7 +++++++
 arrow-array/src/array/list_array.rs            |  7 +++++++
 arrow-array/src/array/list_view_array.rs       | 11 +++++++++--
 3 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/arrow-array/src/array/fixed_size_list_array.rs 
b/arrow-array/src/array/fixed_size_list_array.rs
index ddaaac80dc..fca92a6481 100644
--- a/arrow-array/src/array/fixed_size_list_array.rs
+++ b/arrow-array/src/array/fixed_size_list_array.rs
@@ -837,4 +837,11 @@ mod tests {
             "Invalid argument error: An degenerate FixedSizeListArray should 
have no underlying values, found 3 values"
         );
     }
+
+    #[test]
+    fn test_fixed_size_list_new_null_len() {
+        let field = Arc::new(Field::new_list_field(DataType::Int32, true));
+        let array = FixedSizeListArray::new_null(field, 2, 5);
+        assert_eq!(array.len(), 5);
+    }
 }
diff --git a/arrow-array/src/array/list_array.rs 
b/arrow-array/src/array/list_array.rs
index d7b25ba50d..32add1abf5 100644
--- a/arrow-array/src/array/list_array.rs
+++ b/arrow-array/src/array/list_array.rs
@@ -1284,4 +1284,11 @@ mod tests {
         let field = Arc::new(Field::new("element", values.data_type().clone(), 
false));
         ListArray::new(field.clone(), offsets, Arc::new(values), None);
     }
+
+    #[test]
+    fn test_list_new_null_len() {
+        let field = Arc::new(Field::new_list_field(DataType::Int32, true));
+        let array = ListArray::new_null(field, 5);
+        assert_eq!(array.len(), 5);
+    }
 }
diff --git a/arrow-array/src/array/list_view_array.rs 
b/arrow-array/src/array/list_view_array.rs
index cd1c0b9900..5f8e1315cd 100644
--- a/arrow-array/src/array/list_view_array.rs
+++ b/arrow-array/src/array/list_view_array.rs
@@ -225,8 +225,8 @@ impl<OffsetSize: OffsetSizeTrait> 
GenericListViewArray<OffsetSize> {
         Self {
             data_type: Self::DATA_TYPE_CONSTRUCTOR(field),
             nulls: Some(NullBuffer::new_null(len)),
-            value_offsets: ScalarBuffer::from(vec![]),
-            value_sizes: ScalarBuffer::from(vec![]),
+            value_offsets: ScalarBuffer::from(vec![OffsetSize::usize_as(0); 
len]),
+            value_sizes: ScalarBuffer::from(vec![OffsetSize::usize_as(0); 
len]),
             values,
         }
     }
@@ -1120,4 +1120,11 @@ mod tests {
             .collect();
         assert_eq!(values, vec![Some(vec![]), Some(vec![]), Some(vec![])]);
     }
+
+    #[test]
+    fn test_list_view_new_null_len() {
+        let field = Arc::new(Field::new_list_field(DataType::Int32, true));
+        let array = ListViewArray::new_null(field, 5);
+        assert_eq!(array.len(), 5);
+    }
 }

Reply via email to