mirror of https://github.com/milvus-io/milvus.git
fix: to forbid bulk insert with nullable field in numpy files (#36246)
#36241 Signed-off-by: lixinguo <xinguo.li@zilliz.com> Co-authored-by: lixinguo <xinguo.li@zilliz.com>pull/36030/head
parent
329fb421cd
commit
fc1bdd4c84
|
|
@ -45,6 +45,11 @@ type reader struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewReader(ctx context.Context, cm storage.ChunkManager, schema *schemapb.CollectionSchema, paths []string, bufferSize int) (*reader, error) {
|
func NewReader(ctx context.Context, cm storage.ChunkManager, schema *schemapb.CollectionSchema, paths []string, bufferSize int) (*reader, error) {
|
||||||
|
for _, fieldSchema := range schema.Fields {
|
||||||
|
if fieldSchema.GetNullable() {
|
||||||
|
return nil, merr.WrapErrParameterInvalidMsg(fmt.Sprintf("not support bulk insert numpy files in field(%s) which set nullable == true", fieldSchema.GetName()))
|
||||||
|
}
|
||||||
|
}
|
||||||
fields := lo.KeyBy(schema.GetFields(), func(field *schemapb.FieldSchema) int64 {
|
fields := lo.KeyBy(schema.GetFields(), func(field *schemapb.FieldSchema) int64 {
|
||||||
return field.GetFieldID()
|
return field.GetFieldID()
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -319,6 +319,58 @@ func (suite *ReaderSuite) failRun(dt schemapb.DataType, isDynamic bool) {
|
||||||
suite.Error(err)
|
suite.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (suite *ReaderSuite) failRunNullable(dt schemapb.DataType, nullable bool) {
|
||||||
|
const dim = 8
|
||||||
|
schema := &schemapb.CollectionSchema{
|
||||||
|
Fields: []*schemapb.FieldSchema{
|
||||||
|
{
|
||||||
|
FieldID: 100,
|
||||||
|
Name: "pk",
|
||||||
|
IsPrimaryKey: true,
|
||||||
|
DataType: suite.pkDataType,
|
||||||
|
TypeParams: []*commonpb.KeyValuePair{
|
||||||
|
{
|
||||||
|
Key: "max_length",
|
||||||
|
Value: "256",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
FieldID: 101,
|
||||||
|
Name: "vec",
|
||||||
|
DataType: suite.vecDataType,
|
||||||
|
TypeParams: []*commonpb.KeyValuePair{
|
||||||
|
{
|
||||||
|
Key: common.DimKey,
|
||||||
|
Value: fmt.Sprintf("%d", dim),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
FieldID: 102,
|
||||||
|
Name: dt.String(),
|
||||||
|
DataType: dt,
|
||||||
|
ElementType: schemapb.DataType_Int32,
|
||||||
|
TypeParams: []*commonpb.KeyValuePair{
|
||||||
|
{
|
||||||
|
Key: "max_length",
|
||||||
|
Value: "256",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Nullable: nullable,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
files := make(map[int64]string)
|
||||||
|
for _, field := range schema.GetFields() {
|
||||||
|
files[field.GetFieldID()] = fmt.Sprintf("%s.npy", field.GetName())
|
||||||
|
}
|
||||||
|
|
||||||
|
cm := mocks.NewChunkManager(suite.T())
|
||||||
|
_, err := NewReader(context.Background(), cm, schema, lo.Values(files), math.MaxInt)
|
||||||
|
suite.Error(err)
|
||||||
|
}
|
||||||
|
|
||||||
func (suite *ReaderSuite) TestReadScalarFields() {
|
func (suite *ReaderSuite) TestReadScalarFields() {
|
||||||
suite.run(schemapb.DataType_Bool)
|
suite.run(schemapb.DataType_Bool)
|
||||||
suite.run(schemapb.DataType_Int8)
|
suite.run(schemapb.DataType_Int8)
|
||||||
|
|
@ -330,6 +382,15 @@ func (suite *ReaderSuite) TestReadScalarFields() {
|
||||||
suite.run(schemapb.DataType_VarChar)
|
suite.run(schemapb.DataType_VarChar)
|
||||||
suite.run(schemapb.DataType_JSON)
|
suite.run(schemapb.DataType_JSON)
|
||||||
suite.failRun(schemapb.DataType_JSON, true)
|
suite.failRun(schemapb.DataType_JSON, true)
|
||||||
|
suite.failRunNullable(schemapb.DataType_Bool, true)
|
||||||
|
suite.failRunNullable(schemapb.DataType_Int8, true)
|
||||||
|
suite.failRunNullable(schemapb.DataType_Int16, true)
|
||||||
|
suite.failRunNullable(schemapb.DataType_Int32, true)
|
||||||
|
suite.failRunNullable(schemapb.DataType_Int64, true)
|
||||||
|
suite.failRunNullable(schemapb.DataType_Float, true)
|
||||||
|
suite.failRunNullable(schemapb.DataType_Double, true)
|
||||||
|
suite.failRunNullable(schemapb.DataType_VarChar, true)
|
||||||
|
suite.failRunNullable(schemapb.DataType_JSON, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *ReaderSuite) TestStringPK() {
|
func (suite *ReaderSuite) TestStringPK() {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue