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]