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

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


The following commit(s) were added to refs/heads/branch-2.0 by this push:
     new ae794fb60cf [opt](nereids) add session var:enableStringMinMaxStats to 
avoid min-max error (#39925)
ae794fb60cf is described below

commit ae794fb60cff190fdba8398dac960ce930b4180b
Author: minghong <[email protected]>
AuthorDate: Fri Aug 30 10:55:26 2024 +0800

    [opt](nereids) add session var:enableStringMinMaxStats to avoid min-max 
error (#39925)
    
    ## Proposed changes
    when analyze job set unreadable max value, we could ignore them.
    Issue Number: close #xxx
    
    <!--Describe your changes.-->
---
 .../main/java/org/apache/doris/nereids/stats/StatsCalculator.java | 8 ++++++++
 fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java | 3 +++
 2 files changed, 11 insertions(+)

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 2c954f9ee43..1b67b80a62d 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
@@ -113,6 +113,7 @@ import 
org.apache.doris.nereids.trees.plans.physical.PhysicalUnion;
 import org.apache.doris.nereids.trees.plans.physical.PhysicalWindow;
 import org.apache.doris.nereids.trees.plans.visitor.DefaultPlanVisitor;
 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.statistics.AnalysisManager;
 import org.apache.doris.statistics.ColumnStatistic;
@@ -670,6 +671,13 @@ public class StatsCalculator extends 
DefaultPlanVisitor<Statistics, Void> {
             if (cache.avgSizeByte <= 0) {
                 
colStatsBuilder.setAvgSizeByte(slotReference.getColumn().get().getType().getSlotSize());
             }
+            if (ConnectContext.get() != null && 
!ConnectContext.get().getSessionVariable().enableStringMinMaxStats
+                    && slotReference.getDataType() instanceof CharacterType) {
+                colStatsBuilder.setMinValue(Double.NEGATIVE_INFINITY);
+                colStatsBuilder.setMaxValue(Double.POSITIVE_INFINITY);
+                colStatsBuilder.setMinExpr(null);
+                colStatsBuilder.setMaxExpr(null);
+            }
             if (!cache.isUnKnown) {
                 rowCount = Math.max(rowCount, cache.count + deltaRowCount);
             } else {
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 ea0c4094243..3c57d6dbe91 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
@@ -1338,6 +1338,9 @@ public class SessionVariable implements Serializable, 
Writable {
             flag = VariableMgr.GLOBAL)
     public boolean enableAutoAnalyze = true;
 
+    @VariableMgr.VarAttr(name = "enable_string_min_max_stats", needForward = 
true)
+    public boolean enableStringMinMaxStats = true;
+
     @VariableMgr.VarAttr(name = AUTO_ANALYZE_TABLE_WIDTH_THRESHOLD,
             description = {"参与自动收集的最大表宽度,列数多于这个参数的表不参与自动收集",
                 "Maximum table width to enable auto analyze, "


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

Reply via email to