milvus
milvus copied to clipboard
[Bug]: Query on a released partition will return data
Is there an existing issue for this?
- [X] I have searched the existing issues
Environment
- Milvus version:master-20230423-092d7439
- Deployment mode(standalone or cluster):standalone
- MQ type(rocksmq, pulsar or kafka): rocksmq
- SDK version(e.g. pymilvus v2.0.0rc2):2.4.0.dev12
- OS(Ubuntu or CentOS):
- CPU/Memory:
- GPU:
- Others:
Current Behavior
Query on a released partition will return data.
Expected Behavior
An empty result should be returned, cause the partition was released.
Steps To Reproduce
1. create a collection and 3 partitions, create index
2. insert data into the 3 partitions
3. load the collection
4. release partition2
5. query on partition2 ❌
Milvus Log
from pymilvus import CollectionSchema, FieldSchema, Collection, connections, DataType, Partition, utility
import numpy as np
import random
connections.connect()
# create collection
dim = 128
fields = [
FieldSchema(name="int64", dtype=DataType.INT64, is_primary=True, description='pk'),
FieldSchema(name="float", dtype=DataType.FLOAT),
FieldSchema(name="float_vector", dtype=DataType.FLOAT_VECTOR, dim=dim)
]
schema = CollectionSchema(fields=fields)
collection = Collection("test_load", schema=schema)
index = {"index_type": "IVF_FLAT", "params": {"nlist": 128}, "metric_type": "L2"}
collection.create_index("float_vector", index)
partition1 = Partition(collection, "partition1")
partition2 = Partition(collection, "partition2")
# 3 partitions: _default, partition1, partition2
# insert data
nb = 100
vectors = [[random.random() for _ in range(dim)] for _ in range(nb)]
collection.insert([[i for i in range(nb)], [np.float32(i) for i in range(nb)], vectors], "_default")
collection.insert([[(i+1000) for i in range(nb)], [np.float32(i+1000) for i in range(nb)], vectors], "partition1")
collection.insert([[(i+10000) for i in range(nb)], [np.float32(i+10000) for i in range(nb)], vectors], "partition2")
collection.load()
partition2.release()
res = collection.query('int64 >= 10000', partition_names=['partition2'])
print(res)
Anything else?
No response