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

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


The following commit(s) were added to refs/heads/2.0.13-tebu by this push:
     new 2387ca8424c [opt](nereids) set session var for range filter lower 
bound (#40200)
2387ca8424c is described below

commit 2387ca8424cd0367c34b18a5184d241342338caf
Author: minghong <[email protected]>
AuthorDate: Fri Aug 30 19:47:49 2024 +0800

    [opt](nereids) set session var for range filter lower bound (#40200)
    
    ## Proposed changes
    
    Issue Number: close #xxx
    
    <!--Describe your changes.-->
---
 .../java/org/apache/doris/nereids/stats/FilterEstimation.java    | 9 +++++++--
 .../src/main/java/org/apache/doris/qe/SessionVariable.java       | 5 +++++
 2 files changed, 12 insertions(+), 2 deletions(-)

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 4aea73351a9..a67e3ae81fb 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
@@ -46,6 +46,7 @@ import 
org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
 import org.apache.doris.nereids.types.DataType;
 import org.apache.doris.nereids.types.DateTimeType;
 import org.apache.doris.nereids.types.coercion.RangeScalable;
+import org.apache.doris.qe.ConnectContext;
 import org.apache.doris.statistics.ColumnStatistic;
 import org.apache.doris.statistics.ColumnStatisticBuilder;
 import org.apache.doris.statistics.StatisticRange;
@@ -598,10 +599,14 @@ public class FilterEstimation extends 
ExpressionVisitor<Statistics, EstimationCo
                     .setNdv(intersectRange.getDistinctValues())
                     .setNumNulls(0);
             double sel = leftRange.overlapPercentWith(rightRange);
+            double lowerBound = RANGE_SELECTIVITY_THRESHOLD;
+            if (ConnectContext.get() != null) {
+                lowerBound = 
ConnectContext.get().getSessionVariable().rangeFilterLowerBound;
+            }
             if (!(dataType instanceof RangeScalable) && (sel != 0.0 && sel != 
1.0)) {
                 sel = DEFAULT_INEQUALITY_COEFFICIENT;
-            } else if (sel < RANGE_SELECTIVITY_THRESHOLD) {
-                sel = RANGE_SELECTIVITY_THRESHOLD;
+            } else if (sel < lowerBound) {
+                sel = lowerBound;
             }
             sel = getNotNullSelectivity(leftStats, sel);
             updatedStatistics = context.statistics.withSel(sel);
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 5854a150bad..b407847ad7e 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
@@ -1353,6 +1353,11 @@ public class SessionVariable implements Serializable, 
Writable {
 
     public String ignoreRuntimeFilterIds = "";
 
+    @VariableMgr.VarAttr(name = "range_filter_lower_bound",
+            description = {"", ""})
+
+    public double rangeFilterLowerBound = 0.01;
+
     @VariableMgr.VarAttr(name = STATS_INSERT_MERGE_ITEM_COUNT, flag = 
VariableMgr.GLOBAL, description = {
             "控制统计信息相关INSERT攒批数量", "Controls the batch size for stats INSERT 
merging."
     }


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

Reply via email to