diff --git a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisLexer.g4 b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisLexer.g4 index 256888c2fc14097..f3eeb5fca189239 100644 --- a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisLexer.g4 +++ b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisLexer.g4 @@ -547,6 +547,7 @@ USING: 'USING'; VALUE: 'VALUE'; VALUES: 'VALUES'; VARCHAR: 'VARCHAR'; +VARIANT: 'VARIANT'; VARIABLES: 'VARIABLES'; VERBOSE: 'VERBOSE'; VERSION: 'VERSION'; diff --git a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4 b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4 index 7aaf9fbde652c2c..0b3a5b5c5b78886 100644 --- a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4 +++ b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4 @@ -899,6 +899,7 @@ primitiveColType: | type=DECIMALV3 | type=IPV4 | type=IPV6 + | type=VARIANT | type=ALL ; diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java index 1b479f364639b25..6fd10b158cbee20 100755 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java @@ -1534,7 +1534,10 @@ private void transferToMaster() { "true"); } if (journalVersion <= FeMetaVersion.VERSION_123) { - VariableMgr.refreshDefaultSessionVariables("2.0 to 2.1", SessionVariable.ENABLE_NEREIDS_DML, "true"); + VariableMgr.refreshDefaultSessionVariables("2.0 to 2.1", + SessionVariable.ENABLE_NEREIDS_DML, "true"); + VariableMgr.refreshDefaultSessionVariables("2.0 to 2.1", + SessionVariable.ENABLE_FALLBACK_TO_ORIGINAL_PLANNER, "false"); VariableMgr.refreshDefaultSessionVariables("2.0 to 2.1", SessionVariable.FRAGMENT_TRANSMISSION_COMPRESSION_CODEC, "none"); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java index 2985664f8b818a8..a9ba3603f534429 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java @@ -2625,7 +2625,7 @@ public IndexDefinition visitIndexDef(IndexDefContext ctx) { String indexType = ctx.indexType != null ? ctx.indexType.getText().toUpperCase() : null; String comment = ctx.comment != null ? ctx.comment.getText() : ""; // change BITMAP index to INVERTED index - if (indexType.equalsIgnoreCase("BITMAP")) { + if ("BITMAP".equalsIgnoreCase(indexType)) { indexType = "INVERTED"; } return new IndexDefinition(indexName, indexCols, indexType, properties, comment); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/types/DataType.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/types/DataType.java index 470eee8153b8562..e9905a44a410037 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/types/DataType.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/types/DataType.java @@ -297,6 +297,9 @@ public static DataType convertPrimitiveFromStrings(List types, boolean u case "ipv6": dataType = IPv6Type.INSTANCE; break; + case "variant": + dataType = VariantType.INSTANCE; + break; default: throw new AnalysisException("Nereids do not support type: " + type); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectProcessor.java b/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectProcessor.java index 822960f30ced477..6381b7f682b1907 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectProcessor.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectProcessor.java @@ -17,12 +17,16 @@ package org.apache.doris.qe; +import org.apache.doris.analysis.CreateTableAsSelectStmt; +import org.apache.doris.analysis.CreateTableStmt; +import org.apache.doris.analysis.DeleteStmt; import org.apache.doris.analysis.InsertStmt; import org.apache.doris.analysis.KillStmt; import org.apache.doris.analysis.QueryStmt; import org.apache.doris.analysis.SqlParser; import org.apache.doris.analysis.SqlScanner; import org.apache.doris.analysis.StatementBase; +import org.apache.doris.analysis.UpdateStmt; import org.apache.doris.analysis.UserIdentity; import org.apache.doris.catalog.Column; import org.apache.doris.catalog.DatabaseIf; @@ -259,6 +263,20 @@ public void executeQuery(MysqlCommand mysqlCommand, String originStmt) throws Ex } } + if (mysqlCommand == MysqlCommand.COM_QUERY + && ctx.getSessionVariable().isEnableNereidsPlanner() + && !ctx.getSessionVariable().enableFallbackToOriginalPlanner + && stmts.stream().allMatch(s -> s instanceof QueryStmt + || s instanceof InsertStmt + || s instanceof UpdateStmt + || s instanceof DeleteStmt + || s instanceof CreateTableAsSelectStmt + || s instanceof CreateTableStmt)) { + handleQueryException(new AnalysisException("Nereids parse DQL failed. " + originStmt, + nereidsParseException), originStmt, null, null); + return; + } + List origSingleStmtList = null; // if stmts.size() > 1, split originStmt to multi singleStmts if (stmts.size() > 1) { 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 67f3569091418a8..9dd46534c237ef0 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 @@ -1235,7 +1235,7 @@ public void setEnableLeftZigZag(boolean enableLeftZigZag) { // for nereids, fallback will cause the Doris return the correct result although the syntax is unsupported // in nereids for some mistaken modification. You should set it on the @VariableMgr.VarAttr(name = ENABLE_FALLBACK_TO_ORIGINAL_PLANNER, needForward = true) - public boolean enableFallbackToOriginalPlanner = true; + public boolean enableFallbackToOriginalPlanner = false; @VariableMgr.VarAttr(name = ENABLE_NEREIDS_TIMEOUT, needForward = true) public boolean enableNereidsTimeout = 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 40af03d9237d515..e4d217eff463070 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 @@ -559,11 +559,11 @@ public void execute(TUniqueId queryId) throws Exception { boolean isInsertCommand = parsedStmt != null && parsedStmt instanceof LogicalPlanAdapter && ((LogicalPlanAdapter) parsedStmt).getLogicalPlan() instanceof InsertIntoTableCommand; - /*boolean isGroupCommit = (Config.wait_internal_group_commit_finish - || context.sessionVariable.isEnableInsertGroupCommit()) && isInsertCommand;*/ - boolean forceFallback = isInsertCommand && !context.isTxnModel(); + boolean isGroupCommit = (Config.wait_internal_group_commit_finish + || context.sessionVariable.isEnableInsertGroupCommit()) && isInsertCommand; + // boolean forceFallback = isInsertCommand && !context.isTxnModel(); if (e instanceof NereidsException && !context.getSessionVariable().enableFallbackToOriginalPlanner - && !forceFallback) { + && !isGroupCommit) { LOG.warn("Analyze failed. {}", context.getQueryIdentifier(), e); throw ((NereidsException) e).getException(); }