]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Extra tests.
authordan <Dan Kennedy>
Thu, 15 Aug 2024 20:33:05 +0000 (20:33 +0000)
committerdan <Dan Kennedy>
Thu, 15 Aug 2024 20:33:05 +0000 (20:33 +0000)
FossilOrigin-Name: fb257540d32ced4a5fe0759d3ad9c1b36fd2b7d64d93cb0a0ecdb48355a68b7a

ext/fts5/fts5Int.h
ext/fts5/fts5_main.c
ext/fts5/test/fts5_common.tcl
ext/fts5/test/fts5faultI.test
ext/fts5/test/fts5misc.test
ext/fts5/test/fts5origintext.test
manifest
manifest.uuid

index 7e42ea82c1b0849c24f59c2ffba5fecd88027c8f..7e41119572b775d269cee3828731aa81bba468b6 100644 (file)
@@ -345,7 +345,7 @@ char *sqlite3Fts5Mprintf(int *pRc, const char *zFmt, ...);
 void sqlite3Fts5Put32(u8*, int);
 int sqlite3Fts5Get32(const u8*);
 
-#define FTS5_POS2COLUMN(iPos) (int)(iPos >> 32)
+#define FTS5_POS2COLUMN(iPos) (int)((iPos >> 32) & 0x7FFFFFFF)
 #define FTS5_POS2OFFSET(iPos) (int)(iPos & 0x7FFFFFFF)
 
 typedef struct Fts5PoslistReader Fts5PoslistReader;
index d03bd2513e7116b128d355c79a7ee378c76cbc6b..06833a98b29d7bd84e512848b323fd2b46ed28c3 100644 (file)
@@ -2330,7 +2330,8 @@ static int fts5CacheInstArray(Fts5Cursor *pCsr){
         aInst[0] = iBest;
         aInst[1] = FTS5_POS2COLUMN(aIter[iBest].iPos);
         aInst[2] = FTS5_POS2OFFSET(aIter[iBest].iPos);
-        if( aInst[1]<0 || aInst[1]>=nCol ){
+        assert( aInst[1]>=0 );
+        if( aInst[1]>=nCol ){
           rc = FTS5_CORRUPT;
           break;
         }
index b78064e8d819e9647c23951c396fa32d29d26b50..8ea87dbdd14a4adbc01626fd8a997f26de51fffc 100644 (file)
@@ -51,6 +51,10 @@ proc fts5_test_poslist2 {cmd} {
   sort_poslist $res
 }
 
+proc fts5_test_insttoken {cmd iInst iToken} {
+  $cmd xInstToken $iInst $iToken
+}
+
 proc fts5_test_collist {cmd} {
   set res [list]
 
@@ -181,6 +185,7 @@ proc fts5_aux_test_functions {db} {
     fts5_test_poslist
     fts5_test_poslist2
     fts5_test_collist
+    fts5_test_insttoken
     fts5_test_tokenize
     fts5_test_rowcount
     fts5_test_rowid
index b64f27c1fc7a4232e75a49fb7c938fb8fc06fa04..33c93c63af8ea7e7c1e70021fd2aef15083dfb40 100644 (file)
@@ -102,5 +102,49 @@ do_faultsim_test 5 -faults oom* -prep {
   faultsim_test_result {0 {}}
 }
 
+#-------------------------------------------------------------------------
+reset_db
+do_execsql_test 5.0 {
+  CREATE VIRTUAL TABLE w1 USING fts5(a);
+  INSERT INTO w1 VALUES('one two three');
+}
+fts5_aux_test_functions db
+
+do_faultsim_test 5 -faults oom* -prep {
+} -body {
+  execsql {
+    SELECT fts5_test_insttoken(w1, 0, 0) FROM w1('two');
+  }
+} -test {
+  faultsim_test_result {0 two} {1 SQLITE_NOMEM}
+}
+
+#-------------------------------------------------------------------------
+reset_db
+do_execsql_test 6.0 {
+  CREATE VIRTUAL TABLE w1 USING fts5(a);
+  INSERT INTO w1 VALUES('one two three');
+}
+fts5_aux_test_functions db
+faultsim_save_and_close
+
+do_faultsim_test 6 -faults oom* -prep {
+  faultsim_restore_and_reopen
+  db eval {
+    BEGIN;
+      INSERT INTO w1 VALUES('four five six');
+      SAVEPOINT abc;
+        INSERT INTO w1 VALUES('seven eight nine');
+        SAVEPOINT def;
+          INSERT INTO w1 VALUES('ten eleven twelve');
+  }
+} -body {
+  execsql {
+    RELEASE abc;
+  }
+} -test {
+  faultsim_test_result {0 {}}
+}
+
 finish_test
 
index e5f43d69c5508d744a400b5e756d4133a9dcd930..4b943c348844b97450ac5186fbf7d695005b3169 100644 (file)
@@ -571,5 +571,25 @@ do_execsql_test 20.5 {
   SELECT rowid FROM x1 WHERE x1 MATCH 'z' OR (x1 MATCH 'a' AND x1 MATCH 'd');
 } {3 1}
 
+#-------------------------------------------------------------------------
+reset_db
+do_execsql_test 21.0 {
+  CREATE TABLE t1(ii INTEGER, x TEXT, y TEXT);
+  CREATE VIRTUAL TABLE xyz USING fts5(content_rowid=ii, content=t1, x, y);
+  INSERT INTO t1 VALUES(1, 'one', 'i');
+  INSERT INTO t1 VALUES(2, 'two', 'ii');
+  INSERT INTO t1 VALUES(3, 'tree', 'iii');
+  INSERT INTO xyz(xyz) VALUES('rebuild');
+}
+
+do_execsql_test 21.1 {
+  UPDATE xyz SET y='TWO' WHERE rowid=2;
+  UPDATE t1 SET y='TWO' WHERE ii=2;
+}
+
+do_execsql_test 21.2 {
+  PRAGMA integrity_check
+} {ok}
+
 finish_test
 
index cc9d99e2d95a5837cc6fd91d210e07a1a964066c..1612b0d7f486e6cfff6da5e296bfb06edd69e784 100644 (file)
@@ -291,6 +291,15 @@ do_execsql_test 6.3 {
   SELECT rowid, tokens(ft) FROM ft('Three*');
 } {1 {{}} 2 {{}}}
 
+fts5_aux_test_functions db
+do_catchsql_test 6.4 {
+  SELECT fts5_test_insttoken(ft, -1, 0) FROM ft('one');
+} {1 SQLITE_RANGE}
+
+do_catchsql_test 6.5 {
+  SELECT fts5_test_insttoken(ft, 1, 0) FROM ft('one');
+} {1 SQLITE_RANGE}
+
 }
 
 finish_test
index 4071c7a84b45232de842228f4a4e900c1e19dd2e..28ab5391d0f93def6411550d983d5dc094ab5a8c 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Further\stests\sand\sfixes\sfor\sthis\sbranch.
-D 2024-08-15T18:50:13.581
+C Extra\stests.
+D 2024-08-15T20:33:05.956
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -93,14 +93,14 @@ F ext/fts3/unicode/mkunicode.tcl d5aebf022fa4577ee8cdf27468f0d847879993959101f6d
 F ext/fts3/unicode/parseunicode.tcl a981bd6466d12dd17967515801c3ff23f74a281be1a03cf1e6f52a6959fc77eb
 F ext/fts5/extract_api_docs.tcl bc3a0ca78be7d3df08e7602c00ca48021ebae40682d75eb001bfdf6e54ffb44e
 F ext/fts5/fts5.h 4c6998c6186268b4dbe9baef2c0d2ab974bd90996d61d4dbe801367249be6de4
-F ext/fts5/fts5Int.h 776b21159eef8d30379e5bc4627eae9e841d36e43f19dc8908c786e62aaf9e38
+F ext/fts5/fts5Int.h 26a71a09cefa4ef6b4516b204ed48da3e1380970a19b3482eea7c5d805655360
 F ext/fts5/fts5_aux.c 12cd2512f869217c38b70c31de5b5f741812734fafa80f55b32ea9bbd96e2152
 F ext/fts5/fts5_buffer.c 0eec58bff585f1a44ea9147eae5da2447292080ea435957f7488c70673cb6f09
 F ext/fts5/fts5_config.c 187f7ffa5eddd6539ffa592de85e95b18be951728491390121bb215549a24a2a
 F ext/fts5/fts5_expr.c 3a24c6ab5b7545312a5ec03085ae705ede820a08f9a63f1d72829ed4a35da6f6
 F ext/fts5/fts5_hash.c adda4272be401566a6e0ba1acbe70ee5cb97fce944bc2e04dc707152a0ec91b1
 F ext/fts5/fts5_index.c eb9a0dda3bc6ef969a6be8d2746af56856e67251810ddba08622b45be8477abe
-F ext/fts5/fts5_main.c 21160a392addf6921e380090984aed88bbb6d88c33a7d03187997c9c8f666e49
+F ext/fts5/fts5_main.c 23029229021240dc21a69eb749305316103d183375413e2090c064b74b03b7f8
 F ext/fts5/fts5_storage.c 5bf88213ff5911625c142ac332ddba10dcd0869e757f91f2a3d27f27ba595992
 F ext/fts5/fts5_tcl.c 50c7e16753fde0c4d80d8abd00a4ed2b0e998d5d3899a484510d01923c5da43b
 F ext/fts5/fts5_test_mi.c 08c11ec968148d4cb4119d96d819f8c1f329812c568bac3684f5464be177d3ee
@@ -111,7 +111,7 @@ F ext/fts5/fts5_varint.c e64d2113f6e1bfee0032972cffc1207b77af63319746951bf1d0988
 F ext/fts5/fts5_vocab.c e4830b00809e5da53bc10f93adc59e321407b0f801c7f4167c0e47f5552267e0
 F ext/fts5/fts5parse.y eb526940f892ade5693f22ffd6c4f2702543a9059942772526eac1fde256bb05
 F ext/fts5/mkportersteps.tcl 5acf962d2e0074f701620bb5308155fa1e4a63ba
-F ext/fts5/test/fts5_common.tcl 48c0855d235a2f141e5519d3170bad7cddcc53ad3a16ac8ef952ba61048c2958
+F ext/fts5/test/fts5_common.tcl c5aa7cf7148b6dcffb5b61520ae18212baf169936af734ab265143f59db328fe
 F ext/fts5/test/fts5aa.test 015c81b84d53bfcedd77d624202c8b02e9f0cbbb4b51688e3a9c9f90bccbb4ac
 F ext/fts5/test/fts5ab.test 4bdb619fee409e11417e8827e320b857e42e926a01a0408fc9f143ec870a6ced
 F ext/fts5/test/fts5ac.test 4a73626de86f3d17c95738034880c4f0de8d54741fb943d819b528373657e59b
@@ -177,7 +177,7 @@ F ext/fts5/test/fts5faultE.test 844586ce71dab4be85bb86880e87b624d089f851654cd22e
 F ext/fts5/test/fts5faultF.test 4abef99f86e99d9f0c6460dd68c586a766b6b9f1f660ada55bf2e8266bd1bbc1
 F ext/fts5/test/fts5faultG.test 0544411ffcb3e19b42866f757a8a5e0fb8fef3a62c06f61d14deebc571bb7ea9
 F ext/fts5/test/fts5faultH.test 2b2b5b8cb1b3fd7679f488c06e22af44107fbc6137eaf45b3e771dc7b149312d
-F ext/fts5/test/fts5faultI.test 6aa7c42a9c14f00b90e7b33412d98153c0ca1534c5ab11db25e39b4d63f88795
+F ext/fts5/test/fts5faultI.test d9e8c4b0b42910fa447a0e148236def618e7decbf3a334c7933a95e36410f772
 F ext/fts5/test/fts5first.test bfd685b96905bf541d99d8644e0a7219d1d833455a08ab64e344071a613b6ba9
 F ext/fts5/test/fts5full.test 97d263c1072f4a560929cca31e70f65d2ae232610e17e6affcf7e979df59547b
 F ext/fts5/test/fts5fuzz1.test 238d8c45f3b81342aa384de3e581ff2fa330bf922a7b69e484bbc06051a1080e
@@ -191,7 +191,7 @@ F ext/fts5/test/fts5locale.test f58ac6ab539d3813556646f7d4b1e19f7e3b1a56ca443934
 F ext/fts5/test/fts5matchinfo.test 877520582feb86bbfd95ab780099bcba4526f18ac75ee34979144cf86ba3a5a3
 F ext/fts5/test/fts5merge.test 2654df0bcdb2d117c2d38b6aeb0168061be01c643f9e9194b36c43a2970e8082
 F ext/fts5/test/fts5merge2.test 3ebad1a59d6ad3fb66eff6523a09e95dc6367cbefb3cd73196801dea0425c8e2
-F ext/fts5/test/fts5misc.test 281a55fc3b41543c4a7fc30b0d4c703a819ce659f04553a4840a5dc8ec277397
+F ext/fts5/test/fts5misc.test b49a3afbda6de02970560c1cd3b804a4896b9f30ce5d75a5f215fa972537b26b
 F ext/fts5/test/fts5multi.test a15bc91cdb717492e6e1b66fec1c356cb57386b980c7ba5af1915f97fe878581
 F ext/fts5/test/fts5multiclient.test 5ff811c028d6108045ffef737f1e9f05028af2458e456c0937c1d1b8dea56d45
 F ext/fts5/test/fts5near.test 33d60867581066e5db7016deb5d651628125d7ff4e0233a88175aa5b65874c74
@@ -199,7 +199,7 @@ F ext/fts5/test/fts5onepass.test f9b7d9b2c334900c6542a869760290e2ab5382af8fbd618
 F ext/fts5/test/fts5optimize.test 264b9101721c17d06d1d174feb743fda3ddc89fad41dee980fef821428258e47
 F ext/fts5/test/fts5optimize2.test 795d4ae5f66a7239cf8d5aef4c2ea96aeb8bcd907bd9be0cfe22064fc71a44ed
 F ext/fts5/test/fts5optimize3.test 1653029284e10e0715246819893ba30565c4ead0d0fc470adae92c353ea857d3
-F ext/fts5/test/fts5origintext.test 87c34c78f201b1e22ac93ac6bbe6196dde59f0a7266b1aeb938604a0eb9d5552
+F ext/fts5/test/fts5origintext.test 002abba00b334cb4b3f957f940f75b9ab53f4caae97aa753e19da285c245e463
 F ext/fts5/test/fts5origintext2.test f4505ff79bf7369f2b8b10b9cef7476049d844e20b37f29cad3a8b8d5ac6f9ba
 F ext/fts5/test/fts5origintext3.test 45c33cf0c91a9ca0e36d298462db3edc7c8fe45fd185649a9dbfd66bb670058b
 F ext/fts5/test/fts5origintext4.test 0d3ef0a8038f471dbc83001c34fe5f7ae39b571bfc209670771eb28bc0fc50e8
@@ -2208,8 +2208,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 00792e807f1dde750e6ac9f9b0095cf60b9fa6ff7cf4b14440600a21de2ee61a
-R 26644a6a4d254f87e6d210a1b5d5866f
+P d27985245a0e8c0d6b04323c98b26b6a8fb4e489fa8f5f3234252c7c198f23c8
+R c260c68d60eebc40b0c96509388ca9e3
 U dan
-Z 43505ba0ff6d8eb4d2d57750e91b3ee5
+Z d7c15a75ca8b075cfcf78184db374c6a
 # Remove this line to create a well-formed Fossil manifest.
index 4334ad1f966dc6f9dfa541c8db46b866225ad212..83c523a401c7a592a917cdc068891166e3e52dca 100644 (file)
@@ -1 +1 @@
-d27985245a0e8c0d6b04323c98b26b6a8fb4e489fa8f5f3234252c7c198f23c8
+fb257540d32ced4a5fe0759d3ad9c1b36fd2b7d64d93cb0a0ecdb48355a68b7a