diff --git a/infoschema/tables.go b/infoschema/tables.go index cbe06c0263..e119c5500c 100644 --- a/infoschema/tables.go +++ b/infoschema/tables.go @@ -1770,7 +1770,7 @@ func FormatTiDBVersion(TiDBVersion string, isDefaultVersion bool) string { if len(nodeVersion) > 0 && nodeVersion[0] == 'v' { nodeVersion = nodeVersion[1:] } - nodeVersions := strings.Split(nodeVersion, "-") + nodeVersions := strings.SplitN(nodeVersion, "-", 2) if len(nodeVersions) == 1 { version = nodeVersions[0] } else if len(nodeVersions) >= 2 { diff --git a/infoschema/test/clustertablestest/tables_test.go b/infoschema/test/clustertablestest/tables_test.go index dd320140a6..086935df97 100644 --- a/infoschema/test/clustertablestest/tables_test.go +++ b/infoschema/test/clustertablestest/tables_test.go @@ -775,28 +775,31 @@ func TestSelectHiddenColumn(t *testing.T) { func TestFormatVersion(t *testing.T) { // Test for defaultVersions. - defaultVersions := []string{ - "5.7.25-TiDB-None", - "5.7.25-TiDB-8.0.18", - "5.7.25-TiDB-8.0.18-beta.1", - "5.7.25-TiDB-v4.0.0-beta-446-g5268094af", - "5.7.25-TiDB-", - "5.7.25-TiDB-v4.0.0-TiDB-446"} - defaultRes := []string{"None", "8.0.18", "8.0.18-beta.1", "4.0.0-beta", "", "4.0.0-TiDB"} - for i, v := range defaultVersions { - version := infoschema.FormatTiDBVersion(v, true) - require.Equal(t, defaultRes[i], version) + versions := []struct { + version string + expected string + userset bool + }{ + // default versions + {"5.7.25-TiDB-None", "None", true}, + {"5.7.25-TiDB-8.0.18", "8.0.18", true}, + {"5.7.25-TiDB-8.0.18-beta.1", "8.0.18-beta.1", true}, + {"5.7.25-TiDB-v4.0.0-beta-446-g5268094af", "4.0.0-beta-446-g5268094af", true}, + {"5.7.25-TiDB-", "", true}, + {"5.7.25-TiDB-v4.0.0-TiDB-446", "4.0.0-TiDB-446", true}, + // userset + {"8.0.18", "8.0.18", false}, + {"5.7.25-TiDB", "5.7.25-TiDB", false}, + {"8.0.18-TiDB-4.0.0-beta.1", "8.0.18-TiDB-4.0.0-beta.1", false}, } - - // Test for versions user set. - versions := []string{"8.0.18", "5.7.25-TiDB", "8.0.18-TiDB-4.0.0-beta.1"} - res := []string{"8.0.18", "5.7.25-TiDB", "8.0.18-TiDB-4.0.0-beta.1"} - for i, v := range versions { - version := infoschema.FormatTiDBVersion(v, false) - require.Equal(t, res[i], version) + for _, tt := range versions { + version := infoschema.FormatTiDBVersion(tt.version, tt.userset) + require.Equal(t, tt.expected, version) } +} - versions = []string{"v4.0.12", "4.0.12", "v5.0.1"} +func TestFormatStoreServerVersion(t *testing.T) { + versions := []string{"v4.0.12", "4.0.12", "v5.0.1"} resultVersion := []string{"4.0.12", "4.0.12", "5.0.1"} for i, versionString := range versions {