davidm-db commented on code in PR #47272:
URL: https://github.com/apache/spark/pull/47272#discussion_r1679616760


##########
sql/api/src/main/antlr4/org/apache/spark/sql/catalyst/parser/SqlBaseParser.g4:
##########
@@ -251,26 +258,29 @@ statement
     | (MSCK)? REPAIR TABLE identifierReference
         (option=(ADD|DROP|SYNC) PARTITIONS)?                           
#repairTable
     | op=(ADD | LIST) identifier .*?                                   
#manageResource
-    | SET COLLATION collationName=identifier                           
#setCollation
-    | SET ROLE .*?                                                     
#failNativeCommand
+    | CREATE INDEX (IF errorCapturingNot EXISTS)? identifier ON TABLE?
+        identifierReference (USING indexType=identifier)?
+        LEFT_PAREN columns=multipartIdentifierPropertyList RIGHT_PAREN
+        (OPTIONS options=propertyList)?                                
#createIndex
+    | DROP INDEX (IF EXISTS)? identifier ON TABLE? identifierReference 
#dropIndex
+    | unsupportedHiveNativeCommands .*?                                
#failNativeCommand
+    ;
+
+setResetStatement
+    : SET COLLATION collationName=identifier                           
#setCollation
+    | SET ROLE .*?                                                     
#failSetRole
     | SET TIME ZONE interval                                           
#setTimeZone
     | SET TIME ZONE timezone                                           
#setTimeZone
     | SET TIME ZONE .*?                                                
#setTimeZone
     | SET (VARIABLE | VAR) assignmentList                              
#setVariable
     | SET (VARIABLE | VAR) LEFT_PAREN multipartIdentifierList RIGHT_PAREN EQ
-          LEFT_PAREN query RIGHT_PAREN                                 
#setVariable
+        LEFT_PAREN query RIGHT_PAREN                                   
#setVariable

Review Comment:
   Reasons for "duplication" (quotes because it's not exactly the same):
   - In standalone SQL statements, VAR or VARIABLE is mandatory
   - In SQL scripts, VAR or VARIABLE is not mandatory
   - In SQL scripts, we still want to allow VAR or VARIABLE to be "compatible" 
with standalone SQL statements
   
   This means that we can either:
   - Have one parser rule for set variable statements and reuse it, but handle 
this logic (and potential syntax exceptions) in the visitor functions
   - Have this handled in the grammar (one rule has ? where VAR or VARIABLE is 
not mandatory, the other doesn't)
   
   We decided on the second approach, but can change to the first one if you 
think so.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org
For additional commands, e-mail: reviews-h...@spark.apache.org

Reply via email to