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()));

Reply via email to