From 1913e4e78d16030e559cbe3d7a54a891075bb0eb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 19 Nov 2024 20:27:13 +0800 Subject: [PATCH] branch-2.1: [fix](mtmv) Fix partition track column fail when 'select *' used in related partition side #43531 (#43941) Cherry-picked from #43531 Co-authored-by: seawinde --- .../exploration/mv/MaterializedViewUtils.java | 4 ++-- .../mv/MaterializedViewUtilsTest.java | 20 +++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) 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)