From 0221888e39a4cd63b81ee51bc55494e14ba80f7b Mon Sep 17 00:00:00 2001 From: "cmiller@zippy.cornsilk.net" <> Date: Tue, 7 Aug 2007 05:35:20 -0400 Subject: [PATCH] Bug#27562: ascii.xml invalid? Two character mappings were way off (backtick and tilde were "E" and "Y"!), and three others were slightly rotated. The first would cause collisions, and the latter was probably benign. Now, assign the character mappings exactly to their normal values. --- mysql-test/r/ctype_ascii.result | 177 ++++++++++++++++++++++++++++++++ mysql-test/t/ctype_ascii.test | 13 +++ sql/share/charsets/ascii.xml | 6 +- strings/ctype-extra.c | 6 +- 4 files changed, 196 insertions(+), 6 deletions(-) create mode 100644 mysql-test/r/ctype_ascii.result create mode 100644 mysql-test/t/ctype_ascii.test diff --git a/mysql-test/r/ctype_ascii.result b/mysql-test/r/ctype_ascii.result new file mode 100644 index 00000000000..06362486073 --- /dev/null +++ b/mysql-test/r/ctype_ascii.result @@ -0,0 +1,177 @@ +set names ascii; +select 'e'='`'; +'e'='`' +0 +select 'y'='~'; +'y'='~' +0 +create table t1 (a char(1) character set ascii); +insert into t1 (a) values (' '), ('a'), ('b'), ('c'), ('d'), ('e'), ('f'), ('g'), ('h'), ('i'), ('j'), ('k'), ('l'), ('m'), ('n'), ('o'), ('p'), ('q'), ('r'), ('s'), ('t'), ('u'), ('v'), ('w'), ('x'), ('y'), ('z'), ('A'), ('B'), ('C'), ('D'), ('E'), ('F'), ('G'), ('H'), ('I'), ('J'), ('K'), ('L'), ('M'), ('N'), ('O'), ('P'), ('Q'), ('R'), ('S'), ('T'), ('U'), ('V'), ('W'), ('X'), ('Y'), ('Z'), ('!'), ('@'), ('#'), ('$'), ('%'), ('^'), ('&'), ('*'), ('('), (')'), ('_'), ('+'), ('`'), ('~'), ('1'), ('2'), ('3'), ('4'), ('5'), ('6'), ('7'), ('8'), ('9'), ('0'), ('['), (']'), ('\\'), ('|'), ('}'), ('{'), ('"'), (':'), (''''), (';'), ('/'), ('.'), (','), ('?'), ('>'), ('<'), ('\n'), ('\t'), ('\a'), ('\f'), ('\v'); +select t1a.a, t1b.a from t1 as t1a, t1 as t1b where t1a.a=t1b.a order by binary t1a.a, binary t1b.a; +a a + + + + + +! ! +" " +# # +$ $ +% % +& & +' ' +( ( +) ) +* * ++ + +, , +. . +/ / +0 0 +1 1 +2 2 +3 3 +4 4 +5 5 +6 6 +7 7 +8 8 +9 9 +: : +; ; +< < +> > +? ? +@ @ +A A +A a +A a +B B +B b +C C +C c +D D +D d +E E +E e +F F +F f +F f +G G +G g +H H +H h +I I +I i +J J +J j +K K +K k +L L +L l +M M +M m +N N +N n +O O +O o +P P +P p +Q Q +Q q +R R +R r +S S +S s +T T +T t +U U +U u +V V +V v +V v +W W +W w +X X +X x +Y Y +Y y +Z Z +Z z +[ [ +\ \ +] ] +^ ^ +_ _ +` ` +a A +a A +a a +a a +a a +a a +b B +b b +c C +c c +d D +d d +e E +e e +f F +f F +f f +f f +f f +f f +g G +g g +h H +h h +i I +i i +j J +j j +k K +k k +l L +l l +m M +m m +n N +n n +o O +o o +p P +p p +q Q +q q +r R +r r +s S +s s +t T +t t +u U +u u +v V +v V +v v +v v +v v +v v +w W +w w +x X +x x +y Y +y y +z Z +z z +{ { +| | +} } +~ ~ +drop table t1; +End of 5.0 tests. diff --git a/mysql-test/t/ctype_ascii.test b/mysql-test/t/ctype_ascii.test new file mode 100644 index 00000000000..2a5118c7d34 --- /dev/null +++ b/mysql-test/t/ctype_ascii.test @@ -0,0 +1,13 @@ +# +# Bug #27562: ascii.xml invalid? +# +set names ascii; +select 'e'='`'; +select 'y'='~'; +create table t1 (a char(1) character set ascii); +insert into t1 (a) values (' '), ('a'), ('b'), ('c'), ('d'), ('e'), ('f'), ('g'), ('h'), ('i'), ('j'), ('k'), ('l'), ('m'), ('n'), ('o'), ('p'), ('q'), ('r'), ('s'), ('t'), ('u'), ('v'), ('w'), ('x'), ('y'), ('z'), ('A'), ('B'), ('C'), ('D'), ('E'), ('F'), ('G'), ('H'), ('I'), ('J'), ('K'), ('L'), ('M'), ('N'), ('O'), ('P'), ('Q'), ('R'), ('S'), ('T'), ('U'), ('V'), ('W'), ('X'), ('Y'), ('Z'), ('!'), ('@'), ('#'), ('$'), ('%'), ('^'), ('&'), ('*'), ('('), (')'), ('_'), ('+'), ('`'), ('~'), ('1'), ('2'), ('3'), ('4'), ('5'), ('6'), ('7'), ('8'), ('9'), ('0'), ('['), (']'), ('\\'), ('|'), ('}'), ('{'), ('"'), (':'), (''''), (';'), ('/'), ('.'), (','), ('?'), ('>'), ('<'), ('\n'), ('\t'), ('\a'), ('\f'), ('\v'); +select t1a.a, t1b.a from t1 as t1a, t1 as t1b where t1a.a=t1b.a order by binary t1a.a, binary t1b.a; +drop table t1; + +# +--echo End of 5.0 tests. diff --git a/sql/share/charsets/ascii.xml b/sql/share/charsets/ascii.xml index 068fb84eeae..f4fb79ac632 100644 --- a/sql/share/charsets/ascii.xml +++ b/sql/share/charsets/ascii.xml @@ -117,9 +117,9 @@ 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 5C 5D 5B 5E 5F - 45 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 7B 7C 7D 59 7F + 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F + 60 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 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 diff --git a/strings/ctype-extra.c b/strings/ctype-extra.c index bf45b5b5d75..384db5afa71 100644 --- a/strings/ctype-extra.c +++ b/strings/ctype-extra.c @@ -894,9 +894,9 @@ uchar sort_order_ascii_general_ci[] = { 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, -0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5C,0x5D,0x5B,0x5E,0x5F, -0x45,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, -0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x7B,0x7C,0x7D,0x59,0x7F, +0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, +0x60,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, +0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x7B,0x7C,0x7D,0x7E,0x7F, 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, 0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,