Skip to content

Commit

Permalink
Add primary_key to issue_index
Browse files Browse the repository at this point in the history
Make the group_id a primary key in issue_index. This already has an unique index
and therefore is a good candidate for becoming a primary key.

This PR also changes all other uses of this table to add the group_id as the
primary key.

Fix go-gitea#16802

Signed-off-by: Andrew Thornton <[email protected]>
  • Loading branch information
zeripath committed Aug 24, 2021
1 parent d22cb60 commit 8a56a8b
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 5 deletions.
2 changes: 1 addition & 1 deletion models/index.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import (
// ResourceIndex represents a resource index which could be used as issue/release and others
// We can create different tables i.e. issue_index, release_index and etc.
type ResourceIndex struct {
GroupID int64 `xorm:"unique"`
GroupID int64 `xorm:"pk"`
MaxIndex int64 `xorm:"index"`
}

Expand Down
2 changes: 2 additions & 0 deletions models/migrations/migrations.go
Original file line number Diff line number Diff line change
Expand Up @@ -336,6 +336,8 @@ var migrations = []Migration{
NewMigration("Add agit flow pull request support", addAgitFlowPullRequest),
// v191 -> v192
NewMigration("Alter issue/comment table TEXT fields to LONGTEXT", alterIssueAndCommentTextFieldsToLongText),
// v192 -> v193
NewMigration("RecreateIssueResourceIndexTable to have a primary key instead of an unique index", recreateIssueResourceIndexTable),
}

// GetCurrentDBVersion returns the current db version
Expand Down
4 changes: 2 additions & 2 deletions models/migrations/v182.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ import (

func addIssueResourceIndexTable(x *xorm.Engine) error {
type ResourceIndex struct {
GroupID int64 `xorm:"index unique(s)"`
MaxIndex int64 `xorm:"index unique(s)"`
GroupID int64 `xorm:"pk"`
MaxIndex int64 `xorm:"index"`
}

sess := x.NewSession()
Expand Down
4 changes: 2 additions & 2 deletions models/migrations/v182_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ func Test_addIssueResourceIndexTable(t *testing.T) {
}

type ResourceIndex struct {
GroupID int64 `xorm:"index unique(s)"`
MaxIndex int64 `xorm:"index unique(s)"`
GroupID int64 `xorm:"pk"`
MaxIndex int64 `xorm:"index"`
}

var start = 0
Expand Down
18 changes: 18 additions & 0 deletions models/migrations/v192.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
// Copyright 2021 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.

package migrations

import (
"xorm.io/xorm"
)

func recreateIssueResourceIndexTable(x *xorm.Engine) error {
type IssueIndex struct {
GroupID int64 `xorm:"pk"`
MaxIndex int64 `xorm:"index"`
}

return RecreateTables(new(IssueIndex))(x)
}

0 comments on commit 8a56a8b

Please sign in to comment.