From 8f8d549ca36d34a1f1dbbbd422071990e9b8a78d Mon Sep 17 00:00:00 2001 From: Jinzhu Date: Mon, 8 Jun 2020 09:10:27 +0800 Subject: [PATCH] Refactor merge where exprs --- clause/where.go | 7 ++++--- statement_test.go | 3 +-- tests/named_polymorphic_test.go | 1 + 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/clause/where.go b/clause/where.go index 806565d1..6399a2d5 100644 --- a/clause/where.go +++ b/clause/where.go @@ -40,9 +40,10 @@ func (where Where) Build(builder Builder) { // MergeClause merge where clauses func (where Where) MergeClause(clause *Clause) { if w, ok := clause.Expression.(Where); ok { - copiedExpressions := make([]Expression, len(w.Exprs)) - copy(copiedExpressions, w.Exprs) - where.Exprs = append(copiedExpressions, where.Exprs...) + exprs := make([]Expression, len(w.Exprs)+len(where.Exprs)) + copy(exprs, w.Exprs) + copy(exprs[len(w.Exprs):], where.Exprs) + where.Exprs = exprs } clause.Expression = where diff --git a/statement_test.go b/statement_test.go index 7d730875..16956e85 100644 --- a/statement_test.go +++ b/statement_test.go @@ -4,7 +4,7 @@ import ( "fmt" "reflect" "testing" - + "gorm.io/gorm/clause" ) @@ -34,4 +34,3 @@ func TestWhereCloneCorruption(t *testing.T) { }) } } - diff --git a/tests/named_polymorphic_test.go b/tests/named_polymorphic_test.go index 61655784..cbe236b5 100644 --- a/tests/named_polymorphic_test.go +++ b/tests/named_polymorphic_test.go @@ -14,6 +14,7 @@ type Hamster struct { } func TestNamedPolymorphic(t *testing.T) { + DB.Migrator().DropTable(&Hamster{}) DB.AutoMigrate(&Hamster{}) hamster := Hamster{Name: "Mr. Hammond", PreferredToy: Toy{Name: "bike"}, OtherToy: Toy{Name: "treadmill"}}