From bd5fdc57146552be40a71e9636cef13ec3f0df75 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 21 Feb 2006 18:09:32 +0300 Subject: Fixed bug#17530: Incorrect key truncation on table creation caused server crash. When a too long field is used for a key, only a prefix part of the field is used. Length is reduced to the max key length allowed for storage. But if the field have a multibyte charset it is possible to break multibyte char sequence. This leads to the failed assertion in the innodb code and server crash when a record is inserted. The make_prepare_table() now aligns truncated key length to the boundary of multibyte char. mysql-test/t/create.test: Added test case for bug#17530: Incorrect key truncation on table creation caused server crash. mysql-test/r/create.result: Added test case for bug#17530: Incorrect key truncation on table creation caused server crash. sql/sql_table.cc: Fixed bug#17530: Incorrect key truncation on table creation caused server crash. The make_prepare_table() now aligns truncated key length to the boundary of multibyte char. --- mysql-test/t/create.test | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'mysql-test/t/create.test') diff --git a/mysql-test/t/create.test b/mysql-test/t/create.test index f7b9002faa0..9fcbb53e24d 100644 --- a/mysql-test/t/create.test +++ b/mysql-test/t/create.test @@ -660,4 +660,12 @@ alter table t1 max_rows=100000000000; show create table t1; drop table t1; +# +# Bug#17530: Incorrect key truncation on table creation caused server crash. +# +create table t1(f1 varchar(800) binary not null, key(f1)) engine = innodb + character set utf8 collate utf8_general_ci; +insert into t1 values('aaa'); +drop table t1; + # End of 5.0 tests -- cgit v1.2.1