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);
+ }
}