Skip to content

Commit d606fba

Browse files
Loïc Dacharyrealaravinth
Loïc Dachary
authored andcommitted
TRUE/FALSE are not valid literals for mssql
1 parent 099c7cf commit d606fba

File tree

2 files changed

+27
-16
lines changed

2 files changed

+27
-16
lines changed

models/repo.go

+22-16
Original file line numberDiff line numberDiff line change
@@ -961,13 +961,13 @@ func DeleteRepository(doer *user_model.User, uid, repoID int64) error {
961961
}
962962

963963
type repoChecker struct {
964-
querySQL string
964+
querySQL func(ctx context.Context) ([]map[string][]byte, error)
965965
correctSQL func(ctx context.Context, id int64) error
966966
desc string
967967
}
968968

969969
func repoStatsCheck(ctx context.Context, checker *repoChecker) {
970-
results, err := db.GetEngine(ctx).Query(checker.querySQL)
970+
results, err := checker.querySQL(ctx)
971971
if err != nil {
972972
log.Error("Select %s: %v", checker.desc, err)
973973
return
@@ -1011,24 +1011,24 @@ func labelStatsCorrectNumIssuesRepo(ctx context.Context, id int64) error {
10111011
}
10121012

10131013
func labelStatsCorrectNumClosedIssues(ctx context.Context, id int64) error {
1014-
_, err := db.GetEngine(ctx).Exec("UPDATE `label` SET num_closed_issues=(SELECT COUNT(*) FROM `issue_label`,`issue` WHERE `issue_label`.label_id=`label`.id AND `issue_label`.issue_id=`issue`.id AND `issue`.is_closed=TRUE) WHERE `label`.id=?", id)
1014+
_, err := db.GetEngine(ctx).Exec("UPDATE `label` SET num_closed_issues=(SELECT COUNT(*) FROM `issue_label`,`issue` WHERE `issue_label`.label_id=`label`.id AND `issue_label`.issue_id=`issue`.id AND `issue`.is_closed=?) WHERE `label`.id=?", true, id)
10151015
return err
10161016
}
10171017

10181018
func labelStatsCorrectNumClosedIssuesRepo(ctx context.Context, id int64) error {
1019-
_, err := db.GetEngine(ctx).Exec("UPDATE `label` SET num_closed_issues=(SELECT COUNT(*) FROM `issue_label`,`issue` WHERE `issue_label`.label_id=`label`.id AND `issue_label`.issue_id=`issue`.id AND `issue`.is_closed=TRUE) WHERE `label`.repo_id=?", id)
1019+
_, err := db.GetEngine(ctx).Exec("UPDATE `label` SET num_closed_issues=(SELECT COUNT(*) FROM `issue_label`,`issue` WHERE `issue_label`.label_id=`label`.id AND `issue_label`.issue_id=`issue`.id AND `issue`.is_closed=?) WHERE `label`.repo_id=?", true, id)
10201020
return err
10211021
}
10221022

1023-
var milestoneStatsQueryNumIssues = "SELECT `milestone`.id FROM `milestone` WHERE `milestone`.num_closed_issues!=(SELECT COUNT(*) FROM `issue` WHERE `issue`.milestone_id=`milestone`.id AND `issue`.is_closed=TRUE) OR `milestone`.num_issues!=(SELECT COUNT(*) FROM `issue` WHERE `issue`.milestone_id=`milestone`.id)"
1023+
var milestoneStatsQueryNumIssues = "SELECT `milestone`.id FROM `milestone` WHERE `milestone`.num_closed_issues!=(SELECT COUNT(*) FROM `issue` WHERE `issue`.milestone_id=`milestone`.id AND `issue`.is_closed=?) OR `milestone`.num_issues!=(SELECT COUNT(*) FROM `issue` WHERE `issue`.milestone_id=`milestone`.id)"
10241024

10251025
func milestoneStatsCorrectNumIssues(ctx context.Context, id int64) error {
10261026
return updateMilestoneCounters(ctx, id)
10271027
}
10281028

10291029
func milestoneStatsCorrectNumIssuesRepo(ctx context.Context, id int64) error {
10301030
e := db.GetEngine(ctx)
1031-
results, err := e.Query(milestoneStatsQueryNumIssues+" AND `milestone`.repo_id = ?", id)
1031+
results, err := e.Query(milestoneStatsQueryNumIssues+" AND `milestone`.repo_id = ?", true, id)
10321032
if err != nil {
10331033
return err
10341034
}
@@ -1072,66 +1072,72 @@ func repoStatsCorrectNumClosedPulls(ctx context.Context, id int64) error {
10721072
}
10731073

10741074
func repoStatsCorrectNumClosed(ctx context.Context, id int64, isPull bool, field string) error {
1075-
_, err := db.GetEngine(ctx).Exec("UPDATE `repository` SET "+field+"=(SELECT COUNT(*) FROM `issue` WHERE repo_id=? AND is_closed=TRUE AND is_pull=?) WHERE id=?", id, isPull, id)
1075+
_, err := db.GetEngine(ctx).Exec("UPDATE `repository` SET "+field+"=(SELECT COUNT(*) FROM `issue` WHERE repo_id=? AND is_closed=? AND is_pull=?) WHERE id=?", id, true, isPull, id)
10761076
return err
10771077
}
10781078

1079+
func statsQuery(args ...interface{}) func(context.Context) ([]map[string][]byte, error) {
1080+
return func(ctx context.Context) ([]map[string][]byte, error) {
1081+
return db.GetEngine(ctx).Query(args...)
1082+
}
1083+
}
1084+
10791085
// CheckRepoStats checks the repository stats
10801086
func CheckRepoStats(ctx context.Context) error {
10811087
log.Trace("Doing: CheckRepoStats")
10821088

10831089
checkers := []*repoChecker{
10841090
// Repository.NumWatches
10851091
{
1086-
"SELECT repo.id FROM `repository` repo WHERE repo.num_watches!=(SELECT COUNT(*) FROM `watch` WHERE repo_id=repo.id AND mode<>2)",
1092+
statsQuery("SELECT repo.id FROM `repository` repo WHERE repo.num_watches!=(SELECT COUNT(*) FROM `watch` WHERE repo_id=repo.id AND mode<>2)"),
10871093
repoStatsCorrectNumWatches,
10881094
"repository count 'num_watches'",
10891095
},
10901096
// Repository.NumStars
10911097
{
1092-
"SELECT repo.id FROM `repository` repo WHERE repo.num_stars!=(SELECT COUNT(*) FROM `star` WHERE repo_id=repo.id)",
1098+
statsQuery("SELECT repo.id FROM `repository` repo WHERE repo.num_stars!=(SELECT COUNT(*) FROM `star` WHERE repo_id=repo.id)"),
10931099
repoStatsCorrectNumStars,
10941100
"repository count 'num_stars'",
10951101
},
10961102
// Repository.NumClosedIssues
10971103
{
1098-
"SELECT repo.id FROM `repository` repo WHERE repo.num_closed_issues!=(SELECT COUNT(*) FROM `issue` WHERE repo_id=repo.id AND is_closed=TRUE AND is_pull=FALSE)",
1104+
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),
10991105
repoStatsCorrectNumClosedIssues,
11001106
"repository count 'num_closed_issues'",
11011107
},
11021108
// Repository.NumClosedPulls
11031109
{
1104-
"SELECT repo.id FROM `repository` repo WHERE repo.num_closed_issues!=(SELECT COUNT(*) FROM `issue` WHERE repo_id=repo.id AND is_closed=TRUE AND is_pull=TRUE)",
1110+
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),
11051111
repoStatsCorrectNumClosedPulls,
11061112
"repository count 'num_closed_pulls'",
11071113
},
11081114
// Label.NumIssues
11091115
{
1110-
"SELECT label.id FROM `label` WHERE label.num_issues!=(SELECT COUNT(*) FROM `issue_label` WHERE label_id=label.id)",
1116+
statsQuery("SELECT label.id FROM `label` WHERE label.num_issues!=(SELECT COUNT(*) FROM `issue_label` WHERE label_id=label.id)"),
11111117
labelStatsCorrectNumIssues,
11121118
"label count 'num_issues'",
11131119
},
11141120
// Label.NumClosedIssues
11151121
{
1116-
"SELECT `label`.id FROM `label` WHERE `label`.num_closed_issues!=(SELECT COUNT(*) FROM `issue_label`,`issue` WHERE `issue_label`.label_id=`label`.id AND `issue_label`.issue_id=`issue`.id AND `issue`.is_closed=TRUE)",
1122+
statsQuery("SELECT `label`.id FROM `label` WHERE `label`.num_closed_issues!=(SELECT COUNT(*) FROM `issue_label`,`issue` WHERE `issue_label`.label_id=`label`.id AND `issue_label`.issue_id=`issue`.id AND `issue`.is_closed=?)", true),
11171123
labelStatsCorrectNumClosedIssues,
11181124
"label count 'num_closed_issues'",
11191125
},
11201126
// Milestone.Num{,Closed}Issues
11211127
{
1122-
milestoneStatsQueryNumIssues,
1128+
statsQuery(milestoneStatsQueryNumIssues, true),
11231129
milestoneStatsCorrectNumIssues,
11241130
"milestone count 'num_closed_issues' and 'num_issues'",
11251131
},
11261132
// User.NumRepos
11271133
{
1128-
"SELECT `user`.id FROM `user` WHERE `user`.num_repos!=(SELECT COUNT(*) FROM `repository` WHERE owner_id=`user`.id)",
1134+
statsQuery("SELECT `user`.id FROM `user` WHERE `user`.num_repos!=(SELECT COUNT(*) FROM `repository` WHERE owner_id=`user`.id)"),
11291135
userStatsCorrectNumRepos,
11301136
"user count 'num_repos'",
11311137
},
11321138
// Issue.NumComments
11331139
{
1134-
"SELECT `issue`.id FROM `issue` WHERE `issue`.num_comments!=(SELECT COUNT(*) FROM `comment` WHERE issue_id=`issue`.id AND type=0)",
1140+
statsQuery("SELECT `issue`.id FROM `issue` WHERE `issue`.num_comments!=(SELECT COUNT(*) FROM `comment` WHERE issue_id=`issue`.id AND type=0)"),
11351141
repoStatsCorrectIssueNumComments,
11361142
"issue count 'num_comments'",
11371143
},

models/repo_test.go

+5
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@ import (
1717
"github.com/stretchr/testify/assert"
1818
)
1919

20+
func TestCheckRepoStats(t *testing.T) {
21+
assert.NoError(t, unittest.PrepareTestDatabase())
22+
assert.NoError(t, CheckRepoStats(db.DefaultContext))
23+
}
24+
2025
func TestWatchRepo(t *testing.T) {
2126
assert.NoError(t, unittest.PrepareTestDatabase())
2227
const repoID = 3

0 commit comments

Comments
 (0)