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

jianglongtao 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 d6c047f9c73 Use DatabaseType class instead of String (#22578)
d6c047f9c73 is described below

commit d6c047f9c73af87cc0d7f63999c8f792ddabbbba
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Dec 2 00:00:23 2022 +0800

    Use DatabaseType class instead of String (#22578)
---
 .../ExternalMySQLParserParameterizedIT.java        |  3 +-
 .../ExternalPostgreSQLParserParameterizedIT.java   |  3 +-
 .../sql92/fixture/SQL92FixtureDatabaseType.java    | 61 ++++++++++++++++++++++
 ...shardingsphere.infra.database.type.DatabaseType | 18 +++++++
 .../SQLNodeConverterEngineParameterizedTest.java   |  8 +--
 .../sql/parser/SQLParserParameterizedArray.java    |  3 +-
 .../engine/ExternalSQLParserParameterizedIT.java   |  7 +--
 .../param/ExternalSQLParserParameterizedArray.java |  5 +-
 .../sql/parser/external/loader/SQLCaseLoader.java  |  5 +-
 .../external/result/SQLParseResultReporter.java    |  4 +-
 .../result/SQLParseResultReporterCreator.java      |  3 +-
 .../result/type/csv/CsvSQLParseResultReporter.java |  9 ++--
 .../type/csv/CsvSQLParseResultReporterCreator.java |  3 +-
 .../result/type/log/LogSQLParseResultReporter.java |  5 +-
 .../type/log/LogSQLParseResultReporterCreator.java |  3 +-
 .../sql/parser/internal/cases/sql/SQLCases.java    | 23 +++++---
 .../engine/InternalSQLParserParameterizedIT.java   | 10 ++--
 ...nternalUnsupportedSQLParserParameterizedIT.java |  9 ++--
 .../param/InternalSQLParserParameterizedArray.java |  5 +-
 .../fixture/DistSQLFixtureDatabaseType.java        | 61 ++++++++++++++++++++++
 ...shardingsphere.infra.database.type.DatabaseType | 18 +++++++
 21 files changed, 229 insertions(+), 37 deletions(-)

diff --git 
a/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/sql/parser/mysql/external/ExternalMySQLParserParameterizedIT.java
 
b/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/sql/parser/mysql/external/ExternalMySQLParserParameterizedIT.java
index aabeef45bba..a97b349ac2d 100644
--- 
a/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/sql/parser/mysql/external/ExternalMySQLParserParameterizedIT.java
+++ 
b/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/sql/parser/mysql/external/ExternalMySQLParserParameterizedIT.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.sql.parser.mysql.external;
 
+import org.apache.shardingsphere.infra.database.type.DatabaseTypeFactory;
 import org.apache.shardingsphere.test.runner.ParallelParameterized;
 import 
org.apache.shardingsphere.test.sql.parser.external.engine.ExternalSQLParserParameterizedIT;
 import 
org.apache.shardingsphere.test.sql.parser.external.engine.param.ExternalSQLParserParameterizedArray;
@@ -39,6 +40,6 @@ public final class ExternalMySQLParserParameterizedIT extends 
ExternalSQLParserP
     public static Collection<ExternalSQLParserParameterizedArray> 
getTestParameters() {
         String caseURL = 
"https://github.com/mysql/mysql-server/tree/8.0/mysql-test/t";;
         String resultURL = 
"https://github.com/mysql/mysql-server/tree/8.0/mysql-test/r";;
-        return new SQLCaseLoader(new 
GitHubSQLCaseLoadStrategy()).load(URI.create(caseURL), URI.create(resultURL), 
"MySQL", "CSV");
+        return new SQLCaseLoader(new 
GitHubSQLCaseLoadStrategy()).load(URI.create(caseURL), URI.create(resultURL), 
DatabaseTypeFactory.getInstance("MySQL"), "CSV");
     }
 }
diff --git 
a/sql-parser/dialect/postgresql/src/test/java/org/apache/shardingsphere/sql/parser/postgresql/external/ExternalPostgreSQLParserParameterizedIT.java
 
b/sql-parser/dialect/postgresql/src/test/java/org/apache/shardingsphere/sql/parser/postgresql/external/ExternalPostgreSQLParserParameterizedIT.java
index 9dae91eb08c..6f552b5f446 100644
--- 
a/sql-parser/dialect/postgresql/src/test/java/org/apache/shardingsphere/sql/parser/postgresql/external/ExternalPostgreSQLParserParameterizedIT.java
+++ 
b/sql-parser/dialect/postgresql/src/test/java/org/apache/shardingsphere/sql/parser/postgresql/external/ExternalPostgreSQLParserParameterizedIT.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.sql.parser.postgresql.external;
 
+import org.apache.shardingsphere.infra.database.type.DatabaseTypeFactory;
 import org.apache.shardingsphere.test.runner.ParallelParameterized;
 import 
org.apache.shardingsphere.test.sql.parser.external.engine.ExternalSQLParserParameterizedIT;
 import 
org.apache.shardingsphere.test.sql.parser.external.engine.param.ExternalSQLParserParameterizedArray;
@@ -39,6 +40,6 @@ public final class ExternalPostgreSQLParserParameterizedIT 
extends ExternalSQLPa
     public static Collection<ExternalSQLParserParameterizedArray> 
getTestParameters() {
         String caseURL = 
"https://github.com/postgres/postgres/tree/master/src/test/regress/sql";;
         String resultURL = 
"https://github.com/postgres/postgres/tree/master/src/test/regress/expected";;
-        return new SQLCaseLoader(new 
GitHubSQLCaseLoadStrategy()).load(URI.create(caseURL), URI.create(resultURL), 
"PostgreSQL", "CSV");
+        return new SQLCaseLoader(new 
GitHubSQLCaseLoadStrategy()).load(URI.create(caseURL), URI.create(resultURL), 
DatabaseTypeFactory.getInstance("PostgreSQL"), "CSV");
     }
 }
diff --git 
a/sql-parser/dialect/sql92/src/test/java/org/apache/shardingsphere/sql/parser/sql92/fixture/SQL92FixtureDatabaseType.java
 
b/sql-parser/dialect/sql92/src/test/java/org/apache/shardingsphere/sql/parser/sql92/fixture/SQL92FixtureDatabaseType.java
new file mode 100644
index 00000000000..fa532cefee4
--- /dev/null
+++ 
b/sql-parser/dialect/sql92/src/test/java/org/apache/shardingsphere/sql/parser/sql92/fixture/SQL92FixtureDatabaseType.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.sql.parser.sql92.fixture;
+
+import org.apache.shardingsphere.infra.database.metadata.DataSourceMetaData;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
+import org.apache.shardingsphere.sql.parser.sql.common.enums.QuoteCharacter;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Map;
+
+import static org.mockito.Mockito.mock;
+
+public final class SQL92FixtureDatabaseType implements DatabaseType {
+    
+    @Override
+    public QuoteCharacter getQuoteCharacter() {
+        return QuoteCharacter.NONE;
+    }
+    
+    @Override
+    public Collection<String> getJdbcUrlPrefixes() {
+        return Collections.emptyList();
+    }
+    
+    @Override
+    public DataSourceMetaData getDataSourceMetaData(final String url, final 
String username) {
+        return mock(DataSourceMetaData.class);
+    }
+    
+    @Override
+    public Map<String, Collection<String>> getSystemDatabaseSchemaMap() {
+        return Collections.emptyMap();
+    }
+    
+    @Override
+    public Collection<String> getSystemSchemas() {
+        return Collections.emptyList();
+    }
+    
+    @Override
+    public String getType() {
+        return "SQL92";
+    }
+}
diff --git 
a/sql-parser/dialect/sql92/src/test/resources/META-INF/services/org.apache.shardingsphere.infra.database.type.DatabaseType
 
b/sql-parser/dialect/sql92/src/test/resources/META-INF/services/org.apache.shardingsphere.infra.database.type.DatabaseType
new file mode 100644
index 00000000000..1f9eadd77cf
--- /dev/null
+++ 
b/sql-parser/dialect/sql92/src/test/resources/META-INF/services/org.apache.shardingsphere.infra.database.type.DatabaseType
@@ -0,0 +1,18 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+org.apache.shardingsphere.sql.parser.sql92.fixture.SQL92FixtureDatabaseType
diff --git 
a/test/optimize/src/test/java/org/apache/shardingsphere/infra/federation/converter/parameterized/engine/SQLNodeConverterEngineParameterizedTest.java
 
b/test/optimize/src/test/java/org/apache/shardingsphere/infra/federation/converter/parameterized/engine/SQLNodeConverterEngineParameterizedTest.java
index 387c6fa6d98..e6885fed3e3 100644
--- 
a/test/optimize/src/test/java/org/apache/shardingsphere/infra/federation/converter/parameterized/engine/SQLNodeConverterEngineParameterizedTest.java
+++ 
b/test/optimize/src/test/java/org/apache/shardingsphere/infra/federation/converter/parameterized/engine/SQLNodeConverterEngineParameterizedTest.java
@@ -28,6 +28,7 @@ import org.apache.calcite.sql.parser.SqlParser;
 import org.apache.calcite.sql.parser.SqlParser.Config;
 import org.apache.calcite.sql.parser.impl.SqlParserImpl;
 import org.apache.calcite.util.Litmus;
+import org.apache.shardingsphere.infra.database.type.BranchDatabaseType;
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.infra.database.type.DatabaseTypeFactory;
 import org.apache.shardingsphere.sql.parser.api.CacheOption;
@@ -53,6 +54,7 @@ import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.Properties;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 import static org.junit.Assert.assertTrue;
 
@@ -151,7 +153,7 @@ public final class SQLNodeConverterEngineParameterizedTest {
     
     private final String sqlCaseId;
     
-    private final String databaseType;
+    private final DatabaseType databaseType;
     
     private final SQLCaseType sqlCaseType;
     
@@ -168,7 +170,7 @@ public final class SQLNodeConverterEngineParameterizedTest {
     
     private static Collection<InternalSQLParserParameterizedArray> 
getTestParameters(final String... databaseTypes) {
         Collection<InternalSQLParserParameterizedArray> result = new 
LinkedList<>();
-        for (InternalSQLParserParameterizedArray each : 
SQL_CASES.generateTestParameters(Arrays.asList(databaseTypes))) {
+        for (InternalSQLParserParameterizedArray each : 
SQL_CASES.generateTestParameters(Arrays.stream(databaseTypes).map(DatabaseTypeFactory::getInstance).collect(Collectors.toSet())))
 {
             if (!isPlaceholderWithoutParameter(each) && 
isSupportedSQLCase(each)) {
                 result.add(each);
             }
@@ -186,7 +188,7 @@ public final class SQLNodeConverterEngineParameterizedTest {
     
     @Test
     public void assertConvert() {
-        String databaseType = "H2".equals(this.databaseType) ? "MySQL" : 
this.databaseType;
+        String databaseType = (this.databaseType instanceof BranchDatabaseType 
? ((BranchDatabaseType) this.databaseType).getTrunkDatabaseType() : 
this.databaseType).getType();
         String sql = SQL_CASES.getSQL(sqlCaseId, sqlCaseType, 
SQL_PARSER_TEST_CASES.get(sqlCaseId).getParameters());
         SQLStatement sqlStatement = parseSQLStatement(databaseType, sql);
         SqlNode actual = SQLNodeConverterEngine.convert(sqlStatement);
diff --git 
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/SQLParserParameterizedArray.java
 
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/SQLParserParameterizedArray.java
index 2da1184adff..7732a698a89 100644
--- 
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/SQLParserParameterizedArray.java
+++ 
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/SQLParserParameterizedArray.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.test.sql.parser;
 
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.test.runner.param.ParameterizedArray;
 
 /**
@@ -36,5 +37,5 @@ public interface SQLParserParameterizedArray extends 
ParameterizedArray {
      * 
      * @return database type
      */
-    String getDatabaseType();
+    DatabaseType getDatabaseType();
 }
diff --git 
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/engine/ExternalSQLParserParameterizedIT.java
 
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/engine/ExternalSQLParserParameterizedIT.java
index 3974c069b5f..f6357c32699 100644
--- 
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/engine/ExternalSQLParserParameterizedIT.java
+++ 
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/engine/ExternalSQLParserParameterizedIT.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.test.sql.parser.external.engine;
 
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import 
org.apache.shardingsphere.infra.util.exception.external.ShardingSphereExternalException;
 import org.apache.shardingsphere.sql.parser.api.CacheOption;
 import org.apache.shardingsphere.sql.parser.api.SQLParserEngine;
@@ -35,7 +36,7 @@ public abstract class ExternalSQLParserParameterizedIT {
     
     private final String sql;
     
-    private final String databaseType;
+    private final DatabaseType databaseType;
     
     private final SQLParseResultReporter resultReporter;
     
@@ -50,8 +51,8 @@ public abstract class ExternalSQLParserParameterizedIT {
     public final void assertParseSQL() {
         boolean isSuccess = true;
         try {
-            ParseASTNode parseASTNode = new SQLParserEngine(databaseType, new 
CacheOption(128, 1024L)).parse(sql, false);
-            new SQLVisitorEngine(databaseType, "STATEMENT", true, new 
Properties()).visit(parseASTNode);
+            ParseASTNode parseASTNode = new 
SQLParserEngine(databaseType.getType(), new CacheOption(128, 1024L)).parse(sql, 
false);
+            new SQLVisitorEngine(databaseType.getType(), "STATEMENT", true, 
new Properties()).visit(parseASTNode);
         } catch (final ShardingSphereExternalException | ClassCastException | 
NullPointerException | IllegalArgumentException | IndexOutOfBoundsException 
ignore) {
             isSuccess = false;
         }
diff --git 
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/engine/param/ExternalSQLParserParameterizedArray.java
 
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/engine/param/ExternalSQLParserParameterizedArray.java
index 8c8dd26e567..d4fecf3119c 100644
--- 
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/engine/param/ExternalSQLParserParameterizedArray.java
+++ 
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/engine/param/ExternalSQLParserParameterizedArray.java
@@ -19,6 +19,7 @@ package 
org.apache.shardingsphere.test.sql.parser.external.engine.param;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.test.sql.parser.SQLParserParameterizedArray;
 
 /**
@@ -30,7 +31,7 @@ public final class ExternalSQLParserParameterizedArray 
implements SQLParserParam
     
     private final String sqlCaseId;
     
-    private final String databaseType;
+    private final DatabaseType databaseType;
     
     private final String sql;
     
@@ -38,6 +39,6 @@ public final class ExternalSQLParserParameterizedArray 
implements SQLParserParam
     
     @Override
     public String toString() {
-        return String.format("%s (%s) -> %s", sqlCaseId, databaseType, sql);
+        return String.format("%s (%s) -> %s", sqlCaseId, 
databaseType.getType(), sql);
     }
 }
diff --git 
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/loader/SQLCaseLoader.java
 
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/loader/SQLCaseLoader.java
index 8fbf63a3091..7c98eb49ed7 100644
--- 
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/loader/SQLCaseLoader.java
+++ 
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/loader/SQLCaseLoader.java
@@ -19,6 +19,7 @@ package 
org.apache.shardingsphere.test.sql.parser.external.loader;
 
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import 
org.apache.shardingsphere.test.sql.parser.external.engine.param.ExternalSQLParserParameterizedArray;
 import 
org.apache.shardingsphere.test.sql.parser.external.env.SQLParserExternalITEnvironment;
 import 
org.apache.shardingsphere.test.sql.parser.external.loader.strategy.SQLCaseLoadStrategy;
@@ -54,7 +55,7 @@ public final class SQLCaseLoader {
      *
      * @return loaded SQL cases
      */
-    public Collection<ExternalSQLParserParameterizedArray> load(final URI 
sqlCaseURI, final URI resultURI, final String databaseType, final String 
reportType) {
+    public Collection<ExternalSQLParserParameterizedArray> load(final URI 
sqlCaseURI, final URI resultURI, final DatabaseType databaseType, final String 
reportType) {
         if 
(!SQLParserExternalITEnvironment.getInstance().isSqlParserITEnabled()) {
             return Collections.emptyList();
         }
@@ -85,7 +86,7 @@ public final class SQLCaseLoader {
     }
     
     private Collection<ExternalSQLParserParameterizedArray> 
createSQLCases(final String sqlCaseFileName,
-                                                                           
final String sqlCaseFileContent, final String resultFileContent, final String 
databaseType, final String reportType) {
+                                                                           
final String sqlCaseFileContent, final String resultFileContent, final 
DatabaseType databaseType, final String reportType) {
         Collection<ExternalSQLParserParameterizedArray> result = new 
LinkedList<>();
         String[] rawCaseLines = sqlCaseFileContent.split("\n");
         String[] rawResultLines = resultFileContent.split("\n");
diff --git 
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/result/SQLParseResultReporter.java
 
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/result/SQLParseResultReporter.java
index daca36b1157..c6d66c71d86 100644
--- 
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/result/SQLParseResultReporter.java
+++ 
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/result/SQLParseResultReporter.java
@@ -17,6 +17,8 @@
 
 package org.apache.shardingsphere.test.sql.parser.external.result;
 
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
+
 /**
  * SQL parse result reporter.
  */
@@ -30,5 +32,5 @@ public interface SQLParseResultReporter {
      * @param sql SQL
      * @param isSuccess whether success
      */
-    void printResult(String sqlCaseId, String databaseType, boolean isSuccess, 
String sql);
+    void printResult(String sqlCaseId, DatabaseType databaseType, boolean 
isSuccess, String sql);
 }
diff --git 
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/result/SQLParseResultReporterCreator.java
 
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/result/SQLParseResultReporterCreator.java
index f0e62efbf7c..d42db055ffe 100644
--- 
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/result/SQLParseResultReporterCreator.java
+++ 
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/result/SQLParseResultReporterCreator.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.test.sql.parser.external.result;
 
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPI;
 
 /**
@@ -30,5 +31,5 @@ public interface SQLParseResultReporterCreator extends 
TypedSPI {
      * @param databaseType database type
      * @return created SQL parse result reporter
      */
-    SQLParseResultReporter create(String databaseType);
+    SQLParseResultReporter create(DatabaseType databaseType);
 }
diff --git 
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/result/type/csv/CsvSQLParseResultReporter.java
 
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/result/type/csv/CsvSQLParseResultReporter.java
index b1d62ab86d1..1eec8a2fb9d 100644
--- 
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/result/type/csv/CsvSQLParseResultReporter.java
+++ 
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/result/type/csv/CsvSQLParseResultReporter.java
@@ -20,6 +20,7 @@ package 
org.apache.shardingsphere.test.sql.parser.external.result.type.csv;
 import lombok.SneakyThrows;
 import org.apache.commons.csv.CSVFormat;
 import org.apache.commons.csv.CSVPrinter;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import 
org.apache.shardingsphere.test.sql.parser.external.env.SQLParserExternalITEnvironment;
 import 
org.apache.shardingsphere.test.sql.parser.external.result.SQLParseResultReporter;
 
@@ -34,8 +35,8 @@ public final class CsvSQLParseResultReporter implements 
SQLParseResultReporter {
     private final CSVPrinter printer;
     
     @SneakyThrows
-    public CsvSQLParseResultReporter(final String databaseType) {
-        File csvFile = new 
File(SQLParserExternalITEnvironment.getInstance().getResultPath() + 
databaseType + "-result.csv");
+    public CsvSQLParseResultReporter(final DatabaseType databaseType) {
+        File csvFile = new 
File(SQLParserExternalITEnvironment.getInstance().getResultPath() + 
databaseType.getType() + "-result.csv");
         printHeader(csvFile);
         printer = new CSVPrinter(new FileWriter(csvFile, true), 
CSVFormat.DEFAULT.builder().setSkipHeaderRecord(true).build());
     }
@@ -53,8 +54,8 @@ public final class CsvSQLParseResultReporter implements 
SQLParseResultReporter {
     
     @SneakyThrows
     @Override
-    public void printResult(final String sqlCaseId, final String databaseType, 
final boolean isSuccess, final String sql) {
-        printer.printRecord(sqlCaseId, databaseType, isSuccess ? "success" : 
"failed", sql);
+    public void printResult(final String sqlCaseId, final DatabaseType 
databaseType, final boolean isSuccess, final String sql) {
+        printer.printRecord(sqlCaseId, databaseType.getType(), isSuccess ? 
"success" : "failed", sql);
         printer.flush();
     }
 }
diff --git 
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/result/type/csv/CsvSQLParseResultReporterCreator.java
 
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/result/type/csv/CsvSQLParseResultReporterCreator.java
index 9b940a5b7b7..13171548df3 100644
--- 
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/result/type/csv/CsvSQLParseResultReporterCreator.java
+++ 
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/result/type/csv/CsvSQLParseResultReporterCreator.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.test.sql.parser.external.result.type.csv;
 
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import 
org.apache.shardingsphere.test.sql.parser.external.result.SQLParseResultReporter;
 import 
org.apache.shardingsphere.test.sql.parser.external.result.SQLParseResultReporterCreator;
 
@@ -26,7 +27,7 @@ import 
org.apache.shardingsphere.test.sql.parser.external.result.SQLParseResultR
 public final class CsvSQLParseResultReporterCreator implements 
SQLParseResultReporterCreator {
     
     @Override
-    public SQLParseResultReporter create(final String databaseType) {
+    public SQLParseResultReporter create(final DatabaseType databaseType) {
         return new CsvSQLParseResultReporter(databaseType);
     }
     
diff --git 
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/result/type/log/LogSQLParseResultReporter.java
 
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/result/type/log/LogSQLParseResultReporter.java
index f6fb5f9e720..2228e053fee 100644
--- 
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/result/type/log/LogSQLParseResultReporter.java
+++ 
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/result/type/log/LogSQLParseResultReporter.java
@@ -18,6 +18,7 @@
 package org.apache.shardingsphere.test.sql.parser.external.result.type.log;
 
 import lombok.extern.slf4j.Slf4j;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import 
org.apache.shardingsphere.test.sql.parser.external.result.SQLParseResultReporter;
 
 /**
@@ -27,9 +28,9 @@ import 
org.apache.shardingsphere.test.sql.parser.external.result.SQLParseResultR
 public final class LogSQLParseResultReporter implements SQLParseResultReporter 
{
     
     @Override
-    public void printResult(final String sqlCaseId, final String databaseType, 
final boolean isSuccess, final String sql) {
+    public void printResult(final String sqlCaseId, final DatabaseType 
databaseType, final boolean isSuccess, final String sql) {
         if (!isSuccess) {
-            log.warn("SQL parse failed. SQL Case ID is: {}, database type is: 
{}, SQL is: {}", sqlCaseId, databaseType, sql);
+            log.warn("SQL parse failed. SQL Case ID is: {}, database type is: 
{}, SQL is: {}", sqlCaseId, databaseType.getType(), sql);
         }
     }
 }
diff --git 
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/result/type/log/LogSQLParseResultReporterCreator.java
 
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/result/type/log/LogSQLParseResultReporterCreator.java
index 86d49571137..467cf314630 100644
--- 
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/result/type/log/LogSQLParseResultReporterCreator.java
+++ 
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/external/result/type/log/LogSQLParseResultReporterCreator.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.test.sql.parser.external.result.type.log;
 
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import 
org.apache.shardingsphere.test.sql.parser.external.result.SQLParseResultReporter;
 import 
org.apache.shardingsphere.test.sql.parser.external.result.SQLParseResultReporterCreator;
 
@@ -26,7 +27,7 @@ import 
org.apache.shardingsphere.test.sql.parser.external.result.SQLParseResultR
 public final class LogSQLParseResultReporterCreator implements 
SQLParseResultReporterCreator {
     
     @Override
-    public SQLParseResultReporter create(final String databaseType) {
+    public SQLParseResultReporter create(final DatabaseType databaseType) {
         return new LogSQLParseResultReporter();
     }
     
diff --git 
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/SQLCases.java
 
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/SQLCases.java
index 9ad1964d3c2..c7148763b81 100644
--- 
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/SQLCases.java
+++ 
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/SQLCases.java
@@ -20,6 +20,9 @@ package 
org.apache.shardingsphere.test.sql.parser.internal.cases.sql;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Splitter;
 import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.type.DatabaseTypeFactory;
+import 
org.apache.shardingsphere.infra.util.spi.exception.ServiceProviderNotFoundServerException;
 import 
org.apache.shardingsphere.test.sql.parser.internal.cases.sql.jaxb.SQLCase;
 import 
org.apache.shardingsphere.test.sql.parser.internal.cases.sql.type.CaseTypedSQLBuilderFactory;
 import 
org.apache.shardingsphere.test.sql.parser.internal.cases.sql.type.SQLCaseType;
@@ -27,6 +30,7 @@ import 
org.apache.shardingsphere.test.sql.parser.internal.engine.param.InternalS
 
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
@@ -45,7 +49,7 @@ public final class SQLCases {
      * @param databaseTypes database types to be generated
      * @return generated test parameters
      */
-    public Collection<InternalSQLParserParameterizedArray> 
generateTestParameters(final Collection<String> databaseTypes) {
+    public Collection<InternalSQLParserParameterizedArray> 
generateTestParameters(final Collection<DatabaseType> databaseTypes) {
         Collection<InternalSQLParserParameterizedArray> result = new 
LinkedList<>();
         for (SQLCase each : cases.values()) {
             result.addAll(generateTestParameters(databaseTypes, each));
@@ -53,7 +57,7 @@ public final class SQLCases {
         return result;
     }
     
-    private Collection<InternalSQLParserParameterizedArray> 
generateTestParameters(final Collection<String> databaseTypes, final SQLCase 
sqlCase) {
+    private Collection<InternalSQLParserParameterizedArray> 
generateTestParameters(final Collection<DatabaseType> databaseTypes, final 
SQLCase sqlCase) {
         Collection<InternalSQLParserParameterizedArray> result = new 
LinkedList<>();
         for (SQLCaseType each : SQLCaseType.values()) {
             result.addAll(generateTestParameters(databaseTypes, sqlCase, 
each));
@@ -61,9 +65,9 @@ public final class SQLCases {
         return result;
     }
     
-    private Collection<InternalSQLParserParameterizedArray> 
generateTestParameters(final Collection<String> databaseTypes, final SQLCase 
sqlCase, final SQLCaseType caseType) {
+    private Collection<InternalSQLParserParameterizedArray> 
generateTestParameters(final Collection<DatabaseType> databaseTypes, final 
SQLCase sqlCase, final SQLCaseType caseType) {
         Collection<InternalSQLParserParameterizedArray> result = new 
LinkedList<>();
-        for (String each : getDatabaseTypes(sqlCase.getDatabaseTypes())) {
+        for (DatabaseType each : getDatabaseTypes(sqlCase.getDatabaseTypes())) 
{
             if (databaseTypes.contains(each) && containsSQLCaseType(sqlCase, 
caseType)) {
                 result.add(new 
InternalSQLParserParameterizedArray(sqlCase.getId(), each, caseType));
             }
@@ -71,8 +75,15 @@ public final class SQLCases {
         return result;
     }
     
-    private Collection<String> getDatabaseTypes(final String databaseTypes) {
-        return null == databaseTypes ? getAllDatabaseTypes() : 
Splitter.on(',').trimResults().splitToList(databaseTypes);
+    private Collection<DatabaseType> getDatabaseTypes(final String 
databaseTypes) {
+        Collection<DatabaseType> result = new HashSet<>();
+        for (String each : null == databaseTypes ? getAllDatabaseTypes() : 
Splitter.on(',').trimResults().splitToList(databaseTypes)) {
+            try {
+                result.add(DatabaseTypeFactory.getInstance(each));
+            } catch (final ServiceProviderNotFoundServerException ignored) {
+            }
+        }
+        return result;
     }
     
     private Collection<String> getAllDatabaseTypes() {
diff --git 
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/InternalSQLParserParameterizedIT.java
 
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/InternalSQLParserParameterizedIT.java
index 4f89dd06441..b73d356d772 100644
--- 
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/InternalSQLParserParameterizedIT.java
+++ 
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/InternalSQLParserParameterizedIT.java
@@ -18,6 +18,9 @@
 package org.apache.shardingsphere.test.sql.parser.internal.engine;
 
 import 
org.apache.shardingsphere.distsql.parser.engine.api.DistSQLStatementParserEngine;
+import org.apache.shardingsphere.infra.database.type.BranchDatabaseType;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.type.DatabaseTypeFactory;
 import org.apache.shardingsphere.sql.parser.api.CacheOption;
 import org.apache.shardingsphere.sql.parser.api.SQLParserEngine;
 import org.apache.shardingsphere.sql.parser.api.SQLVisitorEngine;
@@ -37,6 +40,7 @@ import java.util.Arrays;
 import java.util.Collection;
 import java.util.LinkedList;
 import java.util.Properties;
+import java.util.stream.Collectors;
 
 public abstract class InternalSQLParserParameterizedIT {
     
@@ -46,7 +50,7 @@ public abstract class InternalSQLParserParameterizedIT {
     
     private final String sqlCaseId;
     
-    private final String databaseType;
+    private final DatabaseType databaseType;
     
     private final SQLCaseType sqlCaseType;
     
@@ -58,7 +62,7 @@ public abstract class InternalSQLParserParameterizedIT {
     
     protected static Collection<InternalSQLParserParameterizedArray> 
getTestParameters(final String... databaseTypes) {
         Collection<InternalSQLParserParameterizedArray> result = new 
LinkedList<>();
-        for (InternalSQLParserParameterizedArray each : 
SQL_CASES.generateTestParameters(Arrays.asList(databaseTypes))) {
+        for (InternalSQLParserParameterizedArray each : 
SQL_CASES.generateTestParameters(Arrays.stream(databaseTypes).map(DatabaseTypeFactory::getInstance).collect(Collectors.toSet())))
 {
             if (!isPlaceholderWithoutParameter(each)) {
                 result.add(each);
             }
@@ -73,7 +77,7 @@ public abstract class InternalSQLParserParameterizedIT {
     @Test
     public final void assertSupportedSQL() {
         String sql = SQL_CASES.getSQL(sqlCaseId, sqlCaseType, 
SQL_PARSER_TEST_CASES.get(sqlCaseId).getParameters());
-        SQLStatement actual = parseSQLStatement("H2".equals(databaseType) ? 
"MySQL" : databaseType, sql);
+        SQLStatement actual = parseSQLStatement((databaseType instanceof 
BranchDatabaseType ? ((BranchDatabaseType) databaseType).getTrunkDatabaseType() 
: databaseType).getType(), sql);
         SQLParserTestCase expected = SQL_PARSER_TEST_CASES.get(sqlCaseId);
         SQLStatementAssert.assertIs(new SQLCaseAssertContext(sqlCaseId, sql, 
expected.getParameters(), sqlCaseType), actual, expected);
     }
diff --git 
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/InternalUnsupportedSQLParserParameterizedIT.java
 
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/InternalUnsupportedSQLParserParameterizedIT.java
index a3d0e226e9d..d2b6149ac6a 100644
--- 
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/InternalUnsupportedSQLParserParameterizedIT.java
+++ 
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/InternalUnsupportedSQLParserParameterizedIT.java
@@ -17,6 +17,9 @@
 
 package org.apache.shardingsphere.test.sql.parser.internal.engine;
 
+import org.apache.shardingsphere.infra.database.type.BranchDatabaseType;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.type.DatabaseTypeFactory;
 import org.apache.shardingsphere.sql.parser.api.CacheOption;
 import org.apache.shardingsphere.sql.parser.api.SQLParserEngine;
 import org.apache.shardingsphere.sql.parser.api.SQLVisitorEngine;
@@ -38,7 +41,7 @@ public abstract class 
InternalUnsupportedSQLParserParameterizedIT {
     
     private final String sqlCaseId;
     
-    private final String databaseType;
+    private final DatabaseType databaseType;
     
     private final SQLCaseType sqlCaseType;
     
@@ -49,14 +52,14 @@ public abstract class 
InternalUnsupportedSQLParserParameterizedIT {
     }
     
     protected static Collection<InternalSQLParserParameterizedArray> 
getTestParameters(final String databaseType) {
-        return 
SQL_CASES.generateTestParameters(Collections.singleton(databaseType));
+        return 
SQL_CASES.generateTestParameters(Collections.singleton(DatabaseTypeFactory.getInstance(databaseType)));
     }
     
     @Test(expected = Exception.class)
     // TODO should expect SQLParsingException only
     public final void assertUnsupportedSQL() {
         String sql = SQL_CASES.getSQL(sqlCaseId, sqlCaseType, 
Collections.emptyList());
-        String databaseType = "H2".equals(this.databaseType) ? "MySQL" : 
this.databaseType;
+        String databaseType = (this.databaseType instanceof BranchDatabaseType 
? ((BranchDatabaseType) this.databaseType).getTrunkDatabaseType() : 
this.databaseType).getType();
         CacheOption cacheOption = new CacheOption(128, 1024L);
         ParseASTNode parseContext = new SQLParserEngine(databaseType, 
cacheOption).parse(sql, false);
         // TODO remove SQLStatement sqlStatement =
diff --git 
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/param/InternalSQLParserParameterizedArray.java
 
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/param/InternalSQLParserParameterizedArray.java
index 55039e04e37..5134b9dc99c 100644
--- 
a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/param/InternalSQLParserParameterizedArray.java
+++ 
b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/param/InternalSQLParserParameterizedArray.java
@@ -19,6 +19,7 @@ package 
org.apache.shardingsphere.test.sql.parser.internal.engine.param;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.test.sql.parser.SQLParserParameterizedArray;
 import 
org.apache.shardingsphere.test.sql.parser.internal.cases.sql.type.SQLCaseType;
 
@@ -31,12 +32,12 @@ public final class InternalSQLParserParameterizedArray 
implements SQLParserParam
     
     private final String sqlCaseId;
     
-    private final String databaseType;
+    private final DatabaseType databaseType;
     
     private final SQLCaseType sqlCaseType;
     
     @Override
     public String toString() {
-        return String.format("%s (%s) -> %s", sqlCaseId, sqlCaseType, 
databaseType);
+        return String.format("%s (%s) -> %s", sqlCaseId, sqlCaseType, 
databaseType.getType());
     }
 }
diff --git 
a/test/parser/src/test/java/org/apache/shardingsphere/test/sql/parser/internal/fixture/DistSQLFixtureDatabaseType.java
 
b/test/parser/src/test/java/org/apache/shardingsphere/test/sql/parser/internal/fixture/DistSQLFixtureDatabaseType.java
new file mode 100644
index 00000000000..f04d7eee0df
--- /dev/null
+++ 
b/test/parser/src/test/java/org/apache/shardingsphere/test/sql/parser/internal/fixture/DistSQLFixtureDatabaseType.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.test.sql.parser.internal.fixture;
+
+import org.apache.shardingsphere.infra.database.metadata.DataSourceMetaData;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
+import org.apache.shardingsphere.sql.parser.sql.common.enums.QuoteCharacter;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Map;
+
+import static org.mockito.Mockito.mock;
+
+public final class DistSQLFixtureDatabaseType implements DatabaseType {
+    
+    @Override
+    public QuoteCharacter getQuoteCharacter() {
+        return QuoteCharacter.NONE;
+    }
+    
+    @Override
+    public Collection<String> getJdbcUrlPrefixes() {
+        return Collections.emptyList();
+    }
+    
+    @Override
+    public DataSourceMetaData getDataSourceMetaData(final String url, final 
String username) {
+        return mock(DataSourceMetaData.class);
+    }
+    
+    @Override
+    public Map<String, Collection<String>> getSystemDatabaseSchemaMap() {
+        return Collections.emptyMap();
+    }
+    
+    @Override
+    public Collection<String> getSystemSchemas() {
+        return Collections.emptyList();
+    }
+    
+    @Override
+    public String getType() {
+        return "ShardingSphere";
+    }
+}
diff --git 
a/test/parser/src/test/resources/META-INF/services/org.apache.shardingsphere.infra.database.type.DatabaseType
 
b/test/parser/src/test/resources/META-INF/services/org.apache.shardingsphere.infra.database.type.DatabaseType
new file mode 100644
index 00000000000..4ade3b83581
--- /dev/null
+++ 
b/test/parser/src/test/resources/META-INF/services/org.apache.shardingsphere.infra.database.type.DatabaseType
@@ -0,0 +1,18 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+org.apache.shardingsphere.test.sql.parser.internal.fixture.DistSQLFixtureDatabaseType


Reply via email to