Revert recycle struct optimisation to avoid pointer overwrites

This commit is contained in:
Edward McFarlane 2022-12-05 12:44:21 +00:00
parent a58159e00e
commit bb86abb588
2 changed files with 5 additions and 11 deletions

View File

@ -65,7 +65,6 @@ func (db *DB) scanIntoStruct(rows Rows, reflectValue reflect.Value, values []int
db.RowsAffected++ db.RowsAffected++
db.AddError(rows.Scan(values...)) db.AddError(rows.Scan(values...))
joinedSchemaMap := make(map[*schema.Field]interface{}) joinedSchemaMap := make(map[*schema.Field]interface{})
for idx, field := range fields { for idx, field := range fields {
if field == nil { if field == nil {
@ -242,7 +241,6 @@ func Scan(rows Rows, db *DB, mode ScanMode) {
case reflect.Slice, reflect.Array: case reflect.Slice, reflect.Array:
var ( var (
elem reflect.Value elem reflect.Value
recyclableStruct = reflect.New(reflectValueType)
isArrayKind = reflectValue.Kind() == reflect.Array isArrayKind = reflectValue.Kind() == reflect.Array
) )
@ -275,11 +273,7 @@ func Scan(rows Rows, db *DB, mode ScanMode) {
} }
} }
} else { } else {
if isPtr && db.RowsAffected > 0 {
elem = reflect.New(reflectValueType) elem = reflect.New(reflectValueType)
} else {
elem = recyclableStruct
}
} }
db.scanIntoStruct(rows, elem, values, fields, joinFields) db.scanIntoStruct(rows, elem, values, fields, joinFields)

View File

@ -89,9 +89,9 @@ func TestEmbeddedStruct(t *testing.T) {
} }
expectAuthors := []string{"Edward", "George"} expectAuthors := []string{"Edward", "George"}
for i, post := range egPosts { for i, post := range egPosts {
t.Log(i, post) t.Log(i, post.Author)
if want := expectAuthors[i]; post.Author.Name != want { if want := expectAuthors[i]; post.Author.Name != want {
t.Errorf("expected author %s got %s", post.Author.Name, want) t.Errorf("expected author %s got %s", want, post.Author.Name)
} }
} }