mirror of
https://gitee.com/milvus-io/milvus.git
synced 2025-12-07 09:38:39 +08:00
OSPP 2024 project: https://summer-ospp.ac.cn/org/prodetail/247410235?list=org&navpage=org Solutions: - parser (planparserv2) - add CallExpr in planparserv2/Plan.g4 - update parser_visitor and show_visitor - grpc protobuf - add CallExpr in plan.proto - execution (`core/src/exec`) - add `CallExpr` `ValueExpr` and `ColumnExpr` (both logical and physical) for function call and function parameters - function factory (`core/src/exec/expression/function`) - create a global hashmap when starting milvus (see server.go) - the global hashmap stores function signatures and their function pointers, the CallExpr in execution engine can get the function pointer by function signature. - custom functions - empty(string) - starts_with(string, string) - add cpp/go unittests and E2E tests closes: #36559 Signed-off-by: Yinzuo Jiang <jiangyinzuo@foxmail.com>
862 B
862 B
Visitor Pattern
Visitor Pattern is used in segcore for parse and execute Execution Plan.
- Inside
${internal/core}/src/query/PlanNode.h, contains physical plan for vector search:FloatVectorANNSFloatVector search execution nodeBinaryVectorANNSBinaryVector search execution node
${internal/core}/src/query/Expr.hcontains physical plan for scalar expression:TermExprsupport operation likecol in [1, 2, 3]RangeExprsupport constant compare with data column likea >= 51 < b < 2CompareExprsupport compare with different columns, likea < bLogicalBinaryExprsupport and/orLogicalUnaryExprsupport not
Currently, under ${internal/core/src/query} directory, there are the following visitors:
ExecPlanNodeVistorphysical plan executor only supports ANNS node for now