This is an automated email from the ASF dual-hosted git repository.
chengzhang 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 68207cb7302 Refactor usage of ShardingSphereDatabase.schemas (#33855)
68207cb7302 is described below
commit 68207cb73026197733824042a3f19da743379a6d
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Dec 1 11:36:52 2024 +0800
Refactor usage of ShardingSphereDatabase.schemas (#33855)
* Refactor usage of ShardingSphereDatabase.schemas
* Refactor usage of ShardingSphereDatabase.schemas
* Refactor usage of ShardingSphereDatabase.schemas
* Refactor usage of ShardingSphereDatabase.schemas
* Refactor usage of ShardingSphereDatabase.schemas
* Refactor usage of ShardingSphereDatabase.schemas
* Refactor usage of ShardingSphereDatabase.schemas
* Refactor usage of ShardingSphereDatabase.schemas
---
.../rewrite/condition/EncryptConditionEngine.java | 9 ++---
.../context/EncryptSQLRewriteContextDecorator.java | 2 +-
...cryptPredicateRightValueTokenGeneratorTest.java | 7 ++--
.../dql/groupby/GroupByMemoryMergedResultTest.java | 2 +-
.../infra/checker/SupportedSQLCheckEngine.java | 11 +++---
.../metadata/database/ShardingSphereDatabase.java | 9 +++++
.../schema/manager/GenericSchemaManager.java | 37 ++++++++++---------
.../MySQLShardingSphereStatisticsBuilder.java | 8 ++---
.../PostgreSQLShardingSphereStatisticsBuilder.java | 24 ++++++-------
.../collector/tables/PgClassTableCollector.java | 9 ++---
.../tables/PgNamespaceTableCollector.java | 5 ++-
.../schema/manager/GenericSchemaManagerTest.java | 42 +++++++++++++---------
...tgreSQLShardingSphereStatisticsBuilderTest.java | 14 ++++----
.../infra/rewrite/context/SQLRewriteContext.java | 2 +-
.../token/common/generator/SQLTokenGenerators.java | 17 +++++----
.../rewrite/context/SQLRewriteContextTest.java | 2 +-
.../engine/GenericSQLRewriteEngineTest.java | 2 +-
.../rewrite/engine/RouteSQLRewriteEngineTest.java | 2 +-
.../common/generator/SQLTokenGeneratorsTest.java | 12 ++++---
.../pipeline/cdc/util/CDCSchemaTableUtils.java | 19 +++++-----
.../pipeline/cdc/util/CDCSchemaTableUtilsTest.java | 5 ++-
.../metadata/persist/MetaDataPersistService.java | 16 ++++-----
.../factory/InternalMetaDataFactoryTest.java | 6 ++--
.../persist/MetaDataPersistServiceTest.java | 19 +++++-----
.../schema/SchemaMetaDataPersistServiceTest.java | 4 +--
.../sql/SingleDropSchemaSupportedCheckerTest.java | 5 ++-
.../sql/SingleDropTableSupportedCheckerTest.java | 4 +--
.../executor/utils/StatisticsAssembleUtils.java | 12 +++----
.../context/planner/OptimizerMetaDataFactory.java | 5 ++-
.../metadata/schema/SQLFederationDatabase.java | 7 ++--
.../mode/metadata/MetaDataContextManager.java | 16 ++++-----
.../mode/metadata/MetaDataContextsFactory.java | 6 ++--
.../manager/DatabaseRuleConfigurationManager.java | 10 ------
.../mode/metadata/manager/StorageUnitManager.java | 6 ++--
.../mode/manager/ContextManagerTest.java | 5 ++-
.../manager/SchemaMetaDataManagerTest.java | 19 +++++-----
.../ClusterMetaDataManagerPersistService.java | 4 +--
.../StandaloneMetaDataManagerPersistService.java | 10 +++---
.../header/query/MySQLQueryHeaderBuilderTest.java | 2 +-
...enGaussSystemCatalogAdminQueryExecutorTest.java | 13 ++++---
.../engine/scenario/EncryptSQLRewriterIT.java | 3 +-
.../rewrite/engine/scenario/MixSQLRewriterIT.java | 3 +-
.../engine/scenario/ShardingSQLRewriterIT.java | 3 +-
43 files changed, 208 insertions(+), 210 deletions(-)
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/condition/EncryptConditionEngine.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/condition/EncryptConditionEngine.java
index db6cb8b5495..b44cb42d32e 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/condition/EncryptConditionEngine.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/condition/EncryptConditionEngine.java
@@ -28,6 +28,7 @@ import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementCont
import org.apache.shardingsphere.infra.binder.context.type.TableAvailable;
import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
+import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.column.ColumnSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.BetweenExpression;
@@ -63,9 +64,9 @@ public final class EncryptConditionEngine {
private static final Set<String> SUPPORTED_COMPARE_OPERATOR = new
TreeSet<>(String.CASE_INSENSITIVE_ORDER);
- private final EncryptRule encryptRule;
+ private final EncryptRule rule;
- private final Map<String, ShardingSphereSchema> schemas;
+ private final ShardingSphereDatabase database;
static {
LOGICAL_OPERATOR.add("AND");
@@ -96,7 +97,7 @@ public final class EncryptConditionEngine {
final
SQLStatementContext sqlStatementContext, final String databaseName) {
Collection<EncryptCondition> result = new LinkedList<>();
String defaultSchema = new
DatabaseTypeRegistry(sqlStatementContext.getDatabaseType()).getDefaultSchemaName(databaseName);
- ShardingSphereSchema schema = ((TableAvailable)
sqlStatementContext).getTablesContext().getSchemaName().map(schemas::get).orElseGet(()
-> schemas.get(defaultSchema));
+ ShardingSphereSchema schema = ((TableAvailable)
sqlStatementContext).getTablesContext().getSchemaName().map(database::getSchema).orElseGet(()
-> database.getSchema(defaultSchema));
Map<String, String> expressionTableNames = ((TableAvailable)
sqlStatementContext).getTablesContext().findTableNames(columnSegments, schema);
for (WhereSegment each : whereSegments) {
Collection<AndPredicate> andPredicates =
ExpressionExtractor.extractAndPredicates(each.getExpr());
@@ -122,7 +123,7 @@ public final class EncryptConditionEngine {
}
for (ColumnSegment each : ColumnExtractor.extract(expression)) {
String tableName =
expressionTableNames.getOrDefault(each.getExpression(), "");
- Optional<EncryptTable> encryptTable =
encryptRule.findEncryptTable(tableName);
+ Optional<EncryptTable> encryptTable =
rule.findEncryptTable(tableName);
if (encryptTable.isPresent() &&
encryptTable.get().isEncryptColumn(each.getIdentifier().getValue())) {
createEncryptCondition(expression,
tableName).ifPresent(encryptConditions::add);
}
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/context/EncryptSQLRewriteContextDecorator.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/context/EncryptSQLRewriteContextDecorator.java
index a85849fc096..6d9a24a1e8d 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/context/EncryptSQLRewriteContextDecorator.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/context/EncryptSQLRewriteContextDecorator.java
@@ -94,7 +94,7 @@ public final class EncryptSQLRewriteContextDecorator
implements SQLRewriteContex
Collection<WhereSegment> whereSegments =
SQLStatementContextExtractor.getWhereSegments((WhereAvailable)
sqlStatementContext, allSubqueryContexts);
Collection<ColumnSegment> columnSegments =
SQLStatementContextExtractor.getColumnSegments((WhereAvailable)
sqlStatementContext, allSubqueryContexts);
return new EncryptConditionEngine(
- rule,
sqlRewriteContext.getDatabase().getSchemas()).createEncryptConditions(whereSegments,
columnSegments, sqlStatementContext,
sqlRewriteContext.getDatabase().getName());
+ rule,
sqlRewriteContext.getDatabase()).createEncryptConditions(whereSegments,
columnSegments, sqlStatementContext, sqlRewriteContext.getDatabase().getName());
}
private void rewriteParameters(final SQLRewriteContext sqlRewriteContext,
final Collection<ParameterRewriter> parameterRewriters) {
diff --git
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/predicate/EncryptPredicateRightValueTokenGeneratorTest.java
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/predicate/EncryptPredicateRightValueTokenGeneratorTest.java
index fdf1e04dee9..00043ff32fa 100644
---
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/predicate/EncryptPredicateRightValueTokenGeneratorTest.java
+++
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/predicate/EncryptPredicateRightValueTokenGeneratorTest.java
@@ -22,18 +22,19 @@ import
org.apache.shardingsphere.encrypt.rewrite.condition.EncryptConditionEngin
import
org.apache.shardingsphere.encrypt.rewrite.token.generator.fixture.EncryptGeneratorFixtureBuilder;
import
org.apache.shardingsphere.infra.binder.context.statement.dml.UpdateStatementContext;
import org.apache.shardingsphere.infra.database.core.DefaultDatabase;
+import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
import org.apache.shardingsphere.infra.rewrite.sql.token.common.pojo.SQLToken;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.util.Collection;
-import java.util.Collections;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
class EncryptPredicateRightValueTokenGeneratorTest {
@@ -61,7 +62,9 @@ class EncryptPredicateRightValueTokenGeneratorTest {
}
private Collection<EncryptCondition> getEncryptConditions(final
UpdateStatementContext updateStatementContext) {
- return new
EncryptConditionEngine(EncryptGeneratorFixtureBuilder.createEncryptRule(),
Collections.singletonMap(DefaultDatabase.LOGIC_NAME,
mock(ShardingSphereSchema.class)))
+ ShardingSphereDatabase database = mock(ShardingSphereDatabase.class);
+
when(database.getSchema(DefaultDatabase.LOGIC_NAME)).thenReturn(mock(ShardingSphereSchema.class));
+ return new
EncryptConditionEngine(EncryptGeneratorFixtureBuilder.createEncryptRule(),
database)
.createEncryptConditions(updateStatementContext.getWhereSegments(),
updateStatementContext.getColumnSegments(), updateStatementContext,
DefaultDatabase.LOGIC_NAME);
}
}
diff --git
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/groupby/GroupByMemoryMergedResultTest.java
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/groupby/GroupByMemoryMergedResultTest.java
index d454786ee9f..345aa8c6809 100644
---
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/groupby/GroupByMemoryMergedResultTest.java
+++
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/groupby/GroupByMemoryMergedResultTest.java
@@ -207,7 +207,7 @@ class GroupByMemoryMergedResultTest {
when(table.getAllColumns()).thenReturn(Collections.emptyList());
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class,
RETURNS_DEEP_STUBS);
when(database.getSchema(DefaultDatabase.LOGIC_NAME)).thenReturn(schema);
-
when(database.getSchemas()).thenReturn(Collections.singletonMap(DefaultDatabase.LOGIC_NAME,
schema));
+
when(database.getAllSchemas()).thenReturn(Collections.singleton(schema));
when(database.getName()).thenReturn(DefaultDatabase.LOGIC_NAME);
ShardingDQLResultMerger merger = new
ShardingDQLResultMerger(TypedSPILoader.getService(DatabaseType.class, "MySQL"));
MergedResult actual = merger.merge(Arrays.asList(queryResult,
queryResult, queryResult), createSelectStatementContext(database), database,
mock(ConnectionContext.class));
diff --git
a/infra/checker/src/main/java/org/apache/shardingsphere/infra/checker/SupportedSQLCheckEngine.java
b/infra/checker/src/main/java/org/apache/shardingsphere/infra/checker/SupportedSQLCheckEngine.java
index dd562faae12..f97aa99fc7c 100644
---
a/infra/checker/src/main/java/org/apache/shardingsphere/infra/checker/SupportedSQLCheckEngine.java
+++
b/infra/checker/src/main/java/org/apache/shardingsphere/infra/checker/SupportedSQLCheckEngine.java
@@ -26,7 +26,6 @@ import
org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import org.apache.shardingsphere.infra.spi.type.ordered.OrderedSPILoader;
import java.util.Collection;
-import java.util.Map;
import java.util.Map.Entry;
/**
@@ -43,7 +42,7 @@ public final class SupportedSQLCheckEngine {
*/
@SuppressWarnings({"rawtypes", "unchecked"})
public void checkSQL(final Collection<ShardingSphereRule> rules, final
SQLStatementContext sqlStatementContext, final ShardingSphereDatabase database)
{
- ShardingSphereSchema currentSchema =
getCurrentSchema(sqlStatementContext, database.getSchemas(),
database.getName());
+ ShardingSphereSchema currentSchema =
getCurrentSchema(sqlStatementContext, database);
for (Entry<ShardingSphereRule, SupportedSQLCheckersBuilder> entry :
OrderedSPILoader.getServices(SupportedSQLCheckersBuilder.class,
rules).entrySet()) {
Collection<SupportedSQLChecker> checkers =
entry.getValue().getSupportedSQLCheckers();
for (SupportedSQLChecker each : checkers) {
@@ -54,8 +53,10 @@ public final class SupportedSQLCheckEngine {
}
}
- private ShardingSphereSchema getCurrentSchema(final SQLStatementContext
sqlStatementContext, final Map<String, ShardingSphereSchema> schemas, final
String databaseName) {
- ShardingSphereSchema defaultSchema = schemas.get(new
DatabaseTypeRegistry(sqlStatementContext.getDatabaseType()).getDefaultSchemaName(databaseName));
- return sqlStatementContext instanceof TableAvailable ?
((TableAvailable)
sqlStatementContext).getTablesContext().getSchemaName().map(schemas::get).orElse(defaultSchema)
: defaultSchema;
+ private ShardingSphereSchema getCurrentSchema(final SQLStatementContext
sqlStatementContext, final ShardingSphereDatabase database) {
+ ShardingSphereSchema defaultSchema = database.getSchema(new
DatabaseTypeRegistry(sqlStatementContext.getDatabaseType()).getDefaultSchemaName(database.getName()));
+ return sqlStatementContext instanceof TableAvailable
+ ? ((TableAvailable)
sqlStatementContext).getTablesContext().getSchemaName().map(database::getSchema).orElse(defaultSchema)
+ : defaultSchema;
}
}
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 af6b6be0e05..d3f962eea88 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
@@ -138,6 +138,15 @@ public final class ShardingSphereDatabase {
return new ResourceMetaData(dataSources, storageUnits);
}
+ /**
+ * Get all schemas.
+ *
+ * @return all schemas
+ */
+ public Collection<ShardingSphereSchema> getAllSchemas() {
+ return schemas.values();
+ }
+
/**
* Judge contains schema from database or not.
*
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/manager/GenericSchemaManager.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/manager/GenericSchemaManager.java
index aea1204ff54..60d4f531e88 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/manager/GenericSchemaManager.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/manager/GenericSchemaManager.java
@@ -19,14 +19,13 @@ package
org.apache.shardingsphere.infra.metadata.database.schema.manager;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
+import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
import java.util.Collection;
-import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.Map;
-import java.util.Map.Entry;
import java.util.stream.Collectors;
/**
@@ -38,15 +37,15 @@ public final class GenericSchemaManager {
/**
* Get to be added tables by schemas.
*
- * @param reloadSchemas reload schemas
- * @param currentSchemas current schemas
+ * @param reloadDatabase reload database
+ * @param currentDatabase current database
* @return To be added table meta data
*/
- public static Map<String, ShardingSphereSchema>
getToBeAddedTablesBySchemas(final Map<String, ShardingSphereSchema>
reloadSchemas, final Map<String, ShardingSphereSchema> currentSchemas) {
- Map<String, ShardingSphereSchema> result = new
LinkedHashMap<>(currentSchemas.size(), 1F);
- reloadSchemas.entrySet().stream().filter(entry ->
!currentSchemas.containsKey(entry.getKey())).forEach(entry ->
result.put(entry.getKey(), entry.getValue()));
- reloadSchemas.entrySet().stream().filter(entry ->
currentSchemas.containsKey(entry.getKey())).collect(Collectors.toMap(Entry::getKey,
Entry::getValue))
- .forEach((key, value) -> result.put(key,
getToBeAddedTablesBySchema(value, currentSchemas.get(key))));
+ public static Collection<ShardingSphereSchema>
getToBeAddedTablesBySchemas(final ShardingSphereDatabase reloadDatabase, final
ShardingSphereDatabase currentDatabase) {
+ Collection<ShardingSphereSchema> result = new LinkedList<>();
+ reloadDatabase.getAllSchemas().stream().filter(each ->
!currentDatabase.containsSchema(each.getName())).forEach(result::add);
+ reloadDatabase.getAllSchemas().stream().filter(each ->
currentDatabase.containsSchema(each.getName())).collect(Collectors.toList())
+ .forEach(each -> result.add(getToBeAddedTablesBySchema(each,
currentDatabase.getSchema(each.getName()))));
return result;
}
@@ -68,14 +67,14 @@ public final class GenericSchemaManager {
/**
* Get to be dropped tables by schemas.
*
- * @param reloadSchemas reload schemas
- * @param currentSchemas current schemas
+ * @param reloadDatabase reload database
+ * @param currentDatabase current database
* @return to be dropped table
*/
- public static Map<String, ShardingSphereSchema>
getToBeDroppedTablesBySchemas(final Map<String, ShardingSphereSchema>
reloadSchemas, final Map<String, ShardingSphereSchema> currentSchemas) {
- Map<String, ShardingSphereSchema> result = new
LinkedHashMap<>(currentSchemas.size(), 1F);
- currentSchemas.entrySet().stream().filter(entry ->
reloadSchemas.containsKey(entry.getKey())).collect(Collectors.toMap(Entry::getKey,
Entry::getValue))
- .forEach((key, value) -> result.put(key,
getToBeDroppedTablesBySchema(reloadSchemas.get(key), value)));
+ public static Collection<ShardingSphereSchema>
getToBeDroppedTablesBySchemas(final ShardingSphereDatabase reloadDatabase,
final ShardingSphereDatabase currentDatabase) {
+ Collection<ShardingSphereSchema> result = new LinkedList<>();
+ currentDatabase.getAllSchemas().stream().filter(entry ->
reloadDatabase.containsSchema(entry.getName())).collect(Collectors.toMap(ShardingSphereSchema::getName,
each -> each))
+ .forEach((key, value) ->
result.add(getToBeDroppedTablesBySchema(reloadDatabase.getSchema(key), value)));
return result;
}
@@ -97,11 +96,11 @@ public final class GenericSchemaManager {
/**
* Get to be dropped schemas.
*
- * @param reloadSchemas reload schemas
- * @param currentSchemas current schemas
+ * @param reloadDatabase reload database
+ * @param currentDatabase current database
* @return to be dropped schemas
*/
- public static Map<String, ShardingSphereSchema>
getToBeDroppedSchemas(final Map<String, ShardingSphereSchema> reloadSchemas,
final Map<String, ShardingSphereSchema> currentSchemas) {
- return currentSchemas.entrySet().stream().filter(entry ->
!reloadSchemas.containsKey(entry.getKey())).collect(Collectors.toMap(Entry::getKey,
Entry::getValue));
+ public static Map<String, ShardingSphereSchema>
getToBeDroppedSchemas(final ShardingSphereDatabase reloadDatabase, final
ShardingSphereDatabase currentDatabase) {
+ return currentDatabase.getAllSchemas().stream().filter(each ->
!reloadDatabase.containsSchema(each.getName())).collect(Collectors.toMap(ShardingSphereSchema::getName,
each -> each));
}
}
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/MySQLShardingSphereStatisticsBuilder.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/MySQLShardingSphereStatisticsBuilder.java
index 51c9ebb256c..5365a50fb1e 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/MySQLShardingSphereStatisticsBuilder.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/MySQLShardingSphereStatisticsBuilder.java
@@ -37,7 +37,7 @@ import java.util.Map.Entry;
public final class MySQLShardingSphereStatisticsBuilder implements
ShardingSphereStatisticsBuilder {
- private static final String SHARDING_SPHERE = "shardingsphere";
+ private static final String SHARDINGSPHERE = "shardingsphere";
private static final String CLUSTER_INFORMATION = "cluster_information";
@@ -57,12 +57,12 @@ public final class MySQLShardingSphereStatisticsBuilder
implements ShardingSpher
}
private void initSchemas(final ShardingSphereDatabase database, final
ShardingSphereDatabaseData databaseData) {
- for (Entry<String, ShardingSphereSchema> entry :
database.getSchemas().entrySet()) {
- if (SHARDING_SPHERE.equals(entry.getKey())) {
+ for (ShardingSphereSchema each : database.getAllSchemas()) {
+ if (SHARDINGSPHERE.equals(each.getName())) {
ShardingSphereSchemaData schemaData = new
ShardingSphereSchemaData();
initClusterInformationTable(schemaData);
initShardingTableStatisticsTable(schemaData);
- databaseData.putSchema(SHARDING_SPHERE, schemaData);
+ databaseData.putSchema(SHARDINGSPHERE, schemaData);
}
}
}
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/PostgreSQLShardingSphereStatisticsBuilder.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/PostgreSQLShardingSphereStatisticsBuilder.java
index 81d928444b4..75ae28d2849 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/PostgreSQLShardingSphereStatisticsBuilder.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/PostgreSQLShardingSphereStatisticsBuilder.java
@@ -42,7 +42,7 @@ import java.util.Map.Entry;
public final class PostgreSQLShardingSphereStatisticsBuilder implements
ShardingSphereStatisticsBuilder {
- private static final String SHARDING_SPHERE = "shardingsphere";
+ private static final String SHARDINGSPHERE = "shardingsphere";
private static final String CLUSTER_INFORMATION = "cluster_information";
@@ -68,18 +68,16 @@ public final class
PostgreSQLShardingSphereStatisticsBuilder implements Sharding
}
private void initSchemas(final ShardingSphereDatabase database, final
ShardingSphereDatabaseData databaseData) {
- for (Entry<String, ShardingSphereSchema> entry :
database.getSchemas().entrySet()) {
- if (SHARDING_SPHERE.equals(entry.getKey())) {
- ShardingSphereSchemaData schemaData = new
ShardingSphereSchemaData();
- initClusterInformationTable(schemaData);
- initShardingTableStatisticsTable(schemaData);
- databaseData.putSchema(SHARDING_SPHERE, schemaData);
- }
- if (INIT_DATA_SCHEMA_TABLES.containsKey(entry.getKey())) {
- ShardingSphereSchemaData schemaData = new
ShardingSphereSchemaData();
- initTables(entry.getValue(),
INIT_DATA_SCHEMA_TABLES.get(entry.getKey()), schemaData);
- databaseData.putSchema(entry.getKey(), schemaData);
- }
+ if (null != database.getSchema(SHARDINGSPHERE)) {
+ ShardingSphereSchemaData schemaData = new
ShardingSphereSchemaData();
+ initClusterInformationTable(schemaData);
+ initShardingTableStatisticsTable(schemaData);
+ databaseData.putSchema(SHARDINGSPHERE, schemaData);
+ }
+ for (String each : INIT_DATA_SCHEMA_TABLES.keySet()) {
+ ShardingSphereSchemaData schemaData = new
ShardingSphereSchemaData();
+ initTables(database.getSchema(each),
INIT_DATA_SCHEMA_TABLES.get(each), schemaData);
+ databaseData.putSchema(each, schemaData);
}
}
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/tables/PgClassTableCollector.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/tables/PgClassTableCollector.java
index d924c4c5695..2008dcd86d7 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/tables/PgClassTableCollector.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/tables/PgClassTableCollector.java
@@ -31,7 +31,6 @@ import java.sql.SQLException;
import java.util.Collection;
import java.util.LinkedList;
import java.util.Map;
-import java.util.Map.Entry;
import java.util.Optional;
/**
@@ -49,11 +48,9 @@ public final class PgClassTableCollector implements
ShardingSphereStatisticsColl
public Optional<ShardingSphereTableData> collect(final String
databaseName, final ShardingSphereTable table, final Map<String,
ShardingSphereDatabase> databases,
final RuleMetaData
globalRuleMetaData) throws SQLException {
ShardingSphereTableData result = new ShardingSphereTableData(PG_CLASS);
- long oid = 0L;
- for (Entry<String, ShardingSphereSchema> entry :
databases.get(databaseName).getSchemas().entrySet()) {
- if (PUBLIC_SCHEMA.equalsIgnoreCase(entry.getKey())) {
- result.getRows().addAll(collectForSchema(oid++,
PUBLIC_SCHEMA_OID, entry.getValue(), table));
- }
+ ShardingSphereSchema publicSchema =
databases.get(databaseName).getSchema(PUBLIC_SCHEMA);
+ if (null != publicSchema) {
+ result.getRows().addAll(collectForSchema(0L, PUBLIC_SCHEMA_OID,
publicSchema, table));
}
return Optional.of(result);
}
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/tables/PgNamespaceTableCollector.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/tables/PgNamespaceTableCollector.java
index d3213537f91..83d7eac9d91 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/tables/PgNamespaceTableCollector.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/tables/PgNamespaceTableCollector.java
@@ -30,7 +30,6 @@ import
org.apache.shardingsphere.infra.metadata.statistics.collector.ShardingSph
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
-import java.util.Map.Entry;
import java.util.Optional;
/**
@@ -49,8 +48,8 @@ public final class PgNamespaceTableCollector implements
ShardingSphereStatistics
final RuleMetaData
globalRuleMetaData) throws SQLException {
ShardingSphereTableData result = new
ShardingSphereTableData(PG_NAMESPACE);
long oid = 1L;
- for (Entry<String, ShardingSphereSchema> entry :
databases.get(databaseName).getSchemas().entrySet()) {
- result.getRows().add(new
ShardingSphereRowData(getRow(PUBLIC_SCHEMA.equalsIgnoreCase(entry.getKey()) ?
PUBLIC_SCHEMA_OID : oid++, entry.getKey(), table)));
+ for (ShardingSphereSchema each :
databases.get(databaseName).getAllSchemas()) {
+ result.getRows().add(new
ShardingSphereRowData(getRow(PUBLIC_SCHEMA.equalsIgnoreCase(each.getName()) ?
PUBLIC_SCHEMA_OID : oid++, each.getName(), table)));
}
return Optional.of(result);
}
diff --git
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/manager/GenericSchemaManagerTest.java
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/manager/GenericSchemaManagerTest.java
index 6d61b344d9f..fd562bbd522 100644
---
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/manager/GenericSchemaManagerTest.java
+++
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/manager/GenericSchemaManagerTest.java
@@ -17,8 +17,8 @@
package org.apache.shardingsphere.infra.metadata.database.schema.manager;
-import org.apache.shardingsphere.infra.database.core.DefaultDatabase;
import
org.apache.shardingsphere.infra.database.core.metadata.database.enums.TableType;
+import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
import org.junit.jupiter.api.Test;
@@ -30,31 +30,39 @@ import java.util.Map;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
class GenericSchemaManagerTest {
@Test
void assertGetToBeAddedTablesBySchemas() {
- Map<String, ShardingSphereSchema> reloadSchemas =
Collections.singletonMap("foo_schema", new
ShardingSphereSchema(DefaultDatabase.LOGIC_NAME,
- Collections.singleton(new ShardingSphereTable("foo_tbl",
Collections.emptyList(), Collections.emptyList(), Collections.emptyList())),
Collections.emptyList()));
- Map<String, ShardingSphereSchema> currentSchemas =
Collections.singletonMap(
- "foo_schema", new
ShardingSphereSchema(DefaultDatabase.LOGIC_NAME, Collections.emptyList(),
Collections.emptyList()));
- Map<String, ShardingSphereSchema> actual =
GenericSchemaManager.getToBeAddedTablesBySchemas(reloadSchemas, currentSchemas);
+ ShardingSphereDatabase reloadDatabase =
mock(ShardingSphereDatabase.class);
+
when(reloadDatabase.getAllSchemas()).thenReturn(Collections.singleton(new
ShardingSphereSchema("foo_schema",
+ Collections.singleton(new ShardingSphereTable("foo_tbl",
Collections.emptyList(), Collections.emptyList(), Collections.emptyList())),
Collections.emptyList())));
+ ShardingSphereSchema currentSchemas = new
ShardingSphereSchema("foo_schema", Collections.emptyList(),
Collections.emptyList());
+ ShardingSphereDatabase currentDatabase =
mock(ShardingSphereDatabase.class);
+
when(currentDatabase.getAllSchemas()).thenReturn(Collections.singleton(currentSchemas));
+ when(currentDatabase.containsSchema("foo_schema")).thenReturn(true);
+
when(currentDatabase.getSchema("foo_schema")).thenReturn(currentSchemas);
+ Collection<ShardingSphereSchema> actual =
GenericSchemaManager.getToBeAddedTablesBySchemas(reloadDatabase,
currentDatabase);
assertThat(actual.size(), is(1));
- assertThat(actual.get("foo_schema").getAllTables().size(), is(1));
- assertTrue(actual.get("foo_schema").containsTable("foo_tbl"));
+ assertThat(actual.iterator().next().getAllTables().size(), is(1));
+ assertTrue(actual.iterator().next().containsTable("foo_tbl"));
}
@Test
void assertGetToBeDroppedTablesBySchemas() {
- Map<String, ShardingSphereSchema> currentSchemas =
Collections.singletonMap("foo_schema", new
ShardingSphereSchema(DefaultDatabase.LOGIC_NAME,
- Collections.singleton(new ShardingSphereTable("foo_tbl",
Collections.emptyList(), Collections.emptyList(), Collections.emptyList())),
Collections.emptyList()));
- Map<String, ShardingSphereSchema> reloadSchemas =
Collections.singletonMap("foo_schema",
- new ShardingSphereSchema(DefaultDatabase.LOGIC_NAME,
Collections.emptyList(), Collections.emptyList()));
- Map<String, ShardingSphereSchema> actual =
GenericSchemaManager.getToBeDroppedTablesBySchemas(reloadSchemas,
currentSchemas);
+ ShardingSphereDatabase reloadDatabase =
mock(ShardingSphereDatabase.class);
+ when(reloadDatabase.containsSchema("foo_schema")).thenReturn(true);
+ when(reloadDatabase.getSchema("foo_schema")).thenReturn(new
ShardingSphereSchema("foo_schema", Collections.emptyList(),
Collections.emptyList()));
+ ShardingSphereDatabase currentDatabase =
mock(ShardingSphereDatabase.class);
+
when(currentDatabase.getAllSchemas()).thenReturn(Collections.singleton(new
ShardingSphereSchema("foo_schema",
+ Collections.singleton(new ShardingSphereTable("foo_tbl",
Collections.emptyList(), Collections.emptyList(), Collections.emptyList())),
Collections.emptyList())));
+ Collection<ShardingSphereSchema> actual =
GenericSchemaManager.getToBeDroppedTablesBySchemas(reloadDatabase,
currentDatabase);
assertThat(actual.size(), is(1));
- assertThat(actual.get("foo_schema").getAllTables().size(), is(1));
- assertTrue(actual.get("foo_schema").containsTable("foo_tbl"));
+ assertThat(actual.iterator().next().getAllTables().size(), is(1));
+ assertTrue(actual.iterator().next().containsTable("foo_tbl"));
}
@Test
@@ -78,8 +86,10 @@ class GenericSchemaManagerTest {
@Test
void assertGetToBeDroppedSchemas() {
+ ShardingSphereDatabase currentDatabase =
mock(ShardingSphereDatabase.class);
+
when(currentDatabase.getAllSchemas()).thenReturn(Collections.singleton(new
ShardingSphereSchema("foo_schema")));
Map<String, ShardingSphereSchema> actual =
-
GenericSchemaManager.getToBeDroppedSchemas(Collections.emptyMap(),
Collections.singletonMap("foo_schema", new
ShardingSphereSchema(DefaultDatabase.LOGIC_NAME)));
+
GenericSchemaManager.getToBeDroppedSchemas(mock(ShardingSphereDatabase.class),
currentDatabase);
assertThat(actual.size(), is(1));
assertTrue(actual.containsKey("foo_schema"));
diff --git
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/PostgreSQLShardingSphereStatisticsBuilderTest.java
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/PostgreSQLShardingSphereStatisticsBuilderTest.java
index 713b92c1be8..2fdfcc80b86 100644
---
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/PostgreSQLShardingSphereStatisticsBuilderTest.java
+++
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/PostgreSQLShardingSphereStatisticsBuilderTest.java
@@ -52,16 +52,18 @@ class PostgreSQLShardingSphereStatisticsBuilderTest {
private Map<String, ShardingSphereDatabase> mockDatabaseMap() {
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class,
RETURNS_DEEP_STUBS);
- Map<String, ShardingSphereSchema> schemaMap = mockSchemaMap();
- when(database.getSchemas()).thenReturn(schemaMap);
+ ShardingSphereSchema schema = mockSchema();
+
when(database.getAllSchemas()).thenReturn(Collections.singleton(schema));
+ when(database.getSchema("pg_catalog")).thenReturn(schema);
return Collections.singletonMap("logic_db", database);
}
- private Map<String, ShardingSphereSchema> mockSchemaMap() {
- ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
+ private ShardingSphereSchema mockSchema() {
+ ShardingSphereSchema result = mock(ShardingSphereSchema.class);
+ when(result.getName()).thenReturn("pg_catalog");
ShardingSphereTable table = mock(ShardingSphereTable.class);
when(table.getName()).thenReturn("pg_class");
- when(schema.getAllTables()).thenReturn(Collections.singleton(table));
- return Collections.singletonMap("pg_catalog", schema);
+ when(result.getAllTables()).thenReturn(Collections.singleton(table));
+ return result;
}
}
diff --git
a/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/context/SQLRewriteContext.java
b/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/context/SQLRewriteContext.java
index f7c7616422d..19925acda89 100644
---
a/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/context/SQLRewriteContext.java
+++
b/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/context/SQLRewriteContext.java
@@ -93,6 +93,6 @@ public final class SQLRewriteContext {
* Generate SQL tokens.
*/
public void generateSQLTokens() {
-
sqlTokens.addAll(sqlTokenGenerators.generateSQLTokens(database.getName(),
database.getSchemas(), sqlStatementContext, parameters, connectionContext));
+ sqlTokens.addAll(sqlTokenGenerators.generateSQLTokens(database,
sqlStatementContext, parameters, connectionContext));
}
}
diff --git
a/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/common/generator/SQLTokenGenerators.java
b/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/common/generator/SQLTokenGenerators.java
index 713e6d056c2..d87ec496b89 100644
---
a/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/common/generator/SQLTokenGenerators.java
+++
b/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/common/generator/SQLTokenGenerators.java
@@ -19,6 +19,7 @@ package
org.apache.shardingsphere.infra.rewrite.sql.token.common.generator;
import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
+import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
import
org.apache.shardingsphere.infra.rewrite.sql.token.common.generator.aware.ConnectionContextAware;
import
org.apache.shardingsphere.infra.rewrite.sql.token.common.generator.aware.ParametersAware;
@@ -30,7 +31,7 @@ import
org.apache.shardingsphere.infra.session.connection.ConnectionContext;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
-import java.util.Map;
+import java.util.stream.Collectors;
/**
* SQL token generators.
@@ -51,19 +52,18 @@ public final class SQLTokenGenerators {
/**
* Generate SQL tokens.
*
- * @param databaseName database name
+ * @param database database
* @param sqlStatementContext SQL statement context
* @param params SQL parameters
- * @param schemas schema map
* @param connectionContext connection context
* @return SQL tokens
*/
@SuppressWarnings({"rawtypes", "unchecked"})
- public List<SQLToken> generateSQLTokens(final String databaseName, final
Map<String, ShardingSphereSchema> schemas,
+ public List<SQLToken> generateSQLTokens(final ShardingSphereDatabase
database,
final SQLStatementContext
sqlStatementContext, final List<Object> params, final ConnectionContext
connectionContext) {
List<SQLToken> result = new LinkedList<>();
for (SQLTokenGenerator each : generators) {
- setUpSQLTokenGenerator(each, params, databaseName, schemas,
sqlStatementContext, result, connectionContext);
+ setUpSQLTokenGenerator(each, params, database,
sqlStatementContext, result, connectionContext);
if (each instanceof OptionalSQLTokenGenerator) {
SQLToken sqlToken = ((OptionalSQLTokenGenerator)
each).generateSQLToken(sqlStatementContext);
if (!result.contains(sqlToken)) {
@@ -76,15 +76,14 @@ public final class SQLTokenGenerators {
return result;
}
- private void setUpSQLTokenGenerator(final SQLTokenGenerator
sqlTokenGenerator, final List<Object> params,
- final String databaseName, final
Map<String, ShardingSphereSchema> schemas,
+ private void setUpSQLTokenGenerator(final SQLTokenGenerator
sqlTokenGenerator, final List<Object> params, final ShardingSphereDatabase
database,
final SQLStatementContext
sqlStatementContext, final List<SQLToken> previousSQLTokens, final
ConnectionContext connectionContext) {
if (sqlTokenGenerator instanceof ParametersAware) {
((ParametersAware) sqlTokenGenerator).setParameters(params);
}
if (sqlTokenGenerator instanceof SchemaMetaDataAware) {
- ((SchemaMetaDataAware) sqlTokenGenerator).setSchemas(schemas);
- ((SchemaMetaDataAware)
sqlTokenGenerator).setDefaultSchema(schemas.get(new
DatabaseTypeRegistry(sqlStatementContext.getDatabaseType()).getDefaultSchemaName(databaseName)));
+ ((SchemaMetaDataAware)
sqlTokenGenerator).setSchemas(database.getAllSchemas().stream().collect(Collectors.toMap(ShardingSphereSchema::getName,
each -> each)));
+ ((SchemaMetaDataAware)
sqlTokenGenerator).setDefaultSchema(database.getSchema(new
DatabaseTypeRegistry(sqlStatementContext.getDatabaseType()).getDefaultSchemaName(database.getName())));
}
if (sqlTokenGenerator instanceof PreviousSQLTokensAware) {
((PreviousSQLTokensAware)
sqlTokenGenerator).setPreviousSQLTokens(previousSQLTokens);
diff --git
a/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/context/SQLRewriteContextTest.java
b/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/context/SQLRewriteContextTest.java
index 2734ef2468c..7a87cac3792 100644
---
a/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/context/SQLRewriteContextTest.java
+++
b/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/context/SQLRewriteContextTest.java
@@ -76,7 +76,7 @@ class SQLRewriteContextTest {
when(optionalSQLTokenGenerator.generateSQLToken(sqlStatementContext)).thenReturn(sqlToken);
when(collectionSQLTokenGenerator.generateSQLTokens(sqlStatementContext)).thenReturn(Collections.singleton(sqlToken));
when(database.getName()).thenReturn(DefaultDatabase.LOGIC_NAME);
-
when(database.getSchemas()).thenReturn(Collections.singletonMap("test",
mock(ShardingSphereSchema.class)));
+ when(database.getAllSchemas()).thenReturn(Collections.singleton(new
ShardingSphereSchema("test")));
}
@Test
diff --git
a/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/engine/GenericSQLRewriteEngineTest.java
b/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/engine/GenericSQLRewriteEngineTest.java
index af9d7feae50..9cf94e4b7d5 100644
---
a/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/engine/GenericSQLRewriteEngineTest.java
+++
b/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/engine/GenericSQLRewriteEngineTest.java
@@ -73,7 +73,7 @@ class GenericSQLRewriteEngineTest {
SQLTranslatorRule rule = new SQLTranslatorRule(new
DefaultSQLTranslatorRuleConfigurationBuilder().build());
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class,
RETURNS_DEEP_STUBS);
when(database.getName()).thenReturn(DefaultDatabase.LOGIC_NAME);
-
when(database.getSchemas()).thenReturn(Collections.singletonMap("test",
mock(ShardingSphereSchema.class)));
+ when(database.getAllSchemas()).thenReturn(Collections.singleton(new
ShardingSphereSchema("test")));
when(database.getResourceMetaData().getStorageUnits()).thenReturn(Collections.emptyMap());
CommonSQLStatementContext sqlStatementContext =
mock(CommonSQLStatementContext.class);
DatabaseType databaseType = mock(DatabaseType.class);
diff --git
a/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/engine/RouteSQLRewriteEngineTest.java
b/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/engine/RouteSQLRewriteEngineTest.java
index 07f0121ee2f..b416a7f26a5 100644
---
a/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/engine/RouteSQLRewriteEngineTest.java
+++
b/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/engine/RouteSQLRewriteEngineTest.java
@@ -85,7 +85,7 @@ class RouteSQLRewriteEngineTest {
Map<String, StorageUnit> storageUnits = mockStorageUnits(databaseType);
when(result.getResourceMetaData().getStorageUnits()).thenReturn(storageUnits);
when(result.getName()).thenReturn(DefaultDatabase.LOGIC_NAME);
- when(result.getSchemas()).thenReturn(Collections.singletonMap("test",
mock(ShardingSphereSchema.class)));
+ when(result.getAllSchemas()).thenReturn(Collections.singleton(new
ShardingSphereSchema("test")));
return result;
}
diff --git
a/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/sql/token/common/generator/SQLTokenGeneratorsTest.java
b/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/sql/token/common/generator/SQLTokenGeneratorsTest.java
index ad1e9c03b24..713278a04c6 100644
---
a/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/sql/token/common/generator/SQLTokenGeneratorsTest.java
+++
b/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/sql/token/common/generator/SQLTokenGeneratorsTest.java
@@ -18,6 +18,7 @@
package org.apache.shardingsphere.infra.rewrite.sql.token.common.generator;
import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
+import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
import org.apache.shardingsphere.infra.rewrite.sql.token.common.pojo.SQLToken;
import org.apache.shardingsphere.infra.session.connection.ConnectionContext;
@@ -44,8 +45,10 @@ class SQLTokenGeneratorsTest {
when(generator.generateSQLToken(any(SQLStatementContext.class))).thenReturn(expectedToken);
SQLTokenGenerators generators = new SQLTokenGenerators();
generators.addAll(Collections.singleton(generator));
- Collection<SQLToken> actualSqlTokens = generators.generateSQLTokens(
- "sharding_db", Collections.singletonMap("test",
mock(ShardingSphereSchema.class)), mock(SQLStatementContext.class),
Collections.emptyList(), mock(ConnectionContext.class));
+ ShardingSphereDatabase database = mock(ShardingSphereDatabase.class);
+ when(database.getName()).thenReturn("sharding_db");
+ when(database.getSchema("test")).thenReturn(new
ShardingSphereSchema("test"));
+ Collection<SQLToken> actualSqlTokens =
generators.generateSQLTokens(database, mock(SQLStatementContext.class),
Collections.emptyList(), mock(ConnectionContext.class));
assertThat(actualSqlTokens.size(), is(1));
assertThat(actualSqlTokens.iterator().next(), is(expectedToken));
}
@@ -58,8 +61,9 @@ class SQLTokenGeneratorsTest {
doReturn(expectedTokens).when(generator).generateSQLTokens(any());
SQLTokenGenerators generators = new SQLTokenGenerators();
generators.addAll(Collections.singleton(generator));
- Collection<SQLToken> actualSQLTokens = generators.generateSQLTokens(
- "sharding_db", Collections.singletonMap("test",
mock(ShardingSphereSchema.class)), mock(SQLStatementContext.class),
Collections.emptyList(), mock(ConnectionContext.class));
+ ShardingSphereDatabase database = mock(ShardingSphereDatabase.class);
+ when(database.getName()).thenReturn("sharding_db");
+ Collection<SQLToken> actualSQLTokens =
generators.generateSQLTokens(database, mock(SQLStatementContext.class),
Collections.emptyList(), mock(ConnectionContext.class));
assertThat(actualSQLTokens.size(), is(2));
assertThat(actualSQLTokens, is(expectedTokens));
}
diff --git
a/kernel/data-pipeline/scenario/cdc/core/src/main/java/org/apache/shardingsphere/data/pipeline/cdc/util/CDCSchemaTableUtils.java
b/kernel/data-pipeline/scenario/cdc/core/src/main/java/org/apache/shardingsphere/data/pipeline/cdc/util/CDCSchemaTableUtils.java
index 654955097e8..e0ebecfed5d 100644
---
a/kernel/data-pipeline/scenario/cdc/core/src/main/java/org/apache/shardingsphere/data/pipeline/cdc/util/CDCSchemaTableUtils.java
+++
b/kernel/data-pipeline/scenario/cdc/core/src/main/java/org/apache/shardingsphere/data/pipeline/cdc/util/CDCSchemaTableUtils.java
@@ -37,7 +37,6 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
-import java.util.Map.Entry;
import java.util.Set;
import java.util.stream.Collectors;
@@ -79,21 +78,21 @@ public final class CDCSchemaTableUtils {
}
private static Map<String, Set<String>>
parseTableExpressionWithAllTables(final ShardingSphereDatabase database, final
Collection<String> systemSchemas) {
- Map<String, Set<String>> result = new
HashMap<>(database.getSchemas().size(), 1F);
- for (Entry<String, ShardingSphereSchema> entry :
database.getSchemas().entrySet()) {
- if (!systemSchemas.contains(entry.getKey())) {
- entry.getValue().getAllTables().forEach(each ->
result.computeIfAbsent(entry.getKey(), ignored -> new
HashSet<>()).add(each.getName()));
+ Map<String, Set<String>> result = new
HashMap<>(database.getAllSchemas().size(), 1F);
+ for (ShardingSphereSchema schema : database.getAllSchemas()) {
+ if (!systemSchemas.contains(schema.getName())) {
+ schema.getAllTables().forEach(each ->
result.computeIfAbsent(each.getName(), ignored -> new
HashSet<>()).add(each.getName()));
}
}
return result;
}
private static Map<String, Set<String>>
parseTableExpressionWithAllSchema(final ShardingSphereDatabase database, final
Collection<String> systemSchemas, final SchemaTable table) {
- Map<String, Set<String>> result = new
HashMap<>(database.getSchemas().size(), 1F);
- for (Entry<String, ShardingSphereSchema> entry :
database.getSchemas().entrySet()) {
- if (!systemSchemas.contains(entry.getKey())) {
- entry.getValue().getAllTables().stream().filter(each ->
each.getName().equals(table.getTable())).findFirst()
- .ifPresent(optional ->
result.computeIfAbsent(entry.getKey(), ignored -> new
HashSet<>()).add(optional.getName()));
+ Map<String, Set<String>> result = new
HashMap<>(database.getAllSchemas().size(), 1F);
+ for (ShardingSphereSchema schema : database.getAllSchemas()) {
+ if (!systemSchemas.contains(schema.getName())) {
+ schema.getAllTables().stream().filter(each ->
each.getName().equals(table.getTable())).findFirst()
+ .ifPresent(optional ->
result.computeIfAbsent(schema.getName(), ignored -> new
HashSet<>()).add(optional.getName()));
}
}
return result;
diff --git
a/kernel/data-pipeline/scenario/cdc/core/src/test/java/org/apache/shardingsphere/data/pipeline/cdc/util/CDCSchemaTableUtilsTest.java
b/kernel/data-pipeline/scenario/cdc/core/src/test/java/org/apache/shardingsphere/data/pipeline/cdc/util/CDCSchemaTableUtilsTest.java
index f93435dd978..9799e436e14 100644
---
a/kernel/data-pipeline/scenario/cdc/core/src/test/java/org/apache/shardingsphere/data/pipeline/cdc/util/CDCSchemaTableUtilsTest.java
+++
b/kernel/data-pipeline/scenario/cdc/core/src/test/java/org/apache/shardingsphere/data/pipeline/cdc/util/CDCSchemaTableUtilsTest.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.data.pipeline.cdc.util;
import
org.apache.shardingsphere.data.pipeline.cdc.protocol.request.StreamDataRequestBody.SchemaTable;
-import org.apache.shardingsphere.infra.database.core.DefaultDatabase;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
@@ -70,7 +69,7 @@ class CDCSchemaTableUtilsTest {
when(table1.getName()).thenReturn("t_order");
ShardingSphereTable table2 = mock(ShardingSphereTable.class);
when(table2.getName()).thenReturn("t_order2");
- return new ShardingSphereSchema(DefaultDatabase.LOGIC_NAME,
Arrays.asList(table1, table2), Collections.emptyList());
+ return new ShardingSphereSchema("public", Arrays.asList(table1,
table2), Collections.emptyList());
}
private ShardingSphereSchema mockedTestSchema() {
@@ -78,7 +77,7 @@ class CDCSchemaTableUtilsTest {
when(table1.getName()).thenReturn("t_order_item");
ShardingSphereTable table2 = mock(ShardingSphereTable.class);
when(table2.getName()).thenReturn("t_order_item2");
- return new ShardingSphereSchema(DefaultDatabase.LOGIC_NAME,
Arrays.asList(table1, table2), Collections.emptyList());
+ return new ShardingSphereSchema("test", Arrays.asList(table1, table2),
Collections.emptyList());
}
@Test
diff --git
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/MetaDataPersistService.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/MetaDataPersistService.java
index 7736249fdaf..49dd77ff782 100644
---
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/MetaDataPersistService.java
+++
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/MetaDataPersistService.java
@@ -149,10 +149,10 @@ public final class MetaDataPersistService {
* @param currentDatabase current database
*/
public void persistReloadDatabaseByAlter(final String databaseName, final
ShardingSphereDatabase reloadDatabase, final ShardingSphereDatabase
currentDatabase) {
- Map<String, ShardingSphereSchema> toBeDeletedSchemas =
GenericSchemaManager.getToBeDroppedTablesBySchemas(reloadDatabase.getSchemas(),
currentDatabase.getSchemas());
- Map<String, ShardingSphereSchema> toBeAddedSchemas =
GenericSchemaManager.getToBeAddedTablesBySchemas(reloadDatabase.getSchemas(),
currentDatabase.getSchemas());
- toBeAddedSchemas.forEach((key, value) ->
databaseMetaDataFacade.getSchema().alterByRuleAltered(databaseName, value));
- toBeDeletedSchemas.forEach((key, value) ->
databaseMetaDataFacade.getTable().drop(databaseName, key,
value.getAllTables()));
+ Collection<ShardingSphereSchema> toBeDeletedSchemas =
GenericSchemaManager.getToBeDroppedTablesBySchemas(reloadDatabase,
currentDatabase);
+ Collection<ShardingSphereSchema> toBeAddedSchemas =
GenericSchemaManager.getToBeAddedTablesBySchemas(reloadDatabase,
currentDatabase);
+ toBeAddedSchemas.forEach(each ->
databaseMetaDataFacade.getSchema().alterByRuleAltered(databaseName, each));
+ toBeDeletedSchemas.forEach(each ->
databaseMetaDataFacade.getTable().drop(databaseName, each.getName(),
each.getAllTables()));
}
/**
@@ -163,9 +163,9 @@ public final class MetaDataPersistService {
* @param currentDatabase current database
*/
public void persistReloadDatabaseByDrop(final String databaseName, final
ShardingSphereDatabase reloadDatabase, final ShardingSphereDatabase
currentDatabase) {
- Map<String, ShardingSphereSchema> toBeAlterSchemas =
GenericSchemaManager.getToBeDroppedTablesBySchemas(reloadDatabase.getSchemas(),
currentDatabase.getSchemas());
- Map<String, ShardingSphereSchema> toBeAddedSchemas =
GenericSchemaManager.getToBeAddedTablesBySchemas(reloadDatabase.getSchemas(),
currentDatabase.getSchemas());
- toBeAddedSchemas.forEach((key, value) ->
databaseMetaDataFacade.getSchema().alterByRuleDropped(databaseName, value));
- toBeAlterSchemas.forEach((key, value) ->
databaseMetaDataFacade.getTable().drop(databaseName, key,
value.getAllTables()));
+ Collection<ShardingSphereSchema> toBeAlterSchemas =
GenericSchemaManager.getToBeDroppedTablesBySchemas(reloadDatabase,
currentDatabase);
+ Collection<ShardingSphereSchema> toBeAddedSchemas =
GenericSchemaManager.getToBeAddedTablesBySchemas(reloadDatabase,
currentDatabase);
+ toBeAddedSchemas.forEach(each ->
databaseMetaDataFacade.getSchema().alterByRuleDropped(databaseName, each));
+ toBeAlterSchemas.forEach(each ->
databaseMetaDataFacade.getTable().drop(databaseName, each.getName(),
each.getAllTables()));
}
}
diff --git
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/factory/InternalMetaDataFactoryTest.java
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/factory/InternalMetaDataFactoryTest.java
index fcb3bb7d1b3..c087bf9d6f3 100644
---
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/factory/InternalMetaDataFactoryTest.java
+++
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/factory/InternalMetaDataFactoryTest.java
@@ -48,7 +48,7 @@ class InternalMetaDataFactoryTest {
assertThat(database.getName(), is("foo_db"));
assertThat(database.getProtocolType(),
is(TypedSPILoader.getService(DatabaseType.class, "MySQL")));
assertTrue(database.getRuleMetaData().getRules().isEmpty());
- assertTrue(database.getSchemas().isEmpty());
+ assertTrue(database.getAllSchemas().isEmpty());
}
@Test
@@ -59,7 +59,7 @@ class InternalMetaDataFactoryTest {
assertThat(databases.get("foo_db").getName(), is("foo_db"));
assertThat(databases.get("foo_db").getProtocolType(),
is(TypedSPILoader.getService(DatabaseType.class, "MySQL")));
assertTrue(databases.get("foo_db").getRuleMetaData().getRules().isEmpty());
- assertTrue(databases.get("foo_db").getSchemas().isEmpty());
+ assertTrue(databases.get("foo_db").getAllSchemas().isEmpty());
}
@Test
@@ -74,6 +74,6 @@ class InternalMetaDataFactoryTest {
assertThat(databases.get("foo_db").getName(), is("foo_db"));
assertThat(databases.get("foo_db").getProtocolType(),
is(TypedSPILoader.getService(DatabaseType.class, "FIXTURE")));
assertTrue(databases.get("foo_db").getRuleMetaData().getRules().isEmpty());
- assertTrue(databases.get("foo_db").getSchemas().isEmpty());
+ assertTrue(databases.get("foo_db").getAllSchemas().isEmpty());
}
}
diff --git
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/MetaDataPersistServiceTest.java
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/MetaDataPersistServiceTest.java
index 6d3d2bd19e7..8cb2153dfd7 100644
---
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/MetaDataPersistServiceTest.java
+++
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/MetaDataPersistServiceTest.java
@@ -53,6 +53,7 @@ import java.util.Properties;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyCollection;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
@@ -145,23 +146,23 @@ class MetaDataPersistServiceTest {
@Test
void assertPersistReloadDatabaseByAlter() {
- ShardingSphereSchema toBeDeletedSchema =
mock(ShardingSphereSchema.class);
+ ShardingSphereSchema toBeDeletedSchema = new
ShardingSphereSchema("to_be_deleted");
ShardingSphereSchema toBeAddedSchema = new
ShardingSphereSchema("to_be_added");
- when(GenericSchemaManager.getToBeDroppedTablesBySchemas(any(),
any())).thenReturn(Collections.singletonMap("to_be_deleted",
toBeDeletedSchema));
- when(GenericSchemaManager.getToBeAddedTablesBySchemas(any(),
any())).thenReturn(Collections.singletonMap("to_be_added", toBeAddedSchema));
+ when(GenericSchemaManager.getToBeDroppedTablesBySchemas(any(),
any())).thenReturn(Collections.singleton(toBeDeletedSchema));
+ when(GenericSchemaManager.getToBeAddedTablesBySchemas(any(),
any())).thenReturn(Collections.singleton(toBeAddedSchema));
metaDataPersistService.persistReloadDatabaseByAlter("foo_db",
mock(ShardingSphereDatabase.class), mock(ShardingSphereDatabase.class));
verify(databaseMetaDataFacade.getSchema()).alterByRuleAltered("foo_db",
toBeAddedSchema);
- verify(databaseMetaDataFacade.getTable()).drop("foo_db",
"to_be_deleted", Collections.emptyList());
+ verify(databaseMetaDataFacade.getTable()).drop(eq("foo_db"),
eq("to_be_deleted"), anyCollection());
}
@Test
void assertPersistReloadDatabaseByDrop() {
- ShardingSphereSchema toBeDeletedSchema =
mock(ShardingSphereSchema.class);
- ShardingSphereSchema toBeAlterSchema =
mock(ShardingSphereSchema.class);
- when(GenericSchemaManager.getToBeDroppedTablesBySchemas(any(),
any())).thenReturn(Collections.singletonMap("to_be_deleted",
toBeDeletedSchema));
- when(GenericSchemaManager.getToBeAddedTablesBySchemas(any(),
any())).thenReturn(Collections.singletonMap("to_be_altered", toBeAlterSchema));
+ ShardingSphereSchema toBeDeletedSchema = new
ShardingSphereSchema("to_be_deleted");
+ ShardingSphereSchema toBeAlterSchema = new
ShardingSphereSchema("to_be_altered");
+ when(GenericSchemaManager.getToBeDroppedTablesBySchemas(any(),
any())).thenReturn(Collections.singleton(toBeDeletedSchema));
+ when(GenericSchemaManager.getToBeAddedTablesBySchemas(any(),
any())).thenReturn(Collections.singleton(toBeAlterSchema));
metaDataPersistService.persistReloadDatabaseByDrop("foo_db",
mock(ShardingSphereDatabase.class), mock(ShardingSphereDatabase.class));
verify(databaseMetaDataFacade.getSchema()).alterByRuleDropped("foo_db",
toBeAlterSchema);
- verify(databaseMetaDataFacade.getTable()).drop("foo_db",
"to_be_deleted", Collections.emptyList());
+ verify(databaseMetaDataFacade.getTable()).drop(eq("foo_db"),
eq("to_be_deleted"), anyCollection());
}
}
diff --git
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/service/metadata/schema/SchemaMetaDataPersistServiceTest.java
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/service/metadata/schema/SchemaMetaDataPersistServiceTest.java
index 874868fc708..06767521251 100644
---
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/service/metadata/schema/SchemaMetaDataPersistServiceTest.java
+++
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/service/metadata/schema/SchemaMetaDataPersistServiceTest.java
@@ -143,9 +143,7 @@ class SchemaMetaDataPersistServiceTest {
@Test
void assertAlterByRefreshByDropConfiguration() {
- ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
- when(schema.getName()).thenReturn("foo_schema");
- persistService.alterByRuleDropped("foo_db", schema);
+ persistService.alterByRuleDropped("foo_db", new
ShardingSphereSchema("foo_schema"));
verify(tableMetaDataPersistService).persist(eq("foo_db"),
eq("foo_schema"), anyCollection());
}
}
diff --git
a/kernel/single/core/src/test/java/org/apache/shardingsphere/single/checker/sql/SingleDropSchemaSupportedCheckerTest.java
b/kernel/single/core/src/test/java/org/apache/shardingsphere/single/checker/sql/SingleDropSchemaSupportedCheckerTest.java
index 950215c2da9..3c2ad1674ef 100644
---
a/kernel/single/core/src/test/java/org/apache/shardingsphere/single/checker/sql/SingleDropSchemaSupportedCheckerTest.java
+++
b/kernel/single/core/src/test/java/org/apache/shardingsphere/single/checker/sql/SingleDropSchemaSupportedCheckerTest.java
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.single.checker.sql;
import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
import
org.apache.shardingsphere.infra.binder.context.statement.UnknownSQLStatementContext;
-import org.apache.shardingsphere.infra.database.core.DefaultDatabase;
import
org.apache.shardingsphere.infra.database.core.metadata.database.enums.TableType;
import
org.apache.shardingsphere.infra.exception.kernel.metadata.SchemaNotFoundException;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
@@ -64,9 +63,9 @@ class SingleDropSchemaSupportedCheckerTest {
private ShardingSphereDatabase mockDatabase() {
ShardingSphereDatabase result = mock(ShardingSphereDatabase.class,
RETURNS_DEEP_STUBS);
- ShardingSphereSchema schema = new
ShardingSphereSchema(DefaultDatabase.LOGIC_NAME);
+ ShardingSphereSchema schema = new ShardingSphereSchema("foo_schema");
schema.putTable(new ShardingSphereTable("foo_tbl",
Collections.emptyList(), Collections.emptyList(), Collections.emptyList(),
TableType.TABLE));
-
when(result.getSchemas()).thenReturn(Collections.singletonMap("foo_schema",
schema));
+ when(result.getAllSchemas()).thenReturn(Collections.singleton(schema));
return result;
}
diff --git
a/kernel/single/core/src/test/java/org/apache/shardingsphere/single/checker/sql/SingleDropTableSupportedCheckerTest.java
b/kernel/single/core/src/test/java/org/apache/shardingsphere/single/checker/sql/SingleDropTableSupportedCheckerTest.java
index 5d7bc256836..1755ed14e02 100644
---
a/kernel/single/core/src/test/java/org/apache/shardingsphere/single/checker/sql/SingleDropTableSupportedCheckerTest.java
+++
b/kernel/single/core/src/test/java/org/apache/shardingsphere/single/checker/sql/SingleDropTableSupportedCheckerTest.java
@@ -52,9 +52,9 @@ class SingleDropTableSupportedCheckerTest {
private ShardingSphereDatabase mockDatabase() {
ShardingSphereDatabase result = mock(ShardingSphereDatabase.class,
RETURNS_DEEP_STUBS);
- ShardingSphereSchema schema = new
ShardingSphereSchema(DefaultDatabase.LOGIC_NAME);
+ ShardingSphereSchema schema = new ShardingSphereSchema("foo_schema");
schema.putTable(new ShardingSphereTable("foo_tbl",
Collections.emptyList(), Collections.emptyList(), Collections.emptyList(),
TableType.TABLE));
-
when(result.getSchemas()).thenReturn(Collections.singletonMap("foo_schema",
schema));
+ when(result.getAllSchemas()).thenReturn(Collections.singleton(schema));
return result;
}
diff --git
a/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/utils/StatisticsAssembleUtils.java
b/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/utils/StatisticsAssembleUtils.java
index a8f3db81cbe..1e70d9cf7ec 100644
---
a/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/utils/StatisticsAssembleUtils.java
+++
b/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/utils/StatisticsAssembleUtils.java
@@ -31,8 +31,6 @@ import
org.apache.shardingsphere.sqlfederation.executor.constant.EnumerableConst
import java.util.Arrays;
import java.util.Collection;
-import java.util.Map;
-import java.util.Map.Entry;
/**
* Statistics assemble utils.
@@ -54,7 +52,7 @@ public final class StatisticsAssembleUtils {
assembleOpenGaussDatabaseData(result,
metaData.getDatabases().values());
} else if
(EnumerableConstants.PG_TABLES.equalsIgnoreCase(table.getName())) {
for (ShardingSphereDatabase each :
metaData.getDatabases().values()) {
- assembleOpenGaussTableData(result, each.getSchemas());
+ assembleOpenGaussTableData(result, each.getAllSchemas());
}
} else if
(EnumerableConstants.PG_ROLES.equalsIgnoreCase(table.getName())) {
assembleOpenGaussRoleData(result, metaData);
@@ -71,11 +69,11 @@ public final class StatisticsAssembleUtils {
}
}
- private static void assembleOpenGaussTableData(final
ShardingSphereTableData tableData, final Map<String, ShardingSphereSchema>
schemas) {
- for (Entry<String, ShardingSphereSchema> entry : schemas.entrySet()) {
- for (ShardingSphereTable each : entry.getValue().getAllTables()) {
+ private static void assembleOpenGaussTableData(final
ShardingSphereTableData tableData, final Collection<ShardingSphereSchema>
schemas) {
+ for (ShardingSphereSchema schema : schemas) {
+ for (ShardingSphereTable each : schema.getAllTables()) {
Object[] rows = new Object[10];
- rows[0] = entry.getKey();
+ rows[0] = schema.getName();
rows[1] = each.getName();
tableData.getRows().add(new
ShardingSphereRowData(Arrays.asList(rows)));
}
diff --git
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/context/planner/OptimizerMetaDataFactory.java
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/context/planner/OptimizerMetaDataFactory.java
index c87ac49fc57..4a5a800648c 100644
---
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/context/planner/OptimizerMetaDataFactory.java
+++
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/context/planner/OptimizerMetaDataFactory.java
@@ -60,9 +60,8 @@ public final class OptimizerMetaDataFactory {
*/
public static OptimizerMetaData create(final ShardingSphereDatabase
database) {
Map<String, Schema> schemas = new CaseInsensitiveMap<>();
- for (Entry<String, ShardingSphereSchema> entry :
database.getSchemas().entrySet()) {
- Schema sqlFederationSchema = new
SQLFederationSchema(entry.getKey(), entry.getValue(),
database.getProtocolType(), DEFAULT_DATA_TYPE_FACTORY);
- schemas.put(entry.getKey(), sqlFederationSchema);
+ for (ShardingSphereSchema each : database.getAllSchemas()) {
+ schemas.put(each.getName(), new
SQLFederationSchema(each.getName(), each, database.getProtocolType(),
DEFAULT_DATA_TYPE_FACTORY));
}
return new OptimizerMetaData(schemas);
}
diff --git
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationDatabase.java
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationDatabase.java
index 19402eed7fe..0ea31dd5195 100644
---
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationDatabase.java
+++
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationDatabase.java
@@ -27,7 +27,6 @@ import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
import java.util.Map;
-import java.util.Map.Entry;
/**
* SQL federation database.
@@ -45,9 +44,9 @@ public final class SQLFederationDatabase extends
AbstractSchema {
}
private Map<String, Schema> createSubSchemaMap(final
ShardingSphereDatabase database, final DatabaseType protocolType, final
JavaTypeFactory javaTypeFactory) {
- Map<String, Schema> result = new
CaseInsensitiveMap<>(database.getSchemas().size(), 1F);
- for (Entry<String, ShardingSphereSchema> entry :
database.getSchemas().entrySet()) {
- result.put(entry.getKey(), new SQLFederationSchema(entry.getKey(),
entry.getValue(), protocolType, javaTypeFactory));
+ Map<String, Schema> result = new
CaseInsensitiveMap<>(database.getAllSchemas().size(), 1F);
+ for (ShardingSphereSchema each : database.getAllSchemas()) {
+ result.put(each.getName(), new SQLFederationSchema(each.getName(),
each, protocolType, javaTypeFactory));
}
return result;
}
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextManager.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextManager.java
index 61c5ecb2590..7462296debb 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextManager.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextManager.java
@@ -96,7 +96,7 @@ public class MetaDataContextManager {
* @param currentDatabase current database
*/
public void dropSchemas(final String databaseName, final
ShardingSphereDatabase reloadDatabase, final ShardingSphereDatabase
currentDatabase) {
-
GenericSchemaManager.getToBeDroppedSchemas(reloadDatabase.getSchemas(),
currentDatabase.getSchemas())
+ GenericSchemaManager.getToBeDroppedSchemas(reloadDatabase,
currentDatabase)
.keySet().forEach(each ->
metaDataPersistService.getDatabaseMetaDataFacade().getSchema().drop(databaseName,
each));
}
@@ -118,12 +118,12 @@ public class MetaDataContextManager {
try {
MetaDataContexts reloadedMetaDataContexts =
createMetaDataContexts(database);
metaDataContexts.set(reloadedMetaDataContexts);
-
metaDataContexts.get().getMetaData().getDatabase(database.getName()).getSchemas()
- .forEach((schemaName, schema) -> {
- if (schema.isEmpty()) {
-
metaDataPersistService.getDatabaseMetaDataFacade().getSchema().add(database.getName(),
schemaName);
+
metaDataContexts.get().getMetaData().getDatabase(database.getName()).getAllSchemas()
+ .forEach(each -> {
+ if (each.isEmpty()) {
+
metaDataPersistService.getDatabaseMetaDataFacade().getSchema().add(database.getName(),
each.getName());
}
-
metaDataPersistService.getDatabaseMetaDataFacade().getTable().persist(database.getName(),
schemaName, schema.getAllTables());
+
metaDataPersistService.getDatabaseMetaDataFacade().getTable().persist(database.getName(),
each.getName(), each.getAllTables());
});
} catch (final SQLException ex) {
log.error("Refresh database meta data: {} failed",
database.getName(), ex);
@@ -140,8 +140,8 @@ public class MetaDataContextManager {
MetaDataContexts reloadedMetaDataContexts =
createMetaDataContexts(database);
dropSchemas(database.getName(),
reloadedMetaDataContexts.getMetaData().getDatabase(database.getName()),
database);
metaDataContexts.set(reloadedMetaDataContexts);
-
metaDataContexts.get().getMetaData().getDatabase(database.getName()).getSchemas()
- .forEach((schemaName, schema) ->
metaDataPersistService.getDatabaseMetaDataFacade().getSchema().alterByRefresh(database.getName(),
schema));
+
metaDataContexts.get().getMetaData().getDatabase(database.getName()).getAllSchemas()
+ .forEach(each ->
metaDataPersistService.getDatabaseMetaDataFacade().getSchema().alterByRefresh(database.getName(),
each));
} catch (final SQLException ex) {
log.error("Refresh table meta data: {} failed",
database.getName(), ex);
}
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsFactory.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsFactory.java
index 99e9cd6d74d..36ac87b94a5 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsFactory.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsFactory.java
@@ -238,11 +238,11 @@ public final class MetaDataContextsFactory {
}
private static void persistMetaData(final MetaDataContexts
metaDataContexts, final MetaDataPersistService persistService) {
- metaDataContexts.getMetaData().getDatabases().values().forEach(each ->
each.getSchemas().forEach((schemaName, schema) -> {
+ metaDataContexts.getMetaData().getDatabases().values().forEach(each ->
each.getAllSchemas().forEach(schema -> {
if (schema.isEmpty()) {
-
persistService.getDatabaseMetaDataFacade().getSchema().add(each.getName(),
schemaName);
+
persistService.getDatabaseMetaDataFacade().getSchema().add(each.getName(),
schema.getName());
}
-
persistService.getDatabaseMetaDataFacade().getTable().persist(each.getName(),
schemaName, schema.getAllTables());
+
persistService.getDatabaseMetaDataFacade().getTable().persist(each.getName(),
schema.getName(), schema.getAllTables());
}));
for (Entry<String, ShardingSphereDatabaseData> databaseDataEntry :
metaDataContexts.getStatistics().getDatabaseData().entrySet()) {
for (Entry<String, ShardingSphereSchemaData> schemaDataEntry :
databaseDataEntry.getValue().getSchemaData().entrySet()) {
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/DatabaseRuleConfigurationManager.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/DatabaseRuleConfigurationManager.java
index 390c2a1d1c1..9cf95b320a9 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/DatabaseRuleConfigurationManager.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/DatabaseRuleConfigurationManager.java
@@ -22,7 +22,6 @@ import
org.apache.shardingsphere.infra.config.rule.scope.DatabaseRuleConfigurati
import
org.apache.shardingsphere.infra.config.rule.scope.DatabaseRuleConfigurationEmptyChecker;
import org.apache.shardingsphere.infra.instance.ComputeNodeInstanceContext;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
import org.apache.shardingsphere.infra.rule.PartialRuleUpdateSupported;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import
org.apache.shardingsphere.infra.rule.builder.database.DatabaseRulesBuilder;
@@ -34,9 +33,7 @@ import org.apache.shardingsphere.mode.spi.PersistRepository;
import java.sql.SQLException;
import java.util.Collection;
-import java.util.LinkedHashMap;
import java.util.LinkedList;
-import java.util.Map;
import java.util.Optional;
import java.util.concurrent.atomic.AtomicReference;
@@ -110,12 +107,5 @@ public final class DatabaseRuleConfigurationManager {
MetaDataContexts reloadMetaDataContexts =
MetaDataContextsFactory.createByAlterRule(databaseName, false,
database.getRuleMetaData().getConfigurations(),
metaDataContexts.get(), metaDataPersistService, computeNodeInstanceContext);
metaDataContexts.set(reloadMetaDataContexts);
-
metaDataContexts.get().getMetaData().getDatabase(databaseName).getSchemas().putAll(buildShardingSphereSchemas(metaDataContexts.get().getMetaData().getDatabase(databaseName)));
- }
-
- private Map<String, ShardingSphereSchema> buildShardingSphereSchemas(final
ShardingSphereDatabase database) {
- Map<String, ShardingSphereSchema> result = new
LinkedHashMap<>(database.getSchemas().size(), 1F);
- database.getSchemas().forEach((key, value) -> result.put(key, new
ShardingSphereSchema(key, value.getAllTables(), value.getAllViews())));
- return result;
}
}
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/StorageUnitManager.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/StorageUnitManager.java
index a6a38f29d8d..2e32f865d7a 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/StorageUnitManager.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/StorageUnitManager.java
@@ -120,9 +120,9 @@ public final class StorageUnitManager {
}
private Map<String, ShardingSphereSchema> buildSchemas(final
ShardingSphereDatabase originalDatabase) {
- Map<String, ShardingSphereSchema> result = new
LinkedHashMap<>(originalDatabase.getSchemas().size(), 1F);
- originalDatabase.getSchemas().keySet().forEach(schemaName ->
result.put(schemaName.toLowerCase(), new ShardingSphereSchema(schemaName,
originalDatabase.getSchema(schemaName).getAllTables(),
-
metaDataPersistService.getDatabaseMetaDataFacade().getView().load(originalDatabase.getName(),
schemaName))));
+ Map<String, ShardingSphereSchema> result = new
LinkedHashMap<>(originalDatabase.getAllSchemas().size(), 1F);
+ originalDatabase.getAllSchemas().forEach(each ->
result.put(each.getName().toLowerCase(),
+ new ShardingSphereSchema(each.getName(), each.getAllTables(),
metaDataPersistService.getDatabaseMetaDataFacade().getView().load(originalDatabase.getName(),
each.getName()))));
return result;
}
diff --git
a/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
b/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
index 3cb6770fd7d..1c05cf6d369 100644
---
a/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
+++
b/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
@@ -55,7 +55,6 @@ import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Collections;
-import java.util.HashMap;
import java.util.Optional;
import java.util.Properties;
@@ -106,8 +105,8 @@ class ContextManagerTest {
when(result.containsSchema("foo_schema")).thenReturn(true);
ShardingSphereTable table = mock(ShardingSphereTable.class);
when(table.getName()).thenReturn("foo_tbl");
- ShardingSphereSchema schema = new
ShardingSphereSchema(DefaultDatabase.LOGIC_NAME, Collections.singleton(table),
Collections.emptyList());
- when(result.getSchemas()).thenReturn(new
HashMap<>(Collections.singletonMap("foo_schema", schema)));
+ ShardingSphereSchema schema = new ShardingSphereSchema("foo_schema",
Collections.singleton(table), Collections.emptyList());
+ when(result.getAllSchemas()).thenReturn(Collections.singleton(schema));
StorageUnit storageUnit = mock(StorageUnit.class, RETURNS_DEEP_STUBS);
when(storageUnit.getStorageType()).thenReturn(TypedSPILoader.getService(DatabaseType.class,
"FIXTURE"));
Connection connection = mock(Connection.class, RETURNS_DEEP_STUBS);
diff --git
a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/manager/SchemaMetaDataManagerTest.java
b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/manager/SchemaMetaDataManagerTest.java
index 0e1483ebb78..a2feb1394c7 100644
---
a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/manager/SchemaMetaDataManagerTest.java
+++
b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/manager/SchemaMetaDataManagerTest.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.mode.metadata.manager;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
-import org.apache.shardingsphere.infra.database.core.DefaultDatabase;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereColumn;
@@ -135,7 +134,7 @@ class SchemaMetaDataManagerTest {
@Test
void assertAlterNotExistedSchema() {
ShardingSphereSchema toBeAlteredSchema = createToBeAlteredSchema();
-
when(metaDataContexts.getMetaData().getDatabase("foo_db").getSchemas()).thenReturn(Collections.singletonMap("foo_schema",
toBeAlteredSchema));
+
when(metaDataContexts.getMetaData().getDatabase("foo_db").getAllSchemas()).thenReturn(Collections.singleton(toBeAlteredSchema));
when(metaDataContexts.getMetaData().getDatabase("foo_db").getSchema("foo_schema")).thenReturn(toBeAlteredSchema);
schemaMetaDataManager.alterSchema("foo_db", "bar_schema", null,
(ShardingSphereView) null);
verify(metaDataContexts.getMetaData().getDatabase("foo_db"),
times(0)).getSchema(any());
@@ -144,7 +143,7 @@ class SchemaMetaDataManagerTest {
@Test
void assertAlterSchemaForNothingAltered() {
ShardingSphereSchema toBeAlteredSchema = createToBeAlteredSchema();
-
when(metaDataContexts.getMetaData().getDatabase("foo_db").getSchemas()).thenReturn(Collections.singletonMap("foo_schema",
toBeAlteredSchema));
+
when(metaDataContexts.getMetaData().getDatabase("foo_db").getAllSchemas()).thenReturn(Collections.singleton(toBeAlteredSchema));
when(metaDataContexts.getMetaData().getDatabase("foo_db").getSchema("foo_schema")).thenReturn(toBeAlteredSchema);
schemaMetaDataManager.alterSchema("foo_db", "foo_schema", null,
(ShardingSphereView) null);
verify(metaDataContexts.getMetaData().getDatabase("foo_db"),
times(0)).getSchema(any());
@@ -153,7 +152,7 @@ class SchemaMetaDataManagerTest {
@Test
void assertAlterSchemaForTableAltered() {
ShardingSphereSchema toBeAlteredSchema = createToBeAlteredSchema();
-
when(metaDataContexts.getMetaData().getDatabase("foo_db").getSchemas()).thenReturn(Collections.singletonMap("foo_schema",
toBeAlteredSchema));
+
when(metaDataContexts.getMetaData().getDatabase("foo_db").getAllSchemas()).thenReturn(Collections.singleton(toBeAlteredSchema));
when(metaDataContexts.getMetaData().getDatabase("foo_db").getSchema("foo_schema")).thenReturn(toBeAlteredSchema);
ShardingSphereColumn toBeChangedColumn = new
ShardingSphereColumn("foo_col", Types.VARCHAR, false, false, false, true,
false, false);
ShardingSphereTable toBeChangedTable = new
ShardingSphereTable("foo_tbl", Collections.singleton(toBeChangedColumn),
Collections.emptyList(), Collections.emptyList());
@@ -166,7 +165,7 @@ class SchemaMetaDataManagerTest {
@Test
void assertAlterSchemaForViewAltered() {
ShardingSphereSchema toBeAlteredSchema = createToBeAlteredSchema();
-
when(metaDataContexts.getMetaData().getDatabase("foo_db").getSchemas()).thenReturn(Collections.singletonMap("foo_schema",
toBeAlteredSchema));
+
when(metaDataContexts.getMetaData().getDatabase("foo_db").getAllSchemas()).thenReturn(Collections.singleton(toBeAlteredSchema));
when(metaDataContexts.getMetaData().getDatabase("foo_db").getSchema("foo_schema")).thenReturn(toBeAlteredSchema);
ShardingSphereView toBeChangedView = new
ShardingSphereView("foo_view", "select `foo_view`.`foo_view`.`id` AS `id` from
`foo_view`.`foo_view`");
schemaMetaDataManager.alterSchema("foo_db", "foo_schema", null,
toBeChangedView);
@@ -178,7 +177,7 @@ class SchemaMetaDataManagerTest {
@Test
void assertAlterNotExistedSchemaForTableDropped() {
ShardingSphereSchema toBeAlteredSchema = createToBeAlteredSchema();
-
when(metaDataContexts.getMetaData().getDatabase("foo_db").getSchemas()).thenReturn(Collections.singletonMap("foo_schema",
toBeAlteredSchema));
+
when(metaDataContexts.getMetaData().getDatabase("foo_db").getAllSchemas()).thenReturn(Collections.singleton(toBeAlteredSchema));
when(metaDataContexts.getMetaData().getDatabase("foo_db").getSchema("foo_schema")).thenReturn(toBeAlteredSchema);
schemaMetaDataManager.alterSchema("foo_db", "bar_schema", "", "");
verify(metaDataContexts.getMetaData().getDatabase("foo_db"),
times(0)).getSchema(any());
@@ -187,7 +186,7 @@ class SchemaMetaDataManagerTest {
@Test
void assertAlterSchemaForNothingTableDropped() {
ShardingSphereSchema toBeAlteredSchema = createToBeAlteredSchema();
-
when(metaDataContexts.getMetaData().getDatabase("foo_db").getSchemas()).thenReturn(Collections.singletonMap("foo_schema",
toBeAlteredSchema));
+
when(metaDataContexts.getMetaData().getDatabase("foo_db").getAllSchemas()).thenReturn(Collections.singleton(toBeAlteredSchema));
when(metaDataContexts.getMetaData().getDatabase("foo_db").getSchema("foo_schema")).thenReturn(toBeAlteredSchema);
schemaMetaDataManager.alterSchema("foo_db", "foo_schema", "", "");
verify(metaDataContexts.getMetaData().getGlobalRuleMetaData(),
times(0)).getRules();
@@ -195,14 +194,14 @@ class SchemaMetaDataManagerTest {
@Test
void assertAlterSchemaForTableDropped() {
-
when(metaDataContexts.getMetaData().getDatabase("foo_db").getSchemas()).thenReturn(Collections.singletonMap("foo_schema",
createToBeAlteredSchema()));
+
when(metaDataContexts.getMetaData().getDatabase("foo_db").getAllSchemas()).thenReturn(Collections.singleton(createToBeAlteredSchema()));
schemaMetaDataManager.alterSchema("foo_db", "foo_schema", "foo_tbl",
null);
assertFalse(metaDataContexts.getMetaData().getDatabase("foo_db").getSchema("foo_schema").containsTable("foo_tbl"));
}
@Test
void assertAlterSchemaForViewDropped() {
-
when(metaDataContexts.getMetaData().getDatabase("foo_db").getSchemas()).thenReturn(Collections.singletonMap("foo_schema",
createToBeAlteredSchema()));
+
when(metaDataContexts.getMetaData().getDatabase("foo_db").getAllSchemas()).thenReturn(Collections.singleton(createToBeAlteredSchema()));
schemaMetaDataManager.alterSchema("foo_db", "foo_schema", "foo_view",
null);
assertFalse(metaDataContexts.getMetaData().getDatabase("foo_db").getSchema("foo_schema").containsView("foo_view"));
}
@@ -210,6 +209,6 @@ class SchemaMetaDataManagerTest {
private ShardingSphereSchema createToBeAlteredSchema() {
ShardingSphereTable beforeChangedTable = new
ShardingSphereTable("foo_tbl", Collections.emptyList(),
Collections.emptyList(), Collections.emptyList());
ShardingSphereView beforeChangedView = new
ShardingSphereView("foo_view", "");
- return new ShardingSphereSchema(DefaultDatabase.LOGIC_NAME,
Collections.singleton(beforeChangedTable),
Collections.singleton(beforeChangedView));
+ return new ShardingSphereSchema("foo_schema",
Collections.singleton(beforeChangedTable),
Collections.singleton(beforeChangedView));
}
}
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/ClusterMetaDataManagerPersistService.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/ClusterMetaDataManagerPersistService.java
index e4acdfa08ad..ee2234b025f 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/ClusterMetaDataManagerPersistService.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/ClusterMetaDataManagerPersistService.java
@@ -180,7 +180,7 @@ public final class ClusterMetaDataManagerPersistService
implements MetaDataManag
}
private void afterStorageUnitsAltered(final String databaseName, final
MetaDataContexts originalMetaDataContexts, final MetaDataContexts
reloadMetaDataContexts) {
-
reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getSchemas().values().forEach(each
-> metaDataPersistService.getDatabaseMetaDataFacade()
+
reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getAllSchemas().forEach(each
-> metaDataPersistService.getDatabaseMetaDataFacade()
.getSchema().alterByRuleAltered(reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getName(),
each));
Optional.ofNullable(reloadMetaDataContexts.getStatistics().getDatabaseData().get(databaseName))
.ifPresent(optional ->
optional.getSchemaData().forEach((schemaName, schemaData) ->
metaDataPersistService.getShardingSphereDataPersistService()
@@ -190,7 +190,7 @@ public final class ClusterMetaDataManagerPersistService
implements MetaDataManag
}
private void afterStorageUnitsDropped(final String databaseName, final
MetaDataContexts originalMetaDataContexts, final MetaDataContexts
reloadMetaDataContexts) {
-
reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getSchemas().values().forEach(each
-> metaDataPersistService.getDatabaseMetaDataFacade()
+
reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getAllSchemas().forEach(each
-> metaDataPersistService.getDatabaseMetaDataFacade()
.getSchema().alterByRuleDropped(reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getName(),
each));
Optional.ofNullable(reloadMetaDataContexts.getStatistics().getDatabaseData().get(databaseName))
.ifPresent(optional ->
optional.getSchemaData().forEach((schemaName, schemaData) ->
metaDataPersistService.getShardingSphereDataPersistService()
diff --git
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/StandaloneMetaDataManagerPersistService.java
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/StandaloneMetaDataManagerPersistService.java
index 6de859597db..3bdbbe4ab67 100644
---
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/StandaloneMetaDataManagerPersistService.java
+++
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/StandaloneMetaDataManagerPersistService.java
@@ -229,12 +229,12 @@ public final class
StandaloneMetaDataManagerPersistService implements MetaDataMa
metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabases().putAll(changedDatabases);
metaDataContextManager.getMetaDataContexts().get().getMetaData().getGlobalRuleMetaData().getRules()
.forEach(each -> ((GlobalRule)
each).refresh(metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabases(),
GlobalRuleChangedType.DATABASE_CHANGED));
-
metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabase(databaseName).getSchemas()
- .forEach((schemaName, schema) -> {
- if (schema.isEmpty()) {
-
metaDataPersistService.getDatabaseMetaDataFacade().getSchema().add(databaseName,
schemaName);
+
metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabase(databaseName).getAllSchemas()
+ .forEach(each -> {
+ if (each.isEmpty()) {
+
metaDataPersistService.getDatabaseMetaDataFacade().getSchema().add(databaseName,
each.getName());
}
-
metaDataPersistService.getDatabaseMetaDataFacade().getTable().persist(databaseName,
schemaName, schema.getAllTables());
+
metaDataPersistService.getDatabaseMetaDataFacade().getTable().persist(databaseName,
each.getName(), each.getAllTables());
});
DataSourceUnitPersistService dataSourceService =
metaDataPersistService.getDataSourceUnitService();
metaDataPersistService.getMetaDataVersionPersistService()
diff --git
a/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/response/header/query/MySQLQueryHeaderBuilderTest.java
b/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/response/header/query/MySQLQueryHeaderBuilderTest.java
index 668269e53d0..ef92f8a15aa 100644
---
a/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/response/header/query/MySQLQueryHeaderBuilderTest.java
+++
b/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/response/header/query/MySQLQueryHeaderBuilderTest.java
@@ -77,7 +77,7 @@ class MySQLQueryHeaderBuilderTest {
@Test
void assertBuildWithNullSchema() throws SQLException {
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class,
RETURNS_DEEP_STUBS);
- when(database.getSchemas()).thenReturn(Collections.emptyMap());
+ when(database.getAllSchemas()).thenReturn(Collections.emptyList());
DataNodeRuleAttribute ruleAttribute =
mock(DataNodeRuleAttribute.class);
when(ruleAttribute.findLogicTableByActualTable("t_order")).thenReturn(Optional.of("t_order"));
when(database.getRuleMetaData().getAttributes(DataNodeRuleAttribute.class)).thenReturn(Collections.singleton(ruleAttribute));
diff --git
a/proxy/backend/type/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussSystemCatalogAdminQueryExecutorTest.java
b/proxy/backend/type/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussSystemCatalogAdminQueryExecutorTest.java
index 30327ee5d77..8b89ad219fa 100644
---
a/proxy/backend/type/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussSystemCatalogAdminQueryExecutorTest.java
+++
b/proxy/backend/type/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussSystemCatalogAdminQueryExecutorTest.java
@@ -19,7 +19,6 @@ package
org.apache.shardingsphere.proxy.backend.opengauss.handler.admin;
import
org.apache.shardingsphere.infra.binder.context.statement.dml.SelectStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
-import org.apache.shardingsphere.infra.database.core.DefaultDatabase;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import
org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResultMetaData;
import org.apache.shardingsphere.infra.merge.result.MergedResult;
@@ -86,7 +85,7 @@ class OpenGaussSystemCatalogAdminQueryExecutorTest {
when(connectionSession.getProtocolType()).thenReturn(TypedSPILoader.getService(DatabaseType.class,
"openGauss"));
ConnectionContext connectionContext = mockConnectionContext();
when(connectionSession.getConnectionContext()).thenReturn(connectionContext);
- Map<String, ShardingSphereDatabase> databases =
createShardingSphereDatabaseMap();
+ Map<String, ShardingSphereDatabase> databases = createDatabases();
SQLFederationRule sqlFederationRule = new SQLFederationRule(new
SQLFederationRuleConfiguration(false, false, new CacheOption(1, 1L)),
databases);
when(ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getGlobalRuleMetaData()).thenReturn(mock(RuleMetaData.class));
OpenGaussSelectStatement sqlStatement =
createSelectStatementForPgDatabase();
@@ -118,7 +117,7 @@ class OpenGaussSystemCatalogAdminQueryExecutorTest {
return result;
}
- private Map<String, ShardingSphereDatabase>
createShardingSphereDatabaseMap() {
+ private Map<String, ShardingSphereDatabase> createDatabases() {
Map<String, ShardingSphereDatabase> result = new LinkedHashMap<>(1,
1F);
Collection<ShardingSphereColumn> columns = Arrays.asList(
new ShardingSphereColumn("datname", 12, false, false, false,
true, false, false),
@@ -136,7 +135,7 @@ class OpenGaussSystemCatalogAdminQueryExecutorTest {
new ShardingSphereColumn("datacl", 2003, false, false, false,
true, false, false),
new ShardingSphereColumn("datfrozenxid64", 1111, false, false,
false, true, false, false),
new ShardingSphereColumn("datminmxid", 1111, false, false,
false, true, false, false));
- ShardingSphereSchema schema = new
ShardingSphereSchema(DefaultDatabase.LOGIC_NAME,
+ ShardingSphereSchema schema = new ShardingSphereSchema("pg_catalog",
Collections.singleton(new ShardingSphereTable("pg_database",
columns, Collections.emptyList(), Collections.emptyList())),
Collections.emptyList());
result.put("sharding_db", new ShardingSphereDatabase("sharding_db",
TypedSPILoader.getService(DatabaseType.class, "openGauss"),
mock(ResourceMetaData.class, RETURNS_DEEP_STUBS),
mock(RuleMetaData.class), Collections.singletonMap("pg_catalog", schema)));
@@ -150,7 +149,7 @@ class OpenGaussSystemCatalogAdminQueryExecutorTest {
when(ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getGlobalRuleMetaData()).thenReturn(ruleMetaData);
ConfigurationProperties props = new ConfigurationProperties(new
Properties());
when(ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getProps()).thenReturn(props);
- Map<String, ShardingSphereDatabase> databases =
createShardingSphereDatabaseMap();
+ Map<String, ShardingSphereDatabase> databases = createDatabases();
SQLFederationRule sqlFederationRule = new SQLFederationRule(new
SQLFederationRuleConfiguration(false, false, new CacheOption(1, 1L)),
databases);
OpenGaussSelectStatement sqlStatement =
createSelectStatementForVersion();
ShardingSphereMetaData metaData =
@@ -186,7 +185,7 @@ class OpenGaussSystemCatalogAdminQueryExecutorTest {
when(ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getGlobalRuleMetaData()).thenReturn(ruleMetaData);
ConfigurationProperties props = new ConfigurationProperties(new
Properties());
when(ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getProps()).thenReturn(props);
- Map<String, ShardingSphereDatabase> databases =
createShardingSphereDatabaseMap();
+ Map<String, ShardingSphereDatabase> databases = createDatabases();
SQLFederationRule sqlFederationRule = new SQLFederationRule(new
SQLFederationRuleConfiguration(false, false, new CacheOption(1, 1L)),
databases);
OpenGaussSelectStatement sqlStatement =
createSelectStatementForGsPasswordDeadlineAndIntervalToNum();
ShardingSphereMetaData metaData =
@@ -224,7 +223,7 @@ class OpenGaussSystemCatalogAdminQueryExecutorTest {
when(ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getGlobalRuleMetaData()).thenReturn(ruleMetaData);
ConfigurationProperties props = new ConfigurationProperties(new
Properties());
when(ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getProps()).thenReturn(props);
- Map<String, ShardingSphereDatabase> databases =
createShardingSphereDatabaseMap();
+ Map<String, ShardingSphereDatabase> databases = createDatabases();
SQLFederationRule sqlFederationRule = new SQLFederationRule(new
SQLFederationRuleConfiguration(false, false, new CacheOption(1, 1L)),
databases);
OpenGaussSelectStatement sqlStatement =
createSelectStatementForGsPasswordNotifyTime();
ShardingSphereMetaData metaData =
diff --git
a/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/scenario/EncryptSQLRewriterIT.java
b/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/scenario/EncryptSQLRewriterIT.java
index c26e709edd6..00b7b46bb12 100644
---
a/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/scenario/EncryptSQLRewriterIT.java
+++
b/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/scenario/EncryptSQLRewriterIT.java
@@ -17,7 +17,6 @@
package org.apache.shardingsphere.test.it.rewrite.engine.scenario;
-import org.apache.shardingsphere.infra.database.core.DefaultDatabase;
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;
@@ -96,7 +95,7 @@ class EncryptSQLRewriterIT extends SQLRewriterIT {
new ShardingSphereColumn("email", Types.VARCHAR, false, false,
false, true, false, false),
new ShardingSphereColumn("telephone", Types.VARCHAR, false,
false, false, true, false, false),
new ShardingSphereColumn("creation_date", Types.DATE, false,
false, false, true, false, false)), Collections.emptyList(),
Collections.emptyList()));
- return Collections.singletonMap(schemaName, new
ShardingSphereSchema(DefaultDatabase.LOGIC_NAME, tables,
Collections.emptyList()));
+ return Collections.singletonMap(schemaName, new
ShardingSphereSchema(schemaName, tables, Collections.emptyList()));
}
@Override
diff --git
a/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/scenario/MixSQLRewriterIT.java
b/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/scenario/MixSQLRewriterIT.java
index ee9562b969b..58b64d16506 100644
---
a/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/scenario/MixSQLRewriterIT.java
+++
b/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/scenario/MixSQLRewriterIT.java
@@ -17,7 +17,6 @@
package org.apache.shardingsphere.test.it.rewrite.engine.scenario;
-import org.apache.shardingsphere.infra.database.core.DefaultDatabase;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereColumn;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereIndex;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
@@ -70,7 +69,7 @@ class MixSQLRewriterIT extends SQLRewriterIT {
new ShardingSphereColumn("password", Types.VARCHAR, false,
false, false, true, false, false),
new ShardingSphereColumn("amount", Types.DECIMAL, false,
false, false, true, false, false),
new ShardingSphereColumn("status", Types.TINYINT, false,
false, false, false, false, false)), Collections.emptyList(),
Collections.emptyList()));
- return Collections.singletonMap(schemaName, new
ShardingSphereSchema(DefaultDatabase.LOGIC_NAME, tables,
Collections.emptyList()));
+ return Collections.singletonMap(schemaName, new
ShardingSphereSchema(schemaName, tables, Collections.emptyList()));
}
@Override
diff --git
a/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/scenario/ShardingSQLRewriterIT.java
b/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/scenario/ShardingSQLRewriterIT.java
index e2e7e938b1b..482a4e27ef0 100644
---
a/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/scenario/ShardingSQLRewriterIT.java
+++
b/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/scenario/ShardingSQLRewriterIT.java
@@ -17,7 +17,6 @@
package org.apache.shardingsphere.test.it.rewrite.engine.scenario;
-import org.apache.shardingsphere.infra.database.core.DefaultDatabase;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereColumn;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereIndex;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
@@ -104,7 +103,7 @@ class ShardingSQLRewriterIT extends SQLRewriterIT {
tables.add(new ShardingSphereTable("t_account_view", Arrays.asList(
new ShardingSphereColumn("id", Types.INTEGER, false, false,
false, true, false, false),
new ShardingSphereColumn("account_id", Types.INTEGER, false,
false, false, true, false, false)), Collections.emptyList(),
Collections.emptyList()));
- return Collections.singletonMap(schemaName, new
ShardingSphereSchema(DefaultDatabase.LOGIC_NAME, tables,
Collections.emptyList()));
+ return Collections.singletonMap(schemaName, new
ShardingSphereSchema(schemaName, tables, Collections.emptyList()));
}
@Override