db: upgrade db to 6.0 and prepare for 6.1 (#18923)
* db: upgrade db to 6.1 * db: prepare db upgrade to 6.2 Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
2865ad9221
Коммит
69eb0ca773
@@ -13,6 +13,7 @@ import (
|
||||
// It should be maintained in chronological order with most current
|
||||
// release at the front of the list.
|
||||
var versions = []string{
|
||||
"6.2.0",
|
||||
"6.1.0",
|
||||
"6.0.0",
|
||||
"5.39.0",
|
||||
|
||||
@@ -17,7 +17,8 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
CurrentSchemaVersion = Version600
|
||||
CurrentSchemaVersion = Version610
|
||||
Version620 = "6.2.0"
|
||||
Version610 = "6.1.0"
|
||||
Version600 = "6.0.0"
|
||||
Version5390 = "5.39.0"
|
||||
@@ -216,6 +217,7 @@ func upgradeDatabase(sqlStore *SqlStore, currentModelVersionString string) error
|
||||
upgradeDatabaseToVersion539(sqlStore)
|
||||
upgradeDatabaseToVersion600(sqlStore)
|
||||
upgradeDatabaseToVersion610(sqlStore)
|
||||
upgradeDatabaseToVersion620(sqlStore)
|
||||
|
||||
return nil
|
||||
}
|
||||
@@ -1359,22 +1361,22 @@ func upgradeDatabaseToVersion600(sqlStore *SqlStore) {
|
||||
}
|
||||
|
||||
func upgradeDatabaseToVersion610(sqlStore *SqlStore) {
|
||||
// if shouldPerformUpgrade(sqlStore, Version600, Version610) {
|
||||
if shouldPerformUpgrade(sqlStore, Version600, Version610) {
|
||||
|
||||
sqlStore.AlterColumnTypeIfExists("Sessions", "Roles", "text", "varchar(256)")
|
||||
sqlStore.AlterColumnTypeIfExists("ChannelMembers", "Roles", "text", "varchar(256)")
|
||||
sqlStore.AlterColumnTypeIfExists("TeamMembers", "Roles", "text", "varchar(256)")
|
||||
sqlStore.CreateCompositeIndexIfNotExists("idx_jobs_status_type", "Jobs", []string{"Status", "Type"})
|
||||
sqlStore.AlterColumnTypeIfExists("Sessions", "Roles", "text", "varchar(256)")
|
||||
sqlStore.AlterColumnTypeIfExists("ChannelMembers", "Roles", "text", "varchar(256)")
|
||||
sqlStore.AlterColumnTypeIfExists("TeamMembers", "Roles", "text", "varchar(256)")
|
||||
sqlStore.CreateCompositeIndexIfNotExists("idx_jobs_status_type", "Jobs", []string{"Status", "Type"})
|
||||
|
||||
forceIndex := ""
|
||||
if sqlStore.DriverName() == model.DatabaseDriverMysql {
|
||||
forceIndex = "FORCE INDEX(idx_posts_channel_id_update_at)"
|
||||
}
|
||||
forceIndex := ""
|
||||
if sqlStore.DriverName() == model.DatabaseDriverMysql {
|
||||
forceIndex = "FORCE INDEX(idx_posts_channel_id_update_at)"
|
||||
}
|
||||
|
||||
lastRootPostAtExists := sqlStore.DoesColumnExist("Channels", "LastRootPostAt")
|
||||
sqlStore.CreateColumnIfNotExists("Channels", "LastRootPostAt", "bigint", "bigint", "0")
|
||||
lastRootPostAtExists := sqlStore.DoesColumnExist("Channels", "LastRootPostAt")
|
||||
sqlStore.CreateColumnIfNotExists("Channels", "LastRootPostAt", "bigint", "bigint", "0")
|
||||
|
||||
lastRootPostAtCTE := `
|
||||
lastRootPostAtCTE := `
|
||||
SELECT Channels.Id channelid, COALESCE(MAX(Posts.CreateAt), 0) as lastrootpost
|
||||
FROM Channels
|
||||
LEFT JOIN Posts ` + forceIndex + ` ON Channels.Id = Posts.ChannelId
|
||||
@@ -1382,27 +1384,35 @@ func upgradeDatabaseToVersion610(sqlStore *SqlStore) {
|
||||
GROUP BY Channels.Id
|
||||
`
|
||||
|
||||
updateChannels := `
|
||||
updateChannels := `
|
||||
WITH q AS (` + lastRootPostAtCTE + `)
|
||||
UPDATE Channels SET LastRootPostAt=q.lastrootpost
|
||||
FROM q where q.channelid=Channels.Id;
|
||||
`
|
||||
|
||||
if sqlStore.DriverName() == model.DatabaseDriverMysql {
|
||||
updateChannels = `
|
||||
if sqlStore.DriverName() == model.DatabaseDriverMysql {
|
||||
updateChannels = `
|
||||
UPDATE Channels
|
||||
INNER Join (` + lastRootPostAtCTE + `) as q
|
||||
ON q.channelid=Channels.Id
|
||||
SET LastRootPostAt=lastrootpost;
|
||||
`
|
||||
}
|
||||
|
||||
if !lastRootPostAtExists {
|
||||
if _, err := sqlStore.GetMaster().ExecNoTimeout(updateChannels); err != nil {
|
||||
mlog.Error("Error updating Channels table", mlog.Err(err))
|
||||
}
|
||||
}
|
||||
|
||||
// saveSchemaVersion(sqlStore, Version610)
|
||||
if !lastRootPostAtExists {
|
||||
if _, err := sqlStore.GetMaster().ExecNoTimeout(updateChannels); err != nil {
|
||||
mlog.Error("Error updating Channels table", mlog.Err(err))
|
||||
}
|
||||
}
|
||||
|
||||
saveSchemaVersion(sqlStore, Version610)
|
||||
}
|
||||
}
|
||||
|
||||
func upgradeDatabaseToVersion620(sqlStore *SqlStore) {
|
||||
// TODO: uncomment when the time arrive to upgrade the DB for 6.2
|
||||
// if shouldPerformUpgrade(sqlStore, Version610, Version620) {
|
||||
|
||||
// saveSchemaVersion(sqlStore, Version620)
|
||||
// }
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user