| OLD | NEW | 
 | (Empty) | 
|    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  |  | 
| OLD | NEW |