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 02223465594 [opt](Nereids) support grant, revoke, admin and 
transaction statements syntax (#39866)
02223465594 is described below

commit 02223465594efef89d6c355afb4f37fffde09246
Author: morrySnow <[email protected]>
AuthorDate: Thu Aug 29 21:39:17 2024 +0800

    [opt](Nereids) support grant, revoke, admin and transaction statements 
syntax (#39866)
---
 .../antlr4/org/apache/doris/nereids/DorisParser.g4 | 112 ++++++++++++++++++---
 .../analysis/AdminCancelRebalanceDiskStmt.java     |   2 +-
 .../doris/analysis/AdminCancelRepairTableStmt.java |   2 +-
 .../doris/analysis/AdminCheckTabletsStmt.java      |   2 +-
 .../apache/doris/analysis/AdminCleanTrashStmt.java |   2 +-
 .../doris/analysis/AdminCompactTableStmt.java      |   2 +-
 .../apache/doris/analysis/AdminCopyTabletStmt.java |   2 +-
 .../doris/analysis/AdminRebalanceDiskStmt.java     |   2 +-
 .../doris/analysis/AdminRepairTableStmt.java       |   2 +-
 .../apache/doris/analysis/AdminSetConfigStmt.java  |   2 +-
 .../analysis/AdminSetPartitionVersionStmt.java     |   2 +-
 .../doris/analysis/AdminSetReplicaStatusStmt.java  |   2 +-
 .../doris/analysis/AdminSetReplicaVersionStmt.java |   2 +-
 .../doris/analysis/AdminSetTableStatusStmt.java    |   2 +-
 .../java/org/apache/doris/analysis/GrantStmt.java  |   2 +-
 .../java/org/apache/doris/analysis/RevokeStmt.java |   2 +-
 .../doris/analysis/TransactionBeginStmt.java       |   2 +-
 .../doris/analysis/TransactionCommitStmt.java      |   2 +-
 .../doris/analysis/TransactionRollbackStmt.java    |   2 +-
 .../doris/nereids/parser/LogicalPlanBuilder.java   |  20 +---
 .../java/org/apache/doris/qe/StmtExecutor.java     |   2 +-
 21 files changed, 121 insertions(+), 49 deletions(-)

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 5480c2a3215..f79088b73aa 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
@@ -40,6 +40,7 @@ statement
     | DROP (PROCEDURE | PROC) (IF EXISTS)? name=multipartIdentifier 
#dropProcedure
     | SHOW PROCEDURE STATUS (LIKE pattern=valueExpression | whereClause)? 
#showProcedureStatus
     | SHOW CREATE PROCEDURE name=multipartIdentifier #showCreateProcedure
+    // FIXME: like should be wildWhere? FRONTEND should not contain FROM 
backendid
     | ADMIN? SHOW type=(FRONTEND | BACKEND) CONFIG (LIKE 
pattern=valueExpression)? (FROM backendId=INTEGER_VALUE)? #showConfig
     ;
 
@@ -65,6 +66,9 @@ unsupportedStatement
     | unsupportedDropStatement
     | unsupportedStatsStatement
     | unsupportedAlterStatement
+    | unsupportedGrantRevokeStatement
+    | unsupportedAdminStatement
+    | unsupportedTransactionStatement
     ;
 
 materailizedViewStatement
@@ -168,6 +172,71 @@ supportedDropStatement
     : DROP CATALOG RECYCLE BIN WHERE idType=STRING_LITERAL EQ id=INTEGER_VALUE 
#dropCatalogRecycleBin
     ;
 
+unsupportedAdminStatement
+    : ADMIN SHOW REPLICA STATUS FROM baseTableRef wildWhere?                   
     #adminShowReplicaStatus
+    | ADMIN SHOW REPLICA DISTRIBUTION FROM baseTableRef                        
     #adminShowReplicaDistribution
+    | ADMIN SET REPLICA STATUS PROPERTIES LEFT_PAREN propertyItemList 
RIGHT_PAREN   #adminSetReplicaStatus
+    | ADMIN SET REPLICA VERSION PROPERTIES LEFT_PAREN propertyItemList 
RIGHT_PAREN  #adminSetReplicaVersion
+    | ADMIN REPAIR TABLE baseTableRef                                          
     #adminRepairTable
+    | ADMIN CANCEL REPAIR TABLE baseTableRef                                   
     #adminCancelRepairTable
+    | ADMIN COMPACT TABLE baseTableRef wildWhere?                              
     #adminCompactTable
+    | ADMIN SET (FRONTEND | (ALL FRONTENDS)) CONFIG
+        (LEFT_PAREN propertyItemList RIGHT_PAREN)? ALL?                        
     #adminSetFrontendConfig
+    | ADMIN CHECK tabletList properties=propertyClause?                        
     #adminCheckTablets
+    | ADMIN REBALANCE DISK (ON LEFT_PAREN backends+=STRING_LITERAL
+        (COMMA backends+=STRING_LITERAL) RIGHT_PAREN)?                         
     #adminRebalanceDisk
+    | ADMIN CANCEL REBALANCE DISK (ON LEFT_PAREN backends+=STRING_LITERAL
+        (COMMA backends+=STRING_LITERAL) RIGHT_PAREN)?                         
     #adminCancelRebalanceDisk
+    | ADMIN CLEAN TRASH (ON LEFT_PAREN backends+=STRING_LITERAL
+        (COMMA backends+=STRING_LITERAL) RIGHT_PAREN)?                         
     #adminCleanTrash
+    | ADMIN SET TABLE name=multipartIdentifier
+        PARTITION VERSION properties=propertyClause?                           
     #adminSetPartitionVersion
+    | ADMIN DIAGNOSE TABLET tabletId=INTEGER_VALUE                             
     #adminDiagnoseTablet
+    | ADMIN SHOW TABLET STORAGE FORMAT VERBOSE?                                
     #adminShowTabletStorageFormat
+    | ADMIN COPY TABLET tabletId=INTEGER_VALUE properties=propertyClause?      
     #adminCopyTablet
+    | ADMIN SET TABLE name=multipartIdentifier STATUS 
properties=propertyClause?    #adminSetTableStatus
+    ;
+
+baseTableRef
+    : multipartIdentifier optScanParams? tableSnapshot? specifiedPartition?
+        tabletList? tableAlias sample? relationHint?
+    ;
+
+wildWhere
+    : LIKE STRING_LITERAL
+    | WHERE expression
+    ;
+
+unsupportedTransactionStatement
+    : BEGIN (WITH LABEL identifier?)?                                          
     #transactionBegin
+    | COMMIT WORK? (AND NO? CHAIN)? (NO? RELEASE)?                             
     #transcationCommit
+    | ROLLBACK WORK? (AND NO? CHAIN)? (NO? RELEASE)?                           
     #transactionRollback
+    ;
+
+unsupportedGrantRevokeStatement
+    : GRANT privilegeList ON multipartIdentifierOrAsterisk
+        TO (userIdentify | ROLE STRING_LITERAL)                                
     #grantTablePrivilege
+    | GRANT privilegeList ON
+        (RESOURCE | CLUSTER | STAGE | STORAGE VAULT | WORKLOAD GROUP)
+        identifierOrTextOrAsterisk TO (userIdentify | ROLE STRING_LITERAL)     
     #grantResourcePrivilege
+    | GRANT roles+=STRING_LITERAL (COMMA roles+=STRING_LITERAL)* TO 
userIdentify    #grantRole
+    | REVOKE privilegeList ON multipartIdentifierOrAsterisk
+        FROM (userIdentify | ROLE STRING_LITERAL)                              
     #grantTablePrivilege
+    | REVOKE privilegeList ON
+        (RESOURCE | CLUSTER | STAGE | STORAGE VAULT | WORKLOAD GROUP)
+        identifierOrTextOrAsterisk FROM (userIdentify | ROLE STRING_LITERAL)   
     #grantResourcePrivilege
+    | REVOKE roles+=STRING_LITERAL (COMMA roles+=STRING_LITERAL)* FROM 
userIdentify #grantRole
+    ;
+
+privilege
+    : name=identifier columns=identifierList?
+    | ALL
+    ;
+
+privilegeList
+    : privilege (COMMA privilege)*
+    ;
+
 unsupportedAlterStatement
     : ALTER TABLE tableName=multipartIdentifier
         alterTableClause (COMMA alterTableClause)*                             
     #alterTable
@@ -188,14 +257,17 @@ unsupportedAlterStatement
     | ALTER RESOURCE name=identifierOrText properties=propertyClause?          
     #alterResource
     | ALTER COLOCATE GROUP name=multipartIdentifier
         SET LEFT_PAREN propertyItemList RIGHT_PAREN                            
     #alterColocateGroup
-    | ALTER WORKLOAD GROUP name=identifierOrText properties=propertyClause?    
     #alterWorkloadGroup
-    | ALTER WORKLOAD POLICY name=identifierOrText properties=propertyClause?   
     #alterWorkloadPolicy
+    | ALTER WORKLOAD GROUP name=identifierOrText
+        properties=propertyClause?                                             
     #alterWorkloadGroup
+    | ALTER WORKLOAD POLICY name=identifierOrText
+        properties=propertyClause?                                             
     #alterWorkloadPolicy
     | ALTER ROUTINE LOAD FOR name=multipartIdentifier 
properties=propertyClause?
             (FROM type=identifier LEFT_PAREN propertyItemList RIGHT_PAREN)?    
     #alterRoutineLoad
     | ALTER SQL_BLOCK_RULE name=identifier properties=propertyClause?          
     #alterSqlBlockRule
     | ALTER TABLE name=multipartIdentifier
         SET LEFT_PAREN propertyItemList RIGHT_PAREN                            
     #alterTableProperties
-    | ALTER STORAGE POLICY name=identifierOrText properties=propertyClause     
     #alterStoragePlicy
+    | ALTER STORAGE POLICY name=identifierOrText
+        properties=propertyClause                                              
     #alterStoragePlicy
     | ALTER USER (IF EXISTS)? grantUserIdentify
         passwordOption (COMMENT STRING_LITERAL)?                               
     #alterUser
     | ALTER REPOSITORY name=identifier properties=propertyClause?              
     #alterRepository
@@ -428,14 +500,14 @@ functionArgument
 
 unsupportedSetStatement
     : SET (optionWithType | optionWithoutType)
-        (COMMA (optionWithType | optionWithoutType))*                     
#setOptions
-    | SET identifier AS DEFAULT STORAGE VAULT                             
#setDefaultStorageVault
-    | SET PROPERTY (FOR user=identifierOrText)? propertyItemList          
#setUserProperties
+        (COMMA (optionWithType | optionWithoutType))*                   
#setOptions
+    | SET identifier AS DEFAULT STORAGE VAULT                           
#setDefaultStorageVault
+    | SET PROPERTY (FOR user=identifierOrText)? propertyItemList        
#setUserProperties
     | SET (GLOBAL | LOCAL | SESSION)? TRANSACTION
         ( transactionAccessMode
         | isolationLevel
         | transactionAccessMode COMMA isolationLevel
-        | isolationLevel COMMA transactionAccessMode)                     
#setTransaction
+        | isolationLevel COMMA transactionAccessMode)                   
#setTransaction
     ;
 
 optionWithType
@@ -529,7 +601,7 @@ dataDesc
         (PARTITION partition=identifierList)?
         (COLUMNS TERMINATED BY comma=STRING_LITERAL)?
         (LINES TERMINATED BY separator=STRING_LITERAL)?
-        (FORMAT AS format=identifierOrStringLiteral)?
+        (FORMAT AS format=identifierOrText)?
         (columns=identifierList)?
         (columnsFromPath=colFromPath)?
         (columnMapping=colMappingList)?
@@ -571,19 +643,29 @@ mvPartition
     | partitionExpr = functionCallExpression
     ;
 
-identifierOrStringLiteral
+identifierOrText
     : identifier
     | STRING_LITERAL
     ;
 
-identifierOrText
-    : errorCapturingIdentifier
+identifierOrTextOrAsterisk
+    : identifier
     | STRING_LITERAL
-    | LEADING_STRING
+    | ASTERISK
+    ;
+
+multipartIdentifierOrAsterisk
+    : parts+=identifierOrAsterisk (DOT parts+=identifierOrAsterisk)*
+    ;
+
+identifierOrAsterisk
+    : identifierOrText
+    | ASTERISK
     ;
 
 userIdentify
-    : user=identifierOrText (ATSIGN (host=identifierOrText | LEFT_PAREN 
host=identifierOrText RIGHT_PAREN))?
+    : user=identifierOrText (ATSIGN (host=identifierOrText
+        | LEFT_PAREN host=identifierOrText RIGHT_PAREN))?
     ;
 
 grantUserIdentify
@@ -880,8 +962,8 @@ optScanParams
     ;
 
 relationPrimary
-    : multipartIdentifier optScanParams? materializedViewName? 
specifiedPartition?
-       tabletList? tableAlias sample? tableSnapshot? relationHint? 
lateralView*           #tableName
+    : multipartIdentifier optScanParams? materializedViewName? tableSnapshot? 
specifiedPartition?
+       tabletList? tableAlias sample? relationHint? lateralView*           
#tableName
     | LEFT_PAREN query RIGHT_PAREN tableAlias lateralView*                 
#aliasedQuery
     | tvfName=identifier LEFT_PAREN
       (properties=propertyItemList)?
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminCancelRebalanceDiskStmt.java
 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminCancelRebalanceDiskStmt.java
index 874a1af1368..59180d158e0 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminCancelRebalanceDiskStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminCancelRebalanceDiskStmt.java
@@ -34,7 +34,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-public class AdminCancelRebalanceDiskStmt extends DdlStmt {
+public class AdminCancelRebalanceDiskStmt extends DdlStmt implements 
NotFallbackInParser {
     private List<Backend> backends = Lists.newArrayList();
 
     public AdminCancelRebalanceDiskStmt(List<String> backends) throws 
UserException {
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminCancelRepairTableStmt.java
 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminCancelRepairTableStmt.java
index b7944e38e65..e4efa1b58d5 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminCancelRepairTableStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminCancelRepairTableStmt.java
@@ -30,7 +30,7 @@ import com.google.common.collect.Lists;
 
 import java.util.List;
 
-public class AdminCancelRepairTableStmt extends DdlStmt {
+public class AdminCancelRepairTableStmt extends DdlStmt implements 
NotFallbackInParser {
 
     private TableRef tblRef;
     private List<String> partitions = Lists.newArrayList();
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminCheckTabletsStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminCheckTabletsStmt.java
index cf1d9f5bdf0..56efbdc8a63 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminCheckTabletsStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminCheckTabletsStmt.java
@@ -32,7 +32,7 @@ import java.util.List;
 import java.util.Map;
 
 // ADMIN CHECK TABLET (id1, id2, ...) PROPERTIES ("type" = 
"check_consistency");
-public class AdminCheckTabletsStmt extends DdlStmt {
+public class AdminCheckTabletsStmt extends DdlStmt implements 
NotFallbackInParser {
 
     private List<Long> tabletIds;
     private Map<String, String> properties;
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminCleanTrashStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminCleanTrashStmt.java
index b6d5cc2ce19..5dd9419376d 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminCleanTrashStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminCleanTrashStmt.java
@@ -34,7 +34,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-public class AdminCleanTrashStmt extends DdlStmt {
+public class AdminCleanTrashStmt extends DdlStmt implements 
NotFallbackInParser {
     private List<Backend> backends = Lists.newArrayList();
 
     public AdminCleanTrashStmt(List<String> backends) throws UserException {
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminCompactTableStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminCompactTableStmt.java
index 6abcae6c05c..5d82a735353 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminCompactTableStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminCompactTableStmt.java
@@ -30,7 +30,7 @@ import com.google.common.collect.Lists;
 
 import java.util.List;
 
-public class AdminCompactTableStmt extends DdlStmt {
+public class AdminCompactTableStmt extends DdlStmt implements 
NotFallbackInParser {
 
     private TableRef tblRef;
     private Expr where;
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminCopyTabletStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminCopyTabletStmt.java
index 475219ca343..072ee4bb12d 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminCopyTabletStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminCopyTabletStmt.java
@@ -34,7 +34,7 @@ import java.util.Iterator;
 import java.util.Map;
 
 // ADMIN COPY TABLET 10110 PROPERTIES('version' = '1000', backend_id = 
'10001');
-public class AdminCopyTabletStmt extends ShowStmt {
+public class AdminCopyTabletStmt extends ShowStmt implements 
NotFallbackInParser {
     public static final String PROP_VERSION = "version";
     public static final String PROP_BACKEND_ID = "backend_id";
     public static final String PROP_EXPIRATION = "expiration_minutes";
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminRebalanceDiskStmt.java
 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminRebalanceDiskStmt.java
index aa48a9a1fc1..7185826343f 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminRebalanceDiskStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminRebalanceDiskStmt.java
@@ -35,7 +35,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-public class AdminRebalanceDiskStmt extends DdlStmt {
+public class AdminRebalanceDiskStmt extends DdlStmt implements 
NotFallbackInParser {
     private static final Logger LOG = 
LogManager.getLogger(AdminRebalanceDiskStmt.class);
     private List<Backend> backends = Lists.newArrayList();
     private long timeoutS = 0;
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminRepairTableStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminRepairTableStmt.java
index 098517d28d8..a87c6e02b65 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminRepairTableStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminRepairTableStmt.java
@@ -30,7 +30,7 @@ import com.google.common.collect.Lists;
 
 import java.util.List;
 
-public class AdminRepairTableStmt extends DdlStmt {
+public class AdminRepairTableStmt extends DdlStmt implements 
NotFallbackInParser {
 
     private TableRef tblRef;
     private List<String> partitions = Lists.newArrayList();
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminSetConfigStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminSetConfigStmt.java
index 0de5ee0807d..458116924d7 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminSetConfigStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminSetConfigStmt.java
@@ -33,7 +33,7 @@ import com.google.common.collect.Maps;
 import java.util.Map;
 
 // admin set frontend config ("key" = "value");
-public class AdminSetConfigStmt extends DdlStmt {
+public class AdminSetConfigStmt extends DdlStmt implements NotFallbackInParser 
{
 
     private boolean applyToAll;
     private NodeType type;
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminSetPartitionVersionStmt.java
 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminSetPartitionVersionStmt.java
index a1edeb7a2c8..63e0fed32c4 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminSetPartitionVersionStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminSetPartitionVersionStmt.java
@@ -35,7 +35,7 @@ import java.util.Map;
  *      "partition_id" = "20010",
  *      "visible_version" = "101"
  */
-public class AdminSetPartitionVersionStmt extends DdlStmt {
+public class AdminSetPartitionVersionStmt extends DdlStmt implements 
NotFallbackInParser {
     private long partitionId = -1;
     private long visibleVersion = -1;
     private final TableName tableName;
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminSetReplicaStatusStmt.java
 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminSetReplicaStatusStmt.java
index 84288dabd68..dcc2f29fca5 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminSetReplicaStatusStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminSetReplicaStatusStmt.java
@@ -35,7 +35,7 @@ import java.util.Map;
  *      "backend_id" = "10001"
  *      "status" = "drop"/"bad"/"ok"
  */
-public class AdminSetReplicaStatusStmt extends DdlStmt {
+public class AdminSetReplicaStatusStmt extends DdlStmt implements 
NotFallbackInParser {
 
     public static final String TABLET_ID = "tablet_id";
     public static final String BACKEND_ID = "backend_id";
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminSetReplicaVersionStmt.java
 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminSetReplicaVersionStmt.java
index 82ce9eff715..23b16638477 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminSetReplicaVersionStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminSetReplicaVersionStmt.java
@@ -37,7 +37,7 @@ import java.util.Map;
  *      "last_success_version" = "100",
  *      "last_failed_version" = "-1",
  */
-public class AdminSetReplicaVersionStmt extends DdlStmt {
+public class AdminSetReplicaVersionStmt extends DdlStmt implements 
NotFallbackInParser {
 
     public static final String TABLET_ID = "tablet_id";
     public static final String BACKEND_ID = "backend_id";
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminSetTableStatusStmt.java
 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminSetTableStatusStmt.java
index e58d2af1278..8e857f75070 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminSetTableStatusStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminSetTableStatusStmt.java
@@ -31,7 +31,7 @@ import lombok.Getter;
 
 import java.util.Map;
 
-public class AdminSetTableStatusStmt extends DdlStmt {
+public class AdminSetTableStatusStmt extends DdlStmt implements 
NotFallbackInParser {
 
     public static final String TABLE_STATE = "state";
 
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/GrantStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/GrantStmt.java
index f1b3ab01d43..c87c5daba23 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/GrantStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/GrantStmt.java
@@ -53,7 +53,7 @@ import java.util.Set;
 // GRANT privilege[(col1,col2...)] [, privilege] ON db.tbl TO user_identity 
[ROLE 'role'];
 // GRANT privilege [, privilege] ON RESOURCE 'resource' TO user_identity [ROLE 
'role'];
 // GRANT role [, role] TO user_identity
-public class GrantStmt extends DdlStmt {
+public class GrantStmt extends DdlStmt implements NotFallbackInParser {
     private UserIdentity userIdent;
     // Indicates which permissions are granted to this role
     private String role;
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/RevokeStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/RevokeStmt.java
index 9b06623f82c..96c52f7353f 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/RevokeStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/RevokeStmt.java
@@ -43,7 +43,7 @@ import java.util.stream.Collectors;
 // REVOKE privilege[(col1,col2...)] [, privilege] ON db.tbl FROM user_identity 
[ROLE 'role'];
 // REVOKE privilege [, privilege] ON resource 'resource' FROM user_identity 
[ROLE 'role'];
 // REVOKE role [, role] FROM user_identity
-public class RevokeStmt extends DdlStmt {
+public class RevokeStmt extends DdlStmt implements NotFallbackInParser {
     private UserIdentity userIdent;
     // Indicates which permissions are revoked from this role
     private String role;
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/TransactionBeginStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/TransactionBeginStmt.java
index 58184b9bb21..90f5fbb5159 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/TransactionBeginStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/TransactionBeginStmt.java
@@ -22,7 +22,7 @@ import org.apache.doris.common.UserException;
 import org.apache.doris.common.util.DebugUtil;
 import org.apache.doris.transaction.TransactionEntry;
 
-public class TransactionBeginStmt extends TransactionStmt {
+public class TransactionBeginStmt extends TransactionStmt implements 
NotFallbackInParser {
     private String label = null;
 
     public TransactionBeginStmt() {
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/TransactionCommitStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/TransactionCommitStmt.java
index cdfe53e9ce7..b17e767b683 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/TransactionCommitStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/TransactionCommitStmt.java
@@ -17,6 +17,6 @@
 
 package org.apache.doris.analysis;
 
-public class TransactionCommitStmt extends TransactionStmt {
+public class TransactionCommitStmt extends TransactionStmt implements 
NotFallbackInParser {
 
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/TransactionRollbackStmt.java
 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/TransactionRollbackStmt.java
index d285ba9fe1b..081cd84592b 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/TransactionRollbackStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/TransactionRollbackStmt.java
@@ -17,6 +17,6 @@
 
 package org.apache.doris.analysis;
 
-public class TransactionRollbackStmt extends TransactionStmt {
+public class TransactionRollbackStmt extends TransactionStmt implements 
NotFallbackInParser {
 
 }
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 af7d6cd63af..c7d43a696fc 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
@@ -110,7 +110,6 @@ import 
org.apache.doris.nereids.DorisParser.HintAssignmentContext;
 import org.apache.doris.nereids.DorisParser.HintStatementContext;
 import org.apache.doris.nereids.DorisParser.IdentifierContext;
 import org.apache.doris.nereids.DorisParser.IdentifierListContext;
-import org.apache.doris.nereids.DorisParser.IdentifierOrTextContext;
 import org.apache.doris.nereids.DorisParser.IdentifierSeqContext;
 import org.apache.doris.nereids.DorisParser.InPartitionDefContext;
 import org.apache.doris.nereids.DorisParser.IndexDefContext;
@@ -1130,7 +1129,7 @@ public class LogicalPlanBuilder extends 
DorisParserBaseVisitor<Object> {
                         : 
LoadTask.MergeType.valueOf(ddc.mergeType().getText());
 
             Optional<String> fileFormat = ddc.format == null ? Optional.empty()
-                    : Optional.of(visitIdentifierOrStringLiteral(ddc.format));
+                    : Optional.of(visitIdentifierOrText(ddc.format));
             Optional<String> separator = ddc.separator == null ? 
Optional.empty() : Optional.of(ddc.separator.getText()
                         .substring(1, ddc.separator.getText().length() - 1));
             Optional<String> comma = ddc.comma == null ? Optional.empty() : 
Optional.of(ddc.comma.getText()
@@ -1229,16 +1228,7 @@ public class LogicalPlanBuilder extends 
DorisParserBaseVisitor<Object> {
     }
 
     @Override
-    public String visitIdentifierOrText(IdentifierOrTextContext ctx) {
-        if (ctx.STRING_LITERAL() != null) {
-            return ctx.STRING_LITERAL().getText().substring(1, 
ctx.STRING_LITERAL().getText().length() - 1);
-        } else {
-            return ctx.errorCapturingIdentifier().getText();
-        }
-    }
-
-    @Override
-    public String 
visitIdentifierOrStringLiteral(DorisParser.IdentifierOrStringLiteralContext 
ctx) {
+    public String visitIdentifierOrText(DorisParser.IdentifierOrTextContext 
ctx) {
         if (ctx.STRING_LITERAL() != null) {
             return ctx.STRING_LITERAL().getText().substring(1, 
ctx.STRING_LITERAL().getText().length() - 1);
         } else {
@@ -3197,7 +3187,7 @@ public class LogicalPlanBuilder extends 
DorisParserBaseVisitor<Object> {
                         hints.put(hintName, new SelectHintSetVar(hintName, 
parameters));
                         break;
                     case "leading":
-                        List<String> leadingParameters = new 
ArrayList<String>();
+                        List<String> leadingParameters = new ArrayList<>();
                         for (HintAssignmentContext kv : 
hintStatement.parameters) {
                             if (kv.key != null) {
                                 String parameterName = 
visitIdentifierOrText(kv.key);
@@ -3210,7 +3200,7 @@ public class LogicalPlanBuilder extends 
DorisParserBaseVisitor<Object> {
                         hints.put(hintName, new SelectHintOrdered(hintName));
                         break;
                     case "use_cbo_rule":
-                        List<String> useRuleParameters = new 
ArrayList<String>();
+                        List<String> useRuleParameters = new ArrayList<>();
                         for (HintAssignmentContext kv : 
hintStatement.parameters) {
                             if (kv.key != null) {
                                 String parameterName = 
visitIdentifierOrText(kv.key);
@@ -3220,7 +3210,7 @@ public class LogicalPlanBuilder extends 
DorisParserBaseVisitor<Object> {
                         hints.put(hintName, new SelectHintUseCboRule(hintName, 
useRuleParameters, false));
                         break;
                     case "no_use_cbo_rule":
-                        List<String> noUseRuleParameters = new 
ArrayList<String>();
+                        List<String> noUseRuleParameters = new ArrayList<>();
                         for (HintAssignmentContext kv : 
hintStatement.parameters) {
                             String parameterName = 
visitIdentifierOrText(kv.key);
                             if (kv.key != null) {
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 812d9d00417..71614770afb 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
@@ -713,7 +713,7 @@ public class StmtExecutor {
         if (context.isTxnModel()) {
             if (!(logicalPlan instanceof BatchInsertIntoTableCommand || 
logicalPlan instanceof InsertIntoTableCommand
                     || logicalPlan instanceof UpdateCommand || logicalPlan 
instanceof DeleteFromUsingCommand
-                    || logicalPlan instanceof DeleteFromCommand)) {
+                    || logicalPlan instanceof DeleteFromCommand || logicalPlan 
instanceof UnsupportedCommand)) {
                 String errMsg = "This is in a transaction, only insert, 
update, delete, "
                         + "commit, rollback is acceptable.";
                 throw new NereidsException(errMsg, new 
AnalysisException(errMsg));


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to