nevi-me commented on a change in pull request #8792:
URL: https://github.com/apache/arrow/pull/8792#discussion_r532209107



##########
File path: rust/parquet/src/arrow/arrow_writer.rs
##########
@@ -912,23 +995,77 @@ mod tests {
 
         // build a record batch
         let batch = RecordBatch::try_new(
-            Arc::new(schema.clone()),
+            Arc::new(schema),
             vec![Arc::new(a), Arc::new(b), Arc::new(c)],
         )
         .unwrap();
 
-        let props = WriterProperties::builder()
-            .set_key_value_metadata(Some(vec![KeyValue {
-                key: "test_key".to_string(),
-                value: Some("test_value".to_string()),
-            }]))
+        roundtrip("test_arrow_writer_complex.parquet", batch);
+    }
+
+    #[test]
+    fn arrow_writer_2_level_struct() {
+        // tests writing <struct<struct<primitive>>
+        let field_c = Field::new("c", DataType::Int32, true);
+        let field_b = Field::new("b", DataType::Struct(vec![field_c]), true);
+        let field_a = Field::new("a", DataType::Struct(vec![field_b.clone()]), 
true);
+        let schema = Schema::new(vec![field_a.clone()]);
+
+        // create data
+        let c = Int32Array::from(vec![Some(1), None, Some(3), None, None, 
Some(6)]);
+        let b_data = ArrayDataBuilder::new(field_b.data_type().clone())
+            .len(6)
+            .null_bit_buffer(Buffer::from(vec![0b00100111]))
+            .add_child_data(c.data())
+            .build();
+        let b = StructArray::from(b_data);
+        let a_data = ArrayDataBuilder::new(field_a.data_type().clone())
+            .len(6)
+            .null_bit_buffer(Buffer::from(vec![0b00101111]))
+            .add_child_data(b.data())
             .build();
+        let a = StructArray::from(a_data);
 
-        let file = get_temp_file("test_arrow_writer_complex.parquet", &[]);
-        let mut writer =
-            ArrowWriter::try_new(file, Arc::new(schema), Some(props)).unwrap();
-        writer.write(&batch).unwrap();
-        writer.close().unwrap();
+        assert_eq!(a.null_count(), 1);
+        assert_eq!(a.column(0).null_count(), 2);
+
+        // build a racord batch
+        let batch = RecordBatch::try_new(Arc::new(schema), 
vec![Arc::new(a)]).unwrap();
+
+        roundtrip("test_arrow_writer_2_level_struct.parquet", batch);
+    }
+
+    #[test]
+    #[ignore = "waiting on inheritance of nested structs, ARROW-10684"]
+    fn arrow_writer_2_level_struct_non_null() {

Review comment:
       Done, I renamed this to `mixed_null`, then added a `non_null` with all 
fields non-nullable




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to