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)