]> source.dussan.org Git - gitea.git/commitdiff
Fix Migration 176 yet again (#15131)
authorzeripath <art27@cantab.net>
Tue, 23 Mar 2021 23:10:19 +0000 (23:10 +0000)
committerGitHub <noreply@github.com>
Tue, 23 Mar 2021 23:10:19 +0000 (23:10 +0000)
* Fix Migration 176 yet again

Whilst creating a test for v176 in the migrations_test PR
it has become clear that this was still wrong.

This is now fixed. Genuinely.

Signed-off-by: Andrew Thornton <art27@cantab.net>
* and fix repo transfer

Signed-off-by: Andrew Thornton <art27@cantab.net>
models/consistency.go
models/migrations/v176.go
models/repo_transfer.go

index c7a70afcdd363a1e2f168d1d0d1c05fb0ab11959..a1a2bf7bb5fa6a1ac120324dfd3e26f17b2c0bd3 100644 (file)
@@ -338,7 +338,7 @@ func FixCommentTypeLabelWithEmptyLabel() (int64, error) {
 
 // CountCommentTypeLabelWithOutsideLabels count label comments with outside label
 func CountCommentTypeLabelWithOutsideLabels() (int64, error) {
-       return x.Where("comment.type = ? AND (issue.repo_id != label.repo_id OR (label.repo_id = 0 AND repository.owner_id != label.org_id))", CommentTypeLabel).
+       return x.Where("comment.type = ? AND ((label.org_id = 0 AND issue.repo_id != label.repo_id) OR (label.repo_id = 0 AND label.org_id != repository.owner_id))", CommentTypeLabel).
                Table("comment").
                Join("inner", "label", "label.id = comment.label_id").
                Join("inner", "issue", "issue.id = comment.issue_id ").
@@ -354,8 +354,9 @@ func FixCommentTypeLabelWithOutsideLabels() (int64, error) {
                                FROM comment AS com
                                        INNER JOIN label ON com.label_id = label.id
                                        INNER JOIN issue on issue.id = com.issue_id
+                                       INNER JOIN repository ON issue.repo_id = repository.id
                                WHERE
-                                       com.type = ? AND (issue.repo_id != label.repo_id OR (label.repo_id = 0 AND label.org_id != repo.owner_id))
+                                       com.type = ? AND ((label.org_id = 0 AND issue.repo_id != label.repo_id) OR (label.repo_id = 0 AND label.org_id != repository.owner_id))
        ) AS il_too)`, CommentTypeLabel)
        if err != nil {
                return 0, err
@@ -366,7 +367,7 @@ func FixCommentTypeLabelWithOutsideLabels() (int64, error) {
 
 // CountIssueLabelWithOutsideLabels count label comments with outside label
 func CountIssueLabelWithOutsideLabels() (int64, error) {
-       return x.Where(builder.Expr("issue.repo_id != label.repo_id OR (label.repo_id = 0 AND repository.owner_id != label.org_id)")).
+       return x.Where(builder.Expr("(label.org_id = 0 AND issue.repo_id != label.repo_id) OR (label.repo_id = 0 AND label.org_id != repository.owner_id)")).
                Table("issue_label").
                Join("inner", "label", "issue_label.label_id = label.id ").
                Join("inner", "issue", "issue.id = issue_label.issue_id ").
@@ -384,7 +385,7 @@ func FixIssueLabelWithOutsideLabels() (int64, error) {
                                        INNER JOIN issue on issue.id = il_too_too.issue_id
                                        INNER JOIN repository on repository.id = issue.repo_id
                                WHERE
-                                       issue.repo_id != label.repo_id OR (label.repo_id = 0 AND label.org_id != repository.owner_id)
+                                       (label.org_id = 0 AND issue.repo_id != label.repo_id) OR (label.repo_id = 0 AND label.org_id != repository.owner_id)
        ) AS il_too )`)
 
        if err != nil {
index 0365ae5673179fb7f69512984043b48d4463f822..cec23e08f417b05b189322832686cb950e3d593d 100644 (file)
@@ -52,7 +52,7 @@ func removeInvalidLabels(x *xorm.Engine) error {
                                        INNER JOIN issue on issue.id = il_too_too.issue_id
                                        INNER JOIN repository on repository.id = issue.repo_id
                                WHERE
-                                       issue.repo_id != label.repo_id OR (label.repo_id = 0 AND label.org_id != repository.owner_id)
+                                       (label.org_id = 0 AND issue.repo_id != label.repo_id) OR (label.repo_id = 0 AND label.org_id != repository.owner_id)
        ) AS il_too )`); err != nil {
                return err
        }
@@ -65,7 +65,7 @@ func removeInvalidLabels(x *xorm.Engine) error {
                                        INNER JOIN issue on issue.id = com.issue_id
                                        INNER JOIN repository on repository.id = issue.repo_id
                                WHERE
-                                       com.type = ? AND (issue.repo_id != label.repo_id OR (label.repo_id = 0 AND label.org_id != repository.owner_id))
+                                       com.type = ? AND ((label.org_id = 0 AND issue.repo_id != label.repo_id) OR (label.repo_id = 0 AND label.org_id != repository.owner_id))
        ) AS il_too)`, 7); err != nil {
                return err
        }
index 60f3d15734a1fc3060113fd866a5db2428a3cb93..c5d1a3a3c2172849d3db80bc882f3ac256751b6f 100644 (file)
@@ -333,7 +333,7 @@ func TransferOwnership(doer *User, newOwnerName string, repo *Repository) (err e
                                                INNER JOIN label ON il_too_too.label_id = label.id
                                                INNER JOIN issue on issue.id = il_too_too.issue_id
                                        WHERE
-                                               issue.repo_id = ? AND (issue.repo_id != label.repo_id OR (label.repo_id = 0 AND label.org_id != ?))
+                                               issue.repo_id = ? AND ((label.org_id = 0 AND issue.repo_id != label.repo_id) OR (label.repo_id = 0 AND label.org_id != ?))
                ) AS il_too )`, repo.ID, newOwner.ID); err != nil {
                        return fmt.Errorf("Unable to remove old org labels: %v", err)
                }
@@ -343,9 +343,9 @@ func TransferOwnership(doer *User, newOwnerName string, repo *Repository) (err e
                                SELECT com.id
                                        FROM comment AS com
                                                INNER JOIN label ON com.label_id = label.id
-                                               INNER JOIN issue on issue.id = com.issue_id
+                                               INNER JOIN issue ON issue.id = com.issue_id
                                        WHERE
-                                               com.type = ? AND issue.repo_id = ? AND (issue.repo_id != label.repo_id OR (label.repo_id = 0 AND label.org_id != ?))
+                                               com.type = ? AND issue.repo_id = ? AND ((label.org_id = 0 AND issue.repo_id != label.repo_id) OR (label.repo_id = 0 AND label.org_id != ?))
                ) AS il_too)`, CommentTypeLabel, repo.ID, newOwner.ID); err != nil {
                        return fmt.Errorf("Unable to remove old org label comments: %v", err)
                }