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 9fa7e857385 Optimize data type option implementations (#35313)
9fa7e857385 is described below

commit 9fa7e8573859bed2fcc2a9f29775d58d58b29fde
Author: Liang Zhang <zhangli...@apache.org>
AuthorDate: Sun May 4 13:33:11 2025 +0800

    Optimize data type option implementations (#35313)
    
    - MySQLDataTypeOption: Use a static final map for extra data types
    - OpenGaussDataTypeOption: Delegate to PostgreSQLDataTypeOption
    - OracleDataTypeOption: Use a static final map for extra data types
    - PostgreSQLDataTypeOption: Use a static final map for extra data types
---
 .../metadata/database/option/MySQLDataTypeOption.java  | 18 ++++++++++++++----
 infra/database/type/opengauss/pom.xml                  |  5 +++++
 .../database/option/OpenGaussDataTypeOption.java       | 18 +++---------------
 .../metadata/database/option/OracleDataTypeOption.java | 18 ++++++++++++++----
 .../database/option/PostgreSQLDataTypeOption.java      | 14 ++++++++++++--
 5 files changed, 48 insertions(+), 25 deletions(-)

diff --git 
a/infra/database/type/mysql/src/main/java/org/apache/shardingsphere/infra/database/mysql/metadata/database/option/MySQLDataTypeOption.java
 
b/infra/database/type/mysql/src/main/java/org/apache/shardingsphere/infra/database/mysql/metadata/database/option/MySQLDataTypeOption.java
index f22f081eca2..0c794eab985 100644
--- 
a/infra/database/type/mysql/src/main/java/org/apache/shardingsphere/infra/database/mysql/metadata/database/option/MySQLDataTypeOption.java
+++ 
b/infra/database/type/mysql/src/main/java/org/apache/shardingsphere/infra/database/mysql/metadata/database/option/MySQLDataTypeOption.java
@@ -17,12 +17,12 @@
 
 package 
org.apache.shardingsphere.infra.database.mysql.metadata.database.option;
 
+import com.cedarsoftware.util.CaseInsensitiveMap;
 import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.datatype.DefaultDataTypeOption;
 import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.datatype.DialectDataTypeOption;
 
 import java.math.BigInteger;
 import java.sql.Types;
-import java.util.HashMap;
 import java.util.Map;
 import java.util.Optional;
 
@@ -31,11 +31,16 @@ import java.util.Optional;
  */
 public final class MySQLDataTypeOption implements DialectDataTypeOption {
     
+    private static final Map<String, Integer> EXTRA_DATA_TYPES;
+    
     private final DialectDataTypeOption delegate = new DefaultDataTypeOption();
     
-    @Override
-    public Map<String, Integer> getExtraDataTypes() {
-        Map<String, Integer> result = new HashMap<>(10, 1F);
+    static {
+        EXTRA_DATA_TYPES = setUpExtraDataTypes();
+    }
+    
+    private static Map<String, Integer> setUpExtraDataTypes() {
+        Map<String, Integer> result = new CaseInsensitiveMap<>();
         result.put("JSON", Types.LONGVARCHAR);
         result.put("GEOMETRY", Types.BINARY);
         result.put("GEOMETRYCOLLECTION", Types.BINARY);
@@ -49,6 +54,11 @@ public final class MySQLDataTypeOption implements 
DialectDataTypeOption {
         return result;
     }
     
+    @Override
+    public Map<String, Integer> getExtraDataTypes() {
+        return EXTRA_DATA_TYPES;
+    }
+    
     @Override
     public Optional<Class<?>> findExtraSQLTypeClass(final int dataType, final 
boolean unsigned) {
         if (Types.TINYINT == dataType || Types.SMALLINT == dataType) {
diff --git a/infra/database/type/opengauss/pom.xml 
b/infra/database/type/opengauss/pom.xml
index e6c3d7b6499..ad11a010d80 100644
--- a/infra/database/type/opengauss/pom.xml
+++ b/infra/database/type/opengauss/pom.xml
@@ -32,6 +32,11 @@
             <artifactId>shardingsphere-infra-database-core</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.shardingsphere</groupId>
+            <artifactId>shardingsphere-infra-database-postgresql</artifactId>
+            <version>${project.version}</version>
+        </dependency>
         
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
diff --git 
a/infra/database/type/opengauss/src/main/java/org/apache/shardingsphere/infra/database/opengauss/metadata/database/option/OpenGaussDataTypeOption.java
 
b/infra/database/type/opengauss/src/main/java/org/apache/shardingsphere/infra/database/opengauss/metadata/database/option/OpenGaussDataTypeOption.java
index 9e889b7ac59..ef9b5533350 100644
--- 
a/infra/database/type/opengauss/src/main/java/org/apache/shardingsphere/infra/database/opengauss/metadata/database/option/OpenGaussDataTypeOption.java
+++ 
b/infra/database/type/opengauss/src/main/java/org/apache/shardingsphere/infra/database/opengauss/metadata/database/option/OpenGaussDataTypeOption.java
@@ -17,11 +17,9 @@
 
 package 
org.apache.shardingsphere.infra.database.opengauss.metadata.database.option;
 
-import com.cedarsoftware.util.CaseInsensitiveMap;
-import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.datatype.DefaultDataTypeOption;
 import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.datatype.DialectDataTypeOption;
+import 
org.apache.shardingsphere.infra.database.postgresql.metadata.database.option.PostgreSQLDataTypeOption;
 
-import java.sql.Types;
 import java.util.Map;
 import java.util.Optional;
 
@@ -30,21 +28,11 @@ import java.util.Optional;
  */
 public final class OpenGaussDataTypeOption implements DialectDataTypeOption {
     
-    private final DialectDataTypeOption delegate = new DefaultDataTypeOption();
+    private final DialectDataTypeOption delegate = new 
PostgreSQLDataTypeOption();
     
     @Override
     public Map<String, Integer> getExtraDataTypes() {
-        Map<String, Integer> result = new CaseInsensitiveMap<>();
-        result.put("SMALLINT", Types.SMALLINT);
-        result.put("INT", Types.INTEGER);
-        result.put("INTEGER", Types.INTEGER);
-        result.put("BIGINT", Types.BIGINT);
-        result.put("DECIMAL", Types.DECIMAL);
-        result.put("NUMERIC", Types.NUMERIC);
-        result.put("REAL", Types.REAL);
-        result.put("BOOL", Types.BOOLEAN);
-        result.put("CHARACTER VARYING", Types.VARCHAR);
-        return result;
+        return delegate.getExtraDataTypes();
     }
     
     @Override
diff --git 
a/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/metadata/database/option/OracleDataTypeOption.java
 
b/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/metadata/database/option/OracleDataTypeOption.java
index f8c0e703983..26834918227 100644
--- 
a/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/metadata/database/option/OracleDataTypeOption.java
+++ 
b/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/metadata/database/option/OracleDataTypeOption.java
@@ -17,11 +17,11 @@
 
 package 
org.apache.shardingsphere.infra.database.oracle.metadata.database.option;
 
+import com.cedarsoftware.util.CaseInsensitiveMap;
 import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.datatype.DefaultDataTypeOption;
 import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.datatype.DialectDataTypeOption;
 
 import java.sql.Types;
-import java.util.HashMap;
 import java.util.Map;
 import java.util.Optional;
 
@@ -30,11 +30,16 @@ import java.util.Optional;
  */
 public final class OracleDataTypeOption implements DialectDataTypeOption {
     
+    private static final Map<String, Integer> EXTRA_DATA_TYPES;
+    
     private final DialectDataTypeOption delegate = new DefaultDataTypeOption();
     
-    @Override
-    public Map<String, Integer> getExtraDataTypes() {
-        Map<String, Integer> result = new HashMap<>(8);
+    static {
+        EXTRA_DATA_TYPES = setUpExtraDataTypes();
+    }
+    
+    private static Map<String, Integer> setUpExtraDataTypes() {
+        Map<String, Integer> result = new CaseInsensitiveMap<>();
         result.put("SMALLINT", Types.SMALLINT);
         result.put("TINYINT", Types.TINYINT);
         result.put("INT", Types.INTEGER);
@@ -49,6 +54,11 @@ public final class OracleDataTypeOption implements 
DialectDataTypeOption {
         return result;
     }
     
+    @Override
+    public Map<String, Integer> getExtraDataTypes() {
+        return EXTRA_DATA_TYPES;
+    }
+    
     @Override
     public Optional<Class<?>> findExtraSQLTypeClass(final int dataType, final 
boolean unsigned) {
         return Optional.empty();
diff --git 
a/infra/database/type/postgresql/src/main/java/org/apache/shardingsphere/infra/database/postgresql/metadata/database/option/PostgreSQLDataTypeOption.java
 
b/infra/database/type/postgresql/src/main/java/org/apache/shardingsphere/infra/database/postgresql/metadata/database/option/PostgreSQLDataTypeOption.java
index e3d148f7f12..6461c4c7c38 100644
--- 
a/infra/database/type/postgresql/src/main/java/org/apache/shardingsphere/infra/database/postgresql/metadata/database/option/PostgreSQLDataTypeOption.java
+++ 
b/infra/database/type/postgresql/src/main/java/org/apache/shardingsphere/infra/database/postgresql/metadata/database/option/PostgreSQLDataTypeOption.java
@@ -30,10 +30,15 @@ import java.util.Optional;
  */
 public final class PostgreSQLDataTypeOption implements DialectDataTypeOption {
     
+    private static final Map<String, Integer> EXTRA_DATA_TYPES;
+    
     private final DialectDataTypeOption delegate = new DefaultDataTypeOption();
     
-    @Override
-    public Map<String, Integer> getExtraDataTypes() {
+    static {
+        EXTRA_DATA_TYPES = setUpExtraDataTypes();
+    }
+    
+    private static Map<String, Integer> setUpExtraDataTypes() {
         Map<String, Integer> result = new CaseInsensitiveMap<>();
         result.put("SMALLINT", Types.SMALLINT);
         result.put("INT", Types.INTEGER);
@@ -47,6 +52,11 @@ public final class PostgreSQLDataTypeOption implements 
DialectDataTypeOption {
         return result;
     }
     
+    @Override
+    public Map<String, Integer> getExtraDataTypes() {
+        return EXTRA_DATA_TYPES;
+    }
+    
     @Override
     public Optional<Class<?>> findExtraSQLTypeClass(final int dataType, final 
boolean unsigned) {
         if (Types.SMALLINT == dataType) {

Reply via email to