Alice Fan created IMPALA-9173:
---------------------------------

             Summary: Impala should return compatible type expression when 
ENABLE_EXPR_REWRITES is true
                 Key: IMPALA-9173
                 URL: https://issues.apache.org/jira/browse/IMPALA-9173
             Project: IMPALA
          Issue Type: Bug
          Components: Frontend
    Affects Versions: Impala 3.4.0
            Reporter: Alice Fan


*Reproduce Steps:*
{code:java}
// By default, ENABLE_EXPR_REWRITES query option is set to True.
[localhost:21000] default> set ENABLE_EXPR_REWRITES=true;
[localhost:21000] default> select typeof(case when 1 = 1 then string_col else 
timestamp_col end) from functional.alltypes limit 1;
+----------------------------------------------------------------+
| typeof(case when 1 = 1 then string_col else timestamp_col end) |
+----------------------------------------------------------------+
| STRING                                                         |
+----------------------------------------------------------------+

[localhost:21000] default> set ENABLE_EXPR_REWRITES=false;
[localhost:21000] default> select typeof(case when 1 = 1 then string_col else 
timestamp_col end) from functional.alltypes limit 1;
+----------------------------------------------------------------+
| typeof(case when 1 = 1 then string_col else timestamp_col end) |
+----------------------------------------------------------------+
| TIMESTAMP                                                      |
+----------------------------------------------------------------+
{code}

*What is the issue?*
In the above example, Impala should return string_col and cast it to timestamp 
type. Because timestamp is the most compatible type in the case (according to 
getCompatibleType() in Analyzer). In this example, we get the incorrect result 
when ENABLE_EXPR_REWRITES is set to true, but get correct result when it is set 
to false.

*What I found:*
If we enable expression rewrite, the query will trigger Simplify Conditionals 
expression rewrite rule and I can see that the result expression had 
successfully been casted to timestamp type while the first time do the analyze. 
But somehow, the cast will be dropped when re-analyze is happening.

This is a bug I found when I am working on IMPALA-9023 and I didn't find the 
root cause for this. I would like to share my findings and mark this as a known 
issue here. We could use the jira to track updates. 



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

Reply via email to