diff options
-rw-r--r-- | client/sql_string.cc | 2 | ||||
-rw-r--r-- | include/m_ctype.h | 13 | ||||
-rw-r--r-- | include/my_sys.h | 1 | ||||
-rw-r--r-- | isam/_key.c | 12 | ||||
-rw-r--r-- | isam/_search.c | 4 | ||||
-rw-r--r-- | myisam/mi_open.c | 2 | ||||
-rw-r--r-- | myisam/mi_search.c | 2 | ||||
-rw-r--r-- | mysys/charset.c | 1 | ||||
-rw-r--r-- | mysys/mf_casecnv.c | 20 | ||||
-rw-r--r-- | mysys/my_handler.c | 2 | ||||
-rw-r--r-- | sql/field.cc | 6 | ||||
-rw-r--r-- | sql/filesort.cc | 10 | ||||
-rw-r--r-- | sql/opt_range.cc | 2 | ||||
-rw-r--r-- | sql/sql_string.cc | 2 | ||||
-rw-r--r-- | strings/ctype-simple.c | 24 | ||||
-rw-r--r-- | strings/ctype.c | 106 |
16 files changed, 118 insertions, 91 deletions
diff --git a/client/sql_string.cc b/client/sql_string.cc index cf9e9f62507..65854ece0ef 100644 --- a/client/sql_string.cc +++ b/client/sql_string.cc @@ -507,7 +507,7 @@ int sortcmp(const String *x,const String *y) uint32 x_len=x->length(),y_len=y->length(),len=min(x_len,y_len); #ifdef USE_STRCOLL - if (use_strcoll(x->str_charset)) + if (use_strnxfrm(x->str_charset)) { #ifndef CMP_ENDSPACE while (x_len && my_isspace(x->str_charset,s[x_len-1])) diff --git a/include/m_ctype.h b/include/m_ctype.h index 70acfcb3dec..69a2e025a11 100644 --- a/include/m_ctype.h +++ b/include/m_ctype.h @@ -92,12 +92,13 @@ typedef struct charset_info_st int (*wc_mb)(struct charset_info_st *cs,my_wc_t wc, unsigned char *s,unsigned char *e); - /* Functions for case convertion */ + /* Functions for case and sort convertion */ void (*caseup_str)(struct charset_info_st *, char *); void (*casedn_str)(struct charset_info_st *, char *); void (*caseup)(struct charset_info_st *, char *, uint); void (*casedn)(struct charset_info_st *, char *, uint); - + void (*tosort)(struct charset_info_st *, char *, uint); + /* Functions for case comparison */ int (*strcasecmp)(struct charset_info_st *, const char *, const char *); int (*strncasecmp)(struct charset_info_st *, const char *, const char *, @@ -125,14 +126,15 @@ extern const char *compiled_charset_name(uint charset_number); #define MY_CHARSET_CURRENT (default_charset_info->number) /* declarations for simple charsets */ -extern int my_strnxfrm_simple(CHARSET_INFO *, char *, uint, const char *, uint); -extern int my_strnncoll_simple(CHARSET_INFO *, const char *, uint, const char *, uint); +extern int my_strnxfrm_simple(CHARSET_INFO *, uchar *, uint, const uchar *, uint); +extern int my_strnncoll_simple(CHARSET_INFO *, const uchar *, uint, const uchar *, uint); /* Functions for 8bit */ extern void my_caseup_str_8bit(CHARSET_INFO *, char *); extern void my_casedn_str_8bit(CHARSET_INFO *, char *); extern void my_caseup_8bit(CHARSET_INFO *, char *, uint); extern void my_casedn_8bit(CHARSET_INFO *, char *, uint); +extern void my_tosort_8bit(CHARSET_INFO *, char *, uint); extern int my_strcasecmp_8bit(CHARSET_INFO * cs, const char *, const char *); extern int my_strncasecmp_8bit(CHARSET_INFO * cs, const char *, const char *, uint); @@ -364,7 +366,7 @@ void my_hash_sort_ucs2(struct charset_info_st *cs, const uchar *key, uint len, u #define my_isvar(s,c) (my_isalnum(s,c) || (c) == '_') #define my_isvar_start(s,c) (my_isalpha(s,c) || (c) == '_') -#define use_strcoll(s) ((s)->strnncoll != NULL) +#define use_strnxfrm(s) ((s)->strnxfrm != NULL) #define my_strnxfrm(s, a, b, c, d) ((s)->strnxfrm((s), (a), (b), (c), (d))) #define my_strnncoll(s, a, b, c, d) ((s)->strnncoll((s), (a), (b), (c), (d))) #define my_like_range(s, a, b, c, d, e, f, g, h) \ @@ -377,6 +379,7 @@ void my_hash_sort_ucs2(struct charset_info_st *cs, const uchar *key, uint len, u #define my_caseup(s, a, l) ((s)->caseup((s), (a), (l))) #define my_casedn(s, a, l) ((s)->casedn((s), (a), (l))) +#define my_tosort(s, a, l) ((s)->tosort((s), (a), (l))) #define my_caseup_str(s, a) ((s)->caseup_str((s), (a))) #define my_casedn_str(s, a) ((s)->casedn_str((s), (a))) #define my_strcasecmp(s, a, b) ((s)->strcasecmp((s), (a), (b))) diff --git a/include/my_sys.h b/include/my_sys.h index 7ceb40e9e06..e96543494b4 100644 --- a/include/my_sys.h +++ b/include/my_sys.h @@ -583,7 +583,6 @@ extern void allow_break(void); #endif extern void my_remember_signal(int signal_number,sig_handler (*func)(int)); -extern void case_sort(CHARSET_INFO *cs, my_string str,uint length); extern uint dirname_part(my_string to,const char *name); extern uint dirname_length(const char *name); #define base_name(A) (A+dirname_length(A)) diff --git a/isam/_key.c b/isam/_key.c index 0bedb428808..002ad480c56 100644 --- a/isam/_key.c +++ b/isam/_key.c @@ -54,11 +54,11 @@ uint _nisam_make_key(register N_INFO *info, uint keynr, uchar *key, const char * *key++= (uchar) (length=(uint) (end-pos)); memcpy((byte*) key,(byte*) pos,(size_t) length); #ifdef USE_STRCOLL - if (!use_strcoll(default_charset_info)) + if (!use_strnxfrm(default_charset_info)) #endif { if (type == HA_KEYTYPE_TEXT) - case_sort(default_charset_info,(byte*) key,length); + my_tosort(default_charset_info,(byte*) key,length); } key+=length; } @@ -67,11 +67,11 @@ uint _nisam_make_key(register N_INFO *info, uint keynr, uchar *key, const char * memcpy((byte*) key,(byte*) record+keyseg->base.start, (size_t) keyseg->base.length); #ifdef USE_STRCOLL - if (!use_strcoll(default_charset_info)) + if (!use_strnxfrm(default_charset_info)) #endif { if (type == HA_KEYTYPE_TEXT) - case_sort(default_charset_info,(byte*) key,(uint) keyseg->base.length); + my_tosort(default_charset_info,(byte*) key,(uint) keyseg->base.length); } #ifdef NAN_TEST else if (type == HA_KEYTYPE_FLOAT) @@ -150,11 +150,11 @@ uint _nisam_pack_key(register N_INFO *info, uint keynr, uchar *key, uchar *old, else memcpy((byte*) key,old,(size_t) length); #ifdef USE_STRCOLL - if (!use_strcoll(default_charset_info)) + if (!use_strnxfrm(default_charset_info)) #endif { if (type == HA_KEYTYPE_TEXT) - case_sort(default_charset_info,(byte*) key,length); + my_tosort(default_charset_info,(byte*) key,length); } key+= length; } diff --git a/isam/_search.c b/isam/_search.c index d76a8ce3097..445340a21d6 100644 --- a/isam/_search.c +++ b/isam/_search.c @@ -332,7 +332,7 @@ int _nisam_key_cmp(register N_KEYSEG *keyseg, register uchar *a, register uchar end= a+ min(key_length,(uint) length); #ifdef USE_STRCOLL - if (use_strcoll(default_charset_info)) { + if (use_strnxfrm(default_charset_info)) { if (((enum ha_base_keytype) keyseg->base.type) == HA_KEYTYPE_BINARY) { while (a < end) @@ -383,7 +383,7 @@ int _nisam_key_cmp(register N_KEYSEG *keyseg, register uchar *a, register uchar else { #ifdef USE_STRCOLL - if (use_strcoll(default_charset_info)) { + if (use_strnxfrm(default_charset_info)) { if (((enum ha_base_keytype) keyseg->base.type) == HA_KEYTYPE_BINARY) { while (a < end) diff --git a/myisam/mi_open.c b/myisam/mi_open.c index b05a8175a6e..cd11f190d24 100644 --- a/myisam/mi_open.c +++ b/myisam/mi_open.c @@ -685,7 +685,7 @@ static void setup_key_functions(register MI_KEYDEF *keyinfo) keyinfo->get_key= _mi_get_pack_key; if (keyinfo->seg[0].flag & HA_PACK_KEY) { /* Prefix compression */ - if (!keyinfo->seg->charset || use_strcoll(keyinfo->seg->charset) || + if (!keyinfo->seg->charset || use_strnxfrm(keyinfo->seg->charset) || (keyinfo->seg->flag & HA_NULL_PART)) keyinfo->bin_search=_mi_seq_search; else diff --git a/myisam/mi_search.c b/myisam/mi_search.c index 46d1cd19142..737bb2fd5d3 100644 --- a/myisam/mi_search.c +++ b/myisam/mi_search.c @@ -1287,7 +1287,7 @@ _mi_calc_var_pack_key_length(MI_KEYDEF *keyinfo,uint nod_flag,uchar *next_key, if ((keyinfo->flag & HA_FULLTEXT) && ((keyseg->type == HA_KEYTYPE_TEXT) || (keyseg->type == HA_KEYTYPE_VARTEXT)) && - !use_strcoll(keyseg->charset)) + !use_strnxfrm(keyseg->charset)) sort_order=keyseg->charset->sort_order; /* diff flag contains how many bytes is needed to pack key */ diff --git a/mysys/charset.c b/mysys/charset.c index 691a4233269..48dfad51da9 100644 --- a/mysys/charset.c +++ b/mysys/charset.c @@ -377,6 +377,7 @@ static CHARSET_INFO *add_charset(uint cs_number, myf flags) cs->casedn_str = my_casedn_str_8bit; cs->caseup = my_caseup_8bit; cs->casedn = my_casedn_8bit; + cs->tosort = my_tosort_8bit; cs->strcasecmp = my_strcasecmp_8bit; cs->strncasecmp = my_strncasecmp_8bit; cs->mb_wc = my_mb_wc_8bit; diff --git a/mysys/mf_casecnv.c b/mysys/mf_casecnv.c index 631db18b1ed..26d2e79ee9d 100644 --- a/mysys/mf_casecnv.c +++ b/mysys/mf_casecnv.c @@ -15,11 +15,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* - Functions to convert to lover_case and to upper_case in scandinavia. - - case_sort converts a character string to a representaion that can - be compared by strcmp to find with is alfabetical bigger. - (lower- and uppercase letters is compared as the same) + Functions to convert to lover_case and to upper_case. */ #include "mysys_priv.h" @@ -29,21 +25,11 @@ #endif - /* to sort-string that can be compared to get text in order */ - -void case_sort(CHARSET_INFO *cs, my_string str, uint length) -{ - register uchar *map=cs->sort_order; - - for ( ; length>0 ; length--, str++) - *str= (char) map[(uchar) *str]; -} /* case_sort */ - int my_sortcmp(CHARSET_INFO *cs, const char *s, const char *t, uint len) { #ifdef USE_STRCOLL - if (use_strcoll(cs)) + if (use_strnxfrm(cs)) return my_strnncoll(cs,(uchar *)s, len, (uchar *)t, len); else #endif @@ -63,7 +49,7 @@ int my_sortncmp(CHARSET_INFO *cs, const char *t, uint t_len) { #ifdef USE_STRCOLL - if (use_strcoll(cs)) + if (use_strnxfrm(cs)) return my_strnncoll(cs, (uchar *)s, s_len, (uchar *)t, t_len); else #endif diff --git a/mysys/my_handler.c b/mysys/my_handler.c index fe610b73fe9..af1bf7037f9 100644 --- a/mysys/my_handler.c +++ b/mysys/my_handler.c @@ -23,7 +23,7 @@ int mi_compare_text(CHARSET_INFO *charset_info, uchar *a, uint a_length, int flag; #ifdef USE_STRCOLL - if (use_strcoll(charset_info)) + if (use_strnxfrm(charset_info)) { if (part_key && b_length < a_length) a_length=b_length; diff --git a/sql/field.cc b/sql/field.cc index 336bc9d7cc2..a65e9c4f7a4 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -3841,7 +3841,7 @@ void Field_string::sort_string(char *to,uint length) else { #ifdef USE_STRCOLL - if (use_strcoll(field_charset)) { + if (use_strnxfrm(field_charset)) { uint tmp=my_strnxfrm(field_charset, (unsigned char *)to, length, (unsigned char *) ptr, field_length); @@ -4045,7 +4045,7 @@ void Field_varstring::sort_string(char *to,uint length) else { #ifdef USE_STRCOLL - if (use_strcoll(field_charset)) + if (use_strnxfrm(field_charset)) tot_length=my_strnxfrm(field_charset, (unsigned char *) to, length, (unsigned char *)ptr+2, tot_length); @@ -4536,7 +4536,7 @@ void Field_blob::sort_string(char *to,uint length) else { #ifdef USE_STRCOLL - if (use_strcoll(field_charset)) + if (use_strnxfrm(field_charset)) { blob_length=my_strnxfrm(field_charset, (unsigned char *)to, length, diff --git a/sql/filesort.cc b/sql/filesort.cc index 4d877c92dba..81629684a87 100644 --- a/sql/filesort.cc +++ b/sql/filesort.cc @@ -140,7 +140,7 @@ ha_rows filesort(TABLE *table, SORT_FIELD *sortorder, uint s_length, records=param.max_rows; /* purecov: inspected */ #ifdef USE_STRCOLL - if (use_strcoll(charset) && + if (use_strnxfrm(charset) && !(param.tmp_buffer=my_malloc(param.sort_length,MYF(MY_WME)))) goto err; #endif @@ -511,7 +511,7 @@ static void make_sortkey(register SORTPARAM *param, length=sort_field->length; } #ifdef USE_STRCOLL - if(use_strcoll(cs)) + if(use_strnxfrm(cs)) { if (item->binary) { @@ -541,7 +541,7 @@ static void make_sortkey(register SORTPARAM *param, memcpy(to,res->ptr(),length); bzero((char *)to+length,diff); if (!item->binary) - case_sort(cs, (char*) to,length); + my_tosort(cs, (char*) to,length); #ifdef USE_STRCOLL } #endif @@ -946,7 +946,7 @@ sortlength(SORT_FIELD *sortorder, uint s_length) if (!sortorder->field->binary()) { CHARSET_INFO *cs=((Field_str*)(sortorder->field))->charset(); - if (use_strcoll(cs)) + if (use_strnxfrm(cs)) sortorder->length= sortorder->length*cs->strxfrm_multiply; } #endif @@ -966,7 +966,7 @@ sortlength(SORT_FIELD *sortorder, uint s_length) if (!sortorder->item->binary) { CHARSET_INFO *cs=sortorder->item->str_value.charset(); - if (use_strcoll(cs)) + if (use_strnxfrm(cs)) sortorder->length= sortorder->length*cs->strxfrm_multiply; } #endif diff --git a/sql/opt_range.cc b/sql/opt_range.cc index ed5b2b0a230..2b0ac08fe95 100644 --- a/sql/opt_range.cc +++ b/sql/opt_range.cc @@ -978,7 +978,7 @@ get_mm_leaf(PARAM *param, Field *field, KEY_PART *key_part, { CHARSET_INFO *charset=((Field_str*)(field))->charset(); #ifdef USE_STRCOLL - if (use_strcoll(charset)) + if (use_strnxfrm(charset)) like_error= my_like_range(charset, res->ptr(),res->length(),wild_prefix, field_length, min_str+maybe_null, diff --git a/sql/sql_string.cc b/sql/sql_string.cc index 6a42078cbcd..d2d14d4e7a2 100644 --- a/sql/sql_string.cc +++ b/sql/sql_string.cc @@ -505,7 +505,7 @@ int sortcmp(const String *x,const String *y) uint32 x_len=x->length(),y_len=y->length(),len=min(x_len,y_len); #ifdef USE_STRCOLL - if (use_strcoll(x->str_charset)) + if (use_strnxfrm(x->str_charset)) { #ifndef CMP_ENDSPACE while (x_len && my_isspace(x->str_charset,s[x_len-1])) diff --git a/strings/ctype-simple.c b/strings/ctype-simple.c index f6c92edf1b8..8553f83f380 100644 --- a/strings/ctype-simple.c +++ b/strings/ctype-simple.c @@ -20,32 +20,30 @@ #include "assert.h" int my_strnxfrm_simple(CHARSET_INFO * cs, - char *dest, uint len, - const char *src, uint srclen) + uchar *dest, uint len, + const uchar *src, uint srclen) { uchar *map= cs->sort_order; DBUG_ASSERT(len >= srclen); for ( ; len > 0 ; len-- ) - *dest++= (char) map[(uchar) *src++]; + *dest++= map[*src++]; return srclen; } -int my_strnncoll_simple(CHARSET_INFO * cs, const char *s, uint slen, - const char *t, uint tlen) +int my_strnncoll_simple(CHARSET_INFO * cs, const uchar *s, uint slen, + const uchar *t, uint tlen) { int len = ( slen > tlen ) ? tlen : slen; uchar *map= cs->sort_order; while (len--) { - if (map[(uchar) *s++] != map[(uchar) *t++]) - return ((int) map[(uchar) s[-1]] - - (int) map[(uchar) t[-1]]); + if (map[*s++] != map[*t++]) + return ((int) map[s[-1]] - (int) map[t[-1]]); } return (int) (slen-tlen); } - void my_caseup_str_8bit(CHARSET_INFO * cs,char *str) { register uchar *map=cs->to_upper; @@ -53,7 +51,6 @@ void my_caseup_str_8bit(CHARSET_INFO * cs,char *str) str++; } - void my_casedn_str_8bit(CHARSET_INFO * cs,char *str) { register uchar *map=cs->to_lower; @@ -61,7 +58,6 @@ void my_casedn_str_8bit(CHARSET_INFO * cs,char *str) str++; } - void my_caseup_8bit(CHARSET_INFO * cs, char *str, uint length) { register uchar *map=cs->to_upper; @@ -76,6 +72,12 @@ void my_casedn_8bit(CHARSET_INFO * cs, char *str, uint length) *str= (char) map[(uchar) *str]; } +void my_tosort_8bit(CHARSET_INFO *cs, char *str, uint length) +{ + register uchar *map=cs->sort_order; + for ( ; length>0 ; length--, str++) + *str= (char) map[(uchar) *str]; +} int my_strcasecmp_8bit(CHARSET_INFO * cs,const char *s, const char *t) { diff --git a/strings/ctype.c b/strings/ctype.c index d3ae693f97d..1abb7a5d2c8 100644 --- a/strings/ctype.c +++ b/strings/ctype.c @@ -2816,7 +2816,7 @@ CHARSET_INFO compiled_charsets[] = { tab_8859_1_uni, /* tab_to_uni */ idx_uni_8859_1, /* tab_from_uni */ 0, /* strxfrm_multiply */ - NULL, /* strnncoll */ + my_strnncoll_simple,/* strnncoll */ NULL, /* strnxfrm */ NULL, /* like_range */ 0, /* mbmaxlen */ @@ -2829,6 +2829,7 @@ CHARSET_INFO compiled_charsets[] = { my_casedn_str_8bit, my_caseup_8bit, my_casedn_8bit, + my_tosort_8bit, my_strcasecmp_8bit, my_strncasecmp_8bit, NULL, /* hash_caseup */ @@ -2863,6 +2864,7 @@ CHARSET_INFO compiled_charsets[] = { my_casedn_str_mb, my_caseup_mb, my_casedn_mb, + NULL, /* tosort */ my_strcasecmp_mb, my_strncasecmp_mb, NULL, /* hash_caseup */ @@ -2884,7 +2886,7 @@ CHARSET_INFO compiled_charsets[] = { tab_cp1251_uni, /* tab_to_uni */ idx_uni_cp1251, /* tab_from_uni */ 0, /* strxfrm_multiply */ - NULL, /* strnncoll */ + my_strnncoll_simple,/* strnncoll */ NULL, /* strnxfrm */ NULL, /* like_range */ 0, /* mbmaxlen */ @@ -2897,6 +2899,7 @@ CHARSET_INFO compiled_charsets[] = { my_casedn_str_8bit, my_caseup_8bit, my_casedn_8bit, + my_tosort_8bit, my_strcasecmp_8bit, my_strncasecmp_8bit, NULL, /* hash_caseup */ @@ -2918,7 +2921,7 @@ CHARSET_INFO compiled_charsets[] = { tab_cp1257_uni, /* tab_to_uni */ idx_uni_cp1257, /* tab_from_uni */ 0, /* strxfrm_multiply */ - NULL, /* strnncoll */ + my_strnncoll_simple,/* strnncoll */ NULL, /* strnxfrm */ NULL, /* like_range */ 0, /* mbmaxlen */ @@ -2931,6 +2934,7 @@ CHARSET_INFO compiled_charsets[] = { my_casedn_str_8bit, my_caseup_8bit, my_casedn_8bit, + my_tosort_8bit, my_strcasecmp_8bit, my_strncasecmp_8bit, NULL, /* hash_caseup */ @@ -2952,7 +2956,7 @@ CHARSET_INFO compiled_charsets[] = { tab_8859_2_uni, /* tab_to_uni */ idx_uni_8859_2, /* tab_from_uni */ 0, /* strxfrm_multiply */ - NULL, /* strnncoll */ + my_strnncoll_simple,/* strnncoll */ NULL, /* strnxfrm */ NULL, /* like_range */ 0, /* mbmaxlen */ @@ -2965,6 +2969,7 @@ CHARSET_INFO compiled_charsets[] = { my_casedn_str_8bit, my_caseup_8bit, my_casedn_8bit, + my_tosort_8bit, my_strcasecmp_8bit, my_strncasecmp_8bit, NULL, /* hash_caseup */ @@ -2999,6 +3004,7 @@ CHARSET_INFO compiled_charsets[] = { my_casedn_str_8bit, my_caseup_8bit, my_casedn_8bit, + NULL, /* tosort */ my_strcasecmp_8bit, my_strncasecmp_8bit, NULL, /* hash_caseup */ @@ -3020,7 +3026,7 @@ CHARSET_INFO compiled_charsets[] = { tab_8859_1_uni, /* tab_to_uni */ idx_uni_8859_1, /* tab_from_uni */ 0, /* strxfrm_multiply */ - NULL, /* strnncoll */ + my_strnncoll_simple,/* strnncoll */ NULL, /* strnxfrm */ NULL, /* like_range */ 0, /* mbmaxlen */ @@ -3033,6 +3039,7 @@ CHARSET_INFO compiled_charsets[] = { my_casedn_str_8bit, my_caseup_8bit, my_casedn_8bit, + my_tosort_8bit, my_strcasecmp_8bit, my_strncasecmp_8bit, NULL, /* hash_caseup */ @@ -3054,7 +3061,7 @@ CHARSET_INFO compiled_charsets[] = { NULL, /* tab_to_uni */ NULL, /* tab_from_uni */ 0, /* strxfrm_multiply */ - NULL, /* strnncoll */ + my_strnncoll_simple,/* strnncoll */ NULL, /* strnxfrm */ NULL, /* like_range */ 0, /* mbmaxlen */ @@ -3067,6 +3074,7 @@ CHARSET_INFO compiled_charsets[] = { my_casedn_str_8bit, my_caseup_8bit, my_casedn_8bit, + my_tosort_8bit, my_strcasecmp_8bit, my_strncasecmp_8bit, NULL, /* hash_caseup */ @@ -3088,7 +3096,7 @@ CHARSET_INFO compiled_charsets[] = { NULL, /* tab_to_uni */ NULL, /* tab_from_uni */ 0, /* strxfrm_multiply */ - NULL, /* strnncoll */ + my_strnncoll_simple,/* strnncoll */ NULL, /* strnxfrm */ NULL, /* like_range */ 0, /* mbmaxlen */ @@ -3101,6 +3109,7 @@ CHARSET_INFO compiled_charsets[] = { my_casedn_str_8bit, my_caseup_8bit, my_casedn_8bit, + my_tosort_8bit, my_strcasecmp_8bit, my_strncasecmp_8bit, NULL, /* hash_caseup */ @@ -3122,7 +3131,7 @@ CHARSET_INFO compiled_charsets[] = { NULL, /* tab_to_uni */ NULL, /* tab_from_uni */ 0, /* strxfrm_multiply */ - NULL, /* strnncoll */ + my_strnncoll_simple,/* strnncoll */ NULL, /* strnxfrm */ NULL, /* like_range */ 0, /* mbmaxlen */ @@ -3135,6 +3144,7 @@ CHARSET_INFO compiled_charsets[] = { my_casedn_str_8bit, my_caseup_8bit, my_casedn_8bit, + my_tosort_8bit, my_strcasecmp_8bit, my_strncasecmp_8bit, NULL, /* hash_caseup */ @@ -3156,7 +3166,7 @@ CHARSET_INFO compiled_charsets[] = { NULL, /* tab_to_uni */ NULL, /* tab_from_uni */ 0, /* strxfrm_multiply */ - NULL, /* strnncoll */ + my_strnncoll_simple,/* strnncoll */ NULL, /* strnxfrm */ NULL, /* like_range */ 2, /* mbmaxlen */ @@ -3169,6 +3179,7 @@ CHARSET_INFO compiled_charsets[] = { my_casedn_str_mb, my_caseup_mb, my_casedn_mb, + my_tosort_8bit, my_strcasecmp_mb, my_strncasecmp_mb, NULL, /* hash_caseup */ @@ -3190,7 +3201,7 @@ CHARSET_INFO compiled_charsets[] = { NULL, /* tab_to_uni */ NULL, /* tab_from_uni */ 0, /* strxfrm_multiply */ - NULL, /* strnncoll */ + my_strnncoll_simple,/* strnncoll */ NULL, /* strnxfrm */ NULL, /* like_range */ 2, /* mbmaxlen */ @@ -3203,6 +3214,7 @@ CHARSET_INFO compiled_charsets[] = { my_casedn_str_mb, my_caseup_mb, my_casedn_mb, + my_tosort_8bit, my_strcasecmp_mb, my_strncasecmp_mb, NULL, /* hash_caseup */ @@ -3231,12 +3243,13 @@ CHARSET_INFO compiled_charsets[] = { ismbchar_gbk, ismbhead_gbk, mbcharlen_gbk, - my_mb_wc_gbk, /* mb_wc */ - my_wc_mb_gbk, /* wc_mb */ + my_mb_wc_gbk, /* mb_wc */ + my_wc_mb_gbk, /* wc_mb */ my_caseup_str_mb, my_casedn_str_mb, my_caseup_mb, my_casedn_mb, + NULL, /* tosort */ my_strcasecmp_mb, my_strncasecmp_mb, NULL, /* hash_caseup */ @@ -3258,7 +3271,7 @@ CHARSET_INFO compiled_charsets[] = { tab_8859_1_uni, /* tab_to_uni */ idx_uni_8859_1, /* tab_from_uni */ 0, /* strxfrm_multiply */ - NULL, /* strnncoll */ + my_strnncoll_simple,/* strnncoll */ NULL, /* strnxfrm */ NULL, /* like_range */ 0, /* mbmaxlen */ @@ -3271,6 +3284,7 @@ CHARSET_INFO compiled_charsets[] = { my_casedn_str_8bit, my_caseup_8bit, my_casedn_8bit, + my_tosort_8bit, my_strcasecmp_8bit, my_strncasecmp_8bit, NULL, /* hash_caseup */ @@ -3292,7 +3306,7 @@ CHARSET_INFO compiled_charsets[] = { NULL, /* tab_to_uni */ NULL, /* tab_from_uni */ 0, /* strxfrm_multiply */ - NULL, /* strnncoll */ + my_strnncoll_simple,/* strnncoll */ NULL, /* strnxfrm */ NULL, /* like_range */ 0, /* mbmaxlen */ @@ -3305,6 +3319,7 @@ CHARSET_INFO compiled_charsets[] = { my_casedn_str_8bit, my_caseup_8bit, my_casedn_8bit, + my_tosort_8bit, my_strcasecmp_8bit, my_strncasecmp_8bit, NULL, /* hash_caseup */ @@ -3326,7 +3341,7 @@ CHARSET_INFO compiled_charsets[] = { NULL, /* tab_to_uni */ NULL, /* tab_from_uni */ 0, /* strxfrm_multiply */ - NULL, /* strnncoll */ + my_strnncoll_simple,/* strnncoll */ NULL, /* strnxfrm */ NULL, /* like_range */ 0, /* mbmaxlen */ @@ -3339,6 +3354,7 @@ CHARSET_INFO compiled_charsets[] = { my_casedn_str_8bit, my_caseup_8bit, my_casedn_8bit, + my_tosort_8bit, my_strcasecmp_8bit, my_strncasecmp_8bit, NULL, /* hash_caseup */ @@ -3360,7 +3376,7 @@ CHARSET_INFO compiled_charsets[] = { NULL, /* tab_to_uni */ NULL, /* tab_from_uni */ 0, /* strxfrm_multiply */ - NULL, /* strnncoll */ + my_strnncoll_simple,/* strnncoll */ NULL, /* strnxfrm */ NULL, /* like_range */ 0, /* mbmaxlen */ @@ -3373,6 +3389,7 @@ CHARSET_INFO compiled_charsets[] = { my_casedn_str_8bit, my_caseup_8bit, my_casedn_8bit, + my_tosort_8bit, my_strcasecmp_8bit, my_strncasecmp_8bit, NULL, /* hash_caseup */ @@ -3394,7 +3411,7 @@ CHARSET_INFO compiled_charsets[] = { tab_8859_2_uni, /* tab_to_uni */ idx_uni_8859_2, /* tab_from_uni */ 0, /* strxfrm_multiply */ - NULL, /* strnncoll */ + my_strnncoll_simple,/* strnncoll */ NULL, /* strnxfrm */ NULL, /* like_range */ 0, /* mbmaxlen */ @@ -3407,6 +3424,7 @@ CHARSET_INFO compiled_charsets[] = { my_casedn_str_8bit, my_caseup_8bit, my_casedn_8bit, + my_tosort_8bit, my_strcasecmp_8bit, my_strncasecmp_8bit, NULL, /* hash_caseup */ @@ -3428,7 +3446,7 @@ CHARSET_INFO compiled_charsets[] = { tab_koi8_r_uni, /* tab_to_uni */ idx_uni_koi8_r, /* tab_from_uni */ 0, /* strxfrm_multiply */ - NULL, /* strnncoll */ + my_strnncoll_simple,/* strnncoll */ NULL, /* strnxfrm */ NULL, /* like_range */ 0, /* mbmaxlen */ @@ -3441,6 +3459,7 @@ CHARSET_INFO compiled_charsets[] = { my_casedn_str_8bit, my_caseup_8bit, my_casedn_8bit, + my_tosort_8bit, my_strcasecmp_8bit, my_strncasecmp_8bit, NULL, /* hash_caseup */ @@ -3462,7 +3481,7 @@ CHARSET_INFO compiled_charsets[] = { tab_koi8_u_uni, /* tab_to_uni */ idx_uni_koi8_u, /* tab_from_uni */ 0, /* strxfrm_multiply */ - NULL, /* strnncoll */ + my_strnncoll_simple,/* strnncoll */ NULL, /* strnxfrm */ NULL, /* like_range */ 0, /* mbmaxlen */ @@ -3475,6 +3494,7 @@ CHARSET_INFO compiled_charsets[] = { my_casedn_str_8bit, my_caseup_8bit, my_casedn_8bit, + my_tosort_8bit, my_strcasecmp_8bit, my_strncasecmp_8bit, NULL, /* hash_caseup */ @@ -3509,6 +3529,7 @@ CHARSET_INFO compiled_charsets[] = { my_casedn_str_8bit, my_caseup_8bit, my_casedn_8bit, + NULL, /* tosort */ my_strcasecmp_8bit, my_strncasecmp_8bit, NULL, /* hash_caseup */ @@ -3530,7 +3551,7 @@ CHARSET_INFO compiled_charsets[] = { tab_8859_2_uni, /* tab_to_uni */ idx_uni_8859_2, /* tab_from_uni */ 0, /* strxfrm_multiply */ - NULL, /* strnncoll */ + my_strnncoll_simple,/* strnncoll */ NULL, /* strnxfrm */ NULL, /* like_range */ 0, /* mbmaxlen */ @@ -3543,6 +3564,7 @@ CHARSET_INFO compiled_charsets[] = { my_casedn_str_8bit, my_caseup_8bit, my_casedn_8bit, + my_tosort_8bit, my_strcasecmp_8bit, my_strncasecmp_8bit, NULL, /* hash_caseup */ @@ -3564,7 +3586,7 @@ CHARSET_INFO compiled_charsets[] = { tab_8859_9_uni, /* tab_to_uni */ idx_uni_8859_9, /* tab_from_uni */ 0, /* strxfrm_multiply */ - NULL, /* strnncoll */ + my_strnncoll_simple,/* strnncoll */ NULL, /* strnxfrm */ NULL, /* like_range */ 0, /* mbmaxlen */ @@ -3577,6 +3599,7 @@ CHARSET_INFO compiled_charsets[] = { my_casedn_str_8bit, my_caseup_8bit, my_casedn_8bit, + my_tosort_8bit, my_strcasecmp_8bit, my_strncasecmp_8bit, NULL, /* hash_caseup */ @@ -3611,6 +3634,7 @@ CHARSET_INFO compiled_charsets[] = { my_casedn_str_8bit, my_caseup_8bit, my_casedn_8bit, + NULL, /* tosort */ my_strcasecmp_8bit, my_strncasecmp_8bit, NULL, /* hash_caseup */ @@ -3632,7 +3656,7 @@ CHARSET_INFO compiled_charsets[] = { NULL, /* tab_to_uni */ NULL, /* tab_from_uni */ 0, /* strxfrm_multiply */ - NULL, /* strnncoll */ + my_strnncoll_simple,/* strnncoll */ NULL, /* strnxfrm */ NULL, /* like_range */ 0, /* mbmaxlen */ @@ -3645,6 +3669,7 @@ CHARSET_INFO compiled_charsets[] = { my_casedn_str_8bit, my_caseup_8bit, my_casedn_8bit, + my_tosort_8bit, my_strcasecmp_8bit, my_strncasecmp_8bit, NULL, /* hash_caseup */ @@ -3679,6 +3704,7 @@ CHARSET_INFO compiled_charsets[] = { my_casedn_str_8bit, my_caseup_8bit, my_casedn_8bit, + NULL, /* tosort */ my_strcasecmp_8bit, my_strncasecmp_8bit, NULL, /* hash_caseup */ @@ -3713,6 +3739,7 @@ CHARSET_INFO compiled_charsets[] = { my_casedn_str_ucs2, my_caseup_ucs2, my_casedn_ucs2, + NULL, /* tosort */ my_strcasecmp_ucs2, my_strncasecmp_ucs2, my_hash_caseup_ucs2,/* hash_caseup */ @@ -3748,6 +3775,7 @@ CHARSET_INFO compiled_charsets[] = { my_casedn_str_mb, my_caseup_mb, my_casedn_mb, + my_tosort_8bit, my_strcasecmp_mb, my_strncasecmp_mb, NULL, /* hash_caseup */ @@ -3782,6 +3810,7 @@ CHARSET_INFO compiled_charsets[] = { my_casedn_str_utf8, my_caseup_utf8, my_casedn_utf8, + NULL, /* tosort */ my_strcasecmp_utf8, my_strncasecmp_utf8, my_hash_caseup_utf8,/* hash_caseup */ @@ -3803,7 +3832,7 @@ CHARSET_INFO compiled_charsets[] = { tab_us_ascii_uni, /* tab_to_uni */ idx_uni_us_ascii, /* tab_from_uni */ 0, /* strxfrm_multiply */ - NULL, /* strnncoll */ + my_strnncoll_simple,/* strnncoll */ NULL, /* strnxfrm */ NULL, /* like_range */ 0, /* mbmaxlen */ @@ -3816,6 +3845,7 @@ CHARSET_INFO compiled_charsets[] = { my_casedn_str_8bit, my_caseup_8bit, my_casedn_8bit, + my_tosort_8bit, my_strcasecmp_8bit, my_strncasecmp_8bit, NULL, /* hash_caseup */ @@ -3837,7 +3867,7 @@ CHARSET_INFO compiled_charsets[] = { tab_cp1250_uni, /* tab_to_uni */ idx_uni_cp1250, /* tab_from_uni */ 0, /* strxfrm_multiply */ - NULL, /* strnncoll */ + my_strnncoll_simple,/* strnncoll */ NULL, /* strnxfrm */ NULL, /* like_range */ 0, /* mbmaxlen */ @@ -3850,6 +3880,7 @@ CHARSET_INFO compiled_charsets[] = { my_casedn_str_8bit, my_caseup_8bit, my_casedn_8bit, + my_tosort_8bit, my_strcasecmp_8bit, my_strncasecmp_8bit, NULL, /* hash_caseup */ @@ -3871,7 +3902,7 @@ CHARSET_INFO compiled_charsets[] = { tab_cp1251_uni, /* tab_to_uni */ idx_uni_cp1251, /* tab_from_uni */ 0, /* strxfrm_multiply */ - NULL, /* strnncoll */ + my_strnncoll_simple,/* strnncoll */ NULL, /* strnxfrm */ NULL, /* like_range */ 0, /* mbmaxlen */ @@ -3885,6 +3916,7 @@ CHARSET_INFO compiled_charsets[] = { my_caseup_8bit, my_casedn_8bit, my_strcasecmp_8bit, + my_tosort_8bit, my_strncasecmp_8bit, NULL, /* hash_caseup */ NULL, /* hash_sort */ @@ -3905,7 +3937,7 @@ CHARSET_INFO compiled_charsets[] = { tab_armscii_8_uni, /* tab_to_uni */ idx_uni_armscii_8, /* tab_from_uni */ 0, /* strxfrm_multiply */ - NULL, /* strnncoll */ + my_strnncoll_simple,/* strnncoll */ NULL, /* strnxfrm */ NULL, /* like_range */ 0, /* mbmaxlen */ @@ -3918,6 +3950,7 @@ CHARSET_INFO compiled_charsets[] = { my_casedn_str_8bit, my_caseup_8bit, my_casedn_8bit, + my_tosort_8bit, my_strcasecmp_8bit, my_strncasecmp_8bit, NULL, /* hash_caseup */ @@ -3939,7 +3972,7 @@ CHARSET_INFO compiled_charsets[] = { tab_cp1251_uni, /* tab_to_uni */ idx_uni_cp1251, /* tab_from_uni */ 0, /* strxfrm_multiply */ - NULL, /* strnncoll */ + my_strnncoll_simple,/* strnncoll */ NULL, /* strnxfrm */ NULL, /* like_range */ 0, /* mbmaxlen */ @@ -3952,6 +3985,7 @@ CHARSET_INFO compiled_charsets[] = { my_casedn_str_8bit, my_caseup_8bit, my_casedn_8bit, + my_tosort_8bit, my_strcasecmp_8bit, my_strncasecmp_8bit, NULL, /* hash_caseup */ @@ -3962,10 +3996,10 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_win1250ch { - 34, /* number */ - MY_CS_COMPILED, /* state */ - "win1250ch", /* name */ - "", /* comment */ + 34, /* number */ + MY_CS_COMPILED, /* state */ + "win1250ch", /* name */ + "", /* comment */ ctype_win1250ch, to_lower_win1250ch, to_upper_win1250ch, @@ -3980,16 +4014,17 @@ CHARSET_INFO compiled_charsets[] = { NULL, /* ismbchar */ NULL, /* ismbhead */ NULL, /* mbcharlen */ - my_mb_wc_8bit, /* mb_wc */ - my_wc_mb_8bit, /* wc_mb */ + 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, + NULL, /* tosort */ my_strcasecmp_8bit, my_strncasecmp_8bit, - NULL, /* hash_caseup */ - NULL, /* hash_sort */ + NULL, /* hash_caseup */ + NULL, /* hash_sort */ 0 }, #endif @@ -4023,6 +4058,7 @@ CHARSET_INFO compiled_charsets[] = { NULL, NULL, NULL, + NULL, NULL, /* hash_caseup */ NULL, /* hash_sort */ 0 |