~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to storage/innobase/mysql-test/innodb-autoinc.test

  • Committer: Brian Aker
  • Date: 2009-03-27 22:55:28 UTC
  • mto: This revision was merged to the branch mainline in revision 968.
  • Revision ID: brian@tangent.org-20090327225528-8y76cfx8a4oemqv9
Remove ref_count

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
-- source include/have_innodb.inc
 
2
# embedded server ignores 'delayed', so skip this
 
3
-- source include/not_embedded.inc
 
4
 
 
5
--disable_warnings
 
6
drop table if exists t1;
 
7
--enable_warnings
 
8
 
 
9
#
 
10
# Bug #34335
 
11
#
 
12
CREATE TABLE t1 (c1 BIGINT PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
 
13
INSERT INTO t1 VALUES (9223372036854775807, null);
 
14
-- error ER_DUP_ENTRY,1062
 
15
INSERT INTO t1 (c2) VALUES ('innodb');
 
16
SELECT * FROM t1;
 
17
DROP TABLE t1;
 
18
#
 
19
## Test AUTOINC overflow
 
20
##
 
21
 
 
22
# TINYINT
 
23
CREATE TABLE t1 (c1 TINYINT PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
 
24
INSERT INTO t1 VALUES (127, null);
 
25
-- error ER_DUP_ENTRY,1062
 
26
INSERT INTO t1 (c2) VALUES ('innodb');
 
27
SELECT * FROM t1;
 
28
DROP TABLE t1;
 
29
 
 
30
CREATE TABLE t1 (c1 TINYINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
 
31
INSERT INTO t1 VALUES (255, null);
 
32
-- error ER_DUP_ENTRY,1062
 
33
INSERT INTO t1 (c2) VALUES ('innodb');
 
34
SELECT * FROM t1;
 
35
DROP TABLE t1;
 
36
#
 
37
# SMALLINT
 
38
#
 
39
CREATE TABLE t1 (c1 SMALLINT PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
 
40
INSERT INTO t1 VALUES (32767, null);
 
41
-- error ER_DUP_ENTRY,1062
 
42
INSERT INTO t1 (c2) VALUES ('innodb');
 
43
SELECT * FROM t1;
 
44
DROP TABLE t1;
 
45
 
 
46
CREATE TABLE t1 (c1 SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
 
47
INSERT INTO t1 VALUES (65535, null);
 
48
-- error ER_DUP_ENTRY,1062
 
49
INSERT INTO t1 (c2) VALUES ('innodb');
 
50
SELECT * FROM t1;
 
51
DROP TABLE t1;
 
52
#
 
53
# MEDIUMINT
 
54
#
 
55
CREATE TABLE t1 (c1 MEDIUMINT PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
 
56
INSERT INTO t1 VALUES (8388607, null);
 
57
-- error ER_DUP_ENTRY,1062
 
58
INSERT INTO t1 (c2) VALUES ('innodb');
 
59
SELECT * FROM t1;
 
60
DROP TABLE t1;
 
61
 
 
62
CREATE TABLE t1 (c1 MEDIUMINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
 
63
INSERT INTO t1 VALUES (16777215, null);
 
64
-- error ER_DUP_ENTRY,1062
 
65
INSERT INTO t1 (c2) VALUES ('innodb');
 
66
SELECT * FROM t1;
 
67
DROP TABLE t1;
 
68
#
 
69
# INT
 
70
#
 
71
CREATE TABLE t1 (c1 INT PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
 
72
INSERT INTO t1 VALUES (2147483647, null);
 
73
-- error ER_DUP_ENTRY,1062
 
74
INSERT INTO t1 (c2) VALUES ('innodb');
 
75
SELECT * FROM t1;
 
76
DROP TABLE t1;
 
77
 
 
78
CREATE TABLE t1 (c1 INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
 
79
INSERT INTO t1 VALUES (4294967295, null);
 
80
-- error ER_DUP_ENTRY,1062
 
81
INSERT INTO t1 (c2) VALUES ('innodb');
 
82
SELECT * FROM t1;
 
83
DROP TABLE t1;
 
84
#
 
85
# BIGINT
 
86
#
 
87
CREATE TABLE t1 (c1 BIGINT PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
 
88
INSERT INTO t1 VALUES (9223372036854775807, null);
 
89
-- error ER_DUP_ENTRY,1062
 
90
INSERT INTO t1 (c2) VALUES ('innodb');
 
91
SELECT * FROM t1;
 
92
DROP TABLE t1;
 
93
 
 
94
CREATE TABLE t1 (c1 BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
 
95
INSERT INTO t1 VALUES (18446744073709551615, null);
 
96
-- error ER_AUTOINC_READ_FAILED,1467
 
97
INSERT INTO t1 (c2) VALUES ('innodb');
 
98
SELECT * FROM t1;
 
99
DROP TABLE t1;
 
100
 
 
101
#
 
102
# Bug 37531
 
103
# After truncate, auto_increment behaves incorrectly for InnoDB
 
104
#
 
105
CREATE TABLE t1(c1 INT PRIMARY KEY AUTO_INCREMENT) ENGINE=InnoDB;
 
106
INSERT INTO t1 VALUES (1), (2), (3);
 
107
INSERT INTO t1 VALUES (NULL), (NULL), (NULL);
 
108
SELECT c1 FROM t1;
 
109
SHOW CREATE TABLE t1;
 
110
TRUNCATE TABLE t1;
 
111
SHOW CREATE TABLE t1;
 
112
INSERT INTO t1 VALUES (1), (2), (3);
 
113
INSERT INTO t1 VALUES (NULL), (NULL), (NULL);
 
114
SELECT c1 FROM t1;
 
115
SHOW CREATE TABLE t1;
 
116
DROP TABLE t1;
 
117
 
 
118
#
 
119
# Deleting all records should not reset the AUTOINC counter.
 
120
#
 
121
CREATE TABLE t1(c1 INT PRIMARY KEY AUTO_INCREMENT) ENGINE=InnoDB;
 
122
INSERT INTO t1 VALUES (1), (2), (3);
 
123
INSERT INTO t1 VALUES (NULL), (NULL), (NULL);
 
124
SELECT c1 FROM t1;
 
125
SHOW CREATE TABLE t1;
 
126
DELETE FROM t1;
 
127
SHOW CREATE TABLE t1;
 
128
INSERT INTO t1 VALUES (1), (2), (3);
 
129
INSERT INTO t1 VALUES (NULL), (NULL), (NULL);
 
130
SELECT c1 FROM t1;
 
131
SHOW CREATE TABLE t1;
 
132
DROP TABLE t1;
 
133
 
 
134
#
 
135
# Bug 38839
 
136
# Reset the last value generated at end of statement
 
137
#
 
138
DROP TABLE IF EXISTS t1;
 
139
CREATE TABLE t1 (c1 INT AUTO_INCREMENT, c2 INT, PRIMARY KEY(c1)) ENGINE=InnoDB;
 
140
INSERT INTO t1 VALUES (NULL, 1);
 
141
DELETE FROM t1 WHERE c1 = 1;
 
142
INSERT INTO t1 VALUES (2,1); 
 
143
INSERT INTO t1 VALUES (NULL,8);
 
144
SELECT * FROM t1;
 
145
DROP TABLE t1;
 
146
# Bug 38839 -- same as above but for multi value insert
 
147
DROP TABLE IF EXISTS t1;
 
148
CREATE TABLE t1 (c1 INT AUTO_INCREMENT, c2 INT, PRIMARY KEY(c1)) ENGINE=InnoDB;
 
149
INSERT INTO t1 VALUES (NULL, 1);
 
150
DELETE FROM t1 WHERE c1 = 1;
 
151
INSERT INTO t1 VALUES (2,1), (NULL, 8);
 
152
INSERT INTO t1 VALUES (NULL,9);
 
153
SELECT * FROM t1;
 
154
DROP TABLE t1;
 
155
 
 
156
#
 
157
# Test changes to AUTOINC next value calculation
 
158
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
 
159
SHOW VARIABLES LIKE "%auto_inc%";
 
160
DROP TABLE IF EXISTS t1;
 
161
CREATE TABLE t1 (c1 INT AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
 
162
INSERT INTO t1 VALUES (NULL),(5),(NULL);
 
163
INSERT INTO t1 VALUES (250),(NULL);
 
164
SELECT * FROM t1;
 
165
INSERT INTO t1 VALUES (1000);
 
166
SET @@INSERT_ID=400;
 
167
INSERT INTO t1 VALUES(NULL),(NULL);
 
168
SELECT * FROM t1;
 
169
DROP TABLE t1;
 
170
 
 
171
# Test with SIGNED INT column, by inserting a 0 for the first column value
 
172
# 0 is treated in the same was NULL.
 
173
# Reset the AUTOINC session variables
 
174
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
 
175
SET @@INSERT_ID=1;
 
176
SHOW VARIABLES LIKE "%auto_inc%";
 
177
DROP TABLE IF EXISTS t1;
 
178
CREATE TABLE t1 (c1 INT AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
 
179
INSERT INTO t1 VALUES(0);
 
180
SELECT * FROM t1;
 
181
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
 
182
INSERT INTO t1 VALUES (-1), (NULL),(2),(NULL);
 
183
INSERT INTO t1 VALUES (250),(NULL);
 
184
SELECT * FROM t1;
 
185
SET @@INSERT_ID=400;
 
186
# Duplicate error expected here for autoinc_lock_mode != TRADITIONAL
 
187
-- error ER_DUP_ENTRY,1062
 
188
INSERT INTO t1 VALUES(NULL),(NULL);
 
189
SELECT * FROM t1;
 
190
DROP TABLE t1;
 
191
 
 
192
# Test with SIGNED INT column
 
193
# Reset the AUTOINC session variables
 
194
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
 
195
SET @@INSERT_ID=1;
 
196
SHOW VARIABLES LIKE "%auto_inc%";
 
197
DROP TABLE IF EXISTS t1;
 
198
CREATE TABLE t1 (c1 INT AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
 
199
INSERT INTO t1 VALUES(-1);
 
200
SELECT * FROM t1;
 
201
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
 
202
SHOW VARIABLES LIKE "%auto_inc%";
 
203
INSERT INTO t1 VALUES (-2), (NULL),(2),(NULL);
 
204
INSERT INTO t1 VALUES (250),(NULL);
 
205
SELECT * FROM t1;
 
206
INSERT INTO t1 VALUES (1000);
 
207
SET @@INSERT_ID=400;
 
208
INSERT INTO t1 VALUES(NULL),(NULL);
 
209
SELECT * FROM t1;
 
210
DROP TABLE t1;
 
211
 
 
212
# Test with UNSIGNED INT column, single insert
 
213
# The sign in the value is ignored and a new column value is generated
 
214
# Reset the AUTOINC session variables
 
215
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
 
216
SET @@INSERT_ID=1;
 
217
SHOW VARIABLES LIKE "%auto_inc%";
 
218
DROP TABLE IF EXISTS t1;
 
219
CREATE TABLE t1 (c1 INT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
 
220
INSERT INTO t1 VALUES(-1);
 
221
SELECT * FROM t1;
 
222
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
 
223
SHOW VARIABLES LIKE "%auto_inc%";
 
224
INSERT INTO t1 VALUES (-2);
 
225
INSERT INTO t1 VALUES (NULL);
 
226
INSERT INTO t1 VALUES (2);
 
227
INSERT INTO t1 VALUES (NULL);
 
228
INSERT INTO t1 VALUES (250);
 
229
INSERT INTO t1 VALUES (NULL);
 
230
SELECT * FROM t1;
 
231
INSERT INTO t1 VALUES (1000);
 
232
SET @@INSERT_ID=400;
 
233
INSERT INTO t1 VALUES(NULL);
 
234
INSERT INTO t1 VALUES(NULL);
 
235
SELECT * FROM t1;
 
236
DROP TABLE t1;
 
237
 
 
238
# Test with UNSIGNED INT column, multi-value inserts
 
239
# The sign in the value is ignored and a new column value is generated
 
240
# Reset the AUTOINC session variables
 
241
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
 
242
SET @@INSERT_ID=1;
 
243
SHOW VARIABLES LIKE "%auto_inc%";
 
244
DROP TABLE IF EXISTS t1;
 
245
CREATE TABLE t1 (c1 INT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
 
246
INSERT INTO t1 VALUES(-1);
 
247
SELECT * FROM t1;
 
248
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
 
249
SHOW VARIABLES LIKE "%auto_inc%";
 
250
INSERT INTO t1 VALUES (-2),(NULL),(2),(NULL);
 
251
INSERT INTO t1 VALUES (250),(NULL);
 
252
SELECT * FROM t1;
 
253
INSERT INTO t1 VALUES (1000);
 
254
SET @@INSERT_ID=400;
 
255
# Duplicate error expected here for autoinc_lock_mode != TRADITIONAL
 
256
-- error ER_DUP_ENTRY,1062
 
257
INSERT INTO t1 VALUES(NULL),(NULL);
 
258
SELECT * FROM t1;
 
259
DROP TABLE t1;
 
260
 
 
261
#
 
262
# Check for overflow handling when increment is > 1
 
263
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
 
264
SET @@INSERT_ID=1;
 
265
SHOW VARIABLES LIKE "%auto_inc%";
 
266
DROP TABLE IF EXISTS t1;
 
267
CREATE TABLE t1 (c1 BIGINT AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
 
268
# TODO: Fix the autoinc init code
 
269
# We have to do this because of a bug in the AUTOINC init code.
 
270
INSERT INTO t1 VALUES(NULL);
 
271
INSERT INTO t1 VALUES (9223372036854775794); #-- 2^63 - 14
 
272
SELECT * FROM t1;
 
273
SET @@SESSION.AUTO_INCREMENT_INCREMENT=2, @@SESSION.AUTO_INCREMENT_OFFSET=10;
 
274
SHOW VARIABLES LIKE "%auto_inc%";
 
275
# This should just fit
 
276
INSERT INTO t1 VALUES (NULL),(NULL),(NULL),(NULL),(NULL),(NULL);
 
277
SELECT * FROM t1;
 
278
DROP TABLE t1;
 
279
 
 
280
#
 
281
# Check for overflow handling when increment and offser are > 1
 
282
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
 
283
SET @@INSERT_ID=1;
 
284
SHOW VARIABLES LIKE "%auto_inc%";
 
285
DROP TABLE IF EXISTS t1;
 
286
CREATE TABLE t1 (c1 BIGINT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
 
287
# TODO: Fix the autoinc init code
 
288
# We have to do this because of a bug in the AUTOINC init code.
 
289
INSERT INTO t1 VALUES(NULL);
 
290
INSERT INTO t1 VALUES (18446744073709551603); #-- 2^64 - 13
 
291
SELECT * FROM t1;
 
292
SET @@SESSION.AUTO_INCREMENT_INCREMENT=2, @@SESSION.AUTO_INCREMENT_OFFSET=10;
 
293
SHOW VARIABLES LIKE "%auto_inc%";
 
294
# This should fail because of overflow but it doesn't, it seems to be
 
295
# a MySQL server bug. It wraps around to 0 for the last value.
 
296
# See MySQL Bug# 39828
 
297
#
 
298
# Instead of wrapping around, it asserts when MySQL is compiled --with-debug
 
299
# (see sql/handler.cc:handler::update_auto_increment()).  Don't test for
 
300
# overflow until Bug #39828 is fixed.
 
301
#
 
302
# Since this asserts when compiled --with-debug, we can't properly test this
 
303
# until Bug #39828 is fixed.  For now, this test is meaningless.
 
304
#if Bug #39828 is fixed
 
305
#INSERT INTO t1 VALUES (NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL);
 
306
#else
 
307
INSERT INTO t1 VALUES (NULL),(NULL),(NULL),(NULL),(NULL),(NULL);
 
308
#endif
 
309
SELECT * FROM t1;
 
310
DROP TABLE t1;
 
311
 
 
312
#
 
313
# Check for overflow handling when increment and offset are odd numbers
 
314
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
 
315
SET @@INSERT_ID=1;
 
316
SHOW VARIABLES LIKE "%auto_inc%";
 
317
DROP TABLE IF EXISTS t1;
 
318
CREATE TABLE t1 (c1 BIGINT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
 
319
# TODO: Fix the autoinc init code
 
320
# We have to do this because of a bug in the AUTOINC init code.
 
321
INSERT INTO t1 VALUES(NULL);
 
322
INSERT INTO t1 VALUES (18446744073709551603); #-- 2^64 - 13
 
323
SELECT * FROM t1;
 
324
SET @@SESSION.AUTO_INCREMENT_INCREMENT=5, @@SESSION.AUTO_INCREMENT_OFFSET=7;
 
325
SHOW VARIABLES LIKE "%auto_inc%";
 
326
# This should fail because of overflow but it doesn't. It fails with
 
327
# a duplicate entry message because of a MySQL server bug, it wraps
 
328
# around.  See MySQL Bug# 39828, once MySQL fix the bug we can replace
 
329
# the ER_DUP_ENTRY, 1062 below with the appropriate error message
 
330
#
 
331
# Since this asserts when compiled --with-debug, we can't properly test this
 
332
# until Bug #39828 is fixed.  For now, this test is meaningless.
 
333
#if Bug #39828 is fixed
 
334
# Still need to fix this error code, error should mention overflow
 
335
#-- error ER_DUP_ENTRY,1062
 
336
#INSERT INTO t1 VALUES (NULL),(NULL), (NULL);
 
337
#else
 
338
INSERT INTO t1 VALUES (NULL),(NULL);
 
339
#endif
 
340
SELECT * FROM t1;
 
341
DROP TABLE t1;
 
342
 
 
343
# Check for overflow handling when increment and offset are odd numbers
 
344
# and check for large -ve numbers
 
345
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
 
346
SET @@INSERT_ID=1;
 
347
SHOW VARIABLES LIKE "%auto_inc%";
 
348
DROP TABLE IF EXISTS t1;
 
349
CREATE TABLE t1 (c1 BIGINT AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
 
350
# TODO: Fix the autoinc init code
 
351
# We have to do this because of a bug in the AUTOINC init code.
 
352
INSERT INTO t1 VALUES(NULL);
 
353
INSERT INTO t1 VALUES(-9223372036854775806); #-- -2^63 + 2
 
354
INSERT INTO t1 VALUES(-9223372036854775807); #-- -2^63 + 1
 
355
INSERT INTO t1 VALUES(-9223372036854775808); #-- -2^63
 
356
SELECT * FROM t1;
 
357
SET @@SESSION.AUTO_INCREMENT_INCREMENT=3, @@SESSION.AUTO_INCREMENT_OFFSET=3;
 
358
SHOW VARIABLES LIKE "%auto_inc%";
 
359
INSERT INTO t1 VALUES (NULL),(NULL), (NULL);
 
360
SELECT * FROM t1;
 
361
DROP TABLE t1;
 
362
#
 
363
# Check for overflow handling when increment and offset are very
 
364
# large numbers 2^60
 
365
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
 
366
SET @@INSERT_ID=1;
 
367
SHOW VARIABLES LIKE "%auto_inc%";
 
368
DROP TABLE IF EXISTS t1;
 
369
CREATE TABLE t1 (c1 BIGINT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
 
370
# TODO: Fix the autoinc init code
 
371
# We have to do this because of a bug in the AUTOINC init code.
 
372
INSERT INTO t1 VALUES(NULL);
 
373
INSERT INTO t1 VALUES (18446744073709551610); #-- 2^64 - 2
 
374
SELECT * FROM t1;
 
375
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1152921504606846976, @@SESSION.AUTO_INCREMENT_OFFSET=1152921504606846976;
 
376
SHOW VARIABLES LIKE "%auto_inc%";
 
377
# This should fail because of overflow but it doesn't. It wraps around
 
378
# and the autoinc values look bogus too.
 
379
# See MySQL Bug# 39828, once MySQL fix the bug we can enable the error
 
380
# code expected test.
 
381
# -- error ER_AUTOINC_READ_FAILED,1467
 
382
#
 
383
# Since this asserts when compiled --with-debug, we can't properly test this
 
384
# until Bug #39828 is fixed.  For now, this test is meaningless.
 
385
#if Bug #39828 is fixed
 
386
#-- error ER_AUTOINC_READ_FAILED,1467
 
387
#INSERT INTO t1 VALUES (NULL),(NULL);
 
388
#else
 
389
INSERT INTO t1 VALUES (NULL);
 
390
#endif
 
391
SELECT * FROM t1;
 
392
DROP TABLE t1;
 
393
 
 
394
#
 
395
# Check for floating point autoinc column handling
 
396
#
 
397
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
 
398
SET @@INSERT_ID=1;
 
399
SHOW VARIABLES LIKE "%auto_inc%";
 
400
CREATE TABLE t1 (c1 DOUBLE NOT NULL AUTO_INCREMENT, c2 INT, PRIMARY KEY (c1)) ENGINE=InnoDB;
 
401
INSERT INTO t1 VALUES(NULL, 1);
 
402
INSERT INTO t1 VALUES(NULL, 2);
 
403
SELECT * FROM t1;
 
404
ALTER TABLE t1 CHANGE c1 c1 SERIAL;
 
405
SELECT * FROM t1;
 
406
INSERT INTO t1 VALUES(NULL, 3);
 
407
INSERT INTO t1 VALUES(NULL, 4);
 
408
SELECT * FROM t1;
 
409
DROP TABLE IF EXISTS t1;
 
410
CREATE TABLE t1 (c1 FLOAT NOT NULL AUTO_INCREMENT, c2 INT, PRIMARY KEY (c1)) ENGINE=InnoDB;
 
411
INSERT INTO t1 VALUES(NULL, 1);
 
412
INSERT INTO t1 VALUES(NULL, 2);
 
413
SELECT * FROM t1;
 
414
ALTER TABLE t1 CHANGE c1 c1 SERIAL;
 
415
SELECT * FROM t1;
 
416
INSERT INTO t1 VALUES(NULL, 3);
 
417
INSERT INTO t1 VALUES(NULL, 4);
 
418
SELECT * FROM t1;
 
419
DROP TABLE t1;
 
420
 
 
421
#
 
422
# Bug# 42714: AUTOINC column calculated next value not greater than highest
 
423
# value stored in table.
 
424
#
 
425
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=5;
 
426
DROP TABLE IF EXISTS t1;
 
427
DROP TABLE IF EXISTS t2;
 
428
CREATE TABLE t1 (
 
429
  a INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
 
430
  b INT(10) UNSIGNED NOT NULL,
 
431
  c ENUM('FALSE','TRUE') DEFAULT NULL,
 
432
  PRIMARY KEY (a)) ENGINE = InnoDB;
 
433
CREATE TABLE t2 (
 
434
  m INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
 
435
  n INT(10) UNSIGNED NOT NULL,
 
436
  o enum('FALSE','TRUE') DEFAULT NULL,
 
437
  PRIMARY KEY (m)) ENGINE = InnoDB;
 
438
INSERT INTO t2 (n,o) VALUES
 
439
  (1 , 'true'), (1 , 'false'), (2 , 'true'), (2 , 'false'), (3 , 'true'),
 
440
  (3 , 'false'), (4 , 'true'), (4 , 'false'), (5 , 'true'), (5 , 'false');
 
441
SHOW CREATE TABLE t2;
 
442
INSERT INTO t1 (b,c) SELECT n,o FROM t2 ;
 
443
SHOW CREATE TABLE t1;
 
444
INSERT INTO t1 (b,c) SELECT n,o FROM t2 ;
 
445
SELECT * FROM t1;
 
446
SHOW CREATE TABLE t1;
 
447
INSERT INTO t1 (b,c) SELECT n,o FROM t2 WHERE o = 'false';
 
448
SELECT * FROM t1;
 
449
SHOW CREATE TABLE t1;
 
450
INSERT INTO t1 (b,c) SELECT n,o FROM t2 WHERE o = 'false';
 
451
SELECT * FROM t1;
 
452
SHOW CREATE TABLE t1;
 
453
INSERT INTO t1 (b,c) SELECT n,o FROM t2 WHERE o = 'false';
 
454
SHOW CREATE TABLE t1;
 
455
INSERT INTO t1 (b,c) SELECT n,o FROM t2 WHERE o = 'false';
 
456
SHOW CREATE TABLE t1;
 
457
INSERT INTO t1 (b,c) SELECT n,o FROM t2 WHERE o = 'false';
 
458
SELECT * FROM t1;
 
459
SHOW CREATE TABLE t1;
 
460
DROP TABLE t1;
 
461
DROP TABLE t2;
 
462
#
 
463
# 43203: Overflow from auto incrementing causes server segv
 
464
#
 
465
 
 
466
DROP TABLE IF EXISTS t1;
 
467
DROP TABLE IF EXISTS t2;
 
468
CREATE TABLE t1(
 
469
   c1 INT(10) UNSIGNED NOT NULL AUTO_INCREMENT
 
470
   PRIMARY KEY) ENGINE=InnoDB;
 
471
INSERT INTO t1 VALUES (NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL);
 
472
CREATE TABLE t2(
 
473
    c1 TINYINT(3) UNSIGNED NOT NULL AUTO_INCREMENT
 
474
    PRIMARY KEY) ENGINE=InnoDB;
 
475
-- error ER_DUP_ENTRY,1062
 
476
INSERT INTO t2 SELECT c1 FROM t1;
 
477
-- error ER_DUP_ENTRY,1467
 
478
INSERT INTO t2 SELECT NULL FROM t1;
 
479
DROP TABLE t1;
 
480
DROP TABLE t2;