mirror of
https://gitee.com/milvus-io/milvus.git
synced 2025-12-06 09:08:43 +08:00
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:
parent
dd36ffa92d
commit
eb81e6ed01
@ -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 {
|
||||||
|
|||||||
@ -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())
|
||||||
|
|||||||
@ -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")
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user