From 91892f5ea44387461377a2bf60bca288abb8c0a5 Mon Sep 17 00:00:00 2001 From: caiconghui1 Date: Wed, 16 Feb 2022 19:51:00 +0800 Subject: [PATCH] [Bug](Variables) Fix bug that execute showVariablesStmt with where expression return empty resultset --- fe/fe-core/src/main/cup/sql_parser.cup | 6 +++--- .../java/org/apache/doris/analysis/KillStmt.java | 6 +++--- .../org/apache/doris/http/rest/ConnectionAction.java | 2 +- .../apache/doris/httpv2/rest/ConnectionAction.java | 4 ++-- .../java/org/apache/doris/qe/ConnectScheduler.java | 2 +- .../main/java/org/apache/doris/qe/StmtExecutor.java | 2 +- .../apache/doris/service/FrontendServiceImpl.java | 2 +- .../java/org/apache/doris/qe/StmtExecutorTest.java | 12 ++++++------ 8 files changed, 18 insertions(+), 18 deletions(-) diff --git a/fe/fe-core/src/main/cup/sql_parser.cup b/fe/fe-core/src/main/cup/sql_parser.cup index 14b0f11aaec806..5a9953c5f1c624 100644 --- a/fe/fe-core/src/main/cup/sql_parser.cup +++ b/fe/fe-core/src/main/cup/sql_parser.cup @@ -3506,15 +3506,15 @@ restore_stmt ::= kill_stmt ::= KW_KILL INTEGER_LITERAL:value {: - RESULT = new KillStmt(true, value.longValue()); + RESULT = new KillStmt(true, value.intValue()); :} | KW_KILL KW_CONNECTION INTEGER_LITERAL:value {: - RESULT = new KillStmt(true, value.longValue()); + RESULT = new KillStmt(true, value.intValue()); :} | KW_KILL KW_QUERY INTEGER_LITERAL:value {: - RESULT = new KillStmt(false, value.longValue()); + RESULT = new KillStmt(false, value.intValue()); :} ; diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/KillStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/KillStmt.java index 541c3a46fad29e..98120f319caab1 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/KillStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/KillStmt.java @@ -24,9 +24,9 @@ */ public class KillStmt extends StatementBase { private final boolean isConnectionKill; - private final long connectionId; + private final int connectionId; - public KillStmt(boolean isConnectionKill, long connectionId) { + public KillStmt(boolean isConnectionKill, int connectionId) { this.isConnectionKill = isConnectionKill; this.connectionId = connectionId; } @@ -35,7 +35,7 @@ public boolean isConnectionKill() { return isConnectionKill; } - public long getConnectionId() { + public int getConnectionId() { return connectionId; } diff --git a/fe/fe-core/src/main/java/org/apache/doris/http/rest/ConnectionAction.java b/fe/fe-core/src/main/java/org/apache/doris/http/rest/ConnectionAction.java index b0caaff6f53529..3ac8f288be7fb5 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/http/rest/ConnectionAction.java +++ b/fe/fe-core/src/main/java/org/apache/doris/http/rest/ConnectionAction.java @@ -47,7 +47,7 @@ public void execute(BaseRequest request, BaseResponse response) { sendResult(request, response, HttpResponseStatus.BAD_REQUEST); return; } - long connectionId = Long.valueOf(connStr.trim()); + int connectionId = Integer.valueOf(connStr.trim()); ConnectContext context = ExecuteEnv.getInstance().getScheduler().getContext(connectionId); if (context == null || context.queryId() == null) { response.getContent().append("connection id " + connectionId + " not found."); diff --git a/fe/fe-core/src/main/java/org/apache/doris/httpv2/rest/ConnectionAction.java b/fe/fe-core/src/main/java/org/apache/doris/httpv2/rest/ConnectionAction.java index f04ca74f594128..e601e8223f5da6 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/httpv2/rest/ConnectionAction.java +++ b/fe/fe-core/src/main/java/org/apache/doris/httpv2/rest/ConnectionAction.java @@ -65,9 +65,9 @@ protected Object connection(HttpServletRequest request, HttpServletResponse resp return ResponseEntityBuilder.badRequest("Missing connection_id"); } - long connectionId = -1; + int connectionId = -1; try { - connectionId = Long.valueOf(connStr.trim()); + connectionId = Integer.valueOf(connStr.trim()); } catch (NumberFormatException e) { return ResponseEntityBuilder.badRequest("Invalid connection id: " + e.getMessage()); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectScheduler.java b/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectScheduler.java index ecb6048406405c..babad8a1726cf7 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectScheduler.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectScheduler.java @@ -128,7 +128,7 @@ public void unregisterConnection(ConnectContext ctx) { } } - public ConnectContext getContext(long connectionId) { + public ConnectContext getContext(int connectionId) { return connectionMap.get(connectionId); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java b/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java index 5b4be019da5401..d5947caac10d91 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java @@ -728,7 +728,7 @@ public void cancel() { // Handle kill statement. private void handleKill() throws DdlException { KillStmt killStmt = (KillStmt) parsedStmt; - long id = killStmt.getConnectionId(); + int id = killStmt.getConnectionId(); ConnectContext killCtx = context.getConnectScheduler().getContext(id); if (killCtx == null) { ErrorReport.reportDdlException(ErrorCode.ERR_NO_SUCH_THREAD, id); diff --git a/fe/fe-core/src/main/java/org/apache/doris/service/FrontendServiceImpl.java b/fe/fe-core/src/main/java/org/apache/doris/service/FrontendServiceImpl.java index 94ca3bddebbde5..6628e978d0c237 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/service/FrontendServiceImpl.java +++ b/fe/fe-core/src/main/java/org/apache/doris/service/FrontendServiceImpl.java @@ -426,7 +426,7 @@ public TShowVariableResult showVariables(TShowVariableRequest params) throws TEx Map map = Maps.newHashMap(); result.setVariables(map); // Find connect - ConnectContext ctx = exeEnv.getScheduler().getContext(params.getThreadId()); + ConnectContext ctx = exeEnv.getScheduler().getContext((int) params.getThreadId()); if (ctx == null) { return result; } diff --git a/fe/fe-core/src/test/java/org/apache/doris/qe/StmtExecutorTest.java b/fe/fe-core/src/test/java/org/apache/doris/qe/StmtExecutorTest.java index 64a041bc4e0e4a..0ab38a3fbda064 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/qe/StmtExecutorTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/qe/StmtExecutorTest.java @@ -342,7 +342,7 @@ public void testKill(@Mocked KillStmt killStmt, @Mocked SqlParser parser) throws new Expectations(scheduler) { { // suicide - scheduler.getContext(1L); + scheduler.getContext(1); result = ctx; } }; @@ -399,7 +399,7 @@ public void testKillOtherFail(@Mocked KillStmt killStmt, @Mocked SqlParser parse new Expectations(scheduler) { { // suicide - scheduler.getContext(1L); + scheduler.getContext(1); result = killCtx; } }; @@ -420,7 +420,7 @@ public void testKillOther(@Mocked KillStmt killStmt, @Mocked SqlParser parser, @ killStmt.getConnectionId(); minTimes = 0; - result = 1L; + result = 1; killStmt.isConnectionKill(); minTimes = 0; @@ -455,7 +455,7 @@ public void testKillOther(@Mocked KillStmt killStmt, @Mocked SqlParser parser, @ new Expectations(scheduler) { { // suicide - scheduler.getContext(1L); + scheduler.getContext(1); result = killCtx; } }; @@ -475,7 +475,7 @@ public void testKillNoCtx(@Mocked KillStmt killStmt, @Mocked SqlParser parser) t killStmt.getConnectionId(); minTimes = 0; - result = 1L; + result = 1; killStmt.getRedirectStatus(); minTimes = 0; @@ -490,7 +490,7 @@ public void testKillNoCtx(@Mocked KillStmt killStmt, @Mocked SqlParser parser) t new Expectations(scheduler) { { - scheduler.getContext(1L); + scheduler.getContext(1); result = null; } };