[
https://issues.apache.org/jira/browse/AVRO-1347?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Vincenz Priesnitz updated AVRO-1347:
------------------------------------
Attachment: AVRO-1347.patch
Please review this patch which resolves this issue.
> Improve name and alias matching for named schemas
> -------------------------------------------------
>
> Key: AVRO-1347
> URL: https://issues.apache.org/jira/browse/AVRO-1347
> Project: Avro
> Issue Type: Improvement
> Components: java
> Reporter: Vincenz Priesnitz
> Attachments: AVRO-1347.patch
>
>
> When reading an avro file with a named schema, the aliases of the writers
> schema are not taken into account; only the aliases of the readers are
> matched against the writers name. Even if the writers aliases match the
> readers name, the schemas will not be matched.
> For example, the following two enum schemas will not be matched, even though
> they share a common alias.
> {code}
> {
> "type" : "enum",
> "name" : "foo",
> "alias" : "CommonAlias",
> "symbols" : ["LEFT", "RIGHT"]
> }
> {code}
> {code}
> {
> "type" : "enum",
> "name" : "bar",
> "alias" : "CommonAlias",
> "symbols" : ["LEFT", "RIGHT"]
> }
> {code}
> In most cases, the DatumReader resolves records of different names or
> namespaces by matching their fields.
> Unfortunately, there are some cases, where this sort of matching is not
> happening, but just the names are compared:
> * Other named nodes, like enums, fixed or fieldschemas are not matched this
> way.
> * A record inside a union is also only matched by the full name.
> The latter one is especially tricky, since two recordschemas that match
> structurally but differ in name or space, are interexchangable until they are
> put into an union, at which point an exception is thrown.
> I propose that two named schemas are matched, when they share a common name
> or alias.
> I implemented said changes and added a java annotation @AvroAlias(alias,
> space) that allows one to add an alias to a record, enum or field.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira