[ https://issues.apache.org/jira/browse/AVRO-75?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12797936#action_12797936 ]
Philip Zeyliger commented on AVRO-75: ------------------------------------- The code answered my own question: {noformat} if (actual.getType() == Type.UNION) // resolve unions actual = actual.getTypes().get((int)in.readIndex()); if (expected.getType() == Type.UNION) expected = resolveExpected(actual, expected); {noformat} A record written with a schema of [string, int] can be read by a schema of [int] as long as the record only follows the int branch. It still feels weird to me that schema resolution depends on the data being resolved. I was going to write an avroj tool tlike "valid_schema_resolution writer_schema reader_schema", but such a thing would have to depend on the datum. > Clarify resolution for enums (and fix code) > ------------------------------------------- > > Key: AVRO-75 > URL: https://issues.apache.org/jira/browse/AVRO-75 > Project: Avro > Issue Type: Bug > Components: spec > Reporter: Raymie Stata > Assignee: Doug Cutting > Fix For: 1.3.0 > > > The current resolution rule for enum's says: "if the writer's symbol is not > present in the reader's enum, then the enum value is unset." This is the > only place the word "unset" is used in the doc, it's not clear what you mean. > The code seems to be inconsistent: GenericDatumReader will happily return a > symbol the reader doesn't understand; ReflectDatumReader will probably throw > a class-not-found exception; ResolvingDecoder throws an error. > I propose that we declare this case an error, i.e., rewrite the spec to "if > the writer's symbol is not listed in the reader's enum, an error is > signaled." GenericDatumReader should be updated to throw an error in this > case. > If we decide to stick with the "unset" language, we need to define what > "unset" means (and, if necessary, update ReflectDatumReader and > ResolvingDecoder). -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.