This is an automated email from the ASF dual-hosted git repository. huajianlan pushed a commit to branch branch-2.0 in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.0 by this push: new 17b72a63419 [fix](Nereids) lock table when generate distribute plan (#38950) (#39037) 17b72a63419 is described below commit 17b72a6341965d67f246f58094b4ec9274ff1ed8 Author: 924060929 <924060...@qq.com> AuthorDate: Wed Aug 7 19:00:56 2024 +0800 [fix](Nereids) lock table when generate distribute plan (#38950) (#39037) We should lock table when generate distribute plan, because insert overwrite by async materialized view will drop partitions parallel, and query thread will throw exception: ``` java.lang.RuntimeException: Cannot invoke "org.apache.doris.catalog.Partition.getBaseIndex()" because "partition" is null at org.apache.doris.nereids.util.Utils.execWithUncheckedException(Utils.java:76) ~[doris-fe.jar:1.2-SNAPSHOT] at org.apache.doris.nereids.glue.translator.PhysicalPlanTranslator.translatePlan(PhysicalPlanTranslator.java:278) ~[doris-fe.jar:1.2-SNAPSHOT] at org.apache.doris.nereids.NereidsPlanner.splitFragments(NereidsPlanner.java:341) ~[doris-fe.jar:1.2-SNAPSHOT] at org.apache.doris.nereids.NereidsPlanner.distribute(NereidsPlanner.java:400) ~[doris-fe.jar:1.2-SNAPSHOT] at org.apache.doris.nereids.NereidsPlanner.plan(NereidsPlanner.java:147) ~[doris-fe.jar:1.2-SNAPSHOT] at org.apache.doris.qe.StmtExecutor.executeByNereids(StmtExecutor.java:796) ~[doris-fe.jar:1.2-SNAPSHOT] at org.apache.doris.qe.StmtExecutor.execute(StmtExecutor.java:605) ~[doris-fe.jar:1.2-SNAPSHOT] at org.apache.doris.qe.StmtExecutor.queryRetry(StmtExecutor.java:558) ~[doris-fe.jar:1.2-SNAPSHOT] at org.apache.doris.qe.StmtExecutor.execute(StmtExecutor.java:548) ~[doris-fe.jar:1.2-SNAPSHOT] at org.apache.doris.qe.ConnectProcessor.executeQuery(ConnectProcessor.java:385) ~[doris-fe.jar:1.2-SNAPSHOT] at org.apache.doris.qe.ConnectProcessor.handleQuery(ConnectProcessor.java:237) ~[doris-fe.jar:1.2-SNAPSHOT] at org.apache.doris.qe.MysqlConnectProcessor.handleQuery(MysqlConnectProcessor.java:260) ~[doris-fe.jar:1.2-SNAPSHOT] at org.apache.doris.qe.MysqlConnectProcessor.dispatch(MysqlConnectProcessor.java:288) ~[doris-fe.jar:1.2-SNAPSHOT] at org.apache.doris.qe.MysqlConnectProcessor.processOnce(MysqlConnectProcessor.java:342) ~[doris-fe.jar:1.2-SNAPSHOT] at org.apache.doris.mysql.ReadListener.lambda$handleEvent$0(ReadListener.java:52) ~[doris-fe.jar:1.2-SNAPSHOT] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?] at java.lang.Thread.run(Thread.java:833) ~[?:?] Caused by: java.lang.NullPointerException: Cannot invoke "org.apache.doris.catalog.Partition.getBaseIndex()" because "partition" is null at org.apache.doris.planner.OlapScanNode.mockRowCountInStatistic(OlapScanNode.java:589) ~[doris-fe.jar:1.2-SNAPSHOT] at org.apache.doris.planner.OlapScanNode.finalizeForNereids(OlapScanNode.java:1733) ~[doris-fe.jar:1.2-SNAPSHOT] at org.apache.doris.nereids.util.Utils.execWithUncheckedException(Utils.java:74) ~[doris-fe.jar:1.2-SNAPSHOT] ... 17 more 2024-07-29 00:46:17,608 WARN (mysql-nio-pool-114|201) Analyze failed. stmt[210035, 49d3041004ba4b6a-b07fe4491d03c5de] org.apache.doris.common.NereidsException: errCode = 2, detailMessage = Cannot invoke "org.apache.doris.catalog.Partition.getBaseIndex()" because "partition" is null at org.apache.doris.qe.StmtExecutor.executeByNereids(StmtExecutor.java:803) ~[doris-fe.jar:1.2-SNAPSHOT] at org.apache.doris.qe.StmtExecutor.execute(StmtExecutor.java:605) ~[doris-fe.jar:1.2-SNAPSHOT] at org.apache.doris.qe.StmtExecutor.queryRetry(StmtExecutor.java:558) ~[doris-fe.jar:1.2-SNAPSHOT] at org.apache.doris.qe.StmtExecutor.execute(StmtExecutor.java:548) ~[doris-fe.jar:1.2-SNAPSHOT] at org.apache.doris.qe.ConnectProcessor.executeQuery(ConnectProcessor.java:385) ~[doris-fe.jar:1.2-SNAPSHOT] at org.apache.doris.qe.ConnectProcessor.handleQuery(ConnectProcessor.java:237) ~[doris-fe.jar:1.2-SNAPSHOT] at org.apache.doris.qe.MysqlConnectProcessor.handleQuery(MysqlConnectProcessor.java:260) ~[doris-fe.jar:1.2-SNAPSHOT] at org.apache.doris.qe.MysqlConnectProcessor.dispatch(MysqlConnectProcessor.java:288) ~[doris-fe.jar:1.2-SNAPSHOT] at org.apache.doris.qe.MysqlConnectProcessor.processOnce(MysqlConnectProcessor.java:342) ~[doris-fe.jar:1.2-SNAPSHOT] at org.apache.doris.mysql.ReadListener.lambda$handleEvent$0(ReadListener.java:52) ~[doris-fe.jar:1.2-SNAPSHOT] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?] at java.lang.Thread.run(Thread.java:833) ~[?:?] ``` this exception is too hard to reproduce, so I can not write a test case --- .../org/apache/doris/nereids/NereidsPlanner.java | 225 +++++++++++---------- .../apache/doris/nereids/UnsupportedTypeTest.java | 2 +- .../doris/nereids/preprocess/SelectHintTest.java | 2 +- .../nereids/rules/analysis/AnalyzeCTETest.java | 2 +- .../rules/analysis/AnalyzeSubQueryTest.java | 2 +- .../rules/analysis/AnalyzeWhereSubqueryTest.java | 2 +- .../PushdownExpressionsInHashConditionTest.java | 2 +- .../doris/nereids/trees/expressions/ViewTest.java | 2 +- .../trees/plans/ExplainInsertCommandTest.java | 2 +- .../doris/nereids/trees/plans/OutFileTest.java | 2 +- .../apache/doris/nereids/util/ReadLockTest.java | 10 +- 11 files changed, 132 insertions(+), 121 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/NereidsPlanner.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/NereidsPlanner.java index 2efba2b1ed8..c17d3fa545b 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/NereidsPlanner.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/NereidsPlanner.java @@ -81,6 +81,7 @@ import java.util.Optional; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; +import java.util.function.Consumer; import java.util.stream.Collectors; /** @@ -123,43 +124,43 @@ public class NereidsPlanner extends Planner { setParsedPlan(parsedPlan); PhysicalProperties requireProperties = buildInitRequireProperties(); statementContext.getStopwatch().reset().start(); - Plan resultPlan = null; try { - resultPlan = plan(parsedPlan, requireProperties, explainLevel); + planWithLock(parsedPlan, requireProperties, explainLevel, plan -> { + setOptimizedPlan(plan); + if (explainLevel.isPlanLevel) { + return; + } + physicalPlan = (PhysicalPlan) plan; + PlanTranslatorContext planTranslatorContext = new PlanTranslatorContext(cascadesContext); + PhysicalPlanTranslator physicalPlanTranslator = new PhysicalPlanTranslator(planTranslatorContext, + statementContext.getConnectContext().getStatsErrorEstimator()); + if (statementContext.getConnectContext().getExecutor() != null) { + statementContext.getConnectContext().getExecutor().getSummaryProfile().setNereidsTranslateTime(); + } + if (cascadesContext.getConnectContext().getSessionVariable().isEnableNereidsTrace()) { + CounterEvent.clearCounter(); + } + if (cascadesContext.getConnectContext().getSessionVariable().isPlayNereidsDump()) { + return; + } + PlanFragment root = physicalPlanTranslator.translatePlan(physicalPlan); + + scanNodeList.addAll(planTranslatorContext.getScanNodes()); + descTable = planTranslatorContext.getDescTable(); + fragments = new ArrayList<>(planTranslatorContext.getPlanFragments()); + for (int seq = 0; seq < fragments.size(); seq++) { + fragments.get(seq).setFragmentSequenceNum(seq); + } + // set output exprs + logicalPlanAdapter.setResultExprs(root.getOutputExprs()); + ArrayList<String> columnLabelList = physicalPlan.getOutput().stream().map(NamedExpression::getName) + .collect(Collectors.toCollection(ArrayList::new)); + logicalPlanAdapter.setColLabels(columnLabelList); + logicalPlanAdapter.setViewDdlSqls(statementContext.getViewDdlSqls()); + }); } finally { statementContext.getStopwatch().stop(); } - setOptimizedPlan(resultPlan); - if (explainLevel.isPlanLevel) { - return; - } - physicalPlan = (PhysicalPlan) resultPlan; - PlanTranslatorContext planTranslatorContext = new PlanTranslatorContext(cascadesContext); - PhysicalPlanTranslator physicalPlanTranslator = new PhysicalPlanTranslator(planTranslatorContext, - statementContext.getConnectContext().getStatsErrorEstimator()); - if (statementContext.getConnectContext().getExecutor() != null) { - statementContext.getConnectContext().getExecutor().getSummaryProfile().setNereidsTranslateTime(); - } - if (cascadesContext.getConnectContext().getSessionVariable().isEnableNereidsTrace()) { - CounterEvent.clearCounter(); - } - if (cascadesContext.getConnectContext().getSessionVariable().isPlayNereidsDump()) { - return; - } - PlanFragment root = physicalPlanTranslator.translatePlan(physicalPlan); - - scanNodeList.addAll(planTranslatorContext.getScanNodes()); - descTable = planTranslatorContext.getDescTable(); - fragments = new ArrayList<>(planTranslatorContext.getPlanFragments()); - for (int seq = 0; seq < fragments.size(); seq++) { - fragments.get(seq).setFragmentSequenceNum(seq); - } - // set output exprs - logicalPlanAdapter.setResultExprs(root.getOutputExprs()); - ArrayList<String> columnLabelList = physicalPlan.getOutput().stream().map(NamedExpression::getName) - .collect(Collectors.toCollection(ArrayList::new)); - logicalPlanAdapter.setColLabels(columnLabelList); - logicalPlanAdapter.setViewDdlSqls(statementContext.getViewDdlSqls()); } @VisibleForTesting @@ -171,8 +172,9 @@ public class NereidsPlanner extends Planner { } } - public PhysicalPlan plan(LogicalPlan plan, PhysicalProperties outputProperties) { - return (PhysicalPlan) plan(plan, outputProperties, ExplainLevel.NONE); + public PhysicalPlan planWithLock(LogicalPlan plan, PhysicalProperties outputProperties) { + Consumer<Plan> noCallback = p -> {}; + return (PhysicalPlan) planWithLock(plan, outputProperties, ExplainLevel.NONE, noCallback); } /** @@ -180,10 +182,12 @@ public class NereidsPlanner extends Planner { * * @param plan wait for plan * @param requireProperties request physical properties constraints + * @param lockCallback this callback function will invoke the table lock * @return plan generated by this planner * @throws AnalysisException throw exception if failed in ant stage */ - public Plan plan(LogicalPlan plan, PhysicalProperties requireProperties, ExplainLevel explainLevel) { + public Plan planWithLock(LogicalPlan plan, PhysicalProperties requireProperties, ExplainLevel explainLevel, + Consumer<Plan> lockCallback) { if (explainLevel == ExplainLevel.PARSED_PLAN || explainLevel == ExplainLevel.ALL_PLAN) { parsedPlan = plan; if (explainLevel == ExplainLevel.PARSED_PLAN) { @@ -197,89 +201,96 @@ public class NereidsPlanner extends Planner { initCascadesContext(plan, requireProperties); try (Lock lock = new Lock(plan, cascadesContext)) { - // resolve column, table and function - Span queryAnalysisSpan = - statementContext.getConnectContext().getTracer() - .spanBuilder("query analysis").setParent(Context.current()).startSpan(); - try (Scope scope = queryAnalysisSpan.makeCurrent()) { - // analyze this query - analyze(); - } catch (Exception e) { - queryAnalysisSpan.recordException(e); - throw e; - } finally { - queryAnalysisSpan.end(); - } + Plan resultPlan = planWithoutLock(plan, explainLevel, requireProperties); + lockCallback.accept(resultPlan); + return resultPlan; + } + } - // minidump of input must be serialized first, this process ensure minidump string not null - if (!statementContext.getConnectContext().getSessionVariable().isPlayNereidsDump() - && statementContext.getConnectContext().getSessionVariable().isEnableMinidump()) { - MinidumpUtils.init(); - String queryId = DebugUtil.printId(statementContext.getConnectContext().queryId()); - try { - statementContext.getConnectContext().setMinidump(serializeInputsToDumpFile(plan, queryId)); - } catch (IOException e) { - throw new RuntimeException(e); - } - } + private Plan planWithoutLock( + LogicalPlan plan, ExplainLevel explainLevel, PhysicalProperties requireProperties) { + // resolve column, table and function + Span queryAnalysisSpan = + statementContext.getConnectContext().getTracer() + .spanBuilder("query analysis").setParent(Context.current()).startSpan(); + try (Scope scope = queryAnalysisSpan.makeCurrent()) { + // analyze this query + analyze(); + } catch (Exception e) { + queryAnalysisSpan.recordException(e); + throw e; + } finally { + queryAnalysisSpan.end(); + } - if (statementContext.getConnectContext().getExecutor() != null) { - statementContext.getConnectContext().getExecutor().getSummaryProfile().setNereidsAnalysisTime(); + // minidump of input must be serialized first, this process ensure minidump string not null + if (!statementContext.getConnectContext().getSessionVariable().isPlayNereidsDump() + && statementContext.getConnectContext().getSessionVariable().isEnableMinidump()) { + MinidumpUtils.init(); + String queryId = DebugUtil.printId(statementContext.getConnectContext().queryId()); + try { + statementContext.getConnectContext().setMinidump(serializeInputsToDumpFile(plan, queryId)); + } catch (IOException e) { + throw new RuntimeException(e); } + } - if (explainLevel == ExplainLevel.ANALYZED_PLAN || explainLevel == ExplainLevel.ALL_PLAN) { - analyzedPlan = cascadesContext.getRewritePlan(); - if (explainLevel == ExplainLevel.ANALYZED_PLAN) { - return analyzedPlan; - } - } + if (statementContext.getConnectContext().getExecutor() != null) { + statementContext.getConnectContext().getExecutor().getSummaryProfile().setNereidsAnalysisTime(); + } - // rule-based optimize - rewrite(); - if (statementContext.getConnectContext().getExecutor() != null) { - statementContext.getConnectContext().getExecutor().getSummaryProfile().setNereidsRewriteTime(); - } - if (explainLevel == ExplainLevel.REWRITTEN_PLAN || explainLevel == ExplainLevel.ALL_PLAN) { - rewrittenPlan = cascadesContext.getRewritePlan(); - if (explainLevel == ExplainLevel.REWRITTEN_PLAN) { - return rewrittenPlan; - } + if (explainLevel == ExplainLevel.ANALYZED_PLAN || explainLevel == ExplainLevel.ALL_PLAN) { + analyzedPlan = cascadesContext.getRewritePlan(); + if (explainLevel == ExplainLevel.ANALYZED_PLAN) { + return analyzedPlan; } + } - optimize(); - if (statementContext.getConnectContext().getExecutor() != null) { - statementContext.getConnectContext().getExecutor().getSummaryProfile().setNereidsOptimizeTime(); - } - // print memo before choose plan. - // if chooseNthPlan failed, we could get memo to debug - if (cascadesContext.getConnectContext().getSessionVariable().dumpNereidsMemo) { - String memo = cascadesContext.getMemo().toString(); - LOG.info(ConnectContext.get().getQueryIdentifier() + "\n" + memo); + // rule-based optimize + rewrite(); + if (statementContext.getConnectContext().getExecutor() != null) { + statementContext.getConnectContext().getExecutor().getSummaryProfile().setNereidsRewriteTime(); + } + if (explainLevel == ExplainLevel.REWRITTEN_PLAN || explainLevel == ExplainLevel.ALL_PLAN) { + rewrittenPlan = cascadesContext.getRewritePlan(); + if (explainLevel == ExplainLevel.REWRITTEN_PLAN) { + return rewrittenPlan; } + } - int nth = cascadesContext.getConnectContext().getSessionVariable().getNthOptimizedPlan(); - PhysicalPlan physicalPlan = chooseNthPlan(getRoot(), requireProperties, nth); + optimize(); + if (statementContext.getConnectContext().getExecutor() != null) { + statementContext.getConnectContext().getExecutor().getSummaryProfile().setNereidsOptimizeTime(); + } + // print memo before choose plan. + // if chooseNthPlan failed, we could get memo to debug + if (cascadesContext.getConnectContext().getSessionVariable().dumpNereidsMemo) { + String memo = cascadesContext.getMemo().toString(); + LOG.info(ConnectContext.get().getQueryIdentifier() + "\n" + memo); + } - physicalPlan = postProcess(physicalPlan); - if (cascadesContext.getConnectContext().getSessionVariable().dumpNereidsMemo) { - String tree = physicalPlan.treeString(); - LOG.info(ConnectContext.get().getQueryIdentifier() + "\n" + tree); - } - if (explainLevel == ExplainLevel.OPTIMIZED_PLAN - || explainLevel == ExplainLevel.ALL_PLAN - || explainLevel == ExplainLevel.SHAPE_PLAN) { - optimizedPlan = physicalPlan; - } - // serialize optimized plan to dumpfile, dumpfile do not have this part means optimize failed - serializeOutputToDumpFile(physicalPlan, statementContext.getConnectContext()); - if (statementContext.getConnectContext().getSessionVariable().isEnableMinidump()) { - MinidumpUtils.saveMinidumpString(statementContext.getConnectContext().getMinidump(), - DebugUtil.printId(statementContext.getConnectContext().queryId())); - } - NereidsTracer.output(statementContext.getConnectContext()); + int nth = cascadesContext.getConnectContext().getSessionVariable().getNthOptimizedPlan(); + PhysicalPlan physicalPlan = chooseNthPlan(getRoot(), requireProperties, nth); - return physicalPlan; + physicalPlan = postProcess(physicalPlan); + if (cascadesContext.getConnectContext().getSessionVariable().dumpNereidsMemo) { + String tree = physicalPlan.treeString(); + LOG.info(ConnectContext.get().getQueryIdentifier() + "\n" + tree); + } + if (explainLevel == ExplainLevel.OPTIMIZED_PLAN + || explainLevel == ExplainLevel.ALL_PLAN + || explainLevel == ExplainLevel.SHAPE_PLAN) { + optimizedPlan = physicalPlan; + } + // serialize optimized plan to dumpfile, dumpfile do not have this part means optimize failed + serializeOutputToDumpFile(physicalPlan, statementContext.getConnectContext()); + if (statementContext.getConnectContext().getSessionVariable().isEnableMinidump()) { + MinidumpUtils.saveMinidumpString(statementContext.getConnectContext().getMinidump(), + DebugUtil.printId(statementContext.getConnectContext().queryId())); } + NereidsTracer.output(statementContext.getConnectContext()); + + return physicalPlan; } private LogicalPlan preprocess(LogicalPlan logicalPlan) { diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/UnsupportedTypeTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/UnsupportedTypeTest.java index 0fc632f2267..a78966b4e6b 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/UnsupportedTypeTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/UnsupportedTypeTest.java @@ -106,7 +106,7 @@ public class UnsupportedTypeTest extends TestWithFeService { } private void runPlanner(String sql) { - new NereidsPlanner(MemoTestUtils.createStatementContext(connectContext, sql)).plan( + new NereidsPlanner(MemoTestUtils.createStatementContext(connectContext, sql)).planWithLock( new NereidsParser().parseSingle(sql), PhysicalProperties.ANY ); diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/preprocess/SelectHintTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/preprocess/SelectHintTest.java index 94dab1eef7b..f548a499cad 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/preprocess/SelectHintTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/preprocess/SelectHintTest.java @@ -61,7 +61,7 @@ public class SelectHintTest { sv.setEnableNereidsPlanner(true); sv.enableFallbackToOriginalPlanner = false; Assertions.assertThrows(AnalysisException.class, () -> new NereidsPlanner(statementContext) - .plan(new NereidsParser().parseSingle(sql), PhysicalProperties.ANY)); + .planWithLock(new NereidsParser().parseSingle(sql), PhysicalProperties.ANY)); // manually recover sv sv.setEnableNereidsPlanner(true); diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/analysis/AnalyzeCTETest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/analysis/AnalyzeCTETest.java index 522f198e3ff..abe82c858d4 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/analysis/AnalyzeCTETest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/analysis/AnalyzeCTETest.java @@ -119,7 +119,7 @@ public class AnalyzeCTETest extends TestWithFeService implements MemoPatternMatc for (String sql : testSqls) { StatementScopeIdGenerator.clear(); StatementContext statementContext = MemoTestUtils.createStatementContext(connectContext, sql); - PhysicalPlan plan = new NereidsPlanner(statementContext).plan( + PhysicalPlan plan = new NereidsPlanner(statementContext).planWithLock( parser.parseSingle(sql), PhysicalProperties.ANY ); diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/analysis/AnalyzeSubQueryTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/analysis/AnalyzeSubQueryTest.java index 26496a4dfea..57bc6ef9be2 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/analysis/AnalyzeSubQueryTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/analysis/AnalyzeSubQueryTest.java @@ -91,7 +91,7 @@ public class AnalyzeSubQueryTest extends TestWithFeService implements MemoPatter StatementScopeIdGenerator.clear(); StatementContext statementContext = MemoTestUtils.createStatementContext(connectContext, sql); NereidsPlanner planner = new NereidsPlanner(statementContext); - PhysicalPlan plan = planner.plan( + PhysicalPlan plan = planner.planWithLock( parser.parseSingle(sql), PhysicalProperties.ANY ); diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/analysis/AnalyzeWhereSubqueryTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/analysis/AnalyzeWhereSubqueryTest.java index 73422bee702..753169a4c86 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/analysis/AnalyzeWhereSubqueryTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/analysis/AnalyzeWhereSubqueryTest.java @@ -136,7 +136,7 @@ public class AnalyzeWhereSubqueryTest extends TestWithFeService implements MemoP try { StatementScopeIdGenerator.clear(); StatementContext statementContext = MemoTestUtils.createStatementContext(connectContext, sql); - PhysicalPlan plan = new NereidsPlanner(statementContext).plan( + PhysicalPlan plan = new NereidsPlanner(statementContext).planWithLock( parser.parseSingle(sql), PhysicalProperties.ANY ); diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/PushdownExpressionsInHashConditionTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/PushdownExpressionsInHashConditionTest.java index dfad75d5d80..d56f542a326 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/PushdownExpressionsInHashConditionTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/PushdownExpressionsInHashConditionTest.java @@ -72,7 +72,7 @@ public class PushdownExpressionsInHashConditionTest extends TestWithFeService im "SELECT * FROM T1 JOIN (SELECT ID, SUM(SCORE) SCORE FROM T2 GROUP BY ID) T ON T1.ID + 1 = T.ID AND T.SCORE < 10", "SELECT * FROM T1 JOIN (SELECT ID, SUM(SCORE) SCORE FROM T2 GROUP BY ID ORDER BY ID) T ON T1.ID + 1 = T.ID AND T.SCORE < 10" ); - testSql.forEach(sql -> new NereidsPlanner(createStatementCtx(sql)).plan( + testSql.forEach(sql -> new NereidsPlanner(createStatementCtx(sql)).planWithLock( new NereidsParser().parseSingle(sql), PhysicalProperties.ANY )); diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/expressions/ViewTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/expressions/ViewTest.java index 4fe217b0e6b..de47fdd91d1 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/expressions/ViewTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/expressions/ViewTest.java @@ -100,7 +100,7 @@ public class ViewTest extends TestWithFeService implements MemoPatternMatchSuppo System.out.println("\n\n***** " + sql + " *****\n\n"); StatementContext statementContext = MemoTestUtils.createStatementContext(connectContext, sql); NereidsPlanner planner = new NereidsPlanner(statementContext); - PhysicalPlan plan = planner.plan( + PhysicalPlan plan = planner.planWithLock( new NereidsParser().parseSingle(sql), PhysicalProperties.ANY ); diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/ExplainInsertCommandTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/ExplainInsertCommandTest.java index c36d7642741..880f919a261 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/ExplainInsertCommandTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/ExplainInsertCommandTest.java @@ -127,7 +127,7 @@ public class ExplainInsertCommandTest extends TestWithFeService { StatementScopeIdGenerator.clear(); StatementContext statementContext = MemoTestUtils.createStatementContext(connectContext, sql); NereidsPlanner planner = new NereidsPlanner(statementContext); - PhysicalPlan plan = planner.plan( + PhysicalPlan plan = planner.planWithLock( ((ExplainCommand) parser.parseSingle(sql)).getLogicalPlan(), PhysicalProperties.ANY ); diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/OutFileTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/OutFileTest.java index 426c6414251..f8238078f3c 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/OutFileTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/OutFileTest.java @@ -82,7 +82,7 @@ public class OutFileTest extends TestWithFeService implements PlanPatternMatchSu StatementScopeIdGenerator.clear(); StatementContext statementContext = MemoTestUtils.createStatementContext(connectContext, sql); NereidsPlanner planner = new NereidsPlanner(statementContext); - PhysicalPlan plan = planner.plan( + PhysicalPlan plan = planner.planWithLock( parser.parseSingle(sql), PhysicalProperties.ANY ); diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/util/ReadLockTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/util/ReadLockTest.java index c24a846a1bb..264891804ff 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/util/ReadLockTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/util/ReadLockTest.java @@ -43,7 +43,7 @@ public class ReadLockTest extends SSBTestBase { String sql = "SELECT s_suppkey FROM supplier"; StatementContext statementContext = MemoTestUtils.createStatementContext(connectContext, sql); NereidsPlanner planner = new NereidsPlanner(statementContext); - planner.plan( + planner.planWithLock( parser.parseSingle(sql), PhysicalProperties.ANY ); @@ -65,7 +65,7 @@ public class ReadLockTest extends SSBTestBase { + " FROM cte1 as t1, cte1 as t2"; StatementContext statementContext = MemoTestUtils.createStatementContext(connectContext, sql); NereidsPlanner planner = new NereidsPlanner(statementContext); - planner.plan( + planner.planWithLock( parser.parseSingle(sql), PhysicalProperties.ANY ); @@ -80,7 +80,7 @@ public class ReadLockTest extends SSBTestBase { String sql = "SELECT s_suppkey FROM (SELECT * FROM supplier) t"; StatementContext statementContext = MemoTestUtils.createStatementContext(connectContext, sql); NereidsPlanner planner = new NereidsPlanner(statementContext); - planner.plan( + planner.planWithLock( parser.parseSingle(sql), PhysicalProperties.ANY ); @@ -95,7 +95,7 @@ public class ReadLockTest extends SSBTestBase { String sql = "SELECT s_suppkey FROM supplier WHERE s_suppkey > (SELECT MAX(lo_orderkey) FROM lineorder)"; StatementContext statementContext = MemoTestUtils.createStatementContext(connectContext, sql); NereidsPlanner planner = new NereidsPlanner(statementContext); - planner.plan( + planner.planWithLock( parser.parseSingle(sql), PhysicalProperties.ANY ); @@ -116,7 +116,7 @@ public class ReadLockTest extends SSBTestBase { try { InsertIntoTableCommand insertIntoTableCommand = (InsertIntoTableCommand) parser.parseSingle(sql); NereidsPlanner planner = new NereidsPlanner(statementContext); - planner.plan( + planner.planWithLock( (LogicalPlan) insertIntoTableCommand.getExplainPlan(connectContext), PhysicalProperties.ANY ); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org