You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2014/10/22 22:32:11 UTC
svn commit: r1633713 -
/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
Author: hashutosh
Date: Wed Oct 22 20:32:10 2014
New Revision: 1633713
URL: http://svn.apache.org/r1633713
Log:
HIVE-8558 : CBO: enable n-way joins after CBO join reordering (Harish Butani via Ashutosh Chauhan)
Modified:
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java?rev=1633713&r1=1633712&r2=1633713&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java Wed Oct 22 20:32:10 2014
@@ -8263,7 +8263,8 @@ public class SemanticAnalyzer extends Ba
continue;
}
JoinType prevType = null; // save join type
- for (int j = i - 1; j >= 0; j--) {
+ boolean continueScanning = true;
+ for (int j = i - 1; j >= 0 && continueScanning; j--) {
QBJoinTree node = trees.get(j);
if (node == null) {
continue;
@@ -8279,6 +8280,7 @@ public class SemanticAnalyzer extends Ba
if (!node.getNoOuterJoin() || !target.getNoOuterJoin()) {
if (node.getRightAliases().length + target.getRightAliases().length + 1 > 16) {
LOG.info(ErrorMsg.JOINNODE_OUTERJOIN_MORETHAN_16);
+ continueScanning = !runCBO;
continue;
}
}
@@ -8286,6 +8288,11 @@ public class SemanticAnalyzer extends Ba
trees.set(j, null);
continue; // continue merging with next alias
}
+ /*
+ * for CBO provided orderings, don't attempt to reorder joins.
+ * only convert consecutive joins into n-way joins.
+ */
+ continueScanning = !runCBO;
if (prevType == null) {
prevType = currType;
}
@@ -9937,7 +9944,7 @@ public class SemanticAnalyzer extends Ba
//prunedPartitions = ImmutableMap.copyOf(prunedPartitions);
getMetaData(qb);
- disableJoinMerge = true;
+ disableJoinMerge = false;
sinkOp = genPlan(qb);
LOG.info("CBO Succeeded; optimized logical plan.");
LOG.debug(newAST.dump());