Thank you for your help! If the status of the bug report you submitted changes, you will be notified. You may return here and check on the status or update your report at any time. That URL for your bug report is: http://bugs.mysql.com/110557.
Bug #110557 When innodb_disable_sort_file_cache=ON, create a full-text index will fail
Submitted: 30 Mar 2023 3:20 Modified: 24 Apr 2024 15:18
Reporter: linkang zhang Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: FULLTEXT search Severity:S3 (Non-critical)
Version:8.0.28, 8.0.32 OS:Linux
Assigned to: CPU Architecture:Any
Tags: Contribution, full text index, innodb_sort_file_cache

[30 Mar 2023 3:20] linkang zhang
Description:
When starting mysqld and using innodb_disable_sort_file_cache=ON, we will fail to create a full-text index on the table.

The error message: Temporary file write failure

When this error occurs, the disk still has a lot of space.

The reason for this error is that when innodb_disable_sort_file_cache=ON, during the process of parsing DDL, fail to write 25 bytes to temporary file.

How to repeat:

// 1. start mysqld with innodb_disable_sort_file_cache=ON 

// 2. show innodb_disable_sort_file_cache

mysql> show variables like 'innodb_disable_sort_file_cache';

+--------------------------------+-------+
| Variable_name                  | Value |
+--------------------------------+-------+
| innodb_disable_sort_file_cache | ON    |
+--------------------------------+-------+
1 row in set (0.00 sec)

// 3. create a table

mysql> CREATE TABLE test (
mysql> `id` int(0) NOT NULL AUTO_INCREMENT,
mysql> `name` varchar(255),
mysql> `img` varchar(255),
mysql> PRIMARY KEY (`id`) USING BTREE,
mysql> FULLTEXT INDEX `testfulltext`(`img`) WITH PARSER `ngram`
mysql> ) ENGINE = InnoDB;

// 4. insert some data into the table

mysql> INSERT INTO test (name) VALUE ("hey");

Query OK, 1 row affected (0.00 sec)

// 5. create full-test index 

mysql> ALTER TABLE test ADD FULLTEXT INDEX IDX_NAME(name) WITH PARSER ngram;

ERROR 1878 (HY000): Temporary file write failure.
[30 Mar 2023 6:13] MySQL Verification Team
Hello linkang zhang,

Thank you for the report and test case.

regards,
Umesh
[10 Aug 2023 2:33] Shaohua Wang
Contributed patch

(*) I confirm the code being submitted is offered under the terms of the OCA, and that I am authorized to contribute it.

Contribution: bug110557_fts_create_index_fail.patch (application/octet-stream, text), 5.41 KiB.

[10 Aug 2023 4:52] MySQL Verification Team
Thank you, Shaohua Wang for the contribution.

regards,
Umesh
[7 Nov 2023 9:00] Shaohua Wang
Contributed patch

(*) I confirm the code being submitted is offered under the terms of the OCA, and that I am authorized to contribute it.

Contribution: bug110557_fts_create_index_fail_v2.patch (application/octet-stream, text), 6.59 KiB.

[7 Nov 2023 9:03] Shaohua Wang
The new patch is modified according new commit in 8.0.34, in which we got heap buffer overflow in ascan test.

ascan test failures:
innodb_fts.large_records innodb.innodb_bulk_create_index_flush

commit 11f7d6dfc55fc0a45ce0139ca04d0615d6fc21ec
Author: Marcin Babij <marcin.babij@oracle.com>
Date:   Wed Apr 5 09:24:03 2023 +0200

    Bug#35194732    InnoDB: DDL should not use large pages nor direct memory like mmap
[24 Apr 2024 15:18] Edward Gilmore
Posted by developer:
 
Contribution highlighted other issues, addressing which also fixed this issue. Helpful as it was, we did not use the contribution.

Thank you for the bug report.