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 aef2e4558a3 Refactor constructor of AlterIndexStatement to empty
buildAttributes (#38278)
aef2e4558a3 is described below
commit aef2e4558a33cbafdd3b794280abbd0718255dd7
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Mar 1 11:50:02 2026 +0800
Refactor constructor of AlterIndexStatement to empty buildAttributes
(#38278)
* Refactor constructor of AlterIndexStatement to remove buildAttributes
* Refactor constructor of AlterIndexStatement to empty buildAttributes
* Refactor constructor of AlterIndexStatement to empty buildAttributes
---
.../ShardingAlterIndexSupportedCheckerTest.java | 29 +++++++----------
.../impl/ShardingIndexTokenGeneratorTest.java | 37 ++++++----------------
.../statement/ddl/AlterIndexStatementBinder.java | 8 +----
.../AlterIndexPushDownMetaDataRefresherTest.java | 11 ++-----
.../statement/type/HiveDDLStatementVisitor.java | 9 ++----
.../type/OpenGaussDDLStatementVisitor.java | 10 +++---
.../statement/type/OracleDDLStatementVisitor.java | 4 +--
.../type/PostgreSQLDDLStatementVisitor.java | 10 +++---
.../type/SQLServerDDLStatementVisitor.java | 7 +---
.../type/ddl/index/AlterIndexStatement.java | 21 ++++++------
10 files changed, 47 insertions(+), 99 deletions(-)
diff --git
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingAlterIndexSupportedCheckerTest.java
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingAlterIndexSupportedCheckerTest.java
index 16f28653ac9..f3c1ce00153 100644
---
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingAlterIndexSupportedCheckerTest.java
+++
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingAlterIndexSupportedCheckerTest.java
@@ -56,24 +56,20 @@ class ShardingAlterIndexSupportedCheckerTest {
@Test
void assertCheckWhenIndexExistRenameIndexNotExistForPostgreSQL() {
- AlterIndexStatement sqlStatement = new
AlterIndexStatement(databaseType);
- sqlStatement.setIndex(new IndexSegment(0, 0, new IndexNameSegment(0,
0, new IdentifierValue("t_order_index"))));
- sqlStatement.setRenameIndex(new IndexSegment(0, 0, new
IndexNameSegment(0, 0, new IdentifierValue("t_order_index_new"))));
- sqlStatement.buildAttributes();
ShardingSphereTable table = mock(ShardingSphereTable.class);
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
when(schema.getAllTables()).thenReturn(Collections.singleton(table));
- when(table.containsIndex("t_order_index")).thenReturn(true);
- when(table.containsIndex("t_order_index_new")).thenReturn(false);
+ when(table.containsIndex("foo_tbl_idx")).thenReturn(true);
+ when(table.containsIndex("foo_tbl_idx_new")).thenReturn(false);
+ AlterIndexStatement sqlStatement = new
AlterIndexStatement(databaseType, new IndexSegment(0, 0, new
IndexNameSegment(0, 0, new IdentifierValue("foo_tbl_idx"))),
+ new IndexSegment(0, 0, new IndexNameSegment(0, 0, new
IdentifierValue("foo_tbl_idx_new"))), null);
assertDoesNotThrow(() -> new
ShardingAlterIndexSupportedChecker().check(rule, database, schema, new
CommonSQLStatementContext(sqlStatement)));
}
@Test
void assertCheckWhenIndexNotExistRenameIndexNotExistForPostgreSQL() {
- AlterIndexStatement sqlStatement = new
AlterIndexStatement(databaseType);
- sqlStatement.setIndex(new IndexSegment(0, 0, new IndexNameSegment(0,
0, new IdentifierValue("t_order_index"))));
- sqlStatement.setRenameIndex(new IndexSegment(0, 0, new
IndexNameSegment(0, 0, new IdentifierValue("t_order_index_new"))));
- sqlStatement.buildAttributes();
+ AlterIndexStatement sqlStatement = new
AlterIndexStatement(databaseType, new IndexSegment(0, 0, new
IndexNameSegment(0, 0, new IdentifierValue("foo_tbl_idx"))),
+ new IndexSegment(0, 0, new IndexNameSegment(0, 0, new
IdentifierValue("foo_tbl_idx_new"))), null);
ShardingSphereTable table = mock(ShardingSphereTable.class);
when(database.getSchema("public").getTable("t_order")).thenReturn(table);
assertThrows(IndexNotFoundException.class, () -> new
ShardingAlterIndexSupportedChecker().check(rule, database, mock(), new
CommonSQLStatementContext(sqlStatement)));
@@ -81,16 +77,13 @@ class ShardingAlterIndexSupportedCheckerTest {
@Test
void assertCheckAlterIndexWhenIndexExistRenameIndexExistForPostgreSQL() {
- AlterIndexStatement sqlStatement = new
AlterIndexStatement(databaseType);
- sqlStatement.setIndex(new IndexSegment(0, 0, new IndexNameSegment(0,
0, new IdentifierValue("t_order_index"))));
- sqlStatement.setRenameIndex(new IndexSegment(0, 0, new
IndexNameSegment(0, 0, new IdentifierValue("t_order_index_new"))));
- sqlStatement.buildAttributes();
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
ShardingSphereTable table = mock(ShardingSphereTable.class);
when(schema.getAllTables()).thenReturn(Collections.singleton(table));
- when(table.containsIndex("t_order_index")).thenReturn(true);
- when(table.containsIndex("t_order_index_new")).thenReturn(true);
- assertThrows(DuplicateIndexException.class,
- () -> new ShardingAlterIndexSupportedChecker().check(rule,
database, schema, new CommonSQLStatementContext(sqlStatement)));
+ when(table.containsIndex("foo_tbl_idx")).thenReturn(true);
+ when(table.containsIndex("foo_tbl_idx_new")).thenReturn(true);
+ AlterIndexStatement sqlStatement = new
AlterIndexStatement(databaseType, new IndexSegment(0, 0, new
IndexNameSegment(0, 0, new IdentifierValue("foo_tbl_idx"))),
+ new IndexSegment(0, 0, new IndexNameSegment(0, 0, new
IdentifierValue("foo_tbl_idx_new"))), null);
+ assertThrows(DuplicateIndexException.class, () -> new
ShardingAlterIndexSupportedChecker().check(rule, database, schema, new
CommonSQLStatementContext(sqlStatement)));
}
}
diff --git
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ShardingIndexTokenGeneratorTest.java
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ShardingIndexTokenGeneratorTest.java
index 14928125abf..60b5cd0c2c1 100644
---
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ShardingIndexTokenGeneratorTest.java
+++
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ShardingIndexTokenGeneratorTest.java
@@ -54,65 +54,46 @@ class ShardingIndexTokenGeneratorTest {
@Test
void assertIsNotGenerateSQLTokenWithNotIndexContextAvailable() {
- AlterIndexStatement sqlStatement = new
AlterIndexStatement(databaseType);
- sqlStatement.buildAttributes();
SQLStatementContext sqlStatementContext =
mock(SQLStatementContext.class);
- when(sqlStatementContext.getSqlStatement()).thenReturn(sqlStatement);
+ when(sqlStatementContext.getSqlStatement()).thenReturn(new
AlterIndexStatement(databaseType, null, null, null));
assertFalse(generator.isGenerateSQLToken(sqlStatementContext));
}
@Test
void assertIsNotGenerateSQLTokenWithEmptyIndex() {
- AlterIndexStatement sqlStatement = new
AlterIndexStatement(postgresqlDatabaseType);
- sqlStatement.buildAttributes();
- CommonSQLStatementContext sqlStatementContext = new
CommonSQLStatementContext(sqlStatement);
+ CommonSQLStatementContext sqlStatementContext = new
CommonSQLStatementContext(new AlterIndexStatement(postgresqlDatabaseType, null,
null, null));
assertFalse(generator.isGenerateSQLToken(sqlStatementContext));
}
@Test
void assertIsGenerateSQLToken() {
- AlterIndexStatement sqlStatement = new
AlterIndexStatement(postgresqlDatabaseType);
- sqlStatement.setIndex(mock(IndexSegment.class));
- sqlStatement.buildAttributes();
- CommonSQLStatementContext sqlStatementContext = new
CommonSQLStatementContext(sqlStatement);
+ CommonSQLStatementContext sqlStatementContext = new
CommonSQLStatementContext(new AlterIndexStatement(postgresqlDatabaseType,
mock(IndexSegment.class), null, null));
assertTrue(generator.isGenerateSQLToken(sqlStatementContext));
}
@Test
void assertGenerateSQLTokensWithNotIndexContextAvailable() {
- AlterIndexStatement sqlStatement = new
AlterIndexStatement(databaseType);
- sqlStatement.buildAttributes();
- CommonSQLStatementContext sqlStatementContext = new
CommonSQLStatementContext(sqlStatement);
- Collection<SQLToken> actual =
generator.generateSQLTokens(sqlStatementContext);
- assertTrue(actual.isEmpty());
+ CommonSQLStatementContext sqlStatementContext = new
CommonSQLStatementContext(new AlterIndexStatement(databaseType, null, null,
null));
+ assertTrue(generator.generateSQLTokens(sqlStatementContext).isEmpty());
}
@Test
void assertGenerateSQLTokensWithSchemaOwner() throws
ReflectiveOperationException {
IndexSegment indexSegment = new IndexSegment(1, 3, new
IndexNameSegment(1, 3, mock(IdentifierValue.class)));
indexSegment.setOwner(new OwnerSegment(0, 0, new
IdentifierValue("foo_schema")));
- CommonSQLStatementContext sqlStatementContext =
mockAlterIndexStatementContext(indexSegment);
+ CommonSQLStatementContext sqlStatementContext = new
CommonSQLStatementContext(new AlterIndexStatement(databaseType, indexSegment,
null, null));
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
generator.setSchemas(Collections.singletonMap("foo_schema", schema));
- Collection<SQLToken> actual =
generator.generateSQLTokens(sqlStatementContext);
- assertTokens(actual, schema);
+ assertTokens(generator.generateSQLTokens(sqlStatementContext), schema);
}
@Test
void assertGenerateSQLTokensWithoutSchemaOwner() throws
ReflectiveOperationException {
IndexSegment indexSegment = new IndexSegment(1, 3, new
IndexNameSegment(1, 3, mock(IdentifierValue.class)));
- CommonSQLStatementContext sqlStatementContext =
mockAlterIndexStatementContext(indexSegment);
+ CommonSQLStatementContext sqlStatementContext = new
CommonSQLStatementContext(new AlterIndexStatement(databaseType, indexSegment,
null, null));
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
generator.setDefaultSchema(schema);
- Collection<SQLToken> actual =
generator.generateSQLTokens(sqlStatementContext);
- assertTokens(actual, schema);
- }
-
- private CommonSQLStatementContext mockAlterIndexStatementContext(final
IndexSegment indexSegment) {
- AlterIndexStatement sqlStatement = new
AlterIndexStatement(databaseType);
- sqlStatement.setIndex(indexSegment);
- sqlStatement.buildAttributes();
- return new CommonSQLStatementContext(sqlStatement);
+ assertTokens(generator.generateSQLTokens(sqlStatementContext), schema);
}
private void assertTokens(final Collection<SQLToken> actual, final
ShardingSphereSchema schema) throws ReflectiveOperationException {
diff --git
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterIndexStatementBinder.java
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterIndexStatementBinder.java
index 9fca6e97db3..fa3009b854d 100644
---
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterIndexStatementBinder.java
+++
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterIndexStatementBinder.java
@@ -21,7 +21,6 @@ import com.google.common.collect.LinkedHashMultimap;
import
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.type.SimpleTableSegmentBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinder;
import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext;
-import
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementCopyUtils;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.index.AlterIndexStatement;
@@ -40,11 +39,6 @@ public final class AlterIndexStatementBinder implements
SQLStatementBinder<Alter
}
private AlterIndexStatement copy(final AlterIndexStatement sqlStatement,
final SimpleTableSegment boundTable) {
- AlterIndexStatement result = new
AlterIndexStatement(sqlStatement.getDatabaseType());
- sqlStatement.getIndex().ifPresent(result::setIndex);
- sqlStatement.getRenameIndex().ifPresent(result::setRenameIndex);
- result.setSimpleTable(boundTable);
- SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
- return result;
+ return new AlterIndexStatement(sqlStatement.getDatabaseType(),
sqlStatement.getIndex().orElse(null),
sqlStatement.getRenameIndex().orElse(null), boundTable);
}
}
diff --git
a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/refresher/pushdown/type/index/AlterIndexPushDownMetaDataRefresherTest.java
b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/refresher/pushdown/type/index/AlterIndexPushDownMetaDataRefresherTest.java
index 101de804bc6..03436ed4d4b 100644
---
a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/refresher/pushdown/type/index/AlterIndexPushDownMetaDataRefresherTest.java
+++
b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/refresher/pushdown/type/index/AlterIndexPushDownMetaDataRefresherTest.java
@@ -61,8 +61,7 @@ class AlterIndexPushDownMetaDataRefresherTest {
@Test
void assertRefreshReturnWhenRenameMissing() {
- AlterIndexStatement sqlStatement = new
AlterIndexStatement(databaseType);
- sqlStatement.setIndex(new IndexSegment(0, 0, new IndexNameSegment(0,
0, new IdentifierValue("idx_old"))));
+ AlterIndexStatement sqlStatement = new
AlterIndexStatement(databaseType, new IndexSegment(0, 0, new
IndexNameSegment(0, 0, new IdentifierValue("idx_old"))), null, null);
refresher.refresh(metaDataManagerPersistService, new
ShardingSphereDatabase("foo_db", databaseType, new
ResourceMetaData(Collections.emptyMap()),
new RuleMetaData(Collections.emptyList()),
Collections.emptyList()), "logic_ds", "foo_schema", databaseType, sqlStatement,
new ConfigurationProperties(new Properties()));
verifyNoInteractions(metaDataManagerPersistService);
@@ -70,8 +69,7 @@ class AlterIndexPushDownMetaDataRefresherTest {
@Test
void assertRefreshReturnWhenIndexMissing() {
- AlterIndexStatement sqlStatement = new
AlterIndexStatement(databaseType);
- sqlStatement.setRenameIndex(new IndexSegment(0, 0, new
IndexNameSegment(0, 0, new IdentifierValue("idx_new"))));
+ AlterIndexStatement sqlStatement = new
AlterIndexStatement(databaseType, null, new IndexSegment(0, 0, new
IndexNameSegment(0, 0, new IdentifierValue("idx_new"))), null);
refresher.refresh(metaDataManagerPersistService, new
ShardingSphereDatabase("foo_db", databaseType, new
ResourceMetaData(Collections.emptyMap()),
new RuleMetaData(Collections.emptyList()),
Collections.emptyList()), "logic_ds", "foo_schema", databaseType, sqlStatement,
new ConfigurationProperties(new Properties()));
verifyNoInteractions(metaDataManagerPersistService);
@@ -95,11 +93,8 @@ class AlterIndexPushDownMetaDataRefresherTest {
}
private AlterIndexStatement createAlterStatement() {
- AlterIndexStatement result = new AlterIndexStatement(databaseType);
IndexSegment index = new IndexSegment(0, 0, new IndexNameSegment(0, 0,
new IdentifierValue("idx_old")));
index.setOwner(new OwnerSegment(0, 0, new
IdentifierValue("BAR_SCHEMA")));
- result.setIndex(index);
- result.setRenameIndex(new IndexSegment(0, 0, new IndexNameSegment(0,
0, new IdentifierValue("idx_new"))));
- return result;
+ return new AlterIndexStatement(databaseType, index, new
IndexSegment(0, 0, new IndexNameSegment(0, 0, new IdentifierValue("idx_new"))),
null);
}
}
diff --git
a/parser/sql/engine/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDDLStatementVisitor.java
b/parser/sql/engine/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDDLStatementVisitor.java
index 8016bf27f19..7c1e8f98fbc 100644
---
a/parser/sql/engine/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDDLStatementVisitor.java
+++
b/parser/sql/engine/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDDLStatementVisitor.java
@@ -399,12 +399,9 @@ public final class HiveDDLStatementVisitor extends
HiveStatementVisitor implemen
@Override
public ASTNode visitAlterIndex(final AlterIndexContext ctx) {
- AlterIndexStatement result = new
AlterIndexStatement(getDatabaseType());
- IndexNameSegment indexName = new
IndexNameSegment(ctx.indexName().getStart().getStartIndex(),
ctx.indexName().getStop().getStopIndex(),
- new IdentifierValue(ctx.indexName().getText()));
- result.setIndex(new
IndexSegment(ctx.indexName().getStart().getStartIndex(),
ctx.indexName().getStop().getStopIndex(), indexName));
- result.setSimpleTable((SimpleTableSegment)
visit(ctx.tableNameWithDb()));
- return result;
+ IndexNameSegment indexName = new
IndexNameSegment(ctx.indexName().getStart().getStartIndex(),
ctx.indexName().getStop().getStopIndex(), new
IdentifierValue(ctx.indexName().getText()));
+ return new AlterIndexStatement(getDatabaseType(),
+ new IndexSegment(ctx.indexName().getStart().getStartIndex(),
ctx.indexName().getStop().getStopIndex(), indexName), null,
(SimpleTableSegment) visit(ctx.tableNameWithDb()));
}
@Override
diff --git
a/parser/sql/engine/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java
b/parser/sql/engine/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java
index 8a1f1f42b34..b66fbc6bed0 100644
---
a/parser/sql/engine/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java
+++
b/parser/sql/engine/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java
@@ -584,12 +584,10 @@ public final class OpenGaussDDLStatementVisitor extends
OpenGaussStatementVisito
@Override
public ASTNode visitAlterIndex(final AlterIndexContext ctx) {
- AlterIndexStatement result = new
AlterIndexStatement(getDatabaseType());
- result.setIndex(createIndexSegment((SimpleTableSegment)
visit(ctx.qualifiedName())));
- if (null !=
ctx.alterIndexDefinitionClause().renameIndexSpecification()) {
- result.setRenameIndex((IndexSegment)
visit(ctx.alterIndexDefinitionClause().renameIndexSpecification().indexName()));
- }
- return result;
+ IndexSegment renameIndex = null ==
ctx.alterIndexDefinitionClause().renameIndexSpecification()
+ ? null
+ : (IndexSegment)
visit(ctx.alterIndexDefinitionClause().renameIndexSpecification().indexName());
+ return new AlterIndexStatement(getDatabaseType(),
createIndexSegment((SimpleTableSegment) visit(ctx.qualifiedName())),
renameIndex, null);
}
private IndexSegment createIndexSegment(final SimpleTableSegment
tableSegment) {
diff --git
a/parser/sql/engine/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDDLStatementVisitor.java
b/parser/sql/engine/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDDLStatementVisitor.java
index 775c87cb048..1cf170f1d92 100644
---
a/parser/sql/engine/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDDLStatementVisitor.java
+++
b/parser/sql/engine/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDDLStatementVisitor.java
@@ -868,9 +868,7 @@ public final class OracleDDLStatementVisitor extends
OracleStatementVisitor impl
@Override
public ASTNode visitAlterIndex(final AlterIndexContext ctx) {
- AlterIndexStatement result = new
AlterIndexStatement(getDatabaseType());
- result.setIndex((IndexSegment) visit(ctx.indexName()));
- return result;
+ return new AlterIndexStatement(getDatabaseType(), (IndexSegment)
visit(ctx.indexName()), null, null);
}
@Override
diff --git
a/parser/sql/engine/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java
b/parser/sql/engine/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java
index 346da9c4d7a..dd2532ca2fa 100644
---
a/parser/sql/engine/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java
+++
b/parser/sql/engine/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java
@@ -726,12 +726,10 @@ public final class PostgreSQLDDLStatementVisitor extends
PostgreSQLStatementVisi
@Override
public ASTNode visitAlterIndex(final AlterIndexContext ctx) {
- AlterIndexStatement result = new
AlterIndexStatement(getDatabaseType());
- result.setIndex(createIndexSegment((SimpleTableSegment)
visit(ctx.qualifiedName())));
- if (null !=
ctx.alterIndexDefinitionClause().renameIndexSpecification()) {
- result.setRenameIndex((IndexSegment)
visit(ctx.alterIndexDefinitionClause().renameIndexSpecification().indexName()));
- }
- return result;
+ IndexSegment renameIndex = null ==
ctx.alterIndexDefinitionClause().renameIndexSpecification()
+ ? null
+ : (IndexSegment)
visit(ctx.alterIndexDefinitionClause().renameIndexSpecification().indexName());
+ return new AlterIndexStatement(getDatabaseType(),
createIndexSegment((SimpleTableSegment) visit(ctx.qualifiedName())),
renameIndex, null);
}
private IndexSegment createIndexSegment(final SimpleTableSegment
tableSegment) {
diff --git
a/parser/sql/engine/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/type/SQLServerDDLStatementVisitor.java
b/parser/sql/engine/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/type/SQLServerDDLStatementVisitor.java
index 0cead576441..aae1fa5732d 100644
---
a/parser/sql/engine/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/type/SQLServerDDLStatementVisitor.java
+++
b/parser/sql/engine/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/type/SQLServerDDLStatementVisitor.java
@@ -343,12 +343,7 @@ public final class SQLServerDDLStatementVisitor extends
SQLServerStatementVisito
@Override
public ASTNode visitAlterIndex(final AlterIndexContext ctx) {
- AlterIndexStatement result = new
AlterIndexStatement(getDatabaseType());
- if (null != ctx.indexName()) {
- result.setIndex((IndexSegment) visit(ctx.indexName()));
- }
- result.setSimpleTable((SimpleTableSegment) visit(ctx.tableName()));
- return result;
+ return new AlterIndexStatement(getDatabaseType(), null ==
ctx.indexName() ? null : (IndexSegment) visit(ctx.indexName()), null,
(SimpleTableSegment) visit(ctx.tableName()));
}
@Override
diff --git
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/index/AlterIndexStatement.java
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/index/AlterIndexStatement.java
index 70fac4775f8..4ea95e415e9 100644
---
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/index/AlterIndexStatement.java
+++
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/index/AlterIndexStatement.java
@@ -18,7 +18,6 @@
package
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.index;
import lombok.Getter;
-import lombok.Setter;
import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.index.IndexSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.column.ColumnSegment;
@@ -36,20 +35,23 @@ import java.util.Optional;
/**
* Alter index statement.
*/
-@Setter
public final class AlterIndexStatement extends DDLStatement {
- private IndexSegment index;
+ private final IndexSegment index;
- private IndexSegment renameIndex;
+ private final IndexSegment renameIndex;
- private SimpleTableSegment simpleTable;
+ private final SimpleTableSegment simpleTable;
@Getter
- private SQLStatementAttributes attributes;
+ private final SQLStatementAttributes attributes;
- public AlterIndexStatement(final DatabaseType databaseType) {
+ public AlterIndexStatement(final DatabaseType databaseType, final
IndexSegment index, final IndexSegment renameIndex, final SimpleTableSegment
simpleTable) {
super(databaseType);
+ this.index = index;
+ this.renameIndex = renameIndex;
+ this.simpleTable = simpleTable;
+ attributes = new SQLStatementAttributes(new
TableSQLStatementAttribute(simpleTable), new
AlterIndexIndexSQLStatementAttribute());
}
/**
@@ -81,7 +83,6 @@ public final class AlterIndexStatement extends DDLStatement {
@Override
public void buildAttributes() {
- attributes = new SQLStatementAttributes(new
TableSQLStatementAttribute(simpleTable), new
AlterIndexIndexSQLStatementAttribute());
}
private class AlterIndexIndexSQLStatementAttribute implements
IndexSQLStatementAttribute {
@@ -89,9 +90,7 @@ public final class AlterIndexStatement extends DDLStatement {
@Override
public Collection<IndexSegment> getIndexes() {
Collection<IndexSegment> result = new LinkedList<>();
- if (getIndex().isPresent()) {
- result.add(getIndex().get());
- }
+ getIndex().ifPresent(result::add);
getRenameIndex().ifPresent(result::add);
return result;
}