| Bug #76357 | Fulltext index randomly fails | ||
|---|---|---|---|
| Submitted: | 17 Mar 2015 18:36 | Modified: | 30 Apr 2018 11:01 |
| Reporter: | Marek Lemanczyk | Email Updates: | |
| Status: | Can't repeat | Impact on me: | |
| Category: | MySQL Server: FULLTEXT search | Severity: | S2 (Serious) |
| Version: | 5.6.23-log Community Server (GPL) | OS: | Windows (7/8) |
| Assigned to: | CPU Architecture: | Any | |
[29 Oct 2015 0:46]
Marek Lemanczyk
Still exists in 5.6.26 community edition.
[31 Mar 2016 13:48]
Przemyslaw Malkowski
I did the test in loop 1000 times and cannot reproduce - are you able to create fully reproducible test case script maybe?
for i in {1..1000}; do mysql test -e "delete from units; insert into units values ('26', 'Kilometer', 'km'), ('27', 'Meter', 'm'), ('28', 'Liter', 'l'), ('29', 'Kilogram', 'kg'), ('30', 'Gram', 'g'); SELECT Extent1.UnitId, Extent1.Name, Extent1.ShortName FROM units AS Extent1 WHERE ((MATCH(Extent1.Name) AGAINST ('kilometer*' IN BOOLEAN MODE)) > 0) OR ((MATCH(Extent1.ShortName) AGAINST ('kilometer*' IN BOOLEAN MODE)) > 0) LIMIT 20;"|wc -l >> q.out; done
$ uniq q.out
2
[30 Apr 2018 11:01]
MySQL Verification Team
I couldn't repeat too. If you are able to provide a repeatable test case please do. Thanks in advance.

Description: For some reason fulltext search constantly stops returning any rows. The issue is random, but it always occurs at some point. At that time all the records get score = 0. This happens on various computers and operating systems. I've the required indexes. Re-building the indexes sometimes help, sometimes it doesn't. The table is very simple, just few columns. In the basic case it has just few rows. How to repeat: Create the table. CREATE TABLE `units` ( `UnitId` BIGINT(20) NOT NULL AUTO_INCREMENT, `Name` VARCHAR(15) COLLATE utf8_general_ci NOT NULL, `ShortName` VARCHAR(5) COLLATE utf8_general_ci NOT NULL, PRIMARY KEY (`UnitId`) USING BTREE, UNIQUE KEY `IX_Name` (`Name`) USING BTREE, UNIQUE KEY `IX_ShortName` (`ShortName`) USING BTREE, FULLTEXT KEY `UNITS_NAME_FTS_IDX` (`Name`), FULLTEXT KEY `UNITS_SHORTNAME_FTS_IDX` (`ShortName`) ) ENGINE=InnoDB AUTO_INCREMENT=31 CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'; Insert and delete few records multiple times. '26', 'Kilometer', 'km' '27', 'Meter', 'm' '28', 'Liter', 'l' '29', 'Kilogram', 'kg' '30', 'Gram', 'g' Run the query. SELECT `Extent1`.`UnitId`, `Extent1`.`Name`, `Extent1`.`ShortName` FROM `units` AS `Extent1` WHERE ((MATCH(`Extent1`.`Name`) AGAINST ('kilometer*' IN BOOLEAN MODE)) > 0) OR ((MATCH(`Extent1`.`ShortName`) AGAINST ('kilometer*' IN BOOLEAN MODE)) > 0) LIMIT 20; You may need to run it multiple times on different days to get the failure. Repeat insert/deletes/query until you get the failures. They always happen for us at some point. Suggested fix: The query should consistently return same rows for the same data.