morrySnow commented on code in PR #51700:
URL: https://github.com/apache/doris/pull/51700#discussion_r2144164437


##########
fe/fe-core/src/main/java/org/apache/doris/nereids/NereidsPlanner.java:
##########
@@ -427,8 +413,13 @@ protected void rewrite(boolean showPlanProcess) {
             
statementContext.getConnectContext().getExecutor().getSummaryProfile().setNereidsRewriteTime();
         }
         // collect partitions table used, this is for query rewrite by 
materialized view
-        // this is needed before init hook
-        collectTableUsedPartitions(showPlanProcess);
+        // this is needed before init hook, because
+        
MaterializedViewUtils.collectTableUsedPartitions(cascadesContext.getRewritePlan(),
 cascadesContext);

Review Comment:
   why not do it in hook?



##########
fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/mv/StructInfo.java:
##########
@@ -752,10 +752,13 @@ public static Pair<Plan, Boolean> 
addFilterOnTableScan(Plan queryPlan, Map<BaseT
         queryPlanWithUnionFilter = new LogicalPlanDeepCopier().deepCopy(
                 (LogicalPlan) queryPlanWithUnionFilter, new 
DeepCopierContext());
         // rbo rewrite after adding filter on origin plan
-        return 
Pair.of(MaterializedViewUtils.rewriteByRules(parentCascadesContext, context -> {
+        Plan filterAddedPlan = 
MaterializedViewUtils.rewriteByRules(parentCascadesContext, context -> {
             Rewriter.getWholeTreeRewriter(context).execute();
             return context.getRewritePlan();
-        }, queryPlanWithUnionFilter, queryPlan), true);
+        }, queryPlanWithUnionFilter, queryPlan);
+        // need to collect table partition again

Review Comment:
   write why need re-collect here in comment



##########
fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/mv/StructInfo.java:
##########
@@ -752,10 +752,13 @@ public static Pair<Plan, Boolean> 
addFilterOnTableScan(Plan queryPlan, Map<BaseT
         queryPlanWithUnionFilter = new LogicalPlanDeepCopier().deepCopy(
                 (LogicalPlan) queryPlanWithUnionFilter, new 
DeepCopierContext());
         // rbo rewrite after adding filter on origin plan
-        return 
Pair.of(MaterializedViewUtils.rewriteByRules(parentCascadesContext, context -> {
+        Plan filterAddedPlan = 
MaterializedViewUtils.rewriteByRules(parentCascadesContext, context -> {
             Rewriter.getWholeTreeRewriter(context).execute();
             return context.getRewritePlan();
-        }, queryPlanWithUnionFilter, queryPlan), true);
+        }, queryPlanWithUnionFilter, queryPlan);
+        // need to collect table partition again
+        MaterializedViewUtils.collectTableUsedPartitions(filterAddedPlan, 
parentCascadesContext);

Review Comment:
   if u need collect partition info multi times, u should sum the time used by 
it in summary profile



##########
fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/mv/StructInfo.java:
##########
@@ -752,10 +752,13 @@ public static Pair<Plan, Boolean> 
addFilterOnTableScan(Plan queryPlan, Map<BaseT
         queryPlanWithUnionFilter = new LogicalPlanDeepCopier().deepCopy(
                 (LogicalPlan) queryPlanWithUnionFilter, new 
DeepCopierContext());
         // rbo rewrite after adding filter on origin plan
-        return 
Pair.of(MaterializedViewUtils.rewriteByRules(parentCascadesContext, context -> {
+        Plan filterAddedPlan = 
MaterializedViewUtils.rewriteByRules(parentCascadesContext, context -> {
             Rewriter.getWholeTreeRewriter(context).execute();
             return context.getRewritePlan();
-        }, queryPlanWithUnionFilter, queryPlan), true);
+        }, queryPlanWithUnionFilter, queryPlan);
+        // need to collect table partition again
+        MaterializedViewUtils.collectTableUsedPartitions(filterAddedPlan, 
parentCascadesContext);

Review Comment:
   only collect for sub plan is enough?



-- 
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