Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
milvus
milvus
提交
ec23b81f
M
milvus
项目概览
milvus
/
milvus
大约 1 年 前同步成功
通知
261
Star
22476
Fork
2472
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
milvus
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
ec23b81f
编写于
8月 17, 2023
作者:
N
nico
提交者:
GitHub
8月 17, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add test cases of query iterator empty expression (#26294)
Signed-off-by:
N
nico
<
cheng.yuan@zilliz.com
>
上级
e7d5196f
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
131 addition
and
62 deletion
+131
-62
tests/python_client/check/func_check.py
tests/python_client/check/func_check.py
+2
-0
tests/python_client/testcases/test_query.py
tests/python_client/testcases/test_query.py
+129
-62
未找到文件。
tests/python_client/check/func_check.py
浏览文件 @
ec23b81f
...
...
@@ -450,6 +450,8 @@ class ResponseChecker:
assert
len
(
pk_list
)
==
len
(
set
(
pk_list
))
if
check_items
.
get
(
"count"
,
None
):
assert
len
(
pk_list
)
==
check_items
[
"count"
]
if
check_items
.
get
(
"exp_ids"
,
None
):
assert
pk_list
==
check_items
[
"exp_ids"
]
log
.
info
(
"check: total %d results"
%
len
(
pk_list
))
return
True
...
...
tests/python_client/testcases/test_query.py
浏览文件 @
ec23b81f
...
...
@@ -1901,68 +1901,6 @@ class TestQueryOperation(TestcaseBase):
assert
res
[
ct
.
default_bool_field_name
]
is
False
assert
res
[
ct
.
default_string_field_name
]
==
"abc"
@
pytest
.
mark
.
tags
(
CaseLabel
.
L1
)
def
test_query_iterator_normal
(
self
):
"""
target: test query iterator normal
method: 1. query iterator
2. check the result, expect pk
expected: query successfully
"""
# 1. initialize with data
limit
=
100
collection_w
=
self
.
init_collection_general
(
prefix
,
True
,
is_index
=
False
)[
0
]
collection_w
.
create_index
(
ct
.
default_float_vec_field_name
,
{
"metric_type"
:
"L2"
})
collection_w
.
load
()
# 2. search iterator
expr
=
"int64 >= 0"
collection_w
.
query_iterator
(
expr
,
limit
=
limit
,
check_task
=
CheckTasks
.
check_query_iterator
,
check_items
=
{
"count"
:
ct
.
default_nb
,
"limit"
:
limit
})
@
pytest
.
mark
.
tags
(
CaseLabel
.
L1
)
@
pytest
.
mark
.
parametrize
(
"offset"
,
[
500
,
1000
,
1777
])
def
test_query_iterator_with_offset
(
self
,
offset
):
"""
target: test query iterator normal
method: 1. query iterator
2. check the result, expect pk
expected: query successfully
"""
# 1. initialize with data
limit
=
100
collection_w
=
self
.
init_collection_general
(
prefix
,
True
,
is_index
=
False
)[
0
]
collection_w
.
create_index
(
ct
.
default_float_vec_field_name
,
{
"metric_type"
:
"L2"
})
collection_w
.
load
()
# 2. search iterator
expr
=
"int64 >= 0"
collection_w
.
query_iterator
(
expr
,
limit
=
limit
,
offset
=
offset
,
check_task
=
CheckTasks
.
check_query_iterator
,
check_items
=
{
"count"
:
ct
.
default_nb
-
offset
,
"limit"
:
limit
})
@
pytest
.
mark
.
tags
(
CaseLabel
.
L1
)
@
pytest
.
mark
.
parametrize
(
"limit"
,
[
10
,
100
,
777
,
1000
])
def
test_query_iterator_with_different_limit
(
self
,
limit
):
"""
target: test query iterator normal
method: 1. query iterator
2. check the result, expect pk
expected: query successfully
"""
# 1. initialize with data
offset
=
500
collection_w
=
self
.
init_collection_general
(
prefix
,
True
,
is_index
=
False
)[
0
]
collection_w
.
create_index
(
ct
.
default_float_vec_field_name
,
{
"metric_type"
:
"L2"
})
collection_w
.
load
()
# 2. search iterator
expr
=
"int64 >= 0"
collection_w
.
query_iterator
(
expr
,
limit
=
limit
,
offset
=
offset
,
check_task
=
CheckTasks
.
check_query_iterator
,
check_items
=
{
"count"
:
ct
.
default_nb
-
offset
,
"limit"
:
limit
})
class
TestQueryString
(
TestcaseBase
):
"""
...
...
@@ -3006,3 +2944,132 @@ class TestQueryCount(TestcaseBase):
collection_w
.
query
(
expr
=
expression
,
output_fields
=
[
count
],
check_task
=
CheckTasks
.
check_query_results
,
check_items
=
{
exp_res
:
[{
count
:
res
}]})
class
TestQueryIterator
(
TestcaseBase
):
"""
******************************************************************
The following cases are used to test query iterator
******************************************************************
"""
@
pytest
.
mark
.
tags
(
CaseLabel
.
L0
)
def
test_query_iterator_normal
(
self
):
"""
target: test query iterator normal
method: 1. query iterator
2. check the result, expect pk
expected: query successfully
"""
# 1. initialize with data
limit
=
100
collection_w
=
self
.
init_collection_general
(
prefix
,
True
,
is_index
=
False
)[
0
]
collection_w
.
create_index
(
ct
.
default_float_vec_field_name
,
{
"metric_type"
:
"L2"
})
collection_w
.
load
()
# 2. search iterator
expr
=
"int64 >= 0"
collection_w
.
query_iterator
(
expr
,
limit
=
limit
,
check_task
=
CheckTasks
.
check_query_iterator
,
check_items
=
{
"count"
:
ct
.
default_nb
,
"limit"
:
limit
})
@
pytest
.
mark
.
tags
(
CaseLabel
.
L2
)
@
pytest
.
mark
.
parametrize
(
"offset"
,
[
500
,
1000
,
1777
])
def
test_query_iterator_with_offset
(
self
,
offset
):
"""
target: test query iterator normal
method: 1. query iterator
2. check the result, expect pk
expected: query successfully
"""
# 1. initialize with data
limit
=
100
collection_w
=
self
.
init_collection_general
(
prefix
,
True
,
is_index
=
False
)[
0
]
collection_w
.
create_index
(
ct
.
default_float_vec_field_name
,
{
"metric_type"
:
"L2"
})
collection_w
.
load
()
# 2. search iterator
expr
=
"int64 >= 0"
collection_w
.
query_iterator
(
expr
,
limit
=
limit
,
offset
=
offset
,
check_task
=
CheckTasks
.
check_query_iterator
,
check_items
=
{
"count"
:
ct
.
default_nb
-
offset
,
"limit"
:
limit
})
@
pytest
.
mark
.
tags
(
CaseLabel
.
L1
)
@
pytest
.
mark
.
parametrize
(
"limit"
,
[
10
,
100
,
777
,
2000
])
def
test_query_iterator_with_different_limit
(
self
,
limit
):
"""
target: test query iterator normal
method: 1. query iterator
2. check the result, expect pk
expected: query successfully
"""
# 1. initialize with data
offset
=
500
collection_w
=
self
.
init_collection_general
(
prefix
,
True
,
is_index
=
False
)[
0
]
collection_w
.
create_index
(
ct
.
default_float_vec_field_name
,
{
"metric_type"
:
"L2"
})
collection_w
.
load
()
# 2. search iterator
expr
=
"int64 >= 0"
collection_w
.
query_iterator
(
expr
,
limit
=
limit
,
offset
=
offset
,
check_task
=
CheckTasks
.
check_query_iterator
,
check_items
=
{
"count"
:
ct
.
default_nb
-
offset
,
"limit"
:
limit
})
@
pytest
.
mark
.
tags
(
CaseLabel
.
L2
)
@
pytest
.
mark
.
skip
(
"issue #26397"
)
def
test_query_iterator_invalid_limit_offset
(
self
):
"""
target: test query iterator invalid limit and offset
method: query iterator using invalid limit and offset
expected: raise exception
"""
# 1. initialize with data
nb
=
17000
# set nb > 16384
collection_w
=
self
.
init_collection_general
(
prefix
,
True
,
nb
=
nb
)[
0
]
# 2. search iterator
expr
=
"int64 >= 0"
error
=
{
"err_code"
:
1
,
"err_msg"
:
"invalid max query result window, limit [-1] is invalid, should be greater than 0"
}
collection_w
.
query_iterator
(
expr
,
limit
=-
1
,
check_task
=
CheckTasks
.
err_res
,
check_items
=
error
)
@
pytest
.
mark
.
tags
(
CaseLabel
.
L0
)
@
pytest
.
mark
.
parametrize
(
"limit"
,
[
100
,
500
])
@
pytest
.
mark
.
parametrize
(
"auto_id"
,
[
True
,
False
])
def
test_query_iterator_empty_expr
(
self
,
auto_id
,
limit
):
"""
target: test query iterator with empty expression
method: query iterator empty expression with a limit
expected: return topK results by order
"""
# 1. initialize with data
collection_w
,
_
,
_
,
insert_ids
=
self
.
init_collection_general
(
prefix
,
True
,
auto_id
=
auto_id
)[
0
:
4
]
# 2. query with limit
collection_w
.
query_iterator
(
""
,
limit
=
limit
,
check_task
=
CheckTasks
.
check_query_iterator
,
check_items
=
{
"limit"
:
limit
,
"count"
:
ct
.
default_nb
,
"exp_ids"
:
insert_ids
})
@
pytest
.
mark
.
tags
(
CaseLabel
.
L2
)
@
pytest
.
mark
.
parametrize
(
"offset"
,
[
100
,
1000
])
@
pytest
.
mark
.
parametrize
(
"limit"
,
[
500
,
1000
])
def
test_query_iterator_expr_empty_with_random_pk_pagination
(
self
,
limit
,
offset
):
"""
target: test query iterator with empty expression
method: create a collection using random pk, query empty expression with a limit
expected: return topK results by order
"""
# 1. initialize with data
collection_w
,
_
,
_
,
insert_ids
=
self
.
init_collection_general
(
prefix
,
True
,
random_primary_key
=
True
)[
0
:
4
]
# 3. query with empty expr and check the result
exp_ids
=
sorted
(
insert_ids
)
collection_w
.
query_iterator
(
""
,
limit
=
limit
,
output_fields
=
[
ct
.
default_string_field_name
],
check_task
=
CheckTasks
.
check_query_iterator
,
check_items
=
{
"limit"
:
limit
,
"count"
:
ct
.
default_nb
,
"exp_ids"
:
exp_ids
})
# 4. query with pagination
exp_ids
=
sorted
(
insert_ids
)[
offset
:]
collection_w
.
query_iterator
(
""
,
limit
=
limit
,
offset
=
offset
,
output_fields
=
[
ct
.
default_string_field_name
],
check_task
=
CheckTasks
.
check_query_iterator
,
check_items
=
{
"limit"
:
limit
,
"count"
:
ct
.
default_nb
-
offset
,
"exp_ids"
:
exp_ids
})
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录