From 3c881b080120922d77211c097b0b938022da3e9d Mon Sep 17 00:00:00 2001 From: before-Sunrise <71162020+before-Sunrise@users.noreply.github.com> Date: Sun, 28 Apr 2024 21:20:18 +0800 Subject: [PATCH] [BugFix] fix bug for sqlblacklist (#44862) Signed-off-by: before-Sunrise --- .../java/com/starrocks/qe/StmtExecutor.java | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/fe/fe-core/src/main/java/com/starrocks/qe/StmtExecutor.java b/fe/fe-core/src/main/java/com/starrocks/qe/StmtExecutor.java index f3d804bfc7264..b861fef78b5df 100644 --- a/fe/fe-core/src/main/java/com/starrocks/qe/StmtExecutor.java +++ b/fe/fe-core/src/main/java/com/starrocks/qe/StmtExecutor.java @@ -541,6 +541,19 @@ public void execute() throws Exception { if (context.isHTTPQueryDump) { return; } + + // For follower: verify sql in BlackList before forward to leader + // For leader: if this is a proxy sql, no need to verify sql in BlackList because every fe has its own blacklist + if (isQuery && Config.enable_sql_blacklist && !parsedStmt.isExplain() && !isProxy) { + OriginStatement origStmt = parsedStmt.getOrigStmt(); + if (origStmt != null) { + String originSql = origStmt.originStmt.trim() + .toLowerCase().replaceAll(" +", " "); + // If this sql is in blacklist, show message. + SqlBlackList.verifying(originSql); + } + } + if (isForwardToLeader()) { context.setIsForward(true); forwardToLeader(); @@ -553,17 +566,6 @@ public void execute() throws Exception { final boolean isStatisticsJob = AnalyzerUtils.isStatisticsJob(context, parsedStmt); context.setStatisticsJob(isStatisticsJob); - // sql's blacklist is enabled through enable_sql_blacklist. - if (Config.enable_sql_blacklist && !parsedStmt.isExplain()) { - OriginStatement origStmt = parsedStmt.getOrigStmt(); - if (origStmt != null) { - String originSql = origStmt.originStmt.trim() - .toLowerCase().replaceAll(" +", " "); - // If this sql is in blacklist, show message. - SqlBlackList.verifying(originSql); - } - } - // Record planner costs in audit log Preconditions.checkNotNull(execPlan, "query must has a plan");