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