This is an automated email from the ASF dual-hosted git repository.

englefly pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new ac636a2abae [fix](nereids) partition prunner evaluates "not x=const" 
on single node range #29164
ac636a2abae is described below

commit ac636a2abae76d6f805961018cd49cce412d0115
Author: minghong <engle...@gmail.com>
AuthorDate: Sun Dec 31 08:50:16 2023 +0800

    [fix](nereids) partition prunner evaluates "not x=const" on single node 
range #29164
---
 .../rules/OneRangePartitionEvaluator.java          |  2 +-
 .../test_multi_range_partition.groovy              | 36 ++++++++++++++++++++++
 2 files changed, 37 insertions(+), 1 deletion(-)

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 e6c2d92c8e2..d63dea78e0e 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
@@ -458,7 +458,7 @@ public class OneRangePartitionEvaluator
     @Override
     public EvaluateRangeResult visitNot(Not not, EvaluateRangeInput context) {
         EvaluateRangeResult result = evaluateChildrenThenThis(not, context);
-        if (result.isRejectNot()) {
+        if (result.isRejectNot() && 
!result.result.equals(BooleanLiteral.TRUE)) {
             Map<Slot, ColumnRange> newRanges = Maps.newHashMap();
             for (Map.Entry<Slot, ColumnRange> entry : 
result.childrenResult.get(0).columnRanges.entrySet()) {
                 Slot slot = entry.getKey();
diff --git 
a/regression-test/suites/nereids_rules_p0/partition_prune/test_multi_range_partition.groovy
 
b/regression-test/suites/nereids_rules_p0/partition_prune/test_multi_range_partition.groovy
index b12853db8a5..0ee78332a16 100644
--- 
a/regression-test/suites/nereids_rules_p0/partition_prune/test_multi_range_partition.groovy
+++ 
b/regression-test/suites/nereids_rules_p0/partition_prune/test_multi_range_partition.groovy
@@ -272,4 +272,40 @@ suite("test_multi_range_partition") {
         sql "select * from pt where not k3 < 5;"
         contains "partitions=3/3 (p1,p2,p3)"
     }
+
+    sql "drop table if exists tt"
+    sql """
+    CREATE TABLE `tt` (
+     a bigint(20) NULL,
+     b bigint(20) null
+    ) ENGINE=OLAP
+    duplicate KEY(`a`)
+    COMMENT 'OLAP'
+    PARTITION BY RANGE(`a`, `b`)
+    (PARTITION p0 VALUES [("-2147483648", "-9223372036854775808"), ("5", "5")),
+    PARTITION p1 VALUES [("5", "5"), ("7", "7")),
+    PARTITION p2 VALUES [("7", "7"), ("2147483647", "2147483647000")))
+    DISTRIBUTED BY HASH(`b`) BUCKETS 10
+    PROPERTIES (
+    "replication_allocation" = "tag.location.default: 1",
+    "is_being_synced" = "false",
+    "storage_format" = "V2",
+    "light_schema_change" = "true",
+    "disable_auto_compaction" = "false",
+    "enable_single_replica_compaction" = "false"
+    ); 
+    """
+    sql "SET enable_nereids_planner=true"
+    sql "SET enable_fallback_to_original_planner=false"
+    sql "insert into tt values (0, 0), (6, 6), (8, 8)"
+    explain {
+        sql """SELECT
+            *
+            FROM
+            tt
+            WHERE
+            ( NOT ( a  IN ( 5 ) )
+            AND b  BETWEEN 2 AND 13 )"""
+        contains "partitions=3/3 (p0,p1,p2)"    
+    }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to