David Ross created HIVE-21494:
---------------------------------

             Summary: 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
    Affects Versions: 3.1.0
            Reporter: David Ross


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)

Reply via email to