diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/SelectStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/SelectStmt.java index acf57f28b277b2..4df0f82f7d1332 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/SelectStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/SelectStmt.java @@ -595,10 +595,6 @@ public void analyze(Analyzer analyzer) throws UserException { if (needToSql) { sqlString = toSql(); } - if (analyzer.enableStarJoinReorder()) { - LOG.debug("use old reorder logical in select stmt"); - reorderTable(analyzer); - } resolveInlineViewRefs(analyzer); @@ -790,7 +786,7 @@ public void materializeRequiredSlots(Analyzer analyzer) throws AnalysisException } } - protected void reorderTable(Analyzer analyzer) throws AnalysisException { + public void reorderTable(Analyzer analyzer) throws AnalysisException { List> candidates = Lists.newArrayList(); ArrayList originOrderBackUp = Lists.newArrayList(fromClause.getTableRefs()); // New pair of table ref and row count diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java b/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java index b28d08f057c0e8..3891c69cec9fdc 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java +++ b/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java @@ -1116,6 +1116,11 @@ private PlanNode createSelectPlan(SelectStmt selectStmt, Analyzer analyzer, long return createConstantSelectPlan(selectStmt, analyzer); } + if (analyzer.enableStarJoinReorder()) { + LOG.debug("use old reorder logical in select stmt"); + selectStmt.reorderTable(analyzer); + } + // Slot materialization: // We need to mark all slots as materialized that are needed during the execution // of selectStmt, and we need to do that prior to creating plans for the TableRefs diff --git a/fe/fe-core/src/test/java/org/apache/doris/statistics/AnalysisTaskExecutorTest.java b/fe/fe-core/src/test/java/org/apache/doris/statistics/AnalysisTaskExecutorTest.java index 6d7b3b4e4341ae..ba75d26cecff2f 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/statistics/AnalysisTaskExecutorTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/statistics/AnalysisTaskExecutorTest.java @@ -67,23 +67,17 @@ public void testExpiredJobCancellation() throws Exception { .build(); OlapAnalysisTask analysisJob = new OlapAnalysisTask(analysisTaskScheduler, analysisJobInfo); - new Expectations() { - { - analysisTaskScheduler.getPendingTasks(); - result = analysisJob; + new MockUp() { + public synchronized BaseAnalysisTask getPendingTasks() { + return analysisJob; } }; + AnalysisTaskExecutor analysisTaskExecutor = new AnalysisTaskExecutor(analysisTaskScheduler); BlockingQueue b = Deencapsulation.getField(analysisTaskExecutor, "jobQueue"); AnalysisTaskWrapper analysisTaskWrapper = new AnalysisTaskWrapper(analysisTaskExecutor, analysisJob); Deencapsulation.setField(analysisTaskWrapper, "startTime", 5); b.put(analysisTaskWrapper); - new Expectations() { - { - analysisTaskWrapper.cancel(); - times = 1; - } - }; analysisTaskExecutor.start(); BlockingCounter counter = Deencapsulation.getField(analysisTaskExecutor, "blockingCounter"); int sleepTime = 500;