[ 
https://issues.apache.org/jira/browse/AVRO-3224?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17469222#comment-17469222
 ] 

Oscar Westra van Holthe - Kind commented on AVRO-3224:
------------------------------------------------------

I've reviewed the change, and left a comment. Sorry it took me so long to 
understand the implications of your change.

The short version: it needs some work, but you've already done the most 
difficult part.

> Wrong deserialisation when using ReflectData.AllowNull with custom 
> LogicalType conversions
> ------------------------------------------------------------------------------------------
>
>                 Key: AVRO-3224
>                 URL: https://issues.apache.org/jira/browse/AVRO-3224
>             Project: Apache Avro
>          Issue Type: Bug
>          Components: java
>    Affects Versions: 1.10.2
>            Reporter: Du Liu
>            Priority: Minor
>              Labels: pull-request-available
>         Attachments: ReflectData.AllowNull.get doesnt work.png, 
> ReflectData.get works.png, class_and_conversion.png, tests.txt
>
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> If a class contains both a java.time.LocalDate field and a java.sql.Date 
> field, serialising an instance of the class using ReflectData.*AllowNull* 
> with two conversions that both convert to avro date logical type (e.g. one 
> converts java.time.LocalDate to avro date, the other converts java.sql.Date 
> to avro date) is done correctly, but when deserialising the data back, the 
> LocalDate field of the deserialised instance incorrectly contains a 
> java.sql.Date (or the Date field incorrectly contains a LocalDate depending 
> on which conversions is added last).
> This only happens when using ReflectData.*AllowNull*.get(). ReflectData.get() 
> can correctly deserialised data back. I think this issue affects other types 
> as long as two java types are mapped to the same avro logical type.
> A working example (using ReflectData.get()):
> !ReflectData.get works.png|width=887,height=379!
>  
> A not working example (using ReflectData.AllowNull.get()):
> !ReflectData.AllowNull.get doesnt work.png|width=831,height=469!
> The class and conversion: 
> !class_and_conversion.png|width=798,height=687!
>  
> These tests are included in the attached patch file:  [^tests.txt]



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to