fix: Fix setting default value for geometry by restful (#46058)

issue: #46056

Signed-off-by: Cai Zhang <cai.zhang@zilliz.com>
This commit is contained in:
cai.zhang 2025-12-03 23:27:11 +08:00 committed by GitHub
parent dd36ffa92d
commit eb81e6ed01
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 15 additions and 17 deletions

View File

@ -1725,6 +1725,18 @@ func convertDefaultValue(value interface{}, dataType schemapb.DataType) (*schema
} }
return data, nil return data, nil
case schemapb.DataType_Geometry:
v, ok := value.(string)
if !ok {
return nil, merr.WrapErrParameterInvalidMsg(`cannot use "%v"(type: %T) as geometry default value`, value, value)
}
data := &schemapb.ValueField{
Data: &schemapb.ValueField_StringData{
StringData: v,
},
}
return data, nil
case schemapb.DataType_String, schemapb.DataType_VarChar: case schemapb.DataType_String, schemapb.DataType_VarChar:
v, ok := value.(string) v, ok := value.(string)
if !ok { if !ok {

View File

@ -7,7 +7,6 @@ import (
"github.com/samber/lo" "github.com/samber/lo"
"github.com/twpayne/go-geom/encoding/wkb" "github.com/twpayne/go-geom/encoding/wkb"
"github.com/twpayne/go-geom/encoding/wkbcommon"
"github.com/twpayne/go-geom/encoding/wkt" "github.com/twpayne/go-geom/encoding/wkt"
"go.uber.org/zap" "go.uber.org/zap"
@ -848,16 +847,11 @@ func (v *validateUtil) checkGeometryFieldData(field *schemapb.FieldData, fieldSc
msg := fmt.Sprintf("geometry field '%v' is illegal, array type mismatch", field.GetFieldName()) msg := fmt.Sprintf("geometry field '%v' is illegal, array type mismatch", field.GetFieldName())
return merr.WrapErrParameterInvalid("need geometry array", "got nil", msg) return merr.WrapErrParameterInvalid("need geometry array", "got nil", msg)
} }
var err error
for index, wktdata := range geometryArray { for index, wktdata := range geometryArray {
// ignore parsed geom, the check is during insert task pre execute,so geo data became wkb // ignore parsed geom, the check is during insert task pre execute,so geo data became wkb
// fmt.Println(strings.Trim(string(wktdata), "\"")) // fmt.Println(strings.Trim(string(wktdata), "\""))
geomT, err := wkt.Unmarshal(wktdata) wkbArray[index], err = common.ConvertWKTToWKB(wktdata)
if err != nil {
log.Warn("insert invalid Geometry data!! The wkt data has errors", zap.Error(err))
return merr.WrapErrIoFailedReason(err.Error())
}
wkbArray[index], err = wkb.Marshal(geomT, wkb.NDR, wkbcommon.WKBOptionEmptyPointHandling(wkbcommon.EmptyPointHandlingNaN))
if err != nil { if err != nil {
log.Warn("insert invalid Geometry data!! Transform to wkb failed, has errors", zap.Error(err)) log.Warn("insert invalid Geometry data!! Transform to wkb failed, has errors", zap.Error(err))
return merr.WrapErrIoFailedReason(err.Error()) return merr.WrapErrIoFailedReason(err.Error())

View File

@ -22,8 +22,6 @@ import (
"strconv" "strconv"
"github.com/cockroachdb/errors" "github.com/cockroachdb/errors"
"github.com/twpayne/go-geom/encoding/wkb"
"github.com/twpayne/go-geom/encoding/wkt"
"go.uber.org/zap" "go.uber.org/zap"
"github.com/milvus-io/milvus-proto/go-api/v2/commonpb" "github.com/milvus-io/milvus-proto/go-api/v2/commonpb"
@ -140,13 +138,7 @@ func (t *createCollectionTask) checkMaxCollectionsPerDB(ctx context.Context, db2
} }
func checkGeometryDefaultValue(value string) error { func checkGeometryDefaultValue(value string) error {
geomT, err := wkt.Unmarshal(value) if _, err := common.ConvertWKTToWKB(value); err != nil {
if err != nil {
log.Warn("invalid default value for geometry field", zap.Error(err))
return merr.WrapErrParameterInvalidMsg("invalid default value for geometry field")
}
_, err = wkb.Marshal(geomT, wkb.NDR)
if err != nil {
log.Warn("invalid default value for geometry field", zap.Error(err)) log.Warn("invalid default value for geometry field", zap.Error(err))
return merr.WrapErrParameterInvalidMsg("invalid default value for geometry field") return merr.WrapErrParameterInvalidMsg("invalid default value for geometry field")
} }