| Bug #67257 | FULLTEXT index not being properly maintained on innoDB table | ||
|---|---|---|---|
| Submitted: | 16 Oct 2012 8:43 | Modified: | 13 Dec 2012 16:01 |
| Reporter: | Jan Rusch | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: FULLTEXT search | Severity: | S3 (Non-critical) |
| Version: | 5.6 | OS: | Any (MS Windows 7 64bit, Linux) |
| Assigned to: | CPU Architecture: | Any | |
| Tags: | fts, innodb | ||
[16 Oct 2012 8:43]
Jan Rusch
[16 Oct 2012 8:44]
Jan Rusch
By checking the query result fn the InnoDB FTS query, I also found the following result:
+--------------+
| ArtNr |
+--------------+
| 316162340111 |
...
| 614161410651 |
| 614161420651 |
| 614161430651 |
| 614161440651 |
| 614161450651 |
| 614161480651 |
| 614161490651 |
| 614161500651 | <- Double hit
| 614161500651 |
| 614161510642 |
| 614161510642 |
| 614161520651 |
| 614161520651 |
| 614161530651 |
| 614161540651 |
| 614161540651 |
...
This should not be the case on this query with 'ArtNr' beeing a primary key:
Query:
SELECT *
FROM search_fulltext
WHERE ArtNr = "614161500651"
returns
*************************** 1. row ***************************
FTS_DOC_ID: 22849
ArtNr: 614161500651
SearchBez: Schutzkappe AHK # Protection Cap Tow Bar # Capuchon Dispositif d'Attelage # Cappuccio Gancio Tra
ino # Capuchón Protección para Gancho de Remolque # Afdekkap Trekhaak # Kugleskyd # Dragkroksskydd # Védösapka Létére Vo
ntatóhorog # krytka TZ # Nakladka Haka Holowniczego # προστατευτικό κάλυμμα για ρυμούλκα
SearchSyn: NULL
SearchKritWert: NULL
SearchKritWertBez: Farbe schwarz # Colour Black # Couleur noir # Colore nero # Pintura negro # Kleur zwart # Farve
sort # Färg svart # Farge svart # Väri Musta # Szín fekete # Cor preto # Цвет черный # Farba cierny # Barva černá # Kolo
r czarny # Χρώμα μαύρο # Culoare negru # Renk siyah # Boja crna boja # цвят черен # Krāsa melns # spalva juoda # Värv mu
st # Barva crna barva # Color Black
SearchHersteller: # OPEL # VAUXHALL # GENERAL MOTORS
SearchTextbaustein: NULL
SearchFahrzeug: #
SearchKBA: NULL
SearchMotor: NULL
SearchBaugruppe: теглич # priekabos prikabintuvas # Piekabes aprīkojums # Vetokoukku laite # vonóhorog # Priprav
a za vleko # Trailer Hitch # Järelhaagise seadmed # Cupla remorca trailer # Uredjaj za vucu # Römork baglanti tertibati
# żażné zariadenie # Прицепное оборудование # Dispositivo de reboque # Zestaw zaczepu przyczepy # Κοτσαδόρος # Tazne zar
izeni # Släpvagnskoppling # Tilhengerinnretning # Anhængeranordning # Anhängevorrichtung # Dispositif d'attelage # Trekh
aak # Gancio traino # Enganche de remolque
SearchVerwendungszweck: NULL
SearchMotortyp: NULL
SearchRefNr: 6736294 # 93160575 # 614161500651 # 6141615006 # 61416150
1 row in set (0.00 sec)
So why do I get two hits for this row in the query result.
Even when we use DISTINCT:
SELECT DISTINCT ArtNr
FROM tecdoc.search_fulltext
WHERE MATCH(ArtNr,SearchBez,SearchSyn,SearchKritWert,SearchKritWertBez,SearchHersteller,SearchTextbaustein,SearchFahrzeug,SearchKBA,SearchMotor,SearchBaugruppe,SearchVerwendungszweck,SearchMotortyp,SearchRefNr)
AGAINST ("+Opel* +Anhänge*" IN BOOLEAN MODE)
ORDER BY ArtNr
the result is definitly not correct:
+--------------+
| ArtNr |
+--------------+
| 316162340111 |
| 614160100651 |
| 614160110641 |
| 614160120641 |
| 614160150641 |
| 614160160641 |
| 614160200641 |
| 614160220641 |
| 614160240641 |
| 614160270641 |
| 614160280641 |
| 614160300641 |
| 614160330641 |
| 614160350651 |
| 614160420641 |
| 614160430641 |
| 614160440641 |
| 614160470641 |
| 614160500641 |
| 614160510641 |
| 614160520641 |
| 614160530641 |
| 614160540641 |
| 614160550641 |
| 614160560641 |
| 614160570641 |
| 614160580641 |
| 614160590641 |
| 614160600641 |
| 614160610641 |
| 614160620641 |
| 614160630641 |
| 614160640641 |
| 614161010641 |
| 614161200111 |
| 614161210111 |
| 614161220111 |
| 614161230111 |
| 614161240111 |
| 614161250111 |
| 614161300651 |
| 614161310651 |
| 614161320651 |
| 614161330651 |
| 614161340651 |
| 614161350651 |
| 614161360651 |
| 614161370651 |
| 614161380651 |
| 614161390651 |
| 614161400651 |
| 614161410651 |
| 614161420651 |
| 614161430651 |
| 614161440651 |
| 614161450651 |
| 614161480651 |
| 614161490651 |
| 614161500651 | <-- Double
| 614161500651 |
| 614161510642 | <-- Double
| 614161510642 |
| 614161520651 | <-- Double
| 614161520651 |
| 614161530651 |
| 614161540651 | <-- Double
| 614161540651 |
| 614161550651 | <-- Double
| 614161550651 |
| 614161560651 | <-- Double
| 614161560651 |
| 614161580651 | <-- Double
| 614161580651 |
| 614161590651 |
| 614161600651 |
| 614161610651 |
| 614161630651 |
| 614161640651 |
| 614161650651 |
| 614161660651 |
| 614161680651 |
| 614161710651 |
| 614161730651 |
| 614161730651 |
| 614161740651 |
| 614161750651 |
| 614161760651 |
| 614161770651 |
| 614161790651 |
| 614161800651 |
| 614161820651 |
| 614161840651 |
| 614161850651 |
| 614161860651 |
| 614161870651 |
| 614161900651 |
| 614161910651 |
| 614162000651 |
| 614162060651 |
| 614162070651 |
| 614162080651 |
| 614162090651 |
| 614162100651 |
| 614162110651 |
| 614162120651 |
| 614162130651 |
| 614162140651 |
| 614162160651 |
| 614162170651 |
| 614162180651 |
| 614162190651 |
| 614162200651 |
| 614162210651 |
| 614162220651 |
| 614162230651 |
| 614162240651 |
| 614162250651 |
| 614162260651 |
| 614162270651 |
+--------------+
119 rows in set (0.00 sec)
Same query on MyISAM table:
+--------------+
| ArtNr |
+--------------+
| 316162340111 |
| 614002000651 |
| 614160100651 |
| 614160110641 |
| 614160120641 |
| 614160150641 |
| 614160160641 |
| 614160200641 |
| 614160220641 |
| 614160240641 |
| 614160270641 |
| 614160280641 |
| 614160300641 |
| 614160330641 |
| 614160350651 |
| 614160420641 |
| 614160430641 |
| 614160440641 |
| 614160470641 |
| 614160500641 |
| 614160510641 |
| 614160520641 |
| 614160530641 |
| 614160540641 |
| 614160550641 |
| 614160560641 |
| 614160570641 |
| 614160580641 |
| 614160590641 |
| 614160600641 |
| 614160610641 |
| 614160620641 |
| 614160630641 |
| 614160640641 |
| 614161010641 |
| 614161200111 |
| 614161210111 |
| 614161220111 |
| 614161230111 |
| 614161240111 |
| 614161250111 |
| 614161300651 |
| 614161310651 |
| 614161320651 |
| 614161330651 |
| 614161340651 |
| 614161350651 |
| 614161360651 |
| 614161370651 |
| 614161380651 |
| 614161390651 |
| 614161400651 |
| 614161410651 |
| 614161420651 |
| 614161430651 |
| 614161440651 |
| 614161450651 |
| 614161480651 |
| 614161490651 |
| 614161500651 |
| 614161510642 |
| 614161520651 |
| 614161530651 |
| 614161540651 |
| 614161550651 |
| 614161560651 |
| 614161580651 |
| 614161590651 |
| 614161600651 |
| 614161610651 |
| 614161630651 |
| 614161640651 |
| 614161650651 |
| 614161660651 |
| 614161680651 |
| 614161710651 |
| 614161730651 |
| 614161740651 |
| 614161750651 |
| 614161760651 |
| 614161770651 |
| 614161790651 |
| 614161800651 |
| 614161820651 |
| 614161840651 |
| 614161850651 |
| 614161860651 |
| 614161870651 |
| 614161900651 |
| 614161910651 |
| 614161920651 |
| 614161930651 |
| 614161940651 |
| 614161950651 |
| 614162000651 |
| 614162020651 |
| 614162030651 |
| 614162040651 |
| 614162050651 |
| 614162060651 |
| 614162070651 |
| 614162080651 |
| 614162090651 |
| 614162100651 |
| 614162110651 |
| 614162120651 |
| 614162130651 |
| 614162140651 |
| 614162150651 |
| 614162160651 |
| 614162170651 |
| 614162180651 |
| 614162190651 |
| 614162200651 |
| 614162210651 |
| 614162220651 |
| 614162230651 |
| 614162240651 |
| 614162250651 |
| 614162260651 |
| 614162270651 |
+--------------+
121 rows in set (0.77 sec)
No double hits...
Any ideas?
[29 Oct 2012 2:23]
Jimmy Yang
Jan, will you be able to provide a database base dump that has the problem? Or in some way, a simplified repro case?
[29 Oct 2012 15:49]
Todd Farmer
Development staff is unable to reproduce the described behavior. Anybody able to provide a reproducible test case is encouraged to do so in order to maximize possibility that this can be fixed by GA.
[9 Nov 2012 9:28]
Jan Rusch
Still not working in 5.6.8
[30 Nov 2012 19:28]
Sveta Smirnova
Jan, could you please re-upload file to our FTP server: Jimmy could not find it for some reason and now it should be expired, because 21-day lifetime.
[10 Dec 2012 11:38]
Jan Rusch
Hi, I just read the comment and reuploaded the file bug-data-67257.zip Jan
[11 Dec 2012 18:01]
Sveta Smirnova
Jan, thank you very much! We will work with this file.
[11 Dec 2012 19:32]
Sveta Smirnova
Bug is verified. But in my case (server started from our MTR: ./mtr --start innodb) select from InnoDB table returned single row. And there is one more anomaly: count(ArtNt) from InnoDB table returns 122 (proper value): count from InnoDB table 122 select from InnoDB table 316162340111 count from MyISAM table 122 Select from MyISAM table returns 122 rows.
[12 Dec 2012 9:17]
Jimmy Yang
Jan, thank you for the report. Issue found and fix will checked in ASAP.
[13 Dec 2012 16:01]
Paul DuBois
Noted in 5.6.10, 5.7.1 changelogs. Full-text searches in InnoDB tables could return incorrect results.
