1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

BUG#29299 - repeatable myisam fulltext index corruption

Fulltext index may get corrupt by certain gbk characters.

The problem was that when skipping leading non-true-word-characters,
we assumed that these characters are always 1 byte long. This is not
the case with gbk character set, since non-true-word-characters may
be 2 bytes long.

Affects 5.0 only.


myisam/ft_parser.c:
  Leading non-true-word-characters may also be multi-byte (e.g. in
  gbk character set).
mysql-test/r/fulltext2.result:
  A test case for BUG#29299.
mysql-test/t/fulltext2.test:
  A test case for BUG#29299.
This commit is contained in:
unknown
2007-06-27 18:10:19 +05:00
parent b3b8d5165d
commit 030d98d397
3 changed files with 28 additions and 2 deletions

View File

@ -241,3 +241,15 @@ select * from t1 where match a against('ab c' in boolean mode);
a
drop table t1;
set names latin1;
CREATE TABLE t1(a VARCHAR(255) CHARACTER SET gbk, FULLTEXT(a));
SET NAMES utf8;
INSERT INTO t1 VALUES(0xF043616161),(0xBEF361616197C22061616161);
SELECT HEX(a) FROM t1 WHERE MATCH(a) AGAINST(0x97C22061616161 IN BOOLEAN MODE);
HEX(a)
BEF361616197C22061616161
DELETE FROM t1 LIMIT 1;
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
SET NAMES latin1;
DROP TABLE t1;

View File

@ -220,4 +220,16 @@ select * from t1 where match a against('ab c' in boolean mode);
drop table t1;
set names latin1;
#
# BUG#29299 - repeatable myisam fulltext index corruption
#
CREATE TABLE t1(a VARCHAR(255) CHARACTER SET gbk, FULLTEXT(a));
SET NAMES utf8;
INSERT INTO t1 VALUES(0xF043616161),(0xBEF361616197C22061616161);
SELECT HEX(a) FROM t1 WHERE MATCH(a) AGAINST(0x97C22061616161 IN BOOLEAN MODE);
DELETE FROM t1 LIMIT 1;
CHECK TABLE t1;
SET NAMES latin1;
DROP TABLE t1;
# End of 4.1 tests