raghav-reglobe commented on PR #63889: URL: https://github.com/apache/doris/pull/63889#issuecomment-5853233136
Hit the same crash on 4.1 last night (bronze Iceberg table, text primary key, `WHERE id IN (...)` plus struct sub-fields in the projection; identical stack, frame 4 `ScalarColumnReader<false,true>::gen_filter_map`), and traced how the null map gets there, in case it helps land this: in `RowGroupReader::_do_lazy_read` a filter-all predicate batch is cached and the loop continues; when the row group's remaining pages are all pruned by the page index the next predicate read returns 0 rows with eof, the loop breaks before `filter_map_ptr` is reassigned, and `_rebuild_filter_map` re-inits that stale filter-all map as `init(nullptr, cached_rows, true)`. Scalar lazy columns survive because they ask `can_filter_all()` first. `init(nullptr, n, true)` has that single producer, so the 0-row break is the only path. This guard closes the crash by itself. I opened #68527 with the producer-side change (end the batch at that 0-row read and account the cached rows, no lazy read against the stale map) plus the guard inside the projection and unit tests; happy to rebase it onto this PR if you land this first, or to fold either into the other, whichever the reviewers prefer. -- 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]
