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