Gabriel39 opened a new pull request, #65487:
URL: https://github.com/apache/doris/pull/65487

   ### What problem does this PR solve?
   
   Issue Number: N/A
   
   Related PR: N/A
   
   Problem Summary:
   
   Parquet row-group pruning cached Bloom filters only by leaf column ID. Once 
a column Bloom filter was loaded for the first row group, subsequent row groups 
reused that filter. An equality or IN predicate could therefore prune a later 
row group based on an absence result from the first row group's Bloom filter, 
silently omitting matching rows.
   
   This change scopes both the cached Bloom filter and its loaded state by 
`(row_group_idx, leaf_column_id)`, ensuring every absence decision uses the 
current row group's filter.
   
   The test fixture was generated by parquet-mr 1.17.0 with four INT32 rows 
split into two row groups, real Bloom filters enabled for `id`, and 
statistics/dictionary encoding disabled. The unit test verifies both row groups 
expose Bloom filters and compares pruning with Bloom disabled and enabled. A 
value present only in RG1 keeps RG1 selected while RG0 is pruned.
   
   ### Release note
   
   Fix incorrect Parquet Bloom filter pruning that could silently omit rows 
from later row groups.
   
   ### Check List (For Author)
   
   - Test:
       - Unit Test: 
`ParquetStatisticsPruningTest.BloomFilterCacheIsScopedToRowGroupAndColumn`
       - BE clang-format v16 check
       - BE clang-tidy attempted; blocked by unrelated remote 
toolchain/pre-existing diagnostics (`stddef.h` lookup and existing 
NOLINT/readability findings)
   - Behavior changed: Yes. Parquet Bloom pruning now uses each row group's own 
filter.
   - Does this need documentation: No
   


-- 
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