Skip to content

Commit

Permalink
remove old elements from the output parameter of Pluck()
Browse files Browse the repository at this point in the history
  • Loading branch information
zenovich committed Apr 19, 2019
1 parent 7bc3561 commit 8d1e6bc
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 0 deletions.
31 changes: 31 additions & 0 deletions main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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++ {
Expand Down
4 changes: 4 additions & 0 deletions scope.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
Expand Down

0 comments on commit 8d1e6bc

Please sign in to comment.