mirror of
https://github.com/MariaDB/server.git
synced 2025-02-04 21:02:17 +01:00
2c567b2fa3
- This patch does the following: git revert --no-commit673243c893
git revert --no-commit6c669b9586
git revert --no-commitbacaf2d4f4
git checkout HEAD mysql-test git revert --no-commit1fd7d3a9ad
Above command reverts MDEV-29277, MDEV-25581, MDEV-29342. When binlog is enabled, trasaction takes a lot of time to do sync operation on innodb fts table. This leads to block of other transaction commit. To avoid this failure, remove the fulltext sync operation during transaction commit. So reverted MDEV-25581 related patches. We filed MDEV-31105 to avoid the memory consumption problem during fulltext sync operation.
80 lines
2.3 KiB
Text
80 lines
2.3 KiB
Text
--source include/have_innodb.inc
|
|
--source include/have_debug.inc
|
|
--source include/have_debug_sync.inc
|
|
|
|
CREATE TABLE t1(a VARCHAR(5),FULLTEXT KEY(a)) ENGINE=InnoDB;
|
|
SET DEBUG_SYNC = 'get_next_FTS_DOC_ID SIGNAL prepared WAIT_FOR race';
|
|
--send
|
|
REPLACE INTO t1(a) values('aaa');
|
|
|
|
connect(dml, localhost, root, ,);
|
|
SET DEBUG_SYNC = 'now WAIT_FOR prepared';
|
|
REPLACE INTO t1(a) VALUES('aaa');
|
|
SET DEBUG_SYNC = 'now SIGNAL race';
|
|
disconnect dml;
|
|
|
|
connection default;
|
|
reap;
|
|
SET DEBUG_SYNC = 'RESET';
|
|
|
|
DROP TABLE t1;
|
|
|
|
--echo #
|
|
--echo # MDEV-19529 InnoDB hang on DROP FULLTEXT INDEX
|
|
--echo #
|
|
|
|
CREATE TABLE t1(f1 CHAR(100), FULLTEXT(f1))ENGINE=InnoDB;
|
|
INSERT INTO t1 VALUES('test');
|
|
CREATE TABLE t2 (f1 char(100), FULLTEXT idx1(f1))ENGINE=InnoDB;
|
|
INSERT INTO t2 VALUES('mariadb');
|
|
|
|
connection default;
|
|
SET @saved_dbug = @@GLOBAL.debug_dbug;
|
|
SET GLOBAL debug_dbug ='+d,fts_instrument_sync_request,ib_optimize_wq_hang';
|
|
SET DEBUG_SYNC= 'fts_instrument_sync_request
|
|
SIGNAL drop_index_start WAIT_FOR sync_op';
|
|
send INSERT INTO t1 VALUES('Keyword');
|
|
|
|
connect(con1,localhost,root,,,);
|
|
SET DEBUG_SYNC='now WAIT_FOR drop_index_start';
|
|
SET DEBUG_SYNC= 'norebuild_fts_drop SIGNAL sync_op WAIT_FOR fts_drop_index';
|
|
send ALTER TABLE t2 drop index idx1;
|
|
|
|
connection default;
|
|
reap;
|
|
set DEBUG_SYNC= 'now SIGNAL fts_drop_index';
|
|
|
|
connection con1;
|
|
reap;
|
|
drop table t1, t2;
|
|
connection default;
|
|
SET @@GLOBAL.debug_dbug = @saved_dbug;
|
|
disconnect con1;
|
|
|
|
--echo #
|
|
--echo # MDEV-25984 Assertion `max_doc_id > 0' failed in fts_init_doc_id()
|
|
--echo #
|
|
call mtr.add_suppression("InnoDB: \\(Lock wait timeout\\) while getting next doc id for table `test`.`t1`");
|
|
|
|
CREATE TABLE t1(f1 CHAR(100), f2 INT, fulltext(f1))ENGINE=InnoDB;
|
|
INSERT INTO t1 VALUES("mariadb", 1), ("innodb", 1);
|
|
--source include/restart_mysqld.inc
|
|
SET DEBUG_SYNC='innodb_rollback_after_fts_lock SIGNAL insert_dml WAIT_FOR ddl_continue';
|
|
SEND ALTER TABLE t1 ADD UNIQUE INDEX(f2);
|
|
|
|
connect(con1,localhost,root,,,);
|
|
SET DEBUG_SYNC='now WAIT_FOR insert_dml';
|
|
SET DEBUG_SYNC='fts_cmp_set_sync_doc_id_retry SIGNAL ddl_continue WAIT_FOR dml_finish';
|
|
send INSERT INTO t1 VALUES("index", 2);
|
|
|
|
connection default;
|
|
--error ER_DUP_ENTRY
|
|
reap;
|
|
SET DEBUG_SYNC="now SIGNAL dml_finish";
|
|
connection con1;
|
|
reap;
|
|
SHOW CREATE TABLE t1;
|
|
connection default;
|
|
disconnect con1;
|
|
DROP TABLE t1;
|
|
set DEBUG_SYNC=RESET;
|