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 <101034200+morrys...@users.noreply.github.com>
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: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to