From ec00dbdeeca70a1e1a3addc820e8615e5aa69bec Mon Sep 17 00:00:00 2001 From: morningman Date: Fri, 2 Nov 2018 16:20:49 +0800 Subject: [PATCH] Fix a bug that user can not kill it own connection --- .../java/org/apache/doris/qe/StmtExecutor.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/fe/src/main/java/org/apache/doris/qe/StmtExecutor.java b/fe/src/main/java/org/apache/doris/qe/StmtExecutor.java index 7d7f87950d26e3..9e5fd8c81ccf80 100644 --- a/fe/src/main/java/org/apache/doris/qe/StmtExecutor.java +++ b/fe/src/main/java/org/apache/doris/qe/StmtExecutor.java @@ -17,6 +17,10 @@ package org.apache.doris.qe; +import com.google.common.base.Strings; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; + import org.apache.doris.analysis.Analyzer; import org.apache.doris.analysis.CreateTableAsSelectStmt; import org.apache.doris.analysis.DdlStmt; @@ -65,11 +69,6 @@ import org.apache.doris.thrift.TResultBatch; import org.apache.doris.thrift.TUniqueId; import org.apache.doris.transaction.TabletCommitInfo; - -import com.google.common.base.Strings; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -505,7 +504,10 @@ private void handleKill() throws DdlException { context.setKilled(); } else { // Check auth - if (!Catalog.getCurrentCatalog().getAuth().checkGlobalPriv(ConnectContext.get(), PrivPredicate.ADMIN)) { + // Only user itself and user with admin priv can kill connection + if (!killCtx.getQualifiedUser().equals(ConnectContext.get().getQualifiedUser()) + && !Catalog.getCurrentCatalog().getAuth().checkGlobalPriv(ConnectContext.get(), + PrivPredicate.ADMIN)) { ErrorReport.reportDdlException(ErrorCode.ERR_KILL_DENIED_ERROR, id); }