This is an automated email from the ASF dual-hosted git repository.

duanzhengqiang 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 91a37b559ca Fix create table throws npe (#23074)
91a37b559ca is described below

commit 91a37b559ca6f384d9ff03f1604dc1c3674b36a7
Author: zhaojinchao <[email protected]>
AuthorDate: Sat Dec 24 15:58:49 2022 +0800

    Fix create table throws npe (#23074)
---
 .../org/apache/shardingsphere/mode/manager/ContextManager.java     | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
index bf9bf12b037..585f3f9a974 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
@@ -270,7 +270,12 @@ public final class ContextManager implements AutoCloseable 
{
             SwitchingResource switchingResource =
                     new 
ResourceSwitchManager().createByAlterDataSourceProps(metaDataContexts.getMetaData().getDatabase(databaseName).getResourceMetaData(),
 dataSourcePropsMap);
             
metaDataContexts.getMetaData().getDatabases().putAll(renewDatabase(metaDataContexts.getMetaData().getDatabase(databaseName),
 switchingResource));
-            metaDataContexts = createMetaDataContexts(databaseName, 
switchingResource, null);
+            // TODO Remove this logic when issue #22887 are finished.
+            MetaDataContexts reloadMetaDataContexts = 
createMetaDataContexts(databaseName, switchingResource, null);
+            
reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getSchemas().forEach((schemaName,
 schema) -> 
reloadMetaDataContexts.getPersistService().getDatabaseMetaDataService()
+                    
.persist(reloadMetaDataContexts.getMetaData().getActualDatabaseName(databaseName),
 schemaName, schema));
+            alterSchemaMetaData(databaseName, 
reloadMetaDataContexts.getMetaData().getDatabase(databaseName), 
metaDataContexts.getMetaData().getDatabase(databaseName));
+            metaDataContexts = reloadMetaDataContexts;
             
metaDataContexts.getMetaData().getDatabases().putAll(newShardingSphereDatabase(metaDataContexts.getMetaData().getDatabase(databaseName)));
             switchingResource.closeStaleDataSources();
         } catch (final SQLException ex) {

Reply via email to