From e48dbff811500c81bb1c58b8d41d472ec01436cf Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Mon, 25 Jan 2021 12:56:55 +0800 Subject: [PATCH 1/4] Fix bug because of duplicated join --- models/issue.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/models/issue.go b/models/issue.go index 1374f82fbd860..bf1696afdc95d 100644 --- a/models/issue.go +++ b/models/issue.go @@ -1210,7 +1210,7 @@ func (opts *IssuesOptions) setupSession(sess *xorm.Session) { } if opts.IsArchived != util.OptionalBoolNone { - sess.Join("INNER", "repository", "issue.repo_id = repository.id").And(builder.Eq{"repository.is_archived": opts.IsArchived.IsTrue()}) + sess.And(builder.Eq{"repository.is_archived": opts.IsArchived.IsTrue()}) } if opts.LabelIDs != nil { @@ -1292,11 +1292,12 @@ func GetRepoIDsForIssuesOptions(opts *IssuesOptions, user *User) ([]int64, error sess := x.NewSession() defer sess.Close() + sess.Join("INNER", "repository", "`issue`.repo_id = `repository`.id") + opts.setupSession(sess) accessCond := accessibleRepositoryCondition(user) if err := sess.Where(accessCond). - Join("INNER", "repository", "`issue`.repo_id = `repository`.id"). Distinct("issue.repo_id"). Table("issue"). Find(&repoIDs); err != nil { From 665993e4490d1efa2b607d189898de9af72b4766 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Mon, 25 Jan 2021 20:00:22 +0800 Subject: [PATCH 2/4] Move join into setupsession --- models/issue.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/models/issue.go b/models/issue.go index bf1696afdc95d..16d0cf82ec7e3 100644 --- a/models/issue.go +++ b/models/issue.go @@ -1210,7 +1210,8 @@ func (opts *IssuesOptions) setupSession(sess *xorm.Session) { } if opts.IsArchived != util.OptionalBoolNone { - sess.And(builder.Eq{"repository.is_archived": opts.IsArchived.IsTrue()}) + sess.Join("INNER", "repository", "`issue`.repo_id = `repository`.id"). + And(builder.Eq{"repository.is_archived": opts.IsArchived.IsTrue()}) } if opts.LabelIDs != nil { @@ -1292,8 +1293,6 @@ func GetRepoIDsForIssuesOptions(opts *IssuesOptions, user *User) ([]int64, error sess := x.NewSession() defer sess.Close() - sess.Join("INNER", "repository", "`issue`.repo_id = `repository`.id") - opts.setupSession(sess) accessCond := accessibleRepositoryCondition(user) From 6e60d24948ea4614f995bc7d8330416bdad8b9c7 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Mon, 25 Jan 2021 23:48:24 +0800 Subject: [PATCH 3/4] Fix bug --- models/issue.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/models/issue.go b/models/issue.go index 16d0cf82ec7e3..bf1696afdc95d 100644 --- a/models/issue.go +++ b/models/issue.go @@ -1210,8 +1210,7 @@ func (opts *IssuesOptions) setupSession(sess *xorm.Session) { } if opts.IsArchived != util.OptionalBoolNone { - sess.Join("INNER", "repository", "`issue`.repo_id = `repository`.id"). - And(builder.Eq{"repository.is_archived": opts.IsArchived.IsTrue()}) + sess.And(builder.Eq{"repository.is_archived": opts.IsArchived.IsTrue()}) } if opts.LabelIDs != nil { @@ -1293,6 +1292,8 @@ func GetRepoIDsForIssuesOptions(opts *IssuesOptions, user *User) ([]int64, error sess := x.NewSession() defer sess.Close() + sess.Join("INNER", "repository", "`issue`.repo_id = `repository`.id") + opts.setupSession(sess) accessCond := accessibleRepositoryCondition(user) From 340079d5664c7ebc29c8fc7249c0d08258902a31 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Tue, 26 Jan 2021 20:48:32 +0800 Subject: [PATCH 4/4] Fix bug --- models/issue.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/models/issue.go b/models/issue.go index bf1696afdc95d..a7392633af51f 100644 --- a/models/issue.go +++ b/models/issue.go @@ -1266,6 +1266,8 @@ func CountIssuesByRepo(opts *IssuesOptions) (map[int64]int64, error) { sess := x.NewSession() defer sess.Close() + sess.Join("INNER", "repository", "`issue`.repo_id = `repository`.id") + opts.setupSession(sess) countsSlice := make([]*struct { @@ -1312,6 +1314,7 @@ func Issues(opts *IssuesOptions) ([]*Issue, error) { sess := x.NewSession() defer sess.Close() + sess.Join("INNER", "repository", "`issue`.repo_id = `repository`.id") opts.setupSession(sess) sortIssuesSession(sess, opts.SortType, opts.PriorityRepoID) @@ -1339,6 +1342,7 @@ func CountIssues(opts *IssuesOptions) (int64, error) { }, 0, 1) sess.Select("COUNT(issue.id) AS count").Table("issue") + sess.Join("INNER", "repository", "`issue`.repo_id = `repository`.id") opts.setupSession(sess) if err := sess.Find(&countsSlice); err != nil { return 0, fmt.Errorf("Find: %v", err)