[
https://issues.apache.org/jira/browse/AVRO-1965?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Martin Tzvetanov Grigorov updated AVRO-1965:
--------------------------------------------
Fix Version/s: 1.11.0
(was: 1.9.0)
Resolution: Fixed
Status: Resolved (was: Patch Available)
The issue has been fixed with
[https://github.com/apache/avro/commit/335acc5770f7ad6bd6fdf4caa305373a79912d70]
/ https://issues.apache.org/jira/browse/AVRO-1646 with Avro 1.11.0
> Reparsing an existing schema mutates the schema
> -----------------------------------------------
>
> Key: AVRO-1965
> URL: https://issues.apache.org/jira/browse/AVRO-1965
> Project: Apache Avro
> Issue Type: Bug
> Components: java
> Affects Versions: 1.8.1
> Reporter: Dave Maughan
> Assignee: Martin Tzvetanov Grigorov
> Priority: Major
> Fix For: 1.11.0
>
> Attachments: AVRO-1965.patch
>
>
> h2. Overview
> In certain scenarios re-parsing a schema constructed via {{SchemaBuilder}} or
> {{Schema.createRecord}} produces a schema that is no longer equal to the
> original. In the below example, after parsing the existing schema, the
> namespace of the top level record is cascaded down to the bottom level
> record. Note that the way the top level record is being created with the
> namespace as part of the name {{default.a}} is the same way Hive's
> {{AvroSerDe}} constructs a schema from a Hive table's metadata.
> h2. Failing test case
> {code}
> Schema d = SchemaBuilder.builder().intType();
> Schema c =
> SchemaBuilder.record("c").fields().name("d").type(d).noDefault().endRecord();
> Schema b =
> SchemaBuilder.record("b").fields().name("c").type(c).noDefault().endRecord();
> Schema a1 =
> SchemaBuilder.record("default.a").fields().name("b").type(b).noDefault().endRecord();
> Schema a2 = new Schema.Parser().parse(a1.toString());
> // a1 =
> {"type":"record","name":"a","namespace":"default","fields":[{"name":"b","type":{"type":"record","name":"b","namespace":"","fields":[{"name":"c","type":{"type":"record","name":"c","fields":[{"name":"d","type":"int"}]}}]}}]}
> // a2 =
> {"type":"record","name":"a","namespace":"default","fields":[{"name":"b","type":{"type":"record","name":"b","namespace":"","fields":[{"name":"c","type":{"type":"record","name":"c","namespace":"default","fields":[{"name":"d","type":"int"}]}}]}}]}
> assertThat(a2, is(a1));
> {code}
--
This message was sent by Atlassian Jira
(v8.20.1#820001)