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 f0ca1f1e6bab88..0d71f690676b9d 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 @@ -562,10 +562,11 @@ public Statistics computeOlapScan(OlapScan olapScan) { 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 e4592b2b983bfb..12521f095a00f1 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 @@ -53,6 +53,7 @@ public enum ErrType { private boolean isNereids = true; private boolean isInternal = false; private ShowResultSet rs = null; + private boolean planWithUnKnownColumnStats = false; public QueryState() { } @@ -69,6 +70,7 @@ public void reset() { warningRows = 0; isNereids = false; rs = null; + planWithUnKnownColumnStats = false; } public MysqlStateType getStateType() { @@ -194,4 +196,12 @@ public MysqlPacket toResponsePacket() { 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 b0f661d5032f68..71bd7feeea6e24 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 @@ -511,6 +511,7 @@ protected void runQuery(String sql) { 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()) {