Return error when search limit equal 0 or grater than 16384 (#6115)

* return error when search limit equal 0 or grater than 16384

Signed-off-by: xige-16 <xi.ge@zilliz.com>

* code format

Signed-off-by: xige-16 <xi.ge@zilliz.com>
This commit is contained in:
xige-16 2021-06-26 11:44:11 +08:00 committed by GitHub
parent 6ba9fb2e9a
commit 8db95a63f6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 1 deletions

View File

@ -760,6 +760,13 @@ func (q *queryCollection) search(searchMsg *msgstream.SearchMsg) error {
return err
}
}
topK := plan.getTopK()
if topK == 0 {
return fmt.Errorf("limit must be greater than 0")
}
if topK >= 16385 {
return fmt.Errorf("limit %d is too large", topK)
}
searchRequestBlob := searchMsg.PlaceholderGroup
searchReq, err := parseSearchRequest(plan, searchRequestBlob)
if err != nil {

View File

@ -244,7 +244,7 @@ class TestCollectionSearch(TestcaseBase):
limit, default_search_exp,
check_task=CheckTasks.err_res,
check_items={"err_code": 1,
"err_msg": "division by zero"})
"err_msg": "limit must be greater than 0"})
limit = 16385
log.info("test_search_param_invalid_limit: searching with invalid max limit (topK) = %s" % limit)
collection_w.search(vectors[:default_nq], default_search_field, default_search_params,