diff --git a/mysql-test/suite/innodb/r/import_hidden_fts.result b/mysql-test/suite/innodb/r/import_hidden_fts.result index 69120898d4d..e08558cdc89 100644 --- a/mysql-test/suite/innodb/r/import_hidden_fts.result +++ b/mysql-test/suite/innodb/r/import_hidden_fts.result @@ -1,3 +1,5 @@ +SET @save_adaptive=@@GLOBAL.innodb_adaptive_hash_index; +SET GLOBAL innodb_adaptive_hash_index=ON; call mtr.add_suppression("InnoDB: Added system generated FTS_DOC_ID and FTS_DOC_ID_INDEX while importing the tablespace"); CREATE TABLE t1(f1 INT NOT NULL PRIMARY KEY, f2 CHAR(2) not null, fulltext f_idx(f2), @@ -9,7 +11,7 @@ INSERT INTO t1(f1, f2) SELECT seq, "si" FROM seq_2_to_256; ALTER TABLE t1 ADD COLUMN f6 INT NOT NULL; ALTER TABLE t1 DROP COLUMN f6; ALTER TABLE t1 DROP INDEX f_idx; -connect con1,localhost,root,,; +connect block_purge,localhost,root,,; START TRANSACTION WITH CONSISTENT SNAPSHOT; connection default; DELETE FROM t1 WHERE f1 > 1; @@ -22,6 +24,7 @@ UNLOCK TABLES; Warnings: Warning 1235 This version of MariaDB doesn't yet support 'FLUSH TABLES on a table that had an FTS index, created on a hidden column, the auxiliary tables haven't been dropped as yet. FTS auxiliary tables will not be flushed.' DROP TABLE t1; +disconnect block_purge; CREATE TABLE t1(f1 INT NOT NULL PRIMARY KEY, f2 CHAR(2) not null, f3 INT as (f1) VIRTUAL, INDEX(f3), @@ -43,3 +46,4 @@ t1 CREATE TABLE `t1` ( KEY `f4` (`f4`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci DROP TABLE t1; +SET GLOBAL innodb_adaptive_hash_index=@save_adaptive; diff --git a/mysql-test/suite/innodb/t/import_hidden_fts.test b/mysql-test/suite/innodb/t/import_hidden_fts.test index 4129e258fe1..406f11f7642 100644 --- a/mysql-test/suite/innodb/t/import_hidden_fts.test +++ b/mysql-test/suite/innodb/t/import_hidden_fts.test @@ -1,5 +1,11 @@ --source include/have_innodb.inc --source include/have_sequence.inc + +--error 0,ER_UNKNOWN_SYSTEM_VARIABLE +SET @save_adaptive=@@GLOBAL.innodb_adaptive_hash_index; +--error 0,ER_UNKNOWN_SYSTEM_VARIABLE +SET GLOBAL innodb_adaptive_hash_index=ON; + # Table with virtual, fulltext, instant add, instant drop column # and purgeable rows call mtr.add_suppression("InnoDB: Added system generated FTS_DOC_ID and FTS_DOC_ID_INDEX while importing the tablespace"); @@ -13,7 +19,7 @@ INSERT INTO t1(f1, f2) SELECT seq, "si" FROM seq_2_to_256; ALTER TABLE t1 ADD COLUMN f6 INT NOT NULL; ALTER TABLE t1 DROP COLUMN f6; ALTER TABLE t1 DROP INDEX f_idx; -connect(con1,localhost,root,,); +connect(block_purge,localhost,root,,); START TRANSACTION WITH CONSISTENT SNAPSHOT; connection default; @@ -26,6 +32,7 @@ ib_backup_tablespaces("test", "t1"); EOF UNLOCK TABLES; DROP TABLE t1; +disconnect block_purge; CREATE TABLE t1(f1 INT NOT NULL PRIMARY KEY, f2 CHAR(2) not null, @@ -44,3 +51,5 @@ ALTER TABLE t1 IMPORT TABLESPACE; --enable_warnings SHOW CREATE TABLE t1; DROP TABLE t1; +--error 0,ER_UNKNOWN_SYSTEM_VARIABLE +SET GLOBAL innodb_adaptive_hash_index=@save_adaptive; diff --git a/storage/innobase/row/row0import.cc b/storage/innobase/row/row0import.cc index 4d5f3592b5a..0be420147c0 100644 --- a/storage/innobase/row/row0import.cc +++ b/storage/innobase/row/row0import.cc @@ -3335,7 +3335,9 @@ static dict_table_t *build_fts_hidden_table( new_index->fields[old_index->n_fields].fixed_len= sizeof(doc_id_t); } - new_index->search_info= old_index->search_info; +#ifdef BTR_CUR_HASH_ADAPT + new_index->search_info= btr_search_info_create(new_index->heap); +#endif /* BTR_CUR_HASH_ADAPT */ UT_LIST_ADD_LAST(new_index->table->indexes, new_index); old_index= UT_LIST_GET_NEXT(indexes, old_index); if (UT_LIST_GET_LEN(new_table->indexes)