Skip to content

Commit

Permalink
Merge 14c6229 into 82935fa
Browse files Browse the repository at this point in the history
  • Loading branch information
fifsky committed Nov 16, 2018
2 parents 82935fa + 14c6229 commit 9f11e69
Showing 1 changed file with 16 additions and 5 deletions.
21 changes: 16 additions & 5 deletions sqlx.go
Original file line number Diff line number Diff line change
Expand Up @@ -900,7 +900,13 @@ func scanAll(rows rowsi, dest interface{}, structOnly bool) error {
if value.IsNil() {
return errors.New("nil pointer passed to StructScan destination")
}
direct := reflect.Indirect(value)
baseDirect := reflect.Indirect(value)
direct := baseDirect

if direct.Kind() == reflect.Interface {
value = direct.Elem()
direct = reflect.Indirect(value)
}

slice, err := baseType(value.Type(), reflect.Slice)
if err != nil {
Expand Down Expand Up @@ -960,25 +966,30 @@ func scanAll(rows rowsi, dest interface{}, structOnly bool) error {
}

if isPtr {
direct.Set(reflect.Append(direct, vp))
direct = reflect.Append(direct, vp)
} else {
direct.Set(reflect.Append(direct, v))
direct = reflect.Append(direct, v)
}
}
baseDirect.Set(direct)
} else {
for rows.Next() {
vp = reflect.New(base)
v = reflect.Indirect(vp)

err = rows.Scan(vp.Interface())
if err != nil {
return err
}
// append
if isPtr {
direct.Set(reflect.Append(direct, vp))
direct = reflect.Append(direct, vp)
} else {
direct.Set(reflect.Append(direct, reflect.Indirect(vp)))
direct = reflect.Append(direct, v)
}
}

baseDirect.Set(direct)
}

return rows.Err()
Expand Down

0 comments on commit 9f11e69

Please sign in to comment.