This is an automated email from the ASF dual-hosted git repository.
morrysnow 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 ce34dc3ab2e [fix](nereids) stats derive for "not equal“, avoid to
derive zero ndv (#31566) (#31614)
ce34dc3ab2e is described below
commit ce34dc3ab2e4be4051da80df6252bbac0a7d9097
Author: minghong <[email protected]>
AuthorDate: Fri Mar 1 15:58:34 2024 +0800
[fix](nereids) stats derive for "not equal“, avoid to derive zero ndv
(#31566) (#31614)
pick from master #31566
---
.../java/org/apache/doris/nereids/stats/FilterEstimation.java | 9 ++++-----
1 file changed, 4 insertions(+), 5 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 c086aaef5c8..3caec8a0fe8 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
@@ -24,7 +24,6 @@ import org.apache.doris.nereids.trees.expressions.And;
import org.apache.doris.nereids.trees.expressions.ComparisonPredicate;
import org.apache.doris.nereids.trees.expressions.CompoundPredicate;
import org.apache.doris.nereids.trees.expressions.EqualPredicate;
-import org.apache.doris.nereids.trees.expressions.EqualTo;
import org.apache.doris.nereids.trees.expressions.Expression;
import org.apache.doris.nereids.trees.expressions.GreaterThan;
import org.apache.doris.nereids.trees.expressions.GreaterThanEqual;
@@ -376,9 +375,9 @@ public class FilterEstimation extends
ExpressionVisitor<Statistics, EstimationCo
"Not-predicate meet unexpected child: %s",
child.toSql());
if (child instanceof Like) {
rowCount = context.statistics.getRowCount() -
childStats.getRowCount();
- colBuilder.setNdv(originColStats.ndv - childColStats.ndv);
+ colBuilder.setNdv(Math.max(1.0, originColStats.ndv -
childColStats.ndv));
} else if (child instanceof InPredicate) {
- colBuilder.setNdv(originColStats.ndv - childColStats.ndv);
+ colBuilder.setNdv(Math.max(1.0, originColStats.ndv -
childColStats.ndv));
colBuilder.setMinValue(originColStats.minValue)
.setMinExpr(originColStats.minExpr)
.setMaxValue(originColStats.maxValue)
@@ -389,8 +388,8 @@ public class FilterEstimation extends
ExpressionVisitor<Statistics, EstimationCo
.setMinExpr(originColStats.minExpr)
.setMaxValue(originColStats.maxValue)
.setMaxExpr(originColStats.maxExpr);
- } else if (child instanceof EqualTo) {
- colBuilder.setNdv(originColStats.ndv - childColStats.ndv);
+ } else if (child instanceof EqualPredicate) {
+ colBuilder.setNdv(Math.max(1.0, originColStats.ndv -
childColStats.ndv));
colBuilder.setMinValue(originColStats.minValue)
.setMinExpr(originColStats.minExpr)
.setMaxValue(originColStats.maxValue)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]