This is an automated email from the ASF dual-hosted git repository.
tustvold pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow-rs.git
The following commit(s) were added to refs/heads/master by this push:
new 4888dbf1d9 Clear row buffer before reuse (#4742)
4888dbf1d9 is described below
commit 4888dbf1d9441edb5fc0a8702fad05cfa4de5296
Author: Yijie Shen <[email protected]>
AuthorDate: Sun Aug 27 07:40:33 2023 -0700
Clear row buffer before reuse (#4742)
* Clear row buffer before reuse
* clear for Vec<u8> buffer
---
arrow-row/src/lib.rs | 24 +++++++++++++++++-------
1 file changed, 17 insertions(+), 7 deletions(-)
diff --git a/arrow-row/src/lib.rs b/arrow-row/src/lib.rs
index 18b5890d4a..b59d84061a 100644
--- a/arrow-row/src/lib.rs
+++ b/arrow-row/src/lib.rs
@@ -981,6 +981,7 @@ impl Rows {
/// Sets the length of this [`Rows`] to 0
pub fn clear(&mut self) {
self.offsets.truncate(1);
+ self.buffer.clear();
}
/// Returns the number of [`Row`] in this [`Rows`]
@@ -2429,17 +2430,26 @@ mod tests {
RowConverter::new(vec![SortField::new(DataType::Int32)]).unwrap();
let mut rows = converter.empty_rows(3, 128);
- let arrays = [
- Int32Array::from(vec![None, Some(2), Some(4)]),
- Int32Array::from(vec![Some(2), None, Some(4)]),
- ];
+ let first = Int32Array::from(vec![None, Some(2), Some(4)]);
+ let second = Int32Array::from(vec![Some(2), None, Some(4)]);
+ let arrays = vec![Arc::new(first) as ArrayRef, Arc::new(second) as
ArrayRef];
- for array in arrays {
+ for array in arrays.iter() {
rows.clear();
- let array = Arc::new(array) as ArrayRef;
converter.append(&mut rows, &[array.clone()]).unwrap();
let back = converter.convert_rows(&rows).unwrap();
- assert_eq!(&back[0], &array);
+ assert_eq!(&back[0], array);
+ }
+
+ let mut rows_expected = converter.empty_rows(3, 128);
+ converter.append(&mut rows_expected, &arrays[1..]).unwrap();
+
+ for (i, (actual, expected)) in
rows.iter().zip(rows_expected.iter()).enumerate() {
+ assert_eq!(
+ actual, expected,
+ "For row {}: expected {:?}, actual: {:?}",
+ i, expected, actual
+ );
}
}