diff --git a/pymilvus/client/prepare.py b/pymilvus/client/prepare.py index 7adf2fba5..09a02a316 100644 --- a/pymilvus/client/prepare.py +++ b/pymilvus/client/prepare.py @@ -432,7 +432,11 @@ def _parse_row_request( entity_helper.pack_field_value_to_field_data(v, field_data, field_info) for field in fields_info: key = field["name"] - if key in entity or field.get("auto_id", False): + if ( + key in entity + or field.get("auto_id", False) + or field.get("is_function_output", False) + ): continue field_info, field_data = field_info_map[key], fields_data[key] @@ -515,7 +519,7 @@ def _parse_upsert_row_request( entity_helper.pack_field_value_to_field_data(v, field_data, field_info) for field in fields_info: key = field["name"] - if key in entity: + if key in entity or field.get("is_function_output", False): continue field_info, field_data = field_info_map[key], fields_data[key] diff --git a/pymilvus/orm/schema.py b/pymilvus/orm/schema.py index 315b0e657..d282a4880 100644 --- a/pymilvus/orm/schema.py +++ b/pymilvus/orm/schema.py @@ -11,6 +11,7 @@ # the License. import copy +import json from typing import Any, Dict, List, Optional, Union import pandas as pd @@ -450,6 +451,12 @@ def _parse_type_params(self): if self._kwargs[k].lower() == "false": self._type_params[k] = False continue + if k == "tokenizer_params": + # TODO: a more complicate json may be reordered which + # can still cause server_schema == schema to be False. + # need a better approach. + self._type_params[k] = json.loads(self._kwargs[k]) + continue self._type_params[k] = self._kwargs[k] @classmethod