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