mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 02:46:29 +01:00 
			
		
		
		
	 2c567b2fa3
			
		
	
	
	2c567b2fa3
	
	
	
		
			
			- This patch does the following: git revert --no-commit673243c893git revert --no-commit6c669b9586git revert --no-commitbacaf2d4f4git checkout HEAD mysql-test git revert --no-commit1fd7d3a9adAbove 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.
		
			
				
	
	
		
			83 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| SET @old_log_output = @@global.log_output;
 | |
| SET @old_slow_query_log = @@global.slow_query_log;
 | |
| SET @old_general_log = @@global.general_log;
 | |
| SET @old_long_query_time = @@global.long_query_time;
 | |
| SET @old_debug = @@global.debug_dbug;
 | |
| SET GLOBAL log_output = 'TABLE';
 | |
| SET GLOBAL general_log = 1;
 | |
| SET GLOBAL slow_query_log = 1;
 | |
| SET GLOBAL long_query_time = 1;
 | |
| connect  con1,localhost,root,,;
 | |
| connect  con2,localhost,root,,;
 | |
| connection default;
 | |
| # Case 1: Sync blocks DML(insert) on the same table.
 | |
| CREATE TABLE t1 (
 | |
| FTS_DOC_ID BIGINT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
 | |
| title VARCHAR(200),
 | |
| FULLTEXT(title)
 | |
| ) ENGINE = InnoDB;
 | |
| connection con1;
 | |
| SET GLOBAL debug_dbug='+d,fts_instrument_sync_debug,fts_instrument_sync_sleep';
 | |
| SET DEBUG_SYNC= 'fts_sync_begin SIGNAL begin WAIT_FOR continue';
 | |
| INSERT INTO t1(title) VALUES('mysql database');
 | |
| connection con2;
 | |
| SET DEBUG_SYNC= 'now WAIT_FOR begin';
 | |
| SELECT * FROM t1 WHERE MATCH(title) AGAINST('mysql database');
 | |
| connection default;
 | |
| SET DEBUG_SYNC= 'now SIGNAL continue';
 | |
| connection con1;
 | |
| /* connection con1 */ INSERT INTO t1(title) VALUES('mysql database');
 | |
| connection con2;
 | |
| /* conneciton con2 */ SELECT * FROM t1 WHERE MATCH(title) AGAINST('mysql database');
 | |
| FTS_DOC_ID	title
 | |
| connection default;
 | |
| # make con1 & con2 show up in mysql.slow_log
 | |
| SELECT SLEEP(2);
 | |
| SLEEP(2)
 | |
| 0
 | |
| # slow log results should only contain INSERT INTO t1.
 | |
| SELECT sql_text FROM mysql.slow_log WHERE query_time >= '00:00:02';
 | |
| sql_text
 | |
| INSERT INTO t1(title) VALUES('mysql database')
 | |
| SET GLOBAL debug_dbug = @old_debug;
 | |
| TRUNCATE TABLE mysql.slow_log;
 | |
| DROP TABLE t1;
 | |
| # Case 2: Sync blocks DML(insert) on other tables.
 | |
| CREATE TABLE t1 (
 | |
| FTS_DOC_ID BIGINT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
 | |
| title VARCHAR(200),
 | |
| FULLTEXT(title)
 | |
| ) ENGINE = InnoDB;
 | |
| CREATE TABLE t2(id INT);
 | |
| connection con1;
 | |
| SET GLOBAL debug_dbug='+d,fts_instrument_sync_request,fts_instrument_sync_sleep';
 | |
| SET DEBUG_SYNC= 'fts_instrument_sync_request SIGNAL begin WAIT_FOR continue';
 | |
| INSERT INTO t1(title) VALUES('mysql database');
 | |
| connection con2;
 | |
| SET DEBUG_SYNC= 'now WAIT_FOR begin';
 | |
| INSERT INTO t2 VALUES(1);
 | |
| connection default;
 | |
| SET DEBUG_SYNC= 'now SIGNAL continue';
 | |
| connection con1;
 | |
| /* connection con1 */ INSERT INTO t1(title) VALUES('mysql database');
 | |
| connection con2;
 | |
| /* conneciton con2 */ INSERT INTO t2 VALUES(1);
 | |
| connection default;
 | |
| SET DEBUG_SYNC = 'RESET';
 | |
| # make con1 & con2 show up in mysql.slow_log
 | |
| SELECT SLEEP(2);
 | |
| SLEEP(2)
 | |
| 0
 | |
| # slow log results should be empty here.
 | |
| SELECT sql_text FROM mysql.slow_log WHERE query_time >= '00:00:02';
 | |
| sql_text
 | |
| SET GLOBAL debug_dbug = @old_debug;
 | |
| TRUNCATE TABLE mysql.slow_log;
 | |
| DROP TABLE t1,t2;
 | |
| disconnect con1;
 | |
| disconnect con2;
 | |
| # Restore slow log settings.
 | |
| SET GLOBAL log_output = @old_log_output;
 | |
| SET GLOBAL general_log = @old_general_log;
 | |
| SET GLOBAL slow_query_log = @old_slow_query_log;
 | |
| SET GLOBAL long_query_time = @old_long_query_time;
 |