persistentstorage/sqlite3api/TEST/TclScript/where5.test
changeset 0 08ec8eefde2f
equal deleted inserted replaced
-1:000000000000 0:08ec8eefde2f
       
     1 # 2007 June 8
       
     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.  The
       
    12 # focus of this file is testing NULL comparisons in the WHERE clause.
       
    13 # See ticket #2404.
       
    14 #
       
    15 # $Id: where5.test,v 1.2 2007/06/08 08:43:10 drh Exp $
       
    16 
       
    17 set testdir [file dirname $argv0]
       
    18 source $testdir/tester.tcl
       
    19 
       
    20 # Build some test data
       
    21 #
       
    22 do_test where5-1.0 {
       
    23   execsql {
       
    24     CREATE TABLE t1(x TEXT);
       
    25     CREATE TABLE t2(x INTEGER);
       
    26     CREATE TABLE t3(x INTEGER PRIMARY KEY);
       
    27     INSERT INTO t1 VALUES(-1);
       
    28     INSERT INTO t1 VALUES(0);
       
    29     INSERT INTO t1 VALUES(1);
       
    30     INSERT INTO t2 SELECT * FROM t1;
       
    31     INSERT INTO t3 SELECT * FROM t2;
       
    32   }
       
    33   execsql {
       
    34     SELECT * FROM t1 WHERE x<0
       
    35   }
       
    36 } {-1}
       
    37 do_test where5-1.1 {
       
    38   execsql {
       
    39     SELECT * FROM t1 WHERE x<=0
       
    40   }
       
    41 } {-1 0}
       
    42 do_test where5-1.2 {
       
    43   execsql {
       
    44     SELECT * FROM t1 WHERE x=0
       
    45   }
       
    46 } {0}
       
    47 do_test where5-1.3 {
       
    48   execsql {
       
    49     SELECT * FROM t1 WHERE x>=0
       
    50   }
       
    51 } {0 1}
       
    52 do_test where5-1.4 {
       
    53   execsql {
       
    54     SELECT * FROM t1 WHERE x>0
       
    55   }
       
    56 } {1}
       
    57 do_test where5-1.5 {
       
    58   execsql {
       
    59     SELECT * FROM t1 WHERE x<>0
       
    60   }
       
    61 } {-1 1}
       
    62 do_test where5-1.6 {
       
    63   execsql {
       
    64     SELECT * FROM t1 WHERE x<NULL
       
    65   }
       
    66 } {}
       
    67 do_test where5-1.7 {
       
    68   execsql {
       
    69     SELECT * FROM t1 WHERE x<=NULL
       
    70   }
       
    71 } {}
       
    72 do_test where5-1.8 {
       
    73   execsql {
       
    74     SELECT * FROM t1 WHERE x=NULL
       
    75   }
       
    76 } {}
       
    77 do_test where5-1.9 {
       
    78   execsql {
       
    79     SELECT * FROM t1 WHERE x>=NULL
       
    80   }
       
    81 } {}
       
    82 do_test where5-1.10 {
       
    83   execsql {
       
    84     SELECT * FROM t1 WHERE x>NULL
       
    85   }
       
    86 } {}
       
    87 do_test where5-1.11 {
       
    88   execsql {
       
    89     SELECT * FROM t1 WHERE x!=NULL
       
    90   }
       
    91 } {}
       
    92 do_test where5-1.12 {
       
    93   execsql {
       
    94     SELECT * FROM t1 WHERE x IS NULL
       
    95   }
       
    96 } {}
       
    97 do_test where5-1.13 {
       
    98   execsql {
       
    99     SELECT * FROM t1 WHERE x IS NOT NULL
       
   100   }
       
   101 } {-1 0 1}
       
   102 
       
   103 
       
   104 do_test where5-2.0 {
       
   105   execsql {
       
   106     SELECT * FROM t2 WHERE x<0
       
   107   }
       
   108 } {-1}
       
   109 do_test where5-2.1 {
       
   110   execsql {
       
   111     SELECT * FROM t2 WHERE x<=0
       
   112   }
       
   113 } {-1 0}
       
   114 do_test where5-2.2 {
       
   115   execsql {
       
   116     SELECT * FROM t2 WHERE x=0
       
   117   }
       
   118 } {0}
       
   119 do_test where5-2.3 {
       
   120   execsql {
       
   121     SELECT * FROM t2 WHERE x>=0
       
   122   }
       
   123 } {0 1}
       
   124 do_test where5-2.4 {
       
   125   execsql {
       
   126     SELECT * FROM t2 WHERE x>0
       
   127   }
       
   128 } {1}
       
   129 do_test where5-2.5 {
       
   130   execsql {
       
   131     SELECT * FROM t2 WHERE x<>0
       
   132   }
       
   133 } {-1 1}
       
   134 do_test where5-2.6 {
       
   135   execsql {
       
   136     SELECT * FROM t2 WHERE x<NULL
       
   137   }
       
   138 } {}
       
   139 do_test where5-2.7 {
       
   140   execsql {
       
   141     SELECT * FROM t2 WHERE x<=NULL
       
   142   }
       
   143 } {}
       
   144 do_test where5-2.8 {
       
   145   execsql {
       
   146     SELECT * FROM t2 WHERE x=NULL
       
   147   }
       
   148 } {}
       
   149 do_test where5-2.9 {
       
   150   execsql {
       
   151     SELECT * FROM t2 WHERE x>=NULL
       
   152   }
       
   153 } {}
       
   154 do_test where5-2.10 {
       
   155   execsql {
       
   156     SELECT * FROM t2 WHERE x>NULL
       
   157   }
       
   158 } {}
       
   159 do_test where5-2.11 {
       
   160   execsql {
       
   161     SELECT * FROM t2 WHERE x!=NULL
       
   162   }
       
   163 } {}
       
   164 do_test where5-2.12 {
       
   165   execsql {
       
   166     SELECT * FROM t2 WHERE x IS NULL
       
   167   }
       
   168 } {}
       
   169 do_test where5-2.13 {
       
   170   execsql {
       
   171     SELECT * FROM t2 WHERE x IS NOT NULL
       
   172   }
       
   173 } {-1 0 1}
       
   174 
       
   175 
       
   176 do_test where5-3.0 {
       
   177   execsql {
       
   178     SELECT * FROM t3 WHERE x<0
       
   179   }
       
   180 } {-1}
       
   181 do_test where5-3.1 {
       
   182   execsql {
       
   183     SELECT * FROM t3 WHERE x<=0
       
   184   }
       
   185 } {-1 0}
       
   186 do_test where5-3.2 {
       
   187   execsql {
       
   188     SELECT * FROM t3 WHERE x=0
       
   189   }
       
   190 } {0}
       
   191 do_test where5-3.3 {
       
   192   execsql {
       
   193     SELECT * FROM t3 WHERE x>=0
       
   194   }
       
   195 } {0 1}
       
   196 do_test where5-3.4 {
       
   197   execsql {
       
   198     SELECT * FROM t3 WHERE x>0
       
   199   }
       
   200 } {1}
       
   201 do_test where5-3.5 {
       
   202   execsql {
       
   203     SELECT * FROM t3 WHERE x<>0
       
   204   }
       
   205 } {-1 1}
       
   206 do_test where5-3.6 {
       
   207   execsql {
       
   208     SELECT * FROM t3 WHERE x<NULL
       
   209   }
       
   210 } {}
       
   211 do_test where5-3.7 {
       
   212   execsql {
       
   213     SELECT * FROM t3 WHERE x<=NULL
       
   214   }
       
   215 } {}
       
   216 do_test where5-3.8 {
       
   217   execsql {
       
   218     SELECT * FROM t3 WHERE x=NULL
       
   219   }
       
   220 } {}
       
   221 do_test where5-3.9 {
       
   222   execsql {
       
   223     SELECT * FROM t3 WHERE x>=NULL
       
   224   }
       
   225 } {}
       
   226 do_test where5-3.10 {
       
   227   execsql {
       
   228     SELECT * FROM t3 WHERE x>NULL
       
   229   }
       
   230 } {}
       
   231 do_test where5-3.11 {
       
   232   execsql {
       
   233     SELECT * FROM t3 WHERE x!=NULL
       
   234   }
       
   235 } {}
       
   236 do_test where5-3.12 {
       
   237   execsql {
       
   238     SELECT * FROM t3 WHERE x IS NULL
       
   239   }
       
   240 } {}
       
   241 do_test where5-3.13 {
       
   242   execsql {
       
   243     SELECT * FROM t3 WHERE x IS NOT NULL
       
   244   }
       
   245 } {-1 0 1}
       
   246 
       
   247 do_test where5-4.0 {
       
   248   execsql {
       
   249     SELECT x<NULL FROM t3
       
   250   }
       
   251 } {{} {} {}}
       
   252 do_test where5-4.1 {
       
   253   execsql {
       
   254     SELECT x<=NULL FROM t3
       
   255   }
       
   256 } {{} {} {}}
       
   257 do_test where5-4.2 {
       
   258   execsql {
       
   259     SELECT x==NULL FROM t3
       
   260   }
       
   261 } {{} {} {}}
       
   262 do_test where5-4.3 {
       
   263   execsql {
       
   264     SELECT x>NULL FROM t3
       
   265   }
       
   266 } {{} {} {}}
       
   267 do_test where5-4.4 {
       
   268   execsql {
       
   269     SELECT x>=NULL FROM t3
       
   270   }
       
   271 } {{} {} {}}
       
   272 do_test where5-4.5 {
       
   273   execsql {
       
   274     SELECT x!=NULL FROM t3
       
   275   }
       
   276 } {{} {} {}}
       
   277 do_test where5-4.6 {
       
   278   execsql {
       
   279     SELECT x IS NULL FROM t3
       
   280   }
       
   281 } {0 0 0}
       
   282 do_test where5-4.7 {
       
   283   execsql {
       
   284     SELECT x IS NOT NULL FROM t3
       
   285   }
       
   286 } {1 1 1}
       
   287 
       
   288 finish_test