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) {