William McNutt created AVRO-4039: ------------------------------------ Summary: ClassCastException when deserializing an array of logical types Key: AVRO-4039 URL: https://issues.apache.org/jira/browse/AVRO-4039 Project: Apache Avro Issue Type: Bug Components: java Affects Versions: 1.12.0 Reporter: William McNutt
With a schema {code:java} {"type":"record","name":"Root","fields":[ {"name":"f_date_repeated","type":{"type":"array","items: {"type":int",logicalType:"date"} }}, {"name":"f_time_repeated","type":{"type":"array","items": {"type":long",logicalType:"time-micros"} }}, {"name":"f_datetime_repeated","type":{"type":"array","items": {"type":string",logicalType:"datetime"} }}]}] {code} and converters added: {code:java} static{ GenericData.get().addLogicalTypeConversion(new Conversions.DecimalConversion()); GenericData.get().addLogicalTypeConversion(new TimeConversions.DateConversion()); GenericData.get().addLogicalTypeConversion(new TimeConversions.TimeMillisConversion()); GenericData.get().addLogicalTypeConversion(new TimeConversions.TimeMicrosConversion()); GenericData.get().addLogicalTypeConversion(new TimeConversions.TimestampMillisConversion()); GenericData.get().addLogicalTypeConversion(new TimeConversions.TimestampMicrosConversion()); GenericData.get().addLogicalTypeConversion(new TimeConversions.LocalTimestampMicrosConversion()); GenericData.get().addLogicalTypeConversion(new TimeConversions.LocalTimestampMillisConversion()); } {code} we are get an exception (and similarly Instant cannot be cast to Long) {code:java} ava.lang.ClassCastException: class java.time.LocalDate cannot be cast to class java.lang.Integer (java.time.LocalDate and java.lang.Integer are in module java.base of loader 'bootstrap') at org.apache.avro.generic.PrimitivesArrays$IntArray.add(PrimitivesArrays.java:28) at java.base/java.util.AbstractList.add(Unknown Source) at org.apache.avro.generic.GenericDatumReader.addToArray(GenericDatumReader.java:333) at org.apache.avro.generic.GenericDatumReader.readArray(GenericDatumReader.java:294) at org.apache.avro.generic.GenericDatumReader.readWithoutConversion(GenericDatumReader.java:184) at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:161) at org.apache.avro.generic.GenericDatumReader.readField(GenericDatumReader.java:260) at org.apache.avro.generic.GenericDatumReader.readRecord(GenericDatumReader.java:248) at org.apache.avro.generic.GenericDatumReader.readWithoutConversion(GenericDatumReader.java:180) at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:161) at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:154) {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)