mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Merge 10.6 into 10.11
This commit is contained in:
@@ -296,6 +296,7 @@ void my_hash_sort_bin(CHARSET_INFO *cs __attribute__((unused)),
|
||||
const uchar *end = key + len;
|
||||
ulong tmp1= *nr1;
|
||||
ulong tmp2= *nr2;
|
||||
DBUG_ASSERT(key); /* Avoid UBSAN nullptr-with-offset */
|
||||
|
||||
for (; key < end ; key++)
|
||||
{
|
||||
@@ -316,6 +317,7 @@ void my_hash_sort_8bit_bin(CHARSET_INFO *cs __attribute__((unused)),
|
||||
'A ' and 'A' as identical
|
||||
*/
|
||||
const uchar *end= skip_trailing_space(key, len);
|
||||
DBUG_ASSERT(key); /* Avoid UBSAN nullptr-with-offset */
|
||||
my_hash_sort_bin(cs, key, end - key, nr1, nr2);
|
||||
}
|
||||
|
||||
|
@@ -703,7 +703,8 @@ void my_hash_sort_latin1_de(CHARSET_INFO *cs __attribute__((unused)),
|
||||
{
|
||||
const uchar *end;
|
||||
register ulong m1= *nr1, m2= *nr2;
|
||||
|
||||
DBUG_ASSERT(key); /* Avoid UBSAN nullptr-with-offset */
|
||||
|
||||
/*
|
||||
Remove end space. We have to do this to be able to compare
|
||||
'AE' and 'Ä' as identical
|
||||
|
@@ -619,6 +619,7 @@ my_hash_sort_mb_nopad_bin(CHARSET_INFO *cs __attribute__((unused)),
|
||||
{
|
||||
register ulong m1= *nr1, m2= *nr2;
|
||||
const uchar *end= key + len;
|
||||
DBUG_ASSERT(key); /* Avoid UBSAN nullptr-with-offset */
|
||||
for (; key < end ; key++)
|
||||
{
|
||||
MY_HASH_ADD(m1, m2, (uint)*key);
|
||||
@@ -637,6 +638,7 @@ my_hash_sort_mb_bin(CHARSET_INFO *cs __attribute__((unused)),
|
||||
'A ' and 'A' as identical
|
||||
*/
|
||||
const uchar *end= skip_trailing_space(key, len);
|
||||
DBUG_ASSERT(key); /* Avoid UBSAN nullptr-with-offset */
|
||||
my_hash_sort_mb_nopad_bin(cs, key, end - key, nr1, nr2);
|
||||
}
|
||||
|
||||
|
@@ -346,6 +346,7 @@ void my_hash_sort_simple_nopad(CHARSET_INFO *cs,
|
||||
register const uchar *sort_order=cs->sort_order;
|
||||
const uchar *end= key + len;
|
||||
register ulong m1= *nr1, m2= *nr2;
|
||||
DBUG_ASSERT(key); /* Avoid UBSAN nullptr-with-offset */
|
||||
for (; key < (uchar*) end ; key++)
|
||||
{
|
||||
MY_HASH_ADD(m1, m2, (uint) sort_order[(uint) *key]);
|
||||
@@ -362,6 +363,7 @@ void my_hash_sort_simple(CHARSET_INFO *cs,
|
||||
register const uchar *sort_order=cs->sort_order;
|
||||
const uchar *end;
|
||||
uint16 space_weight= sort_order[' '];
|
||||
DBUG_ASSERT(key); /* Avoid UBSAN nullptr-with-offset */
|
||||
|
||||
/*
|
||||
Remove all trailing characters that are equal to space.
|
||||
|
@@ -636,6 +636,7 @@ MY_FUNCTION_NAME(hash_sort)(CHARSET_INFO *cs,
|
||||
my_uca_scanner_param param;
|
||||
int space_weight= my_space_weight(&cs->uca->level[0]);
|
||||
register ulong m1= *nr1, m2= *nr2;
|
||||
DBUG_ASSERT(s); /* Avoid UBSAN nullptr-with-offset */
|
||||
|
||||
my_uca_scanner_param_init(¶m, cs, &cs->uca->level[0]);
|
||||
my_uca_scanner_init_any(&scanner, s, slen);
|
||||
@@ -691,6 +692,7 @@ MY_FUNCTION_NAME(hash_sort_nopad)(CHARSET_INFO *cs,
|
||||
my_uca_scanner scanner;
|
||||
my_uca_scanner_param param;
|
||||
register ulong m1= *nr1, m2= *nr2;
|
||||
DBUG_ASSERT(s); /* Avoid UBSAN nullptr-with-offset */
|
||||
|
||||
my_uca_scanner_param_init(¶m, cs, &cs->uca->level[0]);
|
||||
my_uca_scanner_init_any(&scanner, s, slen);
|
||||
|
@@ -1324,6 +1324,7 @@ my_hash_sort_utf16_nopad(CHARSET_INFO *cs,
|
||||
const uchar *e= s + slen;
|
||||
MY_CASEFOLD_INFO *uni_plane= cs->casefold;
|
||||
register ulong m1= *nr1, m2= *nr2;
|
||||
DBUG_ASSERT(s); /* Avoid UBSAN nullptr-with-offset */
|
||||
|
||||
while ((s < e) && (res= mb_wc(cs, &wc, (uchar *) s, (uchar *) e)) > 0)
|
||||
{
|
||||
@@ -1341,6 +1342,7 @@ my_hash_sort_utf16(CHARSET_INFO *cs, const uchar *s, size_t slen,
|
||||
ulong *nr1, ulong *nr2)
|
||||
{
|
||||
size_t lengthsp= my_ci_lengthsp(cs, (const char *) s, slen);
|
||||
DBUG_ASSERT(s); /* Avoid UBSAN nullptr-with-offset */
|
||||
my_hash_sort_utf16_nopad(cs, s, lengthsp, nr1, nr2);
|
||||
}
|
||||
|
||||
@@ -1451,6 +1453,7 @@ my_hash_sort_utf16_nopad_bin(CHARSET_INFO *cs __attribute__((unused)),
|
||||
{
|
||||
const uchar *end= pos + len;
|
||||
register ulong m1= *nr1, m2= *nr2;
|
||||
DBUG_ASSERT(pos); /* Avoid UBSAN nullptr-with-offset */
|
||||
|
||||
for ( ; pos < end ; pos++)
|
||||
{
|
||||
@@ -1466,6 +1469,7 @@ my_hash_sort_utf16_bin(CHARSET_INFO *cs,
|
||||
const uchar *pos, size_t len, ulong *nr1, ulong *nr2)
|
||||
{
|
||||
size_t lengthsp= my_ci_lengthsp(cs, (const char *) pos, len);
|
||||
DBUG_ASSERT(pos); /* Avoid UBSAN nullptr-with-offset */
|
||||
my_hash_sort_utf16_nopad_bin(cs, pos, lengthsp, nr1, nr2);
|
||||
}
|
||||
|
||||
@@ -2192,6 +2196,7 @@ my_hash_sort_utf32_nopad(CHARSET_INFO *cs, const uchar *s, size_t slen,
|
||||
const uchar *e= s + slen;
|
||||
MY_CASEFOLD_INFO *uni_plane= cs->casefold;
|
||||
register ulong m1= *nr1, m2= *nr2;
|
||||
DBUG_ASSERT(s); /* Avoid UBSAN nullptr-with-offset */
|
||||
|
||||
while ((res= my_utf32_uni(cs, &wc, (uchar*) s, (uchar*) e)) > 0)
|
||||
{
|
||||
@@ -2212,6 +2217,7 @@ my_hash_sort_utf32(CHARSET_INFO *cs, const uchar *s, size_t slen,
|
||||
ulong *nr1, ulong *nr2)
|
||||
{
|
||||
size_t lengthsp= my_lengthsp_utf32(cs, (const char *) s, slen);
|
||||
DBUG_ASSERT(s); /* Avoid UBSAN nullptr-with-offset */
|
||||
my_hash_sort_utf32_nopad(cs, s, lengthsp, nr1, nr2);
|
||||
}
|
||||
|
||||
@@ -3060,6 +3066,7 @@ my_hash_sort_ucs2_nopad(CHARSET_INFO *cs, const uchar *s, size_t slen,
|
||||
const uchar *e=s+slen;
|
||||
MY_CASEFOLD_INFO *uni_plane= cs->casefold;
|
||||
register ulong m1= *nr1, m2= *nr2;
|
||||
DBUG_ASSERT(s); /* Avoid UBSAN nullptr-with-offset */
|
||||
|
||||
while ((s < e) && (res=my_ucs2_uni(cs,&wc, (uchar *)s, (uchar*)e)) >0)
|
||||
{
|
||||
@@ -3076,6 +3083,7 @@ static void my_hash_sort_ucs2(CHARSET_INFO *cs, const uchar *s, size_t slen,
|
||||
ulong *nr1, ulong *nr2)
|
||||
{
|
||||
size_t lengthsp= my_lengthsp_mb2(cs, (const char *) s, slen);
|
||||
DBUG_ASSERT(s); /* Avoid UBSAN nullptr-with-offset */
|
||||
my_hash_sort_ucs2_nopad(cs, s, lengthsp, nr1, nr2);
|
||||
}
|
||||
|
||||
@@ -3200,6 +3208,7 @@ my_hash_sort_ucs2_nopad_bin(CHARSET_INFO *cs __attribute__((unused)),
|
||||
{
|
||||
const uchar *end= key + len;
|
||||
register ulong m1= *nr1, m2= *nr2;
|
||||
DBUG_ASSERT(key); /* Avoid UBSAN nullptr-with-offset */
|
||||
for ( ; key < end ; key++)
|
||||
{
|
||||
MY_HASH_ADD(m1, m2, (uint)*key);
|
||||
@@ -3214,6 +3223,7 @@ my_hash_sort_ucs2_bin(CHARSET_INFO *cs,
|
||||
const uchar *key, size_t len, ulong *nr1, ulong *nr2)
|
||||
{
|
||||
size_t lengthsp= my_lengthsp_mb2(cs, (const char *) key, len);
|
||||
DBUG_ASSERT(key); /* Avoid UBSAN nullptr-with-offset */
|
||||
my_hash_sort_ucs2_nopad_bin(cs, key, lengthsp, nr1, nr2);
|
||||
}
|
||||
|
||||
|
@@ -699,6 +699,7 @@ static void my_hash_sort_utf8mb3_nopad(CHARSET_INFO *cs, const uchar *s, size_t
|
||||
const uchar *e= s+slen;
|
||||
MY_CASEFOLD_INFO *uni_plane= cs->casefold;
|
||||
register ulong m1= *nr1, m2= *nr2;
|
||||
DBUG_ASSERT(s); /* Avoid UBSAN nullptr-with-offset */
|
||||
|
||||
while ((s < e) && (res=my_utf8mb3_uni(cs,&wc, (uchar *)s, (uchar*)e))>0 )
|
||||
{
|
||||
@@ -719,6 +720,7 @@ static void my_hash_sort_utf8mb3(CHARSET_INFO *cs, const uchar *s, size_t slen,
|
||||
'A ' and 'A' as identical
|
||||
*/
|
||||
const uchar *e= skip_trailing_space(s, slen);
|
||||
DBUG_ASSERT(s); /* Avoid UBSAN nullptr-with-offset */
|
||||
my_hash_sort_utf8mb3_nopad(cs, s, e - s, nr1, nr2);
|
||||
}
|
||||
|
||||
@@ -3148,6 +3150,7 @@ my_hash_sort_utf8mb4_nopad(CHARSET_INFO *cs, const uchar *s, size_t slen,
|
||||
const uchar *e= s + slen;
|
||||
MY_CASEFOLD_INFO *uni_plane= cs->casefold;
|
||||
register ulong m1= *nr1, m2= *nr2;
|
||||
DBUG_ASSERT(s); /* Avoid UBSAN nullptr-with-offset */
|
||||
|
||||
while ((res= my_mb_wc_utf8mb4(cs, &wc, (uchar*) s, (uchar*) e)) > 0)
|
||||
{
|
||||
@@ -3180,6 +3183,7 @@ my_hash_sort_utf8mb4(CHARSET_INFO *cs, const uchar *s, size_t slen,
|
||||
'A ' and 'A' as identical
|
||||
*/
|
||||
const uchar *e= skip_trailing_space(s, slen);
|
||||
DBUG_ASSERT(s); /* Avoid UBSAN nullptr-with-offset */
|
||||
my_hash_sort_utf8mb4_nopad(cs, s, e - s, nr1, nr2);
|
||||
}
|
||||
|
||||
|
@@ -81,7 +81,7 @@
|
||||
static inline const uchar *skip_trailing_space(const uchar *ptr,size_t len)
|
||||
{
|
||||
const uchar *end= ptr + len;
|
||||
|
||||
DBUG_ASSERT(ptr); /* Avoid UBSAN nullptr-with-offset */
|
||||
if (len > 20)
|
||||
{
|
||||
const uchar *end_words= (const uchar *)(intptr)
|
||||
|
Reference in New Issue
Block a user