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);
       }