[ https://issues.apache.org/jira/browse/AVRO-1965?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15863610#comment-15863610 ]
Gabor Szadovszky commented on AVRO-1965: ---------------------------------------- It looks good to me. > Reparsing an existing schema mutates the schema > ----------------------------------------------- > > Key: AVRO-1965 > URL: https://issues.apache.org/jira/browse/AVRO-1965 > Project: Avro > Issue Type: Bug > Components: java > Affects Versions: 1.8.1 > Reporter: David Maughan > Assignee: Doug Cutting > Fix For: 1.8.2 > > 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 (v6.3.15#6346)