Rik Heijdens created AVRO-3631:
----------------------------------
Summary: Fix serialization of structs containing Fixed fields
Key: AVRO-3631
URL: https://issues.apache.org/jira/browse/AVRO-3631
Project: Apache Avro
Issue Type: Bug
Reporter: Rik Heijdens
Consider the following minimal Avro Schema:
{noformat}
{
"type": "record",
"name": "TestStructFixedField",
"fields": [
{
"name": "field",
"type": {
"type": "fixed",
"size": 6
}
}
]
}
{noformat}
In Rust, I might represent this schema with the following struct:
{noformat}
#[derive(Debug, Serialize, Deserialize)]
struct TestStructFixedField {
field: [u8; 6]
}
{noformat}
I would then expect to be able to use `apache_avro::to_avro_datum()` to convert
an instance of `TestStructFixedField` into an `Vec<u8>` using an instance of
`Schema` initialized from the schema listed above.
However, this fails because the `Value` produced by `apache_avro::to_value()`
represents `field` as an `Value::Array<Vec<u8>>` rather than a `Value::Fixed<6,
Vec<u8>` which does not pass schema validation.
I believe that there are two options to fix this:
1. Allow Value::Array<Vec<u8>> to pass validation if the array has the expected
length.
2. Update `apache_avro::to_value()` such that fixed length arrays are converted
into `Value::Fixed<N, Vec<u8>>` rather than `Value::Array`.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)