Fix 5.35 migration (#17416)

* Only run performance heavy migration queries once

* Fix ordering and test
This commit is contained in:
Claudio Costa
2021-04-16 10:37:21 +02:00
committed by GitHub
parent 09a52aab3e
commit 03473f98ac
2 changed files with 16 additions and 4 deletions

View File

@@ -1032,6 +1032,9 @@ func upgradeDatabaseToVersion535(sqlStore *SqlStore) {
sqlStore.CreateUniqueCompositeIndexIfNotExists(RemoteClusterSiteURLUniqueIndex, "RemoteClusters", uniquenessColumns)
sqlStore.CreateColumnIfNotExists("SharedChannelUsers", "ChannelId", "VARCHAR(26)", "VARCHAR(26)", "")
totalMsgCountRootExists := sqlStore.DoesColumnExist("Channels", "TotalMsgCountRoot")
msgCountRootExists := sqlStore.DoesColumnExist("ChannelMembers", "MsgCountRoot")
// note: setting default 0 on pre-5.0 tables causes test-db-migration script to fail, so this column will be added to ignore list
sqlStore.CreateColumnIfNotExists("ChannelMembers", "MentionCountRoot", "bigint", "bigint", "0")
sqlStore.AlterColumnDefaultIfExists("ChannelMembers", "MentionCountRoot", model.NewString("0"), model.NewString("0"))
@@ -1108,11 +1111,16 @@ func upgradeDatabaseToVersion535(sqlStore *SqlStore) {
SET MsgCountRoot=TotalMsgCountRoot
`
}
if _, err := sqlStore.GetMaster().Exec(updateChannels); err != nil {
mlog.Error("Error updating Channels table", mlog.Err(err))
if !totalMsgCountRootExists {
if _, err := sqlStore.GetMaster().Exec(updateChannels); err != nil {
mlog.Error("Error updating Channels table", mlog.Err(err))
}
}
if _, err := sqlStore.GetMaster().Exec(updateChannelMembers); err != nil {
mlog.Error("Error updating ChannelMembers table", mlog.Err(err))
if !msgCountRootExists {
if _, err := sqlStore.GetMaster().Exec(updateChannelMembers); err != nil {
mlog.Error("Error updating ChannelMembers table", mlog.Err(err))
}
}
// saveSchemaVersion(sqlStore, Version5350)

View File

@@ -221,6 +221,10 @@ func TestMsgCountRootMigration(t *testing.T) {
}
}
_, err = sqlStore.GetMaster().Exec(`ALTER TABLE Channels DROP COLUMN TotalMsgCountRoot`)
require.NoError(t, err)
_, err = sqlStore.GetMaster().Exec(`ALTER TABLE ChannelMembers DROP COLUMN MsgCountRoot`)
require.NoError(t, err)
upgradeDatabaseToVersion535(sqlStore)
members, err := ss.Channel().GetMembersByIds(channel.Id, userIds)