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 93081b95154 [opt](Nereids) support drop statement syntax in Nereids
(#39506)
93081b95154 is described below
commit 93081b9515449e6b4b2f1784f19bd33539c8f748
Author: morrySnow <[email protected]>
AuthorDate: Wed Aug 21 10:39:46 2024 +0800
[opt](Nereids) support drop statement syntax in Nereids (#39506)
---
.../antlr4/org/apache/doris/nereids/DorisParser.g4 | 40 ++++++++++++++++++++--
.../apache/doris/analysis/DropAnalyzeJobStmt.java | 2 +-
.../apache/doris/analysis/DropCachedStatsStmt.java | 2 +-
.../org/apache/doris/analysis/DropCatalogStmt.java | 2 +-
.../java/org/apache/doris/analysis/DropDbStmt.java | 2 +-
.../apache/doris/analysis/DropEncryptKeyStmt.java | 2 +-
.../org/apache/doris/analysis/DropFileStmt.java | 2 +-
.../apache/doris/analysis/DropFunctionStmt.java | 2 +-
.../doris/analysis/DropMaterializedViewStmt.java | 2 +-
.../org/apache/doris/analysis/DropPolicyStmt.java | 2 +-
.../apache/doris/analysis/DropRepositoryStmt.java | 2 +-
.../apache/doris/analysis/DropResourceStmt.java | 2 +-
.../org/apache/doris/analysis/DropRoleStmt.java | 2 +-
.../doris/analysis/DropSqlBlockRuleStmt.java | 2 +-
.../org/apache/doris/analysis/DropStageStmt.java | 2 +-
.../org/apache/doris/analysis/DropStatsStmt.java | 2 +-
.../org/apache/doris/analysis/DropTableStmt.java | 2 +-
.../doris/analysis/DropWorkloadGroupStmt.java | 2 +-
.../analysis/DropWorkloadSchedPolicyStmt.java | 2 +-
.../doris/nereids/parser/LogicalPlanBuilder.java | 6 +++-
20 files changed, 60 insertions(+), 22 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 f5e453ab4a1..cdb27daf9e0 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
@@ -62,6 +62,8 @@ unsupportedStatement
| unsupportedKillStatement
| unsupportedDescribeStatement
| unsupportedCreateStatement
+ | unsupportedDropStatement
+ | unsupportedStatsStatement
;
materailizedViewStatement
@@ -80,7 +82,8 @@ materailizedViewStatement
| (REFRESH (refreshMethod | refreshTrigger | refreshMethod
refreshTrigger))
| REPLACE WITH MATERIALIZED VIEW newName=identifier propertyClause?
| (SET LEFT_PAREN fileProperties=propertyItemList RIGHT_PAREN))
#alterMTMV
- | DROP MATERIALIZED VIEW (IF EXISTS)? mvName=multipartIdentifier
#dropMTMV
+ | DROP MATERIALIZED VIEW (IF EXISTS)? mvName=multipartIdentifier
+ (ON tableName=multipartIdentifier)?
#dropMTMV
| PAUSE MATERIALIZED VIEW JOB ON mvName=multipartIdentifier
#pauseMTMV
| RESUME MATERIALIZED VIEW JOB ON mvName=multipartIdentifier
#resumeMTMV
| CANCEL MATERIALIZED VIEW TASK taskId=INTEGER_VALUE ON
mvName=multipartIdentifier #cancelMTMVTask
@@ -164,6 +167,39 @@ supportedDropStatement
: DROP CATALOG RECYCLE BIN WHERE idType=STRING_LITERAL EQ id=INTEGER_VALUE
#dropCatalogRecycleBin
;
+unsupportedDropStatement
+ : DROP (DATABASE | SCHEMA) (IF EXISTS)? name=multipartIdentifier FORCE?
#dropDatabase
+ | DROP CATALOG (IF EXISTS)? name=identifier
#dropCatalog
+ | DROP (GLOBAL | SESSION | LOCAL)? FUNCTION (IF EXISTS)?
+ functionIdentifier LEFT_PAREN functionArguments? RIGHT_PAREN
#dropFunction
+ | DROP TABLE (IF EXISTS)? name=multipartIdentifier FORCE?
#dropTable
+ | DROP USER (IF EXISTS)? userIdentify
#dropUser
+ | DROP VIEW (IF EXISTS)? name=multipartIdentifier
#dropView
+ | DROP REPOSITORY name=identifier
#dropRepository
+ | DROP ROLE (IF EXISTS)? name=identifier
#dropRole
+ | DROP FILE name=STRING_LITERAL
+ ((FROM | IN) database=identifier)? properties=propertyClause
#dropFile
+ | DROP INDEX (IF EXISTS)? name=identifier ON tableName=multipartIdentifier
#dropIndex
+ | DROP RESOURCE (IF EXISTS)? name=identifierOrText
#dropResource
+ | DROP WORKLOAD GROUP (IF EXISTS)? name=identifierOrText
#dropWorkloadGroup
+ | DROP WORKLOAD POLICY (IF EXISTS)? name=identifierOrText
#dropWorkloadPolicy
+ | DROP ENCRYPTKEY (IF EXISTS)? name=multipartIdentifier
#dropEncryptkey
+ | DROP SQL_BLOCK_RULE (IF EXISTS)? identifierSeq
#dropSqlBlockRule
+ | DROP ROW POLICY (IF EXISTS)? policyName=identifier
+ ON tableName=multipartIdentifier
+ (FOR (userIdentify | ROLE roleName=identifier))?
#dropRowPolicy
+ | DROP STORAGE POLICY (IF EXISTS)? name=identifier
#dropStoragePolicy
+ | DROP STAGE (IF EXISTS)? name=identifier
#dropStage
+ ;
+
+unsupportedStatsStatement
+ : DROP STATS tableName=multipartIdentifier
+ columns=identifierList? partitionSpec?
#dropStats
+ | DROP CACHED STATS tableName=multipartIdentifier
#dropCachedStats
+ | DROP EXPIRED STATS
#dropExpiredStats
+ | DROP ANALYZE JOB INTEGER_VALUE
#dropAanalyzeJob
+ ;
+
unsupportedCreateStatement
: CREATE (DATABASE | SCHEMA) (IF NOT EXISTS)? name=multipartIdentifier
properties=propertyClause?
#createDatabase
@@ -265,8 +301,6 @@ functionArgument
| dataType
;
-
-
unsupportedSetStatement
: SET (optionWithType | optionWithoutType)
(COMMA (optionWithType | optionWithoutType))*
#setOptions
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropAnalyzeJobStmt.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropAnalyzeJobStmt.java
index 04562476687..c26252f8f8e 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropAnalyzeJobStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropAnalyzeJobStmt.java
@@ -20,7 +20,7 @@ package org.apache.doris.analysis;
/**
* DROP ANALYZE JOB [JOB_ID]
*/
-public class DropAnalyzeJobStmt extends DdlStmt {
+public class DropAnalyzeJobStmt extends DdlStmt implements NotFallbackInParser
{
private final long jobId;
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropCachedStatsStmt.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropCachedStatsStmt.java
index c772c17e121..117c0a2e292 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropCachedStatsStmt.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropCachedStatsStmt.java
@@ -34,7 +34,7 @@ import org.apache.doris.qe.ConnectContext;
* syntax:
* DROP CACHED STATS TableName;
*/
-public class DropCachedStatsStmt extends DdlStmt {
+public class DropCachedStatsStmt extends DdlStmt implements
NotFallbackInParser {
private final TableName tableName;
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropCatalogStmt.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropCatalogStmt.java
index 7043066fc47..a9679583698 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropCatalogStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropCatalogStmt.java
@@ -30,7 +30,7 @@ import org.apache.doris.qe.ConnectContext;
/**
* Statement for drop a catalog.
*/
-public class DropCatalogStmt extends DdlStmt {
+public class DropCatalogStmt extends DdlStmt implements NotFallbackInParser {
private final boolean ifExists;
private final String catalogName;
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropDbStmt.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropDbStmt.java
index 7ce85a29902..2715bd1f6da 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropDbStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropDbStmt.java
@@ -32,7 +32,7 @@ import com.google.common.base.Strings;
import org.apache.commons.lang3.StringUtils;
// DROP DB表达式
-public class DropDbStmt extends DdlStmt {
+public class DropDbStmt extends DdlStmt implements NotFallbackInParser {
private boolean ifExists;
private String ctlName;
private String dbName;
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropEncryptKeyStmt.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropEncryptKeyStmt.java
index 542f67b029d..d29aba609e5 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropEncryptKeyStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropEncryptKeyStmt.java
@@ -25,7 +25,7 @@ import org.apache.doris.common.UserException;
import org.apache.doris.mysql.privilege.PrivPredicate;
import org.apache.doris.qe.ConnectContext;
-public class DropEncryptKeyStmt extends DdlStmt {
+public class DropEncryptKeyStmt extends DdlStmt implements NotFallbackInParser
{
private final boolean ifExists;
private final EncryptKeyName encryptKeyName;
private EncryptKeySearchDesc encryptKeySearchDesc;
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropFileStmt.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropFileStmt.java
index 048498050bc..94bdaf463e1 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropFileStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropFileStmt.java
@@ -31,7 +31,7 @@ import com.google.common.base.Strings;
import java.util.Map;
import java.util.Optional;
-public class DropFileStmt extends DdlStmt {
+public class DropFileStmt extends DdlStmt implements NotFallbackInParser {
public static final String PROP_CATALOG = "catalog";
private String fileName;
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropFunctionStmt.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropFunctionStmt.java
index de4b5576cd1..0f1b637c23f 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropFunctionStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropFunctionStmt.java
@@ -27,7 +27,7 @@ import org.apache.doris.qe.ConnectContext;
import com.google.common.base.Joiner;
-public class DropFunctionStmt extends DdlStmt {
+public class DropFunctionStmt extends DdlStmt implements NotFallbackInParser {
private final boolean ifExists;
private final FunctionName functionName;
private final FunctionArgsDef argsDef;
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropMaterializedViewStmt.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropMaterializedViewStmt.java
index 28db2575277..0b9df72ed6d 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropMaterializedViewStmt.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropMaterializedViewStmt.java
@@ -37,7 +37,7 @@ import com.google.common.base.Strings;
* db_name: The name of db to which materialized view belongs.
* table_name: The name of table to which materialized view belongs.
*/
-public class DropMaterializedViewStmt extends DdlStmt {
+public class DropMaterializedViewStmt extends DdlStmt implements
NotFallbackInParser {
private String mvName;
private TableName tableName;
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropPolicyStmt.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropPolicyStmt.java
index 85560a08f0d..6a4514f43bf 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropPolicyStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropPolicyStmt.java
@@ -35,7 +35,7 @@ import org.apache.commons.lang3.StringUtils;
* DROP [ROW] POLICY [IF EXISTS] test_row_policy ON test_table [FOR user|ROLE
role]
**/
@AllArgsConstructor
-public class DropPolicyStmt extends DdlStmt {
+public class DropPolicyStmt extends DdlStmt implements NotFallbackInParser {
@Getter
private final PolicyTypeEnum type;
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropRepositoryStmt.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropRepositoryStmt.java
index 036d2b606d3..2375c5181b8 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropRepositoryStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropRepositoryStmt.java
@@ -24,7 +24,7 @@ import org.apache.doris.common.UserException;
import org.apache.doris.mysql.privilege.PrivPredicate;
import org.apache.doris.qe.ConnectContext;
-public class DropRepositoryStmt extends DdlStmt {
+public class DropRepositoryStmt extends DdlStmt implements NotFallbackInParser
{
private String repoName;
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropResourceStmt.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropResourceStmt.java
index 10744acceec..9f7709bc3bd 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropResourceStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropResourceStmt.java
@@ -26,7 +26,7 @@ import org.apache.doris.mysql.privilege.PrivPredicate;
import org.apache.doris.qe.ConnectContext;
// DROP RESOURCE resource_name
-public class DropResourceStmt extends DdlStmt {
+public class DropResourceStmt extends DdlStmt implements NotFallbackInParser {
private boolean ifExists;
private String resourceName;
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropRoleStmt.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropRoleStmt.java
index e27dc4705ea..db9d9b5a2e1 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropRoleStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropRoleStmt.java
@@ -27,7 +27,7 @@ import org.apache.doris.common.UserException;
import org.apache.doris.mysql.privilege.PrivPredicate;
import org.apache.doris.qe.ConnectContext;
-public class DropRoleStmt extends DdlStmt {
+public class DropRoleStmt extends DdlStmt implements NotFallbackInParser {
private boolean ifExists;
private String role;
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropSqlBlockRuleStmt.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropSqlBlockRuleStmt.java
index 11dccab6577..90e4eefc653 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropSqlBlockRuleStmt.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropSqlBlockRuleStmt.java
@@ -30,7 +30,7 @@ import lombok.Getter;
import java.util.List;
@Getter
-public class DropSqlBlockRuleStmt extends DdlStmt {
+public class DropSqlBlockRuleStmt extends DdlStmt implements
NotFallbackInParser {
private boolean ifExists;
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropStageStmt.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropStageStmt.java
index 35550c5c6cd..6f9a60db8e4 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropStageStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropStageStmt.java
@@ -28,7 +28,7 @@ import lombok.Getter;
* DROP STAGE [IF EXISTS] stage_name
**/
@AllArgsConstructor
-public class DropStageStmt extends DdlStmt {
+public class DropStageStmt extends DdlStmt implements NotFallbackInParser {
@Getter
private final boolean ifExists;
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropStatsStmt.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropStatsStmt.java
index 3689af25cda..39af28fc21f 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropStatsStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropStatsStmt.java
@@ -42,7 +42,7 @@ import java.util.Set;
* syntax:
* DROP [EXPIRED] STATS [TableName [PARTITIONS(partitionNames)]];
*/
-public class DropStatsStmt extends DdlStmt {
+public class DropStatsStmt extends DdlStmt implements NotFallbackInParser {
public static final int MAX_IN_ELEMENT_TO_DELETE = 100;
public final boolean dropExpired;
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropTableStmt.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropTableStmt.java
index d9a266fdf11..5e06fce75ee 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropTableStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropTableStmt.java
@@ -28,7 +28,7 @@ import org.apache.doris.qe.ConnectContext;
import com.google.common.base.Strings;
// DROP TABLE
-public class DropTableStmt extends DdlStmt {
+public class DropTableStmt extends DdlStmt implements NotFallbackInParser {
private boolean ifExists;
private final TableName tableName;
private final boolean isView;
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropWorkloadGroupStmt.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropWorkloadGroupStmt.java
index 1137224c12e..e4e3055f128 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropWorkloadGroupStmt.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropWorkloadGroupStmt.java
@@ -25,7 +25,7 @@ import org.apache.doris.common.UserException;
import org.apache.doris.mysql.privilege.PrivPredicate;
import org.apache.doris.qe.ConnectContext;
-public class DropWorkloadGroupStmt extends DdlStmt {
+public class DropWorkloadGroupStmt extends DdlStmt implements
NotFallbackInParser {
private boolean ifExists;
private String workloadGroupName;
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropWorkloadSchedPolicyStmt.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropWorkloadSchedPolicyStmt.java
index fae534f51f6..4f6a4945f58 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropWorkloadSchedPolicyStmt.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropWorkloadSchedPolicyStmt.java
@@ -25,7 +25,7 @@ import org.apache.doris.common.UserException;
import org.apache.doris.mysql.privilege.PrivPredicate;
import org.apache.doris.qe.ConnectContext;
-public class DropWorkloadSchedPolicyStmt extends DdlStmt {
+public class DropWorkloadSchedPolicyStmt extends DdlStmt implements
NotFallbackInParser {
private boolean ifExists;
private String policyName;
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 277c00aa00a..92aa6d4d774 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
@@ -813,7 +813,11 @@ public class LogicalPlanBuilder extends
DorisParserBaseVisitor<Object> {
}
@Override
- public DropMTMVCommand visitDropMTMV(DropMTMVContext ctx) {
+ public Command visitDropMTMV(DropMTMVContext ctx) {
+ if (ctx.tableName != null) {
+ // TODO support drop sync mv
+ return new UnsupportedCommand();
+ }
List<String> nameParts = visitMultipartIdentifier(ctx.mvName);
return new DropMTMVCommand(new DropMTMVInfo(new
TableNameInfo(nameParts), ctx.EXISTS() != null));
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]