@@ -57,7 +57,7 @@ func TestJoins(t *testing.T) {
5757 DB .Create (& user )
5858
5959 var user2 User
60- if err := DB .Joins ("NamedPet" ).Joins ("Company" ).Joins ("Manager" ).Joins ("Account" ).First (& user2 , "users. name = ?" , user .Name ).Error ; err != nil {
60+ if err := DB .Joins ("NamedPet" ).Joins ("Company" ).Joins ("Manager" ).Joins ("Account" ).First (& user2 , "\" users\" . \" name\" = ?" , user .Name ).Error ; err != nil {
6161 t .Fatalf ("Failed to load with joins, got error: %v" , err )
6262 }
6363
@@ -79,7 +79,7 @@ func TestJoinsForSlice(t *testing.T) {
7979 }
8080
8181 var users2 []User
82- if err := DB .Joins ("Company" ).Joins ("Manager" ).Joins ("Account" ).Find (& users2 , "users.id IN ?" , userIDs ).Error ; err != nil {
82+ if err := DB .Joins ("Company" ).Joins ("Manager" ).Joins ("Account" ).Find (& users2 , "\" users\" . \" id \" IN ?" , userIDs ).Error ; err != nil {
8383 t .Fatalf ("Failed to load with joins, got error: %v" , err )
8484 } else if len (users2 ) != len (users ) {
8585 t .Fatalf ("Failed to load join users, got: %v, expect: %v" , len (users2 ), len (users ))
@@ -103,51 +103,51 @@ func TestJoinConds(t *testing.T) {
103103 DB .Save (& user )
104104
105105 var users1 []User
106- DB .Joins (" inner join pets on pets. user_id = users. id" ).Where ("users. name = ?" , user .Name ).Find (& users1 )
106+ DB .Joins (` inner join " pets" on " pets"." user_id" = " users"." id"` ).Where (` "users"." name" = ?` , user .Name ).Find (& users1 )
107107 if len (users1 ) != 3 {
108108 t .Errorf ("should find two users using left join, but got %v" , len (users1 ))
109109 }
110110
111111 var users2 []User
112- DB .Joins (" inner join pets on pets. user_id = users.id AND pets. name = ?" , user .Pets [0 ].Name ).Where ("users. name = ?" , user .Name ).First (& users2 )
112+ DB .Joins (` inner join " pets" on " pets"." user_id" = " users"."id" AND " pets"." name" = ?` , user .Pets [0 ].Name ).Where (` "users"." name" = ?` , user .Name ).First (& users2 )
113113 if len (users2 ) != 1 {
114114 t .Errorf ("should find one users using left join with conditions, but got %v" , len (users2 ))
115115 }
116116
117117 var users3 []User
118- DB .Joins (" inner join pets on pets. user_id = users.id AND pets. name = ?" , user .Pets [0 ].Name ).Joins (" join accounts on accounts. user_id = users.id AND accounts.number = ?" , user .Account .AccountNumber ).Where ("users. name = ?" , user .Name ).First (& users3 )
118+ DB .Joins (` inner join " pets" on " pets"." user_id" = " users"."id" AND " pets"." name" = ?` , user .Pets [0 ].Name ).Joins (` join " accounts" on " accounts"." user_id" = " users"."id" AND " accounts"."account_number" = ?` , user .Account .AccountNumber ).Where (` "users"." name" = ?` , user .Name ).First (& users3 )
119119 if len (users3 ) != 1 {
120120 t .Errorf ("should find one users using multiple left join conditions, but got %v" , len (users3 ))
121121 }
122122
123123 var users4 []User
124- DB .Joins (" inner join pets on pets. user_id = users.id AND pets. name = ?" , user .Pets [0 ].Name ).Joins (" join accounts on accounts. user_id = users.id AND accounts.number = ?" , user .Account .AccountNumber + "non-exist" ).Where ("users. name = ?" , user .Name ).First (& users4 )
124+ DB .Joins (` inner join " pets" on " pets"." user_id" = " users"."id" AND " pets"." name" = ?` , user .Pets [0 ].Name ).Joins (` join " accounts" on " accounts"." user_id" = " users"."id" AND " accounts"."account_number" = ?` , user .Account .AccountNumber + "non-exist" ).Where (` "users"." name" = ?` , user .Name ).First (& users4 )
125125 if len (users4 ) != 0 {
126126 t .Errorf ("should find no user when searching with unexisting credit card, but got %v" , len (users4 ))
127127 }
128128
129129 var users5 []User
130- db5 := DB .Joins (" inner join pets on pets. user_id = users.id AND pets. name = ?" , user .Pets [0 ].Name ).Joins (" join accounts on accounts. user_id = users.id AND accounts.number = ?" , user .Account .AccountNumber ).Where (User {Model : gorm.Model {ID : 1 }}).Where (Account {Model : gorm.Model {ID : 1 }}).Not (Pet {Model : gorm.Model {ID : 1 }}).Find (& users5 )
130+ db5 := DB .Joins (` inner join " pets" on " pets"." user_id" = " users"."id" AND " pets"." name" = ?` , user .Pets [0 ].Name ).Joins (` join " accounts" on " accounts"." user_id" = " users"."id" AND " accounts"."account_number" = ?` , user .Account .AccountNumber ).Where (User {Model : gorm.Model {ID : 1 }}).Where (Account {Model : gorm.Model {ID : 1 }}).Not (Pet {Model : gorm.Model {ID : 1 }}).Find (& users5 )
131131 if db5 .Error != nil {
132132 t .Errorf ("Should not raise error for join where identical fields in different tables. Error: %s" , db5 .Error .Error ())
133133 }
134134
135135 var users6 []User
136- DB .Joins (" inner join pets on pets. user_id = users.id AND pets. name = @Name" , user .Pets [0 ]).Where ("users. name = ?" , user .Name ).First (& users6 )
136+ DB .Joins (` inner join " pets" on " pets"." user_id" = " users"."id" AND " pets"." name" = @Name` , user .Pets [0 ]).Where (` "users"." name" = ?` , user .Name ).First (& users6 )
137137 if len (users6 ) != 1 {
138138 t .Errorf ("should find one users using left join with conditions, but got %v" , len (users6 ))
139139 }
140140
141141 dryDB := DB .Session (& gorm.Session {DryRun : true })
142- stmt := dryDB .Joins (" left join pets on pets. user_id = users.id AND pets. name = ?" , user .Pets [0 ].Name ).Joins (" join accounts on accounts. user_id = users.id AND accounts. number = ?" , user .Account .AccountNumber ).Where (User {Model : gorm.Model {ID : 1 }}).Where (Account {Model : gorm.Model {ID : 1 }}).Not (Pet {Model : gorm.Model {ID : 1 }}).Find (& users5 ).Statement
142+ stmt := dryDB .Joins (` left join " pets" on " pets"." user_id" = " users"."id" AND " pets"." name" = ?` , user .Pets [0 ].Name ).Joins (` join " accounts" on " accounts""." user_id" = " users"."id" AND " accounts"." number" = ?` , user .Account .AccountNumber ).Where (User {Model : gorm.Model {ID : 1 }}).Where (Account {Model : gorm.Model {ID : 1 }}).Not (Pet {Model : gorm.Model {ID : 1 }}).Find (& users5 ).Statement
143143
144- if ! regexp .MustCompile (" SELECT .* FROM . users. left join pets.*join accounts.*" ).MatchString (stmt .SQL .String ()) {
144+ if ! regexp .MustCompile (` SELECT .* FROM\s+" users"\s+ left join\s+" pets" .*join\s+" accounts".*` ).MatchString (stmt .SQL .String ()) {
145145 t .Errorf ("joins should be ordered, but got %v" , stmt .SQL .String ())
146146 }
147147
148- iv := DB .Table (`table_invoices` ).Select (`seller, SUM(total) as total, SUM(paid) as paid, SUM(balance) as balance` ).Group (`seller` )
149- stmt = dryDB .Table (`table_employees` ).Select (`id, name, iv. total, iv. paid, iv. balance` ).Joins (`LEFT JOIN (?) iv ON iv. seller = table_employees.id ` , iv ).Scan (& user ).Statement
150- if ! regexp .MustCompile (" SELECT id, name, iv.total, iv.paid, iv.balance FROM . table_employees. LEFT JOIN \ \ (SELECT seller, SUM \\ (total \\ ) as total, SUM \\ (paid \\ ) as paid, SUM \\ (balance \\ ) as balance FROM . table_invoices. GROUP BY . seller. \\ ) iv ON iv. seller = table_employees. id" ).MatchString (stmt .SQL .String ()) {
148+ iv := DB .Table (`" table_invoices" ` ).Select (`" seller" , SUM(" total" ) as " total" , SUM(" paid" ) as " paid" , SUM(" balance" ) as " balance" ` ).Group (`" seller" ` )
149+ stmt = dryDB .Table (`" table_employees" ` ).Select (`"id", " name", "iv"." total", "iv"." paid", "iv"." balance" ` ).Joins (`LEFT JOIN (?) "iv" ON "iv"." seller" = " table_employees"."id" ` , iv ).Scan (& user ).Statement
150+ if ! regexp .MustCompile (` SELECT\s+.*"id".* FROM\s+" table_employees"\s+ LEFT JOIN\s+ \(SELECT\s+.*"seller".*FROM\s+" table_invoices".* GROUP\s+BY\s+" seller"\)\s+"iv"\s+ON\s+.*" seller".*=.*" table_employees"\." id"` ).MatchString (stmt .SQL .String ()) {
151151 t .Errorf ("joins should be ordered, but got %v" , stmt .SQL .String ())
152152 }
153153}
@@ -159,15 +159,15 @@ func TestJoinOn(t *testing.T) {
159159 var user1 User
160160 onQuery := DB .Where (& Pet {Name : "joins-on_pet_1" })
161161
162- if err := DB .Joins ("NamedPet" , onQuery ).Where ("users. name = ?" , user .Name ).First (& user1 ).Error ; err != nil {
162+ if err := DB .Joins ("NamedPet" , onQuery ).Where ("\" users\" . \" name\" = ?" , user .Name ).First (& user1 ).Error ; err != nil {
163163 t .Fatalf ("Failed to load with joins on, got error: %v" , err )
164164 }
165165
166166 tests .AssertEqual (t , user1 .NamedPet .Name , "joins-on_pet_1" )
167167
168168 onQuery2 := DB .Where (& Pet {Name : "joins-on_pet_2" })
169169 var user2 User
170- if err := DB .Joins ("NamedPet" , onQuery2 ).Where ("users. name = ?" , user .Name ).First (& user2 ).Error ; err != nil {
170+ if err := DB .Joins ("NamedPet" , onQuery2 ).Where ("\" users\" . \" name\" = ?" , user .Name ).First (& user2 ).Error ; err != nil {
171171 t .Fatalf ("Failed to load with joins on, got error: %v" , err )
172172 }
173173 tests .AssertEqual (t , user2 .NamedPet .Name , "joins-on_pet_2" )
@@ -281,17 +281,17 @@ func TestInnerJoins(t *testing.T) {
281281
282282 var user2 User
283283 var err error
284- err = DB .InnerJoins ("Company" ).InnerJoins ("Manager" ).InnerJoins ("Account" ).First (& user2 , "users. name = ?" , user .Name ).Error
284+ err = DB .InnerJoins ("Company" ).InnerJoins ("Manager" ).InnerJoins ("Account" ).First (& user2 , "\" users\" . \" name\" = ?" , user .Name ).Error
285285 tests .AssertEqual (t , err , nil )
286286 CheckUser (t , user2 , user )
287287
288288 // inner join and NamedPet is nil
289- err = DB .InnerJoins ("NamedPet" ).InnerJoins ("Company" ).InnerJoins ("Manager" ).InnerJoins ("Account" ).First (& user2 , "users. name = ?" , user .Name ).Error
289+ err = DB .InnerJoins ("NamedPet" ).InnerJoins ("Company" ).InnerJoins ("Manager" ).InnerJoins ("Account" ).First (& user2 , "\" users\" . \" name\" = ?" , user .Name ).Error
290290 tests .AssertEqual (t , err , gorm .ErrRecordNotFound )
291291
292292 // mixed inner join and left join
293293 var user3 User
294- err = DB .Joins ("NamedPet" ).InnerJoins ("Company" ).InnerJoins ("Manager" ).InnerJoins ("Account" ).First (& user3 , "users. name = ?" , user .Name ).Error
294+ err = DB .Joins ("NamedPet" ).InnerJoins ("Company" ).InnerJoins ("Manager" ).InnerJoins ("Account" ).First (& user3 , "\" users\" . \" name\" = ?" , user .Name ).Error
295295 tests .AssertEqual (t , err , nil )
296296 CheckUser (t , user3 , user )
297297}
@@ -334,7 +334,7 @@ func TestJoinArgsWithDB(t *testing.T) {
334334 // test where
335335 var user1 User
336336 onQuery := DB .Where (& Pet {Name : "joins-args-db_pet_2" })
337- if err := DB .Joins ("NamedPet" , onQuery ).Where ("users. name = ?" , user .Name ).First (& user1 ).Error ; err != nil {
337+ if err := DB .Joins ("NamedPet" , onQuery ).Where ("\" users\" . \" name\" = ?" , user .Name ).First (& user1 ).Error ; err != nil {
338338 t .Fatalf ("Failed to load with joins on, got error: %v" , err )
339339 }
340340
@@ -343,7 +343,7 @@ func TestJoinArgsWithDB(t *testing.T) {
343343 // test where and omit
344344 onQuery2 := DB .Where (& Pet {Name : "joins-args-db_pet_2" }).Omit ("Name" )
345345 var user2 User
346- if err := DB .Joins ("NamedPet" , onQuery2 ).Where ("users. name = ?" , user .Name ).First (& user2 ).Error ; err != nil {
346+ if err := DB .Joins ("NamedPet" , onQuery2 ).Where ("\" users\" . \" name\" = ?" , user .Name ).First (& user2 ).Error ; err != nil {
347347 t .Fatalf ("Failed to load with joins on, got error: %v" , err )
348348 }
349349 tests .AssertEqual (t , user2 .NamedPet .ID , user1 .NamedPet .ID )
@@ -352,7 +352,7 @@ func TestJoinArgsWithDB(t *testing.T) {
352352 // test where and select
353353 onQuery3 := DB .Where (& Pet {Name : "joins-args-db_pet_2" }).Select ("Name" )
354354 var user3 User
355- if err := DB .Joins ("NamedPet" , onQuery3 ).Where ("users. name = ?" , user .Name ).First (& user3 ).Error ; err != nil {
355+ if err := DB .Joins ("NamedPet" , onQuery3 ).Where ("\" users\" . \" name\" = ?" , user .Name ).First (& user3 ).Error ; err != nil {
356356 t .Fatalf ("Failed to load with joins on, got error: %v" , err )
357357 }
358358 tests .AssertEqual (t , user3 .NamedPet .ID , 0 )
@@ -361,7 +361,7 @@ func TestJoinArgsWithDB(t *testing.T) {
361361 // test select
362362 onQuery4 := DB .Select ("ID" )
363363 var user4 User
364- if err := DB .Joins ("NamedPet" , onQuery4 ).Where ("users. name = ?" , user .Name ).First (& user4 ).Error ; err != nil {
364+ if err := DB .Joins ("NamedPet" , onQuery4 ).Where ("\" users\" . \" name\" = ?" , user .Name ).First (& user4 ).Error ; err != nil {
365365 t .Fatalf ("Failed to load with joins on, got error: %v" , err )
366366 }
367367 if user4 .NamedPet .ID == 0 {
0 commit comments