github-actions[bot] commented on code in PR #65218:
URL: https://github.com/apache/doris/pull/65218#discussion_r3527302049
##########
be/src/format_v2/parquet/parquet_reader.cpp:
##########
@@ -608,6 +629,7 @@ Status ParquetReader::get_aggregate_result(const
format::FileAggregateRequest& r
// leaf, but the levels-only protocol still avoids
Doris-side string
// materialization for that leaf.
RETURN_IF_ERROR(shape_reader->load_nested_levels_batch(batch_rows));
+ _record_scan_rows(batch_rows);
Review Comment:
The read just above this accounting still misses the new stop conversion.
`DorisRandomAccessFile::ReadAt()` now returns an Arrow `IOError("stop")` when
`io_ctx->should_stop` is set, and `ParquetReader::get_block()` converts a
failure from `scheduler.read_next_batch()` to EOF in that case. But
`COUNT(col)` pushdown calls `get_aggregate_result()` directly; for complex
columns this path can hit the same Arrow reader through
`shape_reader->load_nested_levels_batch(batch_rows)`, and the `RETURN_IF_ERROR`
propagates the resulting IOError through
`TableReader::_try_materialize_aggregate_pushdown_rows()` as a scan failure. A
LIMIT/cancel that calls `FileScannerV2::try_stop()` while this aggregate path
is loading levels can therefore fail the query instead of stopping cleanly.
Please add the same `io_ctx->should_stop` conversion around the aggregate-level
reads, and cover COUNT(col) aggregate pushdown cancellation.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]