[
https://issues.apache.org/jira/browse/AVRO-3759?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17726165#comment-17726165
]
ASF subversion and git services commented on AVRO-3759:
-------------------------------------------------------
Commit 9d42df5a3b1e1723bdd513e62b085738c8a7b0ba in avro's branch
refs/heads/avro-3759-add-extra-types from Martin Tzvetanov Grigorov
[ https://gitbox.apache.org/repos/asf?p=avro.git;h=9d42df5a3 ]
AVRO-3759: Add extra types for RecordSchema, EnumSchema, FixedSchema and
DecimalSchema
Signed-off-by: Martin Tzvetanov Grigorov <[email protected]>
> [Rust] Schema types inconsistency
> ---------------------------------
>
> Key: AVRO-3759
> URL: https://issues.apache.org/jira/browse/AVRO-3759
> Project: Apache Avro
> Issue Type: Improvement
> Components: rust
> Reporter: Fedor Telnov
> Priority: Major
>
> That is how Unions and Records are defined in apache-avro Rust crate:
>
> ```
> /// A `union` Avro schema.
> Union(UnionSchema),
> /// A `record` Avro schema.
> ///
> /// The `lookup` table maps field names to their position in the `Vec`
> /// of `fields`.
> Record {
> name: Name,
> aliases: Aliases,
> doc: Documentation,
> fields: Vec<RecordField>,
> lookup: BTreeMap<String, usize>,
> },
> ```
>
> That is inconsistent - one variant is defined with pattern Type(Type) which
> is VERY convenient(for instance, it allows one to use UnionSchema as type),
> and the other one(Record) is simply a struct variant, which is not very
> convenient. My proposition is to hide Record's body in RecordSchema type and
> use it here - just as you do with union. That would significantly help users,
> as we can't use enum variants as types in Rust. It can also be done with
> other schema types as well.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)