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

Reply via email to