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 34389823eec [opt](nereids) set lower bound for range-selectivity(2.0) 
(#41060)
34389823eec is described below

commit 34389823eec7293d282c122a4507841b02e788ad
Author: minghong <engle...@gmail.com>
AuthorDate: Sun Sep 22 13:13:12 2024 +0800

    [opt](nereids) set lower bound for range-selectivity(2.0) (#41060)
    
    ## Proposed changes
    pick  #40089
    Issue Number: close #xxx
    
    <!--Describe your changes.-->
---
 .../main/java/org/apache/doris/nereids/stats/FilterEstimation.java   | 5 +++++
 1 file changed, 5 insertions(+)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/FilterEstimation.java 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/FilterEstimation.java
index 6f6e768caae..faa9fd323d6 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/FilterEstimation.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/FilterEstimation.java
@@ -69,6 +69,9 @@ import java.util.function.Predicate;
  */
 public class FilterEstimation extends ExpressionVisitor<Statistics, 
EstimationContext> {
     public static final double DEFAULT_INEQUALITY_COEFFICIENT = 0.5;
+    // "Range selectivity is prone to producing outliers, so we add this 
threshold limit.
+    // The threshold estimation is calculated based on selecting one month out 
of fifty years."
+    public static final double RANGE_SELECTIVITY_THRESHOLD = 0.0016;
     public static final double DEFAULT_IN_COEFFICIENT = 1.0 / 3.0;
 
     public static final double DEFAULT_HAVING_COEFFICIENT = 0.01;
@@ -602,6 +605,8 @@ public class FilterEstimation extends 
ExpressionVisitor<Statistics, EstimationCo
             double sel = leftRange.overlapPercentWith(rightRange);
             if (!(dataType instanceof RangeScalable) && (sel != 0.0 && sel != 
1.0)) {
                 sel = DEFAULT_INEQUALITY_COEFFICIENT;
+            } else if (sel < RANGE_SELECTIVITY_THRESHOLD) {
+                sel = RANGE_SELECTIVITY_THRESHOLD;
             }
             sel = getNotNullSelectivity(leftStats, sel);
             updatedStatistics = context.statistics.withSel(sel);


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to