You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by lu...@apache.org on 2020/09/16 06:40:10 UTC
[shardingsphere] branch master updated: add TCL grammer in pgSQL
(#7453)
This is an automated email from the ASF dual-hosted git repository.
lujingshang 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 18177f0 add TCL grammer in pgSQL (#7453)
18177f0 is described below
commit 18177f0694b0f0092f9e2550449f4fe3367527fc
Author: cao biao <10...@qq.com>
AuthorDate: Wed Sep 16 14:39:53 2020 +0800
add TCL grammer in pgSQL (#7453)
---
.../main/antlr4/imports/postgresql/DMLStatement.g4 | 11 ------
.../antlr4/imports/postgresql/StoreProcedure.g4 | 11 +++++-
.../main/antlr4/imports/postgresql/TCLStatement.g4 | 43 ++++++++++++++++++----
.../main/resources/case/tcl/begin-transaction.xml | 1 +
.../src/main/resources/case/tcl/commit.xml | 1 +
.../src/main/resources/case/tcl/rollback.xml | 1 +
.../src/main/resources/sql/supported/tcl/tcl.xml | 15 +++++---
7 files changed, 57 insertions(+), 26 deletions(-)
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/antlr4/imports/postgresql/DMLStatement.g4 b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/antlr4/imports/postgresql/DMLStatement.g4
index 854f68a..d5cfcfe 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/antlr4/imports/postgresql/DMLStatement.g4
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/antlr4/imports/postgresql/DMLStatement.g4
@@ -433,17 +433,6 @@ havingClause
: HAVING aExpr
;
-call
- : CALL funcName LP_ callClauses? RP_
- ;
-
-callClauses
- : (ALL | DISTINCT)? funcArgList sortClause?
- | VARIADIC funcArgExpr sortClause
- | funcArgList COMMA_ VARIADIC funcArgExpr sortClause
- | ASTERISK_
- ;
-
doStatement
: DO dostmtOptList
;
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/antlr4/imports/postgresql/StoreProcedure.g4 b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/antlr4/imports/postgresql/StoreProcedure.g4
index 685a33e..3af2d74 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/antlr4/imports/postgresql/StoreProcedure.g4
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/antlr4/imports/postgresql/StoreProcedure.g4
@@ -17,8 +17,15 @@
grammar StoreProcedure;
-import Keyword;
+import Keyword, BaseRule;
call
- : CALL
+ : CALL funcName LP_ callClauses? RP_
+ ;
+
+callClauses
+ : (ALL | DISTINCT)? funcArgList sortClause?
+ | VARIADIC funcArgExpr sortClause
+ | funcArgList COMMA_ VARIADIC funcArgExpr sortClause
+ | ASTERISK_
;
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/antlr4/imports/postgresql/TCLStatement.g4 b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/antlr4/imports/postgresql/TCLStatement.g4
index 3b7cb07..5285c87 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/antlr4/imports/postgresql/TCLStatement.g4
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/antlr4/imports/postgresql/TCLStatement.g4
@@ -25,21 +25,50 @@ setTransaction
;
beginTransaction
- : BEGIN | START TRANSACTION
+ : BEGIN (WORK | TRANSACTION)? transactionModeList?
;
commit
- : COMMIT
- ;
-
-rollback
- : ROLLBACK
+ : COMMIT (WORK | TRANSACTION)? (AND (NO)? CHAIN)?
;
savepoint
- : SAVEPOINT
+ : SAVEPOINT colId
;
abort
: ABORT (WORK | TRANSACTION)? (AND (NO)? CHAIN)?
;
+
+startTransaction
+ : START TRANSACTION transactionModeList?
+ ;
+
+end
+ : END (WORK | TRANSACTION)? (AND (NO)? CHAIN)?
+ ;
+
+rollback
+ : ROLLBACK (WORK | TRANSACTION)? (AND (NO)? CHAIN)?
+ ;
+
+releaseSavepoint
+ : RELEASE SAVEPOINT? colId
+ ;
+
+rollbackToSavepoint
+ : ROLLBACK (WORK | TRANSACTION)? TO SAVEPOINT? colId
+ ;
+
+prepareTransaction
+ : PREPARE TRANSACTION STRING_
+ ;
+
+commitPrepared
+ : COMMIT PREPARED STRING_
+ ;
+
+rollbackPrepared
+ : ROLLBACK PREPARED STRING_
+ ;
+
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/tcl/begin-transaction.xml b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/tcl/begin-transaction.xml
index dc6176f..1aa6df5 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/tcl/begin-transaction.xml
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/tcl/begin-transaction.xml
@@ -22,4 +22,5 @@
<begin-transaction sql-case-id="beginWithName" />
<begin-transaction sql-case-id="beginReadCommitted" />
<begin-transaction sql-case-id="beginReadOnly" />
+ <begin-transaction sql-case-id="begin_with_transaction_mode" />
</sql-parser-test-cases>
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 f07c9b9..94a93c9 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
@@ -22,4 +22,5 @@
<commit sql-case-id="commitWithComment" />
<commit sql-case-id="commitForce" />
<commit sql-case-id="commitPrepare" />
+ <commit sql-case-id="commit_in_pg" />
</sql-parser-test-cases>
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 0d5a11a..887d0f8 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
@@ -22,4 +22,5 @@
<rollback sql-case-id="rollbackToSavepoint" />
<rollback sql-case-id="rollbackForce" />
<rollback sql-case-id="rollbackPrepare" />
+ <rollback sql-case-id="rollback_in_pg" />
</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 c75a3ca..61e8eb4 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
@@ -18,16 +18,16 @@
<sql-cases db-types="MySQL">
<sql-case id="setTransaction" value="SET TRANSACTION ISOLATION LEVEL REPEATABLE READ" db-types="MySQL,Oracle,PostgreSQL,SQLServer" />
- <sql-case id="commit" value="COMMIT" db-types="MySQL,Oracle,SQLServer" />
+ <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="commitForce" value="COMMIT FORCE 'transaction1'" 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" />
- <sql-case id="savepoint" value="SAVEPOINT savepoint1" db-types="MySQL" />
- <sql-case id="begin" value="BEGIN" db-types="MySQL" />
- <sql-case id="beginTransaction" value="BEGIN TRANSACTION" db-types="SQLServer" />
+ <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" />
<sql-case id="beginWithName" value="BEGIN TRANSACTION transaction1" db-types="SQLServer" />
<sql-case id="setAutoCommitOn" value="SET AUTOCOMMIT = 1" db-types="MySQL" />
<sql-case id="setAutoCommitOnWithScope" value="SET @@SESSION.AUTOCOMMIT = ON" db-types="MySQL" />
@@ -41,8 +41,11 @@
<sql-case id="setTransactionWithName" value="SET TRANSACTION NAME 'comment1'" db-types="Oracle,SQLServer" />
<sql-case id="beginReadCommitted" value="BEGIN ISOLATION LEVEL READ COMMITTED" db-types="PostgreSQL" />
<sql-case id="beginReadOnly" value="BEGIN READ ONLY" db-types="PostgreSQL" />
- <sql-case id="commitPrepare" value="COMMIT PREPARED transaction1" db-types="PostgreSQL" />
- <sql-case id="rollbackPrepare" value="ROLLBACK PREPARED transaction1" db-types="PostgreSQL" />
+ <sql-case id="commitPrepare" value="COMMIT PREPARED 'transaction1'" db-types="PostgreSQL" />
+ <sql-case id="rollbackPrepare" value="ROLLBACK PREPARED 'transaction1'" db-types="PostgreSQL" />
<sql-case id="setTransactionSnapshot" value="SET TRANSACTION SNAPSHOT 'snapshot1'" db-types="PostgreSQL" />
<sql-case id="setSessionTransaction" value="SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL READ COMMITTED" db-types="PostgreSQL" />
+ <sql-case id="commit_in_pg" value="COMMIT TRANSACTION AND NO CHAIN" db-types="PostgreSQL" />
+ <sql-case id="rollback_in_pg" value="ROLLBACK TRANSACTION AND CHAIN" db-types="PostgreSQL" />
+ <sql-case id="begin_with_transaction_mode" value="BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED" db-types="PostgreSQL" />
</sql-cases>