jhorstmann opened a new issue, #1587:
URL: https://github.com/apache/arrow-rs/issues/1587

   **Describe the bug**
   
   The validation fails when comparing the `nullable` flag of a MapArray data 
field.
   
   ```
   ---- arrow::arrow_reader::tests::test_read_maps stdout ----
   thread 'arrow::arrow_reader::tests::test_read_maps' panicked at 'called 
`Result::unwrap()` on an `Err` value: InvalidArgumentError("Child type mismatch 
for Struct([Field { name: \"key\", data_type: Utf8, nullable: false, dict_id: 
0, dict_is_ordered: false, metadata: None }, Field { name: \"value\", 
data_type: Map(Field { name: \"key_value\", data_type: Struct([Field { name: 
\"key\", data_type: Int32, nullable: false, dict_id: 0, dict_is_ordered: false, 
metadata: None }, Field { name: \"value\", data_type: Boolean, nullable: false, 
dict_id: 0, dict_is_ordered: false, metadata: None }]), nullable: false, 
dict_id: 0, dict_is_ordered: false, metadata: None }, false), nullable: true, 
dict_id: 0, dict_is_ordered: false, metadata: None }]). Expected Map(Field { 
name: \"key_value\", data_type: Struct([Field { name: \"key\", data_type: 
Int32, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: None }, 
Field { name: \"value\", data_type: Boolean, nullable: false, dict_id: 0, dict
 _is_ordered: false, metadata: None }]), nullable: false, dict_id: 0, 
dict_is_ordered: false, metadata: None }, false) but child data had Map(Field { 
name: \"key_value\", data_type: Struct([Field { name: \"key\", data_type: 
Int32, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: None }, 
Field { name: \"value\", data_type: Boolean, nullable: false, dict_id: 0, 
dict_is_ordered: false, metadata: None }]), nullable: true, dict_id: 0, 
dict_is_ordered: false, metadata: None }, false)")', 
arrow/src/array/data.rs:308:34
   stack backtrace:
      0: rust_begin_unwind
                at 
/rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/std/src/panicking.rs:584:5
      1: core::panicking::panic_fmt
                at 
/rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/core/src/panicking.rs:143:14
      2: core::result::unwrap_failed
                at 
/rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/core/src/result.rs:1749:5
      3: core::result::Result<T,E>::unwrap
                at 
/rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/core/src/result.rs:1065:23
      4: arrow::array::data::ArrayData::new_unchecked
                at 
/home/jhorstmann/Source/github/apache/arrow-rs/arrow/src/array/data.rs:308:9
      5: arrow::array::data::ArrayDataBuilder::build_unchecked
                at 
/home/jhorstmann/Source/github/apache/arrow-rs/arrow/src/array/data.rs:1446:9
      6: <parquet::arrow::array_reader::map_array::MapArrayReader as 
parquet::arrow::array_reader::ArrayReader>::next_batch
                at ./src/arrow/array_reader/map_array.rs:106:35
      7: <parquet::arrow::array_reader::StructArrayReader as 
parquet::arrow::array_reader::ArrayReader>::next_batch::{{closure}}
                at ./src/arrow/array_reader.rs:719:27
      8: core::iter::adapters::map::map_try_fold::{{closure}}
                at 
/rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/core/src/iter/adapters/map.rs:91:28
      9: core::iter::traits::iterator::Iterator::try_fold
                at 
/rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/core/src/iter/traits/iterator.rs:2109:21
     10: <core::iter::adapters::map::Map<I,F> as 
core::iter::traits::iterator::Iterator>::try_fold
                at 
/rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/core/src/iter/adapters/map.rs:117:9
     11: <parquet::arrow::array_reader::StructArrayReader as 
parquet::arrow::array_reader::ArrayReader>::next_batch
                at ./src/arrow/array_reader.rs:716:30
     12: <parquet::arrow::arrow_reader::ParquetRecordBatchReader as 
core::iter::traits::iterator::Iterator>::next
                at ./src/arrow/arrow_reader.rs:229:15
     13: parquet::arrow::arrow_reader::tests::test_read_maps
                at ./src/arrow/arrow_reader.rs:1066:22
     14: parquet::arrow::arrow_reader::tests::test_read_maps::{{closure}}
                at ./src/arrow/arrow_reader.rs:1056:5
     15: core::ops::function::FnOnce::call_once
                at 
/rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/core/src/ops/function.rs:227:5
     16: core::ops::function::FnOnce::call_once
                at 
/rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/core/src/ops/function.rs:227:5
   note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose 
backtrace.
   ```
   
   **To Reproduce**
   
   ```
   $ RUST_BACKTRACE=1 cargo test --features force_validate -- test_read_map
   ```
   
   **Additional context**
   I haven't looked deeper into this. First idea was that maybe the validation 
should use `DataType::equals_datatype` for comparison, but that also compares 
the `nullable` flag.
   


-- 
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.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to