1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor;
19
20 import lombok.RequiredArgsConstructor;
21 import org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
22 import org.apache.shardingsphere.infra.exception.generic.UnsupportedSQLOperationException;
23 import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
24 import org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseAdminExecutor;
25 import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
26 import org.apache.shardingsphere.sql.parser.statement.mysql.dal.MySQLKillStatement;
27
28 import java.sql.SQLException;
29
30
31
32
33 @RequiredArgsConstructor
34 public final class KillProcessExecutor implements DatabaseAdminExecutor {
35
36 private static final String QUERY_SCOPE = "QUERY";
37
38 private final MySQLKillStatement killStatement;
39
40
41
42
43
44
45 @Override
46 public void execute(final ConnectionSession connectionSession) throws SQLException {
47 ShardingSpherePreconditions.checkState(QUERY_SCOPE.equalsIgnoreCase(killStatement.getScope()),
48 () -> new UnsupportedSQLOperationException("Only `KILL QUERY <processId>` SQL syntax is supported"));
49 String processId = killStatement.getProcessId();
50 ProxyContext.getInstance().getContextManager().getPersistServiceFacade().getModeFacade().getProcessService().killProcess(processId);
51 }
52 }