List:Commits« Previous MessageNext Message »
From:Sergey Glukhov Date:November 27 2008 2:55pm
Subject:bzr commit into mysql-5.0-bugteam branch (Sergey.Glukhov:2718)
Bug#37284
View as plain text  
#At file:///home/gluh/MySQL/mysql-5.0-bugteam/ based on revid:sergey.glukhov@stripped

 2718 Sergey Glukhov	2008-11-27
      Bug#37284 Crash in Field_string::type()
      The bug is repeatable with latest(1.0.1) InnoDB plugin on Linux, Win,
      If MySQL is compiled with valgrind there are errors about
      using of uninitialized variable(orig_table).
      The fix is to set field->orig_table correct value.
modified:
  mysql-test/r/innodb_mysql.result
  mysql-test/t/innodb_mysql.test
  sql/sql_base.cc

per-file messages:
  mysql-test/r/innodb_mysql.result
    test result
  mysql-test/t/innodb_mysql.test
    test case
  sql/sql_base.cc
    set field->orig_table to 'table' value because it may be bogus and
    it leads to crash on Field_string::type() function.
=== modified file 'mysql-test/r/innodb_mysql.result'
--- a/mysql-test/r/innodb_mysql.result	2008-07-23 11:25:00 +0000
+++ b/mysql-test/r/innodb_mysql.result	2008-11-27 14:54:23 +0000
@@ -1261,4 +1261,10 @@ a	b	c
 5	1	1
 4	1	1
 DROP TABLE t1;
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (a char(50)) ENGINE=InnoDB;
+CREATE INDEX i1 on t1 (a(3));
+SELECT * FROM t1 WHERE a = 'abcde';
+a
+DROP TABLE t1;
 End of 5.0 tests

=== modified file 'mysql-test/t/innodb_mysql.test'
--- a/mysql-test/t/innodb_mysql.test	2008-07-23 11:25:00 +0000
+++ b/mysql-test/t/innodb_mysql.test	2008-11-27 14:54:23 +0000
@@ -1014,4 +1014,15 @@ SELECT a, b, c FROM t1 WHERE b = 1 ORDER
 
 DROP TABLE t1;
 
+# 
+# Bug#37284 Crash in Field_string::type() 
+# 
+--disable_warnings 
+DROP TABLE IF EXISTS t1; 
+--enable_warnings 
+CREATE TABLE t1 (a char(50)) ENGINE=InnoDB; 
+CREATE INDEX i1 on t1 (a(3)); 
+SELECT * FROM t1 WHERE a = 'abcde'; 
+DROP TABLE t1;
+
 --echo End of 5.0 tests

=== modified file 'sql/sql_base.cc'
--- a/sql/sql_base.cc	2008-10-17 14:55:06 +0000
+++ b/sql/sql_base.cc	2008-11-27 14:54:23 +0000
@@ -2102,7 +2102,10 @@ bool reopen_table(TABLE *table,bool lock
   for (key=0 ; key < table->s->keys ; key++)
   {
     for (part=0 ; part < table->key_info[key].usable_key_parts ; part++)
+    {
       table->key_info[key].key_part[part].field->table= table;
+      table->key_info[key].key_part[part].field->orig_table= table;
+    }
   }
   if (table->triggers)
     table->triggers->set_table(table);

Thread
bzr commit into mysql-5.0-bugteam branch (Sergey.Glukhov:2718)Bug#37284Sergey Glukhov27 Nov