fix: duplicate column scan
This commit is contained in:
parent
7496c3a56e
commit
a6b8eb4ba4
1
scan.go
1
scan.go
@ -196,6 +196,7 @@ func Scan(rows Rows, db *DB, mode ScanMode) {
|
|||||||
for idx, column := range columns {
|
for idx, column := range columns {
|
||||||
if field := sch.LookUpField(column); field != nil && field.Readable {
|
if field := sch.LookUpField(column); field != nil && field.Readable {
|
||||||
if curIndex, ok := selectedColumnsMap[column]; ok {
|
if curIndex, ok := selectedColumnsMap[column]; ok {
|
||||||
|
fields[idx] = field // handle duplicate fields
|
||||||
for fieldIndex, selectField := range sch.Fields[curIndex+1:] {
|
for fieldIndex, selectField := range sch.Fields[curIndex+1:] {
|
||||||
if selectField.DBName == column && selectField.Readable {
|
if selectField.DBName == column && selectField.Readable {
|
||||||
selectedColumnsMap[column] = curIndex + fieldIndex + 1
|
selectedColumnsMap[column] = curIndex + fieldIndex + 1
|
||||||
|
@ -214,4 +214,11 @@ func TestScanToEmbedded(t *testing.T) {
|
|||||||
if !addressMatched {
|
if !addressMatched {
|
||||||
t.Errorf("Failed, no address matched")
|
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)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user