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

duanzhengqiang 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 a6c7e5c3de5 Use DatabaseType on SQLParserRule (#27323)
a6c7e5c3de5 is described below

commit a6c7e5c3de514e138843805173300069d99264e2
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Jul 20 14:49:02 2023 +0800

    Use DatabaseType on SQLParserRule (#27323)
---
 .../driver/jdbc/core/statement/ShardingSpherePreparedStatement.java | 2 +-
 .../driver/jdbc/core/statement/ShardingSphereStatement.java         | 2 +-
 .../data/pipeline/core/preparer/PipelineJobPreparerUtils.java       | 2 +-
 .../sqlfederation/compiler/it/SQLStatementCompilerIT.java           | 3 ++-
 .../java/org/apache/shardingsphere/parser/rule/SQLParserRule.java   | 5 +++--
 .../org/apache/shardingsphere/parser/rule/SQLParserRuleTest.java    | 4 +++-
 .../proxy/backend/handler/ProxyBackendHandlerFactory.java           | 2 +-
 .../proxy/backend/handler/distsql/rul/sql/ParseDistSQLExecutor.java | 2 +-
 .../proxy/backend/handler/distsql/rul/sql/PreviewExecutor.java      | 2 +-
 .../distsql/ral/queryable/ConvertYamlConfigurationExecutorTest.java | 5 +++--
 .../backend/handler/distsql/rul/sql/ParseDistSQLExecutorTest.java   | 6 ++++--
 .../backend/mysql/handler/admin/MySQLSetVariableAdminExecutor.java  | 2 +-
 .../executor/information/SelectInformationSchemataExecutorTest.java | 5 ++++-
 .../handler/admin/PostgreSQLAdminExecutorCreatorTest.java           | 4 +++-
 .../command/query/binary/prepare/MySQLComStmtPrepareExecutor.java   | 2 +-
 .../query/text/fieldlist/MySQLComFieldListPacketExecutor.java       | 2 +-
 .../mysql/command/query/text/query/MySQLComQueryPacketExecutor.java | 2 +-
 .../mysql/command/query/text/query/MySQLMultiStatementsHandler.java | 2 +-
 .../command/query/extended/parse/PostgreSQLComParseExecutor.java    | 2 +-
 19 files changed, 34 insertions(+), 22 deletions(-)

diff --git 
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
 
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
index 310804e6c2d..6b25b247dcb 100644
--- 
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
+++ 
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
@@ -194,7 +194,7 @@ public final class ShardingSpherePreparedStatement extends 
AbstractPreparedState
         statements = new ArrayList<>();
         parameterSets = new ArrayList<>();
         DatabaseType protocolType = 
metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getProtocolType();
-        SQLParserEngine sqlParserEngine = 
sqlParserRule.getSQLParserEngine(protocolType.getTrunkDatabaseType().orElse(protocolType).getType());
+        SQLParserEngine sqlParserEngine = 
sqlParserRule.getSQLParserEngine(protocolType.getTrunkDatabaseType().orElse(protocolType));
         sqlStatement = sqlParserEngine.parse(this.sql, true);
         sqlStatementContext = 
SQLStatementContextFactory.newInstance(metaDataContexts.getMetaData(), 
sqlStatement, connection.getDatabaseName());
         parameterMetaData = new ShardingSphereParameterMetaData(sqlStatement);
diff --git 
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
 
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
index 3e502e16757..887539b3a60 100644
--- 
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
+++ 
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
@@ -495,7 +495,7 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
         SQLParserRule sqlParserRule = 
metaDataContexts.getMetaData().getGlobalRuleMetaData().getSingleRule(SQLParserRule.class);
         String sql = sqlParserRule.isSqlCommentParseEnabled() ? originSQL : 
SQLHintUtils.removeHint(originSQL);
         DatabaseType protocolType = 
metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getProtocolType();
-        SQLStatement sqlStatement = 
sqlParserRule.getSQLParserEngine(protocolType.getTrunkDatabaseType().orElse(protocolType).getType()).parse(sql,
 false);
+        SQLStatement sqlStatement = 
sqlParserRule.getSQLParserEngine(protocolType.getTrunkDatabaseType().orElse(protocolType)).parse(sql,
 false);
         SQLStatementContext sqlStatementContext = 
SQLStatementContextFactory.newInstance(metaDataContexts.getMetaData(), 
sqlStatement, connection.getDatabaseName());
         HintValueContext hintValueContext = 
sqlParserRule.isSqlCommentParseEnabled() ? new HintValueContext() : 
SQLHintUtils.extractHint(originSQL).orElseGet(HintValueContext::new);
         return new QueryContext(sqlStatementContext, sql, 
Collections.emptyList(), hintValueContext);
diff --git 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/preparer/PipelineJobPreparerUtils.java
 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/preparer/PipelineJobPreparerUtils.java
index e27a0f717e1..dafff1ad6e2 100644
--- 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/preparer/PipelineJobPreparerUtils.java
+++ 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/preparer/PipelineJobPreparerUtils.java
@@ -93,7 +93,7 @@ public final class PipelineJobPreparerUtils {
     public static SQLParserEngine getSQLParserEngine(final 
ShardingSphereMetaData metaData, final String targetDatabaseName) {
         ShardingSphereDatabase database = 
metaData.getDatabase(targetDatabaseName);
         DatabaseType databaseType = 
database.getProtocolType().getTrunkDatabaseType().orElse(database.getProtocolType());
-        return 
metaData.getGlobalRuleMetaData().getSingleRule(SQLParserRule.class).getSQLParserEngine(databaseType.getType());
+        return 
metaData.getGlobalRuleMetaData().getSingleRule(SQLParserRule.class).getSQLParserEngine(databaseType);
     }
     
     /**
diff --git 
a/kernel/sql-federation/core/src/test/java/org/apache/shardingsphere/sqlfederation/compiler/it/SQLStatementCompilerIT.java
 
b/kernel/sql-federation/core/src/test/java/org/apache/shardingsphere/sqlfederation/compiler/it/SQLStatementCompilerIT.java
index c159756fd7a..6dc2baa37c8 100644
--- 
a/kernel/sql-federation/core/src/test/java/org/apache/shardingsphere/sqlfederation/compiler/it/SQLStatementCompilerIT.java
+++ 
b/kernel/sql-federation/core/src/test/java/org/apache/shardingsphere/sqlfederation/compiler/it/SQLStatementCompilerIT.java
@@ -32,6 +32,7 @@ import 
org.apache.shardingsphere.infra.database.spi.DatabaseType;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereColumn;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
+import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
 import org.apache.shardingsphere.parser.rule.SQLParserRule;
 import 
org.apache.shardingsphere.parser.rule.builder.DefaultSQLParserRuleConfigurationBuilder;
 import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
@@ -245,7 +246,7 @@ class SQLStatementCompilerIT {
     @ParameterizedTest(name = "{0}")
     @ArgumentsSource(TestCaseArgumentsProvider.class)
     void assertCompile(final TestCase testcase) {
-        SQLStatement sqlStatement = 
sqlParserRule.getSQLParserEngine("MySQL").parse(testcase.getSql(), false);
+        SQLStatement sqlStatement = 
sqlParserRule.getSQLParserEngine(TypedSPILoader.getService(DatabaseType.class, 
"MySQL")).parse(testcase.getSql(), false);
         String actual = sqlStatementCompiler.compile(sqlStatement, 
"MySQL").getPhysicalPlan().explain().replaceAll("[\r\n]", " ");
         assertThat(actual, is(testcase.getAssertion().getExpectedResult()));
     }
diff --git 
a/kernel/sql-parser/core/src/main/java/org/apache/shardingsphere/parser/rule/SQLParserRule.java
 
b/kernel/sql-parser/core/src/main/java/org/apache/shardingsphere/parser/rule/SQLParserRule.java
index c8de01d8927..8314640452a 100644
--- 
a/kernel/sql-parser/core/src/main/java/org/apache/shardingsphere/parser/rule/SQLParserRule.java
+++ 
b/kernel/sql-parser/core/src/main/java/org/apache/shardingsphere/parser/rule/SQLParserRule.java
@@ -18,6 +18,7 @@
 package org.apache.shardingsphere.parser.rule;
 
 import lombok.Getter;
+import org.apache.shardingsphere.infra.database.spi.DatabaseType;
 import org.apache.shardingsphere.infra.parser.SQLParserEngine;
 import org.apache.shardingsphere.infra.parser.ShardingSphereSQLParserEngine;
 import org.apache.shardingsphere.infra.parser.SimpleSQLParserEngine;
@@ -55,9 +56,9 @@ public final class SQLParserRule implements GlobalRule {
      * @param databaseType database type
      * @return SQL parser engine
      */
-    public SQLParserEngine getSQLParserEngine(final String databaseType) {
+    public SQLParserEngine getSQLParserEngine(final DatabaseType databaseType) 
{
         return "Standard".equals(engineType)
-                ? new ShardingSphereSQLParserEngine(databaseType, 
sqlStatementCache, parseTreeCache, sqlCommentParseEnabled)
+                ? new ShardingSphereSQLParserEngine(databaseType.getType(), 
sqlStatementCache, parseTreeCache, sqlCommentParseEnabled)
                 : new SimpleSQLParserEngine();
     }
     
diff --git 
a/kernel/sql-parser/core/src/test/java/org/apache/shardingsphere/parser/rule/SQLParserRuleTest.java
 
b/kernel/sql-parser/core/src/test/java/org/apache/shardingsphere/parser/rule/SQLParserRuleTest.java
index 792cddbaaf7..30b8ee67778 100644
--- 
a/kernel/sql-parser/core/src/test/java/org/apache/shardingsphere/parser/rule/SQLParserRuleTest.java
+++ 
b/kernel/sql-parser/core/src/test/java/org/apache/shardingsphere/parser/rule/SQLParserRuleTest.java
@@ -17,6 +17,8 @@
 
 package org.apache.shardingsphere.parser.rule;
 
+import org.apache.shardingsphere.infra.database.spi.DatabaseType;
+import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
 import org.apache.shardingsphere.parser.config.SQLParserRuleConfiguration;
 import org.apache.shardingsphere.sql.parser.api.CacheOption;
 import org.junit.jupiter.api.BeforeEach;
@@ -38,7 +40,7 @@ class SQLParserRuleTest {
     
     @Test
     void assertGetSQLParserEngine() {
-        assertNotNull(sqlParserRule.getSQLParserEngine("H2"));
+        
assertNotNull(sqlParserRule.getSQLParserEngine(TypedSPILoader.getService(DatabaseType.class,
 "H2")));
     }
     
     @Test
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactory.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactory.java
index 142432777fc..f2c2fbbd9c3 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactory.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactory.java
@@ -89,7 +89,7 @@ public final class ProxyBackendHandlerFactory {
             return new SkipBackendHandler(new EmptyStatement());
         }
         SQLParserRule sqlParserRule = 
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getSingleRule(SQLParserRule.class);
-        SQLStatement sqlStatement = 
sqlParserRule.getSQLParserEngine(getProtocolType(databaseType, 
connectionSession).getType()).parse(sql, false);
+        SQLStatement sqlStatement = 
sqlParserRule.getSQLParserEngine(getProtocolType(databaseType, 
connectionSession)).parse(sql, false);
         return newInstance(databaseType, sql, sqlStatement, connectionSession, 
hintValueContext);
     }
     
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/ParseDistSQLExecutor.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/ParseDistSQLExecutor.java
index 8ef68676d2c..bdc396a6dbc 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/ParseDistSQLExecutor.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/ParseDistSQLExecutor.java
@@ -48,7 +48,7 @@ public final class ParseDistSQLExecutor implements 
ConnectionSessionRequiredRULE
     
     private SQLStatement parseSQL(final ShardingSphereMetaData metaData, final 
ConnectionSession connectionSession, final ParseStatement sqlStatement) {
         SQLParserRule sqlParserRule = 
metaData.getGlobalRuleMetaData().getSingleRule(SQLParserRule.class);
-        return 
sqlParserRule.getSQLParserEngine(connectionSession.getProtocolType().getType()).parse(sqlStatement.getSql(),
 false);
+        return 
sqlParserRule.getSQLParserEngine(connectionSession.getProtocolType()).parse(sqlStatement.getSql(),
 false);
     }
     
     @Override
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/PreviewExecutor.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/PreviewExecutor.java
index 4fe2c2d37c2..d82a2e81a94 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/PreviewExecutor.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/PreviewExecutor.java
@@ -94,7 +94,7 @@ public final class PreviewExecutor implements 
ConnectionSessionRequiredRULExecut
         SQLParserRule sqlParserRule = 
globalRuleMetaData.getSingleRule(SQLParserRule.class);
         String sql = sqlParserRule.isSqlCommentParseEnabled() ? 
sqlStatement.getSql() : SQLHintUtils.removeHint(sqlStatement.getSql());
         DatabaseType protocolType = 
metaDataContexts.getMetaData().getDatabase(databaseName).getProtocolType();
-        SQLStatement previewedStatement = 
sqlParserRule.getSQLParserEngine(protocolType.getTrunkDatabaseType().orElse(protocolType).getType()).parse(sql,
 false);
+        SQLStatement previewedStatement = 
sqlParserRule.getSQLParserEngine(protocolType.getTrunkDatabaseType().orElse(protocolType)).parse(sql,
 false);
         SQLStatementContext sqlStatementContext = 
SQLStatementContextFactory.newInstance(metaDataContexts.getMetaData(), 
previewedStatement, databaseName);
         HintValueContext hintValueContext = 
sqlParserRule.isSqlCommentParseEnabled() ? new HintValueContext() : 
SQLHintUtils.extractHint(sqlStatement.getSql()).orElseGet(HintValueContext::new);
         QueryContext queryContext = new QueryContext(sqlStatementContext, sql, 
Collections.emptyList(), hintValueContext);
diff --git 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ConvertYamlConfigurationExecutorTest.java
 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ConvertYamlConfigurationExecutorTest.java
index 2a53ee43ccc..297f804a1ad 100644
--- 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ConvertYamlConfigurationExecutorTest.java
+++ 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ConvertYamlConfigurationExecutorTest.java
@@ -21,8 +21,9 @@ import com.google.common.base.Splitter;
 import com.google.common.base.Strings;
 import lombok.SneakyThrows;
 import 
org.apache.shardingsphere.distsql.parser.statement.ral.queryable.ConvertYamlConfigurationStatement;
-import org.apache.shardingsphere.infra.database.mysql.MySQLDatabaseType;
+import org.apache.shardingsphere.infra.database.spi.DatabaseType;
 import 
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
+import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
 import org.apache.shardingsphere.parser.rule.SQLParserRule;
 import 
org.apache.shardingsphere.parser.rule.builder.DefaultSQLParserRuleConfigurationBuilder;
 import org.junit.jupiter.api.Test;
@@ -98,7 +99,7 @@ class ConvertYamlConfigurationExecutorTest {
     private void assertParseSQL(final String actual) {
         Splitter.on(";").trimResults().splitToList(actual).forEach(each -> {
             if (!Strings.isNullOrEmpty(each)) {
-                assertNotNull(sqlParserRule.getSQLParserEngine(new 
MySQLDatabaseType().getType()).parse(each, false));
+                
assertNotNull(sqlParserRule.getSQLParserEngine(TypedSPILoader.getService(DatabaseType.class,
 "MySQL")).parse(each, false));
             }
         });
     }
diff --git 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/ParseDistSQLExecutorTest.java
 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/ParseDistSQLExecutorTest.java
index 492449bd57f..2155d1cd750 100644
--- 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/ParseDistSQLExecutorTest.java
+++ 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/ParseDistSQLExecutorTest.java
@@ -23,7 +23,9 @@ import 
org.apache.shardingsphere.distsql.parser.statement.rul.sql.FormatStatemen
 import 
org.apache.shardingsphere.distsql.parser.statement.rul.sql.ParseStatement;
 import org.apache.shardingsphere.infra.database.mysql.MySQLDatabaseType;
 import 
org.apache.shardingsphere.infra.database.postgresql.PostgreSQLDatabaseType;
+import org.apache.shardingsphere.infra.database.spi.DatabaseType;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
+import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import org.apache.shardingsphere.parser.rule.SQLParserRule;
 import 
org.apache.shardingsphere.parser.rule.builder.DefaultSQLParserRuleConfigurationBuilder;
@@ -76,7 +78,7 @@ class ParseDistSQLExecutorTest {
         handler.init(new ParseStatement(sql), connectionSession);
         handler.execute();
         handler.next();
-        SQLStatement statement = 
sqlParserRule.getSQLParserEngine("MySQL").parse(sql, false);
+        SQLStatement statement = 
sqlParserRule.getSQLParserEngine(TypedSPILoader.getService(DatabaseType.class, 
"MySQL")).parse(sql, false);
         assertThat(new 
LinkedList<>(handler.getRowData().getData()).getFirst(), 
is("MySQLSelectStatement"));
         assertThat(JsonParser.parseString(new 
LinkedList<>(handler.getRowData().getData()).getLast().toString()), 
is(JsonParser.parseString(new Gson().toJson(statement))));
     }
@@ -89,7 +91,7 @@ class ParseDistSQLExecutorTest {
         handler.init(new ParseStatement(sql), connectionSession);
         handler.execute();
         handler.next();
-        SQLStatement statement = 
sqlParserRule.getSQLParserEngine("PostgreSQL").parse(sql, false);
+        SQLStatement statement = 
sqlParserRule.getSQLParserEngine(TypedSPILoader.getService(DatabaseType.class, 
"PostgreSQL")).parse(sql, false);
         assertThat(JsonParser.parseString(new 
LinkedList<>(handler.getRowData().getData()).getLast().toString()), 
is(JsonParser.parseString(new Gson().toJson(statement))));
     }
     
diff --git 
a/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLSetVariableAdminExecutor.java
 
b/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLSetVariableAdminExecutor.java
index b84c0fa1b85..333369ec626 100644
--- 
a/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLSetVariableAdminExecutor.java
+++ 
b/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLSetVariableAdminExecutor.java
@@ -90,7 +90,7 @@ public final class MySQLSetVariableAdminExecutor implements 
DatabaseAdminExecuto
         String sql = "SET " + concatenatedGlobalVariables;
         MetaDataContexts metaDataContexts = 
ProxyContext.getInstance().getContextManager().getMetaDataContexts();
         SQLParserRule sqlParserRule = 
metaDataContexts.getMetaData().getGlobalRuleMetaData().getSingleRule(SQLParserRule.class);
-        SQLStatement sqlStatement = 
sqlParserRule.getSQLParserEngine(TypedSPILoader.getService(DatabaseType.class, 
"MySQL").getType()).parse(sql, false);
+        SQLStatement sqlStatement = 
sqlParserRule.getSQLParserEngine(TypedSPILoader.getService(DatabaseType.class, 
"MySQL")).parse(sql, false);
         SQLStatementContext sqlStatementContext = 
SQLStatementContextFactory.newInstance(ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData(),
                 sqlStatement, connectionSession.getDefaultDatabaseName());
         DatabaseBackendHandler databaseBackendHandler = 
DatabaseConnectorFactory.getInstance()
diff --git 
a/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/information/SelectInformationSchemataExecutorTest.java
 
b/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/information/SelectInformationSchemataExecutorTest.java
index a2360c35183..4d66b7c9cdf 100644
--- 
a/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/information/SelectInformationSchemataExecutorTest.java
+++ 
b/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/information/SelectInformationSchemataExecutorTest.java
@@ -21,11 +21,13 @@ import 
org.apache.shardingsphere.authority.provider.database.model.privilege.Dat
 import org.apache.shardingsphere.authority.rule.AuthorityRule;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.mysql.MySQLDatabaseType;
+import org.apache.shardingsphere.infra.database.spi.DatabaseType;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.ShardingSphereResourceMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import org.apache.shardingsphere.infra.metadata.user.Grantee;
+import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
 import org.apache.shardingsphere.metadata.persist.MetaDataPersistService;
@@ -83,7 +85,8 @@ class SelectInformationSchemataExecutorTest {
     @BeforeEach
     void setUp() {
         when(connectionSession.getGrantee()).thenReturn(grantee);
-        statement = (SelectStatement) new SQLParserRule(new 
DefaultSQLParserRuleConfigurationBuilder().build()).getSQLParserEngine("MySQL").parse(sql,
 false);
+        statement = (SelectStatement) new SQLParserRule(
+                new 
DefaultSQLParserRuleConfigurationBuilder().build()).getSQLParserEngine(TypedSPILoader.getService(DatabaseType.class,
 "MySQL")).parse(sql, false);
     }
     
     @Test
diff --git 
a/proxy/backend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/backend/postgresql/handler/admin/PostgreSQLAdminExecutorCreatorTest.java
 
b/proxy/backend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/backend/postgresql/handler/admin/PostgreSQLAdminExecutorCreatorTest.java
index 0bf72e17583..9b94bdc51f4 100644
--- 
a/proxy/backend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/backend/postgresql/handler/admin/PostgreSQLAdminExecutorCreatorTest.java
+++ 
b/proxy/backend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/backend/postgresql/handler/admin/PostgreSQLAdminExecutorCreatorTest.java
@@ -20,6 +20,8 @@ package 
org.apache.shardingsphere.proxy.backend.postgresql.handler.admin;
 import 
org.apache.shardingsphere.infra.binder.statement.UnknownSQLStatementContext;
 import 
org.apache.shardingsphere.infra.binder.statement.dml.DeleteStatementContext;
 import 
org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementContext;
+import org.apache.shardingsphere.infra.database.spi.DatabaseType;
+import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
 import org.apache.shardingsphere.parser.config.SQLParserRuleConfiguration;
 import org.apache.shardingsphere.parser.rule.SQLParserRule;
 import 
org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseAdminExecutor;
@@ -129,7 +131,7 @@ class PostgreSQLAdminExecutorCreatorTest {
     private SQLStatement parseSQL(final String sql) {
         CacheOption cacheOption = new CacheOption(0, 0);
         SQLParserRule sqlParserRule = new SQLParserRule(new 
SQLParserRuleConfiguration(false, cacheOption, cacheOption));
-        return sqlParserRule.getSQLParserEngine("PostgreSQL").parse(sql, 
false);
+        return 
sqlParserRule.getSQLParserEngine(TypedSPILoader.getService(DatabaseType.class, 
"PostgreSQL")).parse(sql, false);
     }
     
     @Test
diff --git 
a/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutor.java
 
b/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutor.java
index f305624c5b7..4b4d80977e1 100644
--- 
a/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutor.java
+++ 
b/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutor.java
@@ -77,7 +77,7 @@ public final class MySQLComStmtPrepareExecutor implements 
CommandExecutor {
         failedIfContainsMultiStatements();
         MetaDataContexts metaDataContexts = 
ProxyContext.getInstance().getContextManager().getMetaDataContexts();
         SQLParserRule sqlParserRule = 
metaDataContexts.getMetaData().getGlobalRuleMetaData().getSingleRule(SQLParserRule.class);
-        SQLStatement sqlStatement = 
sqlParserRule.getSQLParserEngine(TypedSPILoader.getService(DatabaseType.class, 
"MySQL").getType()).parse(packet.getSQL(), true);
+        SQLStatement sqlStatement = 
sqlParserRule.getSQLParserEngine(TypedSPILoader.getService(DatabaseType.class, 
"MySQL")).parse(packet.getSQL(), true);
         if (!MySQLComStmtPrepareChecker.isAllowedStatement(sqlStatement)) {
             throw new UnsupportedPreparedStatementException();
         }
diff --git 
a/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/fieldlist/MySQLComFieldListPacketExecutor.java
 
b/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/fieldlist/MySQLComFieldListPacketExecutor.java
index 796b5351ca3..332fd418b70 100644
--- 
a/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/fieldlist/MySQLComFieldListPacketExecutor.java
+++ 
b/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/fieldlist/MySQLComFieldListPacketExecutor.java
@@ -65,7 +65,7 @@ public final class MySQLComFieldListPacketExecutor implements 
CommandExecutor {
         String sql = String.format(SQL, packet.getTable(), databaseName);
         MetaDataContexts metaDataContexts = 
ProxyContext.getInstance().getContextManager().getMetaDataContexts();
         SQLParserRule sqlParserRule = 
metaDataContexts.getMetaData().getGlobalRuleMetaData().getSingleRule(SQLParserRule.class);
-        SQLStatement sqlStatement = 
sqlParserRule.getSQLParserEngine(TypedSPILoader.getService(DatabaseType.class, 
"MySQL").getType()).parse(sql, false);
+        SQLStatement sqlStatement = 
sqlParserRule.getSQLParserEngine(TypedSPILoader.getService(DatabaseType.class, 
"MySQL")).parse(sql, false);
         SQLStatementContext sqlStatementContext = 
SQLStatementContextFactory.newInstance(metaDataContexts.getMetaData(), 
sqlStatement, databaseName);
         ProxyDatabaseConnectionManager databaseConnectionManager = 
connectionSession.getDatabaseConnectionManager();
         QueryContext queryContext = new QueryContext(sqlStatementContext, sql, 
Collections.emptyList());
diff --git 
a/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLComQueryPacketExecutor.java
 
b/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLComQueryPacketExecutor.java
index 71bdab79c73..ed16976ebde 100644
--- 
a/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLComQueryPacketExecutor.java
+++ 
b/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLComQueryPacketExecutor.java
@@ -77,7 +77,7 @@ public final class MySQLComQueryPacketExecutor implements 
QueryCommandExecutor {
         }
         MetaDataContexts metaDataContexts = 
ProxyContext.getInstance().getContextManager().getMetaDataContexts();
         SQLParserRule rule = 
metaDataContexts.getMetaData().getGlobalRuleMetaData().getSingleRule(SQLParserRule.class);
-        return rule.getSQLParserEngine(databaseType.getType()).parse(sql, 
false);
+        return rule.getSQLParserEngine(databaseType).parse(sql, false);
     }
     
     private boolean areMultiStatements(final ConnectionSession 
connectionSession, final SQLStatement sqlStatement, final String sql) {
diff --git 
a/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLMultiStatementsHandler.java
 
b/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLMultiStatementsHandler.java
index 585da47e3ef..4532741398b 100644
--- 
a/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLMultiStatementsHandler.java
+++ 
b/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLMultiStatementsHandler.java
@@ -114,7 +114,7 @@ public final class MySQLMultiStatementsHandler implements 
ProxyBackendHandler {
     private SQLParserEngine getSQLParserEngine() {
         MetaDataContexts metaDataContexts = 
ProxyContext.getInstance().getContextManager().getMetaDataContexts();
         SQLParserRule sqlParserRule = 
metaDataContexts.getMetaData().getGlobalRuleMetaData().getSingleRule(SQLParserRule.class);
-        return 
sqlParserRule.getSQLParserEngine(TypedSPILoader.getService(DatabaseType.class, 
"MySQL").getType());
+        return 
sqlParserRule.getSQLParserEngine(TypedSPILoader.getService(DatabaseType.class, 
"MySQL"));
     }
     
     private List<String> extractMultiStatements(final Pattern pattern, final 
String sql) {
diff --git 
a/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/parse/PostgreSQLComParseExecutor.java
 
b/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/parse/PostgreSQLComParseExecutor.java
index 6ac3fe390cf..cbf76c44363 100644
--- 
a/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/parse/PostgreSQLComParseExecutor.java
+++ 
b/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/parse/PostgreSQLComParseExecutor.java
@@ -84,7 +84,7 @@ public final class PostgreSQLComParseExecutor implements 
CommandExecutor {
         MetaDataContexts metaDataContexts = 
ProxyContext.getInstance().getContextManager().getMetaDataContexts();
         SQLParserRule sqlParserRule = 
metaDataContexts.getMetaData().getGlobalRuleMetaData().getSingleRule(SQLParserRule.class);
         DatabaseType protocolType = 
metaDataContexts.getMetaData().getDatabase(databaseName).getProtocolType();
-        return 
sqlParserRule.getSQLParserEngine(protocolType.getTrunkDatabaseType().orElse(protocolType).getType());
+        return 
sqlParserRule.getSQLParserEngine(protocolType.getTrunkDatabaseType().orElse(protocolType));
     }
     
     private String convertSQLToJDBCStyle(final List<ParameterMarkerSegment> 
parameterMarkerSegments, final String sql) {

Reply via email to