2
# Test of refering to old values
6
drop table if exists t1,t2,t3;
9
create table t1 (a int not null);
10
insert into t1 values (1);
11
insert into t1 values (a+2);
12
insert into t1 values (a+3),(a+4);
13
insert into t1 values (5),(a+6);
18
# Test of duplicate key values with packed keys
21
create table t1 (id int not null auto_increment primary key, username varchar(32) not null, unique (username));
22
insert into t1 values (NULL,"mysql");
23
insert into t1 values (NULL,"mysql ab");
24
insert into t1 values (NULL,"mysql a");
25
insert into t1 values (NULL,"r1manic");
26
insert into t1 values (NULL,"r1man");
33
create table t1 (a int not null auto_increment, primary key (a), t timestamp null, c char(10) default "hello", i int);
34
insert into t1 values (default,default,default,default);
35
insert into t1 values (default,default,default,default);
36
--error ER_INVALID_TIMESTAMP_VALUE # Bad timestamp
37
insert into t1 values (4,0,"a",5);
38
insert into t1 values (default,default,default,default);
39
select a,t is not null,c,i from t1;
41
insert into t1 set a=default,t=default,c=default;
42
insert into t1 set a=default,t=default,c=default,i=default;
43
insert into t1 set a=4,t= NULL,c="a",i=5;
44
insert into t1 set a=5,t= NULL,c="a",i=null;
45
insert into t1 set a=default,t=default,c=default,i=default;
46
select a,t is not null,c,i from t1;
50
#Test of behaviour with INSERT VALUES (NULL)
53
create table t1 (id int NOT NULL DEFAULT 8);
54
--error ER_BAD_NULL_ERROR
55
insert into t1 values(NULL);
56
--error ER_BAD_NULL_ERROR
57
insert into t1 values (1), (NULL), (2);
62
# Test if insert ... select distinct
65
create table t1 (email varchar(50));
66
insert into t1 values ('sasha@mysql.com'),('monty@mysql.com'),('foo@hotmail.com'),('foo@aol.com'),('bar@aol.com');
67
create table t2(id int not null auto_increment primary key, t2 varchar(50), unique(t2));
68
insert into t2 (t2) select distinct substring(email, locate('@', email)+1) from t1;
73
# Test of mysqld crash with fully qualified column names
77
drop database if exists mysqltest;
79
create database mysqltest;
81
create table t1 (c int);
82
insert into mysqltest.t1 set mysqltest.t1.c = '1';
83
drop database mysqltest;
90
# Test automatic result buffering with INSERT INTO t1 ... SELECT ... FROM t1
93
create table t1(id1 int not null auto_increment primary key, t char(12));
94
create table t2(id2 int not null, t char(12));
95
create table t3(id3 int not null, t char(12), index(id3));
102
eval insert into t1(t) values ('$1');
105
eval insert into t2(id2,t) values ($1,'$2');
109
eval insert into t3(id3,t) values ($1,'$2');
117
select count(*) from t2;
118
--error ER_USE_SQL_BIG_RESULT
119
insert into t2 select t1.* from t1, t2 t, t3 where t1.id1 = t.id2 and t.id2 = t3.id3;
120
insert into t2 select SQL_BIG_RESULT t1.* from t1, t2 t, t3 where t1.id1 = t.id2 and t.id2 = t3.id3;
121
select count(*) from t2;
126
# Test different cases of duplicate fields
129
create table t1 (a int, b int);
130
insert into t1 (a,b) values (a,b);
131
insert into t1 SET a=1, b=a+1;
132
insert into t1 (a,b) select 1,2;
133
INSERT INTO t1 ( a ) SELECT 0 ON DUPLICATE KEY UPDATE a = a + VALUES (a);
134
--error ER_FIELD_SPECIFIED_TWICE
135
replace into t1 (a,a) select 100, 'hundred';
136
--error ER_FIELD_SPECIFIED_TWICE
137
insert into t1 (a,b,b) values (1,1,1);
138
--error ER_WRONG_VALUE_COUNT_ON_ROW
139
insert into t1 (a,a) values (1,1,1);
140
--error ER_FIELD_SPECIFIED_TWICE
141
insert into t1 (a,a) values (1,1);
142
--error ER_FIELD_SPECIFIED_TWICE
143
insert into t1 SET a=1,b=2,a=1;
144
--error ER_FIELD_SPECIFIED_TWICE
145
insert into t1 (b,b) select 1,2;
146
--error ER_FIELD_SPECIFIED_TWICE
147
INSERT INTO t1 (b,b) SELECT 0,0 ON DUPLICATE KEY UPDATE a = a + VALUES (a);
151
# Test for values returned by ROW_COUNT() function
152
# (and thus for values returned by mysql_affected_rows())
153
# for various forms of INSERT
155
create table t1 (id int primary key, data int);
156
insert into t1 values (1, 1), (2, 2), (3, 3);
158
insert ignore into t1 values (1, 1);
160
# Reports that 2 rows are affected (1 deleted + 1 inserted)
161
replace into t1 values (1, 11);
163
replace into t1 values (4, 4);
165
# Reports that 2 rows are affected. This conforms to documentation.
166
# (Useful for differentiating inserts from updates).
167
insert into t1 values (2, 2) on duplicate key update data= data + 10;
169
insert into t1 values (5, 5) on duplicate key update data= data + 10;
173
# Test of INSERT IGNORE and re-using auto_increment values
174
create table t1 (id int primary key auto_increment, data int, unique(data));
175
insert ignore into t1 values(NULL,100),(NULL,110),(NULL,120);
176
insert ignore into t1 values(NULL,10),(NULL,20),(NULL,110),(NULL,120),(NULL,100),(NULL,90);
177
insert ignore into t1 values(NULL,130),(NULL,140),(500,110),(550,120),(450,100),(NULL,150);
178
# PBXT differs from InnoDB here. Main reason is that inserting
179
# 500 causes auto inc value to be set to 501, this is never
180
# undone because of possible concurrent inserts.
181
select * from t1 order by id;
186
# Bug #26788: mysqld (debug) aborts when inserting specific numbers into char
192
b char(7) DEFAULT NULL,
193
c char(4) DEFAULT NULL
196
INSERT INTO t1(a,b,c) VALUES (9.999999e+0, 9.999999e+0, 9.999e+0);
197
INSERT INTO t1(a,b) VALUES (1.225e-04, 1.225e-04);
198
INSERT INTO t1(a,b) VALUES (1.225e-01, 1.225e-01);
199
INSERT INTO t1(a,b) VALUES (1.225877e-01, 1.225877e-01);
200
INSERT INTO t1(a,b) VALUES (1.225e+01, 1.225e+01);
201
INSERT INTO t1(a,b,c) VALUES (1.225e+01, 1.225e+01, 1.225e+01);
202
INSERT INTO t1(a,b) VALUES (1.225e+05, 1.225e+05);
203
INSERT INTO t1(a,b) VALUES (1.225e+10, 1.225e+10);
204
INSERT INTO t1(a,b) VALUES (1.225e+15, 1.225e+15);
205
INSERT INTO t1(a,b) VALUES (5000000e+0, 5000000e+0);
206
INSERT INTO t1(a,b) VALUES (1.25e+78, 1.25e+78);
207
INSERT INTO t1(a,b) VALUES (1.25e-94, 1.25e-94);
208
INSERT INTO t1(a,b) VALUES (1.25e+203, 1.25e+203);
209
INSERT INTO t1(a,b) VALUES (1.25e-175, 1.25e-175);
210
INSERT INTO t1(a,c) VALUES (1.225e+0, 1.225e+0);
211
INSERT INTO t1(a,c) VALUES (1.37e+0, 1.37e+0);
212
INSERT INTO t1(a,c) VALUES (-1.37e+0, -1.37e+0);
213
INSERT INTO t1(a,c) VALUES (-1.87e-2, -1.87e-2);
214
INSERT INTO t1(a,c) VALUES (5000e+0, 5000e+0);
215
INSERT INTO t1(a,c) VALUES (-5000e+0, -5000e+0);
222
b char(7) DEFAULT NULL,
227
INSERT INTO t1(a,b,c) VALUES (9.999999e+0, 9.999999e+0, 9.999e+0);
228
INSERT INTO t1(a,b,c) VALUES (1.225e-05, 1.225e-05, 1.225e-05);
229
INSERT INTO t1(a,b) VALUES (1.225e-04, 1.225e-04);
230
INSERT INTO t1(a,b) VALUES (1.225e-01, 1.225e-01);
231
INSERT INTO t1(a,b) VALUES (1.225877e-01, 1.225877e-01);
232
INSERT INTO t1(a,b) VALUES (1.225e+01, 1.225e+01);
233
INSERT INTO t1(a,b,c) VALUES (1.225e+01, 1.225e+01, 1.225e+01);
234
INSERT INTO t1(a,b) VALUES (1.225e+05, 1.225e+05);
235
INSERT INTO t1(a,b) VALUES (1.225e+10, 1.225e+10);
236
INSERT INTO t1(a,b) VALUES (1.225e+15, 1.225e+15);
237
INSERT INTO t1(a,b) VALUES (5000000e+0, 5000000e+0);
238
INSERT INTO t1(a,b) VALUES (1.25e+78, 1.25e+78);
239
INSERT INTO t1(a,b) VALUES (1.25e-94, 1.25e-94);
240
INSERT INTO t1(a,b) VALUES (1.25e+203, 1.25e+203);
241
INSERT INTO t1(a,b) VALUES (1.25e-175, 1.25e-175);
242
INSERT INTO t1(a,c) VALUES (1.225e+0, 1.225e+0);
243
INSERT INTO t1(a,c) VALUES (1.37e+0, 1.37e+0);
244
INSERT INTO t1(a,c) VALUES (-1.37e+0, -1.37e+0);
245
INSERT INTO t1(a,c) VALUES (1.87e-3, 1.87e-3);
246
INSERT INTO t1(a,c) VALUES (-1.87e-2, -1.87e-2);
247
INSERT INTO t1(a,c) VALUES (5000e+0, 5000e+0);
248
INSERT INTO t1(a,c) VALUES (-5000e+0, -5000e+0);
255
# Bug #31152: assertion in Field_str::store(double)
258
CREATE TABLE t (a CHAR(10),b INT);
259
INSERT INTO t VALUES (),(),();
260
INSERT INTO t(a) SELECT rand() FROM t;
264
# Bug #30453: String not cast to int correctly
267
CREATE TABLE t1 (c1 INT NOT NULL);
268
INSERT INTO t1 VALUES(4188.32999999999992724042385816574096679687500),
269
('4188.32999999999992724042385816574096679687500'), (4188);
272
CREATE TABLE t2 (c1 BIGINT);
273
INSERT INTO t2 VALUES('15449237462.0000000000');
278
--echo End of 5.0 tests.