Skip to content

Commit cfe790b

Browse files
Merge branch 'null-returned-value' of https://github.com/oracle-samples/gorm-oracle into null-returned-value
2 parents a7f410d + 50ab5f7 commit cfe790b

File tree

2 files changed

+28
-28
lines changed

2 files changed

+28
-28
lines changed

tests/joins_test.go

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -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 {

tests/passed-tests.txt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -135,17 +135,17 @@ TestFailedToSaveAssociationShouldRollback
135135
TestUpdateCallbacks
136136
TestPropagateUnscoped
137137
#TestOverrideJoinTable
138-
#TestJoins
139-
#TestJoinsForSlice
140-
#TestJoinConds
141-
#TestJoinOn
138+
TestJoins
139+
TestJoinsForSlice
140+
TestJoinConds
141+
TestJoinOn
142142
TestJoinsWithSelect
143143
TestJoinWithOmit
144144
TestJoinCount
145145
#TestJoinWithSoftDeleted
146-
#TestInnerJoins
146+
TestInnerJoins
147147
TestJoinWithSameColumnName
148-
#TestJoinArgsWithDB
148+
TestJoinArgsWithDB
149149
TestNestedJoins
150150
TestJoinsPreload_Issue7013
151151
TestJoinsPreload_Issue7013_RelationEmpty

0 commit comments

Comments
 (0)