You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2026/03/24 10:44:52 UTC
(shardingsphere) branch master updated: Refactor database and schema access with IdentifierValue (#38548)
This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 28a3f13cca3 Refactor database and schema access with IdentifierValue (#38548)
28a3f13cca3 is described below
commit 28a3f13cca3879537ec1fbd71589089c77c45f6a
Author: ZhangCheng <ch...@apache.org>
AuthorDate: Tue Mar 24 18:44:45 2026 +0800
Refactor database and schema access with IdentifierValue (#38548)
* Refactor database and schema access with IdentifierValue
* Refactor database and schema access with IdentifierValue
* Refactor database and schema access with IdentifierValue
* Fix
* Fix
---
.../mask/merge/dql/MaskMergedResult.java | 4 ++--
.../mask/merge/dql/MaskMergedResultTest.java | 2 ++
.../engine/WhereClauseShardingConditionEngine.java | 7 ++++---
.../WhereClauseShardingConditionEngineTest.java | 4 ++--
.../dml/from/type/SimpleTableSegmentBinder.java | 4 ++--
.../context/SQLStatementContextFactoryTest.java | 9 +++++++++
.../type/ddl/AlterViewStatementContextTest.java | 1 +
.../type/ddl/CreateViewStatementContextTest.java | 1 +
.../expression/type/SubquerySegmentBinderTest.java | 4 ++++
.../dml/from/type/JoinTableSegmentBinderTest.java | 4 ++++
.../from/type/SimpleTableSegmentBinderTest.java | 12 +++++++++++
.../from/type/SubqueryTableSegmentBinderTest.java | 4 ++++
.../dal/AnalyzeTableStatementBinderTest.java | 8 +++++---
.../statement/ddl/CommentStatementBinderTest.java | 15 ++++++++------
.../statement/ddl/PrepareStatementBinderTest.java | 8 +++++---
.../statement/dml/DeleteStatementBinderTest.java | 4 ++++
.../statement/dml/InsertStatementBinderTest.java | 4 ++++
.../statement/dml/SelectStatementBinderTest.java | 4 ++++
.../statement/dml/UpdateStatementBinderTest.java | 4 ++++
.../infra/metadata/ShardingSphereMetaData.java | 4 ++--
.../metadata/database/ShardingSphereDatabase.java | 4 ++--
.../single/route/SingleSQLRouterTest.java | 3 ++-
.../database/DatabaseMetaDataManagerTest.java | 2 +-
.../QualifiedDataSourceChangedHandlerTest.java | 6 +++---
.../DistSQLUpdateProxyBackendHandlerTest.java | 4 ++--
.../prepare/MySQLComStmtPrepareExecutorTest.java | 6 ++++--
.../query/MySQLComQueryPacketExecutorTest.java | 7 +++++--
...ySQLMultiStatementsProxyBackendHandlerTest.java | 23 +++++++++++++++-------
.../bind/OpenGaussComBatchBindExecutorTest.java | 12 ++++++++---
...egatedBatchedStatementsCommandExecutorTest.java | 11 +++++++++--
.../PostgreSQLBatchedStatementsExecutorTest.java | 10 ++++++++--
...greSQLPreparedStatementMetadataFactoryTest.java | 14 ++++++++-----
...PreparedStatementParameterTypeResolverTest.java | 14 ++++++++-----
.../bind/PostgreSQLComBindExecutorTest.java | 14 ++++++++-----
.../PostgreSQLComDescribeExecutorTest.java | 17 +++++++++++-----
.../parse/PostgreSQLComParseExecutorTest.java | 3 +++
36 files changed, 187 insertions(+), 70 deletions(-)
diff --git a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/merge/dql/MaskMergedResult.java b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/merge/dql/MaskMergedResult.java
index 41f273a70cb..22830e07589 100644
--- a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/merge/dql/MaskMergedResult.java
+++ b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/merge/dql/MaskMergedResult.java
@@ -56,8 +56,8 @@ public final class MaskMergedResult extends DecoratorMergedResult {
}
String originalTableName = columnSegmentBoundInfo.get().getOriginalTable().getValue();
String originalColumnName = columnSegmentBoundInfo.get().getOriginalColumn().getValue();
- ShardingSphereDatabase database = metaData.containsDatabase(columnSegmentBoundInfo.get().getOriginalDatabase().getValue())
- ? metaData.getDatabase(columnSegmentBoundInfo.get().getOriginalDatabase().getValue())
+ ShardingSphereDatabase database = metaData.containsDatabase(columnSegmentBoundInfo.get().getOriginalDatabase())
+ ? metaData.getDatabase(columnSegmentBoundInfo.get().getOriginalDatabase())
: this.database;
Optional<MaskRule> rule = database.getRuleMetaData().findSingleRule(MaskRule.class);
if (!rule.isPresent() || !rule.get().findMaskTable(originalTableName).map(optional -> optional.findAlgorithm(originalColumnName).isPresent()).orElse(false)) {
diff --git a/features/mask/core/src/test/java/org/apache/shardingsphere/mask/merge/dql/MaskMergedResultTest.java b/features/mask/core/src/test/java/org/apache/shardingsphere/mask/merge/dql/MaskMergedResultTest.java
index 61ef3fde20d..c0ab554c777 100644
--- a/features/mask/core/src/test/java/org/apache/shardingsphere/mask/merge/dql/MaskMergedResultTest.java
+++ b/features/mask/core/src/test/java/org/apache/shardingsphere/mask/merge/dql/MaskMergedResultTest.java
@@ -166,6 +166,8 @@ class MaskMergedResultTest {
ShardingSphereMetaData result = mock(ShardingSphereMetaData.class);
when(result.containsDatabase("foo_db")).thenReturn(true);
when(result.getDatabase("foo_db")).thenReturn(database);
+ when(result.containsDatabase(new IdentifierValue("foo_db"))).thenReturn(true);
+ when(result.getDatabase(new IdentifierValue("foo_db"))).thenReturn(database);
return result;
}
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/WhereClauseShardingConditionEngine.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/WhereClauseShardingConditionEngine.java
index 04a4203ff8c..81e2444cb49 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/WhereClauseShardingConditionEngine.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/WhereClauseShardingConditionEngine.java
@@ -46,6 +46,7 @@ import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.Expr
import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.predicate.AndPredicate;
import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.predicate.WhereSegment;
import org.apache.shardingsphere.sql.parser.statement.core.util.SafeNumberOperationUtils;
+import org.apache.shardingsphere.sql.parser.statement.core.value.identifier.IdentifierValue;
import org.apache.shardingsphere.timeservice.core.rule.TimestampServiceRule;
import java.util.ArrayList;
@@ -115,9 +116,9 @@ public final class WhereClauseShardingConditionEngine {
if (!shardingColumn.isPresent()) {
continue;
}
- String schemaName = columnSegment.getColumnBoundInfo().getOriginalSchema().getValue();
- ShardingSpherePreconditions.checkState(database.containsSchema(schemaName), () -> new SchemaNotFoundException(schemaName));
- ShardingSphereSchema schema = database.getSchema(schemaName);
+ IdentifierValue originalSchema = columnSegment.getColumnBoundInfo().getOriginalSchema();
+ ShardingSpherePreconditions.checkState(database.containsSchema(originalSchema), () -> new SchemaNotFoundException(originalSchema.getValue()));
+ ShardingSphereSchema schema = database.getSchema(originalSchema);
ShardingSpherePreconditions.checkState(schema.containsTable(tableName), () -> new TableNotFoundException(tableName));
HashColumn column = new HashColumn(shardingColumn.get(), tableName, schema.getTable(tableName).getColumn(shardingColumn.get()).isCaseSensitive());
Optional<ShardingConditionValue> shardingConditionValue = ConditionValueGeneratorFactory.generate(each, column, params, timestampServiceRule);
diff --git a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/WhereClauseShardingConditionEngineTest.java b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/WhereClauseShardingConditionEngineTest.java
index 8af9f7473a3..857d41cdba1 100644
--- a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/WhereClauseShardingConditionEngineTest.java
+++ b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/WhereClauseShardingConditionEngineTest.java
@@ -79,8 +79,8 @@ class WhereClauseShardingConditionEngineTest {
void setUp() {
shardingConditionEngine = new WhereClauseShardingConditionEngine(database, rule, mock(TimestampServiceRule.class));
when(sqlStatementContext.getWhereSegments()).thenReturn(Collections.singleton(whereSegment));
- when(database.containsSchema("")).thenReturn(true);
- when(database.getSchema("")).thenReturn(schema);
+ when(database.containsSchema(new IdentifierValue(""))).thenReturn(true);
+ when(database.getSchema(new IdentifierValue(""))).thenReturn(schema);
when(schema.containsTable("")).thenReturn(true);
when(schema.getTable("")).thenReturn(table);
when(table.getColumn("foo_sharding_col")).thenReturn(mock(ShardingSphereColumn.class));
diff --git a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/from/type/SimpleTableSegmentBinder.java b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/from/type/SimpleTableSegmentBinder.java
index 083b54adb4c..aac205919bc 100644
--- a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/from/type/SimpleTableSegmentBinder.java
+++ b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/from/type/SimpleTableSegmentBinder.java
@@ -90,7 +90,7 @@ public final class SimpleTableSegmentBinder {
IdentifierValue databaseName = getDatabaseName(segment, binderContext);
Optional<IdentifierValue> schemaName = getSchemaName(segment, binderContext, databaseName);
IdentifierValue tableName = segment.getTableName().getIdentifier();
- Optional<ShardingSphereSchema> schema = schemaName.map(identifierValue -> binderContext.getMetaData().getDatabase(databaseName.getValue()).getSchema(identifierValue.getValue()));
+ Optional<ShardingSphereSchema> schema = schemaName.map(identifierValue -> binderContext.getMetaData().getDatabase(databaseName).getSchema(identifierValue));
checkTableExists(binderContext, schema.orElse(null), tableName.getValue(), segment);
checkTableMetadata(binderContext, schema.orElse(null), schemaName.map(IdentifierValue::getValue).orElse(null), tableName.getValue());
createSimpleTableBinderContext(segment, schema.orElse(null), databaseName, schemaName.orElse(null), binderContext)
@@ -114,7 +114,7 @@ public final class SimpleTableSegmentBinder {
private static Optional<IdentifierValue> getSchemaName(final SimpleTableSegment segment, final SQLStatementBinderContext binderContext, final IdentifierValue databaseName) {
Optional<IdentifierValue> result = getSchemaName(segment, binderContext);
- result.ifPresent(identifierValue -> ShardingSpherePreconditions.checkState(binderContext.getMetaData().getDatabase(databaseName.getValue()).containsSchema(identifierValue.getValue()),
+ result.ifPresent(identifierValue -> ShardingSpherePreconditions.checkState(binderContext.getMetaData().getDatabase(databaseName).containsSchema(identifierValue),
() -> new SchemaNotFoundException(identifierValue.getValue())));
return result;
}
diff --git a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/SQLStatementContextFactoryTest.java b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/SQLStatementContextFactoryTest.java
index db6266df5e5..634409c32aa 100644
--- a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/SQLStatementContextFactoryTest.java
+++ b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/SQLStatementContextFactoryTest.java
@@ -111,6 +111,9 @@ class SQLStatementContextFactoryTest {
private ShardingSphereMetaData mockMetaData() {
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
+ IdentifierValue fooDatabase = new IdentifierValue("foo_db");
+ IdentifierValue publicSchema = new IdentifierValue("public");
+ IdentifierValue dboSchema = new IdentifierValue("dbo");
when(database.getName()).thenReturn("foo_db");
when(database.containsSchema("foo_db")).thenReturn(true);
when(database.containsSchema("public")).thenReturn(true);
@@ -118,6 +121,12 @@ class SQLStatementContextFactoryTest {
when(database.getSchema("public").containsTable("tbl")).thenReturn(true);
when(database.containsSchema("dbo")).thenReturn(true);
when(database.getSchema("dbo").containsTable("tbl")).thenReturn(true);
+ when(database.containsSchema(fooDatabase)).thenReturn(true);
+ when(database.containsSchema(publicSchema)).thenReturn(true);
+ when(database.containsSchema(dboSchema)).thenReturn(true);
+ when(database.getSchema(fooDatabase).containsTable("tbl")).thenReturn(true);
+ when(database.getSchema(publicSchema).containsTable("tbl")).thenReturn(true);
+ when(database.getSchema(dboSchema).containsTable("tbl")).thenReturn(true);
return new ShardingSphereMetaData(Collections.singleton(database), mock(ResourceMetaData.class), mock(RuleMetaData.class), mock(ConfigurationProperties.class));
}
}
diff --git a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/type/ddl/AlterViewStatementContextTest.java b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/type/ddl/AlterViewStatementContextTest.java
index a4c3540c3de..68e623937a9 100644
--- a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/type/ddl/AlterViewStatementContextTest.java
+++ b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/type/ddl/AlterViewStatementContextTest.java
@@ -49,6 +49,7 @@ class AlterViewStatementContextTest {
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
when(database.getRuleMetaData().getAttributes(TableMapperRuleAttribute.class)).thenReturn(Collections.emptyList());
when(metaData.getDatabase("foo_db")).thenReturn(database);
+ when(metaData.getDatabase(new IdentifierValue("foo_db"))).thenReturn(database);
AlterViewStatementContext actual = new AlterViewStatementContext(metaData, alterViewStatement, "foo_db");
assertThat(actual.getSqlStatement(), is(alterViewStatement));
assertThat(actual.getTablesContext().getSimpleTables().size(), is(2));
diff --git a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/type/ddl/CreateViewStatementContextTest.java b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/type/ddl/CreateViewStatementContextTest.java
index 5201bb4407b..6ee4d4da75c 100644
--- a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/type/ddl/CreateViewStatementContextTest.java
+++ b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/type/ddl/CreateViewStatementContextTest.java
@@ -59,6 +59,7 @@ class CreateViewStatementContextTest {
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
when(database.getRuleMetaData().getAttributes(TableMapperRuleAttribute.class)).thenReturn(Collections.emptyList());
when(metaData.getDatabase("foo_db")).thenReturn(database);
+ when(metaData.getDatabase(new IdentifierValue("foo_db"))).thenReturn(database);
CreateViewStatementContext actual = new CreateViewStatementContext(metaData, createViewStatement, "foo_db");
assertThat(actual.getSqlStatement(), is(createViewStatement));
}
diff --git a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/expression/type/SubquerySegmentBinderTest.java b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/expression/type/SubquerySegmentBinderTest.java
index 62e5938b80d..33d1663559e 100644
--- a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/expression/type/SubquerySegmentBinderTest.java
+++ b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/expression/type/SubquerySegmentBinderTest.java
@@ -105,14 +105,18 @@ class SubquerySegmentBinderTest {
private ShardingSphereMetaData createMetaData() {
ShardingSphereSchema schema = mock(ShardingSphereSchema.class, RETURNS_DEEP_STUBS);
+ IdentifierValue fooDatabase = new IdentifierValue("foo_db");
when(schema.getTable("t_order").getAllColumns()).thenReturn(Arrays.asList(
new ShardingSphereColumn("order_id", Types.INTEGER, true, false, false, true, false, false),
new ShardingSphereColumn("user_id", Types.INTEGER, false, false, false, true, false, false),
new ShardingSphereColumn("status", Types.INTEGER, false, false, false, true, false, false)));
ShardingSphereMetaData result = mock(ShardingSphereMetaData.class, RETURNS_DEEP_STUBS);
when(result.getDatabase("foo_db").getSchema("foo_db")).thenReturn(schema);
+ when(result.getDatabase(fooDatabase).getSchema(fooDatabase)).thenReturn(schema);
when(result.containsDatabase("foo_db")).thenReturn(true);
+ when(result.containsDatabase(fooDatabase)).thenReturn(true);
when(result.getDatabase("foo_db").containsSchema("foo_db")).thenReturn(true);
+ when(result.getDatabase(fooDatabase).containsSchema(fooDatabase)).thenReturn(true);
when(result.getDatabase("foo_db").getSchema("foo_db").containsTable("t_order")).thenReturn(true);
return result;
}
diff --git a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/from/type/JoinTableSegmentBinderTest.java b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/from/type/JoinTableSegmentBinderTest.java
index 2b60e5e90bb..5b4cb0f264e 100644
--- a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/from/type/JoinTableSegmentBinderTest.java
+++ b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/from/type/JoinTableSegmentBinderTest.java
@@ -225,6 +225,7 @@ class JoinTableSegmentBinderTest {
private ShardingSphereMetaData createMetaData() {
ShardingSphereSchema schema = mock(ShardingSphereSchema.class, RETURNS_DEEP_STUBS);
+ IdentifierValue fooDatabase = new IdentifierValue("foo_db");
when(schema.getTable("t_order").getAllColumns()).thenReturn(Arrays.asList(
new ShardingSphereColumn("order_id", Types.INTEGER, true, false, false, true, false, false),
new ShardingSphereColumn("user_id", Types.INTEGER, false, false, false, true, false, false),
@@ -236,8 +237,11 @@ class JoinTableSegmentBinderTest {
new ShardingSphereColumn("status", Types.INTEGER, false, false, false, true, false, false)));
ShardingSphereMetaData result = mock(ShardingSphereMetaData.class, RETURNS_DEEP_STUBS);
when(result.getDatabase("foo_db").getSchema("foo_db")).thenReturn(schema);
+ when(result.getDatabase(fooDatabase).getSchema(fooDatabase)).thenReturn(schema);
when(result.containsDatabase("foo_db")).thenReturn(true);
+ when(result.containsDatabase(fooDatabase)).thenReturn(true);
when(result.getDatabase("foo_db").containsSchema("foo_db")).thenReturn(true);
+ when(result.getDatabase(fooDatabase).containsSchema(fooDatabase)).thenReturn(true);
when(result.getDatabase("foo_db").getSchema("foo_db").containsTable("t_order")).thenReturn(true);
when(result.getDatabase("foo_db").getSchema("foo_db").containsTable("t_order_item")).thenReturn(true);
return result;
diff --git a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/from/type/SimpleTableSegmentBinderTest.java b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/from/type/SimpleTableSegmentBinderTest.java
index dbb8cb2d966..96dabd03a02 100644
--- a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/from/type/SimpleTableSegmentBinderTest.java
+++ b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/from/type/SimpleTableSegmentBinderTest.java
@@ -73,6 +73,10 @@ class SimpleTableSegmentBinderTest {
private ShardingSphereMetaData createMetaData() {
ShardingSphereSchema schema = mock(ShardingSphereSchema.class, RETURNS_DEEP_STUBS);
+ IdentifierValue fooDatabase = new IdentifierValue("foo_db");
+ IdentifierValue shardingDatabase = new IdentifierValue("sharding_db");
+ IdentifierValue publicSchema = new IdentifierValue("public");
+ IdentifierValue testSchema = new IdentifierValue("test");
when(schema.getTable("t_order").getAllColumns()).thenReturn(Arrays.asList(
new ShardingSphereColumn("order_id", Types.INTEGER, true, false, false, true, false, false),
new ShardingSphereColumn("user_id", Types.INTEGER, false, false, false, true, false, false),
@@ -85,11 +89,19 @@ class SimpleTableSegmentBinderTest {
when(result.getDatabase("sharding_db").getSchema("sharding_db")).thenReturn(schema);
when(result.getDatabase("foo_db").getSchema("public")).thenReturn(schema);
when(result.getDatabase("sharding_db").getSchema("test")).thenReturn(schema);
+ when(result.getDatabase(fooDatabase).getSchema(fooDatabase)).thenReturn(schema);
+ when(result.getDatabase(shardingDatabase).getSchema(shardingDatabase)).thenReturn(schema);
+ when(result.getDatabase(fooDatabase).getSchema(publicSchema)).thenReturn(schema);
+ when(result.getDatabase(shardingDatabase).getSchema(testSchema)).thenReturn(schema);
when(result.containsDatabase("foo_db")).thenReturn(true);
+ when(result.containsDatabase(fooDatabase)).thenReturn(true);
when(result.getDatabase("foo_db").containsSchema("foo_db")).thenReturn(true);
+ when(result.getDatabase(fooDatabase).containsSchema(fooDatabase)).thenReturn(true);
when(result.getDatabase("foo_db").getSchema("foo_db").containsTable("t_order")).thenReturn(true);
when(result.containsDatabase("sharding_db")).thenReturn(true);
+ when(result.containsDatabase(shardingDatabase)).thenReturn(true);
when(result.getDatabase("sharding_db").containsSchema("sharding_db")).thenReturn(true);
+ when(result.getDatabase(shardingDatabase).containsSchema(shardingDatabase)).thenReturn(true);
when(result.getDatabase("sharding_db").getSchema("sharding_db").containsTable("t_order")).thenReturn(true);
return result;
}
diff --git a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/from/type/SubqueryTableSegmentBinderTest.java b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/from/type/SubqueryTableSegmentBinderTest.java
index a7cc6a91bad..b62a58ad6e7 100644
--- a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/from/type/SubqueryTableSegmentBinderTest.java
+++ b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/from/type/SubqueryTableSegmentBinderTest.java
@@ -189,14 +189,18 @@ class SubqueryTableSegmentBinderTest {
private ShardingSphereMetaData createMetaData() {
ShardingSphereSchema schema = mock(ShardingSphereSchema.class, RETURNS_DEEP_STUBS);
+ IdentifierValue fooDatabase = new IdentifierValue("foo_db");
when(schema.getTable("t_order").getAllColumns()).thenReturn(Arrays.asList(
new ShardingSphereColumn("order_id", Types.INTEGER, true, false, false, true, false, false),
new ShardingSphereColumn("user_id", Types.INTEGER, false, false, false, true, false, false),
new ShardingSphereColumn("status", Types.INTEGER, false, false, false, true, false, false)));
ShardingSphereMetaData result = mock(ShardingSphereMetaData.class, RETURNS_DEEP_STUBS);
when(result.getDatabase("foo_db").getSchema("foo_db")).thenReturn(schema);
+ when(result.getDatabase(fooDatabase).getSchema(fooDatabase)).thenReturn(schema);
when(result.containsDatabase("foo_db")).thenReturn(true);
+ when(result.containsDatabase(fooDatabase)).thenReturn(true);
when(result.getDatabase("foo_db").containsSchema("foo_db")).thenReturn(true);
+ when(result.getDatabase(fooDatabase).containsSchema(fooDatabase)).thenReturn(true);
when(result.getDatabase("foo_db").getSchema("foo_db").containsTable("t_order")).thenReturn(true);
return result;
}
diff --git a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/AnalyzeTableStatementBinderTest.java b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/AnalyzeTableStatementBinderTest.java
index 6a1b2b4a68b..379ce026c28 100644
--- a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/AnalyzeTableStatementBinderTest.java
+++ b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/dal/AnalyzeTableStatementBinderTest.java
@@ -39,6 +39,7 @@ import java.util.Collections;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.when;
@ExtendWith(MockitoExtension.class)
@@ -57,10 +58,11 @@ class AnalyzeTableStatementBinderTest {
@Test
void assertBind() {
+ IdentifierValue databaseName = new IdentifierValue("foo_db");
when(metaData.containsDatabase("foo_db")).thenReturn(true);
- when(metaData.getDatabase("foo_db")).thenReturn(database);
- when(database.containsSchema("foo_db")).thenReturn(true);
- when(database.getSchema("foo_db")).thenReturn(schema);
+ when(metaData.getDatabase(eq(databaseName))).thenReturn(database);
+ when(database.containsSchema(eq(databaseName))).thenReturn(true);
+ when(database.getSchema(eq(databaseName))).thenReturn(schema);
AnalyzeTableStatement actual = getAnalyzeTableStatement();
Collection<SimpleTableSegment> actualTables = actual.getTables();
assertThat(actualTables.size(), is(1));
diff --git a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/CommentStatementBinderTest.java b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/CommentStatementBinderTest.java
index 5ee2d661058..8ee7b55971d 100644
--- a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/CommentStatementBinderTest.java
+++ b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/CommentStatementBinderTest.java
@@ -39,6 +39,7 @@ import java.util.Collections;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.when;
@ExtendWith(MockitoExtension.class)
@@ -60,10 +61,11 @@ class CommentStatementBinderTest {
@Test
void assertBindWithTable() {
+ IdentifierValue databaseName = new IdentifierValue("foo_db_1");
when(metaData.containsDatabase("foo_db_1")).thenReturn(true);
- when(metaData.getDatabase("foo_db_1")).thenReturn(database);
- when(database.containsSchema("foo_db_1")).thenReturn(true);
- when(database.getSchema("foo_db_1")).thenReturn(schema);
+ when(metaData.getDatabase(eq(databaseName))).thenReturn(database);
+ when(database.containsSchema(eq(databaseName))).thenReturn(true);
+ when(database.getSchema(eq(databaseName))).thenReturn(schema);
when(schema.containsTable("t_order")).thenReturn(true);
when(schema.getTable("t_order")).thenReturn(table);
when(table.getAllColumns()).thenReturn(Collections.emptyList());
@@ -90,10 +92,11 @@ class CommentStatementBinderTest {
@Test
void assertBindWithColumn() {
+ IdentifierValue databaseName = new IdentifierValue("foo_db_1");
when(metaData.containsDatabase("foo_db_1")).thenReturn(true);
- when(metaData.getDatabase("foo_db_1")).thenReturn(database);
- when(database.containsSchema("foo_db_1")).thenReturn(true);
- when(database.getSchema("foo_db_1")).thenReturn(schema);
+ when(metaData.getDatabase(eq(databaseName))).thenReturn(database);
+ when(database.containsSchema(eq(databaseName))).thenReturn(true);
+ when(database.getSchema(eq(databaseName))).thenReturn(schema);
when(schema.containsTable("t_order")).thenReturn(true);
when(schema.getTable("t_order")).thenReturn(table);
when(table.getAllColumns()).thenReturn(Collections.emptyList());
diff --git a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/PrepareStatementBinderTest.java b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/PrepareStatementBinderTest.java
index 2351a158fb9..048482806b7 100644
--- a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/PrepareStatementBinderTest.java
+++ b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/PrepareStatementBinderTest.java
@@ -43,6 +43,7 @@ import static org.hamcrest.Matchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.when;
@ExtendWith(MockitoExtension.class)
@@ -64,10 +65,11 @@ class PrepareStatementBinderTest {
@Test
void assertBindWithSelect() {
+ IdentifierValue databaseName = new IdentifierValue("foo_db_1");
when(metaData.containsDatabase("foo_db_1")).thenReturn(true);
- when(metaData.getDatabase("foo_db_1")).thenReturn(database);
- when(database.containsSchema("foo_db_1")).thenReturn(true);
- when(database.getSchema("foo_db_1")).thenReturn(schema);
+ when(metaData.getDatabase(eq(databaseName))).thenReturn(database);
+ when(database.containsSchema(eq(databaseName))).thenReturn(true);
+ when(database.getSchema(eq(databaseName))).thenReturn(schema);
when(schema.containsTable("t_order")).thenReturn(true);
when(schema.getTable("t_order")).thenReturn(table);
when(table.getAllColumns()).thenReturn(Collections.emptyList());
diff --git a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/DeleteStatementBinderTest.java b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/DeleteStatementBinderTest.java
index 7b8d1e56fef..f09740b53f5 100644
--- a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/DeleteStatementBinderTest.java
+++ b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/DeleteStatementBinderTest.java
@@ -75,14 +75,18 @@ class DeleteStatementBinderTest {
private ShardingSphereMetaData createMetaData() {
ShardingSphereSchema schema = mock(ShardingSphereSchema.class, RETURNS_DEEP_STUBS);
+ IdentifierValue fooDatabase = new IdentifierValue("foo_db");
when(schema.getTable("t_order").getAllColumns()).thenReturn(Arrays.asList(
new ShardingSphereColumn("order_id", Types.INTEGER, true, false, false, true, false, false),
new ShardingSphereColumn("user_id", Types.INTEGER, false, false, false, true, false, false),
new ShardingSphereColumn("status", Types.INTEGER, false, false, false, true, false, false)));
ShardingSphereMetaData result = mock(ShardingSphereMetaData.class, RETURNS_DEEP_STUBS);
when(result.getDatabase("foo_db").getSchema("foo_db")).thenReturn(schema);
+ when(result.getDatabase(fooDatabase).getSchema(fooDatabase)).thenReturn(schema);
when(result.containsDatabase("foo_db")).thenReturn(true);
+ when(result.containsDatabase(fooDatabase)).thenReturn(true);
when(result.getDatabase("foo_db").containsSchema("foo_db")).thenReturn(true);
+ when(result.getDatabase(fooDatabase).containsSchema(fooDatabase)).thenReturn(true);
when(result.getDatabase("foo_db").getSchema("foo_db").containsTable("t_order")).thenReturn(true);
return result;
}
diff --git a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/InsertStatementBinderTest.java b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/InsertStatementBinderTest.java
index b3d4b7d227d..ae3a0acdd9c 100644
--- a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/InsertStatementBinderTest.java
+++ b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/InsertStatementBinderTest.java
@@ -240,14 +240,18 @@ class InsertStatementBinderTest {
private ShardingSphereMetaData createMetaData() {
ShardingSphereSchema schema = mock(ShardingSphereSchema.class, RETURNS_DEEP_STUBS);
+ IdentifierValue fooDatabase = new IdentifierValue("foo_db");
when(schema.getTable("t_order").getAllColumns()).thenReturn(Arrays.asList(
new ShardingSphereColumn("order_id", Types.INTEGER, true, false, false, true, false, false),
new ShardingSphereColumn("user_id", Types.INTEGER, false, false, false, true, false, false),
new ShardingSphereColumn("status", Types.INTEGER, false, false, false, true, false, false)));
ShardingSphereMetaData result = mock(ShardingSphereMetaData.class, RETURNS_DEEP_STUBS);
when(result.getDatabase("foo_db").getSchema("foo_db")).thenReturn(schema);
+ when(result.getDatabase(fooDatabase).getSchema(fooDatabase)).thenReturn(schema);
when(result.containsDatabase("foo_db")).thenReturn(true);
+ when(result.containsDatabase(fooDatabase)).thenReturn(true);
when(result.getDatabase("foo_db").containsSchema("foo_db")).thenReturn(true);
+ when(result.getDatabase(fooDatabase).containsSchema(fooDatabase)).thenReturn(true);
when(result.getDatabase("foo_db").getSchema("foo_db").containsTable("t_order")).thenReturn(true);
return result;
}
diff --git a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/SelectStatementBinderTest.java b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/SelectStatementBinderTest.java
index 8fde16a5e09..4718aca2440 100644
--- a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/SelectStatementBinderTest.java
+++ b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/SelectStatementBinderTest.java
@@ -252,6 +252,7 @@ class SelectStatementBinderTest {
private ShardingSphereMetaData mockMetaData() {
ShardingSphereSchema schema = mock(ShardingSphereSchema.class, RETURNS_DEEP_STUBS);
+ IdentifierValue fooDatabase = new IdentifierValue("foo_db");
when(schema.getTable("t_order").getAllColumns()).thenReturn(Arrays.asList(
new ShardingSphereColumn("order_id", Types.INTEGER, true, false, false, true, false, false),
new ShardingSphereColumn("user_id", Types.INTEGER, false, false, false, true, false, false),
@@ -262,8 +263,11 @@ class SelectStatementBinderTest {
new ShardingSphereColumn("email", Types.VARCHAR, false, false, false, true, false, false)));
ShardingSphereMetaData result = mock(ShardingSphereMetaData.class, RETURNS_DEEP_STUBS);
when(result.getDatabase("foo_db").getSchema("foo_db")).thenReturn(schema);
+ when(result.getDatabase(fooDatabase).getSchema(fooDatabase)).thenReturn(schema);
when(result.containsDatabase("foo_db")).thenReturn(true);
+ when(result.containsDatabase(fooDatabase)).thenReturn(true);
when(result.getDatabase("foo_db").containsSchema("foo_db")).thenReturn(true);
+ when(result.getDatabase(fooDatabase).containsSchema(fooDatabase)).thenReturn(true);
when(result.getDatabase("foo_db").getSchema("foo_db").containsTable("t_order")).thenReturn(true);
when(result.getDatabase("foo_db").getSchema("foo_db").containsTable("t_user")).thenReturn(true);
return result;
diff --git a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/UpdateStatementBinderTest.java b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/UpdateStatementBinderTest.java
index cff82f633f8..1bb91da3d32 100644
--- a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/UpdateStatementBinderTest.java
+++ b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/UpdateStatementBinderTest.java
@@ -75,14 +75,18 @@ class UpdateStatementBinderTest {
private ShardingSphereMetaData createMetaData() {
ShardingSphereSchema schema = mock(ShardingSphereSchema.class, RETURNS_DEEP_STUBS);
+ IdentifierValue fooDatabase = new IdentifierValue("foo_db");
when(schema.getTable("t_order").getAllColumns()).thenReturn(Arrays.asList(
new ShardingSphereColumn("order_id", Types.INTEGER, true, false, false, true, false, false),
new ShardingSphereColumn("user_id", Types.INTEGER, false, false, false, true, false, false),
new ShardingSphereColumn("status", Types.INTEGER, false, false, false, true, false, false)));
ShardingSphereMetaData result = mock(ShardingSphereMetaData.class, RETURNS_DEEP_STUBS);
when(result.getDatabase("foo_db").getSchema("foo_db")).thenReturn(schema);
+ when(result.getDatabase(fooDatabase).getSchema(fooDatabase)).thenReturn(schema);
when(result.containsDatabase("foo_db")).thenReturn(true);
+ when(result.containsDatabase(fooDatabase)).thenReturn(true);
when(result.getDatabase("foo_db").containsSchema("foo_db")).thenReturn(true);
+ when(result.getDatabase(fooDatabase).containsSchema(fooDatabase)).thenReturn(true);
when(result.getDatabase("foo_db").getSchema("foo_db").containsTable("t_order")).thenReturn(true);
return result;
}
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaData.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaData.java
index c3c6b54f138..5ac9740e75d 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaData.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaData.java
@@ -149,7 +149,7 @@ public final class ShardingSphereMetaData implements AutoCloseable {
* @param databaseName database name
* @return contains database from meta data or not
*/
- private boolean containsDatabase(final IdentifierValue databaseName) {
+ public boolean containsDatabase(final IdentifierValue databaseName) {
return findDatabase(databaseName).isPresent();
}
@@ -169,7 +169,7 @@ public final class ShardingSphereMetaData implements AutoCloseable {
* @param databaseName database name
* @return meta data database
*/
- private ShardingSphereDatabase getDatabase(final IdentifierValue databaseName) {
+ public ShardingSphereDatabase getDatabase(final IdentifierValue databaseName) {
return findDatabase(databaseName).orElse(null);
}
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabase.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabase.java
index 3199e7d249d..0ad94c084f4 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabase.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabase.java
@@ -150,7 +150,7 @@ public final class ShardingSphereDatabase {
* @param schemaName schema name
* @return contains schema from database or not
*/
- private boolean containsSchema(final IdentifierValue schemaName) {
+ public boolean containsSchema(final IdentifierValue schemaName) {
return findSchema(schemaName).isPresent();
}
@@ -170,7 +170,7 @@ public final class ShardingSphereDatabase {
* @param schemaName schema name
* @return schema
*/
- private ShardingSphereSchema getSchema(final IdentifierValue schemaName) {
+ public ShardingSphereSchema getSchema(final IdentifierValue schemaName) {
return findSchema(schemaName).orElse(null);
}
diff --git a/kernel/single/core/src/test/java/org/apache/shardingsphere/single/route/SingleSQLRouterTest.java b/kernel/single/core/src/test/java/org/apache/shardingsphere/single/route/SingleSQLRouterTest.java
index 29bc76fdb1d..fb058c59424 100644
--- a/kernel/single/core/src/test/java/org/apache/shardingsphere/single/route/SingleSQLRouterTest.java
+++ b/kernel/single/core/src/test/java/org/apache/shardingsphere/single/route/SingleSQLRouterTest.java
@@ -74,6 +74,7 @@ import static org.hamcrest.Matchers.is;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyCollection;
+import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
@@ -267,7 +268,7 @@ class SingleSQLRouterTest {
when(result.getName()).thenReturn("foo_db");
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
when(schema.containsTable("foo_tbl")).thenReturn(true);
- when(result.getSchema(any())).thenReturn(schema);
+ when(result.getSchema(anyString())).thenReturn(schema);
return result;
}
diff --git a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/manager/database/DatabaseMetaDataManagerTest.java b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/manager/database/DatabaseMetaDataManagerTest.java
index 3ac0f05482d..f3937bfd9c5 100644
--- a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/manager/database/DatabaseMetaDataManagerTest.java
+++ b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/manager/database/DatabaseMetaDataManagerTest.java
@@ -165,7 +165,7 @@ class DatabaseMetaDataManagerTest {
when(metaDataContexts.getMetaData().getDatabase("foo_db").getAllSchemas()).thenReturn(Collections.singleton(toBeAlteredSchema));
when(metaDataContexts.getMetaData().getDatabase("foo_db").getSchema("foo_schema")).thenReturn(toBeAlteredSchema);
databaseMetaDataManager.alterTable("foo_db", "bar_schema", mock());
- verify(metaDataContexts.getMetaData().getDatabase("foo_db"), never()).getSchema(any());
+ verify(metaDataContexts.getMetaData().getDatabase("foo_db"), never()).getSchema(anyString());
}
@Test
diff --git a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/node/storage/QualifiedDataSourceChangedHandlerTest.java b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/node/storage/QualifiedDataSourceChangedHandlerTest.java
index 124d1476bda..71af39031fd 100644
--- a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/node/storage/QualifiedDataSourceChangedHandlerTest.java
+++ b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/node/storage/QualifiedDataSourceChangedHandlerTest.java
@@ -35,7 +35,7 @@ import org.mockito.junit.jupiter.MockitoExtension;
import java.util.Collections;
-import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.refEq;
import static org.mockito.Mockito.mock;
@@ -60,13 +60,13 @@ class QualifiedDataSourceChangedHandlerTest {
@Test
void assertHandleWithEmptyValue() {
handler.handle(contextManager, new DataChangedEvent("/nodes/qualified_data_sources/foo_db.foo_group.foo_ds", "", Type.ADDED));
- verify(contextManager.getMetaDataContexts().getMetaData(), never()).containsDatabase(any());
+ verify(contextManager.getMetaDataContexts().getMetaData(), never()).containsDatabase(anyString());
}
@Test
void assertHandleWithoutQualifiedDataSource() {
handler.handle(contextManager, new DataChangedEvent("/nodes/qualified_data_sources", "state: DISABLED", Type.ADDED));
- verify(contextManager.getMetaDataContexts().getMetaData(), never()).containsDatabase(any());
+ verify(contextManager.getMetaDataContexts().getMetaData(), never()).containsDatabase(anyString());
}
@Test
diff --git a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLUpdateProxyBackendHandlerTest.java b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLUpdateProxyBackendHandlerTest.java
index 426673b3d0b..75453b9e07c 100644
--- a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLUpdateProxyBackendHandlerTest.java
+++ b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLUpdateProxyBackendHandlerTest.java
@@ -44,7 +44,7 @@ import java.util.Collections;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.isA;
import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.nullable;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -105,7 +105,7 @@ class DistSQLUpdateProxyBackendHandlerTest {
ResourceMetaData resourceMetaData = mock(ResourceMetaData.class);
when(resourceMetaData.getStorageUnits()).thenReturn(Collections.singletonMap("ds_0", mock(StorageUnit.class)));
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class);
- when(database.containsSchema(any())).thenReturn(true);
+ when(database.containsSchema(nullable(String.class))).thenReturn(true);
when(database.getProtocolType()).thenReturn(databaseType);
when(database.getResourceMetaData()).thenReturn(resourceMetaData);
when(contextManager.getDatabase("foo_db")).thenReturn(database);
diff --git a/proxy/frontend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutorTest.java b/proxy/frontend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutorTest.java
index 00c440c6488..2b9f745fb24 100644
--- a/proxy/frontend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutorTest.java
+++ b/proxy/frontend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutorTest.java
@@ -53,6 +53,7 @@ import org.apache.shardingsphere.proxy.backend.session.ServerPreparedStatementRe
import org.apache.shardingsphere.proxy.frontend.mysql.command.query.binary.MySQLServerPreparedStatement;
import org.apache.shardingsphere.proxy.frontend.mysql.command.query.binary.MySQLStatementIdGenerator;
import org.apache.shardingsphere.sql.parser.engine.api.CacheOption;
+import org.apache.shardingsphere.sql.parser.statement.core.value.identifier.IdentifierValue;
import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dml.InsertStatement;
import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dml.DeleteStatement;
import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dml.SelectStatement;
@@ -331,8 +332,9 @@ class MySQLComStmtPrepareExecutorTest {
CacheOption cacheOption = new CacheOption(1024, 1024L);
when(result.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getSingleRule(SQLParserRule.class))
.thenReturn(new SQLParserRule(new SQLParserRuleConfiguration(cacheOption, cacheOption)));
- when(result.getMetaDataContexts().getMetaData().getDatabase(connectionSession.getUsedDatabaseName()).getProtocolType()).thenReturn(databaseType);
- when(result.getMetaDataContexts().getMetaData().getDatabase("foo_db")).thenReturn(createDatabase());
+ ShardingSphereDatabase database = createDatabase();
+ when(result.getMetaDataContexts().getMetaData().getDatabase("foo_db")).thenReturn(database);
+ when(result.getMetaDataContexts().getMetaData().getDatabase(any(IdentifierValue.class))).thenReturn(database);
when(result.getMetaDataContexts().getMetaData().containsDatabase("foo_db")).thenReturn(true);
return result;
}
diff --git a/proxy/frontend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLComQueryPacketExecutorTest.java b/proxy/frontend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLComQueryPacketExecutorTest.java
index 766ef0b751b..5a727f381df 100644
--- a/proxy/frontend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLComQueryPacketExecutorTest.java
+++ b/proxy/frontend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLComQueryPacketExecutorTest.java
@@ -46,6 +46,7 @@ import org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResp
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
import org.apache.shardingsphere.proxy.frontend.command.executor.ResponseType;
import org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
+import org.apache.shardingsphere.sql.parser.statement.core.value.identifier.IdentifierValue;
import org.apache.shardingsphere.sqltranslator.rule.SQLTranslatorRule;
import org.apache.shardingsphere.sqltranslator.rule.builder.DefaultSQLTranslatorRuleConfigurationBuilder;
import org.apache.shardingsphere.test.infra.framework.extension.mock.AutoMockExtension;
@@ -74,6 +75,7 @@ import static org.hamcrest.Matchers.isA;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
+import static org.mockito.Mockito.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -162,14 +164,15 @@ class MySQLComQueryPacketExecutorTest {
private MetaDataContexts mockMetaDataContexts() {
MetaDataContexts result = mock(MetaDataContexts.class, RETURNS_DEEP_STUBS);
- when(result.getMetaData().getDatabase("foo_db").getProtocolType()).thenReturn(databaseType);
+ ShardingSphereDatabase database = createDatabase();
+ when(result.getMetaData().getDatabase("foo_db")).thenReturn(database);
+ when(result.getMetaData().getDatabase(any(IdentifierValue.class))).thenReturn(database);
RuleMetaData globalRuleMetaData = new RuleMetaData(
Arrays.asList(new SQLParserRule(new DefaultSQLParserRuleConfigurationBuilder().build()), new SQLTranslatorRule(new DefaultSQLTranslatorRuleConfigurationBuilder().build())));
when(result.getMetaData().getGlobalRuleMetaData()).thenReturn(globalRuleMetaData);
Properties props = new Properties();
props.setProperty(ConfigurationPropertyKey.KERNEL_EXECUTOR_SIZE.getKey(), "1");
when(result.getMetaData().getProps()).thenReturn(new ConfigurationProperties(props));
- when(result.getMetaData().getDatabase("foo_db")).thenReturn(createDatabase());
when(result.getMetaData().containsDatabase("foo_db")).thenReturn(true);
return result;
}
diff --git a/proxy/frontend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLMultiStatementsProxyBackendHandlerTest.java b/proxy/frontend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLMultiStatementsProxyBackendHandlerTest.java
index 0b7d88a2fec..dce0e103038 100644
--- a/proxy/frontend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLMultiStatementsProxyBackendHandlerTest.java
+++ b/proxy/frontend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLMultiStatementsProxyBackendHandlerTest.java
@@ -22,10 +22,12 @@ import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
import org.apache.shardingsphere.infra.executor.sql.execute.engine.ConnectionMode;
import org.apache.shardingsphere.infra.executor.sql.prepare.driver.jdbc.StatementOption;
+import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
import org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereColumn;
+import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.mode.manager.ContextManager;
@@ -38,6 +40,7 @@ import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
import org.apache.shardingsphere.proxy.backend.response.header.update.MultiStatementsUpdateResponseHeader;
import org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResponseHeader;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
+import org.apache.shardingsphere.sql.parser.statement.core.value.identifier.IdentifierValue;
import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dml.UpdateStatement;
import org.apache.shardingsphere.sqltranslator.rule.SQLTranslatorRule;
import org.apache.shardingsphere.sqltranslator.rule.builder.DefaultSQLTranslatorRuleConfigurationBuilder;
@@ -172,27 +175,33 @@ class MySQLMultiStatementsProxyBackendHandlerTest {
private ContextManager mockContextManager() {
ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS);
+ ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
ResourceMetaData resourceMetaData = mock(ResourceMetaData.class, RETURNS_DEEP_STUBS);
- when(result.getMetaDataContexts().getMetaData().getDatabase("foo_db").getResourceMetaData()).thenReturn(resourceMetaData);
+ when(database.getResourceMetaData()).thenReturn(resourceMetaData);
when(resourceMetaData.getAllInstanceDataSourceNames()).thenReturn(Collections.singletonList("foo_ds"));
StorageUnit storageUnit = mock(StorageUnit.class, RETURNS_DEEP_STUBS);
when(storageUnit.getStorageType()).thenReturn(TypedSPILoader.getService(DatabaseType.class, "FIXTURE"));
when(resourceMetaData.getStorageUnits()).thenReturn(Collections.singletonMap("foo_ds", storageUnit));
- when(result.getMetaDataContexts().getMetaData().getDatabase("foo_db").getProtocolType()).thenReturn(TypedSPILoader.getService(DatabaseType.class, "MySQL"));
- when(result.getMetaDataContexts().getMetaData().getDatabase("foo_db").getRuleMetaData())
- .thenReturn(new RuleMetaData(Collections.emptyList()));
+ when(database.getProtocolType()).thenReturn(TypedSPILoader.getService(DatabaseType.class, "MySQL"));
+ when(database.getRuleMetaData()).thenReturn(new RuleMetaData(Collections.emptyList()));
RuleMetaData globalRuleMetaData = new RuleMetaData(
Arrays.asList(new SQLParserRule(new DefaultSQLParserRuleConfigurationBuilder().build()), new SQLTranslatorRule(new DefaultSQLTranslatorRuleConfigurationBuilder().build())));
when(result.getMetaDataContexts().getMetaData().getGlobalRuleMetaData()).thenReturn(globalRuleMetaData);
when(result.getMetaDataContexts().getMetaData().getProps().<Integer>getValue(ConfigurationPropertyKey.KERNEL_EXECUTOR_SIZE)).thenReturn(1);
when(result.getMetaDataContexts().getMetaData().getProps().<Boolean>getValue(ConfigurationPropertyKey.SQL_SHOW)).thenReturn(false);
when(result.getMetaDataContexts().getMetaData().getProps().<Integer>getValue(ConfigurationPropertyKey.MAX_CONNECTIONS_SIZE_PER_QUERY)).thenReturn(1);
+ ShardingSphereSchema schema = mock(ShardingSphereSchema.class, RETURNS_DEEP_STUBS);
ShardingSphereTable table = new ShardingSphereTable("t", Arrays.asList(new ShardingSphereColumn("id", Types.BIGINT, true, false, false, false, true, false),
new ShardingSphereColumn("v", Types.INTEGER, false, false, false, false, true, false)), Collections.emptyList(), Collections.emptyList());
- when(result.getMetaDataContexts().getMetaData().getDatabase("foo_db").getSchema("foo_db").getTable("t")).thenReturn(table);
+ when(database.getSchema("foo_db")).thenReturn(schema);
+ when(database.getSchema(any(IdentifierValue.class))).thenReturn(schema);
+ when(schema.getTable("t")).thenReturn(table);
when(result.getMetaDataContexts().getMetaData().containsDatabase("foo_db")).thenReturn(true);
- when(result.getMetaDataContexts().getMetaData().getDatabase("foo_db").containsSchema("foo_db")).thenReturn(true);
- when(result.getMetaDataContexts().getMetaData().getDatabase("foo_db").getSchema("foo_db").containsTable("t")).thenReturn(true);
+ when(result.getMetaDataContexts().getMetaData().getDatabase("foo_db")).thenReturn(database);
+ when(result.getMetaDataContexts().getMetaData().getDatabase(any(IdentifierValue.class))).thenReturn(database);
+ when(database.containsSchema("foo_db")).thenReturn(true);
+ when(database.containsSchema(any(IdentifierValue.class))).thenReturn(true);
+ when(schema.containsTable("t")).thenReturn(true);
when(result.getMetaDataContexts().getMetaData().getProps()).thenReturn(new ConfigurationProperties(new Properties()));
return result;
}
diff --git a/proxy/frontend/dialect/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/command/query/extended/bind/OpenGaussComBatchBindExecutorTest.java b/proxy/frontend/dialect/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/command/query/extended/bind/OpenGaussComBatchBindExecutorTest.java
index 18154efb874..3b0e559ecb9 100644
--- a/proxy/frontend/dialect/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/command/query/extended/bind/OpenGaussComBatchBindExecutorTest.java
+++ b/proxy/frontend/dialect/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/command/query/extended/bind/OpenGaussComBatchBindExecutorTest.java
@@ -34,6 +34,7 @@ import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereColumn;
+import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
import org.apache.shardingsphere.infra.parser.ShardingSphereSQLParserEngine;
import org.apache.shardingsphere.infra.session.connection.ConnectionContext;
import org.apache.shardingsphere.infra.session.connection.transaction.TransactionConnectionContext;
@@ -46,6 +47,7 @@ import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
import org.apache.shardingsphere.proxy.backend.session.ServerPreparedStatementRegistry;
import org.apache.shardingsphere.proxy.frontend.postgresql.command.query.extended.PostgreSQLServerPreparedStatement;
import org.apache.shardingsphere.sql.parser.engine.api.CacheOption;
+import org.apache.shardingsphere.sql.parser.statement.core.value.identifier.IdentifierValue;
import org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
import org.apache.shardingsphere.sqltranslator.rule.SQLTranslatorRule;
import org.apache.shardingsphere.sqltranslator.rule.builder.DefaultSQLTranslatorRuleConfigurationBuilder;
@@ -176,6 +178,7 @@ class OpenGaussComBatchBindExecutorTest {
new SQLTranslatorRule(new DefaultSQLTranslatorRuleConfigurationBuilder().build()))));
ShardingSphereDatabase database = mockDatabase();
when(result.getMetaDataContexts().getMetaData().getDatabase("foo_db")).thenReturn(database);
+ when(result.getMetaDataContexts().getMetaData().getDatabase(any(IdentifierValue.class))).thenReturn(database);
when(result.getMetaDataContexts().getMetaData().containsDatabase("foo_db")).thenReturn(true);
return result;
}
@@ -189,14 +192,17 @@ class OpenGaussComBatchBindExecutorTest {
private ShardingSphereDatabase mockDatabase() {
ShardingSphereDatabase result = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
+ ShardingSphereSchema schema = mock(ShardingSphereSchema.class, RETURNS_DEEP_STUBS);
when(result.getResourceMetaData().getAllInstanceDataSourceNames()).thenReturn(Collections.singleton("foo_ds"));
StorageUnit storageUnit = mock(StorageUnit.class, RETURNS_DEEP_STUBS);
when(storageUnit.getStorageType()).thenReturn(databaseType);
when(result.getResourceMetaData().getStorageUnits()).thenReturn(Collections.singletonMap("foo_ds", storageUnit));
when(result.getRuleMetaData()).thenReturn(new RuleMetaData(Collections.emptyList()));
- when(result.containsSchema("public")).thenReturn(true);
- when(result.getSchema("public").containsTable("bmsql")).thenReturn(true);
- when(result.getSchema("public").getTable("bmsql").getAllColumns()).thenReturn(Collections.singleton(new ShardingSphereColumn("id", Types.VARCHAR, false, false, false, true, false, false)));
+ when(result.containsSchema(any(IdentifierValue.class))).thenReturn(true);
+ when(result.getSchema("public")).thenReturn(schema);
+ when(result.getSchema(any(IdentifierValue.class))).thenReturn(schema);
+ when(schema.containsTable("bmsql")).thenReturn(true);
+ when(schema.getTable("bmsql").getAllColumns()).thenReturn(Collections.singleton(new ShardingSphereColumn("id", Types.VARCHAR, false, false, false, true, false, false)));
return result;
}
}
diff --git a/proxy/frontend/dialect/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLAggregatedBatchedStatementsCommandExecutorTest.java b/proxy/frontend/dialect/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLAggregatedBatchedStatementsCommandExecutorTest.java
index 493e934a08b..446c0e3f9b7 100644
--- a/proxy/frontend/dialect/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLAggregatedBatchedStatementsCommandExecutorTest.java
+++ b/proxy/frontend/dialect/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLAggregatedBatchedStatementsCommandExecutorTest.java
@@ -39,6 +39,7 @@ import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereColumn;
+import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
import org.apache.shardingsphere.infra.parser.ShardingSphereSQLParserEngine;
import org.apache.shardingsphere.infra.session.connection.ConnectionContext;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
@@ -49,6 +50,7 @@ import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
import org.apache.shardingsphere.proxy.backend.session.ServerPreparedStatementRegistry;
import org.apache.shardingsphere.sql.parser.engine.api.CacheOption;
+import org.apache.shardingsphere.sql.parser.statement.core.value.identifier.IdentifierValue;
import org.apache.shardingsphere.sqltranslator.rule.SQLTranslatorRule;
import org.apache.shardingsphere.sqltranslator.rule.builder.DefaultSQLTranslatorRuleConfigurationBuilder;
import org.apache.shardingsphere.test.infra.framework.extension.mock.AutoMockExtension;
@@ -176,11 +178,16 @@ class PostgreSQLAggregatedBatchedStatementsCommandExecutorTest {
when(database.getResourceMetaData().getStorageUnits()).thenReturn(Collections.singletonMap("foo_ds", storageUnit));
when(database.getRuleMetaData()).thenReturn(new RuleMetaData(Collections.emptyList()));
when(database.containsSchema("public")).thenReturn(true);
- when(database.getSchema("public").containsTable("t_order")).thenReturn(true);
+ when(database.containsSchema(any(IdentifierValue.class))).thenReturn(true);
+ ShardingSphereSchema schema = mock(ShardingSphereSchema.class, RETURNS_DEEP_STUBS);
+ when(database.getSchema("public")).thenReturn(schema);
+ when(database.getSchema(any(IdentifierValue.class))).thenReturn(schema);
+ when(schema.containsTable("t_order")).thenReturn(true);
when(result.getMetaDataContexts().getMetaData().getDatabase("foo_db")).thenReturn(database);
+ when(result.getMetaDataContexts().getMetaData().getDatabase(any(IdentifierValue.class))).thenReturn(database);
when(result.getMetaDataContexts().getMetaData().containsDatabase("foo_db")).thenReturn(true);
when(result.getMetaDataContexts().getMetaData().getProps()).thenReturn(new ConfigurationProperties(new Properties()));
- when(database.getSchema("public").getTable("t_order").getAllColumns())
+ when(schema.getTable("t_order").getAllColumns())
.thenReturn(Collections.singleton(new ShardingSphereColumn("id", Types.VARCHAR, false, false, false, true, false, false)));
return result;
}
diff --git a/proxy/frontend/dialect/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLBatchedStatementsExecutorTest.java b/proxy/frontend/dialect/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLBatchedStatementsExecutorTest.java
index e2f39628ae7..93cdc6610a7 100644
--- a/proxy/frontend/dialect/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLBatchedStatementsExecutorTest.java
+++ b/proxy/frontend/dialect/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLBatchedStatementsExecutorTest.java
@@ -35,6 +35,7 @@ import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereColumn;
+import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
import org.apache.shardingsphere.infra.session.connection.ConnectionContext;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.mode.manager.ContextManager;
@@ -222,11 +223,16 @@ class PostgreSQLBatchedStatementsExecutorTest {
when(database.getResourceMetaData().getAllInstanceDataSourceNames()).thenReturn(Collections.singletonList("ds_0"));
when(database.getRuleMetaData()).thenReturn(new RuleMetaData(Collections.emptyList()));
when(database.containsSchema("public")).thenReturn(true);
- when(database.getSchema("public").containsTable("t")).thenReturn(true);
- when(database.getSchema("public").getTable("t").getAllColumns()).thenReturn(Arrays.asList(new ShardingSphereColumn("id", Types.VARCHAR, false, false, false, true, false, false),
+ when(database.containsSchema(any(IdentifierValue.class))).thenReturn(true);
+ ShardingSphereSchema schema = mock(ShardingSphereSchema.class, RETURNS_DEEP_STUBS);
+ when(database.getSchema("public")).thenReturn(schema);
+ when(database.getSchema(any(IdentifierValue.class))).thenReturn(schema);
+ when(schema.containsTable("t")).thenReturn(true);
+ when(schema.getTable("t").getAllColumns()).thenReturn(Arrays.asList(new ShardingSphereColumn("id", Types.VARCHAR, false, false, false, true, false, false),
new ShardingSphereColumn("col", Types.VARCHAR, false, false, false, true, false, false)));
when(result.getMetaDataContexts().getMetaData().containsDatabase("db")).thenReturn(true);
when(result.getMetaDataContexts().getMetaData().getDatabase("db")).thenReturn(database);
+ when(result.getMetaDataContexts().getMetaData().getDatabase(any(IdentifierValue.class))).thenReturn(database);
RuleMetaData globalRuleMetaData = new RuleMetaData(Collections.singleton(new SQLTranslatorRule(new DefaultSQLTranslatorRuleConfigurationBuilder().build())));
when(result.getMetaDataContexts().getMetaData().getGlobalRuleMetaData()).thenReturn(globalRuleMetaData);
when(result.getMetaDataContexts().getMetaData().getProps()).thenReturn(new ConfigurationProperties(new Properties()));
diff --git a/proxy/frontend/dialect/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLPreparedStatementMetadataFactoryTest.java b/proxy/frontend/dialect/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLPreparedStatementMetadataFactoryTest.java
index 827fd9cad0c..6f5d667c0b9 100644
--- a/proxy/frontend/dialect/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLPreparedStatementMetadataFactoryTest.java
+++ b/proxy/frontend/dialect/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLPreparedStatementMetadataFactoryTest.java
@@ -42,6 +42,7 @@ import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
import org.apache.shardingsphere.sql.parser.engine.api.CacheOption;
import org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
+import org.apache.shardingsphere.sql.parser.statement.core.value.identifier.IdentifierValue;
import org.apache.shardingsphere.sqltranslator.rule.SQLTranslatorRule;
import org.apache.shardingsphere.sqltranslator.rule.builder.DefaultSQLTranslatorRuleConfigurationBuilder;
import org.apache.shardingsphere.test.infra.framework.extension.mock.AutoMockExtension;
@@ -134,18 +135,21 @@ class PostgreSQLPreparedStatementMetadataFactoryTest {
RuleMetaData globalRuleMetaData = new RuleMetaData(Collections.singleton(new SQLTranslatorRule(new DefaultSQLTranslatorRuleConfigurationBuilder().build())));
when(result.getMetaDataContexts().getMetaData().getGlobalRuleMetaData()).thenReturn(globalRuleMetaData);
when(result.getMetaDataContexts().getMetaData().containsDatabase("postgres")).thenReturn(true);
- when(result.getMetaDataContexts().getMetaData().getDatabase("postgres").getProtocolType()).thenReturn(databaseType);
+ ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
+ when(database.getProtocolType()).thenReturn(databaseType);
StorageUnit storageUnit = mock(StorageUnit.class, RETURNS_DEEP_STUBS);
when(storageUnit.getStorageType()).thenReturn(databaseType);
- when(result.getMetaDataContexts().getMetaData().getDatabase("postgres").getResourceMetaData().getStorageUnits()).thenReturn(Collections.singletonMap("ds_0", storageUnit));
+ when(database.getResourceMetaData().getStorageUnits()).thenReturn(Collections.singletonMap("ds_0", storageUnit));
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
- when(result.getMetaDataContexts().getMetaData().getDatabase("postgres").containsSchema("public")).thenReturn(true);
- when(result.getMetaDataContexts().getMetaData().getDatabase("postgres").getSchema("public")).thenReturn(schema);
+ when(database.containsSchema(any(IdentifierValue.class))).thenReturn(true);
+ when(database.getSchema("public")).thenReturn(schema);
+ when(database.getSchema(any(IdentifierValue.class))).thenReturn(schema);
ShardingSphereTable table = new ShardingSphereTable("foo_tbl", Collections.singletonList(
new ShardingSphereColumn("id", Types.INTEGER, true, false, false, true, false, false)), Collections.emptyList(), Collections.emptyList());
when(schema.containsTable("foo_tbl")).thenReturn(true);
when(schema.getTable("foo_tbl")).thenReturn(table);
- ShardingSphereDatabase database = result.getMetaDataContexts().getMetaData().getDatabase("postgres");
+ when(result.getMetaDataContexts().getMetaData().getDatabase("postgres")).thenReturn(database);
+ when(result.getMetaDataContexts().getMetaData().getDatabase(any(IdentifierValue.class))).thenReturn(database);
when(result.getDatabase("postgres")).thenReturn(database);
return result;
}
diff --git a/proxy/frontend/dialect/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLPreparedStatementParameterTypeResolverTest.java b/proxy/frontend/dialect/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLPreparedStatementParameterTypeResolverTest.java
index ea93fbf556c..bcc54e12ddd 100644
--- a/proxy/frontend/dialect/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLPreparedStatementParameterTypeResolverTest.java
+++ b/proxy/frontend/dialect/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLPreparedStatementParameterTypeResolverTest.java
@@ -38,6 +38,7 @@ import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
import org.apache.shardingsphere.sql.parser.engine.api.CacheOption;
import org.apache.shardingsphere.infra.parser.ShardingSphereSQLParserEngine;
import org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
+import org.apache.shardingsphere.sql.parser.statement.core.value.identifier.IdentifierValue;
import org.apache.shardingsphere.sqltranslator.rule.SQLTranslatorRule;
import org.apache.shardingsphere.sqltranslator.rule.builder.DefaultSQLTranslatorRuleConfigurationBuilder;
import org.apache.shardingsphere.test.infra.framework.extension.mock.AutoMockExtension;
@@ -145,19 +146,22 @@ class PostgreSQLPreparedStatementParameterTypeResolverTest {
RuleMetaData globalRuleMetaData = new RuleMetaData(Collections.singleton(new SQLTranslatorRule(new DefaultSQLTranslatorRuleConfigurationBuilder().build())));
when(result.getMetaDataContexts().getMetaData().getGlobalRuleMetaData()).thenReturn(globalRuleMetaData);
when(result.getMetaDataContexts().getMetaData().containsDatabase("postgres")).thenReturn(true);
- when(result.getMetaDataContexts().getMetaData().getDatabase("postgres").getProtocolType()).thenReturn(databaseType);
+ ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
+ when(database.getProtocolType()).thenReturn(databaseType);
StorageUnit storageUnit = mock(StorageUnit.class, RETURNS_DEEP_STUBS);
when(storageUnit.getStorageType()).thenReturn(databaseType);
- when(result.getMetaDataContexts().getMetaData().getDatabase("postgres").getResourceMetaData().getStorageUnits()).thenReturn(Collections.singletonMap("ds_0", storageUnit));
+ when(database.getResourceMetaData().getStorageUnits()).thenReturn(Collections.singletonMap("ds_0", storageUnit));
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
- when(result.getMetaDataContexts().getMetaData().getDatabase("postgres").containsSchema("public")).thenReturn(true);
- when(result.getMetaDataContexts().getMetaData().getDatabase("postgres").getSchema("public")).thenReturn(schema);
+ when(database.containsSchema(any(IdentifierValue.class))).thenReturn(true);
+ when(database.getSchema("public")).thenReturn(schema);
+ when(database.getSchema(any(IdentifierValue.class))).thenReturn(schema);
ShardingSphereTable table = new ShardingSphereTable("foo_tbl", Arrays.asList(
new ShardingSphereColumn("id", Types.INTEGER, true, false, false, true, false, false),
new ShardingSphereColumn("k", Types.INTEGER, true, false, false, true, false, false)), Collections.emptyList(), Collections.emptyList());
when(schema.containsTable("foo_tbl")).thenReturn(true);
when(schema.getTable("foo_tbl")).thenReturn(table);
- ShardingSphereDatabase database = result.getMetaDataContexts().getMetaData().getDatabase("postgres");
+ when(result.getMetaDataContexts().getMetaData().getDatabase("postgres")).thenReturn(database);
+ when(result.getMetaDataContexts().getMetaData().getDatabase(any(IdentifierValue.class))).thenReturn(database);
when(result.getDatabase("postgres")).thenReturn(database);
return result;
}
diff --git a/proxy/frontend/dialect/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/bind/PostgreSQLComBindExecutorTest.java b/proxy/frontend/dialect/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/bind/PostgreSQLComBindExecutorTest.java
index e9ae31a5661..5edbbbe401e 100644
--- a/proxy/frontend/dialect/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/bind/PostgreSQLComBindExecutorTest.java
+++ b/proxy/frontend/dialect/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/bind/PostgreSQLComBindExecutorTest.java
@@ -48,6 +48,7 @@ import org.apache.shardingsphere.proxy.frontend.postgresql.command.query.extende
import org.apache.shardingsphere.proxy.frontend.postgresql.command.query.extended.PostgreSQLServerPreparedStatement;
import org.apache.shardingsphere.sql.parser.engine.api.CacheOption;
import org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
+import org.apache.shardingsphere.sql.parser.statement.core.value.identifier.IdentifierValue;
import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dal.EmptyStatement;
import org.apache.shardingsphere.sqltranslator.rule.SQLTranslatorRule;
import org.apache.shardingsphere.sqltranslator.rule.builder.DefaultSQLTranslatorRuleConfigurationBuilder;
@@ -184,19 +185,22 @@ class PostgreSQLComBindExecutorTest {
RuleMetaData globalRuleMetaData = new RuleMetaData(Collections.singleton(new SQLTranslatorRule(new DefaultSQLTranslatorRuleConfigurationBuilder().build())));
when(result.getMetaDataContexts().getMetaData().getGlobalRuleMetaData()).thenReturn(globalRuleMetaData);
when(result.getMetaDataContexts().getMetaData().containsDatabase(DATABASE_NAME)).thenReturn(true);
- when(result.getMetaDataContexts().getMetaData().getDatabase(DATABASE_NAME).getProtocolType()).thenReturn(databaseType);
+ ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
+ when(database.getProtocolType()).thenReturn(databaseType);
StorageUnit storageUnit = mock(StorageUnit.class, RETURNS_DEEP_STUBS);
when(storageUnit.getStorageType()).thenReturn(databaseType);
- when(result.getMetaDataContexts().getMetaData().getDatabase(DATABASE_NAME).getResourceMetaData().getStorageUnits()).thenReturn(Collections.singletonMap("ds_0", storageUnit));
+ when(database.getResourceMetaData().getStorageUnits()).thenReturn(Collections.singletonMap("ds_0", storageUnit));
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
- when(result.getMetaDataContexts().getMetaData().getDatabase(DATABASE_NAME).containsSchema("public")).thenReturn(true);
- when(result.getMetaDataContexts().getMetaData().getDatabase(DATABASE_NAME).getSchema("public")).thenReturn(schema);
+ when(database.containsSchema(any(IdentifierValue.class))).thenReturn(true);
+ when(database.getSchema("public")).thenReturn(schema);
+ when(database.getSchema(any(IdentifierValue.class))).thenReturn(schema);
ShardingSphereTable table = new ShardingSphereTable("t_order", Arrays.asList(
new ShardingSphereColumn("id", Types.INTEGER, true, false, false, true, false, false),
new ShardingSphereColumn("k", Types.INTEGER, true, false, false, true, false, false)), Collections.emptyList(), Collections.emptyList());
when(schema.containsTable("t_order")).thenReturn(true);
when(schema.getTable("t_order")).thenReturn(table);
- ShardingSphereDatabase database = result.getMetaDataContexts().getMetaData().getDatabase(DATABASE_NAME);
+ when(result.getMetaDataContexts().getMetaData().getDatabase(DATABASE_NAME)).thenReturn(database);
+ when(result.getMetaDataContexts().getMetaData().getDatabase(any(IdentifierValue.class))).thenReturn(database);
when(result.getDatabase(DATABASE_NAME)).thenReturn(database);
return result;
}
diff --git a/proxy/frontend/dialect/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutorTest.java b/proxy/frontend/dialect/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutorTest.java
index e3b29027deb..728df60f195 100644
--- a/proxy/frontend/dialect/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutorTest.java
+++ b/proxy/frontend/dialect/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutorTest.java
@@ -55,6 +55,7 @@ import org.apache.shardingsphere.proxy.frontend.postgresql.command.query.extende
import org.apache.shardingsphere.proxy.frontend.postgresql.command.query.extended.PostgreSQLServerPreparedStatement;
import org.apache.shardingsphere.sql.parser.engine.api.CacheOption;
import org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
+import org.apache.shardingsphere.sql.parser.statement.core.value.identifier.IdentifierValue;
import org.apache.shardingsphere.sqltranslator.rule.SQLTranslatorRule;
import org.apache.shardingsphere.sqltranslator.rule.builder.DefaultSQLTranslatorRuleConfigurationBuilder;
import org.apache.shardingsphere.test.infra.framework.extension.mock.AutoMockExtension;
@@ -562,9 +563,12 @@ class PostgreSQLComDescribeExecutorTest {
when(storageUnit.getStorageType()).thenReturn(DATABASE_TYPE);
when(result.getMetaDataContexts().getMetaData().getDatabase(DATABASE_NAME).getResourceMetaData().getStorageUnits()).thenReturn(Collections.singletonMap("ds_0", storageUnit));
when(result.getMetaDataContexts().getMetaData().containsDatabase(DATABASE_NAME)).thenReturn(true);
- when(result.getMetaDataContexts().getMetaData().getDatabase(DATABASE_NAME).containsSchema("public")).thenReturn(true);
- when(result.getMetaDataContexts().getMetaData().getDatabase(DATABASE_NAME).getSchema("public").containsTable(TABLE_NAME)).thenReturn(true);
ShardingSphereDatabase database = result.getMetaDataContexts().getMetaData().getDatabase(DATABASE_NAME);
+ when(result.getMetaDataContexts().getMetaData().getDatabase(any(IdentifierValue.class))).thenReturn(database);
+ when(database.containsSchema("public")).thenReturn(true);
+ when(database.containsSchema(any(IdentifierValue.class))).thenReturn(true);
+ when(database.getSchema(any(IdentifierValue.class))).thenReturn(schema);
+ when(schema.containsTable(TABLE_NAME)).thenReturn(true);
when(result.getDatabase(DATABASE_NAME)).thenReturn(database);
return result;
}
@@ -583,11 +587,14 @@ class PostgreSQLComDescribeExecutorTest {
when(result.getMetaDataContexts().getMetaData().getDatabase(DATABASE_NAME).getResourceMetaData().getStorageUnits()).thenReturn(Collections.singletonMap("ds_0", storageUnit));
when(result.getMetaDataContexts().getMetaData().containsDatabase(DATABASE_NAME)).thenReturn(true);
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
- when(result.getMetaDataContexts().getMetaData().getDatabase(DATABASE_NAME).containsSchema("public")).thenReturn(true);
- when(result.getMetaDataContexts().getMetaData().getDatabase(DATABASE_NAME).getSchema("public")).thenReturn(schema);
+ ShardingSphereDatabase database = result.getMetaDataContexts().getMetaData().getDatabase(DATABASE_NAME);
+ when(result.getMetaDataContexts().getMetaData().getDatabase(any(IdentifierValue.class))).thenReturn(database);
+ when(database.containsSchema("public")).thenReturn(true);
+ when(database.containsSchema(any(IdentifierValue.class))).thenReturn(true);
+ when(database.getSchema("public")).thenReturn(schema);
+ when(database.getSchema(any(IdentifierValue.class))).thenReturn(schema);
when(schema.containsTable(table.getName())).thenReturn(true);
when(schema.getTable(table.getName())).thenReturn(table);
- ShardingSphereDatabase database = result.getMetaDataContexts().getMetaData().getDatabase(DATABASE_NAME);
when(result.getDatabase(DATABASE_NAME)).thenReturn(database);
return result;
}
diff --git a/proxy/frontend/dialect/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/parse/PostgreSQLComParseExecutorTest.java b/proxy/frontend/dialect/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/parse/PostgreSQLComParseExecutorTest.java
index cef1899bb96..21a2c29a8b7 100644
--- a/proxy/frontend/dialect/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/parse/PostgreSQLComParseExecutorTest.java
+++ b/proxy/frontend/dialect/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/parse/PostgreSQLComParseExecutorTest.java
@@ -41,6 +41,7 @@ import org.apache.shardingsphere.proxy.backend.distsql.DistSQLStatementContext;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
import org.apache.shardingsphere.proxy.backend.session.ServerPreparedStatementRegistry;
import org.apache.shardingsphere.proxy.frontend.postgresql.command.query.extended.PostgreSQLServerPreparedStatement;
+import org.apache.shardingsphere.sql.parser.statement.core.value.identifier.IdentifierValue;
import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dal.EmptyStatement;
import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dml.InsertStatement;
import org.apache.shardingsphere.test.infra.framework.extension.mock.AutoMockExtension;
@@ -62,6 +63,7 @@ import java.util.Collections;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.isA;
+import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -192,6 +194,7 @@ class PostgreSQLComParseExecutorTest {
ShardingSphereDatabase database = new ShardingSphereDatabase("foo_db",
databaseType, new ResourceMetaData(Collections.emptyMap()), new RuleMetaData(Collections.emptyList()), Collections.singleton(createSchema()));
when(result.getMetaDataContexts().getMetaData().getDatabase("foo_db")).thenReturn(database);
+ when(result.getMetaDataContexts().getMetaData().getDatabase(any(IdentifierValue.class))).thenReturn(database);
when(result.getMetaDataContexts().getMetaData().containsDatabase("foo_db")).thenReturn(true);
return result;
}