From 2241323ad190ea2dec35facfdd484365329b5a55 Mon Sep 17 00:00:00 2001
From: Navansh Goel <74401713+NavanshGoel@users.noreply.github.com>
Date: Thu, 14 Oct 2021 12:00:27 +0530
Subject: [PATCH 01/21] Converting for loops to list comprehensions (#746)

Signed-off-by: navansh <navansh.goel@gmail.com>
---
 pymilvus/client/abstract.py     | 11 +++--------
 pymilvus/client/grpc_handler.py |  5 +----
 2 files changed, 4 insertions(+), 12 deletions(-)

diff --git a/pymilvus/client/abstract.py b/pymilvus/client/abstract.py
index 0bf1c19c1..7b01a0111 100644
--- a/pymilvus/client/abstract.py
+++ b/pymilvus/client/abstract.py
@@ -25,9 +25,7 @@ def __getitem__(self, item):
             _end = min(item.stop, self.__len__()) if item.stop else self.__len__()
             _step = item.step or 1
 
-            elements = []
-            for i in range(_start, _end, _step):
-                elements.append(self.get__item(i))
+            elements = [self.get__item(i) for i in range(_start, _end, _step)]
             return elements
 
         if item >= self.__len__():
@@ -146,8 +144,7 @@ def __pack(self, raw):
         #     self.params.update(par)
         #     # self.params[kv.key] = kv.value
 
-        for f in raw.schema.fields:
-            self.fields.append(FieldSchema(f))
+        self.fields = [FieldSchema(f) for f in raw.schema.fields]
 
         # for s in raw.statistics:
         #     self.statistics[s.key] = s.value
@@ -190,9 +187,7 @@ def id(self):
 
     @property
     def fields(self):
-        fields = []
-        for k, v in self._row_data.items():
-            fields.append(k)
+        fields = [k for k, v in self._row_data.items()]
         return fields
 
     def get(self, field):
diff --git a/pymilvus/client/grpc_handler.py b/pymilvus/client/grpc_handler.py
index c739d4aa0..ed5ff1714 100644
--- a/pymilvus/client/grpc_handler.py
+++ b/pymilvus/client/grpc_handler.py
@@ -477,10 +477,7 @@ def _prepare_bulk_insert_request(self, collection_name, entities, partition_name
         collection_schema = self.describe_collection(collection_name, timeout=timeout, **kwargs)
 
         fields_name = list()
-        for i in range(len(entities)):
-            if "name" in entities[i]:
-                fields_name.append(entities[i]["name"])
-
+        fields_name = [entities[i]["name"] for i in range(len(entities)) if "name" in entities[i]]
         fields_info = collection_schema["fields"]
 
         request = insert_param if insert_param \

From 017641c9b493e0dba2dd66bd387b6d6ff399bb5e Mon Sep 17 00:00:00 2001
From: Sreyan Ghosh <60854658+sreyan-ghosh@users.noreply.github.com>
Date: Thu, 14 Oct 2021 12:12:26 +0530
Subject: [PATCH 02/21] Exposed guarantee_timestamp of search api (ref: #666)
 (#753)

Signed-off-by: GitHub <noreply@github.com>

added documentation for guarantee_timestamp (ref: #753)

Signed-off-by: GitHub <noreply@github.com>
---
 pymilvus/client/prepare.py | 3 +++
 pymilvus/client/stub.py    | 3 +++
 pymilvus/orm/collection.py | 3 +++
 pymilvus/orm/partition.py  | 3 +++
 4 files changed, 12 insertions(+)

diff --git a/pymilvus/client/prepare.py b/pymilvus/client/prepare.py
index 385e20d28..9bfa1bf00 100644
--- a/pymilvus/client/prepare.py
+++ b/pymilvus/client/prepare.py
@@ -500,6 +500,7 @@ def extract_vectors_param(param, placeholders, meta=None, names=None, round_deci
                     collection_name=collection_name,
                     partition_names=partition_names,
                     output_fields=fields,
+                    guarantee_timestamp=kwargs.get("guarantee_timestamp", 0),
                 )
                 request.dsl = ujson.dumps(duplicated_entities)
                 request.placeholder_group = plg_str
@@ -524,6 +525,7 @@ def search_request(cls, collection_name, query_entities, partition_names=None, f
             collection_name=collection_name,
             partition_names=partition_names,
             output_fields=fields,
+            guarantee_timestamp=kwargs.get("guarantee_timestamp", 0),
         )
 
         duplicated_entities = copy.deepcopy(query_entities)
@@ -646,6 +648,7 @@ def dump(v):
                 collection_name=collection_name,
                 partition_names=partition_names,
                 output_fields=output_fields,
+                guarantee_timestamp=kwargs.get("guarantee_timestamp", 0),
             )
             request.placeholder_group = plg_str
 
diff --git a/pymilvus/client/stub.py b/pymilvus/client/stub.py
index ebcc7fe91..34f52d02e 100644
--- a/pymilvus/client/stub.py
+++ b/pymilvus/client/stub.py
@@ -1044,6 +1044,9 @@ def search(self, collection_name, data, anns_field, param, limit, expression=Non
             * *_callback* (``function``) --
               The callback function which is invoked after server response successfully. It only take
               effect when _async is set to True.
+            * *guarantee_timestamp* (``function``) --
+              This function instructs Milvus to see all operations performed before a provided timestamp. If no
+              such timestamp is provided, then Milvus will search all operations performed to date.
 
         :return: Query result. QueryResult is iterable and is a 2d-array-like class, the first dimension is
                  the number of vectors to query (nq), the second dimension is the number of limit(topk).
diff --git a/pymilvus/orm/collection.py b/pymilvus/orm/collection.py
index 7cffc908c..ef93c0100 100644
--- a/pymilvus/orm/collection.py
+++ b/pymilvus/orm/collection.py
@@ -616,6 +616,9 @@ def search(self, data, anns_field, param, limit, expr=None, partition_names=None
             * *_callback* (``function``) --
               The callback function which is invoked after server response successfully.
               It functions only if _async is set to True.
+            * *guarantee_timestamp* (``function``) --
+              This function instructs Milvus to see all operations performed before a provided timestamp. If no
+              such timestamp is provided, then Milvus will search all operations performed to date.
 
         :return: SearchResult:
             SearchResult is iterable and is a 2d-array-like class, the first dimension is
diff --git a/pymilvus/orm/partition.py b/pymilvus/orm/partition.py
index 7ec3f20d9..44a4d59a9 100644
--- a/pymilvus/orm/partition.py
+++ b/pymilvus/orm/partition.py
@@ -354,6 +354,9 @@ def search(self, data, anns_field, param, limit, expr=None, output_fields=None,
             * *_callback* (``function``) --
               The callback function which is invoked after server response successfully. It only
               takes effect when _async is set to True.
+            * *guarantee_timestamp* (``function``) --
+              This function instructs Milvus to see all operations performed before a provided timestamp. If no
+              such timestamp is provided, then Milvus will search all operations performed to date.
 
         :return: SearchResult:
             SearchResult is iterable and is a 2d-array-like class, the first dimension is

From dd913e65324191e03f8e728bc3de2036eb3eece4 Mon Sep 17 00:00:00 2001
From: Siddharth Mishra <smishra1605@gmail.com>
Date: Fri, 15 Oct 2021 08:14:27 +0530
Subject: [PATCH 03/21] feat: Added github issue forms (#742)

closes #590 #741

Signed-off-by: Siddharth <smishra1605@gmail.com>
---
 .github/ISSUE_TEMPLATE/bug_report.md         | 30 ----------
 .github/ISSUE_TEMPLATE/bug_report.yaml       | 61 ++++++++++++++++++++
 .github/ISSUE_TEMPLATE/config.yml            |  1 +
 .github/ISSUE_TEMPLATE/feature_request.md    | 20 -------
 .github/ISSUE_TEMPLATE/feature_request.yaml  | 40 +++++++++++++
 .github/ISSUE_TEMPLATE/general-question.md   | 10 ----
 .github/ISSUE_TEMPLATE/general-question.yaml | 22 +++++++
 7 files changed, 124 insertions(+), 60 deletions(-)
 delete mode 100644 .github/ISSUE_TEMPLATE/bug_report.md
 create mode 100644 .github/ISSUE_TEMPLATE/bug_report.yaml
 create mode 100644 .github/ISSUE_TEMPLATE/config.yml
 delete mode 100644 .github/ISSUE_TEMPLATE/feature_request.md
 create mode 100644 .github/ISSUE_TEMPLATE/feature_request.yaml
 delete mode 100644 .github/ISSUE_TEMPLATE/general-question.md
 create mode 100644 .github/ISSUE_TEMPLATE/general-question.yaml

diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
deleted file mode 100644
index 7c2666657..000000000
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-name: "\U0001F41B Bug report"
-about: Create a report to help us improve pymilvus
-title: '[BUG]'
-labels: ''
-assignees: ''
-
----
-
-**Describe the bug**
-A clear and concise description of what the bug is.
-
-**Steps/Code to reproduce behavior**
-Follow this [guide](http://matthewrocklin.com/blog/work/2018/02/28/minimal-bug-reports) to craft a minimal bug report. This helps us reproduce the issue you're having and resolve the issue more quickly.
-
-**Expected behavior**
-A clear and concise description of what you expected to happen.
-
-**Environment details**
-
-- Hardware/Softward conditions (OS, CPU, GPU, Memory)
-- Method of installation (Docker, or from source)
-- Milvus version (v0.3.1, or v0.4.0)
-- Milvus configuration (Settings you made in `server_config.yaml`)
-
-**Screenshots**
-If applicable, add screenshots to help explain your problem.
-
-**Additional context**
-Add any other context about the problem here.
diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml
new file mode 100644
index 000000000..20a492b28
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.yaml
@@ -0,0 +1,61 @@
+name: 🐞 Bug report
+description: Create a report to help us improve pymilvus
+title: "[Bug]: "
+body:
+- type: markdown
+  attributes:
+    value: |
+      Thanks for taking the time to fill out this bug report!
+- type: checkboxes
+  attributes:
+    label: Is there an existing issue for this?
+    description: Please search to see if an issue already exists for the bug you encountered.
+    options:
+    - label: I have searched the existing issues
+      required: true
+- type: textarea
+  attributes:
+    label: Describe the bug
+    description: A clear and concise description of what the bug is.
+    placeholder: |
+      When I do <X>, <Y> happens and I see the error message attached below:
+      ```...```
+  validations:
+    required: false
+- type: textarea
+  attributes:
+    label: Expected Behavior
+    description: A clear and concise description of what you expected to happen.
+    placeholder: When I do <X>, <Z> should happen instead.
+  validations:
+    required: false
+- type: textarea
+  attributes:
+    label: Steps/Code To Reproduce behavior
+    description: |
+      Follow this [guide](http://matthewrocklin.com/blog/work/2018/02/28/minimal-bug-reports) to craft a minimal bug report. 
+      This helps us reproduce the issue you're having and resolve the issue more quickly.
+    render: markdown
+  validations:
+    required: false
+- type: textarea
+  attributes:
+    label: Environment details
+    description: |
+      Enter the Environment Details:
+    value: |
+      - Hardware/Softward conditions (OS, CPU, GPU, Memory):
+      - Method of installation (Docker, or from source):
+      - Milvus version (v0.3.1, or v0.4.0):
+      - Milvus configuration (Settings you made in `server_config.yaml`):
+    render: markdown
+  validations:
+    required: false
+- type: textarea
+  attributes:
+    label: Anything else?
+    description: |
+      If applicable, add screenshots to help explain your problem.
+      Links? References? Anything that will give us more context about the issue you are encountering!
+  validations:
+    required: false
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 000000000..ec4bb386b
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1 @@
+blank_issues_enabled: false
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
deleted file mode 100644
index 743048076..000000000
--- a/.github/ISSUE_TEMPLATE/feature_request.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-name: "\U0001F680 Feature request"
-about: Suggest an idea for pymilvus
-title: '[FEATURE]'
-labels: ''
-assignees: ''
-
----
-
-**Is your feature request related to a problem? Please describe.**
-A clear and concise description of what the problem is. E.g. I wish I could use Milvus to do [...]
-
-**Describe the solution you'd like**
-A clear and concise description of what you want to happen.
-
-**Describe alternatives you've considered**
-A clear and concise description of any alternative solutions or features you've considered.
-
-**Additional context**
-Add any other context, code examples, or references to existing implementations about the feature request here.
diff --git a/.github/ISSUE_TEMPLATE/feature_request.yaml b/.github/ISSUE_TEMPLATE/feature_request.yaml
new file mode 100644
index 000000000..0893549d4
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.yaml
@@ -0,0 +1,40 @@
+name: 🚀 Feature request
+description: Suggest an idea for pymilvus
+title: "[FEATURE]: "
+body:
+- type: markdown
+  attributes:
+    value: |
+      Thanks for taking the time to request a feature for pymilvus!
+- type: checkboxes
+  attributes:
+    label: Is there an existing issue for this?
+    description: Please search to see if an issue related to this feature request already exists.
+    options:
+    - label: I have searched the existing issues
+      required: true
+- type: textarea
+  attributes:
+    label: Is your feature request related to a problem? Please describe.
+    description: A clear and concise description of what the problem is.
+    placeholder: I wish I could use Milvus to do [...]
+  validations:
+    required: false
+- type: textarea
+  attributes:
+    label: Describe the solution you'd like
+    description: A clear and concise description of what you want to happen.
+  validations:
+    required: false
+- type: textarea
+  attributes:
+    label: Describe alternatives you've considered
+    description: A clear and concise description of any alternative solutions or features you've considered.
+  validations:
+    required: false
+- type: textarea
+  attributes:
+    label: Anything else?
+    description: Add any other context, code examples, or references to existing implementations about the feature request here.
+  validations:
+    required: false
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/general-question.md b/.github/ISSUE_TEMPLATE/general-question.md
deleted file mode 100644
index ad68ee225..000000000
--- a/.github/ISSUE_TEMPLATE/general-question.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-name: "\U0001F914 General question"
-about: Ask a general question about pymilvus
-title: '[QUESTION]'
-labels: ''
-assignees: ''
-
----
-
-**What is your question?**
diff --git a/.github/ISSUE_TEMPLATE/general-question.yaml b/.github/ISSUE_TEMPLATE/general-question.yaml
new file mode 100644
index 000000000..82989736e
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/general-question.yaml
@@ -0,0 +1,22 @@
+name: 🤔 General question
+description: Ask a general question about pymilvus
+title: "[QUESTION]: "
+body:
+- type: checkboxes
+  attributes:
+    label: Is there an existing issue for this?
+    description: Please search to see if an issue related to this already exists.
+    options:
+    - label: I have searched the existing issues
+      required: true
+- type: textarea
+  attributes:
+    label: What is your question?
+  validations:
+    required: false
+- type: textarea
+  attributes:
+    label: Anything else?
+    description: Add any other context, code examples, or references about the question?
+  validations:
+    required: false
\ No newline at end of file

From 12d51177100f1dc04b053a0c93d45557db62ebb6 Mon Sep 17 00:00:00 2001
From: XuanYang-cn <xuan.yang@zilliz.com>
Date: Fri, 15 Oct 2021 15:24:37 +0800
Subject: [PATCH 04/21] Fix check_pass_param check for ndarray (#756)

Resolves: #755

Signed-off-by: XuanYang-cn <xuan.yang@zilliz.com>
---
 pymilvus/client/check.py |  7 ++++---
 tests/test_check.py      | 21 +++++++++++++++++++++
 2 files changed, 25 insertions(+), 3 deletions(-)
 create mode 100644 tests/test_check.py

diff --git a/pymilvus/client/check.py b/pymilvus/client/check.py
index 576c34d14..b0b025167 100644
--- a/pymilvus/client/check.py
+++ b/pymilvus/client/check.py
@@ -144,7 +144,7 @@ def is_legal_ids(ids):
             i_ = int(i)
             if i_ < 0 or i_ > sys.maxsize:
                 return False
-        except:
+        except Exception:
             return False
 
     return True
@@ -195,13 +195,14 @@ def is_legal_anns_field(field):
 
 
 def is_legal_search_data(data):
-    if not isinstance(data, list):
+    import numpy as np
+    if not isinstance(data, (list, np.ndarray)):
         return False
 
     for vector in data:
         # list -> float vector
         # bytes -> byte vector
-        if not isinstance(vector, (list, bytes)):
+        if not isinstance(vector, (list, bytes, np.ndarray)):
             return False
 
     return True
diff --git a/tests/test_check.py b/tests/test_check.py
new file mode 100644
index 000000000..61ce4121d
--- /dev/null
+++ b/tests/test_check.py
@@ -0,0 +1,21 @@
+import pytest
+from pymilvus.client.check import check_pass_param
+
+
+class TestCheckPassParam:
+    def test_check_pass_param_valid(self):
+        a = [[i * j for i in range(20)] for j in range(20)]
+        check_pass_param(search_data=a)
+
+        import numpy as np
+        a = np.float32([[1, 2, 3, 4], [1, 2, 3, 4]])
+        check_pass_param(search_data=a)
+
+    def test_check_param_invalid(self):
+        with pytest.raises(Exception):
+            a = {[i * j for i in range(20) for j in range(20)]}
+            check_pass_param(search_data=a)
+
+        with pytest.raises(Exception):
+            a = [{i * j for i in range(40)} for j in range(40)]
+            check_pass_param(search_data=a)

From 803e0bf014b62128baff61c15984433d81362aad Mon Sep 17 00:00:00 2001
From: XuanYang-cn <xuan.yang@zilliz.com>
Date: Mon, 18 Oct 2021 10:46:28 +0800
Subject: [PATCH 05/21] Add util to calculate timestamp (#759)

Resolves: milvus-io/milvus#9956

Signed-off-by: XuanYang-cn <xuan.yang@zilliz.com>
---
 pymilvus/client/prepare.py | 43 +++++++++++++++++---------------------
 pymilvus/client/stub.py    |  2 +-
 pymilvus/client/utils.py   | 19 +++++++++++++----
 pymilvus/orm/collection.py |  4 ++--
 tests/test_check.py        |  8 +++++++
 5 files changed, 45 insertions(+), 31 deletions(-)

diff --git a/pymilvus/client/prepare.py b/pymilvus/client/prepare.py
index 9bfa1bf00..c5e72c562 100644
--- a/pymilvus/client/prepare.py
+++ b/pymilvus/client/prepare.py
@@ -1,24 +1,17 @@
-import abc
 import copy
-import struct
 import ujson
 import mmh3
 
+from . import blob
+from .configs import DefaultConfigs
 from .exceptions import ParamError
 from .check import check_pass_param
+from .types import DataType, PlaceholderType, DeployMode
 
-from ..grpc_gen import milvus_pb2 as grpc_types
-
-# for milvus-distributed
 from ..grpc_gen import common_pb2 as common_types
 from ..grpc_gen import schema_pb2 as schema_types
 from ..grpc_gen import milvus_pb2 as milvus_types
 
-from . import blob
-from .configs import DefaultConfigs
-
-from .types import RangeType, DataType, MetricType, IndexType, PlaceholderType, DeployMode
-
 
 class Prepare:
 
@@ -46,7 +39,6 @@ def create_collection_request(cls, collection_name, fields, shards_num=2, **kwar
         if "fields" not in fields:
             raise ParamError("Param fields must contains key 'fields'")
 
-
         schema = schema_types.CollectionSchema(name=collection_name)
 
         # auto_id = fields.get('auto_id', True)
@@ -126,7 +118,7 @@ def create_collection_request(cls, collection_name, fields, shards_num=2, **kwar
                 schema.fields.append(field_schema)
 
         return milvus_types.CreateCollectionRequest(collection_name=collection_name,
-                                                    schema=bytes(schema.SerializeToString()), shards_num = shards_num)
+                                                    schema=bytes(schema.SerializeToString()), shards_num=shards_num)
 
     @classmethod
     def drop_collection_request(cls, collection_name):
@@ -367,13 +359,13 @@ def bulk_insert_param(cls, collection_name, entities, partition_name, fields_inf
 
     @classmethod
     def delete_request(cls, collection_name, partition_name, expr):
-        def check_str(input, prefix):
-            if (input == None):
+        def check_str(instr, prefix):
+            if instr is None:
                 raise ParamError(prefix + " cannot be None")
-            if not isinstance(input, str):
+            if not isinstance(instr, str):
                 msg = prefix + " value {} is illegal"
-                raise ParamError(msg.format(input))
-            if input == "":
+                raise ParamError(msg.format(instr))
+            if instr == "":
                 raise ParamError(prefix + " cannot be empty")
 
         check_str(collection_name, "collection_name")
@@ -381,7 +373,7 @@ def check_str(input, prefix):
 
         # if partition_name is null or empty, delete action will apply to whole collection
         partition_name = partition_name or ""
-        request = milvus_types.DeleteRequest(collection_name=collection_name, expr = expr, partition_name=partition_name)
+        request = milvus_types.DeleteRequest(collection_name=collection_name, expr=expr, partition_name=partition_name)
         return request
 
     @classmethod
@@ -419,6 +411,7 @@ def divide_search_request(cls, collection_name, query_entities, partition_names=
         vector_names = dict()
 
         meta = {}   # TODO: ugly here, find a better method
+
         def extract_vectors_param(param, placeholders, meta=None, names=None, round_decimal=-1):
             if not isinstance(param, (dict, list)):
                 return
@@ -635,6 +628,7 @@ def search_requests_with_expr(cls, collection_name, data, anns_field, param, lim
         if not isinstance(params, dict):
             raise ParamError("Search params must be a dict")
         search_params = {"anns_field": anns_field, "topk": limit, "metric_type": metric_type, "params": params, "round_decimal": round_decimal}
+
         def dump(v):
             if isinstance(v, dict):
                 return ujson.dumps(v)
@@ -729,7 +723,7 @@ def load_partitions(cls, db_name, collection_name, partition_names):
     @classmethod
     def release_partitions(cls, db_name, collection_name, partition_names):
         return milvus_types.ReleasePartitionsRequest(db_name=db_name, collection_name=collection_name,
-                                                    partition_names=partition_names)
+                                                     partition_names=partition_names)
 
     @classmethod
     def get_collection_stats_request(cls, collection_name):
@@ -780,11 +774,11 @@ def query_request(cls, collection_name, expr, output_fields, partition_names):
                                          )
 
     @classmethod
-    def calc_distance_request(cls,  vectors_left, vectors_right, params):
-        if vectors_left == None or not isinstance(vectors_left, dict):
+    def calc_distance_request(cls, vectors_left, vectors_right, params):
+        if vectors_left is None or not isinstance(vectors_left, dict):
             raise ParamError("vectors_left value {} is illegal".format(vectors_left))
 
-        if vectors_right == None or not isinstance(vectors_right, dict):
+        if vectors_right is None or not isinstance(vectors_right, dict):
             raise ParamError("vectors_right value {} is illegal".format(vectors_right))
 
         def precheck_params(p):
@@ -800,11 +794,12 @@ def precheck_params(p):
 
         request = milvus_types.CalcDistanceRequest()
         request.params.extend([common_types.KeyValuePair(key=str(key), value=str(value))
-                                      for key, value in params.items()])
+                               for key, value in params.items()])
 
         _TYPE_IDS = "ids"
         _TYPE_FLOAT = "float_vectors"
         _TYPE_BIN = "bin_vectors"
+
         def extract_vectors(vectors, request_op, is_left):
             prefix = "vectors_right"
             if is_left:
@@ -819,7 +814,7 @@ def extract_vectors(vectors, request_op, is_left):
                 if (not isinstance(ids, list)) or len(ids) == 0:
                     raise ParamError("Vector id array is empty or not a list")
 
-                calc_type  = _TYPE_IDS
+                calc_type = _TYPE_IDS
                 if isinstance(ids[0], str):
                     request_op.id_array.id_array.str_id.data.extend(ids)
                 else:
diff --git a/pymilvus/client/stub.py b/pymilvus/client/stub.py
index 34f52d02e..fd9ee6080 100644
--- a/pymilvus/client/stub.py
+++ b/pymilvus/client/stub.py
@@ -1044,7 +1044,7 @@ def search(self, collection_name, data, anns_field, param, limit, expression=Non
             * *_callback* (``function``) --
               The callback function which is invoked after server response successfully. It only take
               effect when _async is set to True.
-            * *guarantee_timestamp* (``function``) --
+            * *guarantee_timestamp* (``int``) --
               This function instructs Milvus to see all operations performed before a provided timestamp. If no
               such timestamp is provided, then Milvus will search all operations performed to date.
 
diff --git a/pymilvus/client/utils.py b/pymilvus/client/utils.py
index 05952d648..d014e8b03 100644
--- a/pymilvus/client/utils.py
+++ b/pymilvus/client/utils.py
@@ -1,7 +1,3 @@
-from ..grpc_gen import common_pb2
-from ..grpc_gen.milvus_pb2 import SearchResults as Grpc_Result
-from ..client.abstract import QueryResult
-from ..client.exceptions import ParamError
 from .types import DataType
 
 valid_index_types = [
@@ -43,6 +39,21 @@
     "SUPERSTRUCTURE"
 ]
 
+LOGICAL_BITS = 18
+LOGICAL_BITS_MASK = (1 << LOGICAL_BITS) - 1
+
+
+def generate_timestamp(timestamp: int, ms: int) -> int:
+    """
+    generate_timestamp adds the real time to an existing timestamp, and returns back the new timestamp
+    """
+
+    logical = timestamp & LOGICAL_BITS_MASK
+    physical = timestamp >> LOGICAL_BITS
+
+    new_timestamp = int(((physical + ms) << LOGICAL_BITS) + logical)
+    return new_timestamp
+
 
 def check_invalid_binary_vector(entities):
     for entity in entities:
diff --git a/pymilvus/orm/collection.py b/pymilvus/orm/collection.py
index ef93c0100..f71fafdcd 100644
--- a/pymilvus/orm/collection.py
+++ b/pymilvus/orm/collection.py
@@ -616,7 +616,7 @@ def search(self, data, anns_field, param, limit, expr=None, partition_names=None
             * *_callback* (``function``) --
               The callback function which is invoked after server response successfully.
               It functions only if _async is set to True.
-            * *guarantee_timestamp* (``function``) --
+            * *guarantee_timestamp* (``int``) --
               This function instructs Milvus to see all operations performed before a provided timestamp. If no
               such timestamp is provided, then Milvus will search all operations performed to date.
 
@@ -1203,4 +1203,4 @@ def alter_alias(self, alias, timeout=None, **kwargs):
             otherwise return Status(code=1, message='alias does not exist')
         """
         conn = self._get_connection()
-        conn.alter_alias(self._name, alias, timeout=timeout, **kwargs)
\ No newline at end of file
+        conn.alter_alias(self._name, alias, timeout=timeout, **kwargs)
diff --git a/tests/test_check.py b/tests/test_check.py
index 61ce4121d..b985aa4f8 100644
--- a/tests/test_check.py
+++ b/tests/test_check.py
@@ -1,5 +1,6 @@
 import pytest
 from pymilvus.client.check import check_pass_param
+from pymilvus.client.utils import generate_timestamp
 
 
 class TestCheckPassParam:
@@ -19,3 +20,10 @@ def test_check_param_invalid(self):
         with pytest.raises(Exception):
             a = [{i * j for i in range(40)} for j in range(40)]
             check_pass_param(search_data=a)
+
+
+class TestGenTS:
+    def test_gen_timestamp(self):
+        t = generate_timestamp(426152581543231492, 1000)
+
+        print(f"Generated ts: {t}")

From 74ca9e89dbbd5f05caf737ab41e0d77e45ffb3b2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Anton=20Gr=C3=BCbel?= <anton.gruebel@gmail.com>
Date: Mon, 18 Oct 2021 04:50:30 +0200
Subject: [PATCH 06/21] improve client.check (#743)

Signed-off-by: gruebel <anton.gruebel@gmail.com>
---
 pymilvus/client/check.py | 101 ++++++++++++++++++++-------------------
 1 file changed, 51 insertions(+), 50 deletions(-)

diff --git a/pymilvus/client/check.py b/pymilvus/client/check.py
index b0b025167..80d9db9cc 100644
--- a/pymilvus/client/check.py
+++ b/pymilvus/client/check.py
@@ -1,17 +1,15 @@
 import sys
 import datetime
+from typing import Any, Union
 from urllib.parse import urlparse
 from .exceptions import ParamError
 
 
-def is_legal_host(host):
-    if not isinstance(host, str):
-        return False
-
-    return True
+def is_legal_host(host: Any) -> bool:
+    return isinstance(host, str)
 
 
-def is_legal_port(port):
+def is_legal_port(port: Any) -> bool:
     if isinstance(port, (str, int)):
         try:
             _port = int(port)
@@ -24,7 +22,7 @@ def is_legal_port(port):
     return True
 
 
-def is_legal_uri(uri):
+def is_legal_uri(uri: Any) -> bool:
     if uri is None:
         return True
 
@@ -35,7 +33,7 @@ def is_legal_uri(uri):
         return False
 
 
-def is_legal_vector(array):
+def is_legal_vector(array: Any) -> bool:
     if not array or \
             not isinstance(array, list) or \
             len(array) == 0:
@@ -48,7 +46,7 @@ def is_legal_vector(array):
     return True
 
 
-def is_legal_bin_vector(array):
+def is_legal_bin_vector(array: Any) -> bool:
     if not array or \
             not isinstance(array, bytes) or \
             len(array) == 0:
@@ -57,13 +55,15 @@ def is_legal_bin_vector(array):
     return True
 
 
-def is_legal_numpy_array(array):
-    return False if array is None or array.size == 0 else True
+def is_legal_numpy_array(array: Any) -> bool:
+    return not (array is None or array.size == 0)
 
 
 # def is_legal_records(value):
-#     param_error = ParamError('A vector must be a non-empty, 2-dimensional array and '
-#                              'must contain only elements with the float data type or the bytes data type.')
+#     param_error = ParamError(
+#         'A vector must be a non-empty, 2-dimensional array and '
+#         'must contain only elements with the float data type or the bytes data type.'
+#     )
 #
 #     if isinstance(value, np.ndarray):
 #         if not is_legal_numpy_array(value):
@@ -91,49 +91,48 @@ def is_legal_numpy_array(array):
 #     return True
 
 
-def int_or_str(item):
+def int_or_str(item: Union[int, str]) -> str:
     if isinstance(item, int):
         return str(item)
 
     return item
 
 
-def is_correct_date_str(param):
+def is_correct_date_str(param: str) -> bool:
     try:
         datetime.datetime.strptime(param, '%Y-%m-%d')
     except ValueError:
-        raise ParamError('Incorrect data format, should be YYYY-MM-DD')
+        return False
 
     return True
 
 
-def is_legal_dimension(dim):
+def is_legal_dimension(dim: Any) -> bool:
     return isinstance(dim, int)
 
 
-def is_legal_index_size(index_size):
+def is_legal_index_size(index_size: Any) -> bool:
     return isinstance(index_size, int)
 
 
-def is_legal_table_name(table_name):
-    return isinstance(table_name, str) and len(table_name) > 0
+def is_legal_table_name(table_name: Any) -> bool:
+    return table_name and isinstance(table_name, str)
 
 
-def is_legal_field_name(field_name):
-    return isinstance(field_name, str) and len(field_name) > 0
+def is_legal_field_name(field_name: Any) -> bool:
+    return field_name and isinstance(field_name, str)
 
 
-def is_legal_nlist(nlist):
+def is_legal_nlist(nlist: Any) -> bool:
     return not isinstance(nlist, bool) and isinstance(nlist, int)
 
 
-def is_legal_topk(topk):
+def is_legal_topk(topk: Any) -> bool:
     return not isinstance(topk, bool) and isinstance(topk, int)
 
 
-def is_legal_ids(ids):
-    if not isinstance(ids, list) or \
-            len(ids) == 0:
+def is_legal_ids(ids: Any) -> bool:
+    if not ids or not isinstance(ids, list):
         return False
 
     # TODO: Here check id valid value range may not match other SDK
@@ -150,15 +149,15 @@ def is_legal_ids(ids):
     return True
 
 
-def is_legal_nprobe(nprobe):
+def is_legal_nprobe(nprobe: Any) -> bool:
     return isinstance(nprobe, int)
 
 
-def is_legal_cmd(cmd):
-    return isinstance(cmd, str) and len(cmd) > 0
+def is_legal_cmd(cmd: Any) -> bool:
+    return cmd and isinstance(cmd, str)
 
 
-def parser_range_date(date):
+def parser_range_date(date: Union[str, datetime.date]) -> str:
     if isinstance(date, datetime.date):
         return date.strftime('%Y-%m-%d')
 
@@ -173,7 +172,7 @@ def parser_range_date(date):
         'or datetime.datetime object')
 
 
-def is_legal_date_range(start, end):
+def is_legal_date_range(start: str, end: str) -> bool:
     start_date = datetime.datetime.strptime(start, "%Y-%m-%d")
     end_date = datetime.datetime.strptime(end, "%Y-%m-%d")
     if (end_date - start_date).days < 0:
@@ -182,19 +181,19 @@ def is_legal_date_range(start, end):
     return True
 
 
-def is_legal_partition_name(tag):
+def is_legal_partition_name(tag: Any) -> bool:
     return tag is not None and isinstance(tag, str)
 
 
-def is_legal_limit(limit):
-    return isinstance(limit, int) and limit > 0
+def is_legal_limit(limit: Any) -> bool:
+    return limit and isinstance(limit, int)
 
 
-def is_legal_anns_field(field):
-    return isinstance(field, str) and len(field) > 0
+def is_legal_anns_field(field: Any) -> bool:
+    return field and isinstance(field, str)
 
 
-def is_legal_search_data(data):
+def is_legal_search_data(data: Any) -> bool:
     import numpy as np
     if not isinstance(data, (list, np.ndarray)):
         return False
@@ -208,7 +207,7 @@ def is_legal_search_data(data):
     return True
 
 
-def is_legal_output_fields(output_fields):
+def is_legal_output_fields(output_fields: Any) -> bool:
     if output_fields is None:
         return True
 
@@ -222,7 +221,7 @@ def is_legal_output_fields(output_fields):
     return True
 
 
-def is_legal_partition_name_array(tag_array):
+def is_legal_partition_name_array(tag_array: Any) -> bool:
     if tag_array is None:
         return True
 
@@ -238,7 +237,7 @@ def is_legal_partition_name_array(tag_array):
 
 # https://milvus.io/cn/docs/v1.0.0/metric.md#floating
 def is_legal_index_metric_type(index_type: str, metric_type: str) -> bool:
-    if index_type not in ["FLAT",
+    if index_type not in ("FLAT",
                           "IVF_FLAT",
                           "IVF_SQ8",
                           # "IVF_SQ8_HYBRID",
@@ -248,9 +247,9 @@ def is_legal_index_metric_type(index_type: str, metric_type: str) -> bool:
                           "ANNOY",
                           "RHNSW_FLAT",
                           "RHNSW_PQ",
-                          "RHNSW_SQ", ]:
+                          "RHNSW_SQ"):
         return False
-    if metric_type not in ["L2", "IP"]:
+    if metric_type not in ("L2", "IP"):
         return False
     return True
 
@@ -258,21 +257,23 @@ def is_legal_index_metric_type(index_type: str, metric_type: str) -> bool:
 # https://milvus.io/cn/docs/v1.0.0/metric.md#binary
 def is_legal_binary_index_metric_type(index_type: str, metric_type: str) -> bool:
     if index_type == "BIN_FLAT":
-        if metric_type in ["JACCARD", "TANIMOTO", "HAMMING", "SUBSTRUCTURE", "SUPERSTRUCTURE"]:
+        if metric_type in ("JACCARD", "TANIMOTO", "HAMMING", "SUBSTRUCTURE", "SUPERSTRUCTURE"):
             return True
     elif index_type == "BIN_IVF_FLAT":
-        if metric_type in ["JACCARD", "TANIMOTO", "HAMMING"]:
+        if metric_type in ("JACCARD", "TANIMOTO", "HAMMING"):
             return True
     return False
 
 
-def _raise_param_error(param_name, param_value):
-    raise ParamError("`{}` value {} is illegal".format(param_name, param_value))
+def _raise_param_error(param_name: str, param_value: Any) -> None:
+    raise ParamError(f"`{param_name}` value {param_value} is illegal")
+
 
-def is_legal_round_decimal(round_decimal):
+def is_legal_round_decimal(round_decimal: Any) -> bool:
     return isinstance(round_decimal, int) and -2 < round_decimal < 7
 
-def check_pass_param(*args, **kwargs):
+
+def check_pass_param(*_args: Any, **kwargs: Any) -> None:  # pylint: disable=too-many-statements
     if kwargs is None:
         raise ParamError("Param should not be None")
 
@@ -329,4 +330,4 @@ def check_pass_param(*args, **kwargs):
         #     if not is_legal_records(value):
         #         _raise_param_error(key, value)
         else:
-            raise ParamError("unknown param `{}`".format(key))
+            raise ParamError(f"unknown param `{key}`")

From 48bbc3830cbaf33db32d31e97d288b8e26a91785 Mon Sep 17 00:00:00 2001
From: XuanYang-cn <xuan.yang@zilliz.com>
Date: Mon, 18 Oct 2021 14:43:40 +0800
Subject: [PATCH 07/21] Fix check limit error (#760)

Signed-off-by: XuanYang-cn <xuan.yang@zilliz.com>
---
 pymilvus/client/check.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pymilvus/client/check.py b/pymilvus/client/check.py
index 80d9db9cc..c0a77bd85 100644
--- a/pymilvus/client/check.py
+++ b/pymilvus/client/check.py
@@ -186,7 +186,7 @@ def is_legal_partition_name(tag: Any) -> bool:
 
 
 def is_legal_limit(limit: Any) -> bool:
-    return limit and isinstance(limit, int)
+    return isinstance(limit, int) and limit > 0
 
 
 def is_legal_anns_field(field: Any) -> bool:

From 1fdb463472186ea3b85d5dd2e4e9de2bbcc9ea26 Mon Sep 17 00:00:00 2001
From: XuanYang-cn <xuan.yang@zilliz.com>
Date: Mon, 18 Oct 2021 17:46:37 +0800
Subject: [PATCH 08/21] Make gt avaliable (#761)

Signed-off-by: XuanYang-cn <xuan.yang@zilliz.com>
---
 pymilvus/__init__.py | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/pymilvus/__init__.py b/pymilvus/__init__.py
index ca2bd9b6a..bfde66641 100644
--- a/pymilvus/__init__.py
+++ b/pymilvus/__init__.py
@@ -46,6 +46,8 @@
 from .orm import utility
 from .orm.default_config import DefaultConfig
 
+from .client.utils import generate_timestamp
+
 from .orm.search import SearchResult, Hits, Hit
 from .orm.schema import FieldSchema, CollectionSchema
 from .orm.future import SearchFuture, MutationFuture
@@ -56,6 +58,7 @@
     'Collection', 'Index', 'Partition',
     'connections',
     'loading_progress', 'index_building_progress', 'wait_for_loading_complete', 'has_collection', 'has_partition', 'list_collections', 'wait_for_loading_complete', 'wait_for_index_building_complete', 'drop_collection',
+    'generate_timestamp',
     'SearchResult', 'Hits', 'Hit',
     'FieldSchema', 'CollectionSchema',
     'SearchFuture', 'MutationFuture',

From 43aba4581b224ad2fc637bd5cf66859aa0d41402 Mon Sep 17 00:00:00 2001
From: jingkl <34296482+jingkl@users.noreply.github.com>
Date: Tue, 19 Oct 2021 21:12:36 +0800
Subject: [PATCH 09/21] remote docs/draft file (#771)

Signed-off-by: jingkl <jingjing.jia@zilliz.com>
---
 docs/draft/collection.md  | 62 ---------------------------------------
 docs/draft/connections.md |  7 -----
 docs/draft/index.md       | 19 ------------
 docs/draft/partition.md   | 26 ----------------
 docs/draft/schema.md      | 58 ------------------------------------
 docs/draft/search.md      | 29 ------------------
 docs/draft/utility.md     | 18 ------------
 7 files changed, 219 deletions(-)
 delete mode 100644 docs/draft/collection.md
 delete mode 100644 docs/draft/connections.md
 delete mode 100644 docs/draft/index.md
 delete mode 100644 docs/draft/partition.md
 delete mode 100644 docs/draft/schema.md
 delete mode 100644 docs/draft/search.md
 delete mode 100644 docs/draft/utility.md

diff --git a/docs/draft/collection.md b/docs/draft/collection.md
deleted file mode 100644
index b98253e7a..000000000
--- a/docs/draft/collection.md
+++ /dev/null
@@ -1,62 +0,0 @@
-#### pymilvus.Collection
-
----
-
-
-
-##### Accessing and constructing collection
-
-| Methods                                            | Descriptions                                 | 参数                                                         | 返回值         |
-| -------------------------------------------------- | :------------------------------------------- | ------------------------------------------------------------ | -------------- |
-| Collection(name, data=None, schema=None, **kwargs) | 创建Collection,如果不存在同名的,则新建一个 | name 类型 string<br />data 类型是 pandas.DataFrame<br />schema 类型 是CollectionSchema<br />kwargs 可传入参数是 primary_key = field_name | Collection对象 |
-|                                                    |                                              |                                                              |                |
-
-
-
-##### Manipulating and querying collection meta
-
-| Properties              | Descriptions                  | 参数 | 返回值                  |
-| ----------------------- | ----------------------------- | ---- | ----------------------- |
-| Collection.schema       | Return the collection schema. | /    | CollectionSchema 对象   |
-| Collection.description  | 返回自定义描述                | /    | 类型 string,自定义描述 |
-| Collection.name         | 返回collection名字            | /    | 类型 string, 名字       |
-| Collection.is_empty     | 是否为空                      | /    | 类型 boolean            |
-| Collection.num_entities | 返回行数                      | /    | 类型int                 |
-
-
-
-##### Manipulating, loading, and querying collection
-
-| Methods                                                      | Descriptions                                                 | 参数                                                         | 返回值                                                       |
-| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
-| Collection.drop(**kwargs)                                    | Drop the collection, as well as its indexes.                 | kwargs reversed.目前为空                                     | None 或 Raise Exception                                      |
-| Collection.load(field_names=None, index_names=None, partition_names=None, **kwargs) | Load the collection from disk to memory.                     | field_names   类型是 list(string)<br />index_names 类型是 list(string)<br />partitions_names 类型是 list(string)<br />kwargs reversed.目前为空 | None或者Raise Exception                                      |
-| Collection.release(**kwargs)                                 | Release the collection from memory.                          | kwargs reversed.目前为空                                     | None或者Raise Exception                                      |
-| Collection.insert(data, partition_name="", **kwargs)         | Insert data into the collection, or into one of its partitions. | data 类型是 list-like(list, tuple) 对象或者pandas.DataFrame,data的维度需要和列的数目对齐<br />partition_name 类型是 string<br />kwargs可以是 _async=False, _callback | ids 类型是 list(int) or list(string)<br />或者 MutationFuture 或者Raise Exception |
-| Collection.search(data, anns_field, params, limit, expr="", partition_names=None, output_fields=None, **kwargs) | Vector similarity search with an optional boolean expression as filters. | data是 list-like(list, tuple) 或者 pd.Series<br />anns_field 类型是 string, 表示在哪个列上进行向量的近似查询<br />params 类型是 dict<br />limit 类型是 int <br />expr 类型是string<br />partitions_names类型是 list(string)<br />output_fields类型是list(string)<br />kwargs 可以是 async=False | SearchResultFuture或者 SearchResult 或者Raise Exception      |
-| Collection.query(expr="", output_fields=None, partition_names=None) | Query with a set of criteria, and results in a list of records that match the query exactly. | expr 类型是string<br />output_fields 类型是 list(string), 表示要返回哪些列的原始数据<br />partitions_names类型是 list(string) | dict 或者Raise Exception      |
-
-
-
-##### Accessing and constructing partition
-
-| Methods                                                    | Descriptions                                          | 参数                       | 返回值                           |
-| ---------------------------------------------------------- | ----------------------------------------------------- | -------------------------- | -------------------------------- |
-| Collection.partitions                                      | Return all partitions of the collection.              | /                          | list(Partition对象)              |
-| Collection.partition(partition_name)                       | Return the partition corresponding to name.           | partition_name类型是string | None或者Partition对象            |
-| Collection.create_partition(partition_name, desription="") | Create a new one if not existed.                      |                            | Partition对象或者Raise Exception |
-| Collection.has_partition(partition_name)                   | Checks if a specified partition exists.               | partition_name类型是string | boolean                          |
-| Collection.drop_partition(partition_name, **kwargs)        | Drop the partition and its corresponding index files. | partition_name类型是string | None或者Raise Exception          |
-
-
-
-##### Accessing and constructing index
-
-| Methods                                                      | Descriptions                                                 | 参数                                                         | 返回值                        |
-| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ----------------------------- |
-| Collection.indexes                                           | Return all indexes of the collection.                        | /                                                            | list(Index对象)               |
-| Collection.index(index_name)                                 | Return the index corresponding to name.                      | index_name类型是 string                                      | None或者Index对象             |
-| Collection.has_index(index_name)                             | Checks whether a specified index exists.                     | index_name类型是 string                                      | bool                          |
-| Collection.create_index(field_name, index_name, index_params, **kwargs) | Create index on a specified column according to the index parameters. Return Index Object. | field_name类型是string<br />index_params类型是dict<br />index_name类型是 string | Index对象或者 Raise Exception |
-| Collection.drop_index(index_name, **kwargs)                  | Drop index and its corresponding index files.                | index_name类型是string                                       | None或者Raise Exception       |
-
diff --git a/docs/draft/connections.md b/docs/draft/connections.md
deleted file mode 100644
index fd9bc2d04..000000000
--- a/docs/draft/connections.md
+++ /dev/null
@@ -1,7 +0,0 @@
-| Methods                                        | Descriptions                     | 参数                                                         | 返回值                  |
-| ---------------------------------------------- | :------------------------------- | ------------------------------------------------------------ | ----------------------- |
-| Connections.configure(**kwargs)                | Configure connections.           | milvus 客户端连接相关配置,包括 ip,port 等;                | None或Raise Exception   |
-| Connections.add_connection(alias, conn)        | Add a connection using alias.    | alias:待添加的 milvus 客户端连接 conn 的别名,conn:milvus 客户端连接; | None 或 Raise Exception |
-| Connections.remove_connection(alias)           | Remove a connection by alias.    | alias:待删除的 milvus 客户端连接别名;                      | None 或 Raise Exception |
-| Connections.create_connection(alias, **kwargs) | Create a connection named alias. | alias:待创建的 milvus 客户端连接别名,kwargs:客户端连接配置,包括 ip,port 等; | None 或 Raise Exception |
-| Connections.get_connection(alias)              | Get a connection by alias.       | alias:待使用的 milvus 客户端连接别名;                      | milvus 客户端连接       |
diff --git a/docs/draft/index.md b/docs/draft/index.md
deleted file mode 100644
index 3d6c91c98..000000000
--- a/docs/draft/index.md
+++ /dev/null
@@ -1,19 +0,0 @@
-#### pymilvus.Index
-
----
-
-##### Accessing and constructing Index
-
-| Methods                                              | Descriptions                                                 | 参数                                                         | 返回值                       |
-| ---------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ---------------------------- |
-| Index(collection, field_name, index_params, name="") | Create index on a specified column according to the index parameters. | collection类型是 Collection<br />name 类型是 string<br />field_name 类型是 string<br />index_params 类型是 dict | Index 对象或者 Raise Exception |
-| Index.name                                           | Return the index name.                                       | /                                                            | string                       |
-| Index.params                                         | Return the index params.                                     | /                                                            | dict (克隆)                  |
-| Index.collection_name                                | Return corresponding collection name.                        | /                                                            | string                       |
-| Index.field_name                                     | Return corresponding column name.                            | /                                                            | string                       |
-
-##### Manipulating
-
-| Methods      | Descriptions                                  | 参数 | 返回值                  |
-| ------------ | --------------------------------------------- | ---- | ----------------------- |
-| Index.drop() | Drop index and its corresponding index files. | /    | None 或者 Raise Exception |
diff --git a/docs/draft/partition.md b/docs/draft/partition.md
deleted file mode 100644
index 5aa033229..000000000
--- a/docs/draft/partition.md
+++ /dev/null
@@ -1,26 +0,0 @@
-#### pymilvus.Partition
-
----
-
-##### Manipulating and querying partition meta
-
-| Methods                                     | Descriptions                           | 参数 | 返回值  |
-| ------------------------------------------- | -------------------------------------- | ---- | ------- |
-| Partition(collection, name, description="") | collection类型是 Collection<br />      |      |         |
-| Partition.description                       | Return the description text.           | /    | string  |
-| Partition.name                              | Return the partition name.             | /    | string  |
-| Partition.is_empty                          | Return whether the partition is empty. | /    | boolean |
-| Partition.num_entities                      | Return the number of entities.         | /    | int     |
-
-##### Manipulating, loading, and querying partition
-
-| Methods                                                      | Descriptions                                                 | 参数                                                         | 返回值                                                  |
-| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------- |
-| Partition.drop(**kwargs)                                     | Drop the partition, as well as its corresponding index files. | kwargs reversed.目前为空                                     | None或者Raise Exception                                 |
-| Partition.load(field_names=None, index_names=None, **kwargs) | Load the partition from disk to memory.                      | field_names  类型是list(string)<br />index_names类型是list(string)<br />kwargs reversed.目前为空 | None或者Raise Exception                                 |
-| Partition.release(**kwargs)                                  | Release the partition from memory.                           | kwargs reversed.目前为空                                     | None或者Raise Exception                                 |
-| Partition.insert(data, **kwargs)                             | Insert data into partition.                                  | data 类型是list-like(list, tuple, numpy.ndarray) 对象或者pandas.DataFrame,data的维度需要和列的数目对齐<br />kwargs可以是 sync=False | None或者InsertFuture或者Raise Exception                 |
-| Partition.search(data, anns_field, params, limit, expr=None, output_fields=None, **kwargs) | Vector similarity search with an optional boolean expression as filters. | data是 list-like(list, tuple),或者pd.Series <br />anns_field 类型是 string, 表示在哪个列上进行向量的近似查询<br />params 类型是 dict<br /><br />limit 类型是 int <br />expr 类型是string<br />output_fields类型是list(string)<br />kwargs 可以是 async=False | SearchResultFuture或者 SearchResult 或者Raise Exception |
-| Partition.query(expr="", output_fields=None) | Query with a set of criteria, and results in a list of records that match the query exactly. | expr 类型是string<br />output_fields 类型是 list(string), 表示要返回哪些列的原始数据 | dict 或者Raise Exception      |
-
-
diff --git a/docs/draft/schema.md b/docs/draft/schema.md
deleted file mode 100644
index 401e62797..000000000
--- a/docs/draft/schema.md
+++ /dev/null
@@ -1,58 +0,0 @@
-### CollectionSchema
-
-| Methods              | Descriptions                           | 参数描述 | 返回值 |
-| -------------------- | -------------------------------------- | -------------------- | -------------------- |
-| CollectionSchema(fields, description="", **kwargs) | 构造一个CollectionSchema对象 | 参数fields是一个 list-like的对象,每个元素是FieldSchema对象<br />description 类型 string 自定义描述 | CollectionSchema对象或者Raise Exception |
-| CollectionSchema.fields | 返回所有的列 | /                                                            | list,每个元素是一个 FieldSchema 对象 |
-| CollectionSchema.description | 返回自定义描述 | /                                                            | string 自定义描述                    |
-| CollectionSchema.primary_field | 返回主键列的FieldSchema | /                                                            | None 或 FieldSchema 对象        |
-| CollectionSchema.auto_id | 是否自动生成主键 | /                                                            | bool                                  |
-|  |  |                                                              |                                       |
-
-
-
-### FieldSchema
-
-
-
-| Methods                                             | Descriptions            | 参数描述                                                     | 返回值                                     |
-| --------------------------------------------------- | ----------------------- | ------------------------------------------------------------ | ------------------------------------------ |
-| FieldSchema(name, dtype,  description="", **kwargs) | 构造一个FieldScheam对象 | name 参数类型是string<br />dtype参数类型是 名为 DataType 的 python enum<br />description 类型是 string,自定义描述 | FieldScheam对象或者Raise Exception         |
-|                                                     |                         |                                                              |                                            |
-| FieldSchema.name                                    | 列名                    | /                                                            | string                                     |
-| FieldSchema.dtype                                   | 返回数据类型            | /                                                            | DataType                                   |
-| FieldSchema.description                             | 返回自定义描述          | /                                                            | string, 自定义描述                         |
-| FieldSchema.xxx                                     | 其他属性                | /                                                            | None 或者确定的值<br />比如ndim, str_len等 |
-
-
-
-#### DataType
-
-
-| DataType Enum  |
-| ----------------------- |
-| DataType.BOOL |
-| DataType.INT8 |
-| DataType.INT16 |
-| DataType.INT32 |
-| DataType.INT64 |
-| DataType.FLOAT |
-| DataType.DOUBLE |
-| DataType.BINARY_VECTOR |
-| DataType.FLOAT_VECTOR |
-
-
-
-### 例子
-
-```python
-fields = [
-    FieldSchema("A", DataType.INT32, True),
-    FieldSchema("B", DataType.INT64),
-    FieldSchema("C",  DataType.FLOAT),
-   FieldSchema("Vec", DataType.FLOAT_VECTOR)]
-
-schema = Schema(fields, description = "This is a test collection.")
-
-assert len(schema.fields()) == len(fields)
-```
diff --git a/docs/draft/search.md b/docs/draft/search.md
deleted file mode 100644
index ff9cb591f..000000000
--- a/docs/draft/search.md
+++ /dev/null
@@ -1,29 +0,0 @@
-
-| Methods                     | Descriptions                                                 | 参数                     | 返回值                  |
-| --------------------------- | ------------------------------------------------------------ | ------------------------ | ----------------------- |
-| SearchResult(grpc_response) | Construct a Search Result from response.                     | 内部构造函数,用户用不到 | SearchResult对象        |
-| SearchResult.__iter__()     | Iterate the Search Result. Every iteration returns a `Hits` coresponding to a query. | /                        | python generator        |
-| SearchResult[n]             | Return the `Hits` coresponding to the nth query.             | int                      | Hits对象                |
-| SearchResult.__len__()      | Return the number of query of Search Result.                 | /                        | int                     |
-| SearchResult.done()         | 同步等待结果,幂等操作                                       | /                        | None或者Raise Exception |
-
-
-| Methods          | Descriptions                                                 | 参数           | 返回值                            |
-| ---------------- | ------------------------------------------------------------ | -------------- | --------------------------------- |
-| Hits(raw_data)   | Construct a Hits object from response.                       |                | Hits对象                          |
-| Hits.__iter__()  | Iterate the `Hits` object. Every iteration returns a `Hit` which represent a record coresponding to the query. |                | python迭代器,每次迭代返回Hit对象 |
-| Hits[k]          | Return the kth `Hit` coresponding to the query.              | 参数k 类型 int | Hit对象                           |
-| Hits.__len__()   | Return the number of hit record.                             | /              | int                               |
-| Hits.ids       | Return the ids of all hit record.                            | /              | list(int)或者list(string)         |
-| Hits.distances | Return the distances of all hit record.                      | /              | list(float)                       |
-
-
-| Methods        | Descriptions                                                 | 参数 | 返回值      |
-| -------------- | ------------------------------------------------------------ | ---- | ----------- |
-| Hit(raw_data)  | Construct a Hit object from response. A hit represent a record coresponding to the query. |      | Hit对象     |
-| Hit.id       | Return the id of the hit record.                             | /    | int /string |
-| Hit.distance | Return the distance between the hit record and the query.    | /    | float       |
-| Hit.score    | Return the calculated score of the hit record, now the score is equal to distance. | /    | float       |
-
-
-
diff --git a/docs/draft/utility.md b/docs/draft/utility.md
deleted file mode 100644
index caa864c51..000000000
--- a/docs/draft/utility.md
+++ /dev/null
@@ -1,18 +0,0 @@
-#### pymilvus.utility
-
----
-
-
-
-##### Checking job states
-
-| Methods                                                      | Description                                                  | 参数                                                         | 返回值                                                       |
-| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
-| utility.loading_progress(collection_name, partition_names=[], using="default") | Show # loaded entities vs. # total entities                  | collection_name 类型是string<br />partition_names 类型是 list | dict{<br />num_loaded_entities: int,<br />num_total_entities:int} |
-| utility.wait_for_loading_complete(collection_name, partition_names=[], timeout=None,using="default") | Block until loading is done or Raise Exception after timeout. | collection_name 类型是 string<br />partition_names 类型是 list | None或Raise Exception                                        |
-| utility.index_building_progress(collection_name, index_name="",using="default") | Show # indexed entities vs. # total entities                 | collection_name 类型是 string<br />index_name 类型是 string  | dict{<br />num_indexed_entities: int,<br />num_total_entities:int} |
-| utility.wait_for_index_building_complete(collection_name, index_name, timeout = None,using="default") | Block until building is done or Raise Exception after timeout. | collection_name 类型是string<br />partition_name 类型是 string<br />timeout 类型是 int (秒) | None或Raise Exception                                        |
-| utility.has_collection(collection_name,using="default")      | Checks whether a specified collection exists.                | collection_name 类型是string                                 | boolean                                                      |
-| utility.has_partition(collecton_name, partition_name,using="default") | Checks if a specified partition exists in a collection.      | collection_name 类型是string<br />partition_name 类型是 string | boolean                                                      |
-| utility.list_collections(timeout=None, using="default")      | Returns a list of all collection names                       |                                                              | list(string)                                                 |
-

From 9d3c7ad2fcf877d3b65b38055559f9224ae0010e Mon Sep 17 00:00:00 2001
From: "zhenshan.cao" <zhenshan.cao@zilliz.com>
Date: Wed, 20 Oct 2021 10:32:29 +0800
Subject: [PATCH 10/21] Add travel_timestamp parameter to search method (#773)

Signed-off-by: zhenshan.cao <zhenshan.cao@zilliz.com>
---
 pymilvus/client/prepare.py | 16 ++++++++++------
 pymilvus/client/stub.py    |  5 ++++-
 pymilvus/orm/collection.py |  3 +++
 pymilvus/orm/partition.py  |  3 +++
 4 files changed, 20 insertions(+), 7 deletions(-)

diff --git a/pymilvus/client/prepare.py b/pymilvus/client/prepare.py
index c5e72c562..15d58724e 100644
--- a/pymilvus/client/prepare.py
+++ b/pymilvus/client/prepare.py
@@ -410,7 +410,7 @@ def divide_search_request(cls, collection_name, query_entities, partition_names=
         vector_placeholders = dict()
         vector_names = dict()
 
-        meta = {}   # TODO: ugly here, find a better method
+        meta = {}  # TODO: ugly here, find a better method
 
         def extract_vectors_param(param, placeholders, meta=None, names=None, round_decimal=-1):
             if not isinstance(param, (dict, list)):
@@ -456,7 +456,7 @@ def extract_vectors_param(param, placeholders, meta=None, names=None, round_deci
 
         requests = []
         factor = 10
-        topk = meta.get("topk", 100)    # TODO: ugly here, find a better method
+        topk = meta.get("topk", 100)  # TODO: ugly here, find a better method
         for tag, vectors in vector_placeholders.items():
             if len(vectors) <= 0:
                 continue
@@ -502,7 +502,8 @@ def extract_vectors_param(param, placeholders, meta=None, names=None, round_deci
             return requests
 
     @classmethod
-    def search_request(cls, collection_name, query_entities, partition_names=None, fields=None, round_decimal=-1, **kwargs):
+    def search_request(cls, collection_name, query_entities, partition_names=None, fields=None, round_decimal=-1,
+                       **kwargs):
         schema = kwargs.get("schema", None)
         fields_schema = schema.get("fields", None)  # list
         fields_name_locs = {fields_schema[loc]["name"]: loc
@@ -511,7 +512,7 @@ def search_request(cls, collection_name, query_entities, partition_names=None, f
         if not isinstance(query_entities, (dict,)):
             raise ParamError("Invalid query format. 'query_entities' must be a dict")
 
-        if fields is not None and not isinstance(fields, (list, )):
+        if fields is not None and not isinstance(fields, (list,)):
             raise ParamError("Invalid query format. 'fields' must be a list")
 
         request = milvus_types.SearchRequest(
@@ -627,7 +628,8 @@ def search_requests_with_expr(cls, collection_name, data, anns_field, param, lim
         params = param_copy.pop("params", {})
         if not isinstance(params, dict):
             raise ParamError("Search params must be a dict")
-        search_params = {"anns_field": anns_field, "topk": limit, "metric_type": metric_type, "params": params, "round_decimal": round_decimal}
+        search_params = {"anns_field": anns_field, "topk": limit, "metric_type": metric_type, "params": params,
+                         "round_decimal": round_decimal}
 
         def dump(v):
             if isinstance(v, dict):
@@ -643,6 +645,7 @@ def dump(v):
                 partition_names=partition_names,
                 output_fields=output_fields,
                 guarantee_timestamp=kwargs.get("guarantee_timestamp", 0),
+                travel_timestamp=kwargs.get("travel_timestamp", 0),
             )
             request.placeholder_group = plg_str
 
@@ -853,7 +856,8 @@ def extract_vectors(vectors, request_op, is_left):
         type_left, dim_left = extract_vectors(vectors_left, request.op_left, True)
         type_right, dim_right = extract_vectors(vectors_right, request.op_right, False)
 
-        if (type_left == _TYPE_FLOAT and type_right == _TYPE_BIN) or (type_left == _TYPE_BIN and type_right == _TYPE_FLOAT):
+        if (type_left == _TYPE_FLOAT and type_right == _TYPE_BIN) or (
+                type_left == _TYPE_BIN and type_right == _TYPE_FLOAT):
             raise ParamError("Cannot calculate distance between float vectors and binary vectors")
 
         if (type_left != _TYPE_IDS and type_right != _TYPE_IDS) and dim_left != dim_right:
diff --git a/pymilvus/client/stub.py b/pymilvus/client/stub.py
index fd9ee6080..baee8da23 100644
--- a/pymilvus/client/stub.py
+++ b/pymilvus/client/stub.py
@@ -959,7 +959,7 @@ def delete(self, collection_name, expr, partition_name=None, timeout=None, **kwa
         """
         check_pass_param(collection_name=collection_name)
         with self._connection() as handler:
-           return handler.delete(collection_name, expr, partition_name, timeout, **kwargs)
+            return handler.delete(collection_name, expr, partition_name, timeout, **kwargs)
 
     @retry_on_rpc_failure(retry_times=10, wait=1)
     def flush(self, collection_names=None, timeout=None, **kwargs):
@@ -1047,6 +1047,9 @@ def search(self, collection_name, data, anns_field, param, limit, expression=Non
             * *guarantee_timestamp* (``int``) --
               This function instructs Milvus to see all operations performed before a provided timestamp. If no
               such timestamp is provided, then Milvus will search all operations performed to date.
+            * *travel_timestamp* (``int``) --
+              Users can specify a timestamp in a search to get results based on a data view
+                        at a specified point in time.
 
         :return: Query result. QueryResult is iterable and is a 2d-array-like class, the first dimension is
                  the number of vectors to query (nq), the second dimension is the number of limit(topk).
diff --git a/pymilvus/orm/collection.py b/pymilvus/orm/collection.py
index f71fafdcd..728f61bfb 100644
--- a/pymilvus/orm/collection.py
+++ b/pymilvus/orm/collection.py
@@ -619,6 +619,9 @@ def search(self, data, anns_field, param, limit, expr=None, partition_names=None
             * *guarantee_timestamp* (``int``) --
               This function instructs Milvus to see all operations performed before a provided timestamp. If no
               such timestamp is provided, then Milvus will search all operations performed to date.
+            * *travel_timestamp* (``int``) --
+              Users can specify a timestamp in a search to get results based on a data view
+                        at a specified point in time.
 
         :return: SearchResult:
             SearchResult is iterable and is a 2d-array-like class, the first dimension is
diff --git a/pymilvus/orm/partition.py b/pymilvus/orm/partition.py
index 44a4d59a9..db07fe1c6 100644
--- a/pymilvus/orm/partition.py
+++ b/pymilvus/orm/partition.py
@@ -357,6 +357,9 @@ def search(self, data, anns_field, param, limit, expr=None, output_fields=None,
             * *guarantee_timestamp* (``function``) --
               This function instructs Milvus to see all operations performed before a provided timestamp. If no
               such timestamp is provided, then Milvus will search all operations performed to date.
+            * *travel_timestamp* (``int``) --
+              Users can specify a timestamp in a search to get results based on a data view
+                        at a specified point in time.
 
         :return: SearchResult:
             SearchResult is iterable and is a 2d-array-like class, the first dimension is

From 3e0963ec68e6da759170b2fea5eed46d5cd456aa Mon Sep 17 00:00:00 2001
From: Xiangyu Wang <xiangyu.wang@zilliz.com>
Date: Wed, 20 Oct 2021 12:18:29 +0800
Subject: [PATCH 11/21] Enable delete function (#774)

Signed-off-by: Xiangyu Wang <xiangyu.wang@zilliz.com>
---
 pymilvus/client/grpc_handler.py | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/pymilvus/client/grpc_handler.py b/pymilvus/client/grpc_handler.py
index ed5ff1714..93f1f754f 100644
--- a/pymilvus/client/grpc_handler.py
+++ b/pymilvus/client/grpc_handler.py
@@ -518,9 +518,7 @@ def delete(self, collection_name, expression, partition_name=None, timeout=None,
         except Exception as err:
             if kwargs.get("_async", False):
                 return MutationFuture(None, None, err)
-        finally:
-            # once delete api is finished, remove this error
-            raise NotImplementedError("Delete function is not implemented")
+            return err
 
     def _prepare_search_request(self, collection_name, query_entities, partition_names=None, fields=None, timeout=None,
                                 round_decimal=-1, **kwargs):

From 5c41f4485eb2c57ad2a1cfecd852e2ffbf589db4 Mon Sep 17 00:00:00 2001
From: groot <yihua.mo@zilliz.com>
Date: Thu, 21 Oct 2021 16:44:29 +0800
Subject: [PATCH 12/21] Fix #10271 (#777)

Signed-off-by: yhmo <yihua.mo@zilliz.com>
---
 pymilvus/client/grpc_handler.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pymilvus/client/grpc_handler.py b/pymilvus/client/grpc_handler.py
index 93f1f754f..60d7cb48e 100644
--- a/pymilvus/client/grpc_handler.py
+++ b/pymilvus/client/grpc_handler.py
@@ -518,7 +518,7 @@ def delete(self, collection_name, expression, partition_name=None, timeout=None,
         except Exception as err:
             if kwargs.get("_async", False):
                 return MutationFuture(None, None, err)
-            return err
+            raise err
 
     def _prepare_search_request(self, collection_name, query_entities, partition_names=None, fields=None, timeout=None,
                                 round_decimal=-1, **kwargs):

From 97fe6f76cc7ca4f61fc1c29b5148de102fa1e110 Mon Sep 17 00:00:00 2001
From: jingkl <34296482+jingkl@users.noreply.github.com>
Date: Fri, 22 Oct 2021 11:25:02 +0800
Subject: [PATCH 13/21] remove examples/connections.py (#776)

Signed-off-by: jingkl <jingjing.jia@zilliz.com>
---
 examples/connections.py | 29 -----------------------------
 1 file changed, 29 deletions(-)
 delete mode 100644 examples/connections.py

diff --git a/examples/connections.py b/examples/connections.py
deleted file mode 100644
index 936c97030..000000000
--- a/examples/connections.py
+++ /dev/null
@@ -1,29 +0,0 @@
-# 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.
-
-import logging
-
-try:
-    from pymilvus import connections
-except ImportError:
-    from os.path import dirname, abspath
-    import sys
-
-    sys.path.append(dirname(dirname(abspath(__file__))))
-
-    from pymilvus import connections
-
-LOGGER = logging.getLogger(__name__)
-
-print("start connection")
-conn = connections.connect()
-LOGGER.info(conn.list_collections())
-print("end connection")

From ba2323d6605aea7c2565f8ddfbea02ab3c7b6c2a Mon Sep 17 00:00:00 2001
From: bigsheeper <yihao.dai@zilliz.com>
Date: Mon, 25 Oct 2021 11:35:06 +0800
Subject: [PATCH 14/21] Add get_query_segment_info (#772)

Signed-off-by: bigsheeper <yihao.dai@zilliz.com>
---
 docs/source/api/utility.rst |  4 +++-
 pymilvus/__init__.py        |  1 +
 pymilvus/client/stub.py     | 16 ++++++++++++++++
 pymilvus/orm/utility.py     | 21 +++++++++++++++++++++
 4 files changed, 41 insertions(+), 1 deletion(-)

diff --git a/docs/source/api/utility.rst b/docs/source/api/utility.rst
index 9adcf452f..7a648e793 100644
--- a/docs/source/api/utility.rst
+++ b/docs/source/api/utility.rst
@@ -28,6 +28,8 @@ Methods
 +--------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------+
 | `calc_distance(vectors_left, vectors_right, params, [timeout, using]) <#pymilvus.utility.calc_distance>`_                      | Calculate distance between two vector arrays. |
 +--------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------+
+| `get_query_segment_info([timeout, using]) <#pymilvus.utility.get_query_segment_info>`_                                         | Get segments information from query nodes.    |
++--------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------+
 
 APIs References
 ---------------
@@ -36,4 +38,4 @@ APIs References
    :member-order: bysource
    :members: loading_progress, wait_for_loading_complete, index_building_progress,
              wait_for_index_building_complete, has_collection, has_partition, list_collections,
-             drop_collection, calc_distance
+             drop_collection, calc_distance, get_query_segment_info
diff --git a/pymilvus/__init__.py b/pymilvus/__init__.py
index bfde66641..7823edb77 100644
--- a/pymilvus/__init__.py
+++ b/pymilvus/__init__.py
@@ -41,6 +41,7 @@
     has_partition,
     list_collections,
     drop_collection,
+    get_query_segment_info,
 )
 
 from .orm import utility
diff --git a/pymilvus/client/stub.py b/pymilvus/client/stub.py
index baee8da23..e41eb0e5a 100644
--- a/pymilvus/client/stub.py
+++ b/pymilvus/client/stub.py
@@ -1120,6 +1120,22 @@ def calc_distance(self, vectors_left, vectors_right, params=None, timeout=None,
         with self._connection() as handler:
             return handler.calc_distance(vectors_left, vectors_right, params, timeout, **kwargs)
 
+    @retry_on_rpc_failure(retry_times=10, wait=1)
+    def get_query_segment_info(self, timeout=None, **kwargs):
+        """
+        Notifies Proxy to return segments information from query nodes.
+
+        :param timeout: An optional duration of time in seconds to allow for the RPC. When timeout
+                        is set to None, client waits until server response or error occur.
+        :type  timeout: float
+
+        :return: QuerySegmentInfo:
+            QuerySegmentInfo is the growing segments's information in query cluster.
+        :rtype: QuerySegmentInfo
+        """
+        with self._connection() as handler:
+            return handler.get_query_segment_infos(timeout, **kwargs)
+
     @retry_on_rpc_failure(retry_times=10, wait=1)
     def load_collection_progress(self, collection_name, timeout=None):
         with self._connection() as handler:
diff --git a/pymilvus/orm/utility.py b/pymilvus/orm/utility.py
index a55178b7e..d1c9a675b 100644
--- a/pymilvus/orm/utility.py
+++ b/pymilvus/orm/utility.py
@@ -370,3 +370,24 @@ def vector_count(op):
     for i in range(n):
         res_2_d.append(res[i * m:i * m + m])
     return res_2_d
+
+def get_query_segment_info(timeout=None, using="default"):
+    """
+    Notifies Proxy to return segments information from query nodes.
+
+    :param timeout: An optional duration of time in seconds to allow for the RPC. When timeout
+                    is set to None, client waits until server response or error occur.
+    :type  timeout: float
+
+    :return: QuerySegmentInfo:
+        QuerySegmentInfo is the growing segments's information in query cluster.
+    :rtype: QuerySegmentInfo
+
+    :example:
+        >>> from pymilvus import connections, utility
+        >>>
+        >>> connections.connect()
+        >>>
+        >>> res = utility.get_query_segment_info()
+    """
+    return _get_connection(using).get_query_segment_info()

From 751d25ba93b057e8109b5eb8e955bbca6b50cb19 Mon Sep 17 00:00:00 2001
From: Cai Yudong <yudong.cai@zilliz.com>
Date: Mon, 25 Oct 2021 19:23:04 +0800
Subject: [PATCH 15/21] Throw exception when delete with invalid partition name
 (#780)

Signed-off-by: yudong.cai <yudong.cai@zilliz.com>
---
 pymilvus/client/prepare.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/pymilvus/client/prepare.py b/pymilvus/client/prepare.py
index 15d58724e..05ea95930 100644
--- a/pymilvus/client/prepare.py
+++ b/pymilvus/client/prepare.py
@@ -369,10 +369,10 @@ def check_str(instr, prefix):
                 raise ParamError(prefix + " cannot be empty")
 
         check_str(collection_name, "collection_name")
+        if partition_name != "":
+            check_str(partition_name, "partition_name")
         check_str(expr, "expr")
 
-        # if partition_name is null or empty, delete action will apply to whole collection
-        partition_name = partition_name or ""
         request = milvus_types.DeleteRequest(collection_name=collection_name, expr=expr, partition_name=partition_name)
         return request
 

From 3168b2595ebb79c8adb41befa7810961feaa9fa9 Mon Sep 17 00:00:00 2001
From: godchen <qingxiang.chen@zilliz.com>
Date: Mon, 25 Oct 2021 22:22:12 +0800
Subject: [PATCH 16/21] Remove insert request hash values (#782)

Signed-off-by: godchen <qingxiang.chen@zilliz.com>
---
 pymilvus/client/prepare.py | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/pymilvus/client/prepare.py b/pymilvus/client/prepare.py
index 05ea95930..d29e02335 100644
--- a/pymilvus/client/prepare.py
+++ b/pymilvus/client/prepare.py
@@ -348,12 +348,8 @@ def bulk_insert_param(cls, collection_name, entities, partition_name, fields_inf
 
         insert_request.num_rows = row_num
 
-        # generate hash keys, TODO: better hash function
-        if not fields_info[primary_key_loc].get("auto_id", False):
-            field_name = fields_info[primary_key_loc].get("name")
-            entity_loc = location[field_name]
-            hash_keys = [abs(mmh3.hash(str(e))) for e in entities[entity_loc].get("values")]
-            insert_request.hash_keys.extend(hash_keys)
+        # insert_request.hash_keys won't be filled in client. 
+        # It will be filled in proxy.
 
         return insert_request
 

From 2fe215f1c3dab95b9624642befd292a37892e5f2 Mon Sep 17 00:00:00 2001
From: Cai Yudong <yudong.cai@zilliz.com>
Date: Tue, 26 Oct 2021 14:54:12 +0800
Subject: [PATCH 17/21] Skip validation check when partition name is None
 (#783)

Signed-off-by: yudong.cai <yudong.cai@zilliz.com>
---
 pymilvus/client/prepare.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/pymilvus/client/prepare.py b/pymilvus/client/prepare.py
index d29e02335..d949dc912 100644
--- a/pymilvus/client/prepare.py
+++ b/pymilvus/client/prepare.py
@@ -365,8 +365,8 @@ def check_str(instr, prefix):
                 raise ParamError(prefix + " cannot be empty")
 
         check_str(collection_name, "collection_name")
-        if partition_name != "":
-            check_str(partition_name, "partition_name")
+        if partition_name is not None and partition_name != "":
+                check_str(partition_name, "partition_name")
         check_str(expr, "expr")
 
         request = milvus_types.DeleteRequest(collection_name=collection_name, expr=expr, partition_name=partition_name)

From d927516c0c2b48b84275dcaac7897274e1cb4779 Mon Sep 17 00:00:00 2001
From: Cai Yudong <yudong.cai@zilliz.com>
Date: Tue, 26 Oct 2021 18:12:14 +0800
Subject: [PATCH 18/21] Disable delete function (#784)

This reverts commit 3e0963ec68e6da759170b2fea5eed46d5cd456aa.

Signed-off-by: yudong.cai <yudong.cai@zilliz.com>
---
 pymilvus/client/grpc_handler.py | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/pymilvus/client/grpc_handler.py b/pymilvus/client/grpc_handler.py
index 60d7cb48e..687644023 100644
--- a/pymilvus/client/grpc_handler.py
+++ b/pymilvus/client/grpc_handler.py
@@ -519,6 +519,9 @@ def delete(self, collection_name, expression, partition_name=None, timeout=None,
             if kwargs.get("_async", False):
                 return MutationFuture(None, None, err)
             raise err
+        finally:
+            # once delete api is finished, remove this error
+            raise NotImplementedError("Delete function is not implemented")
 
     def _prepare_search_request(self, collection_name, query_entities, partition_names=None, fields=None, timeout=None,
                                 round_decimal=-1, **kwargs):

From 49f68e76dd706fdda904d4d1a630a4f47600b4df Mon Sep 17 00:00:00 2001
From: xige-16 <xi.ge@zilliz.com>
Date: Tue, 26 Oct 2021 20:30:36 +0800
Subject: [PATCH 19/21] Get qyery segment info from specified collection (#785)

Signed-off-by: xige-16 <xi.ge@zilliz.com>
---
 pymilvus/client/stub.py |  5 +++--
 pymilvus/orm/utility.py | 24 +++++++++++++++++-------
 2 files changed, 20 insertions(+), 9 deletions(-)

diff --git a/pymilvus/client/stub.py b/pymilvus/client/stub.py
index e41eb0e5a..5e7d9c9fd 100644
--- a/pymilvus/client/stub.py
+++ b/pymilvus/client/stub.py
@@ -1121,10 +1121,11 @@ def calc_distance(self, vectors_left, vectors_right, params=None, timeout=None,
             return handler.calc_distance(vectors_left, vectors_right, params, timeout, **kwargs)
 
     @retry_on_rpc_failure(retry_times=10, wait=1)
-    def get_query_segment_info(self, timeout=None, **kwargs):
+    def get_query_segment_info(self, collection_name, timeout=None, **kwargs):
         """
         Notifies Proxy to return segments information from query nodes.
 
+        :param collection_name: The name of the collection to get segments info.
         :param timeout: An optional duration of time in seconds to allow for the RPC. When timeout
                         is set to None, client waits until server response or error occur.
         :type  timeout: float
@@ -1134,7 +1135,7 @@ def get_query_segment_info(self, timeout=None, **kwargs):
         :rtype: QuerySegmentInfo
         """
         with self._connection() as handler:
-            return handler.get_query_segment_infos(timeout, **kwargs)
+            return handler.get_query_segment_infos(collection_name, timeout, **kwargs)
 
     @retry_on_rpc_failure(retry_times=10, wait=1)
     def load_collection_progress(self, collection_name, timeout=None):
diff --git a/pymilvus/orm/utility.py b/pymilvus/orm/utility.py
index d1c9a675b..b69f7fa93 100644
--- a/pymilvus/orm/utility.py
+++ b/pymilvus/orm/utility.py
@@ -371,10 +371,11 @@ def vector_count(op):
         res_2_d.append(res[i * m:i * m + m])
     return res_2_d
 
-def get_query_segment_info(timeout=None, using="default"):
+def get_query_segment_info(collection_name, timeout=None, using="default"):
     """
     Notifies Proxy to return segments information from query nodes.
 
+    :param collection_name: A string representing the collection to get segments info.
     :param timeout: An optional duration of time in seconds to allow for the RPC. When timeout
                     is set to None, client waits until server response or error occur.
     :type  timeout: float
@@ -384,10 +385,19 @@ def get_query_segment_info(timeout=None, using="default"):
     :rtype: QuerySegmentInfo
 
     :example:
-        >>> from pymilvus import connections, utility
-        >>>
-        >>> connections.connect()
-        >>>
-        >>> res = utility.get_query_segment_info()
+        >>> from pymilvus import Collection, FieldSchema, CollectionSchema, DataType, connections, utility
+        >>> connections.connect(alias="default")
+        >>> _DIM = 128
+        >>> field_int64 = FieldSchema("int64", DataType.INT64, description="int64", is_primary=True)
+        >>> field_float_vector = FieldSchema("float_vector", DataType.FLOAT_VECTOR, description="float_vector", is_primary=False, dim=_DIM)
+        >>> schema = CollectionSchema(fields=[field_int64, field_float_vector], description="get collection entities num")
+        >>> collection = Collection(name="test_get_segment_info", schema=schema)
+        >>> import pandas as pd
+        >>> int64_series = pd.Series(data=list(range(10, 20)), index=list(range(10)))i
+        >>> float_vector_series = [[random.random() for _ in range _DIM] for _ in range (10)]
+        >>> data = pd.DataFrame({"int64" : int64_series, "float_vector": float_vector_series})
+        >>> collection.insert(data)
+        >>> collection.load() # load collection to memory
+        >>> res = utility.get_query_segment_info("test_get_segment_info")
     """
-    return _get_connection(using).get_query_segment_info()
+    return _get_connection(using).get_query_segment_info(collection_name, timeout=timeout)

From abb9764b7ac4cd71ed681603a0776c47668c20f1 Mon Sep 17 00:00:00 2001
From: xige-16 <xi.ge@zilliz.com>
Date: Wed, 27 Oct 2021 13:24:13 +0800
Subject: [PATCH 20/21] Retruen segment state when get query segment info
 (#786)

Signed-off-by: xige-16 <xi.ge@zilliz.com>
---
 grpc-proto/gen/milvus_pb2.py | 67 ++++++++++++++++++++++--------------
 grpc-proto/milvus.proto      |  2 ++
 2 files changed, 43 insertions(+), 26 deletions(-)

diff --git a/grpc-proto/gen/milvus_pb2.py b/grpc-proto/gen/milvus_pb2.py
index dc4e880c9..4e18290ca 100644
--- a/grpc-proto/gen/milvus_pb2.py
+++ b/grpc-proto/gen/milvus_pb2.py
@@ -22,7 +22,7 @@
   syntax='proto3',
   serialized_options=b'Z3github.com/milvus-io/milvus/internal/proto/milvuspb',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x0cmilvus.proto\x12\x13milvus.proto.milvus\x1a\x0c\x63ommon.proto\x1a\x0cschema.proto\"y\n\x12\x43reateAliasRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\r\n\x05\x61lias\x18\x04 \x01(\t\"^\n\x10\x44ropAliasRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\r\n\x05\x61lias\x18\x03 \x01(\t\"x\n\x11\x41lterAliasRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\r\n\x05\x61lias\x18\x04 \x01(\t\"\x93\x01\n\x17\x43reateCollectionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x0e\n\x06schema\x18\x04 \x01(\x0c\x12\x12\n\nshards_num\x18\x05 \x01(\x05\"m\n\x15\x44ropCollectionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\"\x80\x01\n\x14HasCollectionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x12\n\ntime_stamp\x18\x04 \x01(\x04\"J\n\x0c\x42oolResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\r\n\x05value\x18\x02 \x01(\x08\"L\n\x0eStringResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\r\n\x05value\x18\x02 \x01(\t\"\x9b\x01\n\x19\x44\x65scribeCollectionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x14\n\x0c\x63ollectionID\x18\x04 \x01(\x03\x12\x12\n\ntime_stamp\x18\x05 \x01(\x04\"\xef\x02\n\x1a\x44\x65scribeCollectionResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x35\n\x06schema\x18\x02 \x01(\x0b\x32%.milvus.proto.schema.CollectionSchema\x12\x14\n\x0c\x63ollectionID\x18\x03 \x01(\x03\x12\x1d\n\x15virtual_channel_names\x18\x04 \x03(\t\x12\x1e\n\x16physical_channel_names\x18\x05 \x03(\t\x12\x19\n\x11\x63reated_timestamp\x18\x06 \x01(\x04\x12\x1d\n\x15\x63reated_utc_timestamp\x18\x07 \x01(\x04\x12\x12\n\nshards_num\x18\x08 \x01(\x05\x12\x0f\n\x07\x61liases\x18\t \x03(\t\x12\x39\n\x0fstart_positions\x18\n \x03(\x0b\x32 .milvus.proto.common.KeyDataPair\"m\n\x15LoadCollectionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\"p\n\x18ReleaseCollectionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\"v\n\x1eGetCollectionStatisticsRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\"\x80\x01\n\x1fGetCollectionStatisticsResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x30\n\x05stats\x18\x02 \x03(\x0b\x32!.milvus.proto.common.KeyValuePair\"\xb0\x01\n\x16ShowCollectionsRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x12\n\ntime_stamp\x18\x03 \x01(\x04\x12+\n\x04type\x18\x04 \x01(\x0e\x32\x1d.milvus.proto.milvus.ShowType\x12\x18\n\x10\x63ollection_names\x18\x05 \x03(\t\"\xd2\x01\n\x17ShowCollectionsResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x18\n\x10\x63ollection_names\x18\x02 \x03(\t\x12\x16\n\x0e\x63ollection_ids\x18\x03 \x03(\x03\x12\x1a\n\x12\x63reated_timestamps\x18\x04 \x03(\x04\x12\x1e\n\x16\x63reated_utc_timestamps\x18\x05 \x03(\x04\x12\x1c\n\x14inMemory_percentages\x18\x06 \x03(\x03\"\x86\x01\n\x16\x43reatePartitionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x16\n\x0epartition_name\x18\x04 \x01(\t\"\x84\x01\n\x14\x44ropPartitionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x16\n\x0epartition_name\x18\x04 \x01(\t\"\x83\x01\n\x13HasPartitionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x16\n\x0epartition_name\x18\x04 \x01(\t\"\x86\x01\n\x15LoadPartitionsRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x17\n\x0fpartition_names\x18\x04 \x03(\t\"\x89\x01\n\x18ReleasePartitionsRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x17\n\x0fpartition_names\x18\x04 \x03(\t\"\x8d\x01\n\x1dGetPartitionStatisticsRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x16\n\x0epartition_name\x18\x04 \x01(\t\"\x7f\n\x1eGetPartitionStatisticsResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x30\n\x05stats\x18\x02 \x03(\x0b\x32!.milvus.proto.common.KeyValuePair\"\xc9\x01\n\x15ShowPartitionsRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x14\n\x0c\x63ollectionID\x18\x04 \x01(\x03\x12\x17\n\x0fpartition_names\x18\x05 \x03(\t\x12+\n\x04type\x18\x06 \x01(\x0e\x32\x1d.milvus.proto.milvus.ShowType\"\xce\x01\n\x16ShowPartitionsResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x17\n\x0fpartition_names\x18\x02 \x03(\t\x12\x14\n\x0cpartitionIDs\x18\x03 \x03(\x03\x12\x1a\n\x12\x63reated_timestamps\x18\x04 \x03(\x04\x12\x1e\n\x16\x63reated_utc_timestamps\x18\x05 \x03(\x04\x12\x1c\n\x14inMemory_percentages\x18\x06 \x03(\x03\"m\n\x16\x44\x65scribeSegmentRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x14\n\x0c\x63ollectionID\x18\x02 \x01(\x03\x12\x11\n\tsegmentID\x18\x03 \x01(\x03\"~\n\x17\x44\x65scribeSegmentResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x0f\n\x07indexID\x18\x02 \x01(\x03\x12\x0f\n\x07\x62uildID\x18\x03 \x01(\x03\x12\x14\n\x0c\x65nable_index\x18\x04 \x01(\x08\"l\n\x13ShowSegmentsRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x14\n\x0c\x63ollectionID\x18\x02 \x01(\x03\x12\x13\n\x0bpartitionID\x18\x03 \x01(\x03\"W\n\x14ShowSegmentsResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x12\n\nsegmentIDs\x18\x02 \x03(\x03\"\xb7\x01\n\x12\x43reateIndexRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x12\n\nfield_name\x18\x04 \x01(\t\x12\x37\n\x0c\x65xtra_params\x18\x05 \x03(\x0b\x32!.milvus.proto.common.KeyValuePair\"\x94\x01\n\x14\x44\x65scribeIndexRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x12\n\nfield_name\x18\x04 \x01(\t\x12\x12\n\nindex_name\x18\x05 \x01(\t\"~\n\x10IndexDescription\x12\x12\n\nindex_name\x18\x01 \x01(\t\x12\x0f\n\x07indexID\x18\x02 \x01(\x03\x12\x31\n\x06params\x18\x03 \x03(\x0b\x32!.milvus.proto.common.KeyValuePair\x12\x12\n\nfield_name\x18\x04 \x01(\t\"\x87\x01\n\x15\x44\x65scribeIndexResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x41\n\x12index_descriptions\x18\x02 \x03(\x0b\x32%.milvus.proto.milvus.IndexDescription\"\x9c\x01\n\x1cGetIndexBuildProgressRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x12\n\nfield_name\x18\x04 \x01(\t\x12\x12\n\nindex_name\x18\x05 \x01(\t\"v\n\x1dGetIndexBuildProgressResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x14\n\x0cindexed_rows\x18\x02 \x01(\x03\x12\x12\n\ntotal_rows\x18\x03 \x01(\x03\"\x94\x01\n\x14GetIndexStateRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x12\n\nfield_name\x18\x04 \x01(\t\x12\x12\n\nindex_name\x18\x05 \x01(\t\"\x89\x01\n\x15GetIndexStateResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12.\n\x05state\x18\x02 \x01(\x0e\x32\x1f.milvus.proto.common.IndexState\x12\x13\n\x0b\x66\x61il_reason\x18\x03 \x01(\t\"\x90\x01\n\x10\x44ropIndexRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x12\n\nfield_name\x18\x04 \x01(\t\x12\x12\n\nindex_name\x18\x05 \x01(\t\"\xd7\x01\n\rInsertRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x16\n\x0epartition_name\x18\x04 \x01(\t\x12\x33\n\x0b\x66ields_data\x18\x05 \x03(\x0b\x32\x1e.milvus.proto.schema.FieldData\x12\x11\n\thash_keys\x18\x06 \x03(\r\x12\x10\n\x08num_rows\x18\x07 \x01(\r\"\xf0\x01\n\x0eMutationResult\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12%\n\x03IDs\x18\x02 \x01(\x0b\x32\x18.milvus.proto.schema.IDs\x12\x12\n\nsucc_index\x18\x03 \x03(\r\x12\x11\n\terr_index\x18\x04 \x03(\r\x12\x14\n\x0c\x61\x63knowledged\x18\x05 \x01(\x08\x12\x12\n\ninsert_cnt\x18\x06 \x01(\x03\x12\x12\n\ndelete_cnt\x18\x07 \x01(\x03\x12\x12\n\nupsert_cnt\x18\x08 \x01(\x03\x12\x11\n\ttimestamp\x18\t \x01(\x04\"\x8b\x01\n\rDeleteRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x16\n\x0epartition_name\x18\x04 \x01(\t\x12\x0c\n\x04\x65xpr\x18\x05 \x01(\t\"c\n\x10PlaceholderValue\x12\x0b\n\x03tag\x18\x01 \x01(\t\x12\x32\n\x04type\x18\x02 \x01(\x0e\x32$.milvus.proto.milvus.PlaceholderType\x12\x0e\n\x06values\x18\x03 \x03(\x0c\"O\n\x10PlaceholderGroup\x12;\n\x0cplaceholders\x18\x01 \x03(\x0b\x32%.milvus.proto.milvus.PlaceholderValue\"\xde\x02\n\rSearchRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x17\n\x0fpartition_names\x18\x04 \x03(\t\x12\x0b\n\x03\x64sl\x18\x05 \x01(\t\x12\x19\n\x11placeholder_group\x18\x06 \x01(\x0c\x12.\n\x08\x64sl_type\x18\x07 \x01(\x0e\x32\x1c.milvus.proto.common.DslType\x12\x15\n\routput_fields\x18\x08 \x03(\t\x12\x38\n\rsearch_params\x18\t \x03(\x0b\x32!.milvus.proto.common.KeyValuePair\x12\x18\n\x10travel_timestamp\x18\n \x01(\x04\x12\x1b\n\x13guarantee_timestamp\x18\x0b \x01(\x04\"5\n\x04Hits\x12\x0b\n\x03IDs\x18\x01 \x03(\x03\x12\x10\n\x08row_data\x18\x02 \x03(\x0c\x12\x0e\n\x06scores\x18\x03 \x03(\x02\"t\n\rSearchResults\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x36\n\x07results\x18\x02 \x01(\x0b\x32%.milvus.proto.schema.SearchResultData\"e\n\x0c\x46lushRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x18\n\x10\x63ollection_names\x18\x03 \x03(\t\"\xe9\x01\n\rFlushResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12G\n\x0b\x63oll_segIDs\x18\x03 \x03(\x0b\x32\x32.milvus.proto.milvus.FlushResponse.CollSegIDsEntry\x1aQ\n\x0f\x43ollSegIDsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12-\n\x05value\x18\x02 \x01(\x0b\x32\x1e.milvus.proto.schema.LongArray:\x02\x38\x01\"\xd9\x01\n\x0cQueryRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x0c\n\x04\x65xpr\x18\x04 \x01(\t\x12\x15\n\routput_fields\x18\x05 \x03(\t\x12\x17\n\x0fpartition_names\x18\x06 \x03(\t\x12\x18\n\x10travel_timestamp\x18\x07 \x01(\x04\x12\x1b\n\x13guarantee_timestamp\x18\x08 \x01(\x04\"p\n\x0cQueryResults\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x33\n\x0b\x66ields_data\x18\x02 \x03(\x0b\x32\x1e.milvus.proto.schema.FieldData\"}\n\tVectorIDs\x12\x17\n\x0f\x63ollection_name\x18\x01 \x01(\t\x12\x12\n\nfield_name\x18\x02 \x01(\t\x12*\n\x08id_array\x18\x03 \x01(\x0b\x32\x18.milvus.proto.schema.IDs\x12\x17\n\x0fpartition_names\x18\x04 \x03(\t\"\x83\x01\n\x0cVectorsArray\x12\x32\n\x08id_array\x18\x01 \x01(\x0b\x32\x1e.milvus.proto.milvus.VectorIDsH\x00\x12\x36\n\ndata_array\x18\x02 \x01(\x0b\x32 .milvus.proto.schema.VectorFieldH\x00\x42\x07\n\x05\x61rray\"\xdd\x01\n\x13\x43\x61lcDistanceRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x32\n\x07op_left\x18\x02 \x01(\x0b\x32!.milvus.proto.milvus.VectorsArray\x12\x33\n\x08op_right\x18\x03 \x01(\x0b\x32!.milvus.proto.milvus.VectorsArray\x12\x31\n\x06params\x18\x04 \x03(\x0b\x32!.milvus.proto.common.KeyValuePair\"\xb5\x01\n\x13\x43\x61lcDistanceResults\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x31\n\x08int_dist\x18\x02 \x01(\x0b\x32\x1d.milvus.proto.schema.IntArrayH\x00\x12\x35\n\nfloat_dist\x18\x03 \x01(\x0b\x32\x1f.milvus.proto.schema.FloatArrayH\x00\x42\x07\n\x05\x61rray\"\x99\x01\n\x15PersistentSegmentInfo\x12\x11\n\tsegmentID\x18\x01 \x01(\x03\x12\x14\n\x0c\x63ollectionID\x18\x02 \x01(\x03\x12\x13\n\x0bpartitionID\x18\x03 \x01(\x03\x12\x10\n\x08num_rows\x18\x04 \x01(\x03\x12\x30\n\x05state\x18\x05 \x01(\x0e\x32!.milvus.proto.common.SegmentState\"u\n\x1fGetPersistentSegmentInfoRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0e\n\x06\x64\x62Name\x18\x02 \x01(\t\x12\x16\n\x0e\x63ollectionName\x18\x03 \x01(\t\"\x8a\x01\n GetPersistentSegmentInfoResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x39\n\x05infos\x18\x02 \x03(\x0b\x32*.milvus.proto.milvus.PersistentSegmentInfo\"\x99\x01\n\x10QuerySegmentInfo\x12\x11\n\tsegmentID\x18\x01 \x01(\x03\x12\x14\n\x0c\x63ollectionID\x18\x02 \x01(\x03\x12\x13\n\x0bpartitionID\x18\x03 \x01(\x03\x12\x10\n\x08mem_size\x18\x04 \x01(\x03\x12\x10\n\x08num_rows\x18\x05 \x01(\x03\x12\x12\n\nindex_name\x18\x06 \x01(\t\x12\x0f\n\x07indexID\x18\x07 \x01(\x03\"p\n\x1aGetQuerySegmentInfoRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0e\n\x06\x64\x62Name\x18\x02 \x01(\t\x12\x16\n\x0e\x63ollectionName\x18\x03 \x01(\t\"\x80\x01\n\x1bGetQuerySegmentInfoResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x34\n\x05infos\x18\x02 \x03(\x0b\x32%.milvus.proto.milvus.QuerySegmentInfo\"$\n\x0c\x44ummyRequest\x12\x14\n\x0crequest_type\x18\x01 \x01(\t\"!\n\rDummyResponse\x12\x10\n\x08response\x18\x01 \x01(\t\"\x15\n\x13RegisterLinkRequest\"r\n\x14RegisterLinkResponse\x12-\n\x07\x61\x64\x64ress\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.Address\x12+\n\x06status\x18\x02 \x01(\x0b\x32\x1b.milvus.proto.common.Status\"P\n\x11GetMetricsRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07request\x18\x02 \x01(\t\"k\n\x12GetMetricsResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x10\n\x08response\x18\x02 \x01(\t\x12\x16\n\x0e\x63omponent_name\x18\x03 \x01(\t*!\n\x08ShowType\x12\x07\n\x03\x41ll\x10\x00\x12\x0c\n\x08InMemory\x10\x01*>\n\x0fPlaceholderType\x12\x08\n\x04None\x10\x00\x12\x10\n\x0c\x42inaryVector\x10\x64\x12\x0f\n\x0b\x46loatVector\x10\x65\x32\xd5\x1a\n\rMilvusService\x12_\n\x10\x43reateCollection\x12,.milvus.proto.milvus.CreateCollectionRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12[\n\x0e\x44ropCollection\x12*.milvus.proto.milvus.DropCollectionRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12_\n\rHasCollection\x12).milvus.proto.milvus.HasCollectionRequest\x1a!.milvus.proto.milvus.BoolResponse\"\x00\x12[\n\x0eLoadCollection\x12*.milvus.proto.milvus.LoadCollectionRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12\x61\n\x11ReleaseCollection\x12-.milvus.proto.milvus.ReleaseCollectionRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12w\n\x12\x44\x65scribeCollection\x12..milvus.proto.milvus.DescribeCollectionRequest\x1a/.milvus.proto.milvus.DescribeCollectionResponse\"\x00\x12\x86\x01\n\x17GetCollectionStatistics\x12\x33.milvus.proto.milvus.GetCollectionStatisticsRequest\x1a\x34.milvus.proto.milvus.GetCollectionStatisticsResponse\"\x00\x12n\n\x0fShowCollections\x12+.milvus.proto.milvus.ShowCollectionsRequest\x1a,.milvus.proto.milvus.ShowCollectionsResponse\"\x00\x12]\n\x0f\x43reatePartition\x12+.milvus.proto.milvus.CreatePartitionRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12Y\n\rDropPartition\x12).milvus.proto.milvus.DropPartitionRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12]\n\x0cHasPartition\x12(.milvus.proto.milvus.HasPartitionRequest\x1a!.milvus.proto.milvus.BoolResponse\"\x00\x12[\n\x0eLoadPartitions\x12*.milvus.proto.milvus.LoadPartitionsRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12\x61\n\x11ReleasePartitions\x12-.milvus.proto.milvus.ReleasePartitionsRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12\x83\x01\n\x16GetPartitionStatistics\x12\x32.milvus.proto.milvus.GetPartitionStatisticsRequest\x1a\x33.milvus.proto.milvus.GetPartitionStatisticsResponse\"\x00\x12k\n\x0eShowPartitions\x12*.milvus.proto.milvus.ShowPartitionsRequest\x1a+.milvus.proto.milvus.ShowPartitionsResponse\"\x00\x12U\n\x0b\x43reateAlias\x12\'.milvus.proto.milvus.CreateAliasRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12Q\n\tDropAlias\x12%.milvus.proto.milvus.DropAliasRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12S\n\nAlterAlias\x12&.milvus.proto.milvus.AlterAliasRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12U\n\x0b\x43reateIndex\x12\'.milvus.proto.milvus.CreateIndexRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12h\n\rDescribeIndex\x12).milvus.proto.milvus.DescribeIndexRequest\x1a*.milvus.proto.milvus.DescribeIndexResponse\"\x00\x12h\n\rGetIndexState\x12).milvus.proto.milvus.GetIndexStateRequest\x1a*.milvus.proto.milvus.GetIndexStateResponse\"\x00\x12\x80\x01\n\x15GetIndexBuildProgress\x12\x31.milvus.proto.milvus.GetIndexBuildProgressRequest\x1a\x32.milvus.proto.milvus.GetIndexBuildProgressResponse\"\x00\x12Q\n\tDropIndex\x12%.milvus.proto.milvus.DropIndexRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12S\n\x06Insert\x12\".milvus.proto.milvus.InsertRequest\x1a#.milvus.proto.milvus.MutationResult\"\x00\x12S\n\x06\x44\x65lete\x12\".milvus.proto.milvus.DeleteRequest\x1a#.milvus.proto.milvus.MutationResult\"\x00\x12R\n\x06Search\x12\".milvus.proto.milvus.SearchRequest\x1a\".milvus.proto.milvus.SearchResults\"\x00\x12P\n\x05\x46lush\x12!.milvus.proto.milvus.FlushRequest\x1a\".milvus.proto.milvus.FlushResponse\"\x00\x12O\n\x05Query\x12!.milvus.proto.milvus.QueryRequest\x1a!.milvus.proto.milvus.QueryResults\"\x00\x12\x64\n\x0c\x43\x61lcDistance\x12(.milvus.proto.milvus.CalcDistanceRequest\x1a(.milvus.proto.milvus.CalcDistanceResults\"\x00\x12\x89\x01\n\x18GetPersistentSegmentInfo\x12\x34.milvus.proto.milvus.GetPersistentSegmentInfoRequest\x1a\x35.milvus.proto.milvus.GetPersistentSegmentInfoResponse\"\x00\x12z\n\x13GetQuerySegmentInfo\x12/.milvus.proto.milvus.GetQuerySegmentInfoRequest\x1a\x30.milvus.proto.milvus.GetQuerySegmentInfoResponse\"\x00\x12P\n\x05\x44ummy\x12!.milvus.proto.milvus.DummyRequest\x1a\".milvus.proto.milvus.DummyResponse\"\x00\x12\x65\n\x0cRegisterLink\x12(.milvus.proto.milvus.RegisterLinkRequest\x1a).milvus.proto.milvus.RegisterLinkResponse\"\x00\x12_\n\nGetMetrics\x12&.milvus.proto.milvus.GetMetricsRequest\x1a\'.milvus.proto.milvus.GetMetricsResponse\"\x00\x32u\n\x0cProxyService\x12\x65\n\x0cRegisterLink\x12(.milvus.proto.milvus.RegisterLinkRequest\x1a).milvus.proto.milvus.RegisterLinkResponse\"\x00\x42\x35Z3github.com/milvus-io/milvus/internal/proto/milvuspbb\x06proto3'
+  serialized_pb=b'\n\x0cmilvus.proto\x12\x13milvus.proto.milvus\x1a\x0c\x63ommon.proto\x1a\x0cschema.proto\"y\n\x12\x43reateAliasRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\r\n\x05\x61lias\x18\x04 \x01(\t\"^\n\x10\x44ropAliasRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\r\n\x05\x61lias\x18\x03 \x01(\t\"x\n\x11\x41lterAliasRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\r\n\x05\x61lias\x18\x04 \x01(\t\"\x93\x01\n\x17\x43reateCollectionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x0e\n\x06schema\x18\x04 \x01(\x0c\x12\x12\n\nshards_num\x18\x05 \x01(\x05\"m\n\x15\x44ropCollectionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\"\x80\x01\n\x14HasCollectionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x12\n\ntime_stamp\x18\x04 \x01(\x04\"J\n\x0c\x42oolResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\r\n\x05value\x18\x02 \x01(\x08\"L\n\x0eStringResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\r\n\x05value\x18\x02 \x01(\t\"\x9b\x01\n\x19\x44\x65scribeCollectionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x14\n\x0c\x63ollectionID\x18\x04 \x01(\x03\x12\x12\n\ntime_stamp\x18\x05 \x01(\x04\"\xef\x02\n\x1a\x44\x65scribeCollectionResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x35\n\x06schema\x18\x02 \x01(\x0b\x32%.milvus.proto.schema.CollectionSchema\x12\x14\n\x0c\x63ollectionID\x18\x03 \x01(\x03\x12\x1d\n\x15virtual_channel_names\x18\x04 \x03(\t\x12\x1e\n\x16physical_channel_names\x18\x05 \x03(\t\x12\x19\n\x11\x63reated_timestamp\x18\x06 \x01(\x04\x12\x1d\n\x15\x63reated_utc_timestamp\x18\x07 \x01(\x04\x12\x12\n\nshards_num\x18\x08 \x01(\x05\x12\x0f\n\x07\x61liases\x18\t \x03(\t\x12\x39\n\x0fstart_positions\x18\n \x03(\x0b\x32 .milvus.proto.common.KeyDataPair\"m\n\x15LoadCollectionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\"p\n\x18ReleaseCollectionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\"v\n\x1eGetCollectionStatisticsRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\"\x80\x01\n\x1fGetCollectionStatisticsResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x30\n\x05stats\x18\x02 \x03(\x0b\x32!.milvus.proto.common.KeyValuePair\"\xb0\x01\n\x16ShowCollectionsRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x12\n\ntime_stamp\x18\x03 \x01(\x04\x12+\n\x04type\x18\x04 \x01(\x0e\x32\x1d.milvus.proto.milvus.ShowType\x12\x18\n\x10\x63ollection_names\x18\x05 \x03(\t\"\xd2\x01\n\x17ShowCollectionsResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x18\n\x10\x63ollection_names\x18\x02 \x03(\t\x12\x16\n\x0e\x63ollection_ids\x18\x03 \x03(\x03\x12\x1a\n\x12\x63reated_timestamps\x18\x04 \x03(\x04\x12\x1e\n\x16\x63reated_utc_timestamps\x18\x05 \x03(\x04\x12\x1c\n\x14inMemory_percentages\x18\x06 \x03(\x03\"\x86\x01\n\x16\x43reatePartitionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x16\n\x0epartition_name\x18\x04 \x01(\t\"\x84\x01\n\x14\x44ropPartitionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x16\n\x0epartition_name\x18\x04 \x01(\t\"\x83\x01\n\x13HasPartitionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x16\n\x0epartition_name\x18\x04 \x01(\t\"\x86\x01\n\x15LoadPartitionsRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x17\n\x0fpartition_names\x18\x04 \x03(\t\"\x89\x01\n\x18ReleasePartitionsRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x17\n\x0fpartition_names\x18\x04 \x03(\t\"\x8d\x01\n\x1dGetPartitionStatisticsRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x16\n\x0epartition_name\x18\x04 \x01(\t\"\x7f\n\x1eGetPartitionStatisticsResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x30\n\x05stats\x18\x02 \x03(\x0b\x32!.milvus.proto.common.KeyValuePair\"\xc9\x01\n\x15ShowPartitionsRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x14\n\x0c\x63ollectionID\x18\x04 \x01(\x03\x12\x17\n\x0fpartition_names\x18\x05 \x03(\t\x12+\n\x04type\x18\x06 \x01(\x0e\x32\x1d.milvus.proto.milvus.ShowType\"\xce\x01\n\x16ShowPartitionsResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x17\n\x0fpartition_names\x18\x02 \x03(\t\x12\x14\n\x0cpartitionIDs\x18\x03 \x03(\x03\x12\x1a\n\x12\x63reated_timestamps\x18\x04 \x03(\x04\x12\x1e\n\x16\x63reated_utc_timestamps\x18\x05 \x03(\x04\x12\x1c\n\x14inMemory_percentages\x18\x06 \x03(\x03\"m\n\x16\x44\x65scribeSegmentRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x14\n\x0c\x63ollectionID\x18\x02 \x01(\x03\x12\x11\n\tsegmentID\x18\x03 \x01(\x03\"~\n\x17\x44\x65scribeSegmentResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x0f\n\x07indexID\x18\x02 \x01(\x03\x12\x0f\n\x07\x62uildID\x18\x03 \x01(\x03\x12\x14\n\x0c\x65nable_index\x18\x04 \x01(\x08\"l\n\x13ShowSegmentsRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x14\n\x0c\x63ollectionID\x18\x02 \x01(\x03\x12\x13\n\x0bpartitionID\x18\x03 \x01(\x03\"W\n\x14ShowSegmentsResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x12\n\nsegmentIDs\x18\x02 \x03(\x03\"\xb7\x01\n\x12\x43reateIndexRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x12\n\nfield_name\x18\x04 \x01(\t\x12\x37\n\x0c\x65xtra_params\x18\x05 \x03(\x0b\x32!.milvus.proto.common.KeyValuePair\"\x94\x01\n\x14\x44\x65scribeIndexRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x12\n\nfield_name\x18\x04 \x01(\t\x12\x12\n\nindex_name\x18\x05 \x01(\t\"~\n\x10IndexDescription\x12\x12\n\nindex_name\x18\x01 \x01(\t\x12\x0f\n\x07indexID\x18\x02 \x01(\x03\x12\x31\n\x06params\x18\x03 \x03(\x0b\x32!.milvus.proto.common.KeyValuePair\x12\x12\n\nfield_name\x18\x04 \x01(\t\"\x87\x01\n\x15\x44\x65scribeIndexResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x41\n\x12index_descriptions\x18\x02 \x03(\x0b\x32%.milvus.proto.milvus.IndexDescription\"\x9c\x01\n\x1cGetIndexBuildProgressRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x12\n\nfield_name\x18\x04 \x01(\t\x12\x12\n\nindex_name\x18\x05 \x01(\t\"v\n\x1dGetIndexBuildProgressResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x14\n\x0cindexed_rows\x18\x02 \x01(\x03\x12\x12\n\ntotal_rows\x18\x03 \x01(\x03\"\x94\x01\n\x14GetIndexStateRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x12\n\nfield_name\x18\x04 \x01(\t\x12\x12\n\nindex_name\x18\x05 \x01(\t\"\x89\x01\n\x15GetIndexStateResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12.\n\x05state\x18\x02 \x01(\x0e\x32\x1f.milvus.proto.common.IndexState\x12\x13\n\x0b\x66\x61il_reason\x18\x03 \x01(\t\"\x90\x01\n\x10\x44ropIndexRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x12\n\nfield_name\x18\x04 \x01(\t\x12\x12\n\nindex_name\x18\x05 \x01(\t\"\xd7\x01\n\rInsertRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x16\n\x0epartition_name\x18\x04 \x01(\t\x12\x33\n\x0b\x66ields_data\x18\x05 \x03(\x0b\x32\x1e.milvus.proto.schema.FieldData\x12\x11\n\thash_keys\x18\x06 \x03(\r\x12\x10\n\x08num_rows\x18\x07 \x01(\r\"\xf0\x01\n\x0eMutationResult\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12%\n\x03IDs\x18\x02 \x01(\x0b\x32\x18.milvus.proto.schema.IDs\x12\x12\n\nsucc_index\x18\x03 \x03(\r\x12\x11\n\terr_index\x18\x04 \x03(\r\x12\x14\n\x0c\x61\x63knowledged\x18\x05 \x01(\x08\x12\x12\n\ninsert_cnt\x18\x06 \x01(\x03\x12\x12\n\ndelete_cnt\x18\x07 \x01(\x03\x12\x12\n\nupsert_cnt\x18\x08 \x01(\x03\x12\x11\n\ttimestamp\x18\t \x01(\x04\"\x8b\x01\n\rDeleteRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x16\n\x0epartition_name\x18\x04 \x01(\t\x12\x0c\n\x04\x65xpr\x18\x05 \x01(\t\"c\n\x10PlaceholderValue\x12\x0b\n\x03tag\x18\x01 \x01(\t\x12\x32\n\x04type\x18\x02 \x01(\x0e\x32$.milvus.proto.milvus.PlaceholderType\x12\x0e\n\x06values\x18\x03 \x03(\x0c\"O\n\x10PlaceholderGroup\x12;\n\x0cplaceholders\x18\x01 \x03(\x0b\x32%.milvus.proto.milvus.PlaceholderValue\"\xde\x02\n\rSearchRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x17\n\x0fpartition_names\x18\x04 \x03(\t\x12\x0b\n\x03\x64sl\x18\x05 \x01(\t\x12\x19\n\x11placeholder_group\x18\x06 \x01(\x0c\x12.\n\x08\x64sl_type\x18\x07 \x01(\x0e\x32\x1c.milvus.proto.common.DslType\x12\x15\n\routput_fields\x18\x08 \x03(\t\x12\x38\n\rsearch_params\x18\t \x03(\x0b\x32!.milvus.proto.common.KeyValuePair\x12\x18\n\x10travel_timestamp\x18\n \x01(\x04\x12\x1b\n\x13guarantee_timestamp\x18\x0b \x01(\x04\"5\n\x04Hits\x12\x0b\n\x03IDs\x18\x01 \x03(\x03\x12\x10\n\x08row_data\x18\x02 \x03(\x0c\x12\x0e\n\x06scores\x18\x03 \x03(\x02\"t\n\rSearchResults\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x36\n\x07results\x18\x02 \x01(\x0b\x32%.milvus.proto.schema.SearchResultData\"e\n\x0c\x46lushRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x18\n\x10\x63ollection_names\x18\x03 \x03(\t\"\xe9\x01\n\rFlushResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12G\n\x0b\x63oll_segIDs\x18\x03 \x03(\x0b\x32\x32.milvus.proto.milvus.FlushResponse.CollSegIDsEntry\x1aQ\n\x0f\x43ollSegIDsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12-\n\x05value\x18\x02 \x01(\x0b\x32\x1e.milvus.proto.schema.LongArray:\x02\x38\x01\"\xd9\x01\n\x0cQueryRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x0c\n\x04\x65xpr\x18\x04 \x01(\t\x12\x15\n\routput_fields\x18\x05 \x03(\t\x12\x17\n\x0fpartition_names\x18\x06 \x03(\t\x12\x18\n\x10travel_timestamp\x18\x07 \x01(\x04\x12\x1b\n\x13guarantee_timestamp\x18\x08 \x01(\x04\"p\n\x0cQueryResults\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x33\n\x0b\x66ields_data\x18\x02 \x03(\x0b\x32\x1e.milvus.proto.schema.FieldData\"}\n\tVectorIDs\x12\x17\n\x0f\x63ollection_name\x18\x01 \x01(\t\x12\x12\n\nfield_name\x18\x02 \x01(\t\x12*\n\x08id_array\x18\x03 \x01(\x0b\x32\x18.milvus.proto.schema.IDs\x12\x17\n\x0fpartition_names\x18\x04 \x03(\t\"\x83\x01\n\x0cVectorsArray\x12\x32\n\x08id_array\x18\x01 \x01(\x0b\x32\x1e.milvus.proto.milvus.VectorIDsH\x00\x12\x36\n\ndata_array\x18\x02 \x01(\x0b\x32 .milvus.proto.schema.VectorFieldH\x00\x42\x07\n\x05\x61rray\"\xdd\x01\n\x13\x43\x61lcDistanceRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x32\n\x07op_left\x18\x02 \x01(\x0b\x32!.milvus.proto.milvus.VectorsArray\x12\x33\n\x08op_right\x18\x03 \x01(\x0b\x32!.milvus.proto.milvus.VectorsArray\x12\x31\n\x06params\x18\x04 \x03(\x0b\x32!.milvus.proto.common.KeyValuePair\"\xb5\x01\n\x13\x43\x61lcDistanceResults\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x31\n\x08int_dist\x18\x02 \x01(\x0b\x32\x1d.milvus.proto.schema.IntArrayH\x00\x12\x35\n\nfloat_dist\x18\x03 \x01(\x0b\x32\x1f.milvus.proto.schema.FloatArrayH\x00\x42\x07\n\x05\x61rray\"\x99\x01\n\x15PersistentSegmentInfo\x12\x11\n\tsegmentID\x18\x01 \x01(\x03\x12\x14\n\x0c\x63ollectionID\x18\x02 \x01(\x03\x12\x13\n\x0bpartitionID\x18\x03 \x01(\x03\x12\x10\n\x08num_rows\x18\x04 \x01(\x03\x12\x30\n\x05state\x18\x05 \x01(\x0e\x32!.milvus.proto.common.SegmentState\"u\n\x1fGetPersistentSegmentInfoRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0e\n\x06\x64\x62Name\x18\x02 \x01(\t\x12\x16\n\x0e\x63ollectionName\x18\x03 \x01(\t\"\x8a\x01\n GetPersistentSegmentInfoResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x39\n\x05infos\x18\x02 \x03(\x0b\x32*.milvus.proto.milvus.PersistentSegmentInfo\"\xdb\x01\n\x10QuerySegmentInfo\x12\x11\n\tsegmentID\x18\x01 \x01(\x03\x12\x14\n\x0c\x63ollectionID\x18\x02 \x01(\x03\x12\x13\n\x0bpartitionID\x18\x03 \x01(\x03\x12\x10\n\x08mem_size\x18\x04 \x01(\x03\x12\x10\n\x08num_rows\x18\x05 \x01(\x03\x12\x12\n\nindex_name\x18\x06 \x01(\t\x12\x0f\n\x07indexID\x18\x07 \x01(\x03\x12\x0e\n\x06nodeID\x18\x08 \x01(\x03\x12\x30\n\x05state\x18\t \x01(\x0e\x32!.milvus.proto.common.SegmentState\"p\n\x1aGetQuerySegmentInfoRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0e\n\x06\x64\x62Name\x18\x02 \x01(\t\x12\x16\n\x0e\x63ollectionName\x18\x03 \x01(\t\"\x80\x01\n\x1bGetQuerySegmentInfoResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x34\n\x05infos\x18\x02 \x03(\x0b\x32%.milvus.proto.milvus.QuerySegmentInfo\"$\n\x0c\x44ummyRequest\x12\x14\n\x0crequest_type\x18\x01 \x01(\t\"!\n\rDummyResponse\x12\x10\n\x08response\x18\x01 \x01(\t\"\x15\n\x13RegisterLinkRequest\"r\n\x14RegisterLinkResponse\x12-\n\x07\x61\x64\x64ress\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.Address\x12+\n\x06status\x18\x02 \x01(\x0b\x32\x1b.milvus.proto.common.Status\"P\n\x11GetMetricsRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07request\x18\x02 \x01(\t\"k\n\x12GetMetricsResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x10\n\x08response\x18\x02 \x01(\t\x12\x16\n\x0e\x63omponent_name\x18\x03 \x01(\t*!\n\x08ShowType\x12\x07\n\x03\x41ll\x10\x00\x12\x0c\n\x08InMemory\x10\x01*>\n\x0fPlaceholderType\x12\x08\n\x04None\x10\x00\x12\x10\n\x0c\x42inaryVector\x10\x64\x12\x0f\n\x0b\x46loatVector\x10\x65\x32\xd5\x1a\n\rMilvusService\x12_\n\x10\x43reateCollection\x12,.milvus.proto.milvus.CreateCollectionRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12[\n\x0e\x44ropCollection\x12*.milvus.proto.milvus.DropCollectionRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12_\n\rHasCollection\x12).milvus.proto.milvus.HasCollectionRequest\x1a!.milvus.proto.milvus.BoolResponse\"\x00\x12[\n\x0eLoadCollection\x12*.milvus.proto.milvus.LoadCollectionRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12\x61\n\x11ReleaseCollection\x12-.milvus.proto.milvus.ReleaseCollectionRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12w\n\x12\x44\x65scribeCollection\x12..milvus.proto.milvus.DescribeCollectionRequest\x1a/.milvus.proto.milvus.DescribeCollectionResponse\"\x00\x12\x86\x01\n\x17GetCollectionStatistics\x12\x33.milvus.proto.milvus.GetCollectionStatisticsRequest\x1a\x34.milvus.proto.milvus.GetCollectionStatisticsResponse\"\x00\x12n\n\x0fShowCollections\x12+.milvus.proto.milvus.ShowCollectionsRequest\x1a,.milvus.proto.milvus.ShowCollectionsResponse\"\x00\x12]\n\x0f\x43reatePartition\x12+.milvus.proto.milvus.CreatePartitionRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12Y\n\rDropPartition\x12).milvus.proto.milvus.DropPartitionRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12]\n\x0cHasPartition\x12(.milvus.proto.milvus.HasPartitionRequest\x1a!.milvus.proto.milvus.BoolResponse\"\x00\x12[\n\x0eLoadPartitions\x12*.milvus.proto.milvus.LoadPartitionsRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12\x61\n\x11ReleasePartitions\x12-.milvus.proto.milvus.ReleasePartitionsRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12\x83\x01\n\x16GetPartitionStatistics\x12\x32.milvus.proto.milvus.GetPartitionStatisticsRequest\x1a\x33.milvus.proto.milvus.GetPartitionStatisticsResponse\"\x00\x12k\n\x0eShowPartitions\x12*.milvus.proto.milvus.ShowPartitionsRequest\x1a+.milvus.proto.milvus.ShowPartitionsResponse\"\x00\x12U\n\x0b\x43reateAlias\x12\'.milvus.proto.milvus.CreateAliasRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12Q\n\tDropAlias\x12%.milvus.proto.milvus.DropAliasRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12S\n\nAlterAlias\x12&.milvus.proto.milvus.AlterAliasRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12U\n\x0b\x43reateIndex\x12\'.milvus.proto.milvus.CreateIndexRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12h\n\rDescribeIndex\x12).milvus.proto.milvus.DescribeIndexRequest\x1a*.milvus.proto.milvus.DescribeIndexResponse\"\x00\x12h\n\rGetIndexState\x12).milvus.proto.milvus.GetIndexStateRequest\x1a*.milvus.proto.milvus.GetIndexStateResponse\"\x00\x12\x80\x01\n\x15GetIndexBuildProgress\x12\x31.milvus.proto.milvus.GetIndexBuildProgressRequest\x1a\x32.milvus.proto.milvus.GetIndexBuildProgressResponse\"\x00\x12Q\n\tDropIndex\x12%.milvus.proto.milvus.DropIndexRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12S\n\x06Insert\x12\".milvus.proto.milvus.InsertRequest\x1a#.milvus.proto.milvus.MutationResult\"\x00\x12S\n\x06\x44\x65lete\x12\".milvus.proto.milvus.DeleteRequest\x1a#.milvus.proto.milvus.MutationResult\"\x00\x12R\n\x06Search\x12\".milvus.proto.milvus.SearchRequest\x1a\".milvus.proto.milvus.SearchResults\"\x00\x12P\n\x05\x46lush\x12!.milvus.proto.milvus.FlushRequest\x1a\".milvus.proto.milvus.FlushResponse\"\x00\x12O\n\x05Query\x12!.milvus.proto.milvus.QueryRequest\x1a!.milvus.proto.milvus.QueryResults\"\x00\x12\x64\n\x0c\x43\x61lcDistance\x12(.milvus.proto.milvus.CalcDistanceRequest\x1a(.milvus.proto.milvus.CalcDistanceResults\"\x00\x12\x89\x01\n\x18GetPersistentSegmentInfo\x12\x34.milvus.proto.milvus.GetPersistentSegmentInfoRequest\x1a\x35.milvus.proto.milvus.GetPersistentSegmentInfoResponse\"\x00\x12z\n\x13GetQuerySegmentInfo\x12/.milvus.proto.milvus.GetQuerySegmentInfoRequest\x1a\x30.milvus.proto.milvus.GetQuerySegmentInfoResponse\"\x00\x12P\n\x05\x44ummy\x12!.milvus.proto.milvus.DummyRequest\x1a\".milvus.proto.milvus.DummyResponse\"\x00\x12\x65\n\x0cRegisterLink\x12(.milvus.proto.milvus.RegisterLinkRequest\x1a).milvus.proto.milvus.RegisterLinkResponse\"\x00\x12_\n\nGetMetrics\x12&.milvus.proto.milvus.GetMetricsRequest\x1a\'.milvus.proto.milvus.GetMetricsResponse\"\x00\x32u\n\x0cProxyService\x12\x65\n\x0cRegisterLink\x12(.milvus.proto.milvus.RegisterLinkRequest\x1a).milvus.proto.milvus.RegisterLinkResponse\"\x00\x42\x35Z3github.com/milvus-io/milvus/internal/proto/milvuspbb\x06proto3'
   ,
   dependencies=[common__pb2.DESCRIPTOR,schema__pb2.DESCRIPTOR,])
 
@@ -46,8 +46,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=9348,
-  serialized_end=9381,
+  serialized_start=9414,
+  serialized_end=9447,
 )
 _sym_db.RegisterEnumDescriptor(_SHOWTYPE)
 
@@ -77,8 +77,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=9383,
-  serialized_end=9445,
+  serialized_start=9449,
+  serialized_end=9511,
 )
 _sym_db.RegisterEnumDescriptor(_PLACEHOLDERTYPE)
 
@@ -3238,6 +3238,20 @@
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='nodeID', full_name='milvus.proto.milvus.QuerySegmentInfo.nodeID', index=7,
+      number=8, type=3, cpp_type=2, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='state', full_name='milvus.proto.milvus.QuerySegmentInfo.state', index=8,
+      number=9, type=14, cpp_type=8, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
@@ -3251,7 +3265,7 @@
   oneofs=[
   ],
   serialized_start=8545,
-  serialized_end=8698,
+  serialized_end=8764,
 )
 
 
@@ -3296,8 +3310,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=8700,
-  serialized_end=8812,
+  serialized_start=8766,
+  serialized_end=8878,
 )
 
 
@@ -3335,8 +3349,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=8815,
-  serialized_end=8943,
+  serialized_start=8881,
+  serialized_end=9009,
 )
 
 
@@ -3367,8 +3381,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=8945,
-  serialized_end=8981,
+  serialized_start=9011,
+  serialized_end=9047,
 )
 
 
@@ -3399,8 +3413,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=8983,
-  serialized_end=9016,
+  serialized_start=9049,
+  serialized_end=9082,
 )
 
 
@@ -3424,8 +3438,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9018,
-  serialized_end=9039,
+  serialized_start=9084,
+  serialized_end=9105,
 )
 
 
@@ -3463,8 +3477,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9041,
-  serialized_end=9155,
+  serialized_start=9107,
+  serialized_end=9221,
 )
 
 
@@ -3502,8 +3516,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9157,
-  serialized_end=9237,
+  serialized_start=9223,
+  serialized_end=9303,
 )
 
 
@@ -3548,8 +3562,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9239,
-  serialized_end=9346,
+  serialized_start=9305,
+  serialized_end=9412,
 )
 
 _CREATEALIASREQUEST.fields_by_name['base'].message_type = common__pb2._MSGBASE
@@ -3645,6 +3659,7 @@
 _GETPERSISTENTSEGMENTINFOREQUEST.fields_by_name['base'].message_type = common__pb2._MSGBASE
 _GETPERSISTENTSEGMENTINFORESPONSE.fields_by_name['status'].message_type = common__pb2._STATUS
 _GETPERSISTENTSEGMENTINFORESPONSE.fields_by_name['infos'].message_type = _PERSISTENTSEGMENTINFO
+_QUERYSEGMENTINFO.fields_by_name['state'].enum_type = common__pb2._SEGMENTSTATE
 _GETQUERYSEGMENTINFOREQUEST.fields_by_name['base'].message_type = common__pb2._MSGBASE
 _GETQUERYSEGMENTINFORESPONSE.fields_by_name['status'].message_type = common__pb2._STATUS
 _GETQUERYSEGMENTINFORESPONSE.fields_by_name['infos'].message_type = _QUERYSEGMENTINFO
@@ -4203,8 +4218,8 @@
   index=0,
   serialized_options=None,
   create_key=_descriptor._internal_create_key,
-  serialized_start=9448,
-  serialized_end=12861,
+  serialized_start=9514,
+  serialized_end=12927,
   methods=[
   _descriptor.MethodDescriptor(
     name='CreateCollection',
@@ -4559,8 +4574,8 @@
   index=1,
   serialized_options=None,
   create_key=_descriptor._internal_create_key,
-  serialized_start=12863,
-  serialized_end=12980,
+  serialized_start=12929,
+  serialized_end=13046,
   methods=[
   _descriptor.MethodDescriptor(
     name='RegisterLink',
diff --git a/grpc-proto/milvus.proto b/grpc-proto/milvus.proto
index a6c328007..d5b507782 100644
--- a/grpc-proto/milvus.proto
+++ b/grpc-proto/milvus.proto
@@ -607,6 +607,8 @@ message QuerySegmentInfo {
   int64 num_rows = 5;
   string index_name = 6;
   int64 indexID = 7;
+  int64 nodeID = 8;
+  common.SegmentState state = 9;
 }
 
 message GetQuerySegmentInfoRequest {

From 82ca6c54a23d369c0f590314a83aebee8959d9c8 Mon Sep 17 00:00:00 2001
From: xige-16 <xi.ge@zilliz.com>
Date: Wed, 27 Oct 2021 14:42:16 +0800
Subject: [PATCH 21/21] Update milvus_pb2.py after update milvus.proto (#787)

Signed-off-by: xige-16 <xi.ge@zilliz.com>
---
 pymilvus/grpc_gen/milvus_pb2.py | 67 ++++++++++++++++++++-------------
 1 file changed, 41 insertions(+), 26 deletions(-)

diff --git a/pymilvus/grpc_gen/milvus_pb2.py b/pymilvus/grpc_gen/milvus_pb2.py
index d6ab858f7..c44a303d6 100644
--- a/pymilvus/grpc_gen/milvus_pb2.py
+++ b/pymilvus/grpc_gen/milvus_pb2.py
@@ -22,7 +22,7 @@
   syntax='proto3',
   serialized_options=b'Z3github.com/milvus-io/milvus/internal/proto/milvuspb',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x0cmilvus.proto\x12\x13milvus.proto.milvus\x1a\x0c\x63ommon.proto\x1a\x0cschema.proto\"y\n\x12\x43reateAliasRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\r\n\x05\x61lias\x18\x04 \x01(\t\"^\n\x10\x44ropAliasRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\r\n\x05\x61lias\x18\x03 \x01(\t\"x\n\x11\x41lterAliasRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\r\n\x05\x61lias\x18\x04 \x01(\t\"\x93\x01\n\x17\x43reateCollectionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x0e\n\x06schema\x18\x04 \x01(\x0c\x12\x12\n\nshards_num\x18\x05 \x01(\x05\"m\n\x15\x44ropCollectionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\"\x80\x01\n\x14HasCollectionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x12\n\ntime_stamp\x18\x04 \x01(\x04\"J\n\x0c\x42oolResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\r\n\x05value\x18\x02 \x01(\x08\"L\n\x0eStringResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\r\n\x05value\x18\x02 \x01(\t\"\x9b\x01\n\x19\x44\x65scribeCollectionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x14\n\x0c\x63ollectionID\x18\x04 \x01(\x03\x12\x12\n\ntime_stamp\x18\x05 \x01(\x04\"\xef\x02\n\x1a\x44\x65scribeCollectionResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x35\n\x06schema\x18\x02 \x01(\x0b\x32%.milvus.proto.schema.CollectionSchema\x12\x14\n\x0c\x63ollectionID\x18\x03 \x01(\x03\x12\x1d\n\x15virtual_channel_names\x18\x04 \x03(\t\x12\x1e\n\x16physical_channel_names\x18\x05 \x03(\t\x12\x19\n\x11\x63reated_timestamp\x18\x06 \x01(\x04\x12\x1d\n\x15\x63reated_utc_timestamp\x18\x07 \x01(\x04\x12\x12\n\nshards_num\x18\x08 \x01(\x05\x12\x0f\n\x07\x61liases\x18\t \x03(\t\x12\x39\n\x0fstart_positions\x18\n \x03(\x0b\x32 .milvus.proto.common.KeyDataPair\"m\n\x15LoadCollectionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\"p\n\x18ReleaseCollectionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\"v\n\x1eGetCollectionStatisticsRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\"\x80\x01\n\x1fGetCollectionStatisticsResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x30\n\x05stats\x18\x02 \x03(\x0b\x32!.milvus.proto.common.KeyValuePair\"\xb0\x01\n\x16ShowCollectionsRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x12\n\ntime_stamp\x18\x03 \x01(\x04\x12+\n\x04type\x18\x04 \x01(\x0e\x32\x1d.milvus.proto.milvus.ShowType\x12\x18\n\x10\x63ollection_names\x18\x05 \x03(\t\"\xd2\x01\n\x17ShowCollectionsResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x18\n\x10\x63ollection_names\x18\x02 \x03(\t\x12\x16\n\x0e\x63ollection_ids\x18\x03 \x03(\x03\x12\x1a\n\x12\x63reated_timestamps\x18\x04 \x03(\x04\x12\x1e\n\x16\x63reated_utc_timestamps\x18\x05 \x03(\x04\x12\x1c\n\x14inMemory_percentages\x18\x06 \x03(\x03\"\x86\x01\n\x16\x43reatePartitionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x16\n\x0epartition_name\x18\x04 \x01(\t\"\x84\x01\n\x14\x44ropPartitionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x16\n\x0epartition_name\x18\x04 \x01(\t\"\x83\x01\n\x13HasPartitionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x16\n\x0epartition_name\x18\x04 \x01(\t\"\x86\x01\n\x15LoadPartitionsRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x17\n\x0fpartition_names\x18\x04 \x03(\t\"\x89\x01\n\x18ReleasePartitionsRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x17\n\x0fpartition_names\x18\x04 \x03(\t\"\x8d\x01\n\x1dGetPartitionStatisticsRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x16\n\x0epartition_name\x18\x04 \x01(\t\"\x7f\n\x1eGetPartitionStatisticsResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x30\n\x05stats\x18\x02 \x03(\x0b\x32!.milvus.proto.common.KeyValuePair\"\xc9\x01\n\x15ShowPartitionsRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x14\n\x0c\x63ollectionID\x18\x04 \x01(\x03\x12\x17\n\x0fpartition_names\x18\x05 \x03(\t\x12+\n\x04type\x18\x06 \x01(\x0e\x32\x1d.milvus.proto.milvus.ShowType\"\xce\x01\n\x16ShowPartitionsResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x17\n\x0fpartition_names\x18\x02 \x03(\t\x12\x14\n\x0cpartitionIDs\x18\x03 \x03(\x03\x12\x1a\n\x12\x63reated_timestamps\x18\x04 \x03(\x04\x12\x1e\n\x16\x63reated_utc_timestamps\x18\x05 \x03(\x04\x12\x1c\n\x14inMemory_percentages\x18\x06 \x03(\x03\"m\n\x16\x44\x65scribeSegmentRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x14\n\x0c\x63ollectionID\x18\x02 \x01(\x03\x12\x11\n\tsegmentID\x18\x03 \x01(\x03\"~\n\x17\x44\x65scribeSegmentResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x0f\n\x07indexID\x18\x02 \x01(\x03\x12\x0f\n\x07\x62uildID\x18\x03 \x01(\x03\x12\x14\n\x0c\x65nable_index\x18\x04 \x01(\x08\"l\n\x13ShowSegmentsRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x14\n\x0c\x63ollectionID\x18\x02 \x01(\x03\x12\x13\n\x0bpartitionID\x18\x03 \x01(\x03\"W\n\x14ShowSegmentsResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x12\n\nsegmentIDs\x18\x02 \x03(\x03\"\xb7\x01\n\x12\x43reateIndexRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x12\n\nfield_name\x18\x04 \x01(\t\x12\x37\n\x0c\x65xtra_params\x18\x05 \x03(\x0b\x32!.milvus.proto.common.KeyValuePair\"\x94\x01\n\x14\x44\x65scribeIndexRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x12\n\nfield_name\x18\x04 \x01(\t\x12\x12\n\nindex_name\x18\x05 \x01(\t\"~\n\x10IndexDescription\x12\x12\n\nindex_name\x18\x01 \x01(\t\x12\x0f\n\x07indexID\x18\x02 \x01(\x03\x12\x31\n\x06params\x18\x03 \x03(\x0b\x32!.milvus.proto.common.KeyValuePair\x12\x12\n\nfield_name\x18\x04 \x01(\t\"\x87\x01\n\x15\x44\x65scribeIndexResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x41\n\x12index_descriptions\x18\x02 \x03(\x0b\x32%.milvus.proto.milvus.IndexDescription\"\x9c\x01\n\x1cGetIndexBuildProgressRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x12\n\nfield_name\x18\x04 \x01(\t\x12\x12\n\nindex_name\x18\x05 \x01(\t\"v\n\x1dGetIndexBuildProgressResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x14\n\x0cindexed_rows\x18\x02 \x01(\x03\x12\x12\n\ntotal_rows\x18\x03 \x01(\x03\"\x94\x01\n\x14GetIndexStateRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x12\n\nfield_name\x18\x04 \x01(\t\x12\x12\n\nindex_name\x18\x05 \x01(\t\"\x89\x01\n\x15GetIndexStateResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12.\n\x05state\x18\x02 \x01(\x0e\x32\x1f.milvus.proto.common.IndexState\x12\x13\n\x0b\x66\x61il_reason\x18\x03 \x01(\t\"\x90\x01\n\x10\x44ropIndexRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x12\n\nfield_name\x18\x04 \x01(\t\x12\x12\n\nindex_name\x18\x05 \x01(\t\"\xd7\x01\n\rInsertRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x16\n\x0epartition_name\x18\x04 \x01(\t\x12\x33\n\x0b\x66ields_data\x18\x05 \x03(\x0b\x32\x1e.milvus.proto.schema.FieldData\x12\x11\n\thash_keys\x18\x06 \x03(\r\x12\x10\n\x08num_rows\x18\x07 \x01(\r\"\xf0\x01\n\x0eMutationResult\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12%\n\x03IDs\x18\x02 \x01(\x0b\x32\x18.milvus.proto.schema.IDs\x12\x12\n\nsucc_index\x18\x03 \x03(\r\x12\x11\n\terr_index\x18\x04 \x03(\r\x12\x14\n\x0c\x61\x63knowledged\x18\x05 \x01(\x08\x12\x12\n\ninsert_cnt\x18\x06 \x01(\x03\x12\x12\n\ndelete_cnt\x18\x07 \x01(\x03\x12\x12\n\nupsert_cnt\x18\x08 \x01(\x03\x12\x11\n\ttimestamp\x18\t \x01(\x04\"\x8b\x01\n\rDeleteRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x16\n\x0epartition_name\x18\x04 \x01(\t\x12\x0c\n\x04\x65xpr\x18\x05 \x01(\t\"c\n\x10PlaceholderValue\x12\x0b\n\x03tag\x18\x01 \x01(\t\x12\x32\n\x04type\x18\x02 \x01(\x0e\x32$.milvus.proto.milvus.PlaceholderType\x12\x0e\n\x06values\x18\x03 \x03(\x0c\"O\n\x10PlaceholderGroup\x12;\n\x0cplaceholders\x18\x01 \x03(\x0b\x32%.milvus.proto.milvus.PlaceholderValue\"\xde\x02\n\rSearchRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x17\n\x0fpartition_names\x18\x04 \x03(\t\x12\x0b\n\x03\x64sl\x18\x05 \x01(\t\x12\x19\n\x11placeholder_group\x18\x06 \x01(\x0c\x12.\n\x08\x64sl_type\x18\x07 \x01(\x0e\x32\x1c.milvus.proto.common.DslType\x12\x15\n\routput_fields\x18\x08 \x03(\t\x12\x38\n\rsearch_params\x18\t \x03(\x0b\x32!.milvus.proto.common.KeyValuePair\x12\x18\n\x10travel_timestamp\x18\n \x01(\x04\x12\x1b\n\x13guarantee_timestamp\x18\x0b \x01(\x04\"5\n\x04Hits\x12\x0b\n\x03IDs\x18\x01 \x03(\x03\x12\x10\n\x08row_data\x18\x02 \x03(\x0c\x12\x0e\n\x06scores\x18\x03 \x03(\x02\"t\n\rSearchResults\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x36\n\x07results\x18\x02 \x01(\x0b\x32%.milvus.proto.schema.SearchResultData\"e\n\x0c\x46lushRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x18\n\x10\x63ollection_names\x18\x03 \x03(\t\"\xe9\x01\n\rFlushResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12G\n\x0b\x63oll_segIDs\x18\x03 \x03(\x0b\x32\x32.milvus.proto.milvus.FlushResponse.CollSegIDsEntry\x1aQ\n\x0f\x43ollSegIDsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12-\n\x05value\x18\x02 \x01(\x0b\x32\x1e.milvus.proto.schema.LongArray:\x02\x38\x01\"\xd9\x01\n\x0cQueryRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x0c\n\x04\x65xpr\x18\x04 \x01(\t\x12\x15\n\routput_fields\x18\x05 \x03(\t\x12\x17\n\x0fpartition_names\x18\x06 \x03(\t\x12\x18\n\x10travel_timestamp\x18\x07 \x01(\x04\x12\x1b\n\x13guarantee_timestamp\x18\x08 \x01(\x04\"p\n\x0cQueryResults\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x33\n\x0b\x66ields_data\x18\x02 \x03(\x0b\x32\x1e.milvus.proto.schema.FieldData\"}\n\tVectorIDs\x12\x17\n\x0f\x63ollection_name\x18\x01 \x01(\t\x12\x12\n\nfield_name\x18\x02 \x01(\t\x12*\n\x08id_array\x18\x03 \x01(\x0b\x32\x18.milvus.proto.schema.IDs\x12\x17\n\x0fpartition_names\x18\x04 \x03(\t\"\x83\x01\n\x0cVectorsArray\x12\x32\n\x08id_array\x18\x01 \x01(\x0b\x32\x1e.milvus.proto.milvus.VectorIDsH\x00\x12\x36\n\ndata_array\x18\x02 \x01(\x0b\x32 .milvus.proto.schema.VectorFieldH\x00\x42\x07\n\x05\x61rray\"\xdd\x01\n\x13\x43\x61lcDistanceRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x32\n\x07op_left\x18\x02 \x01(\x0b\x32!.milvus.proto.milvus.VectorsArray\x12\x33\n\x08op_right\x18\x03 \x01(\x0b\x32!.milvus.proto.milvus.VectorsArray\x12\x31\n\x06params\x18\x04 \x03(\x0b\x32!.milvus.proto.common.KeyValuePair\"\xb5\x01\n\x13\x43\x61lcDistanceResults\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x31\n\x08int_dist\x18\x02 \x01(\x0b\x32\x1d.milvus.proto.schema.IntArrayH\x00\x12\x35\n\nfloat_dist\x18\x03 \x01(\x0b\x32\x1f.milvus.proto.schema.FloatArrayH\x00\x42\x07\n\x05\x61rray\"\x99\x01\n\x15PersistentSegmentInfo\x12\x11\n\tsegmentID\x18\x01 \x01(\x03\x12\x14\n\x0c\x63ollectionID\x18\x02 \x01(\x03\x12\x13\n\x0bpartitionID\x18\x03 \x01(\x03\x12\x10\n\x08num_rows\x18\x04 \x01(\x03\x12\x30\n\x05state\x18\x05 \x01(\x0e\x32!.milvus.proto.common.SegmentState\"u\n\x1fGetPersistentSegmentInfoRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0e\n\x06\x64\x62Name\x18\x02 \x01(\t\x12\x16\n\x0e\x63ollectionName\x18\x03 \x01(\t\"\x8a\x01\n GetPersistentSegmentInfoResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x39\n\x05infos\x18\x02 \x03(\x0b\x32*.milvus.proto.milvus.PersistentSegmentInfo\"\x99\x01\n\x10QuerySegmentInfo\x12\x11\n\tsegmentID\x18\x01 \x01(\x03\x12\x14\n\x0c\x63ollectionID\x18\x02 \x01(\x03\x12\x13\n\x0bpartitionID\x18\x03 \x01(\x03\x12\x10\n\x08mem_size\x18\x04 \x01(\x03\x12\x10\n\x08num_rows\x18\x05 \x01(\x03\x12\x12\n\nindex_name\x18\x06 \x01(\t\x12\x0f\n\x07indexID\x18\x07 \x01(\x03\"p\n\x1aGetQuerySegmentInfoRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0e\n\x06\x64\x62Name\x18\x02 \x01(\t\x12\x16\n\x0e\x63ollectionName\x18\x03 \x01(\t\"\x80\x01\n\x1bGetQuerySegmentInfoResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x34\n\x05infos\x18\x02 \x03(\x0b\x32%.milvus.proto.milvus.QuerySegmentInfo\"$\n\x0c\x44ummyRequest\x12\x14\n\x0crequest_type\x18\x01 \x01(\t\"!\n\rDummyResponse\x12\x10\n\x08response\x18\x01 \x01(\t\"\x15\n\x13RegisterLinkRequest\"r\n\x14RegisterLinkResponse\x12-\n\x07\x61\x64\x64ress\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.Address\x12+\n\x06status\x18\x02 \x01(\x0b\x32\x1b.milvus.proto.common.Status\"P\n\x11GetMetricsRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07request\x18\x02 \x01(\t\"k\n\x12GetMetricsResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x10\n\x08response\x18\x02 \x01(\t\x12\x16\n\x0e\x63omponent_name\x18\x03 \x01(\t*!\n\x08ShowType\x12\x07\n\x03\x41ll\x10\x00\x12\x0c\n\x08InMemory\x10\x01*>\n\x0fPlaceholderType\x12\x08\n\x04None\x10\x00\x12\x10\n\x0c\x42inaryVector\x10\x64\x12\x0f\n\x0b\x46loatVector\x10\x65\x32\xd5\x1a\n\rMilvusService\x12_\n\x10\x43reateCollection\x12,.milvus.proto.milvus.CreateCollectionRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12[\n\x0e\x44ropCollection\x12*.milvus.proto.milvus.DropCollectionRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12_\n\rHasCollection\x12).milvus.proto.milvus.HasCollectionRequest\x1a!.milvus.proto.milvus.BoolResponse\"\x00\x12[\n\x0eLoadCollection\x12*.milvus.proto.milvus.LoadCollectionRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12\x61\n\x11ReleaseCollection\x12-.milvus.proto.milvus.ReleaseCollectionRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12w\n\x12\x44\x65scribeCollection\x12..milvus.proto.milvus.DescribeCollectionRequest\x1a/.milvus.proto.milvus.DescribeCollectionResponse\"\x00\x12\x86\x01\n\x17GetCollectionStatistics\x12\x33.milvus.proto.milvus.GetCollectionStatisticsRequest\x1a\x34.milvus.proto.milvus.GetCollectionStatisticsResponse\"\x00\x12n\n\x0fShowCollections\x12+.milvus.proto.milvus.ShowCollectionsRequest\x1a,.milvus.proto.milvus.ShowCollectionsResponse\"\x00\x12]\n\x0f\x43reatePartition\x12+.milvus.proto.milvus.CreatePartitionRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12Y\n\rDropPartition\x12).milvus.proto.milvus.DropPartitionRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12]\n\x0cHasPartition\x12(.milvus.proto.milvus.HasPartitionRequest\x1a!.milvus.proto.milvus.BoolResponse\"\x00\x12[\n\x0eLoadPartitions\x12*.milvus.proto.milvus.LoadPartitionsRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12\x61\n\x11ReleasePartitions\x12-.milvus.proto.milvus.ReleasePartitionsRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12\x83\x01\n\x16GetPartitionStatistics\x12\x32.milvus.proto.milvus.GetPartitionStatisticsRequest\x1a\x33.milvus.proto.milvus.GetPartitionStatisticsResponse\"\x00\x12k\n\x0eShowPartitions\x12*.milvus.proto.milvus.ShowPartitionsRequest\x1a+.milvus.proto.milvus.ShowPartitionsResponse\"\x00\x12U\n\x0b\x43reateAlias\x12\'.milvus.proto.milvus.CreateAliasRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12Q\n\tDropAlias\x12%.milvus.proto.milvus.DropAliasRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12S\n\nAlterAlias\x12&.milvus.proto.milvus.AlterAliasRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12U\n\x0b\x43reateIndex\x12\'.milvus.proto.milvus.CreateIndexRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12h\n\rDescribeIndex\x12).milvus.proto.milvus.DescribeIndexRequest\x1a*.milvus.proto.milvus.DescribeIndexResponse\"\x00\x12h\n\rGetIndexState\x12).milvus.proto.milvus.GetIndexStateRequest\x1a*.milvus.proto.milvus.GetIndexStateResponse\"\x00\x12\x80\x01\n\x15GetIndexBuildProgress\x12\x31.milvus.proto.milvus.GetIndexBuildProgressRequest\x1a\x32.milvus.proto.milvus.GetIndexBuildProgressResponse\"\x00\x12Q\n\tDropIndex\x12%.milvus.proto.milvus.DropIndexRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12S\n\x06Insert\x12\".milvus.proto.milvus.InsertRequest\x1a#.milvus.proto.milvus.MutationResult\"\x00\x12S\n\x06\x44\x65lete\x12\".milvus.proto.milvus.DeleteRequest\x1a#.milvus.proto.milvus.MutationResult\"\x00\x12R\n\x06Search\x12\".milvus.proto.milvus.SearchRequest\x1a\".milvus.proto.milvus.SearchResults\"\x00\x12P\n\x05\x46lush\x12!.milvus.proto.milvus.FlushRequest\x1a\".milvus.proto.milvus.FlushResponse\"\x00\x12O\n\x05Query\x12!.milvus.proto.milvus.QueryRequest\x1a!.milvus.proto.milvus.QueryResults\"\x00\x12\x64\n\x0c\x43\x61lcDistance\x12(.milvus.proto.milvus.CalcDistanceRequest\x1a(.milvus.proto.milvus.CalcDistanceResults\"\x00\x12\x89\x01\n\x18GetPersistentSegmentInfo\x12\x34.milvus.proto.milvus.GetPersistentSegmentInfoRequest\x1a\x35.milvus.proto.milvus.GetPersistentSegmentInfoResponse\"\x00\x12z\n\x13GetQuerySegmentInfo\x12/.milvus.proto.milvus.GetQuerySegmentInfoRequest\x1a\x30.milvus.proto.milvus.GetQuerySegmentInfoResponse\"\x00\x12P\n\x05\x44ummy\x12!.milvus.proto.milvus.DummyRequest\x1a\".milvus.proto.milvus.DummyResponse\"\x00\x12\x65\n\x0cRegisterLink\x12(.milvus.proto.milvus.RegisterLinkRequest\x1a).milvus.proto.milvus.RegisterLinkResponse\"\x00\x12_\n\nGetMetrics\x12&.milvus.proto.milvus.GetMetricsRequest\x1a\'.milvus.proto.milvus.GetMetricsResponse\"\x00\x32u\n\x0cProxyService\x12\x65\n\x0cRegisterLink\x12(.milvus.proto.milvus.RegisterLinkRequest\x1a).milvus.proto.milvus.RegisterLinkResponse\"\x00\x42\x35Z3github.com/milvus-io/milvus/internal/proto/milvuspbb\x06proto3'
+  serialized_pb=b'\n\x0cmilvus.proto\x12\x13milvus.proto.milvus\x1a\x0c\x63ommon.proto\x1a\x0cschema.proto\"y\n\x12\x43reateAliasRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\r\n\x05\x61lias\x18\x04 \x01(\t\"^\n\x10\x44ropAliasRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\r\n\x05\x61lias\x18\x03 \x01(\t\"x\n\x11\x41lterAliasRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\r\n\x05\x61lias\x18\x04 \x01(\t\"\x93\x01\n\x17\x43reateCollectionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x0e\n\x06schema\x18\x04 \x01(\x0c\x12\x12\n\nshards_num\x18\x05 \x01(\x05\"m\n\x15\x44ropCollectionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\"\x80\x01\n\x14HasCollectionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x12\n\ntime_stamp\x18\x04 \x01(\x04\"J\n\x0c\x42oolResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\r\n\x05value\x18\x02 \x01(\x08\"L\n\x0eStringResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\r\n\x05value\x18\x02 \x01(\t\"\x9b\x01\n\x19\x44\x65scribeCollectionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x14\n\x0c\x63ollectionID\x18\x04 \x01(\x03\x12\x12\n\ntime_stamp\x18\x05 \x01(\x04\"\xef\x02\n\x1a\x44\x65scribeCollectionResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x35\n\x06schema\x18\x02 \x01(\x0b\x32%.milvus.proto.schema.CollectionSchema\x12\x14\n\x0c\x63ollectionID\x18\x03 \x01(\x03\x12\x1d\n\x15virtual_channel_names\x18\x04 \x03(\t\x12\x1e\n\x16physical_channel_names\x18\x05 \x03(\t\x12\x19\n\x11\x63reated_timestamp\x18\x06 \x01(\x04\x12\x1d\n\x15\x63reated_utc_timestamp\x18\x07 \x01(\x04\x12\x12\n\nshards_num\x18\x08 \x01(\x05\x12\x0f\n\x07\x61liases\x18\t \x03(\t\x12\x39\n\x0fstart_positions\x18\n \x03(\x0b\x32 .milvus.proto.common.KeyDataPair\"m\n\x15LoadCollectionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\"p\n\x18ReleaseCollectionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\"v\n\x1eGetCollectionStatisticsRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\"\x80\x01\n\x1fGetCollectionStatisticsResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x30\n\x05stats\x18\x02 \x03(\x0b\x32!.milvus.proto.common.KeyValuePair\"\xb0\x01\n\x16ShowCollectionsRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x12\n\ntime_stamp\x18\x03 \x01(\x04\x12+\n\x04type\x18\x04 \x01(\x0e\x32\x1d.milvus.proto.milvus.ShowType\x12\x18\n\x10\x63ollection_names\x18\x05 \x03(\t\"\xd2\x01\n\x17ShowCollectionsResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x18\n\x10\x63ollection_names\x18\x02 \x03(\t\x12\x16\n\x0e\x63ollection_ids\x18\x03 \x03(\x03\x12\x1a\n\x12\x63reated_timestamps\x18\x04 \x03(\x04\x12\x1e\n\x16\x63reated_utc_timestamps\x18\x05 \x03(\x04\x12\x1c\n\x14inMemory_percentages\x18\x06 \x03(\x03\"\x86\x01\n\x16\x43reatePartitionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x16\n\x0epartition_name\x18\x04 \x01(\t\"\x84\x01\n\x14\x44ropPartitionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x16\n\x0epartition_name\x18\x04 \x01(\t\"\x83\x01\n\x13HasPartitionRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x16\n\x0epartition_name\x18\x04 \x01(\t\"\x86\x01\n\x15LoadPartitionsRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x17\n\x0fpartition_names\x18\x04 \x03(\t\"\x89\x01\n\x18ReleasePartitionsRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x17\n\x0fpartition_names\x18\x04 \x03(\t\"\x8d\x01\n\x1dGetPartitionStatisticsRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x16\n\x0epartition_name\x18\x04 \x01(\t\"\x7f\n\x1eGetPartitionStatisticsResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x30\n\x05stats\x18\x02 \x03(\x0b\x32!.milvus.proto.common.KeyValuePair\"\xc9\x01\n\x15ShowPartitionsRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x14\n\x0c\x63ollectionID\x18\x04 \x01(\x03\x12\x17\n\x0fpartition_names\x18\x05 \x03(\t\x12+\n\x04type\x18\x06 \x01(\x0e\x32\x1d.milvus.proto.milvus.ShowType\"\xce\x01\n\x16ShowPartitionsResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x17\n\x0fpartition_names\x18\x02 \x03(\t\x12\x14\n\x0cpartitionIDs\x18\x03 \x03(\x03\x12\x1a\n\x12\x63reated_timestamps\x18\x04 \x03(\x04\x12\x1e\n\x16\x63reated_utc_timestamps\x18\x05 \x03(\x04\x12\x1c\n\x14inMemory_percentages\x18\x06 \x03(\x03\"m\n\x16\x44\x65scribeSegmentRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x14\n\x0c\x63ollectionID\x18\x02 \x01(\x03\x12\x11\n\tsegmentID\x18\x03 \x01(\x03\"~\n\x17\x44\x65scribeSegmentResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x0f\n\x07indexID\x18\x02 \x01(\x03\x12\x0f\n\x07\x62uildID\x18\x03 \x01(\x03\x12\x14\n\x0c\x65nable_index\x18\x04 \x01(\x08\"l\n\x13ShowSegmentsRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x14\n\x0c\x63ollectionID\x18\x02 \x01(\x03\x12\x13\n\x0bpartitionID\x18\x03 \x01(\x03\"W\n\x14ShowSegmentsResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x12\n\nsegmentIDs\x18\x02 \x03(\x03\"\xb7\x01\n\x12\x43reateIndexRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x12\n\nfield_name\x18\x04 \x01(\t\x12\x37\n\x0c\x65xtra_params\x18\x05 \x03(\x0b\x32!.milvus.proto.common.KeyValuePair\"\x94\x01\n\x14\x44\x65scribeIndexRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x12\n\nfield_name\x18\x04 \x01(\t\x12\x12\n\nindex_name\x18\x05 \x01(\t\"~\n\x10IndexDescription\x12\x12\n\nindex_name\x18\x01 \x01(\t\x12\x0f\n\x07indexID\x18\x02 \x01(\x03\x12\x31\n\x06params\x18\x03 \x03(\x0b\x32!.milvus.proto.common.KeyValuePair\x12\x12\n\nfield_name\x18\x04 \x01(\t\"\x87\x01\n\x15\x44\x65scribeIndexResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x41\n\x12index_descriptions\x18\x02 \x03(\x0b\x32%.milvus.proto.milvus.IndexDescription\"\x9c\x01\n\x1cGetIndexBuildProgressRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x12\n\nfield_name\x18\x04 \x01(\t\x12\x12\n\nindex_name\x18\x05 \x01(\t\"v\n\x1dGetIndexBuildProgressResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x14\n\x0cindexed_rows\x18\x02 \x01(\x03\x12\x12\n\ntotal_rows\x18\x03 \x01(\x03\"\x94\x01\n\x14GetIndexStateRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x12\n\nfield_name\x18\x04 \x01(\t\x12\x12\n\nindex_name\x18\x05 \x01(\t\"\x89\x01\n\x15GetIndexStateResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12.\n\x05state\x18\x02 \x01(\x0e\x32\x1f.milvus.proto.common.IndexState\x12\x13\n\x0b\x66\x61il_reason\x18\x03 \x01(\t\"\x90\x01\n\x10\x44ropIndexRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x12\n\nfield_name\x18\x04 \x01(\t\x12\x12\n\nindex_name\x18\x05 \x01(\t\"\xd7\x01\n\rInsertRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x16\n\x0epartition_name\x18\x04 \x01(\t\x12\x33\n\x0b\x66ields_data\x18\x05 \x03(\x0b\x32\x1e.milvus.proto.schema.FieldData\x12\x11\n\thash_keys\x18\x06 \x03(\r\x12\x10\n\x08num_rows\x18\x07 \x01(\r\"\xf0\x01\n\x0eMutationResult\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12%\n\x03IDs\x18\x02 \x01(\x0b\x32\x18.milvus.proto.schema.IDs\x12\x12\n\nsucc_index\x18\x03 \x03(\r\x12\x11\n\terr_index\x18\x04 \x03(\r\x12\x14\n\x0c\x61\x63knowledged\x18\x05 \x01(\x08\x12\x12\n\ninsert_cnt\x18\x06 \x01(\x03\x12\x12\n\ndelete_cnt\x18\x07 \x01(\x03\x12\x12\n\nupsert_cnt\x18\x08 \x01(\x03\x12\x11\n\ttimestamp\x18\t \x01(\x04\"\x8b\x01\n\rDeleteRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x16\n\x0epartition_name\x18\x04 \x01(\t\x12\x0c\n\x04\x65xpr\x18\x05 \x01(\t\"c\n\x10PlaceholderValue\x12\x0b\n\x03tag\x18\x01 \x01(\t\x12\x32\n\x04type\x18\x02 \x01(\x0e\x32$.milvus.proto.milvus.PlaceholderType\x12\x0e\n\x06values\x18\x03 \x03(\x0c\"O\n\x10PlaceholderGroup\x12;\n\x0cplaceholders\x18\x01 \x03(\x0b\x32%.milvus.proto.milvus.PlaceholderValue\"\xde\x02\n\rSearchRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x17\n\x0fpartition_names\x18\x04 \x03(\t\x12\x0b\n\x03\x64sl\x18\x05 \x01(\t\x12\x19\n\x11placeholder_group\x18\x06 \x01(\x0c\x12.\n\x08\x64sl_type\x18\x07 \x01(\x0e\x32\x1c.milvus.proto.common.DslType\x12\x15\n\routput_fields\x18\x08 \x03(\t\x12\x38\n\rsearch_params\x18\t \x03(\x0b\x32!.milvus.proto.common.KeyValuePair\x12\x18\n\x10travel_timestamp\x18\n \x01(\x04\x12\x1b\n\x13guarantee_timestamp\x18\x0b \x01(\x04\"5\n\x04Hits\x12\x0b\n\x03IDs\x18\x01 \x03(\x03\x12\x10\n\x08row_data\x18\x02 \x03(\x0c\x12\x0e\n\x06scores\x18\x03 \x03(\x02\"t\n\rSearchResults\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x36\n\x07results\x18\x02 \x01(\x0b\x32%.milvus.proto.schema.SearchResultData\"e\n\x0c\x46lushRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x18\n\x10\x63ollection_names\x18\x03 \x03(\t\"\xe9\x01\n\rFlushResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12G\n\x0b\x63oll_segIDs\x18\x03 \x03(\x0b\x32\x32.milvus.proto.milvus.FlushResponse.CollSegIDsEntry\x1aQ\n\x0f\x43ollSegIDsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12-\n\x05value\x18\x02 \x01(\x0b\x32\x1e.milvus.proto.schema.LongArray:\x02\x38\x01\"\xd9\x01\n\x0cQueryRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07\x64\x62_name\x18\x02 \x01(\t\x12\x17\n\x0f\x63ollection_name\x18\x03 \x01(\t\x12\x0c\n\x04\x65xpr\x18\x04 \x01(\t\x12\x15\n\routput_fields\x18\x05 \x03(\t\x12\x17\n\x0fpartition_names\x18\x06 \x03(\t\x12\x18\n\x10travel_timestamp\x18\x07 \x01(\x04\x12\x1b\n\x13guarantee_timestamp\x18\x08 \x01(\x04\"p\n\x0cQueryResults\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x33\n\x0b\x66ields_data\x18\x02 \x03(\x0b\x32\x1e.milvus.proto.schema.FieldData\"}\n\tVectorIDs\x12\x17\n\x0f\x63ollection_name\x18\x01 \x01(\t\x12\x12\n\nfield_name\x18\x02 \x01(\t\x12*\n\x08id_array\x18\x03 \x01(\x0b\x32\x18.milvus.proto.schema.IDs\x12\x17\n\x0fpartition_names\x18\x04 \x03(\t\"\x83\x01\n\x0cVectorsArray\x12\x32\n\x08id_array\x18\x01 \x01(\x0b\x32\x1e.milvus.proto.milvus.VectorIDsH\x00\x12\x36\n\ndata_array\x18\x02 \x01(\x0b\x32 .milvus.proto.schema.VectorFieldH\x00\x42\x07\n\x05\x61rray\"\xdd\x01\n\x13\x43\x61lcDistanceRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x32\n\x07op_left\x18\x02 \x01(\x0b\x32!.milvus.proto.milvus.VectorsArray\x12\x33\n\x08op_right\x18\x03 \x01(\x0b\x32!.milvus.proto.milvus.VectorsArray\x12\x31\n\x06params\x18\x04 \x03(\x0b\x32!.milvus.proto.common.KeyValuePair\"\xb5\x01\n\x13\x43\x61lcDistanceResults\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x31\n\x08int_dist\x18\x02 \x01(\x0b\x32\x1d.milvus.proto.schema.IntArrayH\x00\x12\x35\n\nfloat_dist\x18\x03 \x01(\x0b\x32\x1f.milvus.proto.schema.FloatArrayH\x00\x42\x07\n\x05\x61rray\"\x99\x01\n\x15PersistentSegmentInfo\x12\x11\n\tsegmentID\x18\x01 \x01(\x03\x12\x14\n\x0c\x63ollectionID\x18\x02 \x01(\x03\x12\x13\n\x0bpartitionID\x18\x03 \x01(\x03\x12\x10\n\x08num_rows\x18\x04 \x01(\x03\x12\x30\n\x05state\x18\x05 \x01(\x0e\x32!.milvus.proto.common.SegmentState\"u\n\x1fGetPersistentSegmentInfoRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0e\n\x06\x64\x62Name\x18\x02 \x01(\t\x12\x16\n\x0e\x63ollectionName\x18\x03 \x01(\t\"\x8a\x01\n GetPersistentSegmentInfoResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x39\n\x05infos\x18\x02 \x03(\x0b\x32*.milvus.proto.milvus.PersistentSegmentInfo\"\xdb\x01\n\x10QuerySegmentInfo\x12\x11\n\tsegmentID\x18\x01 \x01(\x03\x12\x14\n\x0c\x63ollectionID\x18\x02 \x01(\x03\x12\x13\n\x0bpartitionID\x18\x03 \x01(\x03\x12\x10\n\x08mem_size\x18\x04 \x01(\x03\x12\x10\n\x08num_rows\x18\x05 \x01(\x03\x12\x12\n\nindex_name\x18\x06 \x01(\t\x12\x0f\n\x07indexID\x18\x07 \x01(\x03\x12\x0e\n\x06nodeID\x18\x08 \x01(\x03\x12\x30\n\x05state\x18\t \x01(\x0e\x32!.milvus.proto.common.SegmentState\"p\n\x1aGetQuerySegmentInfoRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0e\n\x06\x64\x62Name\x18\x02 \x01(\t\x12\x16\n\x0e\x63ollectionName\x18\x03 \x01(\t\"\x80\x01\n\x1bGetQuerySegmentInfoResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x34\n\x05infos\x18\x02 \x03(\x0b\x32%.milvus.proto.milvus.QuerySegmentInfo\"$\n\x0c\x44ummyRequest\x12\x14\n\x0crequest_type\x18\x01 \x01(\t\"!\n\rDummyResponse\x12\x10\n\x08response\x18\x01 \x01(\t\"\x15\n\x13RegisterLinkRequest\"r\n\x14RegisterLinkResponse\x12-\n\x07\x61\x64\x64ress\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.Address\x12+\n\x06status\x18\x02 \x01(\x0b\x32\x1b.milvus.proto.common.Status\"P\n\x11GetMetricsRequest\x12*\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x1c.milvus.proto.common.MsgBase\x12\x0f\n\x07request\x18\x02 \x01(\t\"k\n\x12GetMetricsResponse\x12+\n\x06status\x18\x01 \x01(\x0b\x32\x1b.milvus.proto.common.Status\x12\x10\n\x08response\x18\x02 \x01(\t\x12\x16\n\x0e\x63omponent_name\x18\x03 \x01(\t*!\n\x08ShowType\x12\x07\n\x03\x41ll\x10\x00\x12\x0c\n\x08InMemory\x10\x01*>\n\x0fPlaceholderType\x12\x08\n\x04None\x10\x00\x12\x10\n\x0c\x42inaryVector\x10\x64\x12\x0f\n\x0b\x46loatVector\x10\x65\x32\xd5\x1a\n\rMilvusService\x12_\n\x10\x43reateCollection\x12,.milvus.proto.milvus.CreateCollectionRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12[\n\x0e\x44ropCollection\x12*.milvus.proto.milvus.DropCollectionRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12_\n\rHasCollection\x12).milvus.proto.milvus.HasCollectionRequest\x1a!.milvus.proto.milvus.BoolResponse\"\x00\x12[\n\x0eLoadCollection\x12*.milvus.proto.milvus.LoadCollectionRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12\x61\n\x11ReleaseCollection\x12-.milvus.proto.milvus.ReleaseCollectionRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12w\n\x12\x44\x65scribeCollection\x12..milvus.proto.milvus.DescribeCollectionRequest\x1a/.milvus.proto.milvus.DescribeCollectionResponse\"\x00\x12\x86\x01\n\x17GetCollectionStatistics\x12\x33.milvus.proto.milvus.GetCollectionStatisticsRequest\x1a\x34.milvus.proto.milvus.GetCollectionStatisticsResponse\"\x00\x12n\n\x0fShowCollections\x12+.milvus.proto.milvus.ShowCollectionsRequest\x1a,.milvus.proto.milvus.ShowCollectionsResponse\"\x00\x12]\n\x0f\x43reatePartition\x12+.milvus.proto.milvus.CreatePartitionRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12Y\n\rDropPartition\x12).milvus.proto.milvus.DropPartitionRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12]\n\x0cHasPartition\x12(.milvus.proto.milvus.HasPartitionRequest\x1a!.milvus.proto.milvus.BoolResponse\"\x00\x12[\n\x0eLoadPartitions\x12*.milvus.proto.milvus.LoadPartitionsRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12\x61\n\x11ReleasePartitions\x12-.milvus.proto.milvus.ReleasePartitionsRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12\x83\x01\n\x16GetPartitionStatistics\x12\x32.milvus.proto.milvus.GetPartitionStatisticsRequest\x1a\x33.milvus.proto.milvus.GetPartitionStatisticsResponse\"\x00\x12k\n\x0eShowPartitions\x12*.milvus.proto.milvus.ShowPartitionsRequest\x1a+.milvus.proto.milvus.ShowPartitionsResponse\"\x00\x12U\n\x0b\x43reateAlias\x12\'.milvus.proto.milvus.CreateAliasRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12Q\n\tDropAlias\x12%.milvus.proto.milvus.DropAliasRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12S\n\nAlterAlias\x12&.milvus.proto.milvus.AlterAliasRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12U\n\x0b\x43reateIndex\x12\'.milvus.proto.milvus.CreateIndexRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12h\n\rDescribeIndex\x12).milvus.proto.milvus.DescribeIndexRequest\x1a*.milvus.proto.milvus.DescribeIndexResponse\"\x00\x12h\n\rGetIndexState\x12).milvus.proto.milvus.GetIndexStateRequest\x1a*.milvus.proto.milvus.GetIndexStateResponse\"\x00\x12\x80\x01\n\x15GetIndexBuildProgress\x12\x31.milvus.proto.milvus.GetIndexBuildProgressRequest\x1a\x32.milvus.proto.milvus.GetIndexBuildProgressResponse\"\x00\x12Q\n\tDropIndex\x12%.milvus.proto.milvus.DropIndexRequest\x1a\x1b.milvus.proto.common.Status\"\x00\x12S\n\x06Insert\x12\".milvus.proto.milvus.InsertRequest\x1a#.milvus.proto.milvus.MutationResult\"\x00\x12S\n\x06\x44\x65lete\x12\".milvus.proto.milvus.DeleteRequest\x1a#.milvus.proto.milvus.MutationResult\"\x00\x12R\n\x06Search\x12\".milvus.proto.milvus.SearchRequest\x1a\".milvus.proto.milvus.SearchResults\"\x00\x12P\n\x05\x46lush\x12!.milvus.proto.milvus.FlushRequest\x1a\".milvus.proto.milvus.FlushResponse\"\x00\x12O\n\x05Query\x12!.milvus.proto.milvus.QueryRequest\x1a!.milvus.proto.milvus.QueryResults\"\x00\x12\x64\n\x0c\x43\x61lcDistance\x12(.milvus.proto.milvus.CalcDistanceRequest\x1a(.milvus.proto.milvus.CalcDistanceResults\"\x00\x12\x89\x01\n\x18GetPersistentSegmentInfo\x12\x34.milvus.proto.milvus.GetPersistentSegmentInfoRequest\x1a\x35.milvus.proto.milvus.GetPersistentSegmentInfoResponse\"\x00\x12z\n\x13GetQuerySegmentInfo\x12/.milvus.proto.milvus.GetQuerySegmentInfoRequest\x1a\x30.milvus.proto.milvus.GetQuerySegmentInfoResponse\"\x00\x12P\n\x05\x44ummy\x12!.milvus.proto.milvus.DummyRequest\x1a\".milvus.proto.milvus.DummyResponse\"\x00\x12\x65\n\x0cRegisterLink\x12(.milvus.proto.milvus.RegisterLinkRequest\x1a).milvus.proto.milvus.RegisterLinkResponse\"\x00\x12_\n\nGetMetrics\x12&.milvus.proto.milvus.GetMetricsRequest\x1a\'.milvus.proto.milvus.GetMetricsResponse\"\x00\x32u\n\x0cProxyService\x12\x65\n\x0cRegisterLink\x12(.milvus.proto.milvus.RegisterLinkRequest\x1a).milvus.proto.milvus.RegisterLinkResponse\"\x00\x42\x35Z3github.com/milvus-io/milvus/internal/proto/milvuspbb\x06proto3'
   ,
   dependencies=[common__pb2.DESCRIPTOR,schema__pb2.DESCRIPTOR,])
 
@@ -46,8 +46,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=9348,
-  serialized_end=9381,
+  serialized_start=9414,
+  serialized_end=9447,
 )
 _sym_db.RegisterEnumDescriptor(_SHOWTYPE)
 
@@ -77,8 +77,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=9383,
-  serialized_end=9445,
+  serialized_start=9449,
+  serialized_end=9511,
 )
 _sym_db.RegisterEnumDescriptor(_PLACEHOLDERTYPE)
 
@@ -3238,6 +3238,20 @@
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='nodeID', full_name='milvus.proto.milvus.QuerySegmentInfo.nodeID', index=7,
+      number=8, type=3, cpp_type=2, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='state', full_name='milvus.proto.milvus.QuerySegmentInfo.state', index=8,
+      number=9, type=14, cpp_type=8, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
@@ -3251,7 +3265,7 @@
   oneofs=[
   ],
   serialized_start=8545,
-  serialized_end=8698,
+  serialized_end=8764,
 )
 
 
@@ -3296,8 +3310,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=8700,
-  serialized_end=8812,
+  serialized_start=8766,
+  serialized_end=8878,
 )
 
 
@@ -3335,8 +3349,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=8815,
-  serialized_end=8943,
+  serialized_start=8881,
+  serialized_end=9009,
 )
 
 
@@ -3367,8 +3381,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=8945,
-  serialized_end=8981,
+  serialized_start=9011,
+  serialized_end=9047,
 )
 
 
@@ -3399,8 +3413,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=8983,
-  serialized_end=9016,
+  serialized_start=9049,
+  serialized_end=9082,
 )
 
 
@@ -3424,8 +3438,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9018,
-  serialized_end=9039,
+  serialized_start=9084,
+  serialized_end=9105,
 )
 
 
@@ -3463,8 +3477,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9041,
-  serialized_end=9155,
+  serialized_start=9107,
+  serialized_end=9221,
 )
 
 
@@ -3502,8 +3516,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9157,
-  serialized_end=9237,
+  serialized_start=9223,
+  serialized_end=9303,
 )
 
 
@@ -3548,8 +3562,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9239,
-  serialized_end=9346,
+  serialized_start=9305,
+  serialized_end=9412,
 )
 
 _CREATEALIASREQUEST.fields_by_name['base'].message_type = common__pb2._MSGBASE
@@ -3645,6 +3659,7 @@
 _GETPERSISTENTSEGMENTINFOREQUEST.fields_by_name['base'].message_type = common__pb2._MSGBASE
 _GETPERSISTENTSEGMENTINFORESPONSE.fields_by_name['status'].message_type = common__pb2._STATUS
 _GETPERSISTENTSEGMENTINFORESPONSE.fields_by_name['infos'].message_type = _PERSISTENTSEGMENTINFO
+_QUERYSEGMENTINFO.fields_by_name['state'].enum_type = common__pb2._SEGMENTSTATE
 _GETQUERYSEGMENTINFOREQUEST.fields_by_name['base'].message_type = common__pb2._MSGBASE
 _GETQUERYSEGMENTINFORESPONSE.fields_by_name['status'].message_type = common__pb2._STATUS
 _GETQUERYSEGMENTINFORESPONSE.fields_by_name['infos'].message_type = _QUERYSEGMENTINFO
@@ -4203,8 +4218,8 @@
   index=0,
   serialized_options=None,
   create_key=_descriptor._internal_create_key,
-  serialized_start=9448,
-  serialized_end=12861,
+  serialized_start=9514,
+  serialized_end=12927,
   methods=[
   _descriptor.MethodDescriptor(
     name='CreateCollection',
@@ -4559,8 +4574,8 @@
   index=1,
   serialized_options=None,
   create_key=_descriptor._internal_create_key,
-  serialized_start=12863,
-  serialized_end=12980,
+  serialized_start=12929,
+  serialized_end=13046,
   methods=[
   _descriptor.MethodDescriptor(
     name='RegisterLink',