2
# Bug#38691 segfault/abort in ``UPDATE ...JOIN'' while
3
# ``FLUSH TABLES WITH READ LOCK''
8
# Save the initial number of concurrent sessions
9
--source include/count_sessions.inc
11
# Test to see if select will get the lock ahead of low priority update
13
connect (locker,localhost,root,,);
14
connect (writer,localhost,root,,);
18
DROP TABLE IF EXISTS t1,t2,t3;
22
a int(11) unsigned default NULL,
23
b varchar(255) default NULL,
28
INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3);
29
CREATE TABLE t2 SELECT * FROM t1;
30
CREATE TABLE t3 SELECT * FROM t1;
32
--echo # test altering of columns that multiupdate doesn't use
42
send UPDATE t2 INNER JOIN (t1 JOIN t3 USING(a)) USING(a)
43
SET a = NULL WHERE t1.b <> t2.b;
46
ALTER TABLE t2 ADD COLUMN (c INT);
47
ALTER TABLE t2 DROP COLUMN c;
56
PREPARE stmt FROM 'UPDATE t2 INNER JOIN (t1 JOIN t3 USING(a)) USING(a)
57
SET a = NULL WHERE t1.b <> t2.b';
67
ALTER TABLE t2 ADD COLUMN (c INT);
68
ALTER TABLE t2 DROP COLUMN c;
76
--echo # test altering of columns that multiupdate uses
88
--error 0,ER_DUP_FIELDNAME
89
ALTER TABLE t2 ADD COLUMN a int(11) unsigned default NULL;
93
--send UPDATE t2 INNER JOIN (t1 JOIN t3 USING(a)) USING(a) SET a = NULL WHERE t1.b <> t2.b
96
--error 0,ER_CANT_DROP_FIELD_OR_KEY
97
ALTER TABLE t2 DROP COLUMN a;
100
--error 0,ER_BAD_FIELD_ERROR
113
--error 0,ER_DUP_FIELDNAME
114
ALTER TABLE t2 ADD COLUMN a int(11) unsigned default NULL;
118
PREPARE stmt FROM 'UPDATE t2 INNER JOIN (t1 JOIN t3 USING(a)) USING(a) SET a = NULL WHERE t1.b <> t2.b';
122
--error 0,ER_CANT_DROP_FIELD_OR_KEY
123
ALTER TABLE t2 DROP COLUMN a;
126
--error 0,ER_BAD_FIELD_ERROR
132
DROP TABLE t1, t2, t3;
139
# Wait till all disconnects are completed
140
--source include/wait_until_count_sessions.inc