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";