|
| 1 | +# Tests in this file use both debug-only facilities as well as debug sync point. |
| 2 | +--source include/have_debug.inc |
| 3 | +--source include/have_debug_sync.inc |
| 4 | +--enable_connect_log |
| 5 | + |
| 6 | +--echo # |
| 7 | +--echo # Test for PS-9144 : Missing rows after ALGORITHM=INPLACE ALTER under |
| 8 | +--echo # same workload as PS-9092. |
| 9 | +--echo # |
| 10 | +CREATE TABLE t1 (pk CHAR(5) PRIMARY KEY); |
| 11 | +INSERT INTO t1 VALUES ('aaaaa'), ('bbbbb'), ('bbbcc'), ('ccccc'), ('ddddd'), ('eeeee'); |
| 12 | + |
| 13 | +set global innodb_purge_stop_now=ON; |
| 14 | +DELETE FROM t1 WHERE pk = 'bbbcc'; |
| 15 | + |
| 16 | +--connect (con1, localhost, root,,) |
| 17 | +SET DEBUG='+d,ddl_buf_add_two'; |
| 18 | +SET DEBUG_SYNC='ddl_bulk_inserter_latches_released SIGNAL latches_released WAIT_FOR go'; |
| 19 | +--echo # Send ALTER TABLE INPLACE which rebuilds table. |
| 20 | +--send ALTER TABLE t1 ENGINE=InnoDB, ALGORITHM=INPLACE |
| 21 | + |
| 22 | +--connection default |
| 23 | +SET DEBUG_SYNC='now WAIT_FOR latches_released'; |
| 24 | +SET GLOBAL innodb_purge_run_now=ON; |
| 25 | +--source include/wait_innodb_all_purged.inc |
| 26 | +SET DEBUG_SYNC='now SIGNAL go'; |
| 27 | + |
| 28 | +--connection con1 |
| 29 | +--echo # Reap ALTER TABLE |
| 30 | +--reap |
| 31 | + |
| 32 | +--echo # Before the fix row 'ddddd' was missing from the table after ALTER. |
| 33 | +SELECT * FROM t1; |
| 34 | + |
| 35 | +SET DEBUG='-d,ddl_buf_add_two'; |
| 36 | + |
| 37 | +--disconnect con1 |
| 38 | +--source include/wait_until_disconnected.inc |
| 39 | + |
| 40 | +--connection default |
| 41 | +--echo # Cleanup. |
| 42 | +SET DEBUG_SYNC= 'RESET'; |
| 43 | +DROP TABLE t1; |
| 44 | + |
| 45 | +--echo # |
| 46 | +--echo # Test for PS-9214 : Alter table online results in "duplicate key" |
| 47 | +--echo # error on the primary key (only index). |
| 48 | +--echo # |
| 49 | +CREATE TABLE t1 (pk CHAR(5) PRIMARY KEY); |
| 50 | +INSERT INTO t1 VALUES ('aaaaa'), ('bbbbb'), ('ccccc'), ('ddddd'), ('eeeee'); |
| 51 | + |
| 52 | +--connect (con1, localhost, root,,) |
| 53 | +SET DEBUG='+d,ddl_buf_add_two'; |
| 54 | +SET DEBUG_SYNC='ddl_bulk_inserter_latches_released SIGNAL latches_released WAIT_FOR go'; |
| 55 | +--echo # Send ALTER TABLE INPLACE which rebuilds table. |
| 56 | +--send ALTER TABLE t1 ENGINE=InnoDB, ALGORITHM=INPLACE |
| 57 | + |
| 58 | +--connection default |
| 59 | +SET DEBUG_SYNC='now WAIT_FOR latches_released'; |
| 60 | +INSERT INTO t1 VALUES ('ccaaa'); |
| 61 | +SET DEBUG_SYNC='now SIGNAL go'; |
| 62 | + |
| 63 | +--connection con1 |
| 64 | +--echo # Reap ALTER TABLE |
| 65 | +--echo # Before fix it failed with duplicate key error. |
| 66 | +--reap |
| 67 | + |
| 68 | +SET DEBUG='-d,ddl_buf_add_two'; |
| 69 | + |
| 70 | +--disconnect con1 |
| 71 | +--source include/wait_until_disconnected.inc |
| 72 | + |
| 73 | +--connection default |
| 74 | +--echo # Cleanup. |
| 75 | +SET DEBUG_SYNC= 'RESET'; |
| 76 | +DROP TABLE t1; |
| 77 | + |
| 78 | +--disable_connect_log |
0 commit comments