diff --git a/internal/proxy/util.go b/internal/proxy/util.go index 6376b07b8f..101128c462 100644 --- a/internal/proxy/util.go +++ b/internal/proxy/util.go @@ -655,13 +655,9 @@ func ValidateFieldsInStruct(field *schemapb.FieldSchema, schema *schemapb.Collec return fmt.Errorf("Nested array is not supported %s", field.Name) } - if field.ElementType == schemapb.DataType_JSON { - return fmt.Errorf("JSON is not supported for fields in struct, fieldName = %s", field.Name) - } - if field.DataType == schemapb.DataType_Array { - if typeutil.IsVectorType(field.GetElementType()) { - return fmt.Errorf("Inconsistent schema: element type of array field %s is a vector type", field.Name) + if err := validateElementType(field.GetElementType()); err != nil { + return err } } else { // TODO(SpadeA): only support float vector now diff --git a/internal/proxy/util_test.go b/internal/proxy/util_test.go index 1b2eb3760f..f95e7b11c3 100644 --- a/internal/proxy/util_test.go +++ b/internal/proxy/util_test.go @@ -3914,7 +3914,7 @@ func TestValidateFieldsInStruct(t *testing.T) { } err := ValidateFieldsInStruct(field, schema) assert.Error(t, err) - assert.Contains(t, err.Error(), "JSON is not supported for fields in struct") + assert.Contains(t, err.Error(), "is not supported") }) t.Run("nested array not supported", func(t *testing.T) { @@ -3946,7 +3946,7 @@ func TestValidateFieldsInStruct(t *testing.T) { } err := ValidateFieldsInStruct(field, schema) assert.Error(t, err) - assert.Contains(t, err.Error(), "element type of array field array_with_vector is a vector type") + assert.Contains(t, err.Error(), "element type FloatVector is not supported") }) t.Run("array of vector field with non-vector element type", func(t *testing.T) { @@ -4060,7 +4060,6 @@ func TestValidateFieldsInStruct(t *testing.T) { schemapb.DataType_Int64, schemapb.DataType_Float, schemapb.DataType_Double, - schemapb.DataType_String, } for _, dt := range validScalarTypes {