This is an automated email from the ASF dual-hosted git repository.
menghaoran 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 fdc4f43 Sync metadata for DDL (#7629)
fdc4f43 is described below
commit fdc4f435f6343a56ef5e2050a7c22ef02b9b5742
Author: kimmking <[email protected]>
AuthorDate: Sun Sep 27 18:52:01 2020 +0800
Sync metadata for DDL (#7629)
---
.../refresh/impl/AlterTableStatementMetaDataRefreshStrategy.java | 8 +++++++-
.../refresh/impl/CreateTableStatementMetaDataRefreshStrategy.java | 2 ++
.../refresh/impl/DropTableStatementMetaDataRefreshStrategy.java | 7 ++++++-
3 files changed, 15 insertions(+), 2 deletions(-)
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/impl/AlterTableStatementMetaDataRefreshStrategy.java
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/impl/AlterTableStatementMetaDataRefreshStrategy.java
index dfb7c7c..7643ae6 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/impl/AlterTableStatementMetaDataRefreshStrategy.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/impl/AlterTableStatementMetaDataRefreshStrategy.java
@@ -22,6 +22,7 @@ import
org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import
org.apache.shardingsphere.infra.metadata.refresh.MetaDataRefreshStrategy;
import
org.apache.shardingsphere.infra.metadata.refresh.TableMetaDataLoaderCallback;
import
org.apache.shardingsphere.sql.parser.binder.metadata.schema.SchemaMetaData;
+import
org.apache.shardingsphere.sql.parser.binder.metadata.table.TableMetaData;
import
org.apache.shardingsphere.sql.parser.binder.statement.ddl.AlterTableStatementContext;
import javax.sql.DataSource;
@@ -39,7 +40,12 @@ public final class
AlterTableStatementMetaDataRefreshStrategy implements MetaDat
String tableName =
sqlStatementContext.getSqlStatement().getTable().getTableName().getIdentifier().getValue();
SchemaMetaData schemaMetaData =
metaData.getRuleSchemaMetaData().getConfiguredSchemaMetaData();
if (null != schemaMetaData && schemaMetaData.containsTable(tableName))
{
- callback.load(tableName).ifPresent(tableMetaData ->
metaData.getRuleSchemaMetaData().getConfiguredSchemaMetaData().put(tableName,
tableMetaData));
+ callback.load(tableName).ifPresent(tableMetaData ->
alterMetaData(metaData, tableName, tableMetaData));
}
}
+
+ private void alterMetaData(final ShardingSphereMetaData metaData, final
String tableName, final TableMetaData tableMetaData) {
+
metaData.getRuleSchemaMetaData().getConfiguredSchemaMetaData().put(tableName,
tableMetaData);
+ metaData.getRuleSchemaMetaData().getSchemaMetaData().put(tableName,
tableMetaData);
+ }
}
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/impl/CreateTableStatementMetaDataRefreshStrategy.java
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/impl/CreateTableStatementMetaDataRefreshStrategy.java
index c4cc2ec..ce487d8 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/impl/CreateTableStatementMetaDataRefreshStrategy.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/impl/CreateTableStatementMetaDataRefreshStrategy.java
@@ -44,8 +44,10 @@ public final class
CreateTableStatementMetaDataRefreshStrategy implements MetaDa
Optional<TableMetaData> tableMetaData = callback.load(tableName);
if (tableMetaData.isPresent()) {
metaData.getRuleSchemaMetaData().getConfiguredSchemaMetaData().put(tableName,
tableMetaData.get());
+
metaData.getRuleSchemaMetaData().getSchemaMetaData().put(tableName,
tableMetaData.get());
} else {
refreshUnconfiguredMetaData(metaData, dataSourceMap, tableName);
+
metaData.getRuleSchemaMetaData().getSchemaMetaData().put(tableName, new
TableMetaData());
}
}
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/impl/DropTableStatementMetaDataRefreshStrategy.java
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/impl/DropTableStatementMetaDataRefreshStrategy.java
index e22f2f0..1a4b370 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/impl/DropTableStatementMetaDataRefreshStrategy.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/refresh/impl/DropTableStatementMetaDataRefreshStrategy.java
@@ -34,6 +34,11 @@ public final class DropTableStatementMetaDataRefreshStrategy
implements MetaData
@Override
public void refreshMetaData(final ShardingSphereMetaData metaData, final
DatabaseType databaseType,
final Map<String, DataSource> dataSourceMap,
final DropTableStatementContext sqlStatementContext, final
TableMetaDataLoaderCallback callback) {
- sqlStatementContext.getSqlStatement().getTables().forEach(each ->
metaData.getRuleSchemaMetaData().getConfiguredSchemaMetaData().remove(each.getTableName().getIdentifier().getValue()));
+ sqlStatementContext.getSqlStatement().getTables().forEach(each ->
removeMetaData(metaData, each.getTableName().getIdentifier().getValue()));
+ }
+
+ private void removeMetaData(final ShardingSphereMetaData metaData, final
String tableName) {
+
metaData.getRuleSchemaMetaData().getConfiguredSchemaMetaData().remove(tableName);
+ metaData.getRuleSchemaMetaData().getSchemaMetaData().remove(tableName);
}
}