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 2022/04/26 06:10:09 UTC
[shardingsphere] branch master updated: Optimize ShardingStatementValidator to support PostgreSQL schema based SQL (#17110)
This is an automated email from the ASF dual-hosted git repository.
zhaojinchao 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 97522cef72d Optimize ShardingStatementValidator to support PostgreSQL schema based SQL (#17110)
97522cef72d is described below
commit 97522cef72d3cc360816eb497d1408ed81249972
Author: Zhengqiang Duan <du...@apache.org>
AuthorDate: Tue Apr 26 14:09:59 2022 +0800
Optimize ShardingStatementValidator to support PostgreSQL schema based SQL (#17110)
* Optimize ShardingStatementValidator to support PostgreSQL schema based SQL
* fix unit test
* fix unit test
* fix proxy test
---
.../sharding/route/engine/ShardingSQLRouter.java | 4 +-
.../validator/ShardingStatementValidator.java | 10 ++---
.../impl/ShardingAlterIndexStatementValidator.java | 10 ++---
.../impl/ShardingAlterTableStatementValidator.java | 6 +--
.../impl/ShardingAlterViewStatementValidator.java | 6 +--
.../ShardingCreateFunctionStatementValidator.java | 10 ++---
.../ShardingCreateIndexStatementValidator.java | 10 ++---
.../ShardingCreateProcedureStatementValidator.java | 10 ++---
.../ShardingCreateTableStatementValidator.java | 7 +++-
.../impl/ShardingCreateViewStatementValidator.java | 6 +--
.../impl/ShardingDropIndexStatementValidator.java | 10 ++---
.../impl/ShardingDropTableStatementValidator.java | 8 ++--
.../impl/ShardingPrepareStatementValidator.java | 6 +--
.../ShardingRenameTableStatementValidator.java | 6 +--
.../dml/impl/ShardingCopyStatementValidator.java | 6 +--
.../dml/impl/ShardingDeleteStatementValidator.java | 6 +--
.../dml/impl/ShardingInsertStatementValidator.java | 6 +--
.../dml/impl/ShardingSelectStatementValidator.java | 6 +--
.../dml/impl/ShardingUpdateStatementValidator.java | 6 +--
.../merge/ShardingResultMergerEngineTest.java | 2 +-
.../engine/type/standard/AbstractSQLRouteTest.java | 4 +-
.../ShardingAlterIndexStatementValidatorTest.java | 25 ++++++------
.../ShardingAlterTableStatementValidatorTest.java | 19 ++++-----
.../ShardingAlterViewStatementValidatorTest.java | 10 ++---
...ardingCreateFunctionStatementValidatorTest.java | 18 ++++-----
.../ShardingCreateIndexStatementValidatorTest.java | 39 +++++++++---------
...rdingCreateProcedureStatementValidatorTest.java | 18 ++++-----
.../ShardingCreateTableStatementValidatorTest.java | 47 ++++++++++++----------
.../ShardingCreateViewStatementValidatorTest.java | 8 ++--
.../ShardingDropIndexStatementValidatorTest.java | 43 ++++++++++----------
.../ShardingDropTableStatementValidatorTest.java | 16 ++++----
.../ddl/ShardingPrepareStatementValidatorTest.java | 10 ++---
.../ShardingRenameTableStatementValidatorTest.java | 22 +++++-----
.../dml/ShardingDeleteStatementValidatorTest.java | 4 +-
.../dml/ShardingInsertStatementValidatorTest.java | 26 ++++++------
.../dml/ShardingUpdateStatementValidatorTest.java | 12 +++---
.../statement/dml/InsertStatementContext.java | 3 +-
.../statement/dml/SelectStatementContext.java | 8 +---
.../statement/impl/InsertStatementContextTest.java | 5 ++-
.../communication/ProxySQLExecutorTest.java | 9 +++--
40 files changed, 249 insertions(+), 238 deletions(-)
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/ShardingSQLRouter.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/ShardingSQLRouter.java
index dde49f3b12a..ef486cabda8 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/ShardingSQLRouter.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/ShardingSQLRouter.java
@@ -49,12 +49,12 @@ public final class ShardingSQLRouter implements SQLRouter<ShardingRule> {
SQLStatement sqlStatement = logicSQL.getSqlStatementContext().getSqlStatement();
ShardingConditions shardingConditions = createShardingConditions(logicSQL, metaData, rule);
Optional<ShardingStatementValidator> validator = ShardingStatementValidatorFactory.newInstance(sqlStatement, shardingConditions);
- validator.ifPresent(v -> v.preValidate(rule, logicSQL.getSqlStatementContext(), logicSQL.getParameters(), metaData.getDefaultSchema()));
+ validator.ifPresent(v -> v.preValidate(rule, logicSQL.getSqlStatementContext(), logicSQL.getParameters(), metaData));
if (sqlStatement instanceof DMLStatement && shardingConditions.isNeedMerge()) {
shardingConditions.merge();
}
RouteContext result = ShardingRouteEngineFactory.newInstance(rule, metaData, logicSQL.getSqlStatementContext(), shardingConditions, props).route(rule);
- validator.ifPresent(v -> v.postValidate(rule, logicSQL.getSqlStatementContext(), logicSQL.getParameters(), metaData.getDefaultSchema(), props, result));
+ validator.ifPresent(v -> v.postValidate(rule, logicSQL.getSqlStatementContext(), logicSQL.getParameters(), metaData, props, result));
return result;
}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ShardingStatementValidator.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ShardingStatementValidator.java
index 5e43c04917e..054b24c81f0 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ShardingStatementValidator.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ShardingStatementValidator.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.sharding.route.engine.validator;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
-import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
@@ -39,9 +39,9 @@ public interface ShardingStatementValidator<T extends SQLStatement> {
* @param shardingRule sharding rule
* @param sqlStatementContext SQL statement context
* @param parameters SQL parameters
- * @param schema ShardingSphere schema
+ * @param metaData ShardingSphere meta data
*/
- void preValidate(ShardingRule shardingRule, SQLStatementContext<T> sqlStatementContext, List<Object> parameters, ShardingSphereSchema schema);
+ void preValidate(ShardingRule shardingRule, SQLStatementContext<T> sqlStatementContext, List<Object> parameters, ShardingSphereMetaData metaData);
/**
* Validate whether sharding operation is supported after route.
@@ -49,10 +49,10 @@ public interface ShardingStatementValidator<T extends SQLStatement> {
* @param shardingRule sharding rule
* @param sqlStatementContext SQL statement context
* @param parameters SQL parameters
- * @param schema ShardingSphere schema
+ * @param metaData ShardingSphere meta data
* @param props props
* @param routeContext route context
*/
void postValidate(ShardingRule shardingRule, SQLStatementContext<T> sqlStatementContext, List<Object> parameters,
- ShardingSphereSchema schema, ConfigurationProperties props, RouteContext routeContext);
+ ShardingSphereMetaData metaData, ConfigurationProperties props, RouteContext routeContext);
}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingAlterIndexStatementValidator.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingAlterIndexStatementValidator.java
index b4711effa33..6568143841c 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingAlterIndexStatementValidator.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingAlterIndexStatementValidator.java
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.sharding.route.engine.validator.ddl.impl;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
-import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.sharding.route.engine.validator.ddl.ShardingDDLStatementValidator;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
@@ -38,19 +38,19 @@ public final class ShardingAlterIndexStatementValidator extends ShardingDDLState
@Override
public void preValidate(final ShardingRule shardingRule, final SQLStatementContext<AlterIndexStatement> sqlStatementContext,
- final List<Object> parameters, final ShardingSphereSchema schema) {
+ final List<Object> parameters, final ShardingSphereMetaData metaData) {
Optional<IndexSegment> index = sqlStatementContext.getSqlStatement().getIndex();
- if (index.isPresent() && !isSchemaContainsIndex(schema, index.get())) {
+ if (index.isPresent() && !isSchemaContainsIndex(metaData.getDefaultSchema(), index.get())) {
throw new ShardingSphereException("Index '%s' does not exist.", index.get().getIdentifier().getValue());
}
Optional<IndexSegment> renameIndex = AlterIndexStatementHandler.getRenameIndexSegment(sqlStatementContext.getSqlStatement());
- if (renameIndex.isPresent() && isSchemaContainsIndex(schema, renameIndex.get())) {
+ if (renameIndex.isPresent() && isSchemaContainsIndex(metaData.getDefaultSchema(), renameIndex.get())) {
throw new ShardingSphereException("Index '%s' already exists.", renameIndex.get().getIdentifier().getValue());
}
}
@Override
public void postValidate(final ShardingRule shardingRule, final SQLStatementContext<AlterIndexStatement> sqlStatementContext, final List<Object> parameters,
- final ShardingSphereSchema schema, final ConfigurationProperties props, final RouteContext routeContext) {
+ final ShardingSphereMetaData metaData, final ConfigurationProperties props, final RouteContext routeContext) {
}
}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingAlterTableStatementValidator.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingAlterTableStatementValidator.java
index 222ad58821d..781d8488b10 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingAlterTableStatementValidator.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingAlterTableStatementValidator.java
@@ -21,7 +21,7 @@ import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.binder.type.TableAvailable;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
-import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.sharding.route.engine.validator.ddl.ShardingDDLStatementValidator;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
@@ -40,7 +40,7 @@ public final class ShardingAlterTableStatementValidator extends ShardingDDLState
@Override
public void preValidate(final ShardingRule shardingRule, final SQLStatementContext<AlterTableStatement> sqlStatementContext,
- final List<Object> parameters, final ShardingSphereSchema schema) {
+ final List<Object> parameters, final ShardingSphereMetaData metaData) {
Collection<String> tableNames = sqlStatementContext instanceof TableAvailable
? ((TableAvailable) sqlStatementContext).getAllTables().stream().map(each -> each.getTableName().getIdentifier().getValue()).collect(Collectors.toList())
: sqlStatementContext.getTablesContext().getTableNames();
@@ -56,7 +56,7 @@ public final class ShardingAlterTableStatementValidator extends ShardingDDLState
@Override
public void postValidate(final ShardingRule shardingRule, final SQLStatementContext<AlterTableStatement> sqlStatementContext, final List<Object> parameters,
- final ShardingSphereSchema schema, final ConfigurationProperties props, final RouteContext routeContext) {
+ final ShardingSphereMetaData metaData, final ConfigurationProperties props, final RouteContext routeContext) {
String primaryTable = sqlStatementContext.getSqlStatement().getTable().getTableName().getIdentifier().getValue();
if (isRouteUnitDataNodeDifferentSize(shardingRule, routeContext, primaryTable)) {
throw new ShardingSphereException("ALTER TABLE ... statement can not route correctly for tables %s.", sqlStatementContext.getTablesContext().getTableNames());
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingAlterViewStatementValidator.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingAlterViewStatementValidator.java
index fff3d0dad04..aa7cf84d93f 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingAlterViewStatementValidator.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingAlterViewStatementValidator.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.sharding.route.engine.validator.ddl.impl;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
-import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.sharding.route.engine.validator.ddl.ShardingDDLStatementValidator;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
@@ -38,7 +38,7 @@ public final class ShardingAlterViewStatementValidator extends ShardingDDLStatem
@Override
public void preValidate(final ShardingRule shardingRule, final SQLStatementContext<AlterViewStatement> sqlStatementContext,
- final List<Object> parameters, final ShardingSphereSchema schema) {
+ final List<Object> parameters, final ShardingSphereMetaData metaData) {
Optional<SelectStatement> selectStatement = AlterViewStatementHandler.getSelectStatement(sqlStatementContext.getSqlStatement());
if (selectStatement.isPresent()) {
TableExtractor extractor = new TableExtractor();
@@ -49,6 +49,6 @@ public final class ShardingAlterViewStatementValidator extends ShardingDDLStatem
@Override
public void postValidate(final ShardingRule shardingRule, final SQLStatementContext<AlterViewStatement> sqlStatementContext, final List<Object> parameters,
- final ShardingSphereSchema schema, final ConfigurationProperties props, final RouteContext routeContext) {
+ final ShardingSphereMetaData metaData, final ConfigurationProperties props, final RouteContext routeContext) {
}
}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingCreateFunctionStatementValidator.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingCreateFunctionStatementValidator.java
index 5d7ea1a7361..02e17b6ff0d 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingCreateFunctionStatementValidator.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingCreateFunctionStatementValidator.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.sharding.route.engine.validator.ddl.impl;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
-import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.sharding.route.engine.validator.ddl.ShardingDDLStatementValidator;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
@@ -40,19 +40,19 @@ public final class ShardingCreateFunctionStatementValidator extends ShardingDDLS
@Override
public void preValidate(final ShardingRule shardingRule, final SQLStatementContext<CreateFunctionStatement> sqlStatementContext,
- final List<Object> parameters, final ShardingSphereSchema schema) {
+ final List<Object> parameters, final ShardingSphereMetaData metaData) {
Optional<RoutineBodySegment> routineBodySegment = CreateFunctionStatementHandler.getRoutineBodySegment(sqlStatementContext.getSqlStatement());
if (routineBodySegment.isPresent()) {
TableExtractor extractor = new TableExtractor();
Collection<SimpleTableSegment> existTables = extractor.extractExistTableFromRoutineBody(routineBodySegment.get());
validateShardingTable(shardingRule, existTables);
- validateTableExist(schema, existTables);
- validateTableNotExist(schema, extractor.extractNotExistTableFromRoutineBody(routineBodySegment.get()));
+ validateTableExist(metaData.getDefaultSchema(), existTables);
+ validateTableNotExist(metaData.getDefaultSchema(), extractor.extractNotExistTableFromRoutineBody(routineBodySegment.get()));
}
}
@Override
public void postValidate(final ShardingRule shardingRule, final SQLStatementContext<CreateFunctionStatement> sqlStatementContext, final List<Object> parameters,
- final ShardingSphereSchema schema, final ConfigurationProperties props, final RouteContext routeContext) {
+ final ShardingSphereMetaData metaData, final ConfigurationProperties props, final RouteContext routeContext) {
}
}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingCreateIndexStatementValidator.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingCreateIndexStatementValidator.java
index 42ff031a09a..d54cb0394ec 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingCreateIndexStatementValidator.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingCreateIndexStatementValidator.java
@@ -21,7 +21,7 @@ import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.binder.type.IndexAvailable;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
-import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.sharding.route.engine.validator.ddl.ShardingDDLStatementValidator;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
@@ -37,17 +37,17 @@ public final class ShardingCreateIndexStatementValidator extends ShardingDDLStat
@Override
public void preValidate(final ShardingRule shardingRule, final SQLStatementContext<CreateIndexStatement> sqlStatementContext,
- final List<Object> parameters, final ShardingSphereSchema schema) {
- validateTableExist(schema, Collections.singletonList(sqlStatementContext.getSqlStatement().getTable()));
+ final List<Object> parameters, final ShardingSphereMetaData metaData) {
+ validateTableExist(metaData.getDefaultSchema(), Collections.singletonList(sqlStatementContext.getSqlStatement().getTable()));
String tableName = sqlStatementContext.getSqlStatement().getTable().getTableName().getIdentifier().getValue();
String indexName = ((IndexAvailable) sqlStatementContext).getIndexes().stream().map(each -> each.getIdentifier().getValue()).findFirst().orElse(null);
- if (schema.get(tableName).getIndexes().containsKey(indexName)) {
+ if (metaData.getDefaultSchema().get(tableName).getIndexes().containsKey(indexName)) {
throw new ShardingSphereException("Index '%s' already exists.", indexName);
}
}
@Override
public void postValidate(final ShardingRule shardingRule, final SQLStatementContext<CreateIndexStatement> sqlStatementContext, final List<Object> parameters,
- final ShardingSphereSchema schema, final ConfigurationProperties props, final RouteContext routeContext) {
+ final ShardingSphereMetaData metaData, final ConfigurationProperties props, final RouteContext routeContext) {
}
}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingCreateProcedureStatementValidator.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingCreateProcedureStatementValidator.java
index 3f7881f90ca..46d52c2c3e9 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingCreateProcedureStatementValidator.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingCreateProcedureStatementValidator.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.sharding.route.engine.validator.ddl.impl;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
-import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.sharding.route.engine.validator.ddl.ShardingDDLStatementValidator;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
@@ -40,19 +40,19 @@ public final class ShardingCreateProcedureStatementValidator extends ShardingDDL
@Override
public void preValidate(final ShardingRule shardingRule, final SQLStatementContext<CreateProcedureStatement> sqlStatementContext,
- final List<Object> parameters, final ShardingSphereSchema schema) {
+ final List<Object> parameters, final ShardingSphereMetaData metaData) {
Optional<RoutineBodySegment> routineBodySegment = CreateProcedureStatementHandler.getRoutineBodySegment(sqlStatementContext.getSqlStatement());
if (routineBodySegment.isPresent()) {
TableExtractor extractor = new TableExtractor();
- validateTableNotExist(schema, extractor.extractNotExistTableFromRoutineBody(routineBodySegment.get()));
+ validateTableNotExist(metaData.getDefaultSchema(), extractor.extractNotExistTableFromRoutineBody(routineBodySegment.get()));
Collection<SimpleTableSegment> existTables = extractor.extractExistTableFromRoutineBody(routineBodySegment.get());
validateShardingTable(shardingRule, existTables);
- validateTableExist(schema, existTables);
+ validateTableExist(metaData.getDefaultSchema(), existTables);
}
}
@Override
public void postValidate(final ShardingRule shardingRule, final SQLStatementContext<CreateProcedureStatement> sqlStatementContext, final List<Object> parameters,
- final ShardingSphereSchema schema, final ConfigurationProperties props, final RouteContext routeContext) {
+ final ShardingSphereMetaData metaData, final ConfigurationProperties props, final RouteContext routeContext) {
}
}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingCreateTableStatementValidator.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingCreateTableStatementValidator.java
index 85ab3c09e62..89c3c53f0e2 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingCreateTableStatementValidator.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingCreateTableStatementValidator.java
@@ -20,6 +20,7 @@ package org.apache.shardingsphere.sharding.route.engine.validator.ddl.impl;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.sharding.route.engine.validator.ddl.ShardingDDLStatementValidator;
@@ -37,15 +38,17 @@ public final class ShardingCreateTableStatementValidator extends ShardingDDLStat
@Override
public void preValidate(final ShardingRule shardingRule, final SQLStatementContext<CreateTableStatement> sqlStatementContext,
- final List<Object> parameters, final ShardingSphereSchema schema) {
+ final List<Object> parameters, final ShardingSphereMetaData metaData) {
if (!CreateTableStatementHandler.containsNotExistClause(sqlStatementContext.getSqlStatement())) {
+ String defaultSchema = sqlStatementContext.getDatabaseType().getDefaultSchema(metaData.getDatabaseName());
+ ShardingSphereSchema schema = sqlStatementContext.getTablesContext().getSchemaName().map(metaData::getSchemaByName).orElse(metaData.getSchemaByName(defaultSchema));
validateTableNotExist(schema, Collections.singletonList(sqlStatementContext.getSqlStatement().getTable()));
}
}
@Override
public void postValidate(final ShardingRule shardingRule, final SQLStatementContext<CreateTableStatement> sqlStatementContext, final List<Object> parameters,
- final ShardingSphereSchema schema, final ConfigurationProperties props, final RouteContext routeContext) {
+ final ShardingSphereMetaData metaData, final ConfigurationProperties props, final RouteContext routeContext) {
String primaryTable = sqlStatementContext.getSqlStatement().getTable().getTableName().getIdentifier().getValue();
if (isRouteUnitDataNodeDifferentSize(shardingRule, routeContext, primaryTable)) {
throw new ShardingSphereException("CREATE TABLE ... statement can not route correctly for tables %s.", sqlStatementContext.getTablesContext().getTableNames());
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingCreateViewStatementValidator.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingCreateViewStatementValidator.java
index 4378602eb7e..3e38730141a 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingCreateViewStatementValidator.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingCreateViewStatementValidator.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.sharding.route.engine.validator.ddl.impl;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
-import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.sharding.route.engine.validator.ddl.ShardingDDLStatementValidator;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
@@ -37,7 +37,7 @@ public final class ShardingCreateViewStatementValidator extends ShardingDDLState
@Override
public void preValidate(final ShardingRule shardingRule, final SQLStatementContext<CreateViewStatement> sqlStatementContext,
- final List<Object> parameters, final ShardingSphereSchema schema) {
+ final List<Object> parameters, final ShardingSphereMetaData metaData) {
Optional<SelectStatement> selectStatement = sqlStatementContext.getSqlStatement().getSelect();
if (selectStatement.isPresent()) {
TableExtractor extractor = new TableExtractor();
@@ -48,6 +48,6 @@ public final class ShardingCreateViewStatementValidator extends ShardingDDLState
@Override
public void postValidate(final ShardingRule shardingRule, final SQLStatementContext<CreateViewStatement> sqlStatementContext, final List<Object> parameters,
- final ShardingSphereSchema schema, final ConfigurationProperties props, final RouteContext routeContext) {
+ final ShardingSphereMetaData metaData, final ConfigurationProperties props, final RouteContext routeContext) {
}
}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingDropIndexStatementValidator.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingDropIndexStatementValidator.java
index dc407a77545..8ee3965adff 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingDropIndexStatementValidator.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingDropIndexStatementValidator.java
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.sharding.route.engine.validator.ddl.impl;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
-import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.sharding.route.engine.validator.ddl.ShardingDDLStatementValidator;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
@@ -40,12 +40,12 @@ public final class ShardingDropIndexStatementValidator extends ShardingDDLStatem
@Override
public void preValidate(final ShardingRule shardingRule, final SQLStatementContext<DropIndexStatement> sqlStatementContext,
- final List<Object> parameters, final ShardingSphereSchema schema) {
+ final List<Object> parameters, final ShardingSphereMetaData metaData) {
if (DropIndexStatementHandler.containsExistClause(sqlStatementContext.getSqlStatement())) {
return;
}
for (IndexSegment each : sqlStatementContext.getSqlStatement().getIndexes()) {
- if (!isSchemaContainsIndex(schema, each)) {
+ if (!isSchemaContainsIndex(metaData.getDefaultSchema(), each)) {
throw new ShardingSphereException("Index '%s' does not exist.", each.getIdentifier().getValue());
}
}
@@ -53,14 +53,14 @@ public final class ShardingDropIndexStatementValidator extends ShardingDDLStatem
@Override
public void postValidate(final ShardingRule shardingRule, final SQLStatementContext<DropIndexStatement> sqlStatementContext, final List<Object> parameters,
- final ShardingSphereSchema schema, final ConfigurationProperties props, final RouteContext routeContext) {
+ final ShardingSphereMetaData metaData, final ConfigurationProperties props, final RouteContext routeContext) {
Collection<String> indexNames = sqlStatementContext.getSqlStatement().getIndexes().stream().map(each -> each.getIdentifier().getValue()).collect(Collectors.toList());
Optional<String> logicTableName = DropIndexStatementHandler.getSimpleTableSegment(sqlStatementContext.getSqlStatement()).map(table -> table.getTableName().getIdentifier().getValue());
if (logicTableName.isPresent()) {
validateDropIndexRouteUnit(shardingRule, routeContext, indexNames, logicTableName.get());
} else {
for (String each : indexNames) {
- logicTableName = schema.getAllTableNames().stream().filter(tableName -> schema.get(tableName).getIndexes().containsKey(each)).findFirst();
+ logicTableName = metaData.getDefaultSchema().getAllTableNames().stream().filter(tableName -> metaData.getDefaultSchema().get(tableName).getIndexes().containsKey(each)).findFirst();
logicTableName.ifPresent(tableName -> validateDropIndexRouteUnit(shardingRule, routeContext, indexNames, tableName));
}
}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingDropTableStatementValidator.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingDropTableStatementValidator.java
index d78bf47f16b..2e91f09a49e 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingDropTableStatementValidator.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingDropTableStatementValidator.java
@@ -21,7 +21,7 @@ import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.datanode.DataNode;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
-import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.infra.route.context.RouteMapper;
import org.apache.shardingsphere.sharding.route.engine.validator.ddl.ShardingDDLStatementValidator;
@@ -42,15 +42,15 @@ import java.util.stream.Collectors;
public final class ShardingDropTableStatementValidator extends ShardingDDLStatementValidator<DropTableStatement> {
@Override
- public void preValidate(final ShardingRule shardingRule, final SQLStatementContext<DropTableStatement> sqlStatementContext, final List<Object> parameters, final ShardingSphereSchema schema) {
+ public void preValidate(final ShardingRule shardingRule, final SQLStatementContext<DropTableStatement> sqlStatementContext, final List<Object> parameters, final ShardingSphereMetaData metaData) {
if (!DropTableStatementHandler.containsExistClause(sqlStatementContext.getSqlStatement())) {
- validateTableExist(schema, sqlStatementContext.getTablesContext().getTables());
+ validateTableExist(metaData.getDefaultSchema(), sqlStatementContext.getTablesContext().getTables());
}
}
@Override
public void postValidate(final ShardingRule shardingRule, final SQLStatementContext<DropTableStatement> sqlStatementContext, final List<Object> parameters,
- final ShardingSphereSchema schema, final ConfigurationProperties props, final RouteContext routeContext) {
+ final ShardingSphereMetaData metaData, final ConfigurationProperties props, final RouteContext routeContext) {
checkTableInUsed(shardingRule, sqlStatementContext.getSqlStatement(), routeContext);
for (SimpleTableSegment each : sqlStatementContext.getSqlStatement().getTables()) {
if (isRouteUnitDataNodeDifferentSize(shardingRule, routeContext, each.getTableName().getIdentifier().getValue())) {
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingPrepareStatementValidator.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingPrepareStatementValidator.java
index c420f90ab85..a1d149d017f 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingPrepareStatementValidator.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingPrepareStatementValidator.java
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.sharding.route.engine.validator.ddl.impl;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
-import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.infra.route.context.RouteUnit;
import org.apache.shardingsphere.sharding.route.engine.validator.ddl.ShardingDDLStatementValidator;
@@ -37,12 +37,12 @@ public final class ShardingPrepareStatementValidator extends ShardingDDLStatemen
@Override
public void preValidate(final ShardingRule shardingRule, final SQLStatementContext<PrepareStatement> sqlStatementContext,
- final List<Object> parameters, final ShardingSphereSchema schema) {
+ final List<Object> parameters, final ShardingSphereMetaData metaData) {
}
@Override
public void postValidate(final ShardingRule shardingRule, final SQLStatementContext<PrepareStatement> sqlStatementContext, final List<Object> parameters,
- final ShardingSphereSchema schema, final ConfigurationProperties props, final RouteContext routeContext) {
+ final ShardingSphereMetaData metaData, final ConfigurationProperties props, final RouteContext routeContext) {
if (routeContext.getRouteUnits().isEmpty()) {
throw new ShardingSphereException("Can not get route result, please check your sharding table config.");
}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingRenameTableStatementValidator.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingRenameTableStatementValidator.java
index 016859fa691..becfc82dd08 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingRenameTableStatementValidator.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingRenameTableStatementValidator.java
@@ -21,7 +21,7 @@ import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.binder.type.TableAvailable;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
-import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.sharding.route.engine.validator.ddl.ShardingDDLStatementValidator;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
@@ -40,7 +40,7 @@ public final class ShardingRenameTableStatementValidator extends ShardingDDLStat
@Override
public void preValidate(final ShardingRule shardingRule, final SQLStatementContext<RenameTableStatement> sqlStatementContext,
- final List<Object> parameters, final ShardingSphereSchema schema) {
+ final List<Object> parameters, final ShardingSphereMetaData metaData) {
Collection<String> tableNames = sqlStatementContext instanceof TableAvailable
? ((TableAvailable) sqlStatementContext).getAllTables().stream().map(each -> each.getTableName().getIdentifier().getValue()).collect(Collectors.toList())
: sqlStatementContext.getTablesContext().getTableNames();
@@ -56,7 +56,7 @@ public final class ShardingRenameTableStatementValidator extends ShardingDDLStat
@Override
public void postValidate(final ShardingRule shardingRule, final SQLStatementContext<RenameTableStatement> sqlStatementContext, final List<Object> parameters,
- final ShardingSphereSchema schema, final ConfigurationProperties props, final RouteContext routeContext) {
+ final ShardingSphereMetaData metaData, final ConfigurationProperties props, final RouteContext routeContext) {
for (RenameTableDefinitionSegment each : sqlStatementContext.getSqlStatement().getRenameTables()) {
String primaryTable = each.getTable().getTableName().getIdentifier().getValue();
if (isRouteUnitDataNodeDifferentSize(shardingRule, routeContext, primaryTable)) {
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/impl/ShardingCopyStatementValidator.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/impl/ShardingCopyStatementValidator.java
index 6cf0fe99489..ff51f9652a8 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/impl/ShardingCopyStatementValidator.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/impl/ShardingCopyStatementValidator.java
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.sharding.route.engine.validator.dml.impl;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
-import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.sharding.route.engine.validator.dml.ShardingDMLStatementValidator;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
@@ -34,7 +34,7 @@ import java.util.List;
public final class ShardingCopyStatementValidator extends ShardingDMLStatementValidator<CopyStatement> {
@Override
- public void preValidate(final ShardingRule shardingRule, final SQLStatementContext<CopyStatement> sqlStatementContext, final List<Object> parameters, final ShardingSphereSchema schema) {
+ public void preValidate(final ShardingRule shardingRule, final SQLStatementContext<CopyStatement> sqlStatementContext, final List<Object> parameters, final ShardingSphereMetaData metaData) {
String tableName = sqlStatementContext.getSqlStatement().getTableSegment().getTableName().getIdentifier().getValue();
if (shardingRule.isShardingTable(tableName)) {
throw new ShardingSphereException("COPY statement can not support sharding table %s.", tableName);
@@ -43,6 +43,6 @@ public final class ShardingCopyStatementValidator extends ShardingDMLStatementVa
@Override
public void postValidate(final ShardingRule shardingRule, final SQLStatementContext<CopyStatement> sqlStatementContext,
- final List<Object> parameters, final ShardingSphereSchema schema, final ConfigurationProperties props, final RouteContext routeContext) {
+ final List<Object> parameters, final ShardingSphereMetaData metaData, final ConfigurationProperties props, final RouteContext routeContext) {
}
}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/impl/ShardingDeleteStatementValidator.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/impl/ShardingDeleteStatementValidator.java
index e035825ab5b..b0dfb06783c 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/impl/ShardingDeleteStatementValidator.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/impl/ShardingDeleteStatementValidator.java
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.sharding.route.engine.validator.dml.impl;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
-import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.sharding.route.engine.validator.dml.ShardingDMLStatementValidator;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
@@ -36,13 +36,13 @@ public final class ShardingDeleteStatementValidator extends ShardingDMLStatement
@Override
public void preValidate(final ShardingRule shardingRule, final SQLStatementContext<DeleteStatement> sqlStatementContext,
- final List<Object> parameters, final ShardingSphereSchema schema) {
+ final List<Object> parameters, final ShardingSphereMetaData metaData) {
validateMultipleTable(shardingRule, sqlStatementContext);
}
@Override
public void postValidate(final ShardingRule shardingRule, final SQLStatementContext<DeleteStatement> sqlStatementContext, final List<Object> parameters,
- final ShardingSphereSchema schema, final ConfigurationProperties props, final RouteContext routeContext) {
+ final ShardingSphereMetaData metaData, final ConfigurationProperties props, final RouteContext routeContext) {
if (DeleteStatementHandler.getLimitSegment(sqlStatementContext.getSqlStatement()).isPresent() && routeContext.getRouteUnits().size() > 1) {
throw new ShardingSphereException("DELETE ... LIMIT can not support sharding route to multiple data nodes.");
}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/impl/ShardingInsertStatementValidator.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/impl/ShardingInsertStatementValidator.java
index 06d1e4553b2..c32bf10a754 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/impl/ShardingInsertStatementValidator.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/impl/ShardingInsertStatementValidator.java
@@ -24,7 +24,7 @@ import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.binder.statement.dml.InsertStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
-import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.sharding.route.engine.condition.ShardingConditions;
import org.apache.shardingsphere.sharding.route.engine.type.standard.ShardingStandardRoutingEngine;
@@ -52,7 +52,7 @@ public final class ShardingInsertStatementValidator extends ShardingDMLStatement
@Override
public void preValidate(final ShardingRule shardingRule, final SQLStatementContext<InsertStatement> sqlStatementContext,
- final List<Object> parameters, final ShardingSphereSchema schema) {
+ final List<Object> parameters, final ShardingSphereMetaData metaData) {
if (null == ((InsertStatementContext) sqlStatementContext).getInsertSelectContext()) {
validateMultipleTable(shardingRule, sqlStatementContext);
}
@@ -83,7 +83,7 @@ public final class ShardingInsertStatementValidator extends ShardingDMLStatement
@Override
public void postValidate(final ShardingRule shardingRule, final SQLStatementContext<InsertStatement> sqlStatementContext, final List<Object> parameters,
- final ShardingSphereSchema schema, final ConfigurationProperties props, final RouteContext routeContext) {
+ final ShardingSphereMetaData metaData, final ConfigurationProperties props, final RouteContext routeContext) {
Optional<SubquerySegment> insertSelect = sqlStatementContext.getSqlStatement().getInsertSelect();
if (insertSelect.isPresent() && shardingConditions.isNeedMerge()) {
boolean singleRoutingOrSameShardingCondition = routeContext.isSingleRouting() || shardingConditions.isSameShardingCondition();
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/impl/ShardingSelectStatementValidator.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/impl/ShardingSelectStatementValidator.java
index 4c61d9d8901..afee6f9102f 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/impl/ShardingSelectStatementValidator.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/impl/ShardingSelectStatementValidator.java
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.sharding.route.engine.validator.dml.impl;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
-import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.sharding.route.engine.validator.dml.ShardingDMLStatementValidator;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
@@ -36,11 +36,11 @@ public final class ShardingSelectStatementValidator extends ShardingDMLStatement
@Override
public void preValidate(final ShardingRule shardingRule, final SQLStatementContext<SelectStatement> sqlStatementContext,
- final List<Object> parameters, final ShardingSphereSchema schema) {
+ final List<Object> parameters, final ShardingSphereMetaData metaData) {
}
@Override
public void postValidate(final ShardingRule shardingRule, final SQLStatementContext<SelectStatement> sqlStatementContext, final List<Object> parameters,
- final ShardingSphereSchema schema, final ConfigurationProperties props, final RouteContext routeContext) {
+ final ShardingSphereMetaData metaData, final ConfigurationProperties props, final RouteContext routeContext) {
}
}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/impl/ShardingUpdateStatementValidator.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/impl/ShardingUpdateStatementValidator.java
index 2bf868a6600..56a0ab89fb2 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/impl/ShardingUpdateStatementValidator.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/impl/ShardingUpdateStatementValidator.java
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.sharding.route.engine.validator.dml.impl;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
-import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.sharding.route.engine.condition.ShardingConditions;
import org.apache.shardingsphere.sharding.route.engine.type.standard.ShardingStandardRoutingEngine;
@@ -39,13 +39,13 @@ public final class ShardingUpdateStatementValidator extends ShardingDMLStatement
@Override
public void preValidate(final ShardingRule shardingRule, final SQLStatementContext<UpdateStatement> sqlStatementContext,
- final List<Object> parameters, final ShardingSphereSchema schema) {
+ final List<Object> parameters, final ShardingSphereMetaData metaData) {
validateMultipleTable(shardingRule, sqlStatementContext);
}
@Override
public void postValidate(final ShardingRule shardingRule, final SQLStatementContext<UpdateStatement> sqlStatementContext, final List<Object> parameters,
- final ShardingSphereSchema schema, final ConfigurationProperties props, final RouteContext routeContext) {
+ final ShardingSphereMetaData metaData, final ConfigurationProperties props, final RouteContext routeContext) {
String tableName = sqlStatementContext.getTablesContext().getTableNames().iterator().next();
Optional<ShardingConditions> shardingConditions = createShardingConditions(sqlStatementContext, shardingRule,
sqlStatementContext.getSqlStatement().getSetAssignment().getAssignments(), parameters);
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/merge/ShardingResultMergerEngineTest.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/merge/ShardingResultMergerEngineTest.java
index d74f7a1fa09..eb967addefa 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/merge/ShardingResultMergerEngineTest.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/merge/ShardingResultMergerEngineTest.java
@@ -114,7 +114,7 @@ public final class ShardingResultMergerEngineTest {
private InsertStatementContext createInsertStatementContext(final InsertStatement insertStatement) {
ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class);
- when(metaData.getDefaultSchema()).thenReturn(mock(ShardingSphereSchema.class));
+ when(metaData.getSchemaByName(DefaultSchema.LOGIC_NAME)).thenReturn(mock(ShardingSphereSchema.class));
Map<String, ShardingSphereMetaData> metaDataMap = Collections.singletonMap(DefaultSchema.LOGIC_NAME, metaData);
return new InsertStatementContext(metaDataMap, Collections.emptyList(), insertStatement, DefaultSchema.LOGIC_NAME);
}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/standard/AbstractSQLRouteTest.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/standard/AbstractSQLRouteTest.java
index a3b5217a1d1..15610926f4e 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/standard/AbstractSQLRouteTest.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/standard/AbstractSQLRouteTest.java
@@ -65,7 +65,7 @@ public abstract class AbstractSQLRouteTest extends AbstractRoutingEngineTest {
ShardingSphereRuleMetaData ruleMetaData = new ShardingSphereRuleMetaData(Collections.emptyList(), Arrays.asList(shardingRule, singleTableRule));
ShardingSphereResource resource = mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS);
when(resource.getDatabaseType()).thenReturn(new MySQLDatabaseType());
- ShardingSphereMetaData metaData = new ShardingSphereMetaData("sharding_db", resource, ruleMetaData, schemas);
+ ShardingSphereMetaData metaData = new ShardingSphereMetaData(DefaultSchema.LOGIC_NAME, resource, ruleMetaData, schemas);
Map<String, ShardingSphereMetaData> metaDataMap = Collections.singletonMap(DefaultSchema.LOGIC_NAME, metaData);
SQLStatementContext<?> sqlStatementContext = SQLStatementContextFactory.newInstance(metaDataMap, parameters, sqlStatementParserEngine.parse(sql, false), DefaultSchema.LOGIC_NAME);
LogicSQL logicSQL = new LogicSQL(sqlStatementContext, sql, parameters);
@@ -85,6 +85,6 @@ public abstract class AbstractSQLRouteTest extends AbstractRoutingEngineTest {
tableMetaDataMap.put("t_other", new TableMetaData("t_other", Collections.singletonList(
new ColumnMetaData("order_id", Types.INTEGER, true, false, false)), Collections.emptyList(), Collections.emptyList()));
tableMetaDataMap.put("t_category", new TableMetaData("t_category", Collections.emptyList(), Collections.emptyList(), Collections.emptyList()));
- return Collections.singletonMap("sharding_db", new ShardingSphereSchema(tableMetaDataMap));
+ return Collections.singletonMap(DefaultSchema.LOGIC_NAME, new ShardingSphereSchema(tableMetaDataMap));
}
}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingAlterIndexStatementValidatorTest.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingAlterIndexStatementValidatorTest.java
index 20d0d6ce16f..fc6881ddb3c 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingAlterIndexStatementValidatorTest.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingAlterIndexStatementValidatorTest.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.sharding.route.engine.validator.ddl;
import org.apache.shardingsphere.infra.binder.statement.ddl.AlterIndexStatementContext;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
-import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.IndexMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.TableMetaData;
import org.apache.shardingsphere.sharding.route.engine.validator.ddl.impl.ShardingAlterIndexStatementValidator;
@@ -29,6 +29,7 @@ import org.apache.shardingsphere.sql.parser.sql.common.value.identifier.Identifi
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.postgresql.ddl.PostgreSQLAlterIndexStatement;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.Answers;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
@@ -45,8 +46,8 @@ public final class ShardingAlterIndexStatementValidatorTest {
@Mock
private ShardingRule shardingRule;
- @Mock
- private ShardingSphereSchema schema;
+ @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+ private ShardingSphereMetaData metaData;
@Test
public void assertPreValidateAlterIndexWhenIndexExistRenameIndexNotExistForPostgreSQL() {
@@ -56,11 +57,11 @@ public final class ShardingAlterIndexStatementValidatorTest {
TableMetaData tableMetaData = mock(TableMetaData.class);
Map<String, IndexMetaData> indexes = mock(HashMap.class);
when(tableMetaData.getIndexes()).thenReturn(indexes);
- when(schema.getAllTableNames()).thenReturn(Collections.singletonList("t_order"));
- when(schema.get("t_order")).thenReturn(tableMetaData);
+ when(metaData.getDefaultSchema().getAllTableNames()).thenReturn(Collections.singletonList("t_order"));
+ when(metaData.getDefaultSchema().get("t_order")).thenReturn(tableMetaData);
when(indexes.containsKey("t_order_index")).thenReturn(true);
when(indexes.containsKey("t_order_index_new")).thenReturn(false);
- new ShardingAlterIndexStatementValidator().preValidate(shardingRule, new AlterIndexStatementContext(sqlStatement), Collections.emptyList(), schema);
+ new ShardingAlterIndexStatementValidator().preValidate(shardingRule, new AlterIndexStatementContext(sqlStatement), Collections.emptyList(), metaData);
}
@Test(expected = ShardingSphereException.class)
@@ -71,10 +72,10 @@ public final class ShardingAlterIndexStatementValidatorTest {
TableMetaData tableMetaData = mock(TableMetaData.class);
Map<String, IndexMetaData> indexes = mock(HashMap.class);
when(tableMetaData.getIndexes()).thenReturn(indexes);
- when(schema.getAllTableNames()).thenReturn(Collections.singletonList("t_order"));
- when(schema.get("t_order")).thenReturn(tableMetaData);
+ when(metaData.getDefaultSchema().getAllTableNames()).thenReturn(Collections.singletonList("t_order"));
+ when(metaData.getDefaultSchema().get("t_order")).thenReturn(tableMetaData);
when(indexes.containsKey("t_order_index")).thenReturn(false);
- new ShardingAlterIndexStatementValidator().preValidate(shardingRule, new AlterIndexStatementContext(sqlStatement), Collections.emptyList(), schema);
+ new ShardingAlterIndexStatementValidator().preValidate(shardingRule, new AlterIndexStatementContext(sqlStatement), Collections.emptyList(), metaData);
}
@Test(expected = ShardingSphereException.class)
@@ -85,10 +86,10 @@ public final class ShardingAlterIndexStatementValidatorTest {
TableMetaData tableMetaData = mock(TableMetaData.class);
Map<String, IndexMetaData> indexes = mock(HashMap.class);
when(tableMetaData.getIndexes()).thenReturn(indexes);
- when(schema.getAllTableNames()).thenReturn(Collections.singletonList("t_order"));
- when(schema.get("t_order")).thenReturn(tableMetaData);
+ when(metaData.getDefaultSchema().getAllTableNames()).thenReturn(Collections.singletonList("t_order"));
+ when(metaData.getDefaultSchema().get("t_order")).thenReturn(tableMetaData);
when(indexes.containsKey("t_order_index")).thenReturn(true);
when(indexes.containsKey("t_order_index_new")).thenReturn(true);
- new ShardingAlterIndexStatementValidator().preValidate(shardingRule, new AlterIndexStatementContext(sqlStatement), Collections.emptyList(), schema);
+ new ShardingAlterIndexStatementValidator().preValidate(shardingRule, new AlterIndexStatementContext(sqlStatement), Collections.emptyList(), metaData);
}
}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingAlterTableStatementValidatorTest.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingAlterTableStatementValidatorTest.java
index 4e423daa51d..d9004821cb8 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingAlterTableStatementValidatorTest.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingAlterTableStatementValidatorTest.java
@@ -21,7 +21,7 @@ import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.binder.statement.ddl.AlterTableStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
-import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.infra.route.context.RouteMapper;
import org.apache.shardingsphere.infra.route.context.RouteUnit;
@@ -35,6 +35,7 @@ import org.apache.shardingsphere.sql.parser.sql.common.value.identifier.Identifi
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.postgresql.ddl.PostgreSQLAlterTableStatement;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.Answers;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
@@ -52,8 +53,8 @@ public final class ShardingAlterTableStatementValidatorTest {
@Mock
private ShardingRule shardingRule;
- @Mock
- private ShardingSphereSchema schema;
+ @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+ private ShardingSphereMetaData metaData;
@Mock
private RouteContext routeContext;
@@ -65,7 +66,7 @@ public final class ShardingAlterTableStatementValidatorTest {
sqlStatement.setRenameTable(new SimpleTableSegment(new TableNameSegment(0, 0, new IdentifierValue("t_order_new"))));
SQLStatementContext<AlterTableStatement> sqlStatementContext = new AlterTableStatementContext(sqlStatement);
when(shardingRule.tableRuleExists(Arrays.asList("t_order", "t_order_new"))).thenReturn(true);
- new ShardingAlterTableStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), schema);
+ new ShardingAlterTableStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), metaData);
}
@Test(expected = ShardingSphereException.class)
@@ -76,7 +77,7 @@ public final class ShardingAlterTableStatementValidatorTest {
SQLStatementContext<AlterTableStatement> sqlStatementContext = new AlterTableStatementContext(sqlStatement);
when(shardingRule.tableRuleExists(Arrays.asList("t_order", "t_order_new"))).thenReturn(false);
when(shardingRule.isBroadcastTable("t_order")).thenReturn(true);
- new ShardingAlterTableStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), schema);
+ new ShardingAlterTableStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), metaData);
}
@Test
@@ -90,7 +91,7 @@ public final class ShardingAlterTableStatementValidatorTest {
routeUnits.add(new RouteUnit(new RouteMapper("ds_1", "ds_1"), Collections.singletonList(new RouteMapper("t_order", "t_order_0"))));
when(routeContext.getRouteUnits()).thenReturn(routeUnits);
new ShardingAlterTableStatementValidator().postValidate(shardingRule, new AlterTableStatementContext(sqlStatement),
- Collections.emptyList(), schema, mock(ConfigurationProperties.class), routeContext);
+ Collections.emptyList(), metaData, mock(ConfigurationProperties.class), routeContext);
}
@Test(expected = ShardingSphereException.class)
@@ -103,7 +104,7 @@ public final class ShardingAlterTableStatementValidatorTest {
routeUnits.add(new RouteUnit(new RouteMapper("ds_0", "ds_0"), Collections.singletonList(new RouteMapper("t_order", "t_order_0"))));
when(routeContext.getRouteUnits()).thenReturn(routeUnits);
new ShardingAlterTableStatementValidator().postValidate(shardingRule, new AlterTableStatementContext(sqlStatement),
- Collections.emptyList(), schema, mock(ConfigurationProperties.class), routeContext);
+ Collections.emptyList(), metaData, mock(ConfigurationProperties.class), routeContext);
}
@Test
@@ -117,7 +118,7 @@ public final class ShardingAlterTableStatementValidatorTest {
routeUnits.add(new RouteUnit(new RouteMapper("ds_1", "ds_1"), Collections.singletonList(new RouteMapper("t_config", "t_config"))));
when(routeContext.getRouteUnits()).thenReturn(routeUnits);
new ShardingAlterTableStatementValidator().postValidate(shardingRule, new AlterTableStatementContext(sqlStatement),
- Collections.emptyList(), schema, mock(ConfigurationProperties.class), routeContext);
+ Collections.emptyList(), metaData, mock(ConfigurationProperties.class), routeContext);
}
@Test(expected = ShardingSphereException.class)
@@ -130,6 +131,6 @@ public final class ShardingAlterTableStatementValidatorTest {
routeUnits.add(new RouteUnit(new RouteMapper("ds_0", "ds_0"), Collections.singletonList(new RouteMapper("t_config", "t_config"))));
when(routeContext.getRouteUnits()).thenReturn(routeUnits);
new ShardingAlterTableStatementValidator().postValidate(shardingRule, new AlterTableStatementContext(sqlStatement),
- Collections.emptyList(), schema, mock(ConfigurationProperties.class), routeContext);
+ Collections.emptyList(), metaData, mock(ConfigurationProperties.class), routeContext);
}
}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingAlterViewStatementValidatorTest.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingAlterViewStatementValidatorTest.java
index ba6cb09fa8a..96a0cbc3738 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingAlterViewStatementValidatorTest.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingAlterViewStatementValidatorTest.java
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.sharding.route.engine.validator.ddl;
import org.apache.shardingsphere.infra.binder.statement.CommonSQLStatementContext;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
-import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.sharding.route.engine.validator.ddl.impl.ShardingAlterViewStatementValidator;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
@@ -52,9 +52,9 @@ public final class ShardingAlterViewStatementValidatorTest {
MySQLAlterViewStatement sqlStatement = new MySQLAlterViewStatement();
sqlStatement.setSelect(selectStatement);
SQLStatementContext<AlterViewStatement> sqlStatementContext = new CommonSQLStatementContext<>(sqlStatement);
- ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
+ ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class);
when(shardingRule.isShardingTable("t_order")).thenReturn(false);
- new ShardingAlterViewStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), schema);
+ new ShardingAlterViewStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), metaData);
}
@Test(expected = ShardingSphereException.class)
@@ -63,9 +63,9 @@ public final class ShardingAlterViewStatementValidatorTest {
selectStatement.setFrom(new SimpleTableSegment(new TableNameSegment(0, 0, new IdentifierValue("t_order"))));
MySQLAlterViewStatement sqlStatement = new MySQLAlterViewStatement();
sqlStatement.setSelect(selectStatement);
- ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
+ ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class);
SQLStatementContext<AlterViewStatement> sqlStatementContext = new CommonSQLStatementContext<>(sqlStatement);
when(shardingRule.isShardingTable("t_order")).thenReturn(true);
- new ShardingAlterViewStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), schema);
+ new ShardingAlterViewStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), metaData);
}
}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingCreateFunctionStatementValidatorTest.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingCreateFunctionStatementValidatorTest.java
index 73568b7909e..b26e6bcce24 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingCreateFunctionStatementValidatorTest.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingCreateFunctionStatementValidatorTest.java
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.sharding.route.engine.validator.ddl;
import org.apache.shardingsphere.infra.binder.statement.CommonSQLStatementContext;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
-import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.sharding.route.engine.exception.NoSuchTableException;
import org.apache.shardingsphere.sharding.route.engine.exception.TableExistsException;
import org.apache.shardingsphere.sharding.route.engine.validator.ddl.impl.ShardingCreateFunctionStatementValidator;
@@ -67,9 +67,9 @@ public final class ShardingCreateFunctionStatementValidatorTest {
MySQLCreateFunctionStatement sqlStatement = new MySQLCreateFunctionStatement();
sqlStatement.setRoutineBody(routineBody);
SQLStatementContext<CreateFunctionStatement> sqlStatementContext = new CommonSQLStatementContext<>(sqlStatement);
- ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
- when(schema.containsTable("t_order_item")).thenReturn(true);
- new ShardingCreateFunctionStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), schema);
+ ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class, RETURNS_DEEP_STUBS);
+ when(metaData.getDefaultSchema().containsTable("t_order_item")).thenReturn(true);
+ new ShardingCreateFunctionStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), metaData);
}
@Test(expected = ShardingSphereException.class)
@@ -83,7 +83,7 @@ public final class ShardingCreateFunctionStatementValidatorTest {
MySQLCreateFunctionStatement sqlStatement = new MySQLCreateFunctionStatement();
sqlStatement.setRoutineBody(routineBody);
SQLStatementContext<CreateFunctionStatement> sqlStatementContext = new CommonSQLStatementContext<>(sqlStatement);
- new ShardingCreateFunctionStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereSchema.class, RETURNS_DEEP_STUBS));
+ new ShardingCreateFunctionStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereMetaData.class, RETURNS_DEEP_STUBS));
}
@Test(expected = NoSuchTableException.class)
@@ -97,7 +97,7 @@ public final class ShardingCreateFunctionStatementValidatorTest {
MySQLCreateFunctionStatement sqlStatement = new MySQLCreateFunctionStatement();
sqlStatement.setRoutineBody(routineBody);
SQLStatementContext<CreateFunctionStatement> sqlStatementContext = new CommonSQLStatementContext<>(sqlStatement);
- new ShardingCreateFunctionStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereSchema.class, RETURNS_DEEP_STUBS));
+ new ShardingCreateFunctionStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereMetaData.class, RETURNS_DEEP_STUBS));
}
@Test(expected = TableExistsException.class)
@@ -111,8 +111,8 @@ public final class ShardingCreateFunctionStatementValidatorTest {
MySQLCreateFunctionStatement sqlStatement = new MySQLCreateFunctionStatement();
sqlStatement.setRoutineBody(routineBody);
SQLStatementContext<CreateFunctionStatement> sqlStatementContext = new CommonSQLStatementContext<>(sqlStatement);
- ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
- when(schema.containsTable("t_order")).thenReturn(true);
- new ShardingCreateFunctionStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), schema);
+ ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class, RETURNS_DEEP_STUBS);
+ when(metaData.getDefaultSchema().containsTable("t_order")).thenReturn(true);
+ new ShardingCreateFunctionStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), metaData);
}
}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingCreateIndexStatementValidatorTest.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingCreateIndexStatementValidatorTest.java
index 1352ffed15f..c3ab6caa2f7 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingCreateIndexStatementValidatorTest.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingCreateIndexStatementValidatorTest.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.sharding.route.engine.validator.ddl;
import org.apache.shardingsphere.infra.binder.statement.ddl.CreateIndexStatementContext;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
-import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.IndexMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.TableMetaData;
import org.apache.shardingsphere.sharding.route.engine.exception.NoSuchTableException;
@@ -33,6 +33,7 @@ import org.apache.shardingsphere.sql.parser.sql.common.value.identifier.Identifi
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.postgresql.ddl.PostgreSQLCreateIndexStatement;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.Answers;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
@@ -49,21 +50,21 @@ public final class ShardingCreateIndexStatementValidatorTest {
@Mock
private ShardingRule shardingRule;
- @Mock
- private ShardingSphereSchema schema;
+ @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+ private ShardingSphereMetaData metaData;
@Test
public void assertPreValidateCreateIndexWhenTableExistIndexNotExistForPostgreSQL() {
PostgreSQLCreateIndexStatement sqlStatement = new PostgreSQLCreateIndexStatement();
sqlStatement.setTable(new SimpleTableSegment(new TableNameSegment(0, 0, new IdentifierValue("t_order"))));
sqlStatement.setIndex(new IndexSegment(0, 0, new IdentifierValue("t_order_index")));
- when(schema.containsTable("t_order")).thenReturn(true);
+ when(metaData.getDefaultSchema().containsTable("t_order")).thenReturn(true);
TableMetaData tableMetaData = mock(TableMetaData.class);
- when(schema.get("t_order")).thenReturn(tableMetaData);
+ when(metaData.getDefaultSchema().get("t_order")).thenReturn(tableMetaData);
Map<String, IndexMetaData> indexes = mock(HashMap.class);
when(tableMetaData.getIndexes()).thenReturn(indexes);
when(indexes.containsKey("t_order_index")).thenReturn(false);
- new ShardingCreateIndexStatementValidator().preValidate(shardingRule, new CreateIndexStatementContext(sqlStatement), Collections.emptyList(), schema);
+ new ShardingCreateIndexStatementValidator().preValidate(shardingRule, new CreateIndexStatementContext(sqlStatement), Collections.emptyList(), metaData);
}
@Test(expected = NoSuchTableException.class)
@@ -71,8 +72,8 @@ public final class ShardingCreateIndexStatementValidatorTest {
PostgreSQLCreateIndexStatement sqlStatement = new PostgreSQLCreateIndexStatement();
sqlStatement.setTable(new SimpleTableSegment(new TableNameSegment(0, 0, new IdentifierValue("t_order"))));
sqlStatement.setIndex(new IndexSegment(0, 0, new IdentifierValue("t_order_index")));
- when(schema.containsTable("t_order")).thenReturn(false);
- new ShardingCreateIndexStatementValidator().preValidate(shardingRule, new CreateIndexStatementContext(sqlStatement), Collections.emptyList(), schema);
+ when(metaData.getDefaultSchema().containsTable("t_order")).thenReturn(false);
+ new ShardingCreateIndexStatementValidator().preValidate(shardingRule, new CreateIndexStatementContext(sqlStatement), Collections.emptyList(), metaData);
}
@Test(expected = ShardingSphereException.class)
@@ -80,13 +81,13 @@ public final class ShardingCreateIndexStatementValidatorTest {
PostgreSQLCreateIndexStatement sqlStatement = new PostgreSQLCreateIndexStatement();
sqlStatement.setTable(new SimpleTableSegment(new TableNameSegment(0, 0, new IdentifierValue("t_order"))));
sqlStatement.setIndex(new IndexSegment(0, 0, new IdentifierValue("t_order_index")));
- when(schema.containsTable("t_order")).thenReturn(true);
+ when(metaData.getDefaultSchema().containsTable("t_order")).thenReturn(true);
TableMetaData tableMetaData = mock(TableMetaData.class);
- when(schema.get("t_order")).thenReturn(tableMetaData);
+ when(metaData.getDefaultSchema().get("t_order")).thenReturn(tableMetaData);
Map<String, IndexMetaData> indexes = mock(HashMap.class);
when(tableMetaData.getIndexes()).thenReturn(indexes);
when(indexes.containsKey("t_order_index")).thenReturn(true);
- new ShardingCreateIndexStatementValidator().preValidate(shardingRule, new CreateIndexStatementContext(sqlStatement), Collections.emptyList(), schema);
+ new ShardingCreateIndexStatementValidator().preValidate(shardingRule, new CreateIndexStatementContext(sqlStatement), Collections.emptyList(), metaData);
}
@Test
@@ -95,12 +96,12 @@ public final class ShardingCreateIndexStatementValidatorTest {
sqlStatement.setTable(new SimpleTableSegment(new TableNameSegment(0, 0, new IdentifierValue("t_order"))));
sqlStatement.setColumns(Collections.singletonList(new ColumnSegment(0, 0, new IdentifierValue("content"))));
sqlStatement.setGeneratedIndexStartIndex(10);
- when(schema.containsTable("t_order")).thenReturn(true);
+ when(metaData.getDefaultSchema().containsTable("t_order")).thenReturn(true);
TableMetaData tableMetaData = mock(TableMetaData.class);
- when(schema.get("t_order")).thenReturn(tableMetaData);
+ when(metaData.getDefaultSchema().get("t_order")).thenReturn(tableMetaData);
Map<String, IndexMetaData> indexes = mock(HashMap.class);
when(tableMetaData.getIndexes()).thenReturn(indexes);
- new ShardingCreateIndexStatementValidator().preValidate(shardingRule, new CreateIndexStatementContext(sqlStatement), Collections.emptyList(), schema);
+ new ShardingCreateIndexStatementValidator().preValidate(shardingRule, new CreateIndexStatementContext(sqlStatement), Collections.emptyList(), metaData);
}
@Test(expected = NoSuchTableException.class)
@@ -109,8 +110,8 @@ public final class ShardingCreateIndexStatementValidatorTest {
sqlStatement.setTable(new SimpleTableSegment(new TableNameSegment(0, 0, new IdentifierValue("t_order"))));
sqlStatement.setColumns(Collections.singletonList(new ColumnSegment(0, 0, new IdentifierValue("content"))));
sqlStatement.setGeneratedIndexStartIndex(10);
- when(schema.containsTable("t_order")).thenReturn(false);
- new ShardingCreateIndexStatementValidator().preValidate(shardingRule, new CreateIndexStatementContext(sqlStatement), Collections.emptyList(), schema);
+ when(metaData.getDefaultSchema().containsTable("t_order")).thenReturn(false);
+ new ShardingCreateIndexStatementValidator().preValidate(shardingRule, new CreateIndexStatementContext(sqlStatement), Collections.emptyList(), metaData);
}
@Test(expected = ShardingSphereException.class)
@@ -119,12 +120,12 @@ public final class ShardingCreateIndexStatementValidatorTest {
sqlStatement.setTable(new SimpleTableSegment(new TableNameSegment(0, 0, new IdentifierValue("t_order"))));
sqlStatement.setColumns(Collections.singletonList(new ColumnSegment(0, 0, new IdentifierValue("content"))));
sqlStatement.setGeneratedIndexStartIndex(10);
- when(schema.containsTable("t_order")).thenReturn(true);
+ when(metaData.getDefaultSchema().containsTable("t_order")).thenReturn(true);
TableMetaData tableMetaData = mock(TableMetaData.class);
- when(schema.get("t_order")).thenReturn(tableMetaData);
+ when(metaData.getDefaultSchema().get("t_order")).thenReturn(tableMetaData);
Map<String, IndexMetaData> indexes = mock(HashMap.class);
when(tableMetaData.getIndexes()).thenReturn(indexes);
when(indexes.containsKey("content_idx")).thenReturn(true);
- new ShardingCreateIndexStatementValidator().preValidate(shardingRule, new CreateIndexStatementContext(sqlStatement), Collections.emptyList(), schema);
+ new ShardingCreateIndexStatementValidator().preValidate(shardingRule, new CreateIndexStatementContext(sqlStatement), Collections.emptyList(), metaData);
}
}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingCreateProcedureStatementValidatorTest.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingCreateProcedureStatementValidatorTest.java
index eb2a498fb1f..a72796eb493 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingCreateProcedureStatementValidatorTest.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingCreateProcedureStatementValidatorTest.java
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.sharding.route.engine.validator.ddl;
import org.apache.shardingsphere.infra.binder.statement.CommonSQLStatementContext;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
-import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.sharding.route.engine.exception.NoSuchTableException;
import org.apache.shardingsphere.sharding.route.engine.exception.TableExistsException;
import org.apache.shardingsphere.sharding.route.engine.validator.ddl.impl.ShardingCreateProcedureStatementValidator;
@@ -67,10 +67,10 @@ public final class ShardingCreateProcedureStatementValidatorTest {
MySQLCreateProcedureStatement sqlStatement = new MySQLCreateProcedureStatement();
sqlStatement.setRoutineBody(routineBody);
SQLStatementContext<CreateProcedureStatement> sqlStatementContext = new CommonSQLStatementContext<>(sqlStatement);
- ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
- when(schema.containsTable("t_order_item")).thenReturn(true);
+ ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class, RETURNS_DEEP_STUBS);
+ when(metaData.getDefaultSchema().containsTable("t_order_item")).thenReturn(true);
when(shardingRule.isShardingTable("t_order_item")).thenReturn(false);
- new ShardingCreateProcedureStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), schema);
+ new ShardingCreateProcedureStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), metaData);
}
@Test(expected = ShardingSphereException.class)
@@ -84,7 +84,7 @@ public final class ShardingCreateProcedureStatementValidatorTest {
MySQLCreateProcedureStatement sqlStatement = new MySQLCreateProcedureStatement();
sqlStatement.setRoutineBody(routineBody);
SQLStatementContext<CreateProcedureStatement> sqlStatementContext = new CommonSQLStatementContext<>(sqlStatement);
- new ShardingCreateProcedureStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereSchema.class, RETURNS_DEEP_STUBS));
+ new ShardingCreateProcedureStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereMetaData.class, RETURNS_DEEP_STUBS));
}
@Test(expected = NoSuchTableException.class)
@@ -98,7 +98,7 @@ public final class ShardingCreateProcedureStatementValidatorTest {
MySQLCreateProcedureStatement sqlStatement = new MySQLCreateProcedureStatement();
sqlStatement.setRoutineBody(routineBody);
SQLStatementContext<CreateProcedureStatement> sqlStatementContext = new CommonSQLStatementContext<>(sqlStatement);
- new ShardingCreateProcedureStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereSchema.class, RETURNS_DEEP_STUBS));
+ new ShardingCreateProcedureStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereMetaData.class, RETURNS_DEEP_STUBS));
}
@Test(expected = TableExistsException.class)
@@ -112,8 +112,8 @@ public final class ShardingCreateProcedureStatementValidatorTest {
MySQLCreateProcedureStatement sqlStatement = new MySQLCreateProcedureStatement();
sqlStatement.setRoutineBody(routineBody);
SQLStatementContext<CreateProcedureStatement> sqlStatementContext = new CommonSQLStatementContext<>(sqlStatement);
- ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
- when(schema.containsTable("t_order")).thenReturn(true);
- new ShardingCreateProcedureStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), schema);
+ ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class, RETURNS_DEEP_STUBS);
+ when(metaData.getDefaultSchema().containsTable("t_order")).thenReturn(true);
+ new ShardingCreateProcedureStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), metaData);
}
}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingCreateTableStatementValidatorTest.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingCreateTableStatementValidatorTest.java
index db55c4657cb..ec6cc7f96a2 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingCreateTableStatementValidatorTest.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingCreateTableStatementValidatorTest.java
@@ -21,7 +21,7 @@ import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.binder.statement.ddl.CreateTableStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
-import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.infra.route.context.RouteMapper;
import org.apache.shardingsphere.infra.route.context.RouteUnit;
@@ -40,6 +40,7 @@ import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sql92.ddl.SQL9
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerCreateTableStatement;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.Answers;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
@@ -48,6 +49,7 @@ import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
+import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -57,8 +59,8 @@ public final class ShardingCreateTableStatementValidatorTest {
@Mock
private ShardingRule shardingRule;
- @Mock
- private ShardingSphereSchema schema;
+ @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+ private ShardingSphereMetaData metaData;
@Mock
private RouteContext routeContext;
@@ -68,14 +70,14 @@ public final class ShardingCreateTableStatementValidatorTest {
MySQLCreateTableStatement sqlStatement = new MySQLCreateTableStatement();
sqlStatement.setTable(new SimpleTableSegment(new TableNameSegment(1, 2, new IdentifierValue("t_order"))));
sqlStatement.setContainsNotExistClause(false);
- assertPreValidateCreateTable(sqlStatement);
+ assertPreValidateCreateTable(sqlStatement, "sharding_db");
}
@Test(expected = TableExistsException.class)
public void assertPreValidateCreateTableForOracle() {
OracleCreateTableStatement sqlStatement = new OracleCreateTableStatement();
sqlStatement.setTable(new SimpleTableSegment(new TableNameSegment(1, 2, new IdentifierValue("t_order"))));
- assertPreValidateCreateTable(sqlStatement);
+ assertPreValidateCreateTable(sqlStatement, "sharding_db");
}
@Test(expected = TableExistsException.class)
@@ -83,28 +85,29 @@ public final class ShardingCreateTableStatementValidatorTest {
PostgreSQLCreateTableStatement sqlStatement = new PostgreSQLCreateTableStatement();
sqlStatement.setTable(new SimpleTableSegment(new TableNameSegment(1, 2, new IdentifierValue("t_order"))));
sqlStatement.setContainsNotExistClause(false);
- assertPreValidateCreateTable(sqlStatement);
+ assertPreValidateCreateTable(sqlStatement, "public");
}
@Test(expected = TableExistsException.class)
public void assertPreValidateCreateTableForSQL92() {
SQL92CreateTableStatement sqlStatement = new SQL92CreateTableStatement();
sqlStatement.setTable(new SimpleTableSegment(new TableNameSegment(1, 2, new IdentifierValue("t_order"))));
- assertPreValidateCreateTable(sqlStatement);
+ assertPreValidateCreateTable(sqlStatement, "sharding_db");
}
@Test(expected = TableExistsException.class)
public void assertPreValidateCreateTableForSQLServer() {
SQLServerCreateTableStatement sqlStatement = new SQLServerCreateTableStatement();
sqlStatement.setTable(new SimpleTableSegment(new TableNameSegment(1, 2, new IdentifierValue("t_order"))));
- assertPreValidateCreateTable(sqlStatement);
+ assertPreValidateCreateTable(sqlStatement, "sharding_db");
}
- private void assertPreValidateCreateTable(final CreateTableStatement sqlStatement) {
+ private void assertPreValidateCreateTable(final CreateTableStatement sqlStatement, final String schemaName) {
SQLStatementContext<CreateTableStatement> sqlStatementContext = new CreateTableStatementContext(sqlStatement);
- ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
- when(schema.containsTable("t_order")).thenReturn(true);
- new ShardingCreateTableStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), schema);
+ ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class, RETURNS_DEEP_STUBS);
+ when(metaData.getDatabaseName()).thenReturn("sharding_db");
+ when(metaData.getSchemaByName(schemaName).containsTable("t_order")).thenReturn(true);
+ new ShardingCreateTableStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), metaData);
}
@Test
@@ -125,8 +128,8 @@ public final class ShardingCreateTableStatementValidatorTest {
private void assertPreValidateCreateTableIfNotExists(final CreateTableStatement sqlStatement) {
SQLStatementContext<CreateTableStatement> sqlStatementContext = new CreateTableStatementContext(sqlStatement);
- ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
- new ShardingCreateTableStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), schema);
+ ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class);
+ new ShardingCreateTableStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), metaData);
}
@Test
@@ -139,8 +142,8 @@ public final class ShardingCreateTableStatementValidatorTest {
routeUnits.add(new RouteUnit(new RouteMapper("ds_0", "ds_0"), Collections.singletonList(new RouteMapper("t_order", "t_order_0"))));
routeUnits.add(new RouteUnit(new RouteMapper("ds_1", "ds_1"), Collections.singletonList(new RouteMapper("t_order", "t_order_0"))));
when(routeContext.getRouteUnits()).thenReturn(routeUnits);
- new ShardingCreateTableStatementValidator().postValidate(shardingRule, new CreateTableStatementContext(sqlStatement), Collections.emptyList(),
- schema, mock(ConfigurationProperties.class), routeContext);
+ new ShardingCreateTableStatementValidator().postValidate(shardingRule,
+ new CreateTableStatementContext(sqlStatement), Collections.emptyList(), metaData, mock(ConfigurationProperties.class), routeContext);
}
@Test(expected = ShardingSphereException.class)
@@ -152,8 +155,8 @@ public final class ShardingCreateTableStatementValidatorTest {
Collection<RouteUnit> routeUnits = new LinkedList<>();
routeUnits.add(new RouteUnit(new RouteMapper("ds_0", "ds_0"), Collections.singletonList(new RouteMapper("t_order", "t_order_0"))));
when(routeContext.getRouteUnits()).thenReturn(routeUnits);
- new ShardingCreateTableStatementValidator().postValidate(shardingRule, new CreateTableStatementContext(sqlStatement), Collections.emptyList(),
- schema, mock(ConfigurationProperties.class), routeContext);
+ new ShardingCreateTableStatementValidator().postValidate(shardingRule,
+ new CreateTableStatementContext(sqlStatement), Collections.emptyList(), metaData, mock(ConfigurationProperties.class), routeContext);
}
@Test
@@ -166,8 +169,8 @@ public final class ShardingCreateTableStatementValidatorTest {
routeUnits.add(new RouteUnit(new RouteMapper("ds_0", "ds_0"), Collections.singletonList(new RouteMapper("t_config", "t_config"))));
routeUnits.add(new RouteUnit(new RouteMapper("ds_1", "ds_1"), Collections.singletonList(new RouteMapper("t_config", "t_config"))));
when(routeContext.getRouteUnits()).thenReturn(routeUnits);
- new ShardingCreateTableStatementValidator().postValidate(shardingRule, new CreateTableStatementContext(sqlStatement), Collections.emptyList(),
- schema, mock(ConfigurationProperties.class), routeContext);
+ new ShardingCreateTableStatementValidator().postValidate(shardingRule,
+ new CreateTableStatementContext(sqlStatement), Collections.emptyList(), metaData, mock(ConfigurationProperties.class), routeContext);
}
@Test(expected = ShardingSphereException.class)
@@ -179,7 +182,7 @@ public final class ShardingCreateTableStatementValidatorTest {
Collection<RouteUnit> routeUnits = new LinkedList<>();
routeUnits.add(new RouteUnit(new RouteMapper("ds_0", "ds_0"), Collections.singletonList(new RouteMapper("t_config", "t_config"))));
when(routeContext.getRouteUnits()).thenReturn(routeUnits);
- new ShardingCreateTableStatementValidator().postValidate(shardingRule, new CreateTableStatementContext(sqlStatement), Collections.emptyList(),
- schema, mock(ConfigurationProperties.class), routeContext);
+ new ShardingCreateTableStatementValidator().postValidate(shardingRule,
+ new CreateTableStatementContext(sqlStatement), Collections.emptyList(), metaData, mock(ConfigurationProperties.class), routeContext);
}
}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingCreateViewStatementValidatorTest.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingCreateViewStatementValidatorTest.java
index aa8534fdd16..5dbc01be48d 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingCreateViewStatementValidatorTest.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingCreateViewStatementValidatorTest.java
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.sharding.route.engine.validator.ddl;
import org.apache.shardingsphere.infra.binder.statement.CommonSQLStatementContext;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
-import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.sharding.route.engine.validator.ddl.impl.ShardingCreateViewStatementValidator;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
@@ -53,7 +53,7 @@ public final class ShardingCreateViewStatementValidatorTest {
sqlStatement.setSelect(selectStatement);
SQLStatementContext<CreateViewStatement> sqlStatementContext = new CommonSQLStatementContext<>(sqlStatement);
when(shardingRule.isShardingTable("t_order")).thenReturn(false);
- new ShardingCreateViewStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereSchema.class));
+ new ShardingCreateViewStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereMetaData.class));
}
@Test(expected = ShardingSphereException.class)
@@ -62,9 +62,9 @@ public final class ShardingCreateViewStatementValidatorTest {
selectStatement.setFrom(new SimpleTableSegment(new TableNameSegment(0, 0, new IdentifierValue("t_order"))));
MySQLCreateViewStatement sqlStatement = new MySQLCreateViewStatement();
sqlStatement.setSelect(selectStatement);
- ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
+ ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class);
SQLStatementContext<CreateViewStatement> sqlStatementContext = new CommonSQLStatementContext<>(sqlStatement);
when(shardingRule.isShardingTable("t_order")).thenReturn(true);
- new ShardingCreateViewStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), schema);
+ new ShardingCreateViewStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), metaData);
}
}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingDropIndexStatementValidatorTest.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingDropIndexStatementValidatorTest.java
index 8327a602fba..0337a26a373 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingDropIndexStatementValidatorTest.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingDropIndexStatementValidatorTest.java
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.sharding.route.engine.validator.ddl;
import org.apache.shardingsphere.infra.binder.statement.ddl.DropIndexStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
-import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.IndexMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.TableMetaData;
import org.apache.shardingsphere.infra.route.context.RouteContext;
@@ -34,6 +34,7 @@ import org.apache.shardingsphere.sql.parser.sql.common.value.identifier.Identifi
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.postgresql.ddl.PostgreSQLDropIndexStatement;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.Answers;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
@@ -53,8 +54,8 @@ public final class ShardingDropIndexStatementValidatorTest {
@Mock
private ShardingRule shardingRule;
- @Mock
- private ShardingSphereSchema schema;
+ @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+ private ShardingSphereMetaData metaData;
@Mock
private RouteContext routeContext;
@@ -67,11 +68,11 @@ public final class ShardingDropIndexStatementValidatorTest {
TableMetaData tableMetaData = mock(TableMetaData.class);
Map<String, IndexMetaData> indexes = mock(HashMap.class);
when(tableMetaData.getIndexes()).thenReturn(indexes);
- when(schema.getAllTableNames()).thenReturn(Collections.singletonList("t_order"));
- when(schema.get("t_order")).thenReturn(tableMetaData);
+ when(metaData.getDefaultSchema().getAllTableNames()).thenReturn(Collections.singletonList("t_order"));
+ when(metaData.getDefaultSchema().get("t_order")).thenReturn(tableMetaData);
when(indexes.containsKey("t_order_index")).thenReturn(true);
when(indexes.containsKey("t_order_index_new")).thenReturn(true);
- new ShardingDropIndexStatementValidator().preValidate(shardingRule, new DropIndexStatementContext(sqlStatement), Collections.emptyList(), schema);
+ new ShardingDropIndexStatementValidator().preValidate(shardingRule, new DropIndexStatementContext(sqlStatement), Collections.emptyList(), metaData);
}
@Test(expected = ShardingSphereException.class)
@@ -82,10 +83,10 @@ public final class ShardingDropIndexStatementValidatorTest {
TableMetaData tableMetaData = mock(TableMetaData.class);
Map<String, IndexMetaData> indexes = mock(HashMap.class);
when(tableMetaData.getIndexes()).thenReturn(indexes);
- when(schema.getAllTableNames()).thenReturn(Collections.singletonList("t_order"));
- when(schema.get("t_order")).thenReturn(tableMetaData);
+ when(metaData.getDefaultSchema().getAllTableNames()).thenReturn(Collections.singletonList("t_order"));
+ when(metaData.getDefaultSchema().get("t_order")).thenReturn(tableMetaData);
when(indexes.containsKey("t_order_index")).thenReturn(false);
- new ShardingDropIndexStatementValidator().preValidate(shardingRule, new DropIndexStatementContext(sqlStatement), Collections.emptyList(), schema);
+ new ShardingDropIndexStatementValidator().preValidate(shardingRule, new DropIndexStatementContext(sqlStatement), Collections.emptyList(), metaData);
}
@Test
@@ -96,8 +97,8 @@ public final class ShardingDropIndexStatementValidatorTest {
TableMetaData tableMetaData = mock(TableMetaData.class);
Map<String, IndexMetaData> indexes = mock(HashMap.class);
when(tableMetaData.getIndexes()).thenReturn(indexes);
- when(schema.getAllTableNames()).thenReturn(Collections.singletonList("t_order"));
- when(schema.get("t_order")).thenReturn(tableMetaData);
+ when(metaData.getDefaultSchema().getAllTableNames()).thenReturn(Collections.singletonList("t_order"));
+ when(metaData.getDefaultSchema().get("t_order")).thenReturn(tableMetaData);
when(indexes.containsKey("t_order_index")).thenReturn(true);
when(shardingRule.isShardingTable("t_order")).thenReturn(true);
when(shardingRule.getTableRule("t_order")).thenReturn(new TableRule(Arrays.asList("ds_0", "ds_1"), "t_order"));
@@ -106,7 +107,7 @@ public final class ShardingDropIndexStatementValidatorTest {
routeUnits.add(new RouteUnit(new RouteMapper("ds_1", "ds_1"), Collections.singletonList(new RouteMapper("t_order", "t_order_0"))));
when(routeContext.getRouteUnits()).thenReturn(routeUnits);
new ShardingDropIndexStatementValidator().postValidate(shardingRule, new DropIndexStatementContext(sqlStatement),
- Collections.emptyList(), schema, mock(ConfigurationProperties.class), routeContext);
+ Collections.emptyList(), metaData, mock(ConfigurationProperties.class), routeContext);
}
@Test(expected = ShardingSphereException.class)
@@ -117,8 +118,8 @@ public final class ShardingDropIndexStatementValidatorTest {
TableMetaData tableMetaData = mock(TableMetaData.class);
Map<String, IndexMetaData> indexes = mock(HashMap.class);
when(tableMetaData.getIndexes()).thenReturn(indexes);
- when(schema.getAllTableNames()).thenReturn(Collections.singletonList("t_order"));
- when(schema.get("t_order")).thenReturn(tableMetaData);
+ when(metaData.getDefaultSchema().getAllTableNames()).thenReturn(Collections.singletonList("t_order"));
+ when(metaData.getDefaultSchema().get("t_order")).thenReturn(tableMetaData);
when(indexes.containsKey("t_order_index")).thenReturn(true);
when(shardingRule.isShardingTable("t_order")).thenReturn(true);
when(shardingRule.getTableRule("t_order")).thenReturn(new TableRule(Arrays.asList("ds_0", "ds_1"), "t_order"));
@@ -126,7 +127,7 @@ public final class ShardingDropIndexStatementValidatorTest {
routeUnits.add(new RouteUnit(new RouteMapper("ds_0", "ds_0"), Collections.singletonList(new RouteMapper("t_order", "t_order_0"))));
when(routeContext.getRouteUnits()).thenReturn(routeUnits);
new ShardingDropIndexStatementValidator().postValidate(shardingRule, new DropIndexStatementContext(sqlStatement),
- Collections.emptyList(), schema, mock(ConfigurationProperties.class), routeContext);
+ Collections.emptyList(), metaData, mock(ConfigurationProperties.class), routeContext);
}
@Test
@@ -137,8 +138,8 @@ public final class ShardingDropIndexStatementValidatorTest {
TableMetaData tableMetaData = mock(TableMetaData.class);
Map<String, IndexMetaData> indexes = mock(HashMap.class);
when(tableMetaData.getIndexes()).thenReturn(indexes);
- when(schema.getAllTableNames()).thenReturn(Collections.singletonList("t_config"));
- when(schema.get("t_config")).thenReturn(tableMetaData);
+ when(metaData.getDefaultSchema().getAllTableNames()).thenReturn(Collections.singletonList("t_config"));
+ when(metaData.getDefaultSchema().get("t_config")).thenReturn(tableMetaData);
when(indexes.containsKey("t_config_index")).thenReturn(true);
when(shardingRule.isBroadcastTable("t_config")).thenReturn(true);
when(shardingRule.getTableRule("t_config")).thenReturn(new TableRule(Arrays.asList("ds_0", "ds_1"), "t_config"));
@@ -147,7 +148,7 @@ public final class ShardingDropIndexStatementValidatorTest {
routeUnits.add(new RouteUnit(new RouteMapper("ds_1", "ds_1"), Collections.singletonList(new RouteMapper("t_config", "t_config"))));
when(routeContext.getRouteUnits()).thenReturn(routeUnits);
new ShardingDropIndexStatementValidator().postValidate(shardingRule, new DropIndexStatementContext(sqlStatement),
- Collections.emptyList(), schema, mock(ConfigurationProperties.class), routeContext);
+ Collections.emptyList(), metaData, mock(ConfigurationProperties.class), routeContext);
}
@Test(expected = ShardingSphereException.class)
@@ -158,8 +159,8 @@ public final class ShardingDropIndexStatementValidatorTest {
TableMetaData tableMetaData = mock(TableMetaData.class);
Map<String, IndexMetaData> indexes = mock(HashMap.class);
when(tableMetaData.getIndexes()).thenReturn(indexes);
- when(schema.getAllTableNames()).thenReturn(Collections.singletonList("t_config"));
- when(schema.get("t_config")).thenReturn(tableMetaData);
+ when(metaData.getDefaultSchema().getAllTableNames()).thenReturn(Collections.singletonList("t_config"));
+ when(metaData.getDefaultSchema().get("t_config")).thenReturn(tableMetaData);
when(indexes.containsKey("t_config_index")).thenReturn(true);
when(shardingRule.isBroadcastTable("t_config")).thenReturn(true);
when(shardingRule.getTableRule("t_config")).thenReturn(new TableRule(Arrays.asList("ds_0", "ds_1"), "t_config"));
@@ -167,6 +168,6 @@ public final class ShardingDropIndexStatementValidatorTest {
routeUnits.add(new RouteUnit(new RouteMapper("ds_0", "ds_0"), Collections.singletonList(new RouteMapper("t_config", "t_config"))));
when(routeContext.getRouteUnits()).thenReturn(routeUnits);
new ShardingDropIndexStatementValidator().postValidate(shardingRule, new DropIndexStatementContext(sqlStatement),
- Collections.emptyList(), schema, mock(ConfigurationProperties.class), routeContext);
+ Collections.emptyList(), metaData, mock(ConfigurationProperties.class), routeContext);
}
}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingDropTableStatementValidatorTest.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingDropTableStatementValidatorTest.java
index 9e60fc49230..45fe3741d57 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingDropTableStatementValidatorTest.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingDropTableStatementValidatorTest.java
@@ -23,7 +23,7 @@ import org.apache.shardingsphere.infra.binder.statement.ddl.DropTableStatementCo
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.datanode.DataNode;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
-import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.infra.route.context.RouteMapper;
import org.apache.shardingsphere.infra.route.context.RouteUnit;
@@ -76,9 +76,9 @@ public final class ShardingDropTableStatementValidatorTest {
MySQLDropTableStatement sqlStatement = new MySQLDropTableStatement();
sqlStatement.getTables().add(new SimpleTableSegment(new TableNameSegment(0, 0, new IdentifierValue("t_order_item"))));
SQLStatementContext<DropTableStatement> sqlStatementContext = new CommonSQLStatementContext<>(sqlStatement);
- ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
+ ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class);
ShardingDropTableStatementValidator validator = new ShardingDropTableStatementValidator();
- validator.preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), schema);
+ validator.preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), metaData);
Collection<RouteUnit> routeUnits = new LinkedList<>();
RouteMapper dataSourceMapper = new RouteMapper("db", "db1");
Collection<RouteMapper> tableMapper = new LinkedList<>();
@@ -88,7 +88,7 @@ public final class ShardingDropTableStatementValidatorTest {
routeUnits.add(routeUnit);
RouteContext routeContext = mock(RouteContext.class);
when(routeContext.getRouteUnits()).thenReturn(routeUnits);
- validator.postValidate(shardingRule, new DropTableStatementContext(sqlStatement), Collections.emptyList(), schema, mock(ConfigurationProperties.class), routeContext);
+ validator.postValidate(shardingRule, new DropTableStatementContext(sqlStatement), Collections.emptyList(), metaData, mock(ConfigurationProperties.class), routeContext);
}
private TableRule generateShardingRule(final String tableName) {
@@ -121,7 +121,7 @@ public final class ShardingDropTableStatementValidatorTest {
routeUnits.add(new RouteUnit(new RouteMapper("ds_1", "ds_1"), Collections.singletonList(new RouteMapper("t_order", "t_order_0"))));
when(routeContext.getRouteUnits()).thenReturn(routeUnits);
new ShardingDropTableStatementValidator().postValidate(shardingRule, new DropTableStatementContext(sqlStatement),
- Collections.emptyList(), mock(ShardingSphereSchema.class), mock(ConfigurationProperties.class), routeContext);
+ Collections.emptyList(), mock(ShardingSphereMetaData.class), mock(ConfigurationProperties.class), routeContext);
}
@Test(expected = ShardingSphereException.class)
@@ -134,7 +134,7 @@ public final class ShardingDropTableStatementValidatorTest {
routeUnits.add(new RouteUnit(new RouteMapper("ds_0", "ds_0"), Collections.singletonList(new RouteMapper("t_order", "t_order_0"))));
when(routeContext.getRouteUnits()).thenReturn(routeUnits);
new ShardingDropTableStatementValidator().postValidate(shardingRule, new DropTableStatementContext(sqlStatement),
- Collections.emptyList(), mock(ShardingSphereSchema.class), mock(ConfigurationProperties.class), routeContext);
+ Collections.emptyList(), mock(ShardingSphereMetaData.class), mock(ConfigurationProperties.class), routeContext);
}
@Test
@@ -148,7 +148,7 @@ public final class ShardingDropTableStatementValidatorTest {
routeUnits.add(new RouteUnit(new RouteMapper("ds_1", "ds_1"), Collections.singletonList(new RouteMapper("t_config", "t_config"))));
when(routeContext.getRouteUnits()).thenReturn(routeUnits);
new ShardingDropTableStatementValidator().postValidate(shardingRule, new DropTableStatementContext(sqlStatement),
- Collections.emptyList(), mock(ShardingSphereSchema.class), mock(ConfigurationProperties.class), routeContext);
+ Collections.emptyList(), mock(ShardingSphereMetaData.class), mock(ConfigurationProperties.class), routeContext);
}
@Test(expected = ShardingSphereException.class)
@@ -161,6 +161,6 @@ public final class ShardingDropTableStatementValidatorTest {
routeUnits.add(new RouteUnit(new RouteMapper("ds_0", "ds_0"), Collections.singletonList(new RouteMapper("t_config", "t_config"))));
when(routeContext.getRouteUnits()).thenReturn(routeUnits);
new ShardingDropTableStatementValidator().postValidate(shardingRule, new DropTableStatementContext(sqlStatement),
- Collections.emptyList(), mock(ShardingSphereSchema.class), mock(ConfigurationProperties.class), routeContext);
+ Collections.emptyList(), mock(ShardingSphereMetaData.class), mock(ConfigurationProperties.class), routeContext);
}
}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingPrepareStatementValidatorTest.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingPrepareStatementValidatorTest.java
index 4289d502c07..d7234fecf9f 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingPrepareStatementValidatorTest.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingPrepareStatementValidatorTest.java
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.sharding.route.engine.validator.ddl;
import org.apache.shardingsphere.infra.binder.statement.ddl.PrepareStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
-import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.infra.route.context.RouteMapper;
import org.apache.shardingsphere.infra.route.context.RouteUnit;
@@ -48,7 +48,7 @@ public final class ShardingPrepareStatementValidatorTest {
private ShardingRule shardingRule;
@Mock
- private ShardingSphereSchema schema;
+ private ShardingSphereMetaData metaData;
@Mock
private RouteContext routeContext;
@@ -58,7 +58,7 @@ public final class ShardingPrepareStatementValidatorTest {
PrepareStatement sqlStatement = new PostgreSQLPrepareStatement();
when(routeContext.getRouteUnits()).thenReturn(Collections.emptyList());
new ShardingPrepareStatementValidator().postValidate(shardingRule, new PrepareStatementContext(sqlStatement),
- Collections.emptyList(), schema, mock(ConfigurationProperties.class), routeContext);
+ Collections.emptyList(), metaData, mock(ConfigurationProperties.class), routeContext);
}
@Test
@@ -69,7 +69,7 @@ public final class ShardingPrepareStatementValidatorTest {
Arrays.asList(new RouteMapper("t_order", "t_order_0"), new RouteMapper("t_order_item", "t_order_item_0"))));
when(routeContext.getRouteUnits()).thenReturn(routeUnits);
new ShardingPrepareStatementValidator().postValidate(shardingRule, new PrepareStatementContext(sqlStatement),
- Collections.emptyList(), schema, mock(ConfigurationProperties.class), routeContext);
+ Collections.emptyList(), metaData, mock(ConfigurationProperties.class), routeContext);
}
@Test(expected = ShardingSphereException.class)
@@ -82,6 +82,6 @@ public final class ShardingPrepareStatementValidatorTest {
when(routeContext.getRouteUnits()).thenReturn(routeUnits);
PrepareStatement sqlStatement = new PostgreSQLPrepareStatement();
new ShardingPrepareStatementValidator().postValidate(shardingRule, new PrepareStatementContext(sqlStatement),
- Collections.emptyList(), schema, mock(ConfigurationProperties.class), routeContext);
+ Collections.emptyList(), metaData, mock(ConfigurationProperties.class), routeContext);
}
}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingRenameTableStatementValidatorTest.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingRenameTableStatementValidatorTest.java
index c0bddf41bef..307b0e00209 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingRenameTableStatementValidatorTest.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingRenameTableStatementValidatorTest.java
@@ -22,7 +22,7 @@ import org.apache.shardingsphere.infra.binder.statement.ddl.RenameTableStatement
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.datanode.DataNode;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
-import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.infra.route.context.RouteUnit;
import org.apache.shardingsphere.sharding.route.engine.validator.ddl.impl.ShardingRenameTableStatementValidator;
@@ -56,24 +56,24 @@ public final class ShardingRenameTableStatementValidatorTest {
@Test(expected = ShardingSphereException.class)
public void assertPreValidateShardingTable() {
SQLStatementContext<RenameTableStatement> sqlStatementContext = createRenameTableStatementContext("t_order", "t_user_order");
- ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
+ ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class);
when(shardingRule.tableRuleExists(argThat(tableNames -> tableNames.contains("t_order") || tableNames.contains("t_user_order")))).thenReturn(true);
- new ShardingRenameTableStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), schema);
+ new ShardingRenameTableStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), metaData);
}
@Test(expected = ShardingSphereException.class)
public void assertPreValidateBroadcastTable() {
SQLStatementContext<RenameTableStatement> sqlStatementContext = createRenameTableStatementContext("t_order", "t_user_order");
- ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
+ ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class);
when(shardingRule.isBroadcastTable(eq("t_order"))).thenReturn(true);
- new ShardingRenameTableStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), schema);
+ new ShardingRenameTableStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), metaData);
}
@Test
public void assertPreValidateNormalCase() {
SQLStatementContext<RenameTableStatement> sqlStatementContext = createRenameTableStatementContext("t_not_sharding_table", "t_not_sharding_table_new");
- ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
- new ShardingRenameTableStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), schema);
+ ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class);
+ new ShardingRenameTableStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), metaData);
}
@Test(expected = ShardingSphereException.class)
@@ -85,9 +85,9 @@ public final class ShardingRenameTableStatementValidatorTest {
when(shardingRule.getTableRule("t_order")).thenReturn(tableRule);
when(shardingRule.isShardingTable("t_order")).thenReturn(true);
SQLStatementContext<RenameTableStatement> sqlStatementContext = createRenameTableStatementContext("t_order", "t_user_order");
- ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
+ ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class);
ConfigurationProperties props = mock(ConfigurationProperties.class);
- new ShardingRenameTableStatementValidator().postValidate(shardingRule, sqlStatementContext, Collections.emptyList(), schema, props, routeContext);
+ new ShardingRenameTableStatementValidator().postValidate(shardingRule, sqlStatementContext, Collections.emptyList(), metaData, props, routeContext);
}
@Test
@@ -99,9 +99,9 @@ public final class ShardingRenameTableStatementValidatorTest {
when(shardingRule.getTableRule("t_order")).thenReturn(tableRule);
when(shardingRule.isShardingTable("t_order")).thenReturn(true);
SQLStatementContext<RenameTableStatement> sqlStatementContext = createRenameTableStatementContext("t_order", "t_user_order");
- ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
+ ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class);
ConfigurationProperties props = mock(ConfigurationProperties.class);
- new ShardingRenameTableStatementValidator().postValidate(shardingRule, sqlStatementContext, Collections.emptyList(), schema, props, routeContext);
+ new ShardingRenameTableStatementValidator().postValidate(shardingRule, sqlStatementContext, Collections.emptyList(), metaData, props, routeContext);
}
private SQLStatementContext<RenameTableStatement> createRenameTableStatementContext(final String originTableName, final String newTableName) {
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/ShardingDeleteStatementValidatorTest.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/ShardingDeleteStatementValidatorTest.java
index 1b6bade3868..d85b892187f 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/ShardingDeleteStatementValidatorTest.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/ShardingDeleteStatementValidatorTest.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.sharding.route.engine.validator.dml;
import org.apache.shardingsphere.infra.binder.statement.dml.DeleteStatementContext;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
-import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.sharding.route.engine.validator.dml.impl.ShardingDeleteStatementValidator;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.DeleteMultiTableSegment;
@@ -86,6 +86,6 @@ public final class ShardingDeleteStatementValidatorTest {
Collection<String> tableNames = new HashSet<>(Arrays.asList("user", "order", "order_item"));
when(shardingRule.isAllShardingTables(tableNames)).thenReturn(false);
when(shardingRule.tableRuleExists(tableNames)).thenReturn(true);
- new ShardingDeleteStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereSchema.class));
+ new ShardingDeleteStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereMetaData.class));
}
}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/ShardingInsertStatementValidatorTest.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/ShardingInsertStatementValidatorTest.java
index c60e8314f16..61ec273128a 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/ShardingInsertStatementValidatorTest.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/ShardingInsertStatementValidatorTest.java
@@ -88,12 +88,12 @@ public final class ShardingInsertStatementValidatorTest {
Collection<String> tableNames = sqlStatementContext.getTablesContext().getTableNames();
when(shardingRule.isAllShardingTables(tableNames)).thenReturn(false);
when(shardingRule.tableRuleExists(tableNames)).thenReturn(true);
- new ShardingInsertStatementValidator(shardingConditions).preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereSchema.class));
+ new ShardingInsertStatementValidator(shardingConditions).preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereMetaData.class));
}
private InsertStatementContext createInsertStatementContext(final List<Object> parameters, final InsertStatement insertStatement) {
ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class);
- when(metaData.getDefaultSchema()).thenReturn(mock(ShardingSphereSchema.class));
+ when(metaData.getSchemaByName(DefaultSchema.LOGIC_NAME)).thenReturn(mock(ShardingSphereSchema.class));
return new InsertStatementContext(Collections.singletonMap(DefaultSchema.LOGIC_NAME, metaData), parameters, insertStatement, DefaultSchema.LOGIC_NAME);
}
@@ -103,7 +103,7 @@ public final class ShardingInsertStatementValidatorTest {
when(shardingRule.isGenerateKeyColumn("id", "user")).thenReturn(false);
SQLStatementContext<InsertStatement> sqlStatementContext = createInsertStatementContext(Collections.singletonList(1), createInsertSelectStatement());
sqlStatementContext.getTablesContext().getTableNames().addAll(createSingleTablesContext().getTableNames());
- new ShardingInsertStatementValidator(shardingConditions).preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereSchema.class));
+ new ShardingInsertStatementValidator(shardingConditions).preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereMetaData.class));
}
@Test
@@ -112,7 +112,7 @@ public final class ShardingInsertStatementValidatorTest {
when(shardingRule.isGenerateKeyColumn("id", "user")).thenReturn(true);
SQLStatementContext<InsertStatement> sqlStatementContext = createInsertStatementContext(Collections.singletonList(1), createInsertSelectStatement());
sqlStatementContext.getTablesContext().getTableNames().addAll(createSingleTablesContext().getTableNames());
- new ShardingInsertStatementValidator(shardingConditions).preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereSchema.class));
+ new ShardingInsertStatementValidator(shardingConditions).preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereMetaData.class));
}
@Test(expected = ShardingSphereException.class)
@@ -124,7 +124,7 @@ public final class ShardingInsertStatementValidatorTest {
when(shardingRule.tableRuleExists(multiTablesContext.getTableNames())).thenReturn(true);
SQLStatementContext<InsertStatement> sqlStatementContext = createInsertStatementContext(Collections.singletonList(1), createInsertSelectStatement());
sqlStatementContext.getTablesContext().getTableNames().addAll(multiTablesContext.getTableNames());
- new ShardingInsertStatementValidator(shardingConditions).preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereSchema.class));
+ new ShardingInsertStatementValidator(shardingConditions).preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereMetaData.class));
}
@Test
@@ -134,7 +134,7 @@ public final class ShardingInsertStatementValidatorTest {
TablesContext multiTablesContext = createMultiTablesContext();
SQLStatementContext<InsertStatement> sqlStatementContext = createInsertStatementContext(Collections.singletonList(1), createInsertSelectStatement());
sqlStatementContext.getTablesContext().getTableNames().addAll(multiTablesContext.getTableNames());
- new ShardingInsertStatementValidator(shardingConditions).preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereSchema.class));
+ new ShardingInsertStatementValidator(shardingConditions).preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereMetaData.class));
}
@Test
@@ -142,7 +142,7 @@ public final class ShardingInsertStatementValidatorTest {
SQLStatementContext<InsertStatement> sqlStatementContext = createInsertStatementContext(Collections.singletonList(1), createInsertStatement());
when(routeContext.isSingleRouting()).thenReturn(true);
new ShardingInsertStatementValidator(shardingConditions).postValidate(shardingRule, sqlStatementContext,
- Collections.emptyList(), mock(ShardingSphereSchema.class), mock(ConfigurationProperties.class), routeContext);
+ Collections.emptyList(), mock(ShardingSphereMetaData.class), mock(ConfigurationProperties.class), routeContext);
}
@Test
@@ -151,7 +151,7 @@ public final class ShardingInsertStatementValidatorTest {
when(routeContext.isSingleRouting()).thenReturn(false);
when(shardingRule.isBroadcastTable(sqlStatementContext.getSqlStatement().getTable().getTableName().getIdentifier().getValue())).thenReturn(true);
new ShardingInsertStatementValidator(shardingConditions).postValidate(shardingRule, sqlStatementContext,
- Collections.emptyList(), mock(ShardingSphereSchema.class), mock(ConfigurationProperties.class), routeContext);
+ Collections.emptyList(), mock(ShardingSphereMetaData.class), mock(ConfigurationProperties.class), routeContext);
}
@Test
@@ -161,7 +161,7 @@ public final class ShardingInsertStatementValidatorTest {
when(shardingRule.isBroadcastTable(sqlStatementContext.getSqlStatement().getTable().getTableName().getIdentifier().getValue())).thenReturn(false);
when(routeContext.getOriginalDataNodes()).thenReturn(getSingleRouteDataNodes());
new ShardingInsertStatementValidator(shardingConditions).postValidate(shardingRule, sqlStatementContext,
- Collections.emptyList(), mock(ShardingSphereSchema.class), mock(ConfigurationProperties.class), routeContext);
+ Collections.emptyList(), mock(ShardingSphereMetaData.class), mock(ConfigurationProperties.class), routeContext);
}
@Test(expected = IllegalStateException.class)
@@ -171,7 +171,7 @@ public final class ShardingInsertStatementValidatorTest {
when(shardingRule.isBroadcastTable(sqlStatementContext.getSqlStatement().getTable().getTableName().getIdentifier().getValue())).thenReturn(false);
when(routeContext.getOriginalDataNodes()).thenReturn(getMultipleRouteDataNodes());
new ShardingInsertStatementValidator(shardingConditions).postValidate(shardingRule, sqlStatementContext,
- Collections.emptyList(), mock(ShardingSphereSchema.class), mock(ConfigurationProperties.class), routeContext);
+ Collections.emptyList(), mock(ShardingSphereMetaData.class), mock(ConfigurationProperties.class), routeContext);
}
@Test
@@ -181,7 +181,7 @@ public final class ShardingInsertStatementValidatorTest {
when(routeContext.isSingleRouting()).thenReturn(true);
InsertStatementContext insertStatementContext = createInsertStatementContext(parameters, createInsertStatement());
new ShardingInsertStatementValidator(mock(ShardingConditions.class)).postValidate(shardingRule,
- insertStatementContext, parameters, mock(ShardingSphereSchema.class), mock(ConfigurationProperties.class), routeContext);
+ insertStatementContext, parameters, mock(ShardingSphereMetaData.class), mock(ConfigurationProperties.class), routeContext);
}
@Test
@@ -190,7 +190,7 @@ public final class ShardingInsertStatementValidatorTest {
List<Object> parameters = Collections.singletonList(1);
InsertStatementContext insertStatementContext = createInsertStatementContext(parameters, createInsertStatement());
new ShardingInsertStatementValidator(mock(ShardingConditions.class)).postValidate(shardingRule,
- insertStatementContext, parameters, mock(ShardingSphereSchema.class), mock(ConfigurationProperties.class), createSingleRouteContext());
+ insertStatementContext, parameters, mock(ShardingSphereMetaData.class), mock(ConfigurationProperties.class), createSingleRouteContext());
}
@Test(expected = ShardingSphereException.class)
@@ -199,7 +199,7 @@ public final class ShardingInsertStatementValidatorTest {
List<Object> parameters = Collections.singletonList(1);
InsertStatementContext insertStatementContext = createInsertStatementContext(parameters, createInsertStatement());
new ShardingInsertStatementValidator(mock(ShardingConditions.class)).postValidate(shardingRule,
- insertStatementContext, parameters, mock(ShardingSphereSchema.class), mock(ConfigurationProperties.class), createFullRouteContext());
+ insertStatementContext, parameters, mock(ShardingSphereMetaData.class), mock(ConfigurationProperties.class), createFullRouteContext());
}
private void mockShardingRuleForUpdateShardingColumn() {
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/ShardingUpdateStatementValidatorTest.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/ShardingUpdateStatementValidatorTest.java
index 502cca1e124..c497b8bf7dd 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/ShardingUpdateStatementValidatorTest.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/dml/ShardingUpdateStatementValidatorTest.java
@@ -21,7 +21,7 @@ import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.binder.statement.dml.UpdateStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
-import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.infra.route.context.RouteMapper;
import org.apache.shardingsphere.infra.route.context.RouteUnit;
@@ -74,7 +74,7 @@ public final class ShardingUpdateStatementValidatorTest {
Collection<String> tableNames = sqlStatementContext.getTablesContext().getTableNames();
when(shardingRule.isAllShardingTables(tableNames)).thenReturn(true);
when(shardingRule.tableRuleExists(tableNames)).thenReturn(true);
- new ShardingUpdateStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereSchema.class));
+ new ShardingUpdateStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereMetaData.class));
}
@Test(expected = ShardingSphereException.class)
@@ -88,28 +88,28 @@ public final class ShardingUpdateStatementValidatorTest {
Collection<String> tableNames = sqlStatementContext.getTablesContext().getTableNames();
when(shardingRule.isAllShardingTables(tableNames)).thenReturn(false);
when(shardingRule.tableRuleExists(tableNames)).thenReturn(true);
- new ShardingUpdateStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereSchema.class));
+ new ShardingUpdateStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereMetaData.class));
}
@Test
public void assertPostValidateWhenNotUpdateShardingColumn() {
UpdateStatementContext sqlStatementContext = new UpdateStatementContext(createUpdateStatement());
new ShardingUpdateStatementValidator().postValidate(shardingRule, sqlStatementContext, Collections.emptyList(),
- mock(ShardingSphereSchema.class), mock(ConfigurationProperties.class), mock(RouteContext.class));
+ mock(ShardingSphereMetaData.class), mock(ConfigurationProperties.class), mock(RouteContext.class));
}
@Test
public void assertPostValidateWhenUpdateShardingColumnWithSameRouteContext() {
mockShardingRuleForUpdateShardingColumn();
new ShardingUpdateStatementValidator().postValidate(shardingRule, new UpdateStatementContext(createUpdateStatement()),
- Collections.emptyList(), mock(ShardingSphereSchema.class), mock(ConfigurationProperties.class), createSingleRouteContext());
+ Collections.emptyList(), mock(ShardingSphereMetaData.class), mock(ConfigurationProperties.class), createSingleRouteContext());
}
@Test(expected = ShardingSphereException.class)
public void assertPostValidateWhenUpdateShardingColumnWithDifferentRouteContext() {
mockShardingRuleForUpdateShardingColumn();
new ShardingUpdateStatementValidator().postValidate(shardingRule, new UpdateStatementContext(createUpdateStatement()),
- Collections.emptyList(), mock(ShardingSphereSchema.class), mock(ConfigurationProperties.class), createFullRouteContext());
+ Collections.emptyList(), mock(ShardingSphereMetaData.class), mock(ConfigurationProperties.class), createFullRouteContext());
}
private void mockShardingRuleForUpdateShardingColumn() {
diff --git a/shardingsphere-infra/shardingsphere-infra-binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/dml/InsertStatementContext.java b/shardingsphere-infra/shardingsphere-infra-binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/dml/InsertStatementContext.java
index 3404c657bdd..87c227f96ea 100644
--- a/shardingsphere-infra/shardingsphere-infra-binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/dml/InsertStatementContext.java
+++ b/shardingsphere-infra/shardingsphere-infra-binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/dml/InsertStatementContext.java
@@ -102,7 +102,8 @@ public final class InsertStatementContext extends CommonSQLStatementContext<Inse
if (null == metaData) {
throw new SchemaNotExistedException(databaseName);
}
- return metaData.getDefaultSchema();
+ String defaultSchema = getDatabaseType().getDefaultSchema(databaseName);
+ return tablesContext.getSchemaName().map(metaData::getSchemaByName).orElse(metaData.getSchemaByName(defaultSchema));
}
private Collection<SimpleTableSegment> getAllSimpleTableSegments() {
diff --git a/shardingsphere-infra/shardingsphere-infra-binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/dml/SelectStatementContext.java b/shardingsphere-infra/shardingsphere-infra-binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/dml/SelectStatementContext.java
index dac3dfbaaec..98c2213b0ec 100644
--- a/shardingsphere-infra/shardingsphere-infra-binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/dml/SelectStatementContext.java
+++ b/shardingsphere-infra/shardingsphere-infra-binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/dml/SelectStatementContext.java
@@ -39,8 +39,6 @@ import org.apache.shardingsphere.infra.binder.segment.table.TablesContext;
import org.apache.shardingsphere.infra.binder.statement.CommonSQLStatementContext;
import org.apache.shardingsphere.infra.binder.type.TableAvailable;
import org.apache.shardingsphere.infra.binder.type.WhereAvailable;
-import org.apache.shardingsphere.infra.database.type.dialect.OpenGaussDatabaseType;
-import org.apache.shardingsphere.infra.database.type.dialect.PostgreSQLDatabaseType;
import org.apache.shardingsphere.infra.exception.SchemaNotExistedException;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
@@ -140,10 +138,8 @@ public final class SelectStatementContext extends CommonSQLStatementContext<Sele
throw new SchemaNotExistedException(databaseName);
}
}
- // FIXME get postgresql/opengauss schemaName from search_path
- String defaultSchemaName = getDatabaseType() instanceof PostgreSQLDatabaseType || getDatabaseType() instanceof OpenGaussDatabaseType ? "public" : databaseName;
- String schemaName = tablesContext.getSchemaName().orElse(defaultSchemaName);
- return metaData.getSchemaByName(schemaName);
+ String defaultSchemaName = getDatabaseType().getDefaultSchema(databaseName);
+ return tablesContext.getSchemaName().map(metaData::getSchemaByName).orElse(metaData.getSchemaByName(defaultSchemaName));
}
/**
diff --git a/shardingsphere-infra/shardingsphere-infra-binder/src/test/java/org/apache/shardingsphere/infra/binder/statement/impl/InsertStatementContextTest.java b/shardingsphere-infra/shardingsphere-infra-binder/src/test/java/org/apache/shardingsphere/infra/binder/statement/impl/InsertStatementContextTest.java
index d5e7542e08b..717c753cff4 100644
--- a/shardingsphere-infra/shardingsphere-infra-binder/src/test/java/org/apache/shardingsphere/infra/binder/statement/impl/InsertStatementContextTest.java
+++ b/shardingsphere-infra/shardingsphere-infra-binder/src/test/java/org/apache/shardingsphere/infra/binder/statement/impl/InsertStatementContextTest.java
@@ -40,7 +40,9 @@ import org.apache.shardingsphere.sql.parser.sql.common.statement.dml.SelectState
import org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dml.MySQLInsertStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dml.MySQLSelectStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.opengauss.OpenGaussStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.dml.OracleInsertStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.postgresql.PostgreSQLStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.postgresql.dml.PostgreSQLInsertStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sql92.dml.SQL92InsertStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.dml.SQLServerInsertStatement;
@@ -103,7 +105,8 @@ public final class InsertStatementContextTest {
private InsertStatementContext createInsertStatementContext(final List<Object> parameters, final InsertStatement insertStatement) {
ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class);
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
- when(metaData.getDefaultSchema()).thenReturn(schema);
+ String defaultSchemaName = insertStatement instanceof PostgreSQLStatement || insertStatement instanceof OpenGaussStatement ? "public" : DefaultSchema.LOGIC_NAME;
+ when(metaData.getSchemaByName(defaultSchemaName)).thenReturn(schema);
when(schema.getAllColumnNames("tbl")).thenReturn(Arrays.asList("id", "name", "status"));
return new InsertStatementContext(Collections.singletonMap(DefaultSchema.LOGIC_NAME, metaData), parameters, insertStatement, DefaultSchema.LOGIC_NAME);
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/ProxySQLExecutorTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/ProxySQLExecutorTest.java
index 35eda5b1033..69be3467c04 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/ProxySQLExecutorTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/ProxySQLExecutorTest.java
@@ -20,6 +20,7 @@ package org.apache.shardingsphere.proxy.backend.communication;
import org.apache.shardingsphere.infra.binder.LogicSQL;
import org.apache.shardingsphere.infra.binder.statement.ddl.CreateTableStatementContext;
import org.apache.shardingsphere.infra.binder.statement.dml.InsertStatementContext;
+import org.apache.shardingsphere.infra.database.DefaultSchema;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionContext;
import org.apache.shardingsphere.infra.executor.sql.prepare.driver.jdbc.JDBCDriverType;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
@@ -139,8 +140,8 @@ public final class ProxySQLExecutorTest {
MySQLInsertStatement sqlStatement = new MySQLInsertStatement();
sqlStatement.setTable(new SimpleTableSegment(new TableNameSegment(0, 0, new IdentifierValue("t_order"))));
ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class);
- when(metaData.getDefaultSchema()).thenReturn(mock(ShardingSphereSchema.class));
- return new InsertStatementContext(Collections.singletonMap("logic_db", metaData), Collections.emptyList(), sqlStatement, "logic_db");
+ when(metaData.getSchemaByName(DefaultSchema.LOGIC_NAME)).thenReturn(mock(ShardingSphereSchema.class));
+ return new InsertStatementContext(Collections.singletonMap(DefaultSchema.LOGIC_NAME, metaData), Collections.emptyList(), sqlStatement, DefaultSchema.LOGIC_NAME);
}
private CreateTableStatementContext createPostgreSQLCreateTableStatementContext() {
@@ -153,7 +154,7 @@ public final class ProxySQLExecutorTest {
PostgreSQLInsertStatement sqlStatement = new PostgreSQLInsertStatement();
sqlStatement.setTable(new SimpleTableSegment(new TableNameSegment(0, 0, new IdentifierValue("t_order"))));
ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class);
- when(metaData.getDefaultSchema()).thenReturn(mock(ShardingSphereSchema.class));
- return new InsertStatementContext(Collections.singletonMap("logic_db", metaData), Collections.emptyList(), sqlStatement, "logic_db");
+ when(metaData.getSchemaByName("public")).thenReturn(mock(ShardingSphereSchema.class));
+ return new InsertStatementContext(Collections.singletonMap(DefaultSchema.LOGIC_NAME, metaData), Collections.emptyList(), sqlStatement, DefaultSchema.LOGIC_NAME);
}
}