[ 
https://issues.apache.org/jira/browse/HIVE-13235?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15230290#comment-15230290
 ] 

Aihua Xu commented on HIVE-13235:
---------------------------------

[~ashutoshc] I haven't had a final solution yet. Seems my solutions would fix 
the issue but also break valid constant propagation. I think it's on the right 
direction: for select operators, an alias and internal name are not enough. We 
should have another columnName if it's mapped to table column (e.g., select 
col1 as alias). The parent ops would only see col1 but child ops would only see 
alias. Right now, we ignore col1 but use alias always.

I'm working on it but seems to need bigger changes. Will create RB when it's 
ready.  

> Insert from select generates incorrect result when 
> hive.optimize.constant.propagation is on
> -------------------------------------------------------------------------------------------
>
>                 Key: HIVE-13235
>                 URL: https://issues.apache.org/jira/browse/HIVE-13235
>             Project: Hive
>          Issue Type: Bug
>          Components: Query Planning
>    Affects Versions: 2.0.0
>            Reporter: Aihua Xu
>            Assignee: Aihua Xu
>         Attachments: HIVE-13235.1.patch, HIVE-13235.2.patch, 
> HIVE-13235.3.patch
>
>
> The following query returns incorrect result when constant optimization is 
> turned on. The subquery happens to have an alias p1 to be the same as the 
> input partition name. Constant optimizer will optimize it incorrectly as the 
> constant.
> When constant optimizer is turned off, we will get the correct result.
> {noformat}
> set hive.cbo.enable=false;
> set hive.optimize.constant.propagation = true;
> create table t1(c1 string, c2 double) partitioned by (p1 string, p2 string);
> create table t2(p1 double, c2 string);
> insert into table t1 partition(p1='40', p2='p2') values('c1', 0.0);
> INSERT OVERWRITE TABLE t2  select if((c2 = 0.0), c2, '0') as p1, 2 as p2 from 
> t1 where c1 = 'c1' and p1 = '40';
> select * from t2;
> 40   2
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to