5
5
# Test INSERT with INT
8
DROP TABLE IF EXISTS t1;
10
7
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);
8
INSERT INTO t1 VALUES(-2147483648),(0),(2147483647),('-2147483648'),('2147483647'),(-2147483648.0),(2147483647.0);
18
9
--error ER_WARN_DATA_OUT_OF_RANGE
19
10
INSERT INTO t1 (col1) VALUES(-2147483649);
20
11
--error ER_WARN_DATA_OUT_OF_RANGE
42
33
INSERT INTO t1 (col1) VALUES ('1a');
43
34
INSERT IGNORE INTO t1 (col1) VALUES ('2a');
44
35
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);
36
INSERT IGNORE INTO t1 values (-2147483649),(2147643648);
37
INSERT IGNORE INTO t1 values ('-2147483649'),('2147643648');
38
INSERT IGNORE INTO t1 values (-2147483649.0),(2147643648.0);
56
44
# integers when it's too big/small (just like C)
58
46
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);
47
INSERT INTO t1 VALUES(-9223372036854775808),(0),(9223372036854775807);
48
INSERT INTO t1 VALUES('-9223372036854775808'),('9223372036854775807');
49
INSERT INTO t1 VALUES(-9223372036854774000.0),(9223372036854775700.0);
67
51
--error ER_WARN_DATA_OUT_OF_RANGE
68
52
INSERT INTO t1 (col1) VALUES(-9223372036854775809);
98
82
INSERT INTO t1 (col1) VALUES ('1a');
99
83
INSERT IGNORE INTO t1 (col1) VALUES ('2a');
100
84
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);
85
INSERT IGNORE INTO t1 VALUES(-9223372036854775809),(9223372036854775808);
86
INSERT IGNORE INTO t1 VALUES('-9223372036854775809'),('9223372036854775808');
87
INSERT IGNORE INTO t1 VALUES(-9223372036854785809.0),(9223372036854785808.0);
110
91
# Test INSERT with NUMERIC
112
93
CREATE TABLE t1 (col1 NUMERIC(4,2));
113
# The following INSERT statements used to look as follows before
114
# the fix for bug#337038 was implemented:
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.
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
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
132
INSERT INTO t1 VALUES (-10.5555);
133
INSERT INTO t1 VALUES (11);
134
INSERT INTO t1 VALUES (1e+01);
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.
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
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
153
INSERT INTO t1 VALUES ('-10.5555');
154
INSERT INTO t1 VALUES ('11');
155
INSERT INTO t1 VALUES ('1e+01');
94
INSERT INTO t1 VALUES (10.55),(10.5555),(0),(-10.55),(-10.5555),(11),(1e+01);
95
# Note that the +/-10.5555 is inserted as +/-10.55, not +/-10.56 !
96
INSERT INTO t1 VALUES ('10.55'),('10.5555'),('-10.55'),('-10.5555'),('11'),('1e+01');
157
98
# The 2 following inserts should generate a warning, but doesn't yet
158
99
# because NUMERIC works like DECIMAL
196
137
INSERT INTO t1 (col1) VALUES ('1a');
197
138
INSERT IGNORE INTO t1 (col1) VALUES ('2a');
198
139
INSERT IGNORE INTO t1 values (1/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);
140
INSERT IGNORE INTO t1 VALUES(1000),(-1000);
141
INSERT IGNORE INTO t1 VALUES('1000'),('-1000');
142
INSERT IGNORE INTO t1 VALUES(1000.0),(-1000.0);
205
143
UPDATE IGNORE t1 SET col1=1/NULL where col1=0;
207
144
SELECT * FROM t1;
210
147
# Testing INSERT with CHAR/VARCHAR
212
149
CREATE TABLE t1 (col1 CHAR(5), col2 VARCHAR(6));
213
INSERT INTO t1 VALUES ('hello', 'hello');
214
INSERT INTO t1 VALUES ('he', 'he');
215
INSERT INTO t1 VALUES ('hello ', 'hello ');
150
INSERT INTO t1 VALUES ('hello', 'hello'),('he', 'he'),('hello ', 'hello ');
217
152
INSERT INTO t1 (col1) VALUES ('hellobob');
224
159
UPDATE t1 SET col2 ='hellobob' WHERE col2 ='he';
225
160
INSERT IGNORE INTO t1 VALUES ('hellobob', 'hellobob');
226
161
UPDATE IGNORE t1 SET col2 ='hellotrudy' WHERE col2 ='he';
228
162
SELECT * FROM t1;
231
165
# Testing INSERT with ENUM
233
167
CREATE TABLE t1 (col1 enum('red','blue','green'));
234
INSERT INTO t1 VALUES ('red');
235
INSERT INTO t1 VALUES ('blue');
236
INSERT INTO t1 VALUES ('green');
237
--error 1691 # Bad enum
168
INSERT INTO t1 VALUES ('red'),('blue'),('green');
238
170
INSERT INTO t1 (col1) VALUES ('yellow');
239
--error 1691 # Bad enum
240
172
INSERT INTO t1 (col1) VALUES ('redd');
241
--error 1691 # Bad enum
242
174
INSERT INTO t1 VALUES ('');
243
--error 1691 # Bad enum
244
176
UPDATE t1 SET col1 ='yellow' WHERE col1 ='green';
245
--error 1691 # Bad enum
246
177
INSERT IGNORE INTO t1 VALUES ('yellow');
247
--error 1691 # Bad enum
248
178
UPDATE IGNORE t1 SET col1 ='yellow' WHERE col1 ='blue';
249
179
SELECT * FROM t1;
243
# Bug #5902: STR_TO_DATE() didn't give errors in traditional mode
246
create table t1 (col1 datetime);
248
insert into t1 values(STR_TO_DATE('31.10.2004 15.30 abc','%d.%m.%Y %H.%i'));
250
insert into t1 values(STR_TO_DATE('32.10.2004 15.30','%d.%m.%Y %H.%i'));
252
insert into t1 values(STR_TO_DATE('2004.12.12 22:22:33 AM','%Y.%m.%d %r'));
254
insert into t1 values(STR_TO_DATE('2004.12.12 abc','%Y.%m.%d %T'));
255
--error ER_TRUNCATED_WRONG_VALUE
256
insert into t1 values(STR_TO_DATE('31.10.2004 15.30 abc','%d.%m.%Y %H.%i'));
257
--error ER_WRONG_VALUE_FOR_TYPE
258
insert into t1 values(STR_TO_DATE('32.10.2004 15.30','%d.%m.%Y %H.%i'));
259
--error ER_WRONG_VALUE_FOR_TYPE
260
insert into t1 values(STR_TO_DATE('2004.12.12 22:22:33 AM','%Y.%m.%d %r'));
261
--error ER_WRONG_VALUE_FOR_TYPE
262
insert into t1 values(STR_TO_DATE('2004.12.12 abc','%Y.%m.%d %T'));
264
# Some correct values, just to test the functions
265
insert into t1 values(STR_TO_DATE('31.10.2004 15.30','%d.%m.%Y %H.%i'));
266
insert into t1 values(STR_TO_DATE('2004.12.12 11:22:33 AM','%Y.%m.%d %r'));
267
insert into t1 values(STR_TO_DATE('2004.12.12 10:22:59','%Y.%m.%d %T'));
271
select count(*) from t1 where STR_TO_DATE('2004.12.12 10:22:61','%Y.%m.%d %T') IS NULL;
314
276
# Check insert with wrong CAST() (Bug #5912)