xiangfu0 opened a new pull request, #19299:
URL: https://github.com/apache/pinot/pull/19299
Part 3/5 of the split of #19287 (Fix FULL-upsert vector candidate
generation).
## Summary
`FilterPlanNode` treated any non-leaf AND sibling as a metadata filter when
wiring
pre-filter bitmaps for filter-aware ANN. A nested subtree containing a
`VECTOR_SIMILARITY` predicate — e.g. `AND(vector, AND(vector2, metadata))` or
`AND(vector, NOT(vector2))` — was eagerly materialized into a bitmap,
executing top-K
candidate generation out of its boolean context and pushing its results into
the sibling
vector search as a pre-filter.
- Track retained child `FilterContext`s alongside their operators so
`wirePreFilterForVectorOperators` can pair them.
- Only treat subtrees with no vector predicate as metadata
(`containsVectorPredicate` / `hasSafeMetadataSibling`).
- Adaptive pre-filter selection for plain metadata siblings is unchanged.
## Validation
- `FilterPlanNodeTest`: 13 tests passed. The new
`testNestedVectorSimilaritySubtreeIsNeverMaterializedAsMetadata` fails all
3 boolean
shapes against master's planner and passes with this change.
> Stacked on #19298 — this PR shows the earlier stack commits until
predecessors merge; review only the last commit here.
--
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]