diff --git a/internal/core/src/storage/Event.cpp b/internal/core/src/storage/Event.cpp index f3cdbe7a9876d..b652d08a94910 100644 --- a/internal/core/src/storage/Event.cpp +++ b/internal/core/src/storage/Event.cpp @@ -175,10 +175,17 @@ DescriptorEventData::Serialize() { auto fix_part_data = fix_part.Serialize(); nlohmann::json extras_json; for (auto v : extras) { - if (v.first == NULLABLE) { - extras_json.emplace(v.first, std::any_cast(v.second)); - } else { - extras_json.emplace(v.first, std::any_cast(v.second)); + try { + if (v.first == NULLABLE) { + extras_json.emplace(v.first, std::any_cast(v.second)); + } else { + extras_json.emplace(v.first, + std::any_cast(v.second)); + } + } catch (const std::bad_any_cast& e) { + std::cout << " lxg v.first " << v.first << std::endl; + std::cout << "lxg Type conversion failed: " << e.what() + << std::endl; } } std::string extras_string = extras_json.dump(); diff --git a/issue.py b/issue.py new file mode 100644 index 0000000000000..350da5a60f8ea --- /dev/null +++ b/issue.py @@ -0,0 +1,41 @@ +from pymilvus import CollectionSchema, FieldSchema, Collection, connections, DataType, Partition, utility +import numpy as np +import random +import time + +# 建collection ————————————————————————————————————————————————————————————————————————————————————————————— +dim = 128 +int64_field = FieldSchema(name="int64", dtype=DataType.INT64, is_primary=True) +float_field = FieldSchema(name="float", dtype=DataType.FLOAT) +float_vector = FieldSchema( + name="float_vector", dtype=DataType.FLOAT_VECTOR, dim=dim) +schema = CollectionSchema(fields=[int64_field, float_field, float_vector]) +connections.connect() +utility.drop_collection("test_upsert") +collection = Collection("test_upsert", schema=schema) + +# 建partition 和插入数据 ———————————————————————————————————————————————————————————————————————————————————— +# partition = Partition(collection, "_default") +# vectors = [[random.random() for _ in range(dim)] for _ in range(1500)] +# partition.insert([[i for i in range(1500)], [np.float32(i) +# for i in range(1500)], vectors]) + +index = {"index_type": "DISKANN", "metric_type": "L2", "params": {}} +# collection.create_index("float_vector", index) +# collection.load() # partition_new.load() + +nb = 17 +vectors = [[random.random() for _ in range(dim)] for _ in range(nb)] +data = [[(i+10000) for i in range(nb)], [np.float32(i+10000) + for i in range(nb)], vectors] +collection.insert(data=data) +collection.create_index("float_vector", index) +collection.load() + +search_params = {"metric_type": "L2", "params": {"search_list": 10}} +output_fields = ["int64", "float", "float_vector"] +res = collection.search(vectors, "float_vector", + search_params, limit=10, + output_fields=output_fields) + +print(len(res))