Bug #50351 ft_min_word_len=2 Causes query to hang
| Submitted: | 15 Jan 2010 3:21 | Modified: | 18 Jun 2010 1:41 |
|---|---|---|---|
| Reporter: | Donna Harmon | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: FULLTEXT search | Severity: | S3 (Non-critical) |
| Version: | 5.1.35 + | OS: | Any |
| Assigned to: | Sergey Vojtovich | CPU Architecture: | Any |
| Tags: | regression | ||
[15 Jan 2010 3:41]
Donna Harmon
Workaround: Set ft_min_word_len in your my.cnf back to the default of 4 and restart the server [mysqld] ... ft_min_word_len=4
[22 Jan 2010 19:12]
Matthew Lord
How is this S3? adding another affected customer.
[2 Feb 2010 11:09]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/98930 3338 Sergey Vojtovich 2010-02-02 BUG#50351 - ft_min_word_len=2 Causes query to hang Performing fulltext prefix search (a word with truncation operator) may cause a dead-loop. ft_min_word_len value doesn't matter actually. The problem was introduced along with "smarter index merge" optimization. @ mysql-test/r/fulltext.result A test case for BUG#50351. @ mysql-test/t/fulltext.test A test case for BUG#50351. @ storage/myisam/ft_boolean_search.c When going up to first-level tree, we need to restore docid[0], so it informs fulltext index merge not to enter this second-level tree again (avoiding dead-loop).
[1 Mar 2010 8:44]
Bugs System
Pushed into 5.1.45 (revid:joro@sun.com-20100301083827-xnimmrjg6bh33o1o) (version source revid:joerg@mysql.com-20100212173307-ph563zr4wmoklgwd) (merge vers: 5.1.45) (pib:16)
[2 Mar 2010 14:08]
Sergey Vojtovich
BUG#50556 was marked as duplicate.
[2 Mar 2010 14:33]
Bugs System
Pushed into 6.0.14-alpha (revid:alik@sun.com-20100302142746-u1gxdf5yk2bjrq3e) (version source revid:alik@sun.com-20100225090938-2j5ybqoau570mytu) (merge vers: 6.0.14-alpha) (pib:16)
[2 Mar 2010 14:38]
Bugs System
Pushed into 5.5.3-m2 (revid:alik@sun.com-20100302072233-t3uqgjzdukt1pyhe) (version source revid:alexey.kopytov@sun.com-20100221213311-xf5nyv391dsw9v6j) (merge vers: 5.5.2-m2) (pib:16)
[2 Mar 2010 14:43]
Bugs System
Pushed into mysql-next-mr (revid:alik@sun.com-20100302072432-k8xvfkgcggkwgi94) (version source revid:alik@sun.com-20100224135227-rcqs9pe9b2in80pf) (pib:16)
[7 Mar 2010 20:14]
Paul DuBois
Noted in 5.1.45, 5.5.3, 6.0.14 changelogs. Full-text queries that used the truncation operator (*) could enter an infinite loop.
[17 Jun 2010 11:56]
Bugs System
Pushed into 5.1.47-ndb-7.0.16 (revid:martin.skold@mysql.com-20100617114014-bva0dy24yyd67697) (version source revid:vasil.dimov@oracle.com-20100331130613-8ja7n0vh36a80457) (merge vers: 5.1.46) (pib:16)
[17 Jun 2010 12:35]
Bugs System
Pushed into 5.1.47-ndb-6.2.19 (revid:martin.skold@mysql.com-20100617115448-idrbic6gbki37h1c) (version source revid:martin.skold@mysql.com-20100609140708-52rvuyq4q500sxkq) (merge vers: 5.1.45-ndb-6.2.19) (pib:16)
[17 Jun 2010 13:22]
Bugs System
Pushed into 5.1.47-ndb-6.3.35 (revid:martin.skold@mysql.com-20100617114611-61aqbb52j752y116) (version source revid:vasil.dimov@oracle.com-20100331130613-8ja7n0vh36a80457) (merge vers: 5.1.46) (pib:16)
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.047 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.
Description: The problem did not exist in 5.0.89,5.1.30, 5.1.32 or 5.1.34 but started in 5.1.35 and persists through 5.1.42. Problem: When executing the following query: SELECT COUNT(*) as NB, a.testid FROM dhtest as a WHERE MATCH(a.testdesc) AGAINST ("+195/60* +r14*" in boolean mode); CREATE TABLE `dhtest` ( `testid` int(12) unsigned NOT NULL DEFAULT '0', `testdesc` varchar(100) NOT NULL, `testint1` smallint(5) NOT NULL DEFAULT '0', `testint2` smallint(5) unsigned NOT NULL DEFAULT '0', FULLTEXT KEY `testdesc:` (`testdesc`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; It hangs in "Sending data" state: +----+------+-----------+----------+---------+------+--------------+---------------------------------------------------------------------------------------------------------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+------+-----------+----------+---------+------+--------------+---------------------------------------------------------------------------------------------------------------------+ | 1 | root | localhost | dhtestdb | Query | 31 | Sending data | SELECT COUNT(*) as NB, a.testid FROM dhtest as a WHERE MATCH(a.testdesc) AGAINST ("+195/60* +r14*" in boolean mode) | | 2 | root | localhost | NULL | Query | 0 | NULL | show full processlist | +----+------+-----------+----------+---------+------+--------------+---------------------------------------------------------------------------------------------------------------------+ When killed just remains in "Sending data" with "Killed" for command and holds lock on table so other queries are prevented from executing on that table until server is restarted. +----+------+-----------+-----------+---------+------+--------------+----------------------------------------------------------------------------------------------------------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+------+-----------+-----------+---------+------+--------------+----------------------------------------------------------------------------------------------------------------------+ | 3 | root | localhost | dhtestdb | Killed | 375 | Sending data | SELECT COUNT(*) as NB, a.testid FROM dhtest as a WHERE MATCH(a.testdesc) AGAINST ("+195/60* +r14*" in boolean mode) | | 9 | root | localhost | sbtestdb | Query | 0 | NULL | show full processlist | +----+------+-----------+-----------+---------+------+--------------+----------------------------------------------------------------------------------------------------------------------+ How to repeat: Set ft_min_word_len=2, run above query, to repeat requires test data which was uploaded separately.