mirror of https://github.com/go-gorm/gorm.git
Fix *Scope.buildNotCondition
this fixes the logic of handling empty slice of int family in a query i.e something linke `[]int64{}` This code snipped doesn't look like it was intended to be this way ``` if reflect.ValueOf(value).Len() > 0 { str = fmt.Sprintf("(%v.%v NOT IN (?))", scope.QuotedTableName(), scope.Quote(primaryKey)) clause["args"] = []interface{}{value} } return "" ``` The `return ""` is always guaranteed to be executed regardless of whether the length of value is greater than 0. I believe the intended behavior is to return `""` when the length of value is zero.
This commit is contained in:
parent
da8c2409ab
commit
eb0880e710
3
scope.go
3
scope.go
|
@ -593,8 +593,9 @@ func (scope *Scope) buildNotCondition(clause map[string]interface{}) (str string
|
||||||
if reflect.ValueOf(value).Len() > 0 {
|
if reflect.ValueOf(value).Len() > 0 {
|
||||||
str = fmt.Sprintf("(%v.%v NOT IN (?))", scope.QuotedTableName(), scope.Quote(primaryKey))
|
str = fmt.Sprintf("(%v.%v NOT IN (?))", scope.QuotedTableName(), scope.Quote(primaryKey))
|
||||||
clause["args"] = []interface{}{value}
|
clause["args"] = []interface{}{value}
|
||||||
}
|
} else {
|
||||||
return ""
|
return ""
|
||||||
|
}
|
||||||
case map[string]interface{}:
|
case map[string]interface{}:
|
||||||
var sqls []string
|
var sqls []string
|
||||||
for key, value := range value {
|
for key, value := range value {
|
||||||
|
|
Loading…
Reference in New Issue