mirror of
https://github.com/qdrant/qdrant.git
synced 2026-08-05 01:20:53 -05:00
Step 5 of the SegmentReadView migration. New `read_view/scroll.rs` module hosts: * `should_pre_filter` — payload-index cardinality estimation, used by all three scroll-shaped trait methods (read_filtered, read_ordered_filtered, read_random_filtered). * `read_by_id_stream` — streamed enumeration of visible points. * `filtered_read_by_id_stream` — streamed enumeration with a payload-filter context applied. `Segment`-side `read_filtered` collapses to a `with_view` orchestrator (except for the `filtered_read_by_index` branch, see below). `read_ordered_filtered` and `read_random_filtered` now route their `should_pre_filter` calls through `with_view` (their own bodies migrate in steps 6 and 7). `filtered_read_by_index` stays on `Segment` for now: it depends on `StructPayloadIndex::iter_filtered_points`, which is an inherent method that takes the concrete `&IdTrackerEnum` and returns `impl Iterator`. Migrating it cleanly requires extending `PayloadIndexRead` with a trait-object-friendly version of that method, which is the same prerequisite Steps 6/7/8 will need (sampling, order_by, facet all use `iter_filtered_points`). I will do that as a focused pre-step before Step 6. `deferred_internal_id` / `deferred_deleted_count` view helpers bumped from private to `pub(super)` so the new `scroll` module can call them. `scroll_filtering_test.rs` integration test updated to call `filtered_read_by_id_stream` via `with_view`. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>