From ea23efe2c15f067697e1ea026afa471cc49d85ad Mon Sep 17 00:00:00 2001 From: Lakshya Singh Date: Thu, 28 Oct 2021 18:17:31 +0530 Subject: [PATCH] refactor: API update collations Module Signed-off-by: Lakshya Singh --- go/vt/vtgate/engine/ordered_aggregate_test.go | 9 ++-- go/vt/vtgate/evalengine/arithmetic.go | 2 +- go/vt/vtgate/evalengine/arithmetic_test.go | 41 +++++++++++-------- 3 files changed, 30 insertions(+), 22 deletions(-) diff --git a/go/vt/vtgate/engine/ordered_aggregate_test.go b/go/vt/vtgate/engine/ordered_aggregate_test.go index 5765e2e341c..80fadaaf6b3 100644 --- a/go/vt/vtgate/engine/ordered_aggregate_test.go +++ b/go/vt/vtgate/engine/ordered_aggregate_test.go @@ -1073,12 +1073,13 @@ func TestOrderedAggregateCollate(t *testing.T) { )}, } + collationID, _ := collations.IDFromName("utf8mb4_0900_ai_ci") oa := &OrderedAggregate{ Aggregates: []*AggregateParams{{ Opcode: AggregateCount, Col: 1, }}, - GroupByKeys: []*GroupByParams{{KeyCol: 0, CollationID: collations.LookupIDByName("utf8mb4_0900_ai_ci")}}, + GroupByKeys: []*GroupByParams{{KeyCol: 0, CollationID: collationID}}, Input: fp, } @@ -1114,12 +1115,13 @@ func TestOrderedAggregateCollateAS(t *testing.T) { )}, } + collationID, _ := collations.IDFromName("utf8mb4_0900_as_ci") oa := &OrderedAggregate{ Aggregates: []*AggregateParams{{ Opcode: AggregateCount, Col: 1, }}, - GroupByKeys: []*GroupByParams{{KeyCol: 0, CollationID: collations.LookupIDByName("utf8mb4_0900_as_ci")}}, + GroupByKeys: []*GroupByParams{{KeyCol: 0, CollationID: collationID}}, Input: fp, } @@ -1157,12 +1159,13 @@ func TestOrderedAggregateCollateKS(t *testing.T) { )}, } + collationID, _ := collations.IDFromName("utf8mb4_ja_0900_as_cs_ks") oa := &OrderedAggregate{ Aggregates: []*AggregateParams{{ Opcode: AggregateCount, Col: 1, }}, - GroupByKeys: []*GroupByParams{{KeyCol: 0, CollationID: collations.LookupIDByName("utf8mb4_ja_0900_as_cs_ks")}}, + GroupByKeys: []*GroupByParams{{KeyCol: 0, CollationID: collationID}}, Input: fp, } diff --git a/go/vt/vtgate/evalengine/arithmetic.go b/go/vt/vtgate/evalengine/arithmetic.go index 0939f0de7f0..c96b5d49504 100644 --- a/go/vt/vtgate/evalengine/arithmetic.go +++ b/go/vt/vtgate/evalengine/arithmetic.go @@ -224,7 +224,7 @@ func NullsafeCompare(v1, v2 sqltypes.Value, collationID collations.ID) (int, err return bytes.Compare(v1.ToBytes(), v2.ToBytes()), nil } if v1.IsText() && v2.IsText() && collationID != collations.Unknown { - collation := collations.LookupById(collationID) + collation := collations.FromID(collationID) if collation == nil { return 0, UnsupportedCollationError{ ID: collationID, diff --git a/go/vt/vtgate/evalengine/arithmetic_test.go b/go/vt/vtgate/evalengine/arithmetic_test.go index 5fca60d4054..dc576007030 100644 --- a/go/vt/vtgate/evalengine/arithmetic_test.go +++ b/go/vt/vtgate/evalengine/arithmetic_test.go @@ -599,6 +599,11 @@ func TestNullsafeCompare(t *testing.T) { } } +func getCollationID(collation string) collations.ID { + id, _ := collations.IDFromName(collation) + return id +} + func TestNullsafeCompareCollate(t *testing.T) { tcases := []struct { v1, v2 string @@ -611,42 +616,42 @@ func TestNullsafeCompareCollate(t *testing.T) { v1: "abCd", v2: "aBcd", out: 0, - collation: collations.LookupIDByName("utf8mb4_0900_as_ci"), + collation: getCollationID("utf8mb4_0900_as_ci"), }, { // accent sensitive v1: "ǍḄÇ", v2: "ÁḆĈ", out: 1, - collation: collations.LookupIDByName("utf8mb4_0900_as_ci"), + collation: getCollationID("utf8mb4_0900_as_ci"), }, { // hangul decomposition v1: "\uAC00", v2: "\u326E", out: 0, - collation: collations.LookupIDByName("utf8mb4_0900_as_ci"), + collation: getCollationID("utf8mb4_0900_as_ci"), }, { // kana sensitive v1: "\xE3\x81\xAB\xE3\x81\xBB\xE3\x82\x93\xE3\x81\x94", v2: "\xE3\x83\x8B\xE3\x83\x9B\xE3\x83\xB3\xE3\x82\xB4", out: -1, - collation: collations.LookupIDByName("utf8mb4_ja_0900_as_cs_ks"), + collation: getCollationID("utf8mb4_ja_0900_as_cs_ks"), }, { // non breaking space v1: "abc ", v2: "abc\u00a0", out: -1, - collation: collations.LookupIDByName("utf8mb4_0900_as_cs"), + collation: getCollationID("utf8mb4_0900_as_cs"), }, { // "cs" counts as a separate letter, where c < cs < d v1: "c", v2: "cs", out: -1, - collation: collations.LookupIDByName("utf8mb4_hu_0900_ai_ci"), + collation: getCollationID("utf8mb4_hu_0900_ai_ci"), }, { v1: "abcd", @@ -661,8 +666,8 @@ func TestNullsafeCompareCollate(t *testing.T) { err: vterrors.New(vtrpcpb.Code_UNKNOWN, "comparison using collation 1111 isn't possible"), }, { - v1: "abcd", - v2: "abcd", + v1: "abcd", + v2: "abcd", // unsupported collation gb18030_bin collation: 249, err: vterrors.New(vtrpcpb.Code_UNKNOWN, "comparison using collation 249 isn't possible"), @@ -1379,35 +1384,35 @@ func TestMinCollate(t *testing.T) { v1: "ǍḄÇ", v2: "ÁḆĈ", out: "ǍḄÇ", - collation: collations.LookupIDByName("utf8mb4_0900_as_ci"), + collation: getCollationID("utf8mb4_0900_as_ci"), }, { // kana sensitive v1: "\xE3\x81\xAB\xE3\x81\xBB\xE3\x82\x93\xE3\x81\x94", v2: "\xE3\x83\x8B\xE3\x83\x9B\xE3\x83\xB3\xE3\x82\xB4", out: "\xE3\x83\x8B\xE3\x83\x9B\xE3\x83\xB3\xE3\x82\xB4", - collation: collations.LookupIDByName("utf8mb4_ja_0900_as_cs_ks"), + collation: getCollationID("utf8mb4_ja_0900_as_cs_ks"), }, { // non breaking space v1: "abc ", v2: "abc\u00a0", out: "abc\u00a0", - collation: collations.LookupIDByName("utf8mb4_0900_as_cs"), + collation: getCollationID("utf8mb4_0900_as_cs"), }, { // "cs" counts as a separate letter, where c < cs < d v1: "c", v2: "cs", out: "cs", - collation: collations.LookupIDByName("utf8mb4_hu_0900_ai_ci"), + collation: getCollationID("utf8mb4_hu_0900_ai_ci"), }, { // "cs" counts as a separate letter, where c < cs < d v1: "cukor", v2: "csak", out: "csak", - collation: collations.LookupIDByName("utf8mb4_hu_0900_ai_ci"), + collation: getCollationID("utf8mb4_hu_0900_ai_ci"), }, } for _, tcase := range tcases { @@ -1486,35 +1491,35 @@ func TestMaxCollate(t *testing.T) { v1: "ǍḄÇ", v2: "ÁḆĈ", out: "ǍḄÇ", - collation: collations.LookupIDByName("utf8mb4_0900_as_ci"), + collation: getCollationID("utf8mb4_0900_as_ci"), }, { // kana sensitive v1: "\xE3\x81\xAB\xE3\x81\xBB\xE3\x82\x93\xE3\x81\x94", v2: "\xE3\x83\x8B\xE3\x83\x9B\xE3\x83\xB3\xE3\x82\xB4", out: "\xE3\x83\x8B\xE3\x83\x9B\xE3\x83\xB3\xE3\x82\xB4", - collation: collations.LookupIDByName("utf8mb4_ja_0900_as_cs_ks"), + collation: getCollationID("utf8mb4_ja_0900_as_cs_ks"), }, { // non breaking space v1: "abc ", v2: "abc\u00a0", out: "abc\u00a0", - collation: collations.LookupIDByName("utf8mb4_0900_as_cs"), + collation: getCollationID("utf8mb4_0900_as_cs"), }, { // "cs" counts as a separate letter, where c < cs < d v1: "c", v2: "cs", out: "cs", - collation: collations.LookupIDByName("utf8mb4_hu_0900_ai_ci"), + collation: getCollationID("utf8mb4_hu_0900_ai_ci"), }, { // "cs" counts as a separate letter, where c < cs < d v1: "cukor", v2: "csak", out: "csak", - collation: collations.LookupIDByName("utf8mb4_hu_0900_ai_ci"), + collation: getCollationID("utf8mb4_hu_0900_ai_ci"), }, } for _, tcase := range tcases {