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

67 lines
1.5 KiB
C++

// Copyright (C) 2019-2020 Zilliz. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software distributed under the License
// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
// or implied. See the License for the specific language governing permissions and limitations under the License
#pragma once
#include <any>
#include <memory>
#include <optional>
#include <vector>
#include <string>
#include "common/QueryInfo.h"
namespace milvus::plan {
class PlanNode;
};
namespace milvus::query {
class PlanNodeVisitor;
struct PlanOptions {
bool expr_use_json_stats = true;
};
// Base of all Nodes
struct PlanNode {
public:
virtual ~PlanNode() = default;
virtual void
accept(PlanNodeVisitor&) = 0;
PlanOptions plan_options_;
};
using PlanNodePtr = std::unique_ptr<PlanNode>;
struct VectorPlanNode : PlanNode {
public:
void
accept(PlanNodeVisitor&) override;
SearchInfo search_info_;
std::string placeholder_tag_;
std::shared_ptr<milvus::plan::PlanNode> plannodes_;
};
struct RetrievePlanNode : PlanNode {
public:
void
accept(PlanNodeVisitor&) override;
std::shared_ptr<milvus::plan::PlanNode> plannodes_;
bool is_count_;
int64_t limit_;
};
} // namespace milvus::query