Fixed Empty Returning Clause Merge Bug (#7339)

This commit is contained in:
aviyam181199 2025-01-12 12:18:04 +02:00 committed by GitHub
parent 4ef3af10ed
commit 8503287ca4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 22 additions and 3 deletions

View File

@ -26,9 +26,12 @@ func (returning Returning) Build(builder Builder) {
// MergeClause merge order by clauses
func (returning Returning) MergeClause(clause *Clause) {
if v, ok := clause.Expression.(Returning); ok {
returning.Columns = append(v.Columns, returning.Columns...)
if v, ok := clause.Expression.(Returning); ok && len(returning.Columns) > 0 {
if v.Columns != nil {
returning.Columns = append(v.Columns, returning.Columns...)
} else {
returning.Columns = nil
}
}
clause.Expression = returning
}

View File

@ -26,6 +26,22 @@ func TestReturning(t *testing.T) {
}},
"SELECT * FROM `users` RETURNING `users`.`id`,`name`,`age`", nil,
},
{
[]clause.Interface{clause.Select{}, clause.From{}, clause.Returning{
[]clause.Column{clause.PrimaryColumn},
}, clause.Returning{}, clause.Returning{
[]clause.Column{{Name: "name"}, {Name: "age"}},
}},
"SELECT * FROM `users` RETURNING *", nil,
},
{
[]clause.Interface{clause.Select{}, clause.From{}, clause.Returning{
[]clause.Column{clause.PrimaryColumn},
}, clause.Returning{
[]clause.Column{{Name: "name"}, {Name: "age"}},
}, clause.Returning{}},
"SELECT * FROM `users` RETURNING *", nil,
},
}
for idx, result := range results {