Steven Aerts created AVRO-2830:
----------------------------------
Summary: Union with aliases fail on 'Duplicate in union'
Key: AVRO-2830
URL: https://issues.apache.org/jira/browse/AVRO-2830
Project: Apache Avro
Issue Type: Bug
Components: java
Affects Versions: 1.9.2
Reporter: Steven Aerts
When evolving an avro scheme I think it should be possible to merge multiple
records in to one.
So with this union as writer type:
{code:java}
[ {
"type" : "record",
"name" : "A",
"fields" : [ { "name" : "a", "type" : "boolean" } ]
}, {
"type" : "record",
"name" : "B",
"fields" : [ { "name" : "b", "type" : "boolean" } ]
} ]
{code}
I want to ready it with the following reader schema:
{code:java}
[ {
"type" : "record",
"name" : "B",
"aliases" : [ "A" ],
"fields" : [
{ "name" : "a", "type" : "boolean", "default" : true},
{ "name" : "b", "type" : "boolean", "default" : true}
]
} ]
{code}
This however generates the following stacktrace when trying to read it:
{code:java}
org.apache.avro.AvroRuntimeException: Duplicate in union:B
at org.apache.avro.Schema$UnionSchema.<init>(Schema.java:1165)
at org.apache.avro.Schema.createUnion(Schema.java:224)
at org.apache.avro.Schema.applyAliases(Schema.java:1846)
at org.apache.avro.Schema.applyAliases(Schema.java:1802)
at org.apache.avro.Resolver.resolve(Resolver.java:62)
at org.apache.avro.Resolver.resolve(Resolver.java:69)
at
org.apache.avro.io.parsing.ResolvingGrammarGenerator.generate(ResolvingGrammarGenerator.java:64)
at org.apache.avro.io.ResolvingDecoder.resolve(ResolvingDecoder.java:84)
{code}
We have a pull request coming up to fix this issue.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)