From d91d1ff216dd63d0151583fc558133768deef040 Mon Sep 17 00:00:00 2001 From: Jinyou Ma Date: Tue, 3 Mar 2026 01:27:08 +0000 Subject: [PATCH] fix innobase_drop_multi_fts_index_table --- .../r/innobase_drop_multi_fts_index_table.result | 10 ++++++++++ .../t/innobase_drop_multi_fts_index_table.test | 9 +++++++++ storage/innobase/handler/handler0alter.cc | 3 ++- 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 mysql-test/suite/innodb_fts/r/innobase_drop_multi_fts_index_table.result create mode 100644 mysql-test/suite/innodb_fts/t/innobase_drop_multi_fts_index_table.test diff --git a/mysql-test/suite/innodb_fts/r/innobase_drop_multi_fts_index_table.result b/mysql-test/suite/innodb_fts/r/innobase_drop_multi_fts_index_table.result new file mode 100644 index 00000000000..4cc4a632556 --- /dev/null +++ b/mysql-test/suite/innodb_fts/r/innobase_drop_multi_fts_index_table.result @@ -0,0 +1,10 @@ +CREATE TABLE t ( +a VARCHAR(8), +b VARCHAR(8), +FULLTEXT KEY idx1(a), +FULLTEXT KEY idx2(b) +); +ALTER TABLE t DROP KEY idx1, DROP KEY idx2, algorithm=inplace; +DROP TABLE t; +SELECT name FROM information_schema.INNODB_TABLESPACES WHERE name LIKE 'test%fts%index%'; +name diff --git a/mysql-test/suite/innodb_fts/t/innobase_drop_multi_fts_index_table.test b/mysql-test/suite/innodb_fts/t/innobase_drop_multi_fts_index_table.test new file mode 100644 index 00000000000..a32b31ca02b --- /dev/null +++ b/mysql-test/suite/innodb_fts/t/innobase_drop_multi_fts_index_table.test @@ -0,0 +1,9 @@ +CREATE TABLE t ( + a VARCHAR(8), + b VARCHAR(8), + FULLTEXT KEY idx1(a), + FULLTEXT KEY idx2(b) +); +ALTER TABLE t DROP KEY idx1, DROP KEY idx2, algorithm=inplace; +DROP TABLE t; +SELECT name FROM information_schema.INNODB_TABLESPACES WHERE name LIKE 'test%fts%index%'; diff --git a/storage/innobase/handler/handler0alter.cc b/storage/innobase/handler/handler0alter.cc index 48a8b929b8c..bcc1478c4a3 100644 --- a/storage/innobase/handler/handler0alter.cc +++ b/storage/innobase/handler/handler0alter.cc @@ -7238,7 +7238,8 @@ after a successful commit_try_norebuild() call. if (index->type & DICT_FTS) { assert(index->type == DICT_FTS || index->is_corrupted()); assert(index->table->fts); - ctx->fts_drop_aux_vec = new aux_name_vec_t; + if (ctx->fts_drop_aux_vec == nullptr) + ctx->fts_drop_aux_vec = new aux_name_vec_t; fts_drop_index(index->table, index, trx, ctx->fts_drop_aux_vec, adding_fts_index); } -- 2.43.5