You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by gu...@apache.org on 2014/08/16 05:16:13 UTC
svn commit: r1618308 - in /hive/branches/cbo/ql/src:
java/org/apache/hadoop/hive/ql/optimizer/optiq/rules/
java/org/apache/hadoop/hive/ql/parse/ test/queries/clientpositive/
test/results/clientpositive/
Author: gunther
Date: Sat Aug 16 03:16:12 2014
New Revision: 1618308
URL: http://svn.apache.org/r1618308
Log:
HIVE-7750: CBO: PPD should Push Predicates on On clause if possible (Laljo John Pullokkaran via Gunther Hagleitner)
Modified:
hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/rules/HivePushFilterPastJoinRule.java
hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
hive/branches/cbo/ql/src/test/queries/clientpositive/cbo_correctness.q
hive/branches/cbo/ql/src/test/results/clientpositive/cbo_correctness.q.out
Modified: hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/rules/HivePushFilterPastJoinRule.java
URL: http://svn.apache.org/viewvc/hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/rules/HivePushFilterPastJoinRule.java?rev=1618308&r1=1618307&r2=1618308&view=diff
==============================================================================
--- hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/rules/HivePushFilterPastJoinRule.java (original)
+++ hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/rules/HivePushFilterPastJoinRule.java Sat Aug 16 03:16:12 2014
@@ -29,7 +29,7 @@ import com.google.common.collect.Immutab
public abstract class HivePushFilterPastJoinRule extends RelOptRule {
public static final HivePushFilterPastJoinRule FILTER_ON_JOIN = new HivePushFilterPastJoinRule(
- operand(HiveFilterRel.class, operand(HiveJoinRel.class, any())),
+ operand(FilterRelBase.class, operand(HiveJoinRel.class, any())),
"HivePushFilterPastJoinRule:filter", true) {
@Override
public void onMatch(RelOptRuleCall call) {
Modified: hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
URL: http://svn.apache.org/viewvc/hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java?rev=1618308&r1=1618307&r2=1618308&view=diff
==============================================================================
--- hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java (original)
+++ hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java Sat Aug 16 03:16:12 2014
@@ -11893,8 +11893,8 @@ public class SemanticAnalyzer extends Ba
// Partition Pruning; otherwise Expression evaluation may try to execute
// corelated sub query.
basePlan = hepPlan(basePlan, mdProvider,
- HivePushFilterPastJoinRule.FILTER_ON_JOIN,
HivePushFilterPastJoinRule.JOIN,
+ HivePushFilterPastJoinRule.FILTER_ON_JOIN,
new HivePartitionPrunerRule(SemanticAnalyzer.this.conf));
HiveRelFieldTrimmer fieldTrimmer = new HiveRelFieldTrimmer(null);
Modified: hive/branches/cbo/ql/src/test/queries/clientpositive/cbo_correctness.q
URL: http://svn.apache.org/viewvc/hive/branches/cbo/ql/src/test/queries/clientpositive/cbo_correctness.q?rev=1618308&r1=1618307&r2=1618308&view=diff
==============================================================================
--- hive/branches/cbo/ql/src/test/queries/clientpositive/cbo_correctness.q (original)
+++ hive/branches/cbo/ql/src/test/queries/clientpositive/cbo_correctness.q Sat Aug 16 03:16:12 2014
@@ -205,9 +205,9 @@ with q1 as ( select c_int from q2 where
q2 as ( select c_int,c_boolean from v1 where value = '1')
select sum(c_int) from (select c_int from q1) a;
---with q1 as ( select t1.c_int c_int from q2 join t1 where q2.c_int = t1.c_int),
---q2 as ( select c_int,c_boolean from v1 where value = '1')
---select count(*) from q1 join q2 join v4 on q1.c_int = q2.c_int and v4.c_int = q2.c_int;
+with q1 as ( select t1.c_int c_int from q2 join t1 where q2.c_int = t1.c_int),
+q2 as ( select c_int,c_boolean from v1 where value = '1')
+select count(*) from q1 join q2 join v4 on q1.c_int = q2.c_int and v4.c_int = q2.c_int;
drop view v1;
Modified: hive/branches/cbo/ql/src/test/results/clientpositive/cbo_correctness.q.out
URL: http://svn.apache.org/viewvc/hive/branches/cbo/ql/src/test/results/clientpositive/cbo_correctness.q.out?rev=1618308&r1=1618307&r2=1618308&view=diff
==============================================================================
--- hive/branches/cbo/ql/src/test/results/clientpositive/cbo_correctness.q.out (original)
+++ hive/branches/cbo/ql/src/test/results/clientpositive/cbo_correctness.q.out Sat Aug 16 03:16:12 2014
@@ -15963,21 +15963,30 @@ POSTHOOK: Input: default@t1@dt=2014
POSTHOOK: Input: default@v1
#### A masked pattern was here ####
2
-PREHOOK: query: --with q1 as ( select t1.c_int c_int from q2 join t1 where q2.c_int = t1.c_int),
---q2 as ( select c_int,c_boolean from v1 where value = '1')
---select count(*) from q1 join q2 join v4 on q1.c_int = q2.c_int and v4.c_int = q2.c_int;
-
-
-drop view v1
+PREHOOK: query: with q1 as ( select t1.c_int c_int from q2 join t1 where q2.c_int = t1.c_int),
+q2 as ( select c_int,c_boolean from v1 where value = '1')
+select count(*) from q1 join q2 join v4 on q1.c_int = q2.c_int and v4.c_int = q2.c_int
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t1
+PREHOOK: Input: default@t1@dt=2014
+PREHOOK: Input: default@v1
+PREHOOK: Input: default@v4
+#### A masked pattern was here ####
+POSTHOOK: query: with q1 as ( select t1.c_int c_int from q2 join t1 where q2.c_int = t1.c_int),
+q2 as ( select c_int,c_boolean from v1 where value = '1')
+select count(*) from q1 join q2 join v4 on q1.c_int = q2.c_int and v4.c_int = q2.c_int
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@t1
+POSTHOOK: Input: default@t1@dt=2014
+POSTHOOK: Input: default@v1
+POSTHOOK: Input: default@v4
+#### A masked pattern was here ####
+31104
+PREHOOK: query: drop view v1
PREHOOK: type: DROPVIEW
PREHOOK: Input: default@v1
PREHOOK: Output: default@v1
-POSTHOOK: query: --with q1 as ( select t1.c_int c_int from q2 join t1 where q2.c_int = t1.c_int),
---q2 as ( select c_int,c_boolean from v1 where value = '1')
---select count(*) from q1 join q2 join v4 on q1.c_int = q2.c_int and v4.c_int = q2.c_int;
-
-
-drop view v1
+POSTHOOK: query: drop view v1
POSTHOOK: type: DROPVIEW
POSTHOOK: Input: default@v1
POSTHOOK: Output: default@v1