Skip to content

Commit 915808a

Browse files
committed
split alter schema into tables and views for MetaDataManagerPersistService
1 parent a75a02a commit 915808a

File tree

16 files changed

+91
-78
lines changed

16 files changed

+91
-78
lines changed

mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/federation/type/AlterViewFederationMetaDataRefresher.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.AlterViewStatement;
2727

2828
import java.util.Collection;
29-
import java.util.Collections;
3029
import java.util.LinkedList;
3130
import java.util.Optional;
3231

@@ -48,7 +47,8 @@ public void refresh(final MetaDataManagerPersistService metaDataManagerPersistSe
4847
droppedViews.add(viewName);
4948
}
5049
sqlStatement.getViewDefinition().ifPresent(optional -> alteredViews.add(new ShardingSphereView(viewName, optional)));
51-
metaDataManagerPersistService.alterSchema(database, schemaName, Collections.emptyList(), alteredViews, Collections.emptyList(), droppedViews);
50+
metaDataManagerPersistService.alterViews(database, schemaName, alteredViews);
51+
metaDataManagerPersistService.dropViews(database, schemaName, droppedViews);
5252
}
5353

5454
@Override

mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/federation/type/CreateViewFederationMetaDataRefresher.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,7 @@ public final class CreateViewFederationMetaDataRefresher implements FederationMe
3434
@Override
3535
public void refresh(final MetaDataManagerPersistService metaDataManagerPersistService, final ShardingSphereDatabase database, final String schemaName, final CreateViewStatement sqlStatement) {
3636
String viewName = TableRefreshUtils.getTableName(sqlStatement.getView().getTableName().getIdentifier(), sqlStatement.getDatabaseType());
37-
metaDataManagerPersistService.alterSchema(database, schemaName,
38-
Collections.emptyList(), Collections.singleton(new ShardingSphereView(viewName, sqlStatement.getViewDefinition())), Collections.emptyList(), Collections.emptyList());
37+
metaDataManagerPersistService.alterViews(database, schemaName, Collections.singleton(new ShardingSphereView(viewName, sqlStatement.getViewDefinition())));
3938
}
4039

4140
@Override

mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/federation/type/DropViewFederationMetaDataRefresher.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.DropViewStatement;
2424

2525
import java.util.Collection;
26-
import java.util.Collections;
2726
import java.util.stream.Collectors;
2827

2928
/**
@@ -34,7 +33,7 @@ public final class DropViewFederationMetaDataRefresher implements FederationMeta
3433
@Override
3534
public void refresh(final MetaDataManagerPersistService metaDataManagerPersistService, final ShardingSphereDatabase database, final String schemaName, final DropViewStatement sqlStatement) {
3635
Collection<String> droppedViews = sqlStatement.getViews().stream().map(each -> each.getTableName().getIdentifier().getValue()).collect(Collectors.toList());
37-
metaDataManagerPersistService.alterSchema(database, schemaName, Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), droppedViews);
36+
metaDataManagerPersistService.dropViews(database, schemaName, droppedViews);
3837
}
3938

4039
@Override

mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/pushdown/type/index/AlterIndexPushDownMetaDataRefresher.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public void refresh(final MetaDataManagerPersistService metaDataManagerPersistSe
6161
newTable.removeIndex(indexName);
6262
String renameIndexName = renameIndex.get().getIndexName().getIdentifier().getValue();
6363
newTable.putIndex(new ShardingSphereIndex(renameIndexName, new LinkedList<>(), false));
64-
metaDataManagerPersistService.alterSchema(database, actualSchemaName, Collections.singleton(newTable), Collections.emptyList(), Collections.emptyList(), Collections.emptyList());
64+
metaDataManagerPersistService.alterTables(database, actualSchemaName, Collections.singleton(newTable));
6565
}
6666

6767
private Optional<String> findLogicTableName(final ShardingSphereSchema schema, final String indexName) {

mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/pushdown/type/index/CreateIndexPushDownMetaDataRefresher.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public void refresh(final MetaDataManagerPersistService metaDataManagerPersistSe
5353
ShardingSphereTable table = schema.getTable(tableName);
5454
ShardingSphereTable newTable = new ShardingSphereTable(table.getName(), table.getAllColumns(), table.getAllIndexes(), table.getAllConstraints(), table.getType());
5555
newTable.putIndex(new ShardingSphereIndex(indexName, new LinkedList<>(), false));
56-
metaDataManagerPersistService.alterSchema(database, schemaName, Collections.singleton(newTable), Collections.emptyList(), Collections.emptyList(), Collections.emptyList());
56+
metaDataManagerPersistService.alterTables(database, schemaName, Collections.singleton(newTable));
5757
}
5858

5959
@Override

mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/pushdown/type/index/DropIndexPushDownMetaDataRefresher.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public void refresh(final MetaDataManagerPersistService metaDataManagerPersistSe
5757
ShardingSphereTable table = schema.getTable(logicTableName.get());
5858
ShardingSphereTable newTable = new ShardingSphereTable(table.getName(), table.getAllColumns(), table.getAllIndexes(), table.getAllConstraints(), table.getType());
5959
newTable.removeIndex(each.getIndexName().getIdentifier().getValue());
60-
metaDataManagerPersistService.alterSchema(database, actualSchemaName, Collections.singleton(newTable), Collections.emptyList(), Collections.emptyList(), Collections.emptyList());
60+
metaDataManagerPersistService.alterTables(database, actualSchemaName, Collections.singleton(newTable));
6161
}
6262
}
6363

mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/pushdown/type/table/AlterTablePushDownMetaDataRefresher.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ public void refresh(final MetaDataManagerPersistService metaDataManagerPersistSe
5656
} else {
5757
alteredTables.add(getTable(database, logicDataSourceNames, schemaName, tableName, props));
5858
}
59-
metaDataManagerPersistService.alterSchema(database, schemaName, alteredTables, Collections.emptyList(), droppedTables, Collections.emptyList());
59+
metaDataManagerPersistService.alterTables(database, schemaName, alteredTables);
60+
metaDataManagerPersistService.dropTables(database, schemaName, droppedTables);
6061
}
6162

6263
private ShardingSphereTable getTable(final ShardingSphereDatabase database, final Collection<String> logicDataSourceNames, final String schemaName,

mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/pushdown/type/table/RenameTablePushDownMetaDataRefresher.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828

2929
import java.sql.SQLException;
3030
import java.util.Collection;
31-
import java.util.Collections;
3231
import java.util.LinkedList;
3332

3433
/**
@@ -48,7 +47,8 @@ public void refresh(final MetaDataManagerPersistService metaDataManagerPersistSe
4847
each.getRenameTable().getTableName().getIdentifier().getValue(), toBeRenamedTable.getAllColumns(), toBeRenamedTable.getAllIndexes(), toBeRenamedTable.getAllConstraints()));
4948
droppedTables.add(toBeRenamedTableName);
5049
}
51-
metaDataManagerPersistService.alterSchema(database, schemaName, alteredTables, Collections.emptyList(), droppedTables, Collections.emptyList());
50+
metaDataManagerPersistService.alterTables(database, schemaName, alteredTables);
51+
metaDataManagerPersistService.dropTables(database, schemaName, droppedTables);
5252
}
5353

5454
@Override

mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/pushdown/type/view/AlterViewPushDownMetaDataRefresher.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,10 @@ public void refresh(final MetaDataManagerPersistService metaDataManagerPersistSe
6969
alteredTables.add(schema.getTable(viewName));
7070
alteredViews.add(schema.getView(viewName));
7171
}
72-
metaDataManagerPersistService.alterSchema(database, schemaName, alteredTables, alteredViews, droppedTables, droppedViews);
72+
metaDataManagerPersistService.alterTables(database, schemaName, alteredTables);
73+
metaDataManagerPersistService.alterViews(database, schemaName, alteredViews);
74+
metaDataManagerPersistService.dropTables(database, schemaName, droppedTables);
75+
metaDataManagerPersistService.dropViews(database, schemaName, droppedViews);
7376
}
7477

7578
private ShardingSphereSchema getSchema(final ShardingSphereDatabase database, final Collection<String> logicDataSourceNames,

mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/pushdown/type/view/CreateViewPushDownMetaDataRefresher.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,8 @@ public void refresh(final MetaDataManagerPersistService metaDataManagerPersistSe
5757
Map<String, ShardingSphereSchema> schemas = GenericSchemaBuilder.build(Collections.singletonList(viewName), database.getProtocolType(), material);
5858
Optional<ShardingSphereTable> actualTableMetaData = Optional.ofNullable(schemas.get(schemaName)).map(optional -> optional.getTable(viewName));
5959
Preconditions.checkState(actualTableMetaData.isPresent(), "Load actual view metadata '%s' failed.", viewName);
60-
metaDataManagerPersistService.alterSchema(database, schemaName,
61-
Collections.singleton(actualTableMetaData.get()), Collections.singleton(new ShardingSphereView(viewName, sqlStatement.getViewDefinition())),
62-
Collections.emptyList(), Collections.emptyList());
60+
metaDataManagerPersistService.alterTables(database, schemaName, Collections.singleton(actualTableMetaData.get()));
61+
metaDataManagerPersistService.alterViews(database, schemaName, Collections.singleton(new ShardingSphereView(viewName, sqlStatement.getViewDefinition())));
6362
}
6463

6564
@Override

mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/pushdown/type/view/DropViewPushDownMetaDataRefresher.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.DropViewStatement;
2727

2828
import java.util.Collection;
29-
import java.util.Collections;
3029
import java.util.LinkedList;
3130

3231
/**
@@ -44,7 +43,8 @@ public void refresh(final MetaDataManagerPersistService metaDataManagerPersistSe
4443
droppedTables.add(viewName);
4544
droppedViews.add(viewName);
4645
}
47-
metaDataManagerPersistService.alterSchema(database, schemaName, Collections.emptyList(), Collections.emptyList(), droppedTables, droppedViews);
46+
metaDataManagerPersistService.dropTables(database, schemaName, droppedTables);
47+
metaDataManagerPersistService.dropViews(database, schemaName, droppedViews);
4848
}
4949

5050
@Override

mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/MetaDataManagerPersistService.java

+27-13
Original file line numberDiff line numberDiff line change
@@ -55,19 +55,6 @@ public interface MetaDataManagerPersistService {
5555
*/
5656
void createSchema(ShardingSphereDatabase database, String schemaName);
5757

58-
/**
59-
* Alter schema.
60-
*
61-
* @param database database
62-
* @param schemaName schema name
63-
* @param alteredTables altered tables
64-
* @param alteredViews altered views
65-
* @param droppedTables dropped tables
66-
* @param droppedViews dropped views
67-
*/
68-
void alterSchema(ShardingSphereDatabase database, String schemaName,
69-
Collection<ShardingSphereTable> alteredTables, Collection<ShardingSphereView> alteredViews, Collection<String> droppedTables, Collection<String> droppedViews);
70-
7158
/**
7259
* Rename schema.
7360
*
@@ -103,6 +90,33 @@ void alterSchema(ShardingSphereDatabase database, String schemaName,
10390
*/
10491
void dropTables(ShardingSphereDatabase database, String schemaName, Collection<String> tableNames);
10592

93+
/**
94+
* Alter tables.
95+
*
96+
* @param database database
97+
* @param schemaName schema name
98+
* @param alteredTables altered tables
99+
*/
100+
void alterTables(ShardingSphereDatabase database, String schemaName, Collection<ShardingSphereTable> alteredTables);
101+
102+
/**
103+
* Alter views.
104+
*
105+
* @param database database
106+
* @param schemaName schema name
107+
* @param alteredViews altered views
108+
*/
109+
void alterViews(ShardingSphereDatabase database, String schemaName, Collection<ShardingSphereView> alteredViews);
110+
111+
/**
112+
* Drop views.
113+
*
114+
* @param database database
115+
* @param schemaName schema name
116+
* @param droppedViews dropped views
117+
*/
118+
void dropViews(ShardingSphereDatabase database, String schemaName, Collection<String> droppedViews);
119+
106120
/**
107121
* Register storage units.
108122
*

mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterMetaDataManagerPersistService.java

+15-7
Original file line numberDiff line numberDiff line change
@@ -85,13 +85,6 @@ public void createSchema(final ShardingSphereDatabase database, final String sch
8585
metaDataPersistFacade.getDatabaseMetaDataFacade().getSchema().add(database.getName(), schemaName);
8686
}
8787

88-
@Override
89-
public void alterSchema(final ShardingSphereDatabase database, final String schemaName,
90-
final Collection<ShardingSphereTable> alteredTables, final Collection<ShardingSphereView> alteredViews,
91-
final Collection<String> droppedTables, final Collection<String> droppedViews) {
92-
metaDataPersistFacade.getDatabaseMetaDataFacade().alterSchema(database, schemaName, alteredTables, alteredViews, droppedTables, droppedViews);
93-
}
94-
9588
@Override
9689
public void renameSchema(final ShardingSphereDatabase database, final String schemaName, final String renameSchemaName) {
9790
metaDataPersistFacade.getDatabaseMetaDataFacade().renameSchema(metaDataContextManager.getMetaDataContexts().getMetaData(), database, schemaName, renameSchemaName);
@@ -123,6 +116,21 @@ public void dropTables(final ShardingSphereDatabase database, final String schem
123116
}
124117
}
125118

119+
@Override
120+
public void alterTables(final ShardingSphereDatabase database, final String schemaName, final Collection<ShardingSphereTable> alteredTables) {
121+
metaDataPersistFacade.getDatabaseMetaDataFacade().getTable().persist(database.getName(), schemaName, alteredTables);
122+
}
123+
124+
@Override
125+
public void alterViews(final ShardingSphereDatabase database, final String schemaName, final Collection<ShardingSphereView> alteredViews) {
126+
metaDataPersistFacade.getDatabaseMetaDataFacade().getView().persist(database.getName(), schemaName, alteredViews);
127+
}
128+
129+
@Override
130+
public void dropViews(final ShardingSphereDatabase database, final String schemaName, final Collection<String> droppedViews) {
131+
droppedViews.forEach(each -> metaDataPersistFacade.getDatabaseMetaDataFacade().getView().drop(database.getName(), schemaName, each));
132+
}
133+
126134
@Override
127135
public void registerStorageUnits(final String databaseName, final Map<String, DataSourcePoolProperties> toBeRegisteredProps) {
128136
MetaDataContexts originalMetaDataContexts = new MetaDataContexts(metaDataContextManager.getMetaDataContexts().getMetaData(), metaDataContextManager.getMetaDataContexts().getStatistics());

mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterMetaDataManagerPersistServiceTest.java

-7
Original file line numberDiff line numberDiff line change
@@ -94,13 +94,6 @@ void assertCreateSchema() {
9494
verify(metaDataPersistFacade.getDatabaseMetaDataFacade().getSchema()).add("foo_db", "foo_schema");
9595
}
9696

97-
@Test
98-
void assertAlterSchema() {
99-
metaDataManagerPersistService.alterSchema(new ShardingSphereDatabase("foo_db", mock(), mock(), mock(), Collections.emptyList()),
100-
"foo_schema", Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), Collections.emptyList());
101-
verify(metaDataPersistFacade.getDatabaseMetaDataFacade()).alterSchema(any(), eq("foo_schema"), anyCollection(), anyCollection(), anyCollection(), anyCollection());
102-
}
103-
10497
@Test
10598
void assertRenameSchema() {
10699
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);

0 commit comments

Comments
 (0)