~linuxjedi/drizzle/trunk-bug-667053

« back to all changes in this revision

Viewing changes to mysql-test/suite/rpl/r/rpl_insert_id.result

  • Committer: brian
  • Date: 2008-06-25 05:29:13 UTC
  • Revision ID: brian@localhost.localdomain-20080625052913-6upwo0jsrl4lnapl
clean slate

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#
 
2
# Setup
 
3
#
 
4
use test;
 
5
drop table if exists t1, t2, t3;
 
6
#
 
7
# See if queries that use both auto_increment and LAST_INSERT_ID()
 
8
# are replicated well
 
9
#
 
10
# We also check how the foreign_key_check variable is replicated
 
11
#
 
12
stop slave;
 
13
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
 
14
reset master;
 
15
reset slave;
 
16
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
 
17
start slave;
 
18
create table t1(a int auto_increment, key(a));
 
19
create table t2(b int auto_increment, c int, key(b));
 
20
insert into t1 values (1),(2),(3);
 
21
insert into t1 values (null);
 
22
insert into t2 values (null,last_insert_id());
 
23
select * from t1 ORDER BY a;
 
24
a
 
25
1
 
26
2
 
27
3
 
28
4
 
29
select * from t2 ORDER BY b;
 
30
b       c
 
31
1       4
 
32
drop table t1;
 
33
drop table t2;
 
34
create table t1(a int auto_increment, key(a)) engine=innodb;
 
35
create table t2(b int auto_increment, c int, key(b), foreign key(b) references t1(a)) engine=innodb;
 
36
SET FOREIGN_KEY_CHECKS=0;
 
37
insert into t1 values (10);
 
38
insert into t1 values (null),(null),(null);
 
39
insert into t2 values (5,0);
 
40
insert into t2 values (null,last_insert_id());
 
41
SET FOREIGN_KEY_CHECKS=1;
 
42
select * from t1;
 
43
a
 
44
10
 
45
11
 
46
12
 
47
13
 
48
select * from t2;
 
49
b       c
 
50
5       0
 
51
6       11
 
52
#
 
53
# check if INSERT SELECT in auto_increment is well replicated (bug #490)
 
54
#
 
55
drop table t2;
 
56
drop table t1;
 
57
create table t1(a int auto_increment, key(a));
 
58
create table t2(b int auto_increment, c int, key(b));
 
59
insert into t1 values (10);
 
60
insert into t1 values (null),(null),(null);
 
61
insert into t2 values (5,0);
 
62
insert into t2 (c) select * from t1 ORDER BY a;
 
63
select * from t2 ORDER BY b;
 
64
b       c
 
65
5       0
 
66
6       10
 
67
7       11
 
68
8       12
 
69
9       13
 
70
select * from t1 ORDER BY a;
 
71
a
 
72
10
 
73
11
 
74
12
 
75
13
 
76
select * from t2 ORDER BY b;
 
77
b       c
 
78
5       0
 
79
6       10
 
80
7       11
 
81
8       12
 
82
9       13
 
83
drop table t1;
 
84
drop table t2;
 
85
#
 
86
# Bug#8412: Error codes reported in binary log for CHARACTER SET,
 
87
#           FOREIGN_KEY_CHECKS
 
88
#
 
89
SET TIMESTAMP=1000000000;
 
90
CREATE TABLE t1 ( a INT UNIQUE );
 
91
SET FOREIGN_KEY_CHECKS=0;
 
92
INSERT INTO t1 VALUES (1),(1);
 
93
Got one of the listed errors
 
94
drop table t1;
 
95
#
 
96
# Bug#14553: NULL in WHERE resets LAST_INSERT_ID
 
97
#
 
98
create table t1(a int auto_increment, key(a));
 
99
create table t2(a int);
 
100
insert into t1 (a) values (null);
 
101
insert into t2 (a) select a from t1 where a is null;
 
102
insert into t2 (a) select a from t1 where a is null;
 
103
select * from t2;
 
104
a
 
105
1
 
106
select * from t2;
 
107
a
 
108
1
 
109
drop table t1;
 
110
drop table t2;
 
111
#
 
112
# End of 4.1 tests
 
113
#
 
114
#
 
115
# BUG#15728: LAST_INSERT_ID function inside a stored function returns 0
 
116
#
 
117
# The solution is not to reset last_insert_id on enter to sub-statement.
 
118
#
 
119
drop function if exists bug15728;
 
120
drop function if exists bug15728_insert;
 
121
drop table if exists t1, t2;
 
122
create table t1 (
 
123
id int not null auto_increment,
 
124
last_id int,
 
125
primary key (id)
 
126
);
 
127
create function bug15728() returns int(11)
 
128
return last_insert_id();
 
129
insert into t1 (last_id) values (0);
 
130
insert into t1 (last_id) values (last_insert_id());
 
131
insert into t1 (last_id) values (bug15728());
 
132
create table t2 (
 
133
id int not null auto_increment,
 
134
last_id int,
 
135
primary key (id)
 
136
);
 
137
create function bug15728_insert() returns int(11) modifies sql data
 
138
begin
 
139
insert into t2 (last_id) values (bug15728());
 
140
return bug15728();
 
141
end|
 
142
create trigger t1_bi before insert on t1 for each row
 
143
begin
 
144
declare res int;
 
145
select bug15728_insert() into res;
 
146
set NEW.last_id = res;
 
147
end|
 
148
insert into t1 (last_id) values (0);
 
149
drop trigger t1_bi;
 
150
select last_insert_id();
 
151
last_insert_id()
 
152
4
 
153
select bug15728_insert();
 
154
bug15728_insert()
 
155
2
 
156
select last_insert_id();
 
157
last_insert_id()
 
158
4
 
159
insert into t1 (last_id) values (bug15728());
 
160
select last_insert_id();
 
161
last_insert_id()
 
162
5
 
163
drop procedure if exists foo;
 
164
create procedure foo()
 
165
begin
 
166
declare res int;
 
167
insert into t2 (last_id) values (bug15728());
 
168
insert into t1 (last_id) values (bug15728());
 
169
end|
 
170
call foo();
 
171
select * from t1;
 
172
id      last_id
 
173
1       0
 
174
2       1
 
175
3       2
 
176
4       1
 
177
5       4
 
178
6       3
 
179
select * from t2;
 
180
id      last_id
 
181
1       3
 
182
2       4
 
183
3       5
 
184
select * from t1;
 
185
id      last_id
 
186
1       0
 
187
2       1
 
188
3       2
 
189
4       1
 
190
5       4
 
191
6       3
 
192
select * from t2;
 
193
id      last_id
 
194
1       3
 
195
2       4
 
196
3       5
 
197
drop function bug15728;
 
198
drop function bug15728_insert;
 
199
drop table t1,t2;
 
200
drop procedure foo;
 
201
create table t1 (n int primary key auto_increment not null,
 
202
b int, unique(b));
 
203
set sql_log_bin=0;
 
204
insert into t1 values(null,100);
 
205
replace into t1 values(null,50),(null,100),(null,150);
 
206
select * from t1 order by n;
 
207
n       b
 
208
2       50
 
209
3       100
 
210
4       150
 
211
truncate table t1;
 
212
set sql_log_bin=1;
 
213
insert into t1 values(null,100);
 
214
select * from t1 order by n;
 
215
n       b
 
216
1       100
 
217
insert into t1 values(null,200),(null,300);
 
218
delete from t1 where b <> 100;
 
219
select * from t1 order by n;
 
220
n       b
 
221
1       100
 
222
replace into t1 values(null,100),(null,350);
 
223
select * from t1 order by n;
 
224
n       b
 
225
2       100
 
226
3       350
 
227
select * from t1 order by n;
 
228
n       b
 
229
2       100
 
230
3       350
 
231
insert into t1 values (NULL,400),(3,500),(NULL,600) on duplicate key UPDATE n=1000;
 
232
select * from t1 order by n;
 
233
n       b
 
234
2       100
 
235
4       400
 
236
1000    350
 
237
1001    600
 
238
select * from t1 order by n;
 
239
n       b
 
240
2       100
 
241
4       400
 
242
1000    350
 
243
1001    600
 
244
drop table t1;
 
245
create table t1 (n int primary key auto_increment not null,
 
246
b int, unique(b));
 
247
insert into t1 values(null,100);
 
248
select * from t1 order by n;
 
249
n       b
 
250
1       100
 
251
insert into t1 values(null,200),(null,300);
 
252
delete from t1 where b <> 100;
 
253
select * from t1 order by n;
 
254
n       b
 
255
1       100
 
256
insert into t1 values(null,100),(null,350) on duplicate key update n=2;
 
257
select * from t1 order by n;
 
258
n       b
 
259
2       100
 
260
3       350
 
261
select * from t1 order by n;
 
262
n       b
 
263
2       100
 
264
3       350
 
265
drop table t1;
 
266
CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY AUTO_INCREMENT, b INT,
 
267
UNIQUE(b));
 
268
INSERT INTO t1(b) VALUES(1),(1),(2) ON DUPLICATE KEY UPDATE t1.b=10;
 
269
SELECT * FROM t1;
 
270
a       b
 
271
1       10
 
272
2       2
 
273
SELECT * FROM t1;
 
274
a       b
 
275
1       10
 
276
2       2
 
277
drop table t1;
 
278
CREATE TABLE t1 (
 
279
id bigint(20) unsigned NOT NULL auto_increment,
 
280
field_1 int(10) unsigned NOT NULL,
 
281
field_2 varchar(255) NOT NULL,
 
282
field_3 varchar(255) NOT NULL,
 
283
PRIMARY KEY (id),
 
284
UNIQUE KEY field_1 (field_1, field_2)
 
285
);
 
286
CREATE TABLE t2 (
 
287
field_a int(10) unsigned NOT NULL,
 
288
field_b varchar(255) NOT NULL,
 
289
field_c varchar(255) NOT NULL
 
290
);
 
291
INSERT INTO t2 (field_a, field_b, field_c) VALUES (1, 'a', '1a');
 
292
INSERT INTO t2 (field_a, field_b, field_c) VALUES (2, 'b', '2b');
 
293
INSERT INTO t2 (field_a, field_b, field_c) VALUES (3, 'c', '3c');
 
294
INSERT INTO t2 (field_a, field_b, field_c) VALUES (4, 'd', '4d');
 
295
INSERT INTO t2 (field_a, field_b, field_c) VALUES (5, 'e', '5e');
 
296
INSERT INTO t1 (field_1, field_2, field_3)
 
297
SELECT t2.field_a, t2.field_b, t2.field_c
 
298
FROM t2
 
299
ON DUPLICATE KEY UPDATE
 
300
t1.field_3 = t2.field_c;
 
301
INSERT INTO t2 (field_a, field_b, field_c) VALUES (6, 'f', '6f');
 
302
INSERT INTO t1 (field_1, field_2, field_3)
 
303
SELECT t2.field_a, t2.field_b, t2.field_c
 
304
FROM t2
 
305
ON DUPLICATE KEY UPDATE
 
306
t1.field_3 = t2.field_c;
 
307
SELECT * FROM t1;
 
308
id      field_1 field_2 field_3
 
309
1       1       a       1a
 
310
2       2       b       2b
 
311
3       3       c       3c
 
312
4       4       d       4d
 
313
5       5       e       5e
 
314
6       6       f       6f
 
315
SELECT * FROM t1;
 
316
id      field_1 field_2 field_3
 
317
1       1       a       1a
 
318
2       2       b       2b
 
319
3       3       c       3c
 
320
4       4       d       4d
 
321
5       5       e       5e
 
322
6       6       f       6f
 
323
drop table t1, t2;
 
324
DROP PROCEDURE IF EXISTS p1;
 
325
DROP TABLE IF EXISTS t1, t2;
 
326
SELECT LAST_INSERT_ID(0);
 
327
LAST_INSERT_ID(0)
 
328
0
 
329
CREATE TABLE t1 (
 
330
id INT NOT NULL DEFAULT 0,
 
331
last_id INT,
 
332
PRIMARY KEY (id)
 
333
);
 
334
CREATE TABLE t2 (
 
335
id INT NOT NULL AUTO_INCREMENT,
 
336
last_id INT,
 
337
PRIMARY KEY (id)
 
338
);
 
339
CREATE PROCEDURE p1()
 
340
BEGIN
 
341
INSERT INTO t2 (last_id) VALUES (LAST_INSERT_ID());
 
342
INSERT INTO t1 (last_id) VALUES (LAST_INSERT_ID());
 
343
END|
 
344
CALL p1();
 
345
SELECT * FROM t1;
 
346
id      last_id
 
347
0       1
 
348
SELECT * FROM t2;
 
349
id      last_id
 
350
1       0
 
351
SELECT * FROM t1;
 
352
id      last_id
 
353
0       1
 
354
SELECT * FROM t2;
 
355
id      last_id
 
356
1       0
 
357
DROP PROCEDURE p1;
 
358
DROP TABLE t1, t2;
 
359
DROP PROCEDURE IF EXISTS p1;
 
360
DROP FUNCTION IF EXISTS f1;
 
361
DROP FUNCTION IF EXISTS f2;
 
362
DROP FUNCTION IF EXISTS f3;
 
363
DROP TABLE IF EXISTS t1, t2;
 
364
CREATE TABLE t1 (
 
365
i INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
 
366
j INT DEFAULT 0
 
367
);
 
368
CREATE TABLE t2 (i INT);
 
369
CREATE PROCEDURE p1()
 
370
BEGIN
 
371
INSERT INTO t1 (i) VALUES (NULL);
 
372
INSERT INTO t2 (i) VALUES (LAST_INSERT_ID());
 
373
INSERT INTO t1 (i) VALUES (NULL), (NULL);
 
374
INSERT INTO t2 (i) VALUES (LAST_INSERT_ID());
 
375
END |
 
376
CREATE FUNCTION f1() RETURNS INT MODIFIES SQL DATA
 
377
BEGIN
 
378
INSERT INTO t1 (i) VALUES (NULL);
 
379
INSERT INTO t2 (i) VALUES (LAST_INSERT_ID());
 
380
INSERT INTO t1 (i) VALUES (NULL), (NULL);
 
381
INSERT INTO t2 (i) VALUES (LAST_INSERT_ID());
 
382
RETURN 0;
 
383
END |
 
384
CREATE FUNCTION f2() RETURNS INT NOT DETERMINISTIC
 
385
RETURN LAST_INSERT_ID() |
 
386
CREATE FUNCTION f3() RETURNS INT MODIFIES SQL DATA
 
387
BEGIN
 
388
INSERT INTO t2 (i) VALUES (LAST_INSERT_ID());
 
389
RETURN 0;
 
390
END |
 
391
INSERT INTO t1 VALUES (NULL, -1);
 
392
CALL p1();
 
393
SELECT f1();
 
394
f1()
 
395
0
 
396
INSERT INTO t1 VALUES (NULL, f2()), (NULL, LAST_INSERT_ID()),
 
397
(NULL, LAST_INSERT_ID()), (NULL, f2()), (NULL, f2());
 
398
INSERT INTO t1 VALUES (NULL, f2());
 
399
INSERT INTO t1 VALUES (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID(5)),
 
400
(NULL, @@LAST_INSERT_ID);
 
401
INSERT INTO t1 VALUES (NULL, 0), (NULL, LAST_INSERT_ID());
 
402
UPDATE t1 SET j= -1 WHERE i IS NULL;
 
403
INSERT INTO t1 (i) VALUES (NULL);
 
404
INSERT INTO t1 (i) VALUES (NULL);
 
405
SELECT f3();
 
406
f3()
 
407
0
 
408
SELECT * FROM t1;
 
409
i       j
 
410
1       -1
 
411
2       0
 
412
3       0
 
413
4       0
 
414
5       0
 
415
6       0
 
416
7       0
 
417
8       3
 
418
9       3
 
419
10      3
 
420
11      3
 
421
12      3
 
422
13      8
 
423
14      13
 
424
15      5
 
425
16      13
 
426
17      -1
 
427
18      14
 
428
19      0
 
429
20      0
 
430
SELECT * FROM t2;
 
431
i
 
432
2
 
433
3
 
434
5
 
435
6
 
436
19
 
437
SELECT * FROM t1;
 
438
i       j
 
439
1       -1
 
440
2       0
 
441
3       0
 
442
4       0
 
443
5       0
 
444
6       0
 
445
7       0
 
446
8       3
 
447
9       3
 
448
10      3
 
449
11      3
 
450
12      3
 
451
13      8
 
452
14      13
 
453
15      5
 
454
16      13
 
455
17      -1
 
456
18      14
 
457
19      0
 
458
20      0
 
459
SELECT * FROM t2;
 
460
i
 
461
2
 
462
3
 
463
5
 
464
6
 
465
19
 
466
DROP PROCEDURE p1;
 
467
DROP FUNCTION f1;
 
468
DROP FUNCTION f2;
 
469
DROP FUNCTION f3;
 
470
DROP TABLE t1, t2;
 
471
#
 
472
# End of 5.0 tests
 
473
#
 
474
create table t2 (
 
475
id int not null auto_increment,
 
476
last_id int,
 
477
primary key (id)
 
478
);
 
479
truncate table t2;
 
480
create table t1 (id tinyint primary key);
 
481
create function insid() returns int
 
482
begin
 
483
insert into t2 (last_id) values (0);
 
484
return 0;
 
485
end|
 
486
set sql_log_bin=0;
 
487
insert into t2 (id) values(1),(2),(3);
 
488
delete from t2;
 
489
set sql_log_bin=1;
 
490
select insid();
 
491
insid()
 
492
0
 
493
set sql_log_bin=0;
 
494
insert into t2 (id) values(5),(6),(7);
 
495
delete from t2 where id>=5;
 
496
set sql_log_bin=1;
 
497
insert into t1 select insid();
 
498
select * from t1;
 
499
id
 
500
0
 
501
select * from t2;
 
502
id      last_id
 
503
4       0
 
504
8       0
 
505
select * from t1;
 
506
id
 
507
0
 
508
select * from t2;
 
509
id      last_id
 
510
4       0
 
511
8       0
 
512
drop table t1;
 
513
drop function insid;
 
514
truncate table t2;
 
515
create table t1 (n int primary key auto_increment not null,
 
516
b int, unique(b));
 
517
create procedure foo()
 
518
begin
 
519
insert into t1 values(null,10);
 
520
insert ignore into t1 values(null,10);
 
521
insert ignore into t1 values(null,10);
 
522
insert into t2 values(null,3);
 
523
end|
 
524
call foo();
 
525
select * from t1;
 
526
n       b
 
527
1       10
 
528
select * from t2;
 
529
id      last_id
 
530
1       3
 
531
select * from t1;
 
532
n       b
 
533
1       10
 
534
select * from t2;
 
535
id      last_id
 
536
1       3
 
537
drop table t1, t2;
 
538
drop procedure foo;