This is an automated email from the ASF dual-hosted git repository. opwvhk pushed a commit to branch branch-1.12 in repository https://gitbox.apache.org/repos/asf/avro.git
commit a806a236c7224f755291413ed25f6b9bb92ddd71 Author: Steven Aerts <[email protected]> AuthorDate: Thu May 29 15:09:41 2025 +0200 AVRO-4139 [java] equality check for maps in arrays (#3378) With the introduction of the `AbstractArray` in avro 1.12, it was not possible anymore to compare arrays which contained objects which contained a Map, as the fact that we compared for equality was not propagated anymore. This commit re-introduces this propagation. (cherry picked from commit a651bb2f5d8ad87e17fc66344a617d822b3611f3) --- .../src/main/java/org/apache/avro/generic/GenericData.java | 2 +- .../test/java/org/apache/avro/generic/TestGenericData.java | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java b/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java index 0a37811315..30cd133586 100644 --- a/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java +++ b/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java @@ -355,7 +355,7 @@ public class GenericData { if (!(o instanceof Collection)) { return false; } - return GenericData.get().compare(this, o, this.getSchema()) == 0; + return GenericData.get().compare(this, o, this.getSchema(), true) == 0; } @Override diff --git a/lang/java/avro/src/test/java/org/apache/avro/generic/TestGenericData.java b/lang/java/avro/src/test/java/org/apache/avro/generic/TestGenericData.java index 20c8217956..b00668e832 100644 --- a/lang/java/avro/src/test/java/org/apache/avro/generic/TestGenericData.java +++ b/lang/java/avro/src/test/java/org/apache/avro/generic/TestGenericData.java @@ -307,6 +307,17 @@ public class TestGenericData { assertEquals(r1, r0); } + // AVRO-4139 + @Test + public void testEqualsMapInArray() { + 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); + } + private Schema recordSchema() { List<Field> fields = new ArrayList<>(); fields.add(new Field("anArray", Schema.createArray(Schema.create(Type.STRING)), null, null));
