alamb commented on a change in pull request #848:
URL: https://github.com/apache/arrow-rs/pull/848#discussion_r735848177



##########
File path: arrow/src/ipc/convert.rs
##########
@@ -610,21 +610,7 @@ pub(crate) fn get_fb_field_type<'a>(
             // struct's fields are children
             let mut children = vec![];
             for field in fields {
-                let inner_types =

Review comment:
       In case anyone else is curious, without this code change the test in 
this PR fails like this:
   
   ```
   failures:
   
   ---- ipc::convert::tests::convert_schema_round_trip stdout ----
   thread 'ipc::convert::tests::convert_schema_round_trip' panicked at 
'assertion failed: `(left == right)`
     left: `Schema { fields: [Field { name: "uint8", data_type: UInt8, 
nullable: false, dict_id: 0, dict_is_ordered: false, metadata: Some({"k": "v"}) 
}, Field { name: "uint16", data_type: UInt16, nullable: true, dict_id: 0, 
dict_is_ordered: false, metadata: None }, Field { name: "uint32", data_type: 
UInt32, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: None }, 
Field { name: "uint64", data_type: UInt64, nullable: true, dict_id: 0, 
dict_is_ordered: false, metadata: None }, Field { name: "int8", data_type: 
Int8, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: None }, 
Field { name: "int16", data_type: Int16, nullable: false, dict_id: 0, 
dict_is_ordered: false, metadata: None }, Field { name: "int32", data_type: 
Int32, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: None }, 
Field { name: "int64", data_type: Int64, nullable: false, dict_id: 0, 
dict_is_ordered: false, metadata: None }, Field { name: "float16", data_type: 
Float16, nullable: true,
  dict_id: 0, dict_is_ordered: false, metadata: None }, Field { name: 
"float32", data_type: Float32, nullable: false, dict_id: 0, dict_is_ordered: 
false, metadata: None }, Field { name: "float64", data_type: Float64, nullable: 
true, dict_id: 0, dict_is_ordered: false, metadata: None }, Field { name: 
"null", data_type: Null, nullable: false, dict_id: 0, dict_is_ordered: false, 
metadata: None }, Field { name: "bool", data_type: Boolean, nullable: false, 
dict_id: 0, dict_is_ordered: false, metadata: None }, Field { name: "date32", 
data_type: Date32, nullable: false, dict_id: 0, dict_is_ordered: false, 
metadata: None }, Field { name: "date64", data_type: Date64, nullable: true, 
dict_id: 0, dict_is_ordered: false, metadata: None }, Field { name: 
"time32[s]", data_type: Time32(Second), nullable: true, dict_id: 0, 
dict_is_ordered: false, metadata: None }, Field { name: "time32[ms]", 
data_type: Time32(Millisecond), nullable: false, dict_id: 0, dict_is_ordered: 
false, metadata: None }, Field 
 { name: "time64[us]", data_type: Time64(Microsecond), nullable: false, 
dict_id: 0, dict_is_ordered: false, metadata: None }, Field { name: 
"time64[ns]", data_type: Time64(Nanosecond), nullable: true, dict_id: 0, 
dict_is_ordered: false, metadata: None }, Field { name: "timestamp[s]", 
data_type: Timestamp(Second, None), nullable: false, dict_id: 0, 
dict_is_ordered: false, metadata: None }, Field { name: "timestamp[ms]", 
data_type: Timestamp(Millisecond, None), nullable: true, dict_id: 0, 
dict_is_ordered: false, metadata: None }, Field { name: "timestamp[us]", 
data_type: Timestamp(Microsecond, Some("Africa/Johannesburg")), nullable: 
false, dict_id: 0, dict_is_ordered: false, metadata: None }, Field { name: 
"timestamp[ns]", data_type: Timestamp(Nanosecond, None), nullable: true, 
dict_id: 0, dict_is_ordered: false, metadata: None }, Field { name: 
"interval[ym]", data_type: Interval(YearMonth), nullable: true, dict_id: 0, 
dict_is_ordered: false, metadata: None }, Field { name: "interval[d
 t]", data_type: Interval(DayTime), nullable: true, dict_id: 0, 
dict_is_ordered: false, metadata: None }, Field { name: "utf8", data_type: 
Utf8, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: None }, 
Field { name: "binary", data_type: Binary, nullable: false, dict_id: 0, 
dict_is_ordered: false, metadata: None }, Field { name: "list[u8]", data_type: 
List(Field { name: "item", data_type: UInt8, nullable: false, dict_id: 0, 
dict_is_ordered: false, metadata: None }), nullable: true, dict_id: 0, 
dict_is_ordered: false, metadata: None }, Field { name: "list[struct<float32, 
int32, bool>]", data_type: List(Field { name: "struct", data_type: 
Struct([Field { name: "float32", data_type: UInt8, nullable: false, dict_id: 0, 
dict_is_ordered: false, metadata: None }, Field { name: "int32", data_type: 
Int32, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: None }, 
Field { name: "bool", data_type: Boolean, nullable: true, dict_id: 0, 
dict_is_ordered: false, metadata: None
  }]), nullable: true, dict_id: 0, dict_is_ordered: false, metadata: None }), 
nullable: false, dict_id: 0, dict_is_ordered: false, metadata: None }, Field { 
name: "struct<dictionary<int32, utf8>>", data_type: Struct([Field { name: 
"dictionary<int32, utf8>", data_type: Dictionary(Int32, Utf8), nullable: false, 
dict_id: 0, dict_is_ordered: false, metadata: None }]), nullable: false, 
dict_id: 0, dict_is_ordered: false, metadata: None }, Field { name: 
"struct<int64, list[struct<date32, list[struct<>]>]>", data_type: Struct([Field 
{ name: "int64", data_type: Int64, nullable: true, dict_id: 0, dict_is_ordered: 
false, metadata: None }, Field { name: "list[struct<date32, list[struct<>]>]", 
data_type: List(Field { name: "struct", data_type: Struct([Field { name: 
"date32", data_type: Date32, nullable: true, dict_id: 0, dict_is_ordered: 
false, metadata: None }, Field { name: "list[struct<>]", data_type: List(Field 
{ name: "struct", data_type: Struct([]), nullable: false, dict_id: 0, 
dict_is_ord
 ered: false, metadata: None }), nullable: false, dict_id: 0, dict_is_ordered: 
false, metadata: None }]), nullable: false, dict_id: 0, dict_is_ordered: false, 
metadata: None }), nullable: false, dict_id: 0, dict_is_ordered: false, 
metadata: None }]), nullable: false, dict_id: 0, dict_is_ordered: false, 
metadata: None }, Field { name: "struct<>", data_type: Struct([]), nullable: 
true, dict_id: 0, dict_is_ordered: false, metadata: None }, Field { name: 
"dictionary<int32, utf8>", data_type: Dictionary(Int32, Utf8), nullable: true, 
dict_id: 123, dict_is_ordered: true, metadata: None }, Field { name: 
"dictionary<uint8, uint32>", data_type: Dictionary(UInt8, UInt32), nullable: 
true, dict_id: 123, dict_is_ordered: true, metadata: None }, Field { name: 
"decimal<usize, usize>", data_type: Decimal(10, 6), nullable: false, dict_id: 
0, dict_is_ordered: false, metadata: None }], metadata: {"Key": "value"} }`,
    right: `Schema { fields: [Field { name: "uint8", data_type: UInt8, 
nullable: false, dict_id: 0, dict_is_ordered: false, metadata: Some({"k": "v"}) 
}, Field { name: "uint16", data_type: UInt16, nullable: true, dict_id: 0, 
dict_is_ordered: false, metadata: None }, Field { name: "uint32", data_type: 
UInt32, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: None }, 
Field { name: "uint64", data_type: UInt64, nullable: true, dict_id: 0, 
dict_is_ordered: false, metadata: None }, Field { name: "int8", data_type: 
Int8, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: None }, 
Field { name: "int16", data_type: Int16, nullable: false, dict_id: 0, 
dict_is_ordered: false, metadata: None }, Field { name: "int32", data_type: 
Int32, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: None }, 
Field { name: "int64", data_type: Int64, nullable: false, dict_id: 0, 
dict_is_ordered: false, metadata: None }, Field { name: "float16", data_type: 
Float16, nullable: true,
  dict_id: 0, dict_is_ordered: false, metadata: None }, Field { name: 
"float32", data_type: Float32, nullable: false, dict_id: 0, dict_is_ordered: 
false, metadata: None }, Field { name: "float64", data_type: Float64, nullable: 
true, dict_id: 0, dict_is_ordered: false, metadata: None }, Field { name: 
"null", data_type: Null, nullable: false, dict_id: 0, dict_is_ordered: false, 
metadata: None }, Field { name: "bool", data_type: Boolean, nullable: false, 
dict_id: 0, dict_is_ordered: false, metadata: None }, Field { name: "date32", 
data_type: Date32, nullable: false, dict_id: 0, dict_is_ordered: false, 
metadata: None }, Field { name: "date64", data_type: Date64, nullable: true, 
dict_id: 0, dict_is_ordered: false, metadata: None }, Field { name: 
"time32[s]", data_type: Time32(Second), nullable: true, dict_id: 0, 
dict_is_ordered: false, metadata: None }, Field { name: "time32[ms]", 
data_type: Time32(Millisecond), nullable: false, dict_id: 0, dict_is_ordered: 
false, metadata: None }, Field 
 { name: "time64[us]", data_type: Time64(Microsecond), nullable: false, 
dict_id: 0, dict_is_ordered: false, metadata: None }, Field { name: 
"time64[ns]", data_type: Time64(Nanosecond), nullable: true, dict_id: 0, 
dict_is_ordered: false, metadata: None }, Field { name: "timestamp[s]", 
data_type: Timestamp(Second, None), nullable: false, dict_id: 0, 
dict_is_ordered: false, metadata: None }, Field { name: "timestamp[ms]", 
data_type: Timestamp(Millisecond, None), nullable: true, dict_id: 0, 
dict_is_ordered: false, metadata: None }, Field { name: "timestamp[us]", 
data_type: Timestamp(Microsecond, Some("Africa/Johannesburg")), nullable: 
false, dict_id: 0, dict_is_ordered: false, metadata: None }, Field { name: 
"timestamp[ns]", data_type: Timestamp(Nanosecond, None), nullable: true, 
dict_id: 0, dict_is_ordered: false, metadata: None }, Field { name: 
"interval[ym]", data_type: Interval(YearMonth), nullable: true, dict_id: 0, 
dict_is_ordered: false, metadata: None }, Field { name: "interval[d
 t]", data_type: Interval(DayTime), nullable: true, dict_id: 0, 
dict_is_ordered: false, metadata: None }, Field { name: "utf8", data_type: 
Utf8, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: None }, 
Field { name: "binary", data_type: Binary, nullable: false, dict_id: 0, 
dict_is_ordered: false, metadata: None }, Field { name: "list[u8]", data_type: 
List(Field { name: "item", data_type: UInt8, nullable: false, dict_id: 0, 
dict_is_ordered: false, metadata: None }), nullable: true, dict_id: 0, 
dict_is_ordered: false, metadata: None }, Field { name: "list[struct<float32, 
int32, bool>]", data_type: List(Field { name: "struct", data_type: 
Struct([Field { name: "float32", data_type: UInt8, nullable: false, dict_id: 0, 
dict_is_ordered: false, metadata: None }, Field { name: "int32", data_type: 
Int32, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: None }, 
Field { name: "bool", data_type: Boolean, nullable: true, dict_id: 0, 
dict_is_ordered: false, metadata: None
  }]), nullable: true, dict_id: 0, dict_is_ordered: false, metadata: None }), 
nullable: false, dict_id: 0, dict_is_ordered: false, metadata: None }, Field { 
name: "struct<dictionary<int32, utf8>>", data_type: Struct([Field { name: 
"dictionary<int32, utf8>", data_type: Utf8, nullable: false, dict_id: 0, 
dict_is_ordered: false, metadata: None }]), nullable: false, dict_id: 0, 
dict_is_ordered: false, metadata: None }, Field { name: "struct<int64, 
list[struct<date32, list[struct<>]>]>", data_type: Struct([Field { name: 
"int64", data_type: Int64, nullable: true, dict_id: 0, dict_is_ordered: false, 
metadata: None }, Field { name: "list[struct<date32, list[struct<>]>]", 
data_type: List(Field { name: "struct", data_type: Struct([Field { name: 
"date32", data_type: Date32, nullable: true, dict_id: 0, dict_is_ordered: 
false, metadata: None }, Field { name: "list[struct<>]", data_type: List(Field 
{ name: "struct", data_type: Struct([]), nullable: false, dict_id: 0, 
dict_is_ordered: false, metada
 ta: None }), nullable: false, dict_id: 0, dict_is_ordered: false, metadata: 
None }]), nullable: false, dict_id: 0, dict_is_ordered: false, metadata: None 
}), nullable: false, dict_id: 0, dict_is_ordered: false, metadata: None }]), 
nullable: false, dict_id: 0, dict_is_ordered: false, metadata: None }, Field { 
name: "struct<>", data_type: Struct([]), nullable: true, dict_id: 0, 
dict_is_ordered: false, metadata: None }, Field { name: "dictionary<int32, 
utf8>", data_type: Dictionary(Int32, Utf8), nullable: true, dict_id: 123, 
dict_is_ordered: true, metadata: None }, Field { name: "dictionary<uint8, 
uint32>", data_type: Dictionary(UInt8, UInt32), nullable: true, dict_id: 123, 
dict_is_ordered: true, metadata: None }, Field { name: "decimal<usize, usize>", 
data_type: Decimal(10, 6), nullable: false, dict_id: 0, dict_is_ordered: false, 
metadata: None }], metadata: {"Key": "value"} }`', 
arrow/src/ipc/convert.rs:864:9
   stack backtrace:
      0: rust_begin_unwind
                at 
/rustc/09c42c45858d5f3aedfa670698275303a3d19afa/library/std/src/panicking.rs:517:5
      1: core::panicking::panic_fmt
                at 
/rustc/09c42c45858d5f3aedfa670698275303a3d19afa/library/core/src/panicking.rs:101:14
      2: core::panicking::assert_failed_inner
                at 
/rustc/09c42c45858d5f3aedfa670698275303a3d19afa/library/core/src/panicking.rs:183:17
      3: core::panicking::assert_failed
                at 
/rustc/09c42c45858d5f3aedfa670698275303a3d19afa/library/core/src/panicking.rs:140:5
      4: arrow::ipc::convert::tests::convert_schema_round_trip
                at ./src/ipc/convert.rs:864:9
      5: arrow::ipc::convert::tests::convert_schema_round_trip::{{closure}}
                at ./src/ipc/convert.rs:707:5
      6: core::ops::function::FnOnce::call_once
                at 
/rustc/09c42c45858d5f3aedfa670698275303a3d19afa/library/core/src/ops/function.rs:227:5
      7: core::ops::function::FnOnce::call_once
                at 
/rustc/09c42c45858d5f3aedfa670698275303a3d19afa/library/core/src/ops/function.rs:227:5
   note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose 
backtrace.
   
   
   ```




-- 
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: github-unsubscr...@arrow.apache.org

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


Reply via email to