You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by ne...@apache.org on 2021/09/11 16:52:27 UTC

[arrow-rs] branch master updated: Added PartialEq to RecordBatch (#750)

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

nevime 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 0e4e75b  Added PartialEq to RecordBatch (#750)
0e4e75b is described below

commit 0e4e75b7cc5ac8e934b5846df75612ce8e641bfb
Author: Matthew Turner <ma...@outlook.com>
AuthorDate: Sat Sep 11 12:52:23 2021 -0400

    Added PartialEq to RecordBatch (#750)
    
    * Added PartialEq to RecordBatch
    
    * derive PartialEq and add tests
---
 arrow/src/record_batch.rs | 159 +++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 158 insertions(+), 1 deletion(-)

diff --git a/arrow/src/record_batch.rs b/arrow/src/record_batch.rs
index bb4b301..b6e5566 100644
--- a/arrow/src/record_batch.rs
+++ b/arrow/src/record_batch.rs
@@ -37,7 +37,7 @@ use crate::error::{ArrowError, Result};
 /// serialization and computation functions, possibly incremental.
 /// See also [CSV reader](crate::csv::Reader) and
 /// [JSON reader](crate::json::Reader).
-#[derive(Clone, Debug)]
+#[derive(Clone, Debug, PartialEq)]
 pub struct RecordBatch {
     schema: SchemaRef,
     columns: Vec<Arc<dyn Array>>,
@@ -741,4 +741,161 @@ mod tests {
             "Invalid argument error: batches[1] schema is different with argument schema.",
         );
     }
+
+    #[test]
+    fn record_batch_equality() {
+        let id_arr1 = Int32Array::from(vec![1, 2, 3, 4]);
+        let val_arr1 = Int32Array::from(vec![5, 6, 7, 8]);
+        let schema1 = Schema::new(vec![
+            Field::new("id", DataType::Int32, false),
+            Field::new("val", DataType::Int32, false),
+        ]);
+
+        let id_arr2 = Int32Array::from(vec![1, 2, 3, 4]);
+        let val_arr2 = Int32Array::from(vec![5, 6, 7, 8]);
+        let schema2 = Schema::new(vec![
+            Field::new("id", DataType::Int32, false),
+            Field::new("val", DataType::Int32, false),
+        ]);
+
+        let batch1 = RecordBatch::try_new(
+            Arc::new(schema1),
+            vec![Arc::new(id_arr1), Arc::new(val_arr1)],
+        )
+        .unwrap();
+
+        let batch2 = RecordBatch::try_new(
+            Arc::new(schema2),
+            vec![Arc::new(id_arr2), Arc::new(val_arr2)],
+        )
+        .unwrap();
+
+        assert_eq!(batch1, batch2);
+    }
+
+    #[test]
+    fn record_batch_vals_ne() {
+        let id_arr1 = Int32Array::from(vec![1, 2, 3, 4]);
+        let val_arr1 = Int32Array::from(vec![5, 6, 7, 8]);
+        let schema1 = Schema::new(vec![
+            Field::new("id", DataType::Int32, false),
+            Field::new("val", DataType::Int32, false),
+        ]);
+
+        let id_arr2 = Int32Array::from(vec![1, 2, 3, 4]);
+        let val_arr2 = Int32Array::from(vec![1, 2, 3, 4]);
+        let schema2 = Schema::new(vec![
+            Field::new("id", DataType::Int32, false),
+            Field::new("val", DataType::Int32, false),
+        ]);
+
+        let batch1 = RecordBatch::try_new(
+            Arc::new(schema1),
+            vec![Arc::new(id_arr1), Arc::new(val_arr1)],
+        )
+        .unwrap();
+
+        let batch2 = RecordBatch::try_new(
+            Arc::new(schema2),
+            vec![Arc::new(id_arr2), Arc::new(val_arr2)],
+        )
+        .unwrap();
+
+        assert_ne!(batch1, batch2);
+    }
+
+    #[test]
+    fn record_batch_column_names_ne() {
+        let id_arr1 = Int32Array::from(vec![1, 2, 3, 4]);
+        let val_arr1 = Int32Array::from(vec![5, 6, 7, 8]);
+        let schema1 = Schema::new(vec![
+            Field::new("id", DataType::Int32, false),
+            Field::new("val", DataType::Int32, false),
+        ]);
+
+        let id_arr2 = Int32Array::from(vec![1, 2, 3, 4]);
+        let val_arr2 = Int32Array::from(vec![5, 6, 7, 8]);
+        let schema2 = Schema::new(vec![
+            Field::new("id", DataType::Int32, false),
+            Field::new("num", DataType::Int32, false),
+        ]);
+
+        let batch1 = RecordBatch::try_new(
+            Arc::new(schema1),
+            vec![Arc::new(id_arr1), Arc::new(val_arr1)],
+        )
+        .unwrap();
+
+        let batch2 = RecordBatch::try_new(
+            Arc::new(schema2),
+            vec![Arc::new(id_arr2), Arc::new(val_arr2)],
+        )
+        .unwrap();
+
+        assert_ne!(batch1, batch2);
+    }
+
+    #[test]
+    fn record_batch_column_number_ne() {
+        let id_arr1 = Int32Array::from(vec![1, 2, 3, 4]);
+        let val_arr1 = Int32Array::from(vec![5, 6, 7, 8]);
+        let schema1 = Schema::new(vec![
+            Field::new("id", DataType::Int32, false),
+            Field::new("val", DataType::Int32, false),
+        ]);
+
+        let id_arr2 = Int32Array::from(vec![1, 2, 3, 4]);
+        let val_arr2 = Int32Array::from(vec![5, 6, 7, 8]);
+        let num_arr2 = Int32Array::from(vec![5, 6, 7, 8]);
+        let schema2 = Schema::new(vec![
+            Field::new("id", DataType::Int32, false),
+            Field::new("val", DataType::Int32, false),
+            Field::new("num", DataType::Int32, false),
+        ]);
+
+        let batch1 = RecordBatch::try_new(
+            Arc::new(schema1),
+            vec![Arc::new(id_arr1), Arc::new(val_arr1)],
+        )
+        .unwrap();
+
+        let batch2 = RecordBatch::try_new(
+            Arc::new(schema2),
+            vec![Arc::new(id_arr2), Arc::new(val_arr2), Arc::new(num_arr2)],
+        )
+        .unwrap();
+
+        assert_ne!(batch1, batch2);
+    }
+
+    #[test]
+    fn record_batch_row_count_ne() {
+        let id_arr1 = Int32Array::from(vec![1, 2, 3]);
+        let val_arr1 = Int32Array::from(vec![5, 6, 7]);
+        let schema1 = Schema::new(vec![
+            Field::new("id", DataType::Int32, false),
+            Field::new("val", DataType::Int32, false),
+        ]);
+
+        let id_arr2 = Int32Array::from(vec![1, 2, 3, 4]);
+        let val_arr2 = Int32Array::from(vec![5, 6, 7, 8]);
+        let schema2 = Schema::new(vec![
+            Field::new("id", DataType::Int32, false),
+            Field::new("num", DataType::Int32, false),
+        ]);
+
+        let batch1 = RecordBatch::try_new(
+            Arc::new(schema1),
+            vec![Arc::new(id_arr1), Arc::new(val_arr1)],
+        )
+        .unwrap();
+
+        let batch2 = RecordBatch::try_new(
+            Arc::new(schema2),
+            vec![Arc::new(id_arr2), Arc::new(val_arr2)],
+        )
+        .unwrap();
+
+        assert_ne!(batch1, batch2);
+    }
 }