From 69eb0ca773ae4a27dca4f1837580896504d31a91 Mon Sep 17 00:00:00 2001 From: Carlos Tadeu Panato Junior Date: Wed, 3 Nov 2021 16:16:33 +0100 Subject: [PATCH] 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 --- model/version.go | 1 + store/sqlstore/upgrade.go | 56 +++++++++++++++++++++++---------------- 2 files changed, 34 insertions(+), 23 deletions(-) diff --git a/model/version.go b/model/version.go index 4e578887c5..2a5fd66342 100644 --- a/model/version.go +++ b/model/version.go @@ -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", diff --git a/store/sqlstore/upgrade.go b/store/sqlstore/upgrade.go index 0cf40b11fe..b464c958d9 100644 --- a/store/sqlstore/upgrade.go +++ b/store/sqlstore/upgrade.go @@ -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) // } }