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

Reply via email to