1
# Bug38499 flush tables and multitable table update with derived table cause crash
5
# Save the initial number of concurrent sessions
6
--source include/count_sessions.inc
8
connect (locker,localhost,root,,);
9
connect (writer,localhost,root,,);
13
DROP TABLE IF EXISTS t1;
15
CREATE TABLE t1( a INT, b INT );
16
INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3), (4, 4);
18
--echo # 1. test regular tables
19
--echo # 1.1. test altering of columns that multiupdate doesn't use
20
--echo # 1.1.1. normal mode
28
send UPDATE t1, (SELECT 1 FROM t1 t1i) d SET a = 0 WHERE 1=0;
31
ALTER TABLE t1 ADD COLUMN (c INT);
32
ALTER TABLE t1 DROP COLUMN c;
38
--echo # 1.1.2. PS mode
41
PREPARE stmt FROM 'UPDATE t1, (SELECT 1 FROM t1 t1i) d SET a = 0 WHERE 1=0';
51
ALTER TABLE t1 ADD COLUMN (c INT);
52
ALTER TABLE t1 DROP COLUMN c;
59
--echo # 1.2. test altering of columns that multiupdate uses
60
--echo # 1.2.1. normal mode
70
--error 0,ER_DUP_FIELDNAME
71
ALTER TABLE t1 ADD COLUMN a int(11) unsigned default NULL;
75
--send UPDATE t1, (SELECT 1 FROM t1 t1i) d SET a = 0 WHERE 1=0;
78
--error 0,ER_CANT_DROP_FIELD_OR_KEY
79
ALTER TABLE t1 DROP COLUMN a;
82
--error 0,ER_BAD_FIELD_ERROR # unknown column error
87
--echo # 1.2.2. PS mode
95
--error 0,ER_DUP_FIELDNAME
96
ALTER TABLE t1 ADD COLUMN a INT;
100
PREPARE stmt FROM 'UPDATE t1, (SELECT 1 FROM t1 t1i) d SET a = 0 WHERE 1=0';
104
--error 0,ER_CANT_DROP_FIELD_OR_KEY
105
ALTER TABLE t1 DROP COLUMN a;
108
--error 0,ER_BAD_FIELD_ERROR # Unknown column 'a' in 'field list'
113
ALTER TABLE t1 ADD COLUMN a INT;
115
--echo # 2. test UNIONs
116
--echo # 2.1. test altering of columns that multiupdate doesn't use
117
--echo # 2.1.1. normal mode
125
send UPDATE t1, ((SELECT 1 FROM t1 t1i) UNION (SELECT 2 FROM t1 t1ii)) e SET a = 0 WHERE 1=0;
128
ALTER TABLE t1 ADD COLUMN (c INT);
129
ALTER TABLE t1 DROP COLUMN c;
135
--echo # 2.1.2. PS mode
138
PREPARE stmt FROM 'UPDATE t1, ((SELECT 1 FROM t1 t1i) UNION (SELECT 2 FROM t1 t1ii)) e SET a = 0 WHERE 1=0';
148
ALTER TABLE t1 ADD COLUMN (c INT);
149
ALTER TABLE t1 DROP COLUMN c;
156
--echo # 2.2. test altering of columns that multiupdate uses
157
--echo # 2.2.1. normal mode
167
--error 0,ER_DUP_FIELDNAME
168
ALTER TABLE t1 ADD COLUMN a int(11) unsigned default NULL;
172
--send UPDATE t1, ((SELECT 1 FROM t1 t1i) UNION (SELECT 2 FROM t1 t1ii)) e SET a = 0 WHERE 1=0;
175
--error 0,ER_CANT_DROP_FIELD_OR_KEY
176
ALTER TABLE t1 DROP COLUMN a;
179
--error 0,ER_BAD_FIELD_ERROR # Unknown column 'a' in 'field list'
184
--echo # 2.2.2. PS mode
192
--error 0,ER_DUP_FIELDNAME
193
ALTER TABLE t1 ADD COLUMN a INT;
197
PREPARE stmt FROM 'UPDATE t1, ((SELECT 1 FROM t1 t1i) UNION (SELECT 2 FROM t1 t1ii)) e SET a = 0 WHERE 1=0';
201
--error 0,ER_CANT_DROP_FIELD_OR_KEY
202
ALTER TABLE t1 DROP COLUMN a;
205
--error 0,ER_BAD_FIELD_ERROR # Unknown column 'a' in 'field list'
219
# Wait till all disconnects are completed
220
--source include/wait_until_count_sessions.inc