blob: 240aaba9d7eded5a5590bd423811ff5c65520931 [file] [log] [blame]
drhef6764a2002-01-30 04:32:00 +00001# 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#
danielk19773bdca9c2006-01-17 09:35:01 +000015# $Id: notnull.test,v 1.4 2006/01/17 09:35:02 danielk1977 Exp $
drhef6764a2002-01-30 04:32:00 +000016
17set testdir [file dirname $argv0]
18source $testdir/tester.tcl
19
danielk19773bdca9c2006-01-17 09:35:01 +000020ifcapable !conflict {
21 finish_test
22 return
23}
24
drhef6764a2002-01-30 04:32:00 +000025do_test notnull-1.0 {
26 execsql {
27 CREATE TABLE t1 (
28 a NOT NULL,
29 b NOT NULL DEFAULT 5,
drh1c928532002-01-31 15:54:21 +000030 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
drhef6764a2002-01-30 04:32:00 +000033 );
34 SELECT * FROM t1;
35 }
36} {}
37do_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}}
44do_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 }
drh483750b2003-01-29 18:46:51 +000050} {1 {t1.a may not be NULL}}
drhef6764a2002-01-30 04:32:00 +000051do_test notnull-1.3 {
52 catchsql {
53 DELETE FROM t1;
drh1c928532002-01-31 15:54:21 +000054 INSERT OR IGNORE INTO t1(b,c,d,e) VALUES(2,3,4,5);
drhef6764a2002-01-30 04:32:00 +000055 SELECT * FROM t1 order by a;
56 }
57} {0 {}}
58do_test notnull-1.4 {
59 catchsql {
60 DELETE FROM t1;
drh1c928532002-01-31 15:54:21 +000061 INSERT OR REPLACE INTO t1(b,c,d,e) VALUES(2,3,4,5);
drhef6764a2002-01-30 04:32:00 +000062 SELECT * FROM t1 order by a;
63 }
drh483750b2003-01-29 18:46:51 +000064} {1 {t1.a may not be NULL}}
drhef6764a2002-01-30 04:32:00 +000065do_test notnull-1.5 {
66 catchsql {
67 DELETE FROM t1;
drh1c928532002-01-31 15:54:21 +000068 INSERT OR ABORT INTO t1(b,c,d,e) VALUES(2,3,4,5);
drhef6764a2002-01-30 04:32:00 +000069 SELECT * FROM t1 order by a;
70 }
drh483750b2003-01-29 18:46:51 +000071} {1 {t1.a may not be NULL}}
drhef6764a2002-01-30 04:32:00 +000072do_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}}
79do_test notnull-1.7 {
80 catchsql {
81 DELETE FROM t1;
drh1c928532002-01-31 15:54:21 +000082 INSERT OR IGNORE INTO t1(a,c,d,e) VALUES(1,3,4,5);
drhef6764a2002-01-30 04:32:00 +000083 SELECT * FROM t1 order by a;
84 }
85} {0 {1 5 3 4 5}}
86do_test notnull-1.8 {
87 catchsql {
88 DELETE FROM t1;
drh1c928532002-01-31 15:54:21 +000089 INSERT OR REPLACE INTO t1(a,c,d,e) VALUES(1,3,4,5);
drhef6764a2002-01-30 04:32:00 +000090 SELECT * FROM t1 order by a;
91 }
92} {0 {1 5 3 4 5}}
93do_test notnull-1.9 {
94 catchsql {
95 DELETE FROM t1;
drh1c928532002-01-31 15:54:21 +000096 INSERT OR ABORT INTO t1(a,c,d,e) VALUES(1,3,4,5);
drhef6764a2002-01-30 04:32:00 +000097 SELECT * FROM t1 order by a;
98 }
99} {0 {1 5 3 4 5}}
100do_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 }
drh483750b2003-01-29 18:46:51 +0000106} {1 {t1.b may not be NULL}}
drhef6764a2002-01-30 04:32:00 +0000107do_test notnull-1.11 {
108 catchsql {
109 DELETE FROM t1;
drh1c928532002-01-31 15:54:21 +0000110 INSERT OR IGNORE INTO t1(a,b,c,d,e) VALUES(1,null,3,4,5);
drhef6764a2002-01-30 04:32:00 +0000111 SELECT * FROM t1 order by a;
112 }
113} {0 {}}
114do_test notnull-1.12 {
115 catchsql {
116 DELETE FROM t1;
drh1c928532002-01-31 15:54:21 +0000117 INSERT OR REPLACE INTO t1(a,b,c,d,e) VALUES(1,null,3,4,5);
drhef6764a2002-01-30 04:32:00 +0000118 SELECT * FROM t1 order by a;
119 }
120} {0 {1 5 3 4 5}}
121do_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}}
128do_test notnull-1.14 {
129 catchsql {
130 DELETE FROM t1;
drh1c928532002-01-31 15:54:21 +0000131 INSERT OR IGNORE INTO t1(a,b,c,d,e) VALUES(1,2,null,4,5);
drhef6764a2002-01-30 04:32:00 +0000132 SELECT * FROM t1 order by a;
133 }
134} {0 {}}
135do_test notnull-1.15 {
136 catchsql {
137 DELETE FROM t1;
drh1c928532002-01-31 15:54:21 +0000138 INSERT OR REPLACE INTO t1(a,b,c,d,e) VALUES(1,2,null,4,5);
drhef6764a2002-01-30 04:32:00 +0000139 SELECT * FROM t1 order by a;
140 }
141} {0 {1 2 6 4 5}}
142do_test notnull-1.16 {
143 catchsql {
144 DELETE FROM t1;
drh1c928532002-01-31 15:54:21 +0000145 INSERT OR ABORT INTO t1(a,b,c,d,e) VALUES(1,2,null,4,5);
drhef6764a2002-01-30 04:32:00 +0000146 SELECT * FROM t1 order by a;
147 }
drh483750b2003-01-29 18:46:51 +0000148} {1 {t1.c may not be NULL}}
drhef6764a2002-01-30 04:32:00 +0000149do_test notnull-1.17 {
150 catchsql {
151 DELETE FROM t1;
drh1c928532002-01-31 15:54:21 +0000152 INSERT OR ABORT INTO t1(a,b,c,d,e) VALUES(1,2,3,null,5);
drhef6764a2002-01-30 04:32:00 +0000153 SELECT * FROM t1 order by a;
154 }
drh483750b2003-01-29 18:46:51 +0000155} {1 {t1.d may not be NULL}}
drhef6764a2002-01-30 04:32:00 +0000156do_test notnull-1.18 {
157 catchsql {
158 DELETE FROM t1;
drh1c928532002-01-31 15:54:21 +0000159 INSERT OR ABORT INTO t1(a,b,c,e) VALUES(1,2,3,5);
drhef6764a2002-01-30 04:32:00 +0000160 SELECT * FROM t1 order by a;
161 }
162} {0 {1 2 3 7 5}}
163do_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}}
170do_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 }
drh483750b2003-01-29 18:46:51 +0000176} {1 {t1.e may not be NULL}}
drhef6764a2002-01-30 04:32:00 +0000177do_test notnull-1.21 {
178 catchsql {
179 DELETE FROM t1;
drh1c928532002-01-31 15:54:21 +0000180 INSERT OR REPLACE INTO t1(e,d,c,b,a) VALUES(1,2,3,null,5);
drhef6764a2002-01-30 04:32:00 +0000181 SELECT * FROM t1 order by a;
182 }
183} {0 {5 5 3 2 1}}
184
185do_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 }
drh483750b2003-01-29 18:46:51 +0000192} {1 {t1.a may not be NULL}}
drhef6764a2002-01-30 04:32:00 +0000193do_test notnull-2.2 {
194 catchsql {
195 DELETE FROM t1;
196 INSERT INTO t1 VALUES(1,2,3,4,5);
drh1c928532002-01-31 15:54:21 +0000197 UPDATE OR REPLACE t1 SET a=null;
drhef6764a2002-01-30 04:32:00 +0000198 SELECT * FROM t1 ORDER BY a;
199 }
drh483750b2003-01-29 18:46:51 +0000200} {1 {t1.a may not be NULL}}
drhef6764a2002-01-30 04:32:00 +0000201do_test notnull-2.3 {
202 catchsql {
203 DELETE FROM t1;
204 INSERT INTO t1 VALUES(1,2,3,4,5);
drh1c928532002-01-31 15:54:21 +0000205 UPDATE OR IGNORE t1 SET a=null;
drhef6764a2002-01-30 04:32:00 +0000206 SELECT * FROM t1 ORDER BY a;
207 }
208} {0 {1 2 3 4 5}}
209do_test notnull-2.4 {
210 catchsql {
211 DELETE FROM t1;
212 INSERT INTO t1 VALUES(1,2,3,4,5);
drh1c928532002-01-31 15:54:21 +0000213 UPDATE OR ABORT t1 SET a=null;
drhef6764a2002-01-30 04:32:00 +0000214 SELECT * FROM t1 ORDER BY a;
215 }
drh483750b2003-01-29 18:46:51 +0000216} {1 {t1.a may not be NULL}}
drhef6764a2002-01-30 04:32:00 +0000217do_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 }
drh483750b2003-01-29 18:46:51 +0000224} {1 {t1.b may not be NULL}}
drhef6764a2002-01-30 04:32:00 +0000225do_test notnull-2.6 {
226 catchsql {
227 DELETE FROM t1;
228 INSERT INTO t1 VALUES(1,2,3,4,5);
drh1c928532002-01-31 15:54:21 +0000229 UPDATE OR REPLACE t1 SET b=null, d=e, e=d;
drhef6764a2002-01-30 04:32:00 +0000230 SELECT * FROM t1 ORDER BY a;
231 }
232} {0 {1 5 3 5 4}}
233do_test notnull-2.7 {
234 catchsql {
235 DELETE FROM t1;
236 INSERT INTO t1 VALUES(1,2,3,4,5);
drh1c928532002-01-31 15:54:21 +0000237 UPDATE OR IGNORE t1 SET b=null, d=e, e=d;
drhef6764a2002-01-30 04:32:00 +0000238 SELECT * FROM t1 ORDER BY a;
239 }
240} {0 {1 2 3 4 5}}
241do_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}}
249do_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}}
257do_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 }
drh483750b2003-01-29 18:46:51 +0000264} {1 {t1.e may not be NULL}}
drhef6764a2002-01-30 04:32:00 +0000265
266do_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} {}
276do_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}}
283do_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 }
drh483750b2003-01-29 18:46:51 +0000289} {1 {t1.a may not be NULL}}
drhef6764a2002-01-30 04:32:00 +0000290do_test notnull-3.3 {
291 catchsql {
292 DELETE FROM t1;
drh1c928532002-01-31 15:54:21 +0000293 INSERT OR IGNORE INTO t1(b,c,d,e) VALUES(2,3,4,5);
drhef6764a2002-01-30 04:32:00 +0000294 SELECT * FROM t1 order by a;
295 }
296} {0 {}}
297do_test notnull-3.4 {
298 catchsql {
299 DELETE FROM t1;
drh1c928532002-01-31 15:54:21 +0000300 INSERT OR REPLACE INTO t1(b,c,d,e) VALUES(2,3,4,5);
drhef6764a2002-01-30 04:32:00 +0000301 SELECT * FROM t1 order by a;
302 }
drh483750b2003-01-29 18:46:51 +0000303} {1 {t1.a may not be NULL}}
drhef6764a2002-01-30 04:32:00 +0000304do_test notnull-3.5 {
305 catchsql {
306 DELETE FROM t1;
drh1c928532002-01-31 15:54:21 +0000307 INSERT OR ABORT INTO t1(b,c,d,e) VALUES(2,3,4,5);
drhef6764a2002-01-30 04:32:00 +0000308 SELECT * FROM t1 order by a;
309 }
drh483750b2003-01-29 18:46:51 +0000310} {1 {t1.a may not be NULL}}
drhef6764a2002-01-30 04:32:00 +0000311do_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}}
318do_test notnull-3.7 {
319 catchsql {
320 DELETE FROM t1;
drh1c928532002-01-31 15:54:21 +0000321 INSERT OR IGNORE INTO t1(a,c,d,e) VALUES(1,3,4,5);
drhef6764a2002-01-30 04:32:00 +0000322 SELECT * FROM t1 order by a;
323 }
324} {0 {1 5 3 4 5}}
325do_test notnull-3.8 {
326 catchsql {
327 DELETE FROM t1;
drh1c928532002-01-31 15:54:21 +0000328 INSERT OR REPLACE INTO t1(a,c,d,e) VALUES(1,3,4,5);
drhef6764a2002-01-30 04:32:00 +0000329 SELECT * FROM t1 order by a;
330 }
331} {0 {1 5 3 4 5}}
332do_test notnull-3.9 {
333 catchsql {
334 DELETE FROM t1;
drh1c928532002-01-31 15:54:21 +0000335 INSERT OR ABORT INTO t1(a,c,d,e) VALUES(1,3,4,5);
drhef6764a2002-01-30 04:32:00 +0000336 SELECT * FROM t1 order by a;
337 }
338} {0 {1 5 3 4 5}}
339do_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 }
drh483750b2003-01-29 18:46:51 +0000345} {1 {t1.b may not be NULL}}
drhef6764a2002-01-30 04:32:00 +0000346do_test notnull-3.11 {
347 catchsql {
348 DELETE FROM t1;
drh1c928532002-01-31 15:54:21 +0000349 INSERT OR IGNORE INTO t1(a,b,c,d,e) VALUES(1,null,3,4,5);
drhef6764a2002-01-30 04:32:00 +0000350 SELECT * FROM t1 order by a;
351 }
352} {0 {}}
353do_test notnull-3.12 {
354 catchsql {
355 DELETE FROM t1;
drh1c928532002-01-31 15:54:21 +0000356 INSERT OR REPLACE INTO t1(a,b,c,d,e) VALUES(1,null,3,4,5);
drhef6764a2002-01-30 04:32:00 +0000357 SELECT * FROM t1 order by a;
358 }
359} {0 {1 5 3 4 5}}
360do_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}}
367do_test notnull-3.14 {
368 catchsql {
369 DELETE FROM t1;
drh1c928532002-01-31 15:54:21 +0000370 INSERT OR IGNORE INTO t1(a,b,c,d,e) VALUES(1,2,null,4,5);
drhef6764a2002-01-30 04:32:00 +0000371 SELECT * FROM t1 order by a;
372 }
373} {0 {}}
374do_test notnull-3.15 {
375 catchsql {
376 DELETE FROM t1;
drh1c928532002-01-31 15:54:21 +0000377 INSERT OR REPLACE INTO t1(a,b,c,d,e) VALUES(1,2,null,4,5);
drhef6764a2002-01-30 04:32:00 +0000378 SELECT * FROM t1 order by a;
379 }
380} {0 {1 2 6 4 5}}
381do_test notnull-3.16 {
382 catchsql {
383 DELETE FROM t1;
drh1c928532002-01-31 15:54:21 +0000384 INSERT OR ABORT INTO t1(a,b,c,d,e) VALUES(1,2,null,4,5);
drhef6764a2002-01-30 04:32:00 +0000385 SELECT * FROM t1 order by a;
386 }
drh483750b2003-01-29 18:46:51 +0000387} {1 {t1.c may not be NULL}}
drhef6764a2002-01-30 04:32:00 +0000388do_test notnull-3.17 {
389 catchsql {
390 DELETE FROM t1;
drh1c928532002-01-31 15:54:21 +0000391 INSERT OR ABORT INTO t1(a,b,c,d,e) VALUES(1,2,3,null,5);
drhef6764a2002-01-30 04:32:00 +0000392 SELECT * FROM t1 order by a;
393 }
drh483750b2003-01-29 18:46:51 +0000394} {1 {t1.d may not be NULL}}
drhef6764a2002-01-30 04:32:00 +0000395do_test notnull-3.18 {
396 catchsql {
397 DELETE FROM t1;
drh1c928532002-01-31 15:54:21 +0000398 INSERT OR ABORT INTO t1(a,b,c,e) VALUES(1,2,3,5);
drhef6764a2002-01-30 04:32:00 +0000399 SELECT * FROM t1 order by a;
400 }
401} {0 {1 2 3 7 5}}
402do_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}}
409do_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 }
drh483750b2003-01-29 18:46:51 +0000415} {1 {t1.e may not be NULL}}
drhef6764a2002-01-30 04:32:00 +0000416do_test notnull-3.21 {
417 catchsql {
418 DELETE FROM t1;
drh1c928532002-01-31 15:54:21 +0000419 INSERT OR REPLACE INTO t1(e,d,c,b,a) VALUES(1,2,3,null,5);
drhef6764a2002-01-30 04:32:00 +0000420 SELECT * FROM t1 order by a;
421 }
422} {0 {5 5 3 2 1}}
423
424do_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 }
drh483750b2003-01-29 18:46:51 +0000431} {1 {t1.a may not be NULL}}
drhef6764a2002-01-30 04:32:00 +0000432do_test notnull-4.2 {
433 catchsql {
434 DELETE FROM t1;
435 INSERT INTO t1 VALUES(1,2,3,4,5);
drh1c928532002-01-31 15:54:21 +0000436 UPDATE OR REPLACE t1 SET a=null;
drhef6764a2002-01-30 04:32:00 +0000437 SELECT * FROM t1 ORDER BY a;
438 }
drh483750b2003-01-29 18:46:51 +0000439} {1 {t1.a may not be NULL}}
drhef6764a2002-01-30 04:32:00 +0000440do_test notnull-4.3 {
441 catchsql {
442 DELETE FROM t1;
443 INSERT INTO t1 VALUES(1,2,3,4,5);
drh1c928532002-01-31 15:54:21 +0000444 UPDATE OR IGNORE t1 SET a=null;
drhef6764a2002-01-30 04:32:00 +0000445 SELECT * FROM t1 ORDER BY a;
446 }
447} {0 {1 2 3 4 5}}
448do_test notnull-4.4 {
449 catchsql {
450 DELETE FROM t1;
451 INSERT INTO t1 VALUES(1,2,3,4,5);
drh1c928532002-01-31 15:54:21 +0000452 UPDATE OR ABORT t1 SET a=null;
drhef6764a2002-01-30 04:32:00 +0000453 SELECT * FROM t1 ORDER BY a;
454 }
drh483750b2003-01-29 18:46:51 +0000455} {1 {t1.a may not be NULL}}
drhef6764a2002-01-30 04:32:00 +0000456do_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 }
drh483750b2003-01-29 18:46:51 +0000463} {1 {t1.b may not be NULL}}
drhef6764a2002-01-30 04:32:00 +0000464do_test notnull-4.6 {
465 catchsql {
466 DELETE FROM t1;
467 INSERT INTO t1 VALUES(1,2,3,4,5);
drh1c928532002-01-31 15:54:21 +0000468 UPDATE OR REPLACE t1 SET b=null, d=e, e=d;
drhef6764a2002-01-30 04:32:00 +0000469 SELECT * FROM t1 ORDER BY a;
470 }
471} {0 {1 5 3 5 4}}
472do_test notnull-4.7 {
473 catchsql {
474 DELETE FROM t1;
475 INSERT INTO t1 VALUES(1,2,3,4,5);
drh1c928532002-01-31 15:54:21 +0000476 UPDATE OR IGNORE t1 SET b=null, d=e, e=d;
drhef6764a2002-01-30 04:32:00 +0000477 SELECT * FROM t1 ORDER BY a;
478 }
479} {0 {1 2 3 4 5}}
480do_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}}
488do_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}}
496do_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 }
drh483750b2003-01-29 18:46:51 +0000503} {1 {t1.e may not be NULL}}
drhef6764a2002-01-30 04:32:00 +0000504
dan0fe60782009-09-09 11:43:43 +0000505# Test that bug 29ab7be99f is fixed.
506#
507do_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} {}
516do_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}}
522do_test notnull-5.3 {
523 execsql { SELECT * FROM t1 }
524} {1 2}
525do_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}}
534do_test notnull-5.5 {
535 execsql { SELECT * FROM t1 }
536} {1 2}
537
drhef6764a2002-01-30 04:32:00 +0000538finish_test
dan0fe60782009-09-09 11:43:43 +0000539