This is an automated email from the ASF dual-hosted git repository.
morrysnow 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 04b18d9dcb6 branch-3.0: [opt](nereids) improve prune partition with
lots of `in (xxx)` #46261 (#46285)
04b18d9dcb6 is described below
commit 04b18d9dcb69bbc0a6a5692667cfe57f0444cd54
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Fri Jan 3 19:38:11 2025 +0800
branch-3.0: [opt](nereids) improve prune partition with lots of `in (xxx)`
#46261 (#46285)
Cherry-picked from #46261
Co-authored-by: 924060929 <[email protected]>
---
.../rules/expression/rules/OneRangePartitionEvaluator.java | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/OneRangePartitionEvaluator.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/OneRangePartitionEvaluator.java
index 7e91d5502f7..0a9d0bbed01 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/OneRangePartitionEvaluator.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/OneRangePartitionEvaluator.java
@@ -62,6 +62,8 @@ import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Range;
+import com.google.common.collect.RangeSet;
+import com.google.common.collect.TreeRangeSet;
import java.util.ArrayList;
import java.util.HashMap;
@@ -362,13 +364,12 @@ public class OneRangePartitionEvaluator<K>
if (exprRanges.containsKey(inPredicate.getCompareExpr())
&&
inPredicate.getOptions().stream().allMatch(Literal.class::isInstance)) {
Expression compareExpr = inPredicate.getCompareExpr();
- ColumnRange unionLiteralRange = ColumnRange.empty();
ColumnRange compareExprRange =
result.childrenResult.get(0).columnRanges.get(compareExpr);
+ RangeSet<ColumnBound> union = TreeRangeSet.create();
for (Expression expr : inPredicate.getOptions()) {
- unionLiteralRange = unionLiteralRange.union(
-
compareExprRange.intersect(ColumnRange.singleton((Literal) expr)));
+
union.addAll(compareExprRange.intersect(ColumnRange.singleton((Literal)
expr)).asRanges());
}
- result = intersectSlotRange(result, exprRanges, compareExpr,
unionLiteralRange);
+ result = intersectSlotRange(result, exprRanges, compareExpr, new
ColumnRange(union));
}
result = result.withRejectNot(false);
return result;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]