From: Jorgen Loland Date: November 4 2010 8:36am Subject: bzr commit into mysql-5.5-bugteam branch (jorgen.loland:3123) Bug#57882 List-Archive: http://lists.mysql.com/commits/122796 X-Bug: 57882 Message-Id: <20101104083611.2C83418DF@atum21.norway.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1399178369899879945==" --===============1399178369899879945== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///export/home/jl208045/mysql/mysql-5.5-bugteam/ based on revid:zhenxing.he@stripped 3123 Jorgen Loland 2010-11-04 Bug#57882 - Item_func_conv_charset::val_str(String*): Assertion `fixed == 1' failed (also fixes duplicate bug 57515) agg_item_set_converter() (item.cc) handles conversion of character sets by creating a new Item. fix_fields() is then called on this newly created item. Prior to this patch, it was not checked whether fix_fields() was successful or not. Thus, agg_item_set_converter() would return success even when an error occured. This patch makes it return error (TRUE) if fix_fields() fails. @ mysql-test/r/errors.result Add test for BUG#57882 @ mysql-test/t/errors.test Add test for BUG#57882 @ sql/item.cc Make agg_item_set_converter() return with error if fix_fields() on the newly created converted item fails. modified: mysql-test/r/errors.result mysql-test/t/errors.test sql/item.cc === modified file 'mysql-test/r/errors.result' --- a/mysql-test/r/errors.result 2010-05-27 16:01:43 +0000 +++ b/mysql-test/r/errors.result 2010-11-04 08:36:04 +0000 @@ -134,3 +134,15 @@ INSERT INTO t1 VALUES ('abc\0\0'); INSERT INTO t1 VALUES ('abc\0\0'); ERROR 23000: Duplicate entry 'abc\x00\x00' for key 'PRIMARY' DROP TABLE t1; +# +# Bug#57882: Item_func_conv_charset::val_str(String*): +# Assertion `fixed == 1' failed +# +SELECT (CONVERT('0' USING latin1) IN (CHAR(COT('v') USING utf8),'')); +ERROR 22003: DOUBLE value is out of range in 'cot('v')' +SET NAMES utf8 COLLATE utf8_latvian_ci ; +SELECT UPDATEXML(-73 * -2465717823867977728,@@global.slave_net_timeout,null); +ERROR 22003: BIGINT value is out of range in '(-(73) * -(2465717823867977728))' +# +# End Bug#57882 +# === modified file 'mysql-test/t/errors.test' --- a/mysql-test/t/errors.test 2010-05-27 16:01:43 +0000 +++ b/mysql-test/t/errors.test 2010-11-04 08:36:04 +0000 @@ -155,3 +155,19 @@ INSERT INTO t1 VALUES ('abc\0\0'); --error ER_DUP_ENTRY INSERT INTO t1 VALUES ('abc\0\0'); DROP TABLE t1; + +--echo # +--echo # Bug#57882: Item_func_conv_charset::val_str(String*): +--echo # Assertion `fixed == 1' failed +--echo # + +--error ER_DATA_OUT_OF_RANGE +SELECT (CONVERT('0' USING latin1) IN (CHAR(COT('v') USING utf8),'')); + +SET NAMES utf8 COLLATE utf8_latvian_ci ; +--error ER_DATA_OUT_OF_RANGE +SELECT UPDATEXML(-73 * -2465717823867977728,@@global.slave_net_timeout,null); + +--echo # +--echo # End Bug#57882 +--echo # === modified file 'sql/item.cc' --- a/sql/item.cc 2010-10-08 14:06:31 +0000 +++ b/sql/item.cc 2010-11-04 08:36:04 +0000 @@ -1853,11 +1853,12 @@ bool agg_item_set_converter(DTCollation *arg= conv; else thd->change_item_tree(arg, conv); - /* - We do not check conv->fixed, because Item_func_conv_charset which can - be return by safe_charset_converter can't be fixed at creation - */ - conv->fix_fields(thd, arg); + + if (conv->fix_fields(thd, arg)) + { + res= TRUE; + break; // we cannot return here, we need to restore "arena". + } } if (arena) thd->restore_active_arena(arena, &backup); --===============1399178369899879945== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/jorgen.loland@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: jorgen.loland@stripped\ # fjk8sn2fzbisjkg4 # target_branch: file:///export/home/jl208045/mysql/mysql-5.5-bugteam/ # testament_sha1: 22460eb651f0da6b9629e35863e9d019ccd9da7d # timestamp: 2010-11-04 09:36:11 +0100 # base_revision_id: zhenxing.he@stripped\ # p4o89gq34wcnvaj2 # # Begin bundle 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 46HA --===============1399178369899879945==--