i64 iDelta;
pIter->iRowidOffset--;
- pIter->iLeafOffset = iOff = pIter->aRowidOffset[pIter->iRowidOffset];
+ pIter->iLeafOffset = pIter->aRowidOffset[pIter->iRowidOffset];
+ fts5SegIterLoadNPos(p, pIter);
+ iOff = pIter->iLeafOffset;
if( p->pConfig->eDetail!=FTS5_DETAIL_NONE ){
- iOff += fts5GetPoslistSize(&a[iOff], &nPos, &bDummy);
- iOff += nPos;
+ iOff += pIter->nPos;
}
fts5GetVarint(&a[iOff], (u64*)&iDelta);
pIter->iRowid -= iDelta;
- fts5SegIterLoadNPos(p, pIter);
}else{
fts5SegIterReverseNewPage(p, pIter);
}
return
}
-if 1 {
+foreach_detail_mode $testprefix {
proc do_fb_test {tn sql res} {
set res2 [lsort -integer -decr $res]
uplevel [list do_execsql_test $tn.2 "$sql ORDER BY rowid DESC" $res2]
}
-# This test populates the FTS5 table containing $nEntry entries. Rows are
+# This test populates the FTS5 table with $nEntry entries. Rows are
# numbered from 0 to ($nEntry-1). The rowid for row $i is:
#
# ($iFirst + $i*$nStep)
do_fb_test $tn.4.1 { SELECT rowid FROM t1 WHERE t1 MATCH 'a AND y' } $ydoc
do_fb_test $tn.4.2 { SELECT rowid FROM t1 WHERE t1 MATCH 'y AND a' } $ydoc
- do_fb_test $tn.5.1 {
- SELECT rowid FROM t1 WHERE t1 MATCH 'a + b + c + x' } $xdoc
- do_fb_test $tn.5.2 {
- SELECT rowid FROM t1 WHERE t1 MATCH 'b + c + x + y' } $ydoc
+ if {[detail_is_full]} {
+ do_fb_test $tn.5.1 {
+ SELECT rowid FROM t1 WHERE t1 MATCH 'a + b + c + x' } $xdoc
+ do_fb_test $tn.5.2 {
+ SELECT rowid FROM t1 WHERE t1 MATCH 'b + c + x + y' } $ydoc
+ }
}
} {
do_execsql_test $tn.0 {
DROP TABLE IF EXISTS t1;
- CREATE VIRTUAL TABLE t1 USING fts5(x);
+ CREATE VIRTUAL TABLE t1 USING fts5(x, detail=%DETAIL%);
INSERT INTO t1(t1, rank) VALUES('pgsz', $pgsz);
}
execsql {
BEGIN;
DROP TABLE IF EXISTS t1;
- CREATE VIRTUAL TABLE t1 USING fts5(x);
+ CREATE VIRTUAL TABLE t1 USING fts5(x, detail=%DETAIL%);
INSERT INTO t1(t1, rank) VALUES('pgsz', 64);
INSERT INTO t1 VALUES('b a');
do_dlidx_test2 2.1 [expr 20] [expr 1<<57] [expr (1<<57) + 128]
-}
-
#--------------------------------------------------------------------
#
reset_db
db func rnddoc rnddoc
do_execsql_test 3.1 {
- CREATE VIRTUAL TABLE abc USING fts5(a);
+ CREATE VIRTUAL TABLE abc USING fts5(a, detail=%DETAIL%);
INSERT INTO abc(abc, rank) VALUES('pgsz', 32);
INSERT INTO abc VALUES ( rnddoc() );
} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16}
}
+} ;# foreach_detail_mode
+
+
finish_test
10 {abc + "" + def} {"abc" + "def"}
11 {abc "" def} {"abc" AND "def"}
12 {r+e OR w} {"r" + "e" OR "w"}
+
+ 13 {a AND b NOT c} {"a" AND ("b" NOT "c")}
+ 14 {a OR b NOT c} {"a" OR ("b" NOT "c")}
+ 15 {a NOT b AND c} {("a" NOT "b") AND "c"}
+ 16 {a NOT b OR c} {("a" NOT "b") OR "c"}
+
+ 17 {a AND b OR c} {("a" AND "b") OR "c"}
+ 18 {a OR b AND c} {"a" OR ("b" AND "c")}
+
} {
do_execsql_test 1.$tn {SELECT fts5_expr($expr)} [list $res]
}
}
}
-}
-
#-------------------------------------------------------------------------
#
reset_db
SELECT fts5_test_poslist(t1) FROM t1('b') ORDER BY rank;
} {0.0.1}
+}
+
+#-------------------------------------------------------------------------
+#
+reset_db
+do_execsql_test 15.1 {
+ CREATE VIRTUAL TABLE t1 USING fts5(x, detail=none);
+ BEGIN;
+ INSERT INTO t1(rowid, x) VALUES(1, 'sqlite');
+ INSERT INTO t1(rowid, x) VALUES(2, 'sqlite');
+ COMMIT;
+} {}
+
+do_test 15.1 {
+ execsql { INSERT INTO t1(t1) VALUES('integrity-check') }
+} {}
+
+do_test 15.2 {
+ execsql { DELETE FROM t1 }
+} {}
+
+do_execsql_test 15.3.1 {
+ SELECT rowid FROM t1('sqlite');
+} {}
+
+do_execsql_test 15.3.2 {
+ SELECT rowid FROM t1('sqlite') ORDER BY rowid DESC;
+} {}
+
+do_test 15.4 {
+ execsql { INSERT INTO t1(t1) VALUES('integrity-check') }
+} {}
+
finish_test
-C Fix\sa\sproblem\swith\sthe\sxPhraseFirstColumn()\sAPI\sin\sdetail=col\smode.\sRemove\ssome\sunused\stest\scode\sfrom\sfts5ac.test.
-D 2016-01-06T10:17:26.540
+C Fix\san\sfts5\sproblem\sinvolving\sdetail=none,\s"ORDER\sBY\srowid\sDESC"\sand\sdeleted\sitems.\sAlso\sadd\stests\sto\sverify\sthat\sthe\sdocumented\soperator\sprecedences\sare\scorrect.
+D 2016-01-06T18:53:57.055
F Makefile.in 28bcd6149e050dff35d4dcfd97e890cd387a499d
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
F Makefile.msc 5fff077fcc46de7714ed6eebb6159a4c00eab751
F ext/fts5/fts5_config.c b0ed7b0ddd785fb4d4e6f9037d357f8aa95918e6
F ext/fts5/fts5_expr.c 5d5dd3044c1a39ace6ddd1034961fd5278ffce2d
F ext/fts5/fts5_hash.c 1b113977296cf4212c6ec667d5e3f2bd18036955
-F ext/fts5/fts5_index.c 8665393f8be3ae9ed4f1033d7ce0b805108fb95c
+F ext/fts5/fts5_index.c 04fe098ffab66d9424ba4e7c0b88ce7c98748cb1
F ext/fts5/fts5_main.c cd5f6f0bf868a19e8f8ef01c7b4b86dd152f0bc7
F ext/fts5/fts5_storage.c 771dd0fda3ee513e32937a386dc2a4aa2d9ea64e
F ext/fts5/fts5_tcl.c 18e9382d8cdad4c05b49559c68494968b9b4a4fb
F ext/fts5/test/fts5corrupt2.test 26c0a39dd9ff73207e6229f83b50b21d37c7658c
F ext/fts5/test/fts5corrupt3.test a2b537c120bdd43c79c42fe2438d7b8c81fe5599
F ext/fts5/test/fts5detail.test 4e971d28e7336c61ab916fc287900355dab7054d
-F ext/fts5/test/fts5dlidx.test ecba5e62ea8b26c33829961602069c546228046d
+F ext/fts5/test/fts5dlidx.test 13871a14641017ae42f6f1055a8067bafd44cb3d
F ext/fts5/test/fts5doclist.test 8edb5b57e5f144030ed74ec00ef6fa4294fed79b
F ext/fts5/test/fts5ea.test b01e3a18cdfabbff8104a96a5242a06a68a998a0
-F ext/fts5/test/fts5eb.test 3e5869af2008cbc4ad03a175a0b6f6e58134cd43
+F ext/fts5/test/fts5eb.test 021aa80b7ac09b964249aa32ced9ee908703e4aa
F ext/fts5/test/fts5fault1.test 4b39c47ca3544615daa8a2f733b911fa08022c77
F ext/fts5/test/fts5fault2.test 28c36c843bb39ae855ba79827417ecc37f114341
F ext/fts5/test/fts5fault3.test d6e9577d4312e331a913c72931bf131704efc8f3
F ext/fts5/test/fts5restart.test c17728fdea26e7d0f617d22ad5b4b2862b994c17
F ext/fts5/test/fts5rowid.test 400384798349d658eaf06aefa1e364957d5d4821
F ext/fts5/test/fts5simple.test 2bc6451cbe887a9215f5b14ae307c70d850344c9
-F ext/fts5/test/fts5simple2.test d453e3ca100e08078a46b12547417891b326240a
+F ext/fts5/test/fts5simple2.test 843f1f7fe439ff32bf74f4fd6430632f9636ef3a
F ext/fts5/test/fts5synonym.test cf88c0a56d5ea9591e3939ef1f6e294f7f2d0671
F ext/fts5/test/fts5tokenizer.test ea4df698b35cc427ebf2ba22829d0e28386d8c89
F ext/fts5/test/fts5unicode.test fbef8d8a3b4b88470536cc57604a82ca52e51841
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P fd217fdb396cf22278a496de0e9dec7902ba8b1f
-R fb939ae0b5d34f9dd8275713b2d3d9d0
+P a4e55f73b3c81e28b917395089c0201f9a2c9178
+R 0d0b45c96327e08ac49c0cd0bf01187b
U dan
-Z ffed0e3dee313fbcc0c638ddfdf4d418
+Z 1ffb33ee956b9f5de9322a26ad6982ed
-a4e55f73b3c81e28b917395089c0201f9a2c9178
\ No newline at end of file
+8d05cfd48db1462dfd3efd502d53bd33214403fb
\ No newline at end of file