You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2020/10/12 12:57:33 UTC

[shardingsphere] branch master updated: Use DatabaseType instead of String in metadata (#7764)

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

zhangyonglun 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 b98dc90  Use DatabaseType instead of String in metadata (#7764)
b98dc90 is described below

commit b98dc908a76baff06df52a9f68e3bce143819b4d
Author: Liang Zhang <te...@163.com>
AuthorDate: Mon Oct 12 20:57:07 2020 +0800

    Use DatabaseType instead of String in metadata (#7764)
---
 .../encrypt/metadata/EncryptMetaDataLoader.java              |  4 ++--
 .../sharding/metadata/ShardingMetaDataLoader.java            |  5 ++---
 .../infra/metadata/database/MetaDataConnectionAdapter.java   |  5 +++--
 .../infra/metadata/database/column/ColumnMetaDataLoader.java |  5 +++--
 .../infra/metadata/database/schema/SchemaMetaDataLoader.java |  3 ++-
 .../infra/metadata/database/table/TableMetaDataLoader.java   |  5 +++--
 .../infra/metadata/schema/RuleSchemaMetaDataLoader.java      |  2 +-
 .../metadata/database/MetaDataConnectionAdapterTest.java     | 12 ++++++++----
 .../metadata/database/column/ColumnMetaDataLoaderTest.java   |  6 +++++-
 .../metadata/database/schema/SchemaMetaDataLoaderTest.java   |  6 ++++--
 .../metadata/database/table/TableMetaDataLoaderTest.java     |  8 ++++++--
 .../scaling/core/metadata/MetaDataManager.java               |  3 ++-
 12 files changed, 41 insertions(+), 23 deletions(-)

diff --git a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-common/src/main/java/org/apache/shardingsphere/encrypt/metadata/EncryptMetaDataLoader.java b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-common/src/main/java/org/apache/shardingsphere/encrypt/metadata/EncryptMetaDataLoader.java
index 77803f9..f4c6c64 100644
--- a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-common/src/main/java/org/apache/shardingsphere/encrypt/metadata/EncryptMetaDataLoader.java
+++ b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-common/src/main/java/org/apache/shardingsphere/encrypt/metadata/EncryptMetaDataLoader.java
@@ -47,7 +47,7 @@ public final class EncryptMetaDataLoader implements RuleMetaDataLoader<EncryptRu
         Map<String, TableMetaData> result = new HashMap<>(encryptTableNames.size(), 1);
         for (String each : encryptTableNames) {
             if (!excludedTableNames.contains(each)) {
-                TableMetaDataLoader.load(dataSource, each, databaseType.getName()).ifPresent(tableMetaData -> result.put(each, tableMetaData));
+                TableMetaDataLoader.load(dataSource, each, databaseType).ifPresent(tableMetaData -> result.put(each, tableMetaData));
             }
         }
         return new SchemaMetaData(result);
@@ -56,7 +56,7 @@ public final class EncryptMetaDataLoader implements RuleMetaDataLoader<EncryptRu
     @Override
     public Optional<TableMetaData> load(final DatabaseType databaseType, final Map<String, DataSource> dataSourceMap, final DataNodes dataNodes, 
                                         final String tableName, final EncryptRule encryptRule, final ConfigurationProperties props) throws SQLException {
-        return encryptRule.findEncryptTable(tableName).isPresent() ? TableMetaDataLoader.load(dataSourceMap.values().iterator().next(), tableName, databaseType.getName()) : Optional.empty();
+        return encryptRule.findEncryptTable(tableName).isPresent() ? TableMetaDataLoader.load(dataSourceMap.values().iterator().next(), tableName, databaseType) : Optional.empty();
     }
     
     @Override
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/metadata/ShardingMetaDataLoader.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/metadata/ShardingMetaDataLoader.java
index b3261bf..7270b53 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/metadata/ShardingMetaDataLoader.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/metadata/ShardingMetaDataLoader.java
@@ -81,7 +81,7 @@ public final class ShardingMetaDataLoader implements RuleMetaDataLoader<Sharding
         TableRule tableRule = rule.getTableRule(tableName);
         if (!isCheckingMetaData) {
             DataNode dataNode = dataNodes.getDataNodes(tableName).iterator().next();
-            return TableMetaDataLoader.load(dataSourceMap.get(dataNode.getDataSourceName()), dataNode.getTableName(), databaseType.getName());
+            return TableMetaDataLoader.load(dataSourceMap.get(dataNode.getDataSourceName()), dataNode.getTableName(), databaseType);
         }
         Map<String, TableMetaData> actualTableMetaDataMap = parallelLoadTables(databaseType, dataSourceMap, dataNodes, tableName, maxConnectionsSizePerQuery);
         if (actualTableMetaDataMap.isEmpty()) {
@@ -120,8 +120,7 @@ public final class ShardingMetaDataLoader implements RuleMetaDataLoader<Sharding
     
     private Optional<TableMetaData> loadTableByDataNode(final DataNode dataNode, final DatabaseType databaseType, final Map<String, DataSource> dataSourceMap) {
         try {
-            return TableMetaDataLoader.load(
-                    dataSourceMap.get(dataNode.getDataSourceName()), dataNode.getTableName(), databaseType.getName());
+            return TableMetaDataLoader.load(dataSourceMap.get(dataNode.getDataSourceName()), dataNode.getTableName(), databaseType);
         } catch (final SQLException ex) {
             throw new IllegalStateException(String.format("SQLException for DataNode=%s and databaseType=%s", dataNode, databaseType.getName()), ex);
         }
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/MetaDataConnectionAdapter.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/MetaDataConnectionAdapter.java
index 5b9b6e0..b0bd9e4 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/MetaDataConnectionAdapter.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/MetaDataConnectionAdapter.java
@@ -18,6 +18,7 @@
 package org.apache.shardingsphere.infra.metadata.database;
 
 import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.infra.metadata.database.loader.SchemaLoader;
 import org.apache.shardingsphere.infra.spi.exception.ServiceProviderNotFoundException;
 import org.apache.shardingsphere.infra.spi.typed.TypedSPIRegistry;
@@ -48,7 +49,7 @@ import java.util.concurrent.Executor;
 @RequiredArgsConstructor
 public final class MetaDataConnectionAdapter implements Connection {
     
-    private final String databaseType;
+    private final DatabaseType databaseType;
     
     private final Connection connection;
     
@@ -81,7 +82,7 @@ public final class MetaDataConnectionAdapter implements Connection {
     
     private Optional<SchemaLoader> findSchemaLoader() {
         try {
-            return Optional.of(TypedSPIRegistry.getRegisteredService(SchemaLoader.class, databaseType, new Properties()));
+            return Optional.of(TypedSPIRegistry.getRegisteredService(SchemaLoader.class, databaseType.getName(), new Properties()));
         } catch (final ServiceProviderNotFoundException ignored) {
             return Optional.empty();
         }
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/column/ColumnMetaDataLoader.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/column/ColumnMetaDataLoader.java
index 6e5f881..5cdbe9a 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/column/ColumnMetaDataLoader.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/column/ColumnMetaDataLoader.java
@@ -19,6 +19,7 @@ package org.apache.shardingsphere.infra.metadata.database.column;
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
 
 import java.sql.Connection;
 import java.sql.ResultSet;
@@ -53,7 +54,7 @@ public final class ColumnMetaDataLoader {
      * @return column meta data list
      * @throws SQLException SQL exception
      */
-    public static Collection<ColumnMetaData> load(final Connection connection, final String tableNamePattern, final String databaseType) throws SQLException {
+    public static Collection<ColumnMetaData> load(final Connection connection, final String tableNamePattern, final DatabaseType databaseType) throws SQLException {
         Collection<ColumnMetaData> result = new LinkedList<>();
         Collection<String> primaryKeys = loadPrimaryKeys(connection, tableNamePattern);
         List<String> columnNames = new ArrayList<>();
@@ -85,7 +86,7 @@ public final class ColumnMetaDataLoader {
         return result;
     }
     
-    private static String generateEmptyResultSQL(final String table, final String databaseType) {
+    private static String generateEmptyResultSQL(final String table, final DatabaseType databaseType) {
         // TODO consider add a getDialectDelimeter() interface in parse module
         String delimiterLeft;
         String delimiterRight;
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/SchemaMetaDataLoader.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/SchemaMetaDataLoader.java
index 99df10b..b66f5e7 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/SchemaMetaDataLoader.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/SchemaMetaDataLoader.java
@@ -20,6 +20,7 @@ package org.apache.shardingsphere.infra.metadata.database.schema;
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.infra.metadata.database.MetaDataConnectionAdapter;
 
 import javax.sql.DataSource;
@@ -52,7 +53,7 @@ public final class SchemaMetaDataLoader {
      * @return unconfigured table names
      * @throws SQLException SQL exception
      */
-    public static Collection<String> loadUnconfiguredTableNames(final DataSource dataSource, final String databaseType, final Collection<String> excludedTableNames) throws SQLException {
+    public static Collection<String> loadUnconfiguredTableNames(final DataSource dataSource, final DatabaseType databaseType, final Collection<String> excludedTableNames) throws SQLException {
         List<String> result;
         try (MetaDataConnectionAdapter connectionAdapter = new MetaDataConnectionAdapter(databaseType, dataSource.getConnection())) {
             result = loadAllTableNames(connectionAdapter);
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/table/TableMetaDataLoader.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/table/TableMetaDataLoader.java
index d97e429..f915a9f 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/table/TableMetaDataLoader.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/table/TableMetaDataLoader.java
@@ -19,9 +19,10 @@ package org.apache.shardingsphere.infra.metadata.database.table;
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
+import org.apache.shardingsphere.infra.metadata.database.MetaDataConnectionAdapter;
 import org.apache.shardingsphere.infra.metadata.database.column.ColumnMetaDataLoader;
 import org.apache.shardingsphere.infra.metadata.database.index.IndexMetaDataLoader;
-import org.apache.shardingsphere.infra.metadata.database.MetaDataConnectionAdapter;
 
 import javax.sql.DataSource;
 import java.sql.Connection;
@@ -44,7 +45,7 @@ public final class TableMetaDataLoader {
      * @return table meta data
      * @throws SQLException SQL exception
      */
-    public static Optional<TableMetaData> load(final DataSource dataSource, final String tableNamePattern, final String databaseType) throws SQLException {
+    public static Optional<TableMetaData> load(final DataSource dataSource, final String tableNamePattern, final DatabaseType databaseType) throws SQLException {
         try (MetaDataConnectionAdapter connectionAdapter = new MetaDataConnectionAdapter(databaseType, dataSource.getConnection())) {
             return isTableExist(connectionAdapter, tableNamePattern)
                     ? Optional.of(new TableMetaData(ColumnMetaDataLoader.load(connectionAdapter, tableNamePattern, databaseType), IndexMetaDataLoader.load(connectionAdapter, tableNamePattern)))
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/RuleSchemaMetaDataLoader.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/RuleSchemaMetaDataLoader.java
index 24dd242..0ea6b02 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/RuleSchemaMetaDataLoader.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/RuleSchemaMetaDataLoader.java
@@ -140,7 +140,7 @@ public final class RuleSchemaMetaDataLoader {
                                                                        final Collection<String> excludedTableNames) throws SQLException {
         Map<String, Collection<String>> result = new HashMap<>(dataSourceMap.size(), 1);
         for (Entry<String, DataSource> entry : dataSourceMap.entrySet()) {
-            Collection<String> tableNames = SchemaMetaDataLoader.loadUnconfiguredTableNames(entry.getValue(), databaseType.getName(), excludedTableNames);
+            Collection<String> tableNames = SchemaMetaDataLoader.loadUnconfiguredTableNames(entry.getValue(), databaseType, excludedTableNames);
             if (!tableNames.isEmpty()) {
                 result.put(entry.getKey(), tableNames);
             }
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/database/MetaDataConnectionAdapterTest.java b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/database/MetaDataConnectionAdapterTest.java
index 93583ac..ac8e209 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/database/MetaDataConnectionAdapterTest.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/database/MetaDataConnectionAdapterTest.java
@@ -17,6 +17,8 @@
 
 package org.apache.shardingsphere.infra.metadata.database;
 
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.type.DatabaseTypes;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -37,34 +39,36 @@ public final class MetaDataConnectionAdapterTest {
     
     private static final String TEST_SCHEMA = "schema";
     
+    private final DatabaseType databaseType = DatabaseTypes.getTrunkDatabaseType("MySQL");
+    
     @Mock
     private Connection connection;
     
     @Test
     public void assertGetCatalog() throws SQLException {
         when(connection.getCatalog()).thenReturn(TEST_CATALOG);
-        MetaDataConnectionAdapter connectionAdapter = new MetaDataConnectionAdapter("MySQL", connection);
+        MetaDataConnectionAdapter connectionAdapter = new MetaDataConnectionAdapter(databaseType, connection);
         assertThat(connectionAdapter.getCatalog(), is(TEST_CATALOG));
     }
     
     @Test
     public void assertGetCatalogReturnNullWhenThrowsSQLException() throws SQLException {
         when(connection.getCatalog()).thenThrow(SQLException.class);
-        MetaDataConnectionAdapter connectionAdapter = new MetaDataConnectionAdapter("MySQL", connection);
+        MetaDataConnectionAdapter connectionAdapter = new MetaDataConnectionAdapter(databaseType, connection);
         assertNull(connectionAdapter.getCatalog());
     }
     
     @Test
     public void assertGetSchema() throws SQLException {
         when(connection.getSchema()).thenReturn(TEST_SCHEMA);
-        MetaDataConnectionAdapter connectionAdapter = new MetaDataConnectionAdapter("MySQL", connection);
+        MetaDataConnectionAdapter connectionAdapter = new MetaDataConnectionAdapter(databaseType, connection);
         assertThat(connectionAdapter.getSchema(), is(TEST_SCHEMA));
     }
     
     @Test
     public void assertGetSchemaReturnNullWhenThrowsSQLException() throws SQLException {
         when(connection.getSchema()).thenThrow(SQLException.class);
-        MetaDataConnectionAdapter connectionAdapter = new MetaDataConnectionAdapter("MySQL", connection);
+        MetaDataConnectionAdapter connectionAdapter = new MetaDataConnectionAdapter(databaseType, connection);
         assertNull(connectionAdapter.getSchema());
     }
 }
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/database/column/ColumnMetaDataLoaderTest.java b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/database/column/ColumnMetaDataLoaderTest.java
index 15446b7..4b5475d 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/database/column/ColumnMetaDataLoaderTest.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/database/column/ColumnMetaDataLoaderTest.java
@@ -17,6 +17,8 @@
 
 package org.apache.shardingsphere.infra.metadata.database.column;
 
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.type.DatabaseTypes;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -45,6 +47,8 @@ public final class ColumnMetaDataLoaderTest {
     
     private static final String TEST_TABLE = "table";
     
+    private final DatabaseType databaseType = DatabaseTypes.getActualDatabaseType("MySQL");
+    
     @Mock
     private Connection connection;
     
@@ -89,7 +93,7 @@ public final class ColumnMetaDataLoaderTest {
     
     @Test
     public void assertLoad() throws SQLException {
-        Collection<ColumnMetaData> actual = ColumnMetaDataLoader.load(connection, TEST_TABLE, "");
+        Collection<ColumnMetaData> actual = ColumnMetaDataLoader.load(connection, TEST_TABLE, databaseType);
         assertThat(actual.size(), is(2));
         Iterator<ColumnMetaData> columnMetaDataIterator = actual.iterator();
         assertColumnMetaData(columnMetaDataIterator.next(), "pk_col", Types.INTEGER, "INT", true, true);
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/SchemaMetaDataLoaderTest.java b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/SchemaMetaDataLoaderTest.java
index b0420bb..892aa9d 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/SchemaMetaDataLoaderTest.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/SchemaMetaDataLoaderTest.java
@@ -17,6 +17,8 @@
 
 package org.apache.shardingsphere.infra.metadata.database.schema;
 
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.type.DatabaseTypes;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -42,7 +44,7 @@ public final class SchemaMetaDataLoaderTest {
     
     private static final String TABLE_TYPE = "TABLE";
     
-    private static final String DATABASE_TYPE_ORACLE = "Oracle";
+    private final DatabaseType databaseType = DatabaseTypes.getTrunkDatabaseType("Oracle");
     
     @Mock
     private DataSource dataSource;
@@ -66,7 +68,7 @@ public final class SchemaMetaDataLoaderTest {
     
     @Test
     public void assertLoadUnconfiguredTableNamesForOracle() throws SQLException {
-        Collection<String> tableNames = SchemaMetaDataLoader.loadUnconfiguredTableNames(dataSource, DATABASE_TYPE_ORACLE, Collections.emptyList());
+        Collection<String> tableNames = SchemaMetaDataLoader.loadUnconfiguredTableNames(dataSource, databaseType, Collections.emptyList());
         assertThat(tableNames.size(), is(0));
     }
 }
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/database/table/TableMetaDataLoaderTest.java b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/database/table/TableMetaDataLoaderTest.java
index f91871b..1ded037 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/database/table/TableMetaDataLoaderTest.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/database/table/TableMetaDataLoaderTest.java
@@ -17,6 +17,8 @@
 
 package org.apache.shardingsphere.infra.metadata.database.table;
 
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.type.DatabaseTypes;
 import org.apache.shardingsphere.infra.metadata.database.column.ColumnMetaData;
 import org.apache.shardingsphere.infra.metadata.database.index.IndexMetaData;
 import org.junit.Before;
@@ -50,6 +52,8 @@ public final class TableMetaDataLoaderTest {
     
     private static final String TEST_TABLE = "table";
     
+    private final DatabaseType databaseType = DatabaseTypes.getActualDatabaseType("MySQL");
+    
     @Mock
     private DataSource dataSource;
     
@@ -112,7 +116,7 @@ public final class TableMetaDataLoaderTest {
     
     @Test
     public void assertLoad() throws SQLException {
-        Optional<TableMetaData> actual = TableMetaDataLoader.load(dataSource, TEST_TABLE, "");
+        Optional<TableMetaData> actual = TableMetaDataLoader.load(dataSource, TEST_TABLE, databaseType);
         assertTrue(actual.isPresent());
         Map<String, ColumnMetaData> columnMetaDataMap = actual.get().getColumns();
         assertThat(columnMetaDataMap.size(), is(2));
@@ -127,7 +131,7 @@ public final class TableMetaDataLoaderTest {
     public void assertTableNotExist() throws SQLException {
         when(databaseMetaData.getTables(TEST_CATALOG, null, TEST_TABLE, null)).thenReturn(tableNotExistResultSet);
         when(tableNotExistResultSet.next()).thenReturn(false);
-        Optional<TableMetaData> actual = TableMetaDataLoader.load(dataSource, TEST_TABLE, "");
+        Optional<TableMetaData> actual = TableMetaDataLoader.load(dataSource, TEST_TABLE, databaseType);
         assertFalse(actual.isPresent());
     }
     
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/metadata/MetaDataManager.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/metadata/MetaDataManager.java
index 51e5128..3782837 100755
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/metadata/MetaDataManager.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/metadata/MetaDataManager.java
@@ -18,6 +18,7 @@
 package org.apache.shardingsphere.scaling.core.metadata;
 
 import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.infra.database.type.DatabaseTypes;
 import org.apache.shardingsphere.infra.metadata.database.table.TableMetaData;
 import org.apache.shardingsphere.infra.metadata.database.table.TableMetaDataLoader;
 
@@ -45,7 +46,7 @@ public final class MetaDataManager {
     public TableMetaData getTableMetaData(final String tableName) {
         if (!tableMetaDataMap.containsKey(tableName)) {
             try {
-                TableMetaDataLoader.load(dataSource, tableName, "").ifPresent(tableMetaData -> tableMetaDataMap.put(tableName, tableMetaData));
+                TableMetaDataLoader.load(dataSource, tableName, DatabaseTypes.getActualDatabaseType("MySQL")).ifPresent(tableMetaData -> tableMetaDataMap.put(tableName, tableMetaData));
             } catch (final SQLException ex) {
                 throw new RuntimeException(String.format("Load metaData for table %s failed", tableName), ex);
             }