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 b0662df5765 Rename MySQLUseDatabaseExecutor (#36858)
b0662df5765 is described below

commit b0662df5765cdb856591209eb5b1f56f6f0eff96
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Oct 12 21:50:57 2025 +0800

    Rename MySQLUseDatabaseExecutor (#36858)
---
 .../handler/admin/MySQLAdminExecutorCreator.java   |  4 +-
 ...Executor.java => MySQLUseDatabaseExecutor.java} |  4 +-
 .../admin/MySQLAdminExecutorCreatorTest.java       |  4 +-
 ...Test.java => MySQLUseDatabaseExecutorTest.java} | 47 ++++++++++++----------
 4 files changed, 32 insertions(+), 27 deletions(-)

diff --git 
a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreator.java
 
b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreator.java
index 91114b23264..559a1a4db07 100644
--- 
a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreator.java
+++ 
b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreator.java
@@ -29,7 +29,7 @@ import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.Show
 import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.ShowProcedureStatusExecutor;
 import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.ShowProcessListExecutor;
 import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.ShowTablesExecutor;
-import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.UseDatabaseExecutor;
+import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.MySQLUseDatabaseExecutor;
 import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.factory.MySQLSelectAdminExecutorFactory;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dal.SetStatement;
@@ -57,7 +57,7 @@ public final class MySQLAdminExecutorCreator implements 
DatabaseAdminExecutorCre
         }
         SQLStatement sqlStatement = sqlStatementContext.getSqlStatement();
         if (sqlStatement instanceof MySQLUseStatement) {
-            return Optional.of(new UseDatabaseExecutor((MySQLUseStatement) 
sqlStatement));
+            return Optional.of(new 
MySQLUseDatabaseExecutor((MySQLUseStatement) sqlStatement));
         }
         if (sqlStatement instanceof MySQLShowDatabasesStatement) {
             return Optional.of(new 
ShowDatabasesExecutor((MySQLShowDatabasesStatement) sqlStatement));
diff --git 
a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/UseDatabaseExecutor.java
 
b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/MySQLUseDatabaseExecutor.java
similarity index 95%
rename from 
proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/UseDatabaseExecutor.java
rename to 
proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/MySQLUseDatabaseExecutor.java
index a4a4b0edb45..2a3f5ebaceb 100644
--- 
a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/UseDatabaseExecutor.java
+++ 
b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/MySQLUseDatabaseExecutor.java
@@ -29,10 +29,10 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.util.SQLUtils;
 import 
org.apache.shardingsphere.sql.parser.statement.mysql.dal.MySQLUseStatement;
 
 /**
- * Use database executor.
+ * Use database executor for MySQL.
  */
 @RequiredArgsConstructor
-public final class UseDatabaseExecutor implements DatabaseAdminExecutor {
+public final class MySQLUseDatabaseExecutor implements DatabaseAdminExecutor {
     
     private final MySQLUseStatement sqlStatement;
     
diff --git 
a/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreatorTest.java
 
b/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreatorTest.java
index a7917e5cc26..5c14c722e47 100644
--- 
a/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreatorTest.java
+++ 
b/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreatorTest.java
@@ -42,7 +42,7 @@ import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.Show
 import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.ShowProcedureStatusExecutor;
 import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.ShowProcessListExecutor;
 import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.ShowTablesExecutor;
-import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.UseDatabaseExecutor;
+import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.MySQLUseDatabaseExecutor;
 import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.select.NoResourceShowExecutor;
 import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.select.SelectInformationSchemataExecutor;
 import 
org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.select.ShowConnectionIdExecutor;
@@ -122,7 +122,7 @@ class MySQLAdminExecutorCreatorTest {
         SQLStatementContext sqlStatementContext = new 
CommonSQLStatementContext(new MySQLUseStatement(databaseType, null));
         Optional<DatabaseAdminExecutor> actual = new 
MySQLAdminExecutorCreator().create(sqlStatementContext, "use db", "", 
Collections.emptyList());
         assertTrue(actual.isPresent());
-        assertThat(actual.get(), isA(UseDatabaseExecutor.class));
+        assertThat(actual.get(), isA(MySQLUseDatabaseExecutor.class));
     }
     
     @Test
diff --git 
a/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/UseDatabaseExecutorTest.java
 
b/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/MySQLUseDatabaseExecutorTest.java
similarity index 58%
rename from 
proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/UseDatabaseExecutorTest.java
rename to 
proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/MySQLUseDatabaseExecutorTest.java
index 0122cd2fd3b..e7c1b86e539 100644
--- 
a/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/UseDatabaseExecutorTest.java
+++ 
b/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/MySQLUseDatabaseExecutorTest.java
@@ -17,10 +17,12 @@
 
 package org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor;
 
+import org.apache.shardingsphere.authority.rule.AuthorityRule;
 import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
 import 
org.apache.shardingsphere.database.exception.core.exception.syntax.database.UnknownDatabaseException;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
 import 
org.apache.shardingsphere.sql.parser.statement.mysql.dal.MySQLUseStatement;
@@ -30,21 +32,15 @@ import org.mockito.Answers;
 import org.mockito.Mock;
 import org.mockito.junit.jupiter.MockitoExtension;
 
-import java.util.Collection;
 import java.util.Collections;
-import java.util.stream.Collectors;
-import java.util.stream.IntStream;
 
 import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 @ExtendWith(MockitoExtension.class)
-class UseDatabaseExecutorTest {
-    
-    private static final String DATABASE_PATTERN = "db_%s";
+class MySQLUseDatabaseExecutorTest {
     
     private final DatabaseType databaseType = 
TypedSPILoader.getService(DatabaseType.class, "MySQL");
     
@@ -52,25 +48,34 @@ class UseDatabaseExecutorTest {
     private ConnectionSession connectionSession;
     
     @Test
-    void assertExecuteUseStatementProxyBackendHandler() {
-        MySQLUseStatement useStatement = mock(MySQLUseStatement.class);
-        
when(useStatement.getDatabase()).thenReturn(String.format(DATABASE_PATTERN, 0));
-        UseDatabaseExecutor executor = new UseDatabaseExecutor(useStatement);
+    void assertExecuteExistedDatabase() {
+        MySQLUseStatement sqlStatement = mock(MySQLUseStatement.class);
+        when(sqlStatement.getDatabase()).thenReturn("foo_db");
         
when(connectionSession.getConnectionContext().getGrantee()).thenReturn(null);
-        executor.execute(connectionSession, new 
ShardingSphereMetaData(createDatabases(), mock(), mock(), mock()));
-        verify(connectionSession).setCurrentDatabaseName(anyString());
+        MySQLUseDatabaseExecutor executor = new 
MySQLUseDatabaseExecutor(sqlStatement);
+        executor.execute(connectionSession, mockMetaData());
+        verify(connectionSession).setCurrentDatabaseName("foo_db");
+    }
+    
+    @Test
+    void assertExecuteNotExistedDatabase() {
+        MySQLUseStatement sqlStatement = mock(MySQLUseStatement.class);
+        when(sqlStatement.getDatabase()).thenReturn("bar_db");
+        MySQLUseDatabaseExecutor executor = new 
MySQLUseDatabaseExecutor(sqlStatement);
+        assertThrows(UnknownDatabaseException.class, () -> 
executor.execute(connectionSession, mockMetaData()));
     }
     
     @Test
-    void assertExecuteUseStatementProxyBackendHandlerWhenSchemaNotExist() {
-        MySQLUseStatement useStatement = mock(MySQLUseStatement.class);
-        
when(useStatement.getDatabase()).thenReturn(String.format(DATABASE_PATTERN, 
10));
-        UseDatabaseExecutor executor = new UseDatabaseExecutor(useStatement);
-        assertThrows(UnknownDatabaseException.class, () -> 
executor.execute(connectionSession, new 
ShardingSphereMetaData(createDatabases(), mock(), mock(), mock())));
+    void assertExecuteUnauthorizedDatabase() {
+        MySQLUseStatement sqlStatement = mock(MySQLUseStatement.class);
+        when(sqlStatement.getDatabase()).thenReturn("foo_db");
+        MySQLUseDatabaseExecutor executor = new 
MySQLUseDatabaseExecutor(sqlStatement);
+        assertThrows(UnknownDatabaseException.class, () -> 
executor.execute(connectionSession, mockMetaData()));
     }
     
-    private Collection<ShardingSphereDatabase> createDatabases() {
-        return IntStream.range(0, 10)
-                .mapToObj(each -> new 
ShardingSphereDatabase(String.format(DATABASE_PATTERN, each), databaseType, 
mock(), mock(), Collections.emptyList())).collect(Collectors.toList());
+    private ShardingSphereMetaData mockMetaData() {
+        AuthorityRule rule = mock(AuthorityRule.class);
+        return new ShardingSphereMetaData(
+                Collections.singleton(new ShardingSphereDatabase("foo_db", 
databaseType, mock(), mock(), Collections.emptyList())), mock(), new 
RuleMetaData(Collections.singleton(rule)), mock());
     }
 }

Reply via email to