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