From b3dc913a8c031cdacca58d4220e8912fcc1ed515 Mon Sep 17 00:00:00 2001 From: minghong Date: Thu, 7 Aug 2025 11:58:05 +0800 Subject: [PATCH 1/2] pick --- .../doris/nereids/stats/StatsCalculator.java | 15 +++++++++++---- .../java/org/apache/doris/qe/SessionVariable.java | 14 ++++++++++++++ 2 files changed, 25 insertions(+), 4 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 b088ed0dccfa46..9949cf3669e020 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 @@ -117,6 +117,7 @@ import org.apache.doris.nereids.types.DataType; import org.apache.doris.nereids.types.coercion.CharacterType; import org.apache.doris.qe.ConnectContext; +import org.apache.doris.qe.SessionVariable; import org.apache.doris.statistics.AnalysisManager; import org.apache.doris.statistics.ColumnStatistic; import org.apache.doris.statistics.ColumnStatisticBuilder; @@ -1200,16 +1201,22 @@ public static Optional disableJoinReorderIfStatsInvalid(List reason = calculator.checkNdvValidation((OlapScan) scan, rowCount); if (reason.isPresent()) { try { - ConnectContext.get().getSessionVariable().disableNereidsJoinReorderOnce(); + ConnectContext.get().getSessionVariable() + .setVarOnce(SessionVariable.DISABLE_JOIN_REORDER, "true"); LOG.info("disable join reorder since col stats invalid: " + reason.get()); } catch (Exception e) { diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java index 515f90cd81f83d..4d7099983801a4 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java @@ -3079,5 +3079,19 @@ public boolean isEnableCooldownReplicaAffinity() { return enableCooldownReplicaAffinity; } + /** + * + * @return true iff set success + */ + public boolean setVarOnce(String varName, String value) { + try { + setIsSingleSetVar(true); + VariableMgr.setVar(this, new SetVar(varName, new StringLiteral(value))); + return true; + } catch (DdlException e) { + LOG.warn("set onece {} = {} failed", varName, value); + return false; + } + } } From 0e93ffbe82bb1a64f15177d46d51d233c4941b35 Mon Sep 17 00:00:00 2001 From: minghong Date: Thu, 7 Aug 2025 12:32:20 +0800 Subject: [PATCH 2/2] fix --- .../java/org/apache/doris/nereids/stats/StatsCalculator.java | 1 + 1 file changed, 1 insertion(+) 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 9949cf3669e020..103461b0008316 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 @@ -1209,6 +1209,7 @@ public static Optional disableJoinReorderIfStatsInvalid(List