mirror of
https://gitee.com/milvus-io/milvus.git
synced 2026-01-07 19:31:51 +08:00
fix: Fix bug for nullable geometry (#44732)
issue: #44648 Signed-off-by: Cai Zhang <cai.zhang@zilliz.com>
This commit is contained in:
parent
5ece760d73
commit
7a93cfe890
@ -568,6 +568,20 @@ func ToCompressedFormatNullable(field *schemapb.FieldData) error {
|
||||
sd.ArrayData.Data = ret
|
||||
}
|
||||
|
||||
case *schemapb.ScalarField_GeometryData:
|
||||
validRowNum := getValidNumber(field.GetValidData())
|
||||
if validRowNum == 0 {
|
||||
sd.GeometryData.Data = make([][]byte, 0)
|
||||
} else {
|
||||
ret := make([][]byte, 0, validRowNum)
|
||||
for i, valid := range field.GetValidData() {
|
||||
if valid {
|
||||
ret = append(ret, sd.GeometryData.Data[i])
|
||||
}
|
||||
}
|
||||
sd.GeometryData.Data = ret
|
||||
}
|
||||
|
||||
default:
|
||||
return merr.WrapErrParameterInvalidMsg(fmt.Sprintf("undefined data type:%s", field.Type.String()))
|
||||
}
|
||||
|
||||
@ -830,6 +830,10 @@ func (v *validateUtil) checkGeometryFieldData(field *schemapb.FieldData, fieldSc
|
||||
}
|
||||
|
||||
for index, wktdata := range geometryArray {
|
||||
if field.GetValidData() != nil && !field.GetValidData()[index] {
|
||||
wkbArray[index] = nil
|
||||
continue
|
||||
}
|
||||
// ignore parsed geom, the check is during insert task pre execute,so geo data became wkb
|
||||
// fmt.Println(strings.Trim(string(wktdata), "\""))
|
||||
geomT, err := wkt.Unmarshal(wktdata)
|
||||
|
||||
@ -764,8 +764,9 @@ func ColumnBasedInsertMsgToInsertData(msg *msgstream.InsertMsg, collSchema *sche
|
||||
srcData := srcField.GetScalars().GetGeometryData().GetData()
|
||||
validData := srcField.GetValidData()
|
||||
fieldData = &GeometryFieldData{
|
||||
Data: lo.Map(srcData, func(v []byte, _ int) []byte { return v }),
|
||||
ValidData: lo.Map(validData, func(v bool, _ int) bool { return v }),
|
||||
Data: srcData,
|
||||
ValidData: validData,
|
||||
Nullable: field.GetNullable(),
|
||||
}
|
||||
|
||||
default:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user