This is an automated email from the ASF dual-hosted git repository. yiguolei pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push: new 6b945680a7 [Improve](point query) audit point query (#21587) 6b945680a7 is described below commit 6b945680a72eefc20fa0261c78e39c4bb3ad3b13 Author: lihangyu <15605149...@163.com> AuthorDate: Sun Jul 9 16:43:41 2023 +0800 [Improve](point query) audit point query (#21587) --- .../java/org/apache/doris/analysis/ExecuteStmt.java | 14 ++++++++++++++ .../main/java/org/apache/doris/qe/ConnectProcessor.java | 17 +++++++++++++---- .../java/org/apache/doris/qe/PrepareStmtContext.java | 11 +++++++++++ 3 files changed, 38 insertions(+), 4 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ExecuteStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/ExecuteStmt.java index 3230770879..df5707dda6 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ExecuteStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ExecuteStmt.java @@ -40,4 +40,18 @@ public class ExecuteStmt extends StatementBase { public RedirectStatus getRedirectStatus() { return RedirectStatus.NO_FORWARD; } + + @Override + public String toSql() { + String sql = "EXECUTE("; + int size = args.size(); + for (int i = 0; i < size; ++i) { + sql += args.get(i).toSql(); + if (i < size - 1) { + sql += ", "; + } + } + sql += ")"; + return sql; + } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectProcessor.java b/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectProcessor.java index 36580e5c7a..f190f68280 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectProcessor.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectProcessor.java @@ -219,10 +219,16 @@ public class ConnectProcessor { "msg: Not supported such prepared statement"); return; } + ctx.setStartTime(); + if (prepareCtx.stmt.getInnerStmt() instanceof QueryStmt) { + ctx.getState().setIsQuery(true); + } + prepareCtx.stmt.setIsPrepared(); int paramCount = prepareCtx.stmt.getParmCount(); // null bitmap byte[] nullbitmapData = new byte[(paramCount + 7) / 8]; packetBuf.get(nullbitmapData); + String stmtStr = ""; try { // new_params_bind_flag if ((int) packetBuf.get() != 0) { @@ -252,6 +258,7 @@ public class ConnectProcessor { executor = new StmtExecutor(ctx, executeStmt); ctx.setExecutor(executor); executor.execute(); + stmtStr = executeStmt.toSql(); } catch (Throwable e) { // Catch all throwable. // If reach here, maybe palo bug. @@ -259,9 +266,11 @@ public class ConnectProcessor { ctx.getState().setError(ErrorCode.ERR_UNKNOWN_ERROR, e.getClass().getSimpleName() + ", msg: " + e.getMessage()); } + auditAfterExec(stmtStr, prepareCtx.stmt.getInnerStmt(), null, false); } - private void auditAfterExec(String origStmt, StatementBase parsedStmt, Data.PQueryStatistics statistics) { + private void auditAfterExec(String origStmt, StatementBase parsedStmt, + Data.PQueryStatistics statistics, boolean printFuzzyVariables) { origStmt = origStmt.replace("\n", " "); // slow query long endTime = System.currentTimeMillis(); @@ -283,7 +292,7 @@ public class ConnectProcessor { .setStmtId(ctx.getStmtId()) .setQueryId(ctx.queryId() == null ? "NaN" : DebugUtil.printId(ctx.queryId())) .setTraceId(spanContext.isValid() ? spanContext.getTraceId() : "") - .setFuzzyVariables(ctx.getSessionVariable().printFuzzyVariables()); + .setFuzzyVariables(!printFuzzyVariables ? "" : ctx.getSessionVariable().printFuzzyVariables()); if (ctx.getState().isQuery()) { MetricRepo.COUNTER_QUERY_ALL.increase(1L); @@ -436,7 +445,7 @@ public class ConnectProcessor { finalizeCommand(); } } - auditAfterExec(auditStmt, executor.getParsedStmt(), executor.getQueryStatisticsForAuditLog()); + auditAfterExec(auditStmt, executor.getParsedStmt(), executor.getQueryStatisticsForAuditLog(), true); // execute failed, skip remaining stmts if (ctx.getState().getStateType() == MysqlStateType.ERR) { break; @@ -480,7 +489,7 @@ public class ConnectProcessor { ctx.getState().setErrType(QueryState.ErrType.ANALYSIS_ERR); } } - auditAfterExec(origStmt, parsedStmt, statistics); + auditAfterExec(origStmt, parsedStmt, statistics, true); } // analyze the origin stmt and return multi-statements diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/PrepareStmtContext.java b/fe/fe-core/src/main/java/org/apache/doris/qe/PrepareStmtContext.java index d7279e85ed..e4db61a588 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/PrepareStmtContext.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/PrepareStmtContext.java @@ -31,6 +31,9 @@ public class PrepareStmtContext { public Analyzer analyzer; public String stmtString; + // Timestamp in millisecond last command starts at + protected volatile long startTime; + public PrepareStmtContext(PrepareStmt stmt, ConnectContext ctx, Planner planner, Analyzer analyzer, String stmtString) { this.stmt = stmt; @@ -41,4 +44,12 @@ public class PrepareStmtContext { this.analyzer = analyzer; this.stmtString = stmtString; } + + public long getStartTime() { + return startTime; + } + + public void setStartTime() { + startTime = System.currentTimeMillis(); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org