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

Side by Side Diff: third_party/sqlite/src/ext/fts5/test/fts5aa.test

Issue 2751253002: [sql] Import SQLite 3.17.0. (Closed)
Patch Set: also clang on Linux i386 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 # 2014 June 17 1 # 2014 June 17
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 #*************************************************************************
11 # This file implements regression tests for SQLite library. The 11 # This file implements regression tests for SQLite library. The
12 # focus of this script is testing the FTS5 module. 12 # focus of this script is testing the FTS5 module.
13 # 13 #
14 14
15 source [file join [file dirname [info script]] fts5_common.tcl] 15 source [file join [file dirname [info script]] fts5_common.tcl]
16 set testprefix fts5aa 16 set testprefix fts5aa
17 17
18 # If SQLITE_ENABLE_FTS5 is not defined, omit this file. 18 # If SQLITE_ENABLE_FTS5 is not defined, omit this file.
19 ifcapable !fts5 { 19 ifcapable !fts5 {
20 finish_test 20 finish_test
21 return 21 return
22 } 22 }
23 23
24 foreach_detail_mode $::testprefix {
25
24 do_execsql_test 1.0 { 26 do_execsql_test 1.0 {
25 CREATE VIRTUAL TABLE t1 USING fts5(a, b, c); 27 CREATE VIRTUAL TABLE t1 USING fts5(a, b, c);
26 SELECT name, sql FROM sqlite_master; 28 SELECT name, sql FROM sqlite_master;
27 } { 29 } {
28 t1 {CREATE VIRTUAL TABLE t1 USING fts5(a, b, c)} 30 t1 {CREATE VIRTUAL TABLE t1 USING fts5(a, b, c)}
29 t1_data {CREATE TABLE 't1_data'(id INTEGER PRIMARY KEY, block BLOB)} 31 t1_data {CREATE TABLE 't1_data'(id INTEGER PRIMARY KEY, block BLOB)}
30 t1_idx {CREATE TABLE 't1_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WIT HOUT ROWID} 32 t1_idx {CREATE TABLE 't1_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WIT HOUT ROWID}
31 t1_content {CREATE TABLE 't1_content'(id INTEGER PRIMARY KEY, c0, c1, c2)} 33 t1_content {CREATE TABLE 't1_content'(id INTEGER PRIMARY KEY, c0, c1, c2)}
32 t1_docsize {CREATE TABLE 't1_docsize'(id INTEGER PRIMARY KEY, sz BLOB)} 34 t1_docsize {CREATE TABLE 't1_docsize'(id INTEGER PRIMARY KEY, sz BLOB)}
33 t1_config {CREATE TABLE 't1_config'(k PRIMARY KEY, v) WITHOUT ROWID} 35 t1_config {CREATE TABLE 't1_config'(k PRIMARY KEY, v) WITHOUT ROWID}
34 } 36 }
35 37
36 do_execsql_test 1.1 { 38 do_execsql_test 1.1 {
37 DROP TABLE t1; 39 DROP TABLE t1;
38 SELECT name, sql FROM sqlite_master; 40 SELECT name, sql FROM sqlite_master;
39 } { 41 } {
40 } 42 }
41 43
42 #------------------------------------------------------------------------- 44 #-------------------------------------------------------------------------
43 # 45 #
44 reset_db 46
45 do_execsql_test 2.0 { 47 do_execsql_test 2.0 {
46 CREATE VIRTUAL TABLE t1 USING fts5(x,y); 48 CREATE VIRTUAL TABLE t1 USING fts5(x, y, detail=%DETAIL%);
47 } 49 }
48 do_execsql_test 2.1 { 50 do_execsql_test 2.1 {
49 INSERT INTO t1 VALUES('a b c', 'd e f'); 51 INSERT INTO t1 VALUES('a b c', 'd e f');
50 } 52 }
51 53
52 do_test 2.2 { 54 do_test 2.2 {
53 execsql { SELECT fts5_decode(id, block) FROM t1_data WHERE id==10 } 55 execsql { SELECT fts5_decode(id, block) FROM t1_data WHERE id==10 }
54 } {/{{structure} {lvl=0 nMerge=0 nSeg=1 {id=[0123456789]* leaves=1..1}}}/} 56 } {/{{structure} {lvl=0 nMerge=0 nSeg=1 {id=[0123456789]* leaves=1..1}}}/}
55 57
56 foreach w {a b c d e f} { 58 foreach w {a b c d e f} {
57 do_execsql_test 2.3.$w.asc { 59 do_execsql_test 2.3.$w.asc {
58 SELECT rowid FROM t1 WHERE t1 MATCH $w; 60 SELECT rowid FROM t1 WHERE t1 MATCH $w;
59 } {1} 61 } {1}
60 do_execsql_test 2.3.$w.desc { 62 do_execsql_test 2.3.$w.desc {
61 SELECT rowid FROM t1 WHERE t1 MATCH $w ORDER BY rowid DESC; 63 SELECT rowid FROM t1 WHERE t1 MATCH $w ORDER BY rowid DESC;
62 } {1} 64 } {1}
63 } 65 }
64 66
65 do_execsql_test 2.4 { 67 do_execsql_test 2.4 {
66 INSERT INTO t1(t1) VALUES('integrity-check'); 68 INSERT INTO t1(t1) VALUES('integrity-check');
67 } 69 }
68 70
71
69 #------------------------------------------------------------------------- 72 #-------------------------------------------------------------------------
70 # 73 #
71 reset_db 74 reset_db
72 do_execsql_test 3.0 { 75 do_execsql_test 3.0 {
73 CREATE VIRTUAL TABLE t1 USING fts5(x,y); 76 CREATE VIRTUAL TABLE t1 USING fts5(x,y, detail=%DETAIL%);
74 } 77 }
75 foreach {i x y} { 78 foreach {i x y} {
76 1 {g f d b f} {h h e i a} 79 1 {g f d b f} {h h e i a}
77 2 {f i g j e} {i j c f f} 80 2 {f i g j e} {i j c f f}
78 3 {e e i f a} {e h f d f} 81 3 {e e i f a} {e h f d f}
79 4 {h j f j i} {h a c f j} 82 4 {h j f j i} {h a c f j}
80 5 {d b j c g} {f e i b e} 83 5 {d b j c g} {f e i b e}
81 6 {a j a e e} {j d f d e} 84 6 {a j a e e} {j d f d e}
82 7 {g i j c h} {j d h c a} 85 7 {g i j c h} {j d h c a}
83 8 {j j i d d} {e e d f b} 86 8 {j j i d d} {e e d f b}
84 9 {c j j d c} {h j i f g} 87 9 {c j j d c} {h j i f g}
85 10 {b f h i a} {c f b b j} 88 10 {b f h i a} {c f b b j}
86 } { 89 } {
87 do_execsql_test 3.$i.1 { INSERT INTO t1 VALUES($x, $y) } 90 do_execsql_test 3.$i.1 { INSERT INTO t1 VALUES($x, $y) }
88 do_execsql_test 3.$i.2 { INSERT INTO t1(t1) VALUES('integrity-check') } 91 do_execsql_test 3.$i.2 { INSERT INTO t1(t1) VALUES('integrity-check') }
89 if {[set_test_counter errors]} break 92 if {[set_test_counter errors]} break
90 } 93 }
91 94
92 #------------------------------------------------------------------------- 95 #-------------------------------------------------------------------------
93 # 96 #
94 reset_db 97 reset_db
95 do_execsql_test 4.0 { 98 do_execsql_test 4.0 {
96 CREATE VIRTUAL TABLE t1 USING fts5(x,y); 99 CREATE VIRTUAL TABLE t1 USING fts5(x,y, detail=%DETAIL%);
97 INSERT INTO t1(t1, rank) VALUES('pgsz', 32); 100 INSERT INTO t1(t1, rank) VALUES('pgsz', 32);
98 } 101 }
99 foreach {i x y} { 102 foreach {i x y} {
100 1 {g f d b f} {h h e i a} 103 1 {g f d b f} {h h e i a}
101 2 {f i g j e} {i j c f f} 104 2 {f i g j e} {i j c f f}
102 3 {e e i f a} {e h f d f} 105 3 {e e i f a} {e h f d f}
103 4 {h j f j i} {h a c f j} 106 4 {h j f j i} {h a c f j}
104 5 {d b j c g} {f e i b e} 107 5 {d b j c g} {f e i b e}
105 6 {a j a e e} {j d f d e} 108 6 {a j a e e} {j d f d e}
106 7 {g i j c h} {j d h c a} 109 7 {g i j c h} {j d h c a}
107 8 {j j i d d} {e e d f b} 110 8 {j j i d d} {e e d f b}
108 9 {c j j d c} {h j i f g} 111 9 {c j j d c} {h j i f g}
109 10 {b f h i a} {c f b b j} 112 10 {b f h i a} {c f b b j}
110 } { 113 } {
111 do_execsql_test 4.$i.1 { INSERT INTO t1 VALUES($x, $y) } 114 do_execsql_test 4.$i.1 { INSERT INTO t1 VALUES($x, $y) }
112 do_execsql_test 4.$i.2 { INSERT INTO t1(t1) VALUES('integrity-check') } 115 do_execsql_test 4.$i.2 { INSERT INTO t1(t1) VALUES('integrity-check') }
113 if {[set_test_counter errors]} break 116 if {[set_test_counter errors]} break
114 } 117 }
115 118
116 #------------------------------------------------------------------------- 119 #-------------------------------------------------------------------------
117 # 120 #
118 reset_db 121 reset_db
119 do_execsql_test 5.0 { 122 do_execsql_test 5.0 {
120 CREATE VIRTUAL TABLE t1 USING fts5(x,y); 123 CREATE VIRTUAL TABLE t1 USING fts5(x,y, detail=%DETAIL%);
121 INSERT INTO t1(t1, rank) VALUES('pgsz', 32); 124 INSERT INTO t1(t1, rank) VALUES('pgsz', 32);
122 } 125 }
123 foreach {i x y} { 126 foreach {i x y} {
124 1 {dd abc abc abc abcde} {aaa dd ddd ddd aab} 127 1 {dd abc abc abc abcde} {aaa dd ddd ddd aab}
125 2 {dd aab d aaa b} {abcde c aaa aaa aaa} 128 2 {dd aab d aaa b} {abcde c aaa aaa aaa}
126 3 {abcde dd b b dd} {abc abc d abc ddddd} 129 3 {abcde dd b b dd} {abc abc d abc ddddd}
127 4 {aaa abcde dddd dddd abcde} {abc b b abcde abc} 130 4 {aaa abcde dddd dddd abcde} {abc b b abcde abc}
128 5 {aab dddd d dddd c} {ddd abcde dddd abcde c} 131 5 {aab dddd d dddd c} {ddd abcde dddd abcde c}
129 6 {ddd dd b aab abcde} {d ddddd dddd c abc} 132 6 {ddd dd b aab abcde} {d ddddd dddd c abc}
130 7 {d ddddd ddd c abcde} {c aab d abcde ddd} 133 7 {d ddddd ddd c abcde} {c aab d abcde ddd}
131 8 {abcde aaa aab c c} {ddd c dddd b aaa} 134 8 {abcde aaa aab c c} {ddd c dddd b aaa}
132 9 {abcde aab ddddd c aab} {dddd dddd b c dd} 135 9 {abcde aab ddddd c aab} {dddd dddd b c dd}
133 10 {ddd abcde dddd dd c} {dddd c c d abcde} 136 10 {ddd abcde dddd dd c} {dddd c c d abcde}
134 } { 137 } {
135 do_execsql_test 5.$i.1 { INSERT INTO t1 VALUES($x, $y) } 138 do_execsql_test 5.$i.1 { INSERT INTO t1 VALUES($x, $y) }
136 do_execsql_test 5.$i.2 { INSERT INTO t1(t1) VALUES('integrity-check') } 139 do_execsql_test 5.$i.2 { INSERT INTO t1(t1) VALUES('integrity-check') }
137 if {[set_test_counter errors]} break 140 if {[set_test_counter errors]} break
138 } 141 }
139 142
140 #------------------------------------------------------------------------- 143 #-------------------------------------------------------------------------
141 # 144 #
142 reset_db 145 reset_db
143 do_execsql_test 6.0 { 146 do_execsql_test 6.0 {
144 CREATE VIRTUAL TABLE t1 USING fts5(x,y); 147 CREATE VIRTUAL TABLE t1 USING fts5(x,y, detail=%DETAIL%);
145 INSERT INTO t1(t1, rank) VALUES('pgsz', 32); 148 INSERT INTO t1(t1, rank) VALUES('pgsz', 32);
146 } 149 }
147 150
148 do_execsql_test 6.1 { 151 do_execsql_test 6.1 {
149 INSERT INTO t1(rowid, x, y) VALUES(22, 'a b c', 'c b a'); 152 INSERT INTO t1(rowid, x, y) VALUES(22, 'a b c', 'c b a');
150 REPLACE INTO t1(rowid, x, y) VALUES(22, 'd e f', 'f e d'); 153 REPLACE INTO t1(rowid, x, y) VALUES(22, 'd e f', 'f e d');
151 } 154 }
152 155
153 do_execsql_test 6.2 { 156 do_execsql_test 6.2 {
154 INSERT INTO t1(t1) VALUES('integrity-check') 157 INSERT INTO t1(t1) VALUES('integrity-check')
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 execsql { INSERT INTO t1(t1) VALUES('integrity-check'); } 272 execsql { INSERT INTO t1(t1) VALUES('integrity-check'); }
270 } {} 273 } {}
271 if {[set_test_counter errors]} break 274 if {[set_test_counter errors]} break
272 } 275 }
273 276
274 277
275 #------------------------------------------------------------------------- 278 #-------------------------------------------------------------------------
276 # 279 #
277 reset_db 280 reset_db
278 do_execsql_test 10.0 { 281 do_execsql_test 10.0 {
279 CREATE VIRTUAL TABLE t1 USING fts5(x,y); 282 CREATE VIRTUAL TABLE t1 USING fts5(x,y, detail=%DETAIL%);
280 } 283 }
281 set d10 { 284 set d10 {
282 1 {g f d b f} {h h e i a} 285 1 {g f d b f} {h h e i a}
283 2 {f i g j e} {i j c f f} 286 2 {f i g j e} {i j c f f}
284 3 {e e i f a} {e h f d f} 287 3 {e e i f a} {e h f d f}
285 4 {h j f j i} {h a c f j} 288 4 {h j f j i} {h a c f j}
286 5 {d b j c g} {f e i b e} 289 5 {d b j c g} {f e i b e}
287 6 {a j a e e} {j d f d e} 290 6 {a j a e e} {j d f d e}
288 7 {g i j c h} {j d h c a} 291 7 {g i j c h} {j d h c a}
289 8 {j j i d d} {e e d f b} 292 8 {j j i d d} {e e d f b}
(...skipping 12 matching lines...) Expand all
302 do_execsql_test 10.3.$rowid.1 { INSERT INTO t1 VALUES($x, $y) } 305 do_execsql_test 10.3.$rowid.1 { INSERT INTO t1 VALUES($x, $y) }
303 do_execsql_test 10.3.$rowid.2 { INSERT INTO t1(t1) VALUES('integrity-check') } 306 do_execsql_test 10.3.$rowid.2 { INSERT INTO t1(t1) VALUES('integrity-check') }
304 } 307 }
305 308
306 do_execsql_test 10.4.1 { DELETE FROM t1 } 309 do_execsql_test 10.4.1 { DELETE FROM t1 }
307 do_execsql_test 10.4.2 { INSERT INTO t1(t1) VALUES('integrity-check') } 310 do_execsql_test 10.4.2 { INSERT INTO t1(t1) VALUES('integrity-check') }
308 311
309 #------------------------------------------------------------------------- 312 #-------------------------------------------------------------------------
310 # 313 #
311 do_catchsql_test 11.1 { 314 do_catchsql_test 11.1 {
312 CREATE VIRTUAL TABLE t2 USING fts5(a, b, c, rank); 315 CREATE VIRTUAL TABLE t2 USING fts5(a, b, c, rank, detail=%DETAIL%);
313 } {1 {reserved fts5 column name: rank}} 316 } {1 {reserved fts5 column name: rank}}
314 do_catchsql_test 11.2 { 317 do_catchsql_test 11.2 {
315 CREATE VIRTUAL TABLE rank USING fts5(a, b, c); 318 CREATE VIRTUAL TABLE rank USING fts5(a, b, c, detail=%DETAIL%);
316 } {1 {reserved fts5 table name: rank}} 319 } {1 {reserved fts5 table name: rank}}
317 do_catchsql_test 11.3 { 320 do_catchsql_test 11.3 {
318 CREATE VIRTUAL TABLE t2 USING fts5(a, b, c, rowid); 321 CREATE VIRTUAL TABLE t2 USING fts5(a, b, c, rowid, detail=%DETAIL%);
319 } {1 {reserved fts5 column name: rowid}} 322 } {1 {reserved fts5 column name: rowid}}
320 323
321 #------------------------------------------------------------------------- 324 #-------------------------------------------------------------------------
322 # 325 #
323 do_execsql_test 12.1 { 326 do_execsql_test 12.1 {
324 CREATE VIRTUAL TABLE t2 USING fts5(x,y); 327 CREATE VIRTUAL TABLE t2 USING fts5(x,y, detail=%DETAIL%);
325 } {} 328 } {}
326 329
327 do_catchsql_test 12.2 { 330 do_catchsql_test 12.2 {
328 SELECT t2 FROM t2 WHERE t2 MATCH '*stuff' 331 SELECT t2 FROM t2 WHERE t2 MATCH '*stuff'
329 } {1 {unknown special query: stuff}} 332 } {1 {unknown special query: stuff}}
330 333
331 do_test 12.3 { 334 do_test 12.3 {
332 set res [db eval { SELECT t2 FROM t2 WHERE t2 MATCH '* reads ' }] 335 set res [db eval { SELECT t2 FROM t2 WHERE t2 MATCH '* reads ' }]
333 string is integer $res 336 string is integer $res
334 } {1} 337 } {1}
335 338
336 #------------------------------------------------------------------------- 339 #-------------------------------------------------------------------------
337 # 340 #
338 reset_db 341 reset_db
339 do_execsql_test 13.1 { 342 do_execsql_test 13.1 {
340 CREATE VIRTUAL TABLE t1 USING fts5(x); 343 CREATE VIRTUAL TABLE t1 USING fts5(x, detail=%DETAIL%);
341 INSERT INTO t1(rowid, x) VALUES(1, 'o n e'), (2, 't w o'); 344 INSERT INTO t1(rowid, x) VALUES(1, 'o n e'), (2, 't w o');
342 } {} 345 } {}
343 346
344 do_execsql_test 13.2 { 347 do_execsql_test 13.2 {
345 SELECT rowid FROM t1 WHERE t1 MATCH 'o'; 348 SELECT rowid FROM t1 WHERE t1 MATCH 'o';
346 } {1 2} 349 } {1 2}
347 350
348 do_execsql_test 13.4 { 351 do_execsql_test 13.4 {
349 DELETE FROM t1 WHERE rowid=2; 352 DELETE FROM t1 WHERE rowid=2;
350 } {} 353 } {}
351 354
352 do_execsql_test 13.5 { 355 do_execsql_test 13.5 {
353 SELECT rowid FROM t1 WHERE t1 MATCH 'o'; 356 SELECT rowid FROM t1 WHERE t1 MATCH 'o';
354 } {1} 357 } {1}
355 358
356 do_execsql_test 13.6 { 359 do_execsql_test 13.6 {
357 SELECT rowid FROM t1 WHERE t1 MATCH '""'; 360 SELECT rowid FROM t1 WHERE t1 MATCH '""';
358 } {} 361 } {}
359 362
360 #------------------------------------------------------------------------- 363 #-------------------------------------------------------------------------
361 # 364 #
362 reset_db 365 reset_db
363 do_execsql_test 14.1 { 366 do_execsql_test 14.1 {
364 CREATE VIRTUAL TABLE t1 USING fts5(x, y); 367 CREATE VIRTUAL TABLE t1 USING fts5(x, y, detail=%DETAIL%);
365 INSERT INTO t1(t1, rank) VALUES('pgsz', 32); 368 INSERT INTO t1(t1, rank) VALUES('pgsz', 32);
366 WITH d(x,y) AS ( 369 WITH d(x,y) AS (
367 SELECT NULL, 'xyz xyz xyz xyz xyz xyz' 370 SELECT NULL, 'xyz xyz xyz xyz xyz xyz'
368 UNION ALL 371 UNION ALL
369 SELECT NULL, 'xyz xyz xyz xyz xyz xyz' FROM d 372 SELECT NULL, 'xyz xyz xyz xyz xyz xyz' FROM d
370 ) 373 )
371 INSERT INTO t1 SELECT * FROM d LIMIT 200; 374 INSERT INTO t1 SELECT * FROM d LIMIT 200;
372 } 375 }
373 376
377 do_execsql_test 15.x {
378 INSERT INTO t1(t1) VALUES('integrity-check');
379 }
380
374 do_test 14.2 { 381 do_test 14.2 {
375 set nRow 0 382 set nRow 0
376 db eval { SELECT * FROM t1 WHERE t1 MATCH 'xyz' } { 383 db eval { SELECT * FROM t1 WHERE t1 MATCH 'xyz' } {
377 db eval { 384 db eval {
378 BEGIN; 385 BEGIN;
379 CREATE TABLE t2(a, b); 386 CREATE TABLE t2(a, b);
380 ROLLBACK; 387 ROLLBACK;
381 } 388 }
382 incr nRow 389 incr nRow
383 } 390 }
(...skipping 26 matching lines...) Expand all
410 } {1 {database disk image is malformed}} 417 } {1 {database disk image is malformed}}
411 418
412 #------------------------------------------------------------------------- 419 #-------------------------------------------------------------------------
413 # 420 #
414 do_execsql_test 16.1 { 421 do_execsql_test 16.1 {
415 CREATE VIRTUAL TABLE n1 USING fts5(a); 422 CREATE VIRTUAL TABLE n1 USING fts5(a);
416 INSERT INTO n1 VALUES('a b c d'); 423 INSERT INTO n1 VALUES('a b c d');
417 } 424 }
418 425
419 proc funk {} { 426 proc funk {} {
427 db eval { UPDATE n1_config SET v=50 WHERE k='version' }
420 set fd [db incrblob main n1_data block 10] 428 set fd [db incrblob main n1_data block 10]
421 fconfigure $fd -encoding binary -translation binary 429 fconfigure $fd -encoding binary -translation binary
422 puts -nonewline $fd "\x44\x45" 430 puts -nonewline $fd "\x44\x45"
423 close $fd 431 close $fd
424 db eval { UPDATE n1_config SET v=50 WHERE k='version' }
425 } 432 }
426 db func funk funk 433 db func funk funk
427 434
435 # This test case corrupts the structure record within the first invocation
436 # of function funk(). Which used to cause the bm25() function to throw an
437 # exception. But since bm25() can now used the cached structure record,
438 # it never sees the corruption introduced by funk() and so the following
439 # statement no longer fails.
440 #
428 do_catchsql_test 16.2 { 441 do_catchsql_test 16.2 {
429 SELECT funk(), bm25(n1), funk() FROM n1 WHERE n1 MATCH 'a+b+c+d' 442 SELECT funk(), bm25(n1), funk() FROM n1 WHERE n1 MATCH 'a+b+c+d'
430 } {1 {SQL logic error or missing database}} 443 } {0 {{} -1e-06 {}}}
444 # {1 {SQL logic error or missing database}}
431 445
432 #------------------------------------------------------------------------- 446 #-------------------------------------------------------------------------
433 # 447 #
434 reset_db 448 reset_db
435 do_execsql_test 17.1 { 449 do_execsql_test 17.1 {
436 CREATE VIRTUAL TABLE b2 USING fts5(x); 450 CREATE VIRTUAL TABLE b2 USING fts5(x, detail=%DETAIL%);
437 INSERT INTO b2 VALUES('a'); 451 INSERT INTO b2 VALUES('a');
438 INSERT INTO b2 VALUES('b'); 452 INSERT INTO b2 VALUES('b');
439 INSERT INTO b2 VALUES('c'); 453 INSERT INTO b2 VALUES('c');
440 } 454 }
441 455
442 do_test 17.2 { 456 do_test 17.2 {
443 set res [list] 457 set res [list]
444 db eval { SELECT * FROM b2 ORDER BY rowid ASC } { 458 db eval { SELECT * FROM b2 ORDER BY rowid ASC } {
445 lappend res [execsql { SELECT * FROM b2 ORDER BY rowid ASC }] 459 lappend res [execsql { SELECT * FROM b2 ORDER BY rowid ASC }]
446 } 460 }
447 set res 461 set res
448 } {{a b c} {a b c} {a b c}} 462 } {{a b c} {a b c} {a b c}}
449 463
450 reset_db 464 if {[string match n* %DETAIL%]==0} {
451 do_execsql_test 18.1 { 465 reset_db
452 CREATE VIRTUAL TABLE c2 USING fts5(x, y); 466 do_execsql_test 17.3 {
453 INSERT INTO c2 VALUES('x x x', 'x x x'); 467 CREATE VIRTUAL TABLE c2 USING fts5(x, y, detail=%DETAIL%);
454 SELECT rowid FROM c2 WHERE c2 MATCH 'y:x'; 468 INSERT INTO c2 VALUES('x x x', 'x x x');
455 } {1} 469 SELECT rowid FROM c2 WHERE c2 MATCH 'y:x';
470 } {1}
471 }
456 472
457 #------------------------------------------------------------------------- 473 #-------------------------------------------------------------------------
458 # 474 #
459 reset_db 475 reset_db
460 do_execsql_test 17.1 { 476 do_execsql_test 17.1 {
461 CREATE VIRTUAL TABLE uio USING fts5(ttt); 477 CREATE VIRTUAL TABLE uio USING fts5(ttt, detail=%DETAIL%);
462 INSERT INTO uio VALUES(NULL); 478 INSERT INTO uio VALUES(NULL);
463 INSERT INTO uio SELECT NULL FROM uio; 479 INSERT INTO uio SELECT NULL FROM uio;
464 INSERT INTO uio SELECT NULL FROM uio; 480 INSERT INTO uio SELECT NULL FROM uio;
465 INSERT INTO uio SELECT NULL FROM uio; 481 INSERT INTO uio SELECT NULL FROM uio;
466 INSERT INTO uio SELECT NULL FROM uio; 482 INSERT INTO uio SELECT NULL FROM uio;
467 INSERT INTO uio SELECT NULL FROM uio; 483 INSERT INTO uio SELECT NULL FROM uio;
468 INSERT INTO uio SELECT NULL FROM uio; 484 INSERT INTO uio SELECT NULL FROM uio;
469 INSERT INTO uio SELECT NULL FROM uio; 485 INSERT INTO uio SELECT NULL FROM uio;
470 INSERT INTO uio SELECT NULL FROM uio; 486 INSERT INTO uio SELECT NULL FROM uio;
471 SELECT count(*) FROM uio; 487 SELECT count(*) FROM uio;
(...skipping 26 matching lines...) Expand all
498 SELECT min(rowid), max(rowid), count(*) FROM uio; 514 SELECT min(rowid), max(rowid), count(*) FROM uio;
499 } {-9223372036854775808 9223372036854775807 259} 515 } {-9223372036854775808 9223372036854775807 259}
500 516
501 do_execsql_test 17.9 { 517 do_execsql_test 17.9 {
502 SELECT min(rowid), max(rowid), count(*) FROM uio WHERE rowid < 10; 518 SELECT min(rowid), max(rowid), count(*) FROM uio WHERE rowid < 10;
503 } {-9223372036854775808 9 10} 519 } {-9223372036854775808 9 10}
504 520
505 #-------------------------------------------------------------------- 521 #--------------------------------------------------------------------
506 # 522 #
507 do_execsql_test 18.1 { 523 do_execsql_test 18.1 {
508 CREATE VIRTUAL TABLE t1 USING fts5(a, b); 524 CREATE VIRTUAL TABLE t1 USING fts5(a, b, detail=%DETAIL%);
509 CREATE VIRTUAL TABLE t2 USING fts5(c, d); 525 CREATE VIRTUAL TABLE t2 USING fts5(c, d, detail=%DETAIL%);
510 INSERT INTO t1 VALUES('abc*', NULL); 526 INSERT INTO t1 VALUES('abc*', NULL);
511 INSERT INTO t2 VALUES(1, 'abcdefg'); 527 INSERT INTO t2 VALUES(1, 'abcdefg');
512 } 528 }
513 do_execsql_test 18.2 { 529 do_execsql_test 18.2 {
514 SELECT t1.rowid, t2.rowid FROM t1, t2 WHERE t2 MATCH t1.a AND t1.rowid = t2.c 530 SELECT t1.rowid, t2.rowid FROM t1, t2 WHERE t2 MATCH t1.a AND t1.rowid = t2.c
515 } {1 1} 531 } {1 1}
516 do_execsql_test 18.3 { 532 do_execsql_test 18.3 {
517 SELECT t1.rowid, t2.rowid FROM t2, t1 WHERE t2 MATCH t1.a AND t1.rowid = t2.c 533 SELECT t1.rowid, t2.rowid FROM t2, t1 WHERE t2 MATCH t1.a AND t1.rowid = t2.c
518 } {1 1} 534 } {1 1}
519 535
520 #-------------------------------------------------------------------- 536 #--------------------------------------------------------------------
521 # fts5 table in the temp schema. 537 # fts5 table in the temp schema.
522 # 538 #
523 reset_db 539 reset_db
524 do_execsql_test 19.0 { 540 do_execsql_test 19.0 {
525 CREATE VIRTUAL TABLE temp.t1 USING fts5(x); 541 CREATE VIRTUAL TABLE temp.t1 USING fts5(x, detail=%DETAIL%);
526 INSERT INTO t1 VALUES('x y z'); 542 INSERT INTO t1 VALUES('x y z');
527 INSERT INTO t1 VALUES('w x 1'); 543 INSERT INTO t1 VALUES('w x 1');
528 SELECT rowid FROM t1 WHERE t1 MATCH 'x'; 544 SELECT rowid FROM t1 WHERE t1 MATCH 'x';
529 } {1 2} 545 } {1 2}
530 546
531 #-------------------------------------------------------------------- 547 #--------------------------------------------------------------------
532 # Test that 6 and 7 byte varints can be read. 548 # Test that 6 and 7 byte varints can be read.
533 # 549 #
534 reset_db 550 reset_db
535 do_execsql_test 20.0 { 551 do_execsql_test 20.0 {
536 CREATE VIRTUAL TABLE temp.tmp USING fts5(x); 552 CREATE VIRTUAL TABLE temp.tmp USING fts5(x, detail=%DETAIL%);
537 } 553 }
538 set ::ids [list \ 554 set ::ids [list \
539 0 [expr 1<<36] [expr 2<<36] [expr 1<<43] [expr 2<<43] 555 0 [expr 1<<36] [expr 2<<36] [expr 1<<43] [expr 2<<43]
540 ] 556 ]
541 do_test 20.1 { 557 do_test 20.1 {
542 foreach id $::ids { 558 foreach id $::ids {
543 execsql { INSERT INTO tmp(rowid, x) VALUES($id, 'x y z') } 559 execsql { INSERT INTO tmp(rowid, x) VALUES($id, 'x y z') }
544 } 560 }
545 execsql { SELECT rowid FROM tmp WHERE tmp MATCH 'y' } 561 execsql { SELECT rowid FROM tmp WHERE tmp MATCH 'y' }
546 } $::ids 562 } $::ids
547 563
564 }
548 565
549 566
550 finish_test 567 finish_test
551 568
552 569
OLDNEW
« no previous file with comments | « third_party/sqlite/src/ext/fts5/test/fts5_common.tcl ('k') | third_party/sqlite/src/ext/fts5/test/fts5ab.test » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698