This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang 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 963be68fa1f Support parsing MySQL stored procedure syntax part5
(#35441)
963be68fa1f is described below
commit 963be68fa1f4b3be2b7d3d248669642245f4d9f7
Author: Chakkk <[email protected]>
AuthorDate: Mon May 19 17:33:40 2025 +0800
Support parsing MySQL stored procedure syntax part5 (#35441)
* Support parsing MySQL stored procedure syntax part5
* Update release notes
---
RELEASE-NOTES.md | 2 +-
.../src/main/antlr4/imports/mysql/DDLStatement.g4 | 2 +-
.../parser/src/main/resources/case/dcl/revoke.xml | 1 +
.../main/resources/case/ddl/create-procedure.xml | 31 ++++++++++++++++++++++
.../resources/sql/supported/dcl/revoke-user.xml | 1 +
.../sql/supported/ddl/create-procedure.xml | 4 +++
6 files changed, 39 insertions(+), 2 deletions(-)
diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md
index 7e51f81aaef..e46eaf2ef7b 100644
--- a/RELEASE-NOTES.md
+++ b/RELEASE-NOTES.md
@@ -34,7 +34,7 @@
1. DistSQL: Add job sharding nodes to the result set of `SHOW MIGRATION LIST`
- [#35053](https://github.com/apache/shardingsphere/pull/35053)
1. SQL Parser: Enhance combineType in Oracle to support EXCEPT ALL and
INTERSECT ALL - [#35099](https://github.com/apache/shardingsphere/pull/35099)
1. DistSQL: Add InUsedStorageUnitRetriever for single rule -
[#35131](https://github.com/apache/shardingsphere/pull/35131)
-1. SQL Parser: Support parsing MySQL stored procedure syntax -
[#35137](https://github.com/apache/shardingsphere/pull/35137)
+1. SQL Parser: Support parsing MySQL stored procedure syntax -
[#35137](https://github.com/apache/shardingsphere/pull/35137),
[#35441](https://github.com/apache/shardingsphere/pull/35441)
1. SQL Parser: Support Oracle SQL parsing V1 keywords as identifiers -
[#35373](https://github.com/apache/shardingsphere/pull/35373)
1. SQL Parser: Support Oracle in literal sql parsing -
[#35384](https://github.com/apache/shardingsphere/pull/35384)
1. SQL Bind: Support explain statement sql bind -
[#35439](https://github.com/apache/shardingsphere/pull/35439)
diff --git
a/parser/sql/dialect/mysql/src/main/antlr4/imports/mysql/DDLStatement.g4
b/parser/sql/dialect/mysql/src/main/antlr4/imports/mysql/DDLStatement.g4
index ec90b6628f6..fd56fa6146d 100644
--- a/parser/sql/dialect/mysql/src/main/antlr4/imports/mysql/DDLStatement.g4
+++ b/parser/sql/dialect/mysql/src/main/antlr4/imports/mysql/DDLStatement.g4
@@ -682,7 +682,7 @@ validStatement
| insert | replace | update | delete | select | call
| createView | prepare | executeStmt | commit | deallocate
| setVariable | beginStatement | declareStatement | flowControlStatement |
cursorStatement | conditionHandlingStatement
- | setStatement | showStatement) SEMI_?
+ | setStatement | showStatement | showCreateTable | startTransaction |
rollback | commit | show) SEMI_?
;
showStatement
diff --git a/test/it/parser/src/main/resources/case/dcl/revoke.xml
b/test/it/parser/src/main/resources/case/dcl/revoke.xml
index 3d430aa2e87..edd0813e6ae 100644
--- a/test/it/parser/src/main/resources/case/dcl/revoke.xml
+++ b/test/it/parser/src/main/resources/case/dcl/revoke.xml
@@ -233,4 +233,5 @@
<revoke sql-case-id="revoke_alter_execute_on_procedure_from_role" />
<revoke sql-case-id="revoke_grant_option_on_procedure_from_user" />
<revoke sql-case-id="revoke_alter_execute_on_procedure_from_user" />
+ <revoke sql-case-id="revoke_grant_option_on_procedure_from_role" />
</sql-parser-test-cases>
diff --git a/test/it/parser/src/main/resources/case/ddl/create-procedure.xml
b/test/it/parser/src/main/resources/case/ddl/create-procedure.xml
index 558649c67cc..fa46f3075a8 100644
--- a/test/it/parser/src/main/resources/case/ddl/create-procedure.xml
+++ b/test/it/parser/src/main/resources/case/ddl/create-procedure.xml
@@ -91,4 +91,35 @@
</sql-statements>
</create-procedure>
<create-procedure sql-case-id="create_procedure_if_not_exists" />
+ <create-procedure sql-case-id="create_procedure_with_transaction">
+ <procedure-name name="proc1" />
+ <sql-statements>
+ <sql-statement start-index="30" stop-index="50"
statement-class-simple-name="MySQLStartTransactionStatement" />
+ <sql-statement start-index="52" stop-index="83"
statement-class-simple-name="MySQLCreateTableStatement" />
+ <sql-statement start-index="85" stop-index="93"
statement-class-simple-name="MySQLRollbackStatement" />
+ <sql-statement start-index="95" stop-index="115"
statement-class-simple-name="MySQLStartTransactionStatement" />
+ <sql-statement start-index="117" stop-index="148"
statement-class-simple-name="MySQLCreateTableStatement" />
+ <sql-statement start-index="150" stop-index="158"
statement-class-simple-name="MySQLCommitStatement" />
+ </sql-statements>
+ </create-procedure>
+ <create-procedure
sql-case-id="create_procedure_with_charset_parameters_and_insert">
+ <procedure-name name="bug18293" />
+ <sql-statements>
+ <sql-statement start-index="125" stop-index="172"
statement-class-simple-name="MySQLInsertStatement" />
+ </sql-statements>
+ </create-procedure>
+ <create-procedure
sql-case-id="create_procedure_with_create_table_and_show_create_table_schema">
+ <procedure-name name="p2" />
+ <sql-statements>
+ <sql-statement start-index="47" stop-index="90"
statement-class-simple-name="MySQLCreateTableStatement" />
+ <sql-statement start-index="92" stop-index="116"
statement-class-simple-name="MySQLShowCreateTableStatement" />
+ </sql-statements>
+ </create-procedure>
+ <create-procedure
sql-case-id="create_procedure_with_show_create_table_in_default_schema">
+ <procedure-name name="p1" />
+ <sql-statements>
+ <sql-statement start-index="33" stop-index="76"
statement-class-simple-name="MySQLCreateTableStatement" />
+ <sql-statement start-index="78" stop-index="102"
statement-class-simple-name="MySQLShowCreateTableStatement" />
+ </sql-statements>
+ </create-procedure>
</sql-parser-test-cases>
diff --git
a/test/it/parser/src/main/resources/sql/supported/dcl/revoke-user.xml
b/test/it/parser/src/main/resources/sql/supported/dcl/revoke-user.xml
index cf1329dc2c4..8dc854c1f85 100644
--- a/test/it/parser/src/main/resources/sql/supported/dcl/revoke-user.xml
+++ b/test/it/parser/src/main/resources/sql/supported/dcl/revoke-user.xml
@@ -130,4 +130,5 @@
<sql-case id="revoke_alter_execute_on_procedure_from_role" value="REVOKE
IF EXISTS ALTER ROUTINE, EXECUTE ON PROCEDURE rngp_db.rngp_proc FROM rngp_role"
db-types="MySQL" />
<sql-case id="revoke_grant_option_on_procedure_from_user" value="REVOKE IF
EXISTS GRANT OPTION ON PROCEDURE rngp_db.rngp_proc FROM rngp_user"
db-types="MySQL" />
<sql-case id="revoke_alter_execute_on_procedure_from_user" value="REVOKE
IF EXISTS ALTER ROUTINE, EXECUTE ON PROCEDURE rngp_db.rngp_proc FROM rngp_user"
db-types="MySQL" />
+ <sql-case id="revoke_grant_option_on_procedure_from_role" value="REVOKE IF
EXISTS GRANT OPTION ON PROCEDURE rngp_db.rngp_proc FROM rngp_role"
db-types="MySQL" />
</sql-cases>
diff --git
a/test/it/parser/src/main/resources/sql/supported/ddl/create-procedure.xml
b/test/it/parser/src/main/resources/sql/supported/ddl/create-procedure.xml
index 12975247024..2daaf507f8d 100644
--- a/test/it/parser/src/main/resources/sql/supported/ddl/create-procedure.xml
+++ b/test/it/parser/src/main/resources/sql/supported/ddl/create-procedure.xml
@@ -54,4 +54,8 @@
<sql-case id="create_procedure_with_transaction_read_only_and_isolation"
value="CREATE PROCEDURE p1() SET SESSION TRANSACTION READ ONLY, ISOLATION LEVEL
SERIALIZABLE" db-types="MySQL" />
<sql-case id="create_procedure_with_transaction_read_only" value="CREATE
PROCEDURE p1() SET SESSION TRANSACTION READ ONLY" db-types="MySQL" />
<sql-case id="create_procedure_if_not_exists" value="CREATE PROCEDURE IF
NOT EXISTS sp1() BEGIN END" db-types="MySQL" />
+ <sql-case id="create_procedure_with_transaction" value="CREATE PROCEDURE
proc1() BEGIN START TRANSACTION; CREATE TABLE t1 (f1 INT); ROLLBACK; START
TRANSACTION; CREATE TABLE t1 (f1 INT); COMMIT; END;" db-types="MySQL" />
+ <sql-case id="create_procedure_with_charset_parameters_and_insert"
value="CREATE PROCEDURE bug18293 (IN ins1 CHAR(50), IN ins2 CHAR(50) CHARACTER
SET cp932, IN ind DECIMAL(10,2)) BEGIN INSERT INTO t4 VALUES (ins1, ins2, ind);
END;" db-types="MySQL" />
+ <sql-case
id="create_procedure_with_create_table_and_show_create_table_schema"
value="CREATE PROCEDURE mysqltest2.p2() BEGIN CREATE TABLE t2(col1
VARCHAR(10)); SHOW CREATE TABLE t2; END;" db-types="MySQL" />
+ <sql-case id="create_procedure_with_show_create_table_in_default_schema"
value="CREATE PROCEDURE p1() BEGIN CREATE TABLE t1(col1 VARCHAR(10)); SHOW
CREATE TABLE t1; END;" db-types="MySQL" />
</sql-cases>