~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to tests/r/auto_increment.result

  • Committer: Stewart Smith
  • Date: 2009-05-15 06:57:12 UTC
  • mto: (991.1.5 for-brian)
  • mto: This revision was merged to the branch mainline in revision 1022.
  • Revision ID: stewart@flamingspork.com-20090515065712-bmionylacjmexmmm
Make sql_mode=NO_AUTO_VALUE_ON_ZERO default for Drizzle.

Also fix DEFAULT keyword handling for auto-increment so that it defaults to
NULL and not 0 so that the following is valid and generates two auto-inc
values:

create table t1 (a int auto_increment primary key)
insert into t1 (a) values (default);
insert into t1 (a) values (default);

Important to note that 0 is no longer magic. So this gives you duplicate
primary key error:

insert into t1 (a) values(0);
insert into t1 (a) values(0);

as you've inserted the explicit value of 0 twice.

Show diffs side-by-side

added added

removed removed

Lines of Context:
115
115
a       b
116
116
1       1
117
117
200     2
118
 
201     3
119
 
202     4
120
 
203     5
121
 
204     6
122
 
205     7
 
118
0       3
 
119
201     4
 
120
202     5
 
121
203     6
 
122
204     7
123
123
alter table t1 modify b int;
124
124
select * from t1 order by b;
125
125
a       b
126
126
1       1
127
127
200     2
128
 
201     3
129
 
202     4
130
 
203     5
131
 
204     6
132
 
205     7
 
128
0       3
 
129
201     4
 
130
202     5
 
131
203     6
 
132
204     7
133
133
create table t2 (a int);
134
134
insert t2 values (1),(2);
135
135
alter table t2 add b int auto_increment primary key;
144
144
a       b
145
145
1       1
146
146
200     2
147
 
201     3
148
 
202     4
 
147
201     4
149
148
0       5
150
 
204     6
151
 
205     7
 
149
203     6
 
150
204     7
152
151
delete from t1 where a=0;
153
152
update t1 set a=NULL where b=6;
154
153
ERROR 23000: Column 'a' cannot be null
164
163
a       b
165
164
1       1
166
165
200     2
167
 
201     3
168
 
202     4
169
 
204     6
 
166
201     4
 
167
203     6
170
168
300     7
171
 
206     8
 
169
205     8
172
170
400     9
173
 
401     10
174
 
402     11
175
 
403     12
176
 
404     13
177
 
405     14
 
171
0       10
 
172
401     11
 
173
402     12
 
174
403     13
 
175
404     14
178
176
delete from t1 where a=0;
179
177
update t1 set a=0 where b=12;
180
178
select * from t1 order by b;
181
179
a       b
182
180
1       1
183
181
200     2
184
 
201     3
185
 
202     4
186
 
204     6
 
182
201     4
 
183
203     6
187
184
300     7
188
 
206     8
 
185
205     8
189
186
400     9
190
 
401     10
191
 
402     11
 
187
401     11
192
188
0       12
193
 
404     13
194
 
405     14
 
189
403     13
 
190
404     14
195
191
delete from t1 where a=0;
196
192
update t1 set a=NULL where b=13;
197
193
ERROR 23000: Column 'a' cannot be null
200
196
a       b
201
197
1       1
202
198
200     2
203
 
201     3
204
 
202     4
205
 
204     6
 
199
201     4
 
200
203     6
206
201
300     7
207
 
206     8
 
202
205     8
208
203
400     9
209
 
401     10
210
 
402     11
211
 
404     13
 
204
401     11
 
205
403     13
212
206
500     14
213
207
drop table t1;
214
208
create table t1 (a bigint);
225
219
create table t1 (a bigint);
226
220
insert into t1 values (1), (2), (3), (0), (0);
227
221
alter table t1 modify a bigint not null auto_increment primary key;
228
 
select * from t1;
229
 
a
230
 
1
231
 
2
232
 
3
233
 
4
234
 
5
 
222
ERROR 23000: ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry '0' for key 'PRIMARY'
 
223
select * from t1;
 
224
a
 
225
1
 
226
2
 
227
3
 
228
0
 
229
0
 
230
drop table t1;
 
231
create table t1 (a bigint);
 
232
insert into t1 values (0), (1), (2), (3);
 
233
alter table t1 modify a bigint not null auto_increment primary key;
 
234
select * from t1;
 
235
a
 
236
0
 
237
1
 
238
2
 
239
3
235
240
drop table t1;
236
241
create table t1 (a int auto_increment primary key , b int null);
 
242
insert into t1 values (0,1),(1,2),(2,3);
 
243
select * from t1;
 
244
a       b
 
245
0       1
 
246
1       2
 
247
2       3
237
248
alter table t1 modify b varchar(255);
238
249
insert into t1 values (0,4);
 
250
ERROR 23000: Duplicate entry '0' for key 'PRIMARY'
239
251
select * from t1;
240
252
a       b
241
 
1       4
 
253
0       1
 
254
1       2
 
255
2       3
242
256
drop table t1;
243
257
CREATE TABLE t1 ( a INT AUTO_INCREMENT, b BLOB, PRIMARY KEY (a,b(10)));
244
258
INSERT INTO t1 (b) VALUES ('aaaa');
336
350
INSERT INTO t1 VALUES(0, 0);
337
351
INSERT INTO t1 VALUES(1, 1);
338
352
ALTER TABLE t1 CHANGE t1 t1 INT auto_increment;
339
 
ERROR 23000: ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry '1' for key 'PRIMARY'
 
353
INSERT INTO t1 VALUES(0,0);
 
354
ERROR 23000: Duplicate entry '0' for key 'PRIMARY'
340
355
DROP TABLE t1;
341
356
create table t1 (a int primary key auto_increment, b int, c int, d timestamp default current_timestamp, unique(b),unique(c));
342
357
insert into t1 values(null,1,1,now());