Home | History | Annotate | Download | only in test
      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
    289