Jackie-Jiang opened a new pull request, #19038: URL: https://github.com/apache/pinot/pull/19038
## Summary Implements `canProduceBitmaps` and `getBitmaps` for `AndFilterOperator` and `OrFilterOperator`, which previously fell back to the base `BaseFilterOperator` defaults (`canProduceBitmaps()` returning `false` and `getBitmaps()` throwing). - `canProduceBitmaps()` returns `true` only when every child can produce bitmaps. - `getBitmaps()` reduces each child's `BitmapCollection` — so any per-child inversion (exclusive predicates, `NOT`) is materialized before aggregation — then combines them via `BufferFastAggregation.and` (AND) / `BufferFastAggregation.or` (OR), returning a non-inverted single-bitmap `BitmapCollection`. - `canOptimizeCount()` now delegates to `canProduceBitmaps()` in both operators, removing the duplicated "all children can produce bitmaps" loop it previously carried. This lets composite AND/OR nodes participate directly in the bitmap-based fast paths (e.g. count optimization and `getFilteredDocIds`) instead of being materialized through document iteration, and it composes recursively for nested AND/OR trees. `FilterOperatorUtils` strips `MatchAllFilterOperator` / `EmptyFilterOperator` children before constructing an AND/OR, so every child of an AND/OR shares the same `numDocs`, making the reduce-then-aggregate path safe. -- 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]
