~linuxjedi/drizzle/trunk-bug-667053

« back to all changes in this revision

Viewing changes to mysql-test/t/insert.test

  • 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
# Test of refering to old values
 
3
#
 
4
 
 
5
--disable_warnings
 
6
drop table if exists t1,t2,t3;
 
7
--enable_warnings
 
8
 
 
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);
 
14
select * from t1;
 
15
drop table t1;
 
16
 
 
17
#
 
18
# Test of duplicate key values with packed keys
 
19
#
 
20
 
 
21
create table t1 (id int not null auto_increment primary key, username varchar(32) not null, unique (username));
 
22
insert into t1 values (0,"mysql");
 
23
insert into t1 values (0,"mysql ab");
 
24
insert into t1 values (0,"mysql a");
 
25
insert into t1 values (0,"r1manic");
 
26
insert into t1 values (0,"r1man");
 
27
drop table t1;
 
28
 
 
29
#
 
30
# Test insert syntax
 
31
#
 
32
 
 
33
create table t1 (a int not null auto_increment, primary key (a), t timestamp, c char(10) default "hello", i int);
 
34
insert into t1 values (default,default,default,default), (default,default,default,default), (4,0,"a",5),(default,default,default,default);
 
35
select a,t>0,c,i from t1;
 
36
truncate table t1;
 
37
insert into t1 set a=default,t=default,c=default;
 
38
insert into t1 set a=default,t=default,c=default,i=default;
 
39
insert into t1 set a=4,t=0,c="a",i=5;
 
40
insert into t1 set a=5,t=0,c="a",i=null;
 
41
insert into t1 set a=default,t=default,c=default,i=default;
 
42
select a,t>0,c,i from t1;
 
43
drop table t1;
 
44
 
 
45
#
 
46
# Test problem with bulk insert and auto_increment on second part keys
 
47
#
 
48
 
 
49
create table t1 (sid char(20), id int(2) NOT NULL auto_increment, key(sid, id));
 
50
insert into t1 values ('skr',NULL),('skr',NULL),('test',NULL);
 
51
select * from t1;
 
52
insert into t1 values ('rts',NULL),('rts',NULL),('test',NULL);
 
53
select * from t1;
 
54
drop table t1;
 
55
 
 
56
#
 
57
#Test of behaviour with INSERT VALUES (NULL)
 
58
#
 
59
 
 
60
create table t1 (id int NOT NULL DEFAULT 8);
 
61
-- error 1048
 
62
insert into t1 values(NULL);
 
63
-- error 1048
 
64
insert into t1 values (1), (NULL), (2);
 
65
select * from t1;
 
66
drop table t1;
 
67
 
 
68
#
 
69
# Test if insert ... select distinct
 
70
#
 
71
 
 
72
create table t1 (email varchar(50));
 
73
insert into t1 values ('sasha@mysql.com'),('monty@mysql.com'),('foo@hotmail.com'),('foo@aol.com'),('bar@aol.com');
 
74
create table t2(id int not null auto_increment primary key, t2 varchar(50), unique(t2));
 
75
insert delayed into t2 (t2) select distinct substring(email, locate('@', email)+1) from t1;
 
76
select * from t2;
 
77
drop table t1,t2;
 
78
 
 
79
#
 
80
# Test of mysqld crash with fully qualified column names
 
81
#
 
82
 
 
83
--disable_warnings
 
84
drop database if exists mysqltest;
 
85
--enable_warnings
 
86
create database mysqltest;
 
87
use mysqltest;
 
88
create table t1 (c int);
 
89
insert into mysqltest.t1 set mysqltest.t1.c = '1';
 
90
drop database mysqltest;
 
91
use test;
 
92
 
 
93
 
 
94
# End of 4.1 tests
 
95
 
 
96
#
 
97
# Test automatic result buffering with INSERT INTO t1 ... SELECT ... FROM t1
 
98
#
 
99
 
 
100
create table t1(id1 int not null auto_increment primary key, t char(12));
 
101
create table t2(id2 int not null, t char(12));
 
102
create table t3(id3 int not null, t char(12), index(id3));
 
103
disable_query_log;
 
104
let $1 = 100;
 
105
while ($1)
 
106
 {
 
107
  let $2 = 5;
 
108
  eval insert into t1(t) values ('$1'); 
 
109
  while ($2)
 
110
   {
 
111
     eval insert into t2(id2,t) values ($1,'$2'); 
 
112
     let $3 = 10;
 
113
     while ($3)
 
114
     {
 
115
       eval insert into t3(id3,t) values ($1,'$2'); 
 
116
       dec $3;
 
117
     }
 
118
     dec $2; 
 
119
   }
 
120
  dec $1;
 
121
 }
 
122
enable_query_log;
 
123
select count(*) from t2;
 
124
insert into  t2 select t1.* from t1, t2 t, t3 where  t1.id1 = t.id2 and t.id2 = t3.id3;
 
125
select count(*) from t2;
 
126
drop table t1,t2,t3;
 
127
 
 
128
#
 
129
# Test different cases of duplicate fields
 
130
#
 
131
 
 
132
create table t1 (a int, b int);
 
133
insert into t1 (a,b) values (a,b);
 
134
insert into t1 SET a=1, b=a+1;
 
135
insert into t1 (a,b) select 1,2;
 
136
INSERT INTO t1 ( a ) SELECT 0 ON DUPLICATE KEY UPDATE a = a + VALUES (a);
 
137
--error 1110
 
138
replace into t1 (a,a) select 100, 'hundred';
 
139
--error 1110
 
140
insert into t1 (a,b,b) values (1,1,1);
 
141
--error 1136
 
142
insert into t1 (a,a) values (1,1,1);
 
143
--error 1110
 
144
insert into t1 (a,a) values (1,1);
 
145
--error 1110
 
146
insert into t1 SET a=1,b=2,a=1;
 
147
--error 1110
 
148
insert into t1 (b,b) select 1,2;
 
149
--error 1110
 
150
INSERT INTO t1 (b,b) SELECT 0,0 ON DUPLICATE KEY UPDATE a = a + VALUES (a);
 
151
drop table t1;
 
152
 
 
153
#
 
154
# Test for values returned by ROW_COUNT() function
 
155
# (and thus for values returned by mysql_affected_rows())
 
156
# for various forms of INSERT
 
157
#
 
158
create table t1 (id int primary key, data int);
 
159
insert into t1 values (1, 1), (2, 2), (3, 3);
 
160
select row_count();
 
161
insert ignore into t1 values (1, 1);
 
162
select row_count();
 
163
# Reports that 2 rows are affected (1 deleted + 1 inserted)
 
164
replace into t1 values (1, 11);
 
165
select row_count();
 
166
replace into t1 values (4, 4);
 
167
select row_count();
 
168
# Reports that 2 rows are affected. This conforms to documentation.
 
169
# (Useful for differentiating inserts from updates).
 
170
insert into t1 values (2, 2) on duplicate key update data= data + 10;
 
171
select row_count();
 
172
insert into t1 values (5, 5) on duplicate key update data= data + 10;
 
173
select row_count();
 
174
drop table t1;
 
175
 
 
176
# Test of INSERT IGNORE and re-using auto_increment values
 
177
create table t1 (id int primary key auto_increment, data int, unique(data));
 
178
insert ignore into t1 values(NULL,100),(NULL,110),(NULL,120);
 
179
insert ignore into t1 values(NULL,10),(NULL,20),(NULL,110),(NULL,120),(NULL,100),(NULL,90);
 
180
insert ignore into t1 values(NULL,130),(NULL,140),(500,110),(550,120),(450,100),(NULL,150);
 
181
select * from t1 order by id;
 
182
 
 
183
drop table t1;
 
184
 
 
185
#
 
186
# Bug #26788: mysqld (debug) aborts when inserting specific numbers into char
 
187
#             fields
 
188
#
 
189
 
 
190
CREATE TABLE t1 (
 
191
  a char(20) NOT NULL,
 
192
  b char(7) DEFAULT NULL,
 
193
  c char(4) DEFAULT NULL
 
194
);
 
195
 
 
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);
 
216
SELECT * FROM t1;
 
217
 
 
218
DROP TABLE t1;
 
219
 
 
220
CREATE TABLE t1 (
 
221
  a char(20) NOT NULL,
 
222
  b char(7) DEFAULT NULL,
 
223
  c char(5)
 
224
);
 
225
 
 
226
 
 
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);
 
249
 
 
250
SELECT * FROM t1;
 
251
 
 
252
DROP TABLE t1;
 
253
 
 
254
#
 
255
# Bug #31152: assertion in Field_str::store(double)
 
256
#
 
257
 
 
258
CREATE TABLE t (a CHAR(10),b INT);
 
259
INSERT INTO t VALUES (),(),();
 
260
INSERT INTO t(a) SELECT rand() FROM t;
 
261
DROP TABLE t;
 
262
 
 
263
#
 
264
# Bug #30453: String not cast to int correctly
 
265
#
 
266
 
 
267
CREATE TABLE t1 (c1 INT NOT NULL);
 
268
INSERT INTO t1 VALUES(4188.32999999999992724042385816574096679687500),
 
269
('4188.32999999999992724042385816574096679687500'), (4188);
 
270
SELECT * FROM t1;
 
271
 
 
272
CREATE TABLE t2 (c1 BIGINT);
 
273
INSERT INTO t2 VALUES('15449237462.0000000000');
 
274
SELECT * FROM t2;
 
275
 
 
276
DROP TABLE t1, t2;
 
277
 
 
278
--echo End of 5.0 tests.
 
279