Emmanuel Brard created AVRO-3654:
------------------------------------
Summary: BigDecimal not supported in GenericData.getSchemaName()
method
Key: AVRO-3654
URL: https://issues.apache.org/jira/browse/AVRO-3654
Project: Apache Avro
Issue Type: Improvement
Components: java
Affects Versions: 1.11.1
Reporter: Emmanuel Brard
When trying to add a `GenericRecord` in a Java set, the hashcode computation
code is called.
If a Union contains a decimal logical type which is mapped with a `BigDecimal`
in Java, the call to `add` will fail with:
{code}
Caused by: org.apache.avro.AvroRuntimeException: Unknown datum type
java.math.BigDecimal: 4042030.00
at
org.apache.avro.generic.GenericData.getSchemaName(GenericData.java:933)
at
org.apache.avro.generic.GenericData.resolveUnion(GenericData.java:892)
at org.apache.avro.generic.GenericData.hashCode(GenericData.java:1113)
at
org.apache.avro.generic.GenericData.hashCodeAdd(GenericData.java:1127)
at org.apache.avro.generic.GenericData.hashCode(GenericData.java:1103)
at org.apache.avro.generic.GenericData.hashCode(GenericData.java:1113)
at
org.apache.avro.generic.GenericData.hashCodeAdd(GenericData.java:1127)
at org.apache.avro.generic.GenericData.hashCode(GenericData.java:1103)
at
org.apache.avro.generic.GenericData$Record.hashCode(GenericData.java:292)
at java.base/java.util.HashMap.hash(HashMap.java:338)
at java.base/java.util.HashMap.put(HashMap.java:610)
at java.base/java.util.HashSet.add(HashSet.java:221)
{code}
The method `getSchemaName` does not handle the BigDecimal Java type, which is
used by the `DecimalConversion`.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)