[ 
https://issues.apache.org/jira/browse/AVRO-2943?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17699654#comment-17699654
 ] 

ASF subversion and git services commented on AVRO-2943:
-------------------------------------------------------

Commit 197a0ecaa00906b3a809c60df300ace796819df3 in avro's branch 
refs/heads/avro-3631/fix-fixed-serialization from frankgrimes97
[ https://gitbox.apache.org/repos/asf?p=avro.git;h=197a0ecaa ]

AVRO-2943 improve GenericRecord MAP type comparison

Make GenericRecord comparison handle String vs Utf8 for MAP type
This mirrors what was already previously done for Schema.type.STRING

Adds the following new unit tests:
  - org.apache.avro.generic.TestGenericData.testMapKeyEquals
  - org.apache.avro.generic.TestGenericData.testMapValuesEquals

N.B.
We should also consider doing the same for Schema.type.ARRAY

https://issues.apache.org/jira/browse/AVRO-2943


> Map comparison between Utf8 and String keys fails
> -------------------------------------------------
>
>                 Key: AVRO-2943
>                 URL: https://issues.apache.org/jira/browse/AVRO-2943
>             Project: Apache Avro
>          Issue Type: Bug
>          Components: java
>    Affects Versions: 1.10.0
>         Environment: Mac OS Catalina 10.15.6
>  
> openjdk version "1.8.0_265"
> OpenJDK Runtime Environment Corretto-8.265.01.1 (build 1.8.0_265-b01)
> OpenJDK 64-Bit Server VM Corretto-8.265.01.1 (build 25.265-b01, mixed mode)
>            Reporter: Frank Grimes
>            Priority: Major
>              Labels: pull-request-available
>         Attachments: AVRO-2943-frankgrimes97.patch
>
>          Time Spent: 1h 10m
>  Remaining Estimate: 0h
>
> The following test I locally added to org.apache.avro.generic.TestGenericData 
> on master demonstrates the problem:
> {code:java}
>   @Test
>   public void testMapKeyEquals() {
>     Schema mapSchema = new Schema.Parser().parse("{\"type\": \"map\", 
> \"values\": \"string\"}");
>     Field myMapField = new Field("my_map", Schema.createMap(mapSchema), null, 
> null);
>     Schema schema = Schema.createRecord("my_record", "doc", "mytest", false);
>     schema.setFields(Arrays.asList(myMapField));
>     GenericRecord r0 = new GenericData.Record(schema);
>     GenericRecord r1 = new GenericData.Record(schema);
>     HashMap<CharSequence, String> pair1 = new HashMap<>();
>     pair1.put("keyOne", "valueOne");
>     r0.put("my_map", pair1);
>     HashMap<CharSequence, String> pair2 = new HashMap<>();
>     pair2.put(new Utf8("keyOne"), "valueOne");
>     r1.put("my_map", pair2);
>     assertEquals(r0, r1);
>     assertEquals(r1, r0);
>   }
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to