List:Commits« Previous MessageNext Message »
From:Sergey Petrunia Date:April 21 2008 11:45pm
Subject:bk commit into 5.0 tree (sergefp:1.2610) BUG#36139
View as plain text  
Below is the list of changes that have just been committed into a local
5.0 repository of sergefp.  When sergefp does a push these changes
will be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet@stripped, 2008-04-22 01:45:48+04:00, sergefp@stripped +3 -0
  BUG#36139 "float, zerofill, crash with subquery"
  - Make convert_zerofill_number_to_string() take into account that the 
    constant it is converting may evaluate to NULL.

  mysql-test/r/subselect.result@stripped, 2008-04-22 01:45:41+04:00, sergefp@stripped +7 -0
    BUG#36139 "float, zerofill, crash with subquery"
    - Testcase

  mysql-test/t/subselect.test@stripped, 2008-04-22 01:45:41+04:00, sergefp@stripped +12 -0
    BUG#36139 "float, zerofill, crash with subquery"
    - Testcase

  sql/item.cc@stripped, 2008-04-22 01:45:41+04:00, sergefp@stripped +8 -3
    BUG#36139 "float, zerofill, crash with subquery"
    - Make convert_zerofill_number_to_string() take into account that the 
      constant it is converting may evaluate to NULL.

diff -Nrup a/mysql-test/r/subselect.result b/mysql-test/r/subselect.result
--- a/mysql-test/r/subselect.result	2008-02-20 17:40:52 +03:00
+++ b/mysql-test/r/subselect.result	2008-04-22 01:45:41 +04:00
@@ -4374,4 +4374,11 @@ a4	f3	a6
 1	NULL	NULL
 2	NULL	NULL
 DROP TABLE t1, t2, t3, t4;
+create table t1 (a float(5,4) zerofill);
+create table t2 (a float(5,4),b float(2,0));
+select t1.a from t1 where   
+t1.a= (select b from t2 limit 1) and not
+t1.a= (select a from t2 limit 1) ;
+a
+drop table t1;
 End of 5.0 tests.
diff -Nrup a/mysql-test/t/subselect.test b/mysql-test/t/subselect.test
--- a/mysql-test/t/subselect.test	2008-02-20 17:40:40 +03:00
+++ b/mysql-test/t/subselect.test	2008-04-22 01:45:41 +04:00
@@ -3259,5 +3259,17 @@ GROUP BY a4;
 
 DROP TABLE t1, t2, t3, t4;
 
+#
+# BUG#36139 "float, zerofill, crash with subquery"
+#
+create table t1 (a float(5,4) zerofill);
+create table t2 (a float(5,4),b float(2,0));
+
+select t1.a from t1 where   
+  t1.a= (select b from t2 limit 1) and not
+  t1.a= (select a from t2 limit 1) ;
+
+drop table t1;
+
 --echo End of 5.0 tests.
 
diff -Nrup a/sql/item.cc b/sql/item.cc
--- a/sql/item.cc	2008-04-07 23:21:23 +04:00
+++ b/sql/item.cc	2008-04-22 01:45:41 +04:00
@@ -4156,9 +4156,14 @@ static void convert_zerofill_number_to_s
   String tmp(buff,sizeof(buff), field->charset()), *res;
 
   res= (*item)->val_str(&tmp);
-  field->prepend_zeros(res);
-  pos= (char *) sql_strmake (res->ptr(), res->length());
-  *item= new Item_string(pos, res->length(), field->charset());
+  if ((*item)->is_null())
+    *item= new Item_null();
+  else
+  {
+    field->prepend_zeros(res);
+    pos= (char *) sql_strmake (res->ptr(), res->length());
+    *item= new Item_string(pos, res->length(), field->charset());
+  }
 }
 
 
Thread
bk commit into 5.0 tree (sergefp:1.2610) BUG#36139Sergey Petrunia21 Apr