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>
Этот коммит содержится в:
Carlos Tadeu Panato Junior
2021-11-03 16:16:33 +01:00
коммит произвёл GitHub
родитель 2865ad9221
Коммит 69eb0ca773
2 изменённых файлов: 34 добавлений и 23 удалений

Просмотреть файл

@@ -13,6 +13,7 @@ import (
// It should be maintained in chronological order with most current // It should be maintained in chronological order with most current
// release at the front of the list. // release at the front of the list.
var versions = []string{ var versions = []string{
"6.2.0",
"6.1.0", "6.1.0",
"6.0.0", "6.0.0",
"5.39.0", "5.39.0",

Просмотреть файл

@@ -17,7 +17,8 @@ import (
) )
const ( const (
CurrentSchemaVersion = Version600 CurrentSchemaVersion = Version610
Version620 = "6.2.0"
Version610 = "6.1.0" Version610 = "6.1.0"
Version600 = "6.0.0" Version600 = "6.0.0"
Version5390 = "5.39.0" Version5390 = "5.39.0"
@@ -216,6 +217,7 @@ func upgradeDatabase(sqlStore *SqlStore, currentModelVersionString string) error
upgradeDatabaseToVersion539(sqlStore) upgradeDatabaseToVersion539(sqlStore)
upgradeDatabaseToVersion600(sqlStore) upgradeDatabaseToVersion600(sqlStore)
upgradeDatabaseToVersion610(sqlStore) upgradeDatabaseToVersion610(sqlStore)
upgradeDatabaseToVersion620(sqlStore)
return nil return nil
} }
@@ -1359,22 +1361,22 @@ func upgradeDatabaseToVersion600(sqlStore *SqlStore) {
} }
func upgradeDatabaseToVersion610(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("Sessions", "Roles", "text", "varchar(256)")
sqlStore.AlterColumnTypeIfExists("ChannelMembers", "Roles", "text", "varchar(256)") sqlStore.AlterColumnTypeIfExists("ChannelMembers", "Roles", "text", "varchar(256)")
sqlStore.AlterColumnTypeIfExists("TeamMembers", "Roles", "text", "varchar(256)") sqlStore.AlterColumnTypeIfExists("TeamMembers", "Roles", "text", "varchar(256)")
sqlStore.CreateCompositeIndexIfNotExists("idx_jobs_status_type", "Jobs", []string{"Status", "Type"}) sqlStore.CreateCompositeIndexIfNotExists("idx_jobs_status_type", "Jobs", []string{"Status", "Type"})
forceIndex := "" forceIndex := ""
if sqlStore.DriverName() == model.DatabaseDriverMysql { if sqlStore.DriverName() == model.DatabaseDriverMysql {
forceIndex = "FORCE INDEX(idx_posts_channel_id_update_at)" forceIndex = "FORCE INDEX(idx_posts_channel_id_update_at)"
} }
lastRootPostAtExists := sqlStore.DoesColumnExist("Channels", "LastRootPostAt") lastRootPostAtExists := sqlStore.DoesColumnExist("Channels", "LastRootPostAt")
sqlStore.CreateColumnIfNotExists("Channels", "LastRootPostAt", "bigint", "bigint", "0") sqlStore.CreateColumnIfNotExists("Channels", "LastRootPostAt", "bigint", "bigint", "0")
lastRootPostAtCTE := ` lastRootPostAtCTE := `
SELECT Channels.Id channelid, COALESCE(MAX(Posts.CreateAt), 0) as lastrootpost SELECT Channels.Id channelid, COALESCE(MAX(Posts.CreateAt), 0) as lastrootpost
FROM Channels FROM Channels
LEFT JOIN Posts ` + forceIndex + ` ON Channels.Id = Posts.ChannelId LEFT JOIN Posts ` + forceIndex + ` ON Channels.Id = Posts.ChannelId
@@ -1382,27 +1384,35 @@ func upgradeDatabaseToVersion610(sqlStore *SqlStore) {
GROUP BY Channels.Id GROUP BY Channels.Id
` `
updateChannels := ` updateChannels := `
WITH q AS (` + lastRootPostAtCTE + `) WITH q AS (` + lastRootPostAtCTE + `)
UPDATE Channels SET LastRootPostAt=q.lastrootpost UPDATE Channels SET LastRootPostAt=q.lastrootpost
FROM q where q.channelid=Channels.Id; FROM q where q.channelid=Channels.Id;
` `
if sqlStore.DriverName() == model.DatabaseDriverMysql { if sqlStore.DriverName() == model.DatabaseDriverMysql {
updateChannels = ` updateChannels = `
UPDATE Channels UPDATE Channels
INNER Join (` + lastRootPostAtCTE + `) as q INNER Join (` + lastRootPostAtCTE + `) as q
ON q.channelid=Channels.Id ON q.channelid=Channels.Id
SET LastRootPostAt=lastrootpost; 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)
// } // }
} }