damccorm opened a new issue, #19966:
URL: https://github.com/apache/beam/issues/19966

   One can create a `SchemaCoder` for arbitrary type `T` with 
`SchemaCoder.of(schema, toRowFunction, fromRowFunction)`. However, in cases 
where `T` lacks proper equality behavior, i.e. POJO, the result coder still 
returns true for `consistentWithEquals` and `structuralValue`s that fail 
equality check.
   
   This test reproduces the issue.
   
   ```
   
   import org.apache.beam.sdk.schemas.Schema;
   import org.apache.beam.sdk.schemas.SchemaCoder;
   import
   org.apache.beam.sdk.values.Row;
   import org.junit.Test;
   import org.junit.runner.RunWith;
   import org.junit.runners.JUnit4;
   
   import
   java.nio.charset.Charset;
   
   import static org.junit.Assert.*;
   
   @RunWith(JUnit4.class)
   public class
   SchemaCoderTest {
   
     public static class Pojo {
       private final byte[] bytes;
       private final
   String id;
   
       public Pojo(byte[] bytes, String id) {
         this.bytes = bytes;
         this.id =
   id;
       }
   
       public byte[] getBytes() {
         return bytes;
       }
   
       public String getId()
   {
         return id;
       }
     }
   
     @Test
     public void testCoder() {
       Schema schema = 
Schema.builder().addByteArrayField("bytes").addStringField("id").build();
   
   
      SchemaCoder<Pojo> coder = SchemaCoder.<Pojo>of(
               schema,
               t -> Row.withSchema(schema).addValues(t.getBytes(),
   t.getId()).build(),
               r -> new Pojo(r.getBytes("bytes"), r.getString("id")));
   
       Pojo
   p1 = new Pojo("hello".getBytes(Charset.forName("UTF-8")), "world");
       Pojo p2 = new Pojo("hello".getBytes(Charset.forName("UTF-8")),
   "world");
   
       assertNotEquals(p1, p2); // EXPECTED, p1.equals(p2) == false
   
       assertFalse(coder.consistentWithEquals());
   // FAIL, returns true
       assertEquals(coder.structuralValue(p1), coder.structuralValue(p2)); // 
FAIL
   
    }
   }
   
   ```
   
   
   Imported from Jira 
[BEAM-8364](https://issues.apache.org/jira/browse/BEAM-8364). Original Jira may 
contain additional context.
   Reported by: sinisa_lyh.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to