~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to tests/t/strict.test

Removing global errbuff and cleaning up two remaining instances that referenced it.

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
 
3
3
-- source include/have_innodb.inc
4
4
 
5
 
set @org_mode=@@sql_mode;
6
 
set @@sql_mode='ansi,traditional';
7
 
select @@sql_mode;
 
5
# Test INSERT with INT
8
6
 
9
7
--disable_warnings
10
 
DROP TABLE IF EXISTS t1, t2;
 
8
DROP TABLE IF EXISTS t1;
11
9
--enable_warnings
12
 
 
13
 
# Test INSERT with DATE
14
 
 
15
 
CREATE TABLE t1 (col1 date);
16
 
INSERT INTO t1 VALUES('2004-01-01'),('2004-02-29');
17
 
INSERT INTO t1 VALUES('0000-10-31');
18
 
 
19
 
# All test cases expected to fail should return 
20
 
#      SQLSTATE 22007 <invalid date value>
21
 
--error 1292
22
 
INSERT INTO t1 VALUES('2004-0-31');
23
 
--error 1292
24
 
INSERT INTO t1 VALUES('2004-01-02'),('2004-0-31');
25
 
--error 1292
26
 
INSERT INTO t1 VALUES('2004-10-0');
27
 
--error 1292
28
 
INSERT INTO t1 VALUES('2004-09-31');
29
 
--error 1292
30
 
INSERT INTO t1 VALUES('2004-10-32');
31
 
--error 1292
32
 
INSERT INTO t1 VALUES('2003-02-29');
33
 
--error 1292
34
 
INSERT INTO t1 VALUES('2004-13-15');
35
 
--error 1292
36
 
INSERT INTO t1 VALUES('0000-00-00');
37
 
# Standard says we should return SQLSTATE 22018
38
 
--error 1292
39
 
INSERT INTO t1 VALUES ('59');
40
 
 
41
 
# Test the different related modes
42
 
set @@sql_mode='STRICT_ALL_TABLES';
43
 
INSERT INTO t1 VALUES('2004-01-03'),('2004-0-31');
44
 
set @@sql_mode='STRICT_ALL_TABLES,NO_ZERO_IN_DATE';
45
 
--error 1292
46
 
INSERT INTO t1 VALUES('2004-0-30');
47
 
--error 1292
48
 
INSERT INTO t1 VALUES('2004-01-04'),('2004-0-31'),('2004-01-05');
49
 
INSERT INTO t1 VALUES('0000-00-00');
50
 
INSERT IGNORE INTO t1 VALUES('2004-0-29');
51
 
set @@sql_mode='STRICT_ALL_TABLES,NO_ZERO_DATE';
52
 
--error 1292
53
 
INSERT INTO t1 VALUES('0000-00-00');
54
 
INSERT IGNORE INTO t1 VALUES('0000-00-00');
55
 
INSERT INTO t1 VALUES ('2004-0-30');
56
 
--error 1292
57
 
INSERT INTO t1 VALUES ('2004-2-30');
58
 
set @@sql_mode='STRICT_ALL_TABLES,ALLOW_INVALID_DATES';
59
 
INSERT INTO t1 VALUES ('2004-2-30');
60
 
set @@sql_mode='ansi,traditional';
61
 
INSERT IGNORE INTO t1 VALUES('2004-02-29'),('2004-13-15'),('0000-00-00');
62
 
 
63
 
select * from t1;
64
 
drop table t1;
65
 
 
66
 
# Test difference in behaviour with InnoDB and MyISAM tables
67
 
 
68
 
set @@sql_mode='strict_trans_tables';
69
 
CREATE TABLE t1 (col1 date) engine=myisam;
70
 
--error 1292
71
 
INSERT INTO t1 VALUES('2004-13-31'),('2004-1-1');
72
 
INSERT INTO t1 VALUES ('2004-1-2'), ('2004-13-31'),('2004-1-3');
73
 
INSERT IGNORE INTO t1 VALUES('2004-13-31'),('2004-1-4');
74
 
--error 1292
75
 
INSERT INTO t1 VALUES ('2003-02-29');
76
 
INSERT ignore INTO t1 VALUES('2003-02-30');
77
 
set @@sql_mode='STRICT_ALL_TABLES,ALLOW_INVALID_DATES';
78
 
INSERT ignore INTO t1 VALUES('2003-02-31');
79
 
select * from t1;
80
 
drop table t1;
81
 
 
82
 
set @@sql_mode='strict_trans_tables';
83
 
CREATE TABLE t1 (col1 date) engine=innodb;
84
 
--error 1292
85
 
INSERT INTO t1 VALUES('2004-13-31'),('2004-1-1');
86
 
--error 1292
87
 
INSERT INTO t1 VALUES ('2004-1-2'), ('2004-13-31'),('2004-1-3');
88
 
INSERT IGNORE INTO t1 VALUES('2004-13-31'),('2004-1-4');
89
 
--error 1292
90
 
INSERT INTO t1 VALUES ('2003-02-29');
91
 
INSERT ignore INTO t1 VALUES('2003-02-30');
92
 
set @@sql_mode='STRICT_ALL_TABLES,ALLOW_INVALID_DATES';
93
 
INSERT ignore INTO t1 VALUES('2003-02-31');
94
 
select * from t1;
95
 
drop table t1;
96
 
set @@sql_mode='ansi,traditional';
97
 
 
98
 
# Test INSERT with DATETIME
99
 
 
100
 
CREATE TABLE t1 (col1 datetime);
101
 
INSERT INTO t1 VALUES('2004-10-31 15:30:00'),('2004-02-29 15:30:00');
102
 
INSERT INTO t1 VALUES('0000-10-31 15:30:00');
103
 
 
104
 
# All test cases expected to fail should return 
105
 
#      SQLSTATE 22007 <invalid datetime value>
106
 
--error 1292
107
 
INSERT INTO t1 VALUES('2004-0-31 15:30:00');
108
 
--error 1292
109
 
INSERT INTO t1 VALUES('2004-10-0 15:30:00');
110
 
--error 1292
111
 
INSERT INTO t1 VALUES('2004-09-31 15:30:00');
112
 
--error 1292
113
 
INSERT INTO t1 VALUES('2004-10-32 15:30:00');
114
 
--error 1292
115
 
INSERT INTO t1 VALUES('2003-02-29 15:30:00');
116
 
--error 1292
117
 
INSERT INTO t1 VALUES('2004-13-15 15:30:00');
118
 
--error 1292
119
 
INSERT INTO t1 VALUES('0000-00-00 15:30:00');
120
 
# Standard says we should return SQLSTATE 22018
121
 
--error 1292
122
 
INSERT INTO t1 VALUES ('59');
123
 
select * from t1;
124
 
drop table t1;
125
 
 
126
 
# Test INSERT with TIMESTAMP
127
 
 
128
 
CREATE TABLE t1 (col1 timestamp);
129
 
INSERT INTO t1 VALUES('2004-10-31 15:30:00'),('2004-02-29 15:30:00');
130
 
 
131
 
# All test cases expected to fail should return 
132
 
#      SQLSTATE 22007 <invalid datetime value>
133
 
# Standard says we should return ok, but we can't as this is out of range
134
 
--error 1292
135
 
INSERT INTO t1 VALUES('0000-10-31 15:30:00');
136
 
--error 1292
137
 
INSERT INTO t1 VALUES('2004-0-31 15:30:00');
138
 
--error 1292
139
 
INSERT INTO t1 VALUES('2004-10-0 15:30:00');
140
 
--error 1292
141
 
INSERT INTO t1 VALUES('2004-09-31 15:30:00');
142
 
--error 1292
143
 
INSERT INTO t1 VALUES('2004-10-32 15:30:00');
144
 
--error 1292
145
 
INSERT INTO t1 VALUES('2003-02-29 15:30:00');
146
 
--error 1292
147
 
INSERT INTO t1 VALUES('2004-13-15 15:30:00');
148
 
--error 1292
149
 
INSERT INTO t1 VALUES('2004-02-29 25:30:00');
150
 
--error 1292
151
 
INSERT INTO t1 VALUES('2004-02-29 15:65:00');
152
 
--error 1292
153
 
INSERT INTO t1 VALUES('2004-02-29 15:31:61');
154
 
--error 1292
155
 
INSERT INTO t1 VALUES('0000-00-00 15:30:00');
156
 
--error 1292
157
 
INSERT INTO t1 VALUES('0000-00-00 00:00:00');
158
 
INSERT IGNORE INTO t1 VALUES('0000-00-00 00:00:00');
159
 
# Standard says we should return SQLSTATE 22018
160
 
--error 1292
161
 
INSERT INTO t1 VALUES ('59');
162
 
 
163
 
set @@sql_mode='STRICT_ALL_TABLES,ALLOW_INVALID_DATES';
164
 
--error 1292
165
 
INSERT INTO t1 VALUES('2004-0-31 15:30:00');
166
 
--error 1292
167
 
INSERT INTO t1 VALUES('2004-10-0 15:30:00');
168
 
--error 1292
169
 
INSERT INTO t1 VALUES('2004-10-32 15:30:00');
170
 
--error 1292
171
 
INSERT INTO t1 VALUES('2004-02-30 15:30:04');
172
 
INSERT INTO t1 VALUES('0000-00-00 00:00:00');
173
 
set @@sql_mode='STRICT_ALL_TABLES,NO_ZERO_IN_DATE';
174
 
INSERT INTO t1 VALUES('0000-00-00 00:00:00');
175
 
set @@sql_mode='STRICT_ALL_TABLES,NO_ZERO_DATE';
176
 
--error 1292
177
 
INSERT INTO t1 VALUES('0000-00-00 00:00:00');
178
 
set @@sql_mode='ansi,traditional';
179
 
SELECT * FROM t1;
180
 
DROP TABLE t1;
181
 
 
182
 
 
183
 
#### Test INSERT with STR_TO_DATE into DATE/DATETIME/TIMESTAMP
184
 
 
185
 
CREATE TABLE t1 (col1 date, col2 datetime, col3 timestamp);
186
 
 
187
 
INSERT INTO t1 (col1) VALUES (STR_TO_DATE('15.10.2004','%d.%m.%Y'));
188
 
INSERT INTO t1 (col2) VALUES (STR_TO_DATE('15.10.2004 10.15','%d.%m.%Y %H.%i'));
189
 
INSERT INTO t1 (col3) VALUES (STR_TO_DATE('15.10.2004 10.15','%d.%m.%Y %H.%i'));
190
 
 
191
 
## Test INSERT with STR_TO_DATE into DATE
192
 
#       All test cases expected to fail should return 
193
 
#       SQLSTATE 22007 <invalid date value>
194
 
 
195
 
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('31.10.0000 15.30','%d.%m.%Y %H.%i'));
196
 
 
197
 
--error 1292
198
 
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('31.0.2004 15.30','%d.%m.%Y %H.%i'));
199
 
--error 1292
200
 
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('0.10.2004 15.30','%d.%m.%Y %H.%i'));
201
 
--error 1292
202
 
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('31.9.2004 15.30','%d.%m.%Y %H.%i'));
203
 
--error 1411
204
 
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('32.10.2004 15.30','%d.%m.%Y %H.%i'));
205
 
--error 1292
206
 
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('29.02.2003 15.30','%d.%m.%Y %H.%i'));
207
 
--error 1411
208
 
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('15.13.2004 15.30','%d.%m.%Y %H.%i'));
209
 
--error 1292
210
 
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('00.00.0000','%d.%m.%Y'));
211
 
 
212
 
## Test INSERT with STR_TO_DATE into DATETIME
213
 
#       All test cases expected to fail should return 
214
 
#       SQLSTATE 22007 <invalid datetime value>
215
 
 
216
 
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('31.10.0000 15.30','%d.%m.%Y %H.%i'));
217
 
 
218
 
--error 1292
219
 
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('31.0.2004 15.30','%d.%m.%Y %H.%i'));
220
 
--error 1292
221
 
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('0.10.2004 15.30','%d.%m.%Y %H.%i'));
222
 
--error 1292
223
 
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('31.9.2004 15.30','%d.%m.%Y %H.%i'));
224
 
--error 1411
225
 
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('32.10.2004 15.30','%d.%m.%Y %H.%i'));
226
 
--error 1292
227
 
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('29.02.2003 15.30','%d.%m.%Y %H.%i'));
228
 
--error 1411
229
 
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('15.13.2004 15.30','%d.%m.%Y %H.%i'));
230
 
--error 1292
231
 
INSERT INTO t1 (col2) VALUES(STR_TO_DATE('00.00.0000','%d.%m.%Y'));
232
 
 
233
 
## Test INSERT with STR_TO_DATE into TIMESTAMP
234
 
#       All test cases expected to fail should return 
235
 
#       SQLSTATE 22007 <invalid datetime value>
236
 
 
237
 
--error 1292
238
 
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('31.10.0000 15.30','%d.%m.%Y %H.%i'));
239
 
--error 1292
240
 
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('31.0.2004 15.30','%d.%m.%Y %H.%i'));
241
 
--error 1292
242
 
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('0.10.2004 15.30','%d.%m.%Y %H.%i'));
243
 
--error 1292
244
 
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('31.9.2004 15.30','%d.%m.%Y %H.%i'));
245
 
--error 1411
246
 
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('32.10.2004 15.30','%d.%m.%Y %H.%i'));
247
 
--error 1292
248
 
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('29.02.2003 15.30','%d.%m.%Y %H.%i'));
249
 
--error 1411
250
 
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('15.13.2004 15.30','%d.%m.%Y %H.%i'));
251
 
--error 1292
252
 
INSERT INTO t1 (col3) VALUES(STR_TO_DATE('00.00.0000','%d.%m.%Y'));
253
 
 
254
 
drop table t1;
255
 
 
256
 
 
257
 
#### Test INSERT with CAST AS DATE/DATETIME into DATE/DATETIME/TIMESTAMP
258
 
 
259
 
CREATE TABLE t1 (col1 date, col2 datetime, col3 timestamp);
260
 
 
261
 
INSERT INTO t1 (col1) VALUES (CAST('2004-10-15' AS DATE));
262
 
INSERT INTO t1 (col2) VALUES (CAST('2004-10-15 10:15' AS DATETIME));
263
 
INSERT INTO t1 (col3) VALUES (CAST('2004-10-15 10:15' AS DATETIME));
264
 
 
265
 
 
266
 
## Test INSERT with CAST AS DATE into DATE
267
 
#       All test cases expected to fail should return 
268
 
#       SQLSTATE 22007 <invalid date value>
269
 
 
270
 
INSERT INTO t1 (col1) VALUES(CAST('0000-10-31' AS DATE));
271
 
 
272
 
--error 1292
273
 
INSERT INTO t1 (col1) VALUES(CAST('2004-10-0' AS DATE));
274
 
--error 1292
275
 
INSERT INTO t1 (col1) VALUES(CAST('2004-0-10' AS DATE));
276
 
 
277
 
# deactivated because of Bug#8294
278
 
# Bug#8294 Traditional: Misleading error message for invalid CAST to DATE
279
 
# --error 1292
280
 
# INSERT INTO t1 (col1) VALUES(CAST('2004-9-31' AS DATE));
281
 
# --error 1292
282
 
# INSERT INTO t1 (col1) VALUES(CAST('2004-10-32' AS DATE));
283
 
# --error 1292
284
 
# INSERT INTO t1 (col1) VALUES(CAST('2003-02-29' AS DATE));
285
 
# --error 1292
286
 
# INSERT INTO t1 (col1) VALUES(CAST('2004-13-15' AS DATE));
287
 
 
288
 
# deactivated because of Bug#6145
289
 
#  Bug#6145: Traditional: CONVERT and CAST should reject zero DATE values
290
 
--error 1292
291
 
INSERT INTO t1 (col1) VALUES(CAST('0000-00-00' AS DATE));
292
 
 
293
 
## Test INSERT with CAST AS DATETIME into DATETIME
294
 
#       All test cases expected to fail should return 
295
 
#       SQLSTATE 22007 <invalid datetime value>
296
 
 
297
 
INSERT INTO t1 (col2) VALUES(CAST('0000-10-31 15:30' AS DATETIME));
298
 
 
299
 
--error 1292
300
 
INSERT INTO t1 (col2) VALUES(CAST('2004-10-0 15:30' AS DATETIME));
301
 
--error 1292
302
 
INSERT INTO t1 (col2) VALUES(CAST('2004-0-10 15:30' AS DATETIME));
303
 
 
304
 
# deactivated because of Bug#8294
305
 
# Bug#8294 Traditional: Misleading error message for invalid CAST to DATE
306
 
#--error 1292
307
 
#INSERT INTO t1 (col2) VALUES(CAST('2004-9-31 15:30' AS DATETIME));
308
 
#--error 1292
309
 
#INSERT INTO t1 (col2) VALUES(CAST('2004-10-32 15:30' AS DATETIME));
310
 
#--error 1292
311
 
#INSERT INTO t1 (col2) VALUES(CAST('2003-02-29 15:30' AS DATETIME));
312
 
#--error 1292
313
 
#INSERT INTO t1 (col2) VALUES(CAST('2004-13-15 15:30' AS DATETIME));
314
 
 
315
 
# Bug#6145: Traditional: CONVERT and CAST should reject zero DATE values
316
 
--error 1292
317
 
INSERT INTO t1 (col2) VALUES(CAST('0000-00-00' AS DATETIME));
318
 
 
319
 
## Test INSERT with CAST AS DATETIME into TIMESTAMP
320
 
#       All test cases expected to fail should return 
321
 
#       SQLSTATE 22007 <invalid datetime value>
322
 
--error 1292
323
 
INSERT INTO t1 (col3) VALUES(CAST('0000-10-31 15:30' AS DATETIME));
324
 
# should return OK
325
 
# We accept this to be a failure
326
 
 
327
 
--error 1292
328
 
INSERT INTO t1 (col3) VALUES(CAST('2004-10-0 15:30' AS DATETIME));
329
 
--error 1292
330
 
INSERT INTO t1 (col3) VALUES(CAST('2004-0-10 15:30' AS DATETIME));
331
 
# should return SQLSTATE 22007 <invalid datetime value>
332
 
 
333
 
# deactivated because of Bug#8294
334
 
# Bug#8294 Traditional: Misleading error message for invalid CAST to DATE
335
 
#--error 1292
336
 
#INSERT INTO t1 (col3) VALUES(CAST('2004-9-31 15:30' AS DATETIME));
337
 
#--error 1292
338
 
#INSERT INTO t1 (col3) VALUES(CAST('2004-10-32 15:30' AS DATETIME));
339
 
#--error 1292
340
 
#INSERT INTO t1 (col3) VALUES(CAST('2003-02-29 15:30' AS DATETIME));
341
 
#--error 1292
342
 
#INSERT INTO t1 (col3) VALUES(CAST('2004-13-15 15:30' AS DATETIME));
343
 
 
344
 
# Bug#6145: Traditional: CONVERT and CAST should reject zero DATE values
345
 
--error 1292
346
 
INSERT INTO t1 (col3) VALUES(CAST('0000-00-00' AS DATETIME));
347
 
 
348
 
drop table t1;
349
 
 
350
 
 
351
 
#### Test INSERT with CONVERT to DATE/DATETIME into DATE/DATETIME/TIMESTAMP
352
 
 
353
 
CREATE TABLE t1 (col1 date, col2 datetime, col3 timestamp);
354
 
 
355
 
INSERT INTO t1 (col1) VALUES (CONVERT('2004-10-15',DATE));
356
 
INSERT INTO t1 (col2) VALUES (CONVERT('2004-10-15 10:15',DATETIME));
357
 
INSERT INTO t1 (col3) VALUES (CONVERT('2004-10-15 10:15',DATETIME));
358
 
 
359
 
 
360
 
## Test INSERT with CONVERT to DATE into DATE
361
 
#       All test cases expected to fail should return 
362
 
#       SQLSTATE 22007 <invalid date value>
363
 
 
364
 
INSERT INTO t1 (col1) VALUES(CONVERT('0000-10-31' , DATE));
365
 
 
366
 
--error 1292
367
 
INSERT INTO t1 (col1) VALUES(CONVERT('2004-10-0' , DATE));
368
 
--error 1292
369
 
INSERT INTO t1 (col1) VALUES(CONVERT('2004-0-10' , DATE));
370
 
 
371
 
# deactivated because of Bug#8294
372
 
# Bug#8294 Traditional: Misleading error message for invalid CAST to DATE
373
 
#--error 1292
374
 
#INSERT INTO t1 (col1) VALUES(CONVERT('2004-9-31' , DATE));
375
 
#--error 1292
376
 
#INSERT INTO t1 (col1) VALUES(CONVERT('2004-10-32' , DATE));
377
 
#--error 1292
378
 
#INSERT INTO t1 (col1) VALUES(CONVERT('2003-02-29' , DATE));
379
 
#--error 1292
380
 
#INSERT INTO t1 (col1) VALUES(CONVERT('2004-13-15',DATE));
381
 
 
382
 
# Bug#6145: Traditional: CONVERT and CAST should reject zero DATE values
383
 
--error 1292
384
 
INSERT INTO t1 (col1) VALUES(CONVERT('0000-00-00',DATE));
385
 
 
386
 
## Test INSERT with CONVERT to DATETIME into DATETIME
387
 
#       All test cases expected to fail should return 
388
 
#       SQLSTATE 22007 <invalid datetime value>
389
 
 
390
 
INSERT INTO t1 (col2) VALUES(CONVERT('0000-10-31 15:30',DATETIME));
391
 
 
392
 
--error 1292
393
 
INSERT INTO t1 (col2) VALUES(CONVERT('2004-10-0 15:30',DATETIME));
394
 
--error 1292
395
 
INSERT INTO t1 (col2) VALUES(CONVERT('2004-0-10 15:30',DATETIME));
396
 
 
397
 
# deactivated because of Bug#8294
398
 
# Bug#8294 Traditional: Misleading error message for invalid CAST to DATE
399
 
#--error 1292
400
 
#INSERT INTO t1 (col2) VALUES(CONVERT('2004-9-31 15:30',DATETIME));
401
 
#--error 1292
402
 
#INSERT INTO t1 (col2) VALUES(CONVERT('2004-10-32 15:30',DATETIME));
403
 
#--error 1292
404
 
#INSERT INTO t1 (col2) VALUES(CONVERT('2003-02-29 15:30',DATETIME));
405
 
#--error 1292
406
 
#INSERT INTO t1 (col2) VALUES(CONVERT('2004-13-15 15:30',DATETIME));
407
 
 
408
 
# Bug#6145: Traditional: CONVERT and CAST should reject zero DATE values
409
 
--error 1292
410
 
INSERT INTO t1 (col2) VALUES(CONVERT('0000-00-00',DATETIME));
411
 
 
412
 
## Test INSERT with CONVERT to DATETIME into DATETIME
413
 
#       All test cases expected to fail should return 
414
 
#       SQLSTATE 22007 <invalid datetime value>
415
 
--error 1292
416
 
INSERT INTO t1 (col3) VALUES(CONVERT('0000-10-31 15:30',DATETIME));
417
 
# should return OK
418
 
# We accept this to be a failure
419
 
 
420
 
--error 1292
421
 
INSERT INTO t1 (col3) VALUES(CONVERT('2004-10-0 15:30',DATETIME));
422
 
--error 1292
423
 
INSERT INTO t1 (col3) VALUES(CONVERT('2004-0-10 15:30',DATETIME));
424
 
 
425
 
# deactivated because of Bug#8294
426
 
# Bug#8294 Traditional: Misleading error message for invalid CAST to DATE
427
 
#--error 1292
428
 
#INSERT INTO t1 (col3) VALUES(CONVERT('2004-9-31 15:30',DATETIME));
429
 
#--error 1292
430
 
#INSERT INTO t1 (col3) VALUES(CONVERT('2004-10-32 15:30',DATETIME));
431
 
#--error 1292
432
 
#INSERT INTO t1 (col3) VALUES(CONVERT('2003-02-29 15:30',DATETIME));
433
 
#--error 1292
434
 
#INSERT INTO t1 (col3) VALUES(CONVERT('2004-13-15 15:30',DATETIME));
435
 
 
436
 
# Bug#6145: Traditional: CONVERT and CAST should reject zero DATE values
437
 
--error 1292
438
 
INSERT INTO t1 (col3) VALUES(CONVERT('0000-00-00',DATETIME));
439
 
 
440
 
drop table t1;
441
 
 
442
 
 
443
 
# Test INSERT with int
444
 
 
445
 
CREATE TABLE t1(col1 int, col2 int UNSIGNED);
446
 
INSERT INTO t1 VALUES(-128,0),(0,0),(127,255),('-128','0'),('0','0'),('127','255'),(-128.0,0.0),(0.0,0.0),(127.0,255.0);
447
 
# Test that we restored the mode checking properly after an ok query
448
 
SELECT MOD(col1,0) FROM t1 WHERE col1 > 0 LIMIT 2;
449
 
INSERT INTO t1 (col1) VALUES(-129);
450
 
INSERT INTO t1 (col1) VALUES(128);
451
 
INSERT INTO t1 (col2) VALUES(-1);
452
 
INSERT INTO t1 (col2) VALUES(256);
453
 
INSERT INTO t1 (col1) VALUES('-129');
454
 
INSERT INTO t1 (col1) VALUES('128');
455
 
INSERT INTO t1 (col2) VALUES('-1');
456
 
INSERT INTO t1 (col2) VALUES('256');
457
 
INSERT INTO t1 (col1) VALUES(128.0);
458
 
INSERT INTO t1 (col2) VALUES(-1.0);
459
 
INSERT INTO t1 (col2) VALUES(256.0);
460
 
SELECT MOD(col1,0) FROM t1 WHERE col1 > 0 LIMIT 1;
461
 
--error 1264
462
 
UPDATE t1 SET col1 = col1 - 50 WHERE col1 < 0;
463
 
--error 1264
464
 
UPDATE t1 SET col2=col2 + 50 WHERE col2 > 0;
465
 
--error 1365
466
 
UPDATE t1 SET col1=col1 / 0 WHERE col1 > 0;
467
 
set @@sql_mode='ERROR_FOR_DIVISION_BY_ZERO';
468
 
INSERT INTO t1 values (1/0,1/0);
469
 
set @@sql_mode='ansi,traditional';
470
 
SELECT MOD(col1,0) FROM t1 WHERE col1 > 0 LIMIT 2;
471
 
# Should return SQLSTATE 22018 invalid character value for cast
472
 
--error 1366
473
 
INSERT INTO t1 (col1) VALUES ('');
474
 
--error 1366
475
 
INSERT INTO t1 (col1) VALUES ('a59b');
476
 
--error 1265
477
 
INSERT INTO t1 (col1) VALUES ('1a');
478
 
INSERT IGNORE INTO t1 (col1) VALUES ('2a');
479
 
INSERT IGNORE INTO t1 values (1/0,1/0);
480
 
set @@sql_mode='ansi';
481
 
INSERT INTO t1 values (1/0,1/0);
482
 
set @@sql_mode='ansi,traditional';
483
 
INSERT IGNORE INTO t1 VALUES('-129','-1'),('128','256');
484
 
INSERT IGNORE INTO t1 VALUES(-129.0,-1.0),(128.0,256.0);
485
 
UPDATE IGNORE t1 SET col2=1/NULL where col1=0;
486
 
 
487
 
SELECT * FROM t1;
488
 
DROP TABLE t1;
489
 
 
490
 
# Test INSERT with int
491
 
 
492
 
CREATE TABLE t1(col1 int, col2 int UNSIGNED);
493
 
INSERT INTO t1 VALUES(-32768,0),(0,0),(32767,65535),('-32768','0'),('32767','65535'),(-32768.0,0.0),(32767.0,65535.0);
494
 
 
495
 
--error 1264
496
 
INSERT INTO t1 (col1) VALUES(-32769);
497
 
--error 1264
498
 
INSERT INTO t1 (col1) VALUES(32768);
499
 
--error 1264
500
 
INSERT INTO t1 (col2) VALUES(-1);
501
 
--error 1264
502
 
INSERT INTO t1 (col2) VALUES(65536);
503
 
--error 1264
504
 
INSERT INTO t1 (col1) VALUES('-32769');
505
 
--error 1264
506
 
INSERT INTO t1 (col1) VALUES('32768');
507
 
--error 1264
508
 
INSERT INTO t1 (col2) VALUES('-1');
509
 
--error 1264
510
 
INSERT INTO t1 (col2) VALUES('65536');
511
 
--error 1264
512
 
INSERT INTO t1 (col1) VALUES(-32769.0);
513
 
--error 1264
514
 
INSERT INTO t1 (col1) VALUES(32768.0);
515
 
--error 1264
516
 
INSERT INTO t1 (col2) VALUES(-1.0);
517
 
--error 1264
518
 
INSERT INTO t1 (col2) VALUES(65536.0);
519
 
--error 1264
520
 
UPDATE t1 SET col1 = col1 - 50 WHERE col1 < 0;
521
 
--error 1264
522
 
UPDATE t1 SET col2 = col2 + 50 WHERE col2 > 0;
523
 
--error 1365
524
 
UPDATE t1 SET col1 = col1 / 0 WHERE col1 > 0;
525
 
--error 1365
526
 
UPDATE t1 SET col1= MOD(col1,0) WHERE col1 > 0;
527
 
--error 1366
528
 
INSERT INTO t1 (col1) VALUES ('');
529
 
--error 1366
530
 
INSERT INTO t1 (col1) VALUES ('a59b');
531
 
--error 1265
532
 
INSERT INTO t1 (col1) VALUES ('1a');
533
 
INSERT IGNORE INTO t1 (col1) VALUES ('2a');
534
 
INSERT IGNORE INTO t1 values (1/0,1/0);
535
 
INSERT IGNORE INTO t1 VALUES(-32769,-1),(32768,65536);
536
 
INSERT IGNORE INTO t1 VALUES('-32769','-1'),('32768','65536');
537
 
INSERT IGNORE INTO t1 VALUES(-32769,-1.0),(32768.0,65536.0);
538
 
UPDATE IGNORE t1 SET col2=1/NULL where col1=0;
539
 
 
540
 
SELECT * FROM t1;
541
 
DROP TABLE t1;
542
 
 
543
 
# Test INSERT with MEDIUMINT
544
 
 
545
 
CREATE TABLE t1 (col1 MEDIUMINT, col2 MEDIUMINT UNSIGNED);
546
 
INSERT INTO t1 VALUES(-8388608,0),(0,0),(8388607,16777215),('-8388608','0'),('8388607','16777215'),(-8388608.0,0.0),(8388607.0,16777215.0);
547
 
--error 1264
548
 
INSERT INTO t1 (col1) VALUES(-8388609);
549
 
--error 1264
550
 
INSERT INTO t1 (col1) VALUES(8388608);
551
 
--error 1264
552
 
INSERT INTO t1 (col2) VALUES(-1);
553
 
--error 1264
554
 
INSERT INTO t1 (col2) VALUES(16777216);
555
 
--error 1264
556
 
INSERT INTO t1 (col1) VALUES('-8388609');
557
 
--error 1264
558
 
INSERT INTO t1 (col1) VALUES('8388608');
559
 
--error 1264
560
 
INSERT INTO t1 (col2) VALUES('-1');
561
 
--error 1264
562
 
INSERT INTO t1 (col2) VALUES('16777216');
563
 
--error 1264
564
 
INSERT INTO t1 (col1) VALUES(-8388609.0);
565
 
--error 1264
566
 
INSERT INTO t1 (col1) VALUES(8388608.0);
567
 
--error 1264
568
 
INSERT INTO t1 (col2) VALUES(-1.0);
569
 
--error 1264
570
 
INSERT INTO t1 (col2) VALUES(16777216.0);
571
 
 
572
 
--error 1264
573
 
UPDATE t1 SET col1 = col1 - 50 WHERE col1 < 0;
574
 
--error 1264
575
 
UPDATE t1 SET col2 = col2 + 50 WHERE col2 > 0;
576
 
--error 1365
577
 
UPDATE t1 SET col1 =col1 / 0 WHERE col1 > 0;
578
 
--error 1365
579
 
UPDATE t1 SET col1= MOD(col1,0) WHERE col1 > 0;
580
 
--error 1366
581
 
INSERT INTO t1 (col1) VALUES ('');
582
 
--error 1366
583
 
INSERT INTO t1 (col1) VALUES ('a59b');
584
 
--error 1265
585
 
INSERT INTO t1 (col1) VALUES ('1a');
586
 
INSERT IGNORE INTO t1 (col1) VALUES ('2a');
587
 
INSERT IGNORE INTO t1 values (1/0,1/0);
588
 
INSERT IGNORE INTO t1 VALUES(-8388609,-1),(8388608,16777216);
589
 
INSERT IGNORE INTO t1 VALUES('-8388609','-1'),('8388608','16777216');
590
 
INSERT IGNORE INTO t1 VALUES(-8388609.0,-1.0),(8388608.0,16777216.0);
591
 
UPDATE IGNORE t1 SET col2=1/NULL where col1=0;
592
 
 
593
 
SELECT * FROM t1;
594
 
DROP TABLE t1;
595
 
 
596
 
# Test INSERT with INT
597
 
 
598
 
CREATE TABLE t1 (col1 INT, col2 INT UNSIGNED);
599
 
INSERT INTO t1 VALUES(-2147483648,0),(0,0),(2147483647,4294967295),('-2147483648','0'),('2147483647','4294967295'),(-2147483648.0,0.0),(2147483647.0,4294967295.0);
600
 
--error 1264
 
10
CREATE TABLE t1 (col1 INT);
 
11
INSERT INTO t1 VALUES(-2147483648);
 
12
INSERT INTO t1 VALUES (0);
 
13
INSERT INTO t1 VALUES (2147483647);
 
14
INSERT INTO t1 VALUES ('-2147483648');
 
15
INSERT INTO t1 VALUES ('2147483647');
 
16
INSERT INTO t1 VALUES (-2147483648.0);
 
17
INSERT INTO t1 VALUES (2147483647.0);
 
18
--error ER_WARN_DATA_OUT_OF_RANGE
601
19
INSERT INTO t1 (col1) VALUES(-2147483649);
602
 
--error 1264
 
20
--error ER_WARN_DATA_OUT_OF_RANGE
603
21
INSERT INTO t1 (col1) VALUES(2147643648);
604
 
--error 1264
605
 
INSERT INTO t1 (col2) VALUES(-1);
606
 
--error 1264
607
 
INSERT INTO t1 (col2) VALUES(4294967296);
608
 
--error 1264
 
22
--error ER_WARN_DATA_OUT_OF_RANGE
609
23
INSERT INTO t1 (col1) VALUES('-2147483649');
610
 
--error 1264
 
24
--error ER_WARN_DATA_OUT_OF_RANGE
611
25
INSERT INTO t1 (col1) VALUES('2147643648');
612
 
--error 1264
613
 
INSERT INTO t1 (col2) VALUES('-1');
614
 
--error 1264
615
 
INSERT INTO t1 (col2) VALUES('4294967296');
616
 
--error 1264
 
26
--error ER_WARN_DATA_OUT_OF_RANGE
617
27
INSERT INTO t1 (col1) VALUES(-2147483649.0);
618
 
--error 1264
 
28
--error ER_WARN_DATA_OUT_OF_RANGE
619
29
INSERT INTO t1 (col1) VALUES(2147643648.0);
620
 
--error 1264
621
 
INSERT INTO t1 (col2) VALUES(-1.0);
622
 
--error 1264
623
 
INSERT INTO t1 (col2) VALUES(4294967296.0);
624
30
 
625
 
--error 1264
 
31
--error ER_WARN_DATA_OUT_OF_RANGE
626
32
UPDATE t1 SET col1 = col1 - 50 WHERE col1 < 0;
627
 
--error 1264
628
 
UPDATE t1 SET col2 =col2 + 50 WHERE col2 > 0;
629
 
--error 1365
 
33
--error ER_DIVISION_BY_ZERO
630
34
UPDATE t1 SET col1 =col1 / 0 WHERE col1 > 0;
631
 
--error 1365
 
35
--error ER_DIVISION_BY_ZERO
632
36
UPDATE t1 SET col1= MOD(col1,0) WHERE col1 > 0;
633
 
--error 1366
 
37
--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
634
38
INSERT INTO t1 (col1) VALUES ('');
635
 
--error 1366
 
39
--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
636
40
INSERT INTO t1 (col1) VALUES ('a59b');
637
41
--error 1265
638
42
INSERT INTO t1 (col1) VALUES ('1a');
639
43
INSERT IGNORE INTO t1 (col1) VALUES ('2a');
640
 
INSERT IGNORE INTO t1 values (1/0,1/0);
641
 
INSERT IGNORE INTO t1 values (-2147483649, -1),(2147643648,4294967296);
642
 
INSERT IGNORE INTO t1 values ('-2147483649', '-1'),('2147643648','4294967296');
643
 
INSERT IGNORE INTO t1 values (-2147483649.0, -1.0),(2147643648.0,4294967296.0);
644
 
UPDATE IGNORE t1 SET col2=1/NULL where col1=0;
 
44
INSERT IGNORE INTO t1 values (1/0);
 
45
INSERT IGNORE INTO t1 values (-2147483649);
 
46
INSERT IGNORE INTO t1 values (2147643648);
 
47
INSERT IGNORE INTO t1 values ('-2147483649');
 
48
INSERT IGNORE INTO t1 values ('2147643648');
 
49
INSERT IGNORE INTO t1 values (-2147483649.0);
 
50
INSERT IGNORE INTO t1 values (2147643648.0);
645
51
SELECT * FROM t1;
646
52
DROP TABLE t1;
647
53
 
660
55
# Note that this doesn't behave 100 % to standard as we rotate
661
56
# integers when it's too big/small (just like C)
662
57
 
663
 
CREATE TABLE t1 (col1 BIGINT, col2 BIGINT UNSIGNED);
664
 
INSERT INTO t1 VALUES(-9223372036854775808,0),(0,0),(9223372036854775807,18446744073709551615);
665
 
INSERT INTO t1 VALUES('-9223372036854775808','0'),('9223372036854775807','18446744073709551615');
666
 
INSERT INTO t1 VALUES(-9223372036854774000.0,0.0),(9223372036854775700.0,1844674407370954000.0);
 
58
CREATE TABLE t1 (col1 BIGINT);
 
59
INSERT INTO t1 VALUES (-9223372036854775808);
 
60
INSERT INTO t1 VALUES (0);
 
61
INSERT INTO t1 VALUES (9223372036854775807);
 
62
INSERT INTO t1 VALUES ('-9223372036854775808');
 
63
INSERT INTO t1 VALUES ('9223372036854775807');
 
64
INSERT INTO t1 VALUES (-9223372036854774000.0);
 
65
INSERT INTO t1 VALUES (9223372036854775700.0);
667
66
 
668
 
--error 1264
 
67
--error ER_WARN_DATA_OUT_OF_RANGE
669
68
INSERT INTO t1 (col1) VALUES(-9223372036854775809);
670
 
--error 1264
671
 
INSERT INTO t1 (col1) VALUES(9223372036854775808);
672
 
--error 1264
673
 
INSERT INTO t1 (col2) VALUES(-1);
 
69
# DISABLED due to https://bugs.launchpad.net/drizzle/+bug/316221
 
70
# --error ER_WARN_DATA_OUT_OF_RANGE
 
71
# INSERT INTO t1 (col1) VALUES(9223372036854775808);
674
72
 
675
 
--error 1264
676
 
INSERT INTO t1 (col2) VALUES(18446744073709551616);
677
 
--error 1264
 
73
--error ER_WARN_DATA_OUT_OF_RANGE
678
74
INSERT INTO t1 (col1) VALUES('-9223372036854775809');
679
 
--error 1264
 
75
--error ER_WARN_DATA_OUT_OF_RANGE
680
76
INSERT INTO t1 (col1) VALUES('9223372036854775808');
681
 
--error 1264
682
 
INSERT INTO t1 (col2) VALUES('-1');
683
 
--error 1264
684
 
INSERT INTO t1 (col2) VALUES('18446744073709551616');
685
77
 
686
78
# Note that the following two double numbers are slighty bigger than max/min
687
79
# bigint becasue of rounding errors when converting it to bigint
688
 
--error 1264
 
80
--error ER_WARN_DATA_OUT_OF_RANGE
689
81
INSERT INTO t1 (col1) VALUES(-9223372036854785809.0);
690
 
--error 1264
 
82
--error ER_WARN_DATA_OUT_OF_RANGE
691
83
INSERT INTO t1 (col1) VALUES(9223372036854785808.0);
692
 
--error 1264
693
 
INSERT INTO t1 (col2) VALUES(-1.0);
694
 
--error 1264
695
 
INSERT INTO t1 (col2) VALUES(18446744073709551616.0);
696
84
 
697
85
# The following doesn't give an error as it's done in integer context
698
86
# UPDATE t1 SET col1=col1 - 5000 WHERE col1 < 0;
699
87
# UPDATE t1 SET col2 =col2 + 5000 WHERE col2 > 0;
700
88
 
701
 
--error 1365
 
89
--error ER_DIVISION_BY_ZERO
702
90
UPDATE t1 SET col1 =col1 / 0 WHERE col1 > 0;
703
 
--error 1365
 
91
--error ER_DIVISION_BY_ZERO
704
92
UPDATE t1 SET col1= MOD(col1,0) WHERE col1 > 0;
705
 
--error 1366
 
93
--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
706
94
INSERT INTO t1 (col1) VALUES ('');
707
 
--error 1366
 
95
--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
708
96
INSERT INTO t1 (col1) VALUES ('a59b');
709
97
--error 1265
710
98
INSERT INTO t1 (col1) VALUES ('1a');
711
99
INSERT IGNORE INTO t1 (col1) VALUES ('2a');
712
 
INSERT IGNORE INTO t1 values (1/0,1/0);
713
 
INSERT IGNORE INTO t1 VALUES(-9223372036854775809,-1),(9223372036854775808,18446744073709551616);
714
 
INSERT IGNORE INTO t1 VALUES('-9223372036854775809','-1'),('9223372036854775808','18446744073709551616');
715
 
INSERT IGNORE INTO t1 VALUES(-9223372036854785809.0,-1.0),(9223372036854785808.0,18446744073709551616.0);
716
 
UPDATE IGNORE t1 SET col2=1/NULL where col1=0;
 
100
INSERT IGNORE INTO t1 values (1/0);
 
101
INSERT IGNORE INTO t1 VALUES (-9223372036854775809);
 
102
INSERT IGNORE INTO t1 VALUES (9223372036854775808);
 
103
INSERT IGNORE INTO t1 VALUES ('-9223372036854775809');
 
104
INSERT IGNORE INTO t1 VALUES ('9223372036854775808');
 
105
INSERT IGNORE INTO t1 VALUES (-9223372036854785809.0);
 
106
INSERT IGNORE INTO t1 VALUES (9223372036854785808.0);
717
107
SELECT * FROM t1;
718
108
DROP TABLE t1;
719
109
 
720
110
# Test INSERT with NUMERIC
721
111
 
722
112
CREATE TABLE t1 (col1 NUMERIC(4,2));
723
 
INSERT INTO t1 VALUES (10.55),(10.5555),(0),(-10.55),(-10.5555),(11),(1e+01);
724
 
# Note that the +/-10.5555 is inserted as +/-10.55, not +/-10.56 !
725
 
INSERT INTO t1 VALUES ('10.55'),('10.5555'),('-10.55'),('-10.5555'),('11'),('1e+01');
 
113
# The following INSERT statements used to look as follows before 
 
114
# the fix for bug#337038 was implemented:
 
115
# INSERT INTO t1 
 
116
# VALUES (10.55),(10.5555),(0),(-10.55),(-10.5555),(11),(1e+01);
 
117
# Now that decimal truncation gives an error instead of a warning, we will
 
118
# get an error on certain INSERT statements below about decimal truncation.
 
119
 
 
120
INSERT INTO t1 VALUES (10.55);
 
121
# this statement errors due to decimal truncation. The number
 
122
# used in insertion is chosen to test that this this error does
 
123
# in fact occur
 
124
--error 1265 
 
125
INSERT INTO t1 VALUES (10.5555);
 
126
INSERT INTO t1 VALUES (0);
 
127
INSERT INTO t1 VALUES (-10.55);
 
128
# this statement errors due to decimal truncation. The number
 
129
# used in insertion is chosen to test that this this error does
 
130
# in fact occur
 
131
--error 1265
 
132
INSERT INTO t1 VALUES (-10.5555);
 
133
INSERT INTO t1 VALUES (11);
 
134
INSERT INTO t1 VALUES (1e+01);
 
135
 
 
136
# The following INSERT statements used to look as follows before 
 
137
# the fix for bug#337038 was implemented:
 
138
# INSERT INTO t1 VALUES ('10.55'),('10.5555'),('-10.55'),('-10.5555'),('11'),('1e+01');
 
139
# Now that decimal truncation gives an error instead of a warning, we will
 
140
# get an error on certain INSERT statements below about decimal truncation.
 
141
 
 
142
INSERT INTO t1 VALUES ('10.55');
 
143
# this statement errors due to decimal truncation. The number
 
144
# used in insertion is chosen to test that this this error does
 
145
# in fact occur
 
146
--error 1265 
 
147
INSERT INTO t1 VALUES ('10.5555');
 
148
INSERT INTO t1 VALUES ('-10.55');
 
149
# this statement errors due to decimal truncation. The number 
 
150
# used in insertion is chosen to test that this error does 
 
151
# in fact occur
 
152
--error 1265 
 
153
INSERT INTO t1 VALUES ('-10.5555');
 
154
INSERT INTO t1 VALUES ('11');
 
155
INSERT INTO t1 VALUES ('1e+01');
726
156
 
727
157
# The 2 following inserts should generate a warning, but doesn't yet
728
158
# because NUMERIC works like DECIMAL
729
 
--error 1264
 
159
--error ER_WARN_DATA_OUT_OF_RANGE
730
160
INSERT INTO t1 VALUES (101.55);
731
 
--error 1264
 
161
--error ER_WARN_DATA_OUT_OF_RANGE
732
162
INSERT INTO t1 VALUES (101);
733
 
--error 1264
 
163
--error ER_WARN_DATA_OUT_OF_RANGE
734
164
INSERT INTO t1 VALUES (-101.55);
735
 
--error 1264
 
165
--error ER_WARN_DATA_OUT_OF_RANGE
736
166
INSERT INTO t1 VALUES (1010.55);
737
 
--error 1264
 
167
--error ER_WARN_DATA_OUT_OF_RANGE
738
168
INSERT INTO t1 VALUES (1010);
739
169
# The 2 following inserts should generate a warning, but doesn't yet
740
170
# because NUMERIC works like DECIMAL
741
 
--error 1264
 
171
--error ER_WARN_DATA_OUT_OF_RANGE
742
172
INSERT INTO t1 VALUES ('101.55');
743
 
--error 1264
 
173
--error ER_WARN_DATA_OUT_OF_RANGE
744
174
INSERT INTO t1 VALUES ('101');
745
 
--error 1264
 
175
--error ER_WARN_DATA_OUT_OF_RANGE
746
176
INSERT INTO t1 VALUES ('-101.55');
747
 
--error 1264
 
177
--error ER_WARN_DATA_OUT_OF_RANGE
748
178
INSERT INTO t1 VALUES ('-1010.55');
749
 
--error 1264
 
179
--error ER_WARN_DATA_OUT_OF_RANGE
750
180
INSERT INTO t1 VALUES ('-100E+1');
751
 
--error 1366
 
181
--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
752
182
INSERT INTO t1 VALUES ('-100E');
753
 
--error 1264
 
183
--error ER_WARN_DATA_OUT_OF_RANGE
754
184
UPDATE t1 SET col1 =col1 * 50000 WHERE col1 =11;
755
 
--error 1365
 
185
--error ER_DIVISION_BY_ZERO
756
186
UPDATE t1 SET col1 =col1 / 0 WHERE col1 > 0;
757
 
--error 1365
 
187
--error ER_DIVISION_BY_ZERO
758
188
UPDATE t1 SET col1= MOD(col1,0) WHERE col1 > 0;
759
189
#--error 1265
760
 
--error 1366
 
190
--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
761
191
INSERT INTO t1 (col1) VALUES ('');
762
192
#--error 1265
763
 
--error 1366
 
193
--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
764
194
INSERT INTO t1 (col1) VALUES ('a59b');
765
 
--error 1366
 
195
--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
766
196
INSERT INTO t1 (col1) VALUES ('1a');
767
197
INSERT IGNORE INTO t1 (col1) VALUES ('2a');
768
198
INSERT IGNORE INTO t1 values (1/0);
769
 
INSERT IGNORE INTO t1 VALUES(1000),(-1000);
770
 
INSERT IGNORE INTO t1 VALUES('1000'),('-1000');
771
 
INSERT IGNORE INTO t1 VALUES(1000.0),(-1000.0);
 
199
INSERT IGNORE INTO t1 VALUES (1000);
 
200
INSERT IGNORE INTO t1 VALUES (-1000);
 
201
INSERT IGNORE INTO t1 VALUES ('1000');
 
202
INSERT IGNORE INTO t1 VALUES ('-1000');
 
203
INSERT IGNORE INTO t1 VALUES (1000.0);
 
204
INSERT IGNORE INTO t1 VALUES (-1000.0);
772
205
UPDATE IGNORE t1 SET col1=1/NULL where col1=0;
773
 
SELECT * FROM t1;
774
 
DROP TABLE t1;
775
 
 
776
 
# Test INSERT with FLOAT
777
 
 
778
 
CREATE TABLE t1 (col1 FLOAT, col2 FLOAT UNSIGNED);
779
 
INSERT INTO t1 VALUES (-1.1E-37,0),(+3.4E+38,+3.4E+38);
780
 
INSERT INTO t1 VALUES ('-1.1E-37',0),('+3.4E+38','+3.4E+38');
781
 
# We don't give warnings for underflow
782
 
INSERT INTO t1 (col1) VALUES (3E-46);
783
 
--error 1264
784
 
INSERT INTO t1 (col1) VALUES (+3.4E+39);
785
 
--error 1264
786
 
INSERT INTO t1 (col2) VALUES (-1.1E-3);
787
 
--error 1264
788
 
INSERT INTO t1 (col1) VALUES ('+3.4E+39');
789
 
--error 1264
790
 
INSERT INTO t1 (col2) VALUES ('-1.1E-3');
791
 
--error 1264
792
 
UPDATE t1 SET col1 =col1 * 5000 WHERE col1 > 0;
793
 
--error 1365
794
 
UPDATE t1 SET col2 =col2 / 0 WHERE col2 > 0;
795
 
--error 1365
796
 
UPDATE t1 SET col2= MOD(col2,0) WHERE col2 > 0;
797
 
--error 1265
798
 
INSERT INTO t1 (col1) VALUES ('');
799
 
--error 1265
800
 
INSERT INTO t1 (col1) VALUES ('a59b');
801
 
--error 1265
802
 
INSERT INTO t1 (col1) VALUES ('1a');
803
 
INSERT IGNORE INTO t1 (col1) VALUES ('2a');
804
 
INSERT IGNORE INTO t1 (col1) VALUES (1/0);
805
 
INSERT IGNORE INTO t1 VALUES (+3.4E+39,-3.4E+39);
806
 
INSERT IGNORE INTO t1 VALUES ('+3.4E+39','-3.4E+39');
807
 
SELECT * FROM t1;
808
 
DROP TABLE t1;
809
 
 
810
 
# Test INSERT with DOUBLE
811
 
 
812
 
CREATE TABLE t1 (col1 DOUBLE PRECISION, col2 DOUBLE PRECISION UNSIGNED);
813
 
INSERT INTO t1 VALUES (-2.2E-307,0),(2E-307,0),(+1.7E+308,+1.7E+308);
814
 
INSERT INTO t1 VALUES ('-2.2E-307',0),('-2E-307',0),('+1.7E+308','+1.7E+308');
815
 
# We don't give warnings for underflow
816
 
INSERT INTO t1 (col1) VALUES (-2.2E-330);
817
 
--error 1367,1264
818
 
INSERT INTO t1 (col1) VALUES (+1.7E+309);
819
 
--error 1264
820
 
INSERT INTO t1 (col2) VALUES (-1.1E-3);
821
 
--error 1264
822
 
INSERT INTO t1 (col1) VALUES ('+1.8E+309');
823
 
--error 1264
824
 
INSERT INTO t1 (col2) VALUES ('-1.2E-3');
825
 
UPDATE t1 SET col1 =col1 * 5000 WHERE col1 > 0;
826
 
--error 1365
827
 
UPDATE t1 SET col2 =col2 / 0 WHERE col2 > 0;
828
 
--error 1365
829
 
UPDATE t1 SET col2= MOD(col2,0) WHERE col2 > 0;
830
 
--error 1265
831
 
INSERT INTO t1 (col1) VALUES ('');
832
 
--error 1265
833
 
INSERT INTO t1 (col1) VALUES ('a59b');
834
 
--error 1265
835
 
INSERT INTO t1 (col1) VALUES ('1a');
836
 
INSERT IGNORE INTO t1 (col1) VALUES ('2a');
837
 
INSERT IGNORE INTO t1 (col1) values (1/0);
838
 
--error 1367
839
 
INSERT IGNORE INTO t1 VALUES (+1.9E+309,-1.9E+309);
840
 
INSERT IGNORE INTO t1 VALUES ('+2.0E+309','-2.0E+309');
841
 
# stupid...
842
 
--replace_result -0 0 1.7976931348623e+308 1.79769313486232e+308
 
206
--sorted_result
843
207
SELECT * FROM t1;
844
208
DROP TABLE t1;
845
209
 
846
210
# Testing INSERT with CHAR/VARCHAR
847
211
 
848
212
CREATE TABLE t1 (col1 CHAR(5), col2 VARCHAR(6));
849
 
INSERT INTO t1 VALUES ('hello', 'hello'),('he', 'he'),('hello   ', 'hello ');
 
213
INSERT INTO t1 VALUES ('hello', 'hello');
 
214
INSERT INTO t1 VALUES ('he', 'he');
 
215
INSERT INTO t1 VALUES ('hello   ', 'hello ');
850
216
--error 1406
851
217
INSERT INTO t1 (col1) VALUES ('hellobob');
852
218
--error 1406
858
224
UPDATE t1 SET col2 ='hellobob' WHERE col2 ='he';
859
225
INSERT IGNORE INTO t1 VALUES ('hellobob', 'hellobob');
860
226
UPDATE IGNORE t1 SET col2 ='hellotrudy' WHERE col2 ='he';
 
227
--sorted_result
861
228
SELECT * FROM t1;
862
229
DROP TABLE t1;
863
230
 
864
231
# Testing INSERT with ENUM
865
232
 
866
233
CREATE TABLE t1 (col1 enum('red','blue','green'));
867
 
INSERT INTO t1 VALUES ('red'),('blue'),('green');
868
 
--error 1265
 
234
INSERT INTO t1 VALUES ('red');
 
235
INSERT INTO t1 VALUES ('blue');
 
236
INSERT INTO t1 VALUES ('green');
 
237
--error 1691 # Bad enum
869
238
INSERT INTO t1 (col1) VALUES ('yellow');
870
 
--error 1265
 
239
--error 1691 # Bad enum
871
240
INSERT INTO t1 (col1) VALUES ('redd');
872
 
--error 1265
 
241
--error 1691 # Bad enum
873
242
INSERT INTO t1 VALUES ('');
874
 
--error 1265
 
243
--error 1691 # Bad enum
875
244
UPDATE t1 SET col1 ='yellow' WHERE col1 ='green';
 
245
--error 1691 # Bad enum
876
246
INSERT IGNORE INTO t1 VALUES ('yellow');
 
247
--error 1691 # Bad enum
877
248
UPDATE IGNORE t1 SET col1 ='yellow' WHERE col1 ='blue';
878
249
SELECT * FROM t1;
879
250
DROP TABLE t1;
902
273
# Testing of default values
903
274
 
904
275
CREATE TABLE t1 (col1 INT NOT NULL default 99, col2 CHAR(6) NOT NULL);
 
276
--replace_regex /ENGINE=[a-zA-Z]+/ENGINE=DEFAULT/
905
277
SHOW CREATE TABLE t1;
906
278
INSERT INTO t1 VALUES (1, 'hello');
907
279
INSERT INTO t1 (col2) VALUES ('hello2');
916
288
--error 1048
917
289
INSERT INTO t1 SELECT 1,NULL;
918
290
INSERT IGNORE INTO t1 values (NULL,NULL);
 
291
--error ER_NO_DEFAULT_FOR_FIELD
919
292
INSERT IGNORE INTO t1 (col1) values (3);
 
293
--error ER_NO_DEFAULT_FOR_FIELD
920
294
INSERT IGNORE INTO t1 () values ();
921
295
SELECT * FROM t1;
922
296
DROP TABLE t1;
925
299
# Bug #9029 Traditional: Wrong SQLSTATE returned for string truncation
926
300
#
927
301
 
928
 
set sql_mode='traditional';
929
302
create table t1 (charcol char(255), varcharcol varchar(255),
930
 
binarycol binary(255), varbinarycol varbinary(255), tinytextcol tinytext,
931
 
tinyblobcol tinyblob);
 
303
       varbinarycol varbinary(255));
932
304
--error 1406
933
305
insert into t1 (charcol) values (repeat('x',256));
934
306
--error 1406
935
307
insert into t1 (varcharcol) values (repeat('x',256));
936
308
--error 1406
937
 
insert into t1 (binarycol) values (repeat('x',256));
938
 
--error 1406
939
309
insert into t1 (varbinarycol) values (repeat('x',256));
940
 
--error 1406
941
 
insert into t1 (tinytextcol) values (repeat('x',256));
942
 
--error 1406
943
 
insert into t1 (tinyblobcol) values (repeat('x',256));
944
 
select * from t1;
945
 
drop table t1;
946
 
 
947
 
#
948
 
# Bug #5902: STR_TO_DATE() didn't give errors in traditional mode
949
 
#
950
 
 
951
 
set sql_mode='traditional';
952
 
create table t1 (col1 datetime);
953
 
--error 1292
954
 
insert into t1 values(STR_TO_DATE('31.10.2004 15.30 abc','%d.%m.%Y %H.%i'));
955
 
--error 1411
956
 
insert into t1 values(STR_TO_DATE('32.10.2004 15.30','%d.%m.%Y %H.%i'));
957
 
--error 1411
958
 
insert into t1 values(STR_TO_DATE('2004.12.12 22:22:33 AM','%Y.%m.%d %r'));
959
 
--error 1411
960
 
insert into t1 values(STR_TO_DATE('2004.12.12 abc','%Y.%m.%d %T'));
961
 
set sql_mode='';
962
 
insert into t1 values(STR_TO_DATE('31.10.2004 15.30 abc','%d.%m.%Y %H.%i'));
963
 
insert into t1 values(STR_TO_DATE('32.10.2004 15.30','%d.%m.%Y %H.%i'));
964
 
insert into t1 values(STR_TO_DATE('2004.12.12 22:22:33 AM','%Y.%m.%d %r'));
965
 
insert into t1 values(STR_TO_DATE('2004.12.12 abc','%Y.%m.%d %T'));
966
 
 
967
 
# Some correct values, just to test the functions
968
 
insert into t1 values(STR_TO_DATE('31.10.2004 15.30','%d.%m.%Y %H.%i'));
969
 
insert into t1 values(STR_TO_DATE('2004.12.12 11:22:33 AM','%Y.%m.%d %r'));
970
 
insert into t1 values(STR_TO_DATE('2004.12.12 10:22:59','%Y.%m.%d %T'));
971
 
 
972
 
select * from t1;
973
 
 
974
 
# Check that select don't abort even in strict mode (for now)
975
 
set sql_mode='traditional';
976
 
 
977
 
select count(*) from t1 where STR_TO_DATE('2004.12.12 10:22:61','%Y.%m.%d %T') IS NULL;
978
 
 
 
310
select * from t1;
979
311
drop table t1;
980
312
 
981
313
#
990
322
--error 1292
991
323
insert into t1 (col1) values (cast(1000.0 as char(3)));
992
324
--error 1292
993
 
insert into t1 (col2) values (cast('abc' as signed integer));
 
325
insert into t1 (col2) values (cast('abc' as DECIMAL));
994
326
--error 1292
995
327
insert into t1 (col2) values (10E+0 + 'a');
996
 
--error 1292
997
 
insert into t1 (col2) values (cast('10a' as integer));
998
 
insert into t1 (col2) values (cast('10' as integer));
999
 
insert into t1 (col2) values (cast('10' as signed integer));
 
328
--error 1265
 
329
insert into t1 (col2) values ('10a');
 
330
insert into t1 (col2) values (cast('10a' as DECIMAL));
 
331
insert into t1 (col2) values (cast('10' as DECIMAL));
 
332
insert into t1 (col2) values (cast('10' as DECIMAL));
1000
333
insert into t1 (col2) values (10E+0 + '0 ');
1001
334
select * from t1;
1002
335
drop table t1;
1003
336
 
1004
 
#
1005
 
# Zero dates using numbers was not checked properly (Bug #5933 & #6145)
1006
 
#
1007
 
 
1008
 
create table t1 (col1 date, col2 datetime, col3 timestamp);
1009
 
--error 1292
1010
 
insert into t1 values (0,0,0);
1011
 
--error 1292
1012
 
insert into t1 values (0.0,0.0,0.0);
1013
 
--error 1292
1014
 
insert into t1 (col1) values (convert('0000-00-00',date));
1015
 
--error 1292
1016
 
insert into t1 (col1) values (cast('0000-00-00' as date));
1017
 
 
1018
 
set sql_mode='no_zero_date';
1019
 
insert into t1 values (0,0,0);
1020
 
insert into t1 values (0.0,0.0,0.0);
1021
 
drop table t1;
1022
 
set sql_mode='traditional';
1023
 
create table t1 (col1 date);
1024
 
insert ignore into t1 values ('0000-00-00');
1025
 
--error 1292
1026
 
insert into t1 select * from t1;
1027
 
insert ignore into t1 values ('0000-00-00');
1028
 
insert ignore into t1 (col1) values (cast('0000-00-00' as date));
1029
 
--error 1292
1030
 
insert into t1 select * from t1;
1031
 
--error 1292
1032
 
alter table t1 modify col1 datetime;
1033
 
alter ignore table t1 modify col1 datetime;
1034
 
--error 1292
1035
 
insert into t1 select * from t1;
1036
 
select * from t1;
1037
 
drop table t1;
1038
 
 
1039
 
#
1040
 
# Test of inserting an invalid value via a stored procedure (Bug #5907)
1041
 
#
1042
 
create table t1 (col1 int);
1043
 
drop procedure if exists t1;
1044
 
delimiter |;
1045
 
create procedure t1 () begin declare exit handler for sqlexception
1046
 
select'a'; insert into t1 values (200); end;|
1047
 
delimiter ;|
1048
 
call t1();
1049
 
select * from t1;
1050
 
drop procedure t1;
1051
 
drop table t1;
1052
 
 
1053
 
#
1054
 
# Restore mode
1055
 
#
1056
 
set sql_mode=@org_mode;
1057
 
 
1058
337
# Test fields with no default value that are NOT NULL (Bug #5986)
1059
 
SET @@sql_mode = 'traditional';
1060
338
CREATE TABLE t1 (i int not null);
1061
339
--error 1364
1062
340
INSERT INTO t1 VALUES ();
1074
352
--error 1364
1075
353
INSERT INTO t1 VALUES (DEFAULT,1);
1076
354
DROP TABLE t1;
1077
 
SET @@sql_mode = '';
1078
355
CREATE TABLE t1 (i int not null);
 
356
--error 1364
1079
357
INSERT INTO t1 VALUES ();
 
358
--error 1364
1080
359
INSERT INTO t1 VALUES (DEFAULT);
1081
360
# DEFAULT(i) is an error even with the default sql_mode
1082
361
--error 1364
1083
362
INSERT INTO t1 VALUES (DEFAULT(i));
1084
363
ALTER TABLE t1 ADD j int;
 
364
--error 1364
1085
365
INSERT INTO t1 SET j = 1;
 
366
--error 1364
1086
367
INSERT INTO t1 SET j = 1, i = DEFAULT;
1087
368
--error 1364
1088
369
INSERT INTO t1 SET j = 1, i = DEFAULT(i);
 
370
--error 1364
1089
371
INSERT INTO t1 VALUES (DEFAULT,1);
1090
372
DROP TABLE t1;
1091
373
 
1093
375
# Bugs #8295 and #8296: varchar and varbinary conversion
1094
376
#
1095
377
 
1096
 
set @@sql_mode='traditional';
1097
378
--error 1074
1098
379
create table t1(a varchar(65537));
1099
380
--error 1074
1103
384
# Bug #9881: problem with altering table
1104
385
#
1105
386
 
1106
 
set @@sql_mode='traditional';
1107
387
create table t1(a int, b date not null);                                       
1108
388
alter table t1 modify a bigint not null;
 
389
--replace_regex /ENGINE=[a-zA-Z]+/ENGINE=DEFAULT/
1109
390
show create table t1;
1110
391
drop table t1;
1111
392
 
1112
393
#
1113
 
# Bug #5906: handle invalid date due to conversion
1114
 
#
1115
 
set @@sql_mode='traditional';
1116
 
create table t1 (d date);
1117
 
--error 1292
1118
 
insert into t1 values ('2000-10-00');
1119
 
--error 1292
1120
 
insert into t1 values (1000);
1121
 
insert into t1 values ('2000-10-01');
1122
 
--error 1292
1123
 
update t1 set d = 1100;
1124
 
select * from t1;
1125
 
drop table t1;
1126
 
 
1127
 
#
1128
394
# Bug #11964: alter table with timestamp field
1129
395
#
1130
396
 
1131
 
set @@sql_mode='traditional';
1132
397
create table t1(a int, b timestamp);
1133
398
alter table t1 add primary key(a);
 
399
--replace_regex /ENGINE=[a-zA-Z]+/ENGINE=DEFAULT/
1134
400
show create table t1;
1135
401
drop table t1;
1136
402
create table t1(a int, b timestamp default 20050102030405);
1137
403
alter table t1 add primary key(a);
 
404
--replace_regex /ENGINE=[a-zA-Z]+/ENGINE=DEFAULT/
1138
405
show create table t1;
1139
406
drop table t1;
1140
407
 
1141
 
#
1142
 
# BIT fields
1143
 
#
1144
 
 
1145
 
set @@sql_mode='traditional';
1146
 
create table t1(a bit(2));
1147
 
--error 1406
1148
 
insert into t1 values(b'101');
1149
 
select * from t1;
1150
 
drop table t1;
1151
408
 
1152
409
#
1153
410
# Bug#17626 CREATE TABLE ... SELECT failure with TRADITIONAL SQL mode
1154
411
#
1155
 
set sql_mode='traditional';
1156
412
create table t1 (date date not null);
1157
413
create table t2 select date from t1;
 
414
--replace_regex /ENGINE=[a-zA-Z]+/ENGINE=DEFAULT/
1158
415
show create table t2;
1159
416
drop table t2,t1;
1160
 
set @@sql_mode= @org_mode;
1161
417
 
1162
 
set names utf8;
1163
418
create table t1 (i int)
1164
419
comment '123456789*123456789*123456789*123456789*123456789*123456789*';
 
420
--replace_regex /ENGINE=[a-zA-Z]+/ENGINE=DEFAULT/
1165
421
show create table t1;
1166
422
drop table t1;
1167
423
 
1168
424
#
1169
425
# Bug #26359: Strings becoming truncated and converted to numbers under STRICT mode
1170
426
#
1171
 
set sql_mode= 'traditional';
 
427
 
1172
428
create table t1(col1 int, col2 int, 
1173
429
  col3 int, col4 int,
1174
 
  col5 mediumint, col6 mediumint,
1175
430
  col7 int, col8 int,
1176
431
  col9 bigint, col10 bigint);
1177
 
--error 1366
 
432
--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
1178
433
insert into t1(col1) values('-');
1179
 
--error 1366
 
434
--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
1180
435
insert into t1(col2) values('+');
1181
 
--error 1366
 
436
--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
1182
437
insert into t1(col3) values('-');
1183
 
--error 1366
 
438
--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
1184
439
insert into t1(col4) values('+');
1185
 
--error 1366
1186
 
insert into t1(col5) values('-');
1187
 
--error 1366
1188
 
insert into t1(col6) values('+');
1189
 
--error 1366
 
440
--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
1190
441
insert into t1(col7) values('-');
1191
 
--error 1366
 
442
--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
1192
443
insert into t1(col8) values('+');
1193
 
--error 1366
 
444
--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
1194
445
insert into t1(col9) values('-');
1195
 
--error 1366
 
446
--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
1196
447
insert into t1(col10) values('+');
1197
448
drop table t1;
1198
449
 
1199
 
#
1200
 
# Bug #27176: Assigning a string to an year column has unexpected results
1201
 
#
1202
 
set sql_mode='traditional';
1203
 
create table t1(a year);
1204
 
--error 1366
1205
 
insert into t1 values ('-');
1206
 
--error 1366
1207
 
insert into t1 values ('+');
1208
 
--error 1366
1209
 
insert into t1 values ('');
1210
 
--error 1265
1211
 
insert into t1 values ('2000a');
1212
 
--error 1265
1213
 
insert into t1 values ('2E3x');
1214
 
drop table t1;
1215
450
 
1216
451
#
1217
452
# Bug#27069 set with identical elements are created
1218
453
#
1219
 
set sql_mode='traditional';
1220
 
--error 1291
1221
 
create table t1 (f1 set('a','a'));
1222
454
--error 1291
1223
455
create table t1 (f1 enum('a','a'));
1224
456
 
1225
 
#
1226
 
# Bug #22824: strict, datetime, NULL, wrong warning
1227
 
#
1228
 
set @@sql_mode='NO_ZERO_DATE';
1229
 
create table t1(a datetime not null);
1230
 
select count(*) from t1 where a is null;
1231
 
drop table t1;
1232
 
 
1233
457
--echo End of 5.0 tests