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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]