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