diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/PlanNode.java b/fe/fe-core/src/main/java/org/apache/doris/planner/PlanNode.java index 08f59353af..aa57d08bc7 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/planner/PlanNode.java +++ b/fe/fe-core/src/main/java/org/apache/doris/planner/PlanNode.java @@ -965,6 +965,9 @@ public abstract class PlanNode extends TreeNode implements PlanStats { } public SlotRef findSrcSlotRef(SlotRef slotRef) { + if (slotRef.getSrcSlotRef() != null) { + slotRef = slotRef.getSrcSlotRef(); + } if (slotRef.getTable() instanceof OlapTable) { return slotRef; } diff --git a/regression-test/suites/correctness_p0/test_bucket_shuffle_join.groovy b/regression-test/suites/correctness_p0/test_bucket_shuffle_join.groovy index febd57a353..429d4f18ad 100644 --- a/regression-test/suites/correctness_p0/test_bucket_shuffle_join.groovy +++ b/regression-test/suites/correctness_p0/test_bucket_shuffle_join.groovy @@ -78,4 +78,17 @@ suite("test_bucket_shuffle_join") { contains "4:VHASH JOIN\n | join op: INNER JOIN(BUCKET_SHUFFLE)" contains "2:VHASH JOIN\n | join op: INNER JOIN(BUCKET_SHUFFLE)" } + + explain { + sql("""select a.id,a.name,b.id,b.name + from (select * from test_colo1) a + inner join + (select * from test_colo2) b + on a.id = b.id and a.name = b.name and a.name = b.name + inner join + (select * from test_colo3) c + on a.id = c.id and a.name = c.name and a.name = c.name""") + contains "4:VHASH JOIN\n | join op: INNER JOIN(BUCKET_SHUFFLE)" + contains "2:VHASH JOIN\n | join op: INNER JOIN(BUCKET_SHUFFLE)" + } }