[ 
https://issues.apache.org/jira/browse/AVRO-1046?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gabriel Reid updated AVRO-1046:
-------------------------------

    Description: 
When a ReflectDatumReader is used to read implementations of SpecificRecord, it 
fails if the SpecificRecord includes an (avro) array. This appears to be due to 
the fact that the newArray method in ReflectDatumReader works differently 
(based on a reflection-based schema) than the newArray method in 
GenericDatumReader (which is the base class of the DatumReaders).

The included patch simply removes the delegation to SpecificData for the 
creation of a schema in the case of a SpecificRecord. My assumption is that the 
delegation to SpecificData is for performance reasons.

The rationale in removing the delegation to SpecificData is that a) it doesn't 
work completely correctly, as demonstrated, and b) if a user is using 
ReflectDatumReader (instead of SpecificDatumReader) to read SpecificRecords, 
there may be other underlying reasons that reflection is specifically chosen, 
and so this intention should not be undermined by the delegation to 
SpecificData.

  was:
When a ReflectDatumReader is used to read implementations of SpecificRecord, it 
fails if the SpecificRecord includes an (avro) array. This appears to be due to 
the fact that the newArray method in ReflectDatumReader works differently 
(based on a reflection-based schema) than the newArray method in 
GenericDatumReader (which is the base class of the DatumReaders).

I'll include a patch with unit tests that demonstrate the issue, as well as a 
fix for it.

    
> ReflectDatumReader doesn't work with SpecificRecords containing an array of 
> values
> ----------------------------------------------------------------------------------
>
>                 Key: AVRO-1046
>                 URL: https://issues.apache.org/jira/browse/AVRO-1046
>             Project: Avro
>          Issue Type: Bug
>          Components: java
>    Affects Versions: 1.6.2, 1.7.0
>            Reporter: Gabriel Reid
>            Priority: Minor
>         Attachments: AVRO-1046.patch
>
>
> When a ReflectDatumReader is used to read implementations of SpecificRecord, 
> it fails if the SpecificRecord includes an (avro) array. This appears to be 
> due to the fact that the newArray method in ReflectDatumReader works 
> differently (based on a reflection-based schema) than the newArray method in 
> GenericDatumReader (which is the base class of the DatumReaders).
> The included patch simply removes the delegation to SpecificData for the 
> creation of a schema in the case of a SpecificRecord. My assumption is that 
> the delegation to SpecificData is for performance reasons.
> The rationale in removing the delegation to SpecificData is that a) it 
> doesn't work completely correctly, as demonstrated, and b) if a user is using 
> ReflectDatumReader (instead of SpecificDatumReader) to read SpecificRecords, 
> there may be other underlying reasons that reflection is specifically chosen, 
> and so this intention should not be undermined by the delegation to 
> SpecificData.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to