This is an automated email from the ASF dual-hosted git repository. yiguolei pushed a commit to branch branch-2.1 in repository https://gitbox.apache.org/repos/asf/doris.git
commit a6ab6c1cb82b512d27ed57e80fad3760fb104e4d Author: minghong <[email protected]> AuthorDate: Thu Feb 29 16:01:01 2024 +0800 [fix](nereids) stats derive for "not equal“, avoid to derive zero ndv (#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 496a66f745b..f7f8667e706 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]
