1
0
mirror of https://github.com/MariaDB/server.git synced 2025-11-03 14:33:32 +03:00

MDEV-7947 strcmp() takes 0.37% in OLTP RO

This patch ensures that all identical character sets shares the same
cs->csname.
This allows us to replace strcmp() in my_charset_same() with comparisons
of pointers. This fixes a long standing performance issue that could cause
as strcmp() for every item sent trough the protocol class to the end user.

One consequence of this patch is that we don't allow one to add a character
definition in the Index.xml file that changes the csname of an existing
character set. This is by design as changing character set names of existing
ones is extremely dangerous, especially as some storage engines just records
character set numbers.

As we now have a hash over character set's csname, we can in the future
use that for faster access to a specific character set. This could be done
by changing the hash to non unique and use the hash to find the next
character set with same csname.
This commit is contained in:
Monty
2020-07-20 19:26:31 +03:00
parent 46ffd47f42
commit dbcd3384e0
30 changed files with 386 additions and 245 deletions

View File

@@ -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.
@@ -6807,7 +6809,7 @@ 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 */
@@ -6840,7 +6842,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 */
@@ -6873,7 +6875,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 */
@@ -6906,7 +6908,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 */

View File

@@ -23,6 +23,8 @@
#include "strings_def.h"
#include <m_ctype.h>
const char charset_name_binary[]= "binary";
static const uchar ctype_bin[]=
{
0,
@@ -568,7 +570,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 */

View File

@@ -22,6 +22,7 @@
#ifdef HAVE_CHARSET_cp932
const char charset_name_cp932[]= "cp932";
/*
* This comment is parsed by configure to create ctype.c,
@@ -34764,8 +34765,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,
@@ -34796,8 +34797,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,
@@ -34829,7 +34830,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 */
@@ -34861,7 +34862,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 */

View File

@@ -625,7 +625,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 */

View File

@@ -31,6 +31,7 @@
#ifdef HAVE_CHARSET_euckr
const char charset_name_euckr[]= "euckr";
static const uchar ctype_euc_kr[257] =
{
@@ -10054,7 +10055,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 */
@@ -10087,7 +10088,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 */
@@ -10120,7 +10121,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 */
@@ -10153,7 +10154,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 */

View File

@@ -33,6 +33,8 @@ ctype-ujis.c file.
#ifdef HAVE_CHARSET_eucjpms
const char charset_name_eucjpms[]= "eucjpms";
static const uchar ctype_eucjpms[257] =
{
@@ -67593,7 +67595,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 */
@@ -67626,7 +67628,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 */
@@ -67659,7 +67661,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 */
@@ -67692,7 +67694,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 */

View File

@@ -29,6 +29,8 @@
#ifdef HAVE_CHARSET_gb2312
const char charset_name_gb2312[]= "gb2312";
static const uchar ctype_gb2312[257] =
{
0, /* For standard library */
@@ -6459,7 +6461,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 */
@@ -6492,7 +6494,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 */
@@ -6525,7 +6527,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 */
@@ -6558,7 +6560,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 */

View File

@@ -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 */
@@ -10741,7 +10742,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 */
@@ -10773,7 +10774,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 */
@@ -10806,7 +10807,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 */
@@ -10838,7 +10839,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 */

View File

@@ -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,
@@ -431,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 */
@@ -464,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 +744,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 +777,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 +810,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 */

View File

@@ -22,6 +22,7 @@
#ifdef HAVE_CHARSET_sjis
const char charset_name_sjis[]= "sjis";
/*
* This comment is parsed by configure to create ctype.c,
@@ -34152,7 +34153,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 */
@@ -34184,7 +34185,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 */
@@ -34217,7 +34218,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 */
@@ -34249,7 +34250,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 */

View File

@@ -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
@@ -914,7 +916,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 */
@@ -946,7 +948,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 */
@@ -979,7 +981,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 */
@@ -1012,7 +1014,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 */

File diff suppressed because it is too large Load Diff

View File

@@ -35,7 +35,6 @@
#define HAVE_CHARSET_mb2_or_mb4
#endif
#ifndef EILSEQ
#define EILSEQ ENOENT
#endif
@@ -1278,6 +1277,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)
@@ -1599,7 +1599,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 */
@@ -1632,7 +1632,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 */
@@ -1665,7 +1665,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 */
@@ -1699,7 +1699,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 */
@@ -1940,7 +1940,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 */
@@ -1973,7 +1973,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 */
@@ -2006,7 +2006,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 */
@@ -2040,7 +2040,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 */
@@ -2763,7 +2763,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 */
@@ -2796,7 +2796,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 */
@@ -2829,7 +2829,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 */
@@ -2863,7 +2863,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 */
@@ -3354,7 +3354,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 */
@@ -3387,7 +3387,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 */
@@ -3420,7 +3420,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 */
@@ -3453,7 +3453,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 */
@@ -3486,7 +3486,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 */

View File

@@ -32,6 +32,7 @@
#ifdef HAVE_CHARSET_ujis
const char charset_name_ujis[]= "ujis";
static const uchar ctype_ujis[257] =
{
@@ -67337,7 +67338,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 */
@@ -67370,7 +67371,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 */
@@ -67403,7 +67404,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 */
@@ -67436,7 +67437,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 */

View File

@@ -5473,7 +5473,7 @@ 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 */
MY_UTF8MB3, /* cs name */
charset_name_utf8, /* cs name */
MY_UTF8MB3 "_general_ci", /* name */
"", /* comment */
NULL, /* tailoring */
@@ -5506,7 +5506,7 @@ struct charset_info_st my_charset_utf8mb3_general_mysql500_ci=
{
223,0,0, /* number */
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE, /* state */
MY_UTF8MB3, /* cs name */
charset_name_utf8, /* cs name */
MY_UTF8MB3 "_general_mysql500_ci", /* name */
"", /* comment */
NULL, /* tailoring */
@@ -5539,7 +5539,7 @@ 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 */
MY_UTF8MB3, /* cs name */
charset_name_utf8, /* cs name */
MY_UTF8MB3 "_bin", /* name */
"", /* comment */
NULL, /* tailoring */
@@ -5572,7 +5572,7 @@ 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 */
MY_UTF8MB3, /* cs name */
charset_name_utf8, /* cs name */
MY_UTF8MB3 "_general_nopad_ci", /* name */
"", /* comment */
NULL, /* tailoring */
@@ -5605,7 +5605,7 @@ 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,
MY_UTF8MB3, /* cs name */
charset_name_utf8, /* cs name */
MY_UTF8MB3 "_nopad_bin", /* name */
"", /* comment */
NULL, /* tailoring */
@@ -5767,7 +5767,7 @@ struct charset_info_st my_charset_utf8mb3_general_cs=
{
254,0,0, /* number */
MY_CS_COMPILED|MY_CS_UNICODE, /* state */
MY_UTF8MB3, /* cs name */
charset_name_utf8, /* cs name */
MY_UTF8MB3 "_general_cs", /* name */
"", /* comment */
NULL, /* tailoring */
@@ -7809,7 +7809,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 */
@@ -7843,7 +7843,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 */
@@ -7877,7 +7877,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 */
@@ -7911,7 +7911,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 */

View File

@@ -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,
@@ -690,7 +691,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 */

View File

@@ -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

View File

@@ -130,4 +130,13 @@ int my_wc_to_printable_generic(CHARSET_INFO *cs, my_wc_t wc,
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 */