You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by su...@apache.org on 2023/08/20 16:12:32 UTC
[shardingsphere] branch master updated: Add DialectDatabaseMetaData.isSupportThreeTierStorageStructure() (#28191)
This is an automated email from the ASF dual-hosted git repository.
sunnianjun 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 6b2eda71602 Add DialectDatabaseMetaData.isSupportThreeTierStorageStructure() (#28191)
6b2eda71602 is described below
commit 6b2eda71602f7731cd94706a30c47851b75b0cf1
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Mon Aug 21 00:12:25 2023 +0800
Add DialectDatabaseMetaData.isSupportThreeTierStorageStructure() (#28191)
---
.../metadata/database/schema/util/SchemaMetaDataUtils.java | 8 ++++----
.../core/metadata/database/DialectDatabaseMetaData.java | 11 ++++++++++-
.../mysql/metadata/database/MySQLDatabaseMetaData.java | 5 +++++
3 files changed, 19 insertions(+), 5 deletions(-)
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/util/SchemaMetaDataUtils.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/util/SchemaMetaDataUtils.java
index 92966fca626..6469ba02e88 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/util/SchemaMetaDataUtils.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/util/SchemaMetaDataUtils.java
@@ -54,10 +54,10 @@ public final class SchemaMetaDataUtils {
public static Collection<MetaDataLoaderMaterial> getMetaDataLoaderMaterials(final Collection<String> tableNames,
final GenericSchemaBuilderMaterial material, final boolean checkMetaDataEnable) {
Map<String, Collection<String>> dataSourceTableGroups = new LinkedHashMap<>();
- Collection<DatabaseType> notSupportThreeTierStructureStorageTypes = getNotSupportThreeTierStructureStorageTypes(material.getStorageTypes().values());
+ Collection<DatabaseType> unsupportedThreeTierStorageStructureDatabaseTypes = getUnsupportedThreeTierStorageStructureDatabaseTypes(material.getStorageTypes().values());
DataNodes dataNodes = new DataNodes(material.getRules());
for (String each : tableNames) {
- checkDataSourceTypeIncludeInstanceAndSetDatabaseTableMap(notSupportThreeTierStructureStorageTypes, dataNodes, each);
+ checkDataSourceTypeIncludeInstanceAndSetDatabaseTableMap(unsupportedThreeTierStorageStructureDatabaseTypes, dataNodes, each);
if (checkMetaDataEnable) {
addAllActualTableDataNode(material, dataSourceTableGroups, dataNodes, each);
} else {
@@ -93,10 +93,10 @@ public final class SchemaMetaDataUtils {
}
}
- private static Collection<DatabaseType> getNotSupportThreeTierStructureStorageTypes(final Collection<DatabaseType> storageTypes) {
+ private static Collection<DatabaseType> getUnsupportedThreeTierStorageStructureDatabaseTypes(final Collection<DatabaseType> storageTypes) {
Collection<DatabaseType> result = new LinkedList<>();
for (DatabaseType each : storageTypes) {
- if (!"MySQL".equals(each.getType())) {
+ if (!new DatabaseTypeRegistry(each).getDialectDatabaseMetaData().isSupportThreeTierStorageStructure()) {
result.add(each);
}
}
diff --git a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/DialectDatabaseMetaData.java b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/DialectDatabaseMetaData.java
index 6827475c1be..f9a7457c93c 100644
--- a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/DialectDatabaseMetaData.java
+++ b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/DialectDatabaseMetaData.java
@@ -115,9 +115,18 @@ public interface DialectDatabaseMetaData extends DatabaseTypedSPI {
/**
* Is instance connection available.
*
- * @return true or false
+ * @return available or not
*/
default boolean isInstanceConnectionAvailable() {
return false;
}
+
+ /**
+ * Is support three tier storage structure.
+ *
+ * @return support or not
+ */
+ default boolean isSupportThreeTierStorageStructure() {
+ return false;
+ }
}
diff --git a/infra/database/type/mysql/src/main/java/org/apache/shardingsphere/infra/database/mysql/metadata/database/MySQLDatabaseMetaData.java b/infra/database/type/mysql/src/main/java/org/apache/shardingsphere/infra/database/mysql/metadata/database/MySQLDatabaseMetaData.java
index d6ccb6ab02e..078436c0287 100644
--- a/infra/database/type/mysql/src/main/java/org/apache/shardingsphere/infra/database/mysql/metadata/database/MySQLDatabaseMetaData.java
+++ b/infra/database/type/mysql/src/main/java/org/apache/shardingsphere/infra/database/mysql/metadata/database/MySQLDatabaseMetaData.java
@@ -87,6 +87,11 @@ public final class MySQLDatabaseMetaData implements DialectDatabaseMetaData {
return true;
}
+ @Override
+ public boolean isSupportThreeTierStorageStructure() {
+ return true;
+ }
+
@Override
public String getDatabaseType() {
return "MySQL";