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 8f25d7f8014 Optimize alter tablespace parse implement (#26722)
8f25d7f8014 is described below
commit 8f25d7f8014429a1d7afaa6bf38bf0039504ee79
Author: niu niu <[email protected]>
AuthorDate: Sat Jul 1 11:17:28 2023 +0800
Optimize alter tablespace parse implement (#26722)
* Optimize alter tablespace parse implement
* Format code
---
.../statement/type/MySQLDDLStatementVisitor.java | 50 ++++++++++++++--------
1 file changed, 33 insertions(+), 17 deletions(-)
diff --git
a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDDLStatementVisitor.java
b/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDDLStatementVisitor.java
index 8527028b965..a4571d3b99c 100644
---
a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDDLStatementVisitor.java
+++
b/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDDLStatementVisitor.java
@@ -41,6 +41,8 @@ import
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.AlterSe
import
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.AlterTableContext;
import
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.AlterTableDropContext;
import
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.AlterTablespaceContext;
+import
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.AlterTablespaceInnodbContext;
+import
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.AlterTablespaceNdbContext;
import
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.AlterViewContext;
import
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.BeginStatementContext;
import
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.CaseStatementContext;
@@ -78,6 +80,7 @@ import
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.FieldDe
import
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.FlowControlStatementContext;
import
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.FunctionNameContext;
import
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.IfStatementContext;
+import
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.IdentifierContext;
import
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.KeyListWithExpressionContext;
import
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.KeyPartContext;
import
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.KeyPartWithExpressionContext;
@@ -945,28 +948,41 @@ public final class MySQLDDLStatementVisitor extends
MySQLStatementVisitor implem
@Override
public ASTNode visitAlterTablespace(final AlterTablespaceContext ctx) {
+ if (null != ctx.alterTablespaceInnodb()) {
+ return visit(ctx.alterTablespaceInnodb());
+ } else {
+ return visit(ctx.alterTablespaceNdb());
+ }
+ }
+
+ @Override
+ public ASTNode visitAlterTablespaceInnodb(final
AlterTablespaceInnodbContext ctx) {
+ MySQLAlterTablespaceStatement result = new
MySQLAlterTablespaceStatement();
+ if (null != ctx.tablespace) {
+
result.setTablespaceSegment(createTablespaceSegment(ctx.tablespace));
+ }
+ if (null != ctx.renameTablespace) {
+
result.setRenameTablespaceSegment(createTablespaceSegment(ctx.renameTablespace));
+ }
+ return result;
+ }
+
+ @Override
+ public ASTNode visitAlterTablespaceNdb(final AlterTablespaceNdbContext
ctx) {
MySQLAlterTablespaceStatement result = new
MySQLAlterTablespaceStatement();
- if (null != ctx.alterTablespaceInnodb().tablespace) {
- result.setTablespaceSegment(new
TablespaceSegment(ctx.alterTablespaceInnodb().tablespace.getStart().getStartIndex(),
-
ctx.alterTablespaceInnodb().tablespace.getStop().getStopIndex(),
- (IdentifierValue)
visit(ctx.alterTablespaceInnodb().tablespace)));
- } else if (null != ctx.alterTablespaceNdb().tablespace) {
- result.setTablespaceSegment(new
TablespaceSegment(ctx.alterTablespaceNdb().tablespace.getStart().getStartIndex(),
-
ctx.alterTablespaceNdb().tablespace.getStop().getStopIndex(),
- (IdentifierValue)
visit(ctx.alterTablespaceNdb().tablespace)));
- }
- if (null != ctx.alterTablespaceInnodb().renameTablespace) {
- result.setRenameTablespaceSegment(new
TablespaceSegment(ctx.alterTablespaceInnodb().renameTablespace.getStart().getStartIndex(),
-
ctx.alterTablespaceInnodb().renameTablespace.getStop().getStopIndex(),
- (IdentifierValue)
visit(ctx.alterTablespaceInnodb().renameTablespace)));
- } else if (null != ctx.alterTablespaceNdb().renameTableSpace) {
- result.setRenameTablespaceSegment(new
TablespaceSegment(ctx.alterTablespaceNdb().renameTableSpace.getStart().getStartIndex(),
-
ctx.alterTablespaceNdb().renameTableSpace.getStop().getStopIndex(),
- (IdentifierValue)
visit(ctx.alterTablespaceInnodb().renameTablespace)));
+ if (null != ctx.tablespace) {
+
result.setTablespaceSegment(createTablespaceSegment(ctx.tablespace));
+ }
+ if (null != ctx.renameTableSpace) {
+
result.setRenameTablespaceSegment(createTablespaceSegment(ctx.renameTableSpace));
}
return result;
}
+ private TablespaceSegment createTablespaceSegment(final IdentifierContext
ctx) {
+ return new TablespaceSegment(ctx.getStart().getStartIndex(),
ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx));
+ }
+
@Override
public ASTNode visitDropTablespace(final DropTablespaceContext ctx) {
return new MySQLDropTablespaceStatement();