This is an automated email from the ASF dual-hosted git repository.

opwvhk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/avro.git


The following commit(s) were added to refs/heads/main by this push:
     new a651bb2f5d AVRO-4139 [java] equality check for maps in arrays (#3378)
a651bb2f5d is described below

commit a651bb2f5d8ad87e17fc66344a617d822b3611f3
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.
---
 .../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 2859a62141..a9189a0bbf 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));

Reply via email to