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

Reply via email to