This is an automated email from the ASF dual-hosted git repository.
chengzhang 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 6c898557f5a Refactor SQLStatementParserEngineFactory (#27339)
6c898557f5a is described below
commit 6c898557f5af4982b40c0d595d30b75e26934206
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Jul 21 02:48:48 2023 +0800
Refactor SQLStatementParserEngineFactory (#27339)
* Refactor SQLStatementParserEngine
* Refactor SQLStatementParserEngineFactory
* Refactor SQLStatementParserEngineFactory
* Refactor SQLStatementParserEngineFactory
* Refactor SQLStatementParserEngineFactory
* Refactor SQLStatementParserEngineFactory
* Refactor SQLStatementParserEngineFactory
* Refactor SQLStatementParserEngineFactory
---
.../cache/checker/ShardingRouteCacheableCheckerTest.java | 2 +-
.../engine/type/standard/assertion/ShardingRouteAssert.java | 2 +-
.../infra/parser/cache/SQLStatementCacheBuilder.java | 5 +++--
.../infra/parser/cache/SQLStatementCacheLoader.java | 3 ++-
.../infra/parser/sql/SQLStatementParserEngine.java | 5 +++--
.../infra/parser/sql/SQLStatementParserEngineFactory.java | 10 +++++-----
.../infra/parser/sql/SQLStatementParserExecutor.java | 5 ++---
.../infra/parser/cache/SQLStatementCacheBuilderTest.java | 4 +++-
.../infra/parser/cache/SQLStatementCacheLoaderTest.java | 4 +++-
.../driver/jdbc/adapter/PreparedStatementAdapterTest.java | 5 ++++-
.../unsupported/UnsupportedOperationPreparedStatementTest.java | 6 ++++--
.../compiler/metadata/view/ShardingSphereViewExpander.java | 2 +-
.../executor/enumerable/EnumerableScanExecutor.java | 2 +-
.../handler/distsql/rul/sql/ParseDistSQLExecutorTest.java | 8 +++-----
.../query/extended/parse/PostgreSQLComParseExecutorTest.java | 8 +++++---
.../e2e/driver/statement/ShardingPreparedStatementTest.java | 1 -
.../shardingsphere/test/it/rewrite/engine/SQLRewriterIT.java | 2 +-
17 files changed, 42 insertions(+), 32 deletions(-)
diff --git
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/cache/checker/ShardingRouteCacheableCheckerTest.java
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/cache/checker/ShardingRouteCacheableCheckerTest.java
index 83827357363..ad46047c97e 100644
---
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/cache/checker/ShardingRouteCacheableCheckerTest.java
+++
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/cache/checker/ShardingRouteCacheableCheckerTest.java
@@ -137,7 +137,7 @@ class ShardingRouteCacheableCheckerTest {
private SQLStatement parse(final String sql) {
CacheOption cacheOption = new CacheOption(0, 0);
- return new SQLStatementParserEngine("PostgreSQL", cacheOption,
cacheOption, false).parse(sql, false);
+ return new
SQLStatementParserEngine(TypedSPILoader.getService(DatabaseType.class,
"PostgreSQL"), cacheOption, cacheOption, false).parse(sql, false);
}
private static class TestCaseArgumentsProvider implements
ArgumentsProvider {
diff --git
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/standard/assertion/ShardingRouteAssert.java
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/standard/assertion/ShardingRouteAssert.java
index 488e3f1484b..5a49fd6cb2d 100644
---
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/standard/assertion/ShardingRouteAssert.java
+++
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/standard/assertion/ShardingRouteAssert.java
@@ -75,7 +75,7 @@ public final class ShardingRouteAssert {
TimestampServiceRule timestampServiceRule =
ShardingRoutingEngineFixtureBuilder.createTimeServiceRule();
Map<String, ShardingSphereSchema> schemas = buildSchemas();
ConfigurationProperties props = new ConfigurationProperties(new
Properties());
- SQLStatementParserEngine sqlStatementParserEngine = new
SQLStatementParserEngine("MySQL",
+ SQLStatementParserEngine sqlStatementParserEngine = new
SQLStatementParserEngine(TypedSPILoader.getService(DatabaseType.class, "MySQL"),
new CacheOption(2000, 65535L), new CacheOption(128, 1024L),
false);
ShardingSphereRuleMetaData ruleMetaData = new
ShardingSphereRuleMetaData(Arrays.asList(shardingRule, singleRule,
timestampServiceRule));
ShardingSphereResourceMetaData resourceMetaData =
mock(ShardingSphereResourceMetaData.class, RETURNS_DEEP_STUBS);
diff --git
a/infra/parser/src/main/java/org/apache/shardingsphere/infra/parser/cache/SQLStatementCacheBuilder.java
b/infra/parser/src/main/java/org/apache/shardingsphere/infra/parser/cache/SQLStatementCacheBuilder.java
index 2c7c6e17545..c871bd56af6 100644
---
a/infra/parser/src/main/java/org/apache/shardingsphere/infra/parser/cache/SQLStatementCacheBuilder.java
+++
b/infra/parser/src/main/java/org/apache/shardingsphere/infra/parser/cache/SQLStatementCacheBuilder.java
@@ -21,6 +21,7 @@ import com.github.benmanes.caffeine.cache.Caffeine;
import com.github.benmanes.caffeine.cache.LoadingCache;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
+import org.apache.shardingsphere.infra.database.spi.DatabaseType;
import org.apache.shardingsphere.sql.parser.api.CacheOption;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
@@ -39,8 +40,8 @@ public final class SQLStatementCacheBuilder {
* @param databaseType database type
* @return built SQL statement cache
*/
- public static LoadingCache<String, SQLStatement> build(final String
databaseType,
- final CacheOption
sqlStatementCacheOption, final CacheOption parseTreeCacheOption, final boolean
isParseComment) {
+ public static LoadingCache<String, SQLStatement> build(final DatabaseType
databaseType, final CacheOption sqlStatementCacheOption,
+ final CacheOption
parseTreeCacheOption, final boolean isParseComment) {
return
Caffeine.newBuilder().softValues().initialCapacity(sqlStatementCacheOption.getInitialCapacity()).maximumSize(sqlStatementCacheOption.getMaximumSize())
.build(new SQLStatementCacheLoader(databaseType,
parseTreeCacheOption, isParseComment));
}
diff --git
a/infra/parser/src/main/java/org/apache/shardingsphere/infra/parser/cache/SQLStatementCacheLoader.java
b/infra/parser/src/main/java/org/apache/shardingsphere/infra/parser/cache/SQLStatementCacheLoader.java
index d8eb73731e5..1cc1bf5f3c5 100644
---
a/infra/parser/src/main/java/org/apache/shardingsphere/infra/parser/cache/SQLStatementCacheLoader.java
+++
b/infra/parser/src/main/java/org/apache/shardingsphere/infra/parser/cache/SQLStatementCacheLoader.java
@@ -18,6 +18,7 @@
package org.apache.shardingsphere.infra.parser.cache;
import com.github.benmanes.caffeine.cache.CacheLoader;
+import org.apache.shardingsphere.infra.database.spi.DatabaseType;
import org.apache.shardingsphere.infra.parser.sql.SQLStatementParserExecutor;
import org.apache.shardingsphere.sql.parser.api.CacheOption;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
@@ -31,7 +32,7 @@ public final class SQLStatementCacheLoader implements
CacheLoader<String, SQLSta
private final SQLStatementParserExecutor sqlStatementParserExecutor;
- public SQLStatementCacheLoader(final String databaseType, final
CacheOption parseTreeCacheOption, final boolean isParseComment) {
+ public SQLStatementCacheLoader(final DatabaseType databaseType, final
CacheOption parseTreeCacheOption, final boolean isParseComment) {
sqlStatementParserExecutor = new
SQLStatementParserExecutor(databaseType, parseTreeCacheOption, isParseComment);
}
diff --git
a/infra/parser/src/main/java/org/apache/shardingsphere/infra/parser/sql/SQLStatementParserEngine.java
b/infra/parser/src/main/java/org/apache/shardingsphere/infra/parser/sql/SQLStatementParserEngine.java
index f0ba50a17b2..3ae98f0a2b6 100644
---
a/infra/parser/src/main/java/org/apache/shardingsphere/infra/parser/sql/SQLStatementParserEngine.java
+++
b/infra/parser/src/main/java/org/apache/shardingsphere/infra/parser/sql/SQLStatementParserEngine.java
@@ -19,6 +19,7 @@ package org.apache.shardingsphere.infra.parser.sql;
import com.github.benmanes.caffeine.cache.LoadingCache;
import lombok.Getter;
+import org.apache.shardingsphere.infra.database.spi.DatabaseType;
import org.apache.shardingsphere.infra.parser.cache.SQLStatementCacheBuilder;
import org.apache.shardingsphere.sql.parser.api.CacheOption;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
@@ -41,7 +42,7 @@ public final class SQLStatementParserEngine {
@Getter
private final boolean isParseComment;
- public SQLStatementParserEngine(final String databaseType, final
CacheOption sqlStatementCacheOption, final CacheOption parseTreeCacheOption,
final boolean isParseComment) {
+ public SQLStatementParserEngine(final DatabaseType databaseType, final
CacheOption sqlStatementCacheOption, final CacheOption parseTreeCacheOption,
final boolean isParseComment) {
sqlStatementParserExecutor = new
SQLStatementParserExecutor(databaseType, parseTreeCacheOption, isParseComment);
sqlStatementCache = SQLStatementCacheBuilder.build(databaseType,
sqlStatementCacheOption, parseTreeCacheOption, isParseComment);
this.sqlStatementCacheOption = sqlStatementCacheOption;
@@ -53,7 +54,7 @@ public final class SQLStatementParserEngine {
* Parse to SQL statement.
*
* @param sql SQL to be parsed
- * @param useCache whether use cache
+ * @param useCache whether to use cache
* @return SQL statement
*/
public SQLStatement parse(final String sql, final boolean useCache) {
diff --git
a/infra/parser/src/main/java/org/apache/shardingsphere/infra/parser/sql/SQLStatementParserEngineFactory.java
b/infra/parser/src/main/java/org/apache/shardingsphere/infra/parser/sql/SQLStatementParserEngineFactory.java
index 0930901cc91..0c5619d26a1 100644
---
a/infra/parser/src/main/java/org/apache/shardingsphere/infra/parser/sql/SQLStatementParserEngineFactory.java
+++
b/infra/parser/src/main/java/org/apache/shardingsphere/infra/parser/sql/SQLStatementParserEngineFactory.java
@@ -31,7 +31,7 @@ import java.util.concurrent.ConcurrentHashMap;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class SQLStatementParserEngineFactory {
- private static final Map<String, SQLStatementParserEngine> ENGINES = new
ConcurrentHashMap<>();
+ private static final Map<DatabaseType, SQLStatementParserEngine> ENGINES =
new ConcurrentHashMap<>();
/**
* Get SQL statement parser engine.
@@ -44,13 +44,13 @@ public final class SQLStatementParserEngineFactory {
*/
public static SQLStatementParserEngine getSQLStatementParserEngine(final
DatabaseType databaseType,
final
CacheOption sqlStatementCacheOption, final CacheOption parseTreeCacheOption,
final boolean isParseComment) {
- SQLStatementParserEngine result = ENGINES.get(databaseType.getType());
+ SQLStatementParserEngine result = ENGINES.get(databaseType);
if (null == result) {
- result = ENGINES.computeIfAbsent(databaseType.getType(), key ->
new SQLStatementParserEngine(key, sqlStatementCacheOption,
parseTreeCacheOption, isParseComment));
+ result = ENGINES.computeIfAbsent(databaseType, key -> new
SQLStatementParserEngine(key, sqlStatementCacheOption, parseTreeCacheOption,
isParseComment));
} else if
(!result.getSqlStatementCacheOption().equals(sqlStatementCacheOption) ||
!result.getParseTreeCacheOption().equals(parseTreeCacheOption)
|| result.isParseComment() != isParseComment) {
- result = new SQLStatementParserEngine(databaseType.getType(),
sqlStatementCacheOption, parseTreeCacheOption, isParseComment);
- ENGINES.put(databaseType.getType(), result);
+ result = new SQLStatementParserEngine(databaseType,
sqlStatementCacheOption, parseTreeCacheOption, isParseComment);
+ ENGINES.put(databaseType, result);
}
return result;
}
diff --git
a/infra/parser/src/main/java/org/apache/shardingsphere/infra/parser/sql/SQLStatementParserExecutor.java
b/infra/parser/src/main/java/org/apache/shardingsphere/infra/parser/sql/SQLStatementParserExecutor.java
index c679f581e88..72c708d9f36 100644
---
a/infra/parser/src/main/java/org/apache/shardingsphere/infra/parser/sql/SQLStatementParserExecutor.java
+++
b/infra/parser/src/main/java/org/apache/shardingsphere/infra/parser/sql/SQLStatementParserExecutor.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.infra.parser.sql;
import org.apache.shardingsphere.infra.database.spi.DatabaseType;
-import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.CacheOption;
import org.apache.shardingsphere.sql.parser.api.SQLParserEngine;
import org.apache.shardingsphere.sql.parser.api.SQLStatementVisitorEngine;
@@ -33,8 +32,8 @@ public final class SQLStatementParserExecutor {
private final SQLStatementVisitorEngine visitorEngine;
- public SQLStatementParserExecutor(final String databaseType, final
CacheOption parseTreeCacheOption, final boolean isParseComment) {
- parserEngine = new
SQLParserEngine(TypedSPILoader.getService(DatabaseType.class, databaseType),
parseTreeCacheOption);
+ public SQLStatementParserExecutor(final DatabaseType databaseType, final
CacheOption parseTreeCacheOption, final boolean isParseComment) {
+ parserEngine = new SQLParserEngine(databaseType, parseTreeCacheOption);
visitorEngine = new SQLStatementVisitorEngine(databaseType,
isParseComment);
}
diff --git
a/infra/parser/src/test/java/org/apache/shardingsphere/infra/parser/cache/SQLStatementCacheBuilderTest.java
b/infra/parser/src/test/java/org/apache/shardingsphere/infra/parser/cache/SQLStatementCacheBuilderTest.java
index 6ae39b5be82..a255cf13b1e 100644
---
a/infra/parser/src/test/java/org/apache/shardingsphere/infra/parser/cache/SQLStatementCacheBuilderTest.java
+++
b/infra/parser/src/test/java/org/apache/shardingsphere/infra/parser/cache/SQLStatementCacheBuilderTest.java
@@ -18,6 +18,8 @@
package org.apache.shardingsphere.infra.parser.cache;
import com.github.benmanes.caffeine.cache.LoadingCache;
+import org.apache.shardingsphere.infra.database.spi.DatabaseType;
+import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.CacheOption;
import org.junit.jupiter.api.Test;
@@ -28,6 +30,6 @@ class SQLStatementCacheBuilderTest {
@Test
void assertBuild() {
- assertThat(SQLStatementCacheBuilder.build("MySQL", new
CacheOption(2000, 65535L), new CacheOption(128, 1024L), false),
isA(LoadingCache.class));
+
assertThat(SQLStatementCacheBuilder.build(TypedSPILoader.getService(DatabaseType.class,
"MySQL"), new CacheOption(2000, 65535L), new CacheOption(128, 1024L), false),
isA(LoadingCache.class));
}
}
diff --git
a/infra/parser/src/test/java/org/apache/shardingsphere/infra/parser/cache/SQLStatementCacheLoaderTest.java
b/infra/parser/src/test/java/org/apache/shardingsphere/infra/parser/cache/SQLStatementCacheLoaderTest.java
index b91ce6c9350..0a703ce09b2 100644
---
a/infra/parser/src/test/java/org/apache/shardingsphere/infra/parser/cache/SQLStatementCacheLoaderTest.java
+++
b/infra/parser/src/test/java/org/apache/shardingsphere/infra/parser/cache/SQLStatementCacheLoaderTest.java
@@ -17,7 +17,9 @@
package org.apache.shardingsphere.infra.parser.cache;
+import org.apache.shardingsphere.infra.database.spi.DatabaseType;
import org.apache.shardingsphere.infra.parser.sql.SQLStatementParserExecutor;
+import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.CacheOption;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import org.junit.jupiter.api.Test;
@@ -34,7 +36,7 @@ class SQLStatementCacheLoaderTest {
@Test
void assertSQLStatementCacheLoad() throws ReflectiveOperationException {
- SQLStatementCacheLoader sqlStatementCacheLoader = new
SQLStatementCacheLoader("MySQL", new CacheOption(128, 1024L), false);
+ SQLStatementCacheLoader sqlStatementCacheLoader = new
SQLStatementCacheLoader(TypedSPILoader.getService(DatabaseType.class, "MySQL"),
new CacheOption(128, 1024L), false);
SQLStatementParserExecutor executor =
mock(SQLStatementParserExecutor.class, RETURNS_DEEP_STUBS);
Plugins.getMemberAccessor().set(sqlStatementCacheLoader.getClass().getDeclaredField("sqlStatementParserExecutor"),
sqlStatementCacheLoader, executor);
assertThat(sqlStatementCacheLoader.load(SQL), isA(SQLStatement.class));
diff --git
a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/adapter/PreparedStatementAdapterTest.java
b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/adapter/PreparedStatementAdapterTest.java
index 0bf616767f4..fd9453d2564 100644
---
a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/adapter/PreparedStatementAdapterTest.java
+++
b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/adapter/PreparedStatementAdapterTest.java
@@ -22,7 +22,9 @@ import
org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSpherePrepar
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.database.core.DefaultDatabase;
import org.apache.shardingsphere.infra.database.mysql.MySQLDatabaseType;
+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.parser.rule.SQLParserRule;
import
org.apache.shardingsphere.parser.rule.builder.DefaultSQLParserRuleConfigurationBuilder;
import org.apache.shardingsphere.sqlfederation.rule.SQLFederationRule;
@@ -72,7 +74,8 @@ class PreparedStatementAdapterTest {
new TrafficRule(new
DefaultTrafficRuleConfigurationBuilder().build()),
new SQLFederationRule(new
DefaultSQLFederationRuleConfigurationBuilder().build(), Collections.emptyMap(),
mock(ConfigurationProperties.class)))));
when(connection.getContextManager().getMetaDataContexts().getMetaData().getProps()).thenReturn(new
ConfigurationProperties(new Properties()));
-
when(connection.getContextManager().getMetaDataContexts().getMetaData().getDatabase(connection.getDatabaseName()).getProtocolType()).thenReturn(new
MySQLDatabaseType());
+
when(connection.getContextManager().getMetaDataContexts().getMetaData().getDatabase(
+
connection.getDatabaseName()).getProtocolType()).thenReturn(TypedSPILoader.getService(DatabaseType.class,
"MySQL"));
when(connection.getContextManager().getMetaDataContexts().getMetaData().getDatabase(connection.getDatabaseName()).getResourceMetaData().getStorageTypes())
.thenReturn(Collections.singletonMap("ds_0", new
MySQLDatabaseType()));
shardingSpherePreparedStatement = new
ShardingSpherePreparedStatement(connection, "SELECT 1");
diff --git
a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/unsupported/UnsupportedOperationPreparedStatementTest.java
b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/unsupported/UnsupportedOperationPreparedStatementTest.java
index bac3a0c6eb1..01edb0df640 100644
---
a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/unsupported/UnsupportedOperationPreparedStatementTest.java
+++
b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/unsupported/UnsupportedOperationPreparedStatementTest.java
@@ -21,8 +21,9 @@ import
org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConne
import
org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSpherePreparedStatement;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.database.core.DefaultDatabase;
-import org.apache.shardingsphere.infra.database.mysql.MySQLDatabaseType;
+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.parser.rule.SQLParserRule;
import
org.apache.shardingsphere.parser.rule.builder.DefaultSQLParserRuleConfigurationBuilder;
import org.apache.shardingsphere.sqlfederation.rule.SQLFederationRule;
@@ -57,7 +58,8 @@ class UnsupportedOperationPreparedStatementTest {
new SQLParserRule(new
DefaultSQLParserRuleConfigurationBuilder().build()),
new TrafficRule(new
DefaultTrafficRuleConfigurationBuilder().build()),
new SQLFederationRule(new
DefaultSQLFederationRuleConfigurationBuilder().build(), Collections.emptyMap(),
mock(ConfigurationProperties.class)))));
-
when(connection.getContextManager().getMetaDataContexts().getMetaData().getDatabase(connection.getDatabaseName()).getProtocolType()).thenReturn(new
MySQLDatabaseType());
+
when(connection.getContextManager().getMetaDataContexts().getMetaData().getDatabase(
+
connection.getDatabaseName()).getProtocolType()).thenReturn(TypedSPILoader.getService(DatabaseType.class,
"MySQL"));
when(connection.getContextManager().getMetaDataContexts().getMetaData().getProps()).thenReturn(new
ConfigurationProperties(new Properties()));
shardingSpherePreparedStatement = new
ShardingSpherePreparedStatement(connection, "SELECT 1");
}
diff --git
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/metadata/view/ShardingSphereViewExpander.java
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/metadata/view/ShardingSphereViewExpander.java
index 00fa1691403..a5cd5ff457d 100644
---
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/metadata/view/ShardingSphereViewExpander.java
+++
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/metadata/view/ShardingSphereViewExpander.java
@@ -46,7 +46,7 @@ public final class ShardingSphereViewExpander implements
ViewExpander {
@Override
public RelRoot expandView(final RelDataType rowType, final String
queryString, final List<String> schemaPath, @Nullable final List<String>
viewPath) {
- SQLStatement sqlStatement = new
SQLStatementParserEngine(databaseType.getType(),
sqlParserRule.getSqlStatementCache(),
+ SQLStatement sqlStatement = new SQLStatementParserEngine(databaseType,
sqlParserRule.getSqlStatementCache(),
sqlParserRule.getParseTreeCache(),
sqlParserRule.isSqlCommentParseEnabled()).parse(queryString, false);
SqlNode sqlNode = SQLNodeConverterEngine.convert(sqlStatement);
return sqlToRelConverter.convertQuery(sqlNode, true, true);
diff --git
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/enumerable/EnumerableScanExecutor.java
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/enumerable/EnumerableScanExecutor.java
index 5ddb1c969b8..80aeff2fe41 100644
---
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/enumerable/EnumerableScanExecutor.java
+++
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/enumerable/EnumerableScanExecutor.java
@@ -279,7 +279,7 @@ public final class EnumerableScanExecutor {
private QueryContext createQueryContext(final ShardingSphereMetaData
metaData, final EnumerableScanExecutorContext sqlString, final DatabaseType
databaseType, final boolean useCache) {
String sql = sqlString.getSql().replace("\n", " ");
- SQLStatement sqlStatement = new
SQLStatementParserEngine(databaseType.getType(),
+ SQLStatement sqlStatement = new SQLStatementParserEngine(databaseType,
optimizerContext.getSqlParserRule().getSqlStatementCache(),
optimizerContext.getSqlParserRule().getParseTreeCache(),
optimizerContext.getSqlParserRule().isSqlCommentParseEnabled()).parse(sql,
useCache);
List<Object> params = getParameters(sqlString.getParamIndexes());
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 2155d1cd750..ff9df6f2b69 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
@@ -21,8 +21,6 @@ import com.google.gson.Gson;
import com.google.gson.JsonParser;
import
org.apache.shardingsphere.distsql.parser.statement.rul.sql.FormatStatement;
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;
@@ -73,7 +71,7 @@ class ParseDistSQLExecutorTest {
@Test
void assertGetRowDataForMySQL() throws SQLException {
String sql = "SELECT * FROM t_order";
- when(connectionSession.getProtocolType()).thenReturn(new
MySQLDatabaseType());
+
when(connectionSession.getProtocolType()).thenReturn(TypedSPILoader.getService(DatabaseType.class,
"MySQL"));
RULBackendHandler<FormatStatement> handler = new
SQLRULBackendHandler<>();
handler.init(new ParseStatement(sql), connectionSession);
handler.execute();
@@ -86,7 +84,7 @@ class ParseDistSQLExecutorTest {
@Test
void assertGetRowDataForPostgreSQL() throws SQLException {
String sql = "SELECT * FROM t_order";
- when(connectionSession.getProtocolType()).thenReturn(new
PostgreSQLDatabaseType());
+
when(connectionSession.getProtocolType()).thenReturn(TypedSPILoader.getService(DatabaseType.class,
"PostgreSQL"));
RULBackendHandler<FormatStatement> handler = new
SQLRULBackendHandler<>();
handler.init(new ParseStatement(sql), connectionSession);
handler.execute();
@@ -98,7 +96,7 @@ class ParseDistSQLExecutorTest {
@Test
void assertExecute() {
String sql = "wrong sql";
- when(connectionSession.getProtocolType()).thenReturn(new
MySQLDatabaseType());
+
when(connectionSession.getProtocolType()).thenReturn(TypedSPILoader.getService(DatabaseType.class,
"MySQL"));
RULBackendHandler<FormatStatement> handler = new
SQLRULBackendHandler<>();
handler.init(new ParseStatement(sql), connectionSession);
assertThrows(SQLParsingException.class, handler::execute);
diff --git
a/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/parse/PostgreSQLComParseExecutorTest.java
b/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/parse/PostgreSQLComParseExecutorTest.java
index 452d1f4fa75..87c7249c2b4 100644
---
a/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/parse/PostgreSQLComParseExecutorTest.java
+++
b/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/parse/PostgreSQLComParseExecutorTest.java
@@ -24,8 +24,9 @@ import
org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.ext
import
org.apache.shardingsphere.distsql.parser.statement.ral.queryable.ShowDistVariableStatement;
import
org.apache.shardingsphere.infra.binder.statement.CommonSQLStatementContext;
import
org.apache.shardingsphere.infra.binder.statement.dml.InsertStatementContext;
-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;
@@ -153,8 +154,9 @@ class PostgreSQLComParseExecutorTest {
private ContextManager mockContextManager() {
ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS);
-
when(result.getMetaDataContexts().getMetaData().getDatabase("foo_db").getResourceMetaData().getStorageTypes()).thenReturn(Collections.singletonMap("foo_ds",
new PostgreSQLDatabaseType()));
-
when(result.getMetaDataContexts().getMetaData().getDatabase("foo_db").getProtocolType()).thenReturn(new
PostgreSQLDatabaseType());
+
when(result.getMetaDataContexts().getMetaData().getDatabase("foo_db").getResourceMetaData().getStorageTypes()).thenReturn(
+ Collections.singletonMap("foo_ds",
TypedSPILoader.getService(DatabaseType.class, "PostgreSQL")));
+
when(result.getMetaDataContexts().getMetaData().getDatabase("foo_db").getProtocolType()).thenReturn(TypedSPILoader.getService(DatabaseType.class,
"PostgreSQL"));
when(result.getMetaDataContexts().getMetaData().getGlobalRuleMetaData())
.thenReturn(new
ShardingSphereRuleMetaData(Collections.singleton(new SQLParserRule(new
DefaultSQLParserRuleConfigurationBuilder().build()))));
return result;
diff --git
a/test/e2e/driver/src/test/java/org/apache/shardingsphere/test/e2e/driver/statement/ShardingPreparedStatementTest.java
b/test/e2e/driver/src/test/java/org/apache/shardingsphere/test/e2e/driver/statement/ShardingPreparedStatementTest.java
index 771997b5790..4e23b0f4087 100644
---
a/test/e2e/driver/src/test/java/org/apache/shardingsphere/test/e2e/driver/statement/ShardingPreparedStatementTest.java
+++
b/test/e2e/driver/src/test/java/org/apache/shardingsphere/test/e2e/driver/statement/ShardingPreparedStatementTest.java
@@ -416,7 +416,6 @@ class ShardingPreparedStatementTest extends
AbstractShardingDriverTest {
assertThat(resultSet.getString(3), is(status));
}
}
-
try (
Connection connection =
getShardingSphereDataSource().getConnection();
PreparedStatement preparedStatement =
connection.prepareStatement(INSERT_ON_DUPLICATE_KEY_SQL);
diff --git
a/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/SQLRewriterIT.java
b/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/SQLRewriterIT.java
index 08b0d29c114..7a7afe1ef47 100644
---
a/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/SQLRewriterIT.java
+++
b/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/SQLRewriterIT.java
@@ -122,7 +122,7 @@ public abstract class SQLRewriterIT {
Map<String, DatabaseType> storageTypes =
createStorageTypes(databaseConfig, databaseType);
when(resourceMetaData.getStorageTypes()).thenReturn(storageTypes);
String schemaName =
DatabaseTypeEngine.getDefaultSchemaName(databaseType,
DefaultDatabase.LOGIC_NAME);
- SQLStatementParserEngine sqlStatementParserEngine = new
SQLStatementParserEngine(testParams.getDatabaseType(),
+ SQLStatementParserEngine sqlStatementParserEngine = new
SQLStatementParserEngine(TypedSPILoader.getService(DatabaseType.class,
testParams.getDatabaseType()),
sqlParserRule.getSqlStatementCache(),
sqlParserRule.getParseTreeCache(), sqlParserRule.isSqlCommentParseEnabled());
SQLStatement sqlStatement =
sqlStatementParserEngine.parse(testParams.getInputSQL(), false);
Collection<ShardingSphereRule> databaseRules =
createDatabaseRules(databaseConfig, schemaName, sqlStatement);