Steven Aerts created AVRO-4139:
----------------------------------
Summary: [Java] Arrays containing maps cannot be checked for
equals anymore
Key: AVRO-4139
URL: https://issues.apache.org/jira/browse/AVRO-4139
Project: Apache Avro
Issue Type: Bug
Components: java
Affects Versions: 1.12.0
Environment: Reproduction scenario:
{code:java}
Schema schema =
Schema.createArray(Schema.createMap(Schema.create(Schema.Type.STRING)));
GenericData.Array<Map<String, String>> a1 = new GenericData.Array<>(10, schema);
GenericData.Array<Map<String, String>> a2 = new GenericData.Array<>(10, schema);
a1.add(Map.of("a", "b"));
a2.add(Map.of("a", "b"));
assertEquals(a1, a2); {code}
Reporter: Steven Aerts
Since the introduction of AbstractArray in avro 1.12, it is not possible
anymore to compare arrays which contain an object which contains a map.
When you do so you get the following exception:
{code:java}
org.apache.avro.AvroRuntimeException: Can't compare maps! at
org.apache.avro.generic.GenericData.compare(GenericData.java:1309)
at org.apache.avro.generic.GenericData.compare(GenericData.java:1301)
at org.apache.avro.generic.GenericData.compare(GenericData.java:1202)
at
org.apache.avro.generic.GenericData$AbstractArray.equals(GenericData.java:358)
at
org.junit.jupiter.api.AssertionUtils.objectsAreEqual(AssertionUtils.java:110)
at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:181)
at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1145)
{code}
We have a PR which fixes this issue.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)