]> source.dussan.org Git - gitea.git/commitdiff
Migration fixes 5318 1.6 backport (#5355)
authorFlorian Eitel <feitel@indeedgeek.de>
Sun, 18 Nov 2018 20:34:14 +0000 (21:34 +0100)
committerLauris BH <lauris@nix.lv>
Sun, 18 Nov 2018 20:34:14 +0000 (22:34 +0200)
* Remove field from migration to support upgrades from older version

That will ensure the field does not get queried in the Select if it does
not exist yet:

```
[I] [SQL] SELECT "id", "repo_id", "index", "poster_id", "name", "content", "milestone_id", "priority", "assignee_id", "is_closed", "is_pull", "num_comments", "ref", "deadline_unix", "created_unix", "updated_unix
[...itea/routers/init.go:60 GlobalInit()] [E] Failed to initialize ORM engine: migrate: do migrate: pq: column "ref" does not exist
```

see #5318

* Skip remove stale watcher migration if not required

Otherwise the migration will fail if executed from a older database
version without multiple IssueWatch feature.

```
2018/11/11 23:51:14 [I] [SQL] SELECT DISTINCT "issue_watch"."user_id", "issue"."repo_id" FROM "issue_watch" INNER JOIN issue ON issue_watch.issue_id = issue.id WHERE (issue_watch.is_watching = $1) LIMIT 50 []int
[...itea/routers/init.go:60 GlobalInit()] [E] Failed to initialize ORM engine: migrate: do migrate: pq: relation "issue_watch" does not exist
```

see #5318

models/migrations/v64.go
models/migrations/v67.go

index 5958cd8f8259fb25101e32a5cb854f19841cf3c0..5bc7e36b516e76ebd2f1449946cc3dd2e18b6816 100644 (file)
@@ -26,7 +26,6 @@ func addMultipleAssignees(x *xorm.Engine) error {
                IsClosed    bool  `xorm:"INDEX"`
                IsPull      bool  `xorm:"INDEX"` // Indicates whether is a pull request or not.
                NumComments int
-               Ref         string
 
                DeadlineUnix util.TimeStamp `xorm:"INDEX"`
                CreatedUnix  util.TimeStamp `xorm:"INDEX created"`
index 27822191911ef7cbc7e29343b9e26ee626996495..d4a7497ec91b3fe0156a5b73e7e1e8d9ad2f6e75 100644 (file)
@@ -5,6 +5,8 @@
 package migrations
 
 import (
+       "fmt"
+
        "code.gitea.io/gitea/modules/setting"
 
        "github.com/go-xorm/xorm"
@@ -70,6 +72,13 @@ func removeStaleWatches(x *xorm.Engine) error {
                return err
        }
 
+       var issueWatch IssueWatch
+       if exist, err := sess.IsTableExist(&issueWatch); err != nil {
+               return fmt.Errorf("IsExist IssueWatch: %v", err)
+       } else if !exist {
+               return nil
+       }
+
        repoCache := make(map[int64]*Repository)
        err := x.BufferSize(setting.IterateBufferSize).Iterate(new(Watch),
                func(idx int, bean interface{}) error {