Commit fcaf867b authored by unknown's avatar unknown

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
parent ebdc990b
......@@ -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);
......
......@@ -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 */
......
......@@ -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);
......
......@@ -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);
......
......@@ -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));
......
......@@ -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)
......
......@@ -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);
......
......@@ -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,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment