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 <[email protected]>
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()));