summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--model/version.go60
-rw-r--r--model/version_test.go52
-rw-r--r--store/sql_post_store.go5
-rw-r--r--store/sql_store.go23
-rw-r--r--store/sql_user_store.go3
5 files changed, 93 insertions, 50 deletions
diff --git a/model/version.go b/model/version.go
index 88334ceea..69529e7a1 100644
--- a/model/version.go
+++ b/model/version.go
@@ -4,6 +4,7 @@
package model
import (
+ "fmt"
"strconv"
"strings"
)
@@ -29,6 +30,22 @@ var BuildNumber = "_BUILD_NUMBER_"
var BuildDate = "_BUILD_DATE_"
var BuildHash = "_BUILD_HASH_"
var BuildEnterpriseReady = "_BUILD_ENTERPRISE_READY_"
+var versionsWithoutHotFixes []string
+
+func init() {
+ versionsWithoutHotFixes = make([]string, 0, len(versions))
+ seen := make(map[string]string)
+
+ for _, version := range versions {
+ maj, min, _ := SplitVersion(version)
+ verStr := fmt.Sprintf("%v.%v.0", maj, min)
+
+ if seen[verStr] == "" {
+ versionsWithoutHotFixes = append(versionsWithoutHotFixes, verStr)
+ seen[verStr] = verStr
+ }
+ }
+}
func SplitVersion(version string) (int64, int64, int64) {
parts := strings.Split(version, ".")
@@ -52,25 +69,17 @@ func SplitVersion(version string) (int64, int64, int64) {
return major, minor, patch
}
-func GetPreviousVersion(currentVersion string) (int64, int64) {
- currentIndex := -1
- currentMajor, currentMinor, _ := SplitVersion(currentVersion)
-
- for index, version := range versions {
- major, minor, _ := SplitVersion(version)
-
- if currentMajor == major && currentMinor == minor {
- currentIndex = index
- }
+func GetPreviousVersion(version string) string {
+ verMajor, verMinor, _ := SplitVersion(version)
+ verStr := fmt.Sprintf("%v.%v.0", verMajor, verMinor)
- if currentIndex >= 0 {
- if currentMajor != major || currentMinor != minor {
- return major, minor
- }
+ for index, v := range versionsWithoutHotFixes {
+ if v == verStr && len(versionsWithoutHotFixes) > index+1 {
+ return versionsWithoutHotFixes[index+1]
}
}
- return 0, 0
+ return ""
}
func IsOfficalBuild() bool {
@@ -88,13 +97,24 @@ func IsCurrentVersion(versionToCheck string) bool {
}
}
-func IsPreviousVersion(versionToCheck string) bool {
+func IsPreviousVersionsSupported(versionToCheck string) bool {
toCheckMajor, toCheckMinor, _ := SplitVersion(versionToCheck)
- prevMajor, prevMinor := GetPreviousVersion(CurrentVersion)
+ versionToCheckStr := fmt.Sprintf("%v.%v.0", toCheckMajor, toCheckMinor)
- if toCheckMajor == prevMajor && toCheckMinor == prevMinor {
+ // Current Supported
+ if versionsWithoutHotFixes[0] == versionToCheckStr {
+ return true
+ }
+
+ // Current - 1 Supported
+ if versionsWithoutHotFixes[1] == versionToCheckStr {
return true
- } else {
- return false
}
+
+ // Current - 2 Supported
+ if versionsWithoutHotFixes[2] == versionToCheckStr {
+ return true
+ }
+
+ return false
}
diff --git a/model/version_test.go b/model/version_test.go
index 33e8dc93e..d73273ce5 100644
--- a/model/version_test.go
+++ b/model/version_test.go
@@ -36,20 +36,28 @@ func TestSplitVersion(t *testing.T) {
}
func TestGetPreviousVersion(t *testing.T) {
- if major, minor := GetPreviousVersion("1.0.0"); major != 0 || minor != 7 {
- t.Fatal(major, minor)
+ if GetPreviousVersion("1.3.0") != "1.2.0" {
+ t.Fatal()
+ }
+
+ if GetPreviousVersion("1.2.1") != "1.1.0" {
+ t.Fatal()
+ }
+
+ if GetPreviousVersion("1.1.0") != "1.0.0" {
+ t.Fatal()
}
- if major, minor := GetPreviousVersion("0.7.0"); major != 0 || minor != 6 {
- t.Fatal(major, minor)
+ if GetPreviousVersion("1.0.0") != "0.7.0" {
+ t.Fatal()
}
- if major, minor := GetPreviousVersion("0.7.1"); major != 0 || minor != 6 {
- t.Fatal(major, minor)
+ if GetPreviousVersion("0.7.1") != "0.6.0" {
+ t.Fatal()
}
- if major, minor := GetPreviousVersion("0.7111.1"); major != 0 || minor != 0 {
- t.Fatal(major, minor)
+ if GetPreviousVersion("0.5.0") != "" {
+ t.Fatal()
}
}
@@ -72,3 +80,31 @@ func TestIsCurrentVersion(t *testing.T) {
t.Fatal()
}
}
+
+func TestIsPreviousVersionsSupported(t *testing.T) {
+
+ // 1.4.0 CURRENT RELEASED VERSION
+ if !IsPreviousVersionsSupported(versions[0]) {
+ t.Fatal()
+ }
+
+ // 1.3.0
+ if !IsPreviousVersionsSupported(versions[1]) {
+ t.Fatal()
+ }
+
+ // 1.2.1
+ if !IsPreviousVersionsSupported(versions[2]) {
+ t.Fatal()
+ }
+
+ // 1.2.0
+ if !IsPreviousVersionsSupported(versions[3]) {
+ t.Fatal()
+ }
+
+ // 1.1.0 NOT SUPPORTED
+ if IsPreviousVersionsSupported(versions[4]) {
+ t.Fatal()
+ }
+}
diff --git a/store/sql_post_store.go b/store/sql_post_store.go
index 2d5d66e0d..aeaa5922c 100644
--- a/store/sql_post_store.go
+++ b/store/sql_post_store.go
@@ -38,6 +38,11 @@ func NewSqlPostStore(sqlStore *SqlStore) PostStore {
}
func (s SqlPostStore) UpgradeSchemaIfNeeded() {
+ // ADDED for 1.3 REMOVE for 1.6
+ s.RemoveColumnIfExists("Posts", "ImgCount")
+
+ // ADDED for 1.3 REMOVE for 1.6
+ s.GetMaster().Exec(`UPDATE Preferences SET Type = :NewType WHERE Type = :CurrentType`, map[string]string{"NewType": model.POST_JOIN_LEAVE, "CurrentType": "join_leave"})
}
func (s SqlPostStore) CreateIndexesIfNotExists() {
diff --git a/store/sql_store.go b/store/sql_store.go
index e4e1bf3b4..335cb207c 100644
--- a/store/sql_store.go
+++ b/store/sql_store.go
@@ -73,25 +73,13 @@ func NewSqlStore() Store {
}
schemaVersion := sqlStore.GetCurrentSchemaVersion()
- isSchemaVersion07 := false // REMOVE AFTER 1.2 SHIP see PLT-828
- isSchemaVersion10 := false // REMOVE AFTER 1.2 SHIP see PLT-828
// If the version is already set then we are potentially in an 'upgrade needed' state
if schemaVersion != "" {
// Check to see if it's the most current database schema version
if !model.IsCurrentVersion(schemaVersion) {
// If we are upgrading from the previous version then print a warning and continue
-
- // Special case
- if schemaVersion == "0.7.1" || schemaVersion == "0.7.0" {
- isSchemaVersion07 = true
- }
-
- if schemaVersion == "1.0.0" {
- isSchemaVersion10 = true
- }
-
- if model.IsPreviousVersion(schemaVersion) || isSchemaVersion07 || isSchemaVersion10 {
+ if model.IsPreviousVersionsSupported(schemaVersion) {
l4g.Warn(utils.T("store.sql.schema_out_of_date.warn"), schemaVersion)
l4g.Warn(utils.T("store.sql.schema_upgrade_attempt.warn"), model.CurrentVersion)
} else {
@@ -103,13 +91,6 @@ func NewSqlStore() Store {
}
}
- // REMOVE AFTER 1.2 SHIP see PLT-828
- if sqlStore.DoesTableExist("Sessions") {
- if sqlStore.DoesColumnExist("Sessions", "AltId") {
- sqlStore.GetMaster().Exec("DROP TABLE IF EXISTS Sessions")
- }
- }
-
sqlStore.team = NewSqlTeamStore(sqlStore)
sqlStore.channel = NewSqlChannelStore(sqlStore)
sqlStore.post = NewSqlPostStore(sqlStore)
@@ -150,7 +131,7 @@ func NewSqlStore() Store {
sqlStore.preference.(*SqlPreferenceStore).DeleteUnusedFeatures()
- if model.IsPreviousVersion(schemaVersion) || isSchemaVersion07 || isSchemaVersion10 {
+ if model.IsPreviousVersionsSupported(schemaVersion) {
sqlStore.system.Update(&model.System{Name: "Version", Value: model.CurrentVersion})
l4g.Warn(utils.T("store.sql.upgraded.warn"), model.CurrentVersion)
}
diff --git a/store/sql_user_store.go b/store/sql_user_store.go
index 4ea8af090..0b6970c96 100644
--- a/store/sql_user_store.go
+++ b/store/sql_user_store.go
@@ -46,7 +46,8 @@ func NewSqlUserStore(sqlStore *SqlStore) UserStore {
}
func (us SqlUserStore) UpgradeSchemaIfNeeded() {
- us.CreateColumnIfNotExists("Users", "Locale", "varchar(5)", "character varying(5)", model.DEFAULT_LOCALE) // Added After 1.4
+ // ADDED for 1.5 REMOVE for 1.8
+ us.CreateColumnIfNotExists("Users", "Locale", "varchar(5)", "character varying(5)", model.DEFAULT_LOCALE)
}
func (us SqlUserStore) CreateIndexesIfNotExists() {