Variables were rename, binary collation names were added
Fixed that SHOW CHARACTER SET displayed non-dynamic charsets even if they were not really compiled
This commit is contained in:
parent
79326cf901
commit
2b1e1f6494
@ -61,6 +61,7 @@ typedef struct unicase_info_st
|
||||
#define MY_CS_BINSORT 16 /* if binary sort order */
|
||||
#define MY_CS_PRIMARY 32 /* if primary collation */
|
||||
#define MY_CS_STRNXFRM 64 /* if strnxfrm is used for sort */
|
||||
#define MY_CS_UNICODE 128 /* is a charset is full unicode */
|
||||
|
||||
#define MY_CHARSET_UNDEFINED 0
|
||||
#define MY_CHARSET_CURRENT (default_charset_info->number)
|
||||
@ -185,20 +186,29 @@ typedef struct charset_info_st
|
||||
|
||||
|
||||
extern CHARSET_INFO my_charset_bin;
|
||||
extern CHARSET_INFO my_charset_big5_chinese_ci;
|
||||
extern CHARSET_INFO my_charset_big5_bin;
|
||||
extern CHARSET_INFO my_charset_euckr_korean_ci;
|
||||
extern CHARSET_INFO my_charset_euckr_bin;
|
||||
extern CHARSET_INFO my_charset_gb2312_chinese_ci;
|
||||
extern CHARSET_INFO my_charset_gb2312_bin;
|
||||
extern CHARSET_INFO my_charset_gbk_chinese_ci;
|
||||
extern CHARSET_INFO my_charset_gbk_bin;
|
||||
extern CHARSET_INFO my_charset_latin1;
|
||||
extern CHARSET_INFO my_charset_big5;
|
||||
extern CHARSET_INFO my_charset_czech;
|
||||
extern CHARSET_INFO my_charset_euc_kr;
|
||||
extern CHARSET_INFO my_charset_gb2312;
|
||||
extern CHARSET_INFO my_charset_gbk;
|
||||
extern CHARSET_INFO my_charset_latin1_de;
|
||||
extern CHARSET_INFO my_charset_sjis;
|
||||
extern CHARSET_INFO my_charset_tis620;
|
||||
extern CHARSET_INFO my_charset_ucs2;
|
||||
extern CHARSET_INFO my_charset_ucse;
|
||||
extern CHARSET_INFO my_charset_ujis;
|
||||
extern CHARSET_INFO my_charset_utf8;
|
||||
extern CHARSET_INFO my_charset_win1250ch;
|
||||
extern CHARSET_INFO my_charset_latin1_german2_ci;
|
||||
extern CHARSET_INFO my_charset_latin1_bin;
|
||||
extern CHARSET_INFO my_charset_latin2_czech_ci;
|
||||
extern CHARSET_INFO my_charset_sjis_japanese_ci;
|
||||
extern CHARSET_INFO my_charset_sjis_bin;
|
||||
extern CHARSET_INFO my_charset_tis620_thai_ci;
|
||||
extern CHARSET_INFO my_charset_tis620_bin;
|
||||
extern CHARSET_INFO my_charset_ucs2_general_ci;
|
||||
extern CHARSET_INFO my_charset_ucs2_bin;
|
||||
extern CHARSET_INFO my_charset_ujis_japanese_ci;
|
||||
extern CHARSET_INFO my_charset_ujis_bin;
|
||||
extern CHARSET_INFO my_charset_utf8_general_ci;
|
||||
extern CHARSET_INFO my_charset_utf8_bin;
|
||||
extern CHARSET_INFO my_charset_cp1250_czech_ci;
|
||||
|
||||
|
||||
extern my_bool my_parse_charset_xml(const char *bug, uint len,
|
||||
|
@ -313,6 +313,8 @@ static int add_collation(CHARSET_INFO *cs)
|
||||
{
|
||||
if (!all_charsets[cs->number])
|
||||
{
|
||||
if (cs->state & MY_CS_COMPILED)
|
||||
return MY_XML_OK;
|
||||
if (!(all_charsets[cs->number]=
|
||||
(CHARSET_INFO*) my_once_alloc(sizeof(CHARSET_INFO),MYF(0))))
|
||||
return MY_XML_ERROR;
|
||||
@ -424,55 +426,51 @@ static my_bool init_compiled_charsets(myf flags __attribute__((unused)))
|
||||
CHARSET_INFO *cs;
|
||||
|
||||
MY_ADD_CHARSET(&my_charset_latin1);
|
||||
|
||||
MY_ADD_CHARSET(&my_charset_bin);
|
||||
MY_ADD_CHARSET(&my_charset_latin1_german2_ci);
|
||||
|
||||
#ifdef HAVE_CHARSET_big5
|
||||
MY_ADD_CHARSET(&my_charset_big5);
|
||||
MY_ADD_CHARSET(&my_charset_big5_chinese_ci);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_czech
|
||||
MY_ADD_CHARSET(&my_charset_czech);
|
||||
MY_ADD_CHARSET(&my_charset_latin2_czech_ci);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_euc_kr
|
||||
MY_ADD_CHARSET(&my_charset_euc_kr);
|
||||
MY_ADD_CHARSET(&my_charset_euckr_korean_ci);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_gb2312
|
||||
MY_ADD_CHARSET(&my_charset_gb2312);
|
||||
MY_ADD_CHARSET(&my_charset_gb2312_chinese_ci);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_gbk
|
||||
MY_ADD_CHARSET(&my_charset_gbk);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_latin1_de
|
||||
MY_ADD_CHARSET(&my_charset_latin1_de);
|
||||
MY_ADD_CHARSET(&my_charset_gbk_chinese_ci);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_sjis
|
||||
MY_ADD_CHARSET(&my_charset_sjis);
|
||||
MY_ADD_CHARSET(&my_charset_sjis_japanese_ci);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_tis620
|
||||
MY_ADD_CHARSET(&my_charset_tis620);
|
||||
MY_ADD_CHARSET(&my_charset_tis620_thai_ci);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_ucs2
|
||||
MY_ADD_CHARSET(&my_charset_ucs2);
|
||||
MY_ADD_CHARSET(&my_charset_ucs2_general_ci);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_ujis
|
||||
MY_ADD_CHARSET(&my_charset_ujis);
|
||||
MY_ADD_CHARSET(&my_charset_ujis_japanese_ci);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_utf8
|
||||
MY_ADD_CHARSET(&my_charset_utf8);
|
||||
MY_ADD_CHARSET(&my_charset_utf8_general_ci);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_win1250ch
|
||||
MY_ADD_CHARSET(&my_charset_win1250ch);
|
||||
MY_ADD_CHARSET(&my_charset_cp1250_czech_ci);
|
||||
#endif
|
||||
|
||||
/* Copy compiled charsets */
|
||||
@ -533,12 +531,6 @@ void free_charsets(void)
|
||||
}
|
||||
|
||||
|
||||
static void get_charset_conf_name(const char *cs_name, char *buf)
|
||||
{
|
||||
strxmov(get_charsets_dir(buf), cs_name, ".conf", NullS);
|
||||
}
|
||||
|
||||
|
||||
uint get_charset_number(const char *charset_name)
|
||||
{
|
||||
CHARSET_INFO **cs;
|
||||
@ -661,28 +653,3 @@ CHARSET_INFO *get_charset_by_csname(const char *cs_name,
|
||||
|
||||
return cs;
|
||||
}
|
||||
|
||||
|
||||
/* Only append name if it doesn't exist from before */
|
||||
|
||||
static my_bool charset_in_string(const char *name, DYNAMIC_STRING *s)
|
||||
{
|
||||
uint length= (uint) strlen(name);
|
||||
const char *pos;
|
||||
for (pos=s->str ; (pos=strstr(pos,name)) ; pos++)
|
||||
{
|
||||
if (! pos[length] || pos[length] == ' ')
|
||||
return TRUE; /* Already existed */
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
static void charset_append(DYNAMIC_STRING *s, const char *name)
|
||||
{
|
||||
if (!charset_in_string(name, s))
|
||||
{
|
||||
dynstr_append(s, name);
|
||||
dynstr_append(s, " ");
|
||||
}
|
||||
}
|
||||
|
@ -1420,8 +1420,8 @@ void mysqld_list_processes(THD *thd,const char *user, bool verbose)
|
||||
static bool write_collation(Protocol *protocol, CHARSET_INFO *cs)
|
||||
{
|
||||
protocol->prepare_for_resend();
|
||||
protocol->store(cs->csname, system_charset_info);
|
||||
protocol->store(cs->name, system_charset_info);
|
||||
protocol->store(cs->csname, system_charset_info);
|
||||
protocol->store_short((longlong) cs->number);
|
||||
protocol->store((cs->state & MY_CS_PRIMARY) ? "Y" : "",system_charset_info);
|
||||
protocol->store((cs->state & MY_CS_COMPILED)? "Y" : "",system_charset_info);
|
||||
@ -1440,8 +1440,8 @@ int mysqld_show_collations(THD *thd, const char *wild)
|
||||
|
||||
DBUG_ENTER("mysqld_show_charsets");
|
||||
|
||||
field_list.push_back(new Item_empty_string("Charset",30));
|
||||
field_list.push_back(new Item_empty_string("Collation",30));
|
||||
field_list.push_back(new Item_empty_string("Charset",30));
|
||||
field_list.push_back(new Item_return_int("Id",11, FIELD_TYPE_SHORT));
|
||||
field_list.push_back(new Item_empty_string("D",30));
|
||||
field_list.push_back(new Item_empty_string("C",30));
|
||||
|
@ -28,9 +28,9 @@
|
||||
#include <floatingpoint.h>
|
||||
#endif
|
||||
|
||||
CHARSET_INFO *system_charset_info= &my_charset_utf8;
|
||||
CHARSET_INFO *files_charset_info= &my_charset_utf8;
|
||||
CHARSET_INFO *national_charset_info= &my_charset_utf8;
|
||||
CHARSET_INFO *system_charset_info= &my_charset_utf8_general_ci;
|
||||
CHARSET_INFO *files_charset_info= &my_charset_utf8_general_ci;
|
||||
CHARSET_INFO *national_charset_info= &my_charset_utf8_general_ci;
|
||||
|
||||
extern gptr sql_alloc(unsigned size);
|
||||
extern void sql_element_free(void *ptr);
|
||||
|
@ -6226,7 +6226,7 @@ my_mb_wc_big5(CHARSET_INFO *cs __attribute__((unused)),
|
||||
return 2;
|
||||
}
|
||||
|
||||
CHARSET_INFO my_charset_big5 =
|
||||
CHARSET_INFO my_charset_big5_chinese_ci =
|
||||
{
|
||||
1,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM, /* state */
|
||||
|
@ -605,7 +605,7 @@ int my_strnncollsp_czech(CHARSET_INFO * cs,
|
||||
}
|
||||
|
||||
|
||||
CHARSET_INFO my_charset_czech =
|
||||
CHARSET_INFO my_charset_latin2_czech_ci =
|
||||
{
|
||||
2,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM, /* state */
|
||||
|
@ -8634,7 +8634,7 @@ my_mb_wc_euc_kr(CHARSET_INFO *cs __attribute__((unused)),
|
||||
return 2;
|
||||
}
|
||||
|
||||
CHARSET_INFO my_charset_euc_kr =
|
||||
CHARSET_INFO my_charset_euckr_korean_ci =
|
||||
{
|
||||
19,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_PRIMARY, /* state */
|
||||
|
@ -5684,7 +5684,7 @@ my_mb_wc_gb2312(CHARSET_INFO *cs __attribute__((unused)),
|
||||
return 2;
|
||||
}
|
||||
|
||||
CHARSET_INFO my_charset_gb2312 =
|
||||
CHARSET_INFO my_charset_gb2312_chinese_ci =
|
||||
{
|
||||
24,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_PRIMARY, /* state */
|
||||
|
@ -9881,7 +9881,7 @@ my_mb_wc_gbk(CHARSET_INFO *cs __attribute__((unused)),
|
||||
|
||||
}
|
||||
|
||||
CHARSET_INFO my_charset_gbk =
|
||||
CHARSET_INFO my_charset_gbk_chinese_ci =
|
||||
{
|
||||
28,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM, /* state */
|
||||
|
@ -428,7 +428,7 @@ static int my_strnxfrm_latin1_de(CHARSET_INFO *cs __attribute__((unused)),
|
||||
return dest - dest_orig;
|
||||
}
|
||||
|
||||
CHARSET_INFO my_charset_latin1_de =
|
||||
CHARSET_INFO my_charset_latin1_german2_ci =
|
||||
{
|
||||
31,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM, /* state */
|
||||
|
@ -4468,7 +4468,7 @@ my_mb_wc_sjis(CHARSET_INFO *cs __attribute__((unused)),
|
||||
return 2;
|
||||
}
|
||||
|
||||
CHARSET_INFO my_charset_sjis =
|
||||
CHARSET_INFO my_charset_sjis_japanese_ci =
|
||||
{
|
||||
13,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM, /* state */
|
||||
|
@ -688,7 +688,7 @@ void ThNormalize(uchar* ptr, uint field_length, const uchar* from, uint length)
|
||||
}
|
||||
|
||||
|
||||
CHARSET_INFO my_charset_tis620 =
|
||||
CHARSET_INFO my_charset_tis620_thai_ci =
|
||||
{
|
||||
18,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM, /* state */
|
||||
|
@ -997,10 +997,10 @@ uint my_charpos_ucs2(CHARSET_INFO *cs __attribute__((unused)),
|
||||
return pos*2;
|
||||
}
|
||||
|
||||
CHARSET_INFO my_charset_ucs2 =
|
||||
CHARSET_INFO my_charset_ucs2_general_ci =
|
||||
{
|
||||
35,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM, /* state */
|
||||
MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE, /* state */
|
||||
"ucs2", /* cs name */
|
||||
"ucs2_general_ci", /* name */
|
||||
"", /* comment */
|
||||
|
@ -8425,7 +8425,7 @@ my_wc_mb_euc_jp(CHARSET_INFO *c,my_wc_t wc, unsigned char *s, unsigned char *e)
|
||||
return MY_CS_ILUNI;
|
||||
}
|
||||
|
||||
CHARSET_INFO my_charset_ujis =
|
||||
CHARSET_INFO my_charset_ujis_japanese_ci =
|
||||
{
|
||||
12,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_PRIMARY, /* state */
|
||||
|
@ -1950,10 +1950,10 @@ static int my_mbcharlen_utf8(CHARSET_INFO *cs __attribute__((unused)) , uint c)
|
||||
return 0; /* Illegal mb head */;
|
||||
}
|
||||
|
||||
CHARSET_INFO my_charset_utf8 =
|
||||
CHARSET_INFO my_charset_utf8_general_ci =
|
||||
{
|
||||
33,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM, /* state */
|
||||
MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE, /* state */
|
||||
"utf8", /* cs name */
|
||||
"utf8_general_ci", /* name */
|
||||
"", /* comment */
|
||||
|
@ -640,7 +640,7 @@ static my_bool my_like_range_win1250ch(CHARSET_INFO *cs __attribute__((unused)),
|
||||
}
|
||||
|
||||
|
||||
CHARSET_INFO my_charset_win1250ch =
|
||||
CHARSET_INFO my_charset_cp1250_czech_ci =
|
||||
{
|
||||
34,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM, /* state */
|
||||
|
@ -220,6 +220,8 @@ static int cs_value(MY_XML_PARSER *st,const char *attr, uint len)
|
||||
i->cs.state|= MY_CS_PRIMARY;
|
||||
else if (!strncmp("binary",attr,len))
|
||||
i->cs.state|= MY_CS_BINSORT;
|
||||
else if (!strncmp("compiled",attr,len))
|
||||
i->cs.state|= MY_CS_COMPILED;
|
||||
break;
|
||||
case _CS_UPPERMAP:
|
||||
fill_uchar(i->to_upper,MY_CS_TO_UPPER_TABLE_SIZE,attr,len);
|
||||
|
Loading…
x
Reference in New Issue
Block a user