From: Alexander Barkov Date: January 14 2011 4:56pm Subject: bzr commit into mysql-5.1 branch (alexander.barkov:3553) Bug#58371 List-Archive: http://lists.mysql.com/commits/128826 X-Bug: 58371 Message-Id: <201101141656.p0EGuuXa015559@bar.myoffice.izhnet.ru> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============8870484920616599946==" --===============8870484920616599946== 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.1.b58371/ based on revid:nirbhay.choubey@stripped 3553 Alexander Barkov 2011-01-14 Bug#58371 Assertion failed: !s.uses_buffer_owned_by(this) with format string function Introduced by the fix for bug#44766. Problem: it's not correct to use args[0]->str_value as a buffer, because args[0] may need this buffer for its own purposes. Fix: adding a new class member tmp_value to use as return value. @ mysql-test/r/ctype_many.result @ mysql-test/t/ctype_many.test Adding tests @ sql/item_strfunc.cc Changing code into traditional style: use "str" as a buffer for the argument and tmp_value for the result value. @ sql/item_strfunc.h Adding tmp_value modified: mysql-test/r/ctype_many.result mysql-test/t/ctype_many.test sql/item_strfunc.cc sql/item_strfunc.h === modified file 'mysql-test/r/ctype_many.result' --- a/mysql-test/r/ctype_many.result 2006-02-22 09:09:59 +0000 +++ b/mysql-test/r/ctype_many.result 2011-01-14 16:53:24 +0000 @@ -1683,3 +1683,15 @@ ARMENIAN CAPIT DA 2 ARMENIAN CAPIT ECH 2 ARMENIAN CAPIT ZA 2 DROP TABLE t1; +# +# Start of 5.1 tests +# +SET NAMES latin1; +DO CONVERT(CAST(SUBSTRING_INDEX(FORMAT(1,'1111'), FORMAT('','Zpq'),1) +AS BINARY(0)) USING utf8); +Warnings: +Warning 1292 Truncated incorrect INTEGER value: 'Zpq' +Warning 1292 Truncated incorrect BINARY(0) value: '1.' +# +# End of 5.1 tests +# === modified file 'mysql-test/t/ctype_many.test' --- a/mysql-test/t/ctype_many.test 2005-10-13 14:16:19 +0000 +++ b/mysql-test/t/ctype_many.test 2011-01-14 16:53:24 +0000 @@ -211,3 +211,14 @@ SELECT min(comment),count(*) FROM t1 GRO DROP TABLE t1; # End of 4.1 tests + + +--echo # +--echo # Start of 5.1 tests +--echo # +SET NAMES latin1; +DO CONVERT(CAST(SUBSTRING_INDEX(FORMAT(1,'1111'), FORMAT('','Zpq'),1) + AS BINARY(0)) USING utf8); +--echo # +--echo # End of 5.1 tests +--echo # === modified file 'sql/item_strfunc.cc' --- a/sql/item_strfunc.cc 2011-01-13 07:57:15 +0000 +++ b/sql/item_strfunc.cc 2011-01-14 16:53:24 +0000 @@ -2761,22 +2761,16 @@ String *Item_func_conv_charset::val_str( DBUG_ASSERT(fixed == 1); if (use_cached_value) return null_value ? 0 : &str_value; - /* - Here we don't pass 'str' as a parameter to args[0]->val_str() - as 'str' may point to 'str_value' (e.g. see Item::save_in_field()), - which we use below to convert string. - Use argument's 'str_value' instead. - */ - String *arg= args[0]->val_str(&args[0]->str_value); + String *arg= args[0]->val_str(str); uint dummy_errors; if (!arg) { null_value=1; return 0; } - null_value= str_value.copy(arg->ptr(),arg->length(),arg->charset(), + null_value= tmp_value.copy(arg->ptr(), arg->length(), arg->charset(), conv_charset, &dummy_errors); - return null_value ? 0 : check_well_formed_result(&str_value); + return null_value ? 0 : check_well_formed_result(&tmp_value); } void Item_func_conv_charset::fix_length_and_dec() === modified file 'sql/item_strfunc.h' --- a/sql/item_strfunc.h 2011-01-13 07:57:15 +0000 +++ b/sql/item_strfunc.h 2011-01-14 16:53:24 +0000 @@ -713,6 +713,7 @@ public: class Item_func_conv_charset :public Item_str_func { bool use_cached_value; + String tmp_value; public: bool safe; CHARSET_INFO *conv_charset; // keep it public --===============8870484920616599946== 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\ # hov73gfzjmzlj51h # target_branch: file:///home/bar/mysql-bzr/mysql-5.1.b58371/ # testament_sha1: eeed9b9f435cdf1427f4001db205b7a3e139795d # timestamp: 2011-01-14 19:56:56 +0300 # base_revision_id: nirbhay.choubey@stripped\ # 6xi85qdu54cysf7q # # Begin bundle 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 --===============8870484920616599946==--