Ramana Suvarapu created AVRO-1474:
-------------------------------------

             Summary: C++ resolvind decoder doesn't work when reader schema has 
more fields than writer schema
                 Key: AVRO-1474
                 URL: https://issues.apache.org/jira/browse/AVRO-1474
             Project: Avro
          Issue Type: Bug
          Components: c++
    Affects Versions: 1.7.6
            Reporter: Ramana Suvarapu
            Assignee: Thiruvalluvan M. G.


When reader schema has more number of fields than writer schema, C++ 
implementation of resolving decoder is throwing exception "throwing exception 
"Don't know how to handle excess fields for reader.” with out checking whether 
fields are optional or fields have default values.

Attached are reader and writer schemas. Record in reader schema has 2 
additional fields than writer schema. One field is required field but it has 
default value and another one is optional field (union of null and string). 
Since one has default value and another is optional both reader and writer 
schemas are supposed to be compatible. 
 
{"name": "defaultField", "type": "string", "default": "DEFAULT", 
"declared":"true"},     
{"name": "optionalField", "type": ["string", "null"],"declared":"true"},
 
main()
{
  avro::ValidSchema readerSchema = load("reader.json");
  avro::ValidSchema writerSchema = load("writer.json");
  avro::DecoderPtr d = avro::resolvingDecoder(writerSchema, 
readerSchema,avro::binaryDecoder());
}
 
But when I tried to create resolving decoder, I am getting "Don't know how to 
handle excess fields for reader.” But Java implementation works.  

Also field ordering is not working. 



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to