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 330ed9a84c [fix](Nereids) toSql is not work well in non-query
statement (#15752)
330ed9a84c is described below
commit 330ed9a84c669568c51549e18e45d570c0a15461
Author: morrySnow <[email protected]>
AuthorDate: Wed Jan 11 18:56:55 2023 +0800
[fix](Nereids) toSql is not work well in non-query statement (#15752)
---
.../src/main/java/org/apache/doris/analysis/SlotRef.java | 2 ++
fe/fe-core/src/main/java/org/apache/doris/qe/QueryState.java | 10 ++++++++++
.../src/main/java/org/apache/doris/qe/StmtExecutor.java | 12 +++++++++++-
3 files changed, 23 insertions(+), 1 deletion(-)
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/SlotRef.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/SlotRef.java
index 44197b3b5b..53aa8fde90 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/SlotRef.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/SlotRef.java
@@ -227,6 +227,8 @@ public class SlotRef extends Expr {
return tblName.toSql() + "." + label;
} else if (label != null) {
if (ConnectContext.get() != null
+ && ConnectContext.get().getState().isNereids()
+ && !ConnectContext.get().getState().isQuery()
&& ConnectContext.get().getSessionVariable() != null
&&
ConnectContext.get().getSessionVariable().isEnableNereidsPlanner()
&& desc != null) {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/QueryState.java
b/fe/fe-core/src/main/java/org/apache/doris/qe/QueryState.java
index 3cf2f22779..b075ccc984 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/qe/QueryState.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/qe/QueryState.java
@@ -48,6 +48,7 @@ public class QueryState {
private int warningRows = 0;
// make it public for easy to use
public int serverStatus = 0;
+ public boolean isNereids = false;
public QueryState() {
}
@@ -61,6 +62,7 @@ public class QueryState {
isQuery = false;
affectedRows = 0;
warningRows = 0;
+ isNereids = false;
}
public MysqlStateType getStateType() {
@@ -136,6 +138,14 @@ public class QueryState {
return warningRows;
}
+ public void setNereids(boolean nereids) {
+ isNereids = nereids;
+ }
+
+ public boolean isNereids() {
+ return isNereids;
+ }
+
public MysqlPacket toResponsePacket() {
MysqlPacket packet = null;
switch (stateType) {
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 a6f1660eff..adeacac51f 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
@@ -94,6 +94,7 @@ import org.apache.doris.mysql.privilege.PrivPredicate;
import org.apache.doris.nereids.NereidsPlanner;
import org.apache.doris.nereids.StatementContext;
import org.apache.doris.nereids.glue.LogicalPlanAdapter;
+import org.apache.doris.nereids.trees.plans.commands.Command;
import org.apache.doris.planner.OlapScanNode;
import org.apache.doris.planner.OriginalPlanner;
import org.apache.doris.planner.Planner;
@@ -425,10 +426,18 @@ public class StmtExecutor implements ProfileWriter {
context.setStmtId(STMT_ID_GENERATOR.incrementAndGet());
context.setQueryId(queryId);
// set isQuery first otherwise this state will be lost if some error
occurs
- if (parsedStmt instanceof QueryStmt || parsedStmt instanceof
LogicalPlanAdapter) {
+ if (parsedStmt instanceof QueryStmt) {
context.getState().setIsQuery(true);
}
+ if (parsedStmt instanceof LogicalPlanAdapter) {
+ context.getState().setNereids(true);
+ if (parsedStmt.getExplainOptions() == null
+ && !(((LogicalPlanAdapter) parsedStmt).getLogicalPlan()
instanceof Command)) {
+ context.getState().setIsQuery(true);
+ }
+ }
+
try {
if (context.isTxnModel() && !(parsedStmt instanceof InsertStmt)
&& !(parsedStmt instanceof TransactionStmt)) {
@@ -452,6 +461,7 @@ public class StmtExecutor implements ProfileWriter {
// fall back to legacy planner
LOG.warn("fall back to legacy planner, because: {}",
e.getMessage(), e);
parsedStmt = null;
+ context.getState().setNereids(false);
analyze(context.getSessionVariable().toThrift());
}
} catch (Exception e) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]