[
https://issues.apache.org/jira/browse/AVRO-2006?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Marian S updated AVRO-2006:
---------------------------
Description:
According to the specification "A union is encoded by first writing a long
value indicating the zero-based position within the union". See:
https://avro.apache.org/docs/1.8.1/spec.html#Unions
However in java implementation index is encoded as an int (which is 32 bits)
see:
https://avro.apache.org/docs/1.8.1/api/java/org/apache/avro/io/Encoder.html#writeIndex(int)
This causes inconsistencies betewwn diffrent languages, because for instance I
can't deserialize avro serialized with Java using Python, because Python
expects long (64 bits) as an index of an union.
was:
According to the specification "A union is encoded by first writing a long
value indicating the zero-based position within the union":
However in java implementation index is encoded as an int (which is 32 bits)
see:
https://avro.apache.org/docs/1.8.1/api/java/org/apache/avro/io/Encoder.html#writeIndex(int)
This causes inconsistencies betewwn diffrent languages, because for instance I
can't deserialize avro serialized with Java using Python, because Python
expects long (64 bits) as an index of an union.
> Java union index serialization/deserialization is incorrect
> -----------------------------------------------------------
>
> Key: AVRO-2006
> URL: https://issues.apache.org/jira/browse/AVRO-2006
> Project: Avro
> Issue Type: Bug
> Components: java
> Affects Versions: 1.8.1
> Reporter: Marian S
>
> According to the specification "A union is encoded by first writing a long
> value indicating the zero-based position within the union". See:
> https://avro.apache.org/docs/1.8.1/spec.html#Unions
> However in java implementation index is encoded as an int (which is 32 bits)
> see:
> https://avro.apache.org/docs/1.8.1/api/java/org/apache/avro/io/Encoder.html#writeIndex(int)
> This causes inconsistencies betewwn diffrent languages, because for instance
> I can't deserialize avro serialized with Java using Python, because Python
> expects long (64 bits) as an index of an union.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)