forked from mirror/gorm
remove old elements from the output parameter of Pluck()
This commit is contained in:
parent
7bc3561503
commit
8d1e6bc0f8
31
main_test.go
31
main_test.go
|
@ -1110,6 +1110,37 @@ func TestCountWithHaving(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestPluck(t *testing.T) {
|
||||
db := DB.New()
|
||||
db.Delete(User{})
|
||||
defer db.Delete(User{})
|
||||
|
||||
DB.Create(&User{Id: 1, Name: "user1"})
|
||||
DB.Create(&User{Id: 2, Name: "user2"})
|
||||
DB.Create(&User{Id: 3, Name: "user3"})
|
||||
|
||||
var ids []int64
|
||||
err := db.Model(User{}).Order("id").Pluck("id", &ids).Error
|
||||
|
||||
if err != nil {
|
||||
t.Error("Unexpected error on pluck")
|
||||
}
|
||||
|
||||
if len(ids) != 3 || ids[0] != 1 || ids[1] != 2 || ids[2] != 3 {
|
||||
t.Error("Unexpected result on pluck")
|
||||
}
|
||||
|
||||
err = db.Model(User{}).Order("id").Pluck("id", &ids).Error
|
||||
|
||||
if err != nil {
|
||||
t.Error("Unexpected error on pluck again")
|
||||
}
|
||||
|
||||
if len(ids) != 3 || ids[0] != 1 || ids[1] != 2 || ids[2] != 3 {
|
||||
t.Error("Unexpected result on pluck again")
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkGorm(b *testing.B) {
|
||||
b.N = 2000
|
||||
for x := 0; x < b.N; x++ {
|
||||
|
|
4
scope.go
4
scope.go
|
@ -984,6 +984,10 @@ func (scope *Scope) pluck(column string, value interface{}) *Scope {
|
|||
return scope
|
||||
}
|
||||
|
||||
if dest.Len() > 0 {
|
||||
dest.Set(reflect.Zero(dest.Type()))
|
||||
}
|
||||
|
||||
if query, ok := scope.Search.selects["query"]; !ok || !scope.isQueryForColumn(query, column) {
|
||||
scope.Search.Select(column)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue