This is an automated email from the ASF dual-hosted git repository.
morrysnow pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
from a1db5c6f52 [fix](vec) crash caused by not-implemented function in
ColumnFixedLengthObject (#17215)
add 9db56201a6 [refactor](Nereids) Refactor rewrite framework to speed up
plan (#17126)
No new revisions were added by this update.
Summary of changes:
.../org/apache/doris/nereids/CascadesContext.java | 93 ++++++-
.../org/apache/doris/nereids/NereidsPlanner.java | 21 +-
.../nereids/{jobs/JobType.java => PlanSource.java} | 19 +-
.../doris/nereids/analyzer/NereidsAnalyzer.java | 79 ++++--
.../org/apache/doris/nereids/analyzer/Scope.java | 9 +-
.../java/org/apache/doris/nereids/jobs/Job.java | 42 +--
.../org/apache/doris/nereids/jobs/JobContext.java | 13 +-
.../org/apache/doris/nereids/jobs/JobType.java | 3 +-
.../nereids/jobs/{JobType.java => RewriteJob.java} | 20 +-
.../TopicRewriteJob.java} | 45 ++--
.../AdjustAggregateNullableForEmptySetJob.java | 34 ---
.../doris/nereids/jobs/batch/AnalyzeRulesJob.java | 82 ------
...ConvertApplyToJoinJob.java => ApplyToJoin.java} | 27 +-
.../doris/nereids/jobs/batch/BatchRewriteJob.java | 116 ++++++++
.../doris/nereids/jobs/batch/BatchRulesJob.java | 109 --------
...ubqueryRulesJob.java => CascadesOptimizer.java} | 24 +-
.../doris/nereids/jobs/batch/CheckAnalysisJob.java | 35 ---
....java => CorrelateApplyToUnCorrelateApply.java} | 41 +--
...ob.java => EliminateUselessPlanUnderApply.java} | 25 +-
.../jobs/batch/NereidsRewriteJobExecutor.java | 150 -----------
.../doris/nereids/jobs/batch/NereidsRewriter.java | 214 +++++++++++++++
.../doris/nereids/jobs/batch/OptimizeRulesJob.java | 34 ---
.../nereids/jobs/rewrite/CustomRewriteJob.java | 78 ++++++
.../jobs/rewrite/PlanTreeRewriteBottomUpJob.java | 128 +++++++++
.../nereids/jobs/rewrite/PlanTreeRewriteJob.java | 117 ++++++++
.../jobs/rewrite/PlanTreeRewriteTopDownJob.java | 66 +++++
.../nereids/jobs/rewrite/RewriteJobContext.java | 65 +++++
.../jobs/rewrite/RootPlanTreeRewriteJob.java | 171 ++++++++++++
.../nereids/jobs/rewrite/VisitorRewriteJob.java | 69 -----
.../doris/nereids/jobs/scheduler/JobScheduler.java | 8 +-
.../{JobScheduler.java => ScheduleContext.java} | 13 +-
.../nereids/jobs/scheduler/SimpleJobScheduler.java | 11 +-
.../java/org/apache/doris/nereids/memo/Group.java | 13 +-
.../java/org/apache/doris/nereids/memo/Memo.java | 4 +-
.../doris/nereids/pattern/MatchingContext.java | 4 +
.../pattern/{Patterns.java => MemoPatterns.java} | 25 +-
.../org/apache/doris/nereids/pattern/Pattern.java | 39 ++-
.../org/apache/doris/nereids/pattern/Patterns.java | 298 ---------------------
.../pattern/{Patterns.java => PlanPatterns.java} | 81 ++----
.../ProxyPattern.java} | 34 +--
.../generator/LogicalBinaryPatternGenerator.java | 10 +-
.../generator/LogicalLeafPatternGenerator.java | 4 +-
.../generator/LogicalUnaryPatternGenerator.java | 10 +-
.../generator/PatternDescribableProcessor.java | 36 ++-
.../pattern/generator/PatternGenerator.java | 49 ++--
.../generator/PatternGeneratorAnalyzer.java | 10 +-
.../generator/PhysicalBinaryPatternGenerator.java | 10 +-
.../generator/PhysicalLeafPatternGenerator.java | 4 +-
.../generator/PhysicalUnaryPatternGenerator.java | 10 +-
.../doris/nereids/processor/post/Validator.java | 6 +-
.../doris/nereids/rules/AppliedAwareRule.java | 111 ++++++++
...liminateLimitUnderApply.java => ProxyRule.java} | 38 +--
.../java/org/apache/doris/nereids/rules/Rule.java | 5 +
.../apache/doris/nereids/rules/RuleFactory.java | 4 +-
.../org/apache/doris/nereids/rules/RuleType.java | 17 +-
.../rules/analysis/AnalysisRuleFactory.java | 3 +-
.../rules/analysis/AvgDistinctToSumDivCount.java | 3 +-
.../nereids/rules/analysis/BindExpression.java | 138 ++++++----
.../doris/nereids/rules/analysis/BindRelation.java | 54 ++--
.../doris/nereids/rules/analysis/CheckPolicy.java | 18 +-
.../doris/nereids/rules/analysis/RegisterCTE.java | 10 +-
.../analysis/ReplaceExpressionByChildOutput.java | 8 +-
.../ResolveOrdinalInOrderByAndGroupBy.java | 15 +-
.../doris/nereids/rules/analysis/SlotBinder.java | 11 +-
.../nereids/rules/analysis/SubExprAnalyzer.java | 15 +-
.../{AnalyzeSubquery.java => SubqueryToApply.java} | 29 +-
.../nereids/rules/analysis/UserAuthentication.java | 4 +-
.../rules/exploration/ExplorationRuleFactory.java | 3 +-
.../rewrite/ExpressionNormalization.java | 11 +-
.../expression/rewrite/ExpressionRewrite.java | 82 ++++--
.../rewrite/ExpressionRewriteContext.java | 5 +-
.../expression/rewrite/ExpressionRuleExecutor.java | 24 +-
.../expression/rewrite/rules/FoldConstantRule.java | 7 -
.../rules/implementation/AggregateStrategies.java | 30 ++-
.../implementation/ImplementationRuleFactory.java | 3 +-
.../mv/SelectMaterializedIndexWithAggregate.java | 13 +-
.../SelectMaterializedIndexWithoutAggregate.java | 31 ++-
...leFactory.java => BatchRewriteRuleFactory.java} | 24 +-
.../nereids/rules/rewrite/RewriteRuleFactory.java | 3 +-
.../CheckAndStandardizeWindowFunctionAndFrame.java | 4 +-
.../rules/rewrite/logical/EliminateAggregate.java | 4 +-
.../rewrite/logical/EliminateGroupByConstant.java | 9 +-
.../rewrite/logical/EliminateLimitUnderApply.java | 2 +-
.../rules/rewrite/logical/EliminateNotNull.java | 8 +-
.../rules/rewrite/logical/EliminateOuterJoin.java | 4 +-
.../rewrite/logical/EliminateSortUnderApply.java | 6 +-
.../logical/EliminateUnnecessaryProject.java | 123 +++++----
.../logical/ExtractFilterFromCrossJoin.java | 4 +-
...xtractSingleTableExpressionFromDisjunction.java | 1 -
.../rewrite/logical/FindHashConditionForJoin.java | 4 +
.../logical/HideOneRowRelationUnderUnion.java | 4 +-
.../rules/rewrite/logical/InferFilterNotNull.java | 7 +-
.../rules/rewrite/logical/InferJoinNotNull.java | 15 +-
.../rules/rewrite/logical/InferPredicates.java | 8 +-
.../rules/rewrite/logical/MergeFilters.java | 4 -
.../rules/rewrite/logical/MergeGenerates.java | 4 +-
.../rules/rewrite/logical/MergeProjects.java | 4 +-
.../rules/rewrite/logical/MergeSetOperations.java | 65 +++--
.../rewrite/logical/PruneAggChildColumns.java | 4 +-
.../rewrite/logical/PruneFilterChildColumns.java | 5 +-
.../rewrite/logical/PruneJoinChildrenColumns.java | 5 +-
.../rewrite/logical/PruneSortChildColumns.java | 5 +-
...orrelatedFilterUnderApplyAggregateProject.java} | 18 +-
...erProject.java => PullUpProjectUnderApply.java} | 16 +-
.../rewrite/logical/PushFilterInsideJoin.java | 9 +-
.../logical/PushdownFilterThroughAggregation.java | 3 +-
.../rewrite/logical/PushdownFilterThroughJoin.java | 10 +-
.../logical/PushdownFilterThroughProject.java | 53 +++-
.../logical/PushdownFilterThroughRepeat.java | 3 +-
.../logical/PushdownProjectThroughLimit.java | 10 +-
.../nereids/rules/rewrite/logical/ReorderJoin.java | 13 +-
....java => UnCorrelatedApplyAggregateFilter.java} | 12 +-
...derFilter.java => UnCorrelatedApplyFilter.java} | 9 +-
...ct.java => UnCorrelatedApplyProjectFilter.java} | 11 +-
.../org/apache/doris/nereids/trees/TreeNode.java | 17 ++
.../doris/nereids/trees/expressions/Exists.java | 8 +-
.../nereids/trees/expressions/Expression.java | 10 +-
.../nereids/trees/expressions/InSubquery.java | 8 +-
.../doris/nereids/trees/expressions/IsNull.java | 2 +-
.../nereids/trees/expressions/SlotReference.java | 3 +-
.../nereids/trees/expressions/SubqueryExpr.java | 40 +--
.../doris/nereids/trees/plans/AbstractPlan.java | 27 +-
.../apache/doris/nereids/trees/plans/FakePlan.java | 13 +
.../org/apache/doris/nereids/trees/plans/Plan.java | 16 ++
.../apache/doris/nereids/trees/plans/PlanType.java | 6 +-
.../nereids/trees/plans/commands/Command.java | 49 ++--
.../trees/plans/commands/CreatePolicyCommand.java | 4 +-
.../trees/plans/commands/ExplainCommand.java | 4 +-
.../trees/plans/logical/AbstractLogicalPlan.java | 11 +-
.../trees/plans/logical/LogicalAggregate.java | 2 +-
.../nereids/trees/plans/logical/LogicalLeaf.java | 2 +-
.../trees/plans/logical/LogicalOlapScan.java | 3 +
.../trees/plans/logical/LogicalProject.java | 4 +-
.../nereids/trees/plans/logical/LogicalRepeat.java | 3 +-
.../trees/plans/logical/LogicalSetOperation.java | 16 +-
.../plans/logical/OutputSavePoint.java} | 19 +-
.../trees/plans/visitor/CustomRewriter.java} | 15 +-
.../apache/doris/nereids/util/ExpressionUtils.java | 14 +-
.../apache/doris/nereids/util/MutableState.java | 92 +++++++
.../java/org/apache/doris/nereids/util/Utils.java | 1 +
.../org/apache/doris/nereids/JoinHintTest.java | 4 +-
.../nereids/datasets/ssb/SSBJoinReorderTest.java | 4 +-
.../org/apache/doris/nereids/memo/MemoTest.java | 4 +-
.../apache/doris/nereids/metrics/EventTest.java | 5 +
.../doris/nereids/parser/ParserTestBase.java | 4 +-
.../pattern/GroupExpressionMatchingTest.java | 2 +-
.../rules/analysis/AnalyzeSubQueryTest.java | 20 +-
.../rules/analysis/AnalyzeWhereSubqueryTest.java | 62 +++--
.../nereids/rules/analysis/BindFunctionTest.java | 4 +-
.../analysis/CheckExpressionLegalityTest.java | 4 +-
.../rules/analysis/FillUpMissingSlotsTest.java | 4 +-
.../rules/analysis/FunctionRegistryTest.java | 4 +-
.../rules/analysis/NormalizeRepeatTest.java | 4 +-
.../nereids/rules/analysis/RegisterCTETest.java | 12 +-
.../ReplaceExpressionByChildOutputTest.java | 4 +-
.../join/InnerJoinLAsscomProjectTest.java | 4 +-
.../exploration/join/InnerJoinLAsscomTest.java | 4 +-
.../join/InnerJoinLeftAssociateTest.java | 4 +-
.../join/InnerJoinRightAssociateTest.java | 4 +-
.../rules/exploration/join/JoinCommuteTest.java | 4 +-
.../rules/exploration/join/JoinExchangeTest.java | 4 +-
.../rules/exploration/join/OuterJoinAssocTest.java | 19 +-
.../join/OuterJoinLAsscomProjectTest.java | 4 +-
.../exploration/join/OuterJoinLAsscomTest.java | 4 +-
.../join/SemiJoinSemiJoinTransposeProjectTest.java | 4 +-
.../rewrite/ExpressionRewriteTestHelper.java | 21 +-
.../rules/expression/rewrite/FoldConstantTest.java | 2 +-
.../expression/rewrite/SimplifyRangeTest.java | 13 +-
.../doris/nereids/rules/mv/SelectMvIndexTest.java | 4 +-
.../nereids/rules/mv/SelectRollupIndexTest.java | 4 +-
.../rewrite/logical/AggregateStrategiesTest.java | 4 +-
.../CheckAndStandardizeWindowFunctionTest.java | 4 +-
.../rules/rewrite/logical/ColumnPruningTest.java | 4 +-
.../logical/EliminateDedupJoinConditionTest.java | 4 +-
.../rewrite/logical/EliminateOuterJoinTest.java | 16 +-
.../logical/EliminateUnnecessaryProjectTest.java | 22 +-
.../ExtractAndNormalizeWindowExpressionTest.java | 4 +-
.../logical/ExtractFilterFromCrossJoinTest.java | 4 +-
...ctSingleTableExpressionFromDisjunctionTest.java | 4 +-
.../rewrite/logical/InferFilterNotNullTest.java | 4 +-
.../rewrite/logical/InferJoinNotNullTest.java | 12 +-
.../rules/rewrite/logical/InferPredicatesTest.java | 4 +-
.../rules/rewrite/logical/LimitPushDownTest.java | 4 +-
.../logical/LogicalWindowToPhysicalWindowTest.java | 4 +-
.../rules/rewrite/logical/MergeProjectsTest.java | 4 +-
.../rewrite/logical/NormalizeAggregateTest.java | 4 +-
.../logical/PhysicalStorageLayerAggregateTest.java | 4 +-
.../rewrite/logical/PushFilterInsideJoinTest.java | 4 +-
.../PushdownExpressionsInHashConditionTest.java | 4 +-
.../PushdownFilterThroughAggregationTest.java | 8 +-
.../logical/PushdownFilterThroughJoinTest.java | 4 +-
.../logical/PushdownProjectThroughLimitTest.java | 4 +-
.../rules/rewrite/logical/ReorderJoinTest.java | 4 +-
.../apache/doris/nereids/sqltest/InferTest.java | 2 +-
.../apache/doris/nereids/sqltest/SqlTestBase.java | 4 +-
.../trees/expressions/SelectExceptTest.java | 4 +-
.../doris/nereids/trees/expressions/ViewTest.java | 4 +-
.../nereids/trees/plans/PlanToStringTest.java | 2 +-
.../apache/doris/nereids/util/MatchingUtils.java | 12 +-
...pported.java => MemoPatternMatchSupported.java} | 4 +-
.../apache/doris/nereids/util/MemoTestUtils.java | 5 +-
.../org/apache/doris/nereids/util/PlanChecker.java | 16 +-
...pported.java => PlanPatternMatchSupported.java} | 5 +-
.../apache/doris/utframe/TestWithFeService.java | 11 +-
.../explain_clickbench_benchmark.groovy | 3 +-
205 files changed, 2714 insertions(+), 1914 deletions(-)
copy fe/fe-core/src/main/java/org/apache/doris/nereids/{jobs/JobType.java =>
PlanSource.java} (71%)
copy fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/{JobType.java =>
RewriteJob.java} (75%)
copy
fe/fe-core/src/main/java/org/apache/doris/nereids/{rules/rewrite/logical/EliminateLimitUnderApply.java
=> jobs/TopicRewriteJob.java} (51%)
delete mode 100644
fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/batch/AdjustAggregateNullableForEmptySetJob.java
delete mode 100644
fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/batch/AnalyzeRulesJob.java
rename
fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/batch/{ConvertApplyToJoinJob.java
=> ApplyToJoin.java} (70%)
create mode 100644
fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/batch/BatchRewriteJob.java
delete mode 100644
fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/batch/BatchRulesJob.java
rename
fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/batch/{AnalyzeSubqueryRulesJob.java
=> CascadesOptimizer.java} (58%)
delete mode 100644
fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/batch/CheckAnalysisJob.java
rename
fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/batch/{AdjustApplyFromCorrelateToUnCorrelateJob.java
=> CorrelateApplyToUnCorrelateApply.java} (54%)
rename
fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/batch/{EliminateSpecificPlanUnderApplyJob.java
=> EliminateUselessPlanUnderApply.java} (72%)
delete mode 100644
fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/batch/NereidsRewriteJobExecutor.java
create mode 100644
fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/batch/NereidsRewriter.java
delete mode 100644
fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/batch/OptimizeRulesJob.java
create mode 100644
fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/rewrite/CustomRewriteJob.java
create mode 100644
fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/rewrite/PlanTreeRewriteBottomUpJob.java
create mode 100644
fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/rewrite/PlanTreeRewriteJob.java
create mode 100644
fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/rewrite/PlanTreeRewriteTopDownJob.java
create mode 100644
fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/rewrite/RewriteJobContext.java
create mode 100644
fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/rewrite/RootPlanTreeRewriteJob.java
delete mode 100644
fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/rewrite/VisitorRewriteJob.java
copy
fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/scheduler/{JobScheduler.java
=> ScheduleContext.java} (73%)
copy fe/fe-core/src/main/java/org/apache/doris/nereids/pattern/{Patterns.java
=> MemoPatterns.java} (92%)
copy fe/fe-core/src/main/java/org/apache/doris/nereids/pattern/{Patterns.java
=> PlanPatterns.java} (79%)
copy
fe/fe-core/src/main/java/org/apache/doris/nereids/{jobs/scheduler/SimpleJobScheduler.java
=> pattern/ProxyPattern.java} (56%)
create mode 100644
fe/fe-core/src/main/java/org/apache/doris/nereids/rules/AppliedAwareRule.java
copy
fe/fe-core/src/main/java/org/apache/doris/nereids/rules/{rewrite/logical/EliminateLimitUnderApply.java
=> ProxyRule.java} (52%)
rename
fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/{AnalyzeSubquery.java
=> SubqueryToApply.java} (88%)
copy
fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/{RewriteRuleFactory.java
=> BatchRewriteRuleFactory.java} (62%)
rename
fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/{ApplyPullFilterOnProjectUnderAgg.java
=> PullUpCorrelatedFilterUnderApplyAggregateProject.java} (82%)
rename
fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/{PushApplyUnderProject.java
=> PullUpProjectUnderApply.java} (82%)
rename
fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/{ApplyPullFilterOnAgg.java
=> UnCorrelatedApplyAggregateFilter.java} (89%)
rename
fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/{PushApplyUnderFilter.java
=> UnCorrelatedApplyFilter.java} (89%)
rename
fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/{EliminateFilterUnderApplyProject.java
=> UnCorrelatedApplyProjectFilter.java} (90%)
copy fe/fe-core/src/main/java/org/apache/doris/nereids/{jobs/JobType.java =>
trees/plans/logical/OutputSavePoint.java} (71%)
copy
fe/fe-core/src/{test/java/org/apache/doris/nereids/util/PatternMatchSupported.java
=> main/java/org/apache/doris/nereids/trees/plans/visitor/CustomRewriter.java}
(71%)
create mode 100644
fe/fe-core/src/main/java/org/apache/doris/nereids/util/MutableState.java
copy
fe/fe-core/src/test/java/org/apache/doris/nereids/util/{PatternMatchSupported.java
=> MemoPatternMatchSupported.java} (87%)
rename
fe/fe-core/src/test/java/org/apache/doris/nereids/util/{PatternMatchSupported.java
=> PlanPatternMatchSupported.java} (87%)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]