mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
MDEV-10548: Some of the debug sync waits do not work with InnoDB 5.7 (branch bb-10.2-jan)
Fixed auto_increment_dup test. Current behavior is correct for repeatable read (and serializable) isolation levels. Old behavior is correct for read committed isolation level.
This commit is contained in:
@ -10,6 +10,123 @@
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
set global transaction isolation level repeatable read;
|
||||
|
||||
CREATE TABLE t1(
|
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
k INT,
|
||||
c CHAR(1),
|
||||
UNIQUE KEY(k)) ENGINE=InnoDB;
|
||||
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
--enable_info
|
||||
|
||||
--echo #
|
||||
--echo # Sequential execution
|
||||
--echo #
|
||||
|
||||
INSERT INTO t1(k) VALUES (1), (2), (3) ON DUPLICATE KEY UPDATE c='1';
|
||||
|
||||
--echo #
|
||||
--echo # 1 duplicate
|
||||
--echo #
|
||||
INSERT INTO t1(k) VALUES (2), (4), (5) ON DUPLICATE KEY UPDATE c='2';
|
||||
--echo #
|
||||
--echo # 5 rows, consecutive auto_inc values
|
||||
--echo #
|
||||
|
||||
SELECT * FROM t1 order by k;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1(
|
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
k INT,
|
||||
c CHAR(1),
|
||||
UNIQUE KEY(k)) ENGINE=InnoDB;
|
||||
|
||||
--echo #
|
||||
--echo # Sequential execution 2
|
||||
--echo #
|
||||
|
||||
INSERT INTO t1(k) VALUES (2), (4), (5) ON DUPLICATE KEY UPDATE c='2';
|
||||
|
||||
--echo #
|
||||
--echo # 1 duplicate
|
||||
--echo #
|
||||
INSERT INTO t1(k) VALUES (1), (2), (3) ON DUPLICATE KEY UPDATE c='1';
|
||||
--echo #
|
||||
--echo # 5 rows, consecutive auto_inc values
|
||||
--echo #
|
||||
|
||||
SELECT * FROM t1 order by k;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1(
|
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
k INT,
|
||||
c CHAR(1),
|
||||
UNIQUE KEY(k)) ENGINE=InnoDB;
|
||||
|
||||
--echo #
|
||||
--echo # Parallel execution
|
||||
--echo #
|
||||
|
||||
--connect(con1, localhost, root)
|
||||
--connect(con2, localhost, root)
|
||||
|
||||
--connection con1
|
||||
--echo #
|
||||
--echo # Connection 1
|
||||
--echo #
|
||||
SET DEBUG_SYNC=IF(@@innodb_autoinc_lock_mode > 0, 'ha_write_row_end WAIT_FOR continue', 'RESET');
|
||||
--send INSERT INTO t1(k) VALUES (1), (2), (3) ON DUPLICATE KEY UPDATE c='1'
|
||||
--connection con2
|
||||
--echo #
|
||||
--echo # Connection 2
|
||||
--echo #
|
||||
SET DEBUG_SYNC=IF(@@innodb_autoinc_lock_mode > 0, 'execute_command_after_close_tables SIGNAL continue', 'RESET');
|
||||
--error 1205
|
||||
INSERT INTO t1(k) VALUES (2), (4), (5) ON DUPLICATE KEY UPDATE c='2';
|
||||
|
||||
--connection con1
|
||||
--echo #
|
||||
--echo # 2 duplicates
|
||||
--echo #
|
||||
--reap
|
||||
--connection default
|
||||
--echo #
|
||||
--echo # 3 rows
|
||||
--echo #
|
||||
|
||||
SELECT * FROM t1 order by k;
|
||||
|
||||
INSERT INTO t1(k) VALUES (2), (4), (5) ON DUPLICATE KEY UPDATE c='2';
|
||||
|
||||
SELECT * FROM t1 order by k;
|
||||
|
||||
|
||||
--disable_info
|
||||
|
||||
--disconnect con1
|
||||
--disconnect con2
|
||||
|
||||
--connection default
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Parallel test with read_committed
|
||||
--echo #
|
||||
|
||||
set global transaction isolation level read committed;
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1(
|
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
k INT,
|
||||
@ -23,10 +140,16 @@ CREATE TABLE t1(
|
||||
|
||||
--connection con1
|
||||
|
||||
--echo #
|
||||
--echo # Connection 1
|
||||
--echo #
|
||||
SET DEBUG_SYNC='ha_write_row_end SIGNAL continue2 WAIT_FOR continue1';
|
||||
--send INSERT INTO t1(k) VALUES (1), (2), (3) ON DUPLICATE KEY UPDATE c='1'
|
||||
|
||||
--connection con2
|
||||
--echo #
|
||||
--echo # Connection 2
|
||||
--echo #
|
||||
SET DEBUG_SYNC='ha_write_row_start WAIT_FOR continue2';
|
||||
SET DEBUG_SYNC='after_mysql_insert SIGNAL continue1';
|
||||
INSERT INTO t1(k) VALUES (2), (4), (5) ON DUPLICATE KEY UPDATE c='2';
|
||||
@ -35,6 +158,10 @@ INSERT INTO t1(k) VALUES (2), (4), (5) ON DUPLICATE KEY UPDATE c='2';
|
||||
--reap
|
||||
--disable_info
|
||||
SET DEBUG_SYNC='RESET';
|
||||
|
||||
--echo #
|
||||
--echo # 5 rows, gap in autoinc values
|
||||
--echo #
|
||||
SELECT * FROM t1 ORDER BY k;
|
||||
|
||||
--disconnect con1
|
||||
@ -43,3 +170,6 @@ SELECT * FROM t1 ORDER BY k;
|
||||
--connection default
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
set global transaction isolation level repeatable read;
|
||||
|
||||
|
Reference in New Issue
Block a user