924060929 commented on code in PR #12130:
URL: https://github.com/apache/doris/pull/12130#discussion_r956860383


##########
fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/PhysicalPlanTranslator.java:
##########
@@ -363,32 +367,48 @@ public PlanFragment 
visitPhysicalHashJoin(PhysicalHashJoin<Plan, Plan> hashJoin,
         // NOTICE: We must visit from right to left, to ensure the last 
fragment is root fragment
         PlanFragment rightFragment = hashJoin.child(1).accept(this, context);
         PlanFragment leftFragment = hashJoin.child(0).accept(this, context);
-        PlanNode leftFragmentPlanRoot = leftFragment.getPlanRoot();
-        PlanNode rightFragmentPlanRoot = rightFragment.getPlanRoot();
-        JoinType joinType = hashJoin.getJoinType();
 
         if (JoinUtils.shouldNestedLoopJoin(hashJoin)) {
             throw new RuntimeException("Physical hash join could not execute 
without equal join condition.");
         }
 
-        List<Expr> execEqConjunctList = 
hashJoin.getHashJoinConjuncts().stream()
+        PlanNode leftPlanRoot = leftFragment.getPlanRoot();
+        PlanNode rightPlanRoot = rightFragment.getPlanRoot();
+        JoinType joinType = hashJoin.getJoinType();
+
+        List<Expr> execEqConjuncts = hashJoin.getHashJoinConjuncts().stream()
                 .map(EqualTo.class::cast)
                 .map(e -> swapEqualToForChildrenOrder(e, 
hashJoin.left().getOutput()))
                 .map(e -> ExpressionTranslator.translate(e, context))
                 .collect(Collectors.toList());
+
+        // in Nereids, all node only has one TupleDescriptor, so we can use 
the first one.
+        TupleDescriptor leftTuple = 
context.getTupleDesc(leftPlanRoot.getTupleIds().get(0));
+        TupleDescriptor rightTuple = 
context.getTupleDesc(rightPlanRoot.getTupleIds().get(0));

Review Comment:
   If Nereids only has one TupleDescriptor, we should change the tupleIds to 
tupleId, or else people who add new translate method maybe misuse?
   
   So I suggest
   ```java
   TupleDescriptor leftTuple = context.getTupleDesc(leftPlanRoot.getTupleId());
   TupleDescriptor rightTuple = 
context.getTupleDesc(rightPlanRoot.getTupleId());
   
   ```
   



-- 
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: commits-unsubscr...@doris.apache.org

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


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

Reply via email to