Commit 63bca358 authored by Sergey Glukhov's avatar Sergey Glukhov

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.
parent 861eeb91
...@@ -1261,4 +1261,10 @@ a b c ...@@ -1261,4 +1261,10 @@ a b c
5 1 1 5 1 1
4 1 1 4 1 1
DROP TABLE t1; 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 End of 5.0 tests
...@@ -1014,4 +1014,15 @@ SELECT a, b, c FROM t1 WHERE b = 1 ORDER BY a DESC LIMIT 5; ...@@ -1014,4 +1014,15 @@ SELECT a, b, c FROM t1 WHERE b = 1 ORDER BY a DESC LIMIT 5;
DROP TABLE t1; 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 --echo End of 5.0 tests
...@@ -2102,7 +2102,10 @@ bool reopen_table(TABLE *table,bool locked) ...@@ -2102,7 +2102,10 @@ bool reopen_table(TABLE *table,bool locked)
for (key=0 ; key < table->s->keys ; key++) for (key=0 ; key < table->s->keys ; key++)
{ {
for (part=0 ; part < table->key_info[key].usable_key_parts ; part++) 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->table= table;
table->key_info[key].key_part[part].field->orig_table= table;
}
} }
if (table->triggers) if (table->triggers)
table->triggers->set_table(table); table->triggers->set_table(table);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment