This is an automated email from the ASF dual-hosted git repository. yiguolei pushed a commit to branch branch-2.1 in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.1 by this push: new a193f16a5aa branch-2.1:[fix](auditlog)Set sqlHash in executeInternalQuery (#49984) (#50271) a193f16a5aa is described below commit a193f16a5aad38fe77aa3acfd7a702466976f179 Author: James <lijib...@selectdb.com> AuthorDate: Tue Apr 22 18:05:56 2025 +0800 branch-2.1:[fix](auditlog)Set sqlHash in executeInternalQuery (#49984) (#50271) backport: https://github.com/apache/doris/pull/49984 --- .../java/org/apache/doris/qe/StmtExecutor.java | 4 ++++ .../org/apache/doris/statistics/AnalysisJob.java | 6 ++++- .../java/org/apache/doris/qe/StmtExecutorTest.java | 20 ++++++++++++++++ .../apache/doris/statistics/AnalysisJobTest.java | 27 ++++++++++++++++++++++ 4 files changed, 56 insertions(+), 1 deletion(-) 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 1e9ce44ca6d..ae8b3b84f6f 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 @@ -214,6 +214,7 @@ import com.google.common.collect.Sets; import com.google.protobuf.ByteString; import com.google.protobuf.ProtocolStringList; import lombok.Setter; +import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -3182,6 +3183,9 @@ public class StmtExecutor { UUID uuid = UUID.randomUUID(); TUniqueId queryId = new TUniqueId(uuid.getMostSignificantBits(), uuid.getLeastSignificantBits()); context.setQueryId(queryId); + if (originStmt.originStmt != null) { + context.setSqlHash(DigestUtils.md5Hex(originStmt.originStmt)); + } try { List<ResultRow> resultRows = new ArrayList<>(); try { diff --git a/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisJob.java b/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisJob.java index 7bed978ee33..dd33829046f 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisJob.java +++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisJob.java @@ -20,11 +20,13 @@ package org.apache.doris.statistics; import org.apache.doris.catalog.Env; import org.apache.doris.qe.AuditLogHelper; import org.apache.doris.qe.AutoCloseConnectContext; +import org.apache.doris.qe.ConnectContext; import org.apache.doris.qe.QueryState; import org.apache.doris.qe.QueryState.MysqlStateType; import org.apache.doris.qe.StmtExecutor; import org.apache.doris.statistics.util.StatisticsUtil; +import org.apache.commons.codec.digest.DigestUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -129,7 +131,9 @@ public class AnalysisJob { } insertStmt += values.toString(); try (AutoCloseConnectContext r = StatisticsUtil.buildConnectContext(false)) { - stmtExecutor = new StmtExecutor(r.connectContext, insertStmt); + ConnectContext context = r.connectContext; + context.setSqlHash(DigestUtils.md5Hex(insertStmt)); + stmtExecutor = new StmtExecutor(context, insertStmt); executeWithExceptionOnFail(stmtExecutor); } catch (Exception t) { throw new RuntimeException("Failed to analyze: " + t.getMessage()); 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 112c0f8678b..c1686192f48 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 @@ -38,6 +38,7 @@ import org.apache.doris.datasource.InternalCatalog; import org.apache.doris.metric.MetricRepo; import org.apache.doris.mysql.MysqlChannel; import org.apache.doris.mysql.MysqlSerializer; +import org.apache.doris.nereids.NereidsPlanner; import org.apache.doris.planner.OriginalPlanner; import org.apache.doris.qe.ConnectContext.ConnectType; import org.apache.doris.rewrite.ExprRewriter; @@ -49,6 +50,8 @@ import com.google.common.collect.Lists; import com.google.common.collect.Sets; import java_cup.runtime.Symbol; import mockit.Expectations; +import mockit.Mock; +import mockit.MockUp; import mockit.Mocked; import org.junit.Assert; import org.junit.Before; @@ -801,4 +804,21 @@ public class StmtExecutorTest { Assert.assertEquals(QueryState.MysqlStateType.ERR, state.getStateType()); } + + @Test + public void testSetSqlHash() { + StmtExecutor executor = new StmtExecutor(ctx, "select * from table1"); + new MockUp<NereidsPlanner>() { + @Mock + public void plan(StatementBase queryStmt, org.apache.doris.thrift.TQueryOptions queryOptions) { + throw new RuntimeException(); + } + }; + try { + executor.executeInternalQuery(); + } catch (Exception e) { + // do nothing + } + Assert.assertEquals("a8ec30e5ad0820f8c5bd16a82a4491ca", executor.getContext().getSqlHash()); + } } diff --git a/fe/fe-core/src/test/java/org/apache/doris/statistics/AnalysisJobTest.java b/fe/fe-core/src/test/java/org/apache/doris/statistics/AnalysisJobTest.java index 1bf2041bb4f..a7d60d2ad38 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/statistics/AnalysisJobTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/statistics/AnalysisJobTest.java @@ -214,4 +214,31 @@ public class AnalysisJobTest { Assertions.assertEquals(0, job.queryFinished.size()); } + @Test + public void testSetSqlHash(@Mocked AnalysisInfo info, + @Mocked OlapAnalysisTask task1, @Mocked OlapAnalysisTask task2) { + AnalysisJob job = new AnalysisJob(info, Collections.singletonList(task1)); + job.queryFinished = new HashSet<>(); + job.queryFinished.add(task2); + new MockUp<AnalysisJob>() { + @Mock + public void updateTaskState(AnalysisState state, String msg) { + } + + @Mock + protected void executeWithExceptionOnFail(StmtExecutor stmtExecutor) throws Exception { + + } + + @Mock + protected void syncLoadStats() { + } + }; + job.buf.add(new ColStatsData()); + job.writeBuf(); + Assertions.assertEquals(0, job.queryFinished.size()); + Assertions.assertEquals(0, job.buf.size()); + Assertions.assertEquals("ffd6aa73b79f9228c737a6da0f4b2834", job.stmtExecutor.getContext().getSqlHash()); + } + } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org