Skip to content

Commit 22f8e94

Browse files
committed
scan_progress should be incr before prewhere filter.
1 parent 5d7e38b commit 22f8e94

File tree

1 file changed

+23
-7
lines changed
  • src/query/storages/fuse/src/operations

1 file changed

+23
-7
lines changed

src/query/storages/fuse/src/operations/read.rs

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -222,12 +222,6 @@ impl FuseTableSource {
222222
fn generate_one_block(&mut self, block: DataBlock) -> Result<()> {
223223
let mut partitions = self.ctx.try_get_partitions(1)?;
224224

225-
let progress_values = ProgressValues {
226-
rows: block.num_rows(),
227-
bytes: block.memory_size(),
228-
};
229-
self.scan_progress.incr(&progress_values);
230-
231225
self.state = match partitions.is_empty() {
232226
true => State::Generated(None, block),
233227
false => State::Generated(Some(partitions.remove(0)), block),
@@ -322,9 +316,21 @@ impl Processor for FuseTableSource {
322316
return Err(ErrorCode::LogicalError("It's a bug. Need remain reader"));
323317
};
324318
// the last step of prewhere
319+
let progress_values = ProgressValues {
320+
rows: block.num_rows(),
321+
bytes: block.memory_size(),
322+
};
323+
self.scan_progress.incr(&progress_values);
325324
DataBlock::filter_block(block, &filter)?
326325
} else {
327-
self.output_reader.deserialize(part, chunks)?
326+
let block = self.output_reader.deserialize(part, chunks)?;
327+
let progress_values = ProgressValues {
328+
rows: block.num_rows(),
329+
bytes: block.memory_size(),
330+
};
331+
self.scan_progress.incr(&progress_values);
332+
333+
block
328334
};
329335

330336
self.generate_one_block(data_block)?;
@@ -341,11 +347,21 @@ impl Processor for FuseTableSource {
341347
if !DataBlock::filter_exists(&filter)? {
342348
// all rows in this block are filtered out
343349
// turn to read next part
350+
let progress_values = ProgressValues {
351+
rows: data_block.num_rows(),
352+
bytes: data_block.memory_size(),
353+
};
354+
self.scan_progress.incr(&progress_values);
344355
self.generate_one_empty_block()?;
345356
return Ok(());
346357
}
347358
if self.remain_reader.is_none() {
348359
// shortcut, we don't need to read remain data
360+
let progress_values = ProgressValues {
361+
rows: data_block.num_rows(),
362+
bytes: data_block.memory_size(),
363+
};
364+
self.scan_progress.incr(&progress_values);
349365
let block = DataBlock::filter_block(data_block, &filter)?;
350366
self.generate_one_block(block)?;
351367
} else {

0 commit comments

Comments
 (0)