[ 
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.

Reply via email to