1
by brian
clean slate |
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 |