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 be4a139a14a Refactor MySQLShowProcessListExecutor (#36867)
be4a139a14a is described below

commit be4a139a14a94b5366556d71bbae3b7b8ccb34af
Author: Liang Zhang <[email protected]>
AuthorDate: Mon Oct 13 12:28:43 2025 +0800

    Refactor MySQLShowProcessListExecutor (#36867)
---
 .../handler/admin/MySQLAdminExecutorCreator.java   |  2 +-
 .../show/MySQLShowProcessListExecutor.java         | 31 +++++++++++-----------
 .../executor/show/MySQLShowTablesExecutor.java     |  2 +-
 .../show/MySQLShowProcessListExecutorTest.java     |  3 ++-
 4 files changed, 20 insertions(+), 18 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 98901bceaf3..508b0f4f3a3 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
@@ -75,7 +75,7 @@ public final class MySQLAdminExecutorCreator implements 
DatabaseAdminExecutorCre
             return Optional.of(new 
MySQLShowProcedureStatusExecutor((MySQLShowProcedureStatusStatement) 
sqlStatement));
         }
         if (sqlStatement instanceof MySQLShowProcessListStatement) {
-            return Optional.of(new 
MySQLShowProcessListExecutor(((MySQLShowProcessListStatement) 
sqlStatement).isFull()));
+            return Optional.of(new 
MySQLShowProcessListExecutor((MySQLShowProcessListStatement) sqlStatement));
         }
         if (sqlStatement instanceof MySQLKillStatement) {
             return Optional.of(new 
MySQLKillProcessExecutor((MySQLKillStatement) sqlStatement));
diff --git 
a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowProcessListExecutor.java
 
b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowProcessListExecutor.java
index 0d77047bcfc..e23b77a423b 100644
--- 
a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowProcessListExecutor.java
+++ 
b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowProcessListExecutor.java
@@ -32,6 +32,7 @@ import 
org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
 import 
org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseAdminQueryExecutor;
 import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
+import 
org.apache.shardingsphere.sql.parser.statement.mysql.dal.show.process.MySQLShowProcessListStatement;
 
 import java.sql.Types;
 import java.util.ArrayList;
@@ -47,7 +48,7 @@ import java.util.stream.Collectors;
 @RequiredArgsConstructor
 public final class MySQLShowProcessListExecutor implements 
DatabaseAdminQueryExecutor {
     
-    private final boolean showFullProcesslist;
+    private final MySQLShowProcessListStatement sqlStatement;
     
     @Getter
     private QueryResultMetaData queryResultMetaData;
@@ -61,6 +62,19 @@ public final class MySQLShowProcessListExecutor implements 
DatabaseAdminQueryExe
         mergedResult = new TransparentMergedResult(getQueryResult());
     }
     
+    private QueryResultMetaData createQueryResultMetaData() {
+        List<RawQueryResultColumnMetaData> columns = new ArrayList<>(8);
+        columns.add(new RawQueryResultColumnMetaData("", "Id", "Id", 
Types.VARCHAR, "VARCHAR", 20, 0));
+        columns.add(new RawQueryResultColumnMetaData("", "User", "User", 
Types.VARCHAR, "VARCHAR", 20, 0));
+        columns.add(new RawQueryResultColumnMetaData("", "Host", "Host", 
Types.VARCHAR, "VARCHAR", 64, 0));
+        columns.add(new RawQueryResultColumnMetaData("", "db", "db", 
Types.VARCHAR, "VARCHAR", 64, 0));
+        columns.add(new RawQueryResultColumnMetaData("", "Command", "Command", 
Types.VARCHAR, "VARCHAR", 64, 0));
+        columns.add(new RawQueryResultColumnMetaData("", "Time", "Time", 
Types.VARCHAR, "VARCHAR", 10, 0));
+        columns.add(new RawQueryResultColumnMetaData("", "State", "State", 
Types.VARCHAR, "VARCHAR", 64, 0));
+        columns.add(new RawQueryResultColumnMetaData("", "Info", "Info", 
Types.VARCHAR, "VARCHAR", 120, 0));
+        return new RawQueryResultMetaData(columns);
+    }
+    
     private QueryResult getQueryResult() {
         Collection<Process> processes = 
ProxyContext.getInstance().getContextManager().getPersistServiceFacade().getModeFacade().getProcessService().getProcessList();
         if (processes.isEmpty()) {
@@ -87,23 +101,10 @@ public final class MySQLShowProcessListExecutor implements 
DatabaseAdminQueryExe
             rowValues.add(statePrefix + processDoneCount + "/" + 
process.getTotalUnitCount().get());
             sql = process.getSql();
         }
-        if (null != sql && sql.length() > 100 && !showFullProcesslist) {
+        if (null != sql && sql.length() > 100 && !sqlStatement.isFull()) {
             sql = sql.substring(0, 100);
         }
         rowValues.add(null != sql ? sql : "");
         return new MemoryQueryResultDataRow(rowValues);
     }
-    
-    private QueryResultMetaData createQueryResultMetaData() {
-        List<RawQueryResultColumnMetaData> columns = new ArrayList<>(8);
-        columns.add(new RawQueryResultColumnMetaData("", "Id", "Id", 
Types.VARCHAR, "VARCHAR", 20, 0));
-        columns.add(new RawQueryResultColumnMetaData("", "User", "User", 
Types.VARCHAR, "VARCHAR", 20, 0));
-        columns.add(new RawQueryResultColumnMetaData("", "Host", "Host", 
Types.VARCHAR, "VARCHAR", 64, 0));
-        columns.add(new RawQueryResultColumnMetaData("", "db", "db", 
Types.VARCHAR, "VARCHAR", 64, 0));
-        columns.add(new RawQueryResultColumnMetaData("", "Command", "Command", 
Types.VARCHAR, "VARCHAR", 64, 0));
-        columns.add(new RawQueryResultColumnMetaData("", "Time", "Time", 
Types.VARCHAR, "VARCHAR", 10, 0));
-        columns.add(new RawQueryResultColumnMetaData("", "State", "State", 
Types.VARCHAR, "VARCHAR", 64, 0));
-        columns.add(new RawQueryResultColumnMetaData("", "Info", "Info", 
Types.VARCHAR, "VARCHAR", 120, 0));
-        return new RawQueryResultMetaData(columns);
-    }
 }
diff --git 
a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowTablesExecutor.java
 
b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowTablesExecutor.java
index e38f1b7b496..2a2aff3e825 100644
--- 
a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowTablesExecutor.java
+++ 
b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowTablesExecutor.java
@@ -65,7 +65,7 @@ public final class MySQLShowTablesExecutor implements 
DatabaseAdminQueryExecutor
     
     @Override
     public void execute(final ConnectionSession connectionSession, final 
ShardingSphereMetaData metaData) {
-        String databaseName = sqlStatement.getFromDatabase().map(schema -> 
schema.getDatabase().getIdentifier().getValue()).orElseGet(connectionSession::getUsedDatabaseName);
+        String databaseName = sqlStatement.getFromDatabase().map(optional -> 
optional.getDatabase().getIdentifier().getValue()).orElseGet(connectionSession::getUsedDatabaseName);
         queryResultMetaData = createQueryResultMetaData(databaseName);
         mergedResult = new 
TransparentMergedResult(getQueryResult(databaseName, metaData));
     }
diff --git 
a/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowProcessListExecutorTest.java
 
b/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowProcessListExecutorTest.java
index 9a4d006991a..563ec90830e 100644
--- 
a/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowProcessListExecutorTest.java
+++ 
b/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowProcessListExecutorTest.java
@@ -25,6 +25,7 @@ import 
org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
 import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
+import 
org.apache.shardingsphere.sql.parser.statement.mysql.dal.show.process.MySQLShowProcessListStatement;
 import org.apache.shardingsphere.test.infra.framework.mock.AutoMockExtension;
 import org.apache.shardingsphere.test.infra.framework.mock.StaticMockSettings;
 import org.junit.jupiter.api.Test;
@@ -53,7 +54,7 @@ class MySQLShowProcessListExecutorTest {
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
         
when(contextManager.getPersistServiceFacade().getModeFacade().getProcessService().getProcessList()).thenReturn(mockProcessList());
-        MySQLShowProcessListExecutor showProcessListExecutor = new 
MySQLShowProcessListExecutor(false);
+        MySQLShowProcessListExecutor showProcessListExecutor = new 
MySQLShowProcessListExecutor(new MySQLShowProcessListStatement(databaseType, 
false));
         showProcessListExecutor.execute(new ConnectionSession(databaseType, 
new DefaultAttributeMap()), mock());
         
assertThat(showProcessListExecutor.getQueryResultMetaData().getColumnCount(), 
is(8));
         MergedResult mergedResult = showProcessListExecutor.getMergedResult();

Reply via email to