From: Alexander Barkov Date: February 11 2011 8:57am Subject: bzr commit into mysql-5.5 branch (alexander.barkov:3323) List-Archive: http://lists.mysql.com/commits/131104 Message-Id: <201102110857.p1B8vCUN026199@bar.myoffice.izhnet.ru> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============5607043084452993343==" --===============5607043084452993343== 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:alexander.barkov@stripped 3323 Alexander Barkov 2011-02-11 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-10 08:18:08 +0000 +++ b/mysql-test/r/ctype_cp1251.result 2011-02-11 08:52:55 +0000 @@ -3217,5 +3217,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 2010-11-26 14:22:06 +0000 +++ b/mysql-test/t/ctype_cp1251.test 2011-02-11 08:52:55 +0000 @@ -76,5 +76,15 @@ DROP TABLE t1; --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-11 08:52:55 +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; --===============5607043084452993343== 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\ # cpdnfe1nrk30ga1g # target_branch: file:///home/bar/mysql-bzr/mysql-5.5.b60101/ # testament_sha1: a362b70e6535d226fd37088bd92c45bf7512dbb7 # timestamp: 2011-02-11 11:57:11 +0300 # base_revision_id: alexander.barkov@stripped\ # 9sxqewix0fg8c50j # # Begin bundle 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 --===============5607043084452993343==--