You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by jd...@apache.org on 2017/02/09 22:02:54 UTC
hive git commit: HIVE-15853: Semijoin removed in case of dynamically
partitioned hash join (Deepak Jaiswal, reviewed by Jason Dere)
Repository: hive
Updated Branches:
refs/heads/master 36ff484f7 -> f46b42112
HIVE-15853: Semijoin removed in case of dynamically partitioned hash join (Deepak Jaiswal, reviewed by Jason Dere)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/f46b4211
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/f46b4211
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/f46b4211
Branch: refs/heads/master
Commit: f46b4211242073f793fdf2b82a08e7a6cb2e55d1
Parents: 36ff484
Author: Jason Dere <jd...@hortonworks.com>
Authored: Thu Feb 9 14:02:16 2017 -0800
Committer: Jason Dere <jd...@hortonworks.com>
Committed: Thu Feb 9 14:02:16 2017 -0800
----------------------------------------------------------------------
.../apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/f46b4211/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java
index e3b293a..93e3631 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java
@@ -766,7 +766,11 @@ public class ConvertJoinMapJoin implements NodeProcessor {
}
// Remove semijoin Op if there is any.
- if (context.parseContext.getRsOpToTsOpMap().size() > 0) {
+ // The semijoin branch can potentially create a task level cycle
+ // with the hashjoin except when it is dynamically partitioned hash
+ // join which takes place in a separate task.
+ if (context.parseContext.getRsOpToTsOpMap().size() > 0
+ && removeReduceSink) {
removeCycleCreatingSemiJoinOps(mapJoinOp, parentSelectOpOfBigTableOp,
context.parseContext);
}