You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@beam.apache.org by "ASF GitHub Bot (Jira)" <ji...@apache.org> on 2020/08/22 19:26:00 UTC

[jira] [Work logged] (BEAM-8364) SchemaCoder inconsistent equality behavior for POJO

     [ https://issues.apache.org/jira/browse/BEAM-8364?focusedWorklogId=473582&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-473582 ]

ASF GitHub Bot logged work on BEAM-8364:
----------------------------------------

                Author: ASF GitHub Bot
            Created on: 22/Aug/20 19:25
            Start Date: 22/Aug/20 19:25
    Worklog Time Spent: 10m 
      Work Description: stale[bot] commented on pull request #11981:
URL: https://github.com/apache/beam/pull/11981#issuecomment-678681931


   This pull request has been marked as stale due to 60 days of inactivity. It will be closed in 1 week if no further activity occurs. If you think that’s incorrect or this pull request requires a review, please simply write any comment. If closed, you can revive the PR at any time and @mention a reviewer or discuss it on the dev@beam.apache.org list. Thank you for your contributions.
   


----------------------------------------------------------------
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.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Issue Time Tracking
-------------------

    Worklog Id:     (was: 473582)
    Time Spent: 40m  (was: 0.5h)

> SchemaCoder inconsistent equality behavior for POJO
> ---------------------------------------------------
>
>                 Key: BEAM-8364
>                 URL: https://issues.apache.org/jira/browse/BEAM-8364
>             Project: Beam
>          Issue Type: Bug
>          Components: dsl-sql, sdk-java-core
>    Affects Versions: 2.16.0
>            Reporter: Neville Li
>            Assignee: Brian Hulette
>            Priority: P3
>              Labels: stale-assigned
>          Time Spent: 40m
>  Remaining Estimate: 0h
>
> 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.
> {code:java}
> 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
>   }
> }
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)