diff --git a/store/sqlstore/upgrade.go b/store/sqlstore/upgrade.go index 565705e033..082a669040 100644 --- a/store/sqlstore/upgrade.go +++ b/store/sqlstore/upgrade.go @@ -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) diff --git a/store/sqlstore/upgrade_test.go b/store/sqlstore/upgrade_test.go index ca0d165973..0acf2a28f3 100644 --- a/store/sqlstore/upgrade_test.go +++ b/store/sqlstore/upgrade_test.go @@ -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)