Skip to content

Commit 8503287

Browse files
authored
Fixed Empty Returning Clause Merge Bug (#7339)
1 parent 4ef3af1 commit 8503287

File tree

2 files changed

+22
-3
lines changed

2 files changed

+22
-3
lines changed

clause/returning.go

+6-3
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,12 @@ func (returning Returning) Build(builder Builder) {
2626

2727
// MergeClause merge order by clauses
2828
func (returning Returning) MergeClause(clause *Clause) {
29-
if v, ok := clause.Expression.(Returning); ok {
30-
returning.Columns = append(v.Columns, returning.Columns...)
29+
if v, ok := clause.Expression.(Returning); ok && len(returning.Columns) > 0 {
30+
if v.Columns != nil {
31+
returning.Columns = append(v.Columns, returning.Columns...)
32+
} else {
33+
returning.Columns = nil
34+
}
3135
}
32-
3336
clause.Expression = returning
3437
}

clause/returning_test.go

+16
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,22 @@ func TestReturning(t *testing.T) {
2626
}},
2727
"SELECT * FROM `users` RETURNING `users`.`id`,`name`,`age`", nil,
2828
},
29+
{
30+
[]clause.Interface{clause.Select{}, clause.From{}, clause.Returning{
31+
[]clause.Column{clause.PrimaryColumn},
32+
}, clause.Returning{}, clause.Returning{
33+
[]clause.Column{{Name: "name"}, {Name: "age"}},
34+
}},
35+
"SELECT * FROM `users` RETURNING *", nil,
36+
},
37+
{
38+
[]clause.Interface{clause.Select{}, clause.From{}, clause.Returning{
39+
[]clause.Column{clause.PrimaryColumn},
40+
}, clause.Returning{
41+
[]clause.Column{{Name: "name"}, {Name: "age"}},
42+
}, clause.Returning{}},
43+
"SELECT * FROM `users` RETURNING *", nil,
44+
},
2945
}
3046

3147
for idx, result := range results {

0 commit comments

Comments
 (0)