diff --git a/mysys/charset.c b/mysys/charset.c index 899acf46fac..30bd186c531 100644 --- a/mysys/charset.c +++ b/mysys/charset.c @@ -271,6 +271,9 @@ static void simple_cs_copy_data(CHARSET_INFO *to, CHARSET_INFO *from) if (from->name) to->name= my_once_strdup(from->name,MYF(MY_WME)); + if (from->comment) + to->comment= my_once_strdup(from->comment,MYF(MY_WME)); + if (from->ctype) { to->ctype= (uchar*) my_once_memdup((char*) from->ctype, @@ -339,7 +342,10 @@ static int add_collation(CHARSET_INFO *cs) } else { - all_charsets[cs->number]->state |= cs->state; + CHARSET_INFO *dst= all_charsets[cs->number]; + dst->state |= cs->state; + if (cs->comment) + dst->comment= my_once_strdup(cs->comment,MYF(MY_WME)); } cs->number= 0; cs->primary_number= 0; diff --git a/sql/share/charsets/Index.xml b/sql/share/charsets/Index.xml index 4f0e4ff2157..ffc6d30100c 100644 --- a/sql/share/charsets/Index.xml +++ b/sql/share/charsets/Index.xml @@ -11,6 +11,7 @@ To make maintaining easier please: Traditional Chinese + Big5 Traditional Chinese big-5 bigfive big-five @@ -24,6 +25,7 @@ To make maintaining easier please: Central European + ISO 8859-2 Central European csisolatin2 iso-8859-2 iso-ir-101 @@ -47,6 +49,7 @@ To make maintaining easier please: Western + DEC West European Dutch @@ -62,6 +65,7 @@ To make maintaining easier please: Western + DOS West European 850 cp850 cspc850multilingual @@ -81,6 +85,7 @@ To make maintaining easier please: Western + ISO 8859-1 West European csisolatin1 iso-8859-1 iso-ir-100 @@ -117,6 +122,7 @@ To make maintaining easier please: Western + HP West European hproman8 @@ -133,6 +139,7 @@ To make maintaining easier please: Cyrillic + KOI8-R Relcom Russian koi8-r cskoi8r @@ -141,6 +148,7 @@ To make maintaining easier please: Western + 7bit Swedish iso-646-se @@ -148,6 +156,7 @@ To make maintaining easier please: Western + US ASCII us us-ascii csascii @@ -159,12 +168,14 @@ To make maintaining easier please: Japanese + EUC-JP Japanese euc-jp Japanese + Shift-JIS Japanese s-jis shift-jis x-sjis @@ -173,6 +184,7 @@ To make maintaining easier please: Cyrillic + Windows Cyrillic windows-1251 ms-cyr ms-cyrillic @@ -209,6 +221,7 @@ To make maintaining easier please: Hebrew + ISO 8859-8 Hebrew csisolatinhebrew iso-8859-8 iso-ir-138 @@ -218,6 +231,7 @@ To make maintaining easier please: Thai + TIS620 Thai tis-620 primary @@ -227,6 +241,7 @@ To make maintaining easier please: Korean + EUC-KR Korean euc_kr euc-kr @@ -237,6 +252,7 @@ To make maintaining easier please: Baltic + ISO 8859-13 Baltic BalticRim iso-8859-13 l7 @@ -257,6 +273,7 @@ To make maintaining easier please: Cyrillic + KOI8-U Ukrainian koi8-u @@ -264,6 +281,7 @@ To make maintaining easier please: Simplified Chinese + GB2312 Simplified Chinese chinese iso-ir-58 @@ -274,6 +292,7 @@ To make maintaining easier please: Greek + ISO 8859-7 Greek csisolatingreek ecma-118 greek8 @@ -285,6 +304,7 @@ To make maintaining easier please: Central European + Windows Central European ms-ce windows-1250 @@ -302,6 +322,7 @@ To make maintaining easier please: East Asian + GBK Simplified Chinese cp936 primary @@ -311,6 +332,7 @@ To make maintaining easier please: Baltic + Windows Baltic WinBaltRim windows-1257 @@ -331,6 +353,7 @@ To make maintaining easier please: South Asian + ISO 8859-9 Turkish csisolatin5 iso-8859-9 iso-ir-148 @@ -343,6 +366,7 @@ To make maintaining easier please: South Asian + ARMSCII-8 Armenian armscii-8 @@ -350,17 +374,20 @@ To make maintaining easier please: Unicode + UTF-8 Unicode utf-8 Unicode + UCS-2 Unicode Cyrillic + DOS Russian 866 csibm866 ibm866 @@ -371,12 +398,14 @@ To make maintaining easier please: Central European + DOS Kamenicky Czech-Slovak - + Central European + Mac Central European MacCentralEurope Hungarian @@ -417,8 +446,9 @@ To make maintaining easier please: - + Western + Mac West European Mac Macintosh csmacintosh @@ -467,6 +497,7 @@ To make maintaining easier please: Central European + DOS Central European 852 cp852 ibm852 @@ -484,6 +515,7 @@ To make maintaining easier please: Arabic + Windows Arabic ms-arab windows-1256 @@ -496,6 +528,7 @@ To make maintaining easier please: + Binary pseudo charset primary compiled diff --git a/sql/share/charsets/MacCE.xml b/sql/share/charsets/macce.xml similarity index 99% rename from sql/share/charsets/MacCE.xml rename to sql/share/charsets/macce.xml index 9a6a392b426..056047e9b82 100644 --- a/sql/share/charsets/MacCE.xml +++ b/sql/share/charsets/macce.xml @@ -2,7 +2,7 @@ - + diff --git a/sql/share/charsets/MacRoman.xml b/sql/share/charsets/macroman.xml similarity index 99% rename from sql/share/charsets/MacRoman.xml rename to sql/share/charsets/macroman.xml index 9dc4d73b3ef..cc9448842b4 100644 --- a/sql/share/charsets/MacRoman.xml +++ b/sql/share/charsets/macroman.xml @@ -2,7 +2,7 @@ - + diff --git a/sql/sql_show.cc b/sql/sql_show.cc index d2cc9045148..cc7e19e72e2 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -1474,6 +1474,7 @@ static bool write_charset(Protocol *protocol, CHARSET_INFO *cs) { protocol->prepare_for_resend(); protocol->store(cs->csname, system_charset_info); + protocol->store(cs->comment ? cs->comment : "", system_charset_info); protocol->store(cs->name, system_charset_info); protocol->store_short((longlong) cs->mbmaxlen); return protocol->write(); @@ -1491,6 +1492,7 @@ int mysqld_show_charsets(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("Description",60)); field_list.push_back(new Item_empty_string("Default collation",60)); field_list.push_back(new Item_return_int("Maxlen",3, FIELD_TYPE_SHORT)); diff --git a/strings/ctype.c b/strings/ctype.c index 45bc2589f76..68d9a30048f 100644 --- a/strings/ctype.c +++ b/strings/ctype.c @@ -54,6 +54,7 @@ struct my_cs_file_section_st #define _CS_CTYPEMAP 14 #define _CS_PRIMARY_ID 15 #define _CS_BINARY_ID 16 +#define _CS_CSDESCRIPT 17 static struct my_cs_file_section_st sec[] = { @@ -62,12 +63,12 @@ static struct my_cs_file_section_st sec[] = {_CS_MISC, "xml.encoding"}, {_CS_MISC, "charsets"}, {_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_CSDESCRIPT, "charsets.charset.description"}, {_CS_MISC, "charsets.charset.alias"}, {_CS_MISC, "charsets.charset.ctype"}, {_CS_CTYPEMAP, "charsets.charset.ctype.map"}, @@ -97,6 +98,8 @@ static struct my_cs_file_section_st * cs_file_sec(const char *attr, uint len) return NULL; } +#define MY_CS_CSDESCR_SIZE 64 + typedef struct my_cs_file_info { char csname[MY_CS_NAME_SIZE]; @@ -106,6 +109,7 @@ typedef struct my_cs_file_info uchar to_upper[MY_CS_TO_UPPER_TABLE_SIZE]; uchar sort_order[MY_CS_SORT_ORDER_TABLE_SIZE]; uint16 tab_to_uni[MY_CS_TO_UNI_TABLE_SIZE]; + char comment[MY_CS_CSDESCR_SIZE]; CHARSET_INFO cs; int (*add_collation)(CHARSET_INFO *cs); } MY_CHARSET_LOADER; @@ -208,6 +212,9 @@ static int cs_value(MY_XML_PARSER *st,const char *attr, uint len) case _CS_CSNAME: i->cs.csname=mstr(i->csname,attr,len,MY_CS_NAME_SIZE-1); break; + case _CS_CSDESCRIPT: + i->cs.comment=mstr(i->comment,attr,len,MY_CS_CSDESCR_SIZE-1); + break; case _CS_FLAG: if (!strncmp("primary",attr,len)) i->cs.state|= MY_CS_PRIMARY;