[ https://issues.apache.org/jira/browse/AVRO-1912?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
John McClean updated AVRO-1912: ------------------------------- Status: Patch Available (was: Open) > C++ Resolving Decoding doesn't work if element removed from record in array. > ---------------------------------------------------------------------------- > > Key: AVRO-1912 > URL: https://issues.apache.org/jira/browse/AVRO-1912 > Project: Avro > Issue Type: Bug > Reporter: John McClean > Attachments: AVRO-1912.patch > > > Writer schema: > {code} > { > "type": "record", > "name": "TestRecord", > "fields": [ > { > "name": "array", > "type": { > "type": "array", > "items": { > "name": "item", > "type": "record", > "fields": [ > { "name": "A", "type": "string" }, > { "name": "B", "type": "string", "default": "foo" } > ] > } > } > } > ] > } > {code} > Reader schema: > {code} > { > "type": "record", > "name": "TestRecord", > "fields": [ > { > "name": "array", > "type": { > "type": "array", > "items": { > "name": "item", > "type": "record", > "fields": [ > { "name": "A", "type": "string" } > ] > } > } > } > ] > } > {code} > Data is: > {code} > { > "array": [ > { > "A": "", > "B": "" > } > ] > } > {code} > The following code fails with an exception “Expected: Repeater got String”. > The equivalent java code works fine on the same schema and data. > {code} > auto decoder = avro::resolvingDecoder(writerSchema, > readerSchema, > avro::jsonDecoder(writerSchema)); > strinstream ss = loadData(); > auto_ptr<avro::InputStream> in = avro::istreamInputStream(ss); > decoder->init(*in); > auto record = reader::TestRecord(); > decode(*decoder, record); > {code} > I stepped through the code and what seems to be happening is that the code is > treating “A” and “B” as distinct elements in the array, as if the array had > two elements rather than one. > I'm not sure how to go about fixing this. Any pointers would be appreciated. > (I don't think it's my C++ test code. It works fine if the record above isn't > in an array.) -- This message was sent by Atlassian JIRA (v6.3.4#6332)