summaryrefslogtreecommitdiff
path: root/mysql-test/r/fulltext2.result
diff options
context:
space:
mode:
authorunknown <svoj@may.pils.ru>2006-05-29 16:46:46 +0500
committerunknown <svoj@may.pils.ru>2006-05-29 16:46:46 +0500
commit528e85a4c0de5b6cfe65f1c664089628db6cf1b4 (patch)
tree2d99880d147ef4ce559982554840a1011fb091e9 /mysql-test/r/fulltext2.result
parent52078846fc635b913c2090c20adc18e1f06c9e56 (diff)
downloadmariadb-git-528e85a4c0de5b6cfe65f1c664089628db6cf1b4.tar.gz
BUG#19580 - FULLTEXT search produces wrong results on UTF-8 columns
The problem was that MySQL hadn't true ctype implementation. As a result many multibyte punctuation/whitespace characters were treated as word characters. This fix uses recently added CTYPE table for unicode character sets (WL1386) to detect unicode punctuation/whitespace characters correctly. Note: this is incompatible change since it changes parser behavior. One will have to use REPAIR TABLE statement to rebuild fulltext indexes. mysql-test/r/fulltext2.result: Testcase for BUG#19580. mysql-test/t/fulltext2.test: Testcase for BUG#19580. storage/myisam/ft_parser.c: Use WL1386 "CTYPE table for unicode character sets" functionality. storage/myisam/ft_update.c: Use WL1386 "CTYPE table for unicode character sets" functionality. Reverse fix for BUG#16489 "utf8 + fulltext leads to corrupt index file.". It is not needed anymore, since we have true ctype implementation. storage/myisam/ftdefs.h: Use WL1386 "CTYPE table for unicode character sets" functionality. Rework true_word_char macro so it accepts ctype instead of charset as first param. It doesn't use my_isalnum anymore, but instead directly checks ctype. Obsolete word_char macro removed.
Diffstat (limited to 'mysql-test/r/fulltext2.result')
-rw-r--r--mysql-test/r/fulltext2.result8
1 files changed, 8 insertions, 0 deletions
diff --git a/mysql-test/r/fulltext2.result b/mysql-test/r/fulltext2.result
index f6a4b20bc22..7e3e25370d3 100644
--- a/mysql-test/r/fulltext2.result
+++ b/mysql-test/r/fulltext2.result
@@ -241,3 +241,11 @@ select * from t1 where match a against('ab c' in boolean mode);
a
drop table t1;
set names latin1;
+SET NAMES utf8;
+CREATE TABLE t1(a VARCHAR(255), FULLTEXT(a)) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+INSERT INTO t1 VALUES('„MySQL“');
+SELECT a FROM t1 WHERE MATCH a AGAINST('“MySQL„' IN BOOLEAN MODE);
+a
+„MySQL“
+DROP TABLE t1;
+SET NAMES latin1;