[
https://issues.apache.org/jira/browse/PHOENIX-5411?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16891932#comment-16891932
]
Toshihiro Suzuki commented on PHOENIX-5411:
-------------------------------------------
It looks like the cause of the issue is that equals() and hashCode() of
IsNullExpression are not implemented so IsNullExpression#isNegate is not taken
into account. So "col1 is not null then col2 else 0" statement and "col1 is
null then col2 else 0" statement are treated as identical. As a result, the
query returns the same values (2, 2) for both the statements.
In the patch I attached, I added equals() and hashCode() to IsNullExpression.
And then the query returns the correct result.
Could you please review the patch? [~elserj] [[email protected]]
> Incorrect result is returned when using sum function with case when statement
> -----------------------------------------------------------------------------
>
> Key: PHOENIX-5411
> URL: https://issues.apache.org/jira/browse/PHOENIX-5411
> Project: Phoenix
> Issue Type: Bug
> Reporter: Toshihiro Suzuki
> Assignee: Toshihiro Suzuki
> Priority: Major
> Attachments: PHOENIX-5411.master.v1.patch
>
>
> In the following case, incorrect result is returned:
> {code}
> 0: jdbc:phoenix:> create table tbl (id varchar primary key, col1 varchar,
> col2 integer);
> No rows affected (0.86 seconds)
> 0: jdbc:phoenix:> upsert into tbl values('id1', 'aaa', 2);
> 1 row affected (0.078 seconds)
> 0: jdbc:phoenix:> upsert into tbl values('id2', null, 1);
> 1 row affected (0.008 seconds)
> 0: jdbc:phoenix:> select sum(case when col1 is not null then col2 else 0
> end), sum(case when col1 is null then col2 else 0 end) from tbl;
> +-------------------------------------------------------+-------------------------------------------------------+
> | SUM(CASE WHEN COL1 IS NOT NULL THEN COL2 ELSE 0 END) | SUM(CASE WHEN COL1
> IS NOT NULL THEN COL2 ELSE 0 END) |
> +-------------------------------------------------------+-------------------------------------------------------+
> | 2 | 2
> |
> +-------------------------------------------------------+-------------------------------------------------------+
> 1 row selected (0.03 seconds)
> {code}
> The correct result is (2, 1), but (2, 2) is returned.
--
This message was sent by Atlassian JIRA
(v7.6.14#76016)