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

Unified Diff: third_party/sqlite/src/ext/fts5/test/fts5ah.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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/sqlite/src/ext/fts5/test/fts5ag.test ('k') | third_party/sqlite/src/ext/fts5/test/fts5ai.test » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/sqlite/src/ext/fts5/test/fts5ah.test
diff --git a/third_party/sqlite/src/ext/fts5/test/fts5ah.test b/third_party/sqlite/src/ext/fts5/test/fts5ah.test
index 6d7e39f79302bafd94ef68cc8aacc3cbee6998d0..b7beb5655b21e6bea925571815a64b953992b925 100644
--- a/third_party/sqlite/src/ext/fts5/test/fts5ah.test
+++ b/third_party/sqlite/src/ext/fts5/test/fts5ah.test
@@ -21,12 +21,16 @@ ifcapable !fts5 {
return
}
+foreach_detail_mode $testprefix {
+
#-------------------------------------------------------------------------
# This file contains tests for very large doclists.
#
+set Y [list]
+set W [list]
do_test 1.0 {
- execsql { CREATE VIRTUAL TABLE t1 USING fts5(a) }
+ execsql { CREATE VIRTUAL TABLE t1 USING fts5(a, detail=%DETAIL%) }
execsql { INSERT INTO t1(t1, rank) VALUES('pgsz', 128) }
set v {w w w w w w w w w w w w w w w w w w w w}
execsql { INSERT INTO t1(rowid, a) VALUES(0, $v) }
@@ -70,7 +74,12 @@ do_test 1.4 {
set nRead [reads]
execsql { SELECT rowid FROM t1 WHERE t1 MATCH 'x' }
set nReadX [expr [reads] - $nRead]
- expr $nReadX>1000
+ #puts -nonewline "(nReadX=$nReadX)"
+ if {[detail_is_full]} { set expect 1000 }
+ if {[detail_is_col]} { set expect 250 }
+ if {[detail_is_none]} { set expect 80 }
+
+ expr $nReadX>$expect
} {1}
do_test 1.5 {
@@ -87,17 +96,22 @@ foreach {tn q res} "
3 { SELECT rowid FROM t1 WHERE t1 MATCH 'x AND w' } [list $W]
4 { SELECT rowid FROM t1 WHERE t1 MATCH 'y AND x' } [list $Y]
" {
+ if {[detail_is_full]==0 && ($tn==1 || $tn==2)} continue
+
+ if {[detail_is_full]} { set ratio 8 }
+ if {[detail_is_col]} { set ratio 4 }
+ if {[detail_is_none]} { set ratio 2 }
do_test 1.6.$tn.1 {
set n [execsql_reads $q]
#puts -nonewline "(n=$n nReadX=$nReadX)"
- expr {$n < ($nReadX / 8)}
+ expr {$n < ($nReadX / $ratio)}
} {1}
do_test 1.6.$tn.2 {
set n [execsql_reads "$q ORDER BY rowid DESC"]
#puts -nonewline "(n=$n nReadX=$nReadX)"
- expr {$n < ($nReadX / 8)}
+ expr {$n < ($nReadX / $ratio)}
} {1}
do_execsql_test 1.6.$tn.3 $q [lsort -int -incr $res]
@@ -109,21 +123,26 @@ foreach {tn q res} "
# number of pages loaded from disk.
#
foreach {tn fraction tail cnt} {
- 1 0.6 {rowid > 5000} 5000
- 2 0.2 {rowid > 9000} 1000
- 3 0.2 {rowid < 1000} 999
- 4 0.2 {rowid BETWEEN 4000 AND 5000} 1001
- 5 0.6 {rowid >= 5000} 5001
- 6 0.2 {rowid >= 9000} 1001
- 7 0.2 {rowid <= 1000} 1000
- 8 0.6 {rowid > '5000'} 5000
- 9 0.2 {rowid > '9000'} 1000
+ 1 0.6 {rowid > 5000} 5000
+ 2 0.2 {rowid > 9000} 1000
+ 3 0.2 {rowid < 1000} 999
+ 4 0.2 {rowid BETWEEN 4000 AND 5000} 1001
+ 5 0.6 {rowid >= 5000} 5001
+ 6 0.2 {rowid >= 9000} 1001
+ 7 0.2 {rowid <= 1000} 1000
+ 8 0.6 {rowid > '5000'} 5000
+ 9 0.2 {rowid > '9000'} 1000
10 0.1 {rowid = 444} 1
} {
set q "SELECT rowid FROM t1 WHERE t1 MATCH 'x' AND $tail"
set n [execsql_reads $q]
set ret [llength [execsql $q]]
+ # Because the position lists for 'x' are quite long in this db, the
+ # advantage is a bit smaller in detail=none mode. Update $fraction to
+ # reflect this.
+ if {[detail_is_none] && $fraction<0.5} { set fraction [expr $fraction*2] }
+
do_test "1.7.$tn.asc.(n=$n ret=$ret)" {
expr {$n < ($fraction*$nReadX) && $ret==$cnt}
} {1}
@@ -143,6 +162,7 @@ do_execsql_test 1.8.2 {
SELECT count(*) FROM t1 WHERE t1 MATCH 'x' AND rowid < 'text';
} {10000}
+} ;# foreach_detail_mode
#db eval {SELECT rowid, fts5_decode(rowid, block) aS r FROM t1_data} {puts $r}
« no previous file with comments | « third_party/sqlite/src/ext/fts5/test/fts5ag.test ('k') | third_party/sqlite/src/ext/fts5/test/fts5ai.test » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698