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();

Reply via email to