diff --git a/mysys/charset.c b/mysys/charset.c index 1b53eac77df..c5d86f9c856 100644 --- a/mysys/charset.c +++ b/mysys/charset.c @@ -57,22 +57,40 @@ static void set_max_sort_char(CHARSET_INFO *cs) static void simple_cs_init_functions(CHARSET_INFO *cs) { - cs->strnxfrm = my_strnxfrm_simple; - cs->strnncoll = my_strnncoll_simple; - cs->strnncollsp = my_strnncollsp_simple; - cs->like_range = my_like_range_simple; - cs->wildcmp = my_wildcmp_8bit; - cs->mb_wc = my_mb_wc_8bit; - cs->wc_mb = my_wc_mb_8bit; + if (cs->state & MY_CS_BINSORT) + { + CHARSET_INFO *b= &my_charset_bin; + cs->strnxfrm = b->strnxfrm; + cs->like_range = b->like_range; + cs->wildcmp = b->wildcmp; + cs->strnncoll = b->strnncoll; + cs->strnncollsp = b->strnncollsp; + cs->tosort = b->tosort; + cs->strcasecmp = b->strcasecmp; + cs->strncasecmp = b->strncasecmp; + cs->hash_caseup = b->hash_caseup; + cs->hash_sort = b->hash_sort; + } + else + { + cs->strnxfrm = my_strnxfrm_simple; + cs->like_range = my_like_range_simple; + cs->wildcmp = my_wildcmp_8bit; + cs->strnncoll = my_strnncoll_simple; + cs->strnncollsp = my_strnncollsp_simple; + cs->tosort = my_tosort_8bit; + cs->strcasecmp = my_strcasecmp_8bit; + cs->strncasecmp = my_strncasecmp_8bit; + cs->hash_caseup = my_hash_caseup_simple; + cs->hash_sort = my_hash_sort_simple; + } + cs->caseup_str = my_caseup_str_8bit; 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->hash_caseup = my_hash_caseup_simple; - cs->hash_sort = my_hash_sort_simple; + cs->mb_wc = my_mb_wc_8bit; + cs->wc_mb = my_wc_mb_8bit; cs->snprintf = my_snprintf_8bit; cs->long10_to_str= my_long10_to_str_8bit; cs->longlong10_to_str= my_longlong10_to_str_8bit; @@ -223,7 +241,8 @@ static my_bool simple_cs_is_full(CHARSET_INFO *cs) { return ((cs->csname && cs->tab_to_uni && cs->ctype && cs->to_upper && cs->to_lower) && - (cs->number && cs->name && cs->sort_order)); + (cs->number && cs->name && + (cs->sort_order || (cs->state & MY_CS_BINSORT) ))); } diff --git a/sql/share/charsets/Index.xml b/sql/share/charsets/Index.xml index e6cea7bc615..4d54b8b53ce 100644 --- a/sql/share/charsets/Index.xml +++ b/sql/share/charsets/Index.xml @@ -1,6 +1,6 @@ - + This file lists all of the available character sets. @@ -16,7 +16,10 @@ To make maintaining easier please: big-five cn-big5 csbig5 - + + primary + compiled" + @@ -39,10 +42,12 @@ To make maintaining easier please: + Western + Dutch English @@ -71,6 +76,7 @@ To make maintaining easier please: Pogtuguese Spanish + @@ -86,7 +92,7 @@ To make maintaining easier please: - + Dutch English @@ -112,6 +118,7 @@ To make maintaining easier please: Western hproman8 + Dutch English @@ -129,12 +136,14 @@ To make maintaining easier please: koi8-r cskoi8r + Western iso-646-se + @@ -145,6 +154,7 @@ To make maintaining easier please: iso-ir-6 iso646-us + @@ -175,8 +185,8 @@ To make maintaining easier please: Mongolian Ukrainian - - + + Belarusian Bulgarian @@ -203,19 +213,26 @@ To make maintaining easier please: iso-8859-8 iso-ir-138 + Thai tis-620 - + + primary + compiled + Korean euc_kr euc-kr - + + primary + compiled" + @@ -226,19 +243,24 @@ To make maintaining easier please: + Cyrillic koi8-u + Simplified Chinese chinese iso-ir-58 - + + primary + compiled" + @@ -249,6 +271,7 @@ To make maintaining easier please: iso-8859-7 iso-ir-126 + @@ -265,20 +288,24 @@ To make maintaining easier please: Sorbian + East Asian cp936 - + + primary + compiled + Baltic WinBaltRim windows-1257 - - + + Latvian Lithuanian @@ -302,12 +329,14 @@ To make maintaining easier please: latin5 turkish + South Asian armscii-8 + @@ -328,11 +357,13 @@ To make maintaining easier please: ibm866 DOSCyrillicRussian + Central European + @@ -347,7 +378,7 @@ To make maintaining easier please: Slovenian Sorbian - + Hungarian Polish @@ -392,7 +423,7 @@ To make maintaining easier please: Pogtuguese Spanish - + Dutch English @@ -439,12 +470,14 @@ To make maintaining easier please: Slovenian Sorbian + Arabic ms-arab windows-1256 + Arabic Persian @@ -454,7 +487,11 @@ To make maintaining easier please: - + + primary + compiled + + diff --git a/sql/share/charsets/MacCE.xml b/sql/share/charsets/MacCE.xml index fe64fd18abc..9a6a392b426 100644 --- a/sql/share/charsets/MacCE.xml +++ b/sql/share/charsets/MacCE.xml @@ -115,27 +115,7 @@ - - - 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F - 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F - 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F - 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F - 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F - 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F - 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F - 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F - 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F - 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F - A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF - B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF - C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF - D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF - E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF - F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF - - - + diff --git a/sql/share/charsets/MacRoman.xml b/sql/share/charsets/MacRoman.xml index b17860f56b2..9dc4d73b3ef 100644 --- a/sql/share/charsets/MacRoman.xml +++ b/sql/share/charsets/MacRoman.xml @@ -111,26 +111,7 @@ - - - 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F - 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F - 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F - 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F - 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F - 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F - 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F - 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F - 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F - 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F - A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF - B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF - C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF - D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF - E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF - F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF - - + diff --git a/sql/share/charsets/armscii8.xml b/sql/share/charsets/armscii8.xml index 99ab5eb336d..5012a3d84a9 100644 --- a/sql/share/charsets/armscii8.xml +++ b/sql/share/charsets/armscii8.xml @@ -114,6 +114,8 @@ + + diff --git a/sql/share/charsets/ascii.xml b/sql/share/charsets/ascii.xml index 67ab57de88f..c94901b1ae7 100644 --- a/sql/share/charsets/ascii.xml +++ b/sql/share/charsets/ascii.xml @@ -114,6 +114,8 @@ + + diff --git a/sql/share/charsets/cp1250.xml b/sql/share/charsets/cp1250.xml index a863aceffc9..b858fbff2a0 100644 --- a/sql/share/charsets/cp1250.xml +++ b/sql/share/charsets/cp1250.xml @@ -116,6 +116,8 @@ + + diff --git a/sql/share/charsets/cp1251.xml b/sql/share/charsets/cp1251.xml index 48c525eb797..79b71df9baf 100644 --- a/sql/share/charsets/cp1251.xml +++ b/sql/share/charsets/cp1251.xml @@ -116,26 +116,7 @@ - - - 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F - 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F - 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F - 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F - 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F - 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F - 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F - 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F - 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F - 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F - A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF - B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF - C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF - D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF - E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF - F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF - - + diff --git a/sql/share/charsets/cp1256.xml b/sql/share/charsets/cp1256.xml index 2a6f6032358..a747c7c3a93 100644 --- a/sql/share/charsets/cp1256.xml +++ b/sql/share/charsets/cp1256.xml @@ -116,6 +116,7 @@ + diff --git a/sql/share/charsets/cp1257.xml b/sql/share/charsets/cp1257.xml index 5ac2b746ff9..7f1f8293aae 100644 --- a/sql/share/charsets/cp1257.xml +++ b/sql/share/charsets/cp1257.xml @@ -115,26 +115,7 @@ - - - 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F - 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F - 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F - 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F - 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F - 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F - 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F - 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F - 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F - 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F - A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF - B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF - C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF - D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF - E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF - F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF - - + diff --git a/sql/share/charsets/cp866.xml b/sql/share/charsets/cp866.xml index 2b050f3c993..43bab971bb3 100644 --- a/sql/share/charsets/cp866.xml +++ b/sql/share/charsets/cp866.xml @@ -116,6 +116,8 @@ + + diff --git a/sql/share/charsets/dec8.xml b/sql/share/charsets/dec8.xml index 4e76bbffd14..7b40041ec53 100644 --- a/sql/share/charsets/dec8.xml +++ b/sql/share/charsets/dec8.xml @@ -114,6 +114,7 @@ + diff --git a/sql/share/charsets/greek.xml b/sql/share/charsets/greek.xml index eeb22236675..1ad3d1bc9d2 100644 --- a/sql/share/charsets/greek.xml +++ b/sql/share/charsets/greek.xml @@ -114,6 +114,8 @@ + + diff --git a/sql/share/charsets/hebrew.xml b/sql/share/charsets/hebrew.xml index 3bf8bec370e..fbd4ea0c1d2 100644 --- a/sql/share/charsets/hebrew.xml +++ b/sql/share/charsets/hebrew.xml @@ -114,6 +114,8 @@ + + diff --git a/sql/share/charsets/hp8.xml b/sql/share/charsets/hp8.xml index 036f1cd067c..619297fa988 100644 --- a/sql/share/charsets/hp8.xml +++ b/sql/share/charsets/hp8.xml @@ -115,6 +115,8 @@ + + diff --git a/sql/share/charsets/keybcs2.xml b/sql/share/charsets/keybcs2.xml index bdbb364822f..e509207c1c5 100644 --- a/sql/share/charsets/keybcs2.xml +++ b/sql/share/charsets/keybcs2.xml @@ -114,6 +114,8 @@ + + diff --git a/sql/share/charsets/koi8r.xml b/sql/share/charsets/koi8r.xml index dae780f14fc..c5aeea23997 100644 --- a/sql/share/charsets/koi8r.xml +++ b/sql/share/charsets/koi8r.xml @@ -114,6 +114,8 @@ + + diff --git a/sql/share/charsets/koi8u.xml b/sql/share/charsets/koi8u.xml index e6cba068997..fd963ff0da5 100644 --- a/sql/share/charsets/koi8u.xml +++ b/sql/share/charsets/koi8u.xml @@ -114,6 +114,8 @@ + + diff --git a/sql/share/charsets/latin1.xml b/sql/share/charsets/latin1.xml index c14e369454e..87abbe06f77 100644 --- a/sql/share/charsets/latin1.xml +++ b/sql/share/charsets/latin1.xml @@ -162,26 +162,7 @@ - - - 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F - 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F - 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F - 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F - 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F - 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F - 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F - 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F - 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F - 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F - A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF - B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF - C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF - D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF - E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF - F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF - - + diff --git a/sql/share/charsets/latin2.xml b/sql/share/charsets/latin2.xml index 377ab19e8ad..9be39dee47d 100644 --- a/sql/share/charsets/latin2.xml +++ b/sql/share/charsets/latin2.xml @@ -161,6 +161,7 @@ + diff --git a/sql/share/charsets/latin5.xml b/sql/share/charsets/latin5.xml index a072ffc5072..c73cc645d42 100644 --- a/sql/share/charsets/latin5.xml +++ b/sql/share/charsets/latin5.xml @@ -119,6 +119,7 @@ + diff --git a/sql/share/charsets/latin7.xml b/sql/share/charsets/latin7.xml index eae4d501f44..89c14a3acd8 100644 --- a/sql/share/charsets/latin7.xml +++ b/sql/share/charsets/latin7.xml @@ -162,6 +162,7 @@ + diff --git a/sql/share/charsets/pclatin1.xml b/sql/share/charsets/pclatin1.xml index 742dcaec459..da4b6d2ac92 100644 --- a/sql/share/charsets/pclatin1.xml +++ b/sql/share/charsets/pclatin1.xml @@ -114,6 +114,8 @@ + + diff --git a/sql/share/charsets/swe7.xml b/sql/share/charsets/swe7.xml index ffa1d90608d..2768768cd9b 100644 --- a/sql/share/charsets/swe7.xml +++ b/sql/share/charsets/swe7.xml @@ -114,6 +114,8 @@ + + diff --git a/strings/ctype.c b/strings/ctype.c index 4f6d34ddd7a..04e4e75890b 100644 --- a/strings/ctype.c +++ b/strings/ctype.c @@ -201,6 +201,8 @@ static int cs_value(MY_XML_PARSER *st,const char *attr, uint len) case _CS_FLAG: if (!strncmp("primary",attr,len)) i->cs.state|= MY_CS_PRIMARY; + else if (!strncmp("binary",attr,len)) + i->cs.state|= MY_CS_BINSORT; break; case _CS_UPPERMAP: fill_uchar(i->to_upper,MY_CS_TO_UPPER_TABLE_SIZE,attr,len);