]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add tests to cover untested branches in recent fts5 changes.
authordan <dan@noemail.net>
Thu, 10 Mar 2016 15:12:47 +0000 (15:12 +0000)
committerdan <dan@noemail.net>
Thu, 10 Mar 2016 15:12:47 +0000 (15:12 +0000)
FossilOrigin-Name: fa0033edf6ddf3c6631fa95b343225dbc8ac9429

ext/fts5/fts5_index.c
ext/fts5/test/fts5config.test
ext/fts5/test/fts5fault8.test
ext/fts5/test/fts5merge.test
ext/fts5/test/fts5optimize.test
manifest
manifest.uuid

index fc6c8e0f9bba0d13db8894a38f80f5f534a81c23..323e6cefdc6e2f59ca2e3aacc1ba8c81a701f150 100644 (file)
@@ -4553,11 +4553,10 @@ int sqlite3Fts5IndexOptimize(Fts5Index *p){
   }
   fts5StructureRelease(pStruct);
 
-  if( pNew && pNew->nSegment>0 ){
+  assert( pNew==0 || pNew->nSegment>0 );
+  if( pNew ){
     int iLvl;
-    for(iLvl=0; iLvl<pNew->nLevel; iLvl++){
-      if( pNew->aLevel[iLvl].nSeg ) break;
-    }
+    for(iLvl=0; pNew->aLevel[iLvl].nSeg==0; iLvl++){}
     while( p->rc==SQLITE_OK && pNew->aLevel[iLvl].nSeg>0 ){
       int nRem = FTS5_OPT_WORK_UNIT;
       fts5IndexMergeLevel(p, &pNew, iLvl, &nRem);
index c30a5972425744276e0e7c1bac9506995e0c4fe5..386d112e7daf3c591d8da3c5111f2e982596c04d 100644 (file)
@@ -247,5 +247,21 @@ do_catchsql_test 12.1 {
   INSERT INTO t1(t1, rank) VALUES('rank', NULL);;
 } {1 {SQL logic error or missing database}}
 
+#-------------------------------------------------------------------------
+# errors in the 'usermerge' option
+#
+do_execsql_test 13.0 {
+  CREATE VIRTUAL TABLE tt USING fts5(ttt);
+}
+foreach {tn val} {
+  1     -1
+  2     4.2
+  3     17
+  4     1
+} {
+  set sql "INSERT INTO tt(tt, rank) VALUES('usermerge', $val)"
+  do_catchsql_test 13.$tn $sql {1 {SQL logic error or missing database}}
+}
+
 finish_test
 
index ae5849495bfe4bca90df24f3a400743dff3c35d8..c613490e540cb3799961f09984b7389a20666c34 100644 (file)
@@ -54,7 +54,32 @@ foreach_detail_mode $testprefix {
       faultsim_test_result {0 {1 3}} {1 SQLITE_NOMEM}
     }
   }
+
 } ;# foreach_detail_mode...
 
+
+do_execsql_test 4.0 {
+  CREATE VIRTUAL TABLE x2 USING fts5(a);
+  INSERT INTO x2(x2, rank) VALUES('crisismerge', 2);
+  INSERT INTO x2(x2, rank) VALUES('pgsz', 32);
+  INSERT INTO x2 VALUES('a b c d');
+  INSERT INTO x2 VALUES('e f g h');
+  INSERT INTO x2 VALUES('i j k l');
+  INSERT INTO x2 VALUES('m n o p');
+  INSERT INTO x2 VALUES('q r s t');
+  INSERT INTO x2 VALUES('u v w x');
+  INSERT INTO x2 VALUES('y z a b');
+}
+faultsim_save_and_close
+
+do_faultsim_test 4 -faults oom-* -prep {
+  faultsim_restore_and_reopen
+} -body {
+  execsql { INSERT INTO x2(x2) VALUES('optimize') }
+} -test {
+  faultsim_test_result {0 {}} {1 SQLITE_NOMEM}
+}
+
+
 finish_test
 
index 48e3dce933e2e0f38f92dc118179e0cfdc7e1ef8..73e006a7d2ce5d3c082b941f2cd1c2f77e23f720 100644 (file)
@@ -220,6 +220,25 @@ do_test 5.2 {
 } {}
 
 
+#--------------------------------------------------------------------------
+# Test that running 'merge' on an empty database does not cause a 
+# problem.
+#
+reset_db
+do_execsql_test 6.0 {
+  CREATE VIRTUAL TABLE g1 USING fts5(a, b);
+}
+do_execsql_test 6.1 {
+  INSERT INTO g1(g1, rank) VALUES('merge', 10);
+}
+do_execsql_test 6.2 {
+  INSERT INTO g1(g1, rank) VALUES('merge', -10);
+}
+do_execsql_test 6.3 {
+  INSERT INTO g1(g1) VALUES('integrity-check');
+}
+
+
 
 finish_test
 
index 48d4e1dd365287a4e3c14d205027ff00084a8aaa..3ef6d8a1656e1238eb656136ba60ab6abaa541a4 100644 (file)
@@ -20,6 +20,12 @@ ifcapable !fts5 {
   return
 }
 
+#
+# 1.* - Warm body tests for index optimization using ('optimize')
+#
+# 2.* - Warm body tests for index optimization using ('merge', -1)
+#
+
 proc rnddoc {nWord} {
   set vocab {a b c d e f g h i j k l m n o p q r s t u v w x y z}
   set nVocab [llength $vocab]
@@ -30,7 +36,6 @@ proc rnddoc {nWord} {
   return $ret
 }
 
-
 foreach {tn nStep} {
   1 2
   2 10
@@ -100,6 +105,5 @@ foreach {tn nStep} {
 
   do_test 2.$tn.6 { fts5_segcount t1 } 1
 }
-
 finish_test
 
index 18172bf6eb7ef4b3f33b8800f1fa8474709eb008..238a295d30e07a035a327becff01acba502c3317 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Use\s#ifdefs\sto\sremove\scode\sthat\sis\sunreachable\sin\ssome\sconfigurations,\sreplacing\nit\swith\san\sassert().
-D 2016-03-10T14:28:24.490
+C Add\stests\sto\scover\suntested\sbranches\sin\srecent\sfts5\schanges.
+D 2016-03-10T15:12:47.687
 F Makefile.in f53429fb2f313c099283659d0df6f20f932c861f
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc df0bf9ff7f8b3f4dd9fb4cc43f92fe58f6ec5c66
@@ -104,7 +104,7 @@ F ext/fts5/fts5_buffer.c 4c1502d4c956cd092c89ce4480867f9d8bf325cd
 F ext/fts5/fts5_config.c abd3ae1107ca8b8def7445a0a3b70c2e46d05986
 F ext/fts5/fts5_expr.c 8e8e4635f655133eb39018072fc0f0942a2c4337
 F ext/fts5/fts5_hash.c f3a7217c86eb8f272871be5f6aa1b6798960a337
-F ext/fts5/fts5_index.c 8def6f0ac63b960634674d9dc844244f39b4f25d
+F ext/fts5/fts5_index.c d4f0c12e4f04bbc3a06b6da052039f2ce3e45438
 F ext/fts5/fts5_main.c b8501e1a6a11591c53b18ce7aea7e5386cfb0421
 F ext/fts5/fts5_storage.c f8343db90d8c95a4d4b52f6676e354b4649ffd6e
 F ext/fts5/fts5_tcl.c f8731e0508299bd43f1a2eff7dbeaac870768966
@@ -136,7 +136,7 @@ F ext/fts5/test/fts5auxdata.test 141a7cbffcceb1bd2799b4b29c183ff8780d586e
 F ext/fts5/test/fts5bigpl.test 04ee0d7eebbebf17c31f5a0b5c5f9494eac3a0cb
 F ext/fts5/test/fts5bigtok.test 017a9397b14e7598883a6328ead4a6539b42d59a
 F ext/fts5/test/fts5columnsize.test a8cfef21ffa1c264b9f670a7d94eeaccb5341c07
-F ext/fts5/test/fts5config.test 8b2bc6dcc0eb06fa2b7dd65b2ce2db09e829e873
+F ext/fts5/test/fts5config.test 7788b9c058074d640dfcdd81d97b6a9480000368
 F ext/fts5/test/fts5conflict.test 26f4e46c4d31e16221794832a990dc4e30e18de5
 F ext/fts5/test/fts5content.test 9a952c95518a14182dc3b59e3c8fa71cda82a4e1
 F ext/fts5/test/fts5corrupt.test c2ad090192708150d50d961278df10ae7a4b8b62
@@ -154,7 +154,7 @@ F ext/fts5/test/fts5fault4.test 532b6dacb963016cbf7003196bd87fb366540277
 F ext/fts5/test/fts5fault5.test 10c13a783de3f42a21e3e53e123b62ed0c3a1618
 F ext/fts5/test/fts5fault6.test 9682664d679643ac6736e90c225526cc84073cda
 F ext/fts5/test/fts5fault7.test cb14ea3c1f42394f06f2284abc58eecee6ff8080
-F ext/fts5/test/fts5fault8.test 430837fe6dd0511fd3aea52bd602ac02441bcb58
+F ext/fts5/test/fts5fault8.test 6785af34bd1760de74e2824ea9c161965af78f85
 F ext/fts5/test/fts5fault9.test e10e395428a9ea0596ebe752ff7123d16ab78e08
 F ext/fts5/test/fts5faultA.test fa5d59c0ff62b7125cd14eee38ded1c46e15a7ea
 F ext/fts5/test/fts5faultB.test 92ae906284062bf081b6c854afa54dcb1aa9ef88
@@ -162,11 +162,11 @@ F ext/fts5/test/fts5full.test 6f6143af0c6700501d9fd597189dfab1555bb741
 F ext/fts5/test/fts5hash.test 06f9309ccb4d5050a131594e9e47d0b21456837d
 F ext/fts5/test/fts5integrity.test f5e4f8d284385875068ad0f3e894ce43e9de835d
 F ext/fts5/test/fts5matchinfo.test f7dde99697bcb310ea8faa8eb2714d9f4dfc0e1b
-F ext/fts5/test/fts5merge.test 9e04a16963e32bf7c51835ce23e58325bbdfb35f
+F ext/fts5/test/fts5merge.test 9f65f090d214ff865c56bef4f864aaa1182af6e3
 F ext/fts5/test/fts5merge2.test a6da3c16d694235938d1939f503cfa53f0943d75
 F ext/fts5/test/fts5near.test b214cddb1c1f1bddf45c75af768f20145f7e71cc
 F ext/fts5/test/fts5onepass.test 7ed9608e258132cb8d55e7c479b08676ad68810c
-F ext/fts5/test/fts5optimize.test 0f25ce4cc1f78a4cf5dd1247d30135b3f7180a19
+F ext/fts5/test/fts5optimize.test 9d3ac53bb9cae58cb070d795db86bcb2f9fec105
 F ext/fts5/test/fts5phrase.test f6d1d464da5beb25dc56277aa4f1d6102f0d9a2f
 F ext/fts5/test/fts5plan.test 6a55ecbac9890765b0e16f8c421c7e0888cfe436
 F ext/fts5/test/fts5porter.test 7cdc07bef301d70eebbfa75dcaf45c3680e1d0e1
@@ -1455,7 +1455,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 3c343c3d012367942037e64a9855b825cb459844
-R cc439e49a58b31085f4379adad06b3a4
-U drh
-Z ed62054916964b4fe2af635a90038c7e
+P f96ec84d605fd73c323344a753acf35b76307af9
+R 051c67540d0eafc760e9e2909fb96246
+U dan
+Z d3ddde89c58a1d5ab316ef215efd6168
index 765f18c2ccb8c8d04c3b42206ef9702a86e169fe..74d94400816bf3faa0347a8699be8734944b2717 100644 (file)
@@ -1 +1 @@
-f96ec84d605fd73c323344a753acf35b76307af9
\ No newline at end of file
+fa0033edf6ddf3c6631fa95b343225dbc8ac9429
\ No newline at end of file