You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2022/12/29 09:15:24 UTC
[shardingsphere] branch master updated: Refactor DDL Refresher (#23161)
This is an automated email from the ASF dual-hosted git repository.
panjuan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 551cbd0a633 Refactor DDL Refresher (#23161)
551cbd0a633 is described below
commit 551cbd0a633e08406ebf87ad9fb22f586293189a
Author: zhaojinchao <zh...@apache.org>
AuthorDate: Thu Dec 29 17:15:17 2022 +0800
Refactor DDL Refresher (#23161)
* Refactor Refresher
* Refactor logicDataSourcenName
* Fix it
---
.../refresher/type/index/AlterIndexStatementSchemaRefresher.java | 2 +-
.../refresher/type/index/CreateIndexStatementSchemaRefresher.java | 2 +-
.../refresher/type/index/DropIndexStatementSchemaRefresher.java | 2 +-
.../refresher/type/schema/AlterSchemaStatementSchemaRefresher.java | 2 +-
.../refresher/type/table/AlterTableStatementSchemaRefresher.java | 3 ++-
.../refresher/type/table/CreateTableStatementSchemaRefresher.java | 3 ++-
.../refresher/type/table/DropTableStatementSchemaRefresher.java | 2 +-
.../refresher/type/table/RenameTableStatementSchemaRefresher.java | 3 ++-
.../refresher/type/view/AlterViewStatementSchemaRefresher.java | 3 ++-
.../refresher/type/view/CreateViewStatementSchemaRefresher.java | 3 ++-
.../refresher/type/view/DropViewStatementSchemaRefresher.java | 2 +-
.../mode/manager/standalone/StandaloneModeContextManager.java | 7 ++++---
12 files changed, 20 insertions(+), 14 deletions(-)
diff --git a/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/index/AlterIndexStatementSchemaRefresher.java b/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/index/AlterIndexStatementSchemaRefresher.java
index d846012bc68..6bd26206365 100644
--- a/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/index/AlterIndexStatementSchemaRefresher.java
+++ b/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/index/AlterIndexStatementSchemaRefresher.java
@@ -56,7 +56,7 @@ public final class AlterIndexStatementSchemaRefresher implements MetaDataRefresh
newTable.getIndexes().remove(indexName);
String renameIndexName = renameIndex.get().getIndexName().getIdentifier().getValue();
newTable.getIndexes().put(renameIndexName, new ShardingSphereIndex(renameIndexName));
- AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new AlterSchemaMetaDataPOJO(database.getName(), actualSchemaName, logicDataSourceNames.iterator().next());
+ AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new AlterSchemaMetaDataPOJO(database.getName(), actualSchemaName, null);
alterSchemaMetaDataPOJO.getAlteredTables().add(newTable);
modeContextManager.alterSchemaMetaData(alterSchemaMetaDataPOJO);
}
diff --git a/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/index/CreateIndexStatementSchemaRefresher.java b/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/index/CreateIndexStatementSchemaRefresher.java
index 0271f4f246a..d0baba1fbcb 100644
--- a/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/index/CreateIndexStatementSchemaRefresher.java
+++ b/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/index/CreateIndexStatementSchemaRefresher.java
@@ -47,7 +47,7 @@ public final class CreateIndexStatementSchemaRefresher implements MetaDataRefres
String tableName = sqlStatement.getTable().getTableName().getIdentifier().getValue();
ShardingSphereTable table = newShardingSphereTable(database.getSchema(schemaName).getTable(tableName));
table.getIndexes().put(indexName, new ShardingSphereIndex(indexName));
- AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new AlterSchemaMetaDataPOJO(database.getName(), schemaName, logicDataSourceNames.iterator().next());
+ AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new AlterSchemaMetaDataPOJO(database.getName(), schemaName, null);
alterSchemaMetaDataPOJO.getAlteredTables().add(table);
modeContextManager.alterSchemaMetaData(alterSchemaMetaDataPOJO);
}
diff --git a/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/index/DropIndexStatementSchemaRefresher.java b/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/index/DropIndexStatementSchemaRefresher.java
index 611ed7cfd33..0bf63f4b7cc 100644
--- a/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/index/DropIndexStatementSchemaRefresher.java
+++ b/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/index/DropIndexStatementSchemaRefresher.java
@@ -49,7 +49,7 @@ public final class DropIndexStatementSchemaRefresher implements MetaDataRefreshe
if (!logicTableName.isPresent()) {
continue;
}
- AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new AlterSchemaMetaDataPOJO(database.getName(), actualSchemaName, logicDataSourceNames.iterator().next());
+ AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new AlterSchemaMetaDataPOJO(database.getName(), actualSchemaName, null);
ShardingSphereTable table = newShardingSphereTable(database.getSchema(actualSchemaName).getTable(logicTableName.get()));
table.getIndexes().remove(each.getIndexName().getIdentifier().getValue());
alterSchemaMetaDataPOJO.getAlteredTables().add(table);
diff --git a/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/schema/AlterSchemaStatementSchemaRefresher.java b/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/schema/AlterSchemaStatementSchemaRefresher.java
index dacfe3cb704..b95e5f75284 100644
--- a/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/schema/AlterSchemaStatementSchemaRefresher.java
+++ b/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/schema/AlterSchemaStatementSchemaRefresher.java
@@ -40,7 +40,7 @@ public final class AlterSchemaStatementSchemaRefresher implements MetaDataRefres
if (!renameSchemaName.isPresent()) {
return;
}
- modeContextManager.alterSchema(new AlterSchemaPOJO(database.getName(), logicDataSourceNames.iterator().next(),
+ modeContextManager.alterSchema(new AlterSchemaPOJO(database.getName(), logicDataSourceNames.isEmpty() ? null : logicDataSourceNames.iterator().next(),
sqlStatement.getSchemaName().getValue().toLowerCase(), renameSchemaName.get()));
}
diff --git a/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/table/AlterTableStatementSchemaRefresher.java b/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/table/AlterTableStatementSchemaRefresher.java
index 954453ce31a..f4d65e5f708 100644
--- a/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/table/AlterTableStatementSchemaRefresher.java
+++ b/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/table/AlterTableStatementSchemaRefresher.java
@@ -47,7 +47,8 @@ public final class AlterTableStatementSchemaRefresher implements MetaDataRefresh
public void refresh(final ModeContextManager modeContextManager, final ShardingSphereDatabase database, final Collection<String> logicDataSourceNames,
final String schemaName, final AlterTableStatement sqlStatement, final ConfigurationProperties props) throws SQLException {
String tableName = sqlStatement.getTable().getTableName().getIdentifier().getValue();
- AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new AlterSchemaMetaDataPOJO(database.getName(), schemaName, logicDataSourceNames.iterator().next());
+ AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new AlterSchemaMetaDataPOJO(database.getName(), schemaName,
+ logicDataSourceNames.isEmpty() ? null : logicDataSourceNames.iterator().next());
if (sqlStatement.getRenameTable().isPresent()) {
String renameTable = sqlStatement.getRenameTable().get().getTableName().getIdentifier().getValue();
alterSchemaMetaDataPOJO.getAlteredTables().add(getTable(database, logicDataSourceNames, schemaName, renameTable, props));
diff --git a/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/table/CreateTableStatementSchemaRefresher.java b/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/table/CreateTableStatementSchemaRefresher.java
index e726e0d60c8..79342986771 100644
--- a/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/table/CreateTableStatementSchemaRefresher.java
+++ b/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/table/CreateTableStatementSchemaRefresher.java
@@ -56,7 +56,8 @@ public final class CreateTableStatementSchemaRefresher implements MetaDataRefres
Map<String, ShardingSphereSchema> schemaMap = GenericSchemaBuilder.build(Collections.singletonList(tableName), material);
Optional<ShardingSphereTable> actualTableMetaData = Optional.ofNullable(schemaMap.get(schemaName)).map(optional -> optional.getTable(tableName));
if (actualTableMetaData.isPresent()) {
- AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new AlterSchemaMetaDataPOJO(database.getName(), schemaName, logicDataSourceNames.iterator().next());
+ AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new AlterSchemaMetaDataPOJO(database.getName(), schemaName,
+ logicDataSourceNames.isEmpty() ? null : logicDataSourceNames.iterator().next());
alterSchemaMetaDataPOJO.getAlteredTables().add(actualTableMetaData.get());
modeContextManager.alterSchemaMetaData(alterSchemaMetaDataPOJO);
}
diff --git a/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/table/DropTableStatementSchemaRefresher.java b/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/table/DropTableStatementSchemaRefresher.java
index ff31b5b3f5e..a18dcba2254 100644
--- a/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/table/DropTableStatementSchemaRefresher.java
+++ b/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/table/DropTableStatementSchemaRefresher.java
@@ -34,7 +34,7 @@ public final class DropTableStatementSchemaRefresher implements MetaDataRefreshe
@Override
public void refresh(final ModeContextManager modeContextManager, final ShardingSphereDatabase database, final Collection<String> logicDataSourceNames,
final String schemaName, final DropTableStatement sqlStatement, final ConfigurationProperties props) {
- AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new AlterSchemaMetaDataPOJO(database.getName(), schemaName, logicDataSourceNames.iterator().next());
+ AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new AlterSchemaMetaDataPOJO(database.getName(), schemaName, null);
sqlStatement.getTables().forEach(each -> alterSchemaMetaDataPOJO.getDroppedTables().add(each.getTableName().getIdentifier().getValue()));
modeContextManager.alterSchemaMetaData(alterSchemaMetaDataPOJO);
}
diff --git a/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/table/RenameTableStatementSchemaRefresher.java b/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/table/RenameTableStatementSchemaRefresher.java
index d399628a813..676d27ed105 100644
--- a/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/table/RenameTableStatementSchemaRefresher.java
+++ b/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/table/RenameTableStatementSchemaRefresher.java
@@ -48,7 +48,8 @@ public final class RenameTableStatementSchemaRefresher implements MetaDataRefres
public void refresh(final ModeContextManager modeContextManager, final ShardingSphereDatabase database, final Collection<String> logicDataSourceNames,
final String schemaName, final RenameTableStatement sqlStatement, final ConfigurationProperties props) throws SQLException {
for (RenameTableDefinitionSegment each : sqlStatement.getRenameTables()) {
- AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new AlterSchemaMetaDataPOJO(database.getName(), schemaName, logicDataSourceNames.iterator().next());
+ AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new AlterSchemaMetaDataPOJO(database.getName(), schemaName,
+ logicDataSourceNames.isEmpty() ? null : logicDataSourceNames.iterator().next());
alterSchemaMetaDataPOJO.getAlteredTables().add(getTable(database, logicDataSourceNames, schemaName, each.getRenameTable().getTableName().getIdentifier().getValue(), props));
alterSchemaMetaDataPOJO.getDroppedTables().add(each.getTable().getTableName().getIdentifier().getValue());
modeContextManager.alterSchemaMetaData(alterSchemaMetaDataPOJO);
diff --git a/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/view/AlterViewStatementSchemaRefresher.java b/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/view/AlterViewStatementSchemaRefresher.java
index fa62dfeb857..738f5975f57 100644
--- a/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/view/AlterViewStatementSchemaRefresher.java
+++ b/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/view/AlterViewStatementSchemaRefresher.java
@@ -50,7 +50,8 @@ public final class AlterViewStatementSchemaRefresher implements MetaDataRefreshe
public void refresh(final ModeContextManager modeContextManager, final ShardingSphereDatabase database, final Collection<String> logicDataSourceNames,
final String schemaName, final AlterViewStatement sqlStatement, final ConfigurationProperties props) throws SQLException {
String viewName = sqlStatement.getView().getTableName().getIdentifier().getValue();
- AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new AlterSchemaMetaDataPOJO(database.getName(), schemaName, logicDataSourceNames.iterator().next());
+ AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new AlterSchemaMetaDataPOJO(database.getName(), schemaName,
+ logicDataSourceNames.isEmpty() ? null : logicDataSourceNames.iterator().next());
Optional<SimpleTableSegment> renameView = AlterViewStatementHandler.getRenameView(sqlStatement);
if (renameView.isPresent()) {
String renameViewName = renameView.get().getTableName().getIdentifier().getValue();
diff --git a/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/view/CreateViewStatementSchemaRefresher.java b/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/view/CreateViewStatementSchemaRefresher.java
index 8e3d3a4c2e0..1284a751038 100644
--- a/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/view/CreateViewStatementSchemaRefresher.java
+++ b/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/view/CreateViewStatementSchemaRefresher.java
@@ -57,7 +57,8 @@ public final class CreateViewStatementSchemaRefresher implements MetaDataRefresh
Map<String, ShardingSphereSchema> schemaMap = GenericSchemaBuilder.build(Collections.singletonList(viewName), material);
Optional<ShardingSphereTable> actualTableMetaData = Optional.ofNullable(schemaMap.get(schemaName)).map(optional -> optional.getTable(viewName));
if (actualTableMetaData.isPresent()) {
- AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new AlterSchemaMetaDataPOJO(database.getName(), schemaName, logicDataSourceNames.iterator().next());
+ AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new AlterSchemaMetaDataPOJO(database.getName(), schemaName,
+ logicDataSourceNames.isEmpty() ? null : logicDataSourceNames.iterator().next());
alterSchemaMetaDataPOJO.getAlteredTables().add(actualTableMetaData.get());
alterSchemaMetaDataPOJO.getAlteredViews().add(new ShardingSphereView(viewName, sqlStatement.getViewDefinition()));
modeContextManager.alterSchemaMetaData(alterSchemaMetaDataPOJO);
diff --git a/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/view/DropViewStatementSchemaRefresher.java b/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/view/DropViewStatementSchemaRefresher.java
index 10ab5539474..c6d1b988b8c 100644
--- a/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/view/DropViewStatementSchemaRefresher.java
+++ b/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/view/DropViewStatementSchemaRefresher.java
@@ -34,7 +34,7 @@ public final class DropViewStatementSchemaRefresher implements MetaDataRefresher
@Override
public void refresh(final ModeContextManager modeContextManager, final ShardingSphereDatabase database, final Collection<String> logicDataSourceNames,
final String schemaName, final DropViewStatement sqlStatement, final ConfigurationProperties props) {
- AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new AlterSchemaMetaDataPOJO(database.getName(), schemaName, logicDataSourceNames.iterator().next());
+ AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new AlterSchemaMetaDataPOJO(database.getName(), schemaName, null);
sqlStatement.getViews().forEach(each -> {
String viewName = each.getTableName().getIdentifier().getValue();
alterSchemaMetaDataPOJO.getDroppedTables().add(viewName);
diff --git a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/StandaloneModeContextManager.java b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/StandaloneModeContextManager.java
index ac6f0513606..2e9491ebf91 100644
--- a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/StandaloneModeContextManager.java
+++ b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/StandaloneModeContextManager.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.mode.manager.standalone;
+import com.google.common.base.Strings;
import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
import org.apache.shardingsphere.infra.datasource.props.DataSourceProperties;
import org.apache.shardingsphere.infra.instance.mode.ModeContextManager;
@@ -95,7 +96,7 @@ public final class StandaloneModeContextManager implements ModeContextManager, C
private void addDataNode(final ShardingSphereDatabase database, final String logicDataSourceName, final String schemaName, final Collection<String> tobeAddedTableNames) {
tobeAddedTableNames.forEach(each -> {
- if (!containsInImmutableDataNodeContainedRule(each, database)) {
+ if (!Strings.isNullOrEmpty(logicDataSourceName) && !containsInImmutableDataNodeContainedRule(each, database)) {
database.getRuleMetaData().findRules(MutableDataNodeRule.class).forEach(rule -> rule.put(logicDataSourceName, schemaName, each));
}
});
@@ -109,7 +110,7 @@ public final class StandaloneModeContextManager implements ModeContextManager, C
private void addTablesToDataNode(final ShardingSphereDatabase database, final String schemaName, final String logicDataSourceName, final Map<String, ShardingSphereTable> toBeAddedTables) {
for (Entry<String, ShardingSphereTable> entry : toBeAddedTables.entrySet()) {
- if (!containsInImmutableDataNodeContainedRule(entry.getKey(), database)) {
+ if (!Strings.isNullOrEmpty(logicDataSourceName) && !containsInImmutableDataNodeContainedRule(entry.getKey(), database)) {
database.getRuleMetaData().findRules(MutableDataNodeRule.class).forEach(rule -> rule.put(logicDataSourceName, schemaName, entry.getKey()));
}
database.getSchema(schemaName).putTable(entry.getKey(), entry.getValue());
@@ -119,7 +120,7 @@ public final class StandaloneModeContextManager implements ModeContextManager, C
private void addViewsToDataNode(final ShardingSphereDatabase database, final String schemaName, final String logicDataSourceName,
final Map<String, ShardingSphereTable> toBeAddedTables, final Map<String, ShardingSphereView> toBeAddedViews) {
for (Entry<String, ShardingSphereView> entry : toBeAddedViews.entrySet()) {
- if (!containsInImmutableDataNodeContainedRule(entry.getKey(), database)) {
+ if (!Strings.isNullOrEmpty(logicDataSourceName) && !containsInImmutableDataNodeContainedRule(entry.getKey(), database)) {
database.getRuleMetaData().findRules(MutableDataNodeRule.class).forEach(rule -> rule.put(logicDataSourceName, schemaName, entry.getKey()));
}
database.getSchema(schemaName).putTable(entry.getKey(), toBeAddedTables.get(entry.getKey().toLowerCase()));