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 28c20f3509f Refactor CreateDatabaseProxyBackendHandler (#36828)
28c20f3509f is described below

commit 28c20f3509f6958d9d8ef23502769c07107848e1
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Oct 9 16:25:36 2025 +0800

    Refactor CreateDatabaseProxyBackendHandler (#36828)
---
 .../database/DatabaseOperateProxyBackendHandlerFactory.java   |  2 +-
 .../database/type/CreateDatabaseProxyBackendHandler.java      |  5 ++++-
 .../database/type/CreateDatabaseProxyBackendHandlerTest.java  | 11 +++++++----
 3 files changed, 12 insertions(+), 6 deletions(-)

diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/DatabaseOperateProxyBackendHandlerFactory.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/DatabaseOperateProxyBackendHandlerFactory.java
index d461693b785..f7c387390e7 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/DatabaseOperateProxyBackendHandlerFactory.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/DatabaseOperateProxyBackendHandlerFactory.java
@@ -49,7 +49,7 @@ public final class DatabaseOperateProxyBackendHandlerFactory {
     
     private static ProxyBackendHandler createProxyBackendHandler(final 
SQLStatement sqlStatement, final ShardingSphereMetaData metaData, final 
ConnectionSession connectionSession) {
         if (sqlStatement instanceof CreateDatabaseStatement) {
-            return new 
CreateDatabaseProxyBackendHandler((CreateDatabaseStatement) sqlStatement);
+            return new 
CreateDatabaseProxyBackendHandler((CreateDatabaseStatement) sqlStatement, 
metaData);
         }
         if (sqlStatement instanceof DropDatabaseStatement) {
             return new DropDatabaseProxyBackendHandler((DropDatabaseStatement) 
sqlStatement, metaData, connectionSession);
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/type/CreateDatabaseProxyBackendHandler.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/type/CreateDatabaseProxyBackendHandler.java
index 367a3d9a62c..95242f322b5 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/type/CreateDatabaseProxyBackendHandler.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/type/CreateDatabaseProxyBackendHandler.java
@@ -20,6 +20,7 @@ package 
org.apache.shardingsphere.proxy.backend.handler.database.type;
 import lombok.RequiredArgsConstructor;
 import 
org.apache.shardingsphere.database.exception.core.exception.syntax.database.DatabaseCreateExistsException;
 import org.apache.shardingsphere.infra.exception.ShardingSpherePreconditions;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
 import org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandler;
 import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
@@ -36,9 +37,11 @@ public final class CreateDatabaseProxyBackendHandler 
implements ProxyBackendHand
     
     private final CreateDatabaseStatement sqlStatement;
     
+    private final ShardingSphereMetaData metaData;
+    
     @Override
     public ResponseHeader execute() throws SQLException {
-        ShardingSpherePreconditions.checkState(sqlStatement.isIfNotExists() || 
!ProxyContext.getInstance().databaseExists(sqlStatement.getDatabaseName()),
+        ShardingSpherePreconditions.checkState(sqlStatement.isIfNotExists() || 
!metaData.containsDatabase(sqlStatement.getDatabaseName()),
                 () -> new 
DatabaseCreateExistsException(sqlStatement.getDatabaseName()));
         
ProxyContext.getInstance().getContextManager().getPersistServiceFacade().getModeFacade().getMetaDataManagerService().createDatabase(sqlStatement.getDatabaseName());
         return new UpdateResponseHeader(sqlStatement);
diff --git 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/database/type/CreateDatabaseProxyBackendHandlerTest.java
 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/database/type/CreateDatabaseProxyBackendHandlerTest.java
index cfc0b0d769a..060a36f71b7 100644
--- 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/database/type/CreateDatabaseProxyBackendHandlerTest.java
+++ 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/database/type/CreateDatabaseProxyBackendHandlerTest.java
@@ -18,6 +18,7 @@
 package org.apache.shardingsphere.proxy.backend.handler.database.type;
 
 import 
org.apache.shardingsphere.database.exception.core.exception.syntax.database.DatabaseCreateExistsException;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
 import 
org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResponseHeader;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.database.CreateDatabaseStatement;
@@ -32,6 +33,7 @@ import java.sql.SQLException;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.isA;
 import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 @ExtendWith(AutoMockExtension.class)
@@ -44,20 +46,21 @@ class CreateDatabaseProxyBackendHandlerTest {
     @Test
     void assertExecuteCreateNewDatabase() throws SQLException {
         when(statement.getDatabaseName()).thenReturn("bar_db");
-        assertThat(new CreateDatabaseProxyBackendHandler(statement).execute(), 
isA(UpdateResponseHeader.class));
+        assertThat(new CreateDatabaseProxyBackendHandler(statement, 
mock()).execute(), isA(UpdateResponseHeader.class));
     }
     
     @Test
     void assertExecuteCreateExistDatabase() {
         when(statement.getDatabaseName()).thenReturn("foo_db");
-        
when(ProxyContext.getInstance().databaseExists("foo_db")).thenReturn(true);
-        assertThrows(DatabaseCreateExistsException.class, () -> new 
CreateDatabaseProxyBackendHandler(statement).execute());
+        ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class);
+        when(metaData.containsDatabase("foo_db")).thenReturn(true);
+        assertThrows(DatabaseCreateExistsException.class, () -> new 
CreateDatabaseProxyBackendHandler(statement, metaData).execute());
     }
     
     @Test
     void assertExecuteCreateExistDatabaseWithIfNotExists() throws SQLException 
{
         when(statement.getDatabaseName()).thenReturn("foo_db");
         when(statement.isIfNotExists()).thenReturn(true);
-        assertThat(new CreateDatabaseProxyBackendHandler(statement).execute(), 
isA(UpdateResponseHeader.class));
+        assertThat(new CreateDatabaseProxyBackendHandler(statement, 
mock()).execute(), isA(UpdateResponseHeader.class));
     }
 }

Reply via email to