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 <[email protected]>
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>