~drizzle-trunk/drizzle/development

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 of behaviour with INSERT VALUES (NULL)
47
#
48
49
create table t1 (id int NOT NULL DEFAULT 8);
50
-- error 1048
51
insert into t1 values(NULL);
52
-- error 1048
53
insert into t1 values (1), (NULL), (2);
54
select * from t1;
55
drop table t1;
56
57
#
58
# Test if insert ... select distinct
59
#
60
61
create table t1 (email varchar(50));
62
insert into t1 values ('sasha@mysql.com'),('monty@mysql.com'),('foo@hotmail.com'),('foo@aol.com'),('bar@aol.com');
63
create table t2(id int not null auto_increment primary key, t2 varchar(50), unique(t2));
64
insert delayed into t2 (t2) select distinct substring(email, locate('@', email)+1) from t1;
65
select * from t2;
66
drop table t1,t2;
67
68
#
69
# Test of mysqld crash with fully qualified column names
70
#
71
72
--disable_warnings
73
drop database if exists mysqltest;
74
--enable_warnings
75
create database mysqltest;
76
use mysqltest;
77
create table t1 (c int);
78
insert into mysqltest.t1 set mysqltest.t1.c = '1';
79
drop database mysqltest;
80
use test;
81
82
83
# End of 4.1 tests
84
85
#
86
# Test automatic result buffering with INSERT INTO t1 ... SELECT ... FROM t1
87
#
88
89
create table t1(id1 int not null auto_increment primary key, t char(12));
90
create table t2(id2 int not null, t char(12));
91
create table t3(id3 int not null, t char(12), index(id3));
92
disable_query_log;
206.1.1 by Stewart Smith
cut 'make test' time in half.
93
set autocommit=0;
94
begin;
1 by brian
clean slate
95
let $1 = 100;
96
while ($1)
97
 {
98
  let $2 = 5;
99
  eval insert into t1(t) values ('$1'); 
100
  while ($2)
101
   {
102
     eval insert into t2(id2,t) values ($1,'$2'); 
103
     let $3 = 10;
104
     while ($3)
105
     {
106
       eval insert into t3(id3,t) values ($1,'$2'); 
107
       dec $3;
108
     }
109
     dec $2; 
110
   }
111
  dec $1;
112
 }
113
enable_query_log;
114
select count(*) from t2;
115
insert into  t2 select t1.* from t1, t2 t, t3 where  t1.id1 = t.id2 and t.id2 = t3.id3;
116
select count(*) from t2;
117
drop table t1,t2,t3;
118
119
#
120
# Test different cases of duplicate fields
121
#
122
123
create table t1 (a int, b int);
124
insert into t1 (a,b) values (a,b);
125
insert into t1 SET a=1, b=a+1;
126
insert into t1 (a,b) select 1,2;
127
INSERT INTO t1 ( a ) SELECT 0 ON DUPLICATE KEY UPDATE a = a + VALUES (a);
128
--error 1110
129
replace into t1 (a,a) select 100, 'hundred';
130
--error 1110
131
insert into t1 (a,b,b) values (1,1,1);
132
--error 1136
133
insert into t1 (a,a) values (1,1,1);
134
--error 1110
135
insert into t1 (a,a) values (1,1);
136
--error 1110
137
insert into t1 SET a=1,b=2,a=1;
138
--error 1110
139
insert into t1 (b,b) select 1,2;
140
--error 1110
141
INSERT INTO t1 (b,b) SELECT 0,0 ON DUPLICATE KEY UPDATE a = a + VALUES (a);
142
drop table t1;
143
144
#
145
# Test for values returned by ROW_COUNT() function
146
# (and thus for values returned by mysql_affected_rows())
147
# for various forms of INSERT
148
#
149
create table t1 (id int primary key, data int);
150
insert into t1 values (1, 1), (2, 2), (3, 3);
151
select row_count();
152
insert ignore into t1 values (1, 1);
153
select row_count();
154
# Reports that 2 rows are affected (1 deleted + 1 inserted)
155
replace into t1 values (1, 11);
156
select row_count();
157
replace into t1 values (4, 4);
158
select row_count();
159
# Reports that 2 rows are affected. This conforms to documentation.
160
# (Useful for differentiating inserts from updates).
161
insert into t1 values (2, 2) on duplicate key update data= data + 10;
162
select row_count();
163
insert into t1 values (5, 5) on duplicate key update data= data + 10;
164
select row_count();
165
drop table t1;
166
167
# Test of INSERT IGNORE and re-using auto_increment values
168
create table t1 (id int primary key auto_increment, data int, unique(data));
169
insert ignore into t1 values(NULL,100),(NULL,110),(NULL,120);
170
insert ignore into t1 values(NULL,10),(NULL,20),(NULL,110),(NULL,120),(NULL,100),(NULL,90);
171
insert ignore into t1 values(NULL,130),(NULL,140),(500,110),(550,120),(450,100),(NULL,150);
496.1.2 by Paul McCullagh
Changes to .test files to run both PBXT and InnoDB
172
# PBXT differs from InnoDB here. Main reason is that inserting
173
# 500 causes auto inc value to be set to 501, this is never
174
# undone because of possible concurrent inserts.
1 by brian
clean slate
175
select * from t1 order by id;
176
177
drop table t1;
178
179
#
180
# Bug #26788: mysqld (debug) aborts when inserting specific numbers into char
181
#             fields
182
#
183
184
CREATE TABLE t1 (
185
  a char(20) NOT NULL,
186
  b char(7) DEFAULT NULL,
187
  c char(4) DEFAULT NULL
188
);
189
190
INSERT INTO t1(a,b,c) VALUES (9.999999e+0, 9.999999e+0, 9.999e+0);
191
INSERT INTO t1(a,b) VALUES (1.225e-04, 1.225e-04);
192
INSERT INTO t1(a,b) VALUES (1.225e-01, 1.225e-01);
193
INSERT INTO t1(a,b) VALUES (1.225877e-01, 1.225877e-01);
194
INSERT INTO t1(a,b) VALUES (1.225e+01, 1.225e+01);
195
INSERT INTO t1(a,b,c) VALUES (1.225e+01, 1.225e+01, 1.225e+01);
196
INSERT INTO t1(a,b) VALUES (1.225e+05, 1.225e+05);
197
INSERT INTO t1(a,b) VALUES (1.225e+10, 1.225e+10);
198
INSERT INTO t1(a,b) VALUES (1.225e+15, 1.225e+15);
199
INSERT INTO t1(a,b) VALUES (5000000e+0, 5000000e+0);
200
INSERT INTO t1(a,b) VALUES (1.25e+78, 1.25e+78);
201
INSERT INTO t1(a,b) VALUES (1.25e-94, 1.25e-94);
202
INSERT INTO t1(a,b) VALUES (1.25e+203, 1.25e+203);
203
INSERT INTO t1(a,b) VALUES (1.25e-175, 1.25e-175);
204
INSERT INTO t1(a,c) VALUES (1.225e+0, 1.225e+0);
205
INSERT INTO t1(a,c) VALUES (1.37e+0, 1.37e+0);
206
INSERT INTO t1(a,c) VALUES (-1.37e+0, -1.37e+0);
207
INSERT INTO t1(a,c) VALUES (-1.87e-2, -1.87e-2);
208
INSERT INTO t1(a,c) VALUES (5000e+0, 5000e+0);
209
INSERT INTO t1(a,c) VALUES (-5000e+0, -5000e+0);
210
SELECT * FROM t1;
211
212
DROP TABLE t1;
213
214
CREATE TABLE t1 (
215
  a char(20) NOT NULL,
216
  b char(7) DEFAULT NULL,
217
  c char(5)
218
);
219
220
221
INSERT INTO t1(a,b,c) VALUES (9.999999e+0, 9.999999e+0, 9.999e+0);
222
INSERT INTO t1(a,b,c) VALUES (1.225e-05, 1.225e-05, 1.225e-05);
223
INSERT INTO t1(a,b) VALUES (1.225e-04, 1.225e-04);
224
INSERT INTO t1(a,b) VALUES (1.225e-01, 1.225e-01);
225
INSERT INTO t1(a,b) VALUES (1.225877e-01, 1.225877e-01);
226
INSERT INTO t1(a,b) VALUES (1.225e+01, 1.225e+01);
227
INSERT INTO t1(a,b,c) VALUES (1.225e+01, 1.225e+01, 1.225e+01);
228
INSERT INTO t1(a,b) VALUES (1.225e+05, 1.225e+05);
229
INSERT INTO t1(a,b) VALUES (1.225e+10, 1.225e+10);
230
INSERT INTO t1(a,b) VALUES (1.225e+15, 1.225e+15);
231
INSERT INTO t1(a,b) VALUES (5000000e+0, 5000000e+0);
232
INSERT INTO t1(a,b) VALUES (1.25e+78, 1.25e+78);
233
INSERT INTO t1(a,b) VALUES (1.25e-94, 1.25e-94);
234
INSERT INTO t1(a,b) VALUES (1.25e+203, 1.25e+203);
235
INSERT INTO t1(a,b) VALUES (1.25e-175, 1.25e-175);
236
INSERT INTO t1(a,c) VALUES (1.225e+0, 1.225e+0);
237
INSERT INTO t1(a,c) VALUES (1.37e+0, 1.37e+0);
238
INSERT INTO t1(a,c) VALUES (-1.37e+0, -1.37e+0);
239
INSERT INTO t1(a,c) VALUES (1.87e-3, 1.87e-3);
240
INSERT INTO t1(a,c) VALUES (-1.87e-2, -1.87e-2);
241
INSERT INTO t1(a,c) VALUES (5000e+0, 5000e+0);
242
INSERT INTO t1(a,c) VALUES (-5000e+0, -5000e+0);
243
244
SELECT * FROM t1;
245
246
DROP TABLE t1;
247
248
#
249
# Bug #31152: assertion in Field_str::store(double)
250
#
251
252
CREATE TABLE t (a CHAR(10),b INT);
253
INSERT INTO t VALUES (),(),();
254
INSERT INTO t(a) SELECT rand() FROM t;
255
DROP TABLE t;
256
257
#
258
# Bug #30453: String not cast to int correctly
259
#
260
261
CREATE TABLE t1 (c1 INT NOT NULL);
262
INSERT INTO t1 VALUES(4188.32999999999992724042385816574096679687500),
263
('4188.32999999999992724042385816574096679687500'), (4188);
264
SELECT * FROM t1;
265
266
CREATE TABLE t2 (c1 BIGINT);
267
INSERT INTO t2 VALUES('15449237462.0000000000');
268
SELECT * FROM t2;
269
270
DROP TABLE t1, t2;
271
272
--echo End of 5.0 tests.
273