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 <[email protected]>
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) {