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 <[email protected]>
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;
+ }
}