From bcb78e70ca81293a705b467e9ce2b77ab04a799e Mon Sep 17 00:00:00 2001 From: KN4CK3R Date: Sat, 23 Sep 2023 14:57:39 +0200 Subject: [PATCH] Quote table `release` in sql queries (#27205) Fixes #27174 `release` is a reserved keyword in MySql. I can't reproduce the issue on my setup and we have a test for that code but it seems there can be setups where it fails. https://github.com/go-gitea/gitea/blob/a101dbaa7952e359843c6d8303ca24a0e63c865c/tests/integration/repo_activity_test.go#L45-L46 --- models/activities/repo_activity.go | 10 +++++----- modules/doctor/dbconsistency.go | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/models/activities/repo_activity.go b/models/activities/repo_activity.go index 509f9caaf..91f5ac12b 100644 --- a/models/activities/repo_activity.go +++ b/models/activities/repo_activity.go @@ -342,7 +342,7 @@ func (stats *ActivityStats) FillReleases(ctx context.Context, repoID int64, from // Published releases list sess := releasesForActivityStatement(ctx, repoID, fromTime) - sess.OrderBy("release.created_unix DESC") + sess.OrderBy("`release`.created_unix DESC") stats.PublishedReleases = make([]*repo_model.Release, 0) if err = sess.Find(&stats.PublishedReleases); err != nil { return err @@ -350,7 +350,7 @@ func (stats *ActivityStats) FillReleases(ctx context.Context, repoID int64, from // Published releases authors sess = releasesForActivityStatement(ctx, repoID, fromTime) - if _, err = sess.Select("count(distinct release.publisher_id) as `count`").Table("release").Get(&count); err != nil { + if _, err = sess.Select("count(distinct `release`.publisher_id) as `count`").Table("release").Get(&count); err != nil { return err } stats.PublishedReleaseAuthorCount = count @@ -359,7 +359,7 @@ func (stats *ActivityStats) FillReleases(ctx context.Context, repoID int64, from } func releasesForActivityStatement(ctx context.Context, repoID int64, fromTime time.Time) *xorm.Session { - return db.GetEngine(ctx).Where("release.repo_id = ?", repoID). - And("release.is_draft = ?", false). - And("release.created_unix >= ?", fromTime.Unix()) + return db.GetEngine(ctx).Where("`release`.repo_id = ?", repoID). + And("`release`.is_draft = ?", false). + And("`release`.created_unix >= ?", fromTime.Unix()) } diff --git a/modules/doctor/dbconsistency.go b/modules/doctor/dbconsistency.go index 541fc736f..548687355 100644 --- a/modules/doctor/dbconsistency.go +++ b/modules/doctor/dbconsistency.go @@ -101,7 +101,7 @@ func checkDBConsistency(ctx context.Context, logger log.Logger, autofix bool) er }, // find releases without existing repository genericOrphanCheck("Orphaned Releases without existing repository", - "release", "repository", "release.repo_id=repository.id"), + "release", "repository", "`release`.repo_id=repository.id"), // find pulls without existing issues genericOrphanCheck("Orphaned PullRequests without existing issue", "pull_request", "issue", "pull_request.issue_id=issue.id"),