mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
MDEV-19647 Server hangs after dropping full text indexes and restart
- There is no need to add the table in fts_optimize_wq if there is no fts indexes associated with it.
This commit is contained in:
@ -734,15 +734,21 @@ count(*)
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
"----------Test27---------"
|
"----------Test27---------"
|
||||||
CREATE TABLE t1 (id INT,char_column VARCHAR(60));
|
CREATE TABLE t1 (id INT,char_column VARCHAR(60));
|
||||||
|
CREATE TABLE t2 (FTS_DOC_ID BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, a TEXT)ENGINE=InnoDB;
|
||||||
|
ALTER TABLE t2 DROP a;
|
||||||
SET @@autocommit=0;
|
SET @@autocommit=0;
|
||||||
CREATE FULLTEXT INDEX i ON t1 (char_column);
|
CREATE FULLTEXT INDEX i ON t1 (char_column);
|
||||||
INSERT INTO t1 values (1,'aaa');
|
INSERT INTO t1 values (1,'aaa');
|
||||||
"restart server..."
|
"restart server..."
|
||||||
# Restart the server
|
SHOW CREATE TABLE t2;
|
||||||
--source include/restart_mysqld.inc
|
Table Create Table
|
||||||
DELETE FROM t1 WHERE MATCH(char_column) AGAINST ('bbb')
|
t2 CREATE TABLE `t2` (
|
||||||
|
`FTS_DOC_ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||||
|
PRIMARY KEY (`FTS_DOC_ID`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||||
|
DELETE FROM t1 WHERE MATCH(char_column) AGAINST ('bbb');
|
||||||
SET @@autocommit=1;
|
SET @@autocommit=1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1, t2;
|
||||||
"----------Test28---------"
|
"----------Test28---------"
|
||||||
drop table if exists `fts_test`;
|
drop table if exists `fts_test`;
|
||||||
Warnings:
|
Warnings:
|
||||||
|
@ -667,15 +667,18 @@ DROP TABLE t1;
|
|||||||
--echo "----------Test27---------"
|
--echo "----------Test27---------"
|
||||||
#27 Crash after server restart
|
#27 Crash after server restart
|
||||||
CREATE TABLE t1 (id INT,char_column VARCHAR(60));
|
CREATE TABLE t1 (id INT,char_column VARCHAR(60));
|
||||||
|
CREATE TABLE t2 (FTS_DOC_ID BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, a TEXT)ENGINE=InnoDB;
|
||||||
|
ALTER TABLE t2 DROP a;
|
||||||
SET @@autocommit=0;
|
SET @@autocommit=0;
|
||||||
CREATE FULLTEXT INDEX i ON t1 (char_column);
|
CREATE FULLTEXT INDEX i ON t1 (char_column);
|
||||||
INSERT INTO t1 values (1,'aaa');
|
INSERT INTO t1 values (1,'aaa');
|
||||||
echo "restart server..."
|
echo "restart server...";
|
||||||
# Restart the server
|
# Restart the server
|
||||||
--source include/restart_mysqld.inc
|
--source include/restart_mysqld.inc
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
DELETE FROM t1 WHERE MATCH(char_column) AGAINST ('bbb');
|
DELETE FROM t1 WHERE MATCH(char_column) AGAINST ('bbb');
|
||||||
SET @@autocommit=1;
|
SET @@autocommit=1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
--echo "----------Test28---------"
|
--echo "----------Test28---------"
|
||||||
drop table if exists `fts_test`;
|
drop table if exists `fts_test`;
|
||||||
|
@ -2614,6 +2614,12 @@ UNIV_INTERN void fts_optimize_add_table(dict_table_t* table)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* If there is no fts index present then don't add to
|
||||||
|
optimize queue. */
|
||||||
|
if (!ib_vector_size(table->fts->indexes)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* Make sure table with FTS index cannot be evicted */
|
/* Make sure table with FTS index cannot be evicted */
|
||||||
if (table->can_be_evicted) {
|
if (table->can_be_evicted) {
|
||||||
dict_table_move_from_lru_to_non_lru(table);
|
dict_table_move_from_lru_to_non_lru(table);
|
||||||
|
@ -2614,6 +2614,12 @@ UNIV_INTERN void fts_optimize_add_table(dict_table_t* table)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* If there is no fts index present then don't add to
|
||||||
|
optimize queue. */
|
||||||
|
if (!ib_vector_size(table->fts->indexes)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* Make sure table with FTS index cannot be evicted */
|
/* Make sure table with FTS index cannot be evicted */
|
||||||
if (table->can_be_evicted) {
|
if (table->can_be_evicted) {
|
||||||
dict_table_move_from_lru_to_non_lru(table);
|
dict_table_move_from_lru_to_non_lru(table);
|
||||||
|
Reference in New Issue
Block a user