summaryrefslogtreecommitdiff
path: root/mysql-test/t/lock_multi.test
diff options
context:
space:
mode:
authorMatthias Leich <Matthias.Leich@sun.com>2009-03-23 17:08:48 +0100
committerMatthias Leich <Matthias.Leich@sun.com>2009-03-23 17:08:48 +0100
commit0b2f4c56c6b9fd87ffeec11ab3087bdada30d610 (patch)
tree53d139f04061b37834bff654a1e0edcb890097c3 /mysql-test/t/lock_multi.test
parent596a9dbdfbee2b8313b074402107b86ed47b5b8a (diff)
parent5eb0b4819ce876cd7e918bb1392873c23c12da79 (diff)
downloadmariadb-git-0b2f4c56c6b9fd87ffeec11ab3087bdada30d610.tar.gz
Merge 5.0 -> 5.1 of fix for the bugs 43015 and 43065
Diffstat (limited to 'mysql-test/t/lock_multi.test')
-rw-r--r--mysql-test/t/lock_multi.test322
1 files changed, 1 insertions, 321 deletions
diff --git a/mysql-test/t/lock_multi.test b/mysql-test/t/lock_multi.test
index 586cfb174be..e93153f005c 100644
--- a/mysql-test/t/lock_multi.test
+++ b/mysql-test/t/lock_multi.test
@@ -262,6 +262,7 @@ DROP DATABASE mysqltest_1;
# With bug in place: try to acquire LOCK_mysql_create_table...
# When fixed: Reject dropping db because of the read lock.
connection con1;
+# Wait a bit so that the session con2 is in state "Waiting for release of readlock"
let $wait_condition=
select count(*) = 1 from information_schema.processlist
where state = "Waiting for release of readlock"
@@ -316,327 +317,6 @@ reap;
connection locker;
drop table t1;
-#
-# Bug#38691 segfault/abort in ``UPDATE ...JOIN'' while
-# ``FLUSH TABLES WITH READ LOCK''
-#
-
---connection default
-CREATE TABLE t1 (
- a int(11) unsigned default NULL,
- b varchar(255) default NULL,
- UNIQUE KEY a (a),
- KEY b (b)
-);
-
-INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3);
-CREATE TABLE t2 SELECT * FROM t1;
-CREATE TABLE t3 SELECT * FROM t1;
-
---echo # test altering of columns that multiupdate doesn't use
-
---echo # normal mode
-
---disable_query_log
-let $i = 100;
-while ($i) {
---dec $i
-
---connection writer
- send UPDATE t2 INNER JOIN (t1 JOIN t3 USING(a)) USING(a)
- SET a = NULL WHERE t1.b <> t2.b;
-
---connection locker
- ALTER TABLE t2 ADD COLUMN (c INT);
- ALTER TABLE t2 DROP COLUMN c;
-
---connection writer
---reap
-}
-
---echo # PS mode
-
---connection writer
-PREPARE stmt FROM 'UPDATE t2 INNER JOIN (t1 JOIN t3 USING(a)) USING(a)
- SET a = NULL WHERE t1.b <> t2.b';
-
-let $i = 100;
-while ($i) {
---dec $i
-
---connection writer
---send EXECUTE stmt
-
---connection locker
- ALTER TABLE t2 ADD COLUMN (c INT);
- ALTER TABLE t2 DROP COLUMN c;
-
---connection writer
---reap
-}
---enable_query_log
-
-
---echo # test altering of columns that multiupdate uses
-
---echo # normal mode
-
---connection default
-
---disable_query_log
-let $i = 100;
-while ($i) {
- dec $i;
-
---connection locker
---error 0,ER_DUP_FIELDNAME
- ALTER TABLE t2 ADD COLUMN a int(11) unsigned default NULL;
- UPDATE t2 SET a=b;
-
---connection writer
---send UPDATE t2 INNER JOIN (t1 JOIN t3 USING(a)) USING(a) SET a = NULL WHERE t1.b <> t2.b
-
---connection locker
---error 0,ER_CANT_DROP_FIELD_OR_KEY
- ALTER TABLE t2 DROP COLUMN a;
-
---connection writer
---error 0,ER_BAD_FIELD_ERROR
---reap
-}
---enable_query_log
-
---echo # PS mode
-
---disable_query_log
-let $i = 100;
-while ($i) {
- dec $i;
-
---connection locker
---error 0,ER_DUP_FIELDNAME
- ALTER TABLE t2 ADD COLUMN a int(11) unsigned default NULL;
- UPDATE t2 SET a=b;
-
---connection writer
- PREPARE stmt FROM 'UPDATE t2 INNER JOIN (t1 JOIN t3 USING(a)) USING(a) SET a = NULL WHERE t1.b <> t2.b';
---send EXECUTE stmt
-
---connection locker
---error 0,ER_CANT_DROP_FIELD_OR_KEY
- ALTER TABLE t2 DROP COLUMN a;
-
---connection writer
---error 0,ER_BAD_FIELD_ERROR
---reap
-
-}
---enable_query_log
---connection default
-DROP TABLE t1, t2, t3;
-
-
-#
-# Bug#38499 flush tables and multitable table update with derived table cause
-# crash
-#
-
-CREATE TABLE t1( a INT, b INT );
-INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3), (4, 4);
-
---echo # 1. test regular tables
---echo # 1.1. test altering of columns that multiupdate doesn't use
---echo # 1.1.1. normal mode
-
---disable_query_log
-let $i = 100;
-while ($i) {
---dec $i
-
---connection writer
- send UPDATE t1, (SELECT 1 FROM t1 t1i) d SET a = 0 WHERE 1=0;
-
---connection locker
- ALTER TABLE t1 ADD COLUMN (c INT);
- ALTER TABLE t1 DROP COLUMN c;
-
---connection writer
---reap
-}
-
---echo # 1.1.2. PS mode
-
---connection writer
-PREPARE stmt FROM 'UPDATE t1, (SELECT 1 FROM t1 t1i) d SET a = 0 WHERE 1=0';
-
-let $i = 100;
-while ($i) {
---dec $i
-
---connection writer
---send EXECUTE stmt
-
---connection locker
- ALTER TABLE t1 ADD COLUMN (c INT);
- ALTER TABLE t1 DROP COLUMN c;
-
---connection writer
---reap
-}
---enable_query_log
-
---echo # 1.2. test altering of columns that multiupdate uses
---echo # 1.2.1. normal mode
-
---connection default
-
---disable_query_log
-let $i = 100;
-while ($i) {
- dec $i;
-
---connection locker
---error 0,ER_DUP_FIELDNAME
- ALTER TABLE t1 ADD COLUMN a int(11) unsigned default NULL;
- UPDATE t1 SET a=b;
-
---connection writer
---send UPDATE t1, (SELECT 1 FROM t1 t1i) d SET a = 0 WHERE 1=0;
-
---connection locker
---error 0,ER_CANT_DROP_FIELD_OR_KEY
- ALTER TABLE t1 DROP COLUMN a;
-
---connection writer
---error 0,ER_BAD_FIELD_ERROR # unknown column error
---reap
-}
---enable_query_log
-
---echo # 1.2.2. PS mode
-
---disable_query_log
-let $i = 100;
-while ($i) {
- dec $i;
-
---connection locker
---error 0,ER_DUP_FIELDNAME
- ALTER TABLE t1 ADD COLUMN a INT;
- UPDATE t1 SET a=b;
-
---connection writer
- PREPARE stmt FROM 'UPDATE t1, (SELECT 1 FROM t1 t1i) d SET a = 0 WHERE 1=0';
---send EXECUTE stmt
-
---connection locker
---error 0,ER_CANT_DROP_FIELD_OR_KEY
- ALTER TABLE t1 DROP COLUMN a;
-
---connection writer
---error 0,ER_BAD_FIELD_ERROR # Unknown column 'a' in 'field list'
---reap
-}
---enable_query_log
---connection default
-ALTER TABLE t1 ADD COLUMN a INT;
-
---echo # 2. test UNIONs
---echo # 2.1. test altering of columns that multiupdate doesn't use
---echo # 2.1.1. normal mode
-
---disable_query_log
-let $i = 100;
-while ($i) {
---dec $i
-
---connection writer
- send UPDATE t1, ((SELECT 1 FROM t1 t1i) UNION (SELECT 2 FROM t1 t1ii)) e SET a = 0 WHERE 1=0;
-
---connection locker
- ALTER TABLE t1 ADD COLUMN (c INT);
- ALTER TABLE t1 DROP COLUMN c;
-
---connection writer
---reap
-}
-
---echo # 2.1.2. PS mode
-
---connection writer
-PREPARE stmt FROM 'UPDATE t1, ((SELECT 1 FROM t1 t1i) UNION (SELECT 2 FROM t1 t1ii)) e SET a = 0 WHERE 1=0';
-
-let $i = 100;
-while ($i) {
---dec $i
-
---connection writer
---send EXECUTE stmt
-
---connection locker
- ALTER TABLE t1 ADD COLUMN (c INT);
- ALTER TABLE t1 DROP COLUMN c;
-
---connection writer
---reap
-}
---enable_query_log
-
---echo # 2.2. test altering of columns that multiupdate uses
---echo # 2.2.1. normal mode
-
---connection default
-
---disable_query_log
-let $i = 100;
-while ($i) {
- dec $i;
-
---connection locker
---error 0,ER_DUP_FIELDNAME
- ALTER TABLE t1 ADD COLUMN a int(11) unsigned default NULL;
- UPDATE t1 SET a=b;
-
---connection writer
---send UPDATE t1, ((SELECT 1 FROM t1 t1i) UNION (SELECT 2 FROM t1 t1ii)) e SET a = 0 WHERE 1=0;
-
---connection locker
---error 0,ER_CANT_DROP_FIELD_OR_KEY
- ALTER TABLE t1 DROP COLUMN a;
-
---connection writer
---error 0,ER_BAD_FIELD_ERROR # Unknown column 'a' in 'field list'
---reap
-}
---enable_query_log
-
---echo # 2.2.2. PS mode
-
---disable_query_log
-let $i = 100;
-while ($i) {
- dec $i;
-
---connection locker
---error 0,ER_DUP_FIELDNAME
- ALTER TABLE t1 ADD COLUMN a INT;
- UPDATE t1 SET a=b;
-
---connection writer
- PREPARE stmt FROM 'UPDATE t1, ((SELECT 1 FROM t1 t1i) UNION (SELECT 2 FROM t1 t1ii)) e SET a = 0 WHERE 1=0';
---send EXECUTE stmt
-
---connection locker
---error 0,ER_CANT_DROP_FIELD_OR_KEY
- ALTER TABLE t1 DROP COLUMN a;
-
---connection writer
---error 0,ER_BAD_FIELD_ERROR # Unknown column 'a' in 'field list'
---reap
-}
---enable_query_log
---connection default
-DROP TABLE t1;
--echo End of 5.0 tests