This is an automated email from the ASF dual-hosted git repository.

zhangliang 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 cd52a563c00 Move package of ConstraintAvailable (#35738)
cd52a563c00 is described below

commit cd52a563c005940deeebc6daab58926bc40223ba
Author: Liang Zhang <zhangli...@apache.org>
AuthorDate: Tue Jun 17 22:13:19 2025 +0800

    Move package of ConstraintAvailable (#35738)
    
    * Move package of ConstraintAvailable
    
    * Move package of ConstraintAvailable
    
    * Move package of ConstraintAvailable
---
 .../impl/ShardingConstraintTokenGenerator.java          |  8 ++++----
 .../impl/ShardingConstraintTokenGeneratorTest.java      |  6 +++---
 .../statement/type/ddl/AlterTableStatementContext.java  | 17 +----------------
 .../statement/type/ddl/CreateTableStatementContext.java | 13 +------------
 .../type/ddl/AlterTableStatementContextTest.java        |  2 --
 .../type/ddl/CreateTableStatementContextTest.java       |  6 +-----
 .../core/metadata/generator/PipelineDDLDecorator.java   |  6 +++---
 .../core/statement/available}/ConstraintAvailable.java  |  2 +-
 .../core/statement/ddl/AlterTableStatement.java         | 15 ++++++++++++++-
 .../core/statement/ddl/CreateTableStatement.java        | 13 ++++++++++++-
 10 files changed, 40 insertions(+), 48 deletions(-)

diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ShardingConstraintTokenGenerator.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ShardingConstraintTokenGenerator.java
index ae58c423cc7..e38dcdf0d51 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ShardingConstraintTokenGenerator.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ShardingConstraintTokenGenerator.java
@@ -20,7 +20,7 @@ package 
org.apache.shardingsphere.sharding.rewrite.token.generator.impl;
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
 import 
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
-import org.apache.shardingsphere.infra.binder.context.type.ConstraintAvailable;
+import 
org.apache.shardingsphere.sql.parser.statement.core.statement.available.ConstraintAvailable;
 import 
org.apache.shardingsphere.infra.rewrite.sql.token.common.generator.CollectionSQLTokenGenerator;
 import org.apache.shardingsphere.infra.rewrite.sql.token.common.pojo.SQLToken;
 import org.apache.shardingsphere.sharding.rewrite.token.pojo.ConstraintToken;
@@ -42,14 +42,14 @@ public final class ShardingConstraintTokenGenerator 
implements CollectionSQLToke
     
     @Override
     public boolean isGenerateSQLToken(final SQLStatementContext 
sqlStatementContext) {
-        return sqlStatementContext instanceof ConstraintAvailable && 
!((ConstraintAvailable) sqlStatementContext).getConstraints().isEmpty();
+        return sqlStatementContext.getSqlStatement() instanceof 
ConstraintAvailable && !((ConstraintAvailable) 
sqlStatementContext.getSqlStatement()).getConstraints().isEmpty();
     }
     
     @Override
     public Collection<SQLToken> generateSQLTokens(final SQLStatementContext 
sqlStatementContext) {
         Collection<SQLToken> result = new LinkedList<>();
-        if (sqlStatementContext instanceof ConstraintAvailable) {
-            for (ConstraintSegment each : ((ConstraintAvailable) 
sqlStatementContext).getConstraints()) {
+        if (sqlStatementContext.getSqlStatement() instanceof 
ConstraintAvailable) {
+            for (ConstraintSegment each : ((ConstraintAvailable) 
sqlStatementContext.getSqlStatement()).getConstraints()) {
                 IdentifierValue constraintIdentifier = each.getIdentifier();
                 // TODO make sure can remove null check here? @duanzhengqiang
                 if (null != constraintIdentifier) {
diff --git 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ShardingConstraintTokenGeneratorTest.java
 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ShardingConstraintTokenGeneratorTest.java
index d41686cb571..e739df8c8f0 100644
--- 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ShardingConstraintTokenGeneratorTest.java
+++ 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ShardingConstraintTokenGeneratorTest.java
@@ -49,7 +49,7 @@ class ShardingConstraintTokenGeneratorTest {
     @Test
     void assertIsNotGenerateSQLTokenWithEmptyConstraint() {
         AlterTableStatementContext alterTableStatementContext = 
mock(AlterTableStatementContext.class, RETURNS_DEEP_STUBS);
-        
when(alterTableStatementContext.getConstraints().isEmpty()).thenReturn(true);
+        
when(alterTableStatementContext.getSqlStatement().getConstraints().isEmpty()).thenReturn(true);
         assertFalse(generator.isGenerateSQLToken(alterTableStatementContext));
     }
     
@@ -73,8 +73,8 @@ class ShardingConstraintTokenGeneratorTest {
     }
     
     private AlterTableStatementContext mockAlterTableStatementContext() {
-        AlterTableStatementContext result = 
mock(AlterTableStatementContext.class);
-        when(result.getConstraints()).thenReturn(Collections.singleton(new 
ConstraintSegment(1, 3, mock(IdentifierValue.class))));
+        AlterTableStatementContext result = 
mock(AlterTableStatementContext.class, RETURNS_DEEP_STUBS);
+        
when(result.getSqlStatement().getConstraints()).thenReturn(Collections.singleton(new
 ConstraintSegment(1, 3, mock(IdentifierValue.class))));
         return result;
     }
     
diff --git 
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/type/ddl/AlterTableStatementContext.java
 
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/type/ddl/AlterTableStatementContext.java
index 9d48afff4f6..24af4b58a4e 100644
--- 
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/type/ddl/AlterTableStatementContext.java
+++ 
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/type/ddl/AlterTableStatementContext.java
@@ -20,16 +20,12 @@ package 
org.apache.shardingsphere.infra.binder.context.statement.type.ddl;
 import lombok.Getter;
 import 
org.apache.shardingsphere.infra.binder.context.segment.table.TablesContext;
 import 
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
-import org.apache.shardingsphere.infra.binder.context.type.ConstraintAvailable;
 import org.apache.shardingsphere.infra.binder.context.type.IndexAvailable;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.column.ColumnDefinitionSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.column.alter.AddColumnDefinitionSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.column.alter.ModifyColumnDefinitionSegment;
-import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.constraint.ConstraintSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.constraint.alter.AddConstraintDefinitionSegment;
-import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.constraint.alter.DropConstraintDefinitionSegment;
-import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.constraint.alter.ValidateConstraintDefinitionSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.index.DropIndexDefinitionSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.index.IndexSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.index.RenameIndexDefinitionSegment;
@@ -44,7 +40,7 @@ import java.util.LinkedList;
  * Alter table statement context.
  */
 @Getter
-public final class AlterTableStatementContext implements SQLStatementContext, 
IndexAvailable, ConstraintAvailable {
+public final class AlterTableStatementContext implements SQLStatementContext, 
IndexAvailable {
     
     private final DatabaseType databaseType;
     
@@ -92,17 +88,6 @@ public final class AlterTableStatementContext implements 
SQLStatementContext, In
         return result;
     }
     
-    @Override
-    public Collection<ConstraintSegment> getConstraints() {
-        Collection<ConstraintSegment> result = new LinkedList<>();
-        for (AddConstraintDefinitionSegment each : 
getSqlStatement().getAddConstraintDefinitions()) {
-            
each.getConstraintDefinition().getConstraintName().ifPresent(result::add);
-        }
-        
getSqlStatement().getValidateConstraintDefinitions().stream().map(ValidateConstraintDefinitionSegment::getConstraintName).forEach(result::add);
-        
getSqlStatement().getDropConstraintDefinitions().stream().map(DropConstraintDefinitionSegment::getConstraintName).forEach(result::add);
-        return result;
-    }
-    
     @Override
     public Collection<ColumnSegment> getIndexColumns() {
         Collection<ColumnSegment> result = new LinkedList<>();
diff --git 
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/type/ddl/CreateTableStatementContext.java
 
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/type/ddl/CreateTableStatementContext.java
index 0f139ba18d2..0347be0aee1 100644
--- 
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/type/ddl/CreateTableStatementContext.java
+++ 
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/type/ddl/CreateTableStatementContext.java
@@ -20,12 +20,10 @@ package 
org.apache.shardingsphere.infra.binder.context.statement.type.ddl;
 import lombok.Getter;
 import 
org.apache.shardingsphere.infra.binder.context.segment.table.TablesContext;
 import 
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
-import org.apache.shardingsphere.infra.binder.context.type.ConstraintAvailable;
 import org.apache.shardingsphere.infra.binder.context.type.IndexAvailable;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.column.ColumnDefinitionSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.constraint.ConstraintDefinitionSegment;
-import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.constraint.ConstraintSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.index.IndexSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.column.ColumnSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
@@ -39,7 +37,7 @@ import java.util.stream.Collectors;
  * Create table statement context.
  */
 @Getter
-public final class CreateTableStatementContext implements SQLStatementContext, 
IndexAvailable, ConstraintAvailable {
+public final class CreateTableStatementContext implements SQLStatementContext, 
IndexAvailable {
     
     private final DatabaseType databaseType;
     
@@ -76,15 +74,6 @@ public final class CreateTableStatementContext implements 
SQLStatementContext, I
         return result;
     }
     
-    @Override
-    public Collection<ConstraintSegment> getConstraints() {
-        Collection<ConstraintSegment> result = new LinkedList<>();
-        for (ConstraintDefinitionSegment each : 
getSqlStatement().getConstraintDefinitions()) {
-            each.getConstraintName().ifPresent(result::add);
-        }
-        return result;
-    }
-    
     @Override
     public Collection<ColumnSegment> getIndexColumns() {
         return 
getSqlStatement().getConstraintDefinitions().stream().flatMap(each -> 
each.getIndexColumns().stream()).collect(Collectors.toList());
diff --git 
a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/type/ddl/AlterTableStatementContextTest.java
 
b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/type/ddl/AlterTableStatementContextTest.java
index 0f868924b81..fa89a3fd18e 100644
--- 
a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/type/ddl/AlterTableStatementContextTest.java
+++ 
b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/type/ddl/AlterTableStatementContextTest.java
@@ -85,8 +85,6 @@ class AlterTableStatementContextTest {
         
assertThat(actual.getTablesContext().getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList()),
                 is(Arrays.asList("foo_tbl", "rename_foo_tbl", "foo_tbl", 
"foo_tbl", "foo_tbl")));
         assertThat(actual.getIndexes().stream().map(each -> 
each.getIndexName().getIdentifier().getValue()).collect(Collectors.toList()), 
is(Arrays.asList("index", "drop_index")));
-        assertThat(actual.getConstraints().stream().map(each -> 
each.getIdentifier().getValue()).collect(Collectors.toList()),
-                is(Arrays.asList("constraint", "constraint", "constraint")));
     }
     
     private TableNameSegment createTableNameSegment(final String tableName) {
diff --git 
a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/type/ddl/CreateTableStatementContextTest.java
 
b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/type/ddl/CreateTableStatementContextTest.java
index 639e0231dd1..c7e12769ad3 100644
--- 
a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/type/ddl/CreateTableStatementContextTest.java
+++ 
b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/type/ddl/CreateTableStatementContextTest.java
@@ -17,7 +17,6 @@
 
 package org.apache.shardingsphere.infra.binder.context.statement.type.ddl;
 
-import org.apache.shardingsphere.infra.binder.context.type.ConstraintAvailable;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.column.ColumnDefinitionSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.constraint.ConstraintDefinitionSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.constraint.ConstraintSegment;
@@ -33,7 +32,6 @@ import java.util.Collections;
 import java.util.Optional;
 import java.util.stream.Collectors;
 
-import static org.hamcrest.CoreMatchers.instanceOf;
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.mockito.Mockito.mock;
@@ -44,10 +42,8 @@ class CreateTableStatementContextTest {
     @Test
     void assertNewInstance() {
         CreateTableStatement sqlStatement = new CreateTableStatement();
-        CreateTableStatementContext actual = new 
CreateTableStatementContext(mock(), sqlStatement);
         SimpleTableSegment table = new SimpleTableSegment(new 
TableNameSegment(0, 0, new IdentifierValue("foo_tbl")));
         sqlStatement.setTable(table);
-        assertThat(actual, instanceOf(ConstraintAvailable.class));
         ColumnDefinitionSegment columnDefinition = 
mock(ColumnDefinitionSegment.class);
         
when(columnDefinition.getReferencedTables()).thenReturn(Collections.singletonList(table));
         sqlStatement.getColumnDefinitions().add(columnDefinition);
@@ -55,9 +51,9 @@ class CreateTableStatementContextTest {
         
when(constraintDefinition.getConstraintName()).thenReturn(Optional.of(new 
ConstraintSegment(0, 0, new IdentifierValue("foo_fk"))));
         
when(constraintDefinition.getReferencedTable()).thenReturn(Optional.of(table));
         sqlStatement.getConstraintDefinitions().add(constraintDefinition);
+        CreateTableStatementContext actual = new 
CreateTableStatementContext(mock(), sqlStatement);
         assertThat(actual.getSqlStatement(), is(sqlStatement));
         when(constraintDefinition.getIndexName()).thenReturn(Optional.of(new 
IndexSegment(0, 0, new IndexNameSegment(0, 0, new 
IdentifierValue("foo_idx")))));
         assertThat(actual.getIndexes().stream().map(each -> 
each.getIndexName().getIdentifier().getValue()).collect(Collectors.toList()), 
is(Collections.singletonList("foo_idx")));
-        assertThat(actual.getConstraints().stream().map(each -> 
each.getIdentifier().getValue()).collect(Collectors.toList()), 
is(Collections.singletonList("foo_fk")));
     }
 }
diff --git 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/metadata/generator/PipelineDDLDecorator.java
 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/metadata/generator/PipelineDDLDecorator.java
index feb5559b7ce..8acb9e34ddd 100644
--- 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/metadata/generator/PipelineDDLDecorator.java
+++ 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/metadata/generator/PipelineDDLDecorator.java
@@ -23,7 +23,7 @@ import 
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementCont
 import 
org.apache.shardingsphere.infra.binder.context.statement.type.ddl.AlterTableStatementContext;
 import 
org.apache.shardingsphere.infra.binder.context.statement.type.ddl.CreateIndexStatementContext;
 import 
org.apache.shardingsphere.infra.binder.context.statement.type.ddl.CreateTableStatementContext;
-import org.apache.shardingsphere.infra.binder.context.type.ConstraintAvailable;
+import 
org.apache.shardingsphere.sql.parser.statement.core.statement.available.ConstraintAvailable;
 import org.apache.shardingsphere.infra.binder.context.type.IndexAvailable;
 import org.apache.shardingsphere.infra.binder.engine.SQLBindEngine;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
@@ -116,8 +116,8 @@ public final class PipelineDDLDecorator {
                     replaceMap.put(each.getIndexName(), logicIndexName);
                 }
             }
-            if (sqlStatementContext instanceof ConstraintAvailable) {
-                for (ConstraintSegment each : ((ConstraintAvailable) 
sqlStatementContext).getConstraints()) {
+            if (sqlStatementContext.getSqlStatement() instanceof 
ConstraintAvailable) {
+                for (ConstraintSegment each : ((ConstraintAvailable) 
sqlStatementContext.getSqlStatement()).getConstraints()) {
                     String logicConstraint = 
IndexMetaDataUtils.getLogicIndexName(each.getIdentifier().getValue(), 
tableNameSegment.getIdentifier().getValue());
                     replaceMap.put(each, logicConstraint);
                 }
diff --git 
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/context/type/ConstraintAvailable.java
 
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/available/ConstraintAvailable.java
similarity index 93%
rename from 
infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/context/type/ConstraintAvailable.java
rename to 
parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/available/ConstraintAvailable.java
index 195843adef6..a4336ae6366 100644
--- 
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/context/type/ConstraintAvailable.java
+++ 
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/available/ConstraintAvailable.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.infra.binder.context.type;
+package 
org.apache.shardingsphere.sql.parser.statement.core.statement.available;
 
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.constraint.ConstraintSegment;
 
diff --git 
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/AlterTableStatement.java
 
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/AlterTableStatement.java
index d50a950c150..3cf2251a2a2 100644
--- 
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/AlterTableStatement.java
+++ 
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/AlterTableStatement.java
@@ -25,6 +25,7 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.column.al
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.column.alter.ModifyCollectionRetrievalSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.column.alter.ModifyColumnDefinitionSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.column.alter.RenameColumnSegment;
+import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.constraint.ConstraintSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.constraint.alter.AddConstraintDefinitionSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.constraint.alter.DropConstraintDefinitionSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.constraint.alter.ModifyConstraintDefinitionSegment;
@@ -36,6 +37,7 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table.Con
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table.LockTableSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.AbstractSQLStatement;
+import 
org.apache.shardingsphere.sql.parser.statement.core.statement.available.ConstraintAvailable;
 
 import java.util.Collection;
 import java.util.LinkedList;
@@ -46,7 +48,7 @@ import java.util.Optional;
  */
 @Getter
 @Setter
-public final class AlterTableStatement extends AbstractSQLStatement implements 
DDLStatement {
+public final class AlterTableStatement extends AbstractSQLStatement implements 
DDLStatement, ConstraintAvailable {
     
     private SimpleTableSegment table;
     
@@ -126,4 +128,15 @@ public final class AlterTableStatement extends 
AbstractSQLStatement implements D
     public Optional<LockTableSegment> getLockTableSegment() {
         return Optional.ofNullable(lockTableSegment);
     }
+    
+    @Override
+    public Collection<ConstraintSegment> getConstraints() {
+        Collection<ConstraintSegment> result = new LinkedList<>();
+        for (AddConstraintDefinitionSegment each : addConstraintDefinitions) {
+            
each.getConstraintDefinition().getConstraintName().ifPresent(result::add);
+        }
+        
validateConstraintDefinitions.stream().map(ValidateConstraintDefinitionSegment::getConstraintName).forEach(result::add);
+        
dropConstraintDefinitions.stream().map(DropConstraintDefinitionSegment::getConstraintName).forEach(result::add);
+        return result;
+    }
 }
diff --git 
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/CreateTableStatement.java
 
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/CreateTableStatement.java
index 48a1618512e..fe86d762598 100644
--- 
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/CreateTableStatement.java
+++ 
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/CreateTableStatement.java
@@ -21,10 +21,12 @@ import lombok.Getter;
 import lombok.Setter;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.column.ColumnDefinitionSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.constraint.ConstraintDefinitionSegment;
+import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.constraint.ConstraintSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table.CreateTableOptionSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.column.ColumnSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.AbstractSQLStatement;
+import 
org.apache.shardingsphere.sql.parser.statement.core.statement.available.ConstraintAvailable;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.dml.SelectStatement;
 
 import java.util.Collection;
@@ -37,7 +39,7 @@ import java.util.Optional;
  */
 @Getter
 @Setter
-public final class CreateTableStatement extends AbstractSQLStatement 
implements DDLStatement {
+public final class CreateTableStatement extends AbstractSQLStatement 
implements DDLStatement, ConstraintAvailable {
     
     private SimpleTableSegment table;
     
@@ -81,4 +83,13 @@ public final class CreateTableStatement extends 
AbstractSQLStatement implements
     public Optional<CreateTableOptionSegment> getCreateTableOption() {
         return Optional.ofNullable(createTableOption);
     }
+    
+    @Override
+    public Collection<ConstraintSegment> getConstraints() {
+        Collection<ConstraintSegment> result = new LinkedList<>();
+        for (ConstraintDefinitionSegment each : constraintDefinitions) {
+            each.getConstraintName().ifPresent(result::add);
+        }
+        return result;
+    }
 }

Reply via email to