Santiago Fraire Willemoes created AVRO-3709:
-----------------------------------------------

             Summary: [Rust] Add aliases to RecordField
                 Key: AVRO-3709
                 URL: https://issues.apache.org/jira/browse/AVRO-3709
             Project: Apache Avro
          Issue Type: Improvement
          Components: rust
    Affects Versions: 1.11.1
            Reporter: Santiago Fraire Willemoes


Hello everyone, I'm working on an [avdl parser for 
rust|https://github.com/woile/avdl-rs] and I'm having an issue with the lack of 
aliases on the `RecordField`.

For an Avdl like this:
{code:java}
protocol MyProtocol {
    record Hello {
        string @aliases(["nickname"]) name;
    }
}
{code}
The schema is rendered as:
{code:java}
{
  "type" : "record",
  "name" : "Hello",
  "fields" : [ {
    "name" : "name",
    "type" : "string",
    "aliases" : [ "nickname" ]
  } ]
}
{code}
But when I generate the schema on rust using the `RecordField`, it doesn't have 
aliases. 
See 
[https://github.com/apache/avro/blob/master/lang/rust/avro/src/schema.rs#L559-L580]

And even if I use `custom_attributes` with aliases, when generating the schema 
using `schema.canonical_form()`, they don't appear.

The `RecordField` has `custom_attributes` for unknown fields but aliases are 
known. See documentation here:
[https://avro.apache.org/docs/1.11.1/idl-language/#other-language-features]

The interesting thing is that the Specification doesn't mention aliases in a 
RecordField, but they are used widely everywhere.

I would be willing to submit a PR, not sure if there's another reason for the 
lack of aliases that I'm missing.

I would also like to ask for advice, is the Schema supposed to be used to 
generate a json schema? or is it solely for deserializing a json schema? Should 
I create a fork of it? I find it strange that it implements serde's serialize 
but it doesn't fully serialize all the attributes.

Thanks a lot.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to