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 2021/02/05 04:40:12 UTC

[shardingsphere] branch master updated: Set default database type for schema without datasource (#9332)

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

zhangliang 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 ed7a8c7  Set default database type for schema without datasource (#9332)
ed7a8c7 is described below

commit ed7a8c73d185674c73c9cff8dba6fd7ccc75e15d
Author: Haoran Meng <me...@gmail.com>
AuthorDate: Fri Feb 5 12:39:43 2021 +0800

    Set default database type for schema without datasource (#9332)
---
 .../infra/database/type/DatabaseTypeRegistry.java             | 11 +++++++++++
 .../infra/database/type/DatabaseTypeRegistryTest.java         |  5 +++++
 .../infra/context/metadata/MetaDataContextsBuilder.java       |  2 +-
 3 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/type/DatabaseTypeRegistry.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/type/DatabaseTypeRegistry.java
index e9a901e..f29ba66 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/type/DatabaseTypeRegistry.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/type/DatabaseTypeRegistry.java
@@ -34,6 +34,8 @@ public final class DatabaseTypeRegistry {
     
     private static final Map<String, DatabaseType> DATABASE_TYPES = new HashMap<>();
     
+    private static final String DEFAULT_DATABASE_TYPE = "MySQL";
+    
     static {
         for (DatabaseType each : ServiceLoader.load(DatabaseType.class)) {
             DATABASE_TYPES.put(each.getName(), each);
@@ -83,4 +85,13 @@ public final class DatabaseTypeRegistry {
     private static boolean matchURLs(final String url, final DatabaseType databaseType) {
         return databaseType.getJdbcUrlPrefixes().stream().anyMatch(url::startsWith);
     }
+    
+    /**
+     * Get default database type.
+     * 
+     * @return default database type
+     */
+    public static DatabaseType getDefaultDatabaseType() {
+        return DATABASE_TYPES.get(DEFAULT_DATABASE_TYPE);
+    }
 }
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/DatabaseTypeRegistryTest.java b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/DatabaseTypeRegistryTest.java
index 477f578..54bfb08 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/DatabaseTypeRegistryTest.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/DatabaseTypeRegistryTest.java
@@ -71,4 +71,9 @@ public final class DatabaseTypeRegistryTest {
     public void assertGetDatabaseTypeSQL92() {
         assertThat(DatabaseTypeRegistry.getDatabaseTypeByURL("jdbc:sqlite:test").getName(), is("SQL92"));
     }
+    
+    @Test
+    public void assertGetDefaultDatabaseType() {
+        assertThat(DatabaseTypeRegistry.getDefaultDatabaseType().getName(), is("MySQL"));
+    }
 }
diff --git a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/metadata/MetaDataContextsBuilder.java b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/metadata/MetaDataContextsBuilder.java
index e8ebb07..ff58367 100644
--- a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/metadata/MetaDataContextsBuilder.java
+++ b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/metadata/MetaDataContextsBuilder.java
@@ -115,7 +115,7 @@ public final class MetaDataContextsBuilder {
             Preconditions.checkState(null == result || result == databaseType, String.format("Database type inconsistent with '%s' and '%s'", result, databaseType));
             result = databaseType;
         }
-        return result;
+        return null == result ? DatabaseTypeRegistry.getDefaultDatabaseType() : result;
     }
     
     private DatabaseType getDatabaseType(final DataSource dataSource) {