aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGusted <williamzijl7@hotmail.com>2022-10-12 06:47:48 +0000
committerGitHub <noreply@github.com>2022-10-12 14:47:48 +0800
commitd74578001491e70d5db19270a442ece3f2a758aa (patch)
treeb35311fcdd33e0398d69c9ca436ab56303bc3881
parent652abf0ae0757e376c3c70d3e3cc298a3e924e23 (diff)
downloadgitea-d74578001491e70d5db19270a442ece3f2a758aa.tar.gz
gitea-d74578001491e70d5db19270a442ece3f2a758aa.zip
Add Num{Issues,Pulls} stats checks (#21404) (#21414)
Backport #21404 Currently `repository.Num{Issues,Pulls}` weren't checked and could become out-of-consistency. Adds these two checks to `CheckRepoStats`. Fix incorrect SQL query for `repository.NumClosedPulls`, the check should be for `repo_num_pulls`. Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
-rw-r--r--models/repo.go14
1 files changed, 13 insertions, 1 deletions
diff --git a/models/repo.go b/models/repo.go
index d2f3a45940..e304abf960 100644
--- a/models/repo.go
+++ b/models/repo.go
@@ -605,15 +605,27 @@ func CheckRepoStats(ctx context.Context) error {
repoStatsCorrectNumStars,
"repository count 'num_stars'",
},
+ // Repository.NumIssues
+ {
+ statsQuery("SELECT repo.id FROM `repository` repo WHERE repo.num_issues!=(SELECT COUNT(*) FROM `issue` WHERE repo_id=repo.id AND is_closed=? AND is_pull=?)", false, false),
+ repoStatsCorrectNumIssues,
+ "repository count 'num_issues'",
+ },
// Repository.NumClosedIssues
{
statsQuery("SELECT repo.id FROM `repository` repo WHERE repo.num_closed_issues!=(SELECT COUNT(*) FROM `issue` WHERE repo_id=repo.id AND is_closed=? AND is_pull=?)", true, false),
repoStatsCorrectNumClosedIssues,
"repository count 'num_closed_issues'",
},
+ // Repository.NumPulls
+ {
+ statsQuery("SELECT repo.id FROM `repository` repo WHERE repo.num_pulls!=(SELECT COUNT(*) FROM `issue` WHERE repo_id=repo.id AND is_closed=? AND is_pull=?)", false, true),
+ repoStatsCorrectNumPulls,
+ "repository count 'num_pulls'",
+ },
// Repository.NumClosedPulls
{
- statsQuery("SELECT repo.id FROM `repository` repo WHERE repo.num_closed_issues!=(SELECT COUNT(*) FROM `issue` WHERE repo_id=repo.id AND is_closed=? AND is_pull=?)", true, true),
+ statsQuery("SELECT repo.id FROM `repository` repo WHERE repo.num_closed_pulls!=(SELECT COUNT(*) FROM `issue` WHERE repo_id=repo.id AND is_closed=? AND is_pull=?)", true, true),
repoStatsCorrectNumClosedPulls,
"repository count 'num_closed_pulls'",
},