From 883a56f2cb3d848db12d1be4141dcecc6183efd7 Mon Sep 17 00:00:00 2001 From: "bar@mysql.com/bar.myoffice.izhnet.ru" <> Date: Wed, 4 Jul 2007 12:04:57 +0500 Subject: [PATCH] Bug#29499 Converting 'del' from ascii to Unicode results in 'question mark' --- mysql-test/r/ctype_latin1.result | 4 ++++ mysql-test/r/ctype_ucs.result | 10 ++++++++++ mysql-test/t/ctype_latin1.test | 7 +++++++ mysql-test/t/ctype_ucs.test | 10 ++++++++++ sql/share/charsets/ascii.xml | 2 +- strings/ctype-extra.c | 4 ++-- 6 files changed, 34 insertions(+), 3 deletions(-) diff --git a/mysql-test/r/ctype_latin1.result b/mysql-test/r/ctype_latin1.result index f8e07e1eb6f..0c0b7f81b69 100644 --- a/mysql-test/r/ctype_latin1.result +++ b/mysql-test/r/ctype_latin1.result @@ -391,3 +391,7 @@ ABC SELECT convert(@str collate latin1_swedish_ci using utf8); convert(@str collate latin1_swedish_ci using utf8) ABC €°§ß²³µ~ äöüÄÖÜ áéíóú ÀÈÌÒÙ @ abc +select hex(cast(_ascii 0x7f as char(1) character set latin1)); +hex(cast(_ascii 0x7f as char(1) character set latin1)) +7F +End of 5.0 tests diff --git a/mysql-test/r/ctype_ucs.result b/mysql-test/r/ctype_ucs.result index 0183a0c5c4b..006f4193ca1 100644 --- a/mysql-test/r/ctype_ucs.result +++ b/mysql-test/r/ctype_ucs.result @@ -886,4 +886,14 @@ collation(group_concat(a separator ',')) latin1_swedish_ci drop table t1; set names latin1; +create table t1 (s1 char(1) character set ascii, s2 char(1) character set ucs2); +insert into t1 (s1) values (0x7f); +update t1 set s2 = s1; +select hex(s2) from t1; +hex(s2) +007F +select hex(convert(s1 using latin1)) from t1; +hex(convert(s1 using latin1)) +7F +drop table t1; End of 5.0 tests diff --git a/mysql-test/t/ctype_latin1.test b/mysql-test/t/ctype_latin1.test index dead9a7a0bc..5727603f1d3 100644 --- a/mysql-test/t/ctype_latin1.test +++ b/mysql-test/t/ctype_latin1.test @@ -110,3 +110,10 @@ SELECT convert(@str collate latin1_german2_ci using utf8); SELECT convert(@str collate latin1_swedish_ci using utf8); # End of 4.1 tests + +# +# Bug#29499 Converting 'del' from ascii to Unicode results in 'question mark' +# +select hex(cast(_ascii 0x7f as char(1) character set latin1)); + +--echo End of 5.0 tests diff --git a/mysql-test/t/ctype_ucs.test b/mysql-test/t/ctype_ucs.test index 8828cd10eec..18a18d6c632 100644 --- a/mysql-test/t/ctype_ucs.test +++ b/mysql-test/t/ctype_ucs.test @@ -612,4 +612,14 @@ select collation(group_concat(a separator ',')) from t1; drop table t1; set names latin1; +# +# Bug#29499 Converting 'del' from ascii to Unicode results in 'question mark' +# +create table t1 (s1 char(1) character set ascii, s2 char(1) character set ucs2); +insert into t1 (s1) values (0x7f); +update t1 set s2 = s1; +select hex(s2) from t1; +select hex(convert(s1 using latin1)) from t1; +drop table t1; + --echo End of 5.0 tests diff --git a/sql/share/charsets/ascii.xml b/sql/share/charsets/ascii.xml index 97006c53680..068fb84eeae 100644 --- a/sql/share/charsets/ascii.xml +++ b/sql/share/charsets/ascii.xml @@ -97,7 +97,7 @@ 0040 0041 0042 0043 0044 0045 0046 0047 0048 0049 004A 004B 004C 004D 004E 004F 0050 0051 0052 0053 0054 0055 0056 0057 0058 0059 005A 005B 005C 005D 005E 005F 0060 0061 0062 0063 0064 0065 0066 0067 0068 0069 006A 006B 006C 006D 006E 006F -0070 0071 0072 0073 0074 0075 0076 0077 0078 0079 007A 007B 007C 007D 007E 0000 +0070 0071 0072 0073 0074 0075 0076 0077 0078 0079 007A 007B 007C 007D 007E 007F 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 diff --git a/strings/ctype-extra.c b/strings/ctype-extra.c index 1c20828ea54..dbb53da5e17 100644 --- a/strings/ctype-extra.c +++ b/strings/ctype-extra.c @@ -922,7 +922,7 @@ uint16 to_uni_ascii_general_ci[] = { 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, -0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x0000, +0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, @@ -4603,7 +4603,7 @@ uint16 to_uni_ascii_bin[] = { 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, -0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x0000, +0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,