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]