You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2020/10/11 16:31:16 UTC
[shardingsphere] branch master updated: Decouple
SQLStatementContext and MetaDataRefreshStrategy (#7745)
This is an automated email from the ASF dual-hosted git repository.
zhangyonglun 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 858cee6 Decouple SQLStatementContext and MetaDataRefreshStrategy (#7745)
858cee6 is described below
commit 858cee60d6664938ec520b9e5d5c91fc0a079a65
Author: Liang Zhang <te...@163.com>
AuthorDate: Mon Oct 12 00:30:52 2020 +0800
Decouple SQLStatementContext and MetaDataRefreshStrategy (#7745)
* Use SQLStatement for MetaDataRefreshStrategy
* Use SQLStatement for MetaDataRefreshStrategyFactory
---
.../metadata/refresh/MetaDataRefreshStrategy.java | 11 ++--
.../refresh/MetaDataRefreshStrategyFactory.java | 31 +++++------
...AlterTableStatementMetaDataRefreshStrategy.java | 12 ++---
...reateIndexStatementMetaDataRefreshStrategy.java | 14 +++--
...reateTableStatementMetaDataRefreshStrategy.java | 12 ++---
.../DropIndexStatementMetaDataRefreshStrategy.java | 14 +++--
.../DropTableStatementMetaDataRefreshStrategy.java | 8 +--
...rTableStatementMetaDataRefreshStrategyTest.java | 10 ++--
...eIndexStatementMetaDataRefreshStrategyTest.java | 11 ++--
...eTableStatementMetaDataRefreshStrategyTest.java | 18 +++----
...pIndexStatementMetaDataRefreshStrategyTest.java | 13 ++---
...pTableStatementMetaDataRefreshStrategyTest.java | 16 +++---
.../MetaDataRefreshStrategyFactoryTest.java | 61 ++++++++++------------
.../driver/executor/AbstractStatementExecutor.java | 23 ++++----
.../driver/executor/PreparedStatementExecutor.java | 9 ++--
.../driver/executor/StatementExecutor.java | 31 +++++------
.../statement/ShardingSpherePreparedStatement.java | 2 +-
.../core/statement/ShardingSphereStatement.java | 8 +--
.../executor/PreparedStatementExecutorTest.java | 15 +++---
.../driver/executor/StatementExecutorTest.java | 36 ++++++-------
.../jdbc/JDBCDatabaseCommunicationEngine.java | 21 ++++----
21 files changed, 180 insertions(+), 196 deletions(-)
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/MetaDataRefreshStrategy.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/MetaDataRefreshStrategy.java
index fe23653..6c2e13d 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/MetaDataRefreshStrategy.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/MetaDataRefreshStrategy.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.infra.metadata.refresh;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import javax.sql.DataSource;
import java.sql.SQLException;
@@ -28,9 +28,9 @@ import java.util.Map;
/**
* Meta data refresh strategy.
*
- * @param <T> type of SQL statement context
+ * @param <T> type of SQL statement
*/
-public interface MetaDataRefreshStrategy<T extends SQLStatementContext<?>> {
+public interface MetaDataRefreshStrategy<T extends SQLStatement> {
/**
* Refresh meta data.
@@ -38,10 +38,9 @@ public interface MetaDataRefreshStrategy<T extends SQLStatementContext<?>> {
* @param metaData ShardingSphere meta data
* @param databaseType database type
* @param dataSourceMap dataSource map
- * @param sqlStatementContext SQL statement context
+ * @param sqlStatement SQL statement
* @param callback callback
* @throws SQLException SQL exception
*/
- void refreshMetaData(ShardingSphereMetaData metaData,
- DatabaseType databaseType, Map<String, DataSource> dataSourceMap, T sqlStatementContext, TableMetaDataLoaderCallback callback) throws SQLException;
+ void refreshMetaData(ShardingSphereMetaData metaData, DatabaseType databaseType, Map<String, DataSource> dataSourceMap, T sqlStatement, TableMetaDataLoaderCallback callback) throws SQLException;
}
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/MetaDataRefreshStrategyFactory.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/MetaDataRefreshStrategyFactory.java
index 709402d..218002c 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/MetaDataRefreshStrategyFactory.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/MetaDataRefreshStrategyFactory.java
@@ -24,15 +24,16 @@ import org.apache.shardingsphere.infra.metadata.refresh.impl.CreateIndexStatemen
import org.apache.shardingsphere.infra.metadata.refresh.impl.CreateTableStatementMetaDataRefreshStrategy;
import org.apache.shardingsphere.infra.metadata.refresh.impl.DropIndexStatementMetaDataRefreshStrategy;
import org.apache.shardingsphere.infra.metadata.refresh.impl.DropTableStatementMetaDataRefreshStrategy;
-import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
-import org.apache.shardingsphere.infra.binder.statement.ddl.AlterTableStatementContext;
-import org.apache.shardingsphere.infra.binder.statement.ddl.CreateIndexStatementContext;
-import org.apache.shardingsphere.infra.binder.statement.ddl.CreateTableStatementContext;
-import org.apache.shardingsphere.infra.binder.statement.ddl.DropIndexStatementContext;
-import org.apache.shardingsphere.infra.binder.statement.ddl.DropTableStatementContext;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.AlterTableStatement;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CreateIndexStatement;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CreateTableStatement;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DropIndexStatement;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DropTableStatement;
import java.util.HashMap;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.Optional;
/**
@@ -41,23 +42,23 @@ import java.util.Optional;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class MetaDataRefreshStrategyFactory {
- private static final Map<Class<?>, MetaDataRefreshStrategy> REGISTRY = new HashMap<>();
+ private static final Map<Class<?>, MetaDataRefreshStrategy<?>> REGISTRY = new HashMap<>();
static {
- REGISTRY.put(CreateTableStatementContext.class, new CreateTableStatementMetaDataRefreshStrategy());
- REGISTRY.put(AlterTableStatementContext.class, new AlterTableStatementMetaDataRefreshStrategy());
- REGISTRY.put(DropTableStatementContext.class, new DropTableStatementMetaDataRefreshStrategy());
- REGISTRY.put(CreateIndexStatementContext.class, new CreateIndexStatementMetaDataRefreshStrategy());
- REGISTRY.put(DropIndexStatementContext.class, new DropIndexStatementMetaDataRefreshStrategy());
+ REGISTRY.put(CreateTableStatement.class, new CreateTableStatementMetaDataRefreshStrategy());
+ REGISTRY.put(AlterTableStatement.class, new AlterTableStatementMetaDataRefreshStrategy());
+ REGISTRY.put(DropTableStatement.class, new DropTableStatementMetaDataRefreshStrategy());
+ REGISTRY.put(CreateIndexStatement.class, new CreateIndexStatementMetaDataRefreshStrategy());
+ REGISTRY.put(DropIndexStatement.class, new DropIndexStatementMetaDataRefreshStrategy());
}
/**
* Create new instance of meta data refresh strategy.
*
- * @param sqlStatementContext SQL statement context
+ * @param sqlStatement SQL statement
* @return meta data refresh strategy
*/
- public static Optional<MetaDataRefreshStrategy> newInstance(final SQLStatementContext<?> sqlStatementContext) {
- return Optional.ofNullable(REGISTRY.get(sqlStatementContext.getClass()));
+ public static Optional<MetaDataRefreshStrategy> newInstance(final SQLStatement sqlStatement) {
+ return REGISTRY.entrySet().stream().filter(entry -> entry.getKey().isAssignableFrom(sqlStatement.getClass())).findFirst().map(Entry::getValue);
}
}
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/impl/AlterTableStatementMetaDataRefreshStrategy.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/impl/AlterTableStatementMetaDataRefreshStrategy.java
index 6ab0e69..7c720db 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/impl/AlterTableStatementMetaDataRefreshStrategy.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/impl/AlterTableStatementMetaDataRefreshStrategy.java
@@ -17,13 +17,13 @@
package org.apache.shardingsphere.infra.metadata.refresh.impl;
+import org.apache.shardingsphere.infra.binder.metadata.schema.SchemaMetaData;
+import org.apache.shardingsphere.infra.binder.metadata.table.TableMetaData;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.metadata.refresh.MetaDataRefreshStrategy;
import org.apache.shardingsphere.infra.metadata.refresh.TableMetaDataLoaderCallback;
-import org.apache.shardingsphere.infra.binder.metadata.schema.SchemaMetaData;
-import org.apache.shardingsphere.infra.binder.metadata.table.TableMetaData;
-import org.apache.shardingsphere.infra.binder.statement.ddl.AlterTableStatementContext;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.AlterTableStatement;
import javax.sql.DataSource;
import java.sql.SQLException;
@@ -32,12 +32,12 @@ import java.util.Map;
/**
* Alter table statement meta data refresh strategy.
*/
-public final class AlterTableStatementMetaDataRefreshStrategy implements MetaDataRefreshStrategy<AlterTableStatementContext> {
+public final class AlterTableStatementMetaDataRefreshStrategy implements MetaDataRefreshStrategy<AlterTableStatement> {
@Override
public void refreshMetaData(final ShardingSphereMetaData metaData, final DatabaseType databaseType,
- final Map<String, DataSource> dataSourceMap, final AlterTableStatementContext sqlStatementContext, final TableMetaDataLoaderCallback callback) throws SQLException {
- String tableName = sqlStatementContext.getSqlStatement().getTable().getTableName().getIdentifier().getValue();
+ final Map<String, DataSource> dataSourceMap, final AlterTableStatement sqlStatement, final TableMetaDataLoaderCallback callback) throws SQLException {
+ String tableName = sqlStatement.getTable().getTableName().getIdentifier().getValue();
SchemaMetaData schemaMetaData = metaData.getRuleSchemaMetaData().getConfiguredSchemaMetaData();
if (null != schemaMetaData && schemaMetaData.containsTable(tableName)) {
callback.load(tableName).ifPresent(tableMetaData -> alterMetaData(metaData, tableName, tableMetaData));
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/impl/CreateIndexStatementMetaDataRefreshStrategy.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/impl/CreateIndexStatementMetaDataRefreshStrategy.java
index f0ee58a..4f27cd9 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/impl/CreateIndexStatementMetaDataRefreshStrategy.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/impl/CreateIndexStatementMetaDataRefreshStrategy.java
@@ -17,12 +17,11 @@
package org.apache.shardingsphere.infra.metadata.refresh.impl;
+import org.apache.shardingsphere.infra.binder.metadata.index.IndexMetaData;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.metadata.refresh.MetaDataRefreshStrategy;
import org.apache.shardingsphere.infra.metadata.refresh.TableMetaDataLoaderCallback;
-import org.apache.shardingsphere.infra.binder.metadata.index.IndexMetaData;
-import org.apache.shardingsphere.infra.binder.statement.ddl.CreateIndexStatementContext;
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CreateIndexStatement;
import javax.sql.DataSource;
@@ -31,17 +30,16 @@ import java.util.Map;
/**
* Create index statement meta data refresh strategy.
*/
-public final class CreateIndexStatementMetaDataRefreshStrategy implements MetaDataRefreshStrategy<CreateIndexStatementContext> {
+public final class CreateIndexStatementMetaDataRefreshStrategy implements MetaDataRefreshStrategy<CreateIndexStatement> {
@Override
public void refreshMetaData(final ShardingSphereMetaData metaData, final DatabaseType databaseType,
- final Map<String, DataSource> dataSourceMap, final CreateIndexStatementContext sqlStatementContext, final TableMetaDataLoaderCallback callback) {
- CreateIndexStatement createIndexStatement = sqlStatementContext.getSqlStatement();
- if (null == createIndexStatement.getIndex()) {
+ final Map<String, DataSource> dataSourceMap, final CreateIndexStatement sqlStatement, final TableMetaDataLoaderCallback callback) {
+ if (null == sqlStatement.getIndex()) {
return;
}
- String indexName = createIndexStatement.getIndex().getIdentifier().getValue();
- String tableName = createIndexStatement.getTable().getTableName().getIdentifier().getValue();
+ String indexName = sqlStatement.getIndex().getIdentifier().getValue();
+ String tableName = sqlStatement.getTable().getTableName().getIdentifier().getValue();
metaData.getRuleSchemaMetaData().getConfiguredSchemaMetaData().get(tableName).getIndexes().put(indexName, new IndexMetaData(indexName));
}
}
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/impl/CreateTableStatementMetaDataRefreshStrategy.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/impl/CreateTableStatementMetaDataRefreshStrategy.java
index b9aa95a..05c1809 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/impl/CreateTableStatementMetaDataRefreshStrategy.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/impl/CreateTableStatementMetaDataRefreshStrategy.java
@@ -18,12 +18,12 @@
package org.apache.shardingsphere.infra.metadata.refresh.impl;
import com.google.common.collect.Lists;
+import org.apache.shardingsphere.infra.binder.metadata.table.TableMetaData;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.metadata.refresh.MetaDataRefreshStrategy;
import org.apache.shardingsphere.infra.metadata.refresh.TableMetaDataLoaderCallback;
-import org.apache.shardingsphere.infra.binder.metadata.table.TableMetaData;
-import org.apache.shardingsphere.infra.binder.statement.ddl.CreateTableStatementContext;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CreateTableStatement;
import javax.sql.DataSource;
import java.sql.SQLException;
@@ -35,12 +35,12 @@ import java.util.Optional;
/**
* Create table statement meta data refresh strategy.
*/
-public final class CreateTableStatementMetaDataRefreshStrategy implements MetaDataRefreshStrategy<CreateTableStatementContext> {
+public final class CreateTableStatementMetaDataRefreshStrategy implements MetaDataRefreshStrategy<CreateTableStatement> {
@Override
public void refreshMetaData(final ShardingSphereMetaData metaData, final DatabaseType databaseType,
- final Map<String, DataSource> dataSourceMap, final CreateTableStatementContext sqlStatementContext, final TableMetaDataLoaderCallback callback) throws SQLException {
- String tableName = sqlStatementContext.getSqlStatement().getTable().getTableName().getIdentifier().getValue();
+ final Map<String, DataSource> dataSourceMap, final CreateTableStatement sqlStatement, final TableMetaDataLoaderCallback callback) throws SQLException {
+ String tableName = sqlStatement.getTable().getTableName().getIdentifier().getValue();
Optional<TableMetaData> tableMetaData = callback.load(tableName);
if (tableMetaData.isPresent()) {
metaData.getRuleSchemaMetaData().getConfiguredSchemaMetaData().put(tableName, tableMetaData.get());
@@ -51,7 +51,7 @@ public final class CreateTableStatementMetaDataRefreshStrategy implements MetaDa
}
}
- private void refreshUnconfiguredMetaData(final ShardingSphereMetaData metaData, final Map<String, DataSource> dataSourceMap, final String tableName) throws SQLException {
+ private void refreshUnconfiguredMetaData(final ShardingSphereMetaData metaData, final Map<String, DataSource> dataSourceMap, final String tableName) {
for (Entry<String, DataSource> entry : dataSourceMap.entrySet()) {
refreshUnconfiguredMetaData(metaData, tableName, entry.getKey());
}
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/impl/DropIndexStatementMetaDataRefreshStrategy.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/impl/DropIndexStatementMetaDataRefreshStrategy.java
index a45900e..149d517 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/impl/DropIndexStatementMetaDataRefreshStrategy.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/impl/DropIndexStatementMetaDataRefreshStrategy.java
@@ -17,13 +17,12 @@
package org.apache.shardingsphere.infra.metadata.refresh.impl;
+import org.apache.shardingsphere.infra.binder.metadata.schema.SchemaMetaData;
+import org.apache.shardingsphere.infra.binder.metadata.table.TableMetaData;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.metadata.refresh.MetaDataRefreshStrategy;
import org.apache.shardingsphere.infra.metadata.refresh.TableMetaDataLoaderCallback;
-import org.apache.shardingsphere.infra.binder.metadata.schema.SchemaMetaData;
-import org.apache.shardingsphere.infra.binder.metadata.table.TableMetaData;
-import org.apache.shardingsphere.infra.binder.statement.ddl.DropIndexStatementContext;
import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DropIndexStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.handler.ddl.DropIndexStatementHandler;
@@ -38,14 +37,13 @@ import java.util.stream.Collectors;
/**
* Drop index statement meta data refresh strategy.
*/
-public final class DropIndexStatementMetaDataRefreshStrategy implements MetaDataRefreshStrategy<DropIndexStatementContext> {
+public final class DropIndexStatementMetaDataRefreshStrategy implements MetaDataRefreshStrategy<DropIndexStatement> {
@Override
public void refreshMetaData(final ShardingSphereMetaData metaData, final DatabaseType databaseType,
- final Map<String, DataSource> dataSourceMap, final DropIndexStatementContext sqlStatementContext, final TableMetaDataLoaderCallback callback) {
- DropIndexStatement dropIndexStatement = sqlStatementContext.getSqlStatement();
- Collection<String> indexNames = getIndexNames(dropIndexStatement);
- Optional<SimpleTableSegment> simpleTableSegment = DropIndexStatementHandler.getSimpleTableSegment(dropIndexStatement);
+ final Map<String, DataSource> dataSourceMap, final DropIndexStatement sqlStatement, final TableMetaDataLoaderCallback callback) {
+ Collection<String> indexNames = getIndexNames(sqlStatement);
+ Optional<SimpleTableSegment> simpleTableSegment = DropIndexStatementHandler.getSimpleTableSegment(sqlStatement);
String tableName = simpleTableSegment.map(tableSegment -> tableSegment.getTableName().getIdentifier().getValue()).orElse("");
TableMetaData tableMetaData = metaData.getRuleSchemaMetaData().getConfiguredSchemaMetaData().get(tableName);
if (simpleTableSegment.isPresent()) {
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/impl/DropTableStatementMetaDataRefreshStrategy.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/impl/DropTableStatementMetaDataRefreshStrategy.java
index ea3b9cc..7058601 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/impl/DropTableStatementMetaDataRefreshStrategy.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/impl/DropTableStatementMetaDataRefreshStrategy.java
@@ -21,7 +21,7 @@ import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.metadata.refresh.MetaDataRefreshStrategy;
import org.apache.shardingsphere.infra.metadata.refresh.TableMetaDataLoaderCallback;
-import org.apache.shardingsphere.infra.binder.statement.ddl.DropTableStatementContext;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DropTableStatement;
import javax.sql.DataSource;
import java.util.Map;
@@ -29,12 +29,12 @@ import java.util.Map;
/**
* Drop table statement meta data refresh strategy.
*/
-public final class DropTableStatementMetaDataRefreshStrategy implements MetaDataRefreshStrategy<DropTableStatementContext> {
+public final class DropTableStatementMetaDataRefreshStrategy implements MetaDataRefreshStrategy<DropTableStatement> {
@Override
public void refreshMetaData(final ShardingSphereMetaData metaData, final DatabaseType databaseType,
- final Map<String, DataSource> dataSourceMap, final DropTableStatementContext sqlStatementContext, final TableMetaDataLoaderCallback callback) {
- sqlStatementContext.getSqlStatement().getTables().forEach(each -> removeMetaData(metaData, each.getTableName().getIdentifier().getValue()));
+ final Map<String, DataSource> dataSourceMap, final DropTableStatement sqlStatement, final TableMetaDataLoaderCallback callback) {
+ sqlStatement.getTables().forEach(each -> removeMetaData(metaData, each.getTableName().getIdentifier().getValue()));
}
private void removeMetaData(final ShardingSphereMetaData metaData, final String tableName) {
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/refresh/AlterTableStatementMetaDataRefreshStrategyTest.java b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/refresh/AlterTableStatementMetaDataRefreshStrategyTest.java
index 03bb81e..8e2e1fc 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/refresh/AlterTableStatementMetaDataRefreshStrategyTest.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/refresh/AlterTableStatementMetaDataRefreshStrategyTest.java
@@ -17,12 +17,11 @@
package org.apache.shardingsphere.infra.metadata.refresh;
-import org.apache.shardingsphere.infra.database.type.DatabaseType;
-import org.apache.shardingsphere.infra.metadata.refresh.impl.AlterTableStatementMetaDataRefreshStrategy;
import org.apache.shardingsphere.infra.binder.metadata.column.ColumnMetaData;
import org.apache.shardingsphere.infra.binder.metadata.index.IndexMetaData;
import org.apache.shardingsphere.infra.binder.metadata.table.TableMetaData;
-import org.apache.shardingsphere.infra.binder.statement.ddl.AlterTableStatementContext;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
+import org.apache.shardingsphere.infra.metadata.refresh.impl.AlterTableStatementMetaDataRefreshStrategy;
import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.TableNameSegment;
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.AlterTableStatement;
@@ -69,10 +68,9 @@ public final class AlterTableStatementMetaDataRefreshStrategyTest extends Abstra
}
private void refreshMetaData(final AlterTableStatement alterTableStatement) throws SQLException {
- MetaDataRefreshStrategy<AlterTableStatementContext> metaDataRefreshStrategy = new AlterTableStatementMetaDataRefreshStrategy();
+ MetaDataRefreshStrategy<AlterTableStatement> metaDataRefreshStrategy = new AlterTableStatementMetaDataRefreshStrategy();
alterTableStatement.setTable(new SimpleTableSegment(new TableNameSegment(1, 3, new IdentifierValue("t_order"))));
- AlterTableStatementContext alterTableStatementContext = new AlterTableStatementContext(alterTableStatement);
- metaDataRefreshStrategy.refreshMetaData(getMetaData(), mock(DatabaseType.class), Collections.emptyMap(), alterTableStatementContext, tableName -> Optional.of(new TableMetaData(
+ metaDataRefreshStrategy.refreshMetaData(getMetaData(), mock(DatabaseType.class), Collections.emptyMap(), alterTableStatement, tableName -> Optional.of(new TableMetaData(
Collections.singletonList(new ColumnMetaData("order_id", 1, "String", true, false, false)),
Collections.singletonList(new IndexMetaData("index_alter")))));
assertTrue(getMetaData().getRuleSchemaMetaData().getConfiguredSchemaMetaData().get("t_order").getIndexes().containsKey("index_alter"));
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/refresh/CreateIndexStatementMetaDataRefreshStrategyTest.java b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/refresh/CreateIndexStatementMetaDataRefreshStrategyTest.java
index d0082d8..2337d61 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/refresh/CreateIndexStatementMetaDataRefreshStrategyTest.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/refresh/CreateIndexStatementMetaDataRefreshStrategyTest.java
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.infra.metadata.refresh;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.metadata.refresh.impl.CreateIndexStatementMetaDataRefreshStrategy;
-import org.apache.shardingsphere.infra.binder.statement.ddl.CreateIndexStatementContext;
import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.index.IndexSegment;
import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.TableNameSegment;
@@ -62,11 +61,10 @@ public final class CreateIndexStatementMetaDataRefreshStrategyTest extends Abstr
}
private void refreshMetaData(final CreateIndexStatement createIndexStatement) throws SQLException {
- MetaDataRefreshStrategy<CreateIndexStatementContext> metaDataRefreshStrategy = new CreateIndexStatementMetaDataRefreshStrategy();
+ MetaDataRefreshStrategy<CreateIndexStatement> metaDataRefreshStrategy = new CreateIndexStatementMetaDataRefreshStrategy();
createIndexStatement.setIndex(new IndexSegment(1, 2, new IdentifierValue("t_order_index")));
createIndexStatement.setTable(new SimpleTableSegment(new TableNameSegment(1, 3, new IdentifierValue("t_order"))));
- CreateIndexStatementContext createIndexStatementContext = new CreateIndexStatementContext(createIndexStatement);
- metaDataRefreshStrategy.refreshMetaData(getMetaData(), mock(DatabaseType.class), Collections.emptyMap(), createIndexStatementContext, tableName -> Optional.empty());
+ metaDataRefreshStrategy.refreshMetaData(getMetaData(), mock(DatabaseType.class), Collections.emptyMap(), createIndexStatement, tableName -> Optional.empty());
assertTrue(getMetaData().getRuleSchemaMetaData().getConfiguredSchemaMetaData().get("t_order").getIndexes().containsKey("t_order_index"));
}
@@ -91,10 +89,9 @@ public final class CreateIndexStatementMetaDataRefreshStrategyTest extends Abstr
}
private void refreshMetaDataIfIndexIsNull(final CreateIndexStatement createIndexStatement) throws SQLException {
- MetaDataRefreshStrategy<CreateIndexStatementContext> metaDataRefreshStrategy = new CreateIndexStatementMetaDataRefreshStrategy();
+ MetaDataRefreshStrategy<CreateIndexStatement> metaDataRefreshStrategy = new CreateIndexStatementMetaDataRefreshStrategy();
createIndexStatement.setTable(new SimpleTableSegment(new TableNameSegment(1, 3, new IdentifierValue("t_order"))));
- CreateIndexStatementContext createIndexStatementContext = new CreateIndexStatementContext(createIndexStatement);
- metaDataRefreshStrategy.refreshMetaData(getMetaData(), mock(DatabaseType.class), Collections.emptyMap(), createIndexStatementContext, tableName -> Optional.empty());
+ metaDataRefreshStrategy.refreshMetaData(getMetaData(), mock(DatabaseType.class), Collections.emptyMap(), createIndexStatement, tableName -> Optional.empty());
assertFalse(getMetaData().getRuleSchemaMetaData().getConfiguredSchemaMetaData().get("t_order").getIndexes().containsKey("t_order_index"));
}
}
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/refresh/CreateTableStatementMetaDataRefreshStrategyTest.java b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/refresh/CreateTableStatementMetaDataRefreshStrategyTest.java
index c33266a..1ab0d04 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/refresh/CreateTableStatementMetaDataRefreshStrategyTest.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/refresh/CreateTableStatementMetaDataRefreshStrategyTest.java
@@ -17,13 +17,12 @@
package org.apache.shardingsphere.infra.metadata.refresh;
-import org.apache.shardingsphere.infra.database.type.DatabaseType;
-import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
-import org.apache.shardingsphere.infra.metadata.refresh.impl.CreateTableStatementMetaDataRefreshStrategy;
import org.apache.shardingsphere.infra.binder.metadata.column.ColumnMetaData;
import org.apache.shardingsphere.infra.binder.metadata.index.IndexMetaData;
import org.apache.shardingsphere.infra.binder.metadata.table.TableMetaData;
-import org.apache.shardingsphere.infra.binder.statement.ddl.CreateTableStatementContext;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
+import org.apache.shardingsphere.infra.metadata.refresh.impl.CreateTableStatementMetaDataRefreshStrategy;
import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.TableNameSegment;
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CreateTableStatement;
@@ -86,9 +85,8 @@ public final class CreateTableStatementMetaDataRefreshStrategyTest extends Abstr
private void refreshMetaData(final CreateTableStatement createTableStatement) throws SQLException {
createTableStatement.setTable(new SimpleTableSegment(new TableNameSegment(1, 3, new IdentifierValue("t_order_0"))));
- CreateTableStatementContext createTableStatementContext = new CreateTableStatementContext(createTableStatement);
- MetaDataRefreshStrategy<CreateTableStatementContext> metaDataRefreshStrategy = new CreateTableStatementMetaDataRefreshStrategy();
- metaDataRefreshStrategy.refreshMetaData(getMetaData(), mock(DatabaseType.class), Collections.emptyMap(), createTableStatementContext, tableName -> Optional.of(new TableMetaData(
+ MetaDataRefreshStrategy<CreateTableStatement> metaDataRefreshStrategy = new CreateTableStatementMetaDataRefreshStrategy();
+ metaDataRefreshStrategy.refreshMetaData(getMetaData(), mock(DatabaseType.class), Collections.emptyMap(), createTableStatement, tableName -> Optional.of(new TableMetaData(
Collections.singletonList(new ColumnMetaData("order_id", 1, "String", true, false, false)),
Collections.singletonList(new IndexMetaData("index")))));
assertTrue(getMetaData().getRuleSchemaMetaData().getConfiguredSchemaMetaData().containsTable("t_order_0"));
@@ -128,12 +126,10 @@ public final class CreateTableStatementMetaDataRefreshStrategyTest extends Abstr
private void assertRefreshMetaDataWithUnConfigured(final CreateTableStatement createTableStatement) throws SQLException {
createTableStatement.setTable(new SimpleTableSegment(new TableNameSegment(1, 3, new IdentifierValue("t_order_item_0"))));
- CreateTableStatementContext createTableStatementContext = new CreateTableStatementContext(createTableStatement);
Map<String, DataSource> dataSourceSourceMap = new LinkedHashMap<>(1, 1);
dataSourceSourceMap.put("t_order_item", initDataSource());
- MetaDataRefreshStrategy<CreateTableStatementContext> metaDataRefreshStrategy = new CreateTableStatementMetaDataRefreshStrategy();
- metaDataRefreshStrategy.refreshMetaData(getMetaData(), new MySQLDatabaseType(), dataSourceSourceMap, createTableStatementContext,
- tableName -> Optional.empty());
+ MetaDataRefreshStrategy<CreateTableStatement> metaDataRefreshStrategy = new CreateTableStatementMetaDataRefreshStrategy();
+ metaDataRefreshStrategy.refreshMetaData(getMetaData(), new MySQLDatabaseType(), dataSourceSourceMap, createTableStatement, tableName -> Optional.empty());
assertTrue(getMetaData().getRuleSchemaMetaData().getUnconfiguredSchemaMetaDataMap().get("t_order_item").contains("t_order_item_0"));
}
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/refresh/DropIndexStatementMetaDataRefreshStrategyTest.java b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/refresh/DropIndexStatementMetaDataRefreshStrategyTest.java
index 983a6b6..0a0343e 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/refresh/DropIndexStatementMetaDataRefreshStrategyTest.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/refresh/DropIndexStatementMetaDataRefreshStrategyTest.java
@@ -17,10 +17,9 @@
package org.apache.shardingsphere.infra.metadata.refresh;
+import org.apache.shardingsphere.infra.binder.metadata.index.IndexMetaData;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.metadata.refresh.impl.DropIndexStatementMetaDataRefreshStrategy;
-import org.apache.shardingsphere.infra.binder.metadata.index.IndexMetaData;
-import org.apache.shardingsphere.infra.binder.statement.ddl.DropIndexStatementContext;
import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.index.IndexSegment;
import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.TableNameSegment;
@@ -56,9 +55,8 @@ public final class DropIndexStatementMetaDataRefreshStrategyTest extends Abstrac
private void refreshMetaData(final DropIndexStatement dropIndexStatement) throws SQLException {
dropIndexStatement.getIndexes().add(new IndexSegment(1, 2, new IdentifierValue("index")));
- MetaDataRefreshStrategy<DropIndexStatementContext> metaDataRefreshStrategy = new DropIndexStatementMetaDataRefreshStrategy();
- DropIndexStatementContext dropIndexStatementContext = new DropIndexStatementContext(dropIndexStatement);
- metaDataRefreshStrategy.refreshMetaData(getMetaData(), mock(DatabaseType.class), Collections.emptyMap(), dropIndexStatementContext, tableName -> Optional.empty());
+ MetaDataRefreshStrategy<DropIndexStatement> metaDataRefreshStrategy = new DropIndexStatementMetaDataRefreshStrategy();
+ metaDataRefreshStrategy.refreshMetaData(getMetaData(), mock(DatabaseType.class), Collections.emptyMap(), dropIndexStatement, tableName -> Optional.empty());
assertFalse(getMetaData().getRuleSchemaMetaData().getConfiguredSchemaMetaData().get("t_order").getIndexes().containsKey("index"));
}
@@ -83,9 +81,8 @@ public final class DropIndexStatementMetaDataRefreshStrategyTest extends Abstrac
Map<String, IndexMetaData> actualIndex = getMetaData().getRuleSchemaMetaData().getConfiguredSchemaMetaData().get("t_order").getIndexes();
actualIndex.put("t_order_index", new IndexMetaData("t_order_index"));
actualIndex.put("order_id_index", new IndexMetaData("order_id_index"));
- DropIndexStatementContext dropIndexStatementContext = new DropIndexStatementContext(dropIndexStatement);
- MetaDataRefreshStrategy<DropIndexStatementContext> metaDataRefreshStrategy = new DropIndexStatementMetaDataRefreshStrategy();
- metaDataRefreshStrategy.refreshMetaData(getMetaData(), mock(DatabaseType.class), Collections.emptyMap(), dropIndexStatementContext, tableName -> Optional.empty());
+ MetaDataRefreshStrategy<DropIndexStatement> metaDataRefreshStrategy = new DropIndexStatementMetaDataRefreshStrategy();
+ metaDataRefreshStrategy.refreshMetaData(getMetaData(), mock(DatabaseType.class), Collections.emptyMap(), dropIndexStatement, tableName -> Optional.empty());
assertFalse(getMetaData().getRuleSchemaMetaData().getConfiguredSchemaMetaData().get("t_order").getIndexes().containsKey("index"));
assertFalse(getMetaData().getRuleSchemaMetaData().getConfiguredSchemaMetaData().get("t_order").getIndexes().containsKey("t_order_index"));
assertFalse(getMetaData().getRuleSchemaMetaData().getConfiguredSchemaMetaData().get("t_order").getIndexes().containsKey("order_id_index"));
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/refresh/DropTableStatementMetaDataRefreshStrategyTest.java b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/refresh/DropTableStatementMetaDataRefreshStrategyTest.java
index 62defcf..ab151c2 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/refresh/DropTableStatementMetaDataRefreshStrategyTest.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/refresh/DropTableStatementMetaDataRefreshStrategyTest.java
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.infra.metadata.refresh;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.metadata.refresh.impl.DropTableStatementMetaDataRefreshStrategy;
-import org.apache.shardingsphere.infra.binder.statement.ddl.DropTableStatementContext;
import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.TableNameSegment;
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DropTableStatement;
@@ -44,32 +43,31 @@ public final class DropTableStatementMetaDataRefreshStrategyTest extends Abstrac
public void refreshMySQLDropTableMetaData() throws SQLException {
refreshMetaData(new MySQLDropTableStatement());
}
-
+
@Test
public void refreshOracleDropTableMetaData() throws SQLException {
refreshMetaData(new OracleDropTableStatement());
}
-
+
@Test
public void refreshPostgreSQLDropTableMetaData() throws SQLException {
refreshMetaData(new PostgreSQLDropTableStatement());
}
-
+
@Test
public void refreshSQL92DropTableMetaData() throws SQLException {
refreshMetaData(new SQL92DropTableStatement());
}
-
+
@Test
public void refreshSQLServerDropTableMetaData() throws SQLException {
refreshMetaData(new SQLServerDropTableStatement());
}
-
+
private void refreshMetaData(final DropTableStatement dropTableStatement) throws SQLException {
- MetaDataRefreshStrategy<DropTableStatementContext> metaDataRefreshStrategy = new DropTableStatementMetaDataRefreshStrategy();
+ MetaDataRefreshStrategy<DropTableStatement> metaDataRefreshStrategy = new DropTableStatementMetaDataRefreshStrategy();
dropTableStatement.getTables().add(new SimpleTableSegment(new TableNameSegment(1, 3, new IdentifierValue("t_order"))));
- DropTableStatementContext dropTableStatementContext = new DropTableStatementContext(dropTableStatement);
- metaDataRefreshStrategy.refreshMetaData(getMetaData(), mock(DatabaseType.class), Collections.emptyMap(), dropTableStatementContext, tableName -> Optional.empty());
+ metaDataRefreshStrategy.refreshMetaData(getMetaData(), mock(DatabaseType.class), Collections.emptyMap(), dropTableStatement, tableName -> Optional.empty());
assertFalse(getMetaData().getRuleSchemaMetaData().getConfiguredSchemaMetaData().containsTable("t_order"));
}
}
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/refresh/MetaDataRefreshStrategyFactoryTest.java b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/refresh/MetaDataRefreshStrategyFactoryTest.java
index a67ff33..05ae82f 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/refresh/MetaDataRefreshStrategyFactoryTest.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/refresh/MetaDataRefreshStrategyFactoryTest.java
@@ -17,53 +17,50 @@
package org.apache.shardingsphere.infra.metadata.refresh;
-import org.apache.shardingsphere.infra.binder.statement.ddl.AlterIndexStatementContext;
-import org.apache.shardingsphere.infra.binder.statement.ddl.AlterTableStatementContext;
-import org.apache.shardingsphere.infra.binder.statement.ddl.CreateIndexStatementContext;
-import org.apache.shardingsphere.infra.binder.statement.ddl.CreateTableStatementContext;
-import org.apache.shardingsphere.infra.binder.statement.ddl.DropIndexStatementContext;
-import org.apache.shardingsphere.infra.binder.statement.ddl.DropTableStatementContext;
-import org.apache.shardingsphere.infra.binder.statement.ddl.TruncateStatementContext;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.AlterIndexStatement;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.AlterTableStatement;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CreateIndexStatement;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CreateTableStatement;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DropIndexStatement;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DropTableStatement;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
@RunWith(MockitoJUnitRunner.class)
public final class MetaDataRefreshStrategyFactoryTest {
- @Mock
- private CreateTableStatementContext createTableStatementContext;
-
- @Mock
- private CreateIndexStatementContext createIndexStatementContext;
-
- @Mock
- private AlterIndexStatementContext alterIndexStatementContext;
+ @Test
+ public void assertNewInstanceWithCreateTableStatement() {
+ assertTrue(MetaDataRefreshStrategyFactory.newInstance(mock(CreateTableStatement.class)).isPresent());
+ }
- @Mock
- private AlterTableStatementContext alterTableStatementContext;
+ @Test
+ public void assertNewInstanceWithAlterTableStatement() {
+ assertTrue(MetaDataRefreshStrategyFactory.newInstance(mock(AlterTableStatement.class)).isPresent());
+ }
- @Mock
- private DropIndexStatementContext dropIndexStatementContext;
+ @Test
+ public void assertNewInstanceWithDropTableStatement() {
+ assertTrue(MetaDataRefreshStrategyFactory.newInstance(mock(DropTableStatement.class)).isPresent());
+ }
- @Mock
- private DropTableStatementContext dropTableStatementContext;
+ @Test
+ public void assertNewInstanceWithCreateIndexStatement() {
+ assertTrue(MetaDataRefreshStrategyFactory.newInstance(mock(CreateIndexStatement.class)).isPresent());
+ }
- @Mock
- private TruncateStatementContext truncateStatementContext;
+ @Test
+ public void assertNewInstanceWithDropIndexStatement() {
+ assertTrue(MetaDataRefreshStrategyFactory.newInstance(mock(DropIndexStatement.class)).isPresent());
+ }
@Test
- public void assertNewInstance() {
- assertTrue(MetaDataRefreshStrategyFactory.newInstance(createTableStatementContext).isPresent());
- assertTrue(MetaDataRefreshStrategyFactory.newInstance(createIndexStatementContext).isPresent());
- assertFalse(MetaDataRefreshStrategyFactory.newInstance(alterIndexStatementContext).isPresent());
- assertTrue(MetaDataRefreshStrategyFactory.newInstance(alterTableStatementContext).isPresent());
- assertTrue(MetaDataRefreshStrategyFactory.newInstance(dropIndexStatementContext).isPresent());
- assertTrue(MetaDataRefreshStrategyFactory.newInstance(dropTableStatementContext).isPresent());
- assertFalse(MetaDataRefreshStrategyFactory.newInstance(truncateStatementContext).isPresent());
+ public void assertNewInstanceWithSQLStatementNotNeedRefresh() {
+ assertFalse(MetaDataRefreshStrategyFactory.newInstance(mock(AlterIndexStatement.class)).isPresent());
}
}
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/AbstractStatementExecutor.java b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/AbstractStatementExecutor.java
index af8373f..8c7cb9b 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/AbstractStatementExecutor.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/AbstractStatementExecutor.java
@@ -19,14 +19,14 @@ package org.apache.shardingsphere.driver.executor;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.context.schema.SchemaContexts;
-import org.apache.shardingsphere.infra.executor.sql.resourced.jdbc.executor.SQLExecutorCallback;
-import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.database.DefaultSchema;
import org.apache.shardingsphere.infra.executor.kernel.InputGroup;
import org.apache.shardingsphere.infra.executor.sql.QueryResult;
import org.apache.shardingsphere.infra.executor.sql.resourced.jdbc.StatementExecuteUnit;
import org.apache.shardingsphere.infra.executor.sql.resourced.jdbc.executor.SQLExecutor;
+import org.apache.shardingsphere.infra.executor.sql.resourced.jdbc.executor.SQLExecutorCallback;
import org.apache.shardingsphere.infra.metadata.refresh.MetaDataRefreshStrategy;
import org.apache.shardingsphere.infra.metadata.refresh.MetaDataRefreshStrategyFactory;
import org.apache.shardingsphere.infra.metadata.schema.RuleSchemaMetaData;
@@ -34,9 +34,10 @@ import org.apache.shardingsphere.infra.metadata.schema.RuleSchemaMetaDataLoader;
import org.apache.shardingsphere.infra.metadata.schema.spi.RuleMetaDataNotifier;
import org.apache.shardingsphere.infra.rule.DataNodeRoutedRule;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
import org.apache.shardingsphere.infra.spi.ordered.OrderedSPIRegistry;
-import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import javax.sql.DataSource;
import java.sql.SQLException;
@@ -72,23 +73,23 @@ public abstract class AbstractStatementExecutor {
}
@SuppressWarnings({"unchecked", "rawtypes"})
- protected final void refreshTableMetaData(final ShardingSphereSchema schema, final SQLStatementContext<?> sqlStatementContext) throws SQLException {
- if (null == sqlStatementContext) {
+ protected final void refreshTableMetaData(final ShardingSphereSchema schema, final SQLStatement sqlStatement) throws SQLException {
+ if (null == sqlStatement) {
return;
}
- Optional<MetaDataRefreshStrategy> refreshStrategy = MetaDataRefreshStrategyFactory.newInstance(sqlStatementContext);
+ Optional<MetaDataRefreshStrategy> refreshStrategy = MetaDataRefreshStrategyFactory.newInstance(sqlStatement);
if (refreshStrategy.isPresent()) {
RuleSchemaMetaDataLoader metaDataLoader = new RuleSchemaMetaDataLoader(schema.getRules());
- refreshStrategy.get().refreshMetaData(schema.getMetaData(), schemaContexts.getDatabaseType(), dataSourceMap, sqlStatementContext,
+ refreshStrategy.get().refreshMetaData(schema.getMetaData(), schemaContexts.getDatabaseType(), dataSourceMap, sqlStatement,
tableName -> metaDataLoader.load(schemaContexts.getDatabaseType(), dataSourceMap, tableName, schemaContexts.getProps()));
notifyPersistRuleMetaData(DefaultSchema.LOGIC_NAME, schema.getMetaData().getRuleSchemaMetaData());
}
}
- protected boolean executeAndRefreshMetaData(final Collection<InputGroup<StatementExecuteUnit>> inputGroups, final SQLStatementContext<?> sqlStatementContext,
+ protected boolean executeAndRefreshMetaData(final Collection<InputGroup<StatementExecuteUnit>> inputGroups, final SQLStatement sqlStatement,
final SQLExecutorCallback<Boolean> sqlExecutorCallback) throws SQLException {
List<Boolean> result = sqlExecutor.execute(inputGroups, sqlExecutorCallback);
- refreshTableMetaData(schemaContexts.getDefaultSchema(), sqlStatementContext);
+ refreshTableMetaData(schemaContexts.getDefaultSchema(), sqlStatement);
return null != result && !result.isEmpty() && null != result.get(0) && result.get(0);
}
@@ -100,11 +101,11 @@ public abstract class AbstractStatementExecutor {
* Execute SQL.
*
* @param inputGroups input groups
- * @param sqlStatementContext SQL statement context
+ * @param sqlStatement SQL statement
* @return return true if is DQL, false if is DML
* @throws SQLException SQL exception
*/
- public abstract boolean execute(Collection<InputGroup<StatementExecuteUnit>> inputGroups, SQLStatementContext<?> sqlStatementContext) throws SQLException;
+ public abstract boolean execute(Collection<InputGroup<StatementExecuteUnit>> inputGroups, SQLStatement sqlStatement) throws SQLException;
/**
* Execute query.
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/PreparedStatementExecutor.java b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/PreparedStatementExecutor.java
index 24e589f..03a407e 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/PreparedStatementExecutor.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/PreparedStatementExecutor.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.driver.executor;
+import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.context.schema.SchemaContexts;
import org.apache.shardingsphere.infra.executor.kernel.InputGroup;
import org.apache.shardingsphere.infra.executor.sql.ConnectionMode;
@@ -29,7 +30,7 @@ import org.apache.shardingsphere.infra.executor.sql.resourced.jdbc.executor.impl
import org.apache.shardingsphere.infra.executor.sql.resourced.jdbc.queryresult.MemoryQueryResult;
import org.apache.shardingsphere.infra.executor.sql.resourced.jdbc.queryresult.StreamQueryResult;
import org.apache.shardingsphere.infra.rule.DataNodeRoutedRule;
-import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import javax.sql.DataSource;
import java.sql.PreparedStatement;
@@ -78,7 +79,7 @@ public final class PreparedStatementExecutor extends AbstractStatementExecutor {
boolean isExceptionThrown = ExecutorExceptionHandler.isExceptionThrown();
SQLExecutorCallback<Integer> sqlExecutorCallback = createDefaultSQLExecutorCallbackWithInteger(isExceptionThrown);
List<Integer> results = getSqlExecutor().execute(inputGroups, sqlExecutorCallback);
- refreshTableMetaData(getSchemaContexts().getDefaultSchema(), sqlStatementContext);
+ refreshTableMetaData(getSchemaContexts().getDefaultSchema(), sqlStatementContext.getSqlStatement());
return isNeedAccumulate(
getSchemaContexts().getDefaultSchema().getRules().stream().filter(rule -> rule instanceof DataNodeRoutedRule).collect(Collectors.toList()), sqlStatementContext)
? accumulate(results) : results.get(0);
@@ -95,10 +96,10 @@ public final class PreparedStatementExecutor extends AbstractStatementExecutor {
}
@Override
- public boolean execute(final Collection<InputGroup<StatementExecuteUnit>> inputGroups, final SQLStatementContext<?> sqlStatementContext) throws SQLException {
+ public boolean execute(final Collection<InputGroup<StatementExecuteUnit>> inputGroups, final SQLStatement sqlStatement) throws SQLException {
boolean isExceptionThrown = ExecutorExceptionHandler.isExceptionThrown();
SQLExecutorCallback<Boolean> sqlExecutorCallback = createDefaultSQLExecutorCallbackWithBoolean(isExceptionThrown);
- return executeAndRefreshMetaData(inputGroups, sqlStatementContext, sqlExecutorCallback);
+ return executeAndRefreshMetaData(inputGroups, sqlStatement, sqlExecutorCallback);
}
private DefaultSQLExecutorCallback<Boolean> createDefaultSQLExecutorCallbackWithBoolean(final boolean isExceptionThrown) {
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/StatementExecutor.java b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/StatementExecutor.java
index afe9a52..17d1e28 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/StatementExecutor.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/StatementExecutor.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.driver.executor;
+import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.context.schema.SchemaContexts;
import org.apache.shardingsphere.infra.executor.kernel.InputGroup;
import org.apache.shardingsphere.infra.executor.sql.ConnectionMode;
@@ -29,7 +30,7 @@ import org.apache.shardingsphere.infra.executor.sql.resourced.jdbc.executor.impl
import org.apache.shardingsphere.infra.executor.sql.resourced.jdbc.queryresult.MemoryQueryResult;
import org.apache.shardingsphere.infra.executor.sql.resourced.jdbc.queryresult.StreamQueryResult;
import org.apache.shardingsphere.infra.rule.DataNodeRoutedRule;
-import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import javax.sql.DataSource;
import java.sql.ResultSet;
@@ -122,7 +123,7 @@ public final class StatementExecutor extends AbstractStatementExecutor {
}
};
List<Integer> results = getSqlExecutor().execute(inputGroups, sqlExecutorCallback);
- refreshTableMetaData(getSchemaContexts().getDefaultSchema(), sqlStatementContext);
+ refreshTableMetaData(getSchemaContexts().getDefaultSchema(), sqlStatementContext.getSqlStatement());
if (isNeedAccumulate(
getSchemaContexts().getDefaultSchema().getRules().stream().filter(rule -> rule instanceof DataNodeRoutedRule).collect(Collectors.toList()), sqlStatementContext)) {
return accumulate(results);
@@ -131,51 +132,51 @@ public final class StatementExecutor extends AbstractStatementExecutor {
}
@Override
- public boolean execute(final Collection<InputGroup<StatementExecuteUnit>> inputGroups, final SQLStatementContext<?> sqlStatementContext) throws SQLException {
- return execute(inputGroups, Statement::execute, sqlStatementContext);
+ public boolean execute(final Collection<InputGroup<StatementExecuteUnit>> inputGroups, final SQLStatement sqlStatement) throws SQLException {
+ return execute(inputGroups, Statement::execute, sqlStatement);
}
/**
* Execute SQL with auto generated keys.
*
* @param inputGroups input groups
- * @param sqlStatementContext SQL statement context
+ * @param sqlStatement SQL statement
* @param autoGeneratedKeys auto generated keys' flag
* @return return true if is DQL, false if is DML
* @throws SQLException SQL exception
*/
- public boolean execute(final Collection<InputGroup<StatementExecuteUnit>> inputGroups, final SQLStatementContext<?> sqlStatementContext, final int autoGeneratedKeys) throws SQLException {
- return execute(inputGroups, (statement, sql) -> statement.execute(sql, autoGeneratedKeys), sqlStatementContext);
+ public boolean execute(final Collection<InputGroup<StatementExecuteUnit>> inputGroups, final SQLStatement sqlStatement, final int autoGeneratedKeys) throws SQLException {
+ return execute(inputGroups, (statement, sql) -> statement.execute(sql, autoGeneratedKeys), sqlStatement);
}
/**
* Execute SQL with column indexes.
*
* @param inputGroups input groups
- * @param sqlStatementContext SQL statement context
+ * @param sqlStatement SQL statement
* @param columnIndexes column indexes
* @return return true if is DQL, false if is DML
* @throws SQLException SQL exception
*/
- public boolean execute(final Collection<InputGroup<StatementExecuteUnit>> inputGroups, final SQLStatementContext<?> sqlStatementContext, final int[] columnIndexes) throws SQLException {
- return execute(inputGroups, (statement, sql) -> statement.execute(sql, columnIndexes), sqlStatementContext);
+ public boolean execute(final Collection<InputGroup<StatementExecuteUnit>> inputGroups, final SQLStatement sqlStatement, final int[] columnIndexes) throws SQLException {
+ return execute(inputGroups, (statement, sql) -> statement.execute(sql, columnIndexes), sqlStatement);
}
/**
* Execute SQL with column names.
*
* @param inputGroups input groups
- * @param sqlStatementContext SQL statement context
+ * @param sqlStatement SQL statement
* @param columnNames column names
* @return return true if is DQL, false if is DML
* @throws SQLException SQL exception
*/
- public boolean execute(final Collection<InputGroup<StatementExecuteUnit>> inputGroups, final SQLStatementContext<?> sqlStatementContext, final String[] columnNames) throws SQLException {
- return execute(inputGroups, (statement, sql) -> statement.execute(sql, columnNames), sqlStatementContext);
+ public boolean execute(final Collection<InputGroup<StatementExecuteUnit>> inputGroups, final SQLStatement sqlStatement, final String[] columnNames) throws SQLException {
+ return execute(inputGroups, (statement, sql) -> statement.execute(sql, columnNames), sqlStatement);
}
@SuppressWarnings({"unchecked", "rawtypes"})
- private boolean execute(final Collection<InputGroup<StatementExecuteUnit>> inputGroups, final Executor executor, final SQLStatementContext<?> sqlStatementContext) throws SQLException {
+ private boolean execute(final Collection<InputGroup<StatementExecuteUnit>> inputGroups, final Executor executor, final SQLStatement sqlStatement) throws SQLException {
boolean isExceptionThrown = ExecutorExceptionHandler.isExceptionThrown();
SQLExecutorCallback sqlExecutorCallback = new DefaultSQLExecutorCallback<Boolean>(getSchemaContexts().getDatabaseType(), isExceptionThrown) {
@@ -184,7 +185,7 @@ public final class StatementExecutor extends AbstractStatementExecutor {
return executor.execute(statement, sql);
}
};
- return executeAndRefreshMetaData(inputGroups, sqlStatementContext, sqlExecutorCallback);
+ return executeAndRefreshMetaData(inputGroups, sqlStatement, sqlExecutorCallback);
}
private interface Updater {
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
index ca9dcc7..265626c 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
@@ -197,7 +197,7 @@ public final class ShardingSpherePreparedStatement extends AbstractPreparedState
Collection<InputGroup<StatementExecuteUnit>> inputGroups = getInputGroups();
cacheStatements(inputGroups);
reply();
- return preparedStatementExecutor.execute(inputGroups, executionContext.getSqlStatementContext());
+ return preparedStatementExecutor.execute(inputGroups, executionContext.getSqlStatementContext().getSqlStatement());
} else {
// TODO process getStatement
return rawExecutor.execute(getRawInputGroups(), new RawSQLExecutorCallback());
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
index d6caf91..284cc21 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
@@ -215,7 +215,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
if (ExecutorConstant.MANAGED_RESOURCE) {
Collection<InputGroup<StatementExecuteUnit>> inputGroups = getInputGroups();
cacheStatements(inputGroups);
- return statementExecutor.execute(inputGroups, executionContext.getSqlStatementContext());
+ return statementExecutor.execute(inputGroups, executionContext.getSqlStatementContext().getSqlStatement());
} else {
// TODO process getStatement
return rawExecutor.execute(getRawInputGroups(), new RawSQLExecutorCallback());
@@ -235,7 +235,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
if (ExecutorConstant.MANAGED_RESOURCE) {
Collection<InputGroup<StatementExecuteUnit>> inputGroups = getInputGroups();
cacheStatements(inputGroups);
- return statementExecutor.execute(inputGroups, executionContext.getSqlStatementContext(), autoGeneratedKeys);
+ return statementExecutor.execute(inputGroups, executionContext.getSqlStatementContext().getSqlStatement(), autoGeneratedKeys);
} else {
// TODO process getStatement
return rawExecutor.execute(getRawInputGroups(), new RawSQLExecutorCallback());
@@ -253,7 +253,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
if (ExecutorConstant.MANAGED_RESOURCE) {
Collection<InputGroup<StatementExecuteUnit>> inputGroups = getInputGroups();
cacheStatements(inputGroups);
- return statementExecutor.execute(inputGroups, executionContext.getSqlStatementContext(), columnIndexes);
+ return statementExecutor.execute(inputGroups, executionContext.getSqlStatementContext().getSqlStatement(), columnIndexes);
} else {
// TODO process getStatement
return rawExecutor.execute(getRawInputGroups(), new RawSQLExecutorCallback());
@@ -271,7 +271,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
if (ExecutorConstant.MANAGED_RESOURCE) {
Collection<InputGroup<StatementExecuteUnit>> inputGroups = getInputGroups();
cacheStatements(inputGroups);
- return statementExecutor.execute(inputGroups, executionContext.getSqlStatementContext(), columnNames);
+ return statementExecutor.execute(inputGroups, executionContext.getSqlStatementContext().getSqlStatement(), columnNames);
} else {
// TODO process getStatement
return rawExecutor.execute(getRawInputGroups(), new RawSQLExecutorCallback());
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/executor/PreparedStatementExecutorTest.java b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/executor/PreparedStatementExecutorTest.java
index eb290c1..4eb2795 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/executor/PreparedStatementExecutorTest.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/executor/PreparedStatementExecutorTest.java
@@ -25,6 +25,7 @@ import org.apache.shardingsphere.infra.executor.sql.ConnectionMode;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
import org.apache.shardingsphere.infra.executor.sql.context.SQLUnit;
import org.apache.shardingsphere.infra.executor.kernel.InputGroup;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import org.junit.Test;
import java.sql.DatabaseMetaData;
@@ -65,7 +66,7 @@ public final class PreparedStatementExecutorTest extends AbstractBaseExecutorTes
@Test
public void assertNoStatement() throws SQLException {
- assertFalse(actual.execute(Collections.emptyList(), createSQLStatementContext()));
+ assertFalse(actual.execute(Collections.emptyList(), mock(SQLStatement.class)));
assertThat(actual.executeUpdate(Collections.emptyList(), createSQLStatementContext()), is(0));
assertThat(actual.executeQuery(Collections.emptyList()).size(), is(0));
}
@@ -178,7 +179,7 @@ public final class PreparedStatementExecutorTest extends AbstractBaseExecutorTes
public void assertExecuteForSinglePreparedStatementSuccessWithDML() throws SQLException {
PreparedStatement preparedStatement = getPreparedStatement();
when(preparedStatement.execute()).thenReturn(false);
- assertFalse(actual.execute(getExecuteGroups(Collections.singletonList(preparedStatement), false), createSQLStatementContext()));
+ assertFalse(actual.execute(getExecuteGroups(Collections.singletonList(preparedStatement), false), mock(SQLStatement.class)));
verify(preparedStatement).execute();
}
@@ -188,7 +189,7 @@ public final class PreparedStatementExecutorTest extends AbstractBaseExecutorTes
PreparedStatement preparedStatement2 = getPreparedStatement();
when(preparedStatement1.execute()).thenReturn(false);
when(preparedStatement2.execute()).thenReturn(false);
- assertFalse(actual.execute(getExecuteGroups(Arrays.asList(preparedStatement1, preparedStatement2), false), createSQLStatementContext()));
+ assertFalse(actual.execute(getExecuteGroups(Arrays.asList(preparedStatement1, preparedStatement2), false), mock(SQLStatement.class)));
verify(preparedStatement1).execute();
verify(preparedStatement2).execute();
}
@@ -198,7 +199,7 @@ public final class PreparedStatementExecutorTest extends AbstractBaseExecutorTes
PreparedStatement preparedStatement = getPreparedStatement();
SQLException ex = new SQLException("");
when(preparedStatement.execute()).thenThrow(ex);
- assertFalse(actual.execute(getExecuteGroups(Collections.singletonList(preparedStatement), false), createSQLStatementContext()));
+ assertFalse(actual.execute(getExecuteGroups(Collections.singletonList(preparedStatement), false), mock(SQLStatement.class)));
verify(preparedStatement).execute();
}
@@ -209,7 +210,7 @@ public final class PreparedStatementExecutorTest extends AbstractBaseExecutorTes
SQLException ex = new SQLException("");
when(preparedStatement1.execute()).thenThrow(ex);
when(preparedStatement2.execute()).thenThrow(ex);
- assertFalse(actual.execute(getExecuteGroups(Arrays.asList(preparedStatement1, preparedStatement2), false), createSQLStatementContext()));
+ assertFalse(actual.execute(getExecuteGroups(Arrays.asList(preparedStatement1, preparedStatement2), false), mock(SQLStatement.class)));
verify(preparedStatement1).execute();
verify(preparedStatement2).execute();
}
@@ -218,7 +219,7 @@ public final class PreparedStatementExecutorTest extends AbstractBaseExecutorTes
public void assertExecuteForSinglePreparedStatementWithDQL() throws SQLException {
PreparedStatement preparedStatement = getPreparedStatement();
when(preparedStatement.execute()).thenReturn(true);
- assertTrue(actual.execute(getExecuteGroups(Collections.singletonList(preparedStatement), true), createSQLStatementContext()));
+ assertTrue(actual.execute(getExecuteGroups(Collections.singletonList(preparedStatement), true), mock(SQLStatement.class)));
verify(preparedStatement).execute();
}
@@ -228,7 +229,7 @@ public final class PreparedStatementExecutorTest extends AbstractBaseExecutorTes
PreparedStatement preparedStatement2 = getPreparedStatement();
when(preparedStatement1.execute()).thenReturn(true);
when(preparedStatement2.execute()).thenReturn(true);
- assertTrue(actual.execute(getExecuteGroups(Arrays.asList(preparedStatement1, preparedStatement2), true), createSQLStatementContext()));
+ assertTrue(actual.execute(getExecuteGroups(Arrays.asList(preparedStatement1, preparedStatement2), true), mock(SQLStatement.class)));
verify(preparedStatement1).execute();
verify(preparedStatement2).execute();
}
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/executor/StatementExecutorTest.java b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/executor/StatementExecutorTest.java
index fc5a650..fccd321 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/executor/StatementExecutorTest.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/executor/StatementExecutorTest.java
@@ -17,15 +17,16 @@
package org.apache.shardingsphere.driver.executor;
-import org.apache.shardingsphere.infra.executor.sql.resourced.jdbc.executor.SQLExecutor;
-import org.apache.shardingsphere.infra.executor.sql.resourced.jdbc.executor.ExecutorExceptionHandler;
import org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConnection;
-import org.apache.shardingsphere.infra.executor.sql.QueryResult;
-import org.apache.shardingsphere.infra.executor.sql.resourced.jdbc.StatementExecuteUnit;
+import org.apache.shardingsphere.infra.executor.kernel.InputGroup;
import org.apache.shardingsphere.infra.executor.sql.ConnectionMode;
+import org.apache.shardingsphere.infra.executor.sql.QueryResult;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
import org.apache.shardingsphere.infra.executor.sql.context.SQLUnit;
-import org.apache.shardingsphere.infra.executor.kernel.InputGroup;
+import org.apache.shardingsphere.infra.executor.sql.resourced.jdbc.StatementExecuteUnit;
+import org.apache.shardingsphere.infra.executor.sql.resourced.jdbc.executor.ExecutorExceptionHandler;
+import org.apache.shardingsphere.infra.executor.sql.resourced.jdbc.executor.SQLExecutor;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import org.junit.Test;
import java.sql.Connection;
@@ -67,7 +68,7 @@ public final class StatementExecutorTest extends AbstractBaseExecutorTest {
@Test
public void assertNoStatement() throws SQLException {
- assertFalse(actual.execute(Collections.emptyList(), createSQLStatementContext()));
+ assertFalse(actual.execute(Collections.emptyList(), mock(SQLStatement.class)));
assertThat(actual.executeUpdate(Collections.emptyList(), createSQLStatementContext()), is(0));
assertThat(actual.executeQuery(Collections.emptyList()).size(), is(0));
}
@@ -214,7 +215,7 @@ public final class StatementExecutorTest extends AbstractBaseExecutorTest {
public void assertExecuteForSingleStatementSuccessWithDML() throws SQLException {
Statement statement = getStatement();
when(statement.execute(DML_SQL)).thenReturn(false);
- assertFalse(actual.execute(getExecuteGroups(Collections.singletonList(statement), false), createSQLStatementContext()));
+ assertFalse(actual.execute(getExecuteGroups(Collections.singletonList(statement), false), mock(SQLStatement.class)));
verify(statement).execute(DML_SQL);
}
@@ -224,7 +225,7 @@ public final class StatementExecutorTest extends AbstractBaseExecutorTest {
Statement statement2 = getStatement();
when(statement1.execute(DML_SQL)).thenReturn(false);
when(statement2.execute(DML_SQL)).thenReturn(false);
- assertFalse(actual.execute(getExecuteGroups(Arrays.asList(statement1, statement2), false), createSQLStatementContext()));
+ assertFalse(actual.execute(getExecuteGroups(Arrays.asList(statement1, statement2), false), mock(SQLStatement.class)));
verify(statement1).execute(DML_SQL);
verify(statement2).execute(DML_SQL);
}
@@ -234,7 +235,7 @@ public final class StatementExecutorTest extends AbstractBaseExecutorTest {
Statement statement = getStatement();
SQLException ex = new SQLException("");
when(statement.execute(DML_SQL)).thenThrow(ex);
- assertFalse(actual.execute(getExecuteGroups(Collections.singletonList(statement), false), createSQLStatementContext()));
+ assertFalse(actual.execute(getExecuteGroups(Collections.singletonList(statement), false), mock(SQLStatement.class)));
verify(statement).execute(DML_SQL);
}
@@ -245,7 +246,7 @@ public final class StatementExecutorTest extends AbstractBaseExecutorTest {
SQLException ex = new SQLException("");
when(statement1.execute(DML_SQL)).thenThrow(ex);
when(statement2.execute(DML_SQL)).thenThrow(ex);
- assertFalse(actual.execute(getExecuteGroups(Arrays.asList(statement1, statement2), false), createSQLStatementContext()));
+ assertFalse(actual.execute(getExecuteGroups(Arrays.asList(statement1, statement2), false), mock(SQLStatement.class)));
verify(statement1).execute(DML_SQL);
verify(statement2).execute(DML_SQL);
}
@@ -254,7 +255,7 @@ public final class StatementExecutorTest extends AbstractBaseExecutorTest {
public void assertExecuteForSingleStatementWithDQL() throws SQLException {
Statement statement = getStatement();
when(statement.execute(DQL_SQL)).thenReturn(true);
- assertTrue(actual.execute(getExecuteGroups(Collections.singletonList(statement), true), createSQLStatementContext()));
+ assertTrue(actual.execute(getExecuteGroups(Collections.singletonList(statement), true), mock(SQLStatement.class)));
verify(statement).execute(DQL_SQL);
}
@@ -264,7 +265,7 @@ public final class StatementExecutorTest extends AbstractBaseExecutorTest {
Statement statement2 = getStatement();
when(statement1.execute(DQL_SQL)).thenReturn(true);
when(statement2.execute(DQL_SQL)).thenReturn(true);
- assertTrue(actual.execute(getExecuteGroups(Arrays.asList(statement1, statement2), true), createSQLStatementContext()));
+ assertTrue(actual.execute(getExecuteGroups(Arrays.asList(statement1, statement2), true), mock(SQLStatement.class)));
verify(statement1).execute(DQL_SQL);
verify(statement2).execute(DQL_SQL);
}
@@ -273,7 +274,7 @@ public final class StatementExecutorTest extends AbstractBaseExecutorTest {
public void assertExecuteWithAutoGeneratedKeys() throws SQLException {
Statement statement = getStatement();
when(statement.execute(DML_SQL, Statement.NO_GENERATED_KEYS)).thenReturn(false);
- assertFalse(actual.execute(getExecuteGroups(Collections.singletonList(statement), false), createSQLStatementContext(), Statement.NO_GENERATED_KEYS));
+ assertFalse(actual.execute(getExecuteGroups(Collections.singletonList(statement), false), mock(SQLStatement.class), Statement.NO_GENERATED_KEYS));
verify(statement).execute(DML_SQL, Statement.NO_GENERATED_KEYS);
}
@@ -281,7 +282,7 @@ public final class StatementExecutorTest extends AbstractBaseExecutorTest {
public void assertExecuteWithColumnIndexes() throws SQLException {
Statement statement = getStatement();
when(statement.execute(DML_SQL, new int[] {1})).thenReturn(false);
- assertFalse(actual.execute(getExecuteGroups(Collections.singletonList(statement), false), createSQLStatementContext(), new int[] {1}));
+ assertFalse(actual.execute(getExecuteGroups(Collections.singletonList(statement), false), mock(SQLStatement.class), new int[] {1}));
verify(statement).execute(DML_SQL, new int[] {1});
}
@@ -289,7 +290,7 @@ public final class StatementExecutorTest extends AbstractBaseExecutorTest {
public void assertExecuteWithColumnNames() throws SQLException {
Statement statement = getStatement();
when(statement.execute(DML_SQL, new String[] {"col"})).thenReturn(false);
- assertFalse(actual.execute(getExecuteGroups(Collections.singletonList(statement), false), createSQLStatementContext(), new String[] {"col"}));
+ assertFalse(actual.execute(getExecuteGroups(Collections.singletonList(statement), false), mock(SQLStatement.class), new String[] {"col"}));
verify(statement).execute(DML_SQL, new String[] {"col"});
}
@@ -300,7 +301,7 @@ public final class StatementExecutorTest extends AbstractBaseExecutorTest {
SQLException ex = new SQLException("");
when(statement.execute(DML_SQL)).thenThrow(ex);
try {
- assertFalse(actual.execute(getExecuteGroups(Collections.singletonList(statement), false), createSQLStatementContext()));
+ assertFalse(actual.execute(getExecuteGroups(Collections.singletonList(statement), false), mock(SQLStatement.class)));
} catch (final SQLException ignored) {
}
}
@@ -311,8 +312,7 @@ public final class StatementExecutorTest extends AbstractBaseExecutorTest {
result.add(new InputGroup<>(statementExecuteUnits));
for (Statement each : statements) {
statementExecuteUnits.add(
- new StatementExecuteUnit(new ExecutionUnit("ds_0", new SQLUnit(isQuery ? DQL_SQL : DML_SQL, Collections.singletonList(1))),
- ConnectionMode.MEMORY_STRICTLY, each));
+ new StatementExecuteUnit(new ExecutionUnit("ds_0", new SQLUnit(isQuery ? DQL_SQL : DML_SQL, Collections.singletonList(1))), ConnectionMode.MEMORY_STRICTLY, each));
}
return result;
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngine.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngine.java
index 1b46db0..4265cd8 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngine.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngine.java
@@ -18,9 +18,12 @@
package org.apache.shardingsphere.proxy.backend.communication.jdbc;
import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.governance.core.event.model.persist.MetaDataPersistEvent;
import org.apache.shardingsphere.governance.core.event.GovernanceEventBus;
+import org.apache.shardingsphere.governance.core.event.model.persist.MetaDataPersistEvent;
+import org.apache.shardingsphere.infra.binder.metadata.table.TableMetaData;
+import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.config.properties.ConfigurationPropertyKey;
+import org.apache.shardingsphere.infra.context.kernel.KernelProcessor;
import org.apache.shardingsphere.infra.executor.sql.QueryResult;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionContext;
import org.apache.shardingsphere.infra.executor.sql.log.SQLLogger;
@@ -31,17 +34,15 @@ import org.apache.shardingsphere.infra.metadata.refresh.MetaDataRefreshStrategy;
import org.apache.shardingsphere.infra.metadata.refresh.MetaDataRefreshStrategyFactory;
import org.apache.shardingsphere.infra.metadata.schema.RuleSchemaMetaDataLoader;
import org.apache.shardingsphere.infra.rule.DataNodeRoutedRule;
+import org.apache.shardingsphere.infra.sql.LogicSQL;
import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngine;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.execute.SQLExecuteEngine;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.infra.sql.LogicSQL;
-import org.apache.shardingsphere.infra.context.kernel.KernelProcessor;
import org.apache.shardingsphere.proxy.backend.response.BackendResponse;
import org.apache.shardingsphere.proxy.backend.response.query.QueryData;
import org.apache.shardingsphere.proxy.backend.response.query.QueryResponse;
import org.apache.shardingsphere.proxy.backend.response.update.UpdateResponse;
-import org.apache.shardingsphere.infra.binder.metadata.table.TableMetaData;
-import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import java.sql.SQLException;
import java.util.ArrayList;
@@ -83,19 +84,19 @@ public final class JDBCDatabaseCommunicationEngine implements DatabaseCommunicat
}
sqlExecuteEngine.checkExecutePrerequisites(executionContext);
response = sqlExecuteEngine.execute(executionContext);
- refreshTableMetaData(executionContext.getSqlStatementContext());
+ refreshTableMetaData(executionContext.getSqlStatementContext().getSqlStatement());
return merge(executionContext.getSqlStatementContext());
}
@SuppressWarnings({"unchecked", "rawtypes"})
- private void refreshTableMetaData(final SQLStatementContext<?> sqlStatementContext) throws SQLException {
- if (null == sqlStatementContext) {
+ private void refreshTableMetaData(final SQLStatement sqlStatement) throws SQLException {
+ if (null == sqlStatement) {
return;
}
- Optional<MetaDataRefreshStrategy> refreshStrategy = MetaDataRefreshStrategyFactory.newInstance(sqlStatementContext);
+ Optional<MetaDataRefreshStrategy> refreshStrategy = MetaDataRefreshStrategyFactory.newInstance(sqlStatement);
if (refreshStrategy.isPresent()) {
refreshStrategy.get().refreshMetaData(logicSQL.getSchema().getMetaData(), ProxyContext.getInstance().getSchemaContexts().getDatabaseType(),
- logicSQL.getSchema().getDataSources(), sqlStatementContext, this::loadTableMetaData);
+ logicSQL.getSchema().getDataSources(), sqlStatement, this::loadTableMetaData);
GovernanceEventBus.getInstance().post(
new MetaDataPersistEvent(logicSQL.getSchema().getName(), logicSQL.getSchema().getMetaData().getRuleSchemaMetaData()));
}