diff options
Diffstat (limited to 'strings/ctype-gbk.c')
-rw-r--r-- | strings/ctype-gbk.c | 109 |
1 files changed, 109 insertions, 0 deletions
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 |