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 1f1d989351b Refactor MySQLShowCreateDatabaseExecutor (#36870)
1f1d989351b is described below
commit 1f1d989351bf36115e63c176ecf87e5d56a4f850
Author: Liang Zhang <[email protected]>
AuthorDate: Mon Oct 13 16:01:45 2025 +0800
Refactor MySQLShowCreateDatabaseExecutor (#36870)
---
.../show/MySQLShowCreateDatabaseExecutor.java | 32 ++++++++++------------
.../show/MySQLShowCreateDatabaseExecutorTest.java | 1 +
2 files changed, 15 insertions(+), 18 deletions(-)
diff --git
a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowCreateDatabaseExecutor.java
b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowCreateDatabaseExecutor.java
index 1002d54f637..e4b657d7d87 100644
---
a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowCreateDatabaseExecutor.java
+++
b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowCreateDatabaseExecutor.java
@@ -23,14 +23,12 @@ import
org.apache.shardingsphere.authority.checker.AuthorityChecker;
import org.apache.shardingsphere.authority.rule.AuthorityRule;
import
org.apache.shardingsphere.database.exception.core.exception.syntax.database.UnknownDatabaseException;
import org.apache.shardingsphere.infra.exception.ShardingSpherePreconditions;
-import
org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResult;
import
org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResultMetaData;
import
org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.raw.metadata.RawQueryResultColumnMetaData;
import
org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.raw.metadata.RawQueryResultMetaData;
-import
org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.raw.type.RawMemoryQueryResult;
-import
org.apache.shardingsphere.infra.executor.sql.execute.result.query.type.memory.row.MemoryQueryResultDataRow;
import org.apache.shardingsphere.infra.merge.result.MergedResult;
-import
org.apache.shardingsphere.infra.merge.result.impl.transparent.TransparentMergedResult;
+import
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataMergedResult;
+import
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import
org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseAdminQueryExecutor;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
@@ -38,6 +36,7 @@ import
org.apache.shardingsphere.sql.parser.statement.mysql.dal.show.database.My
import java.sql.Types;
import java.util.Arrays;
+import java.util.Collection;
import java.util.Collections;
import java.util.List;
@@ -50,29 +49,26 @@ public final class MySQLShowCreateDatabaseExecutor
implements DatabaseAdminQuery
private final MySQLShowCreateDatabaseStatement sqlStatement;
- private QueryResultMetaData queryResultMetaData;
-
private MergedResult mergedResult;
@Override
public void execute(final ConnectionSession connectionSession, final
ShardingSphereMetaData metaData) {
- queryResultMetaData = createQueryResultMetaData();
- mergedResult = new
TransparentMergedResult(getQueryResult(connectionSession,
sqlStatement.getDatabaseName(), metaData));
- }
-
- private QueryResultMetaData createQueryResultMetaData() {
- List<RawQueryResultColumnMetaData> columnMetaData = Arrays.asList(
- new RawQueryResultColumnMetaData("", "Database", "Database",
Types.VARCHAR, "VARCHAR", 255, 0),
- new RawQueryResultColumnMetaData("", "Create Database",
"Create Database", Types.VARCHAR, "VARCHAR", 255, 0));
- return new RawQueryResultMetaData(columnMetaData);
+ mergedResult = new
LocalDataMergedResult(getQueryResultRows(connectionSession,
sqlStatement.getDatabaseName(), metaData));
}
- private QueryResult getQueryResult(final ConnectionSession
connectionSession, final String databaseName, final ShardingSphereMetaData
metaData) {
+ private Collection<LocalDataQueryResultRow> getQueryResultRows(final
ConnectionSession connectionSession, final String databaseName, final
ShardingSphereMetaData metaData) {
ShardingSpherePreconditions.checkState(metaData.containsDatabase(databaseName),
() -> new UnknownDatabaseException(databaseName));
AuthorityRule authorityRule =
metaData.getGlobalRuleMetaData().getSingleRule(AuthorityRule.class);
AuthorityChecker authorityChecker = new
AuthorityChecker(authorityRule,
connectionSession.getConnectionContext().getGrantee());
ShardingSpherePreconditions.checkState(authorityChecker.isAuthorized(databaseName),
() -> new UnknownDatabaseException(databaseName));
- List<MemoryQueryResultDataRow> rows = Collections.singletonList(new
MemoryQueryResultDataRow(Arrays.asList(databaseName, String.format("CREATE
DATABASE `%s`;", databaseName))));
- return new RawMemoryQueryResult(queryResultMetaData, rows);
+ return Collections.singleton(new LocalDataQueryResultRow(databaseName,
String.format("CREATE DATABASE `%s`;", databaseName)));
+ }
+
+ @Override
+ public QueryResultMetaData getQueryResultMetaData() {
+ List<RawQueryResultColumnMetaData> columnMetaData = Arrays.asList(
+ new RawQueryResultColumnMetaData("", "Database", "Database",
Types.VARCHAR, "VARCHAR", 255, 0),
+ new RawQueryResultColumnMetaData("", "Create Database",
"Create Database", Types.VARCHAR, "VARCHAR", 255, 0));
+ return new RawQueryResultMetaData(columnMetaData);
}
}
diff --git
a/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowCreateDatabaseExecutorTest.java
b/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowCreateDatabaseExecutorTest.java
index a72bf2880ae..69006c8146f 100644
---
a/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowCreateDatabaseExecutorTest.java
+++
b/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowCreateDatabaseExecutorTest.java
@@ -60,6 +60,7 @@ class MySQLShowCreateDatabaseExecutorTest {
assertThat(executor.getQueryResultMetaData().getColumnCount(), is(2));
assertTrue(executor.getMergedResult().next());
assertThat(executor.getMergedResult().getValue(1, Object.class),
is("foo_db"));
+ assertThat(executor.getMergedResult().getValue(2, Object.class),
is("CREATE DATABASE `foo_db`;"));
assertFalse(executor.getMergedResult().next());
}