List:Commits« Previous MessageNext Message »
From:Sergey Glukhov Date:March 19 2009 9:28am
Subject:bzr push into mysql-5.1-bugteam branch (Sergey.Glukhov:2812 to 2813)
View as plain text  
 2813 Sergey Glukhov	2009-03-19 [merge]
      5.0-bugteam->5.1-bugteam merge
     @ client/mysql.cc
        5.0-bugteam->5.1-bugteam merge
     @ mysql-test/r/ctype_collate.result
        5.0-bugteam->5.1-bugteam merge
     @ mysql-test/t/ctype_collate.test
        5.0-bugteam->5.1-bugteam merge
     @ sql/item.cc
        5.0-bugteam->5.1-bugteam merge

    modified:
      client/mysql.cc
      mysql-test/r/ctype_collate.result
      mysql-test/t/ctype_collate.test
      sql/item.cc
 2812 Satya B	2009-03-19 [merge]
      Merge 5.0-bugteam to 5.1-bugteam

    modified:
      client/mysqldump.c
      mysql-test/suite/federated/federated.result
      mysql-test/suite/federated/federated.test
=== modified file 'client/mysql.cc'
--- a/client/mysql.cc	2009-03-18 08:27:49 +0000
+++ b/client/mysql.cc	2009-03-19 09:26:12 +0000
@@ -1200,7 +1200,7 @@ int main(int argc,char *argv[])
 #endif
   sprintf(buff, "%s",
 #ifndef NOT_YET
-	  "Type 'help;' or '\\h' for help. Type '\\c' to clear the buffer.\n");
+	  "Type 'help;' or '\\h' for help. Type '\\c' to clear the current input statement.\n");
 #else
 	  "Type 'help [[%]function name[%]]' to get help on usage of function.\n");
 #endif

=== modified file 'mysql-test/r/ctype_collate.result'
--- a/mysql-test/r/ctype_collate.result	2008-02-12 19:09:16 +0000
+++ b/mysql-test/r/ctype_collate.result	2009-03-19 09:26:12 +0000
@@ -611,3 +611,22 @@ check table t1 extended;
 Table	Op	Msg_type	Msg_text
 test.t1	check	status	OK
 drop table t1;
+select least(_latin1'a',_latin2'b',_latin5'c' collate latin5_turkish_ci);
+least(_latin1'a',_latin2'b',_latin5'c' collate latin5_turkish_ci)
+a
+create table t1
+select least(_latin1'a',_latin2'b',_latin5'c' collate latin5_turkish_ci) as f1;
+show create table t1;
+Table	Create Table
+t1	CREATE TABLE `t1` (
+  `f1` varchar(1) CHARACTER SET latin5 NOT NULL DEFAULT ''
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+drop table t1;
+select case _latin1'a' when _latin2'b' then 1 when _latin5'c' collate
+latin5_turkish_ci then 2 else 3 end;
+case _latin1'a' when _latin2'b' then 1 when _latin5'c' collate
+latin5_turkish_ci then 2 else 3 end
+3
+select concat(_latin1'a',_latin2'b',_latin5'c' collate latin5_turkish_ci);
+concat(_latin1'a',_latin2'b',_latin5'c' collate latin5_turkish_ci)
+abc

=== modified file 'mysql-test/t/ctype_collate.test'
--- a/mysql-test/t/ctype_collate.test	2007-07-08 21:23:33 +0000
+++ b/mysql-test/t/ctype_collate.test	2009-03-19 08:20:28 +0000
@@ -229,3 +229,17 @@ insert into t1 set a=0x6c;
 insert into t1 set a=0x4c98;
 check table t1 extended;
 drop table t1;
+
+#
+# Bug#41627 Illegal mix of collations in LEAST / GREATEST / CASE
+#
+select least(_latin1'a',_latin2'b',_latin5'c' collate latin5_turkish_ci);
+create table t1
+select least(_latin1'a',_latin2'b',_latin5'c' collate latin5_turkish_ci) as f1;
+show create table t1;
+drop table t1;
+
+select case _latin1'a' when _latin2'b' then 1 when _latin5'c' collate
+latin5_turkish_ci then 2 else 3 end;
+
+select concat(_latin1'a',_latin2'b',_latin5'c' collate latin5_turkish_ci);

=== modified file 'sql/item.cc'
--- a/sql/item.cc	2009-02-20 09:50:50 +0000
+++ b/sql/item.cc	2009-03-19 09:26:12 +0000
@@ -1531,7 +1531,8 @@ bool DTCollation::aggregate(DTCollation 
     else
     {
       // Cannot apply conversion
-      set(0, DERIVATION_NONE, 0);
+      set(&my_charset_bin, DERIVATION_NONE,
+          (dt.repertoire|repertoire));
       return 1;
     }
   }
@@ -1614,15 +1615,31 @@ bool agg_item_collations(DTCollation &c,
 {
   uint i;
   Item **arg;
+  bool unknown_cs= 0;
+
   c.set(av[0]->collation);
   for (i= 1, arg= &av[item_sep]; i < count; i++, arg++)
   {
     if (c.aggregate((*arg)->collation, flags))
     {
+      if (c.derivation == DERIVATION_NONE &&
+          c.collation == &my_charset_bin)
+      {
+        unknown_cs= 1;
+        continue;
+      }
       my_coll_agg_error(av, count, fname, item_sep);
       return TRUE;
     }
   }
+
+  if (unknown_cs &&
+      c.derivation != DERIVATION_EXPLICIT)
+  {
+    my_coll_agg_error(av, count, fname, item_sep);
+    return TRUE;
+  }
+
   if ((flags & MY_COLL_DISALLOW_NONE) &&
       c.derivation == DERIVATION_NONE)
   {


Attachment: [text/bzr-bundle] bzr/sergey.glukhov@sun.com-20090319092612-yi8naqj8ap7axo61.bundle
Thread
bzr push into mysql-5.1-bugteam branch (Sergey.Glukhov:2812 to 2813)Sergey Glukhov19 Mar