List:Commits« Previous MessageNext Message »
From:Alexander Barkov Date:December 9 2008 8:43am
Subject:bzr push into mysql-6.0-bugteam branch (bar:2782 to 2783) WL#4164
View as plain text  
 2783 Alexander Barkov	2008-12-09
      Postfix for WL#4164 Two-byte collation IDs
      
      Problem:
      Collation ID=2047 didn't work because of a wrong condition in some loops.
      (Only collation ID=2046 worked).
      Fix:
      Changing the loops to work with ID=2047.
modified:
  mysql-test/r/ctype_ldml.result
  mysql-test/t/ctype_ldml.test
  mysys/charset.c

 2782 Andrei Elkin	2008-12-08 [merge]
      merge 5.1-bt with Bug #33420 fixes to 6.0-bt.
modified:
  mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result

=== modified file 'mysql-test/r/ctype_ldml.result'
--- a/mysql-test/r/ctype_ldml.result	2008-10-31 12:25:42 +0000
+++ b/mysql-test/r/ctype_ldml.result	2008-12-09 08:41:43 +0000
@@ -373,3 +373,10 @@ def	test	t1	t1	c1	c1	254	2	2	Y	0	0	359
 c1
 
 drop table t1;
+CREATE TABLE t1 (s1 char(10) character set utf8 collate utf8_maxuserid_ci);
+INSERT INTO t1 VALUES ('a'),('b');
+SELECT * FROM t1 WHERE s1='a' ORDER BY BINARY s1;
+s1
+a
+b
+DROP TABLE t1;

=== modified file 'mysql-test/t/ctype_ldml.test'
--- a/mysql-test/t/ctype_ldml.test	2008-10-31 12:25:42 +0000
+++ b/mysql-test/t/ctype_ldml.test	2008-12-09 08:41:43 +0000
@@ -111,3 +111,11 @@ set @@character_set_results=NULL;
 select * from t1;
 --disable_metadata
 drop table t1;
+
+#
+# Check maximum collation ID (2047 as of MySQL-6.0.9)
+#
+CREATE TABLE t1 (s1 char(10) character set utf8 collate utf8_maxuserid_ci);
+INSERT INTO t1 VALUES ('a'),('b');
+SELECT * FROM t1 WHERE s1='a' ORDER BY BINARY s1;
+DROP TABLE t1;

=== modified file 'mysys/charset.c'
--- a/mysys/charset.c	2008-07-24 11:33:35 +0000
+++ b/mysys/charset.c	2008-12-09 08:41:43 +0000
@@ -42,7 +42,7 @@ get_collation_number_internal(const char
 {
   CHARSET_INFO **cs;
   for (cs= all_charsets;
-       cs < all_charsets+array_elements(all_charsets)-1 ;
+       cs < all_charsets + array_elements(all_charsets);
        cs++)
   {
     if ( cs[0] && cs[0]->name && 
@@ -452,7 +452,7 @@ static my_bool init_available_charsets(m
       
       /* Copy compiled charsets */
       for (cs=all_charsets;
-           cs < all_charsets+array_elements(all_charsets)-1 ;
+           cs < all_charsets + array_elements(all_charsets);
            cs++)
       {
         if (*cs)
@@ -492,7 +492,7 @@ uint get_charset_number(const char *char
   init_available_charsets(MYF(0));
   
   for (cs= all_charsets;
-       cs < all_charsets+array_elements(all_charsets)-1 ;
+       cs < all_charsets + array_elements(all_charsets);
        cs++)
   {
     if ( cs[0] && cs[0]->csname && (cs[0]->state & cs_flags) &&
@@ -555,7 +555,7 @@ CHARSET_INFO *get_charset(uint cs_number
 
   (void) init_available_charsets(MYF(0));	/* If it isn't initialized */
   
-  if (!cs_number || cs_number >= array_elements(all_charsets)-1)
+  if (!cs_number || cs_number > array_elements(all_charsets))
     return NULL;
   
   cs=get_internal_charset(cs_number, flags);

Thread
bzr push into mysql-6.0-bugteam branch (bar:2782 to 2783) WL#4164Alexander Barkov9 Dec