This is an automated email from the ASF dual-hosted git repository.

duanzhengqiang 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 def79d4ab6d support show full processlist (#30436)
def79d4ab6d is described below

commit def79d4ab6d6b2acd6fcd103765b23633f060113
Author: Chuxin Chen <[email protected]>
AuthorDate: Sun Mar 10 09:07:06 2024 +0800

    support show full processlist (#30436)
---
 .../mysql/visitor/statement/type/MySQLDALStatementVisitor.java     | 2 +-
 .../dialect/statement/mysql/dal/MySQLShowProcessListStatement.java | 6 ++++++
 .../backend/mysql/handler/admin/MySQLAdminExecutorCreator.java     | 2 +-
 .../mysql/handler/admin/executor/ShowProcessListExecutor.java      | 7 +++++--
 .../backend/mysql/handler/admin/MySQLAdminExecutorCreatorTest.java | 2 +-
 .../mysql/handler/admin/executor/ShowProcessListExecutorTest.java  | 2 +-
 6 files changed, 15 insertions(+), 6 deletions(-)

diff --git 
a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDALStatementVisitor.java
 
b/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDALStatementVisitor.java
index d06c4985350..0c6e3365c13 100644
--- 
a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDALStatementVisitor.java
+++ 
b/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDALStatementVisitor.java
@@ -893,7 +893,7 @@ public final class MySQLDALStatementVisitor extends 
MySQLStatementVisitor implem
     
     @Override
     public ASTNode visitShowProcesslist(final ShowProcesslistContext ctx) {
-        return new MySQLShowProcessListStatement();
+        return new MySQLShowProcessListStatement(null != ctx.FULL());
     }
     
     @Override
diff --git 
a/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/mysql/dal/MySQLShowProcessListStatement.java
 
b/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/mysql/dal/MySQLShowProcessListStatement.java
index c4b52c44835..8a9d8837dac 100644
--- 
a/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/mysql/dal/MySQLShowProcessListStatement.java
+++ 
b/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/mysql/dal/MySQLShowProcessListStatement.java
@@ -17,6 +17,8 @@
 
 package org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal;
 
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.AbstractSQLStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.dal.DALStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.MySQLStatement;
@@ -24,5 +26,9 @@ import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.MySQLSta
 /**
  * MySQL show process list statement.
  */
+@RequiredArgsConstructor
+@Getter
 public final class MySQLShowProcessListStatement extends AbstractSQLStatement 
implements DALStatement, MySQLStatement {
+    
+    private final boolean full;
 }
diff --git 
a/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreator.java
 
b/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreator.java
index 6c0a9b6e952..38f9c96c70c 100644
--- 
a/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreator.java
+++ 
b/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreator.java
@@ -94,7 +94,7 @@ public final class MySQLAdminExecutorCreator implements 
DatabaseAdminExecutorCre
             return Optional.of(new 
ShowDatabasesExecutor((MySQLShowDatabasesStatement) sqlStatement));
         }
         if (sqlStatement instanceof MySQLShowProcessListStatement) {
-            return Optional.of(new ShowProcessListExecutor());
+            return Optional.of(new 
ShowProcessListExecutor(((MySQLShowProcessListStatement) 
sqlStatement).isFull()));
         }
         if (sqlStatement instanceof MySQLKillStatement) {
             return Optional.of(new KillProcessExecutor((MySQLKillStatement) 
sqlStatement));
diff --git 
a/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowProcessListExecutor.java
 
b/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowProcessListExecutor.java
index 0d2cab7f4bc..34f975b2b4f 100644
--- 
a/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowProcessListExecutor.java
+++ 
b/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowProcessListExecutor.java
@@ -48,6 +48,8 @@ import java.util.stream.Collectors;
 @SuppressWarnings("UnstableApiUsage")
 public final class ShowProcessListExecutor implements 
DatabaseAdminQueryExecutor {
     
+    private final boolean showFullProcesslist;
+    
     private Collection<Process> processes;
     
     @Getter
@@ -56,7 +58,8 @@ public final class ShowProcessListExecutor implements 
DatabaseAdminQueryExecutor
     @Getter
     private MergedResult mergedResult;
     
-    public ShowProcessListExecutor() {
+    public ShowProcessListExecutor(final boolean showFullProcesslist) {
+        this.showFullProcesslist = showFullProcesslist;
         
ProxyContext.getInstance().getContextManager().getInstanceContext().getEventBusContext().register(this);
     }
     
@@ -102,7 +105,7 @@ public final class ShowProcessListExecutor implements 
DatabaseAdminQueryExecutor
             rowValues.add(statePrefix + processDoneCount + "/" + 
process.getTotalUnitCount());
             sql = process.getSql();
         }
-        if (null != sql && sql.length() > 100) {
+        if (null != sql && sql.length() > 100 && !showFullProcesslist) {
             sql = sql.substring(0, 100);
         }
         rowValues.add(null != sql ? sql : "");
diff --git 
a/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreatorTest.java
 
b/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreatorTest.java
index b05fc79bca5..9078321c0dd 100644
--- 
a/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreatorTest.java
+++ 
b/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreatorTest.java
@@ -141,7 +141,7 @@ class MySQLAdminExecutorCreatorTest {
     
     @Test
     void assertCreateWithMySQLShowProcessListStatement() {
-        when(sqlStatementContext.getSqlStatement()).thenReturn(new 
MySQLShowProcessListStatement());
+        when(sqlStatementContext.getSqlStatement()).thenReturn(new 
MySQLShowProcessListStatement(false));
         Optional<DatabaseAdminExecutor> actual = new 
MySQLAdminExecutorCreator().create(sqlStatementContext, "", "", 
Collections.emptyList());
         assertTrue(actual.isPresent());
         assertThat(actual.get(), instanceOf(ShowProcessListExecutor.class));
diff --git 
a/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowProcessListExecutorTest.java
 
b/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowProcessListExecutorTest.java
index a186876c806..a9e3f80b3e7 100644
--- 
a/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowProcessListExecutorTest.java
+++ 
b/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowProcessListExecutorTest.java
@@ -50,7 +50,7 @@ class ShowProcessListExecutorTest {
     void assertExecute() throws SQLException, ReflectiveOperationException {
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-        ShowProcessListExecutor showProcessListExecutor = new 
ShowProcessListExecutor();
+        ShowProcessListExecutor showProcessListExecutor = new 
ShowProcessListExecutor(false);
         setupProcesses(showProcessListExecutor);
         showProcessListExecutor.execute(new 
ConnectionSession(mock(MySQLDatabaseType.class), TransactionType.LOCAL, new 
DefaultAttributeMap()));
         
assertThat(showProcessListExecutor.getQueryResultMetaData().getColumnCount(), 
is(8));

Reply via email to