This is an automated email from the ASF dual-hosted git repository.

panjuan 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 70f664daa5c merge TrunkDatabaseType and BranchDatabaseType into 
DatabaseType (#27313)
70f664daa5c is described below

commit 70f664daa5c3737554b17920eb9c85f19bbb278a
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Jul 20 05:58:45 2023 +0800

    merge TrunkDatabaseType and BranchDatabaseType into DatabaseType (#27313)
---
 .../infra/database/DatabaseTypeEngine.java         |  7 ++---
 .../props/DataSourcePropertiesValidator.java       |  2 +-
 .../database/core/spi/DatabaseTypedSPILoader.java  |  5 ++--
 .../database/core/type/BranchDatabaseType.java     | 33 ----------------------
 .../type/{checker => }/DatabaseTypeChecker.java    |  2 +-
 .../database/core/type/DatabaseTypeFactory.java    |  2 +-
 .../database/core/type/TrunkDatabaseType.java      | 26 -----------------
 .../UnsupportedStorageTypeException.java           |  2 +-
 .../fixture/InfraBranchDatabaseTypeFixture.java    | 10 +++----
 .../fixture/InfraTrunkDatabaseTypeFixture.java     |  4 +--
 .../infra/database/spi/DatabaseType.java           |  9 ++++++
 .../infra/database/h2/H2DatabaseType.java          | 10 +++----
 .../infra/database/h2/H2DatabaseTypeTest.java      |  5 ----
 .../database/mariadb/MariaDBDatabaseType.java      | 10 +++----
 .../database/mariadb/MariaDBDatabaseTypeTest.java  |  5 ----
 .../infra/database/mysql/MySQLDatabaseType.java    |  4 +--
 .../database/opengauss/OpenGaussDatabaseType.java  |  4 +--
 .../infra/database/oracle/OracleDatabaseType.java  |  4 +--
 .../postgresql/PostgreSQLDatabaseType.java         |  4 +--
 .../infra/database/sql92/SQL92DatabaseType.java    |  4 +--
 .../database/sqlserver/SQLServerDatabaseType.java  |  4 +--
 .../pipeline/common/util/JDBCStreamQueryUtils.java |  7 ++---
 .../core/preparer/PipelineJobPreparerUtils.java    | 10 ++-----
 .../metadata/factory/ExternalMetaDataFactory.java  |  2 +-
 .../infra/database/type/MockedDatabaseType.java    |  4 +--
 25 files changed, 56 insertions(+), 123 deletions(-)

diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/database/DatabaseTypeEngine.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/database/DatabaseTypeEngine.java
index cdb13a6c905..497641fddac 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/database/DatabaseTypeEngine.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/database/DatabaseTypeEngine.java
@@ -23,7 +23,6 @@ import 
org.apache.shardingsphere.infra.config.database.DatabaseConfiguration;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeFactory;
-import org.apache.shardingsphere.infra.database.core.type.BranchDatabaseType;
 import org.apache.shardingsphere.infra.database.spi.DatabaseType;
 import org.apache.shardingsphere.infra.datasource.state.DataSourceStateManager;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.wrapper.SQLWrapperException;
@@ -141,7 +140,7 @@ public final class DatabaseTypeEngine {
      */
     public static DatabaseType getTrunkDatabaseType(final String name) {
         DatabaseType databaseType = 
TypedSPILoader.getService(DatabaseType.class, name);
-        return databaseType instanceof BranchDatabaseType ? 
((BranchDatabaseType) databaseType).getTrunkDatabaseType() : databaseType;
+        return databaseType.getTrunkDatabaseType().orElse(databaseType);
     }
     
     /**
@@ -151,7 +150,7 @@ public final class DatabaseTypeEngine {
      * @return name of trunk database type
      */
     public static String getTrunkDatabaseTypeName(final DatabaseType 
databaseType) {
-        return databaseType instanceof BranchDatabaseType ? 
((BranchDatabaseType) databaseType).getTrunkDatabaseType().getType() : 
databaseType.getType();
+        return 
databaseType.getTrunkDatabaseType().map(DatabaseType::getType).orElse(databaseType.getType());
     }
     
     /**
@@ -174,7 +173,7 @@ public final class DatabaseTypeEngine {
     public static Collection<DatabaseType> 
getTrunkAndBranchDatabaseTypes(final Collection<String> trunkDatabaseTypes) {
         Collection<DatabaseType> result = new LinkedList<>();
         for (DatabaseType each : 
ShardingSphereServiceLoader.getServiceInstances(DatabaseType.class)) {
-            if (trunkDatabaseTypes.contains(each.getType()) || each instanceof 
BranchDatabaseType && trunkDatabaseTypes.contains(((BranchDatabaseType) 
each).getTrunkDatabaseType().getType())) {
+            if (trunkDatabaseTypes.contains(each.getType()) || 
each.getTrunkDatabaseType().map(optional -> 
trunkDatabaseTypes.contains(optional.getType())).orElse(false)) {
                 result.add(each);
             }
         }
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/datasource/props/DataSourcePropertiesValidator.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/datasource/props/DataSourcePropertiesValidator.java
index 3a7167e5bb7..edc3c7613ee 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/datasource/props/DataSourcePropertiesValidator.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/datasource/props/DataSourcePropertiesValidator.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.infra.datasource.props;
 
-import 
org.apache.shardingsphere.infra.database.core.type.checker.DatabaseTypeChecker;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeChecker;
 import 
org.apache.shardingsphere.infra.datasource.pool.creator.DataSourcePoolCreator;
 import 
org.apache.shardingsphere.infra.datasource.pool.destroyer.DataSourcePoolDestroyer;
 import 
org.apache.shardingsphere.infra.datasource.pool.metadata.DataSourcePoolMetaData;
diff --git 
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/spi/DatabaseTypedSPILoader.java
 
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/spi/DatabaseTypedSPILoader.java
index 5e345cfb27a..7164350d083 100644
--- 
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/spi/DatabaseTypedSPILoader.java
+++ 
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/spi/DatabaseTypedSPILoader.java
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.infra.database.core.spi;
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
-import org.apache.shardingsphere.infra.database.core.type.BranchDatabaseType;
 import org.apache.shardingsphere.infra.database.spi.DatabaseType;
 import 
org.apache.shardingsphere.infra.util.spi.exception.ServiceProviderNotFoundServerException;
 import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
@@ -45,8 +44,8 @@ public final class DatabaseTypedSPILoader {
         if (result.isPresent()) {
             return result;
         }
-        if (databaseType instanceof BranchDatabaseType) {
-            return TypedSPILoader.findService(spiClass, ((BranchDatabaseType) 
databaseType).getTrunkDatabaseType());
+        if (databaseType.getTrunkDatabaseType().isPresent()) {
+            return TypedSPILoader.findService(spiClass, 
databaseType.getTrunkDatabaseType().get());
         }
         return result;
     }
diff --git 
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/type/BranchDatabaseType.java
 
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/type/BranchDatabaseType.java
deleted file mode 100644
index 01929068b95..00000000000
--- 
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/type/BranchDatabaseType.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.infra.database.core.type;
-
-import org.apache.shardingsphere.infra.database.spi.DatabaseType;
-
-/**
- * Branch database type.
- */
-public interface BranchDatabaseType extends DatabaseType {
-    
-    /**
-     * Get trunk database type.
-     * 
-     * @return trunk database type
-     */
-    DatabaseType getTrunkDatabaseType();
-}
diff --git 
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/type/checker/DatabaseTypeChecker.java
 
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/type/DatabaseTypeChecker.java
similarity index 98%
rename from 
infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/type/checker/DatabaseTypeChecker.java
rename to 
infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/type/DatabaseTypeChecker.java
index ce314ce986b..476f2da6ae9 100644
--- 
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/type/checker/DatabaseTypeChecker.java
+++ 
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/type/DatabaseTypeChecker.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.infra.database.core.type.checker;
+package org.apache.shardingsphere.infra.database.core.type;
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
diff --git 
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/type/DatabaseTypeFactory.java
 
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/type/DatabaseTypeFactory.java
index 9f1d5a33271..3da5e85899f 100644
--- 
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/type/DatabaseTypeFactory.java
+++ 
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/type/DatabaseTypeFactory.java
@@ -44,7 +44,7 @@ public final class DatabaseTypeFactory {
             return TypedSPILoader.getService(DatabaseType.class, null);
         }
         for (DatabaseType each : databaseTypes) {
-            if (each instanceof BranchDatabaseType) {
+            if (each.getTrunkDatabaseType().isPresent()) {
                 return each;
             }
         }
diff --git 
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/type/TrunkDatabaseType.java
 
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/type/TrunkDatabaseType.java
deleted file mode 100644
index 0170968fdfb..00000000000
--- 
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/type/TrunkDatabaseType.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.infra.database.core.type;
-
-import org.apache.shardingsphere.infra.database.spi.DatabaseType;
-
-/**
- * Trunk database type.
- */
-public interface TrunkDatabaseType extends DatabaseType {
-}
diff --git 
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/type/checker/UnsupportedStorageTypeException.java
 
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/type/UnsupportedStorageTypeException.java
similarity index 96%
rename from 
infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/type/checker/UnsupportedStorageTypeException.java
rename to 
infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/type/UnsupportedStorageTypeException.java
index 144138c122b..6fd7d6d7df1 100644
--- 
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/type/checker/UnsupportedStorageTypeException.java
+++ 
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/type/UnsupportedStorageTypeException.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.infra.database.core.type.checker;
+package org.apache.shardingsphere.infra.database.core.type;
 
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
diff --git 
a/infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/type/fixture/InfraBranchDatabaseTypeFixture.java
 
b/infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/type/fixture/InfraBranchDatabaseTypeFixture.java
index d9745706850..f84bf4158f5 100644
--- 
a/infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/type/fixture/InfraBranchDatabaseTypeFixture.java
+++ 
b/infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/type/fixture/InfraBranchDatabaseTypeFixture.java
@@ -17,18 +17,18 @@
 
 package org.apache.shardingsphere.infra.database.core.type.fixture;
 
-import org.apache.shardingsphere.infra.database.core.type.BranchDatabaseType;
 import org.apache.shardingsphere.infra.database.spi.DataSourceMetaData;
 import org.apache.shardingsphere.infra.database.spi.DatabaseType;
-import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
 import org.apache.shardingsphere.infra.util.quote.QuoteCharacter;
+import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
 
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Optional;
 
-public final class InfraBranchDatabaseTypeFixture implements 
BranchDatabaseType {
+public final class InfraBranchDatabaseTypeFixture implements DatabaseType {
     
     @Override
     public QuoteCharacter getQuoteCharacter() {
@@ -56,8 +56,8 @@ public final class InfraBranchDatabaseTypeFixture implements 
BranchDatabaseType
     }
     
     @Override
-    public DatabaseType getTrunkDatabaseType() {
-        return TypedSPILoader.getService(DatabaseType.class, 
"INFRA.TRUNK.FIXTURE");
+    public Optional<DatabaseType> getTrunkDatabaseType() {
+        return Optional.of(TypedSPILoader.getService(DatabaseType.class, 
"INFRA.TRUNK.FIXTURE"));
     }
     
     @Override
diff --git 
a/infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/type/fixture/InfraTrunkDatabaseTypeFixture.java
 
b/infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/type/fixture/InfraTrunkDatabaseTypeFixture.java
index 243dfcb916e..7e7049bfac9 100644
--- 
a/infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/type/fixture/InfraTrunkDatabaseTypeFixture.java
+++ 
b/infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/type/fixture/InfraTrunkDatabaseTypeFixture.java
@@ -18,7 +18,7 @@
 package org.apache.shardingsphere.infra.database.core.type.fixture;
 
 import org.apache.shardingsphere.infra.database.spi.DataSourceMetaData;
-import org.apache.shardingsphere.infra.database.core.type.TrunkDatabaseType;
+import org.apache.shardingsphere.infra.database.spi.DatabaseType;
 import org.apache.shardingsphere.infra.util.quote.QuoteCharacter;
 
 import java.util.Collection;
@@ -26,7 +26,7 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
-public final class InfraTrunkDatabaseTypeFixture implements TrunkDatabaseType {
+public final class InfraTrunkDatabaseTypeFixture implements DatabaseType {
     
     @Override
     public QuoteCharacter getQuoteCharacter() {
diff --git 
a/infra/database/spi/src/main/java/org/apache/shardingsphere/infra/database/spi/DatabaseType.java
 
b/infra/database/spi/src/main/java/org/apache/shardingsphere/infra/database/spi/DatabaseType.java
index 5511fa155ba..ab2fbdac9d5 100644
--- 
a/infra/database/spi/src/main/java/org/apache/shardingsphere/infra/database/spi/DatabaseType.java
+++ 
b/infra/database/spi/src/main/java/org/apache/shardingsphere/infra/database/spi/DatabaseType.java
@@ -144,6 +144,15 @@ public interface DatabaseType extends TypedSPI {
         return false;
     }
     
+    /**
+     * Get trunk database type.
+     * 
+     * @return trunk database type
+     */
+    default Optional<DatabaseType> getTrunkDatabaseType() {
+        return Optional.empty();
+    }
+    
     @Override
     String getType();
 }
diff --git 
a/infra/database/type/h2/src/main/java/org/apache/shardingsphere/infra/database/h2/H2DatabaseType.java
 
b/infra/database/type/h2/src/main/java/org/apache/shardingsphere/infra/database/h2/H2DatabaseType.java
index 5998166d0f0..561b590e324 100644
--- 
a/infra/database/type/h2/src/main/java/org/apache/shardingsphere/infra/database/h2/H2DatabaseType.java
+++ 
b/infra/database/type/h2/src/main/java/org/apache/shardingsphere/infra/database/h2/H2DatabaseType.java
@@ -17,19 +17,19 @@
 
 package org.apache.shardingsphere.infra.database.h2;
 
-import org.apache.shardingsphere.infra.database.core.type.BranchDatabaseType;
 import org.apache.shardingsphere.infra.database.spi.DatabaseType;
-import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
 import org.apache.shardingsphere.infra.util.quote.QuoteCharacter;
+import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
 
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Map;
+import java.util.Optional;
 
 /**
  * Database type of H2.
  */
-public final class H2DatabaseType implements BranchDatabaseType {
+public final class H2DatabaseType implements DatabaseType {
     
     @Override
     public QuoteCharacter getQuoteCharacter() {
@@ -47,8 +47,8 @@ public final class H2DatabaseType implements 
BranchDatabaseType {
     }
     
     @Override
-    public DatabaseType getTrunkDatabaseType() {
-        return TypedSPILoader.getService(DatabaseType.class, "MySQL");
+    public Optional<DatabaseType> getTrunkDatabaseType() {
+        return Optional.of(TypedSPILoader.getService(DatabaseType.class, 
"MySQL"));
     }
     
     @Override
diff --git 
a/infra/database/type/h2/src/test/java/org/apache/shardingsphere/infra/database/h2/H2DatabaseTypeTest.java
 
b/infra/database/type/h2/src/test/java/org/apache/shardingsphere/infra/database/h2/H2DatabaseTypeTest.java
index dc5da4f8916..ac35adb6801 100644
--- 
a/infra/database/type/h2/src/test/java/org/apache/shardingsphere/infra/database/h2/H2DatabaseTypeTest.java
+++ 
b/infra/database/type/h2/src/test/java/org/apache/shardingsphere/infra/database/h2/H2DatabaseTypeTest.java
@@ -45,11 +45,6 @@ class H2DatabaseTypeTest {
         assertThat(new 
H2DatabaseType().getDataSourceMetaData("jdbc:h2:mem:foo_ds", "sa"), 
instanceOf(H2DataSourceMetaData.class));
     }
     
-    @Test
-    void assertGetTrunkDatabaseType() {
-        assertThat(new H2DatabaseType().getTrunkDatabaseType().getType(), 
is("MySQL"));
-    }
-    
     @Test
     void assertGetSystemDatabaseSchemaMap() {
         assertTrue(new 
H2DatabaseType().getSystemDatabaseSchemaMap().isEmpty());
diff --git 
a/infra/database/type/mariadb/src/main/java/org/apache/shardingsphere/infra/database/mariadb/MariaDBDatabaseType.java
 
b/infra/database/type/mariadb/src/main/java/org/apache/shardingsphere/infra/database/mariadb/MariaDBDatabaseType.java
index 76dc18d9dd1..2188d65a33c 100644
--- 
a/infra/database/type/mariadb/src/main/java/org/apache/shardingsphere/infra/database/mariadb/MariaDBDatabaseType.java
+++ 
b/infra/database/type/mariadb/src/main/java/org/apache/shardingsphere/infra/database/mariadb/MariaDBDatabaseType.java
@@ -17,19 +17,19 @@
 
 package org.apache.shardingsphere.infra.database.mariadb;
 
-import org.apache.shardingsphere.infra.database.core.type.BranchDatabaseType;
 import org.apache.shardingsphere.infra.database.spi.DatabaseType;
-import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
 import org.apache.shardingsphere.infra.util.quote.QuoteCharacter;
+import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
 
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Map;
+import java.util.Optional;
 
 /**
  * Database type of MariaDB.
  */
-public final class MariaDBDatabaseType implements BranchDatabaseType {
+public final class MariaDBDatabaseType implements DatabaseType {
     
     @Override
     public QuoteCharacter getQuoteCharacter() {
@@ -47,8 +47,8 @@ public final class MariaDBDatabaseType implements 
BranchDatabaseType {
     }
     
     @Override
-    public DatabaseType getTrunkDatabaseType() {
-        return TypedSPILoader.getService(DatabaseType.class, "MySQL");
+    public Optional<DatabaseType> getTrunkDatabaseType() {
+        return Optional.of(TypedSPILoader.getService(DatabaseType.class, 
"MySQL"));
     }
     
     @Override
diff --git 
a/infra/database/type/mariadb/src/test/java/org/apache/shardingsphere/infra/database/mariadb/MariaDBDatabaseTypeTest.java
 
b/infra/database/type/mariadb/src/test/java/org/apache/shardingsphere/infra/database/mariadb/MariaDBDatabaseTypeTest.java
index a40f8bf8b43..11426e70bcd 100644
--- 
a/infra/database/type/mariadb/src/test/java/org/apache/shardingsphere/infra/database/mariadb/MariaDBDatabaseTypeTest.java
+++ 
b/infra/database/type/mariadb/src/test/java/org/apache/shardingsphere/infra/database/mariadb/MariaDBDatabaseTypeTest.java
@@ -44,11 +44,6 @@ class MariaDBDatabaseTypeTest {
         assertThat(new 
MariaDBDatabaseType().getDataSourceMetaData("jdbc:mariadb://localhost:3306/foo_ds",
 "root"), instanceOf(MariaDBDataSourceMetaData.class));
     }
     
-    @Test
-    void assertGetTrunkDatabaseType() {
-        assertThat(new MariaDBDatabaseType().getTrunkDatabaseType().getType(), 
is("MySQL"));
-    }
-    
     @Test
     void assertGetSystemDatabaseSchemaMap() {
         assertTrue(new 
MariaDBDatabaseType().getSystemDatabaseSchemaMap().isEmpty());
diff --git 
a/infra/database/type/mysql/src/main/java/org/apache/shardingsphere/infra/database/mysql/MySQLDatabaseType.java
 
b/infra/database/type/mysql/src/main/java/org/apache/shardingsphere/infra/database/mysql/MySQLDatabaseType.java
index 6202f20116d..c1195a9dcb5 100644
--- 
a/infra/database/type/mysql/src/main/java/org/apache/shardingsphere/infra/database/mysql/MySQLDatabaseType.java
+++ 
b/infra/database/type/mysql/src/main/java/org/apache/shardingsphere/infra/database/mysql/MySQLDatabaseType.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.infra.database.mysql;
 
-import org.apache.shardingsphere.infra.database.core.type.TrunkDatabaseType;
+import org.apache.shardingsphere.infra.database.spi.DatabaseType;
 import org.apache.shardingsphere.infra.util.quote.QuoteCharacter;
 
 import java.util.Arrays;
@@ -31,7 +31,7 @@ import java.util.Set;
 /**
  * Database type of MySQL.
  */
-public final class MySQLDatabaseType implements TrunkDatabaseType {
+public final class MySQLDatabaseType implements DatabaseType {
     
     private static final Set<String> RESERVED_WORDS = new 
HashSet<>(Arrays.asList(
             "ADD", "ALL", "ALTER", "ANALYZE", "AND", "AS", "ASC", "BEFORE", 
"BETWEEN", "BIGINT", "BINARY", "BLOB", "BOTH", "BY", "CALL",
diff --git 
a/infra/database/type/opengauss/src/main/java/org/apache/shardingsphere/infra/database/opengauss/OpenGaussDatabaseType.java
 
b/infra/database/type/opengauss/src/main/java/org/apache/shardingsphere/infra/database/opengauss/OpenGaussDatabaseType.java
index 6714c6d4174..93be37988eb 100644
--- 
a/infra/database/type/opengauss/src/main/java/org/apache/shardingsphere/infra/database/opengauss/OpenGaussDatabaseType.java
+++ 
b/infra/database/type/opengauss/src/main/java/org/apache/shardingsphere/infra/database/opengauss/OpenGaussDatabaseType.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.infra.database.opengauss;
 
-import org.apache.shardingsphere.infra.database.core.type.TrunkDatabaseType;
+import org.apache.shardingsphere.infra.database.spi.DatabaseType;
 import org.apache.shardingsphere.infra.util.quote.QuoteCharacter;
 
 import java.util.Arrays;
@@ -32,7 +32,7 @@ import java.util.Set;
 /**
  * Database type of openGauss.
  */
-public final class OpenGaussDatabaseType implements TrunkDatabaseType {
+public final class OpenGaussDatabaseType implements DatabaseType {
     
     private static final Set<String> RESERVED_WORDS = new 
HashSet<>(Arrays.asList(
             "ALL", "ANALYSE", "ANALYZE", "AND", "ANY", "ARRAY", "AS", "ASC", 
"ASYMMETRIC", "AUTHID", "AUTHORIZATION", "BETWEEN", "BIGINT",
diff --git 
a/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/OracleDatabaseType.java
 
b/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/OracleDatabaseType.java
index 6dfc2b1fabd..643a294571e 100644
--- 
a/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/OracleDatabaseType.java
+++ 
b/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/OracleDatabaseType.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.infra.database.oracle;
 
-import org.apache.shardingsphere.infra.database.core.type.TrunkDatabaseType;
+import org.apache.shardingsphere.infra.database.spi.DatabaseType;
 import org.apache.shardingsphere.infra.util.quote.QuoteCharacter;
 
 import java.sql.Connection;
@@ -32,7 +32,7 @@ import java.util.Optional;
 /**
  * Database type of Oracle.
  */
-public final class OracleDatabaseType implements TrunkDatabaseType {
+public final class OracleDatabaseType implements DatabaseType {
     
     private static final List<String> RESERVED_KEYWORDS = 
Arrays.asList("ACCESS", "ADD", "ALL", "ALTER", "AND", "ANY", "ARRAYLEN", "AS", 
"ASC", "AUDIT", "BETWEEN", "BY", "CHAR", "CHECK", "CLUSTER",
             "COLUMN", "COMMENT", "COMPRESS", "CONNECT", "CREATE", "CURRENT", 
"DATE", "DECIMAL", "DEFAULT", "DELETE", "DESC", "DISTINCT", "DROP", "ELSE", 
"EXCLUSIVE", "EXISTS", "FILE", "FLOAT", "FOR",
diff --git 
a/infra/database/type/postgresql/src/main/java/org/apache/shardingsphere/infra/database/postgresql/PostgreSQLDatabaseType.java
 
b/infra/database/type/postgresql/src/main/java/org/apache/shardingsphere/infra/database/postgresql/PostgreSQLDatabaseType.java
index 487cae99dd7..4f1aa12252b 100644
--- 
a/infra/database/type/postgresql/src/main/java/org/apache/shardingsphere/infra/database/postgresql/PostgreSQLDatabaseType.java
+++ 
b/infra/database/type/postgresql/src/main/java/org/apache/shardingsphere/infra/database/postgresql/PostgreSQLDatabaseType.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.infra.database.postgresql;
 
-import org.apache.shardingsphere.infra.database.core.type.TrunkDatabaseType;
+import org.apache.shardingsphere.infra.database.spi.DatabaseType;
 import org.apache.shardingsphere.infra.util.quote.QuoteCharacter;
 
 import java.util.Arrays;
@@ -32,7 +32,7 @@ import java.util.Set;
 /**
  * Database type of PostgreSQL.
  */
-public final class PostgreSQLDatabaseType implements TrunkDatabaseType {
+public final class PostgreSQLDatabaseType implements DatabaseType {
     
     private static final Set<String> RESERVED_WORDS = new 
HashSet<>(Arrays.asList(
             "ALL", "ANALYSE", "ANALYZE", "AND", "ANY", "ARRAY", "AS", "ASC", 
"ASYMMETRIC", "AUTHORIZATION", "BETWEEN", "BIGINT", "BINARY",
diff --git 
a/infra/database/type/sql92/src/main/java/org/apache/shardingsphere/infra/database/sql92/SQL92DatabaseType.java
 
b/infra/database/type/sql92/src/main/java/org/apache/shardingsphere/infra/database/sql92/SQL92DatabaseType.java
index ff31bbf91a9..a216d9e8181 100644
--- 
a/infra/database/type/sql92/src/main/java/org/apache/shardingsphere/infra/database/sql92/SQL92DatabaseType.java
+++ 
b/infra/database/type/sql92/src/main/java/org/apache/shardingsphere/infra/database/sql92/SQL92DatabaseType.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.infra.database.sql92;
 
-import org.apache.shardingsphere.infra.database.core.type.TrunkDatabaseType;
+import org.apache.shardingsphere.infra.database.spi.DatabaseType;
 import org.apache.shardingsphere.infra.util.quote.QuoteCharacter;
 
 import java.util.Collection;
@@ -27,7 +27,7 @@ import java.util.Map;
 /**
  * Database type of SQL92.
  */
-public final class SQL92DatabaseType implements TrunkDatabaseType {
+public final class SQL92DatabaseType implements DatabaseType {
     
     @Override
     public QuoteCharacter getQuoteCharacter() {
diff --git 
a/infra/database/type/sqlserver/src/main/java/org/apache/shardingsphere/infra/database/sqlserver/SQLServerDatabaseType.java
 
b/infra/database/type/sqlserver/src/main/java/org/apache/shardingsphere/infra/database/sqlserver/SQLServerDatabaseType.java
index 02eaa1b4499..b43b624f9e5 100644
--- 
a/infra/database/type/sqlserver/src/main/java/org/apache/shardingsphere/infra/database/sqlserver/SQLServerDatabaseType.java
+++ 
b/infra/database/type/sqlserver/src/main/java/org/apache/shardingsphere/infra/database/sqlserver/SQLServerDatabaseType.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.infra.database.sqlserver;
 
-import org.apache.shardingsphere.infra.database.core.type.TrunkDatabaseType;
+import org.apache.shardingsphere.infra.database.spi.DatabaseType;
 import org.apache.shardingsphere.infra.util.quote.QuoteCharacter;
 
 import java.util.Arrays;
@@ -28,7 +28,7 @@ import java.util.Map;
 /**
  * Database type of SQLServer.
  */
-public final class SQLServerDatabaseType implements TrunkDatabaseType {
+public final class SQLServerDatabaseType implements DatabaseType {
     
     @Override
     public QuoteCharacter getQuoteCharacter() {
diff --git 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/common/util/JDBCStreamQueryUtils.java
 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/common/util/JDBCStreamQueryUtils.java
index 129af2ec2d0..71b077acd66 100644
--- 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/common/util/JDBCStreamQueryUtils.java
+++ 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/common/util/JDBCStreamQueryUtils.java
@@ -20,10 +20,9 @@ package org.apache.shardingsphere.data.pipeline.common.util;
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.shardingsphere.infra.database.core.type.BranchDatabaseType;
-import org.apache.shardingsphere.infra.database.spi.DatabaseType;
 import org.apache.shardingsphere.infra.database.h2.H2DatabaseType;
 import org.apache.shardingsphere.infra.database.mysql.MySQLDatabaseType;
+import org.apache.shardingsphere.infra.database.spi.DatabaseType;
 
 import java.sql.Connection;
 import java.sql.PreparedStatement;
@@ -56,8 +55,8 @@ public final class JDBCStreamQueryUtils {
         if (databaseType instanceof H2DatabaseType) {
             return generateByDefault(connection, sql);
         }
-        if (databaseType instanceof BranchDatabaseType) {
-            return generateStreamQueryPreparedStatement(((BranchDatabaseType) 
databaseType).getTrunkDatabaseType(), connection, sql);
+        if (databaseType.getTrunkDatabaseType().isPresent()) {
+            return 
generateStreamQueryPreparedStatement(databaseType.getTrunkDatabaseType().get(), 
connection, sql);
         }
         log.warn("not support {} streaming query now, pay attention to memory 
usage", databaseType.getType());
         return generateByDefault(connection, sql);
diff --git 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/preparer/PipelineJobPreparerUtils.java
 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/preparer/PipelineJobPreparerUtils.java
index 6e16e1ac6a9..e27a0f717e1 100644
--- 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/preparer/PipelineJobPreparerUtils.java
+++ 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/preparer/PipelineJobPreparerUtils.java
@@ -29,20 +29,19 @@ import 
org.apache.shardingsphere.data.pipeline.common.config.ImporterConfigurati
 import 
org.apache.shardingsphere.data.pipeline.common.datasource.PipelineDataSourceManager;
 import 
org.apache.shardingsphere.data.pipeline.common.datasource.PipelineDataSourceWrapper;
 import 
org.apache.shardingsphere.data.pipeline.common.job.progress.JobItemIncrementalTasksProgress;
+import 
org.apache.shardingsphere.data.pipeline.core.preparer.datasource.DataSourceCheckEngine;
 import 
org.apache.shardingsphere.data.pipeline.core.preparer.datasource.DataSourcePreparer;
 import 
org.apache.shardingsphere.data.pipeline.core.preparer.datasource.PrepareTargetSchemasParameter;
 import 
org.apache.shardingsphere.data.pipeline.core.preparer.datasource.PrepareTargetTablesParameter;
-import 
org.apache.shardingsphere.data.pipeline.core.preparer.datasource.DataSourceCheckEngine;
 import 
org.apache.shardingsphere.data.pipeline.spi.ingest.dumper.IncrementalDumperCreator;
 import 
org.apache.shardingsphere.data.pipeline.spi.ingest.position.PositionInitializer;
-import org.apache.shardingsphere.infra.database.core.type.BranchDatabaseType;
+import 
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
 import org.apache.shardingsphere.infra.database.spi.DatabaseType;
 import 
org.apache.shardingsphere.infra.datasource.pool.creator.DataSourcePoolCreator;
 import org.apache.shardingsphere.infra.datasource.props.DataSourceProperties;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.parser.SQLParserEngine;
-import 
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
 import 
org.apache.shardingsphere.infra.yaml.config.swapper.resource.YamlDataSourceConfigurationSwapper;
 import org.apache.shardingsphere.parser.rule.SQLParserRule;
 
@@ -93,10 +92,7 @@ public final class PipelineJobPreparerUtils {
      */
     public static SQLParserEngine getSQLParserEngine(final 
ShardingSphereMetaData metaData, final String targetDatabaseName) {
         ShardingSphereDatabase database = 
metaData.getDatabase(targetDatabaseName);
-        DatabaseType databaseType = database.getProtocolType();
-        if (databaseType instanceof BranchDatabaseType) {
-            databaseType = ((BranchDatabaseType) 
databaseType).getTrunkDatabaseType();
-        }
+        DatabaseType databaseType = 
database.getProtocolType().getTrunkDatabaseType().orElse(database.getProtocolType());
         return 
metaData.getGlobalRuleMetaData().getSingleRule(SQLParserRule.class).getSQLParserEngine(databaseType.getType());
     }
     
diff --git 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/factory/ExternalMetaDataFactory.java
 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/factory/ExternalMetaDataFactory.java
index 2c95c61084b..c6bdc73082e 100644
--- 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/factory/ExternalMetaDataFactory.java
+++ 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/factory/ExternalMetaDataFactory.java
@@ -23,7 +23,7 @@ import 
org.apache.shardingsphere.infra.config.database.DatabaseConfiguration;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.spi.DatabaseType;
 import org.apache.shardingsphere.infra.database.DatabaseTypeEngine;
-import 
org.apache.shardingsphere.infra.database.core.type.checker.DatabaseTypeChecker;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeChecker;
 import org.apache.shardingsphere.infra.datasource.state.DataSourceStateManager;
 import org.apache.shardingsphere.infra.instance.InstanceContext;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
diff --git 
a/test/fixture/infra/src/main/java/org/apache/shardingsphere/test/fixture/infra/database/type/MockedDatabaseType.java
 
b/test/fixture/infra/src/main/java/org/apache/shardingsphere/test/fixture/infra/database/type/MockedDatabaseType.java
index c50e82f0662..7068d11afa6 100644
--- 
a/test/fixture/infra/src/main/java/org/apache/shardingsphere/test/fixture/infra/database/type/MockedDatabaseType.java
+++ 
b/test/fixture/infra/src/main/java/org/apache/shardingsphere/test/fixture/infra/database/type/MockedDatabaseType.java
@@ -18,7 +18,7 @@
 package org.apache.shardingsphere.test.fixture.infra.database.type;
 
 import org.apache.shardingsphere.infra.database.spi.DataSourceMetaData;
-import org.apache.shardingsphere.infra.database.core.type.TrunkDatabaseType;
+import org.apache.shardingsphere.infra.database.spi.DatabaseType;
 import org.apache.shardingsphere.infra.util.quote.QuoteCharacter;
 
 import java.util.Collection;
@@ -30,7 +30,7 @@ import static org.mockito.Mockito.mock;
 /**
  * Mocked database type.
  */
-public final class MockedDatabaseType implements TrunkDatabaseType {
+public final class MockedDatabaseType implements DatabaseType {
     
     @Override
     public QuoteCharacter getQuoteCharacter() {


Reply via email to