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/01/19 03:25:23 UTC

[shardingsphere] branch master updated: [SQL Definition Collation][Oracle]Collate the SQL definition of ROLLBACK (#9056)

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 643dbc0  [SQL Definition Collation][Oracle]Collate the SQL definition of ROLLBACK (#9056)
643dbc0 is described below

commit 643dbc02341a7a065ab91f6d8c739a1cf026dafc
Author: Thanoshan MV <48...@users.noreply.github.com>
AuthorDate: Tue Jan 19 08:54:43 2021 +0530

    [SQL Definition Collation][Oracle]Collate the SQL definition of ROLLBACK (#9056)
    
    * add ROLLBACK definition
    
    * refactor: add ROLLBACK definition
    
    * refactor: keep only one empty line
    
    * add SQL case
---
 .../src/main/antlr4/imports/oracle/BaseRule.g4                 |  4 ++++
 .../src/main/antlr4/imports/oracle/OracleKeyword.g4            |  4 ++++
 .../src/main/antlr4/imports/oracle/TCLStatement.g4             | 10 +++++++---
 .../src/main/resources/case/tcl/rollback.xml                   |  1 +
 .../src/main/resources/sql/supported/tcl/tcl.xml               |  1 +
 5 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/BaseRule.g4 b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/BaseRule.g4
index 275057b..cd995e1 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/BaseRule.g4
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/BaseRule.g4
@@ -119,6 +119,10 @@ indexName
     : identifier
     ;
 
+savepointName
+    : identifier
+    ;
+    
 owner
     : identifier
     ;
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 cf755fe..bb38583 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
@@ -814,3 +814,7 @@ PARENT
 IDENTIFIER
     : I D E N T I F I E R
     ;
+
+WORK
+    : W O R K
+    ;
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 ea2897d..9301e7f 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
@@ -17,7 +17,7 @@
 
 grammar TCLStatement;
 
-import Symbol, Keyword, OracleKeyword, Literals;
+import Symbol, Keyword, OracleKeyword, Literals, BaseRule;
 
 setTransaction
     : SET TRANSACTION
@@ -28,9 +28,13 @@ commit
     ;
 
 rollback
-    : ROLLBACK
+    : ROLLBACK (WORK)? savepointClause
+    ;
+
+savepointClause
+    : (TO (SAVEPOINT)? savepointName | FORCE stringLiterals)?
     ;
 
 savepoint
-    : SAVEPOINT 
+    : SAVEPOINT savepointName
     ;
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/tcl/rollback.xml b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/tcl/rollback.xml
index 887d0f8..b311f36 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/tcl/rollback.xml
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/tcl/rollback.xml
@@ -23,4 +23,5 @@
     <rollback sql-case-id="rollbackForce" />
     <rollback sql-case-id="rollbackPrepare" />
     <rollback sql-case-id="rollback_in_pg" />
+    <rollback sql-case-id="rollbackWorkForce" />
 </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 8d3510f..bd7fa4a 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
@@ -25,6 +25,7 @@
     <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" />
+    <sql-case id="rollbackWorkForce" value="ROLLBACK WORK FORCE 'string1'" db-types="Oracle" />
     <sql-case id="savepoint" value="SAVEPOINT savepoint1" db-types="MySQL,PostgreSQL" />
     <sql-case id="begin" value="BEGIN" db-types="MySQL,PostgreSQL" />
     <sql-case id="beginTransaction" value="BEGIN TRANSACTION" db-types="SQLServer,PostgreSQL" />