diff --git a/store/sqlstore/upgrade.go b/store/sqlstore/upgrade.go index fa7771a21d..3b327da517 100644 --- a/store/sqlstore/upgrade.go +++ b/store/sqlstore/upgrade.go @@ -223,9 +223,23 @@ func saveSchemaVersion(sqlStore *SqlStore, version string) { } func shouldPerformUpgrade(sqlStore *SqlStore, currentSchemaVersion string, expectedSchemaVersion string) bool { - if sqlStore.GetCurrentSchemaVersion() == currentSchemaVersion { - mlog.Warn("Attempting to upgrade the database schema version", mlog.String("current_version", currentSchemaVersion), mlog.String("new_version", expectedSchemaVersion)) + storedSchemaVersion := sqlStore.GetCurrentSchemaVersion() + storedVersion, err := semver.Parse(storedSchemaVersion) + if err != nil { + mlog.Error("Error parsing stored schema version", mlog.Err(err)) + return false + } + + currentVersion, err := semver.Parse(currentSchemaVersion) + if err != nil { + mlog.Error("Error parsing current schema version", mlog.Err(err)) + return false + } + + if storedVersion.Major == currentVersion.Major && storedVersion.Minor == currentVersion.Minor { + mlog.Warn("Attempting to upgrade the database schema version", + mlog.String("stored_version", storedSchemaVersion), mlog.String("current_version", currentSchemaVersion), mlog.String("new_version", expectedSchemaVersion)) return true } diff --git a/store/sqlstore/upgrade_test.go b/store/sqlstore/upgrade_test.go index a159861935..9623e01c37 100644 --- a/store/sqlstore/upgrade_test.go +++ b/store/sqlstore/upgrade_test.go @@ -13,6 +13,16 @@ import ( "github.com/mattermost/mattermost-server/v5/store" ) +func TestStoreUpgradeDotRelease(t *testing.T) { + StoreTest(t, func(t *testing.T, ss store.Store) { + sqlStore := ss.(*SqlStore) + saveSchemaVersion(sqlStore, "5.33.1") + err := upgradeDatabase(sqlStore, CurrentSchemaVersion) + require.NoError(t, err) + require.Equal(t, CurrentSchemaVersion, sqlStore.GetCurrentSchemaVersion()) + }) +} + func TestStoreUpgrade(t *testing.T) { StoreTest(t, func(t *testing.T, ss store.Store) { sqlStore := ss.(*SqlStore)