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));
}
}