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 04bbaf4bbd7 Optimized alter definition parse code (#28381)
04bbaf4bbd7 is described below

commit 04bbaf4bbd794424e650e6a75905dd42c093231c
Author: niu niu <[email protected]>
AuthorDate: Thu Sep 7 17:27:58 2023 +0800

    Optimized alter definition parse code (#28381)
---
 .../statement/type/OracleDDLStatementVisitor.java  | 65 ++++++++++++++--------
 1 file changed, 41 insertions(+), 24 deletions(-)

diff --git 
a/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDDLStatementVisitor.java
 
b/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDDLStatementVisitor.java
index 4e83af5ae14..72b703d8b1e 100644
--- 
a/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDDLStatementVisitor.java
+++ 
b/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDDLStatementVisitor.java
@@ -68,6 +68,7 @@ import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AuditU
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.ColumnDefinitionContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.ColumnNameContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.ColumnOrVirtualDefinitionContext;
+import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.ColumnClausesContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CommentContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.ConstraintClausesContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateClusterContext;
@@ -483,34 +484,50 @@ public final class OracleDDLStatementVisitor extends 
OracleStatementVisitor impl
     public ASTNode visitAlterDefinitionClause(final 
AlterDefinitionClauseContext ctx) {
         CollectionValue<AlterDefinitionSegment> result = new 
CollectionValue<>();
         if (null != ctx.columnClauses()) {
-            for (OperateColumnClauseContext each : 
ctx.columnClauses().operateColumnClause()) {
-                if (null != each.addColumnSpecification()) {
-                    
result.getValue().addAll(((CollectionValue<AddColumnDefinitionSegment>) 
visit(each.addColumnSpecification())).getValue());
-                }
-                if (null != each.modifyColumnSpecification()) {
-                    result.getValue().add((ModifyColumnDefinitionSegment) 
visit(each.modifyColumnSpecification()));
-                }
-                if (null != each.dropColumnClause()) {
-                    result.getValue().add((DropColumnDefinitionSegment) 
visit(each.dropColumnClause()));
-                }
-            }
-            if (null != ctx.columnClauses().modifyCollectionRetrieval()) {
-                result.getValue().add((ModifyCollectionRetrievalSegment) 
visit(ctx.columnClauses().modifyCollectionRetrieval()));
-            }
+            
result.getValue().addAll(((CollectionValue<AddColumnDefinitionSegment>) 
visit(ctx.columnClauses())).getValue());
         }
         if (null != ctx.constraintClauses()) {
-            // TODO Support rename constraint
-            ConstraintClausesContext constraintClausesContext = 
ctx.constraintClauses();
-            if (null != constraintClausesContext.addConstraintSpecification()) 
{
-                result.combine((CollectionValue<AlterDefinitionSegment>) 
visit(constraintClausesContext.addConstraintSpecification()));
+            
result.getValue().addAll(((CollectionValue<AddColumnDefinitionSegment>) 
visit(ctx.constraintClauses())).getValue());
+        }
+        // TODO More alter definition parse
+        return result;
+    }
+    
+    @SuppressWarnings("unchecked")
+    @Override
+    public ASTNode visitColumnClauses(final ColumnClausesContext ctx) {
+        CollectionValue<AlterDefinitionSegment> result = new 
CollectionValue<>();
+        for (OperateColumnClauseContext each : ctx.operateColumnClause()) {
+            if (null != each.addColumnSpecification()) {
+                
result.getValue().addAll(((CollectionValue<AddColumnDefinitionSegment>) 
visit(each.addColumnSpecification())).getValue());
             }
-            if (null != constraintClausesContext.modifyConstraintClause()) {
-                result.getValue().add((AlterDefinitionSegment) 
visit(constraintClausesContext.modifyConstraintClause()));
+            if (null != each.modifyColumnSpecification()) {
+                result.getValue().add((ModifyColumnDefinitionSegment) 
visit(each.modifyColumnSpecification()));
             }
-            for (DropConstraintClauseContext each : 
constraintClausesContext.dropConstraintClause()) {
-                if (null != each.constraintName()) {
-                    result.getValue().add((AlterDefinitionSegment) 
visit(each));
-                }
+            if (null != each.dropColumnClause()) {
+                result.getValue().add((DropColumnDefinitionSegment) 
visit(each.dropColumnClause()));
+            }
+        }
+        if (null != ctx.modifyCollectionRetrieval()) {
+            result.getValue().add((ModifyCollectionRetrievalSegment) 
visit(ctx.modifyCollectionRetrieval()));
+        }
+        return result;
+    }
+    
+    @SuppressWarnings("unchecked")
+    @Override
+    public ASTNode visitConstraintClauses(final ConstraintClausesContext ctx) {
+        // TODO Support rename constraint
+        CollectionValue<AlterDefinitionSegment> result = new 
CollectionValue<>();
+        if (null != ctx.addConstraintSpecification()) {
+            result.combine((CollectionValue<AlterDefinitionSegment>) 
visit(ctx.addConstraintSpecification()));
+        }
+        if (null != ctx.modifyConstraintClause()) {
+            result.getValue().add((AlterDefinitionSegment) 
visit(ctx.modifyConstraintClause()));
+        }
+        for (DropConstraintClauseContext each : ctx.dropConstraintClause()) {
+            if (null != each.constraintName()) {
+                result.getValue().add((AlterDefinitionSegment) visit(each));
             }
         }
         return result;

Reply via email to