mirror of
https://gitee.com/milvus-io/milvus.git
synced 2025-12-08 01:58:34 +08:00
Fix shallow copy of typeutil.AppendFieldData (#15790)
Signed-off-by: dragondriver <jiquan.long@zilliz.com>
This commit is contained in:
parent
503724be19
commit
001567640e
@ -275,20 +275,24 @@ func AppendFieldData(dst []*schemapb.FieldData, src []*schemapb.FieldData, idx i
|
|||||||
switch srcVector := fieldType.Vectors.Data.(type) {
|
switch srcVector := fieldType.Vectors.Data.(type) {
|
||||||
case *schemapb.VectorField_BinaryVector:
|
case *schemapb.VectorField_BinaryVector:
|
||||||
if dstVector.GetBinaryVector() == nil {
|
if dstVector.GetBinaryVector() == nil {
|
||||||
|
srcToCopy := srcVector.BinaryVector[idx*(dim/8) : (idx+1)*(dim/8)]
|
||||||
dstVector.Data = &schemapb.VectorField_BinaryVector{
|
dstVector.Data = &schemapb.VectorField_BinaryVector{
|
||||||
BinaryVector: srcVector.BinaryVector[idx*(dim/8) : (idx+1)*(dim/8)],
|
BinaryVector: make([]byte, len(srcToCopy)),
|
||||||
}
|
}
|
||||||
|
copy(dstVector.Data.(*schemapb.VectorField_BinaryVector).BinaryVector, srcToCopy)
|
||||||
} else {
|
} else {
|
||||||
dstBinaryVector := dstVector.Data.(*schemapb.VectorField_BinaryVector)
|
dstBinaryVector := dstVector.Data.(*schemapb.VectorField_BinaryVector)
|
||||||
dstBinaryVector.BinaryVector = append(dstBinaryVector.BinaryVector, srcVector.BinaryVector[idx*(dim/8):(idx+1)*(dim/8)]...)
|
dstBinaryVector.BinaryVector = append(dstBinaryVector.BinaryVector, srcVector.BinaryVector[idx*(dim/8):(idx+1)*(dim/8)]...)
|
||||||
}
|
}
|
||||||
case *schemapb.VectorField_FloatVector:
|
case *schemapb.VectorField_FloatVector:
|
||||||
if dstVector.GetFloatVector() == nil {
|
if dstVector.GetFloatVector() == nil {
|
||||||
|
srcToCopy := srcVector.FloatVector.Data[idx*dim : (idx+1)*dim]
|
||||||
dstVector.Data = &schemapb.VectorField_FloatVector{
|
dstVector.Data = &schemapb.VectorField_FloatVector{
|
||||||
FloatVector: &schemapb.FloatArray{
|
FloatVector: &schemapb.FloatArray{
|
||||||
Data: srcVector.FloatVector.Data[idx*dim : (idx+1)*dim],
|
Data: make([]float32, len(srcToCopy)),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
copy(dstVector.Data.(*schemapb.VectorField_FloatVector).FloatVector.Data, srcToCopy)
|
||||||
} else {
|
} else {
|
||||||
dstVector.GetFloatVector().Data = append(dstVector.GetFloatVector().Data, srcVector.FloatVector.Data[idx*dim:(idx+1)*dim]...)
|
dstVector.GetFloatVector().Data = append(dstVector.GetFloatVector().Data, srcVector.FloatVector.Data[idx*dim:(idx+1)*dim]...)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user