From: Tor Didriksen Date: November 17 2010 4:08pm Subject: bzr push into mysql-trunk branch (tor.didriksen:3347 to 3348) List-Archive: http://lists.mysql.com/commits/124175 Message-Id: <20101117160805.E385537A1@atum07.norway.sun.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 3348 Tor Didriksen 2010-11-17 [merge] Automerge 5.5-bugteam => trunk-bugfixing modified: mysql-test/r/func_math.result mysql-test/t/func_math.test sql/field.cc 3347 Davi Arnaut 2010-11-17 [merge] Merge of mysql-5.5-bugteam into mysql-trunk-bugfixing. modified: include/m_string.h === modified file 'mysql-test/r/func_math.result' --- a/mysql-test/r/func_math.result 2010-10-08 09:52:09 +0000 +++ b/mysql-test/r/func_math.result 2010-11-17 15:39:35 +0000 @@ -607,3 +607,12 @@ SELECT floor(log10(format(concat_ws(5445 as foo; foo 2 +# +# Bug #58137 char(0) column cause: +# my_gcvt: Assertion `width > 0 && to != ((void *)0)' failed +# +CREATE TABLE t1(a char(0)); +INSERT INTO t1 (SELECT -pi()); +Warnings: +Warning 1265 Data truncated for column 'a' at row 1 +DROP TABLE t1; === modified file 'mysql-test/t/func_math.test' --- a/mysql-test/t/func_math.test 2010-10-08 09:52:09 +0000 +++ b/mysql-test/t/func_math.test 2010-11-17 15:39:35 +0000 @@ -464,3 +464,11 @@ SELECT -9223372036854775808 MOD -1; --echo # SELECT floor(log10(format(concat_ws(5445796E25, 5306463, 30837), -358821))) as foo; + +--echo # +--echo # Bug #58137 char(0) column cause: +--echo # my_gcvt: Assertion `width > 0 && to != ((void *)0)' failed +--echo # +CREATE TABLE t1(a char(0)); +INSERT INTO t1 (SELECT -pi()); +DROP TABLE t1; === modified file 'sql/field.cc' --- a/sql/field.cc 2010-10-29 13:00:26 +0000 +++ b/sql/field.cc 2010-11-17 16:04:35 +0000 @@ -6346,10 +6346,13 @@ int Field_str::store(double nr) ASSERT_COLUMN_MARKED_FOR_WRITE; char buff[DOUBLE_TO_STRING_CONVERSION_BUFFER_SIZE]; uint local_char_length= field_length / charset()->mbmaxlen; - size_t length; - my_bool error; + size_t length= 0; + my_bool error= (local_char_length == 0); + + // my_gcvt() requires width > 0, and we may have a CHAR(0) column. + if (!error) + length= my_gcvt(nr, MY_GCVT_ARG_DOUBLE, local_char_length, buff, &error); - length= my_gcvt(nr, MY_GCVT_ARG_DOUBLE, local_char_length, buff, &error); if (error) { if (table->in_use->abort_on_warning) No bundle (reason: useless for push emails).