diff options
Diffstat (limited to 'mysql-test')
-rw-r--r-- | mysql-test/main/mdl.result | 21 | ||||
-rw-r--r-- | mysql-test/main/mdl.test | 21 | ||||
-rw-r--r-- | mysql-test/suite/innodb/r/alter_partitioned.result | 4 | ||||
-rw-r--r-- | mysql-test/suite/innodb/r/innodb_defrag_stats.result | 1 | ||||
-rw-r--r-- | mysql-test/suite/innodb/r/innodb_stats_drop_locked.result | 1 | ||||
-rw-r--r-- | mysql-test/suite/innodb/t/alter_partitioned.test | 4 | ||||
-rw-r--r-- | mysql-test/suite/innodb/t/innodb_defrag_stats.test | 2 | ||||
-rw-r--r-- | mysql-test/suite/innodb/t/innodb_stats_drop_locked.test | 2 | ||||
-rw-r--r-- | mysql-test/suite/parts/r/partition_special_innodb.result | 60 | ||||
-rw-r--r-- | mysql-test/suite/parts/t/partition_special_innodb-master.opt | 1 | ||||
-rw-r--r-- | mysql-test/suite/parts/t/partition_special_innodb.test | 67 |
11 files changed, 78 insertions, 106 deletions
diff --git a/mysql-test/main/mdl.result b/mysql-test/main/mdl.result index fbf80312ac0..343895803b2 100644 --- a/mysql-test/main/mdl.result +++ b/mysql-test/main/mdl.result @@ -8,20 +8,23 @@ CREATE TABLE t1(a INT) ENGINE=InnoDB; CREATE TABLE t3(a INT) ENGINE=myisam; LOCK TABLES t1 WRITE CONCURRENT, t1 AS t2 READ; -SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; +SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info +WHERE TABLE_NAME NOT LIKE 'innodb_%_stats'; LOCK_MODE LOCK_TYPE TABLE_SCHEMA TABLE_NAME MDL_BACKUP_TRANS_DML Backup lock MDL_SHARED_NO_READ_WRITE Table metadata lock test t1 UNLOCK TABLES; LOCK TABLES t1 AS t2 READ, t1 WRITE CONCURRENT; -SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; +SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info +WHERE TABLE_NAME NOT LIKE 'innodb_%_stats'; LOCK_MODE LOCK_TYPE TABLE_SCHEMA TABLE_NAME MDL_BACKUP_TRANS_DML Backup lock MDL_SHARED_WRITE Table metadata lock test t1 MDL_SHARED_READ_ONLY Table metadata lock test t1 UNLOCK TABLES; LOCK TABLES t1 WRITE CONCURRENT, t3 WRITE; -SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; +SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info +WHERE TABLE_NAME NOT LIKE 'innodb_%_stats'; LOCK_MODE LOCK_TYPE TABLE_SCHEMA TABLE_NAME MDL_BACKUP_DDL Backup lock MDL_BACKUP_DML Backup lock @@ -30,7 +33,8 @@ MDL_SHARED_NO_READ_WRITE Table metadata lock test t3 MDL_INTENTION_EXCLUSIVE Schema metadata lock test UNLOCK TABLES; LOCK TABLES t3 WRITE, t1 WRITE CONCURRENT; -SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; +SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info +WHERE TABLE_NAME NOT LIKE 'innodb_%_stats'; LOCK_MODE LOCK_TYPE TABLE_SCHEMA TABLE_NAME MDL_BACKUP_DDL Backup lock MDL_BACKUP_DML Backup lock @@ -39,7 +43,8 @@ MDL_SHARED_NO_READ_WRITE Table metadata lock test t3 MDL_INTENTION_EXCLUSIVE Schema metadata lock test UNLOCK TABLES; LOCK TABLES t1 WRITE, mysql.user WRITE; -SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; +SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info +WHERE TABLE_NAME NOT LIKE 'innodb_%_stats'; LOCK_MODE LOCK_TYPE TABLE_SCHEMA TABLE_NAME MDL_BACKUP_DDL Backup lock MDL_SHARED_NO_READ_WRITE Table metadata lock mysql user @@ -67,7 +72,8 @@ connection locker; insert into t1 values (1); connection default; connection default; -SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; +SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info +WHERE TABLE_NAME NOT LIKE 'innodb_%_stats'; LOCK_MODE LOCK_TYPE TABLE_SCHEMA TABLE_NAME MDL_BACKUP_FTWRL2 Backup lock MDL_SHARED_WRITE Table metadata lock test t1 @@ -80,7 +86,8 @@ connection locker; insert into t3 values (2); connection default; connection default; -SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; +SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info +WHERE TABLE_NAME NOT LIKE 'innodb_%_stats'; LOCK_MODE LOCK_TYPE TABLE_SCHEMA TABLE_NAME MDL_BACKUP_FTWRL2 Backup lock MDL_SHARED_WRITE Table metadata lock test t3 diff --git a/mysql-test/main/mdl.test b/mysql-test/main/mdl.test index 0c1b7a13a0c..f7fac0a062d 100644 --- a/mysql-test/main/mdl.test +++ b/mysql-test/main/mdl.test @@ -12,19 +12,24 @@ CREATE TABLE t1(a INT) ENGINE=InnoDB; CREATE TABLE t3(a INT) ENGINE=myisam; LOCK TABLES t1 WRITE CONCURRENT, t1 AS t2 READ; -SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; +SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info +WHERE TABLE_NAME NOT LIKE 'innodb_%_stats'; UNLOCK TABLES; LOCK TABLES t1 AS t2 READ, t1 WRITE CONCURRENT; -SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; +SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info +WHERE TABLE_NAME NOT LIKE 'innodb_%_stats'; UNLOCK TABLES; LOCK TABLES t1 WRITE CONCURRENT, t3 WRITE; -SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; +SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info +WHERE TABLE_NAME NOT LIKE 'innodb_%_stats'; UNLOCK TABLES; LOCK TABLES t3 WRITE, t1 WRITE CONCURRENT; -SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; +SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info +WHERE TABLE_NAME NOT LIKE 'innodb_%_stats'; UNLOCK TABLES; LOCK TABLES t1 WRITE, mysql.user WRITE; -SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; +SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info +WHERE TABLE_NAME NOT LIKE 'innodb_%_stats'; UNLOCK TABLES; --error ER_CANT_LOCK_LOG_TABLE LOCK TABLES mysql.general_log WRITE; @@ -55,7 +60,8 @@ let $wait_condition= where state = "Waiting for backup lock"; --source include/wait_condition.inc connection default; -SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; +SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info +WHERE TABLE_NAME NOT LIKE 'innodb_%_stats'; unlock tables; connection locker; --reap @@ -72,7 +78,8 @@ let $wait_condition= where state = "Waiting for backup lock"; --source include/wait_condition.inc connection default; -SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; +SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info +WHERE TABLE_NAME NOT LIKE 'innodb_%_stats'; unlock tables; connection locker; --reap diff --git a/mysql-test/suite/innodb/r/alter_partitioned.result b/mysql-test/suite/innodb/r/alter_partitioned.result index 6c32142db9a..e46fa66e43b 100644 --- a/mysql-test/suite/innodb/r/alter_partitioned.result +++ b/mysql-test/suite/innodb/r/alter_partitioned.result @@ -11,6 +11,8 @@ SAVEPOINT sp; INSERT INTO t1 (pk) VALUES (1); ROLLBACK TO SAVEPOINT sp; connection default; +SET @save_timeout=@@lock_wait_timeout; +SET @save_innodb_timeout=@@innodb_lock_wait_timeout; SET lock_wait_timeout=0; SET innodb_lock_wait_timeout=0; ALTER TABLE t1 PARTITION BY HASH(pk); @@ -24,6 +26,8 @@ t1 CREATE TABLE `t1` ( connection con1; COMMIT; connection default; +SET lock_wait_timeout=@save_timeout; +SET innodb_lock_wait_timeout=@save_innodb_timeout; ALTER TABLE t2 PARTITION BY HASH(pk); disconnect con1; connection default; diff --git a/mysql-test/suite/innodb/r/innodb_defrag_stats.result b/mysql-test/suite/innodb/r/innodb_defrag_stats.result index c2fd378cb4b..2dae62ebbda 100644 --- a/mysql-test/suite/innodb/r/innodb_defrag_stats.result +++ b/mysql-test/suite/innodb/r/innodb_defrag_stats.result @@ -116,6 +116,7 @@ select count(stat_value) > 0 from mysql.innodb_index_stats where table_name = 't count(stat_value) > 0 1 # Clean up +ALTER TABLE t2 STATS_PERSISTENT=1; DROP TABLE t2; select * from mysql.innodb_index_stats where table_name = 't2'; database_name table_name index_name last_update stat_name stat_value sample_size stat_description diff --git a/mysql-test/suite/innodb/r/innodb_stats_drop_locked.result b/mysql-test/suite/innodb/r/innodb_stats_drop_locked.result index 7a6d5c46aab..13f21463390 100644 --- a/mysql-test/suite/innodb/r/innodb_stats_drop_locked.result +++ b/mysql-test/suite/innodb/r/innodb_stats_drop_locked.result @@ -26,6 +26,7 @@ innodb_stats_drop_locked innodb_stats_drop_locked innodb_stats_drop_locked connect con1,localhost,root,,; +SET innodb_lock_wait_timeout=1; ALTER TABLE innodb_stats_drop_locked DROP INDEX c_key; ERROR HY000: Lock wait timeout exceeded; try restarting transaction SHOW CREATE TABLE innodb_stats_drop_locked; diff --git a/mysql-test/suite/innodb/t/alter_partitioned.test b/mysql-test/suite/innodb/t/alter_partitioned.test index 4990c265b5e..aaada25dcbe 100644 --- a/mysql-test/suite/innodb/t/alter_partitioned.test +++ b/mysql-test/suite/innodb/t/alter_partitioned.test @@ -18,6 +18,8 @@ INSERT INTO t1 (pk) VALUES (1); ROLLBACK TO SAVEPOINT sp; --connection default +SET @save_timeout=@@lock_wait_timeout; +SET @save_innodb_timeout=@@innodb_lock_wait_timeout; SET lock_wait_timeout=0; SET innodb_lock_wait_timeout=0; --error ER_LOCK_WAIT_TIMEOUT @@ -27,6 +29,8 @@ SHOW CREATE TABLE t1; --connection con1 COMMIT; --connection default +SET lock_wait_timeout=@save_timeout; +SET innodb_lock_wait_timeout=@save_innodb_timeout; ALTER TABLE t2 PARTITION BY HASH(pk); # Cleanup --disconnect con1 diff --git a/mysql-test/suite/innodb/t/innodb_defrag_stats.test b/mysql-test/suite/innodb/t/innodb_defrag_stats.test index 248fd24f0c8..2dc5e653091 100644 --- a/mysql-test/suite/innodb/t/innodb_defrag_stats.test +++ b/mysql-test/suite/innodb/t/innodb_defrag_stats.test @@ -82,6 +82,8 @@ select count(stat_value) > 0 from mysql.innodb_index_stats where table_name = 't select count(stat_value) > 0 from mysql.innodb_index_stats where table_name = 't2' and stat_name in ('n_leaf_pages_defrag'); --echo # Clean up +# DROP TABLE will not touch persistent statistics if the table has none! +ALTER TABLE t2 STATS_PERSISTENT=1; DROP TABLE t2; select * from mysql.innodb_index_stats where table_name = 't2'; diff --git a/mysql-test/suite/innodb/t/innodb_stats_drop_locked.test b/mysql-test/suite/innodb/t/innodb_stats_drop_locked.test index ab4cc78b337..6532816bb37 100644 --- a/mysql-test/suite/innodb/t/innodb_stats_drop_locked.test +++ b/mysql-test/suite/innodb/t/innodb_stats_drop_locked.test @@ -23,6 +23,8 @@ WHERE table_name='innodb_stats_drop_locked' FOR UPDATE; -- connect (con1,localhost,root,,) +SET innodb_lock_wait_timeout=1; + --error ER_LOCK_WAIT_TIMEOUT ALTER TABLE innodb_stats_drop_locked DROP INDEX c_key; diff --git a/mysql-test/suite/parts/r/partition_special_innodb.result b/mysql-test/suite/parts/r/partition_special_innodb.result index 37191eae502..c36eda2345a 100644 --- a/mysql-test/suite/parts/r/partition_special_innodb.result +++ b/mysql-test/suite/parts/r/partition_special_innodb.result @@ -216,14 +216,12 @@ ENGINE = InnoDB PARTITION BY HASH (a) PARTITIONS 2; connect con1, localhost, root,,; -connect con2, localhost, root,,; -connection con1; SET autocommit=OFF; START TRANSACTION; INSERT INTO t1 VALUES (NULL, 'first row t2'); -connection con2; +connect con2, localhost, root,,; SET autocommit=OFF; -SET SESSION lock_wait_timeout= 1; +SET SESSION lock_wait_timeout= 0; ALTER TABLE t1 AUTO_INCREMENT = 10; ERROR HY000: Lock wait timeout exceeded; try restarting transaction disconnect con2; @@ -233,17 +231,12 @@ DROP TABLE t1; # # Bug#53676: Unexpected errors and possible table corruption on # ADD PARTITION and LOCK TABLE -connect con1,localhost,root,,; CREATE TABLE t1 ( i INT NOT NULL AUTO_INCREMENT PRIMARY KEY, f INT ) ENGINE = InnoDB PARTITION BY HASH(i) PARTITIONS 2; INSERT INTO t1 VALUES (2, 2), (3, 3), (4, 4), (5, 5); -connect con2,localhost,root,,; -SET lock_wait_timeout = 2; -connection con1; -#Connection 1 locks the table LOCK TABLE t1 READ; -connection con2; -# Connection 2 tries to add partitions: +connect con2,localhost,root,,; +SET lock_wait_timeout = 0; # First attempt: lock wait timeout (as expected) ALTER TABLE t1 ADD PARTITION PARTITIONS 2; ERROR HY000: Lock wait timeout exceeded; try restarting transaction @@ -263,12 +256,10 @@ i f 3 3 4 4 5 5 -connection con1; -# Connection 1 unlocks the table and locks it again: +connection default; UNLOCK TABLES; LOCK TABLE t1 READ; connection con2; -# Connection 2 tries again to add partitions: # Third attempt: says that the table does not exist ALTER TABLE t1 ADD PARTITION PARTITIONS 2; ERROR HY000: Lock wait timeout exceeded; try restarting transaction @@ -276,22 +267,21 @@ ERROR HY000: Lock wait timeout exceeded; try restarting transaction CHECK TABLE t1; Table Op Msg_type Msg_text test.t1 check status OK -connection con1; +connection default; UNLOCK TABLES; connection con2; DROP TABLE t1; -connection con1; +connection default; CREATE TABLE t2 ( i INT NOT NULL AUTO_INCREMENT PRIMARY KEY, f INT ) ENGINE = InnoDB PARTITION BY HASH(i) PARTITIONS 2; -connection con2; -SET lock_wait_timeout = 2; -connection con1; LOCK TABLE t2 READ; connection con2; +SET lock_wait_timeout = 0; ALTER TABLE t2 ADD PARTITION PARTITIONS 2; ERROR HY000: Lock wait timeout exceeded; try restarting transaction +SET lock_wait_timeout = 2; ALTER TABLE t2 ADD PARTITION PARTITIONS 2; -connection con1; +connection default; UNLOCK TABLES; connection con2; connect con3,localhost,root,,; @@ -301,31 +291,23 @@ test.t2 check status OK SELECT * FROM t2; i f DROP TABLE t2; -connection con1; +connection default; CREATE TABLE t3 ( i INT NOT NULL AUTO_INCREMENT PRIMARY KEY, f INT ) ENGINE = InnoDB PARTITION BY HASH(i) PARTITIONS 2; -connection con2; -SET lock_wait_timeout = 2; -connection con1; -# Connection 1 locks the table LOCK TABLE t3 READ; connection con2; -# Connection 2 tries to add partitions (timeout): +SET lock_wait_timeout = 0; ALTER TABLE t3 ADD PARTITION PARTITIONS 2; ERROR HY000: Lock wait timeout exceeded; try restarting transaction connection con3; -SET lock_wait_timeout = 2; -# Connection 3 tries to add partitions (partition already exists): +SET lock_wait_timeout = 0; ALTER TABLE t3 ADD PARTITION PARTITIONS 2; ERROR HY000: Lock wait timeout exceeded; try restarting transaction connect con4,localhost,root,,; -# Connection 4 tries to rename the table: RENAME TABLE t3 TO t4; -connection con1; -# Connection 1 unlocks the table: +connection default; UNLOCK TABLES; connection con4; -# Connection 4 gets error on rename: connect con5,localhost,root,,; # SHOW TABLES returns the table (not renamed): SHOW TABLES; @@ -339,7 +321,6 @@ disconnect con5; disconnect con4; disconnect con3; disconnect con2; -disconnect con1; connection default; CREATE TABLE t1( f1 INT, f2 VARCHAR(10) CHARSET ascii, @@ -350,17 +331,12 @@ PARTITION p2 VALUES LESS THAN (100)); ALTER TABLE t1 convert to charset ascii collate ascii_bin, ALGORITHM=INSTANT; DROP TABLE t1; # Test WRITE LOCK. -connect con1,localhost,root,,; CREATE TABLE t1 ( i INT NOT NULL AUTO_INCREMENT PRIMARY KEY, f INT ) ENGINE = InnoDB PARTITION BY HASH(i) PARTITIONS 2; INSERT INTO t1 VALUES (3, 3), (4, 4); -connect con2,localhost,root,,; -SET lock_wait_timeout = 2; -connection con1; -#Connection 1 locks the table LOCK TABLE t1 WRITE; -connection con2; -# Check that we still can SELECT, but not insert/update/delete. +connect con2,localhost,root,,; +SET lock_wait_timeout = 0; # Check that we only can select, not insert/update/delete. INSERT INTO t1 VALUES (NULL, 1), (NULL, 2), (10, 10), (11, 11); ERROR HY000: Lock wait timeout exceeded; try restarting transaction @@ -370,9 +346,9 @@ DELETE FROM t1 WHERE i = 10; ERROR HY000: Lock wait timeout exceeded; try restarting transaction SELECT * FROM t1; ERROR HY000: Lock wait timeout exceeded; try restarting transaction -connection con1; +connection default; UNLOCK TABLES; connection con2; DROP TABLE t1; -disconnect con1; +disconnect con2; connection default; diff --git a/mysql-test/suite/parts/t/partition_special_innodb-master.opt b/mysql-test/suite/parts/t/partition_special_innodb-master.opt deleted file mode 100644 index 79851bac7b2..00000000000 --- a/mysql-test/suite/parts/t/partition_special_innodb-master.opt +++ /dev/null @@ -1 +0,0 @@ ---loose-innodb-lock-wait-timeout=2 --loose-innodb-file-per-table diff --git a/mysql-test/suite/parts/t/partition_special_innodb.test b/mysql-test/suite/parts/t/partition_special_innodb.test index a25feed08ef..6273cc5cb2a 100644 --- a/mysql-test/suite/parts/t/partition_special_innodb.test +++ b/mysql-test/suite/parts/t/partition_special_innodb.test @@ -59,16 +59,13 @@ PARTITION BY HASH (a) PARTITIONS 2; connect (con1, localhost, root,,); -connect (con2, localhost, root,,); - ---connection con1 SET autocommit=OFF; START TRANSACTION; INSERT INTO t1 VALUES (NULL, 'first row t2'); ---connection con2 +connect (con2, localhost, root,,); SET autocommit=OFF; -SET SESSION lock_wait_timeout= 1; +SET SESSION lock_wait_timeout= 0; --error ER_LOCK_WAIT_TIMEOUT ALTER TABLE t1 AUTO_INCREMENT = 10; @@ -80,20 +77,14 @@ DROP TABLE t1; --echo # --echo # Bug#53676: Unexpected errors and possible table corruption on --echo # ADD PARTITION and LOCK TABLE ---connect (con1,localhost,root,,) CREATE TABLE t1 ( i INT NOT NULL AUTO_INCREMENT PRIMARY KEY, f INT ) ENGINE = InnoDB PARTITION BY HASH(i) PARTITIONS 2; INSERT INTO t1 VALUES (2, 2), (3, 3), (4, 4), (5, 5); ---connect (con2,localhost,root,,) -SET lock_wait_timeout = 2; - ---connection con1 ---echo #Connection 1 locks the table LOCK TABLE t1 READ; ---connection con2 ---echo # Connection 2 tries to add partitions: +--connect (con2,localhost,root,,) +SET lock_wait_timeout = 0; --echo # First attempt: lock wait timeout (as expected) --error ER_LOCK_WAIT_TIMEOUT ALTER TABLE t1 ADD PARTITION PARTITIONS 2; @@ -110,21 +101,18 @@ DELETE FROM t1 WHERE i = 10; --sorted_result SELECT * FROM t1; ---connection con1 ---echo # Connection 1 unlocks the table and locks it again: +--connection default UNLOCK TABLES; ---real_sleep 1 LOCK TABLE t1 READ; --connection con2 ---echo # Connection 2 tries again to add partitions: --echo # Third attempt: says that the table does not exist --error ER_LOCK_WAIT_TIMEOUT ALTER TABLE t1 ADD PARTITION PARTITIONS 2; --echo # Check table returns the same (not after fixing bug#56172!) CHECK TABLE t1; ---connection con1 +--connection default UNLOCK TABLES; --connection con2 @@ -134,23 +122,21 @@ DROP TABLE t1; # Test2 ---connection con1 +--connection default CREATE TABLE t2 ( i INT NOT NULL AUTO_INCREMENT PRIMARY KEY, f INT ) ENGINE = InnoDB PARTITION BY HASH(i) PARTITIONS 2; ---connection con2 -SET lock_wait_timeout = 2; - ---connection con1 LOCK TABLE t2 READ; --connection con2 +SET lock_wait_timeout = 0; --error ER_LOCK_WAIT_TIMEOUT ALTER TABLE t2 ADD PARTITION PARTITIONS 2; +SET lock_wait_timeout = 2; send ALTER TABLE t2 ADD PARTITION PARTITIONS 2; ---connection con1 +--connection default UNLOCK TABLES; --connection con2 @@ -164,40 +150,30 @@ DROP TABLE t2; # End of Test2 # Test #3 ---connection con1 +--connection default CREATE TABLE t3 ( i INT NOT NULL AUTO_INCREMENT PRIMARY KEY, f INT ) ENGINE = InnoDB PARTITION BY HASH(i) PARTITIONS 2; ---connection con2 -SET lock_wait_timeout = 2; - ---connection con1 ---echo # Connection 1 locks the table LOCK TABLE t3 READ; --connection con2 ---echo # Connection 2 tries to add partitions (timeout): +SET lock_wait_timeout = 0; --error ER_LOCK_WAIT_TIMEOUT ALTER TABLE t3 ADD PARTITION PARTITIONS 2; --connection con3 -SET lock_wait_timeout = 2; ---echo # Connection 3 tries to add partitions (partition already exists): +SET lock_wait_timeout = 0; --error ER_LOCK_WAIT_TIMEOUT ALTER TABLE t3 ADD PARTITION PARTITIONS 2; --connect (con4,localhost,root,,) ---echo # Connection 4 tries to rename the table: send RENAME TABLE t3 TO t4; ---connection con1 ---real_sleep 1 ---echo # Connection 1 unlocks the table: +--connection default UNLOCK TABLES; --connection con4 ---echo # Connection 4 gets error on rename: --reap --connect (con5,localhost,root,,) @@ -212,7 +188,6 @@ DROP TABLE t4; --disconnect con4 --disconnect con3 --disconnect con2 ---disconnect con1 --connection default # End of Test #3 @@ -227,20 +202,14 @@ ALTER TABLE t1 convert to charset ascii collate ascii_bin, ALGORITHM=INSTANT; DROP TABLE t1; --echo # Test WRITE LOCK. ---connect (con1,localhost,root,,) CREATE TABLE t1 ( i INT NOT NULL AUTO_INCREMENT PRIMARY KEY, f INT ) ENGINE = InnoDB PARTITION BY HASH(i) PARTITIONS 2; INSERT INTO t1 VALUES (3, 3), (4, 4); ---connect (con2,localhost,root,,) -SET lock_wait_timeout = 2; - ---connection con1 ---echo #Connection 1 locks the table LOCK TABLE t1 WRITE; ---connection con2 ---echo # Check that we still can SELECT, but not insert/update/delete. +--connect (con2,localhost,root,,) +SET lock_wait_timeout = 0; --echo # Check that we only can select, not insert/update/delete. --error ER_LOCK_WAIT_TIMEOUT INSERT INTO t1 VALUES (NULL, 1), (NULL, 2), (10, 10), (11, 11); @@ -251,11 +220,11 @@ DELETE FROM t1 WHERE i = 10; --error ER_LOCK_WAIT_TIMEOUT SELECT * FROM t1; ---connection con1 +--connection default UNLOCK TABLES; --connection con2 DROP TABLE t1; ---disconnect con1 +--disconnect con2 --connection default |