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 d86a63344fc [reorg](Nereids) reorg parser file for easy add new 
statement (#37310)
d86a63344fc is described below

commit d86a63344fc5280a933388d683cf00a55b7f9202
Author: morrySnow <[email protected]>
AuthorDate: Fri Jul 5 22:33:00 2024 +0800

    [reorg](Nereids) reorg parser file for easy add new statement (#37310)
    
    Classify the statements and distinguish between supportive and
    non-supportive ones.
---
 .../antlr4/org/apache/doris/nereids/DorisParser.g4 | 141 +++++++++++++--------
 1 file changed, 88 insertions(+), 53 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 51184ac09fe..7e1c98b5cb2 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
@@ -43,32 +43,55 @@ statement
     ;
 
 statementBase
-    : explain? query outFileClause?                                    
#statementDefault
-    | CREATE ROW POLICY (IF NOT EXISTS)? name=identifier
-        ON table=multipartIdentifier
-        AS type=(RESTRICTIVE | PERMISSIVE)
-        TO (user=userIdentify | ROLE roleName=identifier)
-        USING LEFT_PAREN booleanExpression RIGHT_PAREN                 
#createRowPolicy
-    | CREATE (EXTERNAL)? TABLE (IF NOT EXISTS)? name=multipartIdentifier
-        ((ctasCols=identifierList)? | (LEFT_PAREN columnDefs (COMMA 
indexDefs)? COMMA? RIGHT_PAREN))
-        (ENGINE EQ engine=identifier)?
-        ((AGGREGATE | UNIQUE | DUPLICATE) KEY keys=identifierList (CLUSTER BY 
clusterKeys=identifierList)?)?
+    : explain? query outFileClause?     #statementDefault
+    | supportedDmlStatement             #supportedDmlStatementAlias
+    | supportedCreateStatement          #supportedCreateStatementAlias
+    | supportedAlterStatement           #supportedAlterStatementAlias
+    | materailizedViewStatement         #materailizedViewStatementAlias
+    | constraintStatement               #constraintStatementAlias
+    | supportedDropStatement            #supportedDropStatementAlias
+    | unsupportedStatement              #unsupported
+    ;
+
+unsupportedStatement
+    : unsupportedSetStatement
+    | unsupportedUseStatement
+    ;
+
+materailizedViewStatement
+    : CREATE MATERIALIZED VIEW (IF NOT EXISTS)? mvName=multipartIdentifier
+        (LEFT_PAREN cols=simpleColumnDefs RIGHT_PAREN)? buildMode?
+        (REFRESH refreshMethod? refreshTrigger?)?
+        ((DUPLICATE)? KEY keys=identifierList)?
         (COMMENT STRING_LITERAL)?
-        (partition=partitionTable)?
-        (DISTRIBUTED BY (HASH hashKeys=identifierList | RANDOM) (BUCKETS 
(INTEGER_VALUE | autoBucket=AUTO))?)?
-        (ROLLUP LEFT_PAREN rollupDefs RIGHT_PAREN)?
-        properties=propertyClause?
-        (BROKER extProperties=propertyClause)?
-        (AS query)?                                                    
#createTable
-    | CREATE VIEW (IF NOT EXISTS)? name=multipartIdentifier
-        (LEFT_PAREN cols=simpleColumnDefs RIGHT_PAREN)?
-        (COMMENT STRING_LITERAL)? AS query                                
#createView
-    | ALTER VIEW name=multipartIdentifier (LEFT_PAREN cols=simpleColumnDefs 
RIGHT_PAREN)?
-        AS query                                                          
#alterView
-    | CREATE (EXTERNAL)? TABLE (IF NOT EXISTS)? name=multipartIdentifier
-      LIKE existedTable=multipartIdentifier
-      (WITH ROLLUP (rollupNames=identifierList)?)?           #createTableLike
-    | explain? cte? INSERT (INTO | OVERWRITE TABLE)
+        (PARTITION BY LEFT_PAREN mvPartition RIGHT_PAREN)?
+        (DISTRIBUTED BY (HASH hashKeys=identifierList | RANDOM)
+        (BUCKETS (INTEGER_VALUE | AUTO))?)?
+        propertyClause?
+        AS query                                                               
                 #createMTMV
+    | REFRESH MATERIALIZED VIEW mvName=multipartIdentifier (partitionSpec | 
COMPLETE | AUTO)    #refreshMTMV
+    | ALTER MATERIALIZED VIEW mvName=multipartIdentifier ((RENAME 
newName=identifier)
+        | (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
+    | 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
+    | SHOW CREATE MATERIALIZED VIEW mvName=multipartIdentifier                 
                 #showCreateMTMV
+    ;
+
+constraintStatement
+    : ALTER TABLE table=multipartIdentifier
+        ADD CONSTRAINT constraintName=errorCapturingIdentifier
+        constraint                                                        
#addConstraint
+    | ALTER TABLE table=multipartIdentifier
+        DROP CONSTRAINT constraintName=errorCapturingIdentifier           
#dropConstraint
+    | SHOW CONSTRAINTS FROM table=multipartIdentifier                     
#showConstraint
+    ;
+
+supportedDmlStatement
+    : explain? cte? INSERT (INTO | OVERWRITE TABLE)
         (tableName=multipartIdentifier | DORIS_INTERNAL_TABLE_ID LEFT_PAREN 
tableId=INTEGER_VALUE RIGHT_PAREN)
         partitionSpec?  // partition define
         (WITH LABEL labelName=identifier)? cols=identifierList?  // label and 
columns define
@@ -96,36 +119,45 @@ statementBase
         TO filePath=STRING_LITERAL
         (propertyClause)?
         (withRemoteStorageSystem)?                                     #export
-    | CREATE MATERIALIZED VIEW (IF NOT EXISTS)? mvName=multipartIdentifier
-        (LEFT_PAREN cols=simpleColumnDefs RIGHT_PAREN)? buildMode?
-        (REFRESH refreshMethod? refreshTrigger?)?
-        ((DUPLICATE)? KEY keys=identifierList)?
+    ;
+
+supportedCreateStatement
+    : CREATE (EXTERNAL)? TABLE (IF NOT EXISTS)? name=multipartIdentifier
+        ((ctasCols=identifierList)? | (LEFT_PAREN columnDefs (COMMA 
indexDefs)? COMMA? RIGHT_PAREN))
+        (ENGINE EQ engine=identifier)?
+        ((AGGREGATE | UNIQUE | DUPLICATE) KEY keys=identifierList
+        (CLUSTER BY clusterKeys=identifierList)?)?
         (COMMENT STRING_LITERAL)?
-        (PARTITION BY LEFT_PAREN mvPartition RIGHT_PAREN)?
-        (DISTRIBUTED BY (HASH hashKeys=identifierList | RANDOM) (BUCKETS 
(INTEGER_VALUE | AUTO))?)?
-        propertyClause?
-        AS query                                                        
#createMTMV
-    | REFRESH MATERIALIZED VIEW mvName=multipartIdentifier (partitionSpec | 
COMPLETE | AUTO)      #refreshMTMV
-    | ALTER MATERIALIZED VIEW mvName=multipartIdentifier ((RENAME 
newName=identifier)
-       | (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
-    | 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
-    | SHOW CREATE MATERIALIZED VIEW mvName=multipartIdentifier #showCreateMTMV
-    | ALTER TABLE table=multipartIdentifier
-        ADD CONSTRAINT constraintName=errorCapturingIdentifier
-        constraint                                                        
#addConstraint
-    | ALTER TABLE table=multipartIdentifier
-        DROP CONSTRAINT constraintName=errorCapturingIdentifier           
#dropConstraint
-    | SHOW CONSTRAINTS FROM table=multipartIdentifier                     
#showConstraint
-    | DROP CATALOG RECYCLE BIN WHERE idType=STRING_LITERAL EQ id=INTEGER_VALUE 
#dropCatalogRecycleBin
-    | unsupportedStatement                                                
#unsupported
+        (partition=partitionTable)?
+        (DISTRIBUTED BY (HASH hashKeys=identifierList | RANDOM)
+        (BUCKETS (INTEGER_VALUE | autoBucket=AUTO))?)?
+        (ROLLUP LEFT_PAREN rollupDefs RIGHT_PAREN)?
+        properties=propertyClause?
+        (BROKER extProperties=propertyClause)?
+        (AS query)?                                                       
#createTable
+    | CREATE VIEW (IF NOT EXISTS)? name=multipartIdentifier
+        (LEFT_PAREN cols=simpleColumnDefs RIGHT_PAREN)?
+        (COMMENT STRING_LITERAL)? AS query                                
#createView
+    | CREATE (EXTERNAL)? TABLE (IF NOT EXISTS)? name=multipartIdentifier
+        LIKE existedTable=multipartIdentifier
+        (WITH ROLLUP (rollupNames=identifierList)?)?                      
#createTableLike
+    | CREATE ROW POLICY (IF NOT EXISTS)? name=identifier
+        ON table=multipartIdentifier
+        AS type=(RESTRICTIVE | PERMISSIVE)
+        TO (user=userIdentify | ROLE roleName=identifier)
+        USING LEFT_PAREN booleanExpression RIGHT_PAREN                 
#createRowPolicy
     ;
 
-unsupportedStatement
+supportedAlterStatement
+    : ALTER VIEW name=multipartIdentifier (LEFT_PAREN cols=simpleColumnDefs 
RIGHT_PAREN)?
+        AS query                                                          
#alterView
+    ;
+
+supportedDropStatement
+    : DROP CATALOG RECYCLE BIN WHERE idType=STRING_LITERAL EQ id=INTEGER_VALUE 
#dropCatalogRecycleBin
+    ;
+
+unsupportedSetStatement
     : SET identifier AS DEFAULT STORAGE VAULT                              
#setDefaultStorageVault
     | SET PROPERTY (FOR user=identifierOrText)? propertyItemList           
#setUserProperties
     | SET (GLOBAL | LOCAL | SESSION)? identifier EQ (expression | DEFAULT) 
#setSystemVariableWithType
@@ -140,7 +172,10 @@ unsupportedStatement
     | SET NAMES (charsetName=identifierOrText | DEFAULT) (COLLATE 
collateName=identifierOrText | DEFAULT)?    #setCollate
     | SET PASSWORD (FOR userIdentify)? EQ (STRING_LITERAL | (PASSWORD 
LEFT_PAREN STRING_LITERAL RIGHT_PAREN)) #setPassword
     | SET LDAP_ADMIN_PASSWORD EQ (STRING_LITERAL | (PASSWORD LEFT_PAREN 
STRING_LITERAL RIGHT_PAREN))          #setLdapAdminPassword
-    | USE (catalog=identifier DOT)? database=identifier                        
      #useDatabase
+    ;
+
+unsupportedUseStatement
+    : USE (catalog=identifier DOT)? database=identifier                        
      #useDatabase
     | USE ((catalog=identifier DOT)? database=identifier)? ATSIGN 
cluster=identifier #useCloudCluster
     ;
 


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

Reply via email to