diff options
author | Alexander Barkov <bar@mariadb.org> | 2016-09-06 12:50:02 +0400 |
---|---|---|
committer | Alexander Barkov <bar@mariadb.org> | 2016-09-06 12:50:02 +0400 |
commit | ee19806b8e6bb00fa1cd547fe3e75193859d300d (patch) | |
tree | 27568e9cc17e2717785af028c65deb912731bfb9 /strings | |
parent | e4f6fd5e1252f8c68f449fe820bae88c18bca8f5 (diff) | |
download | mariadb-git-ee19806b8e6bb00fa1cd547fe3e75193859d300d.tar.gz |
MDEV-9711 NO PAD collations
Based on the patch from Daniil Medvedev (a Google Summer of Code task)
Diffstat (limited to 'strings')
-rw-r--r-- | strings/conf_to_src.c | 16 | ||||
-rw-r--r-- | strings/ctype-big5.c | 114 | ||||
-rw-r--r-- | strings/ctype-bin.c | 74 | ||||
-rw-r--r-- | strings/ctype-cp932.c | 113 | ||||
-rw-r--r-- | strings/ctype-euc_kr.c | 112 | ||||
-rw-r--r-- | strings/ctype-eucjpms.c | 118 | ||||
-rw-r--r-- | strings/ctype-extra.c | 2022 | ||||
-rw-r--r-- | strings/ctype-gb2312.c | 111 | ||||
-rw-r--r-- | strings/ctype-gbk.c | 109 | ||||
-rw-r--r-- | strings/ctype-latin1.c | 66 | ||||
-rw-r--r-- | strings/ctype-mb.c | 70 | ||||
-rw-r--r-- | strings/ctype-simple.c | 109 | ||||
-rw-r--r-- | strings/ctype-sjis.c | 113 | ||||
-rw-r--r-- | strings/ctype-tis620.c | 113 | ||||
-rw-r--r-- | strings/ctype-ucs2.c | 560 | ||||
-rw-r--r-- | strings/ctype-ujis.c | 118 | ||||
-rw-r--r-- | strings/ctype-utf8.c | 443 | ||||
-rw-r--r-- | strings/ctype.c | 2 | ||||
-rw-r--r-- | strings/strcoll.ic | 28 | ||||
-rw-r--r-- | strings/strings_def.h | 2 |
20 files changed, 4080 insertions, 333 deletions
diff --git a/strings/conf_to_src.c b/strings/conf_to_src.c index 1382ec69a0a..c7f25331534 100644 --- a/strings/conf_to_src.c +++ b/strings/conf_to_src.c @@ -338,16 +338,23 @@ print_array_ref(FILE *f, } +static const char *nopad_infix(CHARSET_INFO *cs) +{ + return (cs->state & MY_CS_NOPAD) ? "_nopad" : ""; +} + + void dispcset(FILE *f,CHARSET_INFO *cs) { fprintf(f,"{\n"); fprintf(f," %d,%d,%d,\n",cs->number,0,0); - fprintf(f," MY_CS_COMPILED%s%s%s%s%s,\n", + fprintf(f," MY_CS_COMPILED%s%s%s%s%s%s,\n", cs->state & MY_CS_BINSORT ? "|MY_CS_BINSORT" : "", cs->state & MY_CS_PRIMARY ? "|MY_CS_PRIMARY" : "", cs->state & MY_CS_CSSORT ? "|MY_CS_CSSORT" : "", cs->state & MY_CS_PUREASCII ? "|MY_CS_PUREASCII" : "", - cs->state & MY_CS_NONASCII ? "|MY_CS_NONASCII" : ""); + cs->state & MY_CS_NONASCII ? "|MY_CS_NONASCII" : "", + cs->state & MY_CS_NOPAD ? "|MY_CS_NOPAD" : ""); if (cs->name) { @@ -402,10 +409,11 @@ void dispcset(FILE *f,CHARSET_INFO *cs) fprintf(f," 0, /* escape_with_backslash_is_dangerous */\n"); fprintf(f," 1, /* levels_for_order */\n"); fprintf(f," &my_charset_8bit_handler,\n"); + if (cs->state & MY_CS_BINSORT) - fprintf(f," &my_collation_8bit_bin_handler,\n"); + fprintf(f," &my_collation_8bit%s_bin_handler,\n", nopad_infix(cs)); else - fprintf(f," &my_collation_8bit_simple_ci_handler,\n"); + fprintf(f," &my_collation_8bit_simple%s_ci_handler,\n", nopad_infix(cs)); fprintf(f,"}\n"); } diff --git a/strings/ctype-big5.c b/strings/ctype-big5.c index 9ae394eeedc..dd66da224ba 100644 --- a/strings/ctype-big5.c +++ b/strings/ctype-big5.c @@ -6690,6 +6690,22 @@ my_mb_wc_big5(CHARSET_INFO *cs __attribute__((unused)), #include "strcoll.ic" +#define DEFINE_STRNNCOLLSP_NOPAD +#define MY_FUNCTION_NAME(x) my_ ## x ## _big5_chinese_nopad_ci +#define WEIGHT_MB1(x) (sort_order_big5[(uchar) (x)]) +#define WEIGHT_MB2(x,y) (big5code(x, y)) +#define WEIGHT_MB2_FRM(x,y) (big5strokexfrm((uint16) WEIGHT_MB2(x, y))) +#define DEFINE_STRNXFRM +#include "strcoll.ic" + + +#define DEFINE_STRNNCOLLSP_NOPAD +#define MY_FUNCTION_NAME(x) my_ ## x ## _big5_nopad_bin +#define WEIGHT_MB1(x) ((uchar) (x)) +#define WEIGHT_MB2(x,y) (big5code(x, y)) +#include "strcoll.ic" + + static MY_COLLATION_HANDLER my_collation_handler_big5_chinese_ci= { NULL, /* init */ @@ -6722,6 +6738,38 @@ static MY_COLLATION_HANDLER my_collation_handler_big5_bin= }; +static MY_COLLATION_HANDLER my_collation_handler_big5_chinese_nopad_ci= +{ + NULL, /* init */ + my_strnncoll_big5_chinese_ci, + my_strnncollsp_big5_chinese_nopad_ci, + my_strnxfrm_big5_chinese_nopad_ci, + my_strnxfrmlen_simple, + my_like_range_mb, + my_wildcmp_mb, + my_strcasecmp_mb, + my_instr_mb, + my_hash_sort_simple_nopad, + my_propagate_simple +}; + + +static MY_COLLATION_HANDLER my_collation_handler_big5_nopad_bin= +{ + NULL, /* init */ + my_strnncoll_big5_bin, + my_strnncollsp_big5_nopad_bin, + my_strnxfrm_mb_nopad, + my_strnxfrmlen_simple, + my_like_range_mb, + my_wildcmp_mb_bin, + my_strcasecmp_mb_bin, + my_instr_mb, + my_hash_sort_mb_nopad_bin, + my_propagate_simple +}; + + static MY_CHARSET_HANDLER my_charset_big5_handler= { NULL, /* init */ @@ -6821,4 +6869,70 @@ struct charset_info_st my_charset_big5_bin= }; +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 */ + "big5_chinese_nopad_ci", /* name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_big5, + to_lower_big5, + to_upper_big5, + sort_order_big5, + NULL, /* uca */ + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + &my_caseinfo_big5, /* caseinfo */ + NULL, /* state_map */ + NULL, /* ident_map */ + 1, /* strxfrm_multiply */ + 1, /* caseup_multiply */ + 1, /* casedn_multiply */ + 1, /* mbminlen */ + 2, /* mbmaxlen */ + 0, /* min_sort_char */ + 0xF9D5, /* max_sort_char */ + ' ', /* pad char */ + 1, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_big5_handler, + &my_collation_handler_big5_chinese_nopad_ci +}; + + +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 */ + "big5_nopad_bin", /* name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_big5, + to_lower_big5, + to_upper_big5, + NULL, /* sort_order */ + NULL, /* uca */ + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + &my_caseinfo_big5, /* caseinfo */ + NULL, /* state_map */ + NULL, /* ident_map */ + 1, /* strxfrm_multiply */ + 1, /* caseup_multiply */ + 1, /* casedn_multiply */ + 1, /* mbminlen */ + 2, /* mbmaxlen */ + 0, /* min_sort_char */ + 0xF9FE, /* max_sort_char */ + ' ', /* pad char */ + 1, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_big5_handler, + &my_collation_handler_big5_nopad_bin +}; + + #endif diff --git a/strings/ctype-bin.c b/strings/ctype-bin.c index aab7f2b7448..5655edd6063 100644 --- a/strings/ctype-bin.c +++ b/strings/ctype-bin.c @@ -199,6 +199,15 @@ static int my_strnncollsp_8bit_bin(CHARSET_INFO * cs __attribute__((unused)), } +static int my_strnncollsp_8bit_nopad_bin(CHARSET_INFO * cs + __attribute__((unused)), + const uchar *a, size_t a_length, + const uchar *b, size_t b_length) +{ + return my_strnncoll_8bit_bin(cs, a, a_length, b, b_length, FALSE); +} + + /* This function is used for all conversion functions */ static size_t my_case_str_bin(CHARSET_INFO *cs __attribute__((unused)), @@ -253,19 +262,13 @@ int my_wc_mb_bin(CHARSET_INFO *cs __attribute__((unused)), } -void my_hash_sort_8bit_bin(CHARSET_INFO *cs __attribute__((unused)), - const uchar *key, size_t len, - ulong *nr1, ulong *nr2) +void my_hash_sort_bin(CHARSET_INFO *cs __attribute__((unused)), + const uchar *key, size_t len,ulong *nr1, ulong *nr2) { + const uchar *end = key + len; ulong tmp1= *nr1; ulong tmp2= *nr2; - /* - Remove trailing spaces. We have to do this to be able to compare - 'A ' and 'A' as identical - */ - const uchar *end = skip_trailing_space(key, len); - for (; key < end ; key++) { MY_HASH_ADD(tmp1, tmp2, (uint) *key); @@ -276,20 +279,16 @@ void my_hash_sort_8bit_bin(CHARSET_INFO *cs __attribute__((unused)), } -void my_hash_sort_bin(CHARSET_INFO *cs __attribute__((unused)), - const uchar *key, size_t len,ulong *nr1, ulong *nr2) +void my_hash_sort_8bit_bin(CHARSET_INFO *cs __attribute__((unused)), + const uchar *key, size_t len, + ulong *nr1, ulong *nr2) { - const uchar *end = key + len; - ulong tmp1= *nr1; - ulong tmp2= *nr2; - - for (; key < end ; key++) - { - MY_HASH_ADD(tmp1, tmp2, (uint) *key); - } - - *nr1= tmp1; - *nr2= tmp2; + /* + Remove trailing spaces. We have to do this to be able to compare + 'A ' and 'A' as identical + */ + const uchar *end= skip_trailing_space(key, len); + my_hash_sort_bin(cs, key, end - key, nr1, nr2); } @@ -407,6 +406,21 @@ my_strnxfrm_8bit_bin(CHARSET_INFO *cs, } +static size_t +my_strnxfrm_8bit_nopad_bin(CHARSET_INFO *cs, + uchar * dst, size_t dstlen, uint nweights, + const uchar *src, size_t srclen, uint flags) +{ + set_if_smaller(srclen, dstlen); + set_if_smaller(srclen, nweights); + if (dst != src) + memcpy(dst, src, srclen); + return my_strxfrm_pad_desc_and_reverse_nopad(cs, dst, dst + srclen, + dst + dstlen, nweights - srclen, + flags, 0); +} + + static uint my_instr_bin(CHARSET_INFO *cs __attribute__((unused)), const char *b, size_t b_length, @@ -484,6 +498,22 @@ MY_COLLATION_HANDLER my_collation_8bit_bin_handler = }; +MY_COLLATION_HANDLER my_collation_8bit_nopad_bin_handler = +{ + my_coll_init_8bit_bin, + my_strnncoll_8bit_bin, + my_strnncollsp_8bit_nopad_bin, + my_strnxfrm_8bit_nopad_bin, + my_strnxfrmlen_simple, + my_like_range_simple, + my_wildcmp_bin, + my_strcasecmp_bin, + my_instr_bin, + my_hash_sort_bin, + my_propagate_simple +}; + + static MY_COLLATION_HANDLER my_collation_binary_handler = { NULL, /* init */ diff --git a/strings/ctype-cp932.c b/strings/ctype-cp932.c index 151fac8a052..83f8d40c480 100644 --- a/strings/ctype-cp932.c +++ b/strings/ctype-cp932.c @@ -34646,6 +34646,22 @@ size_t my_numcells_cp932(CHARSET_INFO *cs __attribute__((unused)), #include "strcoll.ic" +#define DEFINE_STRNNCOLLSP_NOPAD +#define MY_FUNCTION_NAME(x) my_ ## x ## _cp932_japanese_nopad_ci +#define WEIGHT_PAD_SPACE (256 * (int) ' ') +#define WEIGHT_MB1(x) (256 * (int) sort_order_cp932[(uchar) (x)]) +#define WEIGHT_MB2(x,y) (cp932code(x, y)) +#include "strcoll.ic" + + +#define DEFINE_STRNNCOLLSP_NOPAD +#define MY_FUNCTION_NAME(x) my_ ## x ## _cp932_nopad_bin +#define WEIGHT_PAD_SPACE (256 * (int) ' ') +#define WEIGHT_MB1(x) (256 * (int) (uchar) (x)) +#define WEIGHT_MB2(x,y) (cp932code(x, y)) +#include "strcoll.ic" + + static MY_COLLATION_HANDLER my_collation_handler_cp932_japanese_ci= { NULL, /* init */ @@ -34678,6 +34694,38 @@ static MY_COLLATION_HANDLER my_collation_handler_cp932_bin= }; +static MY_COLLATION_HANDLER my_collation_handler_cp932_japanese_nopad_ci= +{ + NULL, /* init */ + my_strnncoll_cp932_japanese_ci, + my_strnncollsp_cp932_japanese_nopad_ci, + my_strnxfrm_mb_nopad, + my_strnxfrmlen_simple, + my_like_range_mb, + my_wildcmp_mb, + my_strcasecmp_8bit, + my_instr_mb, + my_hash_sort_simple_nopad, + my_propagate_simple +}; + + +static MY_COLLATION_HANDLER my_collation_handler_cp932_nopad_bin= +{ + NULL, /* init */ + my_strnncoll_cp932_bin, + my_strnncollsp_cp932_nopad_bin, + my_strnxfrm_mb_nopad, + my_strnxfrmlen_simple, + my_like_range_mb, + my_wildcmp_mb_bin, + my_strcasecmp_mb_bin, + my_instr_mb, + my_hash_sort_mb_nopad_bin, + my_propagate_simple +}; + + static MY_CHARSET_HANDLER my_charset_handler= { NULL, /* init */ @@ -34776,4 +34824,69 @@ struct charset_info_st my_charset_cp932_bin= &my_collation_handler_cp932_bin }; + +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 */ + "cp932_japanese_nopad_ci",/* name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_cp932, + to_lower_cp932, + to_upper_cp932, + sort_order_cp932, + NULL, /* uca */ + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + &my_caseinfo_cp932, /* caseinfo */ + NULL, /* state_map */ + NULL, /* ident_map */ + 1, /* strxfrm_multiply */ + 1, /* caseup_multiply */ + 1, /* casedn_multiply */ + 1, /* mbminlen */ + 2, /* mbmaxlen */ + 0, /* min_sort_char */ + 0xFCFC, /* max_sort_char */ + ' ', /* pad char */ + 1, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_handler, + &my_collation_handler_cp932_japanese_nopad_ci +}; + +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 */ + "cp932_nopad_bin", /* name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_cp932, + to_lower_cp932, + to_upper_cp932, + NULL, /* sort_order */ + NULL, /* uca */ + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + &my_caseinfo_cp932, /* caseinfo */ + NULL, /* state_map */ + NULL, /* ident_map */ + 1, /* strxfrm_multiply */ + 1, /* caseup_multiply */ + 1, /* casedn_multiply */ + 1, /* mbminlen */ + 2, /* mbmaxlen */ + 0, /* min_sort_char */ + 0xFCFC, /* max_sort_char */ + ' ', /* pad char */ + 1, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_handler, + &my_collation_handler_cp932_nopad_bin +}; + #endif diff --git a/strings/ctype-euc_kr.c b/strings/ctype-euc_kr.c index d2389136c49..e2a50da2ed4 100644 --- a/strings/ctype-euc_kr.c +++ b/strings/ctype-euc_kr.c @@ -9938,6 +9938,20 @@ my_mb_wc_euc_kr(CHARSET_INFO *cs __attribute__((unused)), #include "strcoll.ic" +#define DEFINE_STRNNCOLLSP_NOPAD +#define MY_FUNCTION_NAME(x) my_ ## x ## _euckr_korean_nopad_ci +#define WEIGHT_MB1(x) (sort_order_euc_kr[(uchar) (x)]) +#define WEIGHT_MB2(x,y) (euckrcode(x, y)) +#include "strcoll.ic" + + +#define DEFINE_STRNNCOLLSP_NOPAD +#define MY_FUNCTION_NAME(x) my_ ## x ## _euckr_nopad_bin +#define WEIGHT_MB1(x) ((uchar) (x)) +#define WEIGHT_MB2(x,y) (euckrcode(x, y)) +#include "strcoll.ic" + + static MY_COLLATION_HANDLER my_collation_handler_euckr_korean_ci= { NULL, /* init */ @@ -9970,6 +9984,38 @@ static MY_COLLATION_HANDLER my_collation_handler_euckr_bin= }; +static MY_COLLATION_HANDLER my_collation_handler_euckr_korean_nopad_ci= +{ + NULL, /* init */ + my_strnncoll_euckr_korean_ci, + my_strnncollsp_euckr_korean_nopad_ci, + my_strnxfrm_mb_nopad, + my_strnxfrmlen_simple, + my_like_range_mb, + my_wildcmp_mb, + my_strcasecmp_mb, + my_instr_mb, + my_hash_sort_simple_nopad, + my_propagate_simple +}; + + +static MY_COLLATION_HANDLER my_collation_handler_euckr_nopad_bin= +{ + NULL, /* init */ + my_strnncoll_euckr_bin, + my_strnncollsp_euckr_nopad_bin, + my_strnxfrm_mb_nopad, + my_strnxfrmlen_simple, + my_like_range_mb, + my_wildcmp_mb_bin, + my_strcasecmp_mb_bin, + my_instr_mb, + my_hash_sort_mb_nopad_bin, + my_propagate_simple +}; + + static MY_CHARSET_HANDLER my_charset_handler= { NULL, /* init */ @@ -10069,4 +10115,70 @@ struct charset_info_st my_charset_euckr_bin= &my_collation_handler_euckr_bin }; + +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 */ + "euckr_korean_nopad_ci", /* name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_euc_kr, + to_lower_euc_kr, + to_upper_euc_kr, + sort_order_euc_kr, + NULL, /* uca */ + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + &my_caseinfo_euckr, /* caseinfo */ + NULL, /* state_map */ + NULL, /* ident_map */ + 1, /* strxfrm_multiply */ + 1, /* caseup_multiply */ + 1, /* casedn_multiply */ + 1, /* mbminlen */ + 2, /* mbmaxlen */ + 0, /* min_sort_char */ + 0xFEFE, /* max_sort_char */ + ' ', /* pad char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_handler, + &my_collation_handler_euckr_korean_nopad_ci +}; + + +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 */ + "euckr_nopad_bin", /* name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_euc_kr, + to_lower_euc_kr, + to_upper_euc_kr, + NULL, /* sort_order */ + NULL, /* uca */ + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + &my_caseinfo_euckr, /* caseinfo */ + NULL, /* state_map */ + NULL, /* ident_map */ + 1, /* strxfrm_multiply */ + 1, /* caseup_multiply */ + 1, /* casedn_multiply */ + 1, /* mbminlen */ + 2, /* mbmaxlen */ + 0, /* min_sort_char */ + 0xFEFE, /* max_sort_char */ + ' ', /* pad char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_handler, + &my_collation_handler_euckr_nopad_bin +}; + #endif diff --git a/strings/ctype-eucjpms.c b/strings/ctype-eucjpms.c index caafd1d13b4..47d03bd5d99 100644 --- a/strings/ctype-eucjpms.c +++ b/strings/ctype-eucjpms.c @@ -221,6 +221,26 @@ static const uchar sort_order_eucjpms[]= #include "strcoll.ic" +#define DEFINE_STRNNCOLLSP_NOPAD +#define MY_FUNCTION_NAME(x) my_ ## x ## _eucjpms_japanese_nopad_ci +#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x)) +#define WEIGHT_MB1(x) ((int) sort_order_eucjpms[(uchar) (x)]) +#define WEIGHT_MB2(x,y) ((((uint) (uchar)(x)) << 16) | \ + (((uint) (uchar) (y)) << 8)) +#define WEIGHT_MB3(x,y,z) (WEIGHT_MB2(x,y) | ((uint) (uchar) z)) +#include "strcoll.ic" + + +#define DEFINE_STRNNCOLLSP_NOPAD +#define MY_FUNCTION_NAME(x) my_ ## x ## _eucjpms_nopad_bin +#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x)) +#define WEIGHT_MB1(x) ((int) (uchar) (x)) +#define WEIGHT_MB2(x,y) ((((uint) (uchar)(x)) << 16) | \ + (((uint) (uchar) (y)) << 8)) +#define WEIGHT_MB3(x,y,z) (WEIGHT_MB2(x,y) | ((uint) (uchar) z)) +#include "strcoll.ic" + + /* Case info pages for JIS-X-0208 range */ static MY_UNICASE_CHARACTER cA2[256]= @@ -67502,6 +67522,38 @@ static MY_COLLATION_HANDLER my_collation_eucjpms_bin_handler = }; +static MY_COLLATION_HANDLER my_collation_eucjpms_japanese_nopad_ci_handler = +{ + NULL, /* init */ + my_strnncoll_eucjpms_japanese_ci, + my_strnncollsp_eucjpms_japanese_nopad_ci, + my_strnxfrm_mb_nopad, /* strnxfrm */ + my_strnxfrmlen_simple, + my_like_range_mb, /* like_range */ + my_wildcmp_mb, /* wildcmp */ + my_strcasecmp_mb, + my_instr_mb, + my_hash_sort_simple_nopad, + my_propagate_simple +}; + + +static MY_COLLATION_HANDLER my_collation_eucjpms_nopad_bin_handler = +{ + NULL, /* init */ + my_strnncoll_eucjpms_bin, + my_strnncollsp_eucjpms_nopad_bin, + my_strnxfrm_mb_nopad, + my_strnxfrmlen_simple, + my_like_range_mb, + my_wildcmp_mb_bin, + my_strcasecmp_mb_bin, + my_instr_mb, + my_hash_sort_mb_nopad_bin, + my_propagate_simple +}; + + static MY_CHARSET_HANDLER my_charset_handler= { NULL, /* init */ @@ -67603,4 +67655,70 @@ struct charset_info_st my_charset_eucjpms_bin= }; +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 */ + "eucjpms_japanese_nopad_ci", /* name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_eucjpms, + to_lower_eucjpms, + to_upper_eucjpms, + sort_order_eucjpms, + NULL, /* uca */ + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + &my_caseinfo_eucjpms,/* caseinfo */ + NULL, /* state_map */ + NULL, /* ident_map */ + 1, /* strxfrm_multiply */ + 1, /* caseup_multiply */ + 2, /* casedn_multiply */ + 1, /* mbminlen */ + 3, /* mbmaxlen */ + 0, /* min_sort_char */ + 0xFEFE, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_handler, + &my_collation_eucjpms_japanese_nopad_ci_handler +}; + + +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 */ + "eucjpms_nopad_bin", /* name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_eucjpms, + to_lower_eucjpms, + to_upper_eucjpms, + NULL, /* sort_order */ + NULL, /* uca */ + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + &my_caseinfo_eucjpms,/* caseinfo */ + NULL, /* state_map */ + NULL, /* ident_map */ + 1, /* strxfrm_multiply */ + 1, /* caseup_multiply */ + 2, /* casedn_multiply */ + 1, /* mbminlen */ + 3, /* mbmaxlen */ + 0, /* min_sort_char */ + 0xFEFE, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_handler, + &my_collation_eucjpms_nopad_bin_handler +}; + + #endif diff --git a/strings/ctype-extra.c b/strings/ctype-extra.c index caf8ebaf0a7..a2eb2b80e49 100644 --- a/strings/ctype-extra.c +++ b/strings/ctype-extra.c @@ -3535,6 +3535,144 @@ static const uchar sort_order_cp1250_polish_ci[] = { #endif +#ifdef HAVE_CHARSET_dec8 +#endif + +#ifdef HAVE_CHARSET_cp850 +#endif + +#ifdef HAVE_CHARSET_hp8 +#endif + +#ifdef HAVE_CHARSET_koi8r +#endif + +#ifdef HAVE_CHARSET_latin2 +#endif + +#ifdef HAVE_CHARSET_swe7 +#endif + +#ifdef HAVE_CHARSET_ascii +#endif + +#ifdef HAVE_CHARSET_hebrew +#endif + +#ifdef HAVE_CHARSET_koi8u +#endif + +#ifdef HAVE_CHARSET_greek +#endif + +#ifdef HAVE_CHARSET_cp1250 +#endif + +#ifdef HAVE_CHARSET_latin5 +#endif + +#ifdef HAVE_CHARSET_armscii8 +#endif + +#ifdef HAVE_CHARSET_cp866 +#endif + +#ifdef HAVE_CHARSET_keybcs2 +#endif + +#ifdef HAVE_CHARSET_macce +#endif + +#ifdef HAVE_CHARSET_macroman +#endif + +#ifdef HAVE_CHARSET_cp852 +#endif + +#ifdef HAVE_CHARSET_latin7 +#endif + +#ifdef HAVE_CHARSET_macce +#endif + +#ifdef HAVE_CHARSET_cp1251 +#endif + +#ifdef HAVE_CHARSET_cp1251 +#endif + +#ifdef HAVE_CHARSET_macroman +#endif + +#ifdef HAVE_CHARSET_cp1256 +#endif + +#ifdef HAVE_CHARSET_cp1257 +#endif + +#ifdef HAVE_CHARSET_cp1257 +#endif + +#ifdef HAVE_CHARSET_armscii8 +#endif + +#ifdef HAVE_CHARSET_ascii +#endif + +#ifdef HAVE_CHARSET_cp1250 +#endif + +#ifdef HAVE_CHARSET_cp1256 +#endif + +#ifdef HAVE_CHARSET_cp866 +#endif + +#ifdef HAVE_CHARSET_dec8 +#endif + +#ifdef HAVE_CHARSET_greek +#endif + +#ifdef HAVE_CHARSET_hebrew +#endif + +#ifdef HAVE_CHARSET_hp8 +#endif + +#ifdef HAVE_CHARSET_keybcs2 +#endif + +#ifdef HAVE_CHARSET_koi8r +#endif + +#ifdef HAVE_CHARSET_koi8u +#endif + +#ifdef HAVE_CHARSET_latin2 +#endif + +#ifdef HAVE_CHARSET_latin5 +#endif + +#ifdef HAVE_CHARSET_latin7 +#endif + +#ifdef HAVE_CHARSET_cp850 +#endif + +#ifdef HAVE_CHARSET_cp852 +#endif + +#ifdef HAVE_CHARSET_swe7 +#endif + +#ifdef HAVE_CHARSET_geostd8 +#endif + +#ifdef HAVE_CHARSET_geostd8 +#endif + struct charset_info_st compiled_charsets[] = { #ifdef HAVE_CHARSET_dec8 { @@ -3545,11 +3683,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_dec8_swedish_ci, /* ctype */ - to_lower_dec8_swedish_ci, /* lower */ - to_upper_dec8_swedish_ci, /* upper */ + to_lower_dec8_swedish_ci, /* to_lower */ + to_upper_dec8_swedish_ci, /* to_upper */ sort_order_dec8_swedish_ci, /* sort_order */ NULL, /* uca */ - to_uni_dec8_swedish_ci, /* to_uni */ + to_uni_dec8_swedish_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -3578,11 +3716,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_cp850_general_ci, /* ctype */ - to_lower_cp850_general_ci, /* lower */ - to_upper_cp850_general_ci, /* upper */ + to_lower_cp850_general_ci, /* to_lower */ + to_upper_cp850_general_ci, /* to_upper */ sort_order_cp850_general_ci, /* sort_order */ NULL, /* uca */ - to_uni_cp850_general_ci, /* to_uni */ + to_uni_cp850_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -3611,11 +3749,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_latin1_german1_ci, /* ctype */ - to_lower_latin1_german1_ci, /* lower */ - to_upper_latin1_german1_ci, /* upper */ + to_lower_latin1_german1_ci, /* to_lower */ + to_upper_latin1_german1_ci, /* to_upper */ sort_order_latin1_german1_ci, /* sort_order */ NULL, /* uca */ - to_uni_latin1_german1_ci, /* to_uni */ + to_uni_latin1_german1_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -3644,11 +3782,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_hp8_english_ci, /* ctype */ - to_lower_hp8_english_ci, /* lower */ - to_upper_hp8_english_ci, /* upper */ + to_lower_hp8_english_ci, /* to_lower */ + to_upper_hp8_english_ci, /* to_upper */ sort_order_hp8_english_ci, /* sort_order */ NULL, /* uca */ - to_uni_hp8_english_ci, /* to_uni */ + to_uni_hp8_english_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -3677,11 +3815,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_koi8r_general_ci, /* ctype */ - to_lower_koi8r_general_ci, /* lower */ - to_upper_koi8r_general_ci, /* upper */ + to_lower_koi8r_general_ci, /* to_lower */ + to_upper_koi8r_general_ci, /* to_upper */ sort_order_koi8r_general_ci, /* sort_order */ NULL, /* uca */ - to_uni_koi8r_general_ci, /* to_uni */ + to_uni_koi8r_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -3710,11 +3848,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_latin2_general_ci, /* ctype */ - to_lower_latin2_general_ci, /* lower */ - to_upper_latin2_general_ci, /* upper */ + to_lower_latin2_general_ci, /* to_lower */ + to_upper_latin2_general_ci, /* to_upper */ sort_order_latin2_general_ci, /* sort_order */ NULL, /* uca */ - to_uni_latin2_general_ci, /* to_uni */ + to_uni_latin2_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -3743,11 +3881,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_swe7_swedish_ci, /* ctype */ - to_lower_swe7_swedish_ci, /* lower */ - to_upper_swe7_swedish_ci, /* upper */ + to_lower_swe7_swedish_ci, /* to_lower */ + to_upper_swe7_swedish_ci, /* to_upper */ sort_order_swe7_swedish_ci, /* sort_order */ NULL, /* uca */ - to_uni_swe7_swedish_ci, /* to_uni */ + to_uni_swe7_swedish_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -3776,11 +3914,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_ascii_general_ci, /* ctype */ - to_lower_ascii_general_ci, /* lower */ - to_upper_ascii_general_ci, /* upper */ + to_lower_ascii_general_ci, /* to_lower */ + to_upper_ascii_general_ci, /* to_upper */ sort_order_ascii_general_ci, /* sort_order */ NULL, /* uca */ - to_uni_ascii_general_ci, /* to_uni */ + to_uni_ascii_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -3809,11 +3947,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_cp1251_general_ci, /* ctype */ - to_lower_cp1251_general_ci, /* lower */ - to_upper_cp1251_general_ci, /* upper */ + to_lower_cp1251_general_ci, /* to_lower */ + to_upper_cp1251_general_ci, /* to_upper */ sort_order_cp1251_bulgarian_ci, /* sort_order */ NULL, /* uca */ - to_uni_cp1251_general_ci, /* to_uni */ + to_uni_cp1251_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -3842,11 +3980,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_latin1_danish_ci, /* ctype */ - to_lower_latin1_danish_ci, /* lower */ - to_upper_latin1_danish_ci, /* upper */ + to_lower_latin1_danish_ci, /* to_lower */ + to_upper_latin1_danish_ci, /* to_upper */ sort_order_latin1_danish_ci, /* sort_order */ NULL, /* uca */ - to_uni_latin1_danish_ci, /* to_uni */ + to_uni_latin1_danish_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -3875,11 +4013,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_hebrew_general_ci, /* ctype */ - to_lower_hebrew_general_ci, /* lower */ - to_upper_hebrew_general_ci, /* upper */ + to_lower_hebrew_general_ci, /* to_lower */ + to_upper_hebrew_general_ci, /* to_upper */ sort_order_hebrew_general_ci, /* sort_order */ NULL, /* uca */ - to_uni_hebrew_general_ci, /* to_uni */ + to_uni_hebrew_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -3908,11 +4046,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_latin7_general_ci, /* ctype */ - to_lower_latin7_general_ci, /* lower */ - to_upper_latin7_general_ci, /* upper */ + to_lower_latin7_general_ci, /* to_lower */ + to_upper_latin7_general_ci, /* to_upper */ sort_order_latin7_estonian_cs, /* sort_order */ NULL, /* uca */ - to_uni_latin7_general_ci, /* to_uni */ + to_uni_latin7_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -3941,11 +4079,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_latin2_general_ci, /* ctype */ - to_lower_latin2_general_ci, /* lower */ - to_upper_latin2_general_ci, /* upper */ + to_lower_latin2_general_ci, /* to_lower */ + to_upper_latin2_general_ci, /* to_upper */ sort_order_latin2_hungarian_ci, /* sort_order */ NULL, /* uca */ - to_uni_latin2_general_ci, /* to_uni */ + to_uni_latin2_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -3974,11 +4112,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_koi8u_general_ci, /* ctype */ - to_lower_koi8u_general_ci, /* lower */ - to_upper_koi8u_general_ci, /* upper */ + to_lower_koi8u_general_ci, /* to_lower */ + to_upper_koi8u_general_ci, /* to_upper */ sort_order_koi8u_general_ci, /* sort_order */ NULL, /* uca */ - to_uni_koi8u_general_ci, /* to_uni */ + to_uni_koi8u_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -4007,11 +4145,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_cp1251_general_ci, /* ctype */ - to_lower_cp1251_general_ci, /* lower */ - to_upper_cp1251_general_ci, /* upper */ + to_lower_cp1251_general_ci, /* to_lower */ + to_upper_cp1251_general_ci, /* to_upper */ sort_order_cp1251_ukrainian_ci, /* sort_order */ NULL, /* uca */ - to_uni_cp1251_general_ci, /* to_uni */ + to_uni_cp1251_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -4040,11 +4178,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_greek_general_ci, /* ctype */ - to_lower_greek_general_ci, /* lower */ - to_upper_greek_general_ci, /* upper */ + to_lower_greek_general_ci, /* to_lower */ + to_upper_greek_general_ci, /* to_upper */ sort_order_greek_general_ci, /* sort_order */ NULL, /* uca */ - to_uni_greek_general_ci, /* to_uni */ + to_uni_greek_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -4073,11 +4211,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_cp1250_general_ci, /* ctype */ - to_lower_cp1250_general_ci, /* lower */ - to_upper_cp1250_general_ci, /* upper */ + to_lower_cp1250_general_ci, /* to_lower */ + to_upper_cp1250_general_ci, /* to_upper */ sort_order_cp1250_general_ci, /* sort_order */ NULL, /* uca */ - to_uni_cp1250_general_ci, /* to_uni */ + to_uni_cp1250_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -4106,11 +4244,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_latin2_general_ci, /* ctype */ - to_lower_latin2_general_ci, /* lower */ - to_upper_latin2_general_ci, /* upper */ + to_lower_latin2_general_ci, /* to_lower */ + to_upper_latin2_general_ci, /* to_upper */ sort_order_latin2_croatian_ci, /* sort_order */ NULL, /* uca */ - to_uni_latin2_general_ci, /* to_uni */ + to_uni_latin2_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -4139,11 +4277,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_cp1257_general_ci, /* ctype */ - to_lower_cp1257_general_ci, /* lower */ - to_upper_cp1257_general_ci, /* upper */ + to_lower_cp1257_general_ci, /* to_lower */ + to_upper_cp1257_general_ci, /* to_upper */ sort_order_cp1257_lithuanian_ci, /* sort_order */ NULL, /* uca */ - to_uni_cp1257_general_ci, /* to_uni */ + to_uni_cp1257_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -4172,11 +4310,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_latin5_turkish_ci, /* ctype */ - to_lower_latin5_turkish_ci, /* lower */ - to_upper_latin5_turkish_ci, /* upper */ + to_lower_latin5_turkish_ci, /* to_lower */ + to_upper_latin5_turkish_ci, /* to_upper */ sort_order_latin5_turkish_ci, /* sort_order */ NULL, /* uca */ - to_uni_latin5_turkish_ci, /* to_uni */ + to_uni_latin5_turkish_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -4205,11 +4343,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_armscii8_general_ci, /* ctype */ - to_lower_armscii8_general_ci, /* lower */ - to_upper_armscii8_general_ci, /* upper */ + to_lower_armscii8_general_ci, /* to_lower */ + to_upper_armscii8_general_ci, /* to_upper */ sort_order_armscii8_general_ci, /* sort_order */ NULL, /* uca */ - to_uni_armscii8_general_ci, /* to_uni */ + to_uni_armscii8_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -4238,11 +4376,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_cp866_general_ci, /* ctype */ - to_lower_cp866_general_ci, /* lower */ - to_upper_cp866_general_ci, /* upper */ + to_lower_cp866_general_ci, /* to_lower */ + to_upper_cp866_general_ci, /* to_upper */ sort_order_cp866_general_ci, /* sort_order */ NULL, /* uca */ - to_uni_cp866_general_ci, /* to_uni */ + to_uni_cp866_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -4271,11 +4409,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_keybcs2_general_ci, /* ctype */ - to_lower_keybcs2_general_ci, /* lower */ - to_upper_keybcs2_general_ci, /* upper */ + to_lower_keybcs2_general_ci, /* to_lower */ + to_upper_keybcs2_general_ci, /* to_upper */ sort_order_keybcs2_general_ci, /* sort_order */ NULL, /* uca */ - to_uni_keybcs2_general_ci, /* to_uni */ + to_uni_keybcs2_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -4304,11 +4442,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_macce_general_ci, /* ctype */ - to_lower_macce_general_ci, /* lower */ - to_upper_macce_general_ci, /* upper */ + to_lower_macce_general_ci, /* to_lower */ + to_upper_macce_general_ci, /* to_upper */ sort_order_macce_general_ci, /* sort_order */ NULL, /* uca */ - to_uni_macce_general_ci, /* to_uni */ + to_uni_macce_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -4337,11 +4475,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_macroman_general_ci, /* ctype */ - to_lower_macroman_general_ci, /* lower */ - to_upper_macroman_general_ci, /* upper */ + to_lower_macroman_general_ci, /* to_lower */ + to_upper_macroman_general_ci, /* to_upper */ sort_order_macroman_general_ci, /* sort_order */ NULL, /* uca */ - to_uni_macroman_general_ci, /* to_uni */ + to_uni_macroman_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -4370,11 +4508,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_cp852_general_ci, /* ctype */ - to_lower_cp852_general_ci, /* lower */ - to_upper_cp852_general_ci, /* upper */ + to_lower_cp852_general_ci, /* to_lower */ + to_upper_cp852_general_ci, /* to_upper */ sort_order_cp852_general_ci, /* sort_order */ NULL, /* uca */ - to_uni_cp852_general_ci, /* to_uni */ + to_uni_cp852_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -4403,11 +4541,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_latin7_general_ci, /* ctype */ - to_lower_latin7_general_ci, /* lower */ - to_upper_latin7_general_ci, /* upper */ + to_lower_latin7_general_ci, /* to_lower */ + to_upper_latin7_general_ci, /* to_upper */ sort_order_latin7_general_ci, /* sort_order */ NULL, /* uca */ - to_uni_latin7_general_ci, /* to_uni */ + to_uni_latin7_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -4436,11 +4574,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_latin7_general_ci, /* ctype */ - to_lower_latin7_general_ci, /* lower */ - to_upper_latin7_general_ci, /* upper */ + to_lower_latin7_general_ci, /* to_lower */ + to_upper_latin7_general_ci, /* to_upper */ sort_order_latin7_general_cs, /* sort_order */ NULL, /* uca */ - to_uni_latin7_general_ci, /* to_uni */ + to_uni_latin7_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -4469,11 +4607,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_macce_general_ci, /* ctype */ - to_lower_macce_general_ci, /* lower */ - to_upper_macce_general_ci, /* upper */ + to_lower_macce_general_ci, /* to_lower */ + to_upper_macce_general_ci, /* to_upper */ NULL, /* sort_order */ NULL, /* uca */ - to_uni_macce_general_ci, /* to_uni */ + to_uni_macce_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -4502,11 +4640,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_cp1250_general_ci, /* ctype */ - to_lower_cp1250_general_ci, /* lower */ - to_upper_cp1250_general_ci, /* upper */ + to_lower_cp1250_general_ci, /* to_lower */ + to_upper_cp1250_general_ci, /* to_upper */ sort_order_cp1250_croatian_ci, /* sort_order */ NULL, /* uca */ - to_uni_cp1250_general_ci, /* to_uni */ + to_uni_cp1250_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -4535,11 +4673,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_latin1_general_ci, /* ctype */ - to_lower_latin1_general_ci, /* lower */ - to_upper_latin1_general_ci, /* upper */ + to_lower_latin1_general_ci, /* to_lower */ + to_upper_latin1_general_ci, /* to_upper */ sort_order_latin1_general_ci, /* sort_order */ NULL, /* uca */ - to_uni_latin1_general_ci, /* to_uni */ + to_uni_latin1_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -4568,11 +4706,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_latin1_general_cs, /* ctype */ - to_lower_latin1_general_cs, /* lower */ - to_upper_latin1_general_cs, /* upper */ + to_lower_latin1_general_cs, /* to_lower */ + to_upper_latin1_general_cs, /* to_upper */ sort_order_latin1_general_cs, /* sort_order */ NULL, /* uca */ - to_uni_latin1_general_cs, /* to_uni */ + to_uni_latin1_general_cs, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -4601,11 +4739,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_cp1251_general_ci, /* ctype */ - to_lower_cp1251_general_ci, /* lower */ - to_upper_cp1251_general_ci, /* upper */ + to_lower_cp1251_general_ci, /* to_lower */ + to_upper_cp1251_general_ci, /* to_upper */ NULL, /* sort_order */ NULL, /* uca */ - to_uni_cp1251_general_ci, /* to_uni */ + to_uni_cp1251_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -4634,11 +4772,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_cp1251_general_ci, /* ctype */ - to_lower_cp1251_general_ci, /* lower */ - to_upper_cp1251_general_ci, /* upper */ + to_lower_cp1251_general_ci, /* to_lower */ + to_upper_cp1251_general_ci, /* to_upper */ sort_order_cp1251_general_ci, /* sort_order */ NULL, /* uca */ - to_uni_cp1251_general_ci, /* to_uni */ + to_uni_cp1251_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -4667,11 +4805,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_cp1251_general_ci, /* ctype */ - to_lower_cp1251_general_ci, /* lower */ - to_upper_cp1251_general_ci, /* upper */ + to_lower_cp1251_general_ci, /* to_lower */ + to_upper_cp1251_general_ci, /* to_upper */ sort_order_cp1251_general_cs, /* sort_order */ NULL, /* uca */ - to_uni_cp1251_general_ci, /* to_uni */ + to_uni_cp1251_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -4700,11 +4838,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_macroman_general_ci, /* ctype */ - to_lower_macroman_general_ci, /* lower */ - to_upper_macroman_general_ci, /* upper */ + to_lower_macroman_general_ci, /* to_lower */ + to_upper_macroman_general_ci, /* to_upper */ NULL, /* sort_order */ NULL, /* uca */ - to_uni_macroman_general_ci, /* to_uni */ + to_uni_macroman_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -4733,11 +4871,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_cp1256_general_ci, /* ctype */ - to_lower_cp1256_general_ci, /* lower */ - to_upper_cp1256_general_ci, /* upper */ + to_lower_cp1256_general_ci, /* to_lower */ + to_upper_cp1256_general_ci, /* to_upper */ sort_order_cp1256_general_ci, /* sort_order */ NULL, /* uca */ - to_uni_cp1256_general_ci, /* to_uni */ + to_uni_cp1256_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -4766,11 +4904,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_cp1257_general_ci, /* ctype */ - to_lower_cp1257_general_ci, /* lower */ - to_upper_cp1257_general_ci, /* upper */ + to_lower_cp1257_general_ci, /* to_lower */ + to_upper_cp1257_general_ci, /* to_upper */ NULL, /* sort_order */ NULL, /* uca */ - to_uni_cp1257_general_ci, /* to_uni */ + to_uni_cp1257_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -4799,11 +4937,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_cp1257_general_ci, /* ctype */ - to_lower_cp1257_general_ci, /* lower */ - to_upper_cp1257_general_ci, /* upper */ + to_lower_cp1257_general_ci, /* to_lower */ + to_upper_cp1257_general_ci, /* to_upper */ sort_order_cp1257_general_ci, /* sort_order */ NULL, /* uca */ - to_uni_cp1257_general_ci, /* to_uni */ + to_uni_cp1257_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -4832,11 +4970,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_armscii8_general_ci, /* ctype */ - to_lower_armscii8_general_ci, /* lower */ - to_upper_armscii8_general_ci, /* upper */ + to_lower_armscii8_general_ci, /* to_lower */ + to_upper_armscii8_general_ci, /* to_upper */ NULL, /* sort_order */ NULL, /* uca */ - to_uni_armscii8_general_ci, /* to_uni */ + to_uni_armscii8_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -4865,11 +5003,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_ascii_general_ci, /* ctype */ - to_lower_ascii_general_ci, /* lower */ - to_upper_ascii_general_ci, /* upper */ + to_lower_ascii_general_ci, /* to_lower */ + to_upper_ascii_general_ci, /* to_upper */ NULL, /* sort_order */ NULL, /* uca */ - to_uni_ascii_general_ci, /* to_uni */ + to_uni_ascii_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -4898,11 +5036,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_cp1250_general_ci, /* ctype */ - to_lower_cp1250_general_ci, /* lower */ - to_upper_cp1250_general_ci, /* upper */ + to_lower_cp1250_general_ci, /* to_lower */ + to_upper_cp1250_general_ci, /* to_upper */ NULL, /* sort_order */ NULL, /* uca */ - to_uni_cp1250_general_ci, /* to_uni */ + to_uni_cp1250_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -4931,11 +5069,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_cp1256_general_ci, /* ctype */ - to_lower_cp1256_general_ci, /* lower */ - to_upper_cp1256_general_ci, /* upper */ + to_lower_cp1256_general_ci, /* to_lower */ + to_upper_cp1256_general_ci, /* to_upper */ NULL, /* sort_order */ NULL, /* uca */ - to_uni_cp1256_general_ci, /* to_uni */ + to_uni_cp1256_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -4964,11 +5102,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_cp866_general_ci, /* ctype */ - to_lower_cp866_general_ci, /* lower */ - to_upper_cp866_general_ci, /* upper */ + to_lower_cp866_general_ci, /* to_lower */ + to_upper_cp866_general_ci, /* to_upper */ NULL, /* sort_order */ NULL, /* uca */ - to_uni_cp866_general_ci, /* to_uni */ + to_uni_cp866_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -4997,11 +5135,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_dec8_swedish_ci, /* ctype */ - to_lower_dec8_swedish_ci, /* lower */ - to_upper_dec8_swedish_ci, /* upper */ + to_lower_dec8_swedish_ci, /* to_lower */ + to_upper_dec8_swedish_ci, /* to_upper */ NULL, /* sort_order */ NULL, /* uca */ - to_uni_dec8_swedish_ci, /* to_uni */ + to_uni_dec8_swedish_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -5030,11 +5168,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_greek_general_ci, /* ctype */ - to_lower_greek_general_ci, /* lower */ - to_upper_greek_general_ci, /* upper */ + to_lower_greek_general_ci, /* to_lower */ + to_upper_greek_general_ci, /* to_upper */ NULL, /* sort_order */ NULL, /* uca */ - to_uni_greek_general_ci, /* to_uni */ + to_uni_greek_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -5063,11 +5201,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_hebrew_general_ci, /* ctype */ - to_lower_hebrew_general_ci, /* lower */ - to_upper_hebrew_general_ci, /* upper */ + to_lower_hebrew_general_ci, /* to_lower */ + to_upper_hebrew_general_ci, /* to_upper */ NULL, /* sort_order */ NULL, /* uca */ - to_uni_hebrew_general_ci, /* to_uni */ + to_uni_hebrew_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -5096,11 +5234,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_hp8_english_ci, /* ctype */ - to_lower_hp8_english_ci, /* lower */ - to_upper_hp8_english_ci, /* upper */ + to_lower_hp8_english_ci, /* to_lower */ + to_upper_hp8_english_ci, /* to_upper */ NULL, /* sort_order */ NULL, /* uca */ - to_uni_hp8_english_ci, /* to_uni */ + to_uni_hp8_english_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -5129,11 +5267,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_keybcs2_general_ci, /* ctype */ - to_lower_keybcs2_general_ci, /* lower */ - to_upper_keybcs2_general_ci, /* upper */ + to_lower_keybcs2_general_ci, /* to_lower */ + to_upper_keybcs2_general_ci, /* to_upper */ NULL, /* sort_order */ NULL, /* uca */ - to_uni_keybcs2_general_ci, /* to_uni */ + to_uni_keybcs2_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -5162,11 +5300,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_koi8r_general_ci, /* ctype */ - to_lower_koi8r_general_ci, /* lower */ - to_upper_koi8r_general_ci, /* upper */ + to_lower_koi8r_general_ci, /* to_lower */ + to_upper_koi8r_general_ci, /* to_upper */ NULL, /* sort_order */ NULL, /* uca */ - to_uni_koi8r_general_ci, /* to_uni */ + to_uni_koi8r_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -5195,11 +5333,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_koi8u_general_ci, /* ctype */ - to_lower_koi8u_general_ci, /* lower */ - to_upper_koi8u_general_ci, /* upper */ + to_lower_koi8u_general_ci, /* to_lower */ + to_upper_koi8u_general_ci, /* to_upper */ NULL, /* sort_order */ NULL, /* uca */ - to_uni_koi8u_general_ci, /* to_uni */ + to_uni_koi8u_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -5228,11 +5366,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_latin2_general_ci, /* ctype */ - to_lower_latin2_general_ci, /* lower */ - to_upper_latin2_general_ci, /* upper */ + to_lower_latin2_general_ci, /* to_lower */ + to_upper_latin2_general_ci, /* to_upper */ NULL, /* sort_order */ NULL, /* uca */ - to_uni_latin2_general_ci, /* to_uni */ + to_uni_latin2_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -5261,11 +5399,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_latin5_turkish_ci, /* ctype */ - to_lower_latin5_turkish_ci, /* lower */ - to_upper_latin5_turkish_ci, /* upper */ + to_lower_latin5_turkish_ci, /* to_lower */ + to_upper_latin5_turkish_ci, /* to_upper */ NULL, /* sort_order */ NULL, /* uca */ - to_uni_latin5_turkish_ci, /* to_uni */ + to_uni_latin5_turkish_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -5294,11 +5432,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_latin7_general_ci, /* ctype */ - to_lower_latin7_general_ci, /* lower */ - to_upper_latin7_general_ci, /* upper */ + to_lower_latin7_general_ci, /* to_lower */ + to_upper_latin7_general_ci, /* to_upper */ NULL, /* sort_order */ NULL, /* uca */ - to_uni_latin7_general_ci, /* to_uni */ + to_uni_latin7_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -5327,11 +5465,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_cp850_general_ci, /* ctype */ - to_lower_cp850_general_ci, /* lower */ - to_upper_cp850_general_ci, /* upper */ + to_lower_cp850_general_ci, /* to_lower */ + to_upper_cp850_general_ci, /* to_upper */ NULL, /* sort_order */ NULL, /* uca */ - to_uni_cp850_general_ci, /* to_uni */ + to_uni_cp850_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -5360,11 +5498,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_cp852_general_ci, /* ctype */ - to_lower_cp852_general_ci, /* lower */ - to_upper_cp852_general_ci, /* upper */ + to_lower_cp852_general_ci, /* to_lower */ + to_upper_cp852_general_ci, /* to_upper */ NULL, /* sort_order */ NULL, /* uca */ - to_uni_cp852_general_ci, /* to_uni */ + to_uni_cp852_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -5393,11 +5531,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_swe7_swedish_ci, /* ctype */ - to_lower_swe7_swedish_ci, /* lower */ - to_upper_swe7_swedish_ci, /* upper */ + to_lower_swe7_swedish_ci, /* to_lower */ + to_upper_swe7_swedish_ci, /* to_upper */ NULL, /* sort_order */ NULL, /* uca */ - to_uni_swe7_swedish_ci, /* to_uni */ + to_uni_swe7_swedish_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -5426,11 +5564,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_geostd8_general_ci, /* ctype */ - to_lower_geostd8_general_ci, /* lower */ - to_upper_geostd8_general_ci, /* upper */ + to_lower_geostd8_general_ci, /* to_lower */ + to_upper_geostd8_general_ci, /* to_upper */ sort_order_geostd8_general_ci, /* sort_order */ NULL, /* uca */ - to_uni_geostd8_general_ci, /* to_uni */ + to_uni_geostd8_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -5459,11 +5597,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_geostd8_general_ci, /* ctype */ - to_lower_geostd8_general_ci, /* lower */ - to_upper_geostd8_general_ci, /* upper */ + to_lower_geostd8_general_ci, /* to_lower */ + to_upper_geostd8_general_ci, /* to_upper */ NULL, /* sort_order */ NULL, /* uca */ - to_uni_geostd8_general_ci, /* to_uni */ + to_uni_geostd8_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -5492,11 +5630,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_latin1_spanish_ci, /* ctype */ - to_lower_latin1_spanish_ci, /* lower */ - to_upper_latin1_spanish_ci, /* upper */ + to_lower_latin1_spanish_ci, /* to_lower */ + to_upper_latin1_spanish_ci, /* to_upper */ sort_order_latin1_spanish_ci, /* sort_order */ NULL, /* uca */ - to_uni_latin1_spanish_ci, /* to_uni */ + to_uni_latin1_spanish_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -5525,11 +5663,11 @@ struct charset_info_st compiled_charsets[] = { "", /* comment */ NULL, /* tailoring */ ctype_cp1250_general_ci, /* ctype */ - to_lower_cp1250_general_ci, /* lower */ - to_upper_cp1250_general_ci, /* upper */ + to_lower_cp1250_general_ci, /* to_lower */ + to_upper_cp1250_general_ci, /* to_upper */ sort_order_cp1250_polish_ci, /* sort_order */ NULL, /* uca */ - to_uni_cp1250_general_ci, /* to_uni */ + to_uni_cp1250_general_ci, /* to_uni */ NULL, /* from_uni */ &my_unicase_default, /* caseinfo */ NULL, /* state map */ @@ -5549,6 +5687,1524 @@ struct charset_info_st compiled_charsets[] = { } , #endif +#ifdef HAVE_CHARSET_dec8 +{ + 1027,0,0, + MY_CS_COMPILED|MY_CS_NOPAD, + "dec8", /* cset name */ + "dec8_swedish_nopad_ci", /* coll name */ + "", /* comment */ + "[import dec8_swedish_ci]", /* tailoring */ + ctype_dec8_swedish_ci, /* ctype */ + to_lower_dec8_swedish_ci, /* to_lower */ + to_upper_dec8_swedish_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_dec8_swedish_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_simple_nopad_ci_handler, +} +, +#endif +#ifdef HAVE_CHARSET_cp850 +{ + 1028,0,0, + MY_CS_COMPILED|MY_CS_NOPAD, + "cp850", /* cset name */ + "cp850_general_nopad_ci", /* coll name */ + "", /* comment */ + "[import cp850_general_ci]", /* tailoring */ + ctype_cp850_general_ci, /* ctype */ + to_lower_cp850_general_ci, /* to_lower */ + to_upper_cp850_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_cp850_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_simple_nopad_ci_handler, +} +, +#endif +#ifdef HAVE_CHARSET_hp8 +{ + 1030,0,0, + MY_CS_COMPILED|MY_CS_NOPAD, + "hp8", /* cset name */ + "hp8_english_nopad_ci", /* coll name */ + "", /* comment */ + "[import hp8_english_ci]", /* tailoring */ + ctype_hp8_english_ci, /* ctype */ + to_lower_hp8_english_ci, /* to_lower */ + to_upper_hp8_english_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_hp8_english_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_simple_nopad_ci_handler, +} +, +#endif +#ifdef HAVE_CHARSET_koi8r +{ + 1031,0,0, + MY_CS_COMPILED|MY_CS_NOPAD, + "koi8r", /* cset name */ + "koi8r_general_nopad_ci", /* coll name */ + "", /* comment */ + "[import koi8r_general_ci]", /* tailoring */ + ctype_koi8r_general_ci, /* ctype */ + to_lower_koi8r_general_ci, /* to_lower */ + to_upper_koi8r_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_koi8r_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_simple_nopad_ci_handler, +} +, +#endif +#ifdef HAVE_CHARSET_latin2 +{ + 1033,0,0, + MY_CS_COMPILED|MY_CS_NOPAD, + "latin2", /* cset name */ + "latin2_general_nopad_ci", /* coll name */ + "", /* comment */ + "[import latin2_general_ci]", /* tailoring */ + ctype_latin2_general_ci, /* ctype */ + to_lower_latin2_general_ci, /* to_lower */ + to_upper_latin2_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_latin2_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_simple_nopad_ci_handler, +} +, +#endif +#ifdef HAVE_CHARSET_swe7 +{ + 1034,0,0, + MY_CS_COMPILED|MY_CS_NONASCII|MY_CS_NOPAD, + "swe7", /* cset name */ + "swe7_swedish_nopad_ci", /* coll name */ + "", /* comment */ + "[import swe7_swedish_ci]", /* tailoring */ + ctype_swe7_swedish_ci, /* ctype */ + to_lower_swe7_swedish_ci, /* to_lower */ + to_upper_swe7_swedish_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_swe7_swedish_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_simple_nopad_ci_handler, +} +, +#endif +#ifdef HAVE_CHARSET_ascii +{ + 1035,0,0, + MY_CS_COMPILED|MY_CS_PUREASCII|MY_CS_NOPAD, + "ascii", /* cset name */ + "ascii_general_nopad_ci", /* coll name */ + "", /* comment */ + "[import ascii_general_ci]", /* tailoring */ + ctype_ascii_general_ci, /* ctype */ + to_lower_ascii_general_ci, /* to_lower */ + to_upper_ascii_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_ascii_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_simple_nopad_ci_handler, +} +, +#endif +#ifdef HAVE_CHARSET_hebrew +{ + 1040,0,0, + MY_CS_COMPILED|MY_CS_NOPAD, + "hebrew", /* cset name */ + "hebrew_general_nopad_ci", /* coll name */ + "", /* comment */ + "[import hebrew_general_ci]", /* tailoring */ + ctype_hebrew_general_ci, /* ctype */ + to_lower_hebrew_general_ci, /* to_lower */ + to_upper_hebrew_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_hebrew_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_simple_nopad_ci_handler, +} +, +#endif +#ifdef HAVE_CHARSET_koi8u +{ + 1046,0,0, + MY_CS_COMPILED|MY_CS_NOPAD, + "koi8u", /* cset name */ + "koi8u_general_nopad_ci", /* coll name */ + "", /* comment */ + "[import koi8u_general_ci]", /* tailoring */ + ctype_koi8u_general_ci, /* ctype */ + to_lower_koi8u_general_ci, /* to_lower */ + to_upper_koi8u_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_koi8u_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_simple_nopad_ci_handler, +} +, +#endif +#ifdef HAVE_CHARSET_greek +{ + 1049,0,0, + MY_CS_COMPILED|MY_CS_NOPAD, + "greek", /* cset name */ + "greek_general_nopad_ci", /* coll name */ + "", /* comment */ + "[import greek_general_ci]", /* tailoring */ + ctype_greek_general_ci, /* ctype */ + to_lower_greek_general_ci, /* to_lower */ + to_upper_greek_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_greek_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_simple_nopad_ci_handler, +} +, +#endif +#ifdef HAVE_CHARSET_cp1250 +{ + 1050,0,0, + MY_CS_COMPILED|MY_CS_NOPAD, + "cp1250", /* cset name */ + "cp1250_general_nopad_ci", /* coll name */ + "", /* comment */ + "[import cp1250_general_ci]", /* tailoring */ + ctype_cp1250_general_ci, /* ctype */ + to_lower_cp1250_general_ci, /* to_lower */ + to_upper_cp1250_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_cp1250_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_simple_nopad_ci_handler, +} +, +#endif +#ifdef HAVE_CHARSET_latin5 +{ + 1054,0,0, + MY_CS_COMPILED|MY_CS_NOPAD, + "latin5", /* cset name */ + "latin5_turkish_nopad_ci", /* coll name */ + "", /* comment */ + "[import latin5_turkish_ci]", /* tailoring */ + ctype_latin5_turkish_ci, /* ctype */ + to_lower_latin5_turkish_ci, /* to_lower */ + to_upper_latin5_turkish_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_latin5_turkish_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_simple_nopad_ci_handler, +} +, +#endif +#ifdef HAVE_CHARSET_armscii8 +{ + 1056,0,0, + MY_CS_COMPILED|MY_CS_NOPAD, + "armscii8", /* cset name */ + "armscii8_general_nopad_ci", /* coll name */ + "", /* comment */ + "[import armscii8_general_ci]", /* tailoring */ + ctype_armscii8_general_ci, /* ctype */ + to_lower_armscii8_general_ci, /* to_lower */ + to_upper_armscii8_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_armscii8_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_simple_nopad_ci_handler, +} +, +#endif +#ifdef HAVE_CHARSET_cp866 +{ + 1060,0,0, + MY_CS_COMPILED|MY_CS_NOPAD, + "cp866", /* cset name */ + "cp866_general_nopad_ci", /* coll name */ + "", /* comment */ + "[import cp866_general_ci]", /* tailoring */ + ctype_cp866_general_ci, /* ctype */ + to_lower_cp866_general_ci, /* to_lower */ + to_upper_cp866_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_cp866_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_simple_nopad_ci_handler, +} +, +#endif +#ifdef HAVE_CHARSET_keybcs2 +{ + 1061,0,0, + MY_CS_COMPILED|MY_CS_NOPAD, + "keybcs2", /* cset name */ + "keybcs2_general_nopad_ci", /* coll name */ + "", /* comment */ + "[import keybcs2_general_ci]", /* tailoring */ + ctype_keybcs2_general_ci, /* ctype */ + to_lower_keybcs2_general_ci, /* to_lower */ + to_upper_keybcs2_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_keybcs2_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_simple_nopad_ci_handler, +} +, +#endif +#ifdef HAVE_CHARSET_macce +{ + 1062,0,0, + MY_CS_COMPILED|MY_CS_NOPAD, + "macce", /* cset name */ + "macce_general_nopad_ci", /* coll name */ + "", /* comment */ + "[import macce_general_ci]", /* tailoring */ + ctype_macce_general_ci, /* ctype */ + to_lower_macce_general_ci, /* to_lower */ + to_upper_macce_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_macce_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_simple_nopad_ci_handler, +} +, +#endif +#ifdef HAVE_CHARSET_macroman +{ + 1063,0,0, + MY_CS_COMPILED|MY_CS_NOPAD, + "macroman", /* cset name */ + "macroman_general_nopad_ci", /* coll name */ + "", /* comment */ + "[import macroman_general_ci]", /* tailoring */ + ctype_macroman_general_ci, /* ctype */ + to_lower_macroman_general_ci, /* to_lower */ + to_upper_macroman_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_macroman_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_simple_nopad_ci_handler, +} +, +#endif +#ifdef HAVE_CHARSET_cp852 +{ + 1064,0,0, + MY_CS_COMPILED|MY_CS_NOPAD, + "cp852", /* cset name */ + "cp852_general_nopad_ci", /* coll name */ + "", /* comment */ + "[import cp852_general_ci]", /* tailoring */ + ctype_cp852_general_ci, /* ctype */ + to_lower_cp852_general_ci, /* to_lower */ + to_upper_cp852_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_cp852_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_simple_nopad_ci_handler, +} +, +#endif +#ifdef HAVE_CHARSET_latin7 +{ + 1065,0,0, + MY_CS_COMPILED|MY_CS_NOPAD, + "latin7", /* cset name */ + "latin7_general_nopad_ci", /* coll name */ + "", /* comment */ + "[import latin7_general_ci]", /* tailoring */ + ctype_latin7_general_ci, /* ctype */ + to_lower_latin7_general_ci, /* to_lower */ + to_upper_latin7_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_latin7_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_simple_nopad_ci_handler, +} +, +#endif +#ifdef HAVE_CHARSET_macce +{ + 1067,0,0, + MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, + "macce", /* cset name */ + "macce_nopad_bin", /* coll name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_macce_general_ci, /* ctype */ + to_lower_macce_general_ci, /* to_lower */ + to_upper_macce_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_macce_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_nopad_bin_handler, +} +, +#endif +#ifdef HAVE_CHARSET_cp1251 +{ + 1074,0,0, + MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, + "cp1251", /* cset name */ + "cp1251_nopad_bin", /* coll name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_cp1251_general_ci, /* ctype */ + to_lower_cp1251_general_ci, /* to_lower */ + to_upper_cp1251_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_cp1251_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_nopad_bin_handler, +} +, +#endif +#ifdef HAVE_CHARSET_cp1251 +{ + 1075,0,0, + MY_CS_COMPILED|MY_CS_NOPAD, + "cp1251", /* cset name */ + "cp1251_general_nopad_ci", /* coll name */ + "", /* comment */ + "[import cp1251_general_ci]", /* tailoring */ + ctype_cp1251_general_ci, /* ctype */ + to_lower_cp1251_general_ci, /* to_lower */ + to_upper_cp1251_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_cp1251_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_simple_nopad_ci_handler, +} +, +#endif +#ifdef HAVE_CHARSET_macroman +{ + 1077,0,0, + MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, + "macroman", /* cset name */ + "macroman_nopad_bin", /* coll name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_macroman_general_ci, /* ctype */ + to_lower_macroman_general_ci, /* to_lower */ + to_upper_macroman_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_macroman_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_nopad_bin_handler, +} +, +#endif +#ifdef HAVE_CHARSET_cp1256 +{ + 1081,0,0, + MY_CS_COMPILED|MY_CS_NOPAD, + "cp1256", /* cset name */ + "cp1256_general_nopad_ci", /* coll name */ + "", /* comment */ + "[import cp1256_general_ci]", /* tailoring */ + ctype_cp1256_general_ci, /* ctype */ + to_lower_cp1256_general_ci, /* to_lower */ + to_upper_cp1256_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_cp1256_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_simple_nopad_ci_handler, +} +, +#endif +#ifdef HAVE_CHARSET_cp1257 +{ + 1082,0,0, + MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, + "cp1257", /* cset name */ + "cp1257_nopad_bin", /* coll name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_cp1257_general_ci, /* ctype */ + to_lower_cp1257_general_ci, /* to_lower */ + to_upper_cp1257_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_cp1257_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_nopad_bin_handler, +} +, +#endif +#ifdef HAVE_CHARSET_cp1257 +{ + 1083,0,0, + MY_CS_COMPILED|MY_CS_NOPAD, + "cp1257", /* cset name */ + "cp1257_general_nopad_ci", /* coll name */ + "", /* comment */ + "[import cp1257_general_ci]", /* tailoring */ + ctype_cp1257_general_ci, /* ctype */ + to_lower_cp1257_general_ci, /* to_lower */ + to_upper_cp1257_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_cp1257_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_simple_nopad_ci_handler, +} +, +#endif +#ifdef HAVE_CHARSET_armscii8 +{ + 1088,0,0, + MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, + "armscii8", /* cset name */ + "armscii8_nopad_bin", /* coll name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_armscii8_general_ci, /* ctype */ + to_lower_armscii8_general_ci, /* to_lower */ + to_upper_armscii8_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_armscii8_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_nopad_bin_handler, +} +, +#endif +#ifdef HAVE_CHARSET_ascii +{ + 1089,0,0, + MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_PUREASCII|MY_CS_NOPAD, + "ascii", /* cset name */ + "ascii_nopad_bin", /* coll name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_ascii_general_ci, /* ctype */ + to_lower_ascii_general_ci, /* to_lower */ + to_upper_ascii_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_ascii_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_nopad_bin_handler, +} +, +#endif +#ifdef HAVE_CHARSET_cp1250 +{ + 1090,0,0, + MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, + "cp1250", /* cset name */ + "cp1250_nopad_bin", /* coll name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_cp1250_general_ci, /* ctype */ + to_lower_cp1250_general_ci, /* to_lower */ + to_upper_cp1250_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_cp1250_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_nopad_bin_handler, +} +, +#endif +#ifdef HAVE_CHARSET_cp1256 +{ + 1091,0,0, + MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, + "cp1256", /* cset name */ + "cp1256_nopad_bin", /* coll name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_cp1256_general_ci, /* ctype */ + to_lower_cp1256_general_ci, /* to_lower */ + to_upper_cp1256_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_cp1256_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_nopad_bin_handler, +} +, +#endif +#ifdef HAVE_CHARSET_cp866 +{ + 1092,0,0, + MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, + "cp866", /* cset name */ + "cp866_nopad_bin", /* coll name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_cp866_general_ci, /* ctype */ + to_lower_cp866_general_ci, /* to_lower */ + to_upper_cp866_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_cp866_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_nopad_bin_handler, +} +, +#endif +#ifdef HAVE_CHARSET_dec8 +{ + 1093,0,0, + MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, + "dec8", /* cset name */ + "dec8_nopad_bin", /* coll name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_dec8_swedish_ci, /* ctype */ + to_lower_dec8_swedish_ci, /* to_lower */ + to_upper_dec8_swedish_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_dec8_swedish_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_nopad_bin_handler, +} +, +#endif +#ifdef HAVE_CHARSET_greek +{ + 1094,0,0, + MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, + "greek", /* cset name */ + "greek_nopad_bin", /* coll name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_greek_general_ci, /* ctype */ + to_lower_greek_general_ci, /* to_lower */ + to_upper_greek_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_greek_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_nopad_bin_handler, +} +, +#endif +#ifdef HAVE_CHARSET_hebrew +{ + 1095,0,0, + MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, + "hebrew", /* cset name */ + "hebrew_nopad_bin", /* coll name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_hebrew_general_ci, /* ctype */ + to_lower_hebrew_general_ci, /* to_lower */ + to_upper_hebrew_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_hebrew_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_nopad_bin_handler, +} +, +#endif +#ifdef HAVE_CHARSET_hp8 +{ + 1096,0,0, + MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, + "hp8", /* cset name */ + "hp8_nopad_bin", /* coll name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_hp8_english_ci, /* ctype */ + to_lower_hp8_english_ci, /* to_lower */ + to_upper_hp8_english_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_hp8_english_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_nopad_bin_handler, +} +, +#endif +#ifdef HAVE_CHARSET_keybcs2 +{ + 1097,0,0, + MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, + "keybcs2", /* cset name */ + "keybcs2_nopad_bin", /* coll name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_keybcs2_general_ci, /* ctype */ + to_lower_keybcs2_general_ci, /* to_lower */ + to_upper_keybcs2_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_keybcs2_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_nopad_bin_handler, +} +, +#endif +#ifdef HAVE_CHARSET_koi8r +{ + 1098,0,0, + MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, + "koi8r", /* cset name */ + "koi8r_nopad_bin", /* coll name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_koi8r_general_ci, /* ctype */ + to_lower_koi8r_general_ci, /* to_lower */ + to_upper_koi8r_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_koi8r_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_nopad_bin_handler, +} +, +#endif +#ifdef HAVE_CHARSET_koi8u +{ + 1099,0,0, + MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, + "koi8u", /* cset name */ + "koi8u_nopad_bin", /* coll name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_koi8u_general_ci, /* ctype */ + to_lower_koi8u_general_ci, /* to_lower */ + to_upper_koi8u_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_koi8u_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_nopad_bin_handler, +} +, +#endif +#ifdef HAVE_CHARSET_latin2 +{ + 1101,0,0, + MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, + "latin2", /* cset name */ + "latin2_nopad_bin", /* coll name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_latin2_general_ci, /* ctype */ + to_lower_latin2_general_ci, /* to_lower */ + to_upper_latin2_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_latin2_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_nopad_bin_handler, +} +, +#endif +#ifdef HAVE_CHARSET_latin5 +{ + 1102,0,0, + MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, + "latin5", /* cset name */ + "latin5_nopad_bin", /* coll name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_latin5_turkish_ci, /* ctype */ + to_lower_latin5_turkish_ci, /* to_lower */ + to_upper_latin5_turkish_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_latin5_turkish_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_nopad_bin_handler, +} +, +#endif +#ifdef HAVE_CHARSET_latin7 +{ + 1103,0,0, + MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, + "latin7", /* cset name */ + "latin7_nopad_bin", /* coll name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_latin7_general_ci, /* ctype */ + to_lower_latin7_general_ci, /* to_lower */ + to_upper_latin7_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_latin7_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_nopad_bin_handler, +} +, +#endif +#ifdef HAVE_CHARSET_cp850 +{ + 1104,0,0, + MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, + "cp850", /* cset name */ + "cp850_nopad_bin", /* coll name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_cp850_general_ci, /* ctype */ + to_lower_cp850_general_ci, /* to_lower */ + to_upper_cp850_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_cp850_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_nopad_bin_handler, +} +, +#endif +#ifdef HAVE_CHARSET_cp852 +{ + 1105,0,0, + MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, + "cp852", /* cset name */ + "cp852_nopad_bin", /* coll name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_cp852_general_ci, /* ctype */ + to_lower_cp852_general_ci, /* to_lower */ + to_upper_cp852_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_cp852_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_nopad_bin_handler, +} +, +#endif +#ifdef HAVE_CHARSET_swe7 +{ + 1106,0,0, + MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NONASCII|MY_CS_NOPAD, + "swe7", /* cset name */ + "swe7_nopad_bin", /* coll name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_swe7_swedish_ci, /* ctype */ + to_lower_swe7_swedish_ci, /* to_lower */ + to_upper_swe7_swedish_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_swe7_swedish_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_nopad_bin_handler, +} +, +#endif +#ifdef HAVE_CHARSET_geostd8 +{ + 1116,0,0, + MY_CS_COMPILED|MY_CS_NOPAD, + "geostd8", /* cset name */ + "geostd8_general_nopad_ci", /* coll name */ + "", /* comment */ + "[import geostd8_general_ci]", /* tailoring */ + ctype_geostd8_general_ci, /* ctype */ + to_lower_geostd8_general_ci, /* to_lower */ + to_upper_geostd8_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_geostd8_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_simple_nopad_ci_handler, +} +, +#endif +#ifdef HAVE_CHARSET_geostd8 +{ + 1117,0,0, + MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NOPAD, + "geostd8", /* cset name */ + "geostd8_nopad_bin", /* coll name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_geostd8_general_ci, /* ctype */ + to_lower_geostd8_general_ci, /* to_lower */ + to_upper_geostd8_general_ci, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + to_uni_geostd8_general_ci, /* to_uni */ + NULL, /* from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state map */ + NULL, /* ident map */ + 1, /* strxfrm_multiply*/ + 1, /* caseup_multiply*/ + 1, /* casedn_multiply*/ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad_char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_8bit_handler, + &my_collation_8bit_nopad_bin_handler, +} +, +#endif { 0,0,0, MY_CS_COMPILED, diff --git a/strings/ctype-gb2312.c b/strings/ctype-gb2312.c index dbb92fabc4b..832c6c7f038 100644 --- a/strings/ctype-gb2312.c +++ b/strings/ctype-gb2312.c @@ -6343,6 +6343,20 @@ my_mb_wc_gb2312(CHARSET_INFO *cs __attribute__((unused)), #include "strcoll.ic" +#define DEFINE_STRNNCOLLSP_NOPAD +#define MY_FUNCTION_NAME(x) my_ ## x ## _gb2312_chinese_nopad_ci +#define WEIGHT_MB1(x) (sort_order_gb2312[(uchar) (x)]) +#define WEIGHT_MB2(x,y) (gb2312code(x, y)) +#include "strcoll.ic" + + +#define DEFINE_STRNNCOLLSP_NOPAD +#define MY_FUNCTION_NAME(x) my_ ## x ## _gb2312_nopad_bin +#define WEIGHT_MB1(x) ((uchar) (x)) +#define WEIGHT_MB2(x,y) (gb2312code(x, y)) +#include "strcoll.ic" + + static MY_COLLATION_HANDLER my_collation_handler_gb2312_chinese_ci= { NULL, /* init */ @@ -6375,6 +6389,37 @@ static MY_COLLATION_HANDLER my_collation_handler_gb2312_bin= }; +static MY_COLLATION_HANDLER my_collation_handler_gb2312_chinese_nopad_ci= +{ + NULL, /* init */ + my_strnncoll_gb2312_chinese_ci, + my_strnncollsp_gb2312_chinese_nopad_ci, + my_strnxfrm_mb_nopad, + my_strnxfrmlen_simple, + my_like_range_mb, + my_wildcmp_mb, + my_strcasecmp_mb, + my_instr_mb, + my_hash_sort_simple_nopad, + my_propagate_simple +}; + + +static MY_COLLATION_HANDLER my_collation_handler_gb2312_nopad_bin= +{ + NULL, /* init */ + my_strnncoll_gb2312_bin, + my_strnncollsp_gb2312_nopad_bin, + my_strnxfrm_mb_nopad, + my_strnxfrmlen_simple, + my_like_range_mb, + my_wildcmp_mb_bin, + my_strcasecmp_mb_bin, + my_instr_mb, + my_hash_sort_mb_nopad_bin, + my_propagate_simple +}; + static MY_CHARSET_HANDLER my_charset_handler= { @@ -6475,4 +6520,70 @@ struct charset_info_st my_charset_gb2312_bin= &my_collation_handler_gb2312_bin }; + +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 */ + "gb2312_chinese_nopad_ci",/* name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_gb2312, + to_lower_gb2312, + to_upper_gb2312, + sort_order_gb2312, + NULL, /* uca */ + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + &my_caseinfo_gb2312,/* caseinfo */ + NULL, /* state_map */ + NULL, /* ident_map */ + 1, /* strxfrm_multiply */ + 1, /* caseup_multiply */ + 1, /* casedn_multiply */ + 1, /* mbminlen */ + 2, /* mbmaxlen */ + 0, /* min_sort_char */ + 0xF7FE, /* max_sort_char */ + ' ', /* pad char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_handler, + &my_collation_handler_gb2312_chinese_nopad_ci +}; + + +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 */ + "gb2312_nopad_bin", /* name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_gb2312, + to_lower_gb2312, + to_upper_gb2312, + NULL, /* sort_order */ + NULL, /* uca */ + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + &my_caseinfo_gb2312,/* caseinfo */ + NULL, /* state_map */ + NULL, /* ident_map */ + 1, /* strxfrm_multiply */ + 1, /* caseup_multiply */ + 1, /* casedn_multiply */ + 1, /* mbminlen */ + 2, /* mbmaxlen */ + 0, /* min_sort_char */ + 0xF7FE, /* max_sort_char */ + ' ', /* pad char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_handler, + &my_collation_handler_gb2312_nopad_bin +}; + #endif diff --git a/strings/ctype-gbk.c b/strings/ctype-gbk.c index 617d72dc4d9..d24b77950c2 100644 --- a/strings/ctype-gbk.c +++ b/strings/ctype-gbk.c @@ -10625,6 +10625,21 @@ my_mb_wc_gbk(CHARSET_INFO *cs __attribute__((unused)), #include "strcoll.ic" +#define DEFINE_STRNNCOLLSP_NOPAD +#define MY_FUNCTION_NAME(x) my_ ## x ## _gbk_chinese_nopad_ci +#define WEIGHT_MB1(x) (sort_order_gbk[(uchar) (x)]) +#define WEIGHT_MB2(x,y) (gbksortorder(gbkcode(x,y))) +#define DEFINE_STRNXFRM +#include "strcoll.ic" + + +#define DEFINE_STRNNCOLLSP_NOPAD +#define MY_FUNCTION_NAME(x) my_ ## x ## _gbk_nopad_bin +#define WEIGHT_MB1(x) ((uchar) (x)) +#define WEIGHT_MB2(x,y) (gbkcode(x,y)) +#include "strcoll.ic" + + static MY_COLLATION_HANDLER my_collation_handler_gbk_chinese_ci= { NULL, /* init */ @@ -10657,6 +10672,36 @@ static MY_COLLATION_HANDLER my_collation_handler_gbk_bin= }; +static MY_COLLATION_HANDLER my_collation_handler_gbk_chinese_nopad_ci= +{ + NULL, /* init */ + my_strnncoll_gbk_chinese_ci, + my_strnncollsp_gbk_chinese_nopad_ci, + my_strnxfrm_gbk_chinese_nopad_ci, + my_strnxfrmlen_simple, + my_like_range_mb, + my_wildcmp_mb, + my_strcasecmp_mb, + my_instr_mb, + my_hash_sort_simple_nopad, + my_propagate_simple +}; + + +static MY_COLLATION_HANDLER my_collation_handler_gbk_nopad_bin= +{ + NULL, /* init */ + my_strnncoll_gbk_bin, + my_strnncollsp_gbk_nopad_bin, + my_strnxfrm_mb_nopad, + my_strnxfrmlen_simple, + my_like_range_mb, + my_wildcmp_mb_bin, + my_strcasecmp_mb_bin, + my_instr_mb, + my_hash_sort_mb_nopad_bin, + my_propagate_simple +}; static MY_CHARSET_HANDLER my_charset_handler= { @@ -10757,4 +10802,68 @@ struct charset_info_st my_charset_gbk_bin= }; +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 */ + "gbk_chinese_nopad_ci",/* name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_gbk, + to_lower_gbk, + to_upper_gbk, + sort_order_gbk, + NULL, /* uca */ + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + &my_caseinfo_gbk, /* caseinfo */ + NULL, /* state_map */ + NULL, /* ident_map */ + 1, /* strxfrm_multiply */ + 1, /* caseup_multiply */ + 1, /* casedn_multiply */ + 1, /* mbminlen */ + 2, /* mbmaxlen */ + 0, /* min_sort_char */ + 0xA967, /* max_sort_char */ + ' ', /* pad char */ + 1, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_handler, + &my_collation_handler_gbk_chinese_nopad_ci +}; + +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 */ + "gbk_nopad_bin", /* name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_gbk, + to_lower_gbk, + to_upper_gbk, + NULL, /* sort_order */ + NULL, /* uca */ + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + &my_caseinfo_gbk, /* caseinfo */ + NULL, /* state_map */ + NULL, /* ident_map */ + 1, /* strxfrm_multiply */ + 1, /* caseup_multiply */ + 1, /* casedn_multiply */ + 1, /* mbminlen */ + 2, /* mbmaxlen */ + 0, /* min_sort_char */ + 0xFEFE, /* max_sort_char */ + ' ', /* pad char */ + 1, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_handler, + &my_collation_handler_gbk_nopad_bin +}; + #endif diff --git a/strings/ctype-latin1.c b/strings/ctype-latin1.c index fe255349530..6f71c7a0c76 100644 --- a/strings/ctype-latin1.c +++ b/strings/ctype-latin1.c @@ -460,6 +460,39 @@ struct charset_info_st my_charset_latin1= }; +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 */ + "latin1_swedish_nopad_ci", /* name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_latin1, + to_lower_latin1, + to_upper_latin1, + sort_order_latin1, + NULL, /* uca */ + cs_to_uni, /* tab_to_uni */ + NULL, /* tab_from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state_map */ + NULL, /* ident_map */ + 1, /* strxfrm_multiply */ + 1, /* caseup_multiply */ + 1, /* casedn_multiply */ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_handler, + &my_collation_8bit_simple_nopad_ci_handler +}; + + /* @@ -770,3 +803,36 @@ struct charset_info_st my_charset_latin1_bin= &my_collation_8bit_bin_handler }; + +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 */ + "latin1_nopad_bin", /* name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_latin1, + to_lower_latin1, + to_upper_latin1, + NULL, /* sort_order */ + NULL, /* uca */ + cs_to_uni, /* tab_to_uni */ + NULL, /* tab_from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state_map */ + NULL, /* ident_map */ + 1, /* strxfrm_multiply */ + 1, /* caseup_multiply */ + 1, /* casedn_multiply */ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_handler, + &my_collation_8bit_nopad_bin_handler +}; + diff --git a/strings/ctype-mb.c b/strings/ctype-mb.c index 56b3309ca10..d78e758010d 100644 --- a/strings/ctype-mb.c +++ b/strings/ctype-mb.c @@ -602,13 +602,10 @@ uint my_instr_mb(CHARSET_INFO *cs, characters having multibyte weights *equal* to their codes: cp932, euckr, gb2312, sjis, eucjpms, ujis. */ -size_t -my_strnxfrm_mb(CHARSET_INFO *cs, - uchar *dst, size_t dstlen, uint nweights, - const uchar *src, size_t srclen, uint flags) +size_t my_strnxfrm_mb_internal(CHARSET_INFO *cs, uchar *dst, uchar *de, + uint *nweights, const uchar *src, size_t srclen) { uchar *d0= dst; - uchar *de= dst + dstlen; const uchar *se= src + srclen; const uchar *sort_order= cs->sort_order; @@ -619,12 +616,12 @@ my_strnxfrm_mb(CHARSET_INFO *cs, then we can run a simplified loop - without checking "nweights" and "de". */ - if (dstlen >= srclen && nweights >= srclen) + if (de >= d0 + srclen && *nweights >= srclen) { if (sort_order) { /* Optimized version for a case insensitive collation */ - for (; src < se; nweights--) + for (; src < se; (*nweights)--) { if (*src < 128) /* quickly catch ASCII characters */ *dst++= sort_order[*src++]; @@ -635,7 +632,7 @@ my_strnxfrm_mb(CHARSET_INFO *cs, else { /* Optimized version for a case sensitive collation (no sort_order) */ - for (; src < se; nweights--) + for (; src < se; (*nweights)--) { if (*src < 128) /* quickly catch ASCII characters */ *dst++= *src++; @@ -643,14 +640,14 @@ my_strnxfrm_mb(CHARSET_INFO *cs, my_strnxfrm_mb_non_ascii_char(cs, dst, src, se); } } - goto pad; + goto end; } /* A thourough loop, checking all possible limits: "se", "nweights" and "de". */ - for (; src < se && nweights && dst < de; nweights--) + for (; src < se && *nweights && dst < de; (*nweights)--) { int chlen; if (*src < 128 || !(chlen= my_ismbchar(cs, (const char *) src, @@ -669,11 +666,36 @@ my_strnxfrm_mb(CHARSET_INFO *cs, } } -pad: +end: + return dst - d0; +} + + +size_t +my_strnxfrm_mb(CHARSET_INFO *cs, + uchar *dst, size_t dstlen, uint nweights, + const uchar *src, size_t srclen, uint flags) +{ + uchar *de= dst + dstlen; + uchar *d0= dst; + dst= d0 + my_strnxfrm_mb_internal(cs, dst, de, &nweights, src, srclen); return my_strxfrm_pad_desc_and_reverse(cs, d0, dst, de, nweights, flags, 0); } +size_t +my_strnxfrm_mb_nopad(CHARSET_INFO *cs, + uchar *dst, size_t dstlen, uint nweights, + const uchar *src, size_t srclen, uint flags) +{ + uchar *de= dst + dstlen; + uchar *d0= dst; + dst= d0 + my_strnxfrm_mb_internal(cs, dst, de, &nweights, src, srclen); + return my_strxfrm_pad_desc_and_reverse_nopad(cs, d0, dst, de, nweights, + flags, 0); +} + + int my_strcasecmp_mb_bin(CHARSET_INFO * cs __attribute__((unused)), const char *s, const char *t) @@ -682,18 +704,13 @@ my_strcasecmp_mb_bin(CHARSET_INFO * cs __attribute__((unused)), } + void -my_hash_sort_mb_bin(CHARSET_INFO *cs __attribute__((unused)), - const uchar *key, size_t len,ulong *nr1, ulong *nr2) +my_hash_sort_mb_nopad_bin(CHARSET_INFO *cs __attribute__((unused)), + const uchar *key, size_t len,ulong *nr1, ulong *nr2) { register ulong m1= *nr1, m2= *nr2; - - /* - Remove trailing spaces. We have to do this to be able to compare - 'A ' and 'A' as identical - */ - const uchar *end = skip_trailing_space(key, len); - + const uchar *end= key + len; for (; key < end ; key++) { MY_HASH_ADD(m1, m2, (uint)*key); @@ -703,6 +720,19 @@ my_hash_sort_mb_bin(CHARSET_INFO *cs __attribute__((unused)), } +void +my_hash_sort_mb_bin(CHARSET_INFO *cs __attribute__((unused)), + const uchar *key, size_t len,ulong *nr1, ulong *nr2) +{ + /* + Remove trailing spaces. We have to do this to be able to compare + 'A ' and 'A' as identical + */ + const uchar *end= skip_trailing_space(key, len); + my_hash_sort_mb_nopad_bin(cs, key, end - key, nr1, nr2); +} + + /* Fill the given buffer with 'maximum character' for given charset SYNOPSIS diff --git a/strings/ctype-simple.c b/strings/ctype-simple.c index f02d96aa798..b142aab18a6 100644 --- a/strings/ctype-simple.c +++ b/strings/ctype-simple.c @@ -71,14 +71,14 @@ size_t my_strnxfrmlen_simple(CHARSET_INFO *cs, size_t len) */ -size_t my_strnxfrm_simple(CHARSET_INFO * cs, - uchar *dst, size_t dstlen, uint nweights, - const uchar *src, size_t srclen, uint flags) +size_t my_strnxfrm_simple_internal(CHARSET_INFO * cs, + uchar *dst, size_t dstlen, uint *nweights, + const uchar *src, size_t srclen) { const uchar *map= cs->sort_order; uchar *d0= dst; uint frmlen; - if ((frmlen= MY_MIN(dstlen, nweights)) > srclen) + if ((frmlen= MY_MIN(dstlen, *nweights)) > srclen) frmlen= srclen; if (dst != src) { @@ -92,8 +92,32 @@ size_t my_strnxfrm_simple(CHARSET_INFO * cs, for (end= dst + frmlen; dst < end; dst++) *dst= map[(uchar) *dst]; } + *nweights-= frmlen; + return dst - d0; +} + + +size_t my_strnxfrm_simple(CHARSET_INFO * cs, + uchar *dst, size_t dstlen, uint nweights, + const uchar *src, size_t srclen, uint flags) +{ + uchar *d0= dst; + dst= d0 + my_strnxfrm_simple_internal(cs, dst, dstlen, &nweights, + src, srclen); return my_strxfrm_pad_desc_and_reverse(cs, d0, dst, d0 + dstlen, - nweights - frmlen, flags, 0); + nweights, flags, 0); +} + + +size_t my_strnxfrm_simple_nopad(CHARSET_INFO * cs, + uchar *dst, size_t dstlen, uint nweights, + const uchar *src, size_t srclen, uint flags) +{ + uchar *d0= dst; + dst= d0 + my_strnxfrm_simple_internal(cs, dst, dstlen, &nweights, + src, srclen); + return my_strxfrm_pad_desc_and_reverse_nopad(cs, d0, dst, d0 + dstlen, + nweights, flags, 0); } @@ -184,6 +208,14 @@ int my_strnncollsp_simple(CHARSET_INFO * cs, const uchar *a, size_t a_length, } +int my_strnncollsp_simple_nopad(CHARSET_INFO * cs, + const uchar *a, size_t a_length, + const uchar *b, size_t b_length) +{ + return my_strnncoll_simple(cs, a, a_length, b, b_length, FALSE); +} + + size_t my_caseup_str_8bit(CHARSET_INFO * cs,char *str) { register const uchar *map= cs->to_upper; @@ -297,13 +329,28 @@ size_t my_snprintf_8bit(CHARSET_INFO *cs __attribute__((unused)), } +void my_hash_sort_simple_nopad(CHARSET_INFO *cs, + const uchar *key, size_t len, + ulong *nr1, ulong *nr2) +{ + register const uchar *sort_order=cs->sort_order; + const uchar *end= key + len; + register ulong m1= *nr1, m2= *nr2; + for (; key < (uchar*) end ; key++) + { + MY_HASH_ADD(m1, m2, (uint) sort_order[(uint) *key]); + } + *nr1= m1; + *nr2= m2; +} + + void my_hash_sort_simple(CHARSET_INFO *cs, - const uchar *key, size_t len, - ulong *nr1, ulong *nr2) + const uchar *key, size_t len, + ulong *nr1, ulong *nr2) { register const uchar *sort_order=cs->sort_order; const uchar *end; - register ulong m1= *nr1, m2= *nr2; uint16 space_weight= sort_order[' ']; /* @@ -338,13 +385,7 @@ void my_hash_sort_simple(CHARSET_INFO *cs, break; } } - - for (; key < (uchar*) end ; key++) - { - MY_HASH_ADD(m1, m2, (uint) sort_order[(uint) *key]); - } - *nr1= m1; - *nr2= m2; + my_hash_sort_simple_nopad(cs, key, end - key, nr1, nr2); } @@ -1996,6 +2037,28 @@ my_strxfrm_pad_desc_and_reverse(CHARSET_INFO *cs, } +size_t +my_strxfrm_pad_desc_and_reverse_nopad(CHARSET_INFO *cs, + uchar *str, uchar *frmend, uchar *strend, + uint nweights, uint flags, uint level) +{ + if (nweights && frmend < strend && (flags & MY_STRXFRM_PAD_WITH_SPACE)) + { + uint fill_length= MY_MIN((uint) (strend - frmend), nweights * cs->mbminlen); + memset(frmend, 0x00, fill_length); + frmend+= fill_length; + } + my_strxfrm_desc_and_reverse(str, frmend, flags, level); + if ((flags & MY_STRXFRM_PAD_TO_MAXLEN) && frmend < strend) + { + uint fill_length= strend - frmend; + memset(frmend, 0x00, fill_length); + frmend= strend; + } + return frmend - str; +} + + MY_CHARSET_HANDLER my_charset_8bit_handler= { my_cset_init_8bit, @@ -2043,3 +2106,19 @@ MY_COLLATION_HANDLER my_collation_8bit_simple_ci_handler = my_hash_sort_simple, my_propagate_simple }; + + +MY_COLLATION_HANDLER my_collation_8bit_simple_nopad_ci_handler = +{ + my_coll_init_simple, /* init */ + my_strnncoll_simple, + my_strnncollsp_simple_nopad, + my_strnxfrm_simple_nopad, + my_strnxfrmlen_simple, + my_like_range_simple, + my_wildcmp_8bit, + my_strcasecmp_8bit, + my_instr_simple, + my_hash_sort_simple_nopad, + my_propagate_simple +}; diff --git a/strings/ctype-sjis.c b/strings/ctype-sjis.c index e0546146008..94fd69c79c0 100644 --- a/strings/ctype-sjis.c +++ b/strings/ctype-sjis.c @@ -34025,6 +34025,22 @@ size_t my_numcells_sjis(CHARSET_INFO *cs __attribute__((unused)), #include "strcoll.ic" +#define DEFINE_STRNNCOLLSP_NOPAD +#define MY_FUNCTION_NAME(x) my_ ## x ## _sjis_japanese_nopad_ci +#define WEIGHT_PAD_SPACE (256 * (int) ' ') +#define WEIGHT_MB1(x) (256 * (int) sort_order_sjis[(uchar) (x)]) +#define WEIGHT_MB2(x,y) (sjiscode(x, y)) +#include "strcoll.ic" + + +#define DEFINE_STRNNCOLLSP_NOPAD +#define MY_FUNCTION_NAME(x) my_ ## x ## _sjis_nopad_bin +#define WEIGHT_PAD_SPACE (256 * (int) ' ') +#define WEIGHT_MB1(x) (256 * (int) (uchar) (x)) +#define WEIGHT_MB2(x,y) (sjiscode(x, y)) +#include "strcoll.ic" + + static MY_COLLATION_HANDLER my_collation_handler_sjis_japanese_ci= { NULL, /* init */ @@ -34057,6 +34073,38 @@ static MY_COLLATION_HANDLER my_collation_handler_sjis_bin= }; +static MY_COLLATION_HANDLER my_collation_handler_sjis_japanese_nopad_ci= +{ + NULL, /* init */ + my_strnncoll_sjis_japanese_ci, + my_strnncollsp_sjis_japanese_nopad_ci, + my_strnxfrm_mb_nopad, + my_strnxfrmlen_simple, + my_like_range_mb, + my_wildcmp_mb, + my_strcasecmp_8bit, + my_instr_mb, + my_hash_sort_simple_nopad, + my_propagate_simple +}; + + +static MY_COLLATION_HANDLER my_collation_handler_sjis_nopad_bin= +{ + NULL, /* init */ + my_strnncoll_sjis_bin, + my_strnncollsp_sjis_nopad_bin, + my_strnxfrm_mb_nopad, + my_strnxfrmlen_simple, + my_like_range_mb, + my_wildcmp_mb_bin, + my_strcasecmp_mb_bin, + my_instr_mb, + my_hash_sort_mb_nopad_bin, + my_propagate_simple +}; + + static MY_CHARSET_HANDLER my_charset_handler= { NULL, /* init */ @@ -34155,4 +34203,69 @@ struct charset_info_st my_charset_sjis_bin= &my_collation_handler_sjis_bin }; + +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 */ + "sjis_japanese_nopad_ci", /* name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_sjis, + to_lower_sjis, + to_upper_sjis, + sort_order_sjis, + NULL, /* uca */ + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + &my_caseinfo_sjis, /* caseinfo */ + NULL, /* state_map */ + NULL, /* ident_map */ + 1, /* strxfrm_multiply */ + 1, /* caseup_multiply */ + 1, /* casedn_multiply */ + 1, /* mbminlen */ + 2, /* mbmaxlen */ + 0, /* min_sort_char */ + 0xFCFC, /* max_sort_char */ + ' ', /* pad char */ + 1, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_handler, + &my_collation_handler_sjis_japanese_nopad_ci +}; + +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 */ + "sjis_nopad_bin", /* name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_sjis, + to_lower_sjis, + to_upper_sjis, + NULL, /* sort_order */ + NULL, /* uca */ + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + &my_caseinfo_sjis, /* caseinfo */ + NULL, /* state_map */ + NULL, /* ident_map */ + 1, /* strxfrm_multiply */ + 1, /* caseup_multiply */ + 1, /* casedn_multiply */ + 1, /* mbminlen */ + 2, /* mbmaxlen */ + 0, /* min_sort_char */ + 0xFCFC, /* max_sort_char */ + ' ', /* pad char */ + 1, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_handler, + &my_collation_handler_sjis_nopad_bin +}; + #endif diff --git a/strings/ctype-tis620.c b/strings/ctype-tis620.c index 7f3bdc9140a..72a33036085 100644 --- a/strings/ctype-tis620.c +++ b/strings/ctype-tis620.c @@ -541,7 +541,7 @@ int my_strnncoll_tis620(CHARSET_INFO *cs __attribute__((unused)), static int my_strnncollsp_tis620(CHARSET_INFO * cs __attribute__((unused)), - const uchar *a0, size_t a_length, + const uchar *a0, size_t a_length, const uchar *b0, size_t b_length) { uchar buf[80], *end, *a, *b, *alloced= NULL; @@ -583,6 +583,13 @@ ret: } +static +int my_strnncollsp_tis620_nopad(CHARSET_INFO * cs __attribute__((unused)), + const uchar *a0, size_t a_length, + const uchar *b0, size_t b_length) +{ + return my_strnncoll_tis620(cs, a0, a_length, b0, b_length, FALSE); +} /* strnxfrm replacment, convert Thai string to sortable string @@ -613,6 +620,29 @@ my_strnxfrm_tis620(CHARSET_INFO *cs, } +static size_t +my_strnxfrm_tis620_nopad(CHARSET_INFO *cs, + uchar *dst, size_t dstlen, uint nweights, + const uchar *src, size_t srclen, uint flags) +{ + size_t len, dstlen0= dstlen; + len= (uint) (strmake((char*) dst, (char*) src, MY_MIN(dstlen, srclen)) - + (char*) dst); + len= thai2sortable(dst, len); + set_if_smaller(dstlen, nweights); + set_if_smaller(len, dstlen); + len= my_strxfrm_pad_desc_and_reverse_nopad(cs, dst, dst + len, dst + dstlen, + dstlen - len, flags, 0); + if ((flags & MY_STRXFRM_PAD_TO_MAXLEN) && len < dstlen0) + { + uint fill_length= dstlen0 - len; + memset(dst + len, 0x00, fill_length); + len= dstlen0; + } + return len; +} + + static const unsigned short cs_to_uni[256]={ 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, @@ -830,6 +860,21 @@ static MY_COLLATION_HANDLER my_collation_ci_handler = my_propagate_simple }; +static MY_COLLATION_HANDLER my_collation_nopad_ci_handler = +{ + NULL, /* init */ + my_strnncoll_tis620, + my_strnncollsp_tis620_nopad, + my_strnxfrm_tis620_nopad, + my_strnxfrmlen_simple, + my_like_range_simple, + my_wildcmp_8bit, /* wildcmp */ + my_strcasecmp_8bit, + my_instr_simple, /* QQ: To be fixed */ + my_hash_sort_simple_nopad, + my_propagate_simple +}; + static MY_CHARSET_HANDLER my_charset_handler= { NULL, /* init */ @@ -930,4 +975,70 @@ struct charset_info_st my_charset_tis620_bin= }; +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 */ + "tis620_thai_nopad_ci",/* name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_tis620, + to_lower_tis620, + to_upper_tis620, + sort_order_tis620, + NULL, /* uca */ + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state_map */ + NULL, /* ident_map */ + 4, /* strxfrm_multiply */ + 1, /* caseup_multiply */ + 1, /* casedn_multiply */ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_handler, + &my_collation_nopad_ci_handler +}; + + +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 */ + "tis620_nopad_bin", /* name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_tis620, + to_lower_tis620, + to_upper_tis620, + NULL, /* sort_order */ + NULL, /* uca */ + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state_map */ + NULL, /* ident_map */ + 1, /* strxfrm_multiply */ + 1, /* caseup_multiply */ + 1, /* casedn_multiply */ + 1, /* mbminlen */ + 1, /* mbmaxlen */ + 0, /* min_sort_char */ + 255, /* max_sort_char */ + ' ', /* pad char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_handler, + &my_collation_8bit_nopad_bin_handler +}; + + #endif diff --git a/strings/ctype-ucs2.c b/strings/ctype-ucs2.c index 06dab08a772..9d8353103f0 100644 --- a/strings/ctype-ucs2.c +++ b/strings/ctype-ucs2.c @@ -1243,6 +1243,20 @@ static inline int my_weight_mb2_utf16mb2_general_ci(uchar b0, uchar b1) #define WEIGHT_MB4(b0,b1,b2,b3) ((int) MY_UTF16_WC4(b0, b1, b2, b3)) #include "strcoll.ic" +#define DEFINE_STRNNCOLLSP_NOPAD +#define MY_FUNCTION_NAME(x) my_ ## x ## _utf16_general_nopad_ci +#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x)) +#define WEIGHT_MB2(b0,b1) my_weight_mb2_utf16mb2_general_ci(b0,b1) +#define WEIGHT_MB4(b0,b1,b2,b3) MY_CS_REPLACEMENT_CHARACTER +#include "strcoll.ic" + +#define DEFINE_STRNNCOLLSP_NOPAD +#define MY_FUNCTION_NAME(x) my_ ## x ## _utf16_nopad_bin +#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x)) +#define WEIGHT_MB2(b0,b1) ((int) MY_UTF16_WC2(b0, b1)) +#define WEIGHT_MB4(b0,b1,b2,b3) ((int) MY_UTF16_WC4(b0, b1, b2, b3)) +#include "strcoll.ic" + #undef IS_MB2_CHAR #undef IS_MB4_CHAR @@ -1370,13 +1384,14 @@ my_caseup_utf16(CHARSET_INFO *cs, char *src, size_t srclen, static void -my_hash_sort_utf16(CHARSET_INFO *cs, const uchar *s, size_t slen, - ulong *nr1, ulong *nr2) +my_hash_sort_utf16_nopad(CHARSET_INFO *cs, + const uchar *s, size_t slen, + ulong *nr1, ulong *nr2) { my_wc_t wc; my_charset_conv_mb_wc mb_wc= cs->cset->mb_wc; int res; - const uchar *e= s + cs->cset->lengthsp(cs, (const char *) s, slen); + const uchar *e= s + slen; MY_UNICASE_INFO *uni_plane= cs->caseinfo; register ulong m1= *nr1, m2= *nr2; @@ -1391,6 +1406,15 @@ my_hash_sort_utf16(CHARSET_INFO *cs, const uchar *s, size_t slen, } +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); + my_hash_sort_utf16_nopad(cs, s, lengthsp, nr1, nr2); +} + + static size_t my_casedn_utf16(CHARSET_INFO *cs, char *src, size_t srclen, char *dst __attribute__((unused)), @@ -1511,10 +1535,11 @@ my_wildcmp_utf16_bin(CHARSET_INFO *cs, static void -my_hash_sort_utf16_bin(CHARSET_INFO *cs, - const uchar *pos, size_t len, ulong *nr1, ulong *nr2) +my_hash_sort_utf16_nopad_bin(CHARSET_INFO *cs __attribute__((unused)), + const uchar *pos, size_t len, + ulong *nr1, ulong *nr2) { - const uchar *end= pos + cs->cset->lengthsp(cs, (const char *) pos, len); + const uchar *end= pos + len; register ulong m1= *nr1, m2= *nr2; for ( ; pos < end ; pos++) @@ -1526,6 +1551,15 @@ my_hash_sort_utf16_bin(CHARSET_INFO *cs, } +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); + my_hash_sort_utf16_nopad_bin(cs, pos, lengthsp, nr1, nr2); +} + + static MY_COLLATION_HANDLER my_collation_utf16_general_ci_handler = { NULL, /* init */ @@ -1558,6 +1592,38 @@ static MY_COLLATION_HANDLER my_collation_utf16_bin_handler = }; +static MY_COLLATION_HANDLER my_collation_utf16_general_nopad_ci_handler = +{ + NULL, /* init */ + my_strnncoll_utf16_general_ci, + my_strnncollsp_utf16_general_nopad_ci, + my_strnxfrm_unicode_nopad, + my_strnxfrmlen_unicode, + my_like_range_generic, + my_wildcmp_utf16_ci, + my_strcasecmp_mb2_or_mb4, + my_instr_mb, + my_hash_sort_utf16_nopad, + my_propagate_simple +}; + + +static MY_COLLATION_HANDLER my_collation_utf16_nopad_bin_handler = +{ + NULL, /* init */ + my_strnncoll_utf16_bin, + my_strnncollsp_utf16_nopad_bin, + my_strnxfrm_unicode_full_nopad_bin, + my_strnxfrmlen_unicode_full_bin, + my_like_range_generic, + my_wildcmp_utf16_bin, + my_strcasecmp_mb2_or_mb4, + my_instr_mb, + my_hash_sort_utf16_nopad_bin, + my_propagate_simple +}; + + MY_CHARSET_HANDLER my_charset_utf16_handler= { NULL, /* init */ @@ -1658,6 +1724,73 @@ struct charset_info_st my_charset_utf16_bin= }; +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 */ + "utf16_general_nopad_ci", /* name */ + "UTF-16 Unicode", /* comment */ + NULL, /* tailoring */ + NULL, /* ctype */ + NULL, /* to_lower */ + NULL, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state_map */ + NULL, /* ident_map */ + 1, /* strxfrm_multiply */ + 1, /* caseup_multiply */ + 1, /* casedn_multiply */ + 2, /* mbminlen */ + 4, /* mbmaxlen */ + 0, /* min_sort_char */ + 0xFFFF, /* max_sort_char */ + ' ', /* pad char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_utf16_handler, + &my_collation_utf16_general_nopad_ci_handler +}; + + +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 */ + "utf16_nopad_bin", /* name */ + "UTF-16 Unicode", /* comment */ + NULL, /* tailoring */ + NULL, /* ctype */ + NULL, /* to_lower */ + NULL, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state_map */ + NULL, /* ident_map */ + 1, /* strxfrm_multiply */ + 1, /* caseup_multiply */ + 1, /* casedn_multiply */ + 2, /* mbminlen */ + 4, /* mbmaxlen */ + 0, /* min_sort_char */ + 0xFFFF, /* max_sort_char */ + ' ', /* pad char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_utf16_handler, + &my_collation_utf16_nopad_bin_handler +}; + + #define IS_MB2_CHAR(b0,b1) (!MY_UTF16_SURROGATE_HEAD(b1)) #define IS_MB4_CHAR(b0,b1,b2,b3) (MY_UTF16_HIGH_HEAD(b1) && MY_UTF16_LOW_HEAD(b3)) @@ -1673,6 +1806,20 @@ struct charset_info_st my_charset_utf16_bin= #define WEIGHT_MB4(b0,b1,b2,b3) ((int) MY_UTF16_WC4(b1, b0, b3, b2)) #include "strcoll.ic" +#define DEFINE_STRNNCOLLSP_NOPAD +#define MY_FUNCTION_NAME(x) my_ ## x ## _utf16le_general_nopad_ci +#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x)) +#define WEIGHT_MB2(b0,b1) my_weight_mb2_utf16mb2_general_ci(b1,b0) +#define WEIGHT_MB4(b0,b1,b2,b3) MY_CS_REPLACEMENT_CHARACTER +#include "strcoll.ic" + +#define DEFINE_STRNNCOLLSP_NOPAD +#define MY_FUNCTION_NAME(x) my_ ## x ## _utf16le_nopad_bin +#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x)) +#define WEIGHT_MB2(b0,b1) ((int) MY_UTF16_WC2(b1, b0)) +#define WEIGHT_MB4(b0,b1,b2,b3) ((int) MY_UTF16_WC4(b1, b0, b3, b2)) +#include "strcoll.ic" + #undef IS_MB2_CHAR #undef IS_MB4_CHAR @@ -1779,6 +1926,38 @@ static MY_COLLATION_HANDLER my_collation_utf16le_bin_handler = }; +static MY_COLLATION_HANDLER my_collation_utf16le_general_nopad_ci_handler = +{ + NULL, /* init */ + my_strnncoll_utf16le_general_ci, + my_strnncollsp_utf16le_general_nopad_ci, + my_strnxfrm_unicode_nopad, + my_strnxfrmlen_unicode, + my_like_range_generic, + my_wildcmp_utf16_ci, + my_strcasecmp_mb2_or_mb4, + my_instr_mb, + my_hash_sort_utf16_nopad, + my_propagate_simple +}; + + +static MY_COLLATION_HANDLER my_collation_utf16le_nopad_bin_handler = +{ + NULL, /* init */ + my_strnncoll_utf16le_bin, + my_strnncollsp_utf16le_nopad_bin, + my_strnxfrm_unicode_full_nopad_bin, + my_strnxfrmlen_unicode_full_bin, + my_like_range_generic, + my_wildcmp_utf16_bin, + my_strcasecmp_mb2_or_mb4, + my_instr_mb, + my_hash_sort_utf16_nopad_bin, + my_propagate_simple +}; + + static MY_CHARSET_HANDLER my_charset_utf16le_handler= { NULL, /* init */ @@ -1879,6 +2058,73 @@ struct charset_info_st my_charset_utf16le_bin= }; +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 */ + "utf16le_general_nopad_ci",/* name */ + "UTF-16LE Unicode", /* comment */ + NULL, /* tailoring */ + NULL, /* ctype */ + NULL, /* to_lower */ + NULL, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state_map */ + NULL, /* ident_map */ + 1, /* strxfrm_multiply */ + 1, /* caseup_multiply */ + 1, /* casedn_multiply */ + 2, /* mbminlen */ + 4, /* mbmaxlen */ + 0, /* min_sort_char */ + 0xFFFF, /* max_sort_char */ + ' ', /* pad char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_utf16le_handler, + &my_collation_utf16le_general_nopad_ci_handler +}; + + +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 */ + "utf16le_nopad_bin", /* name */ + "UTF-16LE Unicode", /* comment */ + NULL, /* tailoring */ + NULL, /* ctype */ + NULL, /* to_lower */ + NULL, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state_map */ + NULL, /* ident_map */ + 1, /* strxfrm_multiply */ + 1, /* caseup_multiply */ + 1, /* casedn_multiply */ + 2, /* mbminlen */ + 4, /* mbmaxlen */ + 0, /* min_sort_char */ + 0xFFFF, /* max_sort_char */ + ' ', /* pad char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_utf16le_handler, + &my_collation_utf16le_nopad_bin_handler +}; + + #endif /* HAVE_CHARSET_utf16 */ @@ -1916,6 +2162,18 @@ static inline int my_weight_utf32_general_ci(uchar b0, uchar b1, #define WEIGHT_MB4(b0,b1,b2,b3) ((int) MY_UTF32_WC4(b0, b1, b2, b3)) #include "strcoll.ic" +#define DEFINE_STRNNCOLLSP_NOPAD +#define MY_FUNCTION_NAME(x) my_ ## x ## _utf32_general_nopad_ci +#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x)) +#define WEIGHT_MB4(b0,b1,b2,b3) my_weight_utf32_general_ci(b0, b1, b2, b3) +#include "strcoll.ic" + +#define DEFINE_STRNNCOLLSP_NOPAD +#define MY_FUNCTION_NAME(x) my_ ## x ## _utf32_nopad_bin +#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x)) +#define WEIGHT_MB4(b0,b1,b2,b3) ((int) MY_UTF32_WC4(b0, b1, b2, b3)) +#include "strcoll.ic" + #undef IS_MB2_CHAR #undef IS_MB4_CHAR @@ -1984,6 +2242,18 @@ my_tosort_utf32(MY_UNICASE_INFO *uni_plane, my_wc_t *wc) static size_t +my_lengthsp_utf32(CHARSET_INFO *cs __attribute__((unused)), + const char *ptr, size_t length) +{ + const char *end= ptr + length; + DBUG_ASSERT((length % 4) == 0); + while (end > ptr + 3 && end[-1] == ' ' && !end[-2] && !end[-3] && !end[-4]) + end-= 4; + return (size_t) (end - ptr); +} + + +static size_t my_caseup_utf32(CHARSET_INFO *cs, char *src, size_t srclen, char *dst __attribute__((unused)), size_t dstlen __attribute__((unused))) @@ -2007,8 +2277,8 @@ my_caseup_utf32(CHARSET_INFO *cs, char *src, size_t srclen, static void -my_hash_sort_utf32(CHARSET_INFO *cs, const uchar *s, size_t slen, - ulong *nr1, ulong *nr2) +my_hash_sort_utf32_nopad(CHARSET_INFO *cs, const uchar *s, size_t slen, + ulong *nr1, ulong *nr2) { my_wc_t wc; int res; @@ -2016,10 +2286,6 @@ my_hash_sort_utf32(CHARSET_INFO *cs, const uchar *s, size_t slen, MY_UNICASE_INFO *uni_plane= cs->caseinfo; register ulong m1= *nr1, m2= *nr2; - /* Skip trailing spaces */ - while (e > s + 3 && e[-1] == ' ' && !e[-2] && !e[-3] && !e[-4]) - e-= 4; - while ((res= my_utf32_uni(cs, &wc, (uchar*) s, (uchar*) e)) > 0) { my_tosort_utf32(uni_plane, &wc); @@ -2034,6 +2300,15 @@ my_hash_sort_utf32(CHARSET_INFO *cs, const uchar *s, size_t slen, } +static void +my_hash_sort_utf32(CHARSET_INFO *cs, const uchar *s, size_t slen, + ulong *nr1, ulong *nr2) +{ + size_t lengthsp= my_lengthsp_utf32(cs, (const char *) s, slen); + my_hash_sort_utf32_nopad(cs, s, lengthsp, nr1, nr2); +} + + static size_t my_casedn_utf32(CHARSET_INFO *cs, char *src, size_t srclen, char *dst __attribute__((unused)), @@ -2415,18 +2690,6 @@ void my_fill_utf32(CHARSET_INFO *cs, } -static size_t -my_lengthsp_utf32(CHARSET_INFO *cs __attribute__((unused)), - const char *ptr, size_t length) -{ - const char *end= ptr + length; - DBUG_ASSERT((length % 4) == 0); - while (end > ptr + 3 && end[-1] == ' ' && !end[-2] && !end[-3] && !end[-4]) - end-= 4; - return (size_t) (end - ptr); -} - - static int my_wildcmp_utf32_ci(CHARSET_INFO *cs, const char *str, const char *str_end, @@ -2509,6 +2772,38 @@ static MY_COLLATION_HANDLER my_collation_utf32_bin_handler = }; +static MY_COLLATION_HANDLER my_collation_utf32_general_nopad_ci_handler = +{ + NULL, /* init */ + my_strnncoll_utf32_general_ci, + my_strnncollsp_utf32_general_nopad_ci, + my_strnxfrm_unicode_nopad, + my_strnxfrmlen_unicode, + my_like_range_generic, + my_wildcmp_utf32_ci, + my_strcasecmp_mb2_or_mb4, + my_instr_mb, + my_hash_sort_utf32_nopad, + my_propagate_simple +}; + + +static MY_COLLATION_HANDLER my_collation_utf32_nopad_bin_handler = +{ + NULL, /* init */ + my_strnncoll_utf32_bin, + my_strnncollsp_utf32_nopad_bin, + my_strnxfrm_unicode_full_nopad_bin, + my_strnxfrmlen_unicode_full_bin, + my_like_range_generic, + my_wildcmp_utf32_bin, + my_strcasecmp_mb2_or_mb4, + my_instr_mb, + my_hash_sort_utf32_nopad, + my_propagate_simple +}; + + MY_CHARSET_HANDLER my_charset_utf32_handler= { NULL, /* init */ @@ -2609,6 +2904,73 @@ struct charset_info_st my_charset_utf32_bin= }; +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 */ + "utf32_general_nopad_ci", /* name */ + "UTF-32 Unicode", /* comment */ + NULL, /* tailoring */ + NULL, /* ctype */ + NULL, /* to_lower */ + NULL, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state_map */ + NULL, /* ident_map */ + 1, /* strxfrm_multiply */ + 1, /* caseup_multiply */ + 1, /* casedn_multiply */ + 4, /* mbminlen */ + 4, /* mbmaxlen */ + 0, /* min_sort_char */ + 0xFFFF, /* max_sort_char */ + ' ', /* pad char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_utf32_handler, + &my_collation_utf32_general_nopad_ci_handler +}; + + +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 */ + "utf32_nopad_bin", /* name */ + "UTF-32 Unicode", /* comment */ + NULL, /* tailoring */ + NULL, /* ctype */ + NULL, /* to_lower */ + NULL, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state_map */ + NULL, /* ident_map */ + 1, /* strxfrm_multiply */ + 1, /* caseup_multiply */ + 1, /* casedn_multiply */ + 4, /* mbminlen */ + 4, /* mbmaxlen */ + 0, /* min_sort_char */ + 0xFFFF, /* max_sort_char */ + ' ', /* pad char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_utf32_handler, + &my_collation_utf32_nopad_bin_handler +}; + + #endif /* HAVE_CHARSET_utf32 */ @@ -2698,6 +3060,20 @@ static inline int my_weight_mb2_ucs2_general_ci(uchar b0, uchar b1) #include "strcoll.ic" +#define DEFINE_STRNNCOLLSP_NOPAD +#define MY_FUNCTION_NAME(x) my_ ## x ## _ucs2_general_nopad_ci +#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x)) +#define WEIGHT_MB2(b0,b1) my_weight_mb2_ucs2_general_ci(b0,b1) +#include "strcoll.ic" + + +#define DEFINE_STRNNCOLLSP_NOPAD +#define MY_FUNCTION_NAME(x) my_ ## x ## _ucs2_nopad_bin +#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x)) +#define WEIGHT_MB2(b0,b1) UCS2_CODE(b0,b1) +#include "strcoll.ic" + + static int my_charlen_ucs2(CHARSET_INFO *cs __attribute__((unused)), const uchar *s, const uchar *e) @@ -2779,8 +3155,9 @@ static size_t my_caseup_ucs2(CHARSET_INFO *cs, char *src, size_t srclen, } -static void my_hash_sort_ucs2(CHARSET_INFO *cs, const uchar *s, size_t slen, - ulong *nr1, ulong *nr2) +static void +my_hash_sort_ucs2_nopad(CHARSET_INFO *cs, const uchar *s, size_t slen, + ulong *nr1, ulong *nr2) { my_wc_t wc; int res; @@ -2788,9 +3165,6 @@ static void my_hash_sort_ucs2(CHARSET_INFO *cs, const uchar *s, size_t slen, MY_UNICASE_INFO *uni_plane= cs->caseinfo; register ulong m1= *nr1, m2= *nr2; - while (e > s+1 && e[-1] == ' ' && e[-2] == '\0') - e-= 2; - while ((s < e) && (res=my_ucs2_uni(cs,&wc, (uchar *)s, (uchar*)e)) >0) { my_tosort_ucs2(uni_plane, &wc); @@ -2802,6 +3176,13 @@ static void my_hash_sort_ucs2(CHARSET_INFO *cs, const uchar *s, size_t slen, } +static void my_hash_sort_ucs2(CHARSET_INFO *cs, const uchar *s, size_t slen, + ulong *nr1, ulong *nr2) +{ + size_t lengthsp= my_lengthsp_mb2(cs, (const char *) s, slen); + my_hash_sort_ucs2_nopad(cs, s, lengthsp, nr1, nr2); +} + static size_t my_casedn_ucs2(CHARSET_INFO *cs, char *src, size_t srclen, char *dst __attribute__((unused)), size_t dstlen __attribute__((unused))) @@ -2928,17 +3309,14 @@ int my_wildcmp_ucs2_bin(CHARSET_INFO *cs, } -static -void my_hash_sort_ucs2_bin(CHARSET_INFO *cs __attribute__((unused)), - const uchar *key, size_t len,ulong *nr1, ulong *nr2) +static void +my_hash_sort_ucs2_nopad_bin(CHARSET_INFO *cs __attribute__((unused)), + const uchar *key, size_t len, + ulong *nr1, ulong *nr2) { - const uchar *end = key + len; + const uchar *end= key + len; register ulong m1= *nr1, m2= *nr2; - - while (end > key+1 && end[-1] == ' ' && end[-2] == '\0') - end-= 2; - - for (; key < (uchar*) end ; key++) + for ( ; key < end ; key++) { MY_HASH_ADD(m1, m2, (uint)*key); } @@ -2947,6 +3325,15 @@ void my_hash_sort_ucs2_bin(CHARSET_INFO *cs __attribute__((unused)), } +static void +my_hash_sort_ucs2_bin(CHARSET_INFO *cs, + const uchar *key, size_t len, ulong *nr1, ulong *nr2) +{ + size_t lengthsp= my_lengthsp_mb2(cs, (const char *) key, len); + my_hash_sort_ucs2_nopad_bin(cs, key, lengthsp, nr1, nr2); +} + + static MY_COLLATION_HANDLER my_collation_ucs2_general_ci_handler = { NULL, /* init */ @@ -2979,6 +3366,38 @@ static MY_COLLATION_HANDLER my_collation_ucs2_bin_handler = }; +static MY_COLLATION_HANDLER my_collation_ucs2_general_nopad_ci_handler = +{ + NULL, /* init */ + my_strnncoll_ucs2_general_ci, + my_strnncollsp_ucs2_general_nopad_ci, + my_strnxfrm_unicode_nopad, + my_strnxfrmlen_unicode, + my_like_range_generic, + my_wildcmp_ucs2_ci, + my_strcasecmp_mb2_or_mb4, + my_instr_mb, + my_hash_sort_ucs2_nopad, + my_propagate_simple +}; + + +static MY_COLLATION_HANDLER my_collation_ucs2_nopad_bin_handler = +{ + NULL, /* init */ + my_strnncoll_ucs2_bin, + my_strnncollsp_ucs2_nopad_bin, + my_strnxfrm_unicode_nopad, + my_strnxfrmlen_unicode, + my_like_range_generic, + my_wildcmp_ucs2_bin, + my_strcasecmp_mb2_or_mb4, + my_instr_mb, + my_hash_sort_ucs2_nopad_bin, + my_propagate_simple +}; + + MY_CHARSET_HANDLER my_charset_ucs2_handler= { NULL, /* init */ @@ -3112,4 +3531,69 @@ struct charset_info_st my_charset_ucs2_bin= }; +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 */ + "ucs2_general_nopad_ci", /* name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_ucs2, /* ctype */ + to_lower_ucs2, /* to_lower */ + to_upper_ucs2, /* to_upper */ + to_upper_ucs2, /* sort_order */ + NULL, /* uca */ + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state_map */ + NULL, /* ident_map */ + 1, /* strxfrm_multiply */ + 1, /* caseup_multiply */ + 1, /* casedn_multiply */ + 2, /* mbminlen */ + 2, /* mbmaxlen */ + 0, /* min_sort_char */ + 0xFFFF, /* max_sort_char */ + ' ', /* pad char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_ucs2_handler, + &my_collation_ucs2_general_nopad_ci_handler +}; + + +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 */ + "ucs2_nopad_bin", /* name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_ucs2, /* ctype */ + to_lower_ucs2, /* to_lower */ + to_upper_ucs2, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state_map */ + NULL, /* ident_map */ + 1, /* strxfrm_multiply */ + 1, /* caseup_multiply */ + 1, /* casedn_multiply */ + 2, /* mbminlen */ + 2, /* mbmaxlen */ + 0, /* min_sort_char */ + 0xFFFF, /* max_sort_char */ + ' ', /* pad char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_ucs2_handler, + &my_collation_ucs2_nopad_bin_handler +}; + #endif /* HAVE_CHARSET_ucs2 */ diff --git a/strings/ctype-ujis.c b/strings/ctype-ujis.c index 786ae991aef..8c08e906284 100644 --- a/strings/ctype-ujis.c +++ b/strings/ctype-ujis.c @@ -220,6 +220,26 @@ static const uchar sort_order_ujis[]= #include "strcoll.ic" +#define DEFINE_STRNNCOLLSP_NOPAD +#define MY_FUNCTION_NAME(x) my_ ## x ## _ujis_japanese_nopad_ci +#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x)) +#define WEIGHT_MB1(x) ((int) sort_order_ujis[(uchar) (x)]) +#define WEIGHT_MB2(x,y) ((((uint) (uchar)(x)) << 16) | \ + (((uint) (uchar) (y)) << 8)) +#define WEIGHT_MB3(x,y,z) (WEIGHT_MB2(x,y) | ((uint) (uchar) z)) +#include "strcoll.ic" + + +#define DEFINE_STRNNCOLLSP_NOPAD +#define MY_FUNCTION_NAME(x) my_ ## x ## _ujis_nopad_bin +#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x)) +#define WEIGHT_MB1(x) ((int) (uchar) (x)) +#define WEIGHT_MB2(x,y) ((((uint) (uchar)(x)) << 16) | \ + (((uint) (uchar) (y)) << 8)) +#define WEIGHT_MB3(x,y,z) (WEIGHT_MB2(x,y) | ((uint) (uchar) z)) +#include "strcoll.ic" + + static size_t my_numcells_eucjp(CHARSET_INFO *cs __attribute__((unused)), const char *str, const char *str_end) @@ -67246,6 +67266,38 @@ static MY_COLLATION_HANDLER my_collation_ujis_bin_handler = }; +static MY_COLLATION_HANDLER my_collation_ujis_japanese_nopad_ci_handler = +{ + NULL, /* init */ + my_strnncoll_ujis_japanese_ci, + my_strnncollsp_ujis_japanese_nopad_ci, + my_strnxfrm_mb_nopad, + my_strnxfrmlen_simple, + my_like_range_mb, + my_wildcmp_mb, + my_strcasecmp_mb, + my_instr_mb, + my_hash_sort_simple_nopad, + my_propagate_simple +}; + + +static MY_COLLATION_HANDLER my_collation_ujis_nopad_bin_handler = +{ + NULL, /* init */ + my_strnncoll_ujis_bin, + my_strnncollsp_ujis_nopad_bin, + my_strnxfrm_mb_nopad, + my_strnxfrmlen_simple, + my_like_range_mb, + my_wildcmp_mb_bin, + my_strcasecmp_mb_bin, + my_instr_mb, + my_hash_sort_mb_nopad_bin, + my_propagate_simple +}; + + static MY_CHARSET_HANDLER my_charset_handler= { NULL, /* init */ @@ -67347,4 +67399,70 @@ struct charset_info_st my_charset_ujis_bin= }; +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 */ + "ujis_japanese_nopad_ci", /* name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_ujis, + to_lower_ujis, + to_upper_ujis, + sort_order_ujis, + NULL, /* uca */ + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + &my_caseinfo_ujis, /* caseinfo */ + NULL, /* state_map */ + NULL, /* ident_map */ + 1, /* strxfrm_multiply */ + 1, /* caseup_multiply */ + 2, /* casedn_multiply */ + 1, /* mbminlen */ + 3, /* mbmaxlen */ + 0, /* min_sort_char */ + 0xFEFE, /* max_sort_char */ + ' ', /* pad char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_handler, + &my_collation_ujis_japanese_nopad_ci_handler +}; + + +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 */ + "ujis_nopad_bin", /* name */ + "", /* comment */ + NULL, /* tailoring */ + ctype_ujis, + to_lower_ujis, + to_upper_ujis, + NULL, /* sort_order */ + NULL, /* uca */ + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + &my_caseinfo_ujis, /* caseinfo */ + NULL, /* state_map */ + NULL, /* ident_map */ + 1, /* strxfrm_multiply */ + 1, /* caseup_multiply */ + 2, /* casedn_multiply */ + 1, /* mbminlen */ + 3, /* mbmaxlen */ + 0, /* min_sort_char */ + 0xFEFE, /* max_sort_char */ + ' ', /* pad char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_handler, + &my_collation_ujis_nopad_bin_handler +}; + + #endif /* HAVE_CHARSET_ujis */ diff --git a/strings/ctype-utf8.c b/strings/ctype-utf8.c index 494e292aac6..39d3521baa4 100644 --- a/strings/ctype-utf8.c +++ b/strings/ctype-utf8.c @@ -111,7 +111,9 @@ #define MY_UTF8MB3_BIN MY_UTF8MB3 "_bin" #define MY_UTF8MB4_GENERAL_CI MY_UTF8MB4 "_general_ci" #define MY_UTF8MB4_GENERAL_CS MY_UTF8MB4 "_general_cs" +#define MY_UTF8MB4_GENERAL_NOPAD_CI MY_UTF8MB4 "_general_nopad_ci" #define MY_UTF8MB4_BIN MY_UTF8MB4 "_bin" +#define MY_UTF8MB4_NOPAD_BIN MY_UTF8MB4 "_nopad_bin" @@ -4692,30 +4694,19 @@ my_strxfrm_pad_unicode(uchar *str, uchar *strend) } -/* - Store sorting weights using 2 bytes per character. - - This function is shared between - - utf8mb3_general_ci, utf8_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. -*/ -size_t -my_strnxfrm_unicode(CHARSET_INFO *cs, - uchar *dst, size_t dstlen, uint nweights, - const uchar *src, size_t srclen, uint flags) +size_t my_strnxfrm_unicode_internal(CHARSET_INFO *cs, + uchar *dst, uchar *de, uint *nweights, + const uchar *src, const uchar *se) { my_wc_t UNINIT_VAR(wc); int res; uchar *dst0= dst; - uchar *de= dst + dstlen; - const uchar *se= src + srclen; MY_UNICASE_INFO *uni_plane= (cs->state & MY_CS_BINSORT) ? NULL : cs->caseinfo; - DBUG_ASSERT(!srclen || src); - for (; dst < de && nweights; nweights--) + DBUG_ASSERT(src || !se); + + for (; dst < de && *nweights; (*nweights)--) { if ((res= cs->cset->mb_wc(cs, &wc, src, se)) <= 0) break; @@ -4728,6 +4719,29 @@ my_strnxfrm_unicode(CHARSET_INFO *cs, if (dst < de) *dst++= (uchar) (wc & 0xFF); } + return dst - dst0; +} + + +/* + Store sorting weights using 2 bytes per character. + + This function is shared between + - utf8mb3_general_ci, utf8_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. +*/ +size_t +my_strnxfrm_unicode(CHARSET_INFO *cs, + uchar *dst, size_t dstlen, uint nweights, + const uchar *src, size_t srclen, uint flags) +{ + uchar *dst0= dst; + uchar *de= dst + dstlen; + dst+= my_strnxfrm_unicode_internal(cs, dst, de, &nweights, + src, src + srclen); + DBUG_ASSERT(dst <= de); /* Safety */ if (dst < de && nweights && (flags & MY_STRXFRM_PAD_WITH_SPACE)) dst+= my_strxfrm_pad_nweights_unicode(dst, de, nweights); @@ -4740,6 +4754,35 @@ my_strnxfrm_unicode(CHARSET_INFO *cs, } +size_t +my_strnxfrm_unicode_nopad(CHARSET_INFO *cs, + uchar *dst, size_t dstlen, uint nweights, + const uchar *src, size_t srclen, uint flags) +{ + uchar *dst0= dst; + uchar *de= dst + dstlen; + dst+= my_strnxfrm_unicode_internal(cs, dst, de, &nweights, + src, src + srclen); + DBUG_ASSERT(dst <= de); /* Safety */ + + if (dst < de && nweights && (flags & MY_STRXFRM_PAD_WITH_SPACE)) + { + size_t len= de - dst; + set_if_smaller(len, nweights * 2); + memset(dst, 0x00, len); + dst+= len; + } + + my_strxfrm_desc_and_reverse(dst0, dst, flags, 0); + + if ((flags & MY_STRXFRM_PAD_TO_MAXLEN) && dst < de) + { + memset(dst, 0x00, de - dst); + dst= de; + } + return dst - dst0; +} + /* For BMP-only collations that use 2 bytes per weight. */ @@ -4750,24 +4793,18 @@ my_strnxfrmlen_unicode(CHARSET_INFO *cs, size_t len) return ((len + cs->mbmaxlen - 1) / cs->mbmaxlen) * 2; } -/* - Store sorting weights using 3 bytes per character. - This function is shared between utf8mb4_bin, utf16_bin, utf32_bin. -*/ size_t -my_strnxfrm_unicode_full_bin(CHARSET_INFO *cs, - uchar *dst, size_t dstlen, uint nweights, - const uchar *src, size_t srclen, uint flags) +my_strnxfrm_unicode_full_bin_internal(CHARSET_INFO *cs, + uchar *dst, uchar *de, uint *nweights, + const uchar *src, const uchar *se) { my_wc_t UNINIT_VAR(wc); uchar *dst0= dst; - uchar *de= dst + dstlen; - const uchar *se = src + srclen; - DBUG_ASSERT(!srclen || src); + DBUG_ASSERT(src || !se); DBUG_ASSERT(cs->state & MY_CS_BINSORT); - for ( ; dst < de && nweights; nweights--) + for (; dst < de && *nweights; (*nweights)--) { int res; if ((res= cs->cset->mb_wc(cs, &wc, src, se)) <= 0) @@ -4781,6 +4818,26 @@ my_strnxfrm_unicode_full_bin(CHARSET_INFO *cs, *dst++= (uchar) (wc & 0xFF); } } + return dst - dst0; +} + + +/* + Store sorting weights using 3 bytes per character. + This function is shared between utf8mb4_bin, utf16_bin, utf32_bin. +*/ +size_t +my_strnxfrm_unicode_full_bin(CHARSET_INFO *cs, + uchar *dst, size_t dstlen, uint nweights, + const uchar *src, size_t srclen, uint flags) +{ + my_wc_t UNINIT_VAR(wc); + uchar *dst0= dst; + uchar *de= dst + dstlen; + + dst+= my_strnxfrm_unicode_full_bin_internal(cs, dst, de, &nweights, + src, src + srclen); + DBUG_ASSERT(dst <= de); /* Safety */ if (flags & MY_STRXFRM_PAD_WITH_SPACE) { @@ -4795,7 +4852,7 @@ my_strnxfrm_unicode_full_bin(CHARSET_INFO *cs, } } } - + my_strxfrm_desc_and_reverse(dst0, dst, flags, 0); if (flags & MY_STRXFRM_PAD_TO_MAXLEN) @@ -4816,6 +4873,38 @@ my_strnxfrm_unicode_full_bin(CHARSET_INFO *cs, size_t +my_strnxfrm_unicode_full_nopad_bin(CHARSET_INFO *cs, + uchar *dst, size_t dstlen, uint nweights, + const uchar *src, size_t srclen, uint flags) +{ + my_wc_t UNINIT_VAR(wc); + uchar *dst0= dst; + uchar *de= dst + dstlen; + + dst+= my_strnxfrm_unicode_full_bin_internal(cs, dst, de, &nweights, + src, src + srclen); + DBUG_ASSERT(dst <= de); /* Safety */ + + if (dst < de && nweights && (flags & MY_STRXFRM_PAD_WITH_SPACE)) + { + size_t len= de - dst; + set_if_smaller(len, nweights * 3); + memset(dst, 0x00, len); + dst+= len; + } + + my_strxfrm_desc_and_reverse(dst0, dst, flags, 0); + + if ((flags & MY_STRXFRM_PAD_TO_MAXLEN) && dst < de) + { + memset(dst, 0x00, de - dst); + dst= de; + } + return dst - dst0; +} + + +size_t my_strnxfrmlen_unicode_full_bin(CHARSET_INFO *cs, size_t len) { return ((len + 3) / cs->mbmaxlen) * 3; @@ -5092,33 +5181,40 @@ static size_t my_caseup_utf8(CHARSET_INFO *cs, char *src, size_t srclen, } -static void my_hash_sort_utf8(CHARSET_INFO *cs, const uchar *s, size_t slen, - ulong *nr1, ulong *nr2) +static void my_hash_sort_utf8_nopad(CHARSET_INFO *cs, const uchar *s, size_t slen, + ulong *nr1, ulong *nr2) { my_wc_t wc; int res; - const uchar *e=s+slen; + const uchar *e= s+slen; MY_UNICASE_INFO *uni_plane= cs->caseinfo; register ulong m1= *nr1, m2= *nr2; - /* - Remove end space. We have to do this to be able to compare - 'A ' and 'A' as identical - */ - while (e > s && e[-1] == ' ') - e--; - while ((s < e) && (res=my_utf8_uni(cs,&wc, (uchar *)s, (uchar*)e))>0 ) { my_tosort_unicode(uni_plane, &wc, cs->state); MY_HASH_ADD_16(m1, m2, wc); - s+=res; + s+= res; } *nr1= m1; *nr2= m2; } +static void my_hash_sort_utf8(CHARSET_INFO *cs, const uchar *s, size_t slen, + ulong *nr1, ulong *nr2) +{ + const uchar *e= s+slen; + /* + Remove end space. We have to do this to be able to compare + 'A ' and 'A' as identical + */ + while (e > s && e[-1] == ' ') + e--; + my_hash_sort_utf8_nopad(cs, s, e - s, nr1, nr2); +} + + static size_t my_caseup_str_utf8(CHARSET_INFO *cs, char *src) { my_wc_t wc; @@ -5387,6 +5483,15 @@ static inline int my_weight_mb3_utf8_general_ci(uchar b0, uchar b1, uchar b2) #include "strcoll.ic" +#define DEFINE_STRNNCOLLSP_NOPAD +#define MY_FUNCTION_NAME(x) my_ ## x ## _utf8_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) +#include "strcoll.ic" + + static inline int my_weight_mb1_utf8_general_mysql500_ci(uchar b) { return (int) plane00_mysql500[b & 0xFF].sort; @@ -5426,6 +5531,14 @@ my_weight_mb3_utf8_general_mysql500_ci(uchar b0, uchar b1, uchar b2) #include "strcoll.ic" +#define DEFINE_STRNNCOLLSP_NOPAD +#define MY_FUNCTION_NAME(x) my_ ## x ## _utf8_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)) +#define WEIGHT_MB3(x,y,z) ((int) UTF8MB3_CODE(x,y,z)) +#include "strcoll.ic" + /* TODO-10.2: join this with pad_max_char() in ctype-mb.c */ @@ -5505,6 +5618,39 @@ static MY_COLLATION_HANDLER my_collation_utf8_bin_handler = my_propagate_simple }; + +static MY_COLLATION_HANDLER my_collation_utf8_general_nopad_ci_handler = +{ + NULL, /* init */ + my_strnncoll_utf8_general_ci, + my_strnncollsp_utf8_general_nopad_ci, + my_strnxfrm_unicode_nopad, + my_strnxfrmlen_unicode, + my_like_range_mb, + my_wildcmp_utf8, + my_strcasecmp_utf8, + my_instr_mb, + my_hash_sort_utf8_nopad, + my_propagate_complex +}; + + +static MY_COLLATION_HANDLER my_collation_utf8_nopad_bin_handler = +{ + NULL, /* init */ + my_strnncoll_utf8_bin, + my_strnncollsp_utf8_nopad_bin, + my_strnxfrm_unicode_nopad, + my_strnxfrmlen_unicode, + my_like_range_mb, + my_wildcmp_mb_bin, + my_strcasecmp_mb_bin, + my_instr_mb, + my_hash_sort_mb_nopad_bin, + my_propagate_simple +}; + + MY_CHARSET_HANDLER my_charset_utf8_handler= { NULL, /* init */ @@ -5638,6 +5784,73 @@ struct charset_info_st my_charset_utf8_bin= &my_collation_utf8_bin_handler }; + +struct charset_info_st my_charset_utf8_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 */ + "", /* comment */ + NULL, /* tailoring */ + ctype_utf8, /* ctype */ + to_lower_utf8, /* to_lower */ + to_upper_utf8, /* to_upper */ + to_upper_utf8, /* sort_order */ + NULL, /* uca */ + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + &my_unicase_default, /* caseinfo */ + NULL, /* state_map */ + NULL, /* ident_map */ + 1, /* strxfrm_multiply */ + 1, /* caseup_multiply */ + 1, /* casedn_multiply */ + 1, /* mbminlen */ + 3, /* mbmaxlen */ + 0, /* min_sort_char */ + 0xFFFF, /* max_sort_char */ + ' ', /* pad char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_utf8_handler, + &my_collation_utf8_general_nopad_ci_handler +}; + + +struct charset_info_st my_charset_utf8_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 */ + "", /* comment */ + NULL, /* tailoring */ + ctype_utf8, /* ctype */ + to_lower_utf8, /* to_lower */ + to_upper_utf8, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + &my_unicase_default,/* caseinfo */ + NULL, /* state_map */ + NULL, /* ident_map */ + 1, /* strxfrm_multiply */ + 1, /* caseup_multiply */ + 1, /* casedn_multiply */ + 1, /* mbminlen */ + 3, /* mbmaxlen */ + 0, /* min_sort_char */ + 0xFFFF, /* max_sort_char */ + ' ', /* pad char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_utf8_handler, + &my_collation_utf8_nopad_bin_handler +}; + + #ifdef HAVE_UTF8_GENERAL_CS /* @@ -7427,7 +7640,7 @@ my_caseup_utf8mb4(CHARSET_INFO *cs, char *src, size_t srclen, static void -my_hash_sort_utf8mb4(CHARSET_INFO *cs, const uchar *s, size_t slen, +my_hash_sort_utf8mb4_nopad(CHARSET_INFO *cs, const uchar *s, size_t slen, ulong *nr1, ulong *nr2) { my_wc_t wc; @@ -7436,13 +7649,6 @@ my_hash_sort_utf8mb4(CHARSET_INFO *cs, const uchar *s, size_t slen, MY_UNICASE_INFO *uni_plane= cs->caseinfo; register ulong m1= *nr1, m2= *nr2; - /* - Remove end space. We do this to be able to compare - 'A ' and 'A' as identical - */ - while (e > s && e[-1] == ' ') - e--; - while ((res= my_mb_wc_utf8mb4(cs, &wc, (uchar*) s, (uchar*) e)) > 0) { my_tosort_unicode(uni_plane, &wc, cs->state); @@ -7465,6 +7671,21 @@ my_hash_sort_utf8mb4(CHARSET_INFO *cs, const uchar *s, size_t slen, } +static void +my_hash_sort_utf8mb4(CHARSET_INFO *cs, const uchar *s, size_t slen, + ulong *nr1, ulong *nr2) +{ + const uchar *e= s + slen; + /* + Remove end space. We do this to be able to compare + 'A ' and 'A' as identical + */ + while (e > s && e[-1] == ' ') + e--; + my_hash_sort_utf8mb4_nopad(cs, s, e - s, nr1, nr2); +} + + static size_t my_caseup_str_utf8mb4(CHARSET_INFO *cs, char *src) { @@ -7719,6 +7940,30 @@ size_t my_well_formed_len_utf8mb4(CHARSET_INFO *cs, #include "strcoll.ic" +#define DEFINE_STRNNCOLLSP_NOPAD +#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) +/* + All non-BMP characters have the same weight. +*/ +#define WEIGHT_MB4(b0,b1,b2,b3) MY_CS_REPLACEMENT_CHARACTER +#include "strcoll.ic" + + +#define DEFINE_STRNNCOLLSP_NOPAD +#define MY_FUNCTION_NAME(x) my_ ## x ## _utf8mb4_nopad_bin +#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x)) +#define WEIGHT_MB1(b0) ((int) (uchar) (b0)) +#define WEIGHT_MB2(b0,b1) ((int) UTF8MB2_CODE(b0,b1)) +#define WEIGHT_MB3(b0,b1,b2) ((int) UTF8MB3_CODE(b0,b1,b2)) +#define WEIGHT_MB4(b0,b1,b2,b3) ((int) UTF8MB4_CODE(b0,b1,b2,b3)) +#include "strcoll.ic" + + static MY_COLLATION_HANDLER my_collation_utf8mb4_general_ci_handler= { NULL, /* init */ @@ -7737,7 +7982,7 @@ static MY_COLLATION_HANDLER my_collation_utf8mb4_general_ci_handler= static MY_COLLATION_HANDLER my_collation_utf8mb4_bin_handler = { - NULL, /* init */ + NULL, /* init */ my_strnncoll_utf8mb4_bin, my_strnncollsp_utf8mb4_bin, my_strnxfrm_unicode_full_bin, @@ -7751,6 +7996,38 @@ static MY_COLLATION_HANDLER my_collation_utf8mb4_bin_handler = }; +static MY_COLLATION_HANDLER my_collation_utf8mb4_general_nopad_ci_handler= +{ + NULL, /* init */ + my_strnncoll_utf8mb4_general_ci, + my_strnncollsp_utf8mb4_general_nopad_ci, + my_strnxfrm_unicode_nopad, + my_strnxfrmlen_unicode, + my_like_range_mb, + my_wildcmp_utf8mb4, + my_strcasecmp_utf8mb4, + my_instr_mb, + my_hash_sort_utf8mb4_nopad, + my_propagate_complex +}; + + +static MY_COLLATION_HANDLER my_collation_utf8mb4_nopad_bin_handler = +{ + NULL, /* init */ + my_strnncoll_utf8mb4_bin, + my_strnncollsp_utf8mb4_nopad_bin, + my_strnxfrm_unicode_full_nopad_bin, + my_strnxfrmlen_unicode_full_bin, + my_like_range_mb, + my_wildcmp_mb_bin, + my_strcasecmp_mb_bin, + my_instr_mb, + my_hash_sort_mb_nopad_bin, + my_propagate_simple +}; + + MY_CHARSET_HANDLER my_charset_utf8mb4_handler= { NULL, /* init */ @@ -7852,4 +8129,72 @@ struct charset_info_st my_charset_utf8mb4_bin= &my_collation_utf8mb4_bin_handler }; + +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 */ + MY_UTF8MB4_GENERAL_NOPAD_CI,/* name */ + "UTF-8 Unicode", /* comment */ + NULL, /* tailoring */ + ctype_utf8mb4, /* ctype */ + to_lower_utf8mb4, /* to_lower */ + to_upper_utf8mb4, /* to_upper */ + to_upper_utf8mb4, /* sort_order */ + NULL, /* uca */ + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + &my_unicase_default,/* caseinfo */ + NULL, /* state_map */ + NULL, /* ident_map */ + 1, /* strxfrm_multiply */ + 1, /* caseup_multiply */ + 1, /* casedn_multiply */ + 1, /* mbminlen */ + 4, /* mbmaxlen */ + 0, /* min_sort_char */ + 0xFFFF, /* max_sort_char */ + ' ', /* pad char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_utf8mb4_handler, + &my_collation_utf8mb4_general_nopad_ci_handler +}; + + +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 */ + MY_UTF8MB4_NOPAD_BIN, /* name */ + "UTF-8 Unicode", /* comment */ + NULL, /* tailoring */ + ctype_utf8mb4, /* ctype */ + to_lower_utf8mb4, /* to_lower */ + to_upper_utf8mb4, /* to_upper */ + NULL, /* sort_order */ + NULL, /* uca */ + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + &my_unicase_default,/* caseinfo */ + NULL, /* state_map */ + NULL, /* ident_map */ + 1, /* strxfrm_multiply */ + 1, /* caseup_multiply */ + 1, /* casedn_multiply */ + 1, /* mbminlen */ + 4, /* mbmaxlen */ + 0, /* min_sort_char */ + 0xFFFF, /* max_sort_char */ + ' ', /* pad char */ + 0, /* escape_with_backslash_is_dangerous */ + 1, /* levels_for_order */ + &my_charset_utf8mb4_handler, + &my_collation_utf8mb4_nopad_bin_handler +}; + #endif /* HAVE_CHARSET_utf8mb4 */ diff --git a/strings/ctype.c b/strings/ctype.c index 2764a327bb9..7d9789e48e2 100644 --- a/strings/ctype.c +++ b/strings/ctype.c @@ -618,6 +618,8 @@ static int cs_value(MY_XML_PARSER *st,const char *attr, size_t len) i->cs.state|= MY_CS_BINSORT; else if (!strncmp("compiled",attr,len)) i->cs.state|= MY_CS_COMPILED; + else if (!strncmp("nopad",attr,len)) + i->cs.state|= MY_CS_NOPAD; break; case _CS_UPPERMAP: fill_uchar(i->to_upper,MY_CS_TO_UPPER_TABLE_SIZE,attr,len); diff --git a/strings/strcoll.ic b/strings/strcoll.ic index a9693b1f3c0..c647a5ef57e 100644 --- a/strings/strcoll.ic +++ b/strings/strcoll.ic @@ -202,8 +202,10 @@ MY_FUNCTION_NAME(strnncoll)(CHARSET_INFO *cs __attribute__((unused)), } +#ifdef DEFINE_STRNNCOLLSP_NOPAD + /** - Compare two strings according to the collation, with PAD SPACE handling. + Compare two strings according to the collation, with NO PAD handling. @param cs - the character set and collation @param a - the left string @@ -212,7 +214,24 @@ MY_FUNCTION_NAME(strnncoll)(CHARSET_INFO *cs __attribute__((unused)), @param b_length - the length of the right string @return - the comparison result */ +static int +MY_FUNCTION_NAME(strnncollsp)(CHARSET_INFO *cs __attribute__((unused)), + const uchar *a, size_t a_length, + const uchar *b, size_t b_length) +{ + return MY_FUNCTION_NAME(strnncoll)(cs, a, a_length, b, b_length, FALSE); +} +#else +/** + Compare two strings according to the collation, with PAD SPACE handling. + @param cs - the character set and collation + @param a - the left string + @param a_length - the length of the left string + @param b - the right string + @param b_length - the length of the right string + @return - the comparison result +*/ static int MY_FUNCTION_NAME(strnncollsp)(CHARSET_INFO *cs __attribute__((unused)), const uchar *a, size_t a_length, @@ -257,6 +276,7 @@ MY_FUNCTION_NAME(strnncollsp)(CHARSET_INFO *cs __attribute__((unused)), DBUG_ASSERT(0); return 0; } +#endif #ifdef DEFINE_STRNXFRM @@ -292,7 +312,12 @@ MY_FUNCTION_NAME(strnxfrm)(CHARSET_INFO *cs, else *dst++= sort_order ? sort_order[*src++] : *src++; } +#ifdef DEFINE_STRNNCOLLSP_NOPAD + return my_strxfrm_pad_desc_and_reverse_nopad(cs, d0, dst, de, + nweights, flags, 0); +#else return my_strxfrm_pad_desc_and_reverse(cs, d0, dst, de, nweights, flags, 0); +#endif } #endif /* DEFINE_STRNXFRM */ @@ -310,3 +335,4 @@ MY_FUNCTION_NAME(strnxfrm)(CHARSET_INFO *cs, #undef WEIGHT_PAD_SPACE #undef WEIGHT_MB2_FRM #undef DEFINE_STRNXFRM +#undef DEFINE_STRNNCOLLSP_NOPAD diff --git a/strings/strings_def.h b/strings/strings_def.h index 36d3d2b2fe9..8bdb806d1d2 100644 --- a/strings/strings_def.h +++ b/strings/strings_def.h @@ -32,6 +32,8 @@ #define DBUG_ASSERT(A) assert(A) #endif +#define MY_NOPAD_ID(x) ((x)+0x400) + /* SPACE_INT is a word that contains only spaces */ #if SIZEOF_INT == 4 #define SPACE_INT 0x20202020 |