Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
10.0.15
-
Debian 7 x86_64
-
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.
Attachments
Issue Links
- is blocked by
-
MDEV-8290 10.0.20 merge
- Closed
- links to