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 8cbcb7b Add drop tables in ContextManager (#13917)
8cbcb7b is described below
commit 8cbcb7bc42e88e4bdb22a49faeb4cdff11091e88
Author: Haoran Meng <[email protected]>
AuthorDate: Fri Dec 3 16:56:43 2021 +0800
Add drop tables in ContextManager (#13917)
Co-authored-by: shardingsphere <[email protected]>
---
.../shardingsphere/mode/manager/ContextManager.java | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
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 226ea75..a7d25eb 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
@@ -38,6 +38,7 @@ import
org.apache.shardingsphere.infra.metadata.schema.model.TableMetaData;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import org.apache.shardingsphere.infra.rule.builder.global.GlobalRulesBuilder;
import org.apache.shardingsphere.infra.rule.builder.schema.SchemaRulesBuilder;
+import
org.apache.shardingsphere.infra.rule.identifier.type.MutableDataNodeRule;
import org.apache.shardingsphere.infra.state.StateContext;
import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
import org.apache.shardingsphere.mode.metadata.MetaDataContextsBuilder;
@@ -305,6 +306,22 @@ public final class ContextManager implements AutoCloseable
{
}
}
+ /**
+ * Drop tables.
+ *
+ * @param schemaName schema name
+ * @param tables tables
+ */
+ public void dropTables(final String schemaName, final Collection<String>
tables) {
+ Collection<MutableDataNodeRule> rules =
metaDataContexts.getMetaData(schemaName).getRuleMetaData().findRules(MutableDataNodeRule.class);
+ for (String table : tables) {
+ metaDataContexts.getMetaData(schemaName).getSchema().remove(table);
+
metaDataContexts.getOptimizerContext().getMetaData().getSchemas().get(schemaName).remove(table);
+ rules.forEach(rule -> rule.remove(table));
+ }
+ metaDataContexts.getMetaDataPersistService().ifPresent(optional ->
optional.getSchemaMetaDataService().persist(schemaName,
metaDataContexts.getMetaData(schemaName).getSchema()));
+ }
+
private void loadTableMetaData(final String schemaName, final String
tableName, final SchemaBuilderMaterials materials) throws SQLException {
TableMetaData tableMetaData =
Optional.ofNullable(TableMetaDataBuilder.load(Collections.singletonList(tableName),
materials).get(tableName))
.map(each ->
TableMetaDataBuilder.decorateKernelTableMetaData(each,
materials.getRules())).orElseGet(TableMetaData::new);