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

Reply via email to