From a20d725e8a265aa714147e35f4e4e9900ab8136b Mon Sep 17 00:00:00 2001 From: unknown <bar@bar.udmsearch.izhnet.ru> Date: Tue, 30 Jul 2002 14:02:29 +0500 Subject: [PATCH] Renamed some charset related constant New fields in CHARSET_INFO for more nice SHOW CHARACTER SET Dynamic charsets are now handled in faster way SHOW CHARACTER SET now displays not only compiled charsets but dynamic charsets too include/m_ctype.h: Renamed constant New fields in CHARSET_INFO include/my_sys.h: Constant have been moved to m_ctype.h libmysqld/lib_sql.cc: Renamed constant mysys/charset.c: Dynamic charsets are now handled in new way to speedup things mysys/test_charset.c: Renamed constant sql/mysqld.cc: Renamed constant sql/sql_show.cc: SHOW CHARACTER SET now displays not only compiled charsets but dynamic charsets too strings/ctype.c: New fields in CHARSET_INFO --- include/m_ctype.h | 13 ++- include/my_sys.h | 7 -- libmysqld/lib_sql.cc | 2 +- mysys/charset.c | 232 +++++++++++++++++-------------------------- mysys/test_charset.c | 4 +- sql/mysqld.cc | 2 +- sql/sql_show.cc | 4 +- strings/ctype.c | 78 ++++++++++++++- 8 files changed, 187 insertions(+), 155 deletions(-) diff --git a/include/m_ctype.h b/include/m_ctype.h index 3715402b4f4..70acfcb3dec 100644 --- a/include/m_ctype.h +++ b/include/m_ctype.h @@ -42,6 +42,14 @@ typedef struct unicase_info_st { #define MY_CS_TOOSMALL -1 #define MY_CS_TOOFEW(n) (-1-(n)) + /* My charsets_list flags */ +#define MY_NO_SETS 0 +#define MY_CS_COMPILED 1 /* compiled-in sets */ +#define MY_CS_CONFIG 2 /* sets that have a *.conf file */ +#define MY_CS_INDEX 4 /* sets listed in the Index file */ +#define MY_CS_LOADED 8 /* sets that are currently loaded */ + + typedef struct my_uni_idx_st { uint16 from; uint16 to; @@ -52,14 +60,16 @@ typedef struct my_uni_idx_st { typedef struct charset_info_st { uint number; + uint state; const char *name; + const char *comment; uchar *ctype; uchar *to_lower; uchar *to_upper; uchar *sort_order; uint16 *tab_to_uni; MY_UNI_IDX *tab_from_uni; - + /* Collation routines */ uint strxfrm_multiply; int (*strnncoll)(struct charset_info_st *, @@ -107,6 +117,7 @@ extern CHARSET_INFO *system_charset_info; extern CHARSET_INFO *find_compiled_charset(uint cs_number); extern CHARSET_INFO *find_compiled_charset_by_name(const char *name); extern CHARSET_INFO compiled_charsets[]; +extern CHARSET_INFO all_charsets[256]; extern uint compiled_charset_number(const char *name); extern const char *compiled_charset_name(uint charset_number); diff --git a/include/my_sys.h b/include/my_sys.h index 54ed9110e95..ab7159a334b 100644 --- a/include/my_sys.h +++ b/include/my_sys.h @@ -105,13 +105,6 @@ extern int NEAR my_errno; /* Last error in mysys */ #define MY_SEEK_CUR 1 #define MY_SEEK_END 2 - /* My charsets_list flags */ -#define MY_NO_SETS 0 -#define MY_COMPILED_SETS 1 /* show compiled-in sets */ -#define MY_CONFIG_SETS 2 /* sets that have a *.conf file */ -#define MY_INDEX_SETS 4 /* all sets listed in the Index file */ -#define MY_LOADED_SETS 8 /* the sets that are currently loaded */ - /* Some constants */ #define MY_WAIT_FOR_USER_TO_FIX_PANIC 60 /* in seconds */ #define MY_WAIT_GIVE_USER_A_MESSAGE 10 /* Every 10 times of prev */ diff --git a/libmysqld/lib_sql.cc b/libmysqld/lib_sql.cc index 1ef84607155..3616f1a44ca 100644 --- a/libmysqld/lib_sql.cc +++ b/libmysqld/lib_sql.cc @@ -413,7 +413,7 @@ int STDCALL mysql_server_init(int argc, char **argv, char **groups) mysql_server_end(); return 1; } - charsets_list = list_charsets(MYF(MY_COMPILED_SETS|MY_CONFIG_SETS)); + charsets_list = list_charsets(MYF(MY_CS_COMPILED|MY_CS_CONFIG)); /* Parameter for threads created for connections */ (void) pthread_attr_init(&connection_attrib); diff --git a/mysys/charset.c b/mysys/charset.c index 0178f346dbe..8c05863c44b 100644 --- a/mysys/charset.c +++ b/mysys/charset.c @@ -26,9 +26,8 @@ typedef struct cs_id_st { } CS_ID; const char *charsets_dir = NULL; -static DYNAMIC_ARRAY cs_info_table; -static CS_ID **available_charsets; static int charset_initialized=0; +CHARSET_INFO all_charsets[256]; #define MAX_LINE 1024 @@ -44,24 +43,6 @@ struct simpleconfig_buf_st { char *p; }; -static uint num_from_csname(CS_ID **cs, const char *name) -{ - CS_ID **c; - for (c = cs; *c; ++c) - if (!strcmp((*c)->name, name)) - return (*c)->number; - return 0; /* this mimics find_type() */ -} - -static char *name_from_csnum(CS_ID **cs, uint number) -{ - CS_ID **c; - if(cs) - for (c = cs; *c; ++c) - if ((*c)->number == number) - return (*c)->name; - return (char*) "?"; /* this mimics find_type() */ -} static my_bool get_word(struct simpleconfig_buf_st *fb, char *buf) { @@ -109,13 +90,11 @@ char *get_charsets_dir(char *buf) } -static my_bool read_charset_index(CS_ID ***charsets, myf myflags) +static my_bool read_charset_index(myf myflags) { struct simpleconfig_buf_st fb; char buf[MAX_LINE], num_buf[MAX_LINE]; - DYNAMIC_ARRAY cs; - CS_ID *csid; - + strmov(get_charsets_dir(buf), "Index"); if ((fb.f = my_fopen(buf, O_RDONLY, myflags)) == NULL) @@ -123,13 +102,12 @@ static my_bool read_charset_index(CS_ID ***charsets, myf myflags) fb.buf[0] = '\0'; fb.p = fb.buf; - if (my_init_dynamic_array(&cs, sizeof(CS_ID *), 32, 32)) - return TRUE; - + while (!get_word(&fb, buf) && !get_word(&fb, num_buf)) { uint csnum; uint length; + CHARSET_INFO *cs; if (!(csnum = atoi(num_buf))) { @@ -138,64 +116,56 @@ static my_bool read_charset_index(CS_ID ***charsets, myf myflags) return TRUE; } - if (!(csid = (CS_ID*) my_once_alloc(sizeof(CS_ID), myflags)) || - !(csid->name= + cs=&all_charsets[csnum]; + + if (!(cs->name= (char*) my_once_alloc(length= (uint) strlen(buf)+1, myflags))) { my_fclose(fb.f,myflags); return TRUE; } - memcpy(csid->name,buf,length); - csid->number = csnum; - - insert_dynamic(&cs, (gptr) &csid); + memcpy((char*)cs->name,buf,length); + cs->number=csnum; } my_fclose(fb.f,myflags); - - if (!(*charsets = - (CS_ID **) my_once_alloc((cs.elements + 1) * sizeof(CS_ID *), myflags))) - return TRUE; - /* unwarranted chumminess with dynamic_array implementation? */ - memcpy((byte *) *charsets, cs.buffer, cs.elements * sizeof(CS_ID *)); - (*charsets)[cs.elements] = NULL; - delete_dynamic(&cs); - return FALSE; } static my_bool init_available_charsets(myf myflags) { - my_bool error=0; + my_bool error=FALSE; /* We have to use charset_initialized to not lock on THR_LOCK_charset inside get_internal_charset... */ if (!charset_initialized) { + CHARSET_INFO *cs; /* To make things thread safe we are not allowing other threads to interfere while we may changing the cs_info_table */ pthread_mutex_lock(&THR_LOCK_charset); - if (!cs_info_table.buffer) /* If not initialized */ - { - my_init_dynamic_array(&cs_info_table, sizeof(CHARSET_INFO*), 16, 8); - error = read_charset_index(&available_charsets, myflags); - } + + bzero(&all_charsets,sizeof(all_charsets)); + + /* Copy compiled charsets */ + + for (cs=compiled_charsets; cs->name; cs++) + all_charsets[cs->number]=cs[0]; + + error = read_charset_index(myflags); charset_initialized=1; pthread_mutex_unlock(&THR_LOCK_charset); } - if(!available_charsets || !available_charsets[0]) - error = TRUE; return error; } void free_charsets(void) { - delete_dynamic(&cs_info_table); charset_initialized=0; } @@ -231,10 +201,9 @@ static my_bool fill_uint16_array(uint16 *array, int sz, struct simpleconfig_buf_ } -static void get_charset_conf_name(uint cs_number, char *buf) +static void get_charset_conf_name(const char *cs_name, char *buf) { - strxmov(get_charsets_dir(buf), - name_from_csnum(available_charsets, cs_number), ".conf", NullS); + strxmov(get_charsets_dir(buf), cs_name, ".conf", NullS); } typedef struct { @@ -323,19 +292,16 @@ static my_bool create_fromuni(CHARSET_INFO *cs){ } -static my_bool read_charset_file(uint cs_number, CHARSET_INFO *set, +static my_bool read_charset_file(const char *cs_name, CHARSET_INFO *set, myf myflags) { struct simpleconfig_buf_st fb; char buf[FN_REFLEN]; my_bool result; DBUG_ENTER("read_charset_file"); - DBUG_PRINT("enter",("cs_number: %d", cs_number)); - - if (cs_number <= 0) - DBUG_RETURN(TRUE); + DBUG_PRINT("enter",("cs_name: %s", cs_name)); - get_charset_conf_name(cs_number, buf); + get_charset_conf_name(cs_name, buf); DBUG_PRINT("info",("file name: %s", buf)); if ((fb.f = my_fopen(buf, O_RDONLY, myflags)) == NULL) @@ -358,70 +324,26 @@ static my_bool read_charset_file(uint cs_number, CHARSET_INFO *set, } -uint get_charset_number(const char *charset_name) -{ - uint number=compiled_charset_number(charset_name); - if (number) - return number; - if (init_available_charsets(MYF(0))) /* If it isn't initialized */ - return 0; - return num_from_csname(available_charsets, charset_name); -} - -const char *get_charset_name(uint charset_number) -{ - const char *name=compiled_charset_name(charset_number); - if (*name != '?') - return name; - if (init_available_charsets(MYF(0))) /* If it isn't initialized */ - return "?"; - return name_from_csnum(available_charsets, charset_number); -} - - -static CHARSET_INFO *find_charset(CHARSET_INFO **table, uint cs_number, - size_t tablesz) -{ - uint i; - for (i = 0; i < tablesz; ++i) - if (table[i]->number == cs_number) - return table[i]; - return NULL; -} - -static CHARSET_INFO *find_charset_by_name(CHARSET_INFO **table, - const char *name, size_t tablesz) -{ - uint i; - for (i = 0; i < tablesz; ++i) - if (!strcmp(table[i]->name,name)) - return table[i]; - return NULL; -} - static CHARSET_INFO *add_charset(uint cs_number, const char *cs_name, myf flags) { - CHARSET_INFO tmp_cs,*cs; + CHARSET_INFO *cs; uchar tmp_ctype[CTYPE_TABLE_SIZE]; uchar tmp_to_lower[TO_LOWER_TABLE_SIZE]; uchar tmp_to_upper[TO_UPPER_TABLE_SIZE]; uchar tmp_sort_order[SORT_ORDER_TABLE_SIZE]; uint16 tmp_to_uni[TO_UNI_TABLE_SIZE]; - /* Don't allocate memory if we are not sure we can find the char set */ - cs= &tmp_cs; + cs=&all_charsets[cs_number]; bzero((char*) cs, sizeof(*cs)); cs->ctype=tmp_ctype; cs->to_lower=tmp_to_lower; cs->to_upper=tmp_to_upper; cs->sort_order=tmp_sort_order; cs->tab_to_uni=tmp_to_uni; - if (read_charset_file(cs_number, cs, flags)) + if (read_charset_file(cs_name, cs, flags)) return NULL; - cs = (CHARSET_INFO*) my_once_alloc(sizeof(CHARSET_INFO), - MYF(MY_WME)); - *cs=tmp_cs; + /* FIXME: double allocation */ cs->name = (char *) my_once_alloc((uint) strlen(cs_name)+1, MYF(MY_WME)); cs->ctype = (uchar*) my_once_alloc(CTYPE_TABLE_SIZE, MYF(MY_WME)); cs->to_lower = (uchar*) my_once_alloc(TO_LOWER_TABLE_SIZE, MYF(MY_WME)); @@ -446,10 +368,38 @@ static CHARSET_INFO *add_charset(uint cs_number, const char *cs_name, myf flags) cs->mb_wc = my_mb_wc_8bit; cs->wc_mb = my_wc_mb_8bit; - insert_dynamic(&cs_info_table, (gptr) &cs); return cs; } + +uint get_charset_number(const char *charset_name) +{ + CHARSET_INFO *cs; + if (init_available_charsets(MYF(0))) /* If it isn't initialized */ + return 0; + + for (cs = all_charsets; cs < all_charsets+255; ++cs) + if ( cs->name && !strcmp(cs->name, charset_name)) + return cs->number; + + return 0; /* this mimics find_type() */ +} + + +const char *get_charset_name(uint charset_number) +{ + CHARSET_INFO *cs; + if (init_available_charsets(MYF(0))) /* If it isn't initialized */ + return "?"; + + for (cs = all_charsets; cs < all_charsets+255; ++cs) + if (cs->number == charset_number) + return (char*) cs->name; + + return (char*) "?"; /* this mimics find_type() */ +} + + static CHARSET_INFO *get_internal_charset(uint cs_number, myf flags) { CHARSET_INFO *cs; @@ -458,10 +408,10 @@ static CHARSET_INFO *get_internal_charset(uint cs_number, myf flags) while we may changing the cs_info_table */ pthread_mutex_lock(&THR_LOCK_charset); - if (!(cs = find_charset((CHARSET_INFO**) cs_info_table.buffer, cs_number, - cs_info_table.elements))) - if (!(cs = find_compiled_charset(cs_number))) - cs=add_charset(cs_number, get_charset_name(cs_number), flags); + + if (!(cs = find_compiled_charset(cs_number))) + cs=add_charset(cs_number, get_charset_name(cs_number), flags); + pthread_mutex_unlock(&THR_LOCK_charset); return cs; } @@ -475,10 +425,10 @@ static CHARSET_INFO *get_internal_charset_by_name(const char *name, myf flags) while we may changing the cs_info_table */ pthread_mutex_lock(&THR_LOCK_charset); - if (!(cs = find_charset_by_name((CHARSET_INFO**) cs_info_table.buffer, name, - cs_info_table.elements))) - if (!(cs = find_compiled_charset_by_name(name))) - cs=add_charset(get_charset_number(name), name, flags); + + if (!(cs = find_compiled_charset_by_name(name))) + cs=add_charset(get_charset_number(name), name, flags); + pthread_mutex_unlock(&THR_LOCK_charset); return cs; } @@ -585,7 +535,7 @@ char * list_charsets(myf want_flags) (void)init_available_charsets(MYF(0)); init_dynamic_string(&s, NullS, 256, 1024); - if (want_flags & MY_COMPILED_SETS) + if (want_flags & MY_CS_COMPILED) { CHARSET_INFO *cs; for (cs = compiled_charsets; cs->number > 0; cs++) @@ -595,39 +545,43 @@ char * list_charsets(myf want_flags) } } - if (want_flags & MY_CONFIG_SETS) + if (want_flags & MY_CS_CONFIG) { - CS_ID **c; + CHARSET_INFO *cs; char buf[FN_REFLEN]; MY_STAT status; - if((c=available_charsets)) - for (; *c; ++c) - { - if (charset_in_string((*c)->name, &s)) - continue; - get_charset_conf_name((*c)->number, buf); - if (!my_stat(buf, &status, MYF(0))) - continue; /* conf file doesn't exist */ - dynstr_append(&s, (*c)->name); - dynstr_append(&s, " "); - } + for (cs=all_charsets; cs < all_charsets+255; cs++) + { + if (!cs->name || charset_in_string(cs->name, &s)) + continue; + get_charset_conf_name(cs->name, buf); + if (!my_stat(buf, &status, MYF(0))) + continue; /* conf file doesn't exist */ + dynstr_append(&s, cs->name); + dynstr_append(&s, " "); + } } - if (want_flags & MY_INDEX_SETS) + if (want_flags & MY_CS_INDEX) { - CS_ID **c; - for (c = available_charsets; *c; ++c) - charset_append(&s, (*c)->name); + CHARSET_INFO *cs; + for (cs = all_charsets; cs < all_charsets + 255; cs++) + if (cs->name) + charset_append(&s, cs->name); } +#if 0 if (want_flags & MY_LOADED_SETS) { - uint i; - for (i = 0; i < cs_info_table.elements; i++) - charset_append(&s, - dynamic_element(&cs_info_table, i, CHARSET_INFO *)->name); + CHARSET_INFO *cs; + /* FIXME */ + for (cs = all_charsets; cs < all_charsets + 255; cs++) + if (cs->name) + charset_append(&s, cs->name); } +#endif + s.str[s.length - 1] = '\0'; /* chop trailing space */ p = my_strdup(s.str, MYF(MY_WME)); dynstr_free(&s); diff --git a/mysys/test_charset.c b/mysys/test_charset.c index 5e623584355..47ed9062c05 100644 --- a/mysys/test_charset.c +++ b/mysys/test_charset.c @@ -77,11 +77,11 @@ int main(int argc, char **argv) { _print_csinfo(default_charset_info); fflush(stdout); - cs_list = list_charsets(MYF(MY_COMPILED_SETS | MY_CONFIG_SETS)); + cs_list = list_charsets(MYF(MY_CS_COMPILED | MY_CS_CONFIG)); printf("LIST OF CHARSETS (compiled + *.conf):\n%s\n", cs_list); my_free(cs_list,MYF(0)); - cs_list = list_charsets(MYF(MY_INDEX_SETS | MY_LOADED_SETS)); + cs_list = list_charsets(MYF(MY_CS_INDEX | MY_CS_LOADED)); printf("LIST OF CHARSETS (index + loaded):\n%s\n", cs_list); my_free(cs_list,MYF(0)); diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 98bfa162242..59630644e5a 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -1840,7 +1840,7 @@ int main(int argc, char **argv) if (set_default_charset_by_name(default_charset, MYF(MY_WME))) exit( 1 ); - charsets_list = list_charsets(MYF(MY_COMPILED_SETS|MY_CONFIG_SETS)); + charsets_list = list_charsets(MYF(MY_CS_COMPILED|MY_CS_CONFIG)); #ifdef HAVE_OPENSSL if (opt_use_ssl) diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 494607c7fff..e227a5bf5ca 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -1381,8 +1381,10 @@ int mysqld_show_charsets(THD *thd, const char *wild) if (send_fields(thd,field_list,1)) DBUG_RETURN(1); - for (cs=compiled_charsets ; cs->name ; cs++ ) + for (cs=all_charsets ; cs < all_charsets+255 ; cs++ ) { + if (!cs->name) + continue; if (!(wild && wild[0] && wild_case_compare(system_charset_info,cs->name,wild))) { packet2.length(0); diff --git a/strings/ctype.c b/strings/ctype.c index 7c37eeff986..f91c8985aee 100644 --- a/strings/ctype.c +++ b/strings/ctype.c @@ -2805,8 +2805,10 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_latin1 { - 8, /* number */ - "latin1", /* name */ + 8, /* number */ + MY_CS_COMPILED, /* state */ + "latin1", /* name */ + "", /* comment */ ctype_latin1, to_lower_latin1, to_upper_latin1, @@ -2838,7 +2840,9 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_big5 { 1, /* number */ + MY_CS_COMPILED, /* state */ "big5", /* name */ + "", /* comment */ ctype_big5, to_lower_big5, to_upper_big5, @@ -2870,7 +2874,9 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_cp1251 { 14, /* number */ + MY_CS_COMPILED, /* state */ "cp1251", /* name */ + "", /* comment */ ctype_cp1251, to_lower_cp1251, to_upper_cp1251, @@ -2902,7 +2908,9 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_cp1257 { 29, /* number */ + MY_CS_COMPILED, /* state */ "cp1257", /* name */ + "", /* comment */ ctype_cp1257, to_lower_cp1257, to_upper_cp1257, @@ -2934,7 +2942,9 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_croat { 27, /* number */ + MY_CS_COMPILED, /* state */ "croat", /* name */ + "", /* comment */ ctype_croat, to_lower_croat, to_upper_croat, @@ -2966,7 +2976,9 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_czech { 2, /* number */ + MY_CS_COMPILED, /* state */ "czech", /* name */ + "", /* comment */ ctype_czech, to_lower_czech, to_upper_czech, @@ -2998,7 +3010,9 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_danish { 15, /* number */ + MY_CS_COMPILED, /* state */ "danish", /* name */ + "", /* comment */ ctype_danish, to_lower_danish, to_upper_danish, @@ -3030,7 +3044,9 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_dec8 { 3, /* number */ + MY_CS_COMPILED, /* state */ "dec8", /* name */ + "", /* comment */ ctype_dec8, to_lower_dec8, to_upper_dec8, @@ -3062,7 +3078,9 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_dos { 4, /* number */ + MY_CS_COMPILED, /* state */ "dos", /* name */ + "", /* comment */ ctype_dos, to_lower_dos, to_upper_dos, @@ -3094,7 +3112,9 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_estonia { 20, /* number */ + MY_CS_COMPILED, /* state */ "estonia", /* name */ + "", /* comment */ ctype_estonia, to_lower_estonia, to_upper_estonia, @@ -3126,7 +3146,9 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_euc_kr { 19, /* number */ + MY_CS_COMPILED, /* state */ "euc_kr", /* name */ + "", /* comment */ ctype_euc_kr, to_lower_euc_kr, to_upper_euc_kr, @@ -3158,7 +3180,9 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_gb2312 { 24, /* number */ + MY_CS_COMPILED, /* state */ "gb2312", /* name */ + "", /* comment */ ctype_gb2312, to_lower_gb2312, to_upper_gb2312, @@ -3190,7 +3214,9 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_gbk { 28, /* number */ + MY_CS_COMPILED, /* state */ "gbk", /* name */ + "", /* comment */ ctype_gbk, to_lower_gbk, to_upper_gbk, @@ -3222,7 +3248,9 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_german1 { 5, /* number */ + MY_CS_COMPILED, /* state */ "german1", /* name */ + "", /* comment */ ctype_german1, to_lower_german1, to_upper_german1, @@ -3254,7 +3282,9 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_greek { 25, /* number */ + MY_CS_COMPILED, /* state */ "greek", /* name */ + "", /* comment */ ctype_greek, to_lower_greek, to_upper_greek, @@ -3286,7 +3316,9 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_hebrew { 16, /* number */ + MY_CS_COMPILED, /* state */ "hebrew", /* name */ + "", /* comment */ ctype_hebrew, to_lower_hebrew, to_upper_hebrew, @@ -3318,7 +3350,9 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_hp8 { 6, /* number */ + MY_CS_COMPILED, /* state */ "hp8", /* name */ + "", /* comment */ ctype_hp8, to_lower_hp8, to_upper_hp8, @@ -3350,7 +3384,9 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_hungarian { 21, /* number */ + MY_CS_COMPILED, /* state */ "hungarian", /* name */ + "", /* comment */ ctype_hungarian, to_lower_hungarian, to_upper_hungarian, @@ -3382,7 +3418,9 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_koi8_ru { 7, /* number */ + MY_CS_COMPILED, /* state */ "koi8_ru", /* name */ + "", /* comment */ ctype_koi8_ru, to_lower_koi8_ru, to_upper_koi8_ru, @@ -3414,7 +3452,9 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_koi8_ukr { 22, /* number */ + MY_CS_COMPILED, /* state */ "koi8_ukr", /* name */ + "", /* comment */ ctype_koi8_ukr, to_lower_koi8_ukr, to_upper_koi8_ukr, @@ -3446,7 +3486,9 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_latin1_de { 31, /* number */ + MY_CS_COMPILED, /* state */ "latin1_de", /* name */ + "", /* comment */ ctype_latin1_de, to_lower_latin1_de, to_upper_latin1_de, @@ -3478,7 +3520,9 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_latin2 { 9, /* number */ + MY_CS_COMPILED, /* state */ "latin2", /* name */ + "", /* comment */ ctype_latin2, to_lower_latin2, to_upper_latin2, @@ -3510,7 +3554,9 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_latin5 { 30, /* number */ + MY_CS_COMPILED, /* state */ "latin5", /* name */ + "", /* comment */ ctype_latin5, to_lower_latin5, to_upper_latin5, @@ -3542,7 +3588,9 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_sjis { 13, /* number */ + MY_CS_COMPILED, /* state */ "sjis", /* name */ + "", /* comment */ ctype_sjis, to_lower_sjis, to_upper_sjis, @@ -3574,7 +3622,9 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_swe7 { 10, /* number */ + MY_CS_COMPILED, /* state */ "swe7", /* name */ + "", /* comment */ ctype_swe7, to_lower_swe7, to_upper_swe7, @@ -3606,7 +3656,9 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_tis620 { 18, /* number */ + MY_CS_COMPILED, /* state */ "tis620", /* name */ + "", /* comment */ ctype_tis620, to_lower_tis620, to_upper_tis620, @@ -3638,7 +3690,9 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_ucs2 { 35, /* number */ + MY_CS_COMPILED, /* state */ "ucs2", /* name */ + "", /* comment */ ctype_ucs2, /* ctype */ to_lower_ucs2, /* to_lower */ to_upper_ucs2, /* to_upper */ @@ -3671,7 +3725,9 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_ujis { 12, /* number */ + MY_CS_COMPILED, /* state */ "ujis", /* name */ + "", /* comment */ ctype_ujis, to_lower_ujis, to_upper_ujis, @@ -3703,7 +3759,9 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_utf8 { 33, /* number */ + MY_CS_COMPILED, /* state */ "utf8", /* name */ + "", /* comment */ ctype_utf8, /* ctype */ to_lower_utf8, /* to_lower */ to_upper_utf8, /* to_upper */ @@ -3735,7 +3793,9 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_usa7 { 11, /* number */ + MY_CS_COMPILED, /* state */ "usa7", /* name */ + "", /* comment */ ctype_usa7, to_lower_usa7, to_upper_usa7, @@ -3767,7 +3827,9 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_win1250 { 26, /* number */ + MY_CS_COMPILED, /* state */ "win1250", /* name */ + "", /* comment */ ctype_win1250, to_lower_win1250, to_upper_win1250, @@ -3799,7 +3861,9 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_win1251ukr { 23, /* number */ + MY_CS_COMPILED, /* state */ "win1251ukr", /* name */ + "", /* comment */ ctype_win1251ukr, to_lower_win1251ukr, to_upper_win1251ukr, @@ -3831,7 +3895,9 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_armscii8 { 32, /* number */ + MY_CS_COMPILED, /* state */ "armscii8", /* name */ + "", /* comment */ ctype_armscii8, to_lower_armscii8, to_upper_armscii8, @@ -3863,7 +3929,9 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_win1251 { 17, /* number */ + MY_CS_COMPILED, /* state */ "win1251", /* name */ + "", /* comment */ ctype_win1251, to_lower_win1251, to_upper_win1251, @@ -3895,7 +3963,9 @@ CHARSET_INFO compiled_charsets[] = { #ifdef HAVE_CHARSET_win1250ch { 34, /* number */ + MY_CS_COMPILED, /* state */ "win1250ch", /* name */ + "", /* comment */ ctype_win1250ch, to_lower_win1250ch, to_upper_win1250ch, @@ -3926,7 +3996,9 @@ CHARSET_INFO compiled_charsets[] = { { 0, /* end-of-list marker */ - NullS, + 0, /* state */ + NullS, /* name */ + NullS, /* comment */ NULL, NULL, NULL, -- 2.30.9