summaryrefslogtreecommitdiff
path: root/mysql-test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test')
-rw-r--r--mysql-test/main/mdl.result21
-rw-r--r--mysql-test/main/mdl.test21
-rw-r--r--mysql-test/suite/innodb/r/alter_partitioned.result4
-rw-r--r--mysql-test/suite/innodb/r/innodb_defrag_stats.result1
-rw-r--r--mysql-test/suite/innodb/r/innodb_stats_drop_locked.result1
-rw-r--r--mysql-test/suite/innodb/t/alter_partitioned.test4
-rw-r--r--mysql-test/suite/innodb/t/innodb_defrag_stats.test2
-rw-r--r--mysql-test/suite/innodb/t/innodb_stats_drop_locked.test2
-rw-r--r--mysql-test/suite/parts/r/partition_special_innodb.result60
-rw-r--r--mysql-test/suite/parts/t/partition_special_innodb-master.opt1
-rw-r--r--mysql-test/suite/parts/t/partition_special_innodb.test67
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