diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/mv/MaterializedViewUtils.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/mv/MaterializedViewUtils.java index f094898c37..04e27d0e83 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/mv/MaterializedViewUtils.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/mv/MaterializedViewUtils.java @@ -374,11 +374,11 @@ public class MaterializedViewUtils { } else if ((joinType.isLeftJoin() || joinType.isLefSemiJoin() || joinType.isLeftAntiJoin()) && useLeft) { - return visit(join.left(), context); + return join.left().accept(this, context); } else if ((joinType.isRightJoin() || joinType.isRightAntiJoin() || joinType.isRightSemiJoin()) && !useLeft) { - return visit(join.right(), context); + return join.right().accept(this, context); } context.addFailReason(String.format("partition column is in un supported join null generate side, " + "current join type is %s", joinType)); diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/exploration/mv/MaterializedViewUtilsTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/exploration/mv/MaterializedViewUtilsTest.java index 2c8b1e1466..f7ea121ec6 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/exploration/mv/MaterializedViewUtilsTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/exploration/mv/MaterializedViewUtilsTest.java @@ -421,6 +421,26 @@ public class MaterializedViewUtilsTest extends TestWithFeService { }); } + // if select * used in partition table side, should get related table + @Test + public void getRelatedTableInfoLeftJoinSelectStarTest() { + PlanChecker.from(connectContext) + .checkExplain(" select l1.*, O_CUSTKEY \n" + + " from lineitem_list_partition l1\n" + + " left outer join orders_list_partition\n" + + " on l1.l_shipdate = o_orderdate\n", + nereidsPlanner -> { + Plan rewrittenPlan = nereidsPlanner.getRewrittenPlan(); + RelatedTableInfo relatedTableInfo = + MaterializedViewUtils.getRelatedTableInfo("l_orderkey", null, + rewrittenPlan, nereidsPlanner.getCascadesContext()); + checkRelatedTableInfo(relatedTableInfo, + "lineitem_list_partition", + "l_orderkey", + true); + }); + } + @Test public void getRelatedTableInfoSelfJoinTest() { PlanChecker.from(connectContext)