[
https://issues.apache.org/jira/browse/HIVE-21494?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
David Ross updated HIVE-21494:
------------------------------
Component/s: CBO
> Wrong CASE branch chosen seemingly dependent on contents of branch
> ------------------------------------------------------------------
>
> Key: HIVE-21494
> URL: https://issues.apache.org/jira/browse/HIVE-21494
> Project: Hive
> Issue Type: Bug
> Components: CBO
> Affects Versions: 3.1.0
> Reporter: David Ross
> Priority: Major
>
> The following query returns {{-100}} which is logically incorrect:
>
> {code:java}
> SELECT
> CASE
> WHEN COALESCE(
> CASE
> WHEN COALESCE( CAST('Infinity' AS DOUBLE), 0 ) = 0
> THEN -1
> ELSE ( 5 / (CAST('Infinity' AS DOUBLE) * SIGN(5)) )
> END, 0 ) = 0
> THEN (
> CAST('Infinity' AS DOUBLE)
> -- -200
> )
> ELSE -100
> END full_query{code}
>
> The expected behavior is for it to return {{Infinity}}, or the contents of
> the {{THEN}} branch.
>
> If the {{THEN}} branch is edited like this, it returns -{{200}} as expected:
>
> {code:java}
> SELECT
> CASE
> WHEN COALESCE(
> CASE
> WHEN COALESCE( CAST('Infinity' AS DOUBLE), 0 ) = 0
> THEN -1
> ELSE ( 5 / (CAST('Infinity' AS DOUBLE) * SIGN(5)) )
> END, 0 ) = 0
> THEN (
> -- CAST('Infinity' AS DOUBLE)
> -200
> )
> ELSE -100
> END full_query{code}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)