[ https://issues.apache.org/jira/browse/AVRO-313?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Thiruvalluvan M. G. updated AVRO-313: ------------------------------------- Status: Patch Available (was: Open) > Default values for fields or records and array (or map) don't work with > ResolvingDecoder > ---------------------------------------------------------------------------------------- > > Key: AVRO-313 > URL: https://issues.apache.org/jira/browse/AVRO-313 > Project: Avro > Issue Type: Bug > Components: java > Reporter: Thiruvalluvan M. G. > Assignee: Thiruvalluvan M. G. > Attachments: AVRO-313-test.patch, AVRO-313.patch > > > If the writer's and reader's schema are different and reader's schema defines > a field with a default while the writer's does not have that field, the > ResolovingDecoder returns the default value for the field to the reader. This > is accomplished by replacing the actual InputStream with the one that has the > default value. Remember the actual input stream didn't have a value for the > field. Now the original input stream is restored by an implicit action called > DEFAULT_END_ACTION. If the record is the last in a slice of an array(or a > map), the code used to see (after consuming the record) if there are any more > entries in the array(map). This check should happen on the original input > stream. Since the input stream has not been restored, the check happens on > the default-value input stream causing error. > The following patch solves this by consuming all "trailing" implicit actions > before looking for further entries in the array(map). There was already a > method Parser.processImplicitActions() which consumed _all_ implicit actions. > It turns out one needs to consume only the trailing implicit action. So I > renamed the method to processTrailingImplicitActions and changed the code to > meet the new specification. > I also added a couple of tests that catch the problem. > First apply the patch for the tests, you'd see the problem. Then apply the > fix and see that the problem go away. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.