Jackie-Jiang opened a new pull request, #19746: URL: https://github.com/apache/pinot/pull/19746
## Summary Follow-up to apache/pinot#19684, which added `create` factories that return an `EmptyDocIdSet` for an empty input. The constructors stayed public, so the rule that an empty result is an `EmptyDocIdSet` was only a convention. This makes the constructors of `BitmapDocIdSet`, `RangelessBitmapDocIdSet` and `SortedDocIdSet` private, so the factories are the only way to build them: - The remaining callers in `BaseColumnFilterOperator` and `BitmapBasedFilterOperator` use `create`. - `BaseColumnFilterOperator#excludeNulls` returns an empty result directly when every document is null, instead of intersecting the match with an empty bitmap. A parent `AND` can then short-circuit on it. - `BitmapDocIdSet`, `RangelessBitmapDocIdSet` and `NotDocIdSet` become `final`, and `BitmapDocIdSet` drops its constructor without a scan count. - `AndDocIdSetTest` uses the factory, and `SortedDocIdIteratorTest` builds the `SortedDocIdIterator` it tests directly. Query results do not change. ## API changes For code outside Pinot that builds these classes: - The constructors of `BitmapDocIdSet`, `RangelessBitmapDocIdSet` and `SortedDocIdSet` are no longer accessible; use their `create` factories. - `BitmapDocIdSet`, `RangelessBitmapDocIdSet`, `SortedDocIdSet` and `NotDocIdSet` can no longer be subclassed. A subclass that only reported a scan count can use `BitmapDocIdSet.create(docIds, numDocs, numEntriesScannedInFilter)`. 🤖 Generated with [Claude Code](https://claude.com/claude-code) -- 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]
