morrySnow opened a new pull request, #26530:
URL: https://github.com/apache/doris/pull/26530
pick from master:
PR: #26326
commit id: 0f24500ff8484bcfd3b9760c0f20bb98a860b859
we use a map to record rewrite cte children result to avoid rewrite twice in
cost based rewritter. However, we record cte outer and inner in one map, and
use null as outer result's key, use cte id as inner result's key. This is
wrong, because every anchor has an outer, and we could only record one outer.
So when we use the cache in cost based rewritter, we get wrong outer plan from
the cache. Then the error will be thrown as below:
```
Caused by: java.lang.IllegalArgumentException: Stats for CTE: CTEId#1 not
found
at
com.google.common.base.Preconditions.checkArgument(Preconditions.java:143)
~[guava-32.1.2-jre.jar:?]
at
org.apache.doris.nereids.stats.StatsCalculator.visitLogicalCTEConsumer(StatsCalculator.java:1049)
~[classes/:?]
at
org.apache.doris.nereids.stats.StatsCalculator.visitLogicalCTEConsumer(StatsCalculator.java:147)
~[classes/:?]
at
org.apache.doris.nereids.trees.plans.logical.LogicalCTEConsumer.accept(LogicalCTEConsumer.java:111)
~[classes/:?]
at
org.apache.doris.nereids.stats.StatsCalculator.estimate(StatsCalculator.java:222)
~[classes/:?]
at
org.apache.doris.nereids.stats.StatsCalculator.estimate(StatsCalculator.java:200)
~[classes/:?]
at
org.apache.doris.nereids.jobs.cascades.DeriveStatsJob.execute(DeriveStatsJob.java:108)
~[classes/:?]
at
org.apache.doris.nereids.jobs.scheduler.SimpleJobScheduler.executeJobPool(SimpleJobScheduler.java:39)
~[classes/:?]
at
org.apache.doris.nereids.jobs.executor.Optimizer.execute(Optimizer.java:51)
~[classes/:?]
at
org.apache.doris.nereids.jobs.rewrite.CostBasedRewriteJob.getCost(CostBasedRewriteJob.java:98)
~[classes/:?]
at
org.apache.doris.nereids.jobs.rewrite.CostBasedRewriteJob.execute(CostBasedRewriteJob.java:64)
~[classes/:?]
at
org.apache.doris.nereids.jobs.executor.AbstractBatchJobExecutor.execute(AbstractBatchJobExecutor.java:119)
~[classes/:?]
at
org.apache.doris.nereids.rules.rewrite.RewriteCteChildren.visit(RewriteCteChildren.java:72)
~[classes/:?]
at
org.apache.doris.nereids.rules.rewrite.RewriteCteChildren.visit(RewriteCteChildren.java:56)
~[classes/:?]
at
org.apache.doris.nereids.trees.plans.visitor.PlanVisitor.visitLogicalSink(PlanVisitor.java:118)
~[classes/:?]
at
org.apache.doris.nereids.trees.plans.visitor.SinkVisitor.visitLogicalResultSink(SinkVisitor.java:72)
~[classes/:?]
at
org.apache.doris.nereids.trees.plans.logical.LogicalResultSink.accept(LogicalResultSink.java:58)
~[classes/:?]
at
org.apache.doris.nereids.rules.rewrite.RewriteCteChildren.visitLogicalCTEAnchor(RewriteCteChildren.java:86)
~[classes/:?]
at
org.apache.doris.nereids.rules.rewrite.RewriteCteChildren.visitLogicalCTEAnchor(RewriteCteChildren.java:56)
~[classes/:?]
at
org.apache.doris.nereids.trees.plans.logical.LogicalCTEAnchor.accept(LogicalCTEAnchor.java:60)
~[classes/:?]
at
org.apache.doris.nereids.rules.rewrite.RewriteCteChildren.visitLogicalCTEAnchor(RewriteCteChildren.java:86)
~[classes/:?]
at
org.apache.doris.nereids.rules.rewrite.RewriteCteChildren.visitLogicalCTEAnchor(RewriteCteChildren.java:56)
~[classes/:?]
at
org.apache.doris.nereids.trees.plans.logical.LogicalCTEAnchor.accept(LogicalCTEAnchor.java:60)
~[classes/:?]
at
org.apache.doris.nereids.rules.rewrite.RewriteCteChildren.rewriteRoot(RewriteCteChildren.java:67)
~[classes/:?]
at
org.apache.doris.nereids.jobs.rewrite.CustomRewriteJob.execute(CustomRewriteJob.java:58)
~[classes/:?]
at
org.apache.doris.nereids.jobs.executor.AbstractBatchJobExecutor.execute(AbstractBatchJobExecutor.java:119)
~[classes/:?]
at
org.apache.doris.nereids.NereidsPlanner.rewrite(NereidsPlanner.java:275)
~[classes/:?]
at org.apache.doris.nereids.NereidsPlanner.plan(NereidsPlanner.java:218)
~[classes/:?]
at org.apache.doris.nereids.NereidsPlanner.plan(NereidsPlanner.java:118)
~[classes/:?]
at
org.apache.doris.nereids.trees.plans.commands.ExplainCommand.run(ExplainCommand.java:81)
~[classes/:?]
at
org.apache.doris.qe.StmtExecutor.executeByNereids(StmtExecutor.java:550)
~[classes/:?]
```
## Proposed changes
Issue Number: close #xxx
<!--Describe your changes.-->
## Further comments
If this is a relatively large or complex change, kick off the discussion at
[[email protected]](mailto:[email protected]) by explaining why you
chose the solution you did and what alternatives you considered, etc...
--
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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]