Adriano created HIVE-14704: ------------------------------ Summary: make partition pruning with outer joins possible Key: HIVE-14704 URL: https://issues.apache.org/jira/browse/HIVE-14704 Project: Hive Issue Type: New Feature Components: Query Planning Affects Versions: 1.1.0 Reporter: Adriano
Indeed by SQL semantics, the predicate specified in the ON clause should be applied on the Join. However, the predicate in the WHERE clause is applied after the Join is made. Thus, the condition in the WHERE are not pushed into the Join for outer joins. set hive.mapred.mode=strict; create table table1 (s1 string , s2 string) partitioned by (dt string, time string); alter table table1 add partition (dt='1',time='2'); create table table2 (s1 string , s2 string) partitioned by (dt string, time string); alter table table2 add partition (dt='1',time='2'); right outer join: failed 0: jdbc:hive2://host-10-17-80-30.coe.cloudera> explain select a.* from table1 a right outer join table2 b on (a.s1 = b.s1) where a.dt='1' and a.time='2' and b.dt='1'; Error: Error while compiling statement: FAILED: SemanticException [Error 10041]: No partition predicate found for Alias "TS" Table "table1" (state=42000,code=10041) left outer join: failed 0: jdbc:hive2://host-10-17-80-30.coe.cloudera> explain select a.* from table1 a left outer join table2 b on (a.s1 = b.s1) where a.dt='1' and a.time='2' and b.dt='1'; Error: Error while compiling statement: FAILED: SemanticException [Error 10041]: No partition predicate found for Alias "TS" Table "table2" (state=42000,code=10041) This doesn't happen if the scrict mode is disabled set hive.mapred.mode=nonstrict; or if we move the where clause of the right table to the left join as below: explain select a.* from table1 a left outer join table2 b on (a.s1 = b.s1) and b.dt='1' where a.dt='1' and a.time='2'; or if the where clause of the left table to the right join as below: explain select a.* from table1 a right outer join table2 b on (a.s1 = b.s1) and a.dt='1' and a.time='2' where b.dt='1' -- This message was sent by Atlassian JIRA (v6.3.4#6332)