From 8503287ca442ff46c6d0b1204232fc4809012737 Mon Sep 17 00:00:00 2001 From: aviyam181199 <62248413+aviyam181199@users.noreply.github.com> Date: Sun, 12 Jan 2025 12:18:04 +0200 Subject: [PATCH] Fixed Empty Returning Clause Merge Bug (#7339) --- clause/returning.go | 9 ++++++--- clause/returning_test.go | 16 ++++++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/clause/returning.go b/clause/returning.go index d94b7a4c..76064c4a 100644 --- a/clause/returning.go +++ b/clause/returning.go @@ -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 } diff --git a/clause/returning_test.go b/clause/returning_test.go index bd0ecce8..b7a408ba 100644 --- a/clause/returning_test.go +++ b/clause/returning_test.go @@ -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 {