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

Du Liu updated AVRO-3224:
-------------------------
    Description: 
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.

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]

  was:
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.

A working example (using ReflectData.get()):

!ReflectData.get works.png!

 

A not working example (using ReflectData.AllowNull.get()):

!ReflectData.AllowNull.get doesnt work.png!

The class and conversion: 

!class_and_conversion.png!

 

These tests are included in the attached patch file:  [^tests.txt]


> 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
>         Attachments: ReflectData.AllowNull.get doesnt work.png, 
> ReflectData.get works.png, class_and_conversion.png, tests.txt
>
>
> 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.
> 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.3.4#803005)

Reply via email to