This is an automated email from the ASF dual-hosted git repository. dataroaring pushed a commit to branch branch-3.0 in repository https://gitbox.apache.org/repos/asf/doris.git
commit 8c32934efa8e579b12a28b1b2ce6482d4de01493 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 c86201a2935..c8030895f38 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 @@ -881,8 +963,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 fd47c0b0a3e..cac51c9bb65 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 @@ -108,7 +108,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; @@ -1127,7 +1126,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() @@ -1226,16 +1225,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 { @@ -3169,7 +3159,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); @@ -3182,7 +3172,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); @@ -3192,7 +3182,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 f2d17170173..f1dda99ff2d 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]
