Buqian Zheng 846cf52a95
enhance: Remove unused vector plan node subclasses (#44453)
Remove redundant `VectorPlanNode` subclasses and simplify the visitor
pattern by consolidating to a single `VectorPlanNode`.

The previous design used distinct `VectorPlanNode` subclasses and a
templated `VectorVisitorImpl` for type-directed dispatch. However, the
template parameter was not functionally used to implement different
logic for each vector type, making the subclasses redundant for their
intended purpose.

This PR is created by Cursor Agent and manually moved from
https://github.com/zhengbuqian/milvus/pull/14.

Signed-off-by: zhengbuqian <zhengbuqian@gmail.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: buqian.zheng <buqian.zheng@zilliz.com>
2025-09-22 18:00:27 +08:00

795 B

Visitor Pattern

Visitor Pattern is used in segcore for parse and execute Execution Plan.

  1. Inside ${internal/core}/src/query/PlanNode.h, contains physical plan for vector search:
    1. VectorPlanNode vector search execution node
  2. ${internal/core}/src/query/Expr.h contains physical plan for scalar expression:
    1. TermExpr support operation like col in [1, 2, 3]
    2. RangeExpr support constant compare with data column like a >= 5 1 < b < 2
    3. CompareExpr support compare with different columns, like a < b
    4. LogicalBinaryExpr support and/or
    5. LogicalUnaryExpr support not

Currently, under ${internal/core/src/query} directory, there are the following visitors:

  1. ExecPlanNodeVistor physical plan executor only supports ANNS node for now