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() {