mayankkunwar commented on code in PR #5707:
URL: https://github.com/apache/hive/pull/5707#discussion_r2012869560


##########
ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezUtils.java:
##########
@@ -182,6 +187,30 @@ public static ReduceWork createReduceWork(
     return reduceWork;
   }
 
+  private static boolean hasBucketMapJoin(Operator<? extends OperatorDesc> 
operator) {
+    if (operator == null) {
+      return false;
+    }
+
+    // Iterate over child operators
+    for (Operator<? extends OperatorDesc> childOp : 
operator.getChildOperators()) {
+      // Check if this is a MapJoinOperator and is a Bucket Map Join
+      if (childOp instanceof MapJoinOperator) {
+        MapJoinOperator mjOp = (MapJoinOperator) childOp;
+        if (mjOp.getConf().isBucketMapJoin()) {
+          return true; // Found BMJ, no need to check further
+        }
+      }
+
+      // Recursively check children
+      if (hasBucketMapJoin(childOp)) {
+        return true;
+      }

Review Comment:
   Yes I had to put this recursion, as for the attached QTest, when I called 
the hasBucketMapJoin(reduceSink) method, found out the hierarchy as follows:
   **RS[7] -> GBY[8] -> RS[11] -> MAPJOIN[49]**
   
   And when checking on **MAPJOIN[49]** isBucketMapJoin(), it returned true. So 
without recursion how would we know this?
   
   There could be other tree structure in other query maybe.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: gitbox-unsubscr...@hive.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: gitbox-unsubscr...@hive.apache.org
For additional commands, e-mail: gitbox-h...@hive.apache.org

Reply via email to