mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
MDEV-27962 Instant DDL downgrades the MDL when table is empty
- Server incorrectly downgrading the MDL after prepare phase when
table is empty. mdl_exclusive_after_prepare is being set in
prepare phase only. But mdl_exclusive_after_prepare condition was
misplaced and checked before prepare phase by
commit d270525dfd
and it is now
changed to check after prepare phase.
- main.innodb_mysql_sync test case was changed to avoid locking
optimization when table is empty.
This commit is contained in:
@ -533,11 +533,28 @@ set DEBUG_SYNC='now SIGNAL go';
|
||||
connection default;
|
||||
reap;
|
||||
|
||||
disconnect con1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
SET DEBUG_SYNC=RESET;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-27962 Instant DDL downgrades the MDL when table is empty
|
||||
--echo #
|
||||
CREATE TABLE t1(f1 INT NOT NULL, f2 INT NOT NULL)ENGINE=InnoDB;
|
||||
SET DEBUG_SYNC="alter_table_inplace_after_lock_downgrade SIGNAL try_insert WAIT_FOR alter_progress";
|
||||
send ALTER TABLE t1 ADD INDEX(f1), ADD INDEX(f2);
|
||||
connection con1;
|
||||
SET SESSION lock_wait_timeout=1;
|
||||
SET DEBUG_SYNC="now WAIT_FOR try_insert";
|
||||
--error ER_LOCK_WAIT_TIMEOUT
|
||||
INSERT INTO t1 VALUES(1, 2);
|
||||
SET DEBUG_SYNC="now SIGNAL alter_progress";
|
||||
disconnect con1;
|
||||
connection default;
|
||||
reap;
|
||||
DROP TABLE t1;
|
||||
SET DEBUG_SYNC=reset;
|
||||
|
||||
--echo # End of 10.4 tests
|
||||
|
||||
SET GLOBAL innodb_purge_rseg_truncate_frequency = @save_frequency;
|
||||
|
Reference in New Issue
Block a user