Details
-
Type:
Bug
-
Status: Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 10.0.15
-
Fix Version/s: 10.0.20
-
Component/s: Full-text Search, Storage Engine - InnoDB
-
Labels:
-
Environment:Debian 7 x86_64
-
Sprint:10.0.20
Description
I'm currently trying to migrate a database from MySQL 5.5 to MariaDB 10.x because the application (not mine) is using fulltext search in MyISAM and we have a lot of trouble with table locks. I have a testing system and stripped down information here:
MariaDB [db]> alter table content engine=MyISAM; Query OK, 276331 rows affected (8.63 sec) Records: 276331 Duplicates: 0 Warnings: 0 MariaDB [db]> select count(*) from content where MATCH (shortdescription,title,keywords,story) AGAINST ('("VQLTITThe VQLTITgood VQLTITwife")' IN BOOLEAN MODE); +----------+ | count(*) | +----------+ | 2 | +----------+ 1 row in set (0.00 sec) MariaDB [db]> alter table content engine=InnoDB; Query OK, 276331 rows affected (51.86 sec) Records: 276331 Duplicates: 0 Warnings: 0 MariaDB [db]> select count(*) from content where MATCH (shortdescription,title,keywords,story) AGAINST ('("VQLTITThe VQLTITgood VQLTITwife")' IN BOOLEAN MODE); +----------+ | count(*) | +----------+ | 0 | +----------+ 1 row in set (0.02 sec) MariaDB [db]> select count(*) from content; +----------+ | count(*) | +----------+ | 276331 | +----------+ 1 row in set (0.06 sec) MariaDB [db]> explain select count(*) from content where MATCH (shortdescription,title,keywords,story) AGAINST ('("VQLTITThe VQLTITgood VQLTITwife")' IN BOOLEAN MODE); +------+-------------+---------+----------+---------------+---------+---------+------+------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +------+-------------+---------+----------+---------------+---------+---------+------+------+-------------+ | 1 | SIMPLE | content | fulltext | key_all | key_all | 0 | | 1 | Using where | +------+-------------+---------+----------+---------------+---------+---------+------+------+-------------+ 1 row in set (0.00 sec) MariaDB [db]> show create table content\G; *************************** 1. row *************************** Table: content Create Table: CREATE TABLE `content` ( `content_id` int(11) NOT NULL AUTO_INCREMENT, `keywords` text, `title` tinytext, `shortdescription` text, `story` text, PRIMARY KEY (`content_id`), UNIQUE KEY `UX_origin_id_content_id` (`content_id`), FULLTEXT KEY `keywords` (`keywords`), FULLTEXT KEY `key_all` (`keywords`,`title`,`shortdescription`,`story`) ) ENGINE=InnoDB AUTO_INCREMENT=10375362 DEFAULT CHARSET=latin1 1 row in set (0.00 sec) ERROR: No query specified
MariaDB version is 10.0.15-MariaDB-1~trusty.
As you can see there's a different behaviour on MyISAM (count=2) and InnoDB (count=0). The reason for that is down in the fulltext index:
MariaDB [db]> alter table content engine=MyISAM; Query OK, 276331 rows affected (8.73 sec) Records: 276331 Duplicates: 0 Warnings: 0 MariaDB [db]> select * from content where MATCH (shortdescription,title,keywords,story) AGAINST ('("VQLTITThe VQLTITgood VQLTITwife")' IN BOOLEAN MODE); +------------+----------+-------+------------------+---------------------------------+ | content_id | keywords | title | shortdescription | story | +------------+----------+-------+------------------+---------------------------------+ | 329522 | | | | VQLTITThe VQLTITgood VQLTITwife | | 329523 | | | | VQLTITThe VQLTITgood VQLTITwife | +------------+----------+-------+------------------+---------------------------------+ 2 rows in set (0.00 sec) MariaDB [db]> alter table content engine=InnoDB; Query OK, 276331 rows affected (36.91 sec) Records: 276331 Duplicates: 0 Warnings: 0 MariaDB [db]> select * from content where MATCH (shortdescription,title,keywords,story) AGAINST ('("VQLTITThe VQLTITgood VQLTITwife")' IN BOOLEAN MODE); Empty set (0.01 sec) MariaDB [db]> update content set keywords='123', title='234', shortdescription='345'; Query OK, 276331 rows affected (16.22 sec) Rows matched: 276331 Changed: 276331 Warnings: 0 MariaDB [db]> select * from content where MATCH (shortdescription,title,keywords,story) AGAINST ('("VQLTITThe VQLTITgood VQLTITwife")' IN BOOLEAN MODE); +------------+----------+-------+------------------+---------------------------------+ | content_id | keywords | title | shortdescription | story | +------------+----------+-------+------------------+---------------------------------+ | 329522 | 123 | 234 | 345 | VQLTITThe VQLTITgood VQLTITwife | | 329523 | 123 | 234 | 345 | VQLTITThe VQLTITgood VQLTITwife | +------------+----------+-------+------------------+---------------------------------+ 2 rows in set (0.13 sec) MariaDB [db]> update content set keywords=NULL, title=NULL, shortdescription=NULL; Query OK, 276331 rows affected (10.43 sec) Rows matched: 276331 Changed: 276331 Warnings: 0 MariaDB [db]> select * from content where MATCH (shortdescription,title,keywords,story) AGAINST ('("VQLTITThe VQLTITgood VQLTITwife")' IN BOOLEAN MODE); +------------+----------+-------+------------------+---------------------------------+ | content_id | keywords | title | shortdescription | story | +------------+----------+-------+------------------+---------------------------------+ | 329522 | NULL | NULL | NULL | VQLTITThe VQLTITgood VQLTITwife | | 329523 | NULL | NULL | NULL | VQLTITThe VQLTITgood VQLTITwife | +------------+----------+-------+------------------+---------------------------------+ 2 rows in set (0.25 sec) MariaDB [db]> update content set keywords=NULL, title=NULL, shortdescription=''; Query OK, 276331 rows affected (11.42 sec) Rows matched: 276331 Changed: 276331 Warnings: 0 MariaDB [db]> select * from content where MATCH (shortdescription,title,keywords,story) AGAINST ('("VQLTITThe VQLTITgood VQLTITwife")' IN BOOLEAN MODE); Empty set (0.58 sec)
So my conclusion is InnoDB having troubles with empty string ('') but not with NULL values in fulltext search. So I think it's an engine-related problem.
Gliffy Diagrams
Attachments
Issue Links
- is blocked by
-
MDEV-8290 10.0.20 merge
-
- Closed
-
- links to
Activity
- All
- Comments
- Work Log
- History
- Activity
- Transitions
Additional info: Testing on Aria Engine works, too.