#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#37284 | Sergey Glukhov | 27 Nov |