mirror of
https://github.com/MariaDB/server.git
synced 2025-05-31 08:42:45 +03:00
Try to fix the race conditions between SET GLOBAL innodb_ft_aux_table = ...; and access to the INFORMATION_SCHEMA tables that depend on this variable. innodb_ft_aux_table: Replaces fts_internal_tbl_name,fts_internal_tbl_name2. Just store the user-specified parameter as is. innodb_ft_aux_table_id: The table_id corresponding to SET GLOBAL innodb_ft_aux_table, or 0 if the table does not exist or does not contain FULLTEXT INDEX. If the table is renamed later, the INFORMATION_SCHEMA tables will continue to refer to the table. If the table is dropped or rebuilt, the INFORMATION_SCHEMA tables will not find the table.
44 lines
1.8 KiB
Plaintext
44 lines
1.8 KiB
Plaintext
--source include/have_innodb.inc
|
|
|
|
CREATE TABLE t1 (v VARCHAR(100), FULLTEXT INDEX (v)) ENGINE=InnoDB;
|
|
|
|
insert into t1 VALUES('First record'),('Second record'),('Third record');
|
|
|
|
SET @save_ft_aux_table = @@GLOBAL.innodb_ft_aux_table;
|
|
|
|
connect (con1,localhost,root,,);
|
|
--error ER_WRONG_VALUE_FOR_VAR
|
|
SET GLOBAL innodb_ft_aux_table = 'test/t0';
|
|
connection default;
|
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DEFAULT_STOPWORD;
|
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DELETED;
|
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_BEING_DELETED;
|
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE;
|
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE;
|
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_CONFIG;
|
|
connection con1;
|
|
SET GLOBAL innodb_ft_aux_table = 'test/t1';
|
|
disconnect con1;
|
|
connection default;
|
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DELETED;
|
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_BEING_DELETED;
|
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE;
|
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE;
|
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_CONFIG;
|
|
SELECT @@GLOBAL.innodb_ft_aux_table;
|
|
RENAME TABLE t1 TO t2;
|
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DELETED;
|
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_BEING_DELETED;
|
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE;
|
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE;
|
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_CONFIG;
|
|
SELECT @@GLOBAL.innodb_ft_aux_table;
|
|
DROP TABLE t2;
|
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DELETED;
|
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_BEING_DELETED;
|
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE;
|
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE;
|
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_CONFIG;
|
|
SELECT @@GLOBAL.innodb_ft_aux_table;
|
|
SET GLOBAL innodb_ft_aux_table = @save_ft_aux_table;
|