From: Date: February 11 2008 1:28pm Subject: bk commit into 5.1 tree (bar:1.2546) BUG#27877 List-Archive: http://lists.mysql.com/commits/42026 X-Bug: 27877 Message-Id: <200802111228.m1BCSbhY023000@bar.myoffice.izhnet.ru> Below is the list of changes that have just been committed into a local 5.1 repository of bar. When bar does a push these changes will be propagated to the main repository and, within 24 hours after the push, to the public repository. For information on how to access the public repository see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html ChangeSet@stripped, 2008-02-11 16:28:33+04:00, bar@stripped +10 -0 Bug#27877 incorrect german order in utf8_general_ci Problem: incorrect sort order for "U+00DF SHARP S". Fix: changing sort order for U+00DF to be equal to 's', like the manual says. mysql-test/include/ctype_german.inc@stripped, 2008-02-11 16:28:30+04:00, bar@stripped +40 -0 New BitKeeper file ``mysql-test/include/ctype_german.inc'' mysql-test/include/ctype_german.inc@stripped, 2008-02-11 16:28:30+04:00, bar@stripped +0 -0 mysql-test/r/ctype_latin1_de.result@stripped, 2008-02-11 16:28:30+04:00, bar@stripped +35 -0 Adding test mysql-test/r/ctype_uca.result@stripped, 2008-02-11 16:28:30+04:00, bar@stripped +35 -0 Adding test mysql-test/r/ctype_ucs.result@stripped, 2008-02-11 16:28:30+04:00, bar@stripped +35 -0 Adding test mysql-test/r/ctype_utf8.result@stripped, 2008-02-11 16:28:30+04:00, bar@stripped +35 -0 Adding test mysql-test/t/ctype_latin1_de.test@stripped, 2008-02-11 16:28:30+04:00, bar@stripped +1 -0 Adding test mysql-test/t/ctype_uca.test@stripped, 2008-02-11 16:28:30+04:00, bar@stripped +1 -0 Adding test mysql-test/t/ctype_ucs.test@stripped, 2008-02-11 16:28:30+04:00, bar@stripped +1 -0 Adding test mysql-test/t/ctype_utf8.test@stripped, 2008-02-11 16:28:30+04:00, bar@stripped +1 -0 Adding test strings/ctype-utf8.c@stripped, 2008-02-11 16:28:30+04:00, bar@stripped +1 -1 Changing weight for "U+00DF SHARP S" diff -Nrup a/mysql-test/include/ctype_german.inc b/mysql-test/include/ctype_german.inc --- /dev/null Wed Dec 31 16:00:00 196900 +++ b/mysql-test/include/ctype_german.inc 2008-02-11 16:28:30 +04:00 @@ -0,0 +1,40 @@ +# +# Bug #27877 incorrect german order in utf8_general_ci +# +# Testing if "SHARP S" is equal to "S", +# like in latin1_german1_ci, utf8_general_ci, ucs2_general_ci +# Or if "SHART S" is equal to "SS", +# like in latin1_german2_ci, utf8_unicode_ci, ucs2_unicode_ci +# +# Also testing A-uml, O-uml, U-uml +# + +--disable_warnings +drop table if exists t1; +--enable_warnings + +# +# Create a table with a varchar(x) column, +# using current values of +# @@character_set_connection and @@collation_connection. +# + +create table t1 as select repeat(' ', 64) as s1; +select collation(s1) from t1; +delete from t1; + +# +# Populate data +# + +insert into t1 values ('a'),('ae'),(_latin1 0xE4); +insert into t1 values ('o'),('oe'),(_latin1 0xF6); +insert into t1 values ('s'),('ss'),(_latin1 0xDF); +insert into t1 values ('u'),('ue'),(_latin1 0xFC); + +# +# Check order +# +select s1, hex(s1) from t1 order by s1, binary s1; +select group_concat(s1 order by binary s1) from t1 group by s1; +drop table t1; diff -Nrup a/mysql-test/r/ctype_latin1_de.result b/mysql-test/r/ctype_latin1_de.result --- a/mysql-test/r/ctype_latin1_de.result 2006-02-22 13:09:48 +04:00 +++ b/mysql-test/r/ctype_latin1_de.result 2008-02-11 16:28:30 +04:00 @@ -326,6 +326,41 @@ latin1_german2_ci 6109 latin1_german2_ci 61 latin1_german2_ci 6120 drop table t1; +drop table if exists t1; +create table t1 as select repeat(' ', 64) as s1; +select collation(s1) from t1; +collation(s1) +latin1_german2_ci +delete from t1; +insert into t1 values ('a'),('ae'),(_latin1 0xE4); +insert into t1 values ('o'),('oe'),(_latin1 0xF6); +insert into t1 values ('s'),('ss'),(_latin1 0xDF); +insert into t1 values ('u'),('ue'),(_latin1 0xFC); +select s1, hex(s1) from t1 order by s1, binary s1; +s1 hex(s1) +a 61 +ae 6165 +ä E4 +o 6F +oe 6F65 +ö F6 +s 73 +ss 7373 +ß DF +u 75 +ue 7565 +ü FC +select group_concat(s1 order by binary s1) from t1 group by s1; +group_concat(s1 order by binary s1) +a +ae,ä +o +oe,ö +s +ss,ß +u +ue,ü +drop table t1; SET NAMES latin1; CREATE TABLE t1 ( col1 varchar(255) NOT NULL default '' diff -Nrup a/mysql-test/r/ctype_uca.result b/mysql-test/r/ctype_uca.result --- a/mysql-test/r/ctype_uca.result 2007-11-29 23:18:51 +04:00 +++ b/mysql-test/r/ctype_uca.result 2008-02-11 16:28:30 +04:00 @@ -2647,6 +2647,41 @@ select c1 as c2h from t1 where c1 like ' c2h ab_def drop table t1; +drop table if exists t1; +create table t1 as select repeat(' ', 64) as s1; +select collation(s1) from t1; +collation(s1) +utf8_unicode_ci +delete from t1; +insert into t1 values ('a'),('ae'),(_latin1 0xE4); +insert into t1 values ('o'),('oe'),(_latin1 0xF6); +insert into t1 values ('s'),('ss'),(_latin1 0xDF); +insert into t1 values ('u'),('ue'),(_latin1 0xFC); +select s1, hex(s1) from t1 order by s1, binary s1; +s1 hex(s1) +a 61 +ä C3A4 +ae 6165 +o 6F +ö C3B6 +oe 6F65 +s 73 +ss 7373 +ß C39F +u 75 +ü C3BC +ue 7565 +select group_concat(s1 order by binary s1) from t1 group by s1; +group_concat(s1 order by binary s1) +a,ä +ae +o,ö +oe +s +ss,ß +u,ü +ue +drop table t1; CREATE TABLE t1 (id int, a varchar(30) character set utf8); INSERT INTO t1 VALUES (1, _ucs2 0x01310069), (2, _ucs2 0x01310131); INSERT INTO t1 VALUES (3, _ucs2 0x00690069), (4, _ucs2 0x01300049); diff -Nrup a/mysql-test/r/ctype_ucs.result b/mysql-test/r/ctype_ucs.result --- a/mysql-test/r/ctype_ucs.result 2008-01-23 20:48:42 +04:00 +++ b/mysql-test/r/ctype_ucs.result 2008-02-11 16:28:30 +04:00 @@ -613,6 +613,41 @@ select c1 as c2h from t1 where c1 like ' c2h ab_def drop table t1; +drop table if exists t1; +create table t1 as select repeat(' ', 64) as s1; +select collation(s1) from t1; +collation(s1) +ucs2_general_ci +delete from t1; +insert into t1 values ('a'),('ae'),(_latin1 0xE4); +insert into t1 values ('o'),('oe'),(_latin1 0xF6); +insert into t1 values ('s'),('ss'),(_latin1 0xDF); +insert into t1 values ('u'),('ue'),(_latin1 0xFC); +select s1, hex(s1) from t1 order by s1, binary s1; +s1 hex(s1) +a 0061 +ä 00E4 +ae 00610065 +o 006F +ö 00F6 +oe 006F0065 +s 0073 +ß 00DF +ss 00730073 +u 0075 +ü 00FC +ue 00750065 +select group_concat(s1 order by binary s1) from t1 group by s1; +group_concat(s1 order by binary s1) +a,ä +ae +o,ö +oe +s,ß +ss +u,ü +ue +drop table t1; SET NAMES latin1; SET collation_connection='ucs2_bin'; create table t1 select repeat('a',4000) a; diff -Nrup a/mysql-test/r/ctype_utf8.result b/mysql-test/r/ctype_utf8.result --- a/mysql-test/r/ctype_utf8.result 2007-11-06 16:03:53 +04:00 +++ b/mysql-test/r/ctype_utf8.result 2008-02-11 16:28:30 +04:00 @@ -939,6 +939,41 @@ select c1 as c2h from t1 where c1 like ' c2h ab_def drop table t1; +drop table if exists t1; +create table t1 as select repeat(' ', 64) as s1; +select collation(s1) from t1; +collation(s1) +utf8_general_ci +delete from t1; +insert into t1 values ('a'),('ae'),(_latin1 0xE4); +insert into t1 values ('o'),('oe'),(_latin1 0xF6); +insert into t1 values ('s'),('ss'),(_latin1 0xDF); +insert into t1 values ('u'),('ue'),(_latin1 0xFC); +select s1, hex(s1) from t1 order by s1, binary s1; +s1 hex(s1) +a 61 +ä C3A4 +ae 6165 +o 6F +ö C3B6 +oe 6F65 +s 73 +ß C39F +ss 7373 +u 75 +ü C3BC +ue 7565 +select group_concat(s1 order by binary s1) from t1 group by s1; +group_concat(s1 order by binary s1) +a,ä +ae +o,ö +oe +s,ß +ss +u,ü +ue +drop table t1; SET collation_connection='utf8_bin'; create table t1 select repeat('a',4000) a; delete from t1; diff -Nrup a/mysql-test/t/ctype_latin1_de.test b/mysql-test/t/ctype_latin1_de.test --- a/mysql-test/t/ctype_latin1_de.test 2005-09-16 00:17:37 +05:00 +++ b/mysql-test/t/ctype_latin1_de.test 2008-02-11 16:28:30 +04:00 @@ -116,6 +116,7 @@ SELECT FIELD('ue',s1), FIELD('Ü',s1), s1 DROP TABLE t1; -- source include/ctype_filesort.inc +-- source include/ctype_german.inc # # Bug#7878 with utf8_general_ci, equals (=) has problem with diff -Nrup a/mysql-test/t/ctype_uca.test b/mysql-test/t/ctype_uca.test --- a/mysql-test/t/ctype_uca.test 2007-11-27 22:30:49 +04:00 +++ b/mysql-test/t/ctype_uca.test 2008-02-11 16:28:30 +04:00 @@ -458,6 +458,7 @@ drop table t1; SET collation_connection='utf8_unicode_ci'; -- source include/ctype_filesort.inc -- source include/ctype_like_escape.inc +-- source include/ctype_german.inc # End of 4.1 tests diff -Nrup a/mysql-test/t/ctype_ucs.test b/mysql-test/t/ctype_ucs.test --- a/mysql-test/t/ctype_ucs.test 2008-01-23 20:48:42 +04:00 +++ b/mysql-test/t/ctype_ucs.test 2008-02-11 16:28:30 +04:00 @@ -373,6 +373,7 @@ drop table t1; SET collation_connection='ucs2_general_ci'; -- source include/ctype_filesort.inc -- source include/ctype_like_escape.inc +-- source include/ctype_german.inc SET NAMES latin1; SET collation_connection='ucs2_bin'; -- source include/ctype_filesort.inc diff -Nrup a/mysql-test/t/ctype_utf8.test b/mysql-test/t/ctype_utf8.test --- a/mysql-test/t/ctype_utf8.test 2007-11-06 16:03:54 +04:00 +++ b/mysql-test/t/ctype_utf8.test 2008-02-11 16:28:30 +04:00 @@ -721,6 +721,7 @@ select hex(soundex(_utf8 0xD091D092D093) SET collation_connection='utf8_general_ci'; -- source include/ctype_filesort.inc -- source include/ctype_like_escape.inc +-- source include/ctype_german.inc SET collation_connection='utf8_bin'; -- source include/ctype_filesort.inc -- source include/ctype_like_escape.inc diff -Nrup a/strings/ctype-utf8.c b/strings/ctype-utf8.c --- a/strings/ctype-utf8.c 2007-07-05 15:00:32 +05:00 +++ b/strings/ctype-utf8.c 2008-02-11 16:28:30 +04:00 @@ -155,7 +155,7 @@ static MY_UNICASE_INFO plane00[]={ {0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055}, {0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055}, {0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059}, - {0x00DE,0x00FE,0x00DE}, {0x00DF,0x00DF,0x00DF}, + {0x00DE,0x00FE,0x00DE}, {0x00DF,0x00DF,0x0053}, {0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041}, {0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041}, {0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},