Skip to content

Commit f92bbf7

Browse files
committed
fix: cannot pass consistency level for delete
Also optinal variables default value should always be None. And empty str is always invalid variable See also: milvus-io#2327 pr: milvus-io#2350 Signed-off-by: yangxuan <[email protected]>
1 parent 0be8e7f commit f92bbf7

File tree

4 files changed

+38
-28
lines changed

4 files changed

+38
-28
lines changed

pymilvus/client/grpc_handler.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -595,17 +595,15 @@ def delete(
595595
check_pass_param(collection_name=collection_name, timeout=timeout)
596596
try:
597597
req = Prepare.delete_request(
598-
collection_name,
599-
partition_name,
600-
expression,
601-
consistency_level=kwargs.get("consistency_level", 0),
602-
param_name=kwargs.pop("param_name", None),
598+
collection_name=collection_name,
599+
expression=expression,
600+
partition_name=partition_name,
601+
consistency_level=kwargs.pop("consistency_level", 0),
603602
**kwargs,
604603
)
605604
future = self._stub.Delete.future(req, timeout=timeout)
606-
607605
if kwargs.get("_async", False):
608-
cb = kwargs.get("_callback")
606+
cb = kwargs.pop("_callback")
609607
f = MutationFuture(future, cb, timeout=timeout, **kwargs)
610608
f.add_callback(ts_utils.update_ts_on_mutation(collection_name))
611609
return f

pymilvus/client/prepare.py

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -660,29 +660,31 @@ def batch_upsert_param(
660660
def delete_request(
661661
cls,
662662
collection_name: str,
663+
expression: str,
663664
partition_name: str,
664-
expr: str,
665-
consistency_level: Optional[Union[int, str]],
665+
consistency_level: Optional[Union[int, str]] = None,
666666
**kwargs,
667667
):
668-
def check_str(instr: str, prefix: str):
669-
if instr is None:
670-
raise ParamError(message=f"{prefix} cannot be None")
671-
if not isinstance(instr, str):
672-
raise ParamError(message=f"{prefix} value {instr} is illegal")
673-
if len(instr) == 0:
674-
raise ParamError(message=f"{prefix} cannot be empty")
675-
676-
check_str(collection_name, "collection_name")
677-
if partition_name is not None and partition_name != "":
678-
check_str(partition_name, "partition_name")
679-
param_name = kwargs.get("param_name", "expr")
680-
check_str(expr, param_name)
668+
def valid_str(var: Any) -> True:
669+
return isinstance(var, str) and len(var) > 0
670+
671+
if not valid_str(collection_name):
672+
raise ParamError(
673+
message=f"collection_name {collection_name} is illegal, expect none empty str"
674+
)
675+
676+
if not valid_str(expression):
677+
raise ParamError(message=f"expression {expression} is illegal, expect none empty str")
678+
679+
if partition_name is not None and not valid_str(partition_name):
680+
raise ParamError(
681+
message=f"partition_name {partition_name} is illegal, expect none empty str"
682+
)
681683

682684
return milvus_types.DeleteRequest(
683685
collection_name=collection_name,
684686
partition_name=partition_name,
685-
expr=expr,
687+
expr=expression,
686688
consistency_level=get_consistency_level(consistency_level),
687689
expr_template_values=cls.prepare_expression_template(kwargs.get("expr_params", {})),
688690
)

pymilvus/milvus_client/milvus_client.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -543,8 +543,8 @@ def delete(
543543
collection_name: str,
544544
ids: Optional[Union[list, str, int]] = None,
545545
timeout: Optional[float] = None,
546-
filter: Optional[str] = "",
547-
partition_name: Optional[str] = "",
546+
filter: Optional[str] = None,
547+
partition_name: Optional[str] = None,
548548
**kwargs,
549549
) -> Dict:
550550
"""Delete entries in the collection by their pk or by filter.
@@ -616,7 +616,6 @@ def delete(
616616
expr,
617617
partition_name,
618618
timeout=timeout,
619-
param_name="filter or ids",
620619
expr_params=kwargs.pop("filter_params", {}),
621620
**kwargs,
622621
)

tests/test_prepare.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,17 @@
88

99

1010
class TestPrepare:
11+
@pytest.mark.parametrize("coll_name", [None, "", -1, 1.1, []])
12+
def test_delete_request_wrong_coll_name(self, coll_name: str):
13+
with pytest.raises(MilvusException):
14+
Prepare.delete_request(coll_name, "id>1", None, 0)
15+
16+
@pytest.mark.parametrize("part_name", ["", -1, 1.1, []])
17+
def test_delete_request_wrong_part_name(self, part_name):
18+
with pytest.raises(MilvusException):
19+
Prepare.delete_request("coll", "id>1", part_name, 0)
20+
21+
1122
def test_search_requests_with_expr_offset(self):
1223
fields = [
1324
FieldSchema("pk", DataType.INT64, is_primary=True),
@@ -42,7 +53,7 @@ def test_search_requests_with_expr_offset(self):
4253
params = json.loads(p.value)
4354
if PAGE_RETAIN_ORDER_FIELD in params:
4455
page_retain_order_exists = True
45-
assert params[PAGE_RETAIN_ORDER_FIELD] == True
56+
assert params[PAGE_RETAIN_ORDER_FIELD] is True
4657

4758
assert offset_exists is True
4859
assert page_retain_order_exists is True
@@ -112,7 +123,7 @@ def test_get_schema_from_collection_schema(self):
112123

113124
c_schema = Prepare.get_schema_from_collection_schema("random", schema)
114125

115-
assert c_schema.enable_dynamic_field == False
126+
assert c_schema.enable_dynamic_field is False
116127
assert c_schema.name == "random"
117128
assert len(c_schema.fields) == 2
118129
assert c_schema.fields[0].name == "field_vector"

0 commit comments

Comments
 (0)