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