Skip to content

Commit b66c492

Browse files
authored
fix(query): fix stale indices in process_or (#19085)
* fix(query): fix stale indice in process_or * fix(query): update tests
1 parent af79db9 commit b66c492

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

src/query/expression/src/filter/selector.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,12 +260,17 @@ impl<'a> Selector<'a> {
260260
select_strategy,
261261
count,
262262
)?;
263+
let mut recomputed_count = false;
263264
if (true_count > 0 && select_strategy == SelectStrategy::All)
264265
|| select_strategy == SelectStrategy::True
265266
{
266267
select_strategy = SelectStrategy::False;
268+
count = temp_mutable_false_idx - *mutable_false_idx;
269+
recomputed_count = true;
270+
}
271+
if !recomputed_count {
272+
count -= true_count;
267273
}
268-
count -= true_count;
269274
if count == 0 {
270275
*mutable_false_idx = temp_mutable_false_idx;
271276
break;

src/query/service/tests/it/pipelines/filter/filter_executor.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ pub fn test_filter_executor() -> databend_common_exception::Result<()> {
3838
// Random number of rows, number of columns and random max depth of the filter expr.
3939
let num_rows = rng.gen_range(0..10000);
4040
let num_columns = rng.gen_range(1..10);
41-
let max_depth = rng.gen_range(1..5);
41+
let max_depth = rng.gen_range(1..10);
4242

4343
// 1. Generate a random `DataBlock`.
4444
let columns = (0..num_columns)

0 commit comments

Comments
 (0)