This is an automated email from the ASF dual-hosted git repository. morrysnow pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push: new b0a13d019f [fix](planner) enable fallback to legacy planner when execute internal query (#18353) b0a13d019f is described below commit b0a13d019fcbc1297be95724476a8b6b27941be2 Author: morrySnow <101034200+morrys...@users.noreply.github.com> AuthorDate: Fri Apr 7 15:15:49 2023 +0800 [fix](planner) enable fallback to legacy planner when execute internal query (#18353) --- .../org/apache/doris/mtmv/MTMVTaskProcessor.java | 1 + .../processor/pre/EliminateLogicalSelectHint.java | 7 ++----- .../java/org/apache/doris/qe/SessionVariable.java | 21 +++++++++++++++++++++ .../org/apache/doris/statistics/HistogramTask.java | 1 + .../apache/doris/statistics/HiveAnalysisTask.java | 2 ++ .../doris/statistics/IcebergAnalysisTask.java | 1 + .../apache/doris/statistics/OlapAnalysisTask.java | 1 + .../doris/statistics/util/StatisticsUtil.java | 1 + 8 files changed, 30 insertions(+), 5 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVTaskProcessor.java b/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVTaskProcessor.java index 0e3020536d..0e12c294e1 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVTaskProcessor.java +++ b/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVTaskProcessor.java @@ -119,6 +119,7 @@ public class MTMVTaskProcessor { ctx.setThreadLocalInfo(); ctx.getState().reset(); try { + ctx.getSessionVariable().disableNereidsPlannerOnce(); StmtExecutor executor = new StmtExecutor(ctx, sql); ctx.setExecutor(executor); executor.execute(); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/pre/EliminateLogicalSelectHint.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/pre/EliminateLogicalSelectHint.java index ae3fb9dcb2..b6b0e146e5 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/pre/EliminateLogicalSelectHint.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/pre/EliminateLogicalSelectHint.java @@ -76,13 +76,10 @@ public class EliminateLogicalSelectHint extends PlanPreprocessor { // enable_fallback_to_original_planner=true and revert it after executing. // throw exception to fall back to original planner if (!sessionVariable.isEnableNereidsPlanner()) { - String key = SessionVariable.ENABLE_FALLBACK_TO_ORIGINAL_PLANNER; - Optional<String> value = Optional.of("true"); try { - VariableMgr.setVar(sessionVariable, new SetVar(key, new StringLiteral(value.get()))); + sessionVariable.enableFallbackToOriginalPlannerOnce(); } catch (Throwable t) { - throw new AnalysisException("Can not set session variable '" - + key + "' = '" + value.get() + "'", t); + throw new AnalysisException("failed to set fallback to original planner to true", t); } throw new AnalysisException("The nereids is disabled in this sql, fallback to original planner"); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java index 0d15d6fb45..a5000fbac9 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java @@ -17,7 +17,10 @@ package org.apache.doris.qe; +import org.apache.doris.analysis.SetVar; +import org.apache.doris.analysis.StringLiteral; import org.apache.doris.common.Config; +import org.apache.doris.common.DdlException; import org.apache.doris.common.io.Text; import org.apache.doris.common.io.Writable; import org.apache.doris.common.util.TimeUtils; @@ -1897,4 +1900,22 @@ public class SessionVariable implements Serializable, Writable { public void setDumpNereidsMemo(boolean dumpNereidsMemo) { this.dumpNereidsMemo = dumpNereidsMemo; } + + public void enableFallbackToOriginalPlannerOnce() throws DdlException { + if (enableFallbackToOriginalPlanner) { + return; + } + setIsSingleSetVar(true); + VariableMgr.setVar(this, + new SetVar(SessionVariable.ENABLE_FALLBACK_TO_ORIGINAL_PLANNER, new StringLiteral("true"))); + } + + public void disableNereidsPlannerOnce() throws DdlException { + if (!enableNereidsPlanner) { + return; + } + setIsSingleSetVar(true); + VariableMgr.setVar(this, + new SetVar(SessionVariable.ENABLE_NEREIDS_PLANNER, new StringLiteral("false"))); + } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/statistics/HistogramTask.java b/fe/fe-core/src/main/java/org/apache/doris/statistics/HistogramTask.java index 32f0f169c9..5097a86767 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/statistics/HistogramTask.java +++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/HistogramTask.java @@ -104,6 +104,7 @@ public class HistogramTask extends BaseAnalysisTask { LOG.info("SQL to collect the histogram:\n {}", histogramSql); try (AutoCloseConnectContext r = StatisticsUtil.buildConnectContext()) { + r.connectContext.getSessionVariable().disableNereidsPlannerOnce(); this.stmtExecutor = new StmtExecutor(r.connectContext, histogramSql); this.stmtExecutor.execute(); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/statistics/HiveAnalysisTask.java b/fe/fe-core/src/main/java/org/apache/doris/statistics/HiveAnalysisTask.java index c0ca6df80c..200cd8559e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/statistics/HiveAnalysisTask.java +++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/HiveAnalysisTask.java @@ -100,6 +100,7 @@ public class HiveAnalysisTask extends HMSAnalysisTask { StringSubstitutor stringSubstitutor = new StringSubstitutor(params); String sql = stringSubstitutor.replace(ANALYZE_TABLE_SQL_TEMPLATE); try (AutoCloseConnectContext r = StatisticsUtil.buildConnectContext()) { + r.connectContext.getSessionVariable().disableNereidsPlannerOnce(); this.stmtExecutor = new StmtExecutor(r.connectContext, sql); this.stmtExecutor.execute(); } @@ -136,6 +137,7 @@ public class HiveAnalysisTask extends HMSAnalysisTask { // Update partition level stats for this column. for (String partitionSql : partitionAnalysisSQLs) { try (AutoCloseConnectContext r = StatisticsUtil.buildConnectContext()) { + r.connectContext.getSessionVariable().disableNereidsPlannerOnce(); this.stmtExecutor = new StmtExecutor(r.connectContext, partitionSql); this.stmtExecutor.execute(); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/statistics/IcebergAnalysisTask.java b/fe/fe-core/src/main/java/org/apache/doris/statistics/IcebergAnalysisTask.java index e9411e04be..8dec02ee32 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/statistics/IcebergAnalysisTask.java +++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/IcebergAnalysisTask.java @@ -114,6 +114,7 @@ public class IcebergAnalysisTask extends HMSAnalysisTask { StringSubstitutor stringSubstitutor = new StringSubstitutor(params); String sql = stringSubstitutor.replace(INSERT_TABLE_SQL_TEMPLATE); try (AutoCloseConnectContext r = StatisticsUtil.buildConnectContext()) { + r.connectContext.getSessionVariable().disableNereidsPlannerOnce(); this.stmtExecutor = new StmtExecutor(r.connectContext, sql); this.stmtExecutor.execute(); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/statistics/OlapAnalysisTask.java b/fe/fe-core/src/main/java/org/apache/doris/statistics/OlapAnalysisTask.java index 927a78c14f..2509143c75 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/statistics/OlapAnalysisTask.java +++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/OlapAnalysisTask.java @@ -107,6 +107,7 @@ public class OlapAnalysisTask extends BaseAnalysisTask { @VisibleForTesting public void execSQL(String sql) throws Exception { try (AutoCloseConnectContext r = StatisticsUtil.buildConnectContext()) { + r.connectContext.getSessionVariable().disableNereidsPlannerOnce(); this.stmtExecutor = new StmtExecutor(r.connectContext, sql); this.stmtExecutor.execute(); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/statistics/util/StatisticsUtil.java b/fe/fe-core/src/main/java/org/apache/doris/statistics/util/StatisticsUtil.java index deb67a35d6..2c2de6e3d8 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/statistics/util/StatisticsUtil.java +++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/util/StatisticsUtil.java @@ -92,6 +92,7 @@ public class StatisticsUtil { public static void execUpdate(String sql) throws Exception { try (AutoCloseConnectContext r = StatisticsUtil.buildConnectContext()) { + r.connectContext.getSessionVariable().disableNereidsPlannerOnce(); StmtExecutor stmtExecutor = new StmtExecutor(r.connectContext, sql); r.connectContext.setExecutor(stmtExecutor); stmtExecutor.execute(); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org