You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "Florentin (Jira)" <ji...@apache.org> on 2024/03/04 15:34:00 UTC
[jira] [Created] (AVRO-3955) [Rust] unable to decode string enum from avro encoded data
Florentin created AVRO-3955:
-------------------------------
Summary: [Rust] unable to decode string enum from avro encoded data
Key: AVRO-3955
URL: https://issues.apache.org/jira/browse/AVRO-3955
Project: Apache Avro
Issue Type: Bug
Components: rust
Affects Versions: 1.11.3
Reporter: Florentin
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 {
pub source: String,
}
#[test]
fn avro_xxxx_decode_enum() {
let schema_content = r#"
{
"name": "AccessLog",
"namespace": "com.clevercloud.accesslogs.common.avro",
"type": "record",
"fields": [
{
"name": "source",
"type": {
"type": "enum",
"name": "SourceType",
"items": "string",
"symbols": ["SOZU", "HAPROXY", "HAPROXY_TCP"]
}
}
]
}
"#;
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);
}
```
--
This message was sent by Atlassian Jira
(v8.20.10#820010)