Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(267)

Side by Side Diff: third_party/sqlite/src/test/whereD.test

Issue 2765553002: [sql] Import SQLite 3.17.0. (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 # 2012 August 24 1 # 2012 August 24
2 # 2 #
3 # The author disclaims copyright to this source code. In place of 3 # The author disclaims copyright to this source code. In place of
4 # a legal notice, here is a blessing: 4 # a legal notice, here is a blessing:
5 # 5 #
6 # May you do good and not evil. 6 # May you do good and not evil.
7 # May you find forgiveness for yourself and forgive others. 7 # May you find forgiveness for yourself and forgive others.
8 # May you share freely, never taking more than you give. 8 # May you share freely, never taking more than you give.
9 # 9 #
10 #*********************************************************************** 10 #***********************************************************************
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 OR (a=1 AND b=(SELECT y FROM t4 WHERE x='a')) 149 OR (a=1 AND b=(SELECT y FROM t4 WHERE x='a'))
150 } {2 two 1 one search 6} 150 } {2 two 1 one search 6}
151 do_searchcount_test 3.4.4 { 151 do_searchcount_test 3.4.4 {
152 SELECT a, b FROM t3 WHERE 152 SELECT a, b FROM t3 WHERE
153 (a=2 AND b=(SELECT y FROM t4 WHERE x='b')) 153 (a=2 AND b=(SELECT y FROM t4 WHERE x='b'))
154 OR (a=1 AND b=(SELECT y FROM t4 WHERE x='a')) 154 OR (a=1 AND b=(SELECT y FROM t4 WHERE x='a'))
155 } {2 two 1 one search 8} 155 } {2 two 1 one search 8}
156 156
157 do_searchcount_test 3.5.1 { 157 do_searchcount_test 3.5.1 {
158 SELECT a, b FROM t3 WHERE (a=1 AND b='one') OR rowid=4 158 SELECT a, b FROM t3 WHERE (a=1 AND b='one') OR rowid=4
159 } {1 one 2 two search 3} 159 } {1 one 2 two search 2}
160 do_searchcount_test 3.5.2 { 160 do_searchcount_test 3.5.2 {
161 SELECT a, c FROM t3 WHERE (a=1 AND b='one') OR rowid=4 161 SELECT a, c FROM t3 WHERE (a=1 AND b='one') OR rowid=4
162 } {1 i 2 ii search 3} 162 } {1 i 2 ii search 3}
163 163
164 # Ticket [d02e1406a58ea02d] (2012-10-04) 164 # Ticket [d02e1406a58ea02d] (2012-10-04)
165 # LEFT JOIN with an OR in the ON clause causes segfault 165 # LEFT JOIN with an OR in the ON clause causes segfault
166 # 166 #
167 do_test 4.1 { 167 do_test 4.1 {
168 db eval { 168 db eval {
169 CREATE TABLE t41(a,b,c); 169 CREATE TABLE t41(a,b,c);
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
264 DELETE FROM t; 264 DELETE FROM t;
265 INSERT INTO t(c0,c15) VALUES(1,1); 265 INSERT INTO t(c0,c15) VALUES(1,1);
266 SELECT * FROM t WHERE 266 SELECT * FROM t WHERE
267 c0=1 or c1=1 or c2=1 or c3=1 or 267 c0=1 or c1=1 or c2=1 or c3=1 or
268 c4=1 or c5=1 or c6=1 or c7=1 or 268 c4=1 or c5=1 or c6=1 or c7=1 or
269 c8=1 or c9=1 or c10=1 or c11=1 or 269 c8=1 or c9=1 or c10=1 or c11=1 or
270 c12=1 or c13=1 or c14=1 or c15=1 or 270 c12=1 or c13=1 or c14=1 or c15=1 or
271 c16=1 or c17=1; 271 c16=1 or c17=1;
272 } {1 {} {} {} {} {} {} {} {} {} {} {} {} {} {} 1 {} {}} 272 } {1 {} {} {} {} {} {} {} {} {} {} {} {} {} {} 1 {} {}}
273 273
274 #-------------------------------------------------------------------------
275 do_execsql_test 6.1 {
276 CREATE TABLE x1(a, b, c, d, e);
277 CREATE INDEX x1a ON x1(a);
278 CREATE INDEX x1bc ON x1(b, c);
279 CREATE INDEX x1cd ON x1(c, d);
280
281 INSERT INTO x1 VALUES(1, 2, 3, 4, 'A');
282 INSERT INTO x1 VALUES(5, 6, 7, 8, 'B');
283 INSERT INTO x1 VALUES(9, 10, 11, 12, 'C');
284 INSERT INTO x1 VALUES(13, 14, 15, 16, 'D');
285 }
286
287 do_searchcount_test 6.2.1 {
288 SELECT e FROM x1 WHERE b=2 OR c=7;
289 } {A B search 6}
290 do_searchcount_test 6.2.2 {
291 SELECT c FROM x1 WHERE b=2 OR c=7;
292 } {3 7 search 4}
293
294 do_searchcount_test 6.3.1 {
295 SELECT e FROM x1 WHERE a=1 OR b=10;
296 } {A C search 6}
297 do_searchcount_test 6.3.2 {
298 SELECT c FROM x1 WHERE a=1 OR b=10;
299 } {3 11 search 5}
300 do_searchcount_test 6.3.3 {
301 SELECT rowid FROM x1 WHERE a=1 OR b=10;
302 } {1 3 search 4}
303
304 do_searchcount_test 6.4.1 {
305 SELECT a FROM x1 WHERE b BETWEEN 1 AND 4 OR c BETWEEN 8 AND 12
306 } {1 9 search 6}
307 do_searchcount_test 6.4.2 {
308 SELECT b, c FROM x1 WHERE b BETWEEN 1 AND 4 OR c BETWEEN 8 AND 12
309 } {2 3 10 11 search 5}
310 do_searchcount_test 6.4.3 {
311 SELECT rowid, c FROM x1 WHERE b BETWEEN 1 AND 4 OR c BETWEEN 8 AND 12
312 } {1 3 3 11 search 4}
313
314 do_searchcount_test 6.5.1 {
315 SELECT a FROM x1 WHERE rowid = 2 OR c=11
316 } {5 9 search 3}
317 do_searchcount_test 6.5.2 {
318 SELECT d FROM x1 WHERE rowid = 2 OR c=11
319 } {8 12 search 2}
320 do_searchcount_test 6.5.3 {
321 SELECT d FROM x1 WHERE c=11 OR rowid = 2
322 } {12 8 search 2}
323 do_searchcount_test 6.5.4 {
324 SELECT a FROM x1 WHERE c=11 OR rowid = 2
325 } {9 5 search 3}
326
327 do_searchcount_test 6.6.1 {
328 SELECT rowid FROM x1 WHERE a=1 OR b=6 OR c=11
329 } {1 2 3 search 6}
330 do_searchcount_test 6.6.2 {
331 SELECT c FROM x1 WHERE a=1 OR b=6 OR c=11
332 } {3 7 11 search 7}
333 do_searchcount_test 6.6.3 {
334 SELECT c FROM x1 WHERE c=11 OR a=1 OR b=6
335 } {11 3 7 search 7}
336 do_searchcount_test 6.6.4 {
337 SELECT c FROM x1 WHERE b=6 OR c=11 OR a=1
338 } {7 11 3 search 7}
339
340 #-------------------------------------------------------------------------
341 #
342 do_execsql_test 7.0 {
343 CREATE TABLE y1(a, b);
344 CREATE TABLE y2(x, y);
345 CREATE INDEX y2xy ON y2(x, y);
346 INSERT INTO y1 VALUES(1, 1);
347 INSERT INTO y2 VALUES(3, 3);
348 }
349
350 do_execsql_test 7.1 {
351 SELECT * FROM y1 LEFT JOIN y2 ON ((x=1 AND y=b) OR (x=2 AND y=b))
352 } {1 1 {} {}}
353
354 do_execsql_test 7.3 {
355 CREATE TABLE foo (Id INTEGER PRIMARY KEY, fa INTEGER, fb INTEGER);
356 CREATE TABLE bar (Id INTEGER PRIMARY KEY, ba INTEGER, bb INTEGER);
357
358 INSERT INTO foo VALUES(1, 1, 1);
359 INSERT INTO foo VALUES(2, 1, 2);
360 INSERT INTO foo VALUES(3, 1, 3);
361 INSERT INTO foo VALUES(4, 1, 4);
362 INSERT INTO foo VALUES(5, 1, 5);
363 INSERT INTO foo VALUES(6, 1, 6);
364 INSERT INTO foo VALUES(7, 1, 7);
365 INSERT INTO foo VALUES(8, 1, 8);
366 INSERT INTO foo VALUES(9, 1, 9);
367
368 INSERT INTO bar VALUES(NULL, 1, 1);
369 INSERT INTO bar VALUES(NULL, 2, 2);
370 INSERT INTO bar VALUES(NULL, 3, 3);
371 INSERT INTO bar VALUES(NULL, 1, 4);
372 INSERT INTO bar VALUES(NULL, 2, 5);
373 INSERT INTO bar VALUES(NULL, 3, 6);
374 INSERT INTO bar VALUES(NULL, 1, 7);
375 INSERT INTO bar VALUES(NULL, 2, 8);
376 INSERT INTO bar VALUES(NULL, 3, 9);
377 }
378
379 do_execsql_test 7.4 {
380 SELECT
381 bar.Id, bar.ba, bar.bb, foo.fb
382 FROM foo LEFT JOIN bar
383 ON (bar.ba = 1 AND bar.bb = foo.fb)
384 OR (bar.ba = 5 AND bar.bb = foo.fb);
385 } {
386 1 1 1 1
387 {} {} {} 2
388 {} {} {} 3
389 4 1 4 4
390 {} {} {} 5
391 {} {} {} 6
392 7 1 7 7
393 {} {} {} 8
394 {} {} {} 9
395 }
396
397 do_execsql_test 7.5 {
398 CREATE INDEX idx_bar ON bar(ba, bb);
399 SELECT
400 bar.Id, bar.ba, bar.bb, foo.fb
401 FROM foo LEFT JOIN bar
402 ON (bar.ba = 1 AND bar.bb = foo.fb)
403 OR (bar.ba = 5 AND bar.bb = foo.fb);
404 } {
405 1 1 1 1
406 {} {} {} 2
407 {} {} {} 3
408 4 1 4 4
409 {} {} {} 5
410 {} {} {} 6
411 7 1 7 7
412 {} {} {} 8
413 {} {} {} 9
414 }
415
274 416
275 finish_test 417 finish_test
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698