This is an automated email from the ASF dual-hosted git repository.
alamb 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 51a9d0f9c Add Sliced ListArray test (#3748) (#4186)
51a9d0f9c is described below
commit 51a9d0f9c9f40bbe229b1f85c131ac659b065e43
Author: Raphael Taylor-Davies <[email protected]>
AuthorDate: Tue May 9 17:40:19 2023 +0100
Add Sliced ListArray test (#3748) (#4186)
---
arrow-ipc/src/writer.rs | 37 ++++++++++++++++++++++++++++++++++++-
1 file changed, 36 insertions(+), 1 deletion(-)
diff --git a/arrow-ipc/src/writer.rs b/arrow-ipc/src/writer.rs
index 8f36f8c04..b2fcec08d 100644
--- a/arrow-ipc/src/writer.rs
+++ b/arrow-ipc/src/writer.rs
@@ -1374,8 +1374,8 @@ mod tests {
use std::io::Seek;
use std::sync::Arc;
- use arrow_array::builder::PrimitiveRunBuilder;
use arrow_array::builder::UnionBuilder;
+ use arrow_array::builder::{ListBuilder, PrimitiveRunBuilder,
UInt32Builder};
use arrow_array::types::*;
use arrow_schema::DataType;
@@ -2106,4 +2106,39 @@ mod tests {
assert_eq!(expected, actual);
}
}
+
+ #[test]
+ fn encode_lists() {
+ let val_inner = Field::new("item", DataType::UInt32, true);
+ let val_list_field = Field::new_list("val", val_inner, false);
+
+ let schema = Arc::new(Schema::new(vec![val_list_field]));
+
+ let values = {
+ let u32 = UInt32Builder::new();
+ let mut ls = ListBuilder::new(u32);
+
+ for list in vec![vec![1u32, 2, 3], vec![4, 5, 6], vec![7, 8, 9,
10]] {
+ for value in list {
+ ls.values().append_value(value);
+ }
+ ls.append(true)
+ }
+
+ ls.finish()
+ };
+
+ let batch =
+ RecordBatch::try_new(Arc::clone(&schema),
vec![Arc::new(values)]).unwrap();
+ let batch = batch.slice(1, 1);
+
+ let mut writer = FileWriter::try_new(Vec::<u8>::new(),
&schema).unwrap();
+ writer.write(&batch).unwrap();
+ writer.finish().unwrap();
+ let data = writer.into_inner().unwrap();
+
+ let mut reader = FileReader::try_new(Cursor::new(data), None).unwrap();
+ let batch2 = reader.next().unwrap().unwrap();
+ assert_eq!(batch, batch2);
+ }
}