Skip to content

Commit

Permalink
Fix bug because of duplicated join (#14454)
Browse files Browse the repository at this point in the history
* Fix bug because of duplicated join

* Move join into setupsession

* Fix bug

* Fix bug

Co-authored-by: 6543 <6543@obermui.de>
Co-authored-by: Lauris BH <lauris@nix.lv>
  • Loading branch information
3 people committed Jan 26, 2021
1 parent a598877 commit d3aa497
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions models/issue.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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 {
Expand All @@ -1292,11 +1294,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 {
Expand All @@ -1311,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)

Expand Down Expand Up @@ -1338,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)
Expand Down

0 comments on commit d3aa497

Please sign in to comment.