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]

Reply via email to