summaryrefslogtreecommitdiff
path: root/strings
diff options
context:
space:
mode:
Diffstat (limited to 'strings')
-rw-r--r--strings/CHARSET_INFO.txt2
-rw-r--r--strings/CMakeLists.txt3
-rw-r--r--strings/ctype-big5.c11
-rw-r--r--strings/ctype-bin.c5
-rw-r--r--strings/ctype-cp932.c14
-rw-r--r--strings/ctype-czech.c2
-rw-r--r--strings/ctype-euc_kr.c10
-rw-r--r--strings/ctype-eucjpms.c11
-rw-r--r--strings/ctype-gb2312.c11
-rw-r--r--strings/ctype-gbk.c10
-rw-r--r--strings/ctype-latin1.c13
-rw-r--r--strings/ctype-mb.c59
-rw-r--r--strings/ctype-mb.inl2
-rw-r--r--strings/ctype-simple.c11
-rw-r--r--strings/ctype-sjis.c19
-rw-r--r--strings/ctype-tis620.c19
-rw-r--r--strings/ctype-uca.c697
-rw-r--r--strings/ctype-uca.inl6
-rw-r--r--strings/ctype-ucs2.c63
-rw-r--r--strings/ctype-ujis.c10
-rw-r--r--strings/ctype-utf8.c435
-rw-r--r--strings/ctype-win1250ch.c3
-rw-r--r--strings/ctype.c159
-rw-r--r--strings/decimal.c35
-rw-r--r--strings/dtoa.c2
-rw-r--r--strings/json_lib.c31
-rw-r--r--strings/my_strchr.c5
-rw-r--r--strings/my_vsnprintf.c7
-rw-r--r--strings/strcoll.inl15
-rw-r--r--strings/strings_def.h24
-rw-r--r--strings/xml.c4
31 files changed, 962 insertions, 736 deletions
diff --git a/strings/CHARSET_INFO.txt b/strings/CHARSET_INFO.txt
index 6f0a810be37..922a372495b 100644
--- a/strings/CHARSET_INFO.txt
+++ b/strings/CHARSET_INFO.txt
@@ -129,7 +129,7 @@ In all Asian charsets these arrays are set up as follows:
In Unicode character sets we have full support of UPPER/LOWER mapping,
for sorting order, and for character type detection.
-"utf8_general_ci" still has the "old-fashioned" arrays
+"utf8mb3_general_ci" still has the "old-fashioned" arrays
like to_upper, to_lower, sort_order and ctype, but they are
not really used (maybe only in some rare legacy functions).
diff --git a/strings/CMakeLists.txt b/strings/CMakeLists.txt
index 60f5b409bfb..0e62f9e34ad 100644
--- a/strings/CMakeLists.txt
+++ b/strings/CMakeLists.txt
@@ -32,7 +32,8 @@ ENDIF()
# Avoid dependencies on perschema data defined in mysys
ADD_DEFINITIONS(-DDISABLE_MYSQL_THREAD_H)
ADD_CONVENIENCE_LIBRARY(strings ${STRINGS_SOURCES})
-
+TARGET_LINK_LIBRARIES(strings dbug mysys)
+MAYBE_DISABLE_IPO(strings)
ADD_EXECUTABLE(conf_to_src EXCLUDE_FROM_ALL conf_to_src.c)
SET_TARGET_PROPERTIES(conf_to_src PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD TRUE)
TARGET_LINK_LIBRARIES(conf_to_src mysys strings)
diff --git a/strings/ctype-big5.c b/strings/ctype-big5.c
index 91d48a36c96..b12da023604 100644
--- a/strings/ctype-big5.c
+++ b/strings/ctype-big5.c
@@ -32,6 +32,8 @@
#ifdef HAVE_CHARSET_big5
+const char charset_name_big5[]= "big5";
+
/*
Support for Chinese(BIG5) characters, by jou@nematic.ieo.nctu.edu.tw
CP950 and HKSCS additional characters are also accepted.
@@ -6804,13 +6806,14 @@ static MY_CHARSET_HANDLER my_charset_big5_handler=
my_well_formed_char_length_big5,
my_copy_fix_mb,
my_native_to_mb_big5,
+ my_wc_to_printable_generic
};
struct charset_info_st my_charset_big5_chinese_ci=
{
1,0,0, /* number */
MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM, /* state */
- "big5", /* cs name */
+ charset_name_big5, /* cs name */
"big5_chinese_ci", /* name */
"", /* comment */
NULL, /* tailoring */
@@ -6843,7 +6846,7 @@ struct charset_info_st my_charset_big5_bin=
{
84,0,0, /* number */
MY_CS_COMPILED|MY_CS_BINSORT, /* state */
- "big5", /* cs name */
+ charset_name_big5, /* cs name */
"big5_bin", /* name */
"", /* comment */
NULL, /* tailoring */
@@ -6876,7 +6879,7 @@ struct charset_info_st my_charset_big5_chinese_nopad_ci=
{
MY_NOPAD_ID(1),0,0, /* number */
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_NOPAD, /* state */
- "big5", /* cs name */
+ charset_name_big5, /* cs name */
"big5_chinese_nopad_ci", /* name */
"", /* comment */
NULL, /* tailoring */
@@ -6909,7 +6912,7 @@ struct charset_info_st my_charset_big5_nopad_bin=
{
MY_NOPAD_ID(84),0,0, /* number */
MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, /* state */
- "big5", /* cs name */
+ charset_name_big5, /* cs name */
"big5_nopad_bin", /* name */
"", /* comment */
NULL, /* tailoring */
diff --git a/strings/ctype-bin.c b/strings/ctype-bin.c
index 2893aadd99f..a8420722f25 100644
--- a/strings/ctype-bin.c
+++ b/strings/ctype-bin.c
@@ -23,6 +23,8 @@
#include "strings_def.h"
#include <m_ctype.h>
+const char charset_name_binary[]= "binary";
+
static const uchar ctype_bin[]=
{
0,
@@ -585,6 +587,7 @@ static MY_CHARSET_HANDLER my_charset_handler=
my_well_formed_char_length_8bit,
my_copy_8bit,
my_wc_mb_bin,
+ my_wc_to_printable_generic
};
@@ -592,7 +595,7 @@ struct charset_info_st my_charset_bin =
{
63,0,0, /* number */
MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_PRIMARY|MY_CS_NOPAD,/* state */
- "binary", /* cs name */
+ charset_name_binary, /* cs name */
"binary", /* name */
"", /* comment */
NULL, /* tailoring */
diff --git a/strings/ctype-cp932.c b/strings/ctype-cp932.c
index aeca63a86f9..5196a21ebeb 100644
--- a/strings/ctype-cp932.c
+++ b/strings/ctype-cp932.c
@@ -22,6 +22,7 @@
#ifdef HAVE_CHARSET_cp932
+const char charset_name_cp932[]= "cp932";
/*
* This comment is parsed by configure to create ctype.c,
@@ -34760,6 +34761,7 @@ static MY_CHARSET_HANDLER my_charset_handler=
my_well_formed_char_length_cp932,
my_copy_fix_mb,
my_native_to_mb_cp932,
+ my_wc_to_printable_generic
};
@@ -34767,8 +34769,8 @@ struct charset_info_st my_charset_cp932_japanese_ci=
{
95,0,0, /* number */
MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM, /* state */
- "cp932", /* cs name */
- "cp932_japanese_ci", /* name */
+ charset_name_cp932, /* cs name */
+ "cp932_japanese_ci", /* name */
"", /* comment */
NULL, /* tailoring */
ctype_cp932,
@@ -34799,8 +34801,8 @@ struct charset_info_st my_charset_cp932_bin=
{
96,0,0, /* number */
MY_CS_COMPILED|MY_CS_BINSORT, /* state */
- "cp932", /* cs name */
- "cp932_bin", /* name */
+ charset_name_cp932, /* cs name */
+ "cp932_bin", /* name */
"", /* comment */
NULL, /* tailoring */
ctype_cp932,
@@ -34832,7 +34834,7 @@ struct charset_info_st my_charset_cp932_japanese_nopad_ci=
{
MY_NOPAD_ID(95),0,0, /* number */
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_NOPAD, /* state */
- "cp932", /* cs name */
+ charset_name_cp932, /* cs name */
"cp932_japanese_nopad_ci",/* name */
"", /* comment */
NULL, /* tailoring */
@@ -34864,7 +34866,7 @@ struct charset_info_st my_charset_cp932_nopad_bin=
{
MY_NOPAD_ID(96),0,0, /* number */
MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, /* state */
- "cp932", /* cs name */
+ charset_name_cp932, /* cs name */
"cp932_nopad_bin", /* name */
"", /* comment */
NULL, /* tailoring */
diff --git a/strings/ctype-czech.c b/strings/ctype-czech.c
index 33d43d4dd4e..74ac4fc1494 100644
--- a/strings/ctype-czech.c
+++ b/strings/ctype-czech.c
@@ -626,7 +626,7 @@ struct charset_info_st my_charset_latin2_czech_ci =
2,0,0, /* number */
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_CSSORT|
MY_CS_STRNXFRM_BAD_NWEIGHTS|MY_CS_NON1TO1, /* state */
- "latin2", /* cs name */
+ charset_name_latin2, /* cs name */
"latin2_czech_cs", /* name */
"", /* comment */
NULL, /* tailoring */
diff --git a/strings/ctype-euc_kr.c b/strings/ctype-euc_kr.c
index 62e42f2f942..54fae4de0c0 100644
--- a/strings/ctype-euc_kr.c
+++ b/strings/ctype-euc_kr.c
@@ -31,6 +31,7 @@
#ifdef HAVE_CHARSET_euckr
+const char charset_name_euckr[]= "euckr";
static const uchar ctype_euc_kr[257] =
{
@@ -10050,6 +10051,7 @@ static MY_CHARSET_HANDLER my_charset_handler=
my_well_formed_char_length_euckr,
my_copy_fix_mb,
my_native_to_mb_euckr,
+ my_wc_to_printable_generic
};
@@ -10057,7 +10059,7 @@ struct charset_info_st my_charset_euckr_korean_ci=
{
19,0,0, /* number */
MY_CS_COMPILED|MY_CS_PRIMARY, /* state */
- "euckr", /* cs name */
+ charset_name_euckr, /* cs name */
"euckr_korean_ci", /* name */
"", /* comment */
NULL, /* tailoring */
@@ -10090,7 +10092,7 @@ struct charset_info_st my_charset_euckr_bin=
{
85,0,0, /* number */
MY_CS_COMPILED|MY_CS_BINSORT, /* state */
- "euckr", /* cs name */
+ charset_name_euckr, /* cs name */
"euckr_bin", /* name */
"", /* comment */
NULL, /* tailoring */
@@ -10123,7 +10125,7 @@ struct charset_info_st my_charset_euckr_korean_nopad_ci=
{
MY_NOPAD_ID(19),0,0,/* number */
MY_CS_COMPILED|MY_CS_NOPAD, /* state */
- "euckr", /* cs name */
+ charset_name_euckr, /* cs name */
"euckr_korean_nopad_ci", /* name */
"", /* comment */
NULL, /* tailoring */
@@ -10156,7 +10158,7 @@ struct charset_info_st my_charset_euckr_nopad_bin=
{
MY_NOPAD_ID(85),0,0,/* number */
MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, /* state */
- "euckr", /* cs name */
+ charset_name_euckr, /* cs name */
"euckr_nopad_bin", /* name */
"", /* comment */
NULL, /* tailoring */
diff --git a/strings/ctype-eucjpms.c b/strings/ctype-eucjpms.c
index f61e02697a6..27e2d1cbae6 100644
--- a/strings/ctype-eucjpms.c
+++ b/strings/ctype-eucjpms.c
@@ -33,6 +33,8 @@ ctype-ujis.c file.
#ifdef HAVE_CHARSET_eucjpms
+const char charset_name_eucjpms[]= "eucjpms";
+
static const uchar ctype_eucjpms[257] =
{
@@ -67588,6 +67590,7 @@ static MY_CHARSET_HANDLER my_charset_handler=
my_well_formed_char_length_eucjpms,
my_copy_fix_mb,
my_native_to_mb_eucjpms,
+ my_wc_to_printable_generic
};
@@ -67596,7 +67599,7 @@ struct charset_info_st my_charset_eucjpms_japanese_ci=
{
97,0,0, /* number */
MY_CS_COMPILED|MY_CS_PRIMARY, /* state */
- "eucjpms", /* cs name */
+ charset_name_eucjpms, /* cs name */
"eucjpms_japanese_ci", /* name */
"", /* comment */
NULL, /* tailoring */
@@ -67629,7 +67632,7 @@ struct charset_info_st my_charset_eucjpms_bin=
{
98,0,0, /* number */
MY_CS_COMPILED|MY_CS_BINSORT, /* state */
- "eucjpms", /* cs name */
+ charset_name_eucjpms, /* cs name */
"eucjpms_bin", /* name */
"", /* comment */
NULL, /* tailoring */
@@ -67662,7 +67665,7 @@ struct charset_info_st my_charset_eucjpms_japanese_nopad_ci=
{
MY_NOPAD_ID(97),0,0, /* number */
MY_CS_COMPILED|MY_CS_NOPAD,/* state */
- "eucjpms", /* cs name */
+ charset_name_eucjpms, /* cs name */
"eucjpms_japanese_nopad_ci", /* name */
"", /* comment */
NULL, /* tailoring */
@@ -67695,7 +67698,7 @@ struct charset_info_st my_charset_eucjpms_nopad_bin=
{
MY_NOPAD_ID(98),0,0, /* number */
MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, /* state */
- "eucjpms", /* cs name */
+ charset_name_eucjpms, /* cs name */
"eucjpms_nopad_bin", /* name */
"", /* comment */
NULL, /* tailoring */
diff --git a/strings/ctype-gb2312.c b/strings/ctype-gb2312.c
index f3a8a23bf18..a96931e0ba4 100644
--- a/strings/ctype-gb2312.c
+++ b/strings/ctype-gb2312.c
@@ -29,6 +29,8 @@
#ifdef HAVE_CHARSET_gb2312
+const char charset_name_gb2312[]= "gb2312";
+
static const uchar ctype_gb2312[257] =
{
0, /* For standard library */
@@ -6455,6 +6457,7 @@ static MY_CHARSET_HANDLER my_charset_handler=
my_well_formed_char_length_gb2312,
my_copy_fix_mb,
my_native_to_mb_gb2312,
+ my_wc_to_printable_generic
};
@@ -6462,7 +6465,7 @@ struct charset_info_st my_charset_gb2312_chinese_ci=
{
24,0,0, /* number */
MY_CS_COMPILED|MY_CS_PRIMARY, /* state */
- "gb2312", /* cs name */
+ charset_name_gb2312, /* cs name */
"gb2312_chinese_ci",/* name */
"", /* comment */
NULL, /* tailoring */
@@ -6495,7 +6498,7 @@ struct charset_info_st my_charset_gb2312_bin=
{
86,0,0, /* number */
MY_CS_COMPILED|MY_CS_BINSORT, /* state */
- "gb2312", /* cs name */
+ charset_name_gb2312, /* cs name */
"gb2312_bin", /* name */
"", /* comment */
NULL, /* tailoring */
@@ -6528,7 +6531,7 @@ struct charset_info_st my_charset_gb2312_chinese_nopad_ci=
{
MY_NOPAD_ID(24),0,0,/* number */
MY_CS_COMPILED|MY_CS_NOPAD, /* state */
- "gb2312", /* cs name */
+ charset_name_gb2312, /* cs name */
"gb2312_chinese_nopad_ci",/* name */
"", /* comment */
NULL, /* tailoring */
@@ -6561,7 +6564,7 @@ struct charset_info_st my_charset_gb2312_nopad_bin=
{
MY_NOPAD_ID(86),0,0,/* number */
MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, /* state */
- "gb2312", /* cs name */
+ charset_name_gb2312, /* cs name */
"gb2312_nopad_bin", /* name */
"", /* comment */
NULL, /* tailoring */
diff --git a/strings/ctype-gbk.c b/strings/ctype-gbk.c
index 7d6488f727b..865d3bbc5df 100644
--- a/strings/ctype-gbk.c
+++ b/strings/ctype-gbk.c
@@ -31,6 +31,7 @@
#ifdef HAVE_CHARSET_gbk
+const char charset_name_gbk[]= "gbk";
/* Support for Chinese(GBK) characters, by hewei@mail.ied.ac.cn */
@@ -10737,6 +10738,7 @@ static MY_CHARSET_HANDLER my_charset_handler=
my_well_formed_char_length_gbk,
my_copy_fix_mb,
my_native_to_mb_gbk,
+ my_wc_to_printable_generic
};
@@ -10744,7 +10746,7 @@ struct charset_info_st my_charset_gbk_chinese_ci=
{
28,0,0, /* number */
MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM, /* state */
- "gbk", /* cs name */
+ charset_name_gbk, /* cs name */
"gbk_chinese_ci", /* name */
"", /* comment */
NULL, /* tailoring */
@@ -10776,7 +10778,7 @@ struct charset_info_st my_charset_gbk_bin=
{
87,0,0, /* number */
MY_CS_COMPILED|MY_CS_BINSORT, /* state */
- "gbk", /* cs name */
+ charset_name_gbk, /* cs name */
"gbk_bin", /* name */
"", /* comment */
NULL, /* tailoring */
@@ -10809,7 +10811,7 @@ struct charset_info_st my_charset_gbk_chinese_nopad_ci=
{
MY_NOPAD_ID(28),0,0,/* number */
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_NOPAD, /* state */
- "gbk", /* cs name */
+ charset_name_gbk, /* cs name */
"gbk_chinese_nopad_ci",/* name */
"", /* comment */
NULL, /* tailoring */
@@ -10841,7 +10843,7 @@ struct charset_info_st my_charset_gbk_nopad_bin=
{
MY_NOPAD_ID(87),0,0,/* number */
MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, /* state */
- "gbk", /* cs name */
+ charset_name_gbk, /* cs name */
"gbk_nopad_bin", /* name */
"", /* comment */
NULL, /* tailoring */
diff --git a/strings/ctype-latin1.c b/strings/ctype-latin1.c
index bcf1cc6c9f1..eeb00d29592 100644
--- a/strings/ctype-latin1.c
+++ b/strings/ctype-latin1.c
@@ -18,6 +18,8 @@
#include "strings_def.h"
#include <m_ctype.h>
+const char charset_name_latin1[]= "latin1";
+
static const uchar ctype_latin1[] = {
0,
32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 40, 40, 40, 40, 32, 32,
@@ -423,6 +425,7 @@ static MY_CHARSET_HANDLER my_charset_handler=
my_well_formed_char_length_8bit,
my_copy_8bit,
my_wc_mb_bin, /* native_to_mb */
+ my_wc_to_printable_generic
};
@@ -430,7 +433,7 @@ struct charset_info_st my_charset_latin1=
{
8,0,0, /* number */
MY_CS_COMPILED | MY_CS_PRIMARY, /* state */
- "latin1", /* cs name */
+ charset_name_latin1, /* cs name */
"latin1_swedish_ci", /* name */
"", /* comment */
NULL, /* tailoring */
@@ -463,7 +466,7 @@ struct charset_info_st my_charset_latin1_nopad=
{
MY_NOPAD_ID(8),0,0, /* number */
MY_CS_COMPILED | MY_CS_NOPAD, /* state */
- "latin1", /* cs name */
+ charset_name_latin1, /* cs name */
"latin1_swedish_nopad_ci", /* name */
"", /* comment */
NULL, /* tailoring */
@@ -742,7 +745,7 @@ struct charset_info_st my_charset_latin1_german2_ci=
{
31,0,0, /* number */
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_NON1TO1, /* state */
- "latin1", /* cs name */
+ charset_name_latin1, /* cs name */
"latin1_german2_ci", /* name */
"", /* comment */
NULL, /* tailoring */
@@ -775,7 +778,7 @@ struct charset_info_st my_charset_latin1_bin=
{
47,0,0, /* number */
MY_CS_COMPILED|MY_CS_BINSORT, /* state */
- "latin1", /* cs name */
+ charset_name_latin1, /* cs name */
"latin1_bin", /* name */
"", /* comment */
NULL, /* tailoring */
@@ -808,7 +811,7 @@ struct charset_info_st my_charset_latin1_nopad_bin=
{
MY_NOPAD_ID(47),0,0, /* number */
MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD,/* state */
- "latin1", /* cs name */
+ charset_name_latin1, /* cs name */
"latin1_nopad_bin", /* name */
"", /* comment */
NULL, /* tailoring */
diff --git a/strings/ctype-mb.c b/strings/ctype-mb.c
index fc882d087fb..f26c9fe10d2 100644
--- a/strings/ctype-mb.c
+++ b/strings/ctype-mb.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2000, 2014, Oracle and/or its affiliates.
- Copyright (c) 2009, 2020, MariaDB Corporation.
+ Copyright (c) 2009, 2021, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -158,7 +158,7 @@ int my_strcasecmp_mb(CHARSET_INFO * cs,const char *s, const char *t)
if (*s++ != *t++)
return 1;
}
- else if (my_charlen(cs, t, t + cs->mbmaxlen) > 1)
+ else if (my_ci_charlen(cs, (const uchar *) t, (const uchar *) t + cs->mbmaxlen) > 1)
return 1;
else if (map[(uchar) *s++] != map[(uchar) *t++])
return 1;
@@ -354,8 +354,8 @@ my_append_fix_badly_formed_tail(CHARSET_INFO *cs,
for ( ; nchars; nchars--)
{
int chlen;
- if ((chlen= cs->cset->charlen(cs, (const uchar*) from,
- (const uchar *) from_end)) > 0)
+ if ((chlen= my_ci_charlen(cs, (const uchar*) from,
+ (const uchar *) from_end)) > 0)
{
/* Found a valid character */ /* chlen == 1..MBMAXLEN */
DBUG_ASSERT(chlen <= (int) cs->mbmaxlen);
@@ -381,7 +381,7 @@ bad:
if (!status->m_well_formed_error_pos)
status->m_well_formed_error_pos= from;
- if ((chlen= cs->cset->wc_mb(cs, '?', (uchar*) to, (uchar *) to_end)) <= 0)
+ if ((chlen= my_ci_wc_mb(cs, '?', (uchar*) to, (uchar *) to_end)) <= 0)
break; /* Question mark does not fit into the destination */
to+= chlen;
from++;
@@ -403,8 +403,7 @@ my_copy_fix_mb(CHARSET_INFO *cs,
size_t fixed_length;
size_t min_length= MY_MIN(src_length, dst_length);
- well_formed_nchars= cs->cset->well_formed_char_length(cs,
- src, src + min_length,
+ well_formed_nchars= my_ci_well_formed_char_length(cs, src, src + min_length,
nchars, status);
DBUG_ASSERT(well_formed_nchars <= nchars);
well_formed_length= status->m_source_end_pos - src;
@@ -452,8 +451,8 @@ uint my_instr_mb(CHARSET_INFO *cs,
{
int mb_len;
- if (!cs->coll->strnncoll(cs, (uchar*) b, s_length,
- (uchar*) s, s_length, 0))
+ if (!my_ci_strnncoll(cs, (const uchar *) b, s_length,
+ (const uchar *) s, s_length, 0))
{
if (nmatch)
{
@@ -662,7 +661,7 @@ my_hash_sort_mb_bin(CHARSET_INFO *cs __attribute__((unused)),
static void pad_max_char(CHARSET_INFO *cs, char *str, char *end)
{
char buf[10];
- char buflen= cs->cset->native_to_mb(cs, cs->max_sort_char, (uchar*) buf,
+ char buflen= my_ci_native_to_mb(cs, cs->max_sort_char, (uchar*) buf,
(uchar*) buf + sizeof(buf));
DBUG_ASSERT(buflen > 0);
do
@@ -877,7 +876,7 @@ my_like_range_generic(CHARSET_INFO *cs,
{
my_wc_t wc, wc2;
int res;
- if ((res= cs->cset->mb_wc(cs, &wc, (uchar*) ptr, (uchar*) end)) <= 0)
+ if ((res= my_ci_mb_wc(cs, &wc, (uchar*) ptr, (uchar*) end)) <= 0)
{
if (res == MY_CS_ILSEQ) /* Bad sequence */
return TRUE; /* min_length and max_length are not important */
@@ -887,7 +886,7 @@ my_like_range_generic(CHARSET_INFO *cs,
if (wc == (my_wc_t) escape)
{
- if ((res= cs->cset->mb_wc(cs, &wc, (uchar*) ptr, (uchar*) end)) <= 0)
+ if ((res= my_ci_mb_wc(cs, &wc, (uchar*) ptr, (uchar*) end)) <= 0)
{
if (res == MY_CS_ILSEQ)
return TRUE; /* min_length and max_length are not important */
@@ -901,26 +900,24 @@ my_like_range_generic(CHARSET_INFO *cs,
ptr+= res;
/* Put escape character to min_str and max_str */
- if ((res= cs->cset->wc_mb(cs, wc,
- (uchar*) min_str, (uchar*) min_end)) <= 0)
+ if ((res= my_ci_wc_mb(cs, wc, (uchar*) min_str, (uchar*) min_end)) <= 0)
goto pad_set_lengths; /* No space */
min_str+= res;
- if ((res= cs->cset->wc_mb(cs, wc,
- (uchar*) max_str, (uchar*) max_end)) <= 0)
+ if ((res= my_ci_wc_mb(cs, wc, (uchar*) max_str, (uchar*) max_end)) <= 0)
goto pad_set_lengths; /* No space */
max_str+= res;
continue;
}
else if (wc == (my_wc_t) w_one)
{
- if ((res= cs->cset->wc_mb(cs, cs->min_sort_char,
- (uchar*) min_str, (uchar*) min_end)) <= 0)
+ if ((res= my_ci_wc_mb(cs, cs->min_sort_char,
+ (uchar*) min_str, (uchar*) min_end)) <= 0)
goto pad_set_lengths;
min_str+= res;
- if ((res= cs->cset->wc_mb(cs, cs->max_sort_char,
- (uchar*) max_str, (uchar*) max_end)) <= 0)
+ if ((res= my_ci_wc_mb(cs, cs->max_sort_char,
+ (uchar*) max_str, (uchar*) max_end)) <= 0)
goto pad_set_lengths;
max_str+= res;
continue;
@@ -941,7 +938,7 @@ my_like_range_generic(CHARSET_INFO *cs,
if (contractions &&
my_uca_can_be_contraction_head(contractions, wc) &&
- (res= cs->cset->mb_wc(cs, &wc2, (uchar*) ptr, (uchar*) end)) > 0)
+ (res= my_ci_mb_wc(cs, &wc2, (uchar*) ptr, (uchar*) end)) > 0)
{
const uint16 *weight;
if ((wc2 == (my_wc_t) w_one || wc2 == (my_wc_t) w_many))
@@ -966,13 +963,11 @@ my_like_range_generic(CHARSET_INFO *cs,
charlen--;
/* Put contraction head */
- if ((res= cs->cset->wc_mb(cs, wc,
- (uchar*) min_str, (uchar*) min_end)) <= 0)
+ if ((res= my_ci_wc_mb(cs, wc, (uchar*) min_str, (uchar*) min_end)) <= 0)
goto pad_set_lengths;
min_str+= res;
- if ((res= cs->cset->wc_mb(cs, wc,
- (uchar*) max_str, (uchar*) max_end)) <= 0)
+ if ((res= my_ci_wc_mb(cs, wc, (uchar*) max_str, (uchar*) max_end)) <= 0)
goto pad_set_lengths;
max_str+= res;
wc= wc2; /* Prepare to put contraction tail */
@@ -980,12 +975,10 @@ my_like_range_generic(CHARSET_INFO *cs,
}
/* Normal character, or contraction tail */
- if ((res= cs->cset->wc_mb(cs, wc,
- (uchar*) min_str, (uchar*) min_end)) <= 0)
+ if ((res= my_ci_wc_mb(cs, wc, (uchar*) min_str, (uchar*) min_end)) <= 0)
goto pad_set_lengths;
min_str+= res;
- if ((res= cs->cset->wc_mb(cs, wc,
- (uchar*) max_str, (uchar*) max_end)) <= 0)
+ if ((res= my_ci_wc_mb(cs, wc, (uchar*) max_str, (uchar*) max_end)) <= 0)
goto pad_set_lengths;
max_str+= res;
}
@@ -1002,9 +995,9 @@ pad_min_max:
Make sure to call fill() with proper "length" argument.
*/
res_length_diff= res_length % cs->mbminlen;
- cs->cset->fill(cs, min_str, min_end - min_str - res_length_diff,
+ my_ci_fill(cs, min_str, min_end - min_str - res_length_diff,
cs->min_sort_char);
- cs->cset->fill(cs, max_str, max_end - max_str - res_length_diff,
+ my_ci_fill(cs, max_str, max_end - max_str - res_length_diff,
cs->max_sort_char);
/* In case of incomplete characters set the remainder to 0x00's */
@@ -1356,7 +1349,7 @@ size_t my_numcells_mb(CHARSET_INFO *cs, const char *b, const char *e)
{
int mb_len;
uint pg;
- if ((mb_len= cs->cset->mb_wc(cs, &wc, (uchar*) b, (uchar*) e)) <= 0)
+ if ((mb_len= my_ci_mb_wc(cs, &wc, (uchar*) b, (uchar*) e)) <= 0)
{
mb_len= 1; /* Let's think a wrong sequence takes 1 dysplay cell */
b++;
@@ -1383,7 +1376,7 @@ int my_mb_ctype_mb(CHARSET_INFO *cs, int *ctype,
const uchar *s, const uchar *e)
{
my_wc_t wc;
- int res= cs->cset->mb_wc(cs, &wc, s, e);
+ int res= my_ci_mb_wc(cs, &wc, s, e);
if (res <= 0 || wc > 0xFFFF)
*ctype= 0;
else
diff --git a/strings/ctype-mb.inl b/strings/ctype-mb.inl
index 336c482d24f..6cde31a34ad 100644
--- a/strings/ctype-mb.inl
+++ b/strings/ctype-mb.inl
@@ -167,7 +167,7 @@ MY_FUNCTION_NAME(well_formed_char_length)(CHARSET_INFO *cs __attribute__((unused
/**
Returns well formed length of a string
measured in characters (rather than in bytes).
- Version for character sets that define CHARLEN(), e.g. utf8.
+ Version for character sets that define CHARLEN(), e.g. utf8mb3.
CHARLEN(cs,b,e) must use the same return code convension that mb_wc() does:
- a positive number in the range [1-mbmaxlen] if a valid
single-byte or multi-byte character was found
diff --git a/strings/ctype-simple.c b/strings/ctype-simple.c
index d150e457673..220cecbabfe 100644
--- a/strings/ctype-simple.c
+++ b/strings/ctype-simple.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2002, 2013, Oracle and/or its affiliates.
- Copyright (c) 2009, 2019, MariaDB Corporation.
+ Copyright (c) 2009, 2020, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -1458,7 +1458,7 @@ my_cset_init_8bit(struct charset_info_st *cs, MY_CHARSET_LOADER *loader)
cs->caseup_multiply= 1;
cs->casedn_multiply= 1;
cs->pad_char= ' ';
- if (!cs->to_lower || !cs->to_upper || !cs->ctype || !cs->tab_to_uni)
+ if (!cs->to_lower || !cs->to_upper || !cs->m_ctype || !cs->tab_to_uni)
return TRUE;
return create_fromuni(cs, loader);
}
@@ -1508,7 +1508,7 @@ int my_mb_ctype_8bit(CHARSET_INFO *cs, int *ctype,
*ctype= 0;
return MY_CS_TOOSMALL;
}
- *ctype= cs->ctype[*s + 1];
+ *ctype= cs->m_ctype[*s + 1];
return 1;
}
@@ -2035,14 +2035,14 @@ my_strxfrm_pad_desc_and_reverse(CHARSET_INFO *cs,
if (nweights && frmend < strend && (flags & MY_STRXFRM_PAD_WITH_SPACE))
{
uint fill_length= MY_MIN((uint) (strend - frmend), nweights * cs->mbminlen);
- cs->cset->fill(cs, (char*) frmend, fill_length, cs->pad_char);
+ my_ci_fill(cs, (char*) frmend, fill_length, cs->pad_char);
frmend+= fill_length;
}
my_strxfrm_desc_and_reverse(str, frmend, flags, level);
if ((flags & MY_STRXFRM_PAD_TO_MAXLEN) && frmend < strend)
{
size_t fill_length= strend - frmend;
- cs->cset->fill(cs, (char*) frmend, fill_length, cs->pad_char);
+ my_ci_fill(cs, (char*) frmend, fill_length, cs->pad_char);
frmend= strend;
}
return frmend - str;
@@ -2101,6 +2101,7 @@ MY_CHARSET_HANDLER my_charset_8bit_handler=
my_well_formed_char_length_8bit,
my_copy_8bit,
my_wc_mb_bin, /* native_to_mb */
+ my_wc_to_printable_8bit
};
MY_COLLATION_HANDLER my_collation_8bit_simple_ci_handler =
diff --git a/strings/ctype-sjis.c b/strings/ctype-sjis.c
index e15ba5e36fc..7ecff065883 100644
--- a/strings/ctype-sjis.c
+++ b/strings/ctype-sjis.c
@@ -22,6 +22,7 @@
#ifdef HAVE_CHARSET_sjis
+const char charset_name_sjis[]= "sjis";
/*
* This comment is parsed by configure to create ctype.c,
@@ -34004,6 +34005,15 @@ size_t my_numcells_sjis(CHARSET_INFO *cs __attribute__((unused)),
}
+static int
+my_wc_to_printable_sjis(CHARSET_INFO *cs, my_wc_t wc,
+ uchar *str, uchar *end)
+{
+ return my_wc_to_printable_ex(cs, wc, str, end,
+ '\\', 2, 1);
+}
+
+
/*
sjis_chinese_ci and sjis_bin sort character blocks in this order:
1. [00..7F] - 7BIT characters (ASCII)
@@ -34139,6 +34149,7 @@ static MY_CHARSET_HANDLER my_charset_handler=
my_well_formed_char_length_sjis,
my_copy_fix_mb,
my_native_to_mb_sjis,
+ my_wc_to_printable_sjis
};
@@ -34146,7 +34157,7 @@ struct charset_info_st my_charset_sjis_japanese_ci=
{
13,0,0, /* number */
MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_NONASCII, /* state */
- "sjis", /* cs name */
+ charset_name_sjis, /* cs name */
"sjis_japanese_ci", /* name */
"", /* comment */
NULL, /* tailoring */
@@ -34178,7 +34189,7 @@ struct charset_info_st my_charset_sjis_bin=
{
88,0,0, /* number */
MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NONASCII, /* state */
- "sjis", /* cs name */
+ charset_name_sjis, /* cs name */
"sjis_bin", /* name */
"", /* comment */
NULL, /* tailoring */
@@ -34211,7 +34222,7 @@ struct charset_info_st my_charset_sjis_japanese_nopad_ci=
{
MY_NOPAD_ID(13),0,0, /* number */
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_NONASCII|MY_CS_NOPAD, /* state */
- "sjis", /* cs name */
+ charset_name_sjis, /* cs name */
"sjis_japanese_nopad_ci", /* name */
"", /* comment */
NULL, /* tailoring */
@@ -34243,7 +34254,7 @@ struct charset_info_st my_charset_sjis_nopad_bin=
{
MY_NOPAD_ID(88),0,0, /* number */
MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NONASCII|MY_CS_NOPAD, /* state */
- "sjis", /* cs name */
+ charset_name_sjis, /* cs name */
"sjis_nopad_bin", /* name */
"", /* comment */
NULL, /* tailoring */
diff --git a/strings/ctype-tis620.c b/strings/ctype-tis620.c
index b19832cc792..e6f6ad24eec 100644
--- a/strings/ctype-tis620.c
+++ b/strings/ctype-tis620.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2000, 2011, Oracle and/or its affiliates.
- Copyright (c) 2009-2011, Monty Program Ab
+ Copyright (c) 2009, 2020, MariaDB Corporation.
Copyright (C) 2003 by Sathit Jittanupat
<jsat66@hotmail.com,jsat66@yahoo.com>
* solving bug crash with long text field string
@@ -40,6 +40,8 @@
#ifdef HAVE_CHARSET_tis620
+const char charset_name_tis620[]= "tis620";
+
#define M L_MIDDLE
#define U L_UPPER
#define L L_LOWER
@@ -524,7 +526,7 @@ int my_strnncoll_tis620(CHARSET_INFO *cs __attribute__((unused)),
tc1= buf;
if ((len1 + len2 +2) > (int) sizeof(buf))
- tc1= (uchar*) my_malloc(len1+len2+2, MYF(MY_FAE));
+ tc1= (uchar*) my_malloc(PSI_INSTRUMENT_ME, len1+len2+2, MYF(MY_FAE));
tc2= tc1 + len1+1;
memcpy((char*) tc1, (char*) s1, len1);
tc1[len1]= 0; /* if length(s1)> len1, need to put 'end of string' */
@@ -550,7 +552,7 @@ int my_strnncollsp_tis620(CHARSET_INFO * cs __attribute__((unused)),
a= buf;
if ((a_length + b_length +2) > (int) sizeof(buf))
- alloced= a= (uchar*) my_malloc(a_length+b_length+2, MYF(MY_FAE));
+ alloced= a= (uchar*) my_malloc(PSI_INSTRUMENT_ME, a_length+b_length+2, MYF(MY_FAE));
b= a + a_length+1;
if (a_length)
@@ -627,7 +629,7 @@ my_strnxfrm_tis620(CHARSET_INFO *cs,
if ((flags & MY_STRXFRM_PAD_TO_MAXLEN) && len < dstlen0)
{
size_t fill_length= dstlen0 - len;
- cs->cset->fill(cs, (char*) dst + len, fill_length, cs->pad_char);
+ my_ci_fill(cs, (char*) dst + len, fill_length, cs->pad_char);
len= dstlen0;
}
return len;
@@ -921,6 +923,7 @@ static MY_CHARSET_HANDLER my_charset_handler=
my_well_formed_char_length_8bit,
my_copy_8bit,
my_wc_mb_bin, /* native_to_mb */
+ my_wc_to_printable_generic
};
@@ -929,7 +932,7 @@ struct charset_info_st my_charset_tis620_thai_ci=
{
18,0,0, /* number */
MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_NON1TO1, /* state */
- "tis620", /* cs name */
+ charset_name_tis620, /* cs name */
"tis620_thai_ci", /* name */
"", /* comment */
NULL, /* tailoring */
@@ -961,7 +964,7 @@ struct charset_info_st my_charset_tis620_bin=
{
89,0,0, /* number */
MY_CS_COMPILED|MY_CS_BINSORT, /* state */
- "tis620", /* cs name */
+ charset_name_tis620, /* cs name */
"tis620_bin", /* name */
"", /* comment */
NULL, /* tailoring */
@@ -994,7 +997,7 @@ struct charset_info_st my_charset_tis620_thai_nopad_ci=
{
MY_NOPAD_ID(18),0,0, /* number */
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_NON1TO1|MY_CS_NOPAD, /* state */
- "tis620", /* cs name */
+ charset_name_tis620, /* cs name */
"tis620_thai_nopad_ci",/* name */
"", /* comment */
NULL, /* tailoring */
@@ -1027,7 +1030,7 @@ struct charset_info_st my_charset_tis620_nopad_bin=
{
MY_NOPAD_ID(89),0,0, /* number */
MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, /* state */
- "tis620", /* cs name */
+ charset_name_tis620, /* cs name */
"tis620_nopad_bin", /* name */
"", /* comment */
NULL, /* tailoring */
diff --git a/strings/ctype-uca.c b/strings/ctype-uca.c
index 969f642b51f..43390b81832 100644
--- a/strings/ctype-uca.c
+++ b/strings/ctype-uca.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004, 2013, Oracle and/or its affiliates.
- Copyright (c) 2009, 2015, MariaDB
+ Copyright (c) 2009, 2020, MariaDB
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
@@ -31532,8 +31532,7 @@ my_uca_scanner_contraction_find(my_uca_scanner *scanner, my_wc_t *wc,
flag<<= 1)
{
int mblen;
- if ((mblen= scanner->cs->cset->mb_wc(scanner->cs, &wc[clen],
- s, scanner->send)) <= 0)
+ if ((mblen= my_ci_mb_wc(scanner->cs, &wc[clen], s, scanner->send)) <= 0)
break;
beg[clen]= s= s + mblen;
if (!my_uca_can_be_contraction_part(&scanner->level->contractions,
@@ -32340,7 +32339,7 @@ static my_coll_lexem_num my_coll_lexem_next(MY_COLL_LEXEM *lexem)
/* Escaped character, e.g. \u1234 */
if ((*beg == '\\') && (beg + 2 < lexem->end) &&
- (beg[1] == 'u') && my_isxdigit(&my_charset_utf8_general_ci, beg[2]))
+ (beg[1] == 'u') && my_isxdigit(&my_charset_utf8mb3_general_ci, beg[2]))
{
int ch;
@@ -32369,10 +32368,9 @@ static my_coll_lexem_num my_coll_lexem_next(MY_COLL_LEXEM *lexem)
if (((uchar) *beg) > 0x7F) /* Unescaped multibyte character */
{
- CHARSET_INFO *cs= &my_charset_utf8_general_ci;
+ CHARSET_INFO *cs= &my_charset_utf8mb3_general_ci;
my_wc_t wc;
- int nbytes= cs->cset->mb_wc(cs, &wc,
- (uchar *) beg, (uchar *) lexem->end);
+ int nbytes= my_ci_mb_wc(cs, &wc, (uchar *) beg, (uchar *) lexem->end);
if (nbytes > 0)
{
rc= MY_COLL_LEXEM_CHAR;
@@ -33751,7 +33749,7 @@ static my_bool
my_coll_init_uca(struct charset_info_st *cs, MY_CHARSET_LOADER *loader)
{
cs->pad_char= ' ';
- cs->ctype= my_charset_utf8_unicode_ci.ctype;
+ cs->m_ctype= my_charset_utf8mb3_unicode_ci.m_ctype;
if (!cs->caseinfo)
cs->caseinfo= &my_unicase_default;
return create_tailoring(cs, loader);
@@ -33805,7 +33803,7 @@ static void my_uca_handler_map(struct charset_info_st *cs,
instead of generic.
*/
#define MY_FUNCTION_NAME(x) my_uca_ ## x ## _generic
-#define MY_MB_WC(scanner, wc, beg, end) (scanner->cs->cset->mb_wc(scanner->cs, wc, beg, end))
+#define MY_MB_WC(scanner, wc, beg, end) (my_ci_mb_wc(scanner->cs, wc, beg, end))
#define MY_LIKE_RANGE my_like_range_generic
#define MY_UCA_ASCII_OPTIMIZE 0
#define MY_UCA_COMPILE_CONTRACTIONS 1
@@ -33922,7 +33920,6 @@ ex:
#define MY_UCA_COLL_INIT my_coll_init_uca
#include "ctype-uca.inl"
-
#define MY_CS_UCS2_UCA_FLAGS (MY_CS_COMMON_UCA_FLAGS|MY_CS_NONASCII)
#define MY_CS_UCS2_UCA_NOPAD_FLAGS (MY_CS_UCS2_UCA_FLAGS|MY_CS_NOPAD)
@@ -33930,7 +33927,7 @@ struct charset_info_st my_charset_ucs2_unicode_ci=
{
128,0,0, /* number */
MY_CS_UCS2_UCA_FLAGS,/* state */
- "ucs2", /* cs name */
+ charset_name_ucs2, /* cs name */
"ucs2_unicode_ci", /* name */
"", /* comment */
"", /* tailoring */
@@ -33962,7 +33959,7 @@ struct charset_info_st my_charset_ucs2_icelandic_uca_ci=
{
129,0,0, /* number */
MY_CS_UCS2_UCA_FLAGS,/* state */
- "ucs2", /* cs name */
+ charset_name_ucs2, /* cs name */
"ucs2_icelandic_ci",/* name */
"", /* comment */
icelandic, /* tailoring */
@@ -33994,7 +33991,7 @@ struct charset_info_st my_charset_ucs2_latvian_uca_ci=
{
130,0,0, /* number */
MY_CS_UCS2_UCA_FLAGS,/* state */
- "ucs2", /* cs name */
+ charset_name_ucs2, /* cs name */
"ucs2_latvian_ci", /* name */
"", /* comment */
latvian, /* tailoring */
@@ -34026,7 +34023,7 @@ struct charset_info_st my_charset_ucs2_romanian_uca_ci=
{
131,0,0, /* number */
MY_CS_UCS2_UCA_FLAGS,/* state */
- "ucs2", /* cs name */
+ charset_name_ucs2, /* cs name */
"ucs2_romanian_ci", /* name */
"", /* comment */
romanian, /* tailoring */
@@ -34058,7 +34055,7 @@ struct charset_info_st my_charset_ucs2_slovenian_uca_ci=
{
132,0,0, /* number */
MY_CS_UCS2_UCA_FLAGS,/* state */
- "ucs2", /* cs name */
+ charset_name_ucs2, /* cs name */
"ucs2_slovenian_ci",/* name */
"", /* comment */
slovenian, /* tailoring */
@@ -34090,7 +34087,7 @@ struct charset_info_st my_charset_ucs2_polish_uca_ci=
{
133,0,0, /* number */
MY_CS_UCS2_UCA_FLAGS,/* state */
- "ucs2", /* cs name */
+ charset_name_ucs2, /* cs name */
"ucs2_polish_ci", /* name */
"", /* comment */
polish, /* tailoring */
@@ -34122,7 +34119,7 @@ struct charset_info_st my_charset_ucs2_estonian_uca_ci=
{
134,0,0, /* number */
MY_CS_UCS2_UCA_FLAGS,/* state */
- "ucs2", /* cs name */
+ charset_name_ucs2, /* cs name */
"ucs2_estonian_ci", /* name */
"", /* comment */
estonian, /* tailoring */
@@ -34154,7 +34151,7 @@ struct charset_info_st my_charset_ucs2_spanish_uca_ci=
{
135,0,0, /* number */
MY_CS_UCS2_UCA_FLAGS,/* state */
- "ucs2", /* cs name */
+ charset_name_ucs2, /* cs name */
"ucs2_spanish_ci", /* name */
"", /* comment */
spanish, /* tailoring */
@@ -34186,7 +34183,7 @@ struct charset_info_st my_charset_ucs2_swedish_uca_ci=
{
136,0,0, /* number */
MY_CS_UCS2_UCA_FLAGS,/* state */
- "ucs2", /* cs name */
+ charset_name_ucs2, /* cs name */
"ucs2_swedish_ci", /* name */
"", /* comment */
swedish, /* tailoring */
@@ -34218,7 +34215,7 @@ struct charset_info_st my_charset_ucs2_turkish_uca_ci=
{
137,0,0, /* number */
MY_CS_UCS2_UCA_FLAGS,/* state */
- "ucs2", /* cs name */
+ charset_name_ucs2, /* cs name */
"ucs2_turkish_ci", /* name */
"", /* comment */
turkish, /* tailoring */
@@ -34250,7 +34247,7 @@ struct charset_info_st my_charset_ucs2_czech_uca_ci=
{
138,0,0, /* number */
MY_CS_UCS2_UCA_FLAGS,/* state */
- "ucs2", /* cs name */
+ charset_name_ucs2, /* cs name */
"ucs2_czech_ci", /* name */
"", /* comment */
czech, /* tailoring */
@@ -34283,7 +34280,7 @@ struct charset_info_st my_charset_ucs2_danish_uca_ci=
{
139,0,0, /* number */
MY_CS_UCS2_UCA_FLAGS,/* state */
- "ucs2", /* cs name */
+ charset_name_ucs2, /* cs name */
"ucs2_danish_ci", /* name */
"", /* comment */
danish, /* tailoring */
@@ -34315,8 +34312,8 @@ struct charset_info_st my_charset_ucs2_lithuanian_uca_ci=
{
140,0,0, /* number */
MY_CS_UCS2_UCA_FLAGS,/* state */
- "ucs2", /* cs name */
- "ucs2_lithuanian_ci",/* name */
+ charset_name_ucs2, /* cs name */
+ "ucs2_lithuanian_ci",/* name */
"", /* comment */
lithuanian, /* tailoring */
NULL, /* ctype */
@@ -34347,7 +34344,7 @@ struct charset_info_st my_charset_ucs2_slovak_uca_ci=
{
141,0,0, /* number */
MY_CS_UCS2_UCA_FLAGS,/* state */
- "ucs2", /* cs name */
+ charset_name_ucs2, /* cs name */
"ucs2_slovak_ci", /* name */
"", /* comment */
slovak, /* tailoring */
@@ -34379,7 +34376,7 @@ struct charset_info_st my_charset_ucs2_spanish2_uca_ci=
{
142,0,0, /* number */
MY_CS_UCS2_UCA_FLAGS,/* state */
- "ucs2", /* cs name */
+ charset_name_ucs2, /* cs name */
"ucs2_spanish2_ci", /* name */
"", /* comment */
spanish2, /* tailoring */
@@ -34412,7 +34409,7 @@ struct charset_info_st my_charset_ucs2_roman_uca_ci=
{
143,0,0, /* number */
MY_CS_UCS2_UCA_FLAGS,/* state */
- "ucs2", /* cs name */
+ charset_name_ucs2, /* cs name */
"ucs2_roman_ci", /* name */
"", /* comment */
roman, /* tailoring */
@@ -34445,7 +34442,7 @@ struct charset_info_st my_charset_ucs2_persian_uca_ci=
{
144,0,0, /* number */
MY_CS_UCS2_UCA_FLAGS,/* state */
- "ucs2", /* cs name */
+ charset_name_ucs2, /* cs name */
"ucs2_persian_ci", /* name */
"", /* comment */
persian, /* tailoring */
@@ -34478,7 +34475,7 @@ struct charset_info_st my_charset_ucs2_esperanto_uca_ci=
{
145,0,0, /* number */
MY_CS_UCS2_UCA_FLAGS,/* state */
- "ucs2", /* cs name */
+ charset_name_ucs2, /* cs name */
"ucs2_esperanto_ci",/* name */
"", /* comment */
esperanto, /* tailoring */
@@ -34511,7 +34508,7 @@ struct charset_info_st my_charset_ucs2_hungarian_uca_ci=
{
146,0,0, /* number */
MY_CS_UCS2_UCA_FLAGS,/* state */
- "ucs2", /* cs name */
+ charset_name_ucs2, /* cs name */
"ucs2_hungarian_ci",/* name */
"", /* comment */
hungarian, /* tailoring */
@@ -34542,8 +34539,8 @@ struct charset_info_st my_charset_ucs2_hungarian_uca_ci=
struct charset_info_st my_charset_ucs2_sinhala_uca_ci=
{
147,0,0, /* number */
- MY_CS_UCS2_UCA_FLAGS,/* state */
- "ucs2", /* csname */
+ MY_CS_UCS2_UCA_FLAGS,/* state */
+ charset_name_ucs2, /* csname */
"ucs2_sinhala_ci", /* name */
"", /* comment */
sinhala, /* tailoring */
@@ -34576,8 +34573,8 @@ struct charset_info_st my_charset_ucs2_sinhala_uca_ci=
struct charset_info_st my_charset_ucs2_german2_uca_ci=
{
148,0,0, /* number */
- MY_CS_UCS2_UCA_FLAGS,/* state */
- "ucs2", /* csname */
+ MY_CS_UCS2_UCA_FLAGS,/* state */
+ charset_name_ucs2, /* csname */
"ucs2_german2_ci", /* name */
"", /* comment */
german2, /* tailoring */
@@ -34608,9 +34605,9 @@ struct charset_info_st my_charset_ucs2_german2_uca_ci=
struct charset_info_st my_charset_ucs2_croatian_mysql561_uca_ci=
{
149,0,0, /* number */
- MY_CS_UCS2_UCA_FLAGS,/* state */
- "ucs2", /* cs name */
- "ucs2_croatian_mysql561_ci", /* name */
+ MY_CS_UCS2_UCA_FLAGS,/* state */
+ charset_name_ucs2, /* cs name */
+ "ucs2_croatian_mysql561_ci",/* name */
"", /* comment */
croatian_mysql561, /* tailoring */
NULL, /* ctype */
@@ -34641,9 +34638,9 @@ struct charset_info_st my_charset_ucs2_croatian_mysql561_uca_ci=
struct charset_info_st my_charset_ucs2_croatian_uca_ci=
{
MY_PAGE2_COLLATION_ID_UCS2,0,0, /* number */
- MY_CS_UCS2_UCA_FLAGS,/* state */
- "ucs2", /* cs name */
- "ucs2_croatian_ci", /* name */
+ MY_CS_UCS2_UCA_FLAGS,/* state */
+ charset_name_ucs2, /* cs name */
+ "ucs2_croatian_ci", /* name */
"", /* comment */
croatian_mariadb, /* tailoring */
NULL, /* ctype */
@@ -34674,9 +34671,9 @@ struct charset_info_st my_charset_ucs2_croatian_uca_ci=
struct charset_info_st my_charset_ucs2_myanmar_uca_ci=
{
MY_PAGE2_COLLATION_ID_UCS2+1,0,0, /* number */
- MY_CS_UCS2_UCA_FLAGS,/* state */
- "ucs2", /* cs name */
- "ucs2_myanmar_ci", /* name */
+ MY_CS_UCS2_UCA_FLAGS,/* state */
+ charset_name_ucs2, /* cs name */
+ "ucs2_myanmar_ci", /* name */
"", /* comment */
myanmar, /* tailoring */
NULL, /* ctype */
@@ -34708,7 +34705,7 @@ struct charset_info_st my_charset_ucs2_thai_520_w2=
{
MY_PAGE2_COLLATION_ID_UCS2+2,0,0, /* number */
MY_CS_UCS2_UCA_FLAGS,/* flags */
- "ucs2", /* csname */
+ charset_name_ucs2, /* csname */
"ucs2_thai_520_w2", /* name */
"", /* comment */
"[strength 2]", /* tailoring */
@@ -34740,7 +34737,7 @@ struct charset_info_st my_charset_ucs2_unicode_520_ci=
{
150,0,0, /* number */
MY_CS_UCS2_UCA_FLAGS,/* state */
- "ucs2", /* cs name */
+ charset_name_ucs2, /* cs name */
"ucs2_unicode_520_ci",/* name */
"", /* comment */
"", /* tailoring */
@@ -34772,8 +34769,8 @@ struct charset_info_st my_charset_ucs2_unicode_520_ci=
struct charset_info_st my_charset_ucs2_vietnamese_ci=
{
151,0,0, /* number */
- MY_CS_UCS2_UCA_FLAGS,/* state */
- "ucs2", /* csname */
+ MY_CS_UCS2_UCA_FLAGS,/* state */
+ charset_name_ucs2, /* csname */
"ucs2_vietnamese_ci",/* name */
"", /* comment */
vietnamese, /* tailoring */
@@ -34806,7 +34803,7 @@ struct charset_info_st my_charset_ucs2_unicode_nopad_ci=
{
MY_NOPAD_ID(128),0,0, /* number */
MY_CS_UCS2_UCA_NOPAD_FLAGS,/* state */
- "ucs2", /* cs name */
+ charset_name_ucs2, /* cs name */
"ucs2_unicode_nopad_ci", /* name */
"", /* comment */
"", /* tailoring */
@@ -34839,7 +34836,7 @@ struct charset_info_st my_charset_ucs2_unicode_520_nopad_ci=
{
MY_NOPAD_ID(150),0,0, /* number */
MY_CS_UCS2_UCA_NOPAD_FLAGS, /* state */
- "ucs2", /* cs name */
+ charset_name_ucs2, /* cs name */
"ucs2_unicode_520_nopad_ci",/* name */
"", /* comment */
"", /* tailoring */
@@ -34871,7 +34868,7 @@ struct charset_info_st my_charset_ucs2_unicode_520_nopad_ci=
#endif
-#ifdef HAVE_CHARSET_utf8
+#ifdef HAVE_CHARSET_utf8mb3
static my_bool
my_uca_coll_init_utf8mb3(struct charset_info_st *cs, MY_CHARSET_LOADER *loader);
@@ -34912,7 +34909,7 @@ my_uca_coll_init_utf8mb3(struct charset_info_st *cs, MY_CHARSET_LOADER *loader)
expressions. Note, there is no need to mark byte 255 as a
letter, it is illegal byte in UTF8.
*/
-static uchar ctype_utf8[] = {
+static uchar ctype_utf8mb3[] = {
0,
32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 40, 40, 40, 40, 32, 32,
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
@@ -34932,20 +34929,20 @@ static uchar ctype_utf8[] = {
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0
};
-extern MY_CHARSET_HANDLER my_charset_utf8_handler;
+extern MY_CHARSET_HANDLER my_charset_utf8mb3_handler;
#define MY_CS_UTF8MB3_UCA_FLAGS MY_CS_COMMON_UCA_FLAGS
#define MY_CS_UTF8MB3_UCA_NOPAD_FLAGS (MY_CS_UTF8MB3_UCA_FLAGS|MY_CS_NOPAD)
-struct charset_info_st my_charset_utf8_unicode_ci=
+struct charset_info_st my_charset_utf8mb3_unicode_ci=
{
192,0,0, /* number */
MY_CS_UTF8MB3_UCA_FLAGS,/* flags */
- "utf8", /* cs name */
- "utf8_unicode_ci", /* name */
+ charset_name_utf8, /* cs name */
+ MY_UTF8MB3 "_unicode_ci", /* name */
"", /* comment */
"", /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -34965,20 +34962,20 @@ struct charset_info_st my_charset_utf8_unicode_ci=
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
1, /* levels_for_order */
- &my_charset_utf8_handler,
+ &my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
-struct charset_info_st my_charset_utf8_icelandic_uca_ci=
+struct charset_info_st my_charset_utf8mb3_icelandic_uca_ci=
{
193,0,0, /* number */
MY_CS_UTF8MB3_UCA_FLAGS,/* flags */
- "utf8", /* cs name */
- "utf8_icelandic_ci",/* name */
+ charset_name_utf8, /* cs name */
+ MY_UTF8MB3 "_icelandic_ci",/* name */
"", /* comment */
icelandic, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -34998,19 +34995,19 @@ struct charset_info_st my_charset_utf8_icelandic_uca_ci=
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
1, /* levels_for_order */
- &my_charset_utf8_handler,
+ &my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
-struct charset_info_st my_charset_utf8_latvian_uca_ci=
+struct charset_info_st my_charset_utf8mb3_latvian_uca_ci=
{
194,0,0, /* number */
MY_CS_UTF8MB3_UCA_FLAGS,/* flags */
- "utf8", /* cs name */
- "utf8_latvian_ci", /* name */
+ charset_name_utf8, /* cs name */
+ MY_UTF8MB3 "_latvian_ci",/* name */
"", /* comment */
latvian, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -35030,19 +35027,19 @@ struct charset_info_st my_charset_utf8_latvian_uca_ci=
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
1, /* levels_for_order */
- &my_charset_utf8_handler,
+ &my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
-struct charset_info_st my_charset_utf8_romanian_uca_ci=
+struct charset_info_st my_charset_utf8mb3_romanian_uca_ci=
{
195,0,0, /* number */
MY_CS_UTF8MB3_UCA_FLAGS,/* flags */
- "utf8", /* cs name */
- "utf8_romanian_ci", /* name */
+ charset_name_utf8, /* cs name */
+ MY_UTF8MB3 "_romanian_ci", /* name */
"", /* comment */
romanian, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -35062,19 +35059,19 @@ struct charset_info_st my_charset_utf8_romanian_uca_ci=
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
1, /* levels_for_order */
- &my_charset_utf8_handler,
+ &my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
-struct charset_info_st my_charset_utf8_slovenian_uca_ci=
+struct charset_info_st my_charset_utf8mb3_slovenian_uca_ci=
{
196,0,0, /* number */
MY_CS_UTF8MB3_UCA_FLAGS,/* flags */
- "utf8", /* cs name */
- "utf8_slovenian_ci",/* name */
+ charset_name_utf8, /* cs name */
+ MY_UTF8MB3 "_slovenian_ci",/* name */
"", /* comment */
slovenian, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -35094,19 +35091,19 @@ struct charset_info_st my_charset_utf8_slovenian_uca_ci=
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
1, /* levels_for_order */
- &my_charset_utf8_handler,
+ &my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
-struct charset_info_st my_charset_utf8_polish_uca_ci=
+struct charset_info_st my_charset_utf8mb3_polish_uca_ci=
{
197,0,0, /* number */
MY_CS_UTF8MB3_UCA_FLAGS,/* flags */
- "utf8", /* cs name */
- "utf8_polish_ci", /* name */
+ charset_name_utf8, /* cs name */
+ MY_UTF8MB3 "_polish_ci",/* name */
"", /* comment */
polish, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -35126,19 +35123,19 @@ struct charset_info_st my_charset_utf8_polish_uca_ci=
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
1, /* levels_for_order */
- &my_charset_utf8_handler,
+ &my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
-struct charset_info_st my_charset_utf8_estonian_uca_ci=
+struct charset_info_st my_charset_utf8mb3_estonian_uca_ci=
{
198,0,0, /* number */
MY_CS_UTF8MB3_UCA_FLAGS,/* flags */
- "utf8", /* cs name */
- "utf8_estonian_ci", /* name */
+ charset_name_utf8, /* cs name */
+ MY_UTF8MB3 "_estonian_ci",/* name */
"", /* comment */
estonian, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -35158,19 +35155,19 @@ struct charset_info_st my_charset_utf8_estonian_uca_ci=
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
1, /* levels_for_order */
- &my_charset_utf8_handler,
+ &my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
-struct charset_info_st my_charset_utf8_spanish_uca_ci=
+struct charset_info_st my_charset_utf8mb3_spanish_uca_ci=
{
199,0,0, /* number */
MY_CS_UTF8MB3_UCA_FLAGS,/* flags */
- "utf8", /* cs name */
- "utf8_spanish_ci", /* name */
+ charset_name_utf8, /* cs name */
+ MY_UTF8MB3 "_spanish_ci", /* name */
"", /* comment */
spanish, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -35190,19 +35187,19 @@ struct charset_info_st my_charset_utf8_spanish_uca_ci=
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
1, /* levels_for_order */
- &my_charset_utf8_handler,
+ &my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
-struct charset_info_st my_charset_utf8_swedish_uca_ci=
+struct charset_info_st my_charset_utf8mb3_swedish_uca_ci=
{
200,0,0, /* number */
MY_CS_UTF8MB3_UCA_FLAGS,/* flags */
- "utf8", /* cs name */
- "utf8_swedish_ci", /* name */
+ charset_name_utf8, /* cs name */
+ MY_UTF8MB3 "_swedish_ci", /* name */
"", /* comment */
swedish, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -35222,19 +35219,19 @@ struct charset_info_st my_charset_utf8_swedish_uca_ci=
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
1, /* levels_for_order */
- &my_charset_utf8_handler,
+ &my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
-struct charset_info_st my_charset_utf8_turkish_uca_ci=
+struct charset_info_st my_charset_utf8mb3_turkish_uca_ci=
{
201,0,0, /* number */
MY_CS_UTF8MB3_UCA_FLAGS,/* flags */
- "utf8", /* cs name */
- "utf8_turkish_ci", /* name */
+ charset_name_utf8, /* cs name */
+ MY_UTF8MB3 "_turkish_ci", /* name */
"", /* comment */
turkish, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -35254,19 +35251,19 @@ struct charset_info_st my_charset_utf8_turkish_uca_ci=
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
1, /* levels_for_order */
- &my_charset_utf8_handler,
+ &my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
-struct charset_info_st my_charset_utf8_czech_uca_ci=
+struct charset_info_st my_charset_utf8mb3_czech_uca_ci=
{
202,0,0, /* number */
MY_CS_UTF8MB3_UCA_FLAGS,/* flags */
- "utf8", /* cs name */
- "utf8_czech_ci", /* name */
+ charset_name_utf8, /* cs name */
+ MY_UTF8MB3 "_czech_ci", /* name */
"", /* comment */
czech, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -35286,20 +35283,20 @@ struct charset_info_st my_charset_utf8_czech_uca_ci=
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
1, /* levels_for_order */
- &my_charset_utf8_handler,
+ &my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
-struct charset_info_st my_charset_utf8_danish_uca_ci=
+struct charset_info_st my_charset_utf8mb3_danish_uca_ci=
{
203,0,0, /* number */
MY_CS_UTF8MB3_UCA_FLAGS,/* flags */
- "utf8", /* cs name */
- "utf8_danish_ci", /* name */
+ charset_name_utf8, /* cs name */
+ MY_UTF8MB3 "_danish_ci", /* name */
"", /* comment */
danish, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -35319,19 +35316,19 @@ struct charset_info_st my_charset_utf8_danish_uca_ci=
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
1, /* levels_for_order */
- &my_charset_utf8_handler,
+ &my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
-struct charset_info_st my_charset_utf8_lithuanian_uca_ci=
+struct charset_info_st my_charset_utf8mb3_lithuanian_uca_ci=
{
204,0,0, /* number */
MY_CS_UTF8MB3_UCA_FLAGS,/* flags */
- "utf8", /* cs name */
- "utf8_lithuanian_ci",/* name */
+ charset_name_utf8, /* cs name */
+ MY_UTF8MB3 "_lithuanian_ci",/* name */
"", /* comment */
lithuanian, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -35351,19 +35348,19 @@ struct charset_info_st my_charset_utf8_lithuanian_uca_ci=
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
1, /* levels_for_order */
- &my_charset_utf8_handler,
+ &my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
-struct charset_info_st my_charset_utf8_slovak_uca_ci=
+struct charset_info_st my_charset_utf8mb3_slovak_uca_ci=
{
205,0,0, /* number */
MY_CS_UTF8MB3_UCA_FLAGS,/* flags */
- "utf8", /* cs name */
- "utf8_slovak_ci", /* name */
+ charset_name_utf8, /* cs name */
+ MY_UTF8MB3 "_slovak_ci",/* name */
"", /* comment */
slovak, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -35383,19 +35380,19 @@ struct charset_info_st my_charset_utf8_slovak_uca_ci=
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
1, /* levels_for_order */
- &my_charset_utf8_handler,
+ &my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
-struct charset_info_st my_charset_utf8_spanish2_uca_ci=
+struct charset_info_st my_charset_utf8mb3_spanish2_uca_ci=
{
206,0,0, /* number */
MY_CS_UTF8MB3_UCA_FLAGS,/* flags */
- "utf8", /* cs name */
- "utf8_spanish2_ci", /* name */
+ charset_name_utf8, /* cs name */
+ MY_UTF8MB3 "_spanish2_ci",/* name */
"", /* comment */
spanish2, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -35415,19 +35412,19 @@ struct charset_info_st my_charset_utf8_spanish2_uca_ci=
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
1, /* levels_for_order */
- &my_charset_utf8_handler,
+ &my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
-struct charset_info_st my_charset_utf8_roman_uca_ci=
+struct charset_info_st my_charset_utf8mb3_roman_uca_ci=
{
207,0,0, /* number */
MY_CS_UTF8MB3_UCA_FLAGS,/* flags */
- "utf8", /* cs name */
- "utf8_roman_ci", /* name */
+ charset_name_utf8, /* cs name */
+ MY_UTF8MB3 "_roman_ci",/* name */
"", /* comment */
roman, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -35447,19 +35444,19 @@ struct charset_info_st my_charset_utf8_roman_uca_ci=
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
1, /* levels_for_order */
- &my_charset_utf8_handler,
+ &my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
-struct charset_info_st my_charset_utf8_persian_uca_ci=
+struct charset_info_st my_charset_utf8mb3_persian_uca_ci=
{
208,0,0, /* number */
MY_CS_UTF8MB3_UCA_FLAGS,/* flags */
- "utf8", /* cs name */
- "utf8_persian_ci", /* name */
+ charset_name_utf8, /* cs name */
+ MY_UTF8MB3 "_persian_ci",/* name */
"", /* comment */
persian, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -35479,19 +35476,19 @@ struct charset_info_st my_charset_utf8_persian_uca_ci=
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
1, /* levels_for_order */
- &my_charset_utf8_handler,
+ &my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
-struct charset_info_st my_charset_utf8_esperanto_uca_ci=
+struct charset_info_st my_charset_utf8mb3_esperanto_uca_ci=
{
209,0,0, /* number */
MY_CS_UTF8MB3_UCA_FLAGS,/* flags */
- "utf8", /* cs name */
- "utf8_esperanto_ci",/* name */
+ charset_name_utf8, /* cs name */
+ MY_UTF8MB3 "_esperanto_ci",/* name */
"", /* comment */
esperanto, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -35511,19 +35508,19 @@ struct charset_info_st my_charset_utf8_esperanto_uca_ci=
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
1, /* levels_for_order */
- &my_charset_utf8_handler,
+ &my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
-struct charset_info_st my_charset_utf8_hungarian_uca_ci=
+struct charset_info_st my_charset_utf8mb3_hungarian_uca_ci=
{
210,0,0, /* number */
MY_CS_UTF8MB3_UCA_FLAGS,/* flags */
- "utf8", /* cs name */
- "utf8_hungarian_ci",/* name */
+ charset_name_utf8, /* cs name */
+ MY_UTF8MB3 "_hungarian_ci",/* name */
"", /* comment */
hungarian, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -35543,19 +35540,19 @@ struct charset_info_st my_charset_utf8_hungarian_uca_ci=
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
1, /* levels_for_order */
- &my_charset_utf8_handler,
+ &my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
-struct charset_info_st my_charset_utf8_sinhala_uca_ci=
+struct charset_info_st my_charset_utf8mb3_sinhala_uca_ci=
{
211,0,0, /* number */
- MY_CS_UTF8MB3_UCA_FLAGS,/* flags */
- "utf8", /* cs name */
- "utf8_sinhala_ci", /* name */
+ MY_CS_UTF8MB3_UCA_FLAGS,/* flags */
+ charset_name_utf8, /* cs name */
+ MY_UTF8MB3 "_sinhala_ci", /* name */
"", /* comment */
sinhala, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -35575,20 +35572,20 @@ struct charset_info_st my_charset_utf8_sinhala_uca_ci=
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
1, /* levels_for_order */
- &my_charset_utf8_handler,
+ &my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
-struct charset_info_st my_charset_utf8_german2_uca_ci=
+struct charset_info_st my_charset_utf8mb3_german2_uca_ci=
{
212,0,0, /* number */
- MY_CS_UTF8MB3_UCA_FLAGS,/* flags */
- MY_UTF8MB3, /* cs name */
- MY_UTF8MB3 "_german2_ci",/* name */
+ MY_CS_UTF8MB3_UCA_FLAGS,/* flags */
+ charset_name_utf8, /* cs name */
+ MY_UTF8MB3 "_german2_ci",/* name */
"", /* comment */
german2, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -35608,19 +35605,19 @@ struct charset_info_st my_charset_utf8_german2_uca_ci=
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
1, /* levels_for_order */
- &my_charset_utf8_handler,
+ &my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
-struct charset_info_st my_charset_utf8_croatian_mysql561_uca_ci=
+struct charset_info_st my_charset_utf8mb3_croatian_mysql561_uca_ci=
{
213,0,0, /* number */
- MY_CS_UTF8MB3_UCA_FLAGS,/* flags */
- MY_UTF8MB3, /* cs name */
+ MY_CS_UTF8MB3_UCA_FLAGS,/* flags */
+ charset_name_utf8, /* cs name */
MY_UTF8MB3 "_croatian_mysql561_ci",/* name */
"", /* comment */
croatian_mysql561, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -35640,20 +35637,20 @@ struct charset_info_st my_charset_utf8_croatian_mysql561_uca_ci=
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
1, /* levels_for_order */
- &my_charset_utf8_handler,
+ &my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
-struct charset_info_st my_charset_utf8_croatian_uca_ci=
+struct charset_info_st my_charset_utf8mb3_croatian_uca_ci=
{
MY_PAGE2_COLLATION_ID_UTF8,0,0, /* number */
- MY_CS_UTF8MB3_UCA_FLAGS,/* flags */
- MY_UTF8MB3, /* cs name */
+ MY_CS_UTF8MB3_UCA_FLAGS,/* flags */
+ charset_name_utf8, /* cs name */
MY_UTF8MB3 "_croatian_ci",/* name */
"", /* comment */
croatian_mariadb, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -35673,20 +35670,20 @@ struct charset_info_st my_charset_utf8_croatian_uca_ci=
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
1, /* levels_for_order */
- &my_charset_utf8_handler,
+ &my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
-struct charset_info_st my_charset_utf8_myanmar_uca_ci=
+struct charset_info_st my_charset_utf8mb3_myanmar_uca_ci=
{
MY_PAGE2_COLLATION_ID_UTF8+1,0,0, /* number */
- MY_CS_UTF8MB3_UCA_FLAGS,/* flags */
- MY_UTF8MB3, /* cs name */
- MY_UTF8MB3 "_myanmar_ci",/* name */
+ MY_CS_UTF8MB3_UCA_FLAGS,/* flags */
+ charset_name_utf8, /* cs name */
+ MY_UTF8MB3 "_myanmar_ci",/* name */
"", /* comment */
myanmar, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -35706,20 +35703,20 @@ struct charset_info_st my_charset_utf8_myanmar_uca_ci=
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
1, /* levels_for_order */
- &my_charset_utf8_handler,
+ &my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
-struct charset_info_st my_charset_utf8_unicode_520_ci=
+struct charset_info_st my_charset_utf8mb3_unicode_520_ci=
{
214,0,0, /* number */
MY_CS_UTF8MB3_UCA_FLAGS,/* flags */
- MY_UTF8MB3, /* csname */
+ charset_name_utf8, /* csname */
MY_UTF8MB3 "_unicode_520_ci",/* name */
"", /* comment */
"", /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -35739,19 +35736,19 @@ struct charset_info_st my_charset_utf8_unicode_520_ci=
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
1, /* levels_for_order */
- &my_charset_utf8_handler,
+ &my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
-struct charset_info_st my_charset_utf8_thai_520_w2=
+struct charset_info_st my_charset_utf8mb3_thai_520_w2=
{
MY_PAGE2_COLLATION_ID_UTF8+2,0,0, /* number */
MY_CS_UTF8MB3_UCA_FLAGS,/* flags */
- MY_UTF8MB3, /* csname */
+ charset_name_utf8, /* csname */
MY_UTF8MB3 "_thai_520_w2",/* name */
"", /* comment */
"[strength 2]", /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -35771,19 +35768,19 @@ struct charset_info_st my_charset_utf8_thai_520_w2=
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
2, /* levels_for_order */
- &my_charset_utf8_handler,
+ &my_charset_utf8mb3_handler,
&my_uca_collation_handler_multilevel_utf8mb3
};
-struct charset_info_st my_charset_utf8_vietnamese_ci=
+struct charset_info_st my_charset_utf8mb3_vietnamese_ci=
{
215,0,0, /* number */
MY_CS_UTF8MB3_UCA_FLAGS,/* flags */
- MY_UTF8MB3, /* cs name */
+ charset_name_utf8, /* cs name */
MY_UTF8MB3 "_vietnamese_ci",/* name */
"", /* comment */
vietnamese, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -35803,20 +35800,20 @@ struct charset_info_st my_charset_utf8_vietnamese_ci=
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
1, /* levels_for_order */
- &my_charset_utf8_handler,
+ &my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
-struct charset_info_st my_charset_utf8_unicode_nopad_ci=
+struct charset_info_st my_charset_utf8mb3_unicode_nopad_ci=
{
MY_NOPAD_ID(192),0,0, /* number */
MY_CS_UTF8MB3_UCA_NOPAD_FLAGS, /* flags */
- MY_UTF8MB3, /* cs name */
+ charset_name_utf8, /* cs name */
MY_UTF8MB3 "_unicode_nopad_ci",/* name */
"", /* comment */
"", /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -35836,20 +35833,20 @@ struct charset_info_st my_charset_utf8_unicode_nopad_ci=
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
1, /* levels_for_order */
- &my_charset_utf8_handler,
+ &my_charset_utf8mb3_handler,
&my_uca_collation_handler_nopad_utf8mb3
};
-struct charset_info_st my_charset_utf8_unicode_520_nopad_ci=
+struct charset_info_st my_charset_utf8mb3_unicode_520_nopad_ci=
{
MY_NOPAD_ID(214),0,0, /* number */
MY_CS_UTF8MB3_UCA_NOPAD_FLAGS, /* flags */
- MY_UTF8MB3, /* csname */
+ charset_name_utf8, /* csname */
MY_UTF8MB3 "_unicode_520_nopad_ci", /* name */
"", /* comment */
"", /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -35869,11 +35866,11 @@ struct charset_info_st my_charset_utf8_unicode_520_nopad_ci=
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
1, /* levels_for_order */
- &my_charset_utf8_handler,
+ &my_charset_utf8mb3_handler,
&my_uca_collation_handler_nopad_utf8mb3
};
-#endif /* HAVE_CHARSET_utf8 */
+#endif /* HAVE_CHARSET_utf8mb3 */
#ifdef HAVE_CHARSET_utf8mb4
@@ -35919,12 +35916,12 @@ extern MY_CHARSET_HANDLER my_charset_utf8mb4_handler;
struct charset_info_st my_charset_utf8mb4_unicode_ci=
{
224,0,0, /* number */
- MY_CS_UTF8MB4_UCA_FLAGS,/* state */
- MY_UTF8MB4, /* csname */
- MY_UTF8MB4 "_unicode_ci",/* name */
+ MY_CS_UTF8MB4_UCA_FLAGS,/* state */
+ charset_name_utf8mb4, /* csname */
+ MY_UTF8MB4 "_unicode_ci",/* name */
"", /* comment */
"", /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -35952,12 +35949,12 @@ struct charset_info_st my_charset_utf8mb4_unicode_ci=
struct charset_info_st my_charset_utf8mb4_icelandic_uca_ci=
{
225,0,0, /* number */
- MY_CS_UTF8MB4_UCA_FLAGS,/* state */
- MY_UTF8MB4, /* csname */
- MY_UTF8MB4 "_icelandic_ci",/* name */
+ MY_CS_UTF8MB4_UCA_FLAGS,/* state */
+ charset_name_utf8mb4, /* csname */
+ MY_UTF8MB4 "_icelandic_ci",/* name */
"", /* comment */
icelandic, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -35985,11 +35982,11 @@ struct charset_info_st my_charset_utf8mb4_latvian_uca_ci=
{
226,0,0, /* number */
MY_CS_UTF8MB4_UCA_FLAGS,/* state */
- MY_UTF8MB4, /* csname */
+ charset_name_utf8mb4, /* csname */
MY_UTF8MB4 "_latvian_ci", /* name */
"", /* comment */
latvian, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -36016,12 +36013,12 @@ struct charset_info_st my_charset_utf8mb4_latvian_uca_ci=
struct charset_info_st my_charset_utf8mb4_romanian_uca_ci=
{
227,0,0, /* number */
- MY_CS_UTF8MB4_UCA_FLAGS,/* state */
- MY_UTF8MB4, /* csname */
- MY_UTF8MB4 "_romanian_ci", /* name */
+ MY_CS_UTF8MB4_UCA_FLAGS,/* state */
+ charset_name_utf8mb4, /* csname */
+ MY_UTF8MB4 "_romanian_ci", /* name */
"", /* comment */
romanian, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -36048,12 +36045,12 @@ struct charset_info_st my_charset_utf8mb4_romanian_uca_ci=
struct charset_info_st my_charset_utf8mb4_slovenian_uca_ci=
{
228,0,0, /* number */
- MY_CS_UTF8MB4_UCA_FLAGS,/* state */
- MY_UTF8MB4, /* csname */
- MY_UTF8MB4 "_slovenian_ci",/* name */
+ MY_CS_UTF8MB4_UCA_FLAGS,/* state */
+ charset_name_utf8mb4, /* csname */
+ MY_UTF8MB4 "_slovenian_ci",/* name */
"", /* comment */
slovenian, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -36080,12 +36077,12 @@ struct charset_info_st my_charset_utf8mb4_slovenian_uca_ci=
struct charset_info_st my_charset_utf8mb4_polish_uca_ci=
{
229,0,0, /* number */
- MY_CS_UTF8MB4_UCA_FLAGS,/* state */
- MY_UTF8MB4, /* csname */
- MY_UTF8MB4 "_polish_ci", /* name */
+ MY_CS_UTF8MB4_UCA_FLAGS,/* state */
+ charset_name_utf8mb4, /* csname */
+ MY_UTF8MB4 "_polish_ci", /* name */
"", /* comment */
polish, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -36113,11 +36110,11 @@ struct charset_info_st my_charset_utf8mb4_estonian_uca_ci=
{
230,0,0, /* number */
MY_CS_UTF8MB4_UCA_FLAGS,/* state */
- MY_UTF8MB4, /* csname */
+ charset_name_utf8mb4, /* csname */
MY_UTF8MB4 "_estonian_ci", /* name */
"", /* comment */
estonian, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -36144,12 +36141,12 @@ struct charset_info_st my_charset_utf8mb4_estonian_uca_ci=
struct charset_info_st my_charset_utf8mb4_spanish_uca_ci=
{
231,0,0, /* number */
- MY_CS_UTF8MB4_UCA_FLAGS,/* state */
- MY_UTF8MB4, /* csname */
- MY_UTF8MB4 "_spanish_ci", /* name */
+ MY_CS_UTF8MB4_UCA_FLAGS,/* state */
+ charset_name_utf8mb4, /* csname */
+ MY_UTF8MB4 "_spanish_ci", /* name */
"", /* comment */
spanish, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -36176,12 +36173,12 @@ struct charset_info_st my_charset_utf8mb4_spanish_uca_ci=
struct charset_info_st my_charset_utf8mb4_swedish_uca_ci=
{
232,0,0, /* number */
- MY_CS_UTF8MB4_UCA_FLAGS,/* state */
- MY_UTF8MB4, /* csname */
- MY_UTF8MB4 "_swedish_ci", /* name */
+ MY_CS_UTF8MB4_UCA_FLAGS,/* state */
+ charset_name_utf8mb4, /* csname */
+ MY_UTF8MB4 "_swedish_ci", /* name */
"", /* comment */
swedish, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -36208,12 +36205,12 @@ struct charset_info_st my_charset_utf8mb4_swedish_uca_ci=
struct charset_info_st my_charset_utf8mb4_turkish_uca_ci=
{
233,0,0, /* number */
- MY_CS_UTF8MB4_UCA_FLAGS,/* state */
- MY_UTF8MB4, /* csname */
- MY_UTF8MB4 "_turkish_ci", /* name */
+ MY_CS_UTF8MB4_UCA_FLAGS,/* state */
+ charset_name_utf8mb4, /* csname */
+ MY_UTF8MB4 "_turkish_ci", /* name */
"", /* comment */
turkish, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -36240,12 +36237,12 @@ struct charset_info_st my_charset_utf8mb4_turkish_uca_ci=
struct charset_info_st my_charset_utf8mb4_czech_uca_ci=
{
234,0,0, /* number */
- MY_CS_UTF8MB4_UCA_FLAGS,/* state */
- MY_UTF8MB4, /* csname */
- MY_UTF8MB4 "_czech_ci", /* name */
+ MY_CS_UTF8MB4_UCA_FLAGS,/* state */
+ charset_name_utf8mb4, /* csname */
+ MY_UTF8MB4 "_czech_ci", /* name */
"", /* comment */
czech, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -36273,12 +36270,12 @@ struct charset_info_st my_charset_utf8mb4_czech_uca_ci=
struct charset_info_st my_charset_utf8mb4_danish_uca_ci=
{
235,0,0, /* number */
- MY_CS_UTF8MB4_UCA_FLAGS,/* state */
- MY_UTF8MB4, /* csname */
- MY_UTF8MB4 "_danish_ci", /* name */
+ MY_CS_UTF8MB4_UCA_FLAGS,/* state */
+ charset_name_utf8mb4, /* csname */
+ MY_UTF8MB4 "_danish_ci", /* name */
"", /* comment */
danish, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -36305,12 +36302,12 @@ struct charset_info_st my_charset_utf8mb4_danish_uca_ci=
struct charset_info_st my_charset_utf8mb4_lithuanian_uca_ci=
{
236,0,0, /* number */
- MY_CS_UTF8MB4_UCA_FLAGS,/* state */
- MY_UTF8MB4, /* csname */
- MY_UTF8MB4 "_lithuanian_ci",/* name */
+ MY_CS_UTF8MB4_UCA_FLAGS,/* state */
+ charset_name_utf8mb4, /* csname */
+ MY_UTF8MB4 "_lithuanian_ci",/* name */
"", /* comment */
lithuanian, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -36337,12 +36334,12 @@ struct charset_info_st my_charset_utf8mb4_lithuanian_uca_ci=
struct charset_info_st my_charset_utf8mb4_slovak_uca_ci=
{
237,0,0, /* number */
- MY_CS_UTF8MB4_UCA_FLAGS,/* state */
- MY_UTF8MB4, /* csname */
- MY_UTF8MB4 "_slovak_ci", /* name */
+ MY_CS_UTF8MB4_UCA_FLAGS,/* state */
+ charset_name_utf8mb4, /* csname */
+ MY_UTF8MB4 "_slovak_ci", /* name */
"", /* comment */
slovak, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -36369,12 +36366,12 @@ struct charset_info_st my_charset_utf8mb4_slovak_uca_ci=
struct charset_info_st my_charset_utf8mb4_spanish2_uca_ci=
{
238,0,0, /* number */
- MY_CS_UTF8MB4_UCA_FLAGS,/* state */
- MY_UTF8MB4, /* csname */
- MY_UTF8MB4 "_spanish2_ci", /* name */
+ MY_CS_UTF8MB4_UCA_FLAGS,/* state */
+ charset_name_utf8mb4, /* csname */
+ MY_UTF8MB4 "_spanish2_ci", /* name */
"", /* comment */
spanish2, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -36401,12 +36398,12 @@ struct charset_info_st my_charset_utf8mb4_spanish2_uca_ci=
struct charset_info_st my_charset_utf8mb4_roman_uca_ci=
{
239,0,0, /* number */
- MY_CS_UTF8MB4_UCA_FLAGS,/* state */
- MY_UTF8MB4, /* csname */
- MY_UTF8MB4 "_roman_ci", /* name */
+ MY_CS_UTF8MB4_UCA_FLAGS,/* state */
+ charset_name_utf8mb4, /* csname */
+ MY_UTF8MB4 "_roman_ci", /* name */
"", /* comment */
roman, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -36433,12 +36430,12 @@ struct charset_info_st my_charset_utf8mb4_roman_uca_ci=
struct charset_info_st my_charset_utf8mb4_persian_uca_ci=
{
240,0,0, /* number */
- MY_CS_UTF8MB4_UCA_FLAGS,/* state */
- MY_UTF8MB4, /* csname */
- MY_UTF8MB4 "_persian_ci", /* name */
+ MY_CS_UTF8MB4_UCA_FLAGS,/* state */
+ charset_name_utf8mb4, /* csname */
+ MY_UTF8MB4 "_persian_ci", /* name */
"", /* comment */
persian, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -36465,12 +36462,12 @@ struct charset_info_st my_charset_utf8mb4_persian_uca_ci=
struct charset_info_st my_charset_utf8mb4_esperanto_uca_ci=
{
241,0,0, /* number */
- MY_CS_UTF8MB4_UCA_FLAGS,/* state */
- MY_UTF8MB4, /* csname */
- MY_UTF8MB4 "_esperanto_ci",/* name */
+ MY_CS_UTF8MB4_UCA_FLAGS,/* state */
+ charset_name_utf8mb4, /* csname */
+ MY_UTF8MB4 "_esperanto_ci",/* name */
"", /* comment */
esperanto, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -36497,12 +36494,12 @@ struct charset_info_st my_charset_utf8mb4_esperanto_uca_ci=
struct charset_info_st my_charset_utf8mb4_hungarian_uca_ci=
{
242,0,0, /* number */
- MY_CS_UTF8MB4_UCA_FLAGS,/* state */
- MY_UTF8MB4, /* csname */
- MY_UTF8MB4 "_hungarian_ci",/* name */
+ MY_CS_UTF8MB4_UCA_FLAGS,/* state */
+ charset_name_utf8mb4, /* csname */
+ MY_UTF8MB4 "_hungarian_ci",/* name */
"", /* comment */
hungarian, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -36530,11 +36527,11 @@ struct charset_info_st my_charset_utf8mb4_sinhala_uca_ci=
{
243,0,0, /* number */
MY_CS_UTF8MB4_UCA_FLAGS,/* state */
- MY_UTF8MB4, /* csname */
- MY_UTF8MB4 "_sinhala_ci",/* name */
+ charset_name_utf8mb4, /* csname */
+ MY_UTF8MB4 "_sinhala_ci",/* name */
"", /* comment */
sinhala, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -36562,11 +36559,11 @@ struct charset_info_st my_charset_utf8mb4_german2_uca_ci=
{
244,0,0, /* number */
MY_CS_UTF8MB4_UCA_FLAGS,/* state */
- MY_UTF8MB4, /* csname */
- MY_UTF8MB4 "_german2_ci",/* name */
+ charset_name_utf8mb4, /* csname */
+ MY_UTF8MB4 "_german2_ci",/* name */
"", /* comment */
german2, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -36594,11 +36591,11 @@ struct charset_info_st my_charset_utf8mb4_croatian_mysql561_uca_ci=
{
245,0,0, /* number */
MY_CS_UTF8MB4_UCA_FLAGS,/* state */
- MY_UTF8MB4, /* csname */
+ charset_name_utf8mb4, /* csname */
MY_UTF8MB4 "_croatian_mysql561_ci",/* name */
"", /* comment */
croatian_mysql561, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -36627,11 +36624,11 @@ struct charset_info_st my_charset_utf8mb4_croatian_uca_ci=
{
MY_PAGE2_COLLATION_ID_UTF8MB4,0,0, /* number */
MY_CS_UTF8MB4_UCA_FLAGS,/* state */
- MY_UTF8MB4, /* csname */
+ charset_name_utf8mb4, /* csname */
MY_UTF8MB4 "_croatian_ci",/* name */
"", /* comment */
croatian_mariadb, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -36660,11 +36657,11 @@ struct charset_info_st my_charset_utf8mb4_myanmar_uca_ci=
{
MY_PAGE2_COLLATION_ID_UTF8MB4+1,0,0, /* number */
MY_CS_UTF8MB4_UCA_FLAGS,/* state */
- MY_UTF8MB4, /* csname */
- MY_UTF8MB4 "_myanmar_ci",/* name */
+ charset_name_utf8mb4, /* csname */
+ MY_UTF8MB4 "_myanmar_ci",/* name */
"", /* comment */
myanmar, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -36692,11 +36689,11 @@ struct charset_info_st my_charset_utf8mb4_thai_520_w2=
{
MY_PAGE2_COLLATION_ID_UTF8MB4+2,0,0, /* number */
MY_CS_UTF8MB4_UCA_FLAGS,/* flags */
- MY_UTF8MB4, /* csname */
+ charset_name_utf8mb4, /* csname */
MY_UTF8MB4 "_thai_520_w2", /* name */
"", /* comment */
"[strength 2]", /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -36724,11 +36721,11 @@ struct charset_info_st my_charset_utf8mb4_unicode_520_ci=
{
246,0,0, /* number */
MY_CS_UTF8MB4_UCA_FLAGS,/* flags */
- MY_UTF8MB4, /* csname */
+ charset_name_utf8mb4, /* csname */
MY_UTF8MB4 "_unicode_520_ci",/* name */
"", /* comment */
"", /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -36757,11 +36754,11 @@ struct charset_info_st my_charset_utf8mb4_vietnamese_ci=
{
247,0,0, /* number */
MY_CS_UTF8MB4_UCA_FLAGS,/* state */
- MY_UTF8MB4, /* csname */
+ charset_name_utf8mb4, /* csname */
MY_UTF8MB4 "_vietnamese_ci",/* name */
"", /* comment */
vietnamese, /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -36790,11 +36787,11 @@ struct charset_info_st my_charset_utf8mb4_unicode_nopad_ci=
{
MY_NOPAD_ID(224),0,0, /* number */
MY_CS_UTF8MB4_UCA_NOPAD_FLAGS, /* state */
- MY_UTF8MB4, /* csname */
+ charset_name_utf8mb4, /* csname */
MY_UTF8MB4 "_unicode_nopad_ci", /* name */
"", /* comment */
"", /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -36823,11 +36820,11 @@ struct charset_info_st my_charset_utf8mb4_unicode_520_nopad_ci=
{
MY_NOPAD_ID(246),0,0, /* number */
MY_CS_UTF8MB4_UCA_NOPAD_FLAGS, /* flags */
- MY_UTF8MB4, /* csname */
+ charset_name_utf8mb4, /* csname */
MY_UTF8MB4 "_unicode_520_nopad_ci", /* name */
"", /* comment */
"", /* tailoring */
- ctype_utf8, /* ctype */
+ ctype_utf8mb3, /* ctype */
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
@@ -36866,7 +36863,6 @@ struct charset_info_st my_charset_utf8mb4_unicode_520_nopad_ci=
#define MY_UCA_COLL_INIT my_coll_init_uca
#include "ctype-uca.inl"
-
extern MY_CHARSET_HANDLER my_charset_utf32_handler;
#define MY_CS_UTF32_UCA_FLAGS (MY_CS_COMMON_UCA_FLAGS|MY_CS_NONASCII)
@@ -36876,7 +36872,7 @@ struct charset_info_st my_charset_utf32_unicode_ci=
{
160,0,0, /* number */
MY_CS_UTF32_UCA_FLAGS,/* state */
- "utf32", /* csname */
+ charset_name_utf32, /* csname */
"utf32_unicode_ci", /* name */
"", /* comment */
"", /* tailoring */
@@ -36909,7 +36905,7 @@ struct charset_info_st my_charset_utf32_icelandic_uca_ci=
{
161,0,0, /* number */
MY_CS_UTF32_UCA_FLAGS,/* state */
- "utf32", /* csname */
+ charset_name_utf32, /* csname */
"utf32_icelandic_ci",/* name */
"", /* comment */
icelandic, /* tailoring */
@@ -36941,7 +36937,7 @@ struct charset_info_st my_charset_utf32_latvian_uca_ci=
{
162,0,0, /* number */
MY_CS_UTF32_UCA_FLAGS,/* state */
- "utf32", /* csname */
+ charset_name_utf32, /* csname */
"utf32_latvian_ci", /* name */
"", /* comment */
latvian, /* tailoring */
@@ -36973,7 +36969,7 @@ struct charset_info_st my_charset_utf32_romanian_uca_ci=
{
163,0,0, /* number */
MY_CS_UTF32_UCA_FLAGS,/* state */
- "utf32", /* csname */
+ charset_name_utf32, /* csname */
"utf32_romanian_ci", /* name */
"", /* comment */
romanian, /* tailoring */
@@ -37005,7 +37001,7 @@ struct charset_info_st my_charset_utf32_slovenian_uca_ci=
{
164,0,0, /* number */
MY_CS_UTF32_UCA_FLAGS,/* state */
- "utf32", /* csname */
+ charset_name_utf32, /* csname */
"utf32_slovenian_ci",/* name */
"", /* comment */
slovenian, /* tailoring */
@@ -37037,7 +37033,7 @@ struct charset_info_st my_charset_utf32_polish_uca_ci=
{
165,0,0, /* number */
MY_CS_UTF32_UCA_FLAGS,/* state */
- "utf32", /* csname */
+ charset_name_utf32, /* csname */
"utf32_polish_ci", /* name */
"", /* comment */
polish, /* tailoring */
@@ -37069,7 +37065,7 @@ struct charset_info_st my_charset_utf32_estonian_uca_ci=
{
166,0,0, /* number */
MY_CS_UTF32_UCA_FLAGS,/* state */
- "utf32", /* csname */
+ charset_name_utf32, /* csname */
"utf32_estonian_ci", /* name */
"", /* comment */
estonian, /* tailoring */
@@ -37101,7 +37097,7 @@ struct charset_info_st my_charset_utf32_spanish_uca_ci=
{
167,0,0, /* number */
MY_CS_UTF32_UCA_FLAGS,/* state */
- "utf32", /* csname */
+ charset_name_utf32, /* csname */
"utf32_spanish_ci", /* name */
"", /* comment */
spanish, /* tailoring */
@@ -37133,7 +37129,7 @@ struct charset_info_st my_charset_utf32_swedish_uca_ci=
{
168,0,0, /* number */
MY_CS_UTF32_UCA_FLAGS,/* state */
- "utf32", /* csname */
+ charset_name_utf32, /* csname */
"utf32_swedish_ci", /* name */
"", /* comment */
swedish, /* tailoring */
@@ -37165,7 +37161,7 @@ struct charset_info_st my_charset_utf32_turkish_uca_ci=
{
169,0,0, /* number */
MY_CS_UTF32_UCA_FLAGS,/* state */
- "utf32", /* csname */
+ charset_name_utf32, /* csname */
"utf32_turkish_ci", /* name */
"", /* comment */
turkish, /* tailoring */
@@ -37197,7 +37193,7 @@ struct charset_info_st my_charset_utf32_czech_uca_ci=
{
170,0,0, /* number */
MY_CS_UTF32_UCA_FLAGS,/* state */
- "utf32", /* csname */
+ charset_name_utf32, /* csname */
"utf32_czech_ci", /* name */
"", /* comment */
czech, /* tailoring */
@@ -37230,7 +37226,7 @@ struct charset_info_st my_charset_utf32_danish_uca_ci=
{
171,0,0, /* number */
MY_CS_UTF32_UCA_FLAGS,/* state */
- "utf32", /* csname */
+ charset_name_utf32, /* csname */
"utf32_danish_ci", /* name */
"", /* comment */
danish, /* tailoring */
@@ -37262,7 +37258,7 @@ struct charset_info_st my_charset_utf32_lithuanian_uca_ci=
{
172,0,0, /* number */
MY_CS_UTF32_UCA_FLAGS,/* state */
- "utf32", /* csname */
+ charset_name_utf32, /* csname */
"utf32_lithuanian_ci",/* name */
"", /* comment */
lithuanian, /* tailoring */
@@ -37294,7 +37290,7 @@ struct charset_info_st my_charset_utf32_slovak_uca_ci=
{
173,0,0, /* number */
MY_CS_UTF32_UCA_FLAGS,/* state */
- "utf32", /* csname */
+ charset_name_utf32, /* csname */
"utf32_slovak_ci", /* name */
"", /* comment */
slovak, /* tailoring */
@@ -37326,7 +37322,7 @@ struct charset_info_st my_charset_utf32_spanish2_uca_ci=
{
174,0,0, /* number */
MY_CS_UTF32_UCA_FLAGS,/* state */
- "utf32", /* csname */
+ charset_name_utf32, /* csname */
"utf32_spanish2_ci", /* name */
"", /* comment */
spanish2, /* tailoring */
@@ -37358,7 +37354,7 @@ struct charset_info_st my_charset_utf32_roman_uca_ci=
{
175,0,0, /* number */
MY_CS_UTF32_UCA_FLAGS,/* state */
- "utf32", /* csname */
+ charset_name_utf32, /* csname */
"utf32_roman_ci", /* name */
"", /* comment */
roman, /* tailoring */
@@ -37390,7 +37386,7 @@ struct charset_info_st my_charset_utf32_persian_uca_ci=
{
176,0,0, /* number */
MY_CS_UTF32_UCA_FLAGS,/* state */
- "utf32", /* csname */
+ charset_name_utf32, /* csname */
"utf32_persian_ci", /* name */
"", /* comment */
persian, /* tailoring */
@@ -37422,7 +37418,7 @@ struct charset_info_st my_charset_utf32_esperanto_uca_ci=
{
177,0,0, /* number */
MY_CS_UTF32_UCA_FLAGS,/* state */
- "utf32", /* csname */
+ charset_name_utf32, /* csname */
"utf32_esperanto_ci",/* name */
"", /* comment */
esperanto, /* tailoring */
@@ -37454,7 +37450,7 @@ struct charset_info_st my_charset_utf32_hungarian_uca_ci=
{
178,0,0, /* number */
MY_CS_UTF32_UCA_FLAGS,/* state */
- "utf32", /* csname */
+ charset_name_utf32, /* csname */
"utf32_hungarian_ci",/* name */
"", /* comment */
hungarian, /* tailoring */
@@ -37486,7 +37482,7 @@ struct charset_info_st my_charset_utf32_sinhala_uca_ci=
{
179,0,0, /* number */
MY_CS_UTF32_UCA_FLAGS,/* state */
- "utf32", /* csname */
+ charset_name_utf32, /* csname */
"utf32_sinhala_ci", /* name */
"", /* comment */
sinhala, /* tailoring */
@@ -37518,7 +37514,7 @@ struct charset_info_st my_charset_utf32_german2_uca_ci=
{
180,0,0, /* number */
MY_CS_UTF32_UCA_FLAGS,/* state */
- "utf32", /* csname */
+ charset_name_utf32, /* csname */
"utf32_german2_ci", /* name */
"", /* comment */
german2, /* tailoring */
@@ -37550,7 +37546,7 @@ struct charset_info_st my_charset_utf32_croatian_mysql561_uca_ci=
{
181,0,0, /* number */
MY_CS_UTF32_UCA_FLAGS,/* state */
- "utf32", /* csname */
+ charset_name_utf32, /* csname */
"utf32_croatian_mysql561_ci", /* name */
"", /* comment */
croatian_mysql561, /* tailoring */
@@ -37582,7 +37578,7 @@ struct charset_info_st my_charset_utf32_croatian_uca_ci=
{
MY_PAGE2_COLLATION_ID_UTF32,0,0, /* number */
MY_CS_UTF32_UCA_FLAGS,/* state */
- "utf32", /* csname */
+ charset_name_utf32, /* csname */
"utf32_croatian_ci", /* name */
"", /* comment */
croatian_mariadb, /* tailoring */
@@ -37615,7 +37611,7 @@ struct charset_info_st my_charset_utf32_myanmar_uca_ci=
{
MY_PAGE2_COLLATION_ID_UTF32+1,0,0, /* number */
MY_CS_UTF32_UCA_FLAGS,/* state */
- "utf32", /* csname */
+ charset_name_utf32, /* csname */
"utf32_myanmar_ci", /* name */
"", /* comment */
myanmar, /* tailoring */
@@ -37648,7 +37644,7 @@ struct charset_info_st my_charset_utf32_thai_520_w2=
{
MY_PAGE2_COLLATION_ID_UTF32+2,0,0, /* number */
MY_CS_UTF32_UCA_FLAGS,/* state */
- "utf32", /* csname */
+ charset_name_utf32, /* csname */
"utf32_thai_520_w2",/* name */
"", /* comment */
"[strength 2]", /* tailoring */
@@ -37681,7 +37677,7 @@ struct charset_info_st my_charset_utf32_unicode_520_ci=
{
182,0,0, /* number */
MY_CS_UTF32_UCA_FLAGS,/* stat e */
- "utf32", /* csname */
+ charset_name_utf32, /* csname */
"utf32_unicode_520_ci",/* name */
"", /* comment */
"", /* tailoring */
@@ -37714,7 +37710,7 @@ struct charset_info_st my_charset_utf32_vietnamese_ci=
{
183,0,0, /* number */
MY_CS_UTF32_UCA_FLAGS,/* state */
- "utf32", /* csname */
+ charset_name_utf32, /* csname */
"utf32_vietnamese_ci",/* name */
"", /* comment */
vietnamese, /* tailoring */
@@ -37747,7 +37743,7 @@ struct charset_info_st my_charset_utf32_unicode_nopad_ci=
{
MY_NOPAD_ID(160),0,0, /* number */
MY_CS_UTF32_UCA_NOPAD_FLAGS, /* state */
- "utf32", /* csname */
+ charset_name_utf32, /* csname */
"utf32_unicode_nopad_ci", /* name */
"", /* comment */
"", /* tailoring */
@@ -37780,7 +37776,7 @@ struct charset_info_st my_charset_utf32_unicode_520_nopad_ci=
{
MY_NOPAD_ID(182),0,0, /* number */
MY_CS_UTF32_UCA_NOPAD_FLAGS, /* state */
- "utf32", /* csname */
+ charset_name_utf32, /* csname */
"utf32_unicode_520_nopad_ci",/* name */
"", /* comment */
"", /* tailoring */
@@ -37824,7 +37820,6 @@ struct charset_info_st my_charset_utf32_unicode_520_nopad_ci=
#define MY_UCA_COLL_INIT my_coll_init_uca
#include "ctype-uca.inl"
-
extern MY_CHARSET_HANDLER my_charset_utf16_handler;
#define MY_CS_UTF16_UCA_FLAGS (MY_CS_COMMON_UCA_FLAGS|MY_CS_NONASCII)
@@ -37834,7 +37829,7 @@ struct charset_info_st my_charset_utf16_unicode_ci=
{
101,0,0, /* number */
MY_CS_UTF16_UCA_FLAGS,/* state */
- "utf16", /* csname */
+ charset_name_utf16, /* csname */
"utf16_unicode_ci", /* name */
"", /* comment */
"", /* tailoring */
@@ -37867,7 +37862,7 @@ struct charset_info_st my_charset_utf16_icelandic_uca_ci=
{
102,0,0, /* number */
MY_CS_UTF16_UCA_FLAGS,/* state */
- "utf16", /* csname */
+ charset_name_utf16, /* csname */
"utf16_icelandic_ci",/* name */
"", /* comment */
icelandic, /* tailoring */
@@ -37899,7 +37894,7 @@ struct charset_info_st my_charset_utf16_latvian_uca_ci=
{
103,0,0, /* number */
MY_CS_UTF16_UCA_FLAGS,/* state */
- "utf16", /* cs name */
+ charset_name_utf16, /* cs name */
"utf16_latvian_ci", /* name */
"", /* comment */
latvian, /* tailoring */
@@ -37931,7 +37926,7 @@ struct charset_info_st my_charset_utf16_romanian_uca_ci=
{
104,0,0, /* number */
MY_CS_UTF16_UCA_FLAGS,/* state */
- "utf16", /* cs name */
+ charset_name_utf16, /* cs name */
"utf16_romanian_ci", /* name */
"", /* comment */
romanian, /* tailoring */
@@ -37963,7 +37958,7 @@ struct charset_info_st my_charset_utf16_slovenian_uca_ci=
{
105,0,0, /* number */
MY_CS_UTF16_UCA_FLAGS,/* state */
- "utf16", /* cs name */
+ charset_name_utf16, /* cs name */
"utf16_slovenian_ci",/* name */
"", /* comment */
slovenian, /* tailoring */
@@ -37995,7 +37990,7 @@ struct charset_info_st my_charset_utf16_polish_uca_ci=
{
106,0,0, /* number */
MY_CS_UTF16_UCA_FLAGS,/* state */
- "utf16", /* cs name */
+ charset_name_utf16, /* cs name */
"utf16_polish_ci", /* name */
"", /* comment */
polish, /* tailoring */
@@ -38027,7 +38022,7 @@ struct charset_info_st my_charset_utf16_estonian_uca_ci=
{
107,0,0, /* number */
MY_CS_UTF16_UCA_FLAGS,/* state */
- "utf16", /* cs name */
+ charset_name_utf16, /* cs name */
"utf16_estonian_ci", /* name */
"", /* comment */
estonian, /* tailoring */
@@ -38059,7 +38054,7 @@ struct charset_info_st my_charset_utf16_spanish_uca_ci=
{
108,0,0, /* number */
MY_CS_UTF16_UCA_FLAGS,/* state */
- "utf16", /* cs name */
+ charset_name_utf16, /* cs name */
"utf16_spanish_ci", /* name */
"", /* comment */
spanish, /* tailoring */
@@ -38091,7 +38086,7 @@ struct charset_info_st my_charset_utf16_swedish_uca_ci=
{
109,0,0, /* number */
MY_CS_UTF16_UCA_FLAGS,/* state */
- "utf16", /* cs name */
+ charset_name_utf16, /* cs name */
"utf16_swedish_ci", /* name */
"", /* comment */
swedish, /* tailoring */
@@ -38123,7 +38118,7 @@ struct charset_info_st my_charset_utf16_turkish_uca_ci=
{
110,0,0, /* number */
MY_CS_UTF16_UCA_FLAGS,/* state */
- "utf16", /* cs name */
+ charset_name_utf16, /* cs name */
"utf16_turkish_ci", /* name */
"", /* comment */
turkish, /* tailoring */
@@ -38155,7 +38150,7 @@ struct charset_info_st my_charset_utf16_czech_uca_ci=
{
111,0,0, /* number */
MY_CS_UTF16_UCA_FLAGS,/* state */
- "utf16", /* cs name */
+ charset_name_utf16, /* cs name */
"utf16_czech_ci", /* name */
"", /* comment */
czech, /* tailoring */
@@ -38188,7 +38183,7 @@ struct charset_info_st my_charset_utf16_danish_uca_ci=
{
112,0,0, /* number */
MY_CS_UTF16_UCA_FLAGS,/* state */
- "utf16", /* cs name */
+ charset_name_utf16, /* cs name */
"utf16_danish_ci", /* name */
"", /* comment */
danish, /* tailoring */
@@ -38220,7 +38215,7 @@ struct charset_info_st my_charset_utf16_lithuanian_uca_ci=
{
113,0,0, /* number */
MY_CS_UTF16_UCA_FLAGS,/* state */
- "utf16", /* cs name */
+ charset_name_utf16, /* cs name */
"utf16_lithuanian_ci",/* name */
"", /* comment */
lithuanian, /* tailoring */
@@ -38252,7 +38247,7 @@ struct charset_info_st my_charset_utf16_slovak_uca_ci=
{
114,0,0, /* number */
MY_CS_UTF16_UCA_FLAGS,/* state */
- "utf16", /* cs name */
+ charset_name_utf16, /* cs name */
"utf16_slovak_ci", /* name */
"", /* comment */
slovak, /* tailoring */
@@ -38284,7 +38279,7 @@ struct charset_info_st my_charset_utf16_spanish2_uca_ci=
{
115,0,0, /* number */
MY_CS_UTF16_UCA_FLAGS,/* state */
- "utf16", /* cs name */
+ charset_name_utf16, /* cs name */
"utf16_spanish2_ci",/* name */
"", /* comment */
spanish2, /* tailoring */
@@ -38316,7 +38311,7 @@ struct charset_info_st my_charset_utf16_roman_uca_ci=
{
116,0,0, /* number */
MY_CS_UTF16_UCA_FLAGS,/* state */
- "utf16", /* cs name */
+ charset_name_utf16, /* cs name */
"utf16_roman_ci", /* name */
"", /* comment */
roman, /* tailoring */
@@ -38348,7 +38343,7 @@ struct charset_info_st my_charset_utf16_persian_uca_ci=
{
117,0,0, /* number */
MY_CS_UTF16_UCA_FLAGS,/* state */
- "utf16", /* cs name */
+ charset_name_utf16, /* cs name */
"utf16_persian_ci", /* name */
"", /* comment */
persian, /* tailoring */
@@ -38380,7 +38375,7 @@ struct charset_info_st my_charset_utf16_esperanto_uca_ci=
{
118,0,0, /* number */
MY_CS_UTF16_UCA_FLAGS,/* state */
- "utf16", /* cs name */
+ charset_name_utf16, /* cs name */
"utf16_esperanto_ci",/* name */
"", /* comment */
esperanto, /* tailoring */
@@ -38412,7 +38407,7 @@ struct charset_info_st my_charset_utf16_hungarian_uca_ci=
{
119,0,0, /* number */
MY_CS_UTF16_UCA_FLAGS,/* state */
- "utf16", /* cs name */
+ charset_name_utf16, /* cs name */
"utf16_hungarian_ci",/* name */
"", /* comment */
hungarian, /* tailoring */
@@ -38444,7 +38439,7 @@ struct charset_info_st my_charset_utf16_sinhala_uca_ci=
{
120,0,0, /* number */
MY_CS_UTF16_UCA_FLAGS,/* state */
- "utf16", /* cs name */
+ charset_name_utf16, /* cs name */
"utf16_sinhala_ci",/* name */
"", /* comment */
sinhala, /* tailoring */
@@ -38476,7 +38471,7 @@ struct charset_info_st my_charset_utf16_german2_uca_ci=
{
121,0,0, /* number */
MY_CS_UTF16_UCA_FLAGS,/* state */
- "utf16", /* cs name */
+ charset_name_utf16, /* cs name */
"utf16_german2_ci",/* name */
"", /* comment */
german2, /* tailoring */
@@ -38509,7 +38504,7 @@ struct charset_info_st my_charset_utf16_croatian_mysql561_uca_ci=
{
122,0,0, /* number */
MY_CS_UTF16_UCA_FLAGS,/* state */
- "utf16", /* cs name */
+ charset_name_utf16, /* cs name */
"utf16_croatian_mysql561_ci",/* name */
"", /* comment */
croatian_mysql561, /* tailoring */
@@ -38542,7 +38537,7 @@ struct charset_info_st my_charset_utf16_croatian_uca_ci=
{
MY_PAGE2_COLLATION_ID_UTF16,0,0, /* number */
MY_CS_UTF16_UCA_FLAGS,/* state */
- "utf16", /* cs name */
+ charset_name_utf16, /* cs name */
"utf16_croatian_ci",/* name */
"", /* comment */
croatian_mariadb, /* tailoring */
@@ -38575,7 +38570,7 @@ struct charset_info_st my_charset_utf16_myanmar_uca_ci=
{
MY_PAGE2_COLLATION_ID_UTF16+1,0,0, /* number */
MY_CS_UTF16_UCA_FLAGS,/* state */
- "utf16", /* cs name */
+ charset_name_utf16, /* cs name */
"utf16_myanmar_ci",/* name */
"", /* comment */
myanmar, /* tailoring */
@@ -38608,7 +38603,7 @@ struct charset_info_st my_charset_utf16_thai_520_w2=
{
MY_PAGE2_COLLATION_ID_UTF16+2,0,0, /* number */
MY_CS_UTF16_UCA_FLAGS,/* state */
- "utf16", /* cs name */
+ charset_name_utf16, /* cs name */
"utf16_thai_520_w2",/* name */
"", /* comment */
"[strength 2]", /* tailoring */
@@ -38641,7 +38636,7 @@ struct charset_info_st my_charset_utf16_unicode_520_ci=
{
123,0,0, /* number */
MY_CS_UTF16_UCA_FLAGS,/* state */
- "utf16", /* csname */
+ charset_name_utf16, /* csname */
"utf16_unicode_520_ci",/* name */
"", /* comment */
"", /* tailoring */
@@ -38674,7 +38669,7 @@ struct charset_info_st my_charset_utf16_vietnamese_ci=
{
124,0,0, /* number */
MY_CS_UTF16_UCA_FLAGS,/* state */
- "utf16", /* cs name */
+ charset_name_utf16, /* cs name */
"utf16_vietnamese_ci",/* name */
"", /* comment */
vietnamese, /* tailoring */
@@ -38707,7 +38702,7 @@ struct charset_info_st my_charset_utf16_unicode_nopad_ci=
{
MY_NOPAD_ID(101),0,0, /* number */
MY_CS_UTF16_UCA_NOPAD_FLAGS, /* state */
- "utf16", /* csname */
+ charset_name_utf16, /* csname */
"utf16_unicode_nopad_ci", /* name */
"", /* comment */
"", /* tailoring */
@@ -38740,7 +38735,7 @@ struct charset_info_st my_charset_utf16_unicode_520_nopad_ci=
{
MY_NOPAD_ID(123),0,0, /* number */
MY_CS_UTF16_UCA_NOPAD_FLAGS, /* state */
- "utf16", /* csname */
+ charset_name_utf16, /* csname */
"utf16_unicode_520_nopad_ci",/* name */
"", /* comment */
"", /* tailoring */
diff --git a/strings/ctype-uca.inl b/strings/ctype-uca.inl
index 7c9d34d217e..ddc397ce212 100644
--- a/strings/ctype-uca.inl
+++ b/strings/ctype-uca.inl
@@ -1,5 +1,5 @@
/*
- Copyright (c) 2018 MariaDB Corporation
+ Copyright (c) 2018, 2020, MariaDB Corporation
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -500,7 +500,7 @@ MY_FUNCTION_NAME(strnncollsp_nchars_multilevel)(CHARSET_INFO *cs,
This functions is used for one-level and for multi-level collations.
We intentionally use only primary level in multi-level collations.
This helps to have PARTITION BY KEY put primarily equal records
- into the same partition. E.g. in utf8_thai_520_ci records that differ
+ into the same partition. E.g. in utf8mb3_thai_520_ci records that differ
only in tone marks go into the same partition.
RETURN
@@ -739,7 +739,7 @@ MY_FUNCTION_NAME(strnxfrm)(CHARSET_INFO *cs,
*/
if (flags & MY_STRXFRM_PAD_WITH_SPACE)
- srclen= cs->cset->lengthsp(cs, (const char*) src, srclen);
+ srclen= my_ci_lengthsp(cs, (const char*) src, srclen);
dst= MY_FUNCTION_NAME(strnxfrm_onelevel)(cs, &cs->uca->level[0],
dst, de, nweights,
src, srclen, flags);
diff --git a/strings/ctype-ucs2.c b/strings/ctype-ucs2.c
index 2e6b1239c0a..fd79a98e59a 100644
--- a/strings/ctype-ucs2.c
+++ b/strings/ctype-ucs2.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2003, 2013, Oracle and/or its affiliates
- Copyright (c) 2009, 2016, MariaDB
+ Copyright (c) 2009, 2020, MariaDB
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
@@ -35,7 +35,6 @@
#define HAVE_CHARSET_mb2_or_mb4
#endif
-
#ifndef EILSEQ
#define EILSEQ ENOENT
#endif
@@ -143,12 +142,12 @@ my_copy_incomplete_char(CHARSET_INFO *cs,
Make sure we didn't pad to an incorrect character.
*/
- if (cs->cset->charlen(cs, (uchar *) dst, (uchar *) dst + cs->mbminlen) ==
+ if (my_ci_charlen(cs, (uchar *) dst, (uchar *) dst + cs->mbminlen) ==
(int) cs->mbminlen)
return MY_CHAR_COPY_OK;
if (fix &&
- cs->cset->wc_mb(cs, '?', (uchar *) dst, (uchar *) dst + cs->mbminlen) ==
+ my_ci_wc_mb(cs, '?', (uchar *) dst, (uchar *) dst + cs->mbminlen) ==
(int) cs->mbminlen)
return MY_CHAR_COPY_FIXED;
@@ -733,7 +732,7 @@ my_l10tostr_mb2_or_mb4(CHARSET_INFO *cs,
for ( db= dst, de= dst + len ; (dst < de) && *p ; p++)
{
- int cnvres= cs->cset->wc_mb(cs,(my_wc_t)p[0],(uchar*) dst, (uchar*) de);
+ int cnvres= my_ci_wc_mb(cs, (my_wc_t) p[0], (uchar*) dst, (uchar*) de);
if (cnvres > 0)
dst+= cnvres;
else
@@ -796,7 +795,7 @@ cnv:
for ( db= dst, de= dst + len ; (dst < de) && *p ; p++)
{
- int cnvres= cs->cset->wc_mb(cs, (my_wc_t) p[0], (uchar*) dst, (uchar*) de);
+ int cnvres= my_ci_wc_mb(cs, (my_wc_t) p[0], (uchar*) dst, (uchar*) de);
if (cnvres > 0)
dst+= cnvres;
else
@@ -1057,7 +1056,7 @@ my_fill_mb2(CHARSET_INFO *cs, char *s, size_t slen, int fill)
DBUG_ASSERT((slen % 2) == 0);
- buflen= cs->cset->wc_mb(cs, (my_wc_t) fill, (uchar*) buf,
+ buflen= my_ci_wc_mb(cs, (my_wc_t) fill, (uchar*) buf,
(uchar*) buf + sizeof(buf));
DBUG_ASSERT(buflen > 0);
@@ -1281,6 +1280,7 @@ my_uni_utf16(CHARSET_INFO *cs __attribute__((unused)),
#ifdef HAVE_CHARSET_utf16
+const char charset_name_utf16le[]= "utf16le";
static inline void
my_tolower_utf16(MY_UNICASE_INFO *uni_plane, my_wc_t *wc)
@@ -1370,7 +1370,7 @@ static void
my_hash_sort_utf16(CHARSET_INFO *cs, const uchar *s, size_t slen,
ulong *nr1, ulong *nr2)
{
- size_t lengthsp= cs->cset->lengthsp(cs, (const char *) s, slen);
+ size_t lengthsp= my_ci_lengthsp(cs, (const char *) s, slen);
my_hash_sort_utf16_nopad(cs, s, lengthsp, nr1, nr2);
}
@@ -1405,7 +1405,7 @@ static int
my_charlen_utf16(CHARSET_INFO *cs, const uchar *str, const uchar *end)
{
my_wc_t wc;
- return cs->cset->mb_wc(cs, &wc, str, end);
+ return my_ci_mb_wc(cs, &wc, str, end);
}
@@ -1495,7 +1495,7 @@ static void
my_hash_sort_utf16_bin(CHARSET_INFO *cs,
const uchar *pos, size_t len, ulong *nr1, ulong *nr2)
{
- size_t lengthsp= cs->cset->lengthsp(cs, (const char *) pos, len);
+ size_t lengthsp= my_ci_lengthsp(cs, (const char *) pos, len);
my_hash_sort_utf16_nopad_bin(cs, pos, lengthsp, nr1, nr2);
}
@@ -1598,6 +1598,7 @@ MY_CHARSET_HANDLER my_charset_utf16_handler=
my_well_formed_char_length_utf16,
my_copy_fix_mb2_or_mb4,
my_uni_utf16,
+ my_wc_to_printable_generic
};
@@ -1605,7 +1606,7 @@ struct charset_info_st my_charset_utf16_general_ci=
{
54,0,0, /* number */
MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
- "utf16", /* cs name */
+ charset_name_utf16, /* cs name */
"utf16_general_ci", /* name */
"UTF-16 Unicode", /* comment */
NULL, /* tailoring */
@@ -1638,7 +1639,7 @@ struct charset_info_st my_charset_utf16_bin=
{
55,0,0, /* number */
MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
- "utf16", /* cs name */
+ charset_name_utf16, /* cs name */
"utf16_bin", /* name */
"UTF-16 Unicode", /* comment */
NULL, /* tailoring */
@@ -1671,7 +1672,7 @@ struct charset_info_st my_charset_utf16_general_nopad_ci=
{
MY_NOPAD_ID(54),0,0, /* number */
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII|MY_CS_NOPAD,
- "utf16", /* cs name */
+ charset_name_utf16, /* cs name */
"utf16_general_nopad_ci", /* name */
"UTF-16 Unicode", /* comment */
NULL, /* tailoring */
@@ -1705,7 +1706,7 @@ struct charset_info_st my_charset_utf16_nopad_bin=
MY_NOPAD_ID(55),0,0, /* number */
MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII|
MY_CS_NOPAD,
- "utf16", /* cs name */
+ charset_name_utf16, /* cs name */
"utf16_nopad_bin", /* name */
"UTF-16 Unicode", /* comment */
NULL, /* tailoring */
@@ -1740,7 +1741,7 @@ struct charset_info_st my_charset_utf16_nopad_bin=
#define MY_FUNCTION_NAME(x) my_ ## x ## _utf16le_general_ci
#define DEFINE_STRNXFRM_UNICODE
#define DEFINE_STRNXFRM_UNICODE_NOPAD
-#define MY_MB_WC(cs, pwc, s, e) (cs->cset->mb_wc(cs, pwc, s, e))
+#define MY_MB_WC(cs, pwc, s, e) (my_ci_mb_wc(cs, pwc, s, e))
#define OPTIMIZE_ASCII 0
#define UNICASE_MAXCHAR MY_UNICASE_INFO_DEFAULT_MAXCHAR
#define UNICASE_PAGE0 my_unicase_default_page00
@@ -1942,6 +1943,7 @@ static MY_CHARSET_HANDLER my_charset_utf16le_handler=
my_well_formed_char_length_utf16,
my_copy_fix_mb2_or_mb4,
my_uni_utf16le,
+ my_wc_to_printable_generic
};
@@ -1949,7 +1951,7 @@ struct charset_info_st my_charset_utf16le_general_ci=
{
56,0,0, /* number */
MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
- "utf16le", /* cs name */
+ charset_name_utf16le, /* cs name */
"utf16le_general_ci",/* name */
"UTF-16LE Unicode", /* comment */
NULL, /* tailoring */
@@ -1982,7 +1984,7 @@ struct charset_info_st my_charset_utf16le_bin=
{
62,0,0, /* number */
MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
- "utf16le", /* cs name */
+ charset_name_utf16le, /* cs name */
"utf16le_bin", /* name */
"UTF-16LE Unicode", /* comment */
NULL, /* tailoring */
@@ -2015,7 +2017,7 @@ struct charset_info_st my_charset_utf16le_general_nopad_ci=
{
MY_NOPAD_ID(56),0,0, /* number */
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII|MY_CS_NOPAD,
- "utf16le", /* cs name */
+ charset_name_utf16le, /* cs name */
"utf16le_general_nopad_ci",/* name */
"UTF-16LE Unicode", /* comment */
NULL, /* tailoring */
@@ -2049,7 +2051,7 @@ struct charset_info_st my_charset_utf16le_nopad_bin=
MY_NOPAD_ID(62),0,0, /* number */
MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII|
MY_CS_NOPAD,
- "utf16le", /* cs name */
+ charset_name_utf16le, /* cs name */
"utf16le_nopad_bin", /* name */
"UTF-16LE Unicode", /* comment */
NULL, /* tailoring */
@@ -2613,8 +2615,7 @@ void my_fill_utf32(CHARSET_INFO *cs,
#ifdef DBUG_ASSERT_EXISTS
buflen=
#endif
- cs->cset->wc_mb(cs, (my_wc_t) fill, (uchar*) buf,
- (uchar*) buf + sizeof(buf));
+ my_ci_wc_mb(cs, (my_wc_t) fill, (uchar*) buf, (uchar*) buf + sizeof(buf));
DBUG_ASSERT(buflen == 4);
while (s < e)
{
@@ -2772,6 +2773,7 @@ MY_CHARSET_HANDLER my_charset_utf32_handler=
my_well_formed_char_length_utf32,
my_copy_fix_mb2_or_mb4,
my_uni_utf32,
+ my_wc_to_printable_generic
};
@@ -2779,7 +2781,7 @@ struct charset_info_st my_charset_utf32_general_ci=
{
60,0,0, /* number */
MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
- "utf32", /* cs name */
+ charset_name_utf32, /* cs name */
"utf32_general_ci", /* name */
"UTF-32 Unicode", /* comment */
NULL, /* tailoring */
@@ -2812,7 +2814,7 @@ struct charset_info_st my_charset_utf32_bin=
{
61,0,0, /* number */
MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
- "utf32", /* cs name */
+ charset_name_utf32, /* cs name */
"utf32_bin", /* name */
"UTF-32 Unicode", /* comment */
NULL, /* tailoring */
@@ -2845,7 +2847,7 @@ struct charset_info_st my_charset_utf32_general_nopad_ci=
{
MY_NOPAD_ID(60),0,0, /* number */
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII|MY_CS_NOPAD,
- "utf32", /* cs name */
+ charset_name_utf32, /* cs name */
"utf32_general_nopad_ci", /* name */
"UTF-32 Unicode", /* comment */
NULL, /* tailoring */
@@ -2879,7 +2881,7 @@ struct charset_info_st my_charset_utf32_nopad_bin=
MY_NOPAD_ID(61),0,0, /* number */
MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII|
MY_CS_NOPAD,
- "utf32", /* cs name */
+ charset_name_utf32, /* cs name */
"utf32_nopad_bin", /* name */
"UTF-32 Unicode", /* comment */
NULL, /* tailoring */
@@ -3366,6 +3368,7 @@ MY_CHARSET_HANDLER my_charset_ucs2_handler=
my_well_formed_char_length_ucs2,
my_copy_fix_mb2_or_mb4,
my_uni_ucs2,
+ my_wc_to_printable_generic
};
@@ -3373,7 +3376,7 @@ struct charset_info_st my_charset_ucs2_general_ci=
{
35,0,0, /* number */
MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
- "ucs2", /* cs name */
+ charset_name_ucs2, /* cs name */
"ucs2_general_ci", /* name */
"", /* comment */
NULL, /* tailoring */
@@ -3406,7 +3409,7 @@ struct charset_info_st my_charset_ucs2_general_mysql500_ci=
{
159, 0, 0, /* number */
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII, /* state */
- "ucs2", /* cs name */
+ charset_name_ucs2, /* cs name */
"ucs2_general_mysql500_ci", /* name */
"", /* comment */
NULL, /* tailoring */
@@ -3439,7 +3442,7 @@ struct charset_info_st my_charset_ucs2_bin=
{
90,0,0, /* number */
MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_UNICODE|MY_CS_NONASCII,
- "ucs2", /* cs name */
+ charset_name_ucs2, /* cs name */
"ucs2_bin", /* name */
"", /* comment */
NULL, /* tailoring */
@@ -3472,7 +3475,7 @@ struct charset_info_st my_charset_ucs2_general_nopad_ci=
{
MY_NOPAD_ID(35),0,0, /* number */
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII|MY_CS_NOPAD,
- "ucs2", /* cs name */
+ charset_name_ucs2, /* cs name */
"ucs2_general_nopad_ci", /* name */
"", /* comment */
NULL, /* tailoring */
@@ -3505,7 +3508,7 @@ struct charset_info_st my_charset_ucs2_nopad_bin=
{
MY_NOPAD_ID(90),0,0, /* number */
MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_UNICODE|MY_CS_NONASCII|MY_CS_NOPAD,
- "ucs2", /* cs name */
+ charset_name_ucs2, /* cs name */
"ucs2_nopad_bin", /* name */
"", /* comment */
NULL, /* tailoring */
diff --git a/strings/ctype-ujis.c b/strings/ctype-ujis.c
index 356c1fc092c..42e2a5cdd15 100644
--- a/strings/ctype-ujis.c
+++ b/strings/ctype-ujis.c
@@ -32,6 +32,7 @@
#ifdef HAVE_CHARSET_ujis
+const char charset_name_ujis[]= "ujis";
static const uchar ctype_ujis[257] =
{
@@ -67332,6 +67333,7 @@ static MY_CHARSET_HANDLER my_charset_handler=
my_well_formed_char_length_ujis,
my_copy_fix_mb,
my_native_to_mb_ujis,
+ my_wc_to_printable_generic
};
@@ -67340,7 +67342,7 @@ struct charset_info_st my_charset_ujis_japanese_ci=
{
12,0,0, /* number */
MY_CS_COMPILED|MY_CS_PRIMARY, /* state */
- "ujis", /* cs name */
+ charset_name_ujis, /* cs name */
"ujis_japanese_ci", /* name */
"", /* comment */
NULL, /* tailoring */
@@ -67373,7 +67375,7 @@ struct charset_info_st my_charset_ujis_bin=
{
91,0,0, /* number */
MY_CS_COMPILED|MY_CS_BINSORT, /* state */
- "ujis", /* cs name */
+ charset_name_ujis, /* cs name */
"ujis_bin", /* name */
"", /* comment */
NULL, /* tailoring */
@@ -67406,7 +67408,7 @@ struct charset_info_st my_charset_ujis_japanese_nopad_ci=
{
MY_NOPAD_ID(12),0,0,/* number */
MY_CS_COMPILED|MY_CS_NOPAD, /* state */
- "ujis", /* cs name */
+ charset_name_ujis, /* cs name */
"ujis_japanese_nopad_ci", /* name */
"", /* comment */
NULL, /* tailoring */
@@ -67439,7 +67441,7 @@ struct charset_info_st my_charset_ujis_nopad_bin=
{
MY_NOPAD_ID(91),0,0,/* number */
MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, /* state */
- "ujis", /* cs name */
+ charset_name_ujis, /* cs name */
"ujis_nopad_bin", /* name */
"", /* comment */
NULL, /* tailoring */
diff --git a/strings/ctype-utf8.c b/strings/ctype-utf8.c
index 69ebb6b523e..b119826b4cc 100644
--- a/strings/ctype-utf8.c
+++ b/strings/ctype-utf8.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2000, 2013, Oracle and/or its affiliates.
- Copyright (c) 2009, 2017, MariaDB
+ Copyright (c) 2009, 2020, MariaDB
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
@@ -49,11 +49,11 @@
-#ifndef HAVE_CHARSET_utf8
-#define HAVE_CHARSET_utf8
+#ifndef HAVE_CHARSET_utf8mb3
+#define HAVE_CHARSET_utf8mb3
#endif
-#ifdef HAVE_CHARSET_utf8
+#ifdef HAVE_CHARSET_utf8mb3
#define HAVE_UNIDATA
#endif
@@ -70,7 +70,7 @@
#endif
-#if defined(HAVE_CHARSET_utf8) || defined(HAVE_CHARSET_utf8mb4)
+#if defined(HAVE_CHARSET_utf8mb3) || defined(HAVE_CHARSET_utf8mb4)
static inline
int my_valid_mbcharlen_utf8mb3(const uchar *s, const uchar *e)
@@ -106,7 +106,7 @@ int my_valid_mbcharlen_utf8mb3(const uchar *s, const uchar *e)
return 3;
}
-#endif /*HAVE_CHARSET_utf8 || HAVE_CHARSET_utf8mb4*/
+#endif /*HAVE_CHARSET_utf8mb3 || HAVE_CHARSET_utf8mb4*/
#ifdef HAVE_UNIDATA
@@ -1737,7 +1737,7 @@ MY_UNICASE_INFO my_unicase_default=
/*
- Reproduce old utf8_general_ci behaviour before we fixed Bug#27877.
+ Reproduce old utf8mb3_general_ci behaviour before we fixed Bug#27877.
*/
MY_UNICASE_CHARACTER *my_unicase_pages_mysql500[256]={
plane00_mysql500,
@@ -4647,7 +4647,7 @@ my_strnxfrm_unicode_full_bin_internal(CHARSET_INFO *cs,
for (; dst < de && *nweights; (*nweights)--)
{
int res;
- if ((res= cs->cset->mb_wc(cs, &wc, src, se)) <= 0)
+ if ((res= my_ci_mb_wc(cs, &wc, src, se)) <= 0)
break;
src+= res;
*dst++= (uchar) (wc >> 16);
@@ -4750,7 +4750,7 @@ my_strnxfrmlen_unicode_full_bin(CHARSET_INFO *cs, size_t len)
#endif /* HAVE_UNIDATA */
-#ifdef HAVE_CHARSET_utf8
+#ifdef HAVE_CHARSET_utf8mb3
/*
We consider bytes with code more than 127 as a letter.
@@ -4758,7 +4758,7 @@ my_strnxfrmlen_unicode_full_bin(CHARSET_INFO *cs, size_t len)
expressions. Note, there is no need to mark byte 255 as a
letter, it is illegal byte in UTF8.
*/
-static const uchar ctype_utf8[] = {
+static const uchar ctype_utf8mb3[] = {
0,
32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 40, 40, 40, 40, 32, 32,
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
@@ -4780,7 +4780,7 @@ static const uchar ctype_utf8[] = {
/* The below are taken from usa7 implementation */
-static const uchar to_lower_utf8[] = {
+static const uchar to_lower_utf8mb3[] = {
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
@@ -4799,7 +4799,7 @@ static const uchar to_lower_utf8[] = {
240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
};
-static const uchar to_upper_utf8[] = {
+static const uchar to_upper_utf8mb3[] = {
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
@@ -4818,8 +4818,8 @@ static const uchar to_upper_utf8[] = {
240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
};
-static int my_utf8_uni(CHARSET_INFO *cs __attribute__((unused)),
- my_wc_t * pwc, const uchar *s, const uchar *e)
+static int my_utf8mb3_uni(CHARSET_INFO *cs __attribute__((unused)),
+ my_wc_t * pwc, const uchar *s, const uchar *e)
{
return my_mb_wc_utf8mb3_quick(pwc, s, e);
}
@@ -4829,8 +4829,8 @@ static int my_utf8_uni(CHARSET_INFO *cs __attribute__((unused)),
The same as above, but without range check
for example, for a null-terminated string
*/
-static int my_utf8_uni_no_range(CHARSET_INFO *cs __attribute__((unused)),
- my_wc_t * pwc, const uchar *s)
+static int my_utf8mb3_uni_no_range(CHARSET_INFO *cs __attribute__((unused)),
+ my_wc_t * pwc, const uchar *s)
{
uchar c;
@@ -4865,8 +4865,8 @@ static int my_utf8_uni_no_range(CHARSET_INFO *cs __attribute__((unused)),
}
-static int my_uni_utf8 (CHARSET_INFO *cs __attribute__((unused)),
- my_wc_t wc, uchar *r, uchar *e)
+static int my_uni_utf8mb3(CHARSET_INFO *cs __attribute__((unused)),
+ my_wc_t wc, uchar *r, uchar *e)
{
if (wc < 0x80)
{
@@ -4901,8 +4901,8 @@ static int my_uni_utf8 (CHARSET_INFO *cs __attribute__((unused)),
/*
The same as above, but without range check.
*/
-static int my_uni_utf8_no_range(CHARSET_INFO *cs __attribute__((unused)),
- my_wc_t wc, uchar *r)
+static int my_uni_utf8mb3_no_range(CHARSET_INFO *cs __attribute__((unused)),
+ my_wc_t wc, uchar *r)
{
int count;
@@ -4945,8 +4945,9 @@ my_toupper_utf8mb3(MY_UNICASE_INFO *uni_plane, my_wc_t *wc)
}
-static size_t my_caseup_utf8(CHARSET_INFO *cs, const char *src, size_t srclen,
- char *dst, size_t dstlen)
+static size_t my_caseup_utf8mb3(CHARSET_INFO *cs,
+ const char *src, size_t srclen,
+ char *dst, size_t dstlen)
{
my_wc_t wc;
int srcres, dstres;
@@ -4956,10 +4957,10 @@ static size_t my_caseup_utf8(CHARSET_INFO *cs, const char *src, size_t srclen,
DBUG_ASSERT(src != dst || cs->caseup_multiply == 1);
while ((src < srcend) &&
- (srcres= my_utf8_uni(cs, &wc, (uchar *) src, (uchar*) srcend)) > 0)
+ (srcres= my_utf8mb3_uni(cs, &wc, (uchar *) src, (uchar*) srcend)) > 0)
{
my_toupper_utf8mb3(uni_plane, &wc);
- if ((dstres= my_uni_utf8(cs, wc, (uchar*) dst, (uchar*) dstend)) <= 0)
+ if ((dstres= my_uni_utf8mb3(cs, wc, (uchar*) dst, (uchar*) dstend)) <= 0)
break;
src+= srcres;
dst+= dstres;
@@ -4977,7 +4978,7 @@ static void my_hash_sort_utf8mb3_nopad(CHARSET_INFO *cs, const uchar *s, size_t
MY_UNICASE_INFO *uni_plane= cs->caseinfo;
register ulong m1= *nr1, m2= *nr2;
- while ((s < e) && (res=my_utf8_uni(cs,&wc, (uchar *)s, (uchar*)e))>0 )
+ while ((s < e) && (res=my_utf8mb3_uni(cs,&wc, (uchar *)s, (uchar*)e))>0 )
{
my_tosort_unicode(uni_plane, &wc, cs->state);
MY_HASH_ADD_16(m1, m2, wc);
@@ -5000,7 +5001,7 @@ static void my_hash_sort_utf8mb3(CHARSET_INFO *cs, const uchar *s, size_t slen,
}
-static size_t my_caseup_str_utf8(CHARSET_INFO *cs, char *src)
+static size_t my_caseup_str_utf8mb3(CHARSET_INFO *cs, char *src)
{
my_wc_t wc;
int srcres, dstres;
@@ -5009,10 +5010,10 @@ static size_t my_caseup_str_utf8(CHARSET_INFO *cs, char *src)
DBUG_ASSERT(cs->caseup_multiply == 1);
while (*src &&
- (srcres= my_utf8_uni_no_range(cs, &wc, (uchar *) src)) > 0)
+ (srcres= my_utf8mb3_uni_no_range(cs, &wc, (uchar *) src)) > 0)
{
my_toupper_utf8mb3(uni_plane, &wc);
- if ((dstres= my_uni_utf8_no_range(cs, wc, (uchar*) dst)) <= 0)
+ if ((dstres= my_uni_utf8mb3_no_range(cs, wc, (uchar*) dst)) <= 0)
break;
src+= srcres;
dst+= dstres;
@@ -5022,8 +5023,9 @@ static size_t my_caseup_str_utf8(CHARSET_INFO *cs, char *src)
}
-static size_t my_casedn_utf8(CHARSET_INFO *cs, const char *src, size_t srclen,
- char *dst, size_t dstlen)
+static size_t my_casedn_utf8mb3(CHARSET_INFO *cs,
+ const char *src, size_t srclen,
+ char *dst, size_t dstlen)
{
my_wc_t wc;
int srcres, dstres;
@@ -5033,10 +5035,10 @@ static size_t my_casedn_utf8(CHARSET_INFO *cs, const char *src, size_t srclen,
DBUG_ASSERT(src != dst || cs->casedn_multiply == 1);
while ((src < srcend) &&
- (srcres= my_utf8_uni(cs, &wc, (uchar*) src, (uchar*)srcend)) > 0)
+ (srcres= my_utf8mb3_uni(cs, &wc, (uchar*) src, (uchar*)srcend)) > 0)
{
my_tolower_utf8mb3(uni_plane, &wc);
- if ((dstres= my_uni_utf8(cs, wc, (uchar*) dst, (uchar*) dstend)) <= 0)
+ if ((dstres= my_uni_utf8mb3(cs, wc, (uchar*) dst, (uchar*) dstend)) <= 0)
break;
src+= srcres;
dst+= dstres;
@@ -5045,7 +5047,7 @@ static size_t my_casedn_utf8(CHARSET_INFO *cs, const char *src, size_t srclen,
}
-static size_t my_casedn_str_utf8(CHARSET_INFO *cs, char *src)
+static size_t my_casedn_str_utf8mb3(CHARSET_INFO *cs, char *src)
{
my_wc_t wc;
int srcres, dstres;
@@ -5054,10 +5056,10 @@ static size_t my_casedn_str_utf8(CHARSET_INFO *cs, char *src)
DBUG_ASSERT(cs->casedn_multiply == 1);
while (*src &&
- (srcres= my_utf8_uni_no_range(cs, &wc, (uchar *) src)) > 0)
+ (srcres= my_utf8mb3_uni_no_range(cs, &wc, (uchar *) src)) > 0)
{
my_tolower_utf8mb3(uni_plane, &wc);
- if ((dstres= my_uni_utf8_no_range(cs, wc, (uchar*) dst)) <= 0)
+ if ((dstres= my_uni_utf8mb3_no_range(cs, wc, (uchar*) dst)) <= 0)
break;
src+= srcres;
dst+= dstres;
@@ -5068,12 +5070,12 @@ static size_t my_casedn_str_utf8(CHARSET_INFO *cs, char *src)
the original string, for example:
"U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE"
- (which is 0xC4B0 in utf8, i.e. two bytes)
+ (which is 0xC4B0 in utf8mb3, i.e. two bytes)
is converted into
"U+0069 LATIN SMALL LETTER I"
- (which is 0x69 in utf8, i.e. one byte)
+ (which is 0x69 in utf8mb3, i.e. one byte)
So, we need to put '\0' terminator after converting.
*/
@@ -5087,7 +5089,7 @@ static size_t my_casedn_str_utf8(CHARSET_INFO *cs, char *src)
Compare 0-terminated UTF8 strings.
SYNOPSIS
- my_strcasecmp_utf8()
+ my_strcasecmp_utf8mb3()
cs character set handler
s First 0-terminated string to compare
t Second 0-terminated string to compare
@@ -5101,7 +5103,7 @@ static size_t my_casedn_str_utf8(CHARSET_INFO *cs, char *src)
*/
static
-int my_strcasecmp_utf8(CHARSET_INFO *cs, const char *s, const char *t)
+int my_strcasecmp_utf8mb3(CHARSET_INFO *cs, const char *s, const char *t)
{
MY_UNICASE_INFO *uni_plane= cs->caseinfo;
while (s[0] && t[0])
@@ -5125,19 +5127,19 @@ int my_strcasecmp_utf8(CHARSET_INFO *cs, const char *s, const char *t)
/*
Scan a multibyte character.
- In the future it is worth to write a special version of my_utf8_uni()
+ In the future it is worth to write a special version of my_utf8mb3_uni()
for 0-terminated strings which will not take in account length. Now
- we call the regular version of my_utf8_uni() with s+3 in the
+ we call the regular version of my_utf8mb3_uni() with s+3 in the
last argument. s+3 is enough to scan any multibyte sequence.
- Calling the regular version of my_utf8_uni is safe for 0-terminated
+ Calling the regular version of my_utf8mb3_uni is safe for 0-terminated
strings: we will never lose the end of the string:
If we have 0 character in the middle of a multibyte sequence,
- then my_utf8_uni will always return a negative number, so the
+ then my_utf8mb3_uni will always return a negative number, so the
loop with finish.
*/
- res= my_utf8_uni(cs,&s_wc, (const uchar*)s, (const uchar*) s + 3);
+ res= my_utf8mb3_uni(cs,&s_wc, (const uchar*)s, (const uchar*) s + 3);
/*
In the case of wrong multibyte sequence we will
@@ -5162,7 +5164,7 @@ int my_strcasecmp_utf8(CHARSET_INFO *cs, const char *s, const char *t)
}
else
{
- int res=my_utf8_uni(cs,&t_wc, (const uchar*)t, (const uchar*) t + 3);
+ int res=my_utf8mb3_uni(cs,&t_wc, (const uchar*)t, (const uchar*) t + 3);
if (res <= 0)
return strcmp(s, t);
t+= res;
@@ -5180,10 +5182,10 @@ int my_strcasecmp_utf8(CHARSET_INFO *cs, const char *s, const char *t)
static
-int my_wildcmp_utf8(CHARSET_INFO *cs,
- const char *str,const char *str_end,
- const char *wildstr,const char *wildend,
- int escape, int w_one, int w_many)
+int my_wildcmp_utf8mb3(CHARSET_INFO *cs,
+ const char *str,const char *str_end,
+ const char *wildstr,const char *wildend,
+ int escape, int w_one, int w_many)
{
MY_UNICASE_INFO *uni_plane= cs->caseinfo;
return my_wildcmp_unicode(cs,str,str_end,wildstr,wildend,
@@ -5192,8 +5194,8 @@ int my_wildcmp_utf8(CHARSET_INFO *cs,
static
-int my_charlen_utf8(CHARSET_INFO *cs __attribute__((unused)),
- const uchar *s, const uchar *e)
+int my_charlen_utf8mb3(CHARSET_INFO *cs __attribute__((unused)),
+ const uchar *s, const uchar *e)
{
uchar c;
@@ -5208,23 +5210,23 @@ int my_charlen_utf8(CHARSET_INFO *cs __attribute__((unused)),
}
-#define MY_FUNCTION_NAME(x) my_ ## x ## _utf8
-#define CHARLEN(cs,str,end) my_charlen_utf8(cs,str,end)
+#define MY_FUNCTION_NAME(x) my_ ## x ## _utf8mb3
+#define CHARLEN(cs,str,end) my_charlen_utf8mb3(cs,str,end)
#define DEFINE_WELL_FORMED_CHAR_LENGTH_USING_CHARLEN
#include "ctype-mb.inl"
#undef MY_FUNCTION_NAME
#undef CHARLEN
#undef DEFINE_WELL_FORMED_CHAR_LENGTH_USING_CHARLEN
-/* my_well_formed_char_length_utf8 */
+/* my_well_formed_char_length_utf8mb3 */
-static inline int my_weight_mb1_utf8_general_ci(uchar b)
+static inline int my_weight_mb1_utf8mb3_general_ci(uchar b)
{
return (int) my_unicase_default_page00[b & 0xFF].sort;
}
-static inline int my_weight_mb2_utf8_general_ci(uchar b0, uchar b1)
+static inline int my_weight_mb2_utf8mb3_general_ci(uchar b0, uchar b1)
{
my_wc_t wc= UTF8MB2_CODE(b0, b1);
MY_UNICASE_CHARACTER *page= my_unicase_default_pages[wc >> 8];
@@ -5232,7 +5234,7 @@ static inline int my_weight_mb2_utf8_general_ci(uchar b0, uchar b1)
}
-static inline int my_weight_mb3_utf8_general_ci(uchar b0, uchar b1, uchar b2)
+static inline int my_weight_mb3_utf8mb3_general_ci(uchar b0, uchar b1, uchar b2)
{
my_wc_t wc= UTF8MB3_CODE(b0, b1, b2);
MY_UNICASE_CHARACTER *page= my_unicase_default_pages[wc >> 8];
@@ -5240,7 +5242,7 @@ static inline int my_weight_mb3_utf8_general_ci(uchar b0, uchar b1, uchar b2)
}
-#define MY_FUNCTION_NAME(x) my_ ## x ## _utf8_general_ci
+#define MY_FUNCTION_NAME(x) my_ ## x ## _utf8mb3_general_ci
#define DEFINE_STRNXFRM_UNICODE
#define DEFINE_STRNXFRM_UNICODE_NOPAD
#define MY_MB_WC(cs, pwc, s, e) my_mb_wc_utf8mb3_quick(pwc, s, e)
@@ -5249,28 +5251,28 @@ static inline int my_weight_mb3_utf8_general_ci(uchar b0, uchar b1, uchar b2)
#define UNICASE_PAGE0 my_unicase_default_page00
#define UNICASE_PAGES my_unicase_default_pages
#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
-#define WEIGHT_MB1(x) my_weight_mb1_utf8_general_ci(x)
-#define WEIGHT_MB2(x,y) my_weight_mb2_utf8_general_ci(x,y)
-#define WEIGHT_MB3(x,y,z) my_weight_mb3_utf8_general_ci(x,y,z)
+#define WEIGHT_MB1(x) my_weight_mb1_utf8mb3_general_ci(x)
+#define WEIGHT_MB2(x,y) my_weight_mb2_utf8mb3_general_ci(x,y)
+#define WEIGHT_MB3(x,y,z) my_weight_mb3_utf8mb3_general_ci(x,y,z)
#include "strcoll.inl"
#define DEFINE_STRNNCOLLSP_NOPAD
-#define MY_FUNCTION_NAME(x) my_ ## x ## _utf8_general_nopad_ci
+#define MY_FUNCTION_NAME(x) my_ ## x ## _utf8mb3_general_nopad_ci
#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
-#define WEIGHT_MB1(x) my_weight_mb1_utf8_general_ci(x)
-#define WEIGHT_MB2(x,y) my_weight_mb2_utf8_general_ci(x,y)
-#define WEIGHT_MB3(x,y,z) my_weight_mb3_utf8_general_ci(x,y,z)
+#define WEIGHT_MB1(x) my_weight_mb1_utf8mb3_general_ci(x)
+#define WEIGHT_MB2(x,y) my_weight_mb2_utf8mb3_general_ci(x,y)
+#define WEIGHT_MB3(x,y,z) my_weight_mb3_utf8mb3_general_ci(x,y,z)
#include "strcoll.inl"
-static inline int my_weight_mb1_utf8_general_mysql500_ci(uchar b)
+static inline int my_weight_mb1_utf8mb3_general_mysql500_ci(uchar b)
{
return (int) plane00_mysql500[b & 0xFF].sort;
}
-static inline int my_weight_mb2_utf8_general_mysql500_ci(uchar b0, uchar b1)
+static inline int my_weight_mb2_utf8mb3_general_mysql500_ci(uchar b0, uchar b1)
{
my_wc_t wc= UTF8MB2_CODE(b0, b1);
MY_UNICASE_CHARACTER *page= my_unicase_pages_mysql500[wc >> 8];
@@ -5279,7 +5281,7 @@ static inline int my_weight_mb2_utf8_general_mysql500_ci(uchar b0, uchar b1)
static inline int
-my_weight_mb3_utf8_general_mysql500_ci(uchar b0, uchar b1, uchar b2)
+my_weight_mb3_utf8mb3_general_mysql500_ci(uchar b0, uchar b1, uchar b2)
{
my_wc_t wc= UTF8MB3_CODE(b0, b1, b2);
MY_UNICASE_CHARACTER *page= my_unicase_pages_mysql500[wc >> 8];
@@ -5287,7 +5289,7 @@ my_weight_mb3_utf8_general_mysql500_ci(uchar b0, uchar b1, uchar b2)
}
-#define MY_FUNCTION_NAME(x) my_ ## x ## _utf8_general_mysql500_ci
+#define MY_FUNCTION_NAME(x) my_ ## x ## _utf8mb3_general_mysql500_ci
#define DEFINE_STRNXFRM_UNICODE
#define MY_MB_WC(cs, pwc, s, e) my_mb_wc_utf8mb3_quick(pwc, s, e)
#define OPTIMIZE_ASCII 1
@@ -5295,13 +5297,13 @@ my_weight_mb3_utf8_general_mysql500_ci(uchar b0, uchar b1, uchar b2)
#define UNICASE_PAGE0 plane00_mysql500
#define UNICASE_PAGES my_unicase_pages_mysql500
#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
-#define WEIGHT_MB1(x) my_weight_mb1_utf8_general_mysql500_ci(x)
-#define WEIGHT_MB2(x,y) my_weight_mb2_utf8_general_mysql500_ci(x,y)
-#define WEIGHT_MB3(x,y,z) my_weight_mb3_utf8_general_mysql500_ci(x,y,z)
+#define WEIGHT_MB1(x) my_weight_mb1_utf8mb3_general_mysql500_ci(x)
+#define WEIGHT_MB2(x,y) my_weight_mb2_utf8mb3_general_mysql500_ci(x,y)
+#define WEIGHT_MB3(x,y,z) my_weight_mb3_utf8mb3_general_mysql500_ci(x,y,z)
#include "strcoll.inl"
-#define MY_FUNCTION_NAME(x) my_ ## x ## _utf8_bin
+#define MY_FUNCTION_NAME(x) my_ ## x ## _utf8mb3_bin
#define DEFINE_STRNXFRM_UNICODE_BIN2
#define MY_MB_WC(cs, pwc, s, e) my_mb_wc_utf8mb3_quick(pwc, s, e)
#define OPTIMIZE_ASCII 1
@@ -5313,7 +5315,7 @@ my_weight_mb3_utf8_general_mysql500_ci(uchar b0, uchar b1, uchar b2)
#define DEFINE_STRNNCOLLSP_NOPAD
-#define MY_FUNCTION_NAME(x) my_ ## x ## _utf8_nopad_bin
+#define MY_FUNCTION_NAME(x) my_ ## x ## _utf8mb3_nopad_bin
#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
#define WEIGHT_MB1(x) ((int) (uchar) (x))
#define WEIGHT_MB2(x,y) ((int) UTF8MB2_CODE(x,y))
@@ -5324,11 +5326,11 @@ my_weight_mb3_utf8_general_mysql500_ci(uchar b0, uchar b1, uchar b2)
TODO-10.2: join this with pad_max_char() in ctype-mb.c
*/
static void
-my_fill_utf8_mb(CHARSET_INFO *cs, char *str, size_t length, int fill)
+my_fill_utf8mb3_mb(CHARSET_INFO *cs, char *str, size_t length, int fill)
{
char *end= str + length;
char buf[10];
- char buflen= cs->cset->native_to_mb(cs, (my_wc_t) fill, (uchar*) buf,
+ char buflen= my_ci_native_to_mb(cs, (my_wc_t) fill, (uchar*) buf,
(uchar*) buf + sizeof(buf));
DBUG_ASSERT(buflen > 0);
for ( ; str + buflen <= end ; )
@@ -5343,56 +5345,56 @@ my_fill_utf8_mb(CHARSET_INFO *cs, char *str, size_t length, int fill)
static void
-my_fill_utf8(CHARSET_INFO *cs, char *str, size_t length, int fill)
+my_fill_utf8mb3(CHARSET_INFO *cs, char *str, size_t length, int fill)
{
if (fill < 0x80)
my_fill_8bit(cs, str, length, fill);
else
- my_fill_utf8_mb(cs, str, length, fill);
+ my_fill_utf8mb3_mb(cs, str, length, fill);
}
-static MY_COLLATION_HANDLER my_collation_utf8_general_ci_handler =
+static MY_COLLATION_HANDLER my_collation_utf8mb3_general_ci_handler =
{
NULL, /* init */
- my_strnncoll_utf8_general_ci,
- my_strnncollsp_utf8_general_ci,
- my_strnncollsp_nchars_utf8_general_ci,
- my_strnxfrm_utf8_general_ci,
+ my_strnncoll_utf8mb3_general_ci,
+ my_strnncollsp_utf8mb3_general_ci,
+ my_strnncollsp_nchars_utf8mb3_general_ci,
+ my_strnxfrm_utf8mb3_general_ci,
my_strnxfrmlen_unicode,
my_like_range_mb,
- my_wildcmp_utf8,
- my_strcasecmp_utf8,
+ my_wildcmp_utf8mb3,
+ my_strcasecmp_utf8mb3,
my_instr_mb,
my_hash_sort_utf8mb3,
my_propagate_complex
};
-static MY_COLLATION_HANDLER my_collation_utf8_general_mysql500_ci_handler =
+static MY_COLLATION_HANDLER my_collation_utf8mb3_general_mysql500_ci_handler =
{
NULL, /* init */
- my_strnncoll_utf8_general_mysql500_ci,
- my_strnncollsp_utf8_general_mysql500_ci,
- my_strnncollsp_nchars_utf8_general_mysql500_ci,
- my_strnxfrm_utf8_general_mysql500_ci,
+ my_strnncoll_utf8mb3_general_mysql500_ci,
+ my_strnncollsp_utf8mb3_general_mysql500_ci,
+ my_strnncollsp_nchars_utf8mb3_general_mysql500_ci,
+ my_strnxfrm_utf8mb3_general_mysql500_ci,
my_strnxfrmlen_unicode,
my_like_range_mb,
- my_wildcmp_utf8,
- my_strcasecmp_utf8,
+ my_wildcmp_utf8mb3,
+ my_strcasecmp_utf8mb3,
my_instr_mb,
my_hash_sort_utf8mb3,
my_propagate_complex
};
-static MY_COLLATION_HANDLER my_collation_utf8_bin_handler =
+static MY_COLLATION_HANDLER my_collation_utf8mb3_bin_handler =
{
NULL, /* init */
- my_strnncoll_utf8_bin,
- my_strnncollsp_utf8_bin,
- my_strnncollsp_nchars_utf8_bin,
- my_strnxfrm_utf8_bin,
+ my_strnncoll_utf8mb3_bin,
+ my_strnncollsp_utf8mb3_bin,
+ my_strnncollsp_nchars_utf8mb3_bin,
+ my_strnxfrm_utf8mb3_bin,
my_strnxfrmlen_unicode,
my_like_range_mb,
my_wildcmp_mb_bin,
@@ -5403,30 +5405,30 @@ static MY_COLLATION_HANDLER my_collation_utf8_bin_handler =
};
-static MY_COLLATION_HANDLER my_collation_utf8_general_nopad_ci_handler =
+static MY_COLLATION_HANDLER my_collation_utf8mb3_general_nopad_ci_handler =
{
NULL, /* init */
- my_strnncoll_utf8_general_ci,
- my_strnncollsp_utf8_general_nopad_ci,
- my_strnncollsp_nchars_utf8_general_nopad_ci,
- my_strnxfrm_nopad_utf8_general_ci,
+ my_strnncoll_utf8mb3_general_ci,
+ my_strnncollsp_utf8mb3_general_nopad_ci,
+ my_strnncollsp_nchars_utf8mb3_general_nopad_ci,
+ my_strnxfrm_nopad_utf8mb3_general_ci,
my_strnxfrmlen_unicode,
my_like_range_mb,
- my_wildcmp_utf8,
- my_strcasecmp_utf8,
+ my_wildcmp_utf8mb3,
+ my_strcasecmp_utf8mb3,
my_instr_mb,
my_hash_sort_utf8mb3_nopad,
my_propagate_complex
};
-static MY_COLLATION_HANDLER my_collation_utf8_nopad_bin_handler =
+static MY_COLLATION_HANDLER my_collation_utf8mb3_nopad_bin_handler =
{
NULL, /* init */
- my_strnncoll_utf8_bin,
- my_strnncollsp_utf8_nopad_bin,
- my_strnncollsp_nchars_utf8_nopad_bin,
- my_strnxfrm_nopad_utf8_bin,
+ my_strnncoll_utf8mb3_bin,
+ my_strnncollsp_utf8mb3_nopad_bin,
+ my_strnncollsp_nchars_utf8mb3_nopad_bin,
+ my_strnxfrm_nopad_utf8mb3_bin,
my_strnxfrmlen_unicode,
my_like_range_mb,
my_wildcmp_mb_bin,
@@ -5437,24 +5439,24 @@ static MY_COLLATION_HANDLER my_collation_utf8_nopad_bin_handler =
};
-MY_CHARSET_HANDLER my_charset_utf8_handler=
+MY_CHARSET_HANDLER my_charset_utf8mb3_handler=
{
NULL, /* init */
my_numchars_mb,
my_charpos_mb,
my_lengthsp_8bit,
my_numcells_mb,
- my_utf8_uni,
- my_uni_utf8,
+ my_utf8mb3_uni,
+ my_uni_utf8mb3,
my_mb_ctype_mb,
- my_caseup_str_utf8,
- my_casedn_str_utf8,
- my_caseup_utf8,
- my_casedn_utf8,
+ my_caseup_str_utf8mb3,
+ my_casedn_str_utf8mb3,
+ my_caseup_utf8mb3,
+ my_casedn_utf8mb3,
my_snprintf_8bit,
my_long10_to_str_8bit,
my_longlong10_to_str_8bit,
- my_fill_utf8,
+ my_fill_utf8mb3,
my_strntol_8bit,
my_strntoul_8bit,
my_strntoll_8bit,
@@ -5463,26 +5465,27 @@ MY_CHARSET_HANDLER my_charset_utf8_handler=
my_strtoll10_8bit,
my_strntoull10rnd_8bit,
my_scan_8bit,
- my_charlen_utf8,
- my_well_formed_char_length_utf8,
+ my_charlen_utf8mb3,
+ my_well_formed_char_length_utf8mb3,
my_copy_fix_mb,
- my_uni_utf8,
+ my_uni_utf8mb3,
+ my_wc_to_printable_generic
};
-struct charset_info_st my_charset_utf8_general_ci=
+struct charset_info_st my_charset_utf8mb3_general_ci=
{
33,0,0, /* number */
MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE, /* state */
- "utf8", /* cs name */
- "utf8_general_ci", /* name */
+ charset_name_utf8, /* cs name */
+ MY_UTF8MB3 "_general_ci", /* name */
"", /* comment */
NULL, /* tailoring */
- ctype_utf8, /* ctype */
- to_lower_utf8, /* to_lower */
- to_upper_utf8, /* to_upper */
- to_upper_utf8, /* sort_order */
+ ctype_utf8mb3, /* ctype */
+ to_lower_utf8mb3, /* to_lower */
+ to_upper_utf8mb3, /* to_upper */
+ to_upper_utf8mb3, /* sort_order */
NULL, /* uca */
NULL, /* tab_to_uni */
NULL, /* tab_from_uni */
@@ -5499,23 +5502,23 @@ struct charset_info_st my_charset_utf8_general_ci=
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
1, /* levels_for_order */
- &my_charset_utf8_handler,
- &my_collation_utf8_general_ci_handler
+ &my_charset_utf8mb3_handler,
+ &my_collation_utf8mb3_general_ci_handler
};
-struct charset_info_st my_charset_utf8_general_mysql500_ci=
+struct charset_info_st my_charset_utf8mb3_general_mysql500_ci=
{
223,0,0, /* number */
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE, /* state */
- "utf8", /* cs name */
- "utf8_general_mysql500_ci", /* name */
+ charset_name_utf8, /* cs name */
+ MY_UTF8MB3 "_general_mysql500_ci", /* name */
"", /* comment */
NULL, /* tailoring */
- ctype_utf8, /* ctype */
- to_lower_utf8, /* to_lower */
- to_upper_utf8, /* to_upper */
- to_upper_utf8, /* sort_order */
+ ctype_utf8mb3, /* ctype */
+ to_lower_utf8mb3, /* to_lower */
+ to_upper_utf8mb3, /* to_upper */
+ to_upper_utf8mb3, /* sort_order */
NULL, /* uca */
NULL, /* tab_to_uni */
NULL, /* tab_from_uni */
@@ -5532,22 +5535,22 @@ struct charset_info_st my_charset_utf8_general_mysql500_ci=
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
1, /* levels_for_order */
- &my_charset_utf8_handler,
- &my_collation_utf8_general_mysql500_ci_handler
+ &my_charset_utf8mb3_handler,
+ &my_collation_utf8mb3_general_mysql500_ci_handler
};
-struct charset_info_st my_charset_utf8_bin=
+struct charset_info_st my_charset_utf8mb3_bin=
{
83,0,0, /* number */
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_BINSORT|MY_CS_UNICODE, /* state */
- "utf8", /* cs name */
- "utf8_bin", /* name */
+ charset_name_utf8, /* cs name */
+ MY_UTF8MB3 "_bin", /* name */
"", /* comment */
NULL, /* tailoring */
- ctype_utf8, /* ctype */
- to_lower_utf8, /* to_lower */
- to_upper_utf8, /* to_upper */
+ ctype_utf8mb3, /* ctype */
+ to_lower_utf8mb3, /* to_lower */
+ to_upper_utf8mb3, /* to_upper */
NULL, /* sort_order */
NULL, /* uca */
NULL, /* tab_to_uni */
@@ -5565,23 +5568,23 @@ struct charset_info_st my_charset_utf8_bin=
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
1, /* levels_for_order */
- &my_charset_utf8_handler,
- &my_collation_utf8_bin_handler
+ &my_charset_utf8mb3_handler,
+ &my_collation_utf8mb3_bin_handler
};
-struct charset_info_st my_charset_utf8_general_nopad_ci=
+struct charset_info_st my_charset_utf8mb3_general_nopad_ci=
{
MY_NOPAD_ID(33),0,0, /* number */
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NOPAD, /* state */
- "utf8", /* cs name */
- "utf8_general_nopad_ci", /* name */
+ charset_name_utf8, /* cs name */
+ MY_UTF8MB3 "_general_nopad_ci", /* name */
"", /* comment */
NULL, /* tailoring */
- ctype_utf8, /* ctype */
- to_lower_utf8, /* to_lower */
- to_upper_utf8, /* to_upper */
- to_upper_utf8, /* sort_order */
+ ctype_utf8mb3, /* ctype */
+ to_lower_utf8mb3, /* to_lower */
+ to_upper_utf8mb3, /* to_upper */
+ to_upper_utf8mb3, /* sort_order */
NULL, /* uca */
NULL, /* tab_to_uni */
NULL, /* tab_from_uni */
@@ -5598,22 +5601,22 @@ struct charset_info_st my_charset_utf8_general_nopad_ci=
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
1, /* levels_for_order */
- &my_charset_utf8_handler,
- &my_collation_utf8_general_nopad_ci_handler
+ &my_charset_utf8mb3_handler,
+ &my_collation_utf8mb3_general_nopad_ci_handler
};
-struct charset_info_st my_charset_utf8_nopad_bin=
+struct charset_info_st my_charset_utf8mb3_nopad_bin=
{
MY_NOPAD_ID(83),0,0,/* number */
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_BINSORT|MY_CS_UNICODE|MY_CS_NOPAD,
- "utf8", /* cs name */
- "utf8_nopad_bin", /* name */
+ charset_name_utf8, /* cs name */
+ MY_UTF8MB3 "_nopad_bin", /* name */
"", /* comment */
NULL, /* tailoring */
- ctype_utf8, /* ctype */
- to_lower_utf8, /* to_lower */
- to_upper_utf8, /* to_upper */
+ ctype_utf8mb3, /* ctype */
+ to_lower_utf8mb3, /* to_lower */
+ to_upper_utf8mb3, /* to_upper */
NULL, /* sort_order */
NULL, /* uca */
NULL, /* tab_to_uni */
@@ -5631,8 +5634,8 @@ struct charset_info_st my_charset_utf8_nopad_bin=
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
1, /* levels_for_order */
- &my_charset_utf8_handler,
- &my_collation_utf8_nopad_bin_handler
+ &my_charset_utf8mb3_handler,
+ &my_collation_utf8mb3_nopad_bin_handler
};
@@ -5645,7 +5648,7 @@ struct charset_info_st my_charset_utf8_nopad_bin=
* variable to what they actually do.
*/
-static int my_strnncoll_utf8_cs(CHARSET_INFO *cs,
+static int my_strnncoll_utf8mb3_cs(CHARSET_INFO *cs,
const uchar *s, size_t slen,
const uchar *t, size_t tlen,
my_bool t_is_prefix)
@@ -5660,8 +5663,8 @@ static int my_strnncoll_utf8_cs(CHARSET_INFO *cs,
while ( s < se && t < te )
{
- s_res=my_utf8_uni(cs,&s_wc, s, se);
- t_res=my_utf8_uni(cs,&t_wc, t, te);
+ s_res=my_utf8mb3_uni(cs,&s_wc, s, se);
+ t_res=my_utf8mb3_uni(cs,&t_wc, t, te);
if ( s_res <= 0 || t_res <= 0 )
@@ -5690,7 +5693,7 @@ static int my_strnncoll_utf8_cs(CHARSET_INFO *cs,
return t_is_prefix ? t-te : ((diff == 0) ? save_diff : diff);
}
-static int my_strnncollsp_utf8_cs(CHARSET_INFO *cs,
+static int my_strnncollsp_utf8mb3_cs(CHARSET_INFO *cs,
const uchar *s, size_t slen,
const uchar *t, size_t tlen)
{
@@ -5703,8 +5706,8 @@ static int my_strnncollsp_utf8_cs(CHARSET_INFO *cs,
while ( s < se && t < te )
{
- s_res=my_utf8_uni(cs,&s_wc, s, se);
- t_res=my_utf8_uni(cs,&t_wc, t, te);
+ s_res=my_utf8mb3_uni(cs,&s_wc, s, se);
+ t_res=my_utf8mb3_uni(cs,&t_wc, t, te);
if ( s_res <= 0 || t_res <= 0 )
{
@@ -5753,31 +5756,31 @@ static int my_strnncollsp_utf8_cs(CHARSET_INFO *cs,
static MY_COLLATION_HANDLER my_collation_cs_handler =
{
NULL, /* init */
- my_strnncoll_utf8_cs,
- my_strnncollsp_utf8_cs,
+ my_strnncoll_utf8mb3_cs,
+ my_strnncollsp_utf8mb3_cs,
my_strnncollsp_nchars_generic,
- my_strnxfrm_utf8_general_ci,
+ my_strnxfrm_utf8mb3_general_ci,
my_strnxfrmlen_unicode,
my_like_range_simple,
my_wildcmp_mb,
- my_strcasecmp_utf8,
+ my_strcasecmp_utf8mb3,
my_instr_mb,
- my_hash_sort_utf8,
+ my_hash_sort_utf8mb3,
my_propagate_simple
};
-struct charset_info_st my_charset_utf8_general_cs=
+struct charset_info_st my_charset_utf8mb3_general_cs=
{
254,0,0, /* number */
- MY_CS_COMPILED|MY_CS_UNICODE, /* state */
- "utf8", /* cs name */
- "utf8_general_cs", /* name */
+ MY_CS_COMPILED|MY_CS_UNICODE, /* state */
+ charset_name_utf8, /* cs name */
+ MY_UTF8MB3 "_general_cs", /* name */
"", /* comment */
NULL, /* tailoring */
- ctype_utf8, /* ctype */
- to_lower_utf8, /* to_lower */
- to_upper_utf8, /* to_upper */
- to_upper_utf8, /* sort_order */
+ ctype_utf8mb3, /* ctype */
+ to_lower_utf8mb3, /* to_lower */
+ to_upper_utf8mb3, /* to_upper */
+ to_upper_utf8mb3, /* sort_order */
NULL, /* uca */
NULL, /* tab_to_uni */
NULL, /* tab_from_uni */
@@ -5794,7 +5797,7 @@ struct charset_info_st my_charset_utf8_general_cs=
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
1, /* levels_for_order */
- &my_charset_utf8_handler,
+ &my_charset_utf8mb3_handler,
&my_collation_cs_handler
};
#endif /* Cybozu Hack */
@@ -7028,10 +7031,20 @@ static int
my_charlen_filename(CHARSET_INFO *cs, const uchar *str, const uchar *end)
{
my_wc_t wc;
- return cs->cset->mb_wc(cs, &wc, str, end);
+ return my_ci_mb_wc(cs, &wc, str, end);
}
+static int
+my_wc_to_printable_filename(CHARSET_INFO *cs, my_wc_t wc,
+ uchar *str, uchar *end)
+{
+ return my_wc_to_printable_ex(cs, wc, str, end,
+ '\\', 5, 1);
+}
+
+
+
#define MY_FUNCTION_NAME(x) my_ ## x ## _filename
#define CHARLEN(cs,str,end) my_charlen_filename(cs,str,end)
#define DEFINE_WELL_FORMED_CHAR_LENGTH_USING_CHARLEN
@@ -7052,9 +7065,9 @@ my_charlen_filename(CHARSET_INFO *cs, const uchar *str, const uchar *end)
/*
#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
-#define WEIGHT_MB1(x) my_weight_mb1_utf8_general_ci(x)
-#define WEIGHT_MB2(x,y) my_weight_mb2_utf8_general_ci(x,y)
-#define WEIGHT_MB3(x,y,z) my_weight_mb3_utf8_general_ci(x,y,z)
+#define WEIGHT_MB1(x) my_weight_mb1_utf8mb3_general_ci(x)
+#define WEIGHT_MB2(x,y) my_weight_mb2_utf8mb3_general_ci(x,y)
+#define WEIGHT_MB3(x,y,z) my_weight_mb3_utf8mb3_general_ci(x,y,z)
*/
#include "strcoll.inl"
@@ -7068,8 +7081,8 @@ static MY_COLLATION_HANDLER my_collation_filename_handler =
my_strnxfrm_filename,
my_strnxfrmlen_unicode,
my_like_range_mb,
- my_wildcmp_utf8,
- my_strcasecmp_utf8,
+ my_wildcmp_utf8mb3,
+ my_strcasecmp_utf8mb3,
my_instr_mb,
my_hash_sort_utf8mb3,
my_propagate_complex
@@ -7085,10 +7098,10 @@ static MY_CHARSET_HANDLER my_charset_filename_handler=
my_mb_wc_filename,
my_wc_mb_filename,
my_mb_ctype_mb,
- my_caseup_str_utf8,
- my_casedn_str_utf8,
- my_caseup_utf8,
- my_casedn_utf8,
+ my_caseup_str_utf8mb3,
+ my_casedn_str_utf8mb3,
+ my_caseup_utf8mb3,
+ my_casedn_utf8mb3,
my_snprintf_8bit,
my_long10_to_str_8bit,
my_longlong10_to_str_8bit,
@@ -7105,6 +7118,7 @@ static MY_CHARSET_HANDLER my_charset_filename_handler=
my_well_formed_char_length_filename,
my_copy_fix_mb,
my_wc_mb_filename,
+ my_wc_to_printable_filename
};
@@ -7117,10 +7131,10 @@ struct charset_info_st my_charset_filename=
"filename", /* name */
"", /* comment */
NULL, /* tailoring */
- ctype_utf8, /* ctype */
- to_lower_utf8, /* to_lower */
- to_upper_utf8, /* to_upper */
- to_upper_utf8, /* sort_order */
+ ctype_utf8mb3, /* ctype */
+ to_lower_utf8mb3, /* to_lower */
+ to_upper_utf8mb3, /* to_upper */
+ to_upper_utf8mb3, /* sort_order */
NULL, /* uca */
NULL, /* tab_to_uni */
NULL, /* tab_from_uni */
@@ -7509,12 +7523,12 @@ my_casedn_str_utf8mb4(CHARSET_INFO *cs, char *src)
the original string, for example:
"U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE"
- (which is 0xC4B0 in utf8, i.e. two bytes)
+ (which is 0xC4B0 in utf8mb3, i.e. two bytes)
is converted into
"U+0069 LATIN SMALL LETTER I"
- (which is 0x69 in utf8, i.e. one byte)
+ (which is 0x69 in utf8mb3, i.e. one byte)
So, we need to put '\0' terminator after converting.
*/
@@ -7656,9 +7670,9 @@ my_charlen_utf8mb4(CHARSET_INFO *cs __attribute__((unused)),
#define UNICASE_PAGES my_unicase_default_pages
#define IS_MB4_CHAR(b0,b1,b2,b3) IS_UTF8MB4_STEP3(b0,b1,b2,b3)
#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
-#define WEIGHT_MB1(b0) my_weight_mb1_utf8_general_ci(b0)
-#define WEIGHT_MB2(b0,b1) my_weight_mb2_utf8_general_ci(b0,b1)
-#define WEIGHT_MB3(b0,b1,b2) my_weight_mb3_utf8_general_ci(b0,b1,b2)
+#define WEIGHT_MB1(b0) my_weight_mb1_utf8mb3_general_ci(b0)
+#define WEIGHT_MB2(b0,b1) my_weight_mb2_utf8mb3_general_ci(b0,b1)
+#define WEIGHT_MB3(b0,b1,b2) my_weight_mb3_utf8mb3_general_ci(b0,b1,b2)
/*
All non-BMP characters have the same weight.
*/
@@ -7679,9 +7693,9 @@ my_charlen_utf8mb4(CHARSET_INFO *cs __attribute__((unused)),
#define MY_FUNCTION_NAME(x) my_ ## x ## _utf8mb4_general_nopad_ci
#define IS_MB4_CHAR(b0,b1,b2,b3) IS_UTF8MB4_STEP3(b0,b1,b2,b3)
#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
-#define WEIGHT_MB1(b0) my_weight_mb1_utf8_general_ci(b0)
-#define WEIGHT_MB2(b0,b1) my_weight_mb2_utf8_general_ci(b0,b1)
-#define WEIGHT_MB3(b0,b1,b2) my_weight_mb3_utf8_general_ci(b0,b1,b2)
+#define WEIGHT_MB1(b0) my_weight_mb1_utf8mb3_general_ci(b0)
+#define WEIGHT_MB2(b0,b1) my_weight_mb2_utf8mb3_general_ci(b0,b1)
+#define WEIGHT_MB3(b0,b1,b2) my_weight_mb3_utf8mb3_general_ci(b0,b1,b2)
/*
All non-BMP characters have the same weight.
*/
@@ -7784,7 +7798,7 @@ MY_CHARSET_HANDLER my_charset_utf8mb4_handler=
my_snprintf_8bit,
my_long10_to_str_8bit,
my_longlong10_to_str_8bit,
- my_fill_utf8,
+ my_fill_utf8mb3,
my_strntol_8bit,
my_strntoul_8bit,
my_strntoll_8bit,
@@ -7797,6 +7811,7 @@ MY_CHARSET_HANDLER my_charset_utf8mb4_handler=
my_well_formed_char_length_utf8mb4,
my_copy_fix_mb,
my_wc_mb_utf8mb4,
+ my_wc_to_printable_generic
};
@@ -7805,7 +7820,7 @@ struct charset_info_st my_charset_utf8mb4_general_ci=
{
45,0,0, /* number */
MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_UNICODE_SUPPLEMENT, /* state */
- MY_UTF8MB4, /* cs name */
+ charset_name_utf8mb4, /* cs name */
MY_UTF8MB4_GENERAL_CI,/* name */
"UTF-8 Unicode", /* comment */
NULL, /* tailoring */
@@ -7839,7 +7854,7 @@ struct charset_info_st my_charset_utf8mb4_bin=
46,0,0, /* number */
MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_STRNXFRM|MY_CS_UNICODE|
MY_CS_UNICODE_SUPPLEMENT, /* state */
- MY_UTF8MB4, /* cs name */
+ charset_name_utf8mb4, /* cs name */
MY_UTF8MB4_BIN, /* name */
"UTF-8 Unicode", /* comment */
NULL, /* tailoring */
@@ -7873,7 +7888,7 @@ struct charset_info_st my_charset_utf8mb4_general_nopad_ci=
MY_NOPAD_ID(45),0,0,/* number */
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_UNICODE_SUPPLEMENT|
MY_CS_NOPAD, /* state */
- MY_UTF8MB4, /* cs name */
+ charset_name_utf8mb4, /* cs name */
MY_UTF8MB4_GENERAL_NOPAD_CI,/* name */
"UTF-8 Unicode", /* comment */
NULL, /* tailoring */
@@ -7907,7 +7922,7 @@ struct charset_info_st my_charset_utf8mb4_nopad_bin=
MY_NOPAD_ID(46),0,0, /* number */
MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_STRNXFRM|MY_CS_UNICODE|
MY_CS_UNICODE_SUPPLEMENT|MY_CS_NOPAD, /* state */
- MY_UTF8MB4, /* cs name */
+ charset_name_utf8mb4, /* cs name */
MY_UTF8MB4_NOPAD_BIN, /* name */
"UTF-8 Unicode", /* comment */
NULL, /* tailoring */
diff --git a/strings/ctype-win1250ch.c b/strings/ctype-win1250ch.c
index 15fa6299e4e..4efdce5eaf7 100644
--- a/strings/ctype-win1250ch.c
+++ b/strings/ctype-win1250ch.c
@@ -52,6 +52,7 @@
#ifdef HAVE_CHARSET_cp1250
+const char charset_name_cp1250[]= "cp1250";
static const uint16 tab_cp1250_uni[256]={
0,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
@@ -691,7 +692,7 @@ struct charset_info_st my_charset_cp1250_czech_ci =
34,0,0, /* number */
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_CSSORT|
MY_CS_STRNXFRM_BAD_NWEIGHTS|MY_CS_NON1TO1, /* state */
- "cp1250", /* cs name */
+ charset_name_cp1250, /* cs name */
"cp1250_czech_cs", /* name */
"", /* comment */
NULL, /* tailoring */
diff --git a/strings/ctype.c b/strings/ctype.c
index 0cf1131ab57..f18d5b61a37 100644
--- a/strings/ctype.c
+++ b/strings/ctype.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2000, 2013, Oracle and/or its affiliates.
- Copyright (c) 2009, 2014, SkySQL Ab.
+ Copyright (c) 2009, 2020, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -36,6 +36,12 @@
*/
+const char charset_name_latin2[]= "latin2";
+const char charset_name_utf8[]= "utf8";
+const char charset_name_utf16[]= "utf16";
+const char charset_name_utf32[]= "utf32";
+const char charset_name_ucs2[]= "ucs2";
+const char charset_name_utf8mb4[]= "utf8mb4";
/*
Avoid using my_snprintf
@@ -413,7 +419,7 @@ tailoring_append2(MY_XML_PARSER *st,
static size_t
scan_one_character(const char *s, const char *e, my_wc_t *wc)
{
- CHARSET_INFO *cs= &my_charset_utf8_general_ci;
+ CHARSET_INFO *cs= &my_charset_utf8mb3_general_ci;
if (s >= e)
return 0;
@@ -434,7 +440,7 @@ scan_one_character(const char *s, const char *e, my_wc_t *wc)
}
else /* Non-escaped character */
{
- int rc= cs->cset->mb_wc(cs, wc, (uchar *) s, (uchar *) e);
+ int rc= my_ci_mb_wc(cs, wc, (uchar *) s, (uchar *) e);
if (rc > 0)
return (size_t) rc;
}
@@ -639,7 +645,7 @@ static int cs_value(MY_XML_PARSER *st,const char *attr, size_t len)
break;
case _CS_CTYPEMAP:
fill_uchar(i->ctype,MY_CS_CTYPE_TABLE_SIZE,attr,len);
- i->cs.ctype=i->ctype;
+ i->cs.m_ctype=i->ctype;
break;
/* Special purpose commands */
@@ -867,8 +873,7 @@ my_string_metadata_get_mb(MY_STRING_METADATA *metadata,
metadata->char_length++)
{
my_wc_t wc;
- int mblen= cs->cset->mb_wc(cs, &wc, (const uchar *) str,
- (const uchar *) strend);
+ int mblen= my_ci_mb_wc(cs, &wc, (const uchar *) str, (const uchar *) strend);
if (mblen > 0) /* Assigned character */
{
if (wc > 0x7F)
@@ -916,7 +921,7 @@ my_string_metadata_get(MY_STRING_METADATA *metadata,
/*
Check repertoire: detect pure ascii strings
*/
-uint
+my_repertoire_t
my_string_repertoire(CHARSET_INFO *cs, const char *str, size_t length)
{
if (cs->mbminlen == 1 && !(cs->state & MY_CS_NONASCII))
@@ -929,7 +934,7 @@ my_string_repertoire(CHARSET_INFO *cs, const char *str, size_t length)
my_wc_t wc;
int chlen;
for (;
- (chlen= cs->cset->mb_wc(cs, &wc, (uchar*) str, (uchar*) strend)) > 0;
+ (chlen= my_ci_mb_wc(cs, &wc, (uchar*) str, (uchar*) strend)) > 0;
str+= chlen)
{
if (wc > 0x7F)
@@ -943,7 +948,7 @@ my_string_repertoire(CHARSET_INFO *cs, const char *str, size_t length)
/*
Returns repertoire for charset
*/
-uint my_charset_repertoire(CHARSET_INFO *cs)
+my_repertoire_t my_charset_repertoire(CHARSET_INFO *cs)
{
return cs->state & MY_CS_PUREASCII ?
MY_REPERTOIRE_ASCII : MY_REPERTOIRE_UNICODE30;
@@ -985,6 +990,142 @@ my_charset_is_ascii_based(CHARSET_INFO *cs)
}
+/**
+ Detect if a Unicode code point is printable.
+*/
+static inline my_bool
+my_is_printable(my_wc_t wc)
+{
+ /*
+ Blocks:
+ U+0000 .. U+001F control
+ U+0020 .. U+007E printable
+ U+007F .. U+009F control
+ U+00A0 .. U+00FF printable
+ U+0100 .. U+10FFFF As of Unicode-6.1.0, this range does not have any
+ characters of the "Cc" (Other, control) category.
+ Should be mostly safe to print.
+ Except for the surrogate halfs,
+ which are encoding components, not real characters.
+ */
+ if (wc >= 0x20 && wc <= 0x7E) /* Quickly detect ASCII printable */
+ return TRUE;
+ if (wc <= 0x9F) /* The rest of U+0000..U+009F are control characters */
+ {
+ /* NL, CR, TAB are Ok */
+ return (wc == '\r' || wc == '\n' || wc == '\t');
+ }
+ /*
+ Surrogate halfs (when alone) print badly in terminals:
+ SELECT _ucs2 0xD800;
+ Let's escape them as well.
+ */
+ if (wc >= 0xD800 && wc <= 0xDFFF)
+ return FALSE;
+ return TRUE;
+}
+
+
+static uint to_printable_8bit(uchar *dst, my_wc_t wc, uint bs)
+{
+ /*
+ This function is used only in context of error messages for now.
+ All non-BMP characters are currently replaced to question marks
+ when a message is put into diagnostics area.
+ */
+ DBUG_ASSERT(wc < 0x10000);
+ *dst++= (char) bs;
+ *dst++= _dig_vec_upper[(wc >> 12) & 0x0F];
+ *dst++= _dig_vec_upper[(wc >> 8) & 0x0F];
+ *dst++= _dig_vec_upper[(wc >> 4) & 0x0F];
+ *dst++= _dig_vec_upper[wc & 0x0F];
+ return MY_CS_PRINTABLE_CHAR_LENGTH;
+}
+
+
+static uint my_printable_length(uint bslen, uint diglen)
+{
+ return bslen + (MY_CS_PRINTABLE_CHAR_LENGTH - 1) * diglen;
+}
+
+
+/**
+ Encode an Unicode character "wc" into a printable string.
+ This function is suitable for any character set, including
+ ASCII-incompatible multi-byte character sets, e.g. ucs2, utf16, utf32.
+*/
+int
+my_wc_to_printable_ex(CHARSET_INFO *cs, my_wc_t wc,
+ uchar *str, uchar *end,
+ uint bs, uint bslen, uint diglen)
+{
+ uchar *str0;
+ uint i, length;
+ uchar tmp[MY_CS_PRINTABLE_CHAR_LENGTH * MY_CS_MBMAXLEN];
+
+ if (my_is_printable(wc))
+ {
+ int mblen= my_ci_wc_mb(cs, wc, str, end);
+ if (mblen > 0)
+ return mblen;
+ }
+
+ if (str + my_printable_length(bslen, diglen) > end)
+ return MY_CS_TOOSMALLN(my_printable_length(bslen, diglen));
+
+ if ((cs->state & MY_CS_NONASCII) == 0)
+ return to_printable_8bit(str, wc, bs);
+
+ length= to_printable_8bit(tmp, wc, bs);
+ str0= str;
+ for (i= 0; i < length; i++)
+ {
+ uint expected_length= i == 0 ? bslen : diglen;
+ if (my_ci_wc_mb(cs, tmp[i], str, end) != (int) expected_length)
+ {
+ DBUG_ASSERT(0);
+ return MY_CS_ILSEQ;
+ }
+ str+= expected_length;
+ }
+ return (int) (str - str0);
+}
+
+
+int
+my_wc_to_printable_8bit(CHARSET_INFO *cs, my_wc_t wc,
+ uchar *str, uchar *end)
+{
+ /*
+ Special case: swe7 does not have the backslash character.
+ Use dot instead of backslash for escaping.
+ */
+ uint bs= cs->tab_to_uni && cs->tab_to_uni['\\'] != '\\' ? '.' : '\\';
+ DBUG_ASSERT(cs->mbminlen == 1);
+ /*
+ Additionally, if the original swe7 string contains backslashes,
+ replace them to dots, so this error message:
+ Invalid swe7 character string: '\xEF\xBC\xB4'
+ is displayed as:
+ Invalid swe7 character string: '.xEF.xBC.xB4'
+ which is more readable than what would happen without '\'-to-dot mapping:
+ Invalid swe7 character string: '.005CxEF.005CxBC.005CxB4'
+ */
+ if (bs == '.' && wc == '\\')
+ wc= '.';
+ return my_wc_to_printable_ex(cs, wc, str, end, bs, 1, 1);
+}
+
+
+int
+my_wc_to_printable_generic(CHARSET_INFO *cs, my_wc_t wc,
+ uchar *str, uchar *end)
+{
+ return my_wc_to_printable_ex(cs, wc, str, end, '\\',
+ cs->mbminlen, cs->mbminlen);
+}
+
+
/*
Convert a string between two character sets.
'to' must be large enough to store (form_length * to_cs->mbmaxlen) bytes.
diff --git a/strings/decimal.c b/strings/decimal.c
index aa3a78fca24..acb613f1b74 100644
--- a/strings/decimal.c
+++ b/strings/decimal.c
@@ -2633,7 +2633,8 @@ void test_d2f(const char *s, int ex)
void test_d2b2d(const char *str, int p, int s, const char *orig, int ex)
{
- char s1[100], buf[100], *end;
+ char s1[100], *end;
+ uchar buf[100];
int res, i, size=decimal_bin_size(p, s);
sprintf(s1, "'%s'", str);
@@ -2951,27 +2952,27 @@ int main()
test_f2d(1234500009876.5, 0);
printf("==== ulonglong2decimal ====\n");
- test_ull2d(ULL(12345), "12345", 0);
- test_ull2d(ULL(0), "0", 0);
- test_ull2d(ULL(18446744073709551615), "18446744073709551615", 0);
+ test_ull2d(12345ULL, "12345", 0);
+ test_ull2d(0ULL, "0", 0);
+ test_ull2d(18446744073709551615ULL, "18446744073709551615", 0);
printf("==== decimal2ulonglong ====\n");
test_d2ull("12345", "12345", 0);
test_d2ull("0", "0", 0);
test_d2ull("18446744073709551615", "18446744073709551615", 0);
- test_d2ull("18446744073709551616", "18446744073", 2);
+ test_d2ull("18446744073709551616", "18446744073709551615", 2);
test_d2ull("-1", "0", 2);
test_d2ull("1.23", "1", 1);
- test_d2ull("9999999999999999999999999.000", "9999999999999999", 2);
+ test_d2ull("9999999999999999999999999.000", "18446744073709551615", 2);
printf("==== longlong2decimal ====\n");
- test_ll2d(LL(-12345), "-12345", 0);
- test_ll2d(LL(-1), "-1", 0);
- test_ll2d(LL(-9223372036854775807), "-9223372036854775807", 0);
- test_ll2d(ULL(9223372036854775808), "-9223372036854775808", 0);
+ test_ll2d(-12345LL, "-12345", 0);
+ test_ll2d(-1LL, "-1", 0);
+ test_ll2d(-9223372036854775807LL, "-9223372036854775807", 0);
+ test_ll2d(9223372036854775808ULL, "-9223372036854775808", 0);
printf("==== decimal2longlong ====\n");
- test_d2ll("18446744073709551615", "18446744073", 2);
+ test_d2ll("18446744073709551615", "9223372036854775807", 2);
test_d2ll("-1", "-1", 0);
test_d2ll("-1.23", "-1", 1);
test_d2ll("-9223372036854775807", "-9223372036854775807", 0);
@@ -3145,12 +3146,12 @@ int main()
printf("==== decimal2string ====\n");
test_pr("123.123", 0, 0, 0, "123.123", 0);
- test_pr("123.123", 7, 3, '0', "123.123", 0);
- test_pr("123.123", 9, 3, '0', "00123.123", 0);
- test_pr("123.123", 9, 4, '0', "0123.1230", 0);
- test_pr("123.123", 9, 5, '0', "123.12300", 0);
- test_pr("123.123", 9, 2, '0', "000123.12", 1);
- test_pr("123.123", 9, 6, '0', "23.123000", 2);
+ test_pr("123.123", 7, 3, '0', "0123.123", 0);
+ test_pr("123.123", 9, 3, '0', "000123.123", 0);
+ test_pr("123.123", 9, 4, '0', "00123.1230", 0);
+ test_pr("123.123", 9, 5, '0', "0123.12300", 0);
+ test_pr("123.123", 9, 2, '0', "0000123.12", 1);
+ test_pr("123.123", 8, 6, '0', "23.123000", 2);
printf("==== decimal_shift ====\n");
test_sh("123.123", 1, "1231.23", 0);
diff --git a/strings/dtoa.c b/strings/dtoa.c
index 13e28821f69..9bdeeacf574 100644
--- a/strings/dtoa.c
+++ b/strings/dtoa.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved.
- Copyright (c) 2017, MariaDB Corporation.
+ Copyright (c) 2017, 2020, MariaDB Corporation.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
diff --git a/strings/json_lib.c b/strings/json_lib.c
index 5c7747617e9..bb60df589c3 100644
--- a/strings/json_lib.c
+++ b/strings/json_lib.c
@@ -1,3 +1,18 @@
+/* Copyright (c) 2016, 2020, MariaDB Corporation.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; version 2 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA */
+
#include <my_global.h>
#include <string.h>
#include <m_ctype.h>
@@ -1511,8 +1526,7 @@ int json_append_ascii(CHARSET_INFO *json_cs,
while (ascii < ascii_end)
{
int c_len;
- if ((c_len= json_cs->cset->wc_mb(json_cs, (my_wc_t) *ascii,
- json, json_end)) > 0)
+ if ((c_len= my_ci_wc_mb(json_cs, (my_wc_t) *ascii, json, json_end)) > 0)
{
json+= c_len;
ascii++;
@@ -1538,7 +1552,7 @@ int json_unescape(CHARSET_INFO *json_cs,
while (json_read_string_const_chr(&s) == 0)
{
int c_len;
- if ((c_len= res_cs->cset->wc_mb(res_cs, s.c_next, res, res_end)) > 0)
+ if ((c_len= my_ci_wc_mb(res_cs, s.c_next, res, res_end)) > 0)
{
res+= c_len;
continue;
@@ -1549,7 +1563,7 @@ int json_unescape(CHARSET_INFO *json_cs,
Result charset doesn't support the json's character.
Let's replace it with the '?' symbol.
*/
- if ((c_len= res_cs->cset->wc_mb(res_cs, '?', res, res_end)) > 0)
+ if ((c_len= my_ci_wc_mb(res_cs, '?', res, res_end)) > 0)
{
res+= c_len;
continue;
@@ -1608,14 +1622,14 @@ int json_escape(CHARSET_INFO *str_cs,
{
my_wc_t c_chr;
int c_len;
- if ((c_len= str_cs->cset->mb_wc(str_cs, &c_chr, str, str_end)) > 0)
+ if ((c_len= my_ci_mb_wc(str_cs, &c_chr, str, str_end)) > 0)
{
enum json_esc_char_classes c_class;
str+= c_len;
if (c_chr >= 0x60 || (c_class= json_escape_chr_map[c_chr]) == ESC_)
{
- if ((c_len= json_cs->cset->wc_mb(json_cs, c_chr, json, json_end)) > 0)
+ if ((c_len= my_ci_wc_mb(json_cs, c_chr, json, json_end)) > 0)
{
json+= c_len;
continue;
@@ -1630,9 +1644,8 @@ int json_escape(CHARSET_INFO *str_cs,
c_class= ESC_U;
}
- if ((c_len= json_cs->cset->wc_mb(json_cs, '\\', json, json_end)) <= 0 ||
- (c_len= json_cs->cset->wc_mb(json_cs,
- (c_class == ESC_BS) ? c_chr : c_class,
+ if ((c_len= my_ci_wc_mb(json_cs, '\\', json, json_end)) <= 0 ||
+ (c_len= my_ci_wc_mb(json_cs, (c_class == ESC_BS) ? c_chr : c_class,
json+= c_len, json_end)) <= 0)
{
/* JSON buffer is depleted. */
diff --git a/strings/my_strchr.c b/strings/my_strchr.c
index 6b1564c7ee1..323cbd0a37f 100644
--- a/strings/my_strchr.c
+++ b/strings/my_strchr.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2005, 2011, Oracle and/or its affiliates.
- Copyright (c) 2009-2011, Monty Program Ab
+ Copyright (c) 2009, 2020, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -38,7 +38,8 @@
const char *acc_end= (ACC) + (LEN); \
for (ptr_str= (STR) ; ptr_str < (END) ; ptr_str+= mbl) \
{ \
- mbl= my_charlen_fix((CS), ptr_str, (END)); \
+ mbl= my_ci_charlen_fix((CS), (const uchar *) ptr_str, \
+ (const uchar *) (END)); \
if (mbl < 2) \
{ \
DBUG_ASSERT(mbl == 1); \
diff --git a/strings/my_vsnprintf.c b/strings/my_vsnprintf.c
index 56e86f1bbc8..8b4dc5da561 100644
--- a/strings/my_vsnprintf.c
+++ b/strings/my_vsnprintf.c
@@ -175,7 +175,7 @@ static char *backtick_string(CHARSET_INFO *cs, char *to, const char *end,
last[index]= start;
index= (index + 1) % 3;
}
- char_len= my_charlen_fix(cs, par, par_end);
+ char_len= my_ci_charlen_fix(cs, (const uchar *) par, (const uchar *) par_end);
if (char_len == 1 && c == (uchar) quote_char )
{
if (start + 1 >= end)
@@ -704,10 +704,11 @@ size_t my_vsnprintf_ex(CHARSET_INFO *cs, char *to, size_t n,
}
else if (*fmt == 'f' || *fmt == 'g')
{
+ double d;
#if __has_feature(memory_sanitizer) /* QQ: MSAN has double trouble? */
__msan_check_mem_is_initialized(ap, sizeof(double));
#endif
- double d= va_arg(ap, double);
+ d= va_arg(ap, double);
#if __has_feature(memory_sanitizer) /* QQ: MSAN has double trouble? */
__msan_unpoison(&d, sizeof(double));
#endif
@@ -836,7 +837,7 @@ int my_vfprintf(FILE *stream, const char* format, va_list args)
if (new_len < cur_len)
return 0; /* Overflow */
cur_len= new_len;
- p= my_malloc(cur_len, MYF(MY_FAE));
+ p= my_malloc(PSI_INSTRUMENT_ME, cur_len, MYF(MY_FAE));
if (!p)
return 0;
}
diff --git a/strings/strcoll.inl b/strings/strcoll.inl
index 392a5dac589..50849c06e7d 100644
--- a/strings/strcoll.inl
+++ b/strings/strcoll.inl
@@ -1,5 +1,6 @@
/*
Copyright (c) 2015, MariaDB Foundation
+ Copyright (c) 2015, 2020, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -105,7 +106,7 @@ MY_FUNCTION_NAME(scan_weight)(int *weight, const uchar *str, const uchar *end)
#ifdef IS_MB1_MBHEAD_UNUSED_GAP
/*
Quickly filter out unused bytes that are neither MB1 nor MBHEAD.
- E.g. [0x80..0xC1] in utf8. This allows using simplified conditions
+ E.g. [0x80..0xC1] in utf8mb(3|4). This allows using simplified conditions
in IS_MB2_CHAR(), IS_MB3_CHAR(), etc.
*/
if (IS_MB1_MBHEAD_UNUSED_GAP(*str))
@@ -156,9 +157,9 @@ bad:
Compare two strings according to the collation,
without handling the PAD SPACE property.
- Note, cs->coll->strnncoll() is usually used to compare identifiers.
+ Note, strnncoll() is usually used to compare identifiers.
Perhaps we should eventually (in 10.2?) create a new collation
- my_charset_utf8_general_ci_no_pad and have only one comparison function
+ my_charset_utf8mb3_general_ci_no_pad and have only one comparison function
in MY_COLLATION_HANDLER.
@param cs - the character set and collation
@@ -357,11 +358,11 @@ MY_FUNCTION_NAME(strnxfrm)(CHARSET_INFO *cs,
for (; dst < de && src < se && nweights; nweights--)
{
- if (my_charlen(cs, (const char *) src, (const char *) se) > 1)
+ if (my_ci_charlen(cs, src, se) > 1)
{
/*
Note, it is safe not to check (src < se)
- in the code below, because my_charlen() would
+ in the code below, because my_ci_charlen() would
not return 2 if src was too short
*/
uint16 e= WEIGHT_MB2_FRM(src[0], src[1]);
@@ -389,7 +390,7 @@ MY_FUNCTION_NAME(strnxfrm)(CHARSET_INFO *cs,
Store sorting weights using 2 bytes per character.
This function is shared between
- - utf8mb3_general_ci, utf8_bin, ucs2_general_ci, ucs2_bin
+ - utf8mb3_general_ci, utf8mb3_bin, ucs2_general_ci, ucs2_bin
which support BMP only (U+0000..U+FFFF).
- utf8mb4_general_ci, utf16_general_ci, utf32_general_ci,
which map all supplementary characters to weight 0xFFFD.
@@ -523,7 +524,7 @@ MY_FUNCTION_NAME(strnxfrm_nopad)(CHARSET_INFO *cs,
Store sorting weights using 2 bytes per character.
These functions are shared between
- - utf8mb3_general_ci, utf8_bin, ucs2_general_ci, ucs2_bin
+ - utf8mb3_general_ci, utf8mb3_bin, ucs2_general_ci, ucs2_bin
which support BMP only (U+0000..U+FFFF).
- utf8mb4_general_ci, utf16_general_ci, utf32_general_ci,
which map all supplementary characters to weight 0xFFFD.
diff --git a/strings/strings_def.h b/strings/strings_def.h
index 8bf089ec695..ba7601f5886 100644
--- a/strings/strings_def.h
+++ b/strings/strings_def.h
@@ -127,4 +127,26 @@ uint my_8bit_collation_flags_from_data(CHARSET_INFO *cs);
#define MY_HASH_ADD_16(A, B, value) \
do { MY_HASH_ADD(A, B, ((value) & 0xFF)) ; MY_HASH_ADD(A, B, ((value >>8 ))); } while(0)
-#endif
+
+#define my_wc_t ulong
+
+int my_wc_to_printable_ex(CHARSET_INFO *cs, my_wc_t wc,
+ uchar *s, uchar *e,
+ uint bs, uint bslen, uint diglen);
+
+int my_wc_to_printable_generic(CHARSET_INFO *cs, my_wc_t wc,
+ uchar *s, uchar *e);
+
+int my_wc_to_printable_8bit(CHARSET_INFO *cs, my_wc_t wc,
+ uchar *s, uchar *e);
+
+/* Some common character set names */
+extern const char charset_name_latin2[];
+extern const char charset_name_utf8[];
+extern const char charset_name_utf16[];
+extern const char charset_name_utf32[];
+extern const char charset_name_ucs2[];
+extern const char charset_name_ucs2[];
+extern const char charset_name_utf8mb4[];
+
+#endif /*STRINGS_DEF_INCLUDED */
diff --git a/strings/xml.c b/strings/xml.c
index 0178ea2574e..d16df34bf30 100644
--- a/strings/xml.c
+++ b/strings/xml.c
@@ -232,12 +232,12 @@ static int my_xml_attr_ensure_space(MY_XML_PARSER *st, size_t len)
if (!st->attr.buffer)
{
- st->attr.buffer= (char *) my_malloc(st->attr.buffer_size, MYF(0));
+ st->attr.buffer= (char *) my_malloc(PSI_INSTRUMENT_ME, st->attr.buffer_size, MYF(0));
if (st->attr.buffer)
memcpy(st->attr.buffer, st->attr.static_buffer, ofs + 1 /*term. zero */);
}
else
- st->attr.buffer= (char *) my_realloc(st->attr.buffer,
+ st->attr.buffer= (char *) my_realloc(PSI_INSTRUMENT_ME, st->attr.buffer,
st->attr.buffer_size, MYF(0));
st->attr.start= st->attr.buffer;
st->attr.end= st->attr.start + ofs;