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 <[email protected]>
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";

Reply via email to