mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
BUG#16489 - utf8 + fulltext leads to corrupt index file.
Fixed that UPDATE statement crashes multi-byte charset fulltext index. myisam/ft_update.c: Fixed that UPDATE statement crashes multi-byte charset fulltext index. While updating, always rewrite multi-byte charset fulltext index. mysql-test/r/fulltext2.result: Added a testcase for BUG#16489. mysql-test/t/fulltext2.test: Added a testcase for BUG#16489.
This commit is contained in:
@ -170,6 +170,10 @@ int _mi_ft_cmp(MI_INFO *info, uint keynr, const byte *rec1, const byte *rec2)
|
|||||||
FT_SEG_ITERATOR ftsi1, ftsi2;
|
FT_SEG_ITERATOR ftsi1, ftsi2;
|
||||||
CHARSET_INFO *cs=info->s->keyinfo[keynr].seg->charset;
|
CHARSET_INFO *cs=info->s->keyinfo[keynr].seg->charset;
|
||||||
DBUG_ENTER("_mi_ft_cmp");
|
DBUG_ENTER("_mi_ft_cmp");
|
||||||
|
#ifndef MYSQL_HAS_TRUE_CTYPE_IMPLEMENTATION
|
||||||
|
if (cs->mbmaxlen > 1)
|
||||||
|
DBUG_RETURN(THOSE_TWO_DAMN_KEYS_ARE_REALLY_DIFFERENT);
|
||||||
|
#endif
|
||||||
|
|
||||||
_mi_ft_segiterator_init(info, keynr, rec1, &ftsi1);
|
_mi_ft_segiterator_init(info, keynr, rec1, &ftsi1);
|
||||||
_mi_ft_segiterator_init(info, keynr, rec2, &ftsi2);
|
_mi_ft_segiterator_init(info, keynr, rec2, &ftsi2);
|
||||||
|
@ -234,5 +234,10 @@ insert into t1 values('test test '),('test'),('test'),('test'),
|
|||||||
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
|
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
|
||||||
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test');
|
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test');
|
||||||
delete from t1 limit 1;
|
delete from t1 limit 1;
|
||||||
|
truncate table t1;
|
||||||
|
insert into t1 values('ab c d');
|
||||||
|
update t1 set a='ab c d';
|
||||||
|
select * from t1 where match a against('ab c' in boolean mode);
|
||||||
|
a
|
||||||
drop table t1;
|
drop table t1;
|
||||||
set names latin1;
|
set names latin1;
|
||||||
|
@ -209,6 +209,14 @@ insert into t1 values('test test '),('test'),('test'),('test'),
|
|||||||
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
|
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
|
||||||
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test');
|
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test');
|
||||||
delete from t1 limit 1;
|
delete from t1 limit 1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# BUG#16489: utf8 + fulltext leads to corrupt index file.
|
||||||
|
#
|
||||||
|
truncate table t1;
|
||||||
|
insert into t1 values('ab c d');
|
||||||
|
update t1 set a='ab c d';
|
||||||
|
select * from t1 where match a against('ab c' in boolean mode);
|
||||||
drop table t1;
|
drop table t1;
|
||||||
set names latin1;
|
set names latin1;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user