You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2022/10/24 10:29:50 UTC
[shardingsphere] branch master updated: Support heterogeneous databases for executor engine (#21715)
This is an automated email from the ASF dual-hosted git repository.
panjuan 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 20a080921f4 Support heterogeneous databases for executor engine (#21715)
20a080921f4 is described below
commit 20a080921f4adad4b0cc8cb5ddfc471abdca043f
Author: Zhengqiang Duan <du...@apache.org>
AuthorDate: Mon Oct 24 18:29:44 2022 +0800
Support heterogeneous databases for executor engine (#21715)
* Support heterogeneous databases for executor engine
* format code
---
.../driver/DriverExecutionPrepareEngine.java | 12 +++-----
.../prepare/driver/ExecutorStatementManager.java | 7 +++--
.../prepare/driver/SQLExecutionUnitBuilder.java | 4 ++-
.../sql/prepare/driver/jdbc/DatabaseTypeAware.java | 33 ----------------------
.../PreparedStatementExecutionUnitBuilder.java | 9 +++---
.../builder/StatementExecutionUnitBuilder.java | 9 +++---
.../builder/PreparedQueryExecutionUnitBuilder.java | 3 +-
.../fixture/FixtureExecutorStatementManager.java | 6 ++--
.../fixture/FixtureSQLExecutionUnitBuilder.java | 3 +-
.../statement/ShardingSpherePreparedStatement.java | 4 +--
.../core/statement/ShardingSphereStatement.java | 2 +-
.../jdbc/core/statement/StatementManager.java | 6 ++--
.../backend/communication/ProxySQLExecutor.java | 7 +++--
.../communication/ReactiveProxySQLExecutor.java | 5 ++--
.../jdbc/JDBCDatabaseCommunicationEngine.java | 2 +-
.../jdbc/statement/JDBCBackendStatement.java | 20 +++++--------
.../communication/vertx/VertxBackendStatement.java | 6 ++--
.../admin/DatabaseAdminQueryBackendHandler.java | 2 +-
.../OpenGaussSystemCatalogAdminQueryExecutor.java | 2 +-
.../executor/ShowShardingHintStatusExecutor.java | 2 +-
.../ral/queryable/ShowTableMetadataHandler.java | 2 +-
.../ImportDatabaseConfigurationHandler.java | 2 +-
.../ral/updatable/RefreshTableMetadataHandler.java | 2 +-
.../rdl/resource/AddResourceBackendHandler.java | 2 +-
.../rdl/resource/AlterResourceBackendHandler.java | 2 +-
.../handler/distsql/rul/sql/FormatSQLHandler.java | 2 +-
.../distsql/rul/sql/ParseDistSQLHandler.java | 2 +-
.../handler/distsql/rul/sql/PreviewHandler.java | 2 +-
.../transaction/TransactionBackendHandler.java | 10 +++----
.../proxy/backend/session/ConnectionSession.java | 6 ++--
.../jdbc/connection/JDBCBackendConnectionTest.java | 3 +-
...enGaussSystemCatalogAdminQueryExecutorTest.java | 8 +++---
.../ral/advance/ParseDistSQLHandlerTest.java | 6 ++--
.../resource/AddResourceBackendHandlerTest.java | 2 +-
.../resource/AlterResourceBackendHandlerTest.java | 2 +-
.../text/query/MySQLMultiStatementsHandler.java | 3 +-
.../query/MySQLMultiStatementsHandlerTest.java | 3 +-
.../bind/OpenGaussComBatchBindExecutorTest.java | 4 ++-
.../PostgreSQLBatchedStatementsExecutor.java | 2 +-
...egatedBatchedStatementsCommandExecutorTest.java | 4 ++-
.../PostgreSQLBatchedStatementsExecutorTest.java | 4 ++-
.../statement/dal/EmptyStatementTestCase.java | 2 +-
42 files changed, 100 insertions(+), 119 deletions(-)
diff --git a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/driver/DriverExecutionPrepareEngine.java b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/driver/DriverExecutionPrepareEngine.java
index 32743e1b6d8..6536157fb5a 100644
--- a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/driver/DriverExecutionPrepareEngine.java
+++ b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/driver/DriverExecutionPrepareEngine.java
@@ -24,7 +24,6 @@ import org.apache.shardingsphere.infra.executor.sql.context.SQLUnit;
import org.apache.shardingsphere.infra.executor.sql.execute.engine.ConnectionMode;
import org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.DriverExecutionUnit;
import org.apache.shardingsphere.infra.executor.sql.prepare.AbstractExecutionPrepareEngine;
-import org.apache.shardingsphere.infra.executor.sql.prepare.driver.jdbc.DatabaseTypeAware;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import java.sql.SQLException;
@@ -54,17 +53,17 @@ public final class DriverExecutionPrepareEngine<T extends DriverExecutionUnit<?>
@SuppressWarnings("rawtypes")
private final SQLExecutionUnitBuilder sqlExecutionUnitBuilder;
- private final DatabaseType databaseType;
+ private final Map<String, DatabaseType> databaseTypes;
public DriverExecutionPrepareEngine(final String type, final int maxConnectionsSizePerQuery, final ExecutorConnectionManager<C> connectionManager,
final ExecutorStatementManager<C, ?, ?> statementManager, final StorageResourceOption option, final Collection<ShardingSphereRule> rules,
- final DatabaseType databaseType) {
+ final Map<String, DatabaseType> databaseTypes) {
super(maxConnectionsSizePerQuery, rules);
this.connectionManager = connectionManager;
this.statementManager = statementManager;
this.option = option;
sqlExecutionUnitBuilder = getCachedSqlExecutionUnitBuilder(type);
- this.databaseType = databaseType;
+ this.databaseTypes = databaseTypes;
}
/**
@@ -97,10 +96,7 @@ public final class DriverExecutionPrepareEngine<T extends DriverExecutionUnit<?>
private ExecutionGroup<T> createExecutionGroup(final String dataSourceName, final List<SQLUnit> sqlUnits, final C connection, final ConnectionMode connectionMode) throws SQLException {
List<T> result = new LinkedList<>();
for (SQLUnit each : sqlUnits) {
- if (statementManager instanceof DatabaseTypeAware) {
- ((DatabaseTypeAware) statementManager).setDatabaseType(databaseType);
- }
- result.add((T) sqlExecutionUnitBuilder.build(new ExecutionUnit(dataSourceName, each), statementManager, connection, connectionMode, option));
+ result.add((T) sqlExecutionUnitBuilder.build(new ExecutionUnit(dataSourceName, each), statementManager, connection, connectionMode, option, databaseTypes.get(dataSourceName)));
}
return new ExecutionGroup<>(result);
}
diff --git a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/driver/ExecutorStatementManager.java b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/driver/ExecutorStatementManager.java
index e3483e58541..4054a089c35 100644
--- a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/driver/ExecutorStatementManager.java
+++ b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/driver/ExecutorStatementManager.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.infra.executor.sql.prepare.driver;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
import org.apache.shardingsphere.infra.executor.sql.execute.engine.ConnectionMode;
@@ -37,10 +38,11 @@ public interface ExecutorStatementManager<C, R, O extends StorageResourceOption>
* @param connection connection
* @param connectionMode connection mode
* @param option storage resource option
+ * @param databaseType database type
* @return storage resource
* @throws SQLException SQL exception
*/
- R createStorageResource(C connection, ConnectionMode connectionMode, O option) throws SQLException;
+ R createStorageResource(C connection, ConnectionMode connectionMode, O option, DatabaseType databaseType) throws SQLException;
/**
* Create storage resource.
@@ -49,8 +51,9 @@ public interface ExecutorStatementManager<C, R, O extends StorageResourceOption>
* @param connection connection
* @param connectionMode connection mode
* @param option storage resource option
+ * @param databaseType database type
* @return storage resource
* @throws SQLException SQL exception
*/
- R createStorageResource(ExecutionUnit executionUnit, C connection, ConnectionMode connectionMode, O option) throws SQLException;
+ R createStorageResource(ExecutionUnit executionUnit, C connection, ConnectionMode connectionMode, O option, DatabaseType databaseType) throws SQLException;
}
diff --git a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/driver/SQLExecutionUnitBuilder.java b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/driver/SQLExecutionUnitBuilder.java
index c22a4c6e038..9c383f09123 100644
--- a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/driver/SQLExecutionUnitBuilder.java
+++ b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/driver/SQLExecutionUnitBuilder.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.infra.executor.sql.prepare.driver;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
import org.apache.shardingsphere.infra.executor.sql.execute.engine.ConnectionMode;
import org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.DriverExecutionUnit;
@@ -44,8 +45,9 @@ public interface SQLExecutionUnitBuilder<T extends DriverExecutionUnit<?>, M ext
* @param connection connection
* @param connectionMode connection mode
* @param option storage resource option
+ * @param databaseType database type
* @return SQL execution unit
* @throws SQLException SQL exception
*/
- T build(ExecutionUnit executionUnit, M executorManager, C connection, ConnectionMode connectionMode, O option) throws SQLException;
+ T build(ExecutionUnit executionUnit, M executorManager, C connection, ConnectionMode connectionMode, O option, DatabaseType databaseType) throws SQLException;
}
diff --git a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/driver/jdbc/DatabaseTypeAware.java b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/driver/jdbc/DatabaseTypeAware.java
deleted file mode 100644
index 933d39f180a..00000000000
--- a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/driver/jdbc/DatabaseTypeAware.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.infra.executor.sql.prepare.driver.jdbc;
-
-import org.apache.shardingsphere.infra.database.type.DatabaseType;
-
-/**
- * Database type aware.
- */
-public interface DatabaseTypeAware {
-
- /**
- * Set database type.
- *
- * @param databaseType database type
- */
- void setDatabaseType(DatabaseType databaseType);
-}
diff --git a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/driver/jdbc/builder/PreparedStatementExecutionUnitBuilder.java b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/driver/jdbc/builder/PreparedStatementExecutionUnitBuilder.java
index 4a82a8e64fb..7b6a6a05d7a 100644
--- a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/driver/jdbc/builder/PreparedStatementExecutionUnitBuilder.java
+++ b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/driver/jdbc/builder/PreparedStatementExecutionUnitBuilder.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.infra.executor.sql.prepare.driver.jdbc.builder;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
import org.apache.shardingsphere.infra.executor.sql.execute.engine.ConnectionMode;
import org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutionUnit;
@@ -35,15 +36,15 @@ public final class PreparedStatementExecutionUnitBuilder implements JDBCExecutio
@Override
public JDBCExecutionUnit build(final ExecutionUnit executionUnit, final ExecutorJDBCStatementManager statementManager,
- final Connection connection, final ConnectionMode connectionMode, final StatementOption option) throws SQLException {
+ final Connection connection, final ConnectionMode connectionMode, final StatementOption option, final DatabaseType databaseType) throws SQLException {
PreparedStatement preparedStatement = createPreparedStatement(
- executionUnit, statementManager, connection, connectionMode, option);
+ executionUnit, statementManager, connection, connectionMode, option, databaseType);
return new JDBCExecutionUnit(executionUnit, connectionMode, preparedStatement);
}
private PreparedStatement createPreparedStatement(final ExecutionUnit executionUnit, final ExecutorJDBCStatementManager statementManager, final Connection connection,
- final ConnectionMode connectionMode, final StatementOption option) throws SQLException {
- return (PreparedStatement) statementManager.createStorageResource(executionUnit, connection, connectionMode, option);
+ final ConnectionMode connectionMode, final StatementOption option, final DatabaseType databaseType) throws SQLException {
+ return (PreparedStatement) statementManager.createStorageResource(executionUnit, connection, connectionMode, option, databaseType);
}
@Override
diff --git a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/driver/jdbc/builder/StatementExecutionUnitBuilder.java b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/driver/jdbc/builder/StatementExecutionUnitBuilder.java
index 7af040ca980..4a05e17fcd6 100644
--- a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/driver/jdbc/builder/StatementExecutionUnitBuilder.java
+++ b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/driver/jdbc/builder/StatementExecutionUnitBuilder.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.infra.executor.sql.prepare.driver.jdbc.builder;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
import org.apache.shardingsphere.infra.executor.sql.execute.engine.ConnectionMode;
import org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutionUnit;
@@ -35,13 +36,13 @@ public final class StatementExecutionUnitBuilder implements JDBCExecutionUnitBui
@Override
public JDBCExecutionUnit build(final ExecutionUnit executionUnit, final ExecutorJDBCStatementManager statementManager,
- final Connection connection, final ConnectionMode connectionMode, final StatementOption option) throws SQLException {
- return new JDBCExecutionUnit(executionUnit, connectionMode, createStatement(statementManager, connection, connectionMode, option));
+ final Connection connection, final ConnectionMode connectionMode, final StatementOption option, final DatabaseType databaseType) throws SQLException {
+ return new JDBCExecutionUnit(executionUnit, connectionMode, createStatement(statementManager, connection, connectionMode, option, databaseType));
}
private Statement createStatement(final ExecutorJDBCStatementManager statementManager, final Connection connection,
- final ConnectionMode connectionMode, final StatementOption option) throws SQLException {
- return statementManager.createStorageResource(connection, connectionMode, option);
+ final ConnectionMode connectionMode, final StatementOption option, final DatabaseType databaseType) throws SQLException {
+ return statementManager.createStorageResource(connection, connectionMode, option, databaseType);
}
@Override
diff --git a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/driver/vertx/builder/PreparedQueryExecutionUnitBuilder.java b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/driver/vertx/builder/PreparedQueryExecutionUnitBuilder.java
index fd8ab9a44d0..359240bd2f2 100644
--- a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/driver/vertx/builder/PreparedQueryExecutionUnitBuilder.java
+++ b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/driver/vertx/builder/PreparedQueryExecutionUnitBuilder.java
@@ -19,6 +19,7 @@ package org.apache.shardingsphere.infra.executor.sql.prepare.driver.vertx.builde
import io.vertx.core.Future;
import io.vertx.sqlclient.SqlClient;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
import org.apache.shardingsphere.infra.executor.sql.execute.engine.ConnectionMode;
import org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.vertx.VertxExecutionUnit;
@@ -32,7 +33,7 @@ public final class PreparedQueryExecutionUnitBuilder implements VertxExecutionUn
@Override
public VertxExecutionUnit build(final ExecutionUnit executionUnit, final ExecutorVertxStatementManager statementManager,
- final Future<? extends SqlClient> connection, final ConnectionMode connectionMode, final VertxExecutionContext option) {
+ final Future<? extends SqlClient> connection, final ConnectionMode connectionMode, final VertxExecutionContext option, final DatabaseType databaseType) {
return new VertxExecutionUnit(executionUnit, connectionMode, connection.compose(sqlClient -> Future.succeededFuture(sqlClient.preparedQuery(executionUnit.getSqlUnit().getSql()))));
}
diff --git a/infra/executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/prepare/driver/fixture/FixtureExecutorStatementManager.java b/infra/executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/prepare/driver/fixture/FixtureExecutorStatementManager.java
index 5b084695dfe..ffe715f8807 100644
--- a/infra/executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/prepare/driver/fixture/FixtureExecutorStatementManager.java
+++ b/infra/executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/prepare/driver/fixture/FixtureExecutorStatementManager.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.infra.executor.sql.prepare.driver.fixture;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
import org.apache.shardingsphere.infra.executor.sql.execute.engine.ConnectionMode;
import org.apache.shardingsphere.infra.executor.sql.prepare.driver.ExecutorStatementManager;
@@ -24,12 +25,13 @@ import org.apache.shardingsphere.infra.executor.sql.prepare.driver.ExecutorState
public final class FixtureExecutorStatementManager implements ExecutorStatementManager<Object, Object, FixtureStorageResourceOption> {
@Override
- public Object createStorageResource(final Object connection, final ConnectionMode connectionMode, final FixtureStorageResourceOption option) {
+ public Object createStorageResource(final Object connection, final ConnectionMode connectionMode, final FixtureStorageResourceOption option, final DatabaseType databaseType) {
return null;
}
@Override
- public Object createStorageResource(final ExecutionUnit executionUnit, final Object connection, final ConnectionMode connectionMode, final FixtureStorageResourceOption option) {
+ public Object createStorageResource(final ExecutionUnit executionUnit, final Object connection, final ConnectionMode connectionMode, final FixtureStorageResourceOption option,
+ final DatabaseType databaseType) {
return null;
}
}
diff --git a/infra/executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/prepare/driver/fixture/FixtureSQLExecutionUnitBuilder.java b/infra/executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/prepare/driver/fixture/FixtureSQLExecutionUnitBuilder.java
index 185197fe158..96f47d77b8f 100644
--- a/infra/executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/prepare/driver/fixture/FixtureSQLExecutionUnitBuilder.java
+++ b/infra/executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/prepare/driver/fixture/FixtureSQLExecutionUnitBuilder.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.infra.executor.sql.prepare.driver.fixture;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
import org.apache.shardingsphere.infra.executor.sql.execute.engine.ConnectionMode;
import org.apache.shardingsphere.infra.executor.sql.prepare.driver.SQLExecutionUnitBuilder;
@@ -25,7 +26,7 @@ public final class FixtureSQLExecutionUnitBuilder implements SQLExecutionUnitBui
@Override
public FixtureDriverExecutionUnit build(final ExecutionUnit executionUnit, final FixtureExecutorStatementManager executorManager,
- final Object connection, final ConnectionMode connectionMode, final FixtureStorageResourceOption option) {
+ final Object connection, final ConnectionMode connectionMode, final FixtureStorageResourceOption option, final DatabaseType databaseType) {
return new FixtureDriverExecutionUnit();
}
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 5a2442c41a0..091f4e7e313 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
@@ -310,7 +310,7 @@ public final class ShardingSpherePreparedStatement extends AbstractPreparedState
int maxConnectionsSizePerQuery = metaDataContexts.getMetaData().getProps().<Integer>getValue(ConfigurationPropertyKey.MAX_CONNECTIONS_SIZE_PER_QUERY);
return new DriverExecutionPrepareEngine<>(JDBCDriverType.PREPARED_STATEMENT, maxConnectionsSizePerQuery, connection.getConnectionManager(), statementManager,
statementOption, metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getRuleMetaData().getRules(),
- metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getResourceMetaData().getDatabaseType());
+ metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getResourceMetaData().getDatabaseTypes());
}
@Override
@@ -605,7 +605,7 @@ public final class ShardingSpherePreparedStatement extends AbstractPreparedState
.<Integer>getValue(ConfigurationPropertyKey.MAX_CONNECTIONS_SIZE_PER_QUERY), connection.getConnectionManager(), statementManager, statementOption,
metaDataContexts.getMetaData()
.getDatabase(connection.getDatabaseName()).getRuleMetaData().getRules(),
- metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getResourceMetaData().getDatabaseType());
+ metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getResourceMetaData().getDatabaseTypes());
List<ExecutionUnit> executionUnits = new ArrayList<>(batchPreparedStatementExecutor.getBatchExecutionUnits().size());
for (BatchExecutionUnit each : batchPreparedStatementExecutor.getBatchExecutionUnits()) {
ExecutionUnit executionUnit = each.getExecutionUnit();
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 dac8e4be9c9..092c0509470 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
@@ -230,7 +230,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
int maxConnectionsSizePerQuery = metaDataContexts.getMetaData().getProps().<Integer>getValue(ConfigurationPropertyKey.MAX_CONNECTIONS_SIZE_PER_QUERY);
return new DriverExecutionPrepareEngine<>(JDBCDriverType.STATEMENT, maxConnectionsSizePerQuery, connection.getConnectionManager(), statementManager, statementOption,
metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getRuleMetaData().getRules(),
- metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getResourceMetaData().getDatabaseType());
+ metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getResourceMetaData().getDatabaseTypes());
}
@Override
diff --git a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/StatementManager.java b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/StatementManager.java
index 7e531e23cb4..f76d9c8fb07 100644
--- a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/StatementManager.java
+++ b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/StatementManager.java
@@ -20,6 +20,7 @@ package org.apache.shardingsphere.driver.jdbc.core.statement;
import lombok.EqualsAndHashCode;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.driver.jdbc.adapter.executor.ForceExecuteTemplate;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
import org.apache.shardingsphere.infra.executor.sql.execute.engine.ConnectionMode;
import org.apache.shardingsphere.infra.executor.sql.prepare.driver.jdbc.ExecutorJDBCStatementManager;
@@ -42,13 +43,14 @@ public final class StatementManager implements ExecutorJDBCStatementManager, Aut
@SuppressWarnings("MagicConstant")
@Override
- public Statement createStorageResource(final Connection connection, final ConnectionMode connectionMode, final StatementOption option) throws SQLException {
+ public Statement createStorageResource(final Connection connection, final ConnectionMode connectionMode, final StatementOption option, final DatabaseType databaseType) throws SQLException {
return connection.createStatement(option.getResultSetType(), option.getResultSetConcurrency(), option.getResultSetHoldability());
}
@SuppressWarnings("MagicConstant")
@Override
- public Statement createStorageResource(final ExecutionUnit executionUnit, final Connection connection, final ConnectionMode connectionMode, final StatementOption option) throws SQLException {
+ public Statement createStorageResource(final ExecutionUnit executionUnit, final Connection connection, final ConnectionMode connectionMode, final StatementOption option,
+ final DatabaseType databaseType) throws SQLException {
Statement result = cachedStatements.get(new CacheKey(executionUnit, connectionMode));
if (null == result) {
String sql = executionUnit.getSqlUnit().getSql();
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/ProxySQLExecutor.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/ProxySQLExecutor.java
index b36179ea113..ad22f74dcba 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/ProxySQLExecutor.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/ProxySQLExecutor.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.proxy.backend.communication;
+import org.apache.shardingsphere.dialect.exception.transaction.TableModifyInTransactionException;
import org.apache.shardingsphere.infra.binder.type.TableAvailable;
import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
@@ -43,7 +44,6 @@ import org.apache.shardingsphere.proxy.backend.communication.jdbc.executor.Proxy
import org.apache.shardingsphere.proxy.backend.communication.jdbc.statement.JDBCBackendStatement;
import org.apache.shardingsphere.proxy.backend.context.BackendExecutorContext;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.dialect.exception.transaction.TableModifyInTransactionException;
import org.apache.shardingsphere.proxy.backend.session.transaction.TransactionStatus;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CloseStatement;
@@ -185,8 +185,9 @@ public final class ProxySQLExecutor {
private List<ExecuteResult> useDriverToExecute(final ExecutionContext executionContext, final Collection<ShardingSphereRule> rules,
final int maxConnectionsSizePerQuery, final boolean isReturnGeneratedKeys, final boolean isExceptionThrown) throws SQLException {
JDBCBackendStatement statementManager = (JDBCBackendStatement) backendConnection.getConnectionSession().getStatementManager();
- DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection> prepareEngine = new DriverExecutionPrepareEngine<>(type, maxConnectionsSizePerQuery, backendConnection, statementManager,
- new StatementOption(isReturnGeneratedKeys), rules, backendConnection.getConnectionSession().getDatabaseType());
+ DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection> prepareEngine = new DriverExecutionPrepareEngine<>(
+ type, maxConnectionsSizePerQuery, backendConnection, statementManager, new StatementOption(isReturnGeneratedKeys), rules,
+ ProxyContext.getInstance().getDatabase(backendConnection.getConnectionSession().getDatabaseName()).getResourceMetaData().getDatabaseTypes());
ExecutionGroupContext<JDBCExecutionUnit> executionGroupContext;
try {
executionGroupContext = prepareEngine.prepare(executionContext.getRouteContext(), executionContext.getExecutionUnits());
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/ReactiveProxySQLExecutor.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/ReactiveProxySQLExecutor.java
index daf7e56d296..9d9a9f4b22f 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/ReactiveProxySQLExecutor.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/ReactiveProxySQLExecutor.java
@@ -19,6 +19,7 @@ package org.apache.shardingsphere.proxy.backend.communication;
import io.vertx.core.Future;
import io.vertx.sqlclient.SqlClient;
+import org.apache.shardingsphere.dialect.exception.transaction.TableModifyInTransactionException;
import org.apache.shardingsphere.infra.binder.type.TableAvailable;
import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
@@ -36,7 +37,6 @@ import org.apache.shardingsphere.proxy.backend.communication.vertx.VertxBackendS
import org.apache.shardingsphere.proxy.backend.communication.vertx.executor.ProxyReactiveExecutor;
import org.apache.shardingsphere.proxy.backend.context.BackendExecutorContext;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.dialect.exception.transaction.TableModifyInTransactionException;
import org.apache.shardingsphere.proxy.backend.session.transaction.TransactionStatus;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CloseStatement;
@@ -137,7 +137,8 @@ public final class ReactiveProxySQLExecutor {
final int maxConnectionsSizePerQuery) throws SQLException {
VertxBackendStatement statementManager = (VertxBackendStatement) backendConnection.getConnectionSession().getStatementManager();
DriverExecutionPrepareEngine<VertxExecutionUnit, Future<? extends SqlClient>> prepareEngine = new DriverExecutionPrepareEngine<>(
- TYPE, maxConnectionsSizePerQuery, backendConnection, statementManager, new VertxExecutionContext(), rules, backendConnection.getConnectionSession().getDatabaseType());
+ TYPE, maxConnectionsSizePerQuery, backendConnection, statementManager, new VertxExecutionContext(), rules,
+ ProxyContext.getInstance().getDatabase(backendConnection.getConnectionSession().getDatabaseName()).getResourceMetaData().getDatabaseTypes());
ExecutionGroupContext<VertxExecutionUnit> executionGroupContext;
try {
executionGroupContext = prepareEngine.prepare(executionContext.getRouteContext(), executionContext.getExecutionUnits());
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngine.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngine.java
index 42b6470bd45..9842334008b 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngine.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngine.java
@@ -168,7 +168,7 @@ public final class JDBCDatabaseCommunicationEngine extends DatabaseCommunication
JDBCBackendStatement statementManager = (JDBCBackendStatement) backendConnection.getConnectionSession().getStatementManager();
return new DriverExecutionPrepareEngine<>(getDriverType(), maxConnectionsSizePerQuery, backendConnection, statementManager,
new StatementOption(isReturnGeneratedKeys), metaData.getMetaData().getDatabase(backendConnection.getConnectionSession().getDatabaseName()).getRuleMetaData().getRules(),
- backendConnection.getConnectionSession().getDatabaseType());
+ metaData.getMetaData().getDatabase(backendConnection.getConnectionSession().getDatabaseName()).getResourceMetaData().getDatabaseTypes());
}
private ResponseHeader processExecuteFederation(final ResultSet resultSet, final MetaDataContexts metaDataContexts) throws SQLException {
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/statement/JDBCBackendStatement.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/statement/JDBCBackendStatement.java
index 82d19818a8c..be8ee0d48c7 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/statement/JDBCBackendStatement.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/statement/JDBCBackendStatement.java
@@ -17,13 +17,10 @@
package org.apache.shardingsphere.proxy.backend.communication.jdbc.statement;
-import lombok.Getter;
-import lombok.Setter;
import org.apache.shardingsphere.db.protocol.parameter.TypeUnspecifiedSQLParameter;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
import org.apache.shardingsphere.infra.executor.sql.execute.engine.ConnectionMode;
-import org.apache.shardingsphere.infra.executor.sql.prepare.driver.jdbc.DatabaseTypeAware;
import org.apache.shardingsphere.infra.executor.sql.prepare.driver.jdbc.ExecutorJDBCStatementManager;
import org.apache.shardingsphere.infra.executor.sql.prepare.driver.jdbc.StatementOption;
@@ -38,23 +35,20 @@ import java.util.Optional;
/**
* JDBC backend statement.
*/
-@Getter
-@Setter
-public final class JDBCBackendStatement implements ExecutorJDBCStatementManager, DatabaseTypeAware {
-
- private DatabaseType databaseType;
+public final class JDBCBackendStatement implements ExecutorJDBCStatementManager {
@Override
- public Statement createStorageResource(final Connection connection, final ConnectionMode connectionMode, final StatementOption option) throws SQLException {
+ public Statement createStorageResource(final Connection connection, final ConnectionMode connectionMode, final StatementOption option, final DatabaseType databaseType) throws SQLException {
Statement result = connection.createStatement();
if (ConnectionMode.MEMORY_STRICTLY == connectionMode) {
- setFetchSize(result);
+ setFetchSize(result, databaseType);
}
return result;
}
@Override
- public Statement createStorageResource(final ExecutionUnit executionUnit, final Connection connection, final ConnectionMode connectionMode, final StatementOption option) throws SQLException {
+ public Statement createStorageResource(final ExecutionUnit executionUnit, final Connection connection, final ConnectionMode connectionMode, final StatementOption option,
+ final DatabaseType databaseType) throws SQLException {
String sql = executionUnit.getSqlUnit().getSql();
List<Object> parameters = executionUnit.getSqlUnit().getParameters();
PreparedStatement result = option.isReturnGeneratedKeys()
@@ -69,12 +63,12 @@ public final class JDBCBackendStatement implements ExecutorJDBCStatementManager,
}
}
if (ConnectionMode.MEMORY_STRICTLY == connectionMode) {
- setFetchSize(result);
+ setFetchSize(result, databaseType);
}
return result;
}
- private void setFetchSize(final Statement statement) throws SQLException {
+ private void setFetchSize(final Statement statement, final DatabaseType databaseType) throws SQLException {
Optional<StatementMemoryStrictlyFetchSizeSetter> fetchSizeSetter = StatementMemoryStrictlyFetchSizeSetterFactory.findInstance(databaseType.getType());
if (fetchSizeSetter.isPresent()) {
fetchSizeSetter.get().setFetchSize(statement);
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/vertx/VertxBackendStatement.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/vertx/VertxBackendStatement.java
index 61992c861d1..075df1645a7 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/vertx/VertxBackendStatement.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/vertx/VertxBackendStatement.java
@@ -22,6 +22,7 @@ import io.vertx.sqlclient.Query;
import io.vertx.sqlclient.Row;
import io.vertx.sqlclient.RowSet;
import io.vertx.sqlclient.SqlClient;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
import org.apache.shardingsphere.infra.executor.sql.execute.engine.ConnectionMode;
import org.apache.shardingsphere.infra.executor.sql.prepare.driver.vertx.ExecutorVertxStatementManager;
@@ -33,13 +34,14 @@ import org.apache.shardingsphere.infra.executor.sql.prepare.driver.vertx.VertxEx
public final class VertxBackendStatement implements ExecutorVertxStatementManager {
@Override
- public Future<Query<RowSet<Row>>> createStorageResource(final Future<? extends SqlClient> connection, final ConnectionMode connectionMode, final VertxExecutionContext option) {
+ public Future<Query<RowSet<Row>>> createStorageResource(final Future<? extends SqlClient> connection, final ConnectionMode connectionMode, final VertxExecutionContext option,
+ final DatabaseType databaseType) {
return Future.failedFuture(new UnsupportedOperationException("Vert.x query is not like JDBC statement."));
}
@Override
public Future<Query<RowSet<Row>>> createStorageResource(final ExecutionUnit executionUnit, final Future<? extends SqlClient> connection,
- final ConnectionMode connectionMode, final VertxExecutionContext option) {
+ final ConnectionMode connectionMode, final VertxExecutionContext option, final DatabaseType databaseType) {
return Future.failedFuture(new UnsupportedOperationException("Vert.x prepared query is not like JDBC prepared statement."));
}
}
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/DatabaseAdminQueryBackendHandler.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/DatabaseAdminQueryBackendHandler.java
index 9228b95dcb6..5d2e09d9af5 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/DatabaseAdminQueryBackendHandler.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/DatabaseAdminQueryBackendHandler.java
@@ -62,7 +62,7 @@ public final class DatabaseAdminQueryBackendHandler implements ProxyBackendHandl
private List<QueryHeader> createResponseHeader() throws SQLException {
List<QueryHeader> result = new ArrayList<>(queryResultMetaData.getColumnCount());
ShardingSphereDatabase database = null == connectionSession.getDatabaseName() ? null : ProxyContext.getInstance().getDatabase(connectionSession.getDatabaseName());
- DatabaseType databaseType = null == database ? connectionSession.getDatabaseType() : database.getProtocolType();
+ DatabaseType databaseType = null == database ? connectionSession.getProtocolType() : database.getProtocolType();
QueryHeaderBuilderEngine queryHeaderBuilderEngine = new QueryHeaderBuilderEngine(databaseType);
for (int columnIndex = 1; columnIndex <= queryResultMetaData.getColumnCount(); columnIndex++) {
result.add(queryHeaderBuilderEngine.build(queryResultMetaData, database, columnIndex));
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/opengauss/OpenGaussSystemCatalogAdminQueryExecutor.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/opengauss/OpenGaussSystemCatalogAdminQueryExecutor.java
index 094d881ab7d..9cb6e5370cf 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/opengauss/OpenGaussSystemCatalogAdminQueryExecutor.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/opengauss/OpenGaussSystemCatalogAdminQueryExecutor.java
@@ -74,7 +74,7 @@ public final class OpenGaussSystemCatalogAdminQueryExecutor implements DatabaseA
connection.setSchema(PG_CATALOG);
try (Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery(sql)) {
queryResultMetaData = new JDBCQueryResultMetaData(resultSet.getMetaData());
- mergedResult = new IteratorStreamMergedResult(Collections.singletonList(new JDBCMemoryQueryResult(resultSet, connectionSession.getDatabaseType())));
+ mergedResult = new IteratorStreamMergedResult(Collections.singletonList(new JDBCMemoryQueryResult(resultSet, connectionSession.getProtocolType())));
}
}
}
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/hint/executor/ShowShardingHintStatusExecutor.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/hint/executor/ShowShardingHintStatusExecutor.java
index e516891e223..93ca3fa5a0f 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/hint/executor/ShowShardingHintStatusExecutor.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/hint/executor/ShowShardingHintStatusExecutor.java
@@ -66,7 +66,7 @@ public final class ShowShardingHintStatusExecutor extends AbstractHintQueryExecu
if (!database.isComplete()) {
throw new RuleNotExistedException();
}
- String schemaName = DatabaseTypeEngine.getDefaultSchemaName(connectionSession.getDatabaseType(), connectionSession.getDatabaseName());
+ String schemaName = DatabaseTypeEngine.getDefaultSchemaName(connectionSession.getProtocolType(), connectionSession.getDatabaseName());
Collection<String> tableNames = database.getSchema(schemaName).getAllTableNames();
for (String each : tableNames) {
if (HintManager.isDatabaseShardingOnly()) {
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowTableMetadataHandler.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowTableMetadataHandler.java
index 907874896cc..530182bcd99 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowTableMetadataHandler.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowTableMetadataHandler.java
@@ -55,7 +55,7 @@ public final class ShowTableMetadataHandler extends QueryableRALBackendHandler<S
@Override
protected Collection<LocalDataQueryResultRow> getRows(final ContextManager contextManager) {
String databaseName = getDatabaseName();
- String defaultSchema = DatabaseTypeEngine.getDefaultSchemaName(getConnectionSession().getDatabaseType(), getConnectionSession().getDatabaseName());
+ String defaultSchema = DatabaseTypeEngine.getDefaultSchemaName(getConnectionSession().getProtocolType(), getConnectionSession().getDatabaseName());
ShardingSphereSchema schema = ProxyContext.getInstance().getDatabase(databaseName).getSchema(defaultSchema);
return schema.getAllTableNames().stream().filter(each -> getSqlStatement().getTableNames().contains(each))
.map(each -> buildTableRows(databaseName, schema, each)).flatMap(Collection::stream).collect(Collectors.toList());
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportDatabaseConfigurationHandler.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportDatabaseConfigurationHandler.java
index 7d0010eb611..d4bc64e4b72 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportDatabaseConfigurationHandler.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportDatabaseConfigurationHandler.java
@@ -123,7 +123,7 @@ public final class ImportDatabaseConfigurationHandler extends UpdatableRALBacken
for (Entry<String, YamlProxyDataSourceConfiguration> entry : yamlDataSourceMap.entrySet()) {
dataSourcePropsMap.put(entry.getKey(), DataSourcePropertiesCreator.create(HikariDataSource.class.getName(), dataSourceConfigSwapper.swap(entry.getValue())));
}
- validator.validate(dataSourcePropsMap, getConnectionSession().getDatabaseType());
+ validator.validate(dataSourcePropsMap, getConnectionSession().getProtocolType());
try {
ProxyContext.getInstance().getContextManager().addResources(databaseName, dataSourcePropsMap);
} catch (final SQLException ex) {
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshTableMetadataHandler.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshTableMetadataHandler.java
index 94433978398..7446e426324 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshTableMetadataHandler.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshTableMetadataHandler.java
@@ -80,6 +80,6 @@ public final class RefreshTableMetadataHandler extends UpdatableRALBackendHandle
private String getSchemaName(final String databaseName) {
return getSqlStatement().getSchemaName().isPresent()
? getSqlStatement().getSchemaName().get()
- : DatabaseTypeEngine.getDefaultSchemaName(getConnectionSession().getDatabaseType(), databaseName);
+ : DatabaseTypeEngine.getDefaultSchemaName(getConnectionSession().getProtocolType(), databaseName);
}
}
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AddResourceBackendHandler.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AddResourceBackendHandler.java
index a46e798ecaa..d8493d2f76e 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AddResourceBackendHandler.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AddResourceBackendHandler.java
@@ -53,7 +53,7 @@ public final class AddResourceBackendHandler extends DatabaseRequiredBackendHand
public AddResourceBackendHandler(final RegisterStorageUnitStatement sqlStatement, final ConnectionSession connectionSession) {
super(sqlStatement, connectionSession);
- databaseType = connectionSession.getDatabaseType();
+ databaseType = connectionSession.getProtocolType();
validator = new DataSourcePropertiesValidator();
}
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterResourceBackendHandler.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterResourceBackendHandler.java
index 6081e10bb7a..ccd0d02ff88 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterResourceBackendHandler.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterResourceBackendHandler.java
@@ -60,7 +60,7 @@ public final class AlterResourceBackendHandler extends DatabaseRequiredBackendHa
public AlterResourceBackendHandler(final AlterStorageUnitStatement sqlStatement, final ConnectionSession connectionSession) {
super(sqlStatement, connectionSession);
- databaseType = connectionSession.getDatabaseType();
+ databaseType = connectionSession.getProtocolType();
validator = new DataSourcePropertiesValidator();
}
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/FormatSQLHandler.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/FormatSQLHandler.java
index 6693430ed64..d3991e01965 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/FormatSQLHandler.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/FormatSQLHandler.java
@@ -45,7 +45,7 @@ public final class FormatSQLHandler extends SQLRULBackendHandler<FormatStatement
@Override
protected Collection<LocalDataQueryResultRow> getRows(final ContextManager contextManager) {
String sql = getSqlStatement().getSql();
- String databaseType = getConnectionSession().getDatabaseType().getType();
+ String databaseType = getConnectionSession().getProtocolType().getType();
return Collections.singleton(new LocalDataQueryResultRow(formatSQL(sql, databaseType)));
}
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/ParseDistSQLHandler.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/ParseDistSQLHandler.java
index 7ba53c587c0..89ba0ee15a2 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/ParseDistSQLHandler.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/ParseDistSQLHandler.java
@@ -51,7 +51,7 @@ public final class ParseDistSQLHandler extends SQLRULBackendHandler<ParseStateme
private SQLStatement parseSQL(final ContextManager contextManager) {
SQLParserRule sqlParserRule = contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getSingleRule(SQLParserRule.class);
- String databaseType = getConnectionSession().getDatabaseType().getType();
+ String databaseType = getConnectionSession().getProtocolType().getType();
return sqlParserRule.getSQLParserEngine(databaseType).parse(getSqlStatement().getSql(), false);
}
}
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/PreviewHandler.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/PreviewHandler.java
index a6a064599ef..a1a60bcc77d 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/PreviewHandler.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/PreviewHandler.java
@@ -169,7 +169,7 @@ public final class PreviewHandler extends SQLRULBackendHandler<PreviewStatement>
return new DriverExecutionPrepareEngine<>(JDBCDriverType.STATEMENT, maxConnectionsSizePerQuery, (JDBCBackendConnection) getConnectionSession().getBackendConnection(),
(JDBCBackendStatement) getConnectionSession().getStatementManager(), new StatementOption(isReturnGeneratedKeys),
metaDataContexts.getMetaData().getDatabase(getDatabaseName()).getRuleMetaData().getRules(),
- metaDataContexts.getMetaData().getDatabase(getDatabaseName()).getResourceMetaData().getDatabaseType());
+ metaDataContexts.getMetaData().getDatabase(getDatabaseName()).getResourceMetaData().getDatabaseTypes());
}
private String getDatabaseName() {
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/transaction/TransactionBackendHandler.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/transaction/TransactionBackendHandler.java
index 3ba09e8d8be..ff4a8af6e99 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/transaction/TransactionBackendHandler.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/transaction/TransactionBackendHandler.java
@@ -83,10 +83,10 @@ public final class TransactionBackendHandler implements ProxyBackendHandler {
switch (operationType) {
case BEGIN:
if (connectionSession.getTransactionStatus().isInTransaction()) {
- if (connectionSession.getDatabaseType() instanceof MySQLDatabaseType) {
+ if (connectionSession.getProtocolType() instanceof MySQLDatabaseType) {
return transactionManager.commit().compose(unused -> transactionManager.begin());
}
- if (connectionSession.getDatabaseType() instanceof PostgreSQLDatabaseType || connectionSession.getDatabaseType() instanceof OpenGaussDatabaseType) {
+ if (connectionSession.getProtocolType() instanceof PostgreSQLDatabaseType || connectionSession.getProtocolType() instanceof OpenGaussDatabaseType) {
return Future.failedFuture(new InTransactionException());
}
}
@@ -139,9 +139,9 @@ public final class TransactionBackendHandler implements ProxyBackendHandler {
private void handleBegin() throws SQLException {
if (connectionSession.getTransactionStatus().isInTransaction()) {
- if (connectionSession.getDatabaseType() instanceof MySQLDatabaseType) {
+ if (connectionSession.getProtocolType() instanceof MySQLDatabaseType) {
backendTransactionManager.commit();
- } else if (connectionSession.getDatabaseType() instanceof PostgreSQLDatabaseType || connectionSession.getDatabaseType() instanceof OpenGaussDatabaseType) {
+ } else if (connectionSession.getProtocolType() instanceof PostgreSQLDatabaseType || connectionSession.getProtocolType() instanceof OpenGaussDatabaseType) {
throw new InTransactionException();
}
}
@@ -167,7 +167,7 @@ public final class TransactionBackendHandler implements ProxyBackendHandler {
}
private boolean isPostgreSQLOrOpenGauss() {
- return connectionSession.getDatabaseType() instanceof PostgreSQLDatabaseType || connectionSession.getDatabaseType() instanceof OpenGaussDatabaseType;
+ return connectionSession.getProtocolType() instanceof PostgreSQLDatabaseType || connectionSession.getProtocolType() instanceof OpenGaussDatabaseType;
}
private SQLStatement getSQLStatementByCommit() {
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/session/ConnectionSession.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/session/ConnectionSession.java
index 72b5e07ff48..62c4a724808 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/session/ConnectionSession.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/session/ConnectionSession.java
@@ -45,7 +45,7 @@ import org.apache.shardingsphere.transaction.core.TransactionType;
@Setter
public final class ConnectionSession {
- private final DatabaseType databaseType;
+ private final DatabaseType protocolType;
@Setter(AccessLevel.NONE)
private volatile String databaseName;
@@ -80,8 +80,8 @@ public final class ConnectionSession {
private QueryContext queryContext;
- public ConnectionSession(final DatabaseType databaseType, final TransactionType initialTransactionType, final AttributeMap attributeMap) {
- this.databaseType = databaseType;
+ public ConnectionSession(final DatabaseType protocolType, final TransactionType initialTransactionType, final AttributeMap attributeMap) {
+ this.protocolType = protocolType;
transactionStatus = new TransactionStatus(initialTransactionType);
this.attributeMap = attributeMap;
backendConnection = determineBackendConnection();
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/JDBCBackendConnectionTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/JDBCBackendConnectionTest.java
index 2c69781ccf1..4bf24ecf000 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/JDBCBackendConnectionTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/JDBCBackendConnectionTest.java
@@ -103,7 +103,6 @@ public final class JDBCBackendConnectionTest extends ProxyContextRestorer {
when(connectionSession.getBackendConnection()).thenReturn(backendConnection);
when(connectionSession.getTransactionStatus()).thenReturn(new TransactionStatus(TransactionType.LOCAL));
JDBCBackendStatement backendStatement = new JDBCBackendStatement();
- backendStatement.setDatabaseType(connectionSession.getDatabaseType());
when(connectionSession.getStatementManager()).thenReturn(backendStatement);
when(connectionSession.getRequiredSessionVariableRecorder()).thenReturn(new RequiredSessionVariableRecorder());
}
@@ -269,7 +268,7 @@ public final class JDBCBackendConnectionTest extends ProxyContextRestorer {
Statement statement = mock(Statement.class);
when(connection.createStatement()).thenReturn(statement);
JDBCBackendStatement backendStatement = (JDBCBackendStatement) connectionSession.getStatementManager();
- assertThat(backendStatement.createStorageResource(connection, ConnectionMode.MEMORY_STRICTLY, null), is(statement));
+ assertThat(backendStatement.createStorageResource(connection, ConnectionMode.MEMORY_STRICTLY, null, connectionSession.getProtocolType()), is(statement));
verify(connection, times(1)).createStatement();
}
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/opengauss/OpenGaussSystemCatalogAdminQueryExecutorTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/opengauss/OpenGaussSystemCatalogAdminQueryExecutorTest.java
index 681e76e55b9..4e419f92115 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/opengauss/OpenGaussSystemCatalogAdminQueryExecutorTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/opengauss/OpenGaussSystemCatalogAdminQueryExecutorTest.java
@@ -47,7 +47,7 @@ public final class OpenGaussSystemCatalogAdminQueryExecutorTest {
when(ProxyContext.getInstance().getAllDatabaseNames()).thenReturn(Arrays.asList("foo", "bar", "sharding_db", "other_db"));
OpenGaussSystemCatalogAdminQueryExecutor executor = new OpenGaussSystemCatalogAdminQueryExecutor("select datname, datcompatibility from pg_database where datname = 'sharding_db'");
ConnectionSession connectionSession = mock(ConnectionSession.class);
- when(connectionSession.getDatabaseType()).thenReturn(new OpenGaussDatabaseType());
+ when(connectionSession.getProtocolType()).thenReturn(new OpenGaussDatabaseType());
executor.execute(connectionSession);
QueryResultMetaData actualMetaData = executor.getQueryResultMetaData();
assertThat(actualMetaData.getColumnCount(), is(2));
@@ -66,7 +66,7 @@ public final class OpenGaussSystemCatalogAdminQueryExecutorTest {
mockedStatic.when(ProxyContext::getInstance).thenReturn(mock(ProxyContext.class, RETURNS_DEEP_STUBS));
OpenGaussSystemCatalogAdminQueryExecutor executor = new OpenGaussSystemCatalogAdminQueryExecutor("select VERSION()");
ConnectionSession connectionSession = mock(ConnectionSession.class);
- when(connectionSession.getDatabaseType()).thenReturn(new OpenGaussDatabaseType());
+ when(connectionSession.getProtocolType()).thenReturn(new OpenGaussDatabaseType());
executor.execute(connectionSession);
QueryResultMetaData actualMetaData = executor.getQueryResultMetaData();
assertThat(actualMetaData.getColumnCount(), is(1));
@@ -83,7 +83,7 @@ public final class OpenGaussSystemCatalogAdminQueryExecutorTest {
mockedStatic.when(ProxyContext::getInstance).thenReturn(mock(ProxyContext.class, RETURNS_DEEP_STUBS));
OpenGaussSystemCatalogAdminQueryExecutor executor = new OpenGaussSystemCatalogAdminQueryExecutor("select intervaltonum(gs_password_deadline())");
ConnectionSession connectionSession = mock(ConnectionSession.class);
- when(connectionSession.getDatabaseType()).thenReturn(new OpenGaussDatabaseType());
+ when(connectionSession.getProtocolType()).thenReturn(new OpenGaussDatabaseType());
executor.execute(connectionSession);
QueryResultMetaData actualMetaData = executor.getQueryResultMetaData();
assertThat(actualMetaData.getColumnCount(), is(1));
@@ -100,7 +100,7 @@ public final class OpenGaussSystemCatalogAdminQueryExecutorTest {
mockedStatic.when(ProxyContext::getInstance).thenReturn(mock(ProxyContext.class, RETURNS_DEEP_STUBS));
OpenGaussSystemCatalogAdminQueryExecutor executor = new OpenGaussSystemCatalogAdminQueryExecutor("select gs_password_notifytime()");
ConnectionSession connectionSession = mock(ConnectionSession.class);
- when(connectionSession.getDatabaseType()).thenReturn(new OpenGaussDatabaseType());
+ when(connectionSession.getProtocolType()).thenReturn(new OpenGaussDatabaseType());
executor.execute(connectionSession);
QueryResultMetaData actualMetaData = executor.getQueryResultMetaData();
assertThat(actualMetaData.getColumnCount(), is(1));
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/advance/ParseDistSQLHandlerTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/advance/ParseDistSQLHandlerTest.java
index 28cf3e61478..7978c838b32 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/advance/ParseDistSQLHandlerTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/advance/ParseDistSQLHandlerTest.java
@@ -68,7 +68,7 @@ public final class ParseDistSQLHandlerTest extends ProxyContextRestorer {
@Test
public void assertGetRowDataForMySQL() throws SQLException {
String sql = "select * from t_order";
- when(connectionSession.getDatabaseType()).thenReturn(new MySQLDatabaseType());
+ when(connectionSession.getProtocolType()).thenReturn(new MySQLDatabaseType());
ParseStatement parseStatement = new ParseStatement(sql);
ParseDistSQLHandler parseDistSQLHandler = new ParseDistSQLHandler();
parseDistSQLHandler.init(parseStatement, connectionSession);
@@ -82,7 +82,7 @@ public final class ParseDistSQLHandlerTest extends ProxyContextRestorer {
@Test
public void assertGetRowDataForPostgreSQL() throws SQLException {
String sql = "select * from t_order";
- when(connectionSession.getDatabaseType()).thenReturn(new PostgreSQLDatabaseType());
+ when(connectionSession.getProtocolType()).thenReturn(new PostgreSQLDatabaseType());
ParseStatement parseStatement = new ParseStatement(sql);
ParseDistSQLHandler parseDistSQLHandler = new ParseDistSQLHandler();
parseDistSQLHandler.init(parseStatement, connectionSession);
@@ -96,7 +96,7 @@ public final class ParseDistSQLHandlerTest extends ProxyContextRestorer {
@Test(expected = SQLParsingException.class)
public void assertExecute() throws SQLException {
String sql = "wrong sql";
- when(connectionSession.getDatabaseType()).thenReturn(new MySQLDatabaseType());
+ when(connectionSession.getProtocolType()).thenReturn(new MySQLDatabaseType());
ParseStatement parseStatement = new ParseStatement(sql);
ParseDistSQLHandler parseDistSQLHandler = new ParseDistSQLHandler();
parseDistSQLHandler.init(parseStatement, connectionSession);
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AddResourceBackendHandlerTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AddResourceBackendHandlerTest.java
index 12f3459370f..316d0971a7b 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AddResourceBackendHandlerTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AddResourceBackendHandlerTest.java
@@ -79,7 +79,7 @@ public final class AddResourceBackendHandlerTest extends ProxyContextRestorer {
public void setUp() throws Exception {
when(metaDataContexts.getMetaData().getDatabase("test_db")).thenReturn(database);
when(metaDataContexts.getMetaData().containsDatabase("test_db")).thenReturn(true);
- when(connectionSession.getDatabaseType()).thenReturn(new MySQLDatabaseType());
+ when(connectionSession.getProtocolType()).thenReturn(new MySQLDatabaseType());
addResourceBackendHandler = new AddResourceBackendHandler(registerStorageUnitStatement, connectionSession);
Field field = addResourceBackendHandler.getClass().getDeclaredField("validator");
field.setAccessible(true);
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterResourceBackendHandlerTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterResourceBackendHandlerTest.java
index fb341f0402b..129004cbf62 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterResourceBackendHandlerTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterResourceBackendHandlerTest.java
@@ -86,7 +86,7 @@ public final class AlterResourceBackendHandlerTest extends ProxyContextRestorer
public void setUp() throws Exception {
when(metaDataContexts.getMetaData().getDatabase("test_db")).thenReturn(database);
when(metaDataContexts.getMetaData().containsDatabase("test_db")).thenReturn(true);
- when(connectionSession.getDatabaseType()).thenReturn(new MySQLDatabaseType());
+ when(connectionSession.getProtocolType()).thenReturn(new MySQLDatabaseType());
alterResourceBackendHandler = new AlterResourceBackendHandler(alterStorageUnitStatement, connectionSession);
Field field = alterResourceBackendHandler.getClass().getDeclaredField("validator");
field.setAccessible(true);
diff --git a/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLMultiStatementsHandler.java b/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLMultiStatementsHandler.java
index 9cec6009e95..f2e83d9e3d6 100644
--- a/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLMultiStatementsHandler.java
+++ b/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLMultiStatementsHandler.java
@@ -139,7 +139,8 @@ public final class MySQLMultiStatementsHandler implements ProxyBackendHandler {
Collection<ShardingSphereRule> rules = metaDataContexts.getMetaData().getDatabase(connectionSession.getDatabaseName()).getRuleMetaData().getRules();
DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection> prepareEngine = new DriverExecutionPrepareEngine<>(JDBCDriverType.STATEMENT, metaDataContexts.getMetaData().getProps()
.<Integer>getValue(ConfigurationPropertyKey.MAX_CONNECTIONS_SIZE_PER_QUERY), (JDBCBackendConnection) connectionSession.getBackendConnection(),
- (JDBCBackendStatement) connectionSession.getStatementManager(), new StatementOption(false), rules, connectionSession.getDatabaseType());
+ (JDBCBackendStatement) connectionSession.getStatementManager(), new StatementOption(false), rules,
+ metaDataContexts.getMetaData().getDatabase(connectionSession.getDatabaseName()).getResourceMetaData().getDatabaseTypes());
ExecutionGroupContext<JDBCExecutionUnit> executionGroupContext = prepareEngine.prepare(anyExecutionContext.getRouteContext(), samplingExecutionUnit());
for (ExecutionGroup<JDBCExecutionUnit> eachGroup : executionGroupContext.getInputGroups()) {
for (JDBCExecutionUnit each : eachGroup.getInputs()) {
diff --git a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLMultiStatementsHandlerTest.java b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLMultiStatementsHandlerTest.java
index f8f1734bf24..9b48442eb2f 100644
--- a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLMultiStatementsHandlerTest.java
+++ b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLMultiStatementsHandlerTest.java
@@ -18,6 +18,7 @@
package org.apache.shardingsphere.proxy.frontend.mysql.command.query.text.query;
import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
import org.apache.shardingsphere.infra.executor.sql.execute.engine.ConnectionMode;
import org.apache.shardingsphere.infra.executor.sql.prepare.driver.jdbc.StatementOption;
@@ -82,7 +83,7 @@ public final class MySQLMultiStatementsHandlerTest {
when(connection.getMetaData().getURL()).thenReturn("jdbc:mysql://127.0.0.1/db");
when(backendConnection.getConnections(nullable(String.class), anyInt(), any(ConnectionMode.class))).thenReturn(Collections.singletonList(connection));
Statement statement = mock(Statement.class);
- when(backendStatement.createStorageResource(eq(connection), any(ConnectionMode.class), any(StatementOption.class))).thenReturn(statement);
+ when(backendStatement.createStorageResource(eq(connection), any(ConnectionMode.class), any(StatementOption.class), any(DatabaseType.class))).thenReturn(statement);
when(statement.getConnection()).thenReturn(connection);
when(statement.executeBatch()).thenReturn(new int[]{1, 1, 1});
MySQLUpdateStatement expectedStatement = mock(MySQLUpdateStatement.class);
diff --git a/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/command/query/extended/bind/OpenGaussComBatchBindExecutorTest.java b/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/command/query/extended/bind/OpenGaussComBatchBindExecutorTest.java
index e953762e735..de592d21e2c 100644
--- a/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/command/query/extended/bind/OpenGaussComBatchBindExecutorTest.java
+++ b/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/command/query/extended/bind/OpenGaussComBatchBindExecutorTest.java
@@ -22,6 +22,7 @@ import org.apache.shardingsphere.db.protocol.packet.DatabasePacket;
import org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.extended.bind.PostgreSQLBindCompletePacket;
import org.apache.shardingsphere.db.protocol.postgresql.packet.generic.PostgreSQLCommandCompletePacket;
import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
import org.apache.shardingsphere.infra.executor.sql.execute.engine.ConnectionMode;
import org.apache.shardingsphere.infra.executor.sql.prepare.driver.jdbc.StatementOption;
@@ -91,7 +92,8 @@ public final class OpenGaussComBatchBindExecutorTest extends ProxyContextRestore
PreparedStatement preparedStatement = mock(PreparedStatement.class);
when(preparedStatement.getConnection()).thenReturn(connection);
JDBCBackendStatement backendStatement = mock(JDBCBackendStatement.class);
- when(backendStatement.createStorageResource(any(ExecutionUnit.class), any(Connection.class), any(ConnectionMode.class), any(StatementOption.class))).thenReturn(preparedStatement);
+ when(backendStatement.createStorageResource(any(ExecutionUnit.class), any(Connection.class), any(ConnectionMode.class), any(StatementOption.class), any(DatabaseType.class)))
+ .thenReturn(preparedStatement);
when(connectionSession.getStatementManager()).thenReturn(backendStatement);
when(connectionSession.getBackendConnection()).thenReturn(backendConnection);
when(connectionSession.getServerPreparedStatementRegistry()).thenReturn(new ServerPreparedStatementRegistry());
diff --git a/proxy/frontend/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLBatchedStatementsExecutor.java b/proxy/frontend/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLBatchedStatementsExecutor.java
index ddab76fda8a..1b0872c6da6 100644
--- a/proxy/frontend/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLBatchedStatementsExecutor.java
+++ b/proxy/frontend/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLBatchedStatementsExecutor.java
@@ -148,7 +148,7 @@ public final class PostgreSQLBatchedStatementsExecutor {
DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection> prepareEngine = new DriverExecutionPrepareEngine<>(JDBCDriverType.PREPARED_STATEMENT,
metaDataContexts.getMetaData().getProps().<Integer>getValue(ConfigurationPropertyKey.MAX_CONNECTIONS_SIZE_PER_QUERY),
(JDBCBackendConnection) connectionSession.getBackendConnection(), (JDBCBackendStatement) connectionSession.getStatementManager(),
- new StatementOption(false), rules, connectionSession.getDatabaseType());
+ new StatementOption(false), rules, metaDataContexts.getMetaData().getDatabase(connectionSession.getDatabaseName()).getResourceMetaData().getDatabaseTypes());
executionGroupContext = prepareEngine.prepare(anyExecutionContext.getRouteContext(), executionUnitParameters.keySet());
for (ExecutionGroup<JDBCExecutionUnit> eachGroup : executionGroupContext.getInputGroups()) {
for (JDBCExecutionUnit each : eachGroup.getInputs()) {
diff --git a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLAggregatedBatchedStatementsCommandExecutorTest.java b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLAggregatedBatchedStatementsCommandExecutorTest.java
index ea4bb37b9d0..74c391b90f9 100644
--- a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLAggregatedBatchedStatementsCommandExecutorTest.java
+++ b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLAggregatedBatchedStatementsCommandExecutorTest.java
@@ -27,6 +27,7 @@ import org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.ext
import org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.extended.execute.PostgreSQLComExecutePacket;
import org.apache.shardingsphere.db.protocol.postgresql.packet.generic.PostgreSQLCommandCompletePacket;
import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
import org.apache.shardingsphere.infra.executor.sql.execute.engine.ConnectionMode;
import org.apache.shardingsphere.infra.executor.sql.prepare.driver.jdbc.StatementOption;
@@ -100,7 +101,8 @@ public final class PostgreSQLAggregatedBatchedStatementsCommandExecutorTest exte
PreparedStatement preparedStatement = mock(PreparedStatement.class);
when(preparedStatement.getConnection()).thenReturn(connection);
JDBCBackendStatement backendStatement = mock(JDBCBackendStatement.class);
- when(backendStatement.createStorageResource(any(ExecutionUnit.class), any(Connection.class), any(ConnectionMode.class), any(StatementOption.class))).thenReturn(preparedStatement);
+ when(backendStatement.createStorageResource(any(ExecutionUnit.class), any(Connection.class), any(ConnectionMode.class), any(StatementOption.class), any(DatabaseType.class)))
+ .thenReturn(preparedStatement);
when(connectionSession.getStatementManager()).thenReturn(backendStatement);
when(connectionSession.getBackendConnection()).thenReturn(backendConnection);
PostgreSQLAggregatedBatchedStatementsCommandExecutor batchedStatementsCommandExecutor = new PostgreSQLAggregatedBatchedStatementsCommandExecutor(connectionSession, preparePackets());
diff --git a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLBatchedStatementsExecutorTest.java b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLBatchedStatementsExecutorTest.java
index a5669bb6b2a..4025b555b94 100644
--- a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLBatchedStatementsExecutorTest.java
+++ b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLBatchedStatementsExecutorTest.java
@@ -21,6 +21,7 @@ import lombok.SneakyThrows;
import org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.extended.PostgreSQLColumnType;
import org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.extended.bind.PostgreSQLTypeUnspecifiedSQLParameter;
import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
import org.apache.shardingsphere.infra.executor.sql.execute.engine.ConnectionMode;
import org.apache.shardingsphere.infra.executor.sql.prepare.driver.jdbc.StatementOption;
@@ -105,7 +106,8 @@ public final class PostgreSQLBatchedStatementsExecutorTest extends ProxyContextR
PreparedStatement preparedStatement = mock(PreparedStatement.class);
when(preparedStatement.getConnection()).thenReturn(connection);
when(preparedStatement.executeBatch()).thenReturn(new int[]{1, 1, 1});
- when(backendStatement.createStorageResource(any(ExecutionUnit.class), eq(connection), any(ConnectionMode.class), any(StatementOption.class))).thenReturn(preparedStatement);
+ when(backendStatement.createStorageResource(any(ExecutionUnit.class), eq(connection), any(ConnectionMode.class), any(StatementOption.class), any(DatabaseType.class)))
+ .thenReturn(preparedStatement);
PostgreSQLBatchedStatementsExecutor actual = new PostgreSQLBatchedStatementsExecutor(connectionSession, postgreSQLPreparedStatement, parameterSets);
prepareExecutionUnitParameters(actual, parameterSets);
int actualUpdated = actual.executeBatch();
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/dal/EmptyStatementTestCase.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/dal/EmptyStatementTestCase.java
index 58b93ad95fb..93d6a1fba91 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/dal/EmptyStatementTestCase.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/dal/EmptyStatementTestCase.java
@@ -5,7 +5,7 @@
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software