List:Commits« Previous MessageNext Message »
From:Tor Didriksen Date:November 17 2010 4:08pm
Subject:bzr push into mysql-5.5-bugteam branch (tor.didriksen:3127 to 3128) Bug#58137
View as plain text  
 3128 Tor Didriksen	2010-11-17
      Bug #58137 char(0) column cause: my_gcvt: Assertion `width > 0 && to != ((void *)0)' failed
     @ mysql-test/r/func_math.result
        Add test for Bug #58137
     @ mysql-test/t/func_math.test
        Add test for Bug #58137
     @ sql/field.cc
        Skip calling my_gcvt() if we are trying to insert a double into a char(0) column.

    modified:
      mysql-test/r/func_math.result
      mysql-test/t/func_math.test
      sql/field.cc
 3127 Davi Arnaut	2010-11-17 [merge]
      Merge of mysql-5.1-bugteam into mysql-5.5-bugteam.

    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 09:35:07 +0000
+++ b/sql/field.cc	2010-11-17 15:39:35 +0000
@@ -6327,10 +6327,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).
Thread
bzr push into mysql-5.5-bugteam branch (tor.didriksen:3127 to 3128) Bug#58137Tor Didriksen17 Nov