Use doclist-indexes with "ORDER BY rowid ASC" fts5 queries as well.
FossilOrigin-Name: d028ba6589f3122b635474c2683c0f93d5bc6c7c
This commit is contained in:
+2
-1
@@ -148,6 +148,7 @@ do_execsql_test 6.2 {
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
reset_db
|
||||
expr srand(0)
|
||||
do_execsql_test 7.0 {
|
||||
CREATE VIRTUAL TABLE t1 USING fts5(x,y,z);
|
||||
INSERT INTO t1(t1) VALUES('pgsz=32');
|
||||
@@ -173,7 +174,7 @@ proc dump_structure {} {
|
||||
|
||||
for {set i 1} {$i <= 10} {incr i} {
|
||||
do_test 7.$i {
|
||||
for {set j 0} {$j < 100} {incr j} {
|
||||
for {set j 0} {$j < 10} {incr j} {
|
||||
set x [doc]
|
||||
set y [doc]
|
||||
set z [doc]
|
||||
|
||||
@@ -364,6 +364,10 @@ foreach {tn expr tclexpr} {
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
do_execsql_test 6.integrity {
|
||||
INSERT INTO xx(xx) VALUES('integrity-check');
|
||||
}
|
||||
#db eval {SELECT rowid, fts5_decode(rowid, block) aS r FROM xx_data} {puts $r}
|
||||
foreach {bAsc sql} {
|
||||
0 {SELECT rowid FROM xx WHERE xx MATCH $expr}
|
||||
1 {SELECT rowid FROM xx WHERE xx MATCH $expr ORDER BY rowid ASC}
|
||||
|
||||
+20
-10
@@ -53,6 +53,12 @@ proc reads {} {
|
||||
db one {SELECT t1 FROM t1 WHERE t1 MATCH '*reads'}
|
||||
}
|
||||
|
||||
proc execsql_reads {sql} {
|
||||
set nRead [reads]
|
||||
execsql $sql
|
||||
expr [reads] - $nRead
|
||||
}
|
||||
|
||||
do_test 1.4 {
|
||||
set nRead [reads]
|
||||
execsql { SELECT rowid FROM t1 WHERE t1 MATCH 'x' }
|
||||
@@ -60,6 +66,14 @@ do_test 1.4 {
|
||||
expr $nReadX>1000
|
||||
} {1}
|
||||
|
||||
do_test 1.5 {
|
||||
set fwd [execsql_reads {SELECT rowid FROM t1 WHERE t1 MATCH 'x' }]
|
||||
set bwd [execsql_reads {
|
||||
SELECT rowid FROM t1 WHERE t1 MATCH 'x' ORDER BY 1 ASC
|
||||
}]
|
||||
expr {$bwd < $fwd + 10}
|
||||
} {1}
|
||||
|
||||
foreach {tn q res} "
|
||||
1 { SELECT rowid FROM t1 WHERE t1 MATCH 'w + x' } [list $W]
|
||||
2 { SELECT rowid FROM t1 WHERE t1 MATCH 'x + w' } [list $W]
|
||||
@@ -67,22 +81,18 @@ foreach {tn q res} "
|
||||
4 { SELECT rowid FROM t1 WHERE t1 MATCH 'y AND x' } [list $Y]
|
||||
" {
|
||||
|
||||
do_test 1.5.$tn.1 {
|
||||
set nRead [reads]
|
||||
execsql $q
|
||||
set n [expr [reads] - $nRead]
|
||||
do_test 1.6.$tn.1 {
|
||||
set n [execsql_reads $q]
|
||||
expr {$n < ($nReadX / 10)}
|
||||
} {1}
|
||||
|
||||
do_test 1.5.$tn.2 {
|
||||
set nRead [reads]
|
||||
execsql "$q ORDER BY rowid ASC"
|
||||
set n [expr [reads] - $nRead]
|
||||
do_test 1.6.$tn.2 {
|
||||
set n [execsql_reads "$q ORDER BY rowid ASC"]
|
||||
expr {$n < ($nReadX / 10)}
|
||||
} {1}
|
||||
|
||||
do_execsql_test 1.5.$tn.3 $q [lsort -int -decr $res]
|
||||
do_execsql_test 1.5.$tn.4 "$q ORDER BY rowid ASC" [lsort -int -incr $res]
|
||||
do_execsql_test 1.6.$tn.3 $q [lsort -int -decr $res]
|
||||
do_execsql_test 1.6.$tn.4 "$q ORDER BY rowid ASC" [lsort -int -incr $res]
|
||||
}
|
||||
|
||||
#db eval {SELECT rowid, fts5_decode(rowid, block) aS r FROM t1_data} {puts $r}
|
||||
|
||||
Reference in New Issue
Block a user