From 09dfc64f46c51567750ddea1838f76a3cd1fd519 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dani=C3=ABl=20van=20Eeden?= Date: Mon, 10 Jul 2023 14:02:12 +0200 Subject: [PATCH] infoschema: Don't truncate versions (#45222) ref pingcap/tidb#16302 --- infoschema/tables.go | 2 +- .../test/clustertablestest/tables_test.go | 41 ++++++++++--------- 2 files changed, 23 insertions(+), 20 deletions(-) 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 {