This is an automated email from the ASF dual-hosted git repository.
starocean999 pushed a commit to branch opt_dict_perf
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/opt_dict_perf by this push:
new 767b187892 [fix](nereids)enable fall back to old planner for single
query (#19037)
767b187892 is described below
commit 767b187892a80ff65da2baa060e43b4dba4cb755
Author: starocean999 <[email protected]>
AuthorDate: Tue Apr 25 12:43:45 2023 +0800
[fix](nereids)enable fall back to old planner for single query (#19037)
* pick pr 17994
* enable fall back to old planner for single query
---
.../nereids/processor/pre/EliminateLogicalSelectHint.java | 12 ++++++++++++
.../src/main/java/org/apache/doris/qe/SessionVariable.java | 12 ++++++++++++
.../src/main/java/org/apache/doris/qe/StmtExecutor.java | 6 ++++++
3 files changed, 30 insertions(+)
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 418ff5f6d4..a600268437 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
@@ -72,5 +72,17 @@ public class EliminateLogicalSelectHint extends
PlanPreprocessor {
}
}
}
+
+ // if sv set enable_nereids_planner=true and hint set
enable_nereids_planner=false, we should set
+ // enable_fallback_to_original_planner=true and revert it after
executing.
+ // throw exception to fall back to original planner
+ if (!sessionVariable.isEnableNereidsPlanner()) {
+ try {
+ sessionVariable.enableFallbackToOriginalPlannerOnce();
+ } catch (Throwable 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 8a585fb5c9..8a4ef0fbc1 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;
@@ -1861,4 +1864,13 @@ 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")));
+ }
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java
b/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java
index 9bbbb03d7c..6aac61b45c 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java
@@ -489,6 +489,12 @@ public class StmtExecutor implements ProfileWriter {
LOG.warn("fall back to legacy planner, because: {}",
e.getMessage(), e);
parsedStmt = null;
context.getState().setNereids(false);
+ try {
+ VariableMgr.revertSessionValue(sessionVariable);
+ } catch (DdlException ex) {
+ LOG.warn("failed to revert Session value. {}",
context.getQueryIdentifier(), ex);
+
context.getState().setError(ex.getMysqlErrorCode(), ex.getMessage());
+ }
analyze(context.getSessionVariable().toThrift());
}
} catch (Exception e) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]