Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
milvus
milvus
提交
0e29c374
M
milvus
项目概览
milvus
/
milvus
10 个月 前同步成功
通知
260
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,体验更适合开发者的 AI 搜索 >>
未验证
提交
0e29c374
编写于
6月 17, 2022
作者:
J
Jiquan Long
提交者:
GitHub
6月 17, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Forbid system fields in user schema (#17613)
Signed-off-by:
N
longjiquan
<
jiquan.long@zilliz.com
>
上级
f5fa93aa
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
52 addition
and
0 deletion
+52
-0
internal/rootcoord/task.go
internal/rootcoord/task.go
+14
-0
internal/rootcoord/task_test.go
internal/rootcoord/task_test.go
+38
-0
未找到文件。
internal/rootcoord/task.go
浏览文件 @
0e29c374
...
@@ -87,6 +87,15 @@ func (t *CreateCollectionReqTask) Type() commonpb.MsgType {
...
@@ -87,6 +87,15 @@ func (t *CreateCollectionReqTask) Type() commonpb.MsgType {
return
t
.
Req
.
Base
.
MsgType
return
t
.
Req
.
Base
.
MsgType
}
}
func
hasSystemFields
(
schema
*
schemapb
.
CollectionSchema
,
systemFields
[]
string
)
bool
{
for
_
,
f
:=
range
schema
.
GetFields
()
{
if
funcutil
.
SliceContain
(
systemFields
,
f
.
GetName
())
{
return
true
}
}
return
false
}
// Execute task execution
// Execute task execution
func
(
t
*
CreateCollectionReqTask
)
Execute
(
ctx
context
.
Context
)
error
{
func
(
t
*
CreateCollectionReqTask
)
Execute
(
ctx
context
.
Context
)
error
{
if
t
.
Type
()
!=
commonpb
.
MsgType_CreateCollection
{
if
t
.
Type
()
!=
commonpb
.
MsgType_CreateCollection
{
...
@@ -108,6 +117,11 @@ func (t *CreateCollectionReqTask) Execute(ctx context.Context) error {
...
@@ -108,6 +117,11 @@ func (t *CreateCollectionReqTask) Execute(ctx context.Context) error {
zap
.
Int32
(
"ShardsNum"
,
t
.
Req
.
ShardsNum
),
zap
.
Int32
(
"ShardsNum"
,
t
.
Req
.
ShardsNum
),
zap
.
String
(
"ConsistencyLevel"
,
t
.
Req
.
ConsistencyLevel
.
String
()))
zap
.
String
(
"ConsistencyLevel"
,
t
.
Req
.
ConsistencyLevel
.
String
()))
if
hasSystemFields
(
&
schema
,
[]
string
{
RowIDFieldName
,
TimeStampFieldName
})
{
log
.
Error
(
"failed to create collection, user schema contain system field"
)
return
fmt
.
Errorf
(
"schema contains system field: %s, %s"
,
RowIDFieldName
,
TimeStampFieldName
)
}
for
idx
,
field
:=
range
schema
.
Fields
{
for
idx
,
field
:=
range
schema
.
Fields
{
field
.
FieldID
=
int64
(
idx
+
StartOfUserFieldID
)
field
.
FieldID
=
int64
(
idx
+
StartOfUserFieldID
)
}
}
...
...
internal/rootcoord/task_test.go
浏览文件 @
0e29c374
...
@@ -5,6 +5,12 @@ import (
...
@@ -5,6 +5,12 @@ import (
"errors"
"errors"
"testing"
"testing"
"github.com/golang/protobuf/proto"
"github.com/milvus-io/milvus/internal/proto/milvuspb"
"github.com/milvus-io/milvus/internal/proto/schemapb"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/assert"
"github.com/milvus-io/milvus/internal/proto/etcdpb"
"github.com/milvus-io/milvus/internal/proto/etcdpb"
...
@@ -113,3 +119,35 @@ func TestDescribeSegmentsReqTask_Execute(t *testing.T) {
...
@@ -113,3 +119,35 @@ func TestDescribeSegmentsReqTask_Execute(t *testing.T) {
}
}
assert
.
NoError
(
t
,
tsk
.
Execute
(
context
.
Background
()))
assert
.
NoError
(
t
,
tsk
.
Execute
(
context
.
Background
()))
}
}
func
Test_hasSystemFields
(
t
*
testing
.
T
)
{
t
.
Run
(
"no system fields"
,
func
(
t
*
testing
.
T
)
{
schema
:=
&
schemapb
.
CollectionSchema
{
Fields
:
[]
*
schemapb
.
FieldSchema
{{
Name
:
"not_system_field"
}}}
assert
.
False
(
t
,
hasSystemFields
(
schema
,
[]
string
{
RowIDFieldName
,
TimeStampFieldName
}))
})
t
.
Run
(
"has row id field"
,
func
(
t
*
testing
.
T
)
{
schema
:=
&
schemapb
.
CollectionSchema
{
Fields
:
[]
*
schemapb
.
FieldSchema
{{
Name
:
RowIDFieldName
}}}
assert
.
True
(
t
,
hasSystemFields
(
schema
,
[]
string
{
RowIDFieldName
,
TimeStampFieldName
}))
})
t
.
Run
(
"has timestamp field"
,
func
(
t
*
testing
.
T
)
{
schema
:=
&
schemapb
.
CollectionSchema
{
Fields
:
[]
*
schemapb
.
FieldSchema
{{
Name
:
TimeStampFieldName
}}}
assert
.
True
(
t
,
hasSystemFields
(
schema
,
[]
string
{
RowIDFieldName
,
TimeStampFieldName
}))
})
}
func
TestCreateCollectionReqTask_Execute_hasSystemFields
(
t
*
testing
.
T
)
{
schema
:=
&
schemapb
.
CollectionSchema
{
Name
:
"test"
,
Fields
:
[]
*
schemapb
.
FieldSchema
{{
Name
:
TimeStampFieldName
}}}
marshaledSchema
,
err
:=
proto
.
Marshal
(
schema
)
assert
.
NoError
(
t
,
err
)
task
:=
&
CreateCollectionReqTask
{
Req
:
&
milvuspb
.
CreateCollectionRequest
{
Base
:
&
commonpb
.
MsgBase
{
MsgType
:
commonpb
.
MsgType_CreateCollection
},
CollectionName
:
"test"
,
Schema
:
marshaledSchema
,
},
}
err
=
task
.
Execute
(
context
.
Background
())
assert
.
Error
(
t
,
err
)
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录