wasCSharpSQLite – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 # 2002 January 29
2 #
3 # The author disclaims copyright to this source code. In place of
4 # a legal notice, here is a blessing:
5 #
6 # May you do good and not evil.
7 # May you find forgiveness for yourself and forgive others.
8 # May you share freely, never taking more than you give.
9 #
10 #***********************************************************************
11 # This file implements regression tests for SQLite library.
12 #
13 # This file implements tests for the NOT NULL constraint.
14 #
15 # $Id: notnull.test,v 1.4 2006/01/17 09:35:02 danielk1977 Exp $
16  
17 set testdir [file dirname $argv0]
18 source $testdir/tester.tcl
19  
20 ifcapable !conflict {
21 finish_test
22 return
23 }
24  
25 do_test notnull-1.0 {
26 execsql {
27 CREATE TABLE t1 (
28 a NOT NULL,
29 b NOT NULL DEFAULT 5,
30 c NOT NULL ON CONFLICT REPLACE DEFAULT 6,
31 d NOT NULL ON CONFLICT IGNORE DEFAULT 7,
32 e NOT NULL ON CONFLICT ABORT DEFAULT 8
33 );
34 SELECT * FROM t1;
35 }
36 } {}
37 do_test notnull-1.1 {
38 catchsql {
39 DELETE FROM t1;
40 INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5);
41 SELECT * FROM t1 order by a;
42 }
43 } {0 {1 2 3 4 5}}
44 do_test notnull-1.2 {
45 catchsql {
46 DELETE FROM t1;
47 INSERT INTO t1(b,c,d,e) VALUES(2,3,4,5);
48 SELECT * FROM t1 order by a;
49 }
50 } {1 {t1.a may not be NULL}}
51 do_test notnull-1.3 {
52 catchsql {
53 DELETE FROM t1;
54 INSERT OR IGNORE INTO t1(b,c,d,e) VALUES(2,3,4,5);
55 SELECT * FROM t1 order by a;
56 }
57 } {0 {}}
58 do_test notnull-1.4 {
59 catchsql {
60 DELETE FROM t1;
61 INSERT OR REPLACE INTO t1(b,c,d,e) VALUES(2,3,4,5);
62 SELECT * FROM t1 order by a;
63 }
64 } {1 {t1.a may not be NULL}}
65 do_test notnull-1.5 {
66 catchsql {
67 DELETE FROM t1;
68 INSERT OR ABORT INTO t1(b,c,d,e) VALUES(2,3,4,5);
69 SELECT * FROM t1 order by a;
70 }
71 } {1 {t1.a may not be NULL}}
72 do_test notnull-1.6 {
73 catchsql {
74 DELETE FROM t1;
75 INSERT INTO t1(a,c,d,e) VALUES(1,3,4,5);
76 SELECT * FROM t1 order by a;
77 }
78 } {0 {1 5 3 4 5}}
79 do_test notnull-1.7 {
80 catchsql {
81 DELETE FROM t1;
82 INSERT OR IGNORE INTO t1(a,c,d,e) VALUES(1,3,4,5);
83 SELECT * FROM t1 order by a;
84 }
85 } {0 {1 5 3 4 5}}
86 do_test notnull-1.8 {
87 catchsql {
88 DELETE FROM t1;
89 INSERT OR REPLACE INTO t1(a,c,d,e) VALUES(1,3,4,5);
90 SELECT * FROM t1 order by a;
91 }
92 } {0 {1 5 3 4 5}}
93 do_test notnull-1.9 {
94 catchsql {
95 DELETE FROM t1;
96 INSERT OR ABORT INTO t1(a,c,d,e) VALUES(1,3,4,5);
97 SELECT * FROM t1 order by a;
98 }
99 } {0 {1 5 3 4 5}}
100 do_test notnull-1.10 {
101 catchsql {
102 DELETE FROM t1;
103 INSERT INTO t1(a,b,c,d,e) VALUES(1,null,3,4,5);
104 SELECT * FROM t1 order by a;
105 }
106 } {1 {t1.b may not be NULL}}
107 do_test notnull-1.11 {
108 catchsql {
109 DELETE FROM t1;
110 INSERT OR IGNORE INTO t1(a,b,c,d,e) VALUES(1,null,3,4,5);
111 SELECT * FROM t1 order by a;
112 }
113 } {0 {}}
114 do_test notnull-1.12 {
115 catchsql {
116 DELETE FROM t1;
117 INSERT OR REPLACE INTO t1(a,b,c,d,e) VALUES(1,null,3,4,5);
118 SELECT * FROM t1 order by a;
119 }
120 } {0 {1 5 3 4 5}}
121 do_test notnull-1.13 {
122 catchsql {
123 DELETE FROM t1;
124 INSERT INTO t1(a,b,c,d,e) VALUES(1,2,null,4,5);
125 SELECT * FROM t1 order by a;
126 }
127 } {0 {1 2 6 4 5}}
128 do_test notnull-1.14 {
129 catchsql {
130 DELETE FROM t1;
131 INSERT OR IGNORE INTO t1(a,b,c,d,e) VALUES(1,2,null,4,5);
132 SELECT * FROM t1 order by a;
133 }
134 } {0 {}}
135 do_test notnull-1.15 {
136 catchsql {
137 DELETE FROM t1;
138 INSERT OR REPLACE INTO t1(a,b,c,d,e) VALUES(1,2,null,4,5);
139 SELECT * FROM t1 order by a;
140 }
141 } {0 {1 2 6 4 5}}
142 do_test notnull-1.16 {
143 catchsql {
144 DELETE FROM t1;
145 INSERT OR ABORT INTO t1(a,b,c,d,e) VALUES(1,2,null,4,5);
146 SELECT * FROM t1 order by a;
147 }
148 } {1 {t1.c may not be NULL}}
149 do_test notnull-1.17 {
150 catchsql {
151 DELETE FROM t1;
152 INSERT OR ABORT INTO t1(a,b,c,d,e) VALUES(1,2,3,null,5);
153 SELECT * FROM t1 order by a;
154 }
155 } {1 {t1.d may not be NULL}}
156 do_test notnull-1.18 {
157 catchsql {
158 DELETE FROM t1;
159 INSERT OR ABORT INTO t1(a,b,c,e) VALUES(1,2,3,5);
160 SELECT * FROM t1 order by a;
161 }
162 } {0 {1 2 3 7 5}}
163 do_test notnull-1.19 {
164 catchsql {
165 DELETE FROM t1;
166 INSERT INTO t1(a,b,c,d) VALUES(1,2,3,4);
167 SELECT * FROM t1 order by a;
168 }
169 } {0 {1 2 3 4 8}}
170 do_test notnull-1.20 {
171 catchsql {
172 DELETE FROM t1;
173 INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,null);
174 SELECT * FROM t1 order by a;
175 }
176 } {1 {t1.e may not be NULL}}
177 do_test notnull-1.21 {
178 catchsql {
179 DELETE FROM t1;
180 INSERT OR REPLACE INTO t1(e,d,c,b,a) VALUES(1,2,3,null,5);
181 SELECT * FROM t1 order by a;
182 }
183 } {0 {5 5 3 2 1}}
184  
185 do_test notnull-2.1 {
186 catchsql {
187 DELETE FROM t1;
188 INSERT INTO t1 VALUES(1,2,3,4,5);
189 UPDATE t1 SET a=null;
190 SELECT * FROM t1 ORDER BY a;
191 }
192 } {1 {t1.a may not be NULL}}
193 do_test notnull-2.2 {
194 catchsql {
195 DELETE FROM t1;
196 INSERT INTO t1 VALUES(1,2,3,4,5);
197 UPDATE OR REPLACE t1 SET a=null;
198 SELECT * FROM t1 ORDER BY a;
199 }
200 } {1 {t1.a may not be NULL}}
201 do_test notnull-2.3 {
202 catchsql {
203 DELETE FROM t1;
204 INSERT INTO t1 VALUES(1,2,3,4,5);
205 UPDATE OR IGNORE t1 SET a=null;
206 SELECT * FROM t1 ORDER BY a;
207 }
208 } {0 {1 2 3 4 5}}
209 do_test notnull-2.4 {
210 catchsql {
211 DELETE FROM t1;
212 INSERT INTO t1 VALUES(1,2,3,4,5);
213 UPDATE OR ABORT t1 SET a=null;
214 SELECT * FROM t1 ORDER BY a;
215 }
216 } {1 {t1.a may not be NULL}}
217 do_test notnull-2.5 {
218 catchsql {
219 DELETE FROM t1;
220 INSERT INTO t1 VALUES(1,2,3,4,5);
221 UPDATE t1 SET b=null;
222 SELECT * FROM t1 ORDER BY a;
223 }
224 } {1 {t1.b may not be NULL}}
225 do_test notnull-2.6 {
226 catchsql {
227 DELETE FROM t1;
228 INSERT INTO t1 VALUES(1,2,3,4,5);
229 UPDATE OR REPLACE t1 SET b=null, d=e, e=d;
230 SELECT * FROM t1 ORDER BY a;
231 }
232 } {0 {1 5 3 5 4}}
233 do_test notnull-2.7 {
234 catchsql {
235 DELETE FROM t1;
236 INSERT INTO t1 VALUES(1,2,3,4,5);
237 UPDATE OR IGNORE t1 SET b=null, d=e, e=d;
238 SELECT * FROM t1 ORDER BY a;
239 }
240 } {0 {1 2 3 4 5}}
241 do_test notnull-2.8 {
242 catchsql {
243 DELETE FROM t1;
244 INSERT INTO t1 VALUES(1,2,3,4,5);
245 UPDATE t1 SET c=null, d=e, e=d;
246 SELECT * FROM t1 ORDER BY a;
247 }
248 } {0 {1 2 6 5 4}}
249 do_test notnull-2.9 {
250 catchsql {
251 DELETE FROM t1;
252 INSERT INTO t1 VALUES(1,2,3,4,5);
253 UPDATE t1 SET d=null, a=b, b=a;
254 SELECT * FROM t1 ORDER BY a;
255 }
256 } {0 {1 2 3 4 5}}
257 do_test notnull-2.10 {
258 catchsql {
259 DELETE FROM t1;
260 INSERT INTO t1 VALUES(1,2,3,4,5);
261 UPDATE t1 SET e=null, a=b, b=a;
262 SELECT * FROM t1 ORDER BY a;
263 }
264 } {1 {t1.e may not be NULL}}
265  
266 do_test notnull-3.0 {
267 execsql {
268 CREATE INDEX t1a ON t1(a);
269 CREATE INDEX t1b ON t1(b);
270 CREATE INDEX t1c ON t1(c);
271 CREATE INDEX t1d ON t1(d);
272 CREATE INDEX t1e ON t1(e);
273 CREATE INDEX t1abc ON t1(a,b,c);
274 }
275 } {}
276 do_test notnull-3.1 {
277 catchsql {
278 DELETE FROM t1;
279 INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5);
280 SELECT * FROM t1 order by a;
281 }
282 } {0 {1 2 3 4 5}}
283 do_test notnull-3.2 {
284 catchsql {
285 DELETE FROM t1;
286 INSERT INTO t1(b,c,d,e) VALUES(2,3,4,5);
287 SELECT * FROM t1 order by a;
288 }
289 } {1 {t1.a may not be NULL}}
290 do_test notnull-3.3 {
291 catchsql {
292 DELETE FROM t1;
293 INSERT OR IGNORE INTO t1(b,c,d,e) VALUES(2,3,4,5);
294 SELECT * FROM t1 order by a;
295 }
296 } {0 {}}
297 do_test notnull-3.4 {
298 catchsql {
299 DELETE FROM t1;
300 INSERT OR REPLACE INTO t1(b,c,d,e) VALUES(2,3,4,5);
301 SELECT * FROM t1 order by a;
302 }
303 } {1 {t1.a may not be NULL}}
304 do_test notnull-3.5 {
305 catchsql {
306 DELETE FROM t1;
307 INSERT OR ABORT INTO t1(b,c,d,e) VALUES(2,3,4,5);
308 SELECT * FROM t1 order by a;
309 }
310 } {1 {t1.a may not be NULL}}
311 do_test notnull-3.6 {
312 catchsql {
313 DELETE FROM t1;
314 INSERT INTO t1(a,c,d,e) VALUES(1,3,4,5);
315 SELECT * FROM t1 order by a;
316 }
317 } {0 {1 5 3 4 5}}
318 do_test notnull-3.7 {
319 catchsql {
320 DELETE FROM t1;
321 INSERT OR IGNORE INTO t1(a,c,d,e) VALUES(1,3,4,5);
322 SELECT * FROM t1 order by a;
323 }
324 } {0 {1 5 3 4 5}}
325 do_test notnull-3.8 {
326 catchsql {
327 DELETE FROM t1;
328 INSERT OR REPLACE INTO t1(a,c,d,e) VALUES(1,3,4,5);
329 SELECT * FROM t1 order by a;
330 }
331 } {0 {1 5 3 4 5}}
332 do_test notnull-3.9 {
333 catchsql {
334 DELETE FROM t1;
335 INSERT OR ABORT INTO t1(a,c,d,e) VALUES(1,3,4,5);
336 SELECT * FROM t1 order by a;
337 }
338 } {0 {1 5 3 4 5}}
339 do_test notnull-3.10 {
340 catchsql {
341 DELETE FROM t1;
342 INSERT INTO t1(a,b,c,d,e) VALUES(1,null,3,4,5);
343 SELECT * FROM t1 order by a;
344 }
345 } {1 {t1.b may not be NULL}}
346 do_test notnull-3.11 {
347 catchsql {
348 DELETE FROM t1;
349 INSERT OR IGNORE INTO t1(a,b,c,d,e) VALUES(1,null,3,4,5);
350 SELECT * FROM t1 order by a;
351 }
352 } {0 {}}
353 do_test notnull-3.12 {
354 catchsql {
355 DELETE FROM t1;
356 INSERT OR REPLACE INTO t1(a,b,c,d,e) VALUES(1,null,3,4,5);
357 SELECT * FROM t1 order by a;
358 }
359 } {0 {1 5 3 4 5}}
360 do_test notnull-3.13 {
361 catchsql {
362 DELETE FROM t1;
363 INSERT INTO t1(a,b,c,d,e) VALUES(1,2,null,4,5);
364 SELECT * FROM t1 order by a;
365 }
366 } {0 {1 2 6 4 5}}
367 do_test notnull-3.14 {
368 catchsql {
369 DELETE FROM t1;
370 INSERT OR IGNORE INTO t1(a,b,c,d,e) VALUES(1,2,null,4,5);
371 SELECT * FROM t1 order by a;
372 }
373 } {0 {}}
374 do_test notnull-3.15 {
375 catchsql {
376 DELETE FROM t1;
377 INSERT OR REPLACE INTO t1(a,b,c,d,e) VALUES(1,2,null,4,5);
378 SELECT * FROM t1 order by a;
379 }
380 } {0 {1 2 6 4 5}}
381 do_test notnull-3.16 {
382 catchsql {
383 DELETE FROM t1;
384 INSERT OR ABORT INTO t1(a,b,c,d,e) VALUES(1,2,null,4,5);
385 SELECT * FROM t1 order by a;
386 }
387 } {1 {t1.c may not be NULL}}
388 do_test notnull-3.17 {
389 catchsql {
390 DELETE FROM t1;
391 INSERT OR ABORT INTO t1(a,b,c,d,e) VALUES(1,2,3,null,5);
392 SELECT * FROM t1 order by a;
393 }
394 } {1 {t1.d may not be NULL}}
395 do_test notnull-3.18 {
396 catchsql {
397 DELETE FROM t1;
398 INSERT OR ABORT INTO t1(a,b,c,e) VALUES(1,2,3,5);
399 SELECT * FROM t1 order by a;
400 }
401 } {0 {1 2 3 7 5}}
402 do_test notnull-3.19 {
403 catchsql {
404 DELETE FROM t1;
405 INSERT INTO t1(a,b,c,d) VALUES(1,2,3,4);
406 SELECT * FROM t1 order by a;
407 }
408 } {0 {1 2 3 4 8}}
409 do_test notnull-3.20 {
410 catchsql {
411 DELETE FROM t1;
412 INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,null);
413 SELECT * FROM t1 order by a;
414 }
415 } {1 {t1.e may not be NULL}}
416 do_test notnull-3.21 {
417 catchsql {
418 DELETE FROM t1;
419 INSERT OR REPLACE INTO t1(e,d,c,b,a) VALUES(1,2,3,null,5);
420 SELECT * FROM t1 order by a;
421 }
422 } {0 {5 5 3 2 1}}
423  
424 do_test notnull-4.1 {
425 catchsql {
426 DELETE FROM t1;
427 INSERT INTO t1 VALUES(1,2,3,4,5);
428 UPDATE t1 SET a=null;
429 SELECT * FROM t1 ORDER BY a;
430 }
431 } {1 {t1.a may not be NULL}}
432 do_test notnull-4.2 {
433 catchsql {
434 DELETE FROM t1;
435 INSERT INTO t1 VALUES(1,2,3,4,5);
436 UPDATE OR REPLACE t1 SET a=null;
437 SELECT * FROM t1 ORDER BY a;
438 }
439 } {1 {t1.a may not be NULL}}
440 do_test notnull-4.3 {
441 catchsql {
442 DELETE FROM t1;
443 INSERT INTO t1 VALUES(1,2,3,4,5);
444 UPDATE OR IGNORE t1 SET a=null;
445 SELECT * FROM t1 ORDER BY a;
446 }
447 } {0 {1 2 3 4 5}}
448 do_test notnull-4.4 {
449 catchsql {
450 DELETE FROM t1;
451 INSERT INTO t1 VALUES(1,2,3,4,5);
452 UPDATE OR ABORT t1 SET a=null;
453 SELECT * FROM t1 ORDER BY a;
454 }
455 } {1 {t1.a may not be NULL}}
456 do_test notnull-4.5 {
457 catchsql {
458 DELETE FROM t1;
459 INSERT INTO t1 VALUES(1,2,3,4,5);
460 UPDATE t1 SET b=null;
461 SELECT * FROM t1 ORDER BY a;
462 }
463 } {1 {t1.b may not be NULL}}
464 do_test notnull-4.6 {
465 catchsql {
466 DELETE FROM t1;
467 INSERT INTO t1 VALUES(1,2,3,4,5);
468 UPDATE OR REPLACE t1 SET b=null, d=e, e=d;
469 SELECT * FROM t1 ORDER BY a;
470 }
471 } {0 {1 5 3 5 4}}
472 do_test notnull-4.7 {
473 catchsql {
474 DELETE FROM t1;
475 INSERT INTO t1 VALUES(1,2,3,4,5);
476 UPDATE OR IGNORE t1 SET b=null, d=e, e=d;
477 SELECT * FROM t1 ORDER BY a;
478 }
479 } {0 {1 2 3 4 5}}
480 do_test notnull-4.8 {
481 catchsql {
482 DELETE FROM t1;
483 INSERT INTO t1 VALUES(1,2,3,4,5);
484 UPDATE t1 SET c=null, d=e, e=d;
485 SELECT * FROM t1 ORDER BY a;
486 }
487 } {0 {1 2 6 5 4}}
488 do_test notnull-4.9 {
489 catchsql {
490 DELETE FROM t1;
491 INSERT INTO t1 VALUES(1,2,3,4,5);
492 UPDATE t1 SET d=null, a=b, b=a;
493 SELECT * FROM t1 ORDER BY a;
494 }
495 } {0 {1 2 3 4 5}}
496 do_test notnull-4.10 {
497 catchsql {
498 DELETE FROM t1;
499 INSERT INTO t1 VALUES(1,2,3,4,5);
500 UPDATE t1 SET e=null, a=b, b=a;
501 SELECT * FROM t1 ORDER BY a;
502 }
503 } {1 {t1.e may not be NULL}}
504  
505 # Test that bug 29ab7be99f is fixed.
506 #
507 do_test notnull-5.1 {
508 execsql {
509 DROP TABLE IF EXISTS t1;
510 CREATE TABLE t1(a, b NOT NULL);
511 CREATE TABLE t2(c, d);
512 INSERT INTO t2 VALUES(3, 4);
513 INSERT INTO t2 VALUES(5, NULL);
514 }
515 } {}
516 do_test notnull-5.2 {
517 catchsql {
518 INSERT INTO t1 VALUES(1, 2);
519 INSERT INTO t1 SELECT * FROM t2;
520 }
521 } {1 {t1.b may not be NULL}}
522 do_test notnull-5.3 {
523 execsql { SELECT * FROM t1 }
524 } {1 2}
525 do_test notnull-5.4 {
526 catchsql {
527 DELETE FROM t1;
528 BEGIN;
529 INSERT INTO t1 VALUES(1, 2);
530 INSERT INTO t1 SELECT * FROM t2;
531 COMMIT;
532 }
533 } {1 {t1.b may not be NULL}}
534 do_test notnull-5.5 {
535 execsql { SELECT * FROM t1 }
536 } {1 2}
537  
538 finish_test
539