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 SET @odl_sync_frm = @@global.sync_frm;
12 SET @@global.sync_frm = OFF;
14 # Test to see if select will get the lock ahead of low priority update
16 connect (locker,localhost,root,,);
17 connect (writer,localhost,root,,);
21 DROP TABLE IF EXISTS t1,t2,t3;
25 a int(11) unsigned default NULL,
26 b varchar(255) default NULL,
31 INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3);
32 CREATE TABLE t2 SELECT * FROM t1;
33 CREATE TABLE t3 SELECT * FROM t1;
35 --echo # test altering of columns that multiupdate doesn't use
45 send UPDATE t2 INNER JOIN (t1 JOIN t3 USING(a)) USING(a)
46 SET a = NULL WHERE t1.b <> t2.b;
49 ALTER TABLE t2 ADD COLUMN (c INT);
50 ALTER TABLE t2 DROP COLUMN c;
59 PREPARE stmt FROM 'UPDATE t2 INNER JOIN (t1 JOIN t3 USING(a)) USING(a)
60 SET a = NULL WHERE t1.b <> t2.b';
70 ALTER TABLE t2 ADD COLUMN (c INT);
71 ALTER TABLE t2 DROP COLUMN c;
79 --echo # test altering of columns that multiupdate uses
91 --error 0,ER_DUP_FIELDNAME
92 ALTER TABLE t2 ADD COLUMN a int(11) unsigned default NULL;
96 --send UPDATE t2 INNER JOIN (t1 JOIN t3 USING(a)) USING(a) SET a = NULL WHERE t1.b <> t2.b
99 --error 0,ER_CANT_DROP_FIELD_OR_KEY
100 ALTER TABLE t2 DROP COLUMN a;
103 --error 0,ER_BAD_FIELD_ERROR
116 --error 0,ER_DUP_FIELDNAME
117 ALTER TABLE t2 ADD COLUMN a int(11) unsigned default NULL;
121 PREPARE stmt FROM 'UPDATE t2 INNER JOIN (t1 JOIN t3 USING(a)) USING(a) SET a = NULL WHERE t1.b <> t2.b';
125 --error 0,ER_CANT_DROP_FIELD_OR_KEY
126 ALTER TABLE t2 DROP COLUMN a;
129 --error 0,ER_BAD_FIELD_ERROR
135 DROP TABLE t1, t2, t3;
142 SET @@global.sync_frm = @odl_sync_frm;
144 # Wait till all disconnects are completed
145 --source include/wait_until_count_sessions.inc