This is an automated email from the ASF dual-hosted git repository.

morrysnow pushed a commit to branch branch-3.1
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-3.1 by this push:
     new 9c4e95a290c branch-3.1: [opt](nereids) Add planWithUnknownColumnStats 
to QueryState to prevent queries from analysis tasks from polluting the column 
stats cache. #57850 (#58742)
9c4e95a290c is described below

commit 9c4e95a290c4f05bb6285b0b960bf02a8df990b2
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Fri Dec 5 18:18:54 2025 +0800

    branch-3.1: [opt](nereids) Add planWithUnknownColumnStats to QueryState to 
prevent queries from analysis tasks from polluting the column stats cache. 
#57850 (#58742)
    
    Cherry-picked from #57850
    
    Co-authored-by: minghong <[email protected]>
---
 .../java/org/apache/doris/nereids/stats/StatsCalculator.java   |  5 +++--
 fe/fe-core/src/main/java/org/apache/doris/qe/QueryState.java   | 10 ++++++++++
 .../java/org/apache/doris/statistics/BaseAnalysisTask.java     |  1 +
 3 files changed, 14 insertions(+), 2 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/StatsCalculator.java 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/StatsCalculator.java
index 11d1c99c08c..57f22c19d18 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/StatsCalculator.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/StatsCalculator.java
@@ -537,10 +537,11 @@ public class StatsCalculator extends 
DefaultPlanVisitor<Statistics, Void> {
 
         StatisticsBuilder builder = new StatisticsBuilder();
 
-        // for system table or FeUt, use ColumnStatistic.UNKNOWN
+        // query for system table or FeUt or analysis, use 
ColumnStatistic.UNKNOWN
+
         if (StatisticConstants.isSystemTable(olapTable) || 
!FeConstants.enableInternalSchemaDb
                 || ConnectContext.get() == null
-                || ConnectContext.get().getState().isInternal()) {
+                || 
ConnectContext.get().getState().isPlanWithUnKnownColumnStats()) {
             for (Slot slot : ((Plan) olapScan).getOutput()) {
                 builder.putColumnStatistics(slot, ColumnStatistic.UNKNOWN);
             }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/QueryState.java 
b/fe/fe-core/src/main/java/org/apache/doris/qe/QueryState.java
index f3b9cacb026..1b28cda787c 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/qe/QueryState.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/qe/QueryState.java
@@ -52,6 +52,7 @@ public class QueryState {
     private boolean isNereids = false;
     private boolean isInternal = false;
     private ShowResultSet rs = null;
+    private boolean planWithUnKnownColumnStats = false;
 
     public QueryState() {
     }
@@ -67,6 +68,7 @@ public class QueryState {
         warningRows = 0;
         isNereids = false;
         rs = null;
+        planWithUnKnownColumnStats = false;
     }
 
     public MysqlStateType getStateType() {
@@ -192,4 +194,12 @@ public class QueryState {
     public String toString() {
         return String.valueOf(stateType);
     }
+
+    public boolean isPlanWithUnKnownColumnStats() {
+        return planWithUnKnownColumnStats;
+    }
+
+    public void setPlanWithUnKnownColumnStats(boolean 
planWithUnKnownColumnStats) {
+        this.planWithUnKnownColumnStats = planWithUnKnownColumnStats;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/statistics/BaseAnalysisTask.java 
b/fe/fe-core/src/main/java/org/apache/doris/statistics/BaseAnalysisTask.java
index cf17499ea99..8d12ed96e52 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/statistics/BaseAnalysisTask.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/BaseAnalysisTask.java
@@ -482,6 +482,7 @@ public abstract class BaseAnalysisTask {
         long startTime = System.currentTimeMillis();
         String queryId = "";
         try (AutoCloseConnectContext a  = 
StatisticsUtil.buildConnectContext(false)) {
+            a.connectContext.getState().setPlanWithUnKnownColumnStats(true);
             stmtExecutor = new StmtExecutor(a.connectContext, sql);
             ColStatsData colStatsData = new 
ColStatsData(stmtExecutor.executeInternalQuery().get(0));
             if (!colStatsData.isValid()) {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to