Skip to content

Commit 0509e10

Browse files
authored
fix: FilterExecutor needs to handle projections when enable_selector_executor is turned off. (#18921)
* fix * fix * settings
1 parent 73d8a76 commit 0509e10

File tree

3 files changed

+27
-22
lines changed

3 files changed

+27
-22
lines changed

src/query/expression/src/filter/filter_executor.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,11 @@ impl FilterExecutor {
9090
.run(&self.filter)?
9191
.try_downcast::<BooleanType>()
9292
.unwrap();
93-
data_block.filter_boolean_value(&filter)
93+
let data_block = data_block.filter_boolean_value(&filter)?;
94+
match &self.projections {
95+
Some(projections) => Ok(data_block.project(projections)),
96+
None => Ok(data_block),
97+
}
9498
}
9599
}
96100

tests/sqllogictests/suites/query/filter.test

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ create or replace table t(a int null, b varchar null);
88
statement ok
99
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');
1010

11-
query I
11+
query IT
1212
select a, b from t where a = 1 and cast(b as int) >= 2;
1313
----
1414
1 4
@@ -39,39 +39,39 @@ select count(*) from t where a > b;
3939
----
4040
1
4141

42-
query II
42+
query I
4343
select count(*) from t where a >= b;
4444
----
4545
3
4646

47-
query III
47+
query I
4848
select count(*) from t where a < b;
4949
----
5050
0
5151

52-
query I?
52+
query I
5353
select count(*) from t where a <= b;
5454
----
5555
2
5656

57-
query BB
57+
query ??
5858
select * from t where a
5959
----
6060
1 1
6161
1 0
6262

63-
query BB
63+
query ??
6464
select * from t where not(a)
6565
----
6666
0 0
6767

68-
query BB
68+
query ??
6969
select * from t where not(not(a))
7070
----
7171
1 1
7272
1 0
7373

74-
query BB
74+
query ??
7575
select * from t where not(not(not(a)))
7676
----
7777
0 0
@@ -83,28 +83,28 @@ statement ok
8383
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');
8484

8585
# LikePattern::OrdinalStr
86-
query I
86+
query IT
8787
select * from t where b like 'databend';
8888
----
8989
1 databend
9090

9191
# LikePattern::StartOfPercent
92-
query I
92+
query IT
9393
select * from t where b like '%databend';
9494
----
9595
1 databend
9696
3 query databend
9797

9898
# LikePattern::EndOfPercent
99-
query I
99+
query IT
100100
select * from t where b like 'databend%';
101101
----
102102
1 databend
103103
5 databend cloud data warehouse
104104
6 databend%cloud data warehouse
105105

106106
# LikePattern::SurroundByPercent
107-
query I
107+
query IT
108108
select * from t where b like '%databend%';
109109
----
110110
1 databend
@@ -115,48 +115,48 @@ select * from t where b like '%databend%';
115115
6 databend%cloud data warehouse
116116

117117
# LikePattern::ComplexPattern
118-
query I
118+
query IT
119119
select * from t where b like 'databend\\%cloud%data%warehouse';
120120
----
121121
6 databend%cloud data warehouse
122122

123123
# LikePattern::ComplexPattern
124-
query I
124+
query IT
125125
select * from t where b like 'databend%cloud_data%warehouse';
126126
----
127127
5 databend cloud data warehouse
128128
6 databend%cloud data warehouse
129129

130130
# LikePattern::SimplePattern, has_start_percent = false, has_end_percent = false
131-
query I
131+
query IT
132132
select * from t where b like 'databend%cloud%data%warehouse';
133133
----
134134
5 databend cloud data warehouse
135135
6 databend%cloud data warehouse
136136

137137
# LikePattern::SimplePattern, has_start_percent = true, has_end_percent = false
138-
query I
138+
query IT
139139
select * from t where b like '%databend%cloud%data%warehouse';
140140
----
141141
5 databend cloud data warehouse
142142
6 databend%cloud data warehouse
143143

144144
# LikePattern::SimplePattern, has_start_percent = false, has_end_percent = true
145-
query I
145+
query IT
146146
select * from t where b like 'databend%cloud%data%warehouse%';
147147
----
148148
5 databend cloud data warehouse
149149
6 databend%cloud data warehouse
150150

151151
# LikePattern::SimplePattern, has_start_percent = true, has_end_percent = true
152-
query I
152+
query IT
153153
select * from t where b like '%databend%cloud%data%warehouse%';
154154
----
155155
5 databend cloud data warehouse
156156
6 databend%cloud data warehouse
157157

158158
# LikePattern::StartOfPercent, push down not
159-
query I
159+
query IT
160160
select * from t where b not like '%databend';
161161
----
162162
2 databend query
@@ -165,7 +165,7 @@ select * from t where b not like '%databend';
165165
6 databend%cloud data warehouse
166166

167167
# LikePattern::SimplePattern, has_start_percent = false, has_end_percent = false, push down not
168-
query I
168+
query IT
169169
select * from t where b not like 'databend%cloud%data%warehouse';
170170
----
171171
1 databend

tests/sqllogictests/suites/query/filter_disable_selector.test

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
statement ok
22
set enable_selector_executor = 0;
33

4-
include ./filter.test
4+
include filter.test
5+
include functions/02_0000_function_aggregate_retention.test
56

67
statement ok
78
unset enable_selector_executor;

0 commit comments

Comments
 (0)