You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2021/02/01 02:43:14 UTC

[shardingsphere] branch master updated: Add SQL definition for `COMMIT` of Oracle database (#9178)

This is an automated email from the ASF dual-hosted git repository.

panjuan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new 0ff54bc  Add SQL definition for `COMMIT` of Oracle database (#9178)
0ff54bc is described below

commit 0ff54bcf474e7524d6fd765b8c4befae601665df
Author: Thanoshan MV <48...@users.noreply.github.com>
AuthorDate: Mon Feb 1 08:12:41 2021 +0530

    Add SQL definition for `COMMIT` of Oracle database (#9178)
    
    * add SQL definition for COMMIT
    
    * remove unnecessary parenthesis
    
    * remove empty lines
    
    * change COMMIT definition
---
 .../src/main/antlr4/imports/oracle/OracleKeyword.g4    | 12 ++++++++++++
 .../src/main/antlr4/imports/oracle/TCLStatement.g4     | 18 +++++++++++++++---
 .../src/main/resources/case/tcl/commit.xml             |  4 ++++
 .../src/main/resources/sql/supported/tcl/tcl.xml       |  4 ++++
 4 files changed, 35 insertions(+), 3 deletions(-)

diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/OracleKeyword.g4 b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/OracleKeyword.g4
index 711cc42..9f44d33 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/OracleKeyword.g4
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/OracleKeyword.g4
@@ -826,3 +826,15 @@ CONTAINER_MAP
 CONTAINERS_DEFAULT
     : C O N T A I N E R S UL_ D E F A U L T
     ;
+
+WAIT
+    : W A I T
+    ;
+
+NOWAIT
+    : N O W A I T
+    ;
+
+BATCH
+    : B A T C H
+    ;
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/TCLStatement.g4 b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/TCLStatement.g4
index 9301e7f..7bb3ce4 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/TCLStatement.g4
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/TCLStatement.g4
@@ -24,15 +24,27 @@ setTransaction
     ;
 
 commit
-    : COMMIT
+    : COMMIT WORK? ((commentClause? writeClause?) | forceClause)? 
+    ;
+
+commentClause
+    : COMMENT stringLiterals
+    ;
+
+writeClause
+    : WRITE (WAIT | NOWAIT)? (IMMEDIATE | BATCH)?
+    ;
+
+forceClause
+    : FORCE stringLiterals (COMMA_ numberLiterals)?
     ;
 
 rollback
-    : ROLLBACK (WORK)? savepointClause
+    : ROLLBACK WORK? savepointClause
     ;
 
 savepointClause
-    : (TO (SAVEPOINT)? savepointName | FORCE stringLiterals)?
+    : (TO SAVEPOINT? savepointName | FORCE stringLiterals)?
     ;
 
 savepoint
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/tcl/commit.xml b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/tcl/commit.xml
index 94a93c9..8a6c517 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/tcl/commit.xml
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/tcl/commit.xml
@@ -23,4 +23,8 @@
     <commit sql-case-id="commitForce" />
     <commit sql-case-id="commitPrepare" />
     <commit sql-case-id="commit_in_pg" />
+    <commit sql-case-id="commitWorkWithComment" />
+    <commit sql-case-id="commitWork" />
+    <commit sql-case-id="commitWriteBatch" />
+    <commit sql-case-id="commitWorkForce" />
 </sql-parser-test-cases>
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/tcl/tcl.xml b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/tcl/tcl.xml
index bd7fa4a..223c1d2 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/tcl/tcl.xml
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/tcl/tcl.xml
@@ -21,7 +21,11 @@
     <sql-case id="commit" value="COMMIT" db-types="MySQL,Oracle,SQLServer,PostgreSQL" />
     <sql-case id="commitWithName" value="COMMIT TRANSACTION transaction1" db-types="SQLServer" />
     <sql-case id="commitWithComment" value="COMMIT COMMENT 'comment1'" db-types="Oracle" />
+    <sql-case id="commitWorkWithComment" value="COMMIT WORK COMMENT 'comment1'" db-types="Oracle" />
+    <sql-case id="commitWork" value="COMMIT WORK" db-types="Oracle" />
+    <sql-case id="commitWriteBatch" value="COMMIT WRITE BATCH" db-types="Oracle" />
     <sql-case id="commitForce" value="COMMIT FORCE 'transaction1'" db-types="Oracle" />
+    <sql-case id="commitWorkForce" value="COMMIT WORK FORCE '22.14.67'" db-types="Oracle" />
     <sql-case id="rollback" value="ROLLBACK" db-types="MySQL,Oracle,PostgreSQL,SQLServer" />
     <sql-case id="rollbackWithName" value="ROLLBACK TRANSACTION transaction1" db-types="SQLServer" />
     <sql-case id="rollbackForce" value="ROLLBACK FORCE 'transaction1'" db-types="Oracle" />