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

Reply via email to