From: Alexander Barkov Date: February 18 2011 7:35am Subject: bzr commit into mysql-5.5 branch (alexander.barkov:3341) Bug#60101 List-Archive: http://lists.mysql.com/commits/131595 X-Bug: 60101 Message-Id: <201102180735.p1I7ZxUa025579@bar.myoffice.izhnet.ru> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1467933372551267483==" --===============1467933372551267483== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///home/bar/mysql-bzr/mysql-5.5.b60101/ based on revid:vasil.dimov@stripped 3341 Alexander Barkov 2011-02-18 Bug#60101 COALESCE with cp1251 tables causes [Err] 1267 - Illegal mix of collations Problem: IF() did not copy collation derivation and repertoire from an argument if the opposite argument was NULL: IF(cond, res1, NULL) IF(cond, NULL, res2) only CHARSET_INFO pointer was copied. This resulted in illegal mix of collations error. Fix: copy all collation parameters from the non-NULL argument: CHARSET_INFO pointer, derivation, repertoire. modified: mysql-test/r/ctype_cp1251.result mysql-test/t/ctype_cp1251.test sql/item_cmpfunc.cc === modified file 'mysql-test/r/ctype_cp1251.result' --- a/mysql-test/r/ctype_cp1251.result 2011-02-17 11:53:09 +0000 +++ b/mysql-test/r/ctype_cp1251.result 2011-02-18 07:32:40 +0000 @@ -3219,5 +3219,20 @@ maketime(`a`,`a`,`a`) DROP TABLE t1; SET sql_mode=default; # +# Bug#60101 COALESCE with cp1251 tables causes [Err] 1267 - Illegal mix of collations +# +CREATE TABLE t1 (test1 INT, test2 VARCHAR(255)); +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `test1` int(11) DEFAULT NULL, + `test2` varchar(255) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +SELECT COALESCE(IF(test1=1, 1, NULL), test2) FROM t1; +COALESCE(IF(test1=1, 1, NULL), test2) +SELECT COALESCE(IF(test1=1, NULL, 1), test2) FROM t1; +COALESCE(IF(test1=1, NULL, 1), test2) +DROP TABLE t1; +# # End of 5.5 tests # === modified file 'mysql-test/t/ctype_cp1251.test' --- a/mysql-test/t/ctype_cp1251.test 2011-02-17 11:53:09 +0000 +++ b/mysql-test/t/ctype_cp1251.test 2011-02-18 07:32:40 +0000 @@ -86,5 +86,15 @@ set global LC_TIME_NAMES=convert((-83886 --source include/ctype_numconv.inc --echo # +--echo # Bug#60101 COALESCE with cp1251 tables causes [Err] 1267 - Illegal mix of collations +--echo # +CREATE TABLE t1 (test1 INT, test2 VARCHAR(255)); +SHOW CREATE TABLE t1; +SELECT COALESCE(IF(test1=1, 1, NULL), test2) FROM t1; +SELECT COALESCE(IF(test1=1, NULL, 1), test2) FROM t1; +DROP TABLE t1; + + +--echo # --echo # End of 5.5 tests --echo # === modified file 'sql/item_cmpfunc.cc' --- a/sql/item_cmpfunc.cc 2011-02-08 15:47:33 +0000 +++ b/sql/item_cmpfunc.cc 2011-02-18 07:32:40 +0000 @@ -2640,7 +2640,7 @@ Item_func_if::fix_length_and_dec() if (null1) { cached_result_type= arg2_type; - collation.set(args[2]->collation.collation); + collation.set(args[2]->collation); cached_field_type= args[2]->field_type(); max_length= args[2]->max_length; return; @@ -2649,7 +2649,7 @@ Item_func_if::fix_length_and_dec() if (null2) { cached_result_type= arg1_type; - collation.set(args[1]->collation.collation); + collation.set(args[1]->collation); cached_field_type= args[1]->field_type(); max_length= args[1]->max_length; return; --===============1467933372551267483== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/alexander.barkov@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: alexander.barkov@stripped\ # hps44dr6vax2rb10 # target_branch: file:///home/bar/mysql-bzr/mysql-5.5.b60101/ # testament_sha1: a3f213fd8d732e8a678a027299edf741f38df9a0 # timestamp: 2011-02-18 10:35:59 +0300 # base_revision_id: vasil.dimov@stripped\ # 8412lf7u2lk05iwh # # Begin bundle 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 --===============1467933372551267483==--