Du Liu created AVRO-3224: ---------------------------- Summary: 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 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! 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] -- This message was sent by Atlassian Jira (v8.3.4#803005)