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;