You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by da...@apache.org on 2024/07/15 10:56:31 UTC
(doris) branch branch-3.0 updated: [fix](nereids) bug: after is-null stats derive, other column stats are dropped #37809 (#37832)
This is an automated email from the ASF dual-hosted git repository.
dataroaring pushed a commit to branch branch-3.0
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-3.0 by this push:
new 74691b73adc [fix](nereids) bug: after is-null stats derive, other column stats are dropped #37809 (#37832)
74691b73adc is described below
commit 74691b73adc5648535b2928863dbcb7496185034
Author: minghong <en...@gmail.com>
AuthorDate: Mon Jul 15 18:56:24 2024 +0800
[fix](nereids) bug: after is-null stats derive, other column stats are dropped #37809 (#37832)
## Proposed changes
pick #37809
Issue Number: close #xxx
<!--Describe your changes.-->
---
.../java/org/apache/doris/nereids/stats/StatsCalculator.java | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
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 f83521ae031..8785be7eb93 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
@@ -829,17 +829,24 @@ public class StatsCalculator extends DefaultPlanVisitor<Statistics, Void> {
Statistics isNullStats = computeGeneratedIsNullStats((LogicalJoin) plan, filter);
if (isNullStats != null) {
// overwrite the stats corrected as above before passing to filter estimation
- stats = isNullStats;
Set<Expression> newConjuncts = filter.getConjuncts().stream()
.filter(e -> !(e instanceof IsNull))
.collect(Collectors.toSet());
if (newConjuncts.isEmpty()) {
- return stats;
+ return isNullStats;
} else {
// overwrite the filter by removing is null and remain the others
filter = ((LogicalFilter<?>) filter).withConjunctsAndProps(newConjuncts,
((LogicalFilter<?>) filter).getGroupExpression(),
Optional.of(((LogicalFilter<?>) filter).getLogicalProperties()), plan);
+ // add update is-null related column stats for other predicate derive
+ StatisticsBuilder builder = new StatisticsBuilder(stats);
+ for (Expression expr : isNullStats.columnStatistics().keySet()) {
+ builder.putColumnStatistics(expr, isNullStats.findColumnStatistics(expr));
+ }
+ builder.setRowCount(isNullStats.getRowCount());
+ stats = builder.build();
+ stats.enforceValid();
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org