enhance: [cherry-pick]Disallow the keywords as a field name or dynamic field name (#36108)

issue: #35873

master pr: #36101

Signed-off-by: Cai Zhang <cai.zhang@zilliz.com>
pull/36324/head
cai.zhang 2024-09-15 15:19:14 +08:00 committed by GitHub
parent 2bc454bf40
commit eb47150f66
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 40 additions and 0 deletions

View File

@ -275,6 +275,10 @@ func validateFieldName(fieldName string) error {
return merr.WrapErrFieldNameInvalid(fieldName, msg)
}
}
if _, ok := common.FieldNameKeywords[fieldName]; ok {
msg := invalidMsg + fmt.Sprintf("%s is keyword in milvus.", fieldName)
return merr.WrapErrFieldNameInvalid(fieldName, msg)
}
return nil
}

View File

@ -174,6 +174,10 @@ func TestValidateFieldName(t *testing.T) {
"",
string(longName),
"中文",
"True",
"array_contains",
"json_contains_any",
"ARRAY_LENGTH",
}
for _, name := range invalidNames {

32
pkg/common/keywords.go Normal file
View File

@ -0,0 +1,32 @@
package common
var FieldNameKeywords = map[string]struct{}{
"$meta": {},
"like": {},
"exists": {},
"EXISTS": {},
"and": {},
"or": {},
"not": {},
"in": {},
"json_contains": {},
"JSON_CONTAINS": {},
"json_contains_all": {},
"JSON_CONTAINS_ALL": {},
"json_contains_any": {},
"JSON_CONTAINS_ANY": {},
"array_contains": {},
"ARRAY_CONTAINS": {},
"array_contains_all": {},
"ARRAY_CONTAINS_ALL": {},
"array_contains_any": {},
"ARRAY_CONTAINS_ANY": {},
"array_length": {},
"ARRAY_LENGTH": {},
"true": {},
"True": {},
"TRUE": {},
"false": {},
"False": {},
"FALSE": {},
}