fix: duplicate column scan

This commit is contained in:
a631807682 2022-05-24 10:50:34 +08:00
parent 7496c3a56e
commit a6b8eb4ba4
No known key found for this signature in database
GPG Key ID: 137D1D75522168AB
2 changed files with 8 additions and 0 deletions

View File

@ -196,6 +196,7 @@ func Scan(rows Rows, db *DB, mode ScanMode) {
for idx, column := range columns {
if field := sch.LookUpField(column); field != nil && field.Readable {
if curIndex, ok := selectedColumnsMap[column]; ok {
fields[idx] = field // handle duplicate fields
for fieldIndex, selectField := range sch.Fields[curIndex+1:] {
if selectField.DBName == column && selectField.Readable {
selectedColumnsMap[column] = curIndex + fieldIndex + 1

View File

@ -214,4 +214,11 @@ func TestScanToEmbedded(t *testing.T) {
if !addressMatched {
t.Errorf("Failed, no address matched")
}
personDupField := Person{ID: person1.ID}
if err := DB.Select("people.id, people.*").
First(&personDupField).Error; err != nil {
t.Errorf("Failed to run join query, got error: %v", err)
}
AssertEqual(t, person1, personDupField)
}