From 3d26e599b1747c9812739b4677ccf93fb9929d9b Mon Sep 17 00:00:00 2001 From: coldWater Date: Tue, 4 Nov 2025 11:34:29 +0800 Subject: [PATCH 1/3] fix --- src/query/expression/src/filter/filter_executor.rs | 5 +++++ src/query/settings/src/settings_default.rs | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/query/expression/src/filter/filter_executor.rs b/src/query/expression/src/filter/filter_executor.rs index 6879a0a612e41..52c6edd6f6e71 100644 --- a/src/query/expression/src/filter/filter_executor.rs +++ b/src/query/expression/src/filter/filter_executor.rs @@ -91,6 +91,11 @@ impl FilterExecutor { .try_downcast::() .unwrap(); data_block.filter_boolean_value(&filter) + // let data_block = data_block.filter_boolean_value(&filter)?; + // match self.projections { + // Some(projections) => Ok(data_block.project(&projections)), + // None => Ok(data_block), + // } } } diff --git a/src/query/settings/src/settings_default.rs b/src/query/settings/src/settings_default.rs index 4947e071f0242..87468ec48a2d1 100644 --- a/src/query/settings/src/settings_default.rs +++ b/src/query/settings/src/settings_default.rs @@ -1259,7 +1259,7 @@ impl DefaultSettings { range: Some(SettingRange::Numeric(0..=1)), }), ("enable_selector_executor", DefaultSettingValue { - value: UserSettingValue::UInt64(1), + value: UserSettingValue::UInt64(0), desc: "Enables selector executor for filter expression", mode: SettingMode::Both, scope: SettingScope::Both, From e3a6fa4d19848e22b6f5d4dbe02595a45451ffef Mon Sep 17 00:00:00 2001 From: coldWater Date: Tue, 4 Nov 2025 14:01:27 +0800 Subject: [PATCH 2/3] fix --- .../expression/src/filter/filter_executor.rs | 11 +++-- tests/sqllogictests/suites/query/filter.test | 40 +++++++++---------- .../suites/query/filter_disable_selector.test | 3 +- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/src/query/expression/src/filter/filter_executor.rs b/src/query/expression/src/filter/filter_executor.rs index 52c6edd6f6e71..e9011f72ea03d 100644 --- a/src/query/expression/src/filter/filter_executor.rs +++ b/src/query/expression/src/filter/filter_executor.rs @@ -90,12 +90,11 @@ impl FilterExecutor { .run(&self.filter)? .try_downcast::() .unwrap(); - data_block.filter_boolean_value(&filter) - // let data_block = data_block.filter_boolean_value(&filter)?; - // match self.projections { - // Some(projections) => Ok(data_block.project(&projections)), - // None => Ok(data_block), - // } + let data_block = data_block.filter_boolean_value(&filter)?; + match &self.projections { + Some(projections) => Ok(data_block.project(projections)), + None => Ok(data_block), + } } } diff --git a/tests/sqllogictests/suites/query/filter.test b/tests/sqllogictests/suites/query/filter.test index 5113d87c545f2..52afcca6a4c80 100644 --- a/tests/sqllogictests/suites/query/filter.test +++ b/tests/sqllogictests/suites/query/filter.test @@ -8,7 +8,7 @@ create or replace table t(a int null, b varchar null); statement ok insert into t(a, b) values (3, NULL), (3,'hello'), (3,'hello'), (3,'hello'), (3,'hello'), (3,'hello'), (3,'hello'), (3,'hello'), (1,'4'), (1,'4'); -query I +query IT select a, b from t where a = 1 and cast(b as int) >= 2; ---- 1 4 @@ -39,39 +39,39 @@ select count(*) from t where a > b; ---- 1 -query II +query I select count(*) from t where a >= b; ---- 3 -query III +query I select count(*) from t where a < b; ---- 0 -query I? +query I select count(*) from t where a <= b; ---- 2 -query BB +query ?? select * from t where a ---- 1 1 1 0 -query BB +query ?? select * from t where not(a) ---- 0 0 -query BB +query ?? select * from t where not(not(a)) ---- 1 1 1 0 -query BB +query ?? select * from t where not(not(not(a))) ---- 0 0 @@ -83,20 +83,20 @@ statement ok insert into t values(1, 'databend'), (2, ' databend query'), (3, 'query databend'), (4, 'query databend, query'), (5, 'databend cloud data warehouse'), (6, 'databend%cloud data warehouse'); # LikePattern::OrdinalStr -query I +query IT select * from t where b like 'databend'; ---- 1 databend # LikePattern::StartOfPercent -query I +query IT select * from t where b like '%databend'; ---- 1 databend 3 query databend # LikePattern::EndOfPercent -query I +query IT select * from t where b like 'databend%'; ---- 1 databend @@ -104,7 +104,7 @@ select * from t where b like 'databend%'; 6 databend%cloud data warehouse # LikePattern::SurroundByPercent -query I +query IT select * from t where b like '%databend%'; ---- 1 databend @@ -115,48 +115,48 @@ select * from t where b like '%databend%'; 6 databend%cloud data warehouse # LikePattern::ComplexPattern -query I +query IT select * from t where b like 'databend\\%cloud%data%warehouse'; ---- 6 databend%cloud data warehouse # LikePattern::ComplexPattern -query I +query IT select * from t where b like 'databend%cloud_data%warehouse'; ---- 5 databend cloud data warehouse 6 databend%cloud data warehouse # LikePattern::SimplePattern, has_start_percent = false, has_end_percent = false -query I +query IT select * from t where b like 'databend%cloud%data%warehouse'; ---- 5 databend cloud data warehouse 6 databend%cloud data warehouse # LikePattern::SimplePattern, has_start_percent = true, has_end_percent = false -query I +query IT select * from t where b like '%databend%cloud%data%warehouse'; ---- 5 databend cloud data warehouse 6 databend%cloud data warehouse # LikePattern::SimplePattern, has_start_percent = false, has_end_percent = true -query I +query IT select * from t where b like 'databend%cloud%data%warehouse%'; ---- 5 databend cloud data warehouse 6 databend%cloud data warehouse # LikePattern::SimplePattern, has_start_percent = true, has_end_percent = true -query I +query IT select * from t where b like '%databend%cloud%data%warehouse%'; ---- 5 databend cloud data warehouse 6 databend%cloud data warehouse # LikePattern::StartOfPercent, push down not -query I +query IT select * from t where b not like '%databend'; ---- 2 databend query @@ -165,7 +165,7 @@ select * from t where b not like '%databend'; 6 databend%cloud data warehouse # LikePattern::SimplePattern, has_start_percent = false, has_end_percent = false, push down not -query I +query IT select * from t where b not like 'databend%cloud%data%warehouse'; ---- 1 databend diff --git a/tests/sqllogictests/suites/query/filter_disable_selector.test b/tests/sqllogictests/suites/query/filter_disable_selector.test index 2c83d988edaeb..4da1046e20e9c 100644 --- a/tests/sqllogictests/suites/query/filter_disable_selector.test +++ b/tests/sqllogictests/suites/query/filter_disable_selector.test @@ -1,7 +1,8 @@ statement ok set enable_selector_executor = 0; -include ./filter.test +include filter.test +include functions/02_0000_function_aggregate_retention.test statement ok unset enable_selector_executor; From 604107920cbd19be96b7660130b1681a9dec041c Mon Sep 17 00:00:00 2001 From: coldWater Date: Tue, 4 Nov 2025 15:39:07 +0800 Subject: [PATCH 3/3] settings --- src/query/settings/src/settings_default.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/query/settings/src/settings_default.rs b/src/query/settings/src/settings_default.rs index 87468ec48a2d1..4947e071f0242 100644 --- a/src/query/settings/src/settings_default.rs +++ b/src/query/settings/src/settings_default.rs @@ -1259,7 +1259,7 @@ impl DefaultSettings { range: Some(SettingRange::Numeric(0..=1)), }), ("enable_selector_executor", DefaultSettingValue { - value: UserSettingValue::UInt64(0), + value: UserSettingValue::UInt64(1), desc: "Enables selector executor for filter expression", mode: SettingMode::Both, scope: SettingScope::Both,