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>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
2865ad9221
Коммит
69eb0ca773
@@ -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)
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user