diff options
-rw-r--r-- | include/m_ctype.h | 2 | ||||
-rw-r--r-- | mysys/charset.c | 10 | ||||
-rw-r--r-- | sql/sql_yacc.yy | 28 | ||||
-rw-r--r-- | strings/ctype-big5.c | 2 | ||||
-rw-r--r-- | strings/ctype-bin.c | 2 | ||||
-rw-r--r-- | strings/ctype-czech.c | 2 | ||||
-rw-r--r-- | strings/ctype-euc_kr.c | 2 | ||||
-rw-r--r-- | strings/ctype-extra.c | 94 | ||||
-rw-r--r-- | strings/ctype-gb2312.c | 2 | ||||
-rw-r--r-- | strings/ctype-gbk.c | 2 | ||||
-rw-r--r-- | strings/ctype-latin1.c | 2 | ||||
-rw-r--r-- | strings/ctype-latin1_de.c | 2 | ||||
-rw-r--r-- | strings/ctype-sjis.c | 2 | ||||
-rw-r--r-- | strings/ctype-tis620.c | 2 | ||||
-rw-r--r-- | strings/ctype-ujis.c | 2 | ||||
-rw-r--r-- | strings/ctype-utf8.c | 4 | ||||
-rw-r--r-- | strings/ctype-win1250ch.c | 2 | ||||
-rw-r--r-- | strings/ctype.c | 10 |
18 files changed, 116 insertions, 56 deletions
diff --git a/include/m_ctype.h b/include/m_ctype.h index 4ed5c6eec6a..19c7d315f4a 100644 --- a/include/m_ctype.h +++ b/include/m_ctype.h @@ -77,6 +77,8 @@ typedef struct my_uni_idx_st typedef struct charset_info_st { uint number; + uint primary_number; + uint binary_number; uint state; const char *csname; const char *name; diff --git a/mysys/charset.c b/mysys/charset.c index cfe1dcefcaf..b1abd460c2e 100644 --- a/mysys/charset.c +++ b/mysys/charset.c @@ -257,7 +257,13 @@ static int add_collation(CHARSET_INFO *cs) return MY_XML_ERROR; bzero((void*)all_charsets[cs->number],sizeof(CHARSET_INFO)); } + + if (cs->primary_number == cs->number) + cs->state |= MY_CS_PRIMARY; + if (cs->primary_number == cs->number) + cs->state |= MY_CS_BINSORT; + if (!(all_charsets[cs->number]->state & MY_CS_COMPILED)) { simple_cs_copy_data(all_charsets[cs->number],cs); @@ -267,6 +273,10 @@ static int add_collation(CHARSET_INFO *cs) all_charsets[cs->number]->state |= MY_CS_LOADED; } } + else + { + all_charsets[cs->number]->state |= cs->state; + } cs->number= 0; cs->name= NULL; cs->state= 0; diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index e5d94c30521..e093a822303 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -674,7 +674,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize); handler_rkey_function handler_read_or_scan single_multi table_wild_list table_wild_one opt_wild union_clause union_list union_option - precision subselect_start opt_and + precision subselect_start opt_and charset subselect_end select_var_list select_var_list_init help opt_len END_OF_INPUT @@ -927,10 +927,9 @@ create_database_options: create_database_option: COLLATE_SYM collation_name_or_default { Lex->create_info.table_charset=$2; } - | opt_default CHAR_SYM SET charset_name_or_default - { Lex->create_info.table_charset=$4; } - | opt_default CHARSET charset_name_or_default - { Lex->create_info.table_charset=$3; }; + | opt_default charset charset_name_or_default + { Lex->create_info.table_charset=$3; } + ; opt_table_options: /* empty */ { $$= 0; } @@ -989,16 +988,11 @@ create_table_option: table_list->next=0; lex->create_info.used_fields|= HA_CREATE_USED_UNION; } - | opt_default CHARSET opt_equal charset_name_or_default + | opt_default charset opt_equal charset_name_or_default { Lex->create_info.table_charset= $4; Lex->create_info.used_fields|= HA_CREATE_USED_CHARSET; } - | opt_default CHAR_SYM SET opt_equal charset_name_or_default - { - Lex->create_info.table_charset= $5; - Lex->create_info.used_fields|= HA_CREATE_USED_CHARSET; - } | COLLATE_SYM opt_equal collation_name_or_default { Lex->create_info.table_charset= $3; @@ -1301,6 +1295,10 @@ attribute: } ; +charset: + CHAR_SYM SET {} + | CHARSET {} + ; charset_name: ident_or_text @@ -1352,7 +1350,7 @@ opt_binary: YYABORT; } } - | CHAR_SYM SET charset_name { Lex->charset=$3; } ; + | charset charset_name { Lex->charset=$2; } ; opt_primary: /* empty */ @@ -3543,7 +3541,7 @@ show_param: thd->lex.sql_command= SQLCOM_SHOW_VARIABLES; thd->lex.option_type= (enum_var_type) $1; } - | CHAR_SYM SET wild + | charset wild { Lex->sql_command= SQLCOM_SHOW_CHARSETS; } | LOGS_SYM { Lex->sql_command= SQLCOM_SHOW_LOGS; } @@ -4215,12 +4213,12 @@ option_value: find_sys_var("tx_isolation"), new Item_int((int32) $4))); } - | CHAR_SYM SET opt_equal set_expr_or_default + | charset opt_equal set_expr_or_default { LEX *lex=Lex; lex->var_list.push_back(new set_var(lex->option_type, find_sys_var("convert_character_set"), - $4)); + $3)); } | NAMES_SYM charset_name_or_default opt_collate { diff --git a/strings/ctype-big5.c b/strings/ctype-big5.c index 7827b8714ec..c1d6d9e63de 100644 --- a/strings/ctype-big5.c +++ b/strings/ctype-big5.c @@ -6233,7 +6233,7 @@ my_mb_wc_big5(CHARSET_INFO *cs __attribute__((unused)), CHARSET_INFO my_charset_big5 = { - 1, /* number */ + 1,0,0, /* number */ MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM, /* state */ "big5", /* cs name */ "big5", /* name */ diff --git a/strings/ctype-bin.c b/strings/ctype-bin.c index c219bd95fd4..e7c3a941109 100644 --- a/strings/ctype-bin.c +++ b/strings/ctype-bin.c @@ -295,7 +295,7 @@ static int my_strnxfrm_bin(CHARSET_INFO *cs __attribute__((unused)), CHARSET_INFO my_charset_bin = { - 63, /* number */ + 63,0,0, /* number */ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_PRIMARY,/* state */ "binary", /* cs name */ "binary", /* name */ diff --git a/strings/ctype-czech.c b/strings/ctype-czech.c index f42ab66fed9..9bdf666cc21 100644 --- a/strings/ctype-czech.c +++ b/strings/ctype-czech.c @@ -607,7 +607,7 @@ int my_strnncollsp_czech(CHARSET_INFO * cs, CHARSET_INFO my_charset_czech = { - 2, /* number */ + 2,0,0, /* number */ MY_CS_COMPILED|MY_CS_STRNXFRM, /* state */ "latin2", /* cs name */ "czech", /* name */ diff --git a/strings/ctype-euc_kr.c b/strings/ctype-euc_kr.c index e49bf6a38fd..bd588c351c4 100644 --- a/strings/ctype-euc_kr.c +++ b/strings/ctype-euc_kr.c @@ -8641,7 +8641,7 @@ my_mb_wc_euc_kr(CHARSET_INFO *cs __attribute__((unused)), CHARSET_INFO my_charset_euc_kr = { - 19, /* number */ + 19,0,0, /* number */ MY_CS_COMPILED|MY_CS_PRIMARY, /* state */ "euckr", /* cs name */ "euckr", /* name */ diff --git a/strings/ctype-extra.c b/strings/ctype-extra.c index 3e3cd38c063..cd82ffdd9bb 100644 --- a/strings/ctype-extra.c +++ b/strings/ctype-extra.c @@ -1187,7 +1187,7 @@ static uchar sort_order_german1[] = { }; #endif -#ifdef HAVE_CHARSET_greek +#ifdef HAVE_CHARSET_greek_bad /* The greek character set. Generated automatically by * the ./conf_to_src program @@ -2807,7 +2807,7 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_latin1 { - 8, /* number */ + 8,0,0, /* number */ MY_CS_COMPILED|MY_CS_PRIMARY, /* state */ "latin1", /* cs name */ "latin1", /* name */ @@ -2858,7 +2858,7 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_cp1251 { - 14, /* number */ + 14,0,0, /* number */ MY_CS_COMPILED, /* state */ "cp1251", /* cs name */ "cp1251", /* name */ @@ -2908,7 +2908,7 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_cp1257 { - 29, /* number */ + 29,0,0, /* number */ MY_CS_COMPILED, /* state */ "cp1257", /* cs name */ "cp1257", /* name */ @@ -2958,7 +2958,7 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_croat { - 27, /* number */ + 27,0,0, /* number */ MY_CS_COMPILED, /* state */ "latin2", /* cs name */ "croat", /* name */ @@ -2979,6 +2979,8 @@ CHARSET_INFO compiled_charsets[] = { NULL, /* ismbchar */ NULL, /* ismbhead */ NULL, /* mbcharlen */ + my_numchars_8bit, + my_charpos_8bit, my_mb_wc_8bit, /* mb_wc */ my_wc_mb_8bit, /* wc_mb */ my_caseup_str_8bit, @@ -3007,7 +3009,7 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_danish { - 15, /* number */ + 15,0,0, /* number */ MY_CS_COMPILED, /* state */ "latin1", /* cs name */ "danish", /* name */ @@ -3028,6 +3030,8 @@ CHARSET_INFO compiled_charsets[] = { NULL, /* ismbchar */ NULL, /* ismbhead */ NULL, /* mbcharlen */ + my_numchars_8bit, + my_charpos_8bit, my_mb_wc_8bit, /* mb_wc */ my_wc_mb_8bit, /* wc_mb */ my_caseup_str_8bit, @@ -3055,7 +3059,7 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_dec8 { - 3, /* number */ + 3,0,0, /* number */ MY_CS_COMPILED, /* state */ "dec8", /* cs name */ "dec8", /* name */ @@ -3076,6 +3080,8 @@ CHARSET_INFO compiled_charsets[] = { NULL, /* ismbchar */ NULL, /* ismbhead */ NULL, /* mbcharlen */ + my_numchars_8bit, + my_charpos_8bit, my_mb_wc_8bit, /* mb_wc */ my_wc_mb_8bit, /* wc_mb */ my_caseup_str_8bit, @@ -3103,7 +3109,7 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_dos { - 4, /* number */ + 4,0,0, /* number */ MY_CS_COMPILED, /* state */ "cp850", /* cs name */ "dos", /* name */ @@ -3124,6 +3130,8 @@ CHARSET_INFO compiled_charsets[] = { NULL, /* ismbchar */ NULL, /* ismbhead */ NULL, /* mbcharlen */ + my_numchars_8bit, + my_charpos_8bit, my_mb_wc_8bit, /* mb_wc */ my_wc_mb_8bit, /* wc_mb */ my_caseup_str_8bit, @@ -3151,7 +3159,7 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_estonia { - 20, /* number */ + 20,0,0, /* number */ MY_CS_COMPILED, /* state */ "latin7", /* cs name */ "estonia", /* name */ @@ -3172,6 +3180,8 @@ CHARSET_INFO compiled_charsets[] = { NULL, /* ismbchar */ NULL, /* ismbhead */ NULL, /* mbcharlen */ + my_numchars_8bit, + my_charpos_8bit, my_mb_wc_8bit, /* mb_wc */ my_wc_mb_8bit, /* wc_mb */ my_caseup_str_8bit, @@ -3200,7 +3210,7 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_german1 { - 5, /* number */ + 5,0,0, /* number */ MY_CS_COMPILED, /* state */ "latin1", /* cs name */ "german1", /* name */ @@ -3221,6 +3231,8 @@ CHARSET_INFO compiled_charsets[] = { NULL, /* ismbchar */ NULL, /* ismbhead */ NULL, /* mbcharlen */ + my_numchars_8bit, + my_charpos_8bit, my_mb_wc_8bit, /* mb_wc */ my_wc_mb_8bit, /* wc_mb */ my_caseup_str_8bit, @@ -3246,9 +3258,9 @@ CHARSET_INFO compiled_charsets[] = { }, #endif -#ifdef HAVE_CHARSET_greek +#ifdef HAVE_CHARSET_greek_bad { - 25, /* number */ + 25,0,0, /* number */ MY_CS_COMPILED, /* state */ "greek", /* cs name */ "greek", /* name */ @@ -3269,6 +3281,8 @@ CHARSET_INFO compiled_charsets[] = { NULL, /* ismbchar */ NULL, /* ismbhead */ NULL, /* mbcharlen */ + my_numchars_8bit, + my_charpos_8bit, my_mb_wc_8bit, /* mb_wc */ my_wc_mb_8bit, /* wc_mb */ my_caseup_str_8bit, @@ -3296,7 +3310,7 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_hebrew { - 16, /* number */ + 16,0,0, /* number */ MY_CS_COMPILED, /* state */ "hebrew", /* cs name */ "hebrew", /* name */ @@ -3317,6 +3331,8 @@ CHARSET_INFO compiled_charsets[] = { NULL, /* ismbchar */ NULL, /* ismbhead */ NULL, /* mbcharlen */ + my_numchars_8bit, + my_charpos_8bit, my_mb_wc_8bit, /* mb_wc */ my_wc_mb_8bit, /* wc_mb */ my_caseup_str_8bit, @@ -3344,7 +3360,7 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_hp8 { - 6, /* number */ + 6,0,0, /* number */ MY_CS_COMPILED, /* state */ "hp8", /* cs name */ "hp8", /* name */ @@ -3365,6 +3381,8 @@ CHARSET_INFO compiled_charsets[] = { NULL, /* ismbchar */ NULL, /* ismbhead */ NULL, /* mbcharlen */ + my_numchars_8bit, + my_charpos_8bit, my_mb_wc_8bit, /* mb_wc */ my_wc_mb_8bit, /* wc_mb */ my_caseup_str_8bit, @@ -3392,7 +3410,7 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_hungarian { - 21, /* number */ + 21,0,0, /* number */ MY_CS_COMPILED, /* state */ "latin2", /* cs name */ "hungarian", /* name */ @@ -3413,6 +3431,8 @@ CHARSET_INFO compiled_charsets[] = { NULL, /* ismbchar */ NULL, /* ismbhead */ NULL, /* mbcharlen */ + my_numchars_8bit, + my_charpos_8bit, my_mb_wc_8bit, /* mb_wc */ my_wc_mb_8bit, /* wc_mb */ my_caseup_str_8bit, @@ -3440,7 +3460,7 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_koi8_ru { - 7, /* number */ + 7,0,0, /* number */ MY_CS_COMPILED, /* state */ "koi8r", /* cs name */ "koi8r", /* name */ @@ -3461,6 +3481,8 @@ CHARSET_INFO compiled_charsets[] = { NULL, /* ismbchar */ NULL, /* ismbhead */ NULL, /* mbcharlen */ + my_numchars_8bit, + my_charpos_8bit, my_mb_wc_8bit, /* mb_wc */ my_wc_mb_8bit, /* wc_mb */ my_caseup_str_8bit, @@ -3488,7 +3510,7 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_koi8_ukr { - 22, /* number */ + 22,0,0, /* number */ MY_CS_COMPILED, /* state */ "koi8u", /* cs name */ "koi8u", /* name */ @@ -3509,6 +3531,8 @@ CHARSET_INFO compiled_charsets[] = { NULL, /* ismbchar */ NULL, /* ismbhead */ NULL, /* mbcharlen */ + my_numchars_8bit, + my_charpos_8bit, my_mb_wc_8bit, /* mb_wc */ my_wc_mb_8bit, /* wc_mb */ my_caseup_str_8bit, @@ -3537,7 +3561,7 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_latin2 { - 9, /* number */ + 9,0,0, /* number */ MY_CS_COMPILED, /* state */ "latin2", /* cs name */ "latin2", /* name */ @@ -3558,6 +3582,8 @@ CHARSET_INFO compiled_charsets[] = { NULL, /* ismbchar */ NULL, /* ismbhead */ NULL, /* mbcharlen */ + my_numchars_8bit, + my_charpos_8bit, my_mb_wc_8bit, /* mb_wc */ my_wc_mb_8bit, /* wc_mb */ my_caseup_str_8bit, @@ -3585,7 +3611,7 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_latin5 { - 30, /* number */ + 30,0,0, /* number */ MY_CS_COMPILED, /* state */ "latin5", /* cs name */ "latin5", /* name */ @@ -3606,6 +3632,8 @@ CHARSET_INFO compiled_charsets[] = { NULL, /* ismbchar */ NULL, /* ismbhead */ NULL, /* mbcharlen */ + my_numchars_8bit, + my_charpos_8bit, my_mb_wc_8bit, /* mb_wc */ my_wc_mb_8bit, /* wc_mb */ my_caseup_str_8bit, @@ -3634,7 +3662,7 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_swe7 { - 10, /* number */ + 10,0,0, /* number */ MY_CS_COMPILED, /* state */ "swe7", /* cs name */ "swe7", /* name */ @@ -3655,6 +3683,8 @@ CHARSET_INFO compiled_charsets[] = { NULL, /* ismbchar */ NULL, /* ismbhead */ NULL, /* mbcharlen */ + my_numchars_8bit, + my_charpos_8bit, my_mb_wc_8bit, /* mb_wc */ my_wc_mb_8bit, /* wc_mb */ my_caseup_str_8bit, @@ -3683,7 +3713,7 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_usa7 { - 11, /* number */ + 11,0,0, /* number */ MY_CS_COMPILED, /* state */ "ascii", /* cs name */ "ascii", /* name */ @@ -3704,6 +3734,8 @@ CHARSET_INFO compiled_charsets[] = { NULL, /* ismbchar */ NULL, /* ismbhead */ NULL, /* mbcharlen */ + my_numchars_8bit, + my_charpos_8bit, my_mb_wc_8bit, /* mb_wc */ my_wc_mb_8bit, /* wc_mb */ my_caseup_str_8bit, @@ -3731,7 +3763,7 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_win1250 { - 26, /* number */ + 26,0,0, /* number */ MY_CS_COMPILED, /* state */ "cp1250", /* cs name */ "cp1250", /* name */ @@ -3752,6 +3784,8 @@ CHARSET_INFO compiled_charsets[] = { NULL, /* ismbchar */ NULL, /* ismbhead */ NULL, /* mbcharlen */ + my_numchars_8bit, + my_charpos_8bit, my_mb_wc_8bit, /* mb_wc */ my_wc_mb_8bit, /* wc_mb */ my_caseup_str_8bit, @@ -3779,7 +3813,7 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_win1251ukr { - 23, /* number */ + 23,0,0, /* number */ MY_CS_COMPILED, /* state */ "cp1251", /* cs name */ "win1251ukr", /* name */ @@ -3800,14 +3834,16 @@ CHARSET_INFO compiled_charsets[] = { NULL, /* ismbchar */ NULL, /* ismbhead */ NULL, /* mbcharlen */ + my_numchars_8bit, + my_charpos_8bit, my_mb_wc_8bit, /* mb_wc */ my_wc_mb_8bit, /* wc_mb */ my_caseup_str_8bit, my_casedn_str_8bit, my_caseup_8bit, my_casedn_8bit, - my_strcasecmp_8bit, my_tosort_8bit, + my_strcasecmp_8bit, my_strncasecmp_8bit, my_hash_caseup_simple, my_hash_sort_simple, @@ -3827,7 +3863,7 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_armscii8 { - 32, /* number */ + 32,0,0, /* number */ MY_CS_COMPILED, /* state */ "armscii8", /* cs name */ "armscii8", /* name */ @@ -3848,6 +3884,8 @@ CHARSET_INFO compiled_charsets[] = { NULL, /* ismbchar */ NULL, /* ismbhead */ NULL, /* mbcharlen */ + my_numchars_8bit, + my_charpos_8bit, my_mb_wc_8bit, /* mb_wc */ my_wc_mb_8bit, /* wc_mb */ my_caseup_str_8bit, @@ -3875,7 +3913,7 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_win1251 { - 17, /* number */ + 17,0,0, /* number */ MY_CS_COMPILED, /* state */ "cp1251", /* cs name */ "win1251", /* name */ @@ -3896,6 +3934,8 @@ CHARSET_INFO compiled_charsets[] = { NULL, /* ismbchar */ NULL, /* ismbhead */ NULL, /* mbcharlen */ + my_numchars_8bit, + my_charpos_8bit, my_mb_wc_8bit, /* mb_wc */ my_wc_mb_8bit, /* wc_mb */ my_caseup_str_8bit, @@ -3922,7 +3962,7 @@ CHARSET_INFO compiled_charsets[] = { #endif { - 0, /* end-of-list marker */ + 0,0,0, /* end-of-list marker */ 0, /* state */ NullS, /* cs name */ NullS, /* name */ diff --git a/strings/ctype-gb2312.c b/strings/ctype-gb2312.c index 9cc19dc46ef..9eca4383176 100644 --- a/strings/ctype-gb2312.c +++ b/strings/ctype-gb2312.c @@ -5691,7 +5691,7 @@ my_mb_wc_gb2312(CHARSET_INFO *cs __attribute__((unused)), CHARSET_INFO my_charset_gb2312 = { - 24, /* number */ + 24,0,0, /* number */ MY_CS_COMPILED|MY_CS_PRIMARY, /* state */ "gb2312", /* cs name */ "gb2312", /* name */ diff --git a/strings/ctype-gbk.c b/strings/ctype-gbk.c index 42a3686475a..c1a65c48aef 100644 --- a/strings/ctype-gbk.c +++ b/strings/ctype-gbk.c @@ -9888,7 +9888,7 @@ my_mb_wc_gbk(CHARSET_INFO *cs __attribute__((unused)), CHARSET_INFO my_charset_gbk = { - 28, /* number */ + 28,0,0, /* number */ MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM, /* state */ "gbk", /* cs name */ "gbk", /* name */ diff --git a/strings/ctype-latin1.c b/strings/ctype-latin1.c index 518418a9050..36260356816 100644 --- a/strings/ctype-latin1.c +++ b/strings/ctype-latin1.c @@ -177,7 +177,7 @@ int my_wc_mb_latin1(CHARSET_INFO *cs __attribute__((unused)), CHARSET_INFO my_charset_latin1 = { - 8, /* number */ + 8,0,0, /* number */ MY_CS_COMPILED, /* state */ "latin1", /* cs name */ "latin1", /* name */ diff --git a/strings/ctype-latin1_de.c b/strings/ctype-latin1_de.c index 93c8ba54bc0..66f47bb7326 100644 --- a/strings/ctype-latin1_de.c +++ b/strings/ctype-latin1_de.c @@ -348,7 +348,7 @@ static int my_strnxfrm_latin1_de(CHARSET_INFO *cs __attribute__((unused)), CHARSET_INFO my_charset_latin1_de = { - 31, /* number */ + 31,0,0, /* number */ MY_CS_COMPILED|MY_CS_STRNXFRM, /* state */ "latin1", /* cs name */ "latin1_de", /* name */ diff --git a/strings/ctype-sjis.c b/strings/ctype-sjis.c index a266fa71199..af87c550727 100644 --- a/strings/ctype-sjis.c +++ b/strings/ctype-sjis.c @@ -4475,7 +4475,7 @@ my_mb_wc_sjis(CHARSET_INFO *cs __attribute__((unused)), CHARSET_INFO my_charset_sjis = { - 13, /* number */ + 13,0,0, /* number */ MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM, /* state */ "sjis", /* cs name */ "sjis", /* name */ diff --git a/strings/ctype-tis620.c b/strings/ctype-tis620.c index bf3d332880d..fd3a9318c25 100644 --- a/strings/ctype-tis620.c +++ b/strings/ctype-tis620.c @@ -698,7 +698,7 @@ void ThNormalize(uchar* ptr, uint field_length, const uchar* from, uint length) CHARSET_INFO my_charset_tis620 = { - 18, /* number */ + 18,0,0, /* number */ MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM, /* state */ "tis620", /* cs name */ "tis620", /* name */ diff --git a/strings/ctype-ujis.c b/strings/ctype-ujis.c index d39be825ef0..6c238d50dcc 100644 --- a/strings/ctype-ujis.c +++ b/strings/ctype-ujis.c @@ -8432,7 +8432,7 @@ my_wc_mb_euc_jp(CHARSET_INFO *c,my_wc_t wc, unsigned char *s, unsigned char *e) CHARSET_INFO my_charset_ujis = { - 12, /* number */ + 12,0,0, /* number */ MY_CS_COMPILED|MY_CS_PRIMARY, /* state */ "ujis", /* cs name */ "ujis", /* name */ diff --git a/strings/ctype-utf8.c b/strings/ctype-utf8.c index e63405001f9..ecd163ac4c5 100644 --- a/strings/ctype-utf8.c +++ b/strings/ctype-utf8.c @@ -1977,7 +1977,7 @@ static int my_mbcharlen_utf8(CHARSET_INFO *cs __attribute__((unused)) , uint c) CHARSET_INFO my_charset_utf8 = { - 33, /* number */ + 33,0,0, /* number */ MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM, /* state */ "utf8", /* cs name */ "utf8", /* name */ @@ -3084,7 +3084,7 @@ uint my_charpos_ucs2(CHARSET_INFO *cs __attribute__((unused)), CHARSET_INFO my_charset_ucs2 = { - 35, /* number */ + 35,0,0, /* number */ MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM, /* state */ "ucs2", /* cs name */ "ucs2", /* name */ diff --git a/strings/ctype-win1250ch.c b/strings/ctype-win1250ch.c index 467d1ba4c91..978a5e8a55b 100644 --- a/strings/ctype-win1250ch.c +++ b/strings/ctype-win1250ch.c @@ -642,7 +642,7 @@ static my_bool my_like_range_win1250ch(CHARSET_INFO *cs __attribute__((unused)), CHARSET_INFO my_charset_win1250ch = { - 34, /* number */ + 34,0,0, /* number */ MY_CS_COMPILED|MY_CS_STRNXFRM, /* state */ "cp1250", /* cs name */ "cp1250_czech", /* name */ diff --git a/strings/ctype.c b/strings/ctype.c index 04e4e75890b..45bc2589f76 100644 --- a/strings/ctype.c +++ b/strings/ctype.c @@ -52,6 +52,8 @@ struct my_cs_file_section_st #define _CS_UNIMAP 12 #define _CS_COLLMAP 13 #define _CS_CTYPEMAP 14 +#define _CS_PRIMARY_ID 15 +#define _CS_BINARY_ID 16 static struct my_cs_file_section_st sec[] = { @@ -62,6 +64,8 @@ static struct my_cs_file_section_st sec[] = {_CS_MISC, "charsets.max-id"}, {_CS_MISC, "charsets.description"}, {_CS_CHARSET, "charsets.charset"}, + {_CS_PRIMARY_ID, "charsets.charset.primary-id"}, + {_CS_BINARY_ID, "charsets.charset.binary-id"}, {_CS_CSNAME, "charsets.charset.name"}, {_CS_FAMILY, "charsets.charset.family"}, {_CS_MISC, "charsets.charset.alias"}, @@ -192,6 +196,12 @@ static int cs_value(MY_XML_PARSER *st,const char *attr, uint len) case _CS_ID: i->cs.number= strtol(attr,(char**)NULL,10); break; + case _CS_BINARY_ID: + i->cs.binary_number= strtol(attr,(char**)NULL,10); + break; + case _CS_PRIMARY_ID: + i->cs.primary_number= strtol(attr,(char**)NULL,10); + break; case _CS_COLNAME: i->cs.name=mstr(i->name,attr,len,MY_CS_NAME_SIZE-1); break; |