| Bug #83397 | INSERT INTO ... SELECT FROM ... fails if source has > 65535 rows on FTS | ||
|---|---|---|---|
| Submitted: | 16 Oct 2016 10:58 | Modified: | 17 Oct 2016 6:57 |
| Reporter: | Daniël van Eeden (OCA) | Email Updates: | |
| Status: | Verified | Impact on me: | |
| Category: | MySQL Server: FULLTEXT search | Severity: | S3 (Non-critical) |
| Version: | 5.7.15, 5.7.16 | OS: | Any |
| Assigned to: | CPU Architecture: | Any | |
| Tags: | fts, fulltext, insert select | ||
[16 Oct 2016 10:58]
Daniël van Eeden
[16 Oct 2016 12:37]
Peter Laursen
Do you know this? https://bugs.mysql.com/bug.php?id=80261 "Fixed as of the upcoming 5.6.31, 5.7.13, 5.8.0 release, and here's the changelog entry: An INSERT operation on a table with a FULLTEXT index and FTS_DOC_ID column failed because the inserted FTS_DOC_ID value exceeded the permitted gap between consecutive FTS_DOC_ID values. To avoid this problem, the permitted gap between the largest used FTS_DOC_ID value and new FTS_DOC_ID value was raised from 10000 to 65535." -- Peter -- not a MySQL/Oracle person
[17 Oct 2016 6:57]
MySQL Verification Team
Hello Daniël, Thank you for the report. Observed this with 5.7.16 build. Thanks, Umesh
[17 Oct 2016 6:57]
MySQL Verification Team
-- 5.7.16
mysql> DROP TABLE IF EXISTS phone;
CREATE TABLE `phone` (
Query OK, 0 rows affected (0.01 sec)
mysql> CREATE TABLE `phone` (
-> `FTS_DOC_ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
-> `name` varchar(255) NOT NULL,
-> `phonenr` varchar(255) NOT NULL,
-> PRIMARY KEY (`FTS_DOC_ID`),
-> FULLTEXT KEY `ngram_phone` (`phonenr`) /*!50100 WITH PARSER `ngram` */
-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
set @id:=0;
Query OK, 0 rows affected (0.01 sec)
mysql>
mysql>
mysql> set @id:=0;
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> insert into `phone` values
-> (@id:=@id+1,CONCAT('test',@id:=@id+1),CONCAT('test',@id:=@id+1))
-> , (@id:=@id+1,CONCAT('test',@id:=@id+1),CONCAT('test',@id:=@id+1))
-> , (@id:=@id+1,CONCAT('test',@id:=@id+1),CONCAT('test',@id:=@id+1))
-> , (@id:=@id+1,CONCAT('test',@id:=@id+1),CONCAT('test',@id:=@id+1));
Query OK, 4 rows affected (0.00 sec)
Records: 4 Duplicates: 0 Warnings: 0
mysql>
mysql> insert into `phone`(`FTS_DOC_ID`,`name`,`phonenr`)
-> select @id:=@id+1,CONCAT('test',@id:=@id+1),CONCAT('test',@id:=@id+1) from
-> `phone` k1, `phone` k2, `phone` k3, `phone` k4,`phone` k5,`phone` k6, `phone` k7, `phone` k8, `phone` k9,
-> `phone` k0,`phone` ka, `phone` kb, `phone` kc, `phone` kd limit 50000;
ERROR 182 (HY000): Invalid InnoDB FTS Doc ID
mysql>
mysql> select count(*) from phone;
+----------+
| count(*) |
+----------+
| 4 |
+----------+
1 row in set (0.00 sec)
mysql> insert into phone(name,phonenr) select name,phonenr from phone;
ERROR 182 (HY000): Invalid InnoDB FTS Doc ID
mysql> insert into phone(name,phonenr) values('test 0001', '12345');
ERROR 182 (HY000): Invalid InnoDB FTS Doc ID
mysql>
mysql>
