[ https://issues.apache.org/jira/browse/AVRO-2943?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17698568#comment-17698568 ]
Frank Grimes edited comment on AVRO-2943 at 3/9/23 7:03 PM: ------------------------------------------------------------ I quickly tried this locally and it failed: {code:java} @Test public void testArrayValuesEquals() { Schema arraySchema = new Schema.Parser().parse("\{\"type\": \"array\", \"items\": \"string\"}"); Field myArrayField = new Field("my_array", Schema.createArray(arraySchema), null, null); Schema schema = Schema.createRecord("my_record", "doc", "mytest", false); schema.setFields(Arrays.asList(myArrayField)); GenericRecord r0 = new GenericData.Record(schema); GenericRecord r1 = new GenericData.Record(schema); List<CharSequence> array1 = Arrays.asList("valueOne"); r0.put("my_array", array1); List<CharSequence> array2 = Arrays.asList(new Utf8("valueOne")); r1.put("my_array", array2); assertEquals(r0, r1); assertEquals(r1, r0); } {code} {code:java} Running org.apache.avro.generic.TestGenericDataTests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.254 s <<< FAILURE! - in org.apache.avro.generic.TestGenericDataorg.apache.avro.generic.TestGenericData.testArrayValuesEquals Time elapsed: 0.231 s <<< ERROR!java.lang.ClassCastException: class java.lang.String cannot be cast to class java.util.Collection (java.lang.String and java.util.Collection are in module java.base of loader 'bootstrap') at org.apache.avro.generic.GenericData.compare(GenericData.java:1251) at org.apache.avro.generic.GenericData.compare(GenericData.java:1257) at org.apache.avro.generic.GenericData.compare(GenericData.java:1243) at org.apache.avro.generic.GenericData$Record.equals(GenericData.java:290) {code} Wait... I think I see a problem in my test setup. Will re-confirm! was (Author: frankgrimes97): I quickly tried this locally and it failed: {code:java} @Test public void testArrayValuesEquals() { Schema arraySchema = new Schema.Parser().parse("\{\"type\": \"array\", \"items\": \"string\"}"); Field myArrayField = new Field("my_array", Schema.createArray(arraySchema), null, null); Schema schema = Schema.createRecord("my_record", "doc", "mytest", false); schema.setFields(Arrays.asList(myArrayField)); GenericRecord r0 = new GenericData.Record(schema); GenericRecord r1 = new GenericData.Record(schema); List<CharSequence> array1 = Arrays.asList("valueOne"); r0.put("my_array", array1); List<CharSequence> array2 = Arrays.asList(new Utf8("valueOne")); r1.put("my_array", array2); assertEquals(r0, r1); assertEquals(r1, r0); } {code} {code:java} Running org.apache.avro.generic.TestGenericDataTests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.254 s <<< FAILURE! - in org.apache.avro.generic.TestGenericDataorg.apache.avro.generic.TestGenericData.testArrayValuesEquals Time elapsed: 0.231 s <<< ERROR!java.lang.ClassCastException: class java.lang.String cannot be cast to class java.util.Collection (java.lang.String and java.util.Collection are in module java.base of loader 'bootstrap') at org.apache.avro.generic.GenericData.compare(GenericData.java:1251) at org.apache.avro.generic.GenericData.compare(GenericData.java:1257) at org.apache.avro.generic.GenericData.compare(GenericData.java:1243) at org.apache.avro.generic.GenericData$Record.equals(GenericData.java:290) {code} > 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: 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)