You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "William McNutt (Jira)" <ji...@apache.org> on 2024/08/22 00:16:00 UTC
[jira] [Created] (AVRO-4039) ClassCastException when deserializing an array of logical types
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)