45
45
# Test bug with update reported by Jan Legenhausen
48
CREATE TEMPORARY TABLE t1 (
49
49
lfdnr int NOT NULL default '0',
50
50
ticket int NOT NULL default '0',
51
51
client varchar(255) NOT NULL default '',
102
102
# Test with limit (Bug #393)
105
CREATE TEMPORARY TABLE t1 (
106
106
`id_param` int NOT NULL default '0',
107
107
`nom_option` char(40) NOT NULL default '',
108
108
`valid` int NOT NULL default '0',
119
# Multi table update test from bugs
122
create table t1 (F1 VARCHAR(30), F2 VARCHAR(30), F3 VARCHAR(30), cnt int, groupid int, KEY groupid_index (groupid));
124
insert into t1 (F1,F2,F3,cnt,groupid) values ('0','0','0',1,6),
125
('0','1','2',1,5), ('0','2','0',1,3), ('1','0','1',1,2),
126
('1','2','1',1,1), ('1','2','2',1,1), ('2','0','1',2,4),
128
delete from m1 using t1 m1,t1 m2 where m1.groupid=m2.groupid and (m1.cnt < m2.cnt or m1.cnt=m2.cnt and m1.F3>m2.F3);
135
create table t1 (c1 int, c2 char(6), c3 int);
136
create table t2 (c1 int, c2 char(6));
137
insert into t1 values (1, "t1c2-1", 10), (2, "t1c2-2", 20);
138
update t1 left join t2 on t1.c1 = t2.c1 set t2.c2 = "t2c2-1";
139
update t1 left join t2 on t1.c1 = t2.c1 set t2.c2 = "t2c2-1" where t1.c3 = 10;
145
121
create table t1 (id int not null auto_increment primary key, id_str varchar(32));
158
134
select * from t1;
161
# BUG#9103 "Erroneous data truncation warnings on multi-table updates"
162
create table t1 (a int, b varchar(10), key b(b(5))) engine=myisam;
163
create table t2 (a int, b varchar(10)) engine=myisam;
164
insert into t1 values ( 1, 'abcd1e');
165
insert into t1 values ( 2, 'abcd2e');
166
insert into t2 values ( 1, 'abcd1e');
167
insert into t2 values ( 2, 'abcd2e');
169
update t1, t2 set t1.a = t2.a where t2.b = t1.b;
174
138
# Bug #11868 Update with subquery with ref built with a key from the updated
175
139
# table crashes server
222
186
delete from t1 order by a limit 1;
223
187
show status like 'handler_read%';
189
# PBXT: this select returns a different result to
190
# innodb because the 2 updates above change different rows
225
191
select * from t1;
226
192
update t1 set a=a+10,b=1 order by a limit 3;
227
193
update t1 set a=a+11,b=2 order by a limit 3;
234
200
# Bug#14186 select datefield is null not updated
236
create table t1 (f1 date not null);
237
insert into t1 values('2000-01-01'),('0000-00-00');
202
create table t1 (f1 date NULL);
203
insert into t1 values('2000-01-01'),(NULL);
238
204
update t1 set f1='2002-02-02' where f1 is null;
239
205
select * from t1;
243
# Bug#15028 Multitable update returns different numbers of matched rows
244
# depending on table order
245
create table t1 (f1 int);
246
create table t2 (f2 int);
247
insert into t1 values(1),(2);
248
insert into t2 values(1),(1);
250
update t1,t2 set f1=3,f2=3 where f1=f2 and f1=1;
253
update t1 set f1=1 where f1=3;
255
update t2,t1 set f1=3,f2=3 where f1=f2 and f1=1;
261
209
create table t1 (a int);
262
210
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
291
239
CREATE TABLE t1 (
292
240
request_id int NOT NULL auto_increment,
293
241
user_id varchar(12) default NULL,
294
time_stamp datetime NOT NULL default '0000-00-00 00:00:00',
295
243
ip_address varchar(15) default NULL,
296
244
PRIMARY KEY (request_id),
297
245
KEY user_id_2 (user_id,time_stamp)
364
312
update t2 set a=id;
365
313
insert into t1 select * from t2;
315
# PBXT: Rows changed are different here between InnoDB and PBXT
316
# because PBXT does not update the rows that are not modified!
317
# InnoDB seems to do this....
367
318
# Check that the number of matched rows is correct when the temporary
368
319
# table is small enough to not be converted to MyISAM
369
320
select count(*) from t1 join t2 on (t1.a=t2.a);
371
update t1 join t2 on (t1.a=t2.a) set t1.id=t2.id;
374
322
# Increase table sizes
375
323
insert into t2(a) select a from t2;
380
328
# Check that the number of matched rows is correct when the temporary
381
329
# table has to be converted to MyISAM
382
330
select count(*) from t1 join t2 on (t1.a=t2.a);
384
update t1 join t2 on (t1.a=t2.a) set t1.id=t2.id;
387
332
# Check that the number of matched rows is correct when there are duplicate
389
334
update t1 set a=1;
390
335
update t2 set a=1;
391
336
select count(*) from t1 join t2 on (t1.a=t2.a);
393
update t1 join t2 on (t1.a=t2.a) set t1.id=t2.id;
396
338
drop table t1,t2;