You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "Thiruvalluvan M. G. (JIRA)" <ji...@apache.org> on 2018/12/30 04:18:02 UTC
[jira] [Updated] (AVRO-1801) Generated code results in
java.lang.ClassCastException
[ https://issues.apache.org/jira/browse/AVRO-1801?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Thiruvalluvan M. G. updated AVRO-1801:
--------------------------------------
Component/s: java
> Generated code results in java.lang.ClassCastException
> ------------------------------------------------------
>
> Key: AVRO-1801
> URL: https://issues.apache.org/jira/browse/AVRO-1801
> Project: Apache Avro
> Issue Type: Bug
> Components: java
> Affects Versions: 1.8.0
> Reporter: Alex Baumgarten
> Priority: Major
>
> Create and compile avro schema:
> {
> "namespace": "com.abc.def.ghi.schema",
> "type": "record",
> "name": "MyDataRecord",
> "fields": [
> {"name": "Heading", "type": ["null", {"type": "fixed", "name": "short", "size": 2}]}
> ]
> }
> which leads to compiled code:
> public void put(int field$, java.lang.Object value$) {
> switch (field$) {
> case 0: Heading = (com.abc.def.ghi.schema.short$)value$; break;
> default: throw new org.apache.avro.AvroRuntimeException("Bad index");
> }
> }
> When this function is called the type of value is org.apache.avro.generic.GenericData$Fixed and when it tries to cast to the short$ type it throws a java.lang.ClassCastException.
> This occurs when running the following code:
> SpecificDatumReader<MyDataRecord> datumReader = new SpecificDatumReader<>(MyDataRecord.class);
> DataFileReader<MyDataRecord> dataFileReader = new DataFileReader<>(new FsInput(inputAvroPath, configuration), datumReader);
> for (MyDataRecord record : dataFileReader) {
> // Do something with record
> }
> If I manually modify the generated code to extract the bytes from value$ and call the constructor of short$ it works as expected. But this is not what is generated.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)