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]