Krzysztof Barczynski created AVRO-4036:
------------------------------------------

             Summary: GenericData.Array.equals() method does not adhere to 
standards
                 Key: AVRO-4036
                 URL: https://issues.apache.org/jira/browse/AVRO-4036
             Project: Apache Avro
          Issue Type: Bug
          Components: java
    Affects Versions: 1.12.0
         Environment: Avro 1.12.0

JDK 21

Maven

 
            Reporter: Krzysztof Barczynski


There is a unit test which shows what's the issue:
 * 
[https://github.com/krisso-rtb/avro-custom-logical-types/blob/avro-1.12.0-test-case-for-weird-equals/custom-logical-types-used/src/test/java/com/rtbhouse/custom/logical/types/SerializeDeserializeTest.java]

Most important part is block of code around line 40.

In version 1.12.0 implementation of *equals()* has been changed to

{code:java}
public boolean equals(final Object o) {
  if (!(o instanceof Collection)) {
    return false;
  }
  return GenericData.get().compare(this, o, this.getSchema()) == 0;
}
{code}

which fails when logical types are used.
More precisely: when record's field is an array of union of "null" and logical 
type.




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

Reply via email to