diff --git a/cmd/querynode/query_node.go b/cmd/querynode/query_node.go
index 271dc1c329945afc77bf6b05cb1bf76af19f2f94..4c7a529277b328dc66501137b0cb798b6e6e1ebf 100644
--- a/cmd/querynode/query_node.go
+++ b/cmd/querynode/query_node.go
@@ -10,16 +10,16 @@ import (
 
 	"go.uber.org/zap"
 
-	querynodeimp "github.com/zilliztech/milvus-distributed/internal/querynode"
+	"github.com/zilliztech/milvus-distributed/internal/querynode"
 )
 
 func main() {
 
-	querynodeimp.Init()
-	fmt.Println("QueryNodeID is", querynodeimp.Params.QueryNodeID)
+	querynode.Init()
+	fmt.Println("QueryNodeID is", querynode.Params.QueryNodeID)
 	// Creates server.
 	ctx, cancel := context.WithCancel(context.Background())
-	svr := querynodeimp.NewQueryNode(ctx, 0)
+	svr := querynode.NewQueryNode(ctx, 0)
 
 	sc := make(chan os.Signal, 1)
 	signal.Notify(sc,
diff --git a/cmd/singlenode/main.go b/cmd/singlenode/main.go
index e61e047a21515aa34e6c2912cd648e687b005ff3..c6504686ddea7f1b450a83080ad6fc99ac3f6b0f 100644
--- a/cmd/singlenode/main.go
+++ b/cmd/singlenode/main.go
@@ -17,7 +17,7 @@ import (
 	"github.com/zilliztech/milvus-distributed/internal/indexnode"
 	"github.com/zilliztech/milvus-distributed/internal/master"
 	"github.com/zilliztech/milvus-distributed/internal/proxynode"
-	querynodeimp "github.com/zilliztech/milvus-distributed/internal/querynode"
+	"github.com/zilliztech/milvus-distributed/internal/querynode"
 	"github.com/zilliztech/milvus-distributed/internal/writenode"
 )
 
@@ -101,11 +101,11 @@ func InitProxy(wg *sync.WaitGroup) {
 
 func InitQueryNode(wg *sync.WaitGroup) {
 	defer wg.Done()
-	querynodeimp.Init()
-	fmt.Println("QueryNodeID is", querynodeimp.Params.QueryNodeID)
+	querynode.Init()
+	fmt.Println("QueryNodeID is", querynode.Params.QueryNodeID)
 	// Creates server.
 	ctx, cancel := context.WithCancel(context.Background())
-	svr := querynodeimp.NewQueryNode(ctx, 0)
+	svr := querynode.NewQueryNode(ctx, 0)
 
 	sc := make(chan os.Signal, 1)
 	signal.Notify(sc,
diff --git a/internal/core/src/query/CMakeLists.txt b/internal/core/src/query/CMakeLists.txt
index d26b2a3a9d09c6fb5b9a04280a753761178d1ec9..06b15ababe86fa27d92adb7b4e85048d85bfde0e 100644
--- a/internal/core/src/query/CMakeLists.txt
+++ b/internal/core/src/query/CMakeLists.txt
@@ -1,4 +1,3 @@
-# TODO
 set(MILVUS_QUERY_SRCS
         deprecated/BinaryQuery.cpp
         generated/PlanNode.cpp
@@ -10,7 +9,7 @@ set(MILVUS_QUERY_SRCS
         visitors/VerifyPlanNodeVisitor.cpp
         visitors/VerifyExprVisitor.cpp
         Plan.cpp
-        Search.cpp
+        SearchOnGrowing.cpp
         SearchOnSealed.cpp
         SearchOnIndex.cpp
         SearchBruteForce.cpp
diff --git a/internal/core/src/query/Expr.h b/internal/core/src/query/Expr.h
index 255e31fcdd8455111ca3a6a443af7c1d9b3f9a3a..30816bfa8261ba985823187d1b30777cb7c32c6e 100644
--- a/internal/core/src/query/Expr.h
+++ b/internal/core/src/query/Expr.h
@@ -40,7 +40,6 @@ struct UnaryExpr : Expr {
     ExprPtr child_;
 };
 
-// TODO: not enabled in sprint 1
 struct BoolUnaryExpr : UnaryExpr {
     enum class OpType { LogicalNot };
     OpType op_type_;
@@ -50,7 +49,6 @@ struct BoolUnaryExpr : UnaryExpr {
     accept(ExprVisitor&) override;
 };
 
-// TODO: not enabled in sprint 1
 struct BoolBinaryExpr : BinaryExpr {
     // Note: bitA - bitB == bitA & ~bitB, alias to LogicalMinus
     enum class OpType { LogicalAnd, LogicalOr, LogicalXor, LogicalMinus };
diff --git a/internal/core/src/query/Plan.cpp b/internal/core/src/query/Plan.cpp
index 5dc83a4b3a6f33f2bb7597c9b4c576ff81424a59..8fc1cc804d1789c83e701d6ae4bc536b74319fbd 100644
--- a/internal/core/src/query/Plan.cpp
+++ b/internal/core/src/query/Plan.cpp
@@ -187,7 +187,6 @@ Parser::ParseTermNode(const Json& out_body) {
 std::unique_ptr<VectorPlanNode>
 Parser::ParseVecNode(const Json& out_body) {
     Assert(out_body.is_object());
-    // TODO add binary info
     Assert(out_body.size() == 1);
     auto iter = out_body.begin();
     auto field_name = FieldName(iter.key());
diff --git a/internal/core/src/query/Search.cpp b/internal/core/src/query/SearchOnGrowing.cpp
similarity index 81%
rename from internal/core/src/query/Search.cpp
rename to internal/core/src/query/SearchOnGrowing.cpp
index 3ba611637ba7b615289d420f3f5ec7947870f6d8..46aecb34315de8b19b61c2d5a245dc7ad26772c6 100644
--- a/internal/core/src/query/Search.cpp
+++ b/internal/core/src/query/SearchOnGrowing.cpp
@@ -9,7 +9,7 @@
 // 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
 
-#include "Search.h"
+#include "SearchOnGrowing.h"
 #include <knowhere/index/vector_index/adapter/VectorAdapter.h>
 #include <knowhere/index/vector_index/VecIndexFactory.h>
 #include "segcore/Reduce.h"
@@ -65,7 +65,6 @@ FloatSearch(const segcore::SegmentGrowingImpl& segment,
     auto topK = info.topK_;
     auto total_count = topK * num_queries;
     auto metric_type = GetMetricType(info.metric_type_);
-    // TODO: optimize
 
     // step 3: small indexing search
     // std::vector<int64_t> final_uids(total_count, -1);
@@ -77,10 +76,9 @@ FloatSearch(const segcore::SegmentGrowingImpl& segment,
     const auto& indexing_entry = indexing_record.get_vec_entry(vecfield_offset);
     auto search_conf = indexing_entry.get_search_conf(topK);
 
-    // TODO: use sub_qr
     for (int chunk_id = 0; chunk_id < max_indexed_id; ++chunk_id) {
         auto chunk_size = indexing_entry.get_chunk_size();
-        auto indexing = indexing_entry.get_vec_indexing(chunk_id);
+        auto indexing = indexing_entry.get_indexing(chunk_id);
 
         auto sub_view = BitsetSubView(bitset, chunk_id * chunk_size, chunk_size);
         auto sub_qr = SearchOnIndex(query_dataset, *indexing, search_conf, sub_view);
@@ -197,4 +195,38 @@ BinarySearch(const segcore::SegmentGrowingImpl& segment,
     return Status::OK();
 }
 
+// TODO: refactor and merge this into one
+template <typename VectorType>
+void
+SearchOnGrowing(const segcore::SegmentGrowingImpl& segment,
+                const query::QueryInfo& info,
+                const EmbeddedType<VectorType>* query_data,
+                int64_t num_queries,
+                Timestamp timestamp,
+                const faiss::BitsetView& bitset,
+                QueryResult& results) {
+    static_assert(IsVector<VectorType>);
+    if constexpr (std::is_same_v<VectorType, FloatVector>) {
+        FloatSearch(segment, info, query_data, num_queries, timestamp, bitset, results);
+    } else {
+        BinarySearch(segment, info, query_data, num_queries, timestamp, bitset, results);
+    }
+}
+template void
+SearchOnGrowing<FloatVector>(const segcore::SegmentGrowingImpl& segment,
+                             const query::QueryInfo& info,
+                             const EmbeddedType<FloatVector>* query_data,
+                             int64_t num_queries,
+                             Timestamp timestamp,
+                             const faiss::BitsetView& bitset,
+                             QueryResult& results);
+template void
+SearchOnGrowing<BinaryVector>(const segcore::SegmentGrowingImpl& segment,
+                              const query::QueryInfo& info,
+                              const EmbeddedType<BinaryVector>* query_data,
+                              int64_t num_queries,
+                              Timestamp timestamp,
+                              const faiss::BitsetView& bitset,
+                              QueryResult& results);
+
 }  // namespace milvus::query
diff --git a/internal/core/src/query/Search.h b/internal/core/src/query/SearchOnGrowing.h
similarity index 57%
rename from internal/core/src/query/Search.h
rename to internal/core/src/query/SearchOnGrowing.h
index 3aa8d1ec9b29fbabba97c064fbc5b06c757cdbb0..003bdcf35b60bc79eb9400a77d6cb0ba7814e6cb 100644
--- a/internal/core/src/query/Search.h
+++ b/internal/core/src/query/SearchOnGrowing.h
@@ -20,23 +20,13 @@ namespace milvus::query {
 using BitmapChunk = boost::dynamic_bitset<>;
 using BitmapSimple = std::deque<BitmapChunk>;
 
-// TODO: merge these two search into one
-// note: c++17 don't support optional ref
-Status
-FloatSearch(const segcore::SegmentGrowingImpl& segment,
-            const QueryInfo& info,
-            const float* query_data,
-            int64_t num_queries,
-            Timestamp timestamp,
-            const faiss::BitsetView& bitset,
-            QueryResult& results);
-
-Status
-BinarySearch(const segcore::SegmentGrowingImpl& segment,
-             const query::QueryInfo& info,
-             const uint8_t* query_data,
-             int64_t num_queries,
-             Timestamp timestamp,
-             const faiss::BitsetView& bitset,
-             QueryResult& results);
+template <typename VectorType>
+void
+SearchOnGrowing(const segcore::SegmentGrowingImpl& segment,
+                const query::QueryInfo& info,
+                const EmbeddedType<VectorType>* query_data,
+                int64_t num_queries,
+                Timestamp timestamp,
+                const faiss::BitsetView& bitset,
+                QueryResult& results);
 }  // namespace milvus::query
diff --git a/internal/core/src/query/SearchOnSealed.h b/internal/core/src/query/SearchOnSealed.h
index 01f3864e0dc9238d882eb2ac4577bd40ef2e68da..227f1a15ce497acff07cf30d9c24ae4932d27283 100644
--- a/internal/core/src/query/SearchOnSealed.h
+++ b/internal/core/src/query/SearchOnSealed.h
@@ -13,7 +13,7 @@
 
 #include "segcore/SealedIndexingRecord.h"
 #include "query/PlanNode.h"
-#include "query/Search.h"
+#include "query/SearchOnGrowing.h"
 
 namespace milvus::query {
 
diff --git a/internal/core/src/query/SubQueryResult.h b/internal/core/src/query/SubQueryResult.h
index 6cf7aace5850cff86633218997316d4563cd791c..7bb498039b5886d23e59d5cbc9f9dca283faf0e4 100644
--- a/internal/core/src/query/SubQueryResult.h
+++ b/internal/core/src/query/SubQueryResult.h
@@ -33,7 +33,7 @@ class SubQueryResult {
 
     static constexpr bool
     is_descending(MetricType metric_type) {
-        // TODO
+        // TODO(dog): more types
         if (metric_type == MetricType::METRIC_INNER_PRODUCT) {
             return true;
         } else {
diff --git a/internal/core/src/query/generated/ExecPlanNodeVisitor.h b/internal/core/src/query/generated/ExecPlanNodeVisitor.h
index 2cd629edf5127480e80958863f9aceef5beb776f..08ac2f694e9e46cd59f37d0909f173a56dce71b3 100644
--- a/internal/core/src/query/generated/ExecPlanNodeVisitor.h
+++ b/internal/core/src/query/generated/ExecPlanNodeVisitor.h
@@ -46,6 +46,11 @@ class ExecPlanNodeVisitor : public PlanNodeVisitor {
         return ret;
     }
 
+ private:
+    template <typename VectorType>
+    void
+    VectorVisitorImpl(VectorPlanNode& node);
+
  private:
     // std::optional<RetType> ret_;
     const segcore::SegmentGrowing& segment_;
diff --git a/internal/core/src/query/visitors/ExecPlanNodeVisitor.cpp b/internal/core/src/query/visitors/ExecPlanNodeVisitor.cpp
index fbe99079c4858092409bef07e7c35c0819b6f2a6..e43837a06043b3400e9dfa115d5be6d0a4666de6 100644
--- a/internal/core/src/query/visitors/ExecPlanNodeVisitor.cpp
+++ b/internal/core/src/query/visitors/ExecPlanNodeVisitor.cpp
@@ -16,7 +16,7 @@
 #include "query/generated/ExecPlanNodeVisitor.h"
 #include "segcore/SegmentGrowingImpl.h"
 #include "query/generated/ExecExprVisitor.h"
-#include "query/Search.h"
+#include "query/SearchOnGrowing.h"
 #include "query/SearchOnSealed.h"
 
 namespace milvus::query {
@@ -45,6 +45,11 @@ class ExecPlanNodeVisitor : PlanNodeVisitor {
         return ret;
     }
 
+ private:
+    template <typename VectorType>
+    void
+    VectorVisitorImpl(VectorPlanNode& node);
+
  private:
     // std::optional<RetType> ret_;
     const segcore::SegmentGrowing& segment_;
@@ -56,15 +61,16 @@ class ExecPlanNodeVisitor : PlanNodeVisitor {
 }  // namespace impl
 #endif
 
+template <typename VectorType>
 void
-ExecPlanNodeVisitor::visit(FloatVectorANNS& node) {
+ExecPlanNodeVisitor::VectorVisitorImpl(VectorPlanNode& node) {
     // TODO: optimize here, remove the dynamic cast
     assert(!ret_.has_value());
     auto segment = dynamic_cast<const segcore::SegmentGrowingImpl*>(&segment_);
     AssertInfo(segment, "support SegmentSmallIndex Only");
     RetType ret;
     auto& ph = placeholder_group_.at(0);
-    auto src_data = ph.get_blob<float>();
+    auto src_data = ph.get_blob<EmbeddedType<VectorType>>();
     auto num_queries = ph.num_of_queries_;
 
     aligned_vector<uint8_t> bitset_holder;
@@ -80,39 +86,20 @@ ExecPlanNodeVisitor::visit(FloatVectorANNS& node) {
         SearchOnSealed(segment->get_schema(), sealed_indexing, node.query_info_, src_data, num_queries, timestamp_,
                        view, ret);
     } else {
-        FloatSearch(*segment, node.query_info_, src_data, num_queries, timestamp_, view, ret);
+        SearchOnGrowing<VectorType>(*segment, node.query_info_, src_data, num_queries, timestamp_, view, ret);
     }
 
     ret_ = ret;
 }
 
 void
-ExecPlanNodeVisitor::visit(BinaryVectorANNS& node) {
-    // TODO: optimize here, remove the dynamic cast
-    assert(!ret_.has_value());
-    auto segment = dynamic_cast<const segcore::SegmentGrowingImpl*>(&segment_);
-    AssertInfo(segment, "support SegmentSmallIndex Only");
-    RetType ret;
-    auto& ph = placeholder_group_.at(0);
-    auto src_data = ph.get_blob<uint8_t>();
-    auto num_queries = ph.num_of_queries_;
-
-    aligned_vector<uint8_t> bitset_holder;
-    BitsetView view;
-    if (node.predicate_.has_value()) {
-        ExecExprVisitor::RetType expr_ret = ExecExprVisitor(*segment).call_child(*node.predicate_.value());
-        bitset_holder = AssembleNegBitmap(expr_ret);
-        view = BitsetView(bitset_holder.data(), bitset_holder.size() * 8);
-    }
+ExecPlanNodeVisitor::visit(FloatVectorANNS& node) {
+    VectorVisitorImpl<FloatVector>(node);
+}
 
-    auto& sealed_indexing = segment->get_sealed_indexing_record();
-    if (sealed_indexing.is_ready(node.query_info_.field_offset_)) {
-        SearchOnSealed(segment->get_schema(), sealed_indexing, node.query_info_, src_data, num_queries, timestamp_,
-                       view, ret);
-    } else {
-        BinarySearch(*segment, node.query_info_, src_data, num_queries, timestamp_, view, ret);
-    }
-    ret_ = ret;
+void
+ExecPlanNodeVisitor::visit(BinaryVectorANNS& node) {
+    VectorVisitorImpl<BinaryVector>(node);
 }
 
 }  // namespace milvus::query
diff --git a/internal/core/src/segcore/ConcurrentVector.h b/internal/core/src/segcore/ConcurrentVector.h
index f883d0bc3903df3727dd5a563d77e5dec2538be3..87cfd76ac8d903f19e2711ed08040d5a68bd4019 100644
--- a/internal/core/src/segcore/ConcurrentVector.h
+++ b/internal/core/src/segcore/ConcurrentVector.h
@@ -39,7 +39,6 @@ class ThreadSafeVector {
         if (size <= size_) {
             return;
         }
-        // TODO: use multithread to speedup
         std::lock_guard lck(mutex_);
         while (vec_.size() < size) {
             vec_.emplace_back(std::forward<Args...>(args...));
diff --git a/internal/core/src/segcore/IndexingEntry.cpp b/internal/core/src/segcore/IndexingEntry.cpp
index 16545544cda5daea010186dffbc08a6092959714..1cd64059552f1b7c0d2fc8a4f520500c311690fe 100644
--- a/internal/core/src/segcore/IndexingEntry.cpp
+++ b/internal/core/src/segcore/IndexingEntry.cpp
@@ -17,8 +17,6 @@
 namespace milvus::segcore {
 void
 VecIndexingEntry::BuildIndexRange(int64_t ack_beg, int64_t ack_end, const VectorBase* vec_base) {
-    // TODO
-
     assert(field_meta_.get_data_type() == DataType::VECTOR_FLOAT);
     auto dim = field_meta_.get_dim();
 
@@ -31,7 +29,6 @@ VecIndexingEntry::BuildIndexRange(int64_t ack_beg, int64_t ack_end, const Vector
     for (int chunk_id = ack_beg; chunk_id < ack_end; chunk_id++) {
         const auto& chunk = source->get_chunk(chunk_id);
         // build index for chunk
-        // TODO
         auto indexing = std::make_unique<knowhere::IVF>();
         auto dataset = knowhere::GenDataset(source->get_chunk_size(), dim, chunk.data());
         indexing->Train(dataset, conf);
diff --git a/internal/core/src/segcore/IndexingEntry.h b/internal/core/src/segcore/IndexingEntry.h
index a4cde732a55f4ab46c235abe5aa381f674d3bd27..f790f5e1a156d98c5822fb08697d13ab62c64f5f 100644
--- a/internal/core/src/segcore/IndexingEntry.h
+++ b/internal/core/src/segcore/IndexingEntry.h
@@ -47,6 +47,9 @@ class IndexingEntry {
         return chunk_size_;
     }
 
+    virtual knowhere::Index*
+    get_indexing(int64_t chunk_id) const = 0;
+
  protected:
     // additional info
     const FieldMeta& field_meta_;
@@ -62,7 +65,7 @@ class ScalarIndexingEntry : public IndexingEntry {
 
     // concurrent
     knowhere::scalar::StructuredIndex<T>*
-    get_indexing(int64_t chunk_id) const {
+    get_indexing(int64_t chunk_id) const override {
         Assert(!field_meta_.is_vector());
         return data_.at(chunk_id).get();
     }
@@ -80,7 +83,7 @@ class VecIndexingEntry : public IndexingEntry {
 
     // concurrent
     knowhere::VecIndex*
-    get_vec_indexing(int64_t chunk_id) const {
+    get_indexing(int64_t chunk_id) const override {
         Assert(field_meta_.is_vector());
         return data_.at(chunk_id).get();
     }
diff --git a/internal/core/src/segcore/SegmentGrowingImpl.h b/internal/core/src/segcore/SegmentGrowingImpl.h
index d3f05972bad85284dd6d98c5dcb0291ebba5b161..15d129c35595bde929f6448f1c0a4a0137959bee 100644
--- a/internal/core/src/segcore/SegmentGrowingImpl.h
+++ b/internal/core/src/segcore/SegmentGrowingImpl.h
@@ -39,8 +39,6 @@ class SegmentGrowingImpl : public SegmentGrowing {
     int64_t
     PreInsert(int64_t size) override;
 
-    // TODO: originally, id should be put into data_chunk
-    // TODO: Is it ok to put them the other side?
     Status
     Insert(int64_t reserved_offset,
            int64_t size,
@@ -95,6 +93,22 @@ class SegmentGrowingImpl : public SegmentGrowing {
         return *schema_;
     }
 
+    // return count of index that has index, i.e., [0, num_chunk_index) have built index
+    int64_t
+    num_chunk_index_safe(FieldOffset field_offset) const final {
+        return indexing_record_.get_finished_ack();
+    }
+
+    const knowhere::Index*
+    chunk_index_impl(FieldOffset field_offset, int64_t chunk_id) const final {
+        return indexing_record_.get_entry(field_offset).get_indexing(chunk_id);
+    }
+
+    int64_t
+    chunk_size() const final {
+        return chunk_size_;
+    }
+
  public:
     ssize_t
     get_row_count() const override {
diff --git a/internal/core/src/segcore/SegmentInterface.h b/internal/core/src/segcore/SegmentInterface.h
index 4ad2177e3483034198cdf8f897f1833b88e84311..34c18b53ee7bfc06cabce89b2cd3085f390485d9 100644
--- a/internal/core/src/segcore/SegmentInterface.h
+++ b/internal/core/src/segcore/SegmentInterface.h
@@ -14,6 +14,8 @@
 #include "common/Schema.h"
 #include "query/Plan.h"
 #include "common/Span.h"
+#include "IndexingEntry.h"
+#include <knowhere/index/vector_index/VecIndex.h>
 
 namespace milvus::segcore {
 
@@ -52,10 +54,30 @@ class SegmentInternalInterface : public SegmentInterface {
         return static_cast<Span<T>>(chunk_data_impl(field_offset, chunk_id));
     }
 
+    virtual int64_t
+    num_chunk_index_safe(FieldOffset field_offset) const = 0;
+
+    template <typename T>
+    const knowhere::scalar::StructuredIndex<T>&
+    chunk_scalar_index(FieldOffset field_offset, int64_t chunk_id) const {
+        static_assert(IsScalar<T>);
+        using IndexType = knowhere::scalar::StructuredIndex<T>;
+        auto base_ptr = chunk_index_impl(field_offset, chunk_id);
+        auto ptr = dynamic_cast<const IndexType*>(base_ptr);
+        AssertInfo(ptr, "entry mismatch");
+        return *ptr;
+    }
+
+    virtual int64_t
+    chunk_size() const = 0;
+
  protected:
     // blob and row_count
     virtual SpanBase
     chunk_data_impl(FieldOffset field_offset, int64_t chunk_id) const = 0;
+
+    virtual const knowhere::Index*
+    chunk_index_impl(FieldOffset field_offset, int64_t chunk_id) const = 0;
 };
 
 }  // namespace milvus::segcore
diff --git a/internal/core/src/segcore/collection_c.cpp b/internal/core/src/segcore/collection_c.cpp
index feb5fc7bf1dad829b1e61c07e88ef84e63c048c3..34476504cf3c873dc64707ed3cadb69869fcbc05 100644
--- a/internal/core/src/segcore/collection_c.cpp
+++ b/internal/core/src/segcore/collection_c.cpp
@@ -19,7 +19,6 @@ NewCollection(const char* schema_proto_blob) {
 
     auto collection = std::make_unique<milvus::segcore::Collection>(proto);
 
-    // TODO: delete print
     std::cout << "create collection " << collection->get_collection_name() << std::endl;
 
     return (void*)collection.release();
@@ -29,8 +28,8 @@ void
 DeleteCollection(CCollection collection) {
     auto col = (milvus::segcore::Collection*)collection;
 
-    // TODO: delete print
     std::cout << "delete collection " << col->get_collection_name() << std::endl;
+
     delete col;
 }
 
diff --git a/internal/core/src/segcore/segment_c.cpp b/internal/core/src/segcore/segment_c.cpp
index d7e6d366388891e954586ded851724ed9cd6b478..523af1842797851fcb7a141a7e7b8decb4f226cd 100644
--- a/internal/core/src/segcore/segment_c.cpp
+++ b/internal/core/src/segcore/segment_c.cpp
@@ -27,7 +27,6 @@ NewSegment(CCollection collection, uint64_t segment_id) {
 
     auto segment = milvus::segcore::CreateGrowingSegment(col->get_schema());
 
-    // TODO: delete print
     std::cout << "create segment " << segment_id << std::endl;
     return (void*)segment.release();
 }
@@ -36,7 +35,6 @@ void
 DeleteSegment(CSegmentBase segment) {
     auto s = (milvus::segcore::SegmentGrowing*)segment;
 
-    // TODO: delete print
     std::cout << "delete segment " << std::endl;
     delete s;
 }
@@ -78,17 +76,12 @@ Insert(CSegmentBase c_segment,
         status.error_msg = strdup(e.what());
         return status;
     }
-
-    // TODO: delete print
-    // std::cout << "do segment insert, sizeof_per_row = " << sizeof_per_row << std::endl;
 }
 
 int64_t
 PreInsert(CSegmentBase c_segment, int64_t size) {
     auto segment = (milvus::segcore::SegmentGrowing*)c_segment;
 
-    // TODO: delete print
-    // std::cout << "PreInsert segment " << std::endl;
     return segment->PreInsert(size);
 }
 
@@ -116,8 +109,6 @@ int64_t
 PreDelete(CSegmentBase c_segment, int64_t size) {
     auto segment = (milvus::segcore::SegmentGrowing*)c_segment;
 
-    // TODO: delete print
-    // std::cout << "PreDelete segment " << std::endl;
     return segment->PreDelete(size);
 }
 
diff --git a/internal/distributed/querynode/service.go b/internal/distributed/querynode/service.go
index 93026851c16e28b0644626abbdaf5ff217cfc2b9..f9966b97b6ef075e3cb724b178ee67386307accd 100644
--- a/internal/distributed/querynode/service.go
+++ b/internal/distributed/querynode/service.go
@@ -8,17 +8,17 @@ import (
 
 	"github.com/zilliztech/milvus-distributed/internal/proto/commonpb"
 	"github.com/zilliztech/milvus-distributed/internal/proto/querypb"
-	querynodeimp "github.com/zilliztech/milvus-distributed/internal/querynode"
+	"github.com/zilliztech/milvus-distributed/internal/querynode"
 )
 
 type Server struct {
 	grpcServer *grpc.Server
-	node       querynodeimp.Node
+	node       querynode.Node
 }
 
 func NewServer(ctx context.Context, queryNodeID uint64) *Server {
 	return &Server{
-		node: querynodeimp.NewQueryNode(ctx, queryNodeID),
+		node: querynode.NewQueryNode(ctx, queryNodeID),
 	}
 }
 
diff --git a/internal/querynode/api.go b/internal/querynode/api.go
index 905d3421c369d01cae66b501d44cb59d43fef867..6d5afb23292797d5310e5f00e40ce08666e92cb7 100644
--- a/internal/querynode/api.go
+++ b/internal/querynode/api.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 import (
 	"context"
@@ -20,6 +20,16 @@ func (node *QueryNode) AddQueryChannel(ctx context.Context, in *queryPb.AddQuery
 
 		return status, errors.New(errMsg)
 	default:
+		if node.searchService == nil || node.searchService.searchMsgStream == nil {
+			errMsg := "null search service or null search message stream"
+			status := &commonpb.Status{
+				ErrorCode: commonpb.ErrorCode_UNEXPECTED_ERROR,
+				Reason:    errMsg,
+			}
+
+			return status, errors.New(errMsg)
+		}
+
 		searchStream, ok := node.searchService.searchMsgStream.(*msgstream.PulsarMsgStream)
 		if !ok {
 			errMsg := "type assertion failed for search message stream"
@@ -71,6 +81,16 @@ func (node *QueryNode) RemoveQueryChannel(ctx context.Context, in *queryPb.Remov
 
 		return status, errors.New(errMsg)
 	default:
+		if node.searchService == nil || node.searchService.searchMsgStream == nil {
+			errMsg := "null search service or null search result message stream"
+			status := &commonpb.Status{
+				ErrorCode: commonpb.ErrorCode_UNEXPECTED_ERROR,
+				Reason:    errMsg,
+			}
+
+			return status, errors.New(errMsg)
+		}
+
 		searchStream, ok := node.searchService.searchMsgStream.(*msgstream.PulsarMsgStream)
 		if !ok {
 			errMsg := "type assertion failed for search message stream"
@@ -124,30 +144,38 @@ func (node *QueryNode) WatchDmChannels(ctx context.Context, in *queryPb.WatchDmC
 
 		return status, errors.New(errMsg)
 	default:
-		// TODO: add dmMsgStream reference to dataSyncService
-		//fgDMMsgStream, ok := node.dataSyncService.dmMsgStream.(*msgstream.PulsarMsgStream)
-		//if !ok {
-		//	errMsg := "type assertion failed for dm message stream"
-		//	status := &commonpb.Status{
-		//		ErrorCode: commonpb.ErrorCode_UNEXPECTED_ERROR,
-		//		Reason:    errMsg,
-		//	}
-		//
-		//	return status, errors.New(errMsg)
-		//}
-		//
-		//// add request channel
-		//pulsarBufSize := Params.SearchPulsarBufSize
-		//consumeChannels := in.ChannelIDs
-		//consumeSubName := Params.MsgChannelSubName
-		//unmarshalDispatcher := msgstream.NewUnmarshalDispatcher()
-		//fgDMMsgStream.CreatePulsarConsumers(consumeChannels, consumeSubName, unmarshalDispatcher, pulsarBufSize)
-		//
-		//status := &commonpb.Status{
-		//	ErrorCode: commonpb.ErrorCode_SUCCESS,
-		//}
-		//return status, nil
-		return nil, nil
+		if node.dataSyncService == nil || node.dataSyncService.dmStream == nil {
+			errMsg := "null data sync service or null data manipulation stream"
+			status := &commonpb.Status{
+				ErrorCode: commonpb.ErrorCode_UNEXPECTED_ERROR,
+				Reason:    errMsg,
+			}
+
+			return status, errors.New(errMsg)
+		}
+
+		fgDMMsgStream, ok := node.dataSyncService.dmStream.(*msgstream.PulsarMsgStream)
+		if !ok {
+			errMsg := "type assertion failed for dm message stream"
+			status := &commonpb.Status{
+				ErrorCode: commonpb.ErrorCode_UNEXPECTED_ERROR,
+				Reason:    errMsg,
+			}
+
+			return status, errors.New(errMsg)
+		}
+
+		// add request channel
+		pulsarBufSize := Params.SearchPulsarBufSize
+		consumeChannels := in.ChannelIDs
+		consumeSubName := Params.MsgChannelSubName
+		unmarshalDispatcher := msgstream.NewUnmarshalDispatcher()
+		fgDMMsgStream.CreatePulsarConsumers(consumeChannels, consumeSubName, unmarshalDispatcher, pulsarBufSize)
+
+		status := &commonpb.Status{
+			ErrorCode: commonpb.ErrorCode_SUCCESS,
+		}
+		return status, nil
 	}
 }
 
diff --git a/internal/querynode/collection.go b/internal/querynode/collection.go
index 646fe33926cdf947470cbdb62dc363b34c824b6e..638afffa4d1edddd978d5d91ee6c1ada24ae9359 100644
--- a/internal/querynode/collection.go
+++ b/internal/querynode/collection.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 /*
 
diff --git a/internal/querynode/collection_replica.go b/internal/querynode/collection_replica.go
index 115daf00ffa41b7d90683a8b455a78309d6bd77c..c035069146627edf0c4af0282eb5e6d8b68ad10d 100644
--- a/internal/querynode/collection_replica.go
+++ b/internal/querynode/collection_replica.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 /*
 
diff --git a/internal/querynode/collection_replica_test.go b/internal/querynode/collection_replica_test.go
index fe328fea5b64495b0ee50a0ddc3ffec3c6b44dbd..57af33969be058bb7e3b961e7758611f1f6b7e7d 100644
--- a/internal/querynode/collection_replica_test.go
+++ b/internal/querynode/collection_replica_test.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 import (
 	"testing"
diff --git a/internal/querynode/collection_test.go b/internal/querynode/collection_test.go
index 2c4c5e96012577847d67c52dd6ba71c36321627c..ac757da790971ecd0de07c18d21cc07913ea2cbd 100644
--- a/internal/querynode/collection_test.go
+++ b/internal/querynode/collection_test.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 import (
 	"testing"
diff --git a/internal/querynode/data_sync_service.go b/internal/querynode/data_sync_service.go
index 3cdf6fa562e6e3f721ee354690368181586c35ae..ebc4cb154199144362d01855f9be2d170d317e38 100644
--- a/internal/querynode/data_sync_service.go
+++ b/internal/querynode/data_sync_service.go
@@ -1,9 +1,10 @@
-package querynodeimp
+package querynode
 
 import (
 	"context"
 	"log"
 
+	"github.com/zilliztech/milvus-distributed/internal/msgstream"
 	"github.com/zilliztech/milvus-distributed/internal/util/flowgraph"
 )
 
@@ -11,6 +12,9 @@ type dataSyncService struct {
 	ctx context.Context
 	fg  *flowgraph.TimeTickedFlowGraph
 
+	dmStream msgstream.MsgStream
+	ddStream msgstream.MsgStream
+
 	replica collectionReplica
 }
 
@@ -40,8 +44,8 @@ func (dsService *dataSyncService) initNodes() {
 
 	dsService.fg = flowgraph.NewTimeTickedFlowGraph(dsService.ctx)
 
-	var dmStreamNode node = newDmInputNode(dsService.ctx)
-	var ddStreamNode node = newDDInputNode(dsService.ctx)
+	var dmStreamNode node = dsService.newDmInputNode(dsService.ctx)
+	var ddStreamNode node = dsService.newDDInputNode(dsService.ctx)
 
 	var filterDmNode node = newFilteredDmNode()
 	var ddNode node = newDDNode(dsService.replica)
diff --git a/internal/querynode/data_sync_service_test.go b/internal/querynode/data_sync_service_test.go
index c5f429abe32d9e7a3c9f77e073887dcd3073fdf6..79e3015b143bf3fff25cd24de8e2e6515d66770f 100644
--- a/internal/querynode/data_sync_service_test.go
+++ b/internal/querynode/data_sync_service_test.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 import (
 	"encoding/binary"
diff --git a/internal/querynode/flow_graph_dd_node.go b/internal/querynode/flow_graph_dd_node.go
index 880137dc6d487bdf7ff30e7f45751b31b131a00c..c264ac9828f7f92e3700e97fb1a883cf45fc9cb6 100644
--- a/internal/querynode/flow_graph_dd_node.go
+++ b/internal/querynode/flow_graph_dd_node.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 import (
 	"log"
diff --git a/internal/querynode/flow_graph_delete_node.go b/internal/querynode/flow_graph_delete_node.go
index d873c487fb9f517906b2d1625126e2cf65bd72f8..77b26d2f1457c7687caa6c7da2bda895c0f44930 100644
--- a/internal/querynode/flow_graph_delete_node.go
+++ b/internal/querynode/flow_graph_delete_node.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 type deleteNode struct {
 	baseNode
diff --git a/internal/querynode/flow_graph_filter_dm_node.go b/internal/querynode/flow_graph_filter_dm_node.go
index 26d4658e82c6c3c3d1e74f3d424d0eec2367b5c8..db9f60a62b82a115c0cb65924b668f066b5f4068 100644
--- a/internal/querynode/flow_graph_filter_dm_node.go
+++ b/internal/querynode/flow_graph_filter_dm_node.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 import (
 	"context"
diff --git a/internal/querynode/flow_graph_gc_node.go b/internal/querynode/flow_graph_gc_node.go
index aae7ddea9942ed49b9160cd70db44f1e7ba25b6f..076f44fcd93ef5f521e276db71caeac634077dcf 100644
--- a/internal/querynode/flow_graph_gc_node.go
+++ b/internal/querynode/flow_graph_gc_node.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 import (
 	"log"
diff --git a/internal/querynode/flow_graph_insert_node.go b/internal/querynode/flow_graph_insert_node.go
index 57f6500b1ce0f6d47f9d5fc358df0072d43476ef..2df6baa985eed523155c292fd0ffc705a13bf68d 100644
--- a/internal/querynode/flow_graph_insert_node.go
+++ b/internal/querynode/flow_graph_insert_node.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 import (
 	"context"
diff --git a/internal/querynode/flow_graph_key2seg_node.go b/internal/querynode/flow_graph_key2seg_node.go
index ff3b966a5bf7751f15a652bd6e95a2793a67e22d..c4f345a5ec8e42066ae8fe40a5da4fc4f80cab8d 100644
--- a/internal/querynode/flow_graph_key2seg_node.go
+++ b/internal/querynode/flow_graph_key2seg_node.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 type key2SegNode struct {
 	baseNode
diff --git a/internal/querynode/flow_graph_message.go b/internal/querynode/flow_graph_message.go
index 58d4eb5283a5bc2fa96ef89fc0282feca61d0d4e..451f9b6952ad003a3f687ee44550808cce6bc481 100644
--- a/internal/querynode/flow_graph_message.go
+++ b/internal/querynode/flow_graph_message.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 import (
 	"github.com/zilliztech/milvus-distributed/internal/msgstream"
diff --git a/internal/querynode/flow_graph_msg_stream_input_nodes.go b/internal/querynode/flow_graph_msg_stream_input_nodes.go
index d71902bd57915fce9b72b063b89bf38353ec26f2..59db032b994168cf7ff87d2ee547e97dd84b2df4 100644
--- a/internal/querynode/flow_graph_msg_stream_input_nodes.go
+++ b/internal/querynode/flow_graph_msg_stream_input_nodes.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 import (
 	"context"
@@ -7,7 +7,7 @@ import (
 	"github.com/zilliztech/milvus-distributed/internal/util/flowgraph"
 )
 
-func newDmInputNode(ctx context.Context) *flowgraph.InputNode {
+func (dsService *dataSyncService) newDmInputNode(ctx context.Context) *flowgraph.InputNode {
 	receiveBufSize := Params.InsertReceiveBufSize
 	pulsarBufSize := Params.InsertPulsarBufSize
 
@@ -22,6 +22,7 @@ func newDmInputNode(ctx context.Context) *flowgraph.InputNode {
 	insertStream.CreatePulsarConsumers(consumeChannels, consumeSubName, unmarshalDispatcher, pulsarBufSize)
 
 	var stream msgstream.MsgStream = insertStream
+	dsService.dmStream = stream
 
 	maxQueueLength := Params.FlowGraphMaxQueueLength
 	maxParallelism := Params.FlowGraphMaxParallelism
@@ -30,7 +31,7 @@ func newDmInputNode(ctx context.Context) *flowgraph.InputNode {
 	return node
 }
 
-func newDDInputNode(ctx context.Context) *flowgraph.InputNode {
+func (dsService *dataSyncService) newDDInputNode(ctx context.Context) *flowgraph.InputNode {
 	receiveBufSize := Params.DDReceiveBufSize
 	pulsarBufSize := Params.DDPulsarBufSize
 
@@ -45,6 +46,7 @@ func newDDInputNode(ctx context.Context) *flowgraph.InputNode {
 	ddStream.CreatePulsarConsumers(consumeChannels, consumeSubName, unmarshalDispatcher, pulsarBufSize)
 
 	var stream msgstream.MsgStream = ddStream
+	dsService.ddStream = stream
 
 	maxQueueLength := Params.FlowGraphMaxQueueLength
 	maxParallelism := Params.FlowGraphMaxParallelism
diff --git a/internal/querynode/flow_graph_node.go b/internal/querynode/flow_graph_node.go
index d6e9f8b0480b688e226e016ef026764b185a2cbb..e8a10b3cb7134405527f76189199b7b0a98c6057 100644
--- a/internal/querynode/flow_graph_node.go
+++ b/internal/querynode/flow_graph_node.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 import "github.com/zilliztech/milvus-distributed/internal/util/flowgraph"
 
diff --git a/internal/querynode/flow_graph_service_time_node.go b/internal/querynode/flow_graph_service_time_node.go
index 8262909d98f078c073da17143de6e4303c2f02f0..a7830c4680e22c4810b7b92bc4943fd1be345941 100644
--- a/internal/querynode/flow_graph_service_time_node.go
+++ b/internal/querynode/flow_graph_service_time_node.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 import (
 	"log"
diff --git a/internal/querynode/index.go b/internal/querynode/index.go
index fdea5e83669e8b1fcdb7905440bc22a935fd9305..8c8f84b17e6e7c59dc0dbe5e3c1a2179f3bfbfb3 100644
--- a/internal/querynode/index.go
+++ b/internal/querynode/index.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 /*
 
diff --git a/internal/querynode/load_index_info.go b/internal/querynode/load_index_info.go
index a654d9628c244cb5b12378440d6ccaa5104bdec6..d56cca4f21dbf1972c79ebe331b29ffacd4a33e9 100644
--- a/internal/querynode/load_index_info.go
+++ b/internal/querynode/load_index_info.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 /*
 #cgo CFLAGS: -I${SRCDIR}/../core/output/include
diff --git a/internal/querynode/load_index_info_test.go b/internal/querynode/load_index_info_test.go
index 64bf1966a5f9e2d48eb147427e734c58033a5c3d..95261c7002eb7c9012598afab0fe59d66d69840d 100644
--- a/internal/querynode/load_index_info_test.go
+++ b/internal/querynode/load_index_info_test.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 import (
 	"testing"
diff --git a/internal/querynode/load_index_service.go b/internal/querynode/load_index_service.go
index e6c44533173a63518107568cd259968839f3b4a5..10857b4f3a4d313c7073e4841c97750e50055cfb 100644
--- a/internal/querynode/load_index_service.go
+++ b/internal/querynode/load_index_service.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 import (
 	"context"
diff --git a/internal/querynode/load_index_service_test.go b/internal/querynode/load_index_service_test.go
index be6c6b0bbb970a4cd1d5b92cfb8afb95a7f752f0..2b0471dc00a64ff9cfe86772cd8d308f1bdd59b4 100644
--- a/internal/querynode/load_index_service_test.go
+++ b/internal/querynode/load_index_service_test.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 import (
 	"encoding/binary"
diff --git a/internal/querynode/meta_service.go b/internal/querynode/meta_service.go
index ea0880e48665b7a936e0a35236893c45d4339130..f24dc1433aa1cb8e517c19ad0ace93e86e2dbfd6 100644
--- a/internal/querynode/meta_service.go
+++ b/internal/querynode/meta_service.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 import (
 	"context"
diff --git a/internal/querynode/meta_service_test.go b/internal/querynode/meta_service_test.go
index 05aefca6b0c8a74ae71eb16c76d8f03d7620dd29..eebaf58636a0c4b5488bbdd8d6562032ba1e3c00 100644
--- a/internal/querynode/meta_service_test.go
+++ b/internal/querynode/meta_service_test.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 import (
 	"math"
diff --git a/internal/querynode/param_table.go b/internal/querynode/param_table.go
index 24caf25d1ecc37550b6764924b7f11f42f9fc78b..663134dc153eb1ec688e771cc1afdfac8dd38548 100644
--- a/internal/querynode/param_table.go
+++ b/internal/querynode/param_table.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 import (
 	"log"
diff --git a/internal/querynode/param_table_test.go b/internal/querynode/param_table_test.go
index bceb0ff7d74077b5b40e822d20eb4148c9f6741b..461073146f8597d88c29076365c7bbb8e45dd0a8 100644
--- a/internal/querynode/param_table_test.go
+++ b/internal/querynode/param_table_test.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 import (
 	"fmt"
diff --git a/internal/querynode/partition.go b/internal/querynode/partition.go
index 538e5732d810ce406e7fc123bde45fbc2c323704..e2dc4593d792425db5ba927b18497f4984ae2972 100644
--- a/internal/querynode/partition.go
+++ b/internal/querynode/partition.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 /*
 
diff --git a/internal/querynode/partition_test.go b/internal/querynode/partition_test.go
index aeccc6cccda7675e0ccf24b29d0532fbabf500d9..7f22d5148787b6f4ffc308db5e2aa2d1cb4f7293 100644
--- a/internal/querynode/partition_test.go
+++ b/internal/querynode/partition_test.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 import (
 	"testing"
diff --git a/internal/querynode/plan.go b/internal/querynode/plan.go
index b0d695576da8ceea1534445c4eabf1edf2fdf78e..0909406189a66b1ce2c74865bc2bbb25237f9463 100644
--- a/internal/querynode/plan.go
+++ b/internal/querynode/plan.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 /*
 #cgo CFLAGS: -I${SRCDIR}/../core/output/include
diff --git a/internal/querynode/plan_test.go b/internal/querynode/plan_test.go
index 88913550d3753e1b06cc3d2db7c9794014fc5c84..e707f404d183ed8825b8d0cfaa060129361a2f51 100644
--- a/internal/querynode/plan_test.go
+++ b/internal/querynode/plan_test.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 import (
 	"encoding/binary"
diff --git a/internal/querynode/query_node.go b/internal/querynode/query_node.go
index fa49db95979f1adee0618c5a52af6d4ebd16de00..f7d941097a124a48204a3a556a18fbc4f237e21f 100644
--- a/internal/querynode/query_node.go
+++ b/internal/querynode/query_node.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 /*
 
diff --git a/internal/querynode/query_node_test.go b/internal/querynode/query_node_test.go
index c7d57803f6d3048049784012f0bb7b03c8c6ca8f..f69cb6736087be9250266a91ad305f41eab9127b 100644
--- a/internal/querynode/query_node_test.go
+++ b/internal/querynode/query_node_test.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 import (
 	"context"
diff --git a/internal/querynode/reduce.go b/internal/querynode/reduce.go
index d6a9e858ea354834799871dbf49ab987581c3d24..8fa56bf7fbaf4dd2ade4cae0b966bee92f61b8fa 100644
--- a/internal/querynode/reduce.go
+++ b/internal/querynode/reduce.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 /*
 #cgo CFLAGS: -I${SRCDIR}/../core/output/include
diff --git a/internal/querynode/reduce_test.go b/internal/querynode/reduce_test.go
index 0dadbdc7025903781c00016350b913fabc659e78..8667c68f4a03a9176227d6ee9e148246a8cb7ebc 100644
--- a/internal/querynode/reduce_test.go
+++ b/internal/querynode/reduce_test.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 import (
 	"encoding/binary"
diff --git a/internal/querynode/search_service.go b/internal/querynode/search_service.go
index 689aa7135063e9dce53a39b96b2bd8f981063500..5a6ce44a55ba9d171912a0d13cd929039e97be87 100644
--- a/internal/querynode/search_service.go
+++ b/internal/querynode/search_service.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 import "C"
 import (
diff --git a/internal/querynode/search_service_test.go b/internal/querynode/search_service_test.go
index 789b9348388167f65465c240412395e42006fd7c..773898af9a4d44975a6edf3c578a8d0792823b80 100644
--- a/internal/querynode/search_service_test.go
+++ b/internal/querynode/search_service_test.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 import (
 	"context"
diff --git a/internal/querynode/segment.go b/internal/querynode/segment.go
index bd9380b0ad6cffaa68fd5e552f3465b910ecc5ba..2e00200a2fb6f5af96e5886ffb80cd8b531dd9bc 100644
--- a/internal/querynode/segment.go
+++ b/internal/querynode/segment.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 /*
 
diff --git a/internal/querynode/segment_test.go b/internal/querynode/segment_test.go
index 3de321fc771282374faf79ef5f70242543acee70..52689704b7219fdb333357bac364db06abd20be1 100644
--- a/internal/querynode/segment_test.go
+++ b/internal/querynode/segment_test.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 import (
 	"encoding/binary"
diff --git a/internal/querynode/stats_service.go b/internal/querynode/stats_service.go
index c5e27f9b88d3d738aefa9bed0692da460b12615c..17c8bd9473e927ddc6d2402e2dabbdebd86e4901 100644
--- a/internal/querynode/stats_service.go
+++ b/internal/querynode/stats_service.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 import (
 	"context"
diff --git a/internal/querynode/stats_service_test.go b/internal/querynode/stats_service_test.go
index 574d258bcca6a8feca559946654b2ca152e51860..648495b56f2742835e308397c4ef6bf98e7e487f 100644
--- a/internal/querynode/stats_service_test.go
+++ b/internal/querynode/stats_service_test.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 import (
 	"testing"
diff --git a/internal/querynode/tsafe.go b/internal/querynode/tsafe.go
index eab7dd19668ea9dc9ae3ddb60a78ba0bc37f00b9..60529a3c9868837c3e651dc057b8d407281edeb7 100644
--- a/internal/querynode/tsafe.go
+++ b/internal/querynode/tsafe.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 import (
 	"sync"
diff --git a/internal/querynode/tsafe_test.go b/internal/querynode/tsafe_test.go
index 88021d1036071046d32052069802cd55d6b5ed97..1ae166f7f7a19f1f72df35c3c9d3a6cae016d569 100644
--- a/internal/querynode/tsafe_test.go
+++ b/internal/querynode/tsafe_test.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 import (
 	"testing"
diff --git a/internal/querynode/type_def.go b/internal/querynode/type_def.go
index 7b6fb06efb28d2da31ff2e4139a1fbede475c99f..6cbd347791bb36cc3a76b997fde3ff562696a578 100644
--- a/internal/querynode/type_def.go
+++ b/internal/querynode/type_def.go
@@ -1,4 +1,4 @@
-package querynodeimp
+package querynode
 
 import "github.com/zilliztech/milvus-distributed/internal/util/typeutil"