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 a0ceb48 fix #14145 (#14149)
a0ceb48 is described below
commit a0ceb48fcdeaecc7853580da0c26aa1c91e3f408
Author: roodkcab <[email protected]>
AuthorDate: Tue Dec 21 09:41:47 2021 +0800
fix #14145 (#14149)
---
.../visitor/statement/impl/MySQLTCLStatementSQLVisitor.java | 12 ++++++++++--
.../dialect/statement/mysql/tcl/MySQLRollbackStatement.java | 6 ++++++
.../asserts/statement/tcl/impl/RollbackStatementAssert.java | 6 ++++++
.../asserts/statement/tcl/impl/SavepointStatementAssert.java | 6 ++++++
.../domain/statement/tcl/RollbackStatementTestCase.java | 9 +++++++++
.../domain/statement/tcl/SavepointStatementTestCase.java | 9 +++++++++
.../src/main/resources/case/tcl/rollback.xml | 2 +-
.../src/main/resources/case/tcl/savepoint.xml | 2 +-
8 files changed, 48 insertions(+), 4 deletions(-)
diff --git
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLTCLStatementSQLVisitor.java
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLTCLStatementSQLVisitor.java
index dbbe17c..6880f1c 100644
---
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLTCLStatementSQLVisitor.java
+++
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLTCLStatementSQLVisitor.java
@@ -89,12 +89,20 @@ public final class MySQLTCLStatementSQLVisitor extends
MySQLStatementSQLVisitor
@Override
public ASTNode visitRollback(final RollbackContext ctx) {
- return new MySQLRollbackStatement();
+ MySQLRollbackStatement result = new MySQLRollbackStatement();
+ if (ctx.getChildCount() > 1 && "TO".equals(ctx.getChild(1).getText()))
{
+ String savepointName = ctx.getChild(2).getText();
+ result.setSavepointName(savepointName);
+ }
+ return result;
}
@Override
public ASTNode visitSavepoint(final SavepointContext ctx) {
- return new MySQLSavepointStatement();
+ MySQLSavepointStatement result = new MySQLSavepointStatement();
+ String savepointName = ctx.getChild(1).getText();
+ result.setSavepointName(savepointName);
+ return result;
}
@Override
diff --git
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/mysql/tcl/MySQLRollbackStatement.java
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/mysql/tcl/MySQLRollbackStatement.java
index 6c10ae7..aff3f9f 100644
---
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/mysql/tcl/MySQLRollbackStatement.java
+++
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/mysql/tcl/MySQLRollbackStatement.java
@@ -17,6 +17,8 @@
package org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.tcl;
+import lombok.Getter;
+import lombok.Setter;
import lombok.ToString;
import
org.apache.shardingsphere.sql.parser.sql.common.statement.tcl.RollbackStatement;
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.MySQLStatement;
@@ -25,5 +27,9 @@ import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.MySQLSta
* MySQL rollback statement.
*/
@ToString
+@Getter
+@Setter
public final class MySQLRollbackStatement extends RollbackStatement implements
MySQLStatement {
+
+ private String savepointName;
}
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/tcl/impl/RollbackStatementAssert.java
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/tcl/impl/RollbackStatementAssert.java
index d8a2df5..e178506 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/tcl/impl/RollbackStatementAssert.java
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/tcl/impl/RollbackStatementAssert.java
@@ -20,9 +20,12 @@ package
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statemen
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import
org.apache.shardingsphere.sql.parser.sql.common.statement.tcl.RollbackStatement;
+import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.tcl.MySQLRollbackStatement;
import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.tcl.RollbackStatementTestCase;
+import static org.junit.Assert.assertEquals;
+
/**
* Rollback statement assert.
*/
@@ -37,5 +40,8 @@ public final class RollbackStatementAssert {
* @param expected expected rollback statement test case
*/
public static void assertIs(final SQLCaseAssertContext assertContext,
final RollbackStatement actual, final RollbackStatementTestCase expected) {
+ if (actual instanceof MySQLRollbackStatement &&
((MySQLRollbackStatement) actual).getSavepointName() != null) {
+ assertEquals(expected.getName(), ((MySQLRollbackStatement)
actual).getSavepointName());
+ }
}
}
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/tcl/impl/SavepointStatementAssert.java
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/tcl/impl/SavepointStatementAssert.java
index ec02343..2a4051e 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/tcl/impl/SavepointStatementAssert.java
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/tcl/impl/SavepointStatementAssert.java
@@ -20,9 +20,12 @@ package
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statemen
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import
org.apache.shardingsphere.sql.parser.sql.common.statement.tcl.SavepointStatement;
+import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.tcl.MySQLSavepointStatement;
import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.tcl.SavepointStatementTestCase;
+import static org.junit.Assert.assertEquals;
+
/**
* Savepoint statement assert.
*/
@@ -37,5 +40,8 @@ public final class SavepointStatementAssert {
* @param expected expected savepoint statement test case
*/
public static void assertIs(final SQLCaseAssertContext assertContext,
final SavepointStatement actual, final SavepointStatementTestCase expected) {
+ if (actual instanceof MySQLSavepointStatement) {
+ assertEquals(expected.getName(), ((MySQLSavepointStatement)
actual).getSavepointName());
+ }
}
}
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/tcl/RollbackStatementTestCase.java
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/tcl/RollbackStatementTestCase.java
index c5fd8ed..32117b1 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/tcl/RollbackStatementTestCase.java
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/tcl/RollbackStatementTestCase.java
@@ -17,10 +17,19 @@
package
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.tcl;
+import lombok.Getter;
+import lombok.Setter;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
+import javax.xml.bind.annotation.XmlAttribute;
+
/**
* Rollback statement test case.
*/
+@Getter
+@Setter
public final class RollbackStatementTestCase extends SQLParserTestCase {
+
+ @XmlAttribute
+ private String name;
}
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/tcl/SavepointStatementTestCase.java
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/tcl/SavepointStatementTestCase.java
index ad04be9..f25a4cf 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/tcl/SavepointStatementTestCase.java
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/tcl/SavepointStatementTestCase.java
@@ -17,10 +17,19 @@
package
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.tcl;
+import lombok.Getter;
+import lombok.Setter;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
+import javax.xml.bind.annotation.XmlAttribute;
+
/**
* Savepoint statement test case.
*/
+@Getter
+@Setter
public final class SavepointStatementTestCase extends SQLParserTestCase {
+
+ @XmlAttribute
+ private String name;
}
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/tcl/rollback.xml
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/tcl/rollback.xml
index 0347a0a..93b35e1 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/tcl/rollback.xml
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/tcl/rollback.xml
@@ -20,7 +20,7 @@
<rollback sql-case-id="rollback" />
<rollback sql-case-id="rollback_transaction" />
<rollback sql-case-id="rollback_with_name" />
- <rollback sql-case-id="rollback_to_savepoint" />
+ <rollback sql-case-id="rollback_to_savepoint" name="savepoint1" />
<rollback sql-case-id="rollback_force" />
<rollback sql-case-id="rollback_prepare" />
<rollback sql-case-id="rollback_in_pg" />
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/tcl/savepoint.xml
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/tcl/savepoint.xml
index 719aa4e..bc55ccc 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/tcl/savepoint.xml
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/tcl/savepoint.xml
@@ -17,6 +17,6 @@
-->
<sql-parser-test-cases>
- <savepoint sql-case-id="savepoint" />
+ <savepoint sql-case-id="savepoint" name="savepoint1" />
<savepoint sql-case-id="savepoint_transaction" />
</sql-parser-test-cases>