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 08a98b90502 Refactor getAlterTableOption method to return Optional<DialectAlterTableOption> (#35292) 08a98b90502 is described below commit 08a98b905029315dd0763df71415183aaa82e67e Author: Liang Zhang <zhangli...@apache.org> AuthorDate: Tue Apr 29 20:35:05 2025 +0800 Refactor getAlterTableOption method to return Optional<DialectAlterTableOption> (#35292) --- .../token/generator/ddl/EncryptAlterTableTokenGenerator.java | 6 +++--- .../core/metadata/database/metadata/DialectDatabaseMetaData.java | 4 ++-- .../database/oracle/metadata/database/OracleDatabaseMetaData.java | 6 ++++-- .../sqlserver/metadata/database/SQLServerDatabaseMetaData.java | 6 ++++-- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/ddl/EncryptAlterTableTokenGenerator.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/ddl/EncryptAlterTableTokenGenerator.java index 1f61a7f8746..9fa19a45bd7 100644 --- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/ddl/EncryptAlterTableTokenGenerator.java +++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/ddl/EncryptAlterTableTokenGenerator.java @@ -75,9 +75,9 @@ public final class EncryptAlterTableTokenGenerator implements CollectionSQLToken result.addAll(getModifyColumnTokens(encryptTable, sqlStatementContext.getSqlStatement().getModifyColumnDefinitions())); result.addAll(getChangeColumnTokens(encryptTable, sqlStatementContext.getSqlStatement().getChangeColumnDefinitions())); List<SQLToken> dropColumnTokens = getDropColumnTokens(encryptTable, sqlStatementContext.getSqlStatement().getDropColumnDefinitions()); - DialectAlterTableOption alterTableOption = new DatabaseTypeRegistry(sqlStatementContext.getDatabaseType()).getDialectDatabaseMetaData().getAlterTableOption(); - if (alterTableOption.isSupportMergeDropColumns()) { - result.addAll(mergeDropColumnStatement(dropColumnTokens, alterTableOption.isContainsParenthesesOnMergeDropColumns())); + Optional<DialectAlterTableOption> alterTableOption = new DatabaseTypeRegistry(sqlStatementContext.getDatabaseType()).getDialectDatabaseMetaData().getAlterTableOption(); + if (alterTableOption.isPresent() && alterTableOption.get().isSupportMergeDropColumns()) { + result.addAll(mergeDropColumnStatement(dropColumnTokens, alterTableOption.get().isContainsParenthesesOnMergeDropColumns())); } else { result.addAll(dropColumnTokens); } diff --git a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/metadata/DialectDatabaseMetaData.java b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/metadata/DialectDatabaseMetaData.java index 6995aa1ab9a..0e248ba737e 100644 --- a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/metadata/DialectDatabaseMetaData.java +++ b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/metadata/DialectDatabaseMetaData.java @@ -143,7 +143,7 @@ public interface DialectDatabaseMetaData extends DatabaseTypedSPI { * * @return alter table option */ - default DialectAlterTableOption getAlterTableOption() { - return new DialectAlterTableOption(false, false); + default Optional<DialectAlterTableOption> getAlterTableOption() { + return Optional.empty(); } } diff --git a/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/metadata/database/OracleDatabaseMetaData.java b/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/metadata/database/OracleDatabaseMetaData.java index 350254f7178..15e039e19e7 100644 --- a/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/metadata/database/OracleDatabaseMetaData.java +++ b/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/metadata/database/OracleDatabaseMetaData.java @@ -29,6 +29,8 @@ import org.apache.shardingsphere.infra.database.core.metadata.database.metadata. import org.apache.shardingsphere.infra.database.oracle.metadata.database.option.OracleDataTypeOption; import org.apache.shardingsphere.infra.database.oracle.metadata.database.option.OracleSchemaOption; +import java.util.Optional; + /** * Database meta data of Oracle. */ @@ -70,8 +72,8 @@ public final class OracleDatabaseMetaData implements DialectDatabaseMetaData { } @Override - public DialectAlterTableOption getAlterTableOption() { - return new DialectAlterTableOption(true, true); + public Optional<DialectAlterTableOption> getAlterTableOption() { + return Optional.of(new DialectAlterTableOption(true, true)); } @Override diff --git a/infra/database/type/sqlserver/src/main/java/org/apache/shardingsphere/infra/database/sqlserver/metadata/database/SQLServerDatabaseMetaData.java b/infra/database/type/sqlserver/src/main/java/org/apache/shardingsphere/infra/database/sqlserver/metadata/database/SQLServerDatabaseMetaData.java index 9981b8582dc..a20740540fb 100644 --- a/infra/database/type/sqlserver/src/main/java/org/apache/shardingsphere/infra/database/sqlserver/metadata/database/SQLServerDatabaseMetaData.java +++ b/infra/database/type/sqlserver/src/main/java/org/apache/shardingsphere/infra/database/sqlserver/metadata/database/SQLServerDatabaseMetaData.java @@ -24,6 +24,8 @@ import org.apache.shardingsphere.infra.database.core.metadata.database.metadata. import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.schema.DefaultSchemaOption; import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.schema.DialectSchemaOption; +import java.util.Optional; + /** * Database meta data of SQLServer. */ @@ -45,8 +47,8 @@ public final class SQLServerDatabaseMetaData implements DialectDatabaseMetaData } @Override - public DialectAlterTableOption getAlterTableOption() { - return new DialectAlterTableOption(true, false); + public Optional<DialectAlterTableOption> getAlterTableOption() { + return Optional.of(new DialectAlterTableOption(true, false)); } @Override