summaryrefslogtreecommitdiff
path: root/strings
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2020-06-13 15:11:43 +0300
committerMarko Mäkelä <marko.makela@mariadb.com>2020-06-13 15:11:43 +0300
commitd83a4432503d199f6aed8e378563b08471d090dc (patch)
tree4982259fb773f1d1e627e010fba0f58a10e82a13 /strings
parent6c30bc2181328ea619d1ab61a464feb0514bf12a (diff)
parentb68f1d847f1fc00eed795e20162effc8fbc4119b (diff)
downloadmariadb-git-d83a4432503d199f6aed8e378563b08471d090dc.tar.gz
Merge 10.2 into 10.3
Diffstat (limited to 'strings')
-rw-r--r--strings/ctype-utf8.c26
1 files changed, 11 insertions, 15 deletions
diff --git a/strings/ctype-utf8.c b/strings/ctype-utf8.c
index f5bcb8686d5..1d0295000e4 100644
--- a/strings/ctype-utf8.c
+++ b/strings/ctype-utf8.c
@@ -5159,8 +5159,8 @@ static size_t my_caseup_utf8(CHARSET_INFO *cs, const char *src, size_t srclen,
}
-static void my_hash_sort_utf8_nopad(CHARSET_INFO *cs, const uchar *s, size_t slen,
- ulong *nr1, ulong *nr2)
+static void my_hash_sort_utf8mb3_nopad(CHARSET_INFO *cs, const uchar *s, size_t slen,
+ ulong *nr1, ulong *nr2)
{
my_wc_t wc;
int res;
@@ -5179,17 +5179,15 @@ static void my_hash_sort_utf8_nopad(CHARSET_INFO *cs, const uchar *s, size_t sle
}
-static void my_hash_sort_utf8(CHARSET_INFO *cs, const uchar *s, size_t slen,
- ulong *nr1, ulong *nr2)
+static void my_hash_sort_utf8mb3(CHARSET_INFO *cs, const uchar *s, size_t slen,
+ ulong *nr1, ulong *nr2)
{
- const uchar *e= s+slen;
/*
Remove end space. We have to do this to be able to compare
'A ' and 'A' as identical
*/
- while (e > s && e[-1] == ' ')
- e--;
- my_hash_sort_utf8_nopad(cs, s, e - s, nr1, nr2);
+ const uchar *e= skip_trailing_space(s, slen);
+ my_hash_sort_utf8mb3_nopad(cs, s, e - s, nr1, nr2);
}
@@ -5540,7 +5538,7 @@ static MY_COLLATION_HANDLER my_collation_utf8_general_ci_handler =
my_wildcmp_utf8,
my_strcasecmp_utf8,
my_instr_mb,
- my_hash_sort_utf8,
+ my_hash_sort_utf8mb3,
my_propagate_complex
};
@@ -5556,7 +5554,7 @@ static MY_COLLATION_HANDLER my_collation_utf8_general_mysql500_ci_handler =
my_wildcmp_utf8,
my_strcasecmp_utf8,
my_instr_mb,
- my_hash_sort_utf8,
+ my_hash_sort_utf8mb3,
my_propagate_complex
};
@@ -5588,7 +5586,7 @@ static MY_COLLATION_HANDLER my_collation_utf8_general_nopad_ci_handler =
my_wildcmp_utf8,
my_strcasecmp_utf8,
my_instr_mb,
- my_hash_sort_utf8_nopad,
+ my_hash_sort_utf8mb3_nopad,
my_propagate_complex
};
@@ -7224,7 +7222,7 @@ static MY_COLLATION_HANDLER my_collation_filename_handler =
my_wildcmp_utf8,
my_strcasecmp_utf8,
my_instr_mb,
- my_hash_sort_utf8,
+ my_hash_sort_utf8mb3,
my_propagate_complex
};
@@ -7625,13 +7623,11 @@ static void
my_hash_sort_utf8mb4(CHARSET_INFO *cs, const uchar *s, size_t slen,
ulong *nr1, ulong *nr2)
{
- const uchar *e= s + slen;
/*
Remove end space. We do this to be able to compare
'A ' and 'A' as identical
*/
- while (e > s && e[-1] == ' ')
- e--;
+ const uchar *e= skip_trailing_space(s, slen);
my_hash_sort_utf8mb4_nopad(cs, s, e - s, nr1, nr2);
}