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
// 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)
// }
}