Roger created AVRO-2707:
---------------------------

             Summary: union reading does not use first matching member
                 Key: AVRO-2707
                 URL: https://issues.apache.org/jira/browse/AVRO-2707
             Project: Apache Avro
          Issue Type: Bug
            Reporter: Roger


[Here|https://gist.github.com/rogpeppe/5faf971eec51f3dbd316bb71d6d5dccc] is a 
JSON representation of a test case that produces unexpected behaviour under the 
Java Avro implementation.

The test verifies that the JSON data in inData with encoding inSchema produces 
outData when read as outSchema.

The specification says: "The first schema in the reader's union that matches 
the selected writer's union schema" which to me says that the output should be 
a long, because long is before int in the reader's union and long matches int.

To reproduce on the command line, you'll need a version of avro-tools with 
[this PR applied|https://github.com/apache/avro/pull/785], then run:

        echo '{"F":{"int":999}}' |
        avro fromjson --schema 
'{"name":"R","type":"record","fields":[{"name":"F","type":["int","string"],"default":1234}]}'
 - |
        avro tojson --reader-schema 
'{"name":"R","type":"record","fields":[{"name":"F","type":["long","int","string"],"default":1234}]}'
  -

This prints:

        {"F":{"int":999}}

but I'd expect to see this:

        {"F":{"long":999}}





--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to