mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
BUG#29445 - match ... against () never returns
Part 1: Do not perform index search for a plus-word with truncation operator in case there are other plus-words in expression. Specifically this optimization was enforced for expression like "+word1 +word2*", but wasn't enforced for expression like "+word1 word2*". mysql-test/r/fulltext.result: A test case for BUG#29445. mysql-test/t/fulltext.test: A test case for BUG#29445. storage/myisam/ft_boolean_search.c: Do not perform index search for a plus-word with truncation operator in case there are other plus-words in expression. Specifically this optimization was enforced for expression like "+word1 +word2*", but wasn't enforced for expression like "+word1 word2*".
This commit is contained in:
@ -480,3 +480,9 @@ CREATE TABLE t1(a VARCHAR(2) CHARACTER SET big5 COLLATE big5_chinese_ci,
|
||||
FULLTEXT(a));
|
||||
INSERT INTO t1 VALUES(0xA3C2);
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(a VARCHAR(20), FULLTEXT(a));
|
||||
INSERT INTO t1 VALUES('Offside'),('City Of God');
|
||||
SELECT a FROM t1 WHERE MATCH a AGAINST ('+city of*' IN BOOLEAN MODE);
|
||||
a
|
||||
City Of God
|
||||
DROP TABLE t1;
|
||||
|
@ -408,4 +408,12 @@ FULLTEXT(a));
|
||||
INSERT INTO t1 VALUES(0xA3C2);
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# BUG#29445 - match ... against () never returns
|
||||
#
|
||||
CREATE TABLE t1(a VARCHAR(20), FULLTEXT(a));
|
||||
INSERT INTO t1 VALUES('Offside'),('City Of God');
|
||||
SELECT a FROM t1 WHERE MATCH a AGAINST ('+city of*' IN BOOLEAN MODE);
|
||||
DROP TABLE t1;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
@ -474,7 +474,8 @@ static void _ftb_init_index_search(FT_INFO *ftb)
|
||||
ftbe->up->flags|= FTB_FLAG_TRUNC, ftbe=ftbe->up)
|
||||
{
|
||||
if (ftbe->flags & FTB_FLAG_NO || /* 2 */
|
||||
ftbe->up->ythresh - ftbe->up->yweaks >1) /* 1 */
|
||||
ftbe->up->ythresh - ftbe->up->yweaks >
|
||||
test(ftbe->flags & FTB_FLAG_YES)) /* 1 */
|
||||
{
|
||||
FTB_EXPR *top_ftbe=ftbe->up;
|
||||
ftbw->docid[0]=HA_OFFSET_ERROR;
|
||||
|
Reference in New Issue
Block a user