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 5c9f3ab6eec [fix](nereids)do not generate min-max runtime filter for
A<=>B and A!=B #25676
5c9f3ab6eec is described below
commit 5c9f3ab6eec5fe82bcbdca0354ecb0bf36c04e41
Author: minghong <[email protected]>
AuthorDate: Tue Oct 24 10:23:22 2023 +0800
[fix](nereids)do not generate min-max runtime filter for A<=>B and A!=B
#25676
---
.../processor/post/RuntimeFilterGenerator.java | 4 +++
.../suites/nereids_p0/join/test_join.groovy | 32 +++++++++++-----------
2 files changed, 20 insertions(+), 16 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/RuntimeFilterGenerator.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/RuntimeFilterGenerator.java
index b99b8904e5e..e4ee9d92176 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/RuntimeFilterGenerator.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/RuntimeFilterGenerator.java
@@ -205,6 +205,10 @@ public class RuntimeFilterGenerator extends
PlanPostProcessor {
if (!(expr instanceof ComparisonPredicate)) {
return null;
}
+ if (!(expr instanceof LessThan) && !(expr instanceof LessThanEqual)
+ && !(expr instanceof GreaterThanEqual) && !(expr instanceof
GreaterThan)) {
+ return null;
+ }
if (!(expr.child(0) instanceof SlotReference)) {
return null;
}
diff --git a/regression-test/suites/nereids_p0/join/test_join.groovy
b/regression-test/suites/nereids_p0/join/test_join.groovy
index 584b80384ae..5336c33913b 100644
--- a/regression-test/suites/nereids_p0/join/test_join.groovy
+++ b/regression-test/suites/nereids_p0/join/test_join.groovy
@@ -174,44 +174,44 @@ suite("test_join", "nereids_p0") {
// join null value
def table_1 = "join_null_value_left_table"
def table_2 = "join_null_value_right_table"
- sql"""drop table if exists ${table_1}"""
- sql"""drop table if exists ${table_2}"""
- sql"""create table if not exists ${table_1} (k1 tinyint, k2 decimal(9,3)
NULL, k3 char(5) NULL,
+ sql"""drop table if exists join_null_value_left_table"""
+ sql"""drop table if exists join_null_value_right_table"""
+ sql"""create table if not exists join_null_value_left_table (k1 tinyint,
k2 decimal(9,3) NULL, k3 char(5) NULL,
k4 date NULL, k5 datetime NULL,
k6 double sum) engine=olap
distributed by hash(k1) buckets 2
properties("storage_type"="column", "replication_num" = "1")"""
- sql"""create table if not exists ${table_2} (k1 tinyint, k2 decimal(9,3)
NULL, k3 char(5) NULL,
+ sql"""create table if not exists join_null_value_right_table (k1 tinyint,
k2 decimal(9,3) NULL, k3 char(5) NULL,
k4 date NULL, k5 datetime NULL,
k6 double sum) engine=olap
distributed by hash(k1) buckets 2
properties("storage_type"="column", "replication_num" = "1")"""
- sql"""insert into ${table_1} values (1, NULL,'null', NULL, NULL, 8.9),
+ sql"""insert into join_null_value_left_table values (1, NULL,'null', NULL,
NULL, 8.9),
(2, NULL,'2', NULL, NULL, 8.9),
(3, NULL,'null', '2019-09-09', NULL, 8.9);"""
- sql"""insert into ${table_2} values (1, NULL,'null', NULL, NULL, 8.9),
+ sql"""insert into join_null_value_right_table values (1, NULL,'null',
NULL, NULL, 8.9),
(2, NULL,'2', NULL, NULL, 8.9),
(3, NULL,'null', '2019-09-09', NULL, 8.9);"""
- sql"""insert into ${table_1} values (5, 2.2,"null", NULL, "2019-09-09
00:00:00", 8.9)"""
+ sql"""insert into join_null_value_left_table values (5, 2.2,"null", NULL,
"2019-09-09 00:00:00", 8.9)"""
for (type in join_types) {
for (index in range(1, 7)) {
- qt_join_null_value1"""select * from ${table_1} a ${type} join
${table_2} b on a.k${index} = b.k${index} and
+ qt_join_null_value1"""select * from join_null_value_left_table a
${type} join join_null_value_right_table b on a.k${index} = b.k${index} and
a.k2 = b.k2 and a.k${index} != b.k2 order by a.k1, b.k1"""
- qt_join_null_value2"""select * from ${table_1} a ${type} join
${table_2} b on a.k${index} = b.k${index} and
+ qt_join_null_value2"""select * from join_null_value_left_table a
${type} join join_null_value_right_table b on a.k${index} = b.k${index} and
a.k2 = b.k2 and a.k${index} != b.k2 order by a.k1, b.k1"""
}
}
// <=>, =, is NULL, ifnull
- qt_join_null1"""select * from ${table_1} a left join ${table_2} b on a.k2
<=> b.k2 and
+ qt_join_null1"""select * from join_null_value_left_table a left join
join_null_value_right_table b on a.k2 <=> b.k2 and
a.k3 is NULL order by a.k1, b.k1"""
- qt_join_null2"""select * from ${table_1} a join ${table_2} b on a.k2<=>
b.k2 and
+ qt_join_null2"""select * from join_null_value_left_table a join
join_null_value_right_table b on a.k2<=> b.k2 and
a.k4<=>NULL order by a.k1,b.k1"""
- qt_join_null3"""select * from ${table_1} a join ${table_2} b on a.k2<=>
b.k2
+ qt_join_null3"""select * from join_null_value_left_table a join
join_null_value_right_table b on a.k2<=> b.k2
and a.k4<=>NULL and b.k4 is not NULL order by a.k1,b.k1"""
- qt_join_null4"""select * from ${table_1} a join ${table_2} b on a.k2<=>
b.k2 and
+ qt_join_null4"""select * from join_null_value_left_table a join
join_null_value_right_table b on a.k2<=> b.k2 and
a.k4<=>NULL and b.k4 is not NULL and a.k3=2 order by a.k1,b.k1"""
- qt_join_null5"""select * from ${table_1} a join ${table_2} b on
ifnull(a.k4,null)
+ qt_join_null5"""select * from join_null_value_left_table a join
join_null_value_right_table b on ifnull(a.k4,null)
<=> ifnull(b.k5,null) order by a.k1, a.k2, a.k3, b.k1, b.k2"""
- sql"drop table ${table_1}"
- sql"drop table ${table_2}"
+ sql"drop table join_null_value_left_table"
+ sql"drop table join_null_value_right_table"
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]