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]