mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Bug #26334149 - MYSQL CRASHES WHEN FULL TEXT INDEXES IBD FILES ARE ORPHANED DUE TO RENAME TABLE
Problem: When FTS index is added into a table which doesn't have 'FTS_DOC_ID' column, Innodb rebuilds table to add column 'FTS_DOC_ID'. when this FTS index is dropped from this table. Innodb doesn't not rebuild table to remove 'FTS_DOC_ID' column and deletes FTS index auxiliary tables. But it doesn't delete FTS common auxiliary tables. Later when the database having this table is renamed, FTS auxiliary tables are not renamed because table's flags2 (dict_table_t.flags2) has been resetted for DICT_TF2_FTS flag during FTS index drop operation. Now when we drop old database, it leads to an assert. Fix: During renaming of FTS auxiliary tables, ORed a condition to check if table has DICT_TF2_FTS_HAS_DOC_ID flag set. RB: 18769 Reviewed by : Jimmy.Yang@oracle.com
This commit is contained in:
committed by
Marko Mäkelä
parent
9c03ba8f0d
commit
197bf0fe35
@ -481,3 +481,24 @@ eval ALTER TABLE $source_db.t1 DROP INDEX index2, algorithm=inplace;
|
||||
eval DROP TABLE $source_db.t1;
|
||||
eval DROP DATABASE $source_db;
|
||||
eval DROP DATABASE $dest_db;
|
||||
|
||||
--echo #
|
||||
--echo # BUG #26334149 MYSQL CRASHES WHEN FULL TEXT INDEXES IBD FILES ARE
|
||||
--echo # ORPHANED DUE TO RENAME TABLE
|
||||
--echo #
|
||||
CREATE DATABASE db1; USE db1;
|
||||
CREATE TABLE notes (
|
||||
id int(11) NOT NULL AUTO_INCREMENT,
|
||||
body text COLLATE utf8_unicode_ci,
|
||||
PRIMARY KEY (id)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
|
||||
COLLATE=utf8_unicode_ci
|
||||
ROW_FORMAT=COMPRESSED;
|
||||
|
||||
ALTER TABLE notes ADD FULLTEXT INDEX index_ft_body (body(255));
|
||||
DROP INDEX index_ft_body ON notes;
|
||||
|
||||
CREATE DATABASE db2;
|
||||
RENAME TABLE db1.notes TO db2.notes;
|
||||
DROP DATABASE db1;
|
||||
DROP DATABASE db2;
|
||||
|
Reference in New Issue
Block a user