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)