Details
-
Bug
-
Status: Resolved
-
Minor
-
Resolution: Fixed
-
1.11.3
-
rust
-
Patch
Description
Following the below example, the Rust crate of apache-avro is unable to decode a previously encoded value that contains a string enum.
```rust
#[derive(PartialEq, Eq, Serialize, Deserialize, Debug)]
pub struct StringEnum
#[test]
fn avro_xxxx_decode_enum() {
let schema_content = r#"
{
"name": "AccessLog",
"namespace": "com.clevercloud.accesslogs.common.avro",
"type": "record",
"fields": [
{
"name": "source",
"type":
}
]
}
"#;
let schema = crate::Schema::parse_str(schema_content).unwrap();
let data = StringEnum { source: "SOZU".to_string() };
// encode into avro
let value = crate::to_value(&data).unwrap();
let mut buf = std::io::Cursor::new(crate::to_avro_datum(&schema, value).unwrap());
// decode from avro
let value = crate::from_avro_datum(&schema, &mut buf, None).unwrap();
let decoded_data: StringEnum = crate::from_value(&value).unwrap();
// :arrow_double_up: throw => Failed to deserialize Avro value into value: Expected a String|Bytes|Fixed|Uuid|Union, but got Enum(0, "SOZU")
assert_eq!(decoded_data, data);
}
```
Attachments
Issue Links
- links to