From d83135c2046a419f35ef8d2bb5dc340c4a968854 Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Sat, 12 Aug 2023 09:04:05 +0200 Subject: [PATCH] Revert "[GITEA] Use join for the deleting issue actions query" This reverts commit 9b71369be9006af289bca63d35bc83ca1e734394. --- models/activities/action.go | 20 +++++--------------- models/activities/action_test.go | 9 --------- models/fixtures/action.yml | 10 ---------- models/fixtures/comment.yml | 9 --------- models/fixtures/issue.yml | 2 +- tests/integration/api_nodeinfo_test.go | 2 +- 6 files changed, 7 insertions(+), 45 deletions(-) diff --git a/models/activities/action.go b/models/activities/action.go index f5835598b..2e8a9c1de 100644 --- a/models/activities/action.go +++ b/models/activities/action.go @@ -687,21 +687,11 @@ func NotifyWatchersActions(acts []*Action) error { // DeleteIssueActions delete all actions related with issueID func DeleteIssueActions(ctx context.Context, repoID, issueID int64) error { // delete actions assigned to this issue - - // MySQL doesn't use the indexes on comment_id when using a subquery. - // It does uses the indexes when using an JOIN, however SQLite doesn't - // allow JOINs in DELETE statements and XORM doesn't allow them as well. - // So, an specific raw SQL query for MySQL so the query makes use of indexes. - if setting.Database.Type.IsMySQL() { - if _, err := db.GetEngine(ctx).Exec("DELETE action FROM action JOIN comment ON action.comment_id = comment.id WHERE comment.issue_id = ?", issueID); err != nil { - return err - } - } else { - subQuery := builder.Select("`id`").From("`comment`"). - Where(builder.Eq{"`issue_id`": issueID}) - if _, err := db.GetEngine(ctx).In("comment_id", subQuery).Delete(&Action{}); err != nil { - return err - } + subQuery := builder.Select("`id`"). + From("`comment`"). + Where(builder.Eq{"`issue_id`": issueID}) + if _, err := db.GetEngine(ctx).In("comment_id", subQuery).Delete(&Action{}); err != nil { + return err } _, err := db.GetEngine(ctx).Table("action").Where("repo_id = ?", repoID). diff --git a/models/activities/action_test.go b/models/activities/action_test.go index 61602a44c..7044bcc00 100644 --- a/models/activities/action_test.go +++ b/models/activities/action_test.go @@ -242,15 +242,6 @@ func TestGetFeedsCorrupted(t *testing.T) { assert.Equal(t, int64(0), count) } -func TestDeleteIssueActions(t *testing.T) { - assert.NoError(t, unittest.PrepareTestDatabase()) - - comment := unittest.AssertExistsAndLoadBean(t, &issue_model.Comment{ID: 8}) - unittest.AssertExistsAndLoadBean(t, &activities_model.Action{ID: 10, CommentID: comment.ID}) - assert.NoError(t, activities_model.DeleteIssueActions(db.DefaultContext, 32, 17)) - unittest.AssertNotExistsBean(t, &activities_model.Action{ID: 10, CommentID: comment.ID}) -} - func TestConsistencyUpdateAction(t *testing.T) { if !setting.Database.Type.IsSQLite3() { t.Skip("Test is only for SQLite database.") diff --git a/models/fixtures/action.yml b/models/fixtures/action.yml index 57654eb5b..af9ce93ba 100644 --- a/models/fixtures/action.yml +++ b/models/fixtures/action.yml @@ -73,13 +73,3 @@ is_private: false created_unix: 1680454039 content: '4|' # issueId 5 - -- id: 10 - user_id: 15 - op_type: 10 # issue comment - act_user_id: 15 - repo_id: 32 # public - comment_id: 8 - is_private: false - created_unix: 1680454039 - content: '2|meh...' # issueId 5 diff --git a/models/fixtures/comment.yml b/models/fixtures/comment.yml index f85b1b7af..bd64680c8 100644 --- a/models/fixtures/comment.yml +++ b/models/fixtures/comment.yml @@ -66,12 +66,3 @@ tree_path: "README.md" created_unix: 946684812 invalidated: true - -- - id: 8 - type: 0 # comment - poster_id: 15 - issue_id: 17 # in repo_id 32 - content: "meh..." - created_unix: 946684812 - updated_unix: 946684812 diff --git a/models/fixtures/issue.yml b/models/fixtures/issue.yml index bc7463a11..174345ff5 100644 --- a/models/fixtures/issue.yml +++ b/models/fixtures/issue.yml @@ -283,7 +283,7 @@ priority: 0 is_closed: false is_pull: false - num_comments: 1 + num_comments: 0 created_unix: 1602935696 updated_unix: 1602935696 is_locked: false diff --git a/tests/integration/api_nodeinfo_test.go b/tests/integration/api_nodeinfo_test.go index e9ca4e581..f931d4eef 100644 --- a/tests/integration/api_nodeinfo_test.go +++ b/tests/integration/api_nodeinfo_test.go @@ -35,6 +35,6 @@ func TestNodeinfo(t *testing.T) { assert.Equal(t, "forgejo", nodeinfo.Software.Name) assert.Equal(t, 25, nodeinfo.Usage.Users.Total) assert.Equal(t, 18, nodeinfo.Usage.LocalPosts) - assert.Equal(t, 3, nodeinfo.Usage.LocalComments) + assert.Equal(t, 2, nodeinfo.Usage.LocalComments) }) }