This is an automated email from the ASF dual-hosted git repository.
zhangliang 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 afec99edf72 split ContextManager.alterSchema() to 2 methods (#19378)
afec99edf72 is described below
commit afec99edf722716e5c61e6e9e2aaa56a7191e28e
Author: Da Xiang Huang <[email protected]>
AuthorDate: Wed Jul 20 14:42:25 2022 +0800
split ContextManager.alterSchema() to 2 methods (#19378)
---
.../shardingsphere/mode/manager/ContextManager.java | 17 ++++++++++++++---
.../shardingsphere/mode/manager/ContextManagerTest.java | 4 ++--
.../coordinator/ClusterContextManagerCoordinator.java | 3 ++-
3 files changed, 18 insertions(+), 6 deletions(-)
diff --git
a/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
b/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
index 27284c44576..d991d7e187f 100644
---
a/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
+++
b/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
@@ -146,15 +146,26 @@ public final class ContextManager implements
AutoCloseable {
*
* @param databaseName database name
* @param schemaName schema name
- * @param toBeChangedTable to be changed table
* @param toBeDeletedTableName to be deleted table name
*/
- public synchronized void alterSchema(final String databaseName, final
String schemaName, final ShardingSphereTable toBeChangedTable, final String
toBeDeletedTableName) {
+ public synchronized void alterSchema(final String databaseName, final
String schemaName, final String toBeDeletedTableName) {
if
(metaDataContexts.getMetaData().getDatabases().containsKey(databaseName)) {
- Optional.ofNullable(toBeChangedTable).ifPresent(optional ->
alterTable(databaseName, schemaName, optional));
Optional.ofNullable(toBeDeletedTableName).ifPresent(optional ->
dropTable(databaseName, schemaName, optional));
}
}
+
+ /**
+ * Alter schema.
+ *
+ * @param databaseName database name
+ * @param schemaName schema name
+ * @param toBeChangedTable to be changed table
+ */
+ public synchronized void alterSchema(final String databaseName, final
String schemaName, final ShardingSphereTable toBeChangedTable) {
+ if
(metaDataContexts.getMetaData().getDatabases().containsKey(databaseName)) {
+ Optional.ofNullable(toBeChangedTable).ifPresent(optional ->
alterTable(databaseName, schemaName, optional));
+ }
+ }
private synchronized void alterTable(final String databaseName, final
String schemaName, final ShardingSphereTable beBoChangedTable) {
alterTable(metaDataContexts.getMetaData().getDatabases().get(databaseName),
schemaName, beBoChangedTable);
diff --git
a/shardingsphere-mode/shardingsphere-mode-core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
b/shardingsphere-mode/shardingsphere-mode-core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
index 9a763394b7b..c127e0ae708 100644
---
a/shardingsphere-mode/shardingsphere-mode-core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
+++
b/shardingsphere-mode/shardingsphere-mode-core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
@@ -159,7 +159,7 @@ public final class ContextManagerTest {
when(metaDataContexts.getMetaData().getDatabases().get("foo_db").getSchemas()).thenReturn(createToBeAlteredSchemas());
ShardingSphereColumn toBeChangedColumn = new
ShardingSphereColumn("foo_col", Types.VARCHAR, false, false, false);
ShardingSphereTable toBeChangedTable = new
ShardingSphereTable("foo_tbl", Collections.singleton(toBeChangedColumn),
Collections.emptyList(), Collections.emptyList());
- contextManager.alterSchema("foo_db", "foo_schema", toBeChangedTable,
null);
+ contextManager.alterSchema("foo_db", "foo_schema", toBeChangedTable);
ShardingSphereTable table =
contextManager.getMetaDataContexts().getMetaData().getDatabases().get("foo_db").getSchemas().get("foo_schema").getTables().get("foo_tbl");
assertThat(table.getColumns().size(), is(1));
assertTrue(table.getColumns().containsKey("foo_col"));
@@ -168,7 +168,7 @@ public final class ContextManagerTest {
@Test
public void assertAlterSchemaForTableDropped() {
when(metaDataContexts.getMetaData().getDatabases().get("foo_db").getSchemas()).thenReturn(createToBeAlteredSchemas());
- contextManager.alterSchema("foo_db", "foo_schema", null, "foo_tbl");
+ contextManager.alterSchema("foo_db", "foo_schema", "foo_tbl");
assertFalse(contextManager.getMetaDataContexts().getMetaData().getDatabases().get("foo_db").getSchemas().get("foo_schema").getTables().containsKey("foo_tbl"));
}
diff --git
a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/ClusterContextManagerCoordinator.java
b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/ClusterContextManagerCoordinator.java
index cdae485c1c4..0b0faf0143a 100644
---
a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/ClusterContextManagerCoordinator.java
+++
b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/ClusterContextManagerCoordinator.java
@@ -132,7 +132,8 @@ public final class ClusterContextManagerCoordinator {
*/
@Subscribe
public synchronized void renew(final SchemaChangedEvent event) {
- contextManager.alterSchema(event.getDatabaseName(),
event.getSchemaName(), event.getChangedTableMetaData(),
event.getDeletedTable());
+ contextManager.alterSchema(event.getDatabaseName(),
event.getSchemaName(), event.getChangedTableMetaData());
+ contextManager.alterSchema(event.getDatabaseName(),
event.getSchemaName(), event.getDeletedTable());
}
/**