Ankit Singhal created PHOENIX-5388:
--------------------------------------

             Summary: Incorrect current_date()/now() when query involves 
subquery
                 Key: PHOENIX-5388
                 URL: https://issues.apache.org/jira/browse/PHOENIX-5388
             Project: Phoenix
          Issue Type: Bug
            Reporter: Ankit Singhal
            Assignee: Ankit Singhal


Following query fails in the month of December:-
{code}
select  NOW(),  MONTH(NOW()) m, 
CASE 
 WHEN MONTH(NOW()) = 12 THEN TO_TIME(YEAR(NOW()) || '-12-31 23:59:59.999') 
 ELSE TO_TIME(YEAR(NOW()) || '-' || ( MONTH(NOW()) + 1  ) || '-01 
23:59:59.999') - 1 
END  AS this_month_end
{code}

It is due to an optimization we have during compilation where we evaluate the 
expression if they result in to constant so that we don't need to do it for 
every row. 
Currently parsing stack evaluates every expression if possible without 
considering any condition, resulting in evaluation of all three expression for 
CASE node, MONTH(NOW()) = 12 , TO_TIME(YEAR(NOW()) || '-12-31 23:59:59.999') 
,TO_TIME(YEAR(NOW()) || '-' || ( MONTH(NOW()) + 1  ) || '-01 23:59:59.999') - 
1) but evaluation of 3rd one will fail because of invalid month. 


Workaround: For the particular use-case , Following query though help in 
preventing the expressions of WHEN CASE to be evaluated to a constant at 
compile time. 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to