From 74724b79d18a12d68c8bebe9e46f0017e3714089 Mon Sep 17 00:00:00 2001 From: lng2020 Date: Tue, 29 Aug 2023 14:13:15 +0800 Subject: [PATCH 1/3] remove duplicate issue id --- models/issues/issue_search.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/issues/issue_search.go b/models/issues/issue_search.go index 3640351a4d467..375d6c329f61c 100644 --- a/models/issues/issue_search.go +++ b/models/issues/issue_search.go @@ -480,7 +480,7 @@ func IssueIDs(ctx context.Context, opts *IssuesOptions, otherConds ...builder.Co applySorts(sess, opts.SortType, opts.PriorityRepoID) var res []int64 - total, err := sess.Select("`issue`.id").Table(&Issue{}).FindAndCount(&res) + total, err := sess.Select("`issue`.id").Table(&Issue{}).Distinct("`issue`.id").FindAndCount(&res) if err != nil { return nil, 0, err } From d42cc24019c983b95e7e9d8b5ca0e4cca1a4276b Mon Sep 17 00:00:00 2001 From: lng2020 Date: Sun, 3 Sep 2023 02:02:16 +0800 Subject: [PATCH 2/3] rewrite query --- models/issues/issue_search.go | 23 ++++++++++++++++------- test1 | 1 + 2 files changed, 17 insertions(+), 7 deletions(-) create mode 160000 test1 diff --git a/models/issues/issue_search.go b/models/issues/issue_search.go index 375d6c329f61c..5d40b447042c3 100644 --- a/models/issues/issue_search.go +++ b/models/issues/issue_search.go @@ -358,12 +358,21 @@ func applyMentionedCondition(sess *xorm.Session, mentionedID int64) *xorm.Sessio } func applyReviewRequestedCondition(sess *xorm.Session, reviewRequestedID int64) *xorm.Session { - return sess.Join("INNER", []string{"review", "r"}, "issue.id = r.issue_id"). - And("issue.poster_id <> ?", reviewRequestedID). - And("r.type = ?", ReviewTypeRequest). - And("r.reviewer_id = ? and r.id in (select max(id) from review where issue_id = r.issue_id and reviewer_id = r.reviewer_id and type in (?, ?, ?))"+ - " or r.reviewer_team_id in (select team_id from team_user where uid = ?)", - reviewRequestedID, ReviewTypeApprove, ReviewTypeReject, ReviewTypeRequest, reviewRequestedID) + existInTeamQuery := builder.Select("team_user.team_id"). + From("team_user"). + Where(builder.Eq{"team_user.uid": reviewRequestedID}) + + subQuery := builder.Select("review.issue_id"). + From("review"). + Where(builder.And( + builder.In("review.type", []ReviewType{ReviewTypeRequest, ReviewTypeReject, ReviewTypeApprove}), + builder.Or( + builder.Eq{"review.reviewer_id": reviewRequestedID}, + builder.In("review.reviewer_team_id", existInTeamQuery), + ), + )) + return sess.Where("issue.poster_id <> ?", reviewRequestedID). + And(builder.In("issue.id", subQuery)) } func applyReviewedCondition(sess *xorm.Session, reviewedID int64) *xorm.Session { @@ -480,7 +489,7 @@ func IssueIDs(ctx context.Context, opts *IssuesOptions, otherConds ...builder.Co applySorts(sess, opts.SortType, opts.PriorityRepoID) var res []int64 - total, err := sess.Select("`issue`.id").Table(&Issue{}).Distinct("`issue`.id").FindAndCount(&res) + total, err := sess.Select("`issue`.id").Table(&Issue{}).FindAndCount(&res) if err != nil { return nil, 0, err } diff --git a/test1 b/test1 new file mode 160000 index 0000000000000..75bee0e0f0eb2 --- /dev/null +++ b/test1 @@ -0,0 +1 @@ +Subproject commit 75bee0e0f0eb291e189abc2b512f60396d0099f5 From 783d2a251fb4f3cca12b3c8b8293575dc6702b60 Mon Sep 17 00:00:00 2001 From: lng2020 Date: Sun, 3 Sep 2023 02:02:59 +0800 Subject: [PATCH 3/3] remove file --- test1 | 1 - 1 file changed, 1 deletion(-) delete mode 160000 test1 diff --git a/test1 b/test1 deleted file mode 160000 index 75bee0e0f0eb2..0000000000000 --- a/test1 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 75bee0e0f0eb291e189abc2b512f60396d0099f5