persistentstorage/sqlite3api/TEST/TclScript/notnull.test
changeset 0 08ec8eefde2f
equal deleted inserted replaced
-1:000000000000 0:08ec8eefde2f
       
     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 finish_test