# # Bug 42074 concurrent optimize table and # alter table = Assertion failed: thd->is_error() # DROP TABLE IF EXISTS t1; # Create InnoDB table CREATE TABLE t1 (id INT) engine=innodb; # Connection 1 # Start optimizing table SET DEBUG_SYNC='ha_admin_try_alter SIGNAL optimize_started WAIT_FOR table_altered'; OPTIMIZE TABLE t1; # Connection 2 # Change table to engine=memory SET DEBUG_SYNC='now WAIT_FOR optimize_started'; ALTER TABLE t1 engine=memory; SET DEBUG_SYNC='now SIGNAL table_altered'; # Connection 1 # Complete optimization Table Op Msg_type Msg_text test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize error Got error -1 "Internal error < 0 (Not system error)" from storage engine test.t1 optimize status Operation failed Warnings: Error 1030 Got error -1 "Internal error < 0 (Not system error)" from storage engine DROP TABLE t1; SET DEBUG_SYNC='RESET'; # # Bug#47459 Assertion in Diagnostics_area::set_eof_status on # OPTIMIZE TABLE # DROP TABLE IF EXISTS t1; CREATE TABLE t1(a INT) ENGINE= InnoDB; # Connection con1 SET DEBUG_SYNC= "ha_admin_open_ltable SIGNAL opening WAIT_FOR dropped"; # Sending: OPTIMIZE TABLE t1; # Connection default SET DEBUG_SYNC= "now WAIT_FOR opening"; DROP TABLE t1; SET DEBUG_SYNC= "now SIGNAL dropped"; # Connection con1 # Reaping: OPTIMIZE TABLE t1 Table Op Msg_type Msg_text test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize error Table 'test.t1' doesn't exist test.t1 optimize status Operation failed Warnings: Error 1146 Table 'test.t1' doesn't exist # Connection default SET DEBUG_SYNC= "RESET"; # # Bug#53757 assert in mysql_truncate_by_delete # DROP TABLE IF EXISTS t1, t2; CREATE TABLE t1(a INT) Engine=InnoDB; CREATE TABLE t2(id INT); INSERT INTO t1 VALUES (1), (2); INSERT INTO t2 VALUES(connection_id()); SET DEBUG_SYNC= "open_and_process_table SIGNAL opening WAIT_FOR killed"; # Sending: (not reaped since connection is killed later) TRUNCATE t1; SET DEBUG_SYNC= "now WAIT_FOR opening"; SELECT ((@id := id) - id) FROM t2; ((@id := id) - id) 0 KILL @id; SET DEBUG_SYNC= "now SIGNAL killed"; DROP TABLE t1, t2; SET DEBUG_SYNC= "RESET"; # # Bug#58933 Assertion `thd- >is_error()' fails on shutdown with ongoing # OPTIMIZE TABLE # DROP TABLE IF EXISTS t1; CREATE TABLE t1 (a INT) ENGINE=InnoDB; INSERT INTO t1 VALUES (1), (2); # Connection con1 SET DEBUG_SYNC= 'ha_admin_open_ltable SIGNAL waiting WAIT_FOR killed'; # Sending: OPTIMIZE TABLE t1; # Connection default SET DEBUG_SYNC= 'now WAIT_FOR waiting'; KILL QUERY ID; SET DEBUG_SYNC= 'now SIGNAL killed'; # Connection con1 # Reaping: OPTIMIZE TABLE t1 Table Op Msg_type Msg_text test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status Operation failed # Connection default DROP TABLE t1; SET DEBUG_SYNC= 'RESET'; # # Bug#42230 during add index, cannot do queries on storage engines # that implement add_index # DROP DATABASE IF EXISTS db1; DROP TABLE IF EXISTS t1; # Test 1: Secondary index, should not block reads (original test case). # Connection default CREATE DATABASE db1; CREATE TABLE db1.t1(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, value INT) engine=innodb; INSERT INTO db1.t1(value) VALUES (1), (2); SET DEBUG_SYNC= "alter_table_manage_keys SIGNAL manage WAIT_FOR query"; # Sending: ALTER TABLE db1.t1 ADD INDEX(value); # Connection con1 SET DEBUG_SYNC= "now WAIT_FOR manage"; USE db1; SELECT * FROM t1; id value 1 1 2 2 SET DEBUG_SYNC= "now SIGNAL query"; # Connection default # Reaping: ALTER TABLE db1.t1 ADD INDEX(value) DROP DATABASE db1; # Test 2: Primary index (implicit), should block reads. CREATE TABLE t1(a INT NOT NULL, b INT NOT NULL) engine=innodb; SET DEBUG_SYNC= "alter_table_manage_keys SIGNAL manage WAIT_FOR query"; # Sending: ALTER TABLE t1 ADD UNIQUE INDEX(a); # Connection con1 SET DEBUG_SYNC= "now WAIT_FOR manage"; USE test; # Sending: SELECT * FROM t1; # Connection con2 # Waiting for SELECT to be blocked by the metadata lock on t1 SET DEBUG_SYNC= "now SIGNAL query"; # Connection default # Reaping: ALTER TABLE t1 ADD UNIQUE INDEX(a) # Connection con1 # Reaping: SELECT * FROM t1 a b # Test 3: Primary index (explicit), should block reads. # Connection default ALTER TABLE t1 DROP INDEX a; SET DEBUG_SYNC= "alter_table_manage_keys SIGNAL manage WAIT_FOR query"; # Sending: ALTER TABLE t1 ADD PRIMARY KEY (a); # Connection con1 SET DEBUG_SYNC= "now WAIT_FOR manage"; # Sending: SELECT * FROM t1; # Connection con2 # Waiting for SELECT to be blocked by the metadata lock on t1 SET DEBUG_SYNC= "now SIGNAL query"; # Connection default # Reaping: ALTER TABLE t1 ADD PRIMARY KEY (a) # Connection con1 # Reaping: SELECT * FROM t1 a b # Test 4: Secondary unique index, should not block reads. # Connection default SET DEBUG_SYNC= "alter_table_manage_keys SIGNAL manage WAIT_FOR query"; # Sending: ALTER TABLE t1 ADD UNIQUE (b); # Connection con1 SET DEBUG_SYNC= "now WAIT_FOR manage"; SELECT * FROM t1; a b SET DEBUG_SYNC= "now SIGNAL query"; # Connection default # Reaping: ALTER TABLE t1 ADD UNIQUE (b) SET DEBUG_SYNC= "RESET"; DROP TABLE t1; # # Bug#11853126 RE-ENABLE CONCURRENT READS WHILE CREATING SECONDARY INDEX # IN INNODB # DROP TABLE IF EXISTS t1; CREATE TABLE t1(a INT NOT NULL, b INT NOT NULL) engine=innodb; INSERT INTO t1 VALUES (1, 12345), (2, 23456); # Connection con1 SET SESSION debug_dbug= "+d,alter_table_rollback_new_index"; ALTER TABLE t1 ADD PRIMARY KEY(a); ERROR HY000: Unknown error SELECT * FROM t1; a b 1 12345 2 23456 # Connection default SELECT * FROM t1; a b 1 12345 2 23456 DROP TABLE t1;