diff --git a/tests/python_client/base/partition_wrapper.py b/tests/python_client/base/partition_wrapper.py index 8a99199d51..3230589192 100644 --- a/tests/python_client/base/partition_wrapper.py +++ b/tests/python_client/base/partition_wrapper.py @@ -95,3 +95,14 @@ class ApiPartitionWrapper: params=params, limit=limit, expr=expr, output_fields=output_fields, **kwargs).run() return res, check_result + + def delete(self, expr, check_task=None, check_items=None, **kwargs): + timeout = kwargs.get("timeout", TIMEOUT) + kwargs.update({"timeout": timeout}) + + func_name = sys._getframe().f_code.co_name + res, succ = api_request([self.partition.delete, expr], **kwargs) + check_result = ResponseChecker(res, func_name, check_task, + check_items, is_succ=succ, expr=expr, + **kwargs).run() + return res, check_result diff --git a/tests/python_client/requirements.txt b/tests/python_client/requirements.txt index 3b94506315..4451e795ef 100644 --- a/tests/python_client/requirements.txt +++ b/tests/python_client/requirements.txt @@ -12,7 +12,7 @@ allure-pytest==2.7.0 pytest-print==0.2.1 pytest-level==0.1.1 pytest-xdist==2.2.1 -pymilvus==2.0.1.dev1 +pymilvus==2.0.1.dev3 pytest-rerunfailures==9.1.1 git+https://github.com/Projectplace/pytest-tags ndg-httpsclient diff --git a/tests/python_client/testcases/test_partition_20.py b/tests/python_client/testcases/test_partition_20.py index 7ce1d2f6aa..dca815bc35 100644 --- a/tests/python_client/testcases/test_partition_20.py +++ b/tests/python_client/testcases/test_partition_20.py @@ -811,3 +811,36 @@ class TestPartitionOperations(TestcaseBase): """ pass + @pytest.mark.tags(CaseLabel.L1) + @pytest.mark.parametrize("data", [cf.gen_default_list_data(nb=3000)]) + @pytest.mark.parametrize("index_param", cf.gen_simple_index()) + def test_partition_delete_indexed_data(self, data, index_param): + """ + target: verify delete entities with an expression condition from an indexed partition + method: 1. create collection + 2. create an index + 3. create a partition + 4. insert same data + 5. delete entities with an expression condition + expected: delete successfully + issue #15456 + """ + # create collection + collection_w = self.init_collection_wrap() + + # create index of collection + collection_w.create_index(ct.default_float_vec_field_name, index_param) + + # create partition + partition_name = cf.gen_unique_str(prefix) + partition_w = self.init_partition_wrap(collection_w, partition_name) + assert collection_w.has_partition(partition_name)[0] + + # insert data to partition + ins_res, _ = partition_w.insert(data) + assert len(ins_res.primary_keys) == len(data[0]) + + # delete entities with an expression condition + expr = "int64 in [0,1]" + res = partition_w.delete(expr) + assert len(res) == 2