From 2e6b3c267372aab4f0d5d2da7a0dee9c83f240c4 Mon Sep 17 00:00:00 2001 From: "serg@serg.mysql.com" <> Date: Thu, 18 Apr 2002 18:44:18 +0000 Subject: [PATCH] ftb bug fixed --- Docs/manual.texi | 3 +++ myisam/ft_boolean_search.c | 2 +- mysql-test/r/fulltext.result | 3 +++ mysql-test/t/fulltext.test | 3 ++- 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Docs/manual.texi b/Docs/manual.texi index 6221ddee0a2..a7404697303 100644 --- a/Docs/manual.texi +++ b/Docs/manual.texi @@ -48932,6 +48932,9 @@ Our TODO section contains what we plan to have in 4.0. @xref{TODO MySQL 4.0}. @itemize @bullet @item +Fixed bug in boolean fulltext search, that caused MySQL to ignore queries of +@code{ft_min_word_len} characters. +@item Boolean fulltext search now supports "phrase searches". @item New configure option @code{--without-query-cache}. diff --git a/myisam/ft_boolean_search.c b/myisam/ft_boolean_search.c index 10b5044826f..5daa6919052 100644 --- a/myisam/ft_boolean_search.c +++ b/myisam/ft_boolean_search.c @@ -256,7 +256,7 @@ FT_INFO * ft_init_boolean_search(MI_INFO *info, uint keynr, byte *query, /* hack: instead of init_queue, we'll use reinit queue to be able * to alloc queue with alloc_root() */ - res=ftb->queue.max_elements=query_len/(ft_min_word_len+1); + res=ftb->queue.max_elements=1+query_len/(ft_min_word_len+1); ftb->queue.root=(byte **)alloc_root(&ftb->mem_root, (res+1)*sizeof(void*)); reinit_queue(& ftb->queue, res, 0, 0, (int (*)(void*,byte*,byte*))FTB_WORD_cmp, ftb); diff --git a/mysql-test/r/fulltext.result b/mysql-test/r/fulltext.result index cd9d1a93c58..e8d9c9aa708 100644 --- a/mysql-test/r/fulltext.result +++ b/mysql-test/r/fulltext.result @@ -156,6 +156,9 @@ KEY ind5 (title), FULLTEXT KEY FT1 (title) ) TYPE=MyISAM; insert into t1 (title) values ('this is a test'); +select * from t1 where match title against ('test' in boolean mode); +id title +1 this is a test update t1 set title='this is A test' where id=1; check table t1; Table Op Msg_type Msg_text diff --git a/mysql-test/t/fulltext.test b/mysql-test/t/fulltext.test index 616ca7cb081..0334910fe6c 100644 --- a/mysql-test/t/fulltext.test +++ b/mysql-test/t/fulltext.test @@ -118,7 +118,7 @@ select * from t2,t3 where MATCH (t2.inhalt,t3.inhalt) AGAINST ('foobar'); drop table t1,t2,t3; # -# two more bugtests +# three more bugtests # CREATE TABLE t1 ( @@ -130,6 +130,7 @@ CREATE TABLE t1 ( ) TYPE=MyISAM; insert into t1 (title) values ('this is a test'); +select * from t1 where match title against ('test' in boolean mode); update t1 set title='this is A test' where id=1; check table t1; update t1 set title='this test once revealed a bug' where id=1;