From: dan Date: Sat, 28 Sep 2024 15:09:43 +0000 (+0000) Subject: Add tests for DELETE on contentless, contentless-delete and contentless-unindexed... X-Git-Tag: version-3.47.0~70^2~1 X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=54e35b543df1c19be47e868e27e46bb312d706c2;p=thirdparty%2Fsqlite.git Add tests for DELETE on contentless, contentless-delete and contentless-unindexed fts5 tables. FossilOrigin-Name: 74832fffb61d5e09ff256622cc9aa1fd2c40d30324c410bd6a8c688f0506a536 --- diff --git a/ext/fts5/test/fts5delete.test b/ext/fts5/test/fts5delete.test index 1214fec4f4..c9c55e8a4f 100644 --- a/ext/fts5/test/fts5delete.test +++ b/ext/fts5/test/fts5delete.test @@ -113,5 +113,57 @@ do_execsql_test 3.4 { INSERT INTO tx(tx) VALUES('integrity-check'); } +#------------------------------------------------------------------------- +reset_db +do_execsql_test 4.0 { + CREATE VIRTUAL TABLE ft1 USING fts5(a, b UNINDEXED, + content='', contentless_unindexed=1 + ); + CREATE VIRTUAL TABLE ft2 USING fts5(a, b UNINDEXED, + content='', contentless_unindexed=1, contentless_delete=1 + ); + + INSERT INTO ft1(rowid, a, b) VALUES(1, 'one', 'i'); + INSERT INTO ft1(rowid, a, b) VALUES(2, 'two', 'ii'); + INSERT INTO ft1(rowid, a, b) VALUES(3, 'three', 'iii'); + INSERT INTO ft2(rowid, a, b) VALUES(1, 'one', 'i'); + INSERT INTO ft2(rowid, a, b) VALUES(2, 'two', 'ii'); + INSERT INTO ft2(rowid, a, b) VALUES(3, 'three', 'iii'); +} + +do_catchsql_test 4.1 { + DELETE FROM ft1 WHERE rowid=2 +} {1 {cannot DELETE from contentless fts5 table: ft1}} +do_catchsql_test 4.2 { + DELETE FROM ft2 WHERE rowid=2 +} {0 {}} + +do_catchsql_test 4.3 { + INSERT INTO ft1(ft1, rowid, a) VALUES('delete', 2, 'two'); +} {0 {}} +do_catchsql_test 4.2 { + INSERT INTO ft2(ft2, rowid, a) VALUES('delete', 2, 'two'); +} {1 {'delete' may not be used with a contentless_delete=1 table}} + +do_execsql_test 4.3 { + SELECT rowid, * FROM ft1; +} { + 1 {} i + 3 {} iii +} +do_execsql_test 4.4 { + SELECT rowid, * FROM ft2; +} { + 1 {} i + 3 {} iii +} + +do_execsql_test 4.5 { + SELECT * FROM ft1_content +} {1 i 3 iii} +do_execsql_test 4.6 { + SELECT * FROM ft1_content +} {1 i 3 iii} + finish_test diff --git a/ext/fts5/test/fts5update2.test b/ext/fts5/test/fts5update2.test index 9e5e6c81db..d04af4800d 100644 --- a/ext/fts5/test/fts5update2.test +++ b/ext/fts5/test/fts5update2.test @@ -26,6 +26,7 @@ ifcapable !fts5 { # Test that the various types of UPDATE statement are handled correctly # by different table types. # +foreach_detail_mode $testprefix { foreach {tn cu} { 1 0 2 1 @@ -34,11 +35,13 @@ foreach {tn cu} { do_execsql_test 1.$tn.1 " CREATE VIRTUAL TABLE ft1 USING fts5(a, b UNINDEXED, c UNINDEXED, d, content='', - contentless_unindexed=$cu + contentless_unindexed=$cu, + detail=%DETAIL% ); CREATE VIRTUAL TABLE ft2 USING fts5(a, b UNINDEXED, c UNINDEXED, d, content='', - contentless_unindexed=$cu, contentless_delete=1 + contentless_unindexed=$cu, contentless_delete=1, + detail=%DETAIL% ); " @@ -121,7 +124,7 @@ foreach {tn cu} { # It should be possible to update the rowid if contentless_delete=1 is # set and all indexed columns are updated. do_execsql_test 1.$tn.15 { - UPDATE ft2 SET a='a_one', d='d_one', rowid=11 WHERE rowid=1 + UPDATE ft2 SET a='aXone', d='dXone', rowid=11 WHERE rowid=1 } set res(0) { @@ -148,7 +151,7 @@ foreach {tn cu} { } {1 {cannot UPDATE contentless fts5 table: ft1}} do_execsql_test 1.$tn.19 { - UPDATE ft2 SET a='a_two', d='d_two', c='newval', rowid=12 WHERE rowid=2 + UPDATE ft2 SET a='aXtwo', d='dXtwo', c='newval', rowid=12 WHERE rowid=2 } {} set res(0) { @@ -166,10 +169,9 @@ foreach {tn cu} { } $res($cu) do_execsql_test 1.$tn.21 { - SELECT rowid, * FROM ft2('a_two AND d_two') + SELECT rowid, * FROM ft2('aXtwo AND dXtwo') } [lrange $res($cu) 10 end] - -} +}} ;# end of [foreach_detail_mode] loop finish_test diff --git a/manifest b/manifest index 11bbbe30ca..015a187a8e 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Extra\stest\scases\sfor\sUPDATEs\sof\scontentless\stables. -D 2024-09-27T19:21:09.689 +C Add\stests\sfor\sDELETE\son\scontentless,\scontentless-delete\sand\scontentless-unindexed\sfts5\stables. +D 2024-09-28T15:09:43.754 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -154,7 +154,7 @@ F ext/fts5/test/fts5corrupt5.test 11b47126f5772cc37b67e3e8b2ed05895c4d07c05338bc F ext/fts5/test/fts5corrupt6.test 2d72db743db7b5d9c9a6d0cfef24d799ed1aa5e8192b66c40e871a37ed9eed06 F ext/fts5/test/fts5corrupt7.test 4e830875c33b9ea3c4cf1ba71e692b63893cbb4faae8c69b1071889dc26e211c F ext/fts5/test/fts5corrupt8.test b81d802e41631e98100f49a1aadeeffef860e30a62d6ed7d743c2797c477239e -F ext/fts5/test/fts5delete.test 619295b20dbc1d840b403ee07c878f52378849c3c02e44f2ee143b3e978a0aa7 +F ext/fts5/test/fts5delete.test e5ad73ce7cda1201b15ead1170f0bc6a2402107b4c2b4e8c8d38c3c7a5140739 F ext/fts5/test/fts5detail.test 54015e9c43ec4ba542cfb93268abdf280e0300f350efd08ee411284b03595cc4 F ext/fts5/test/fts5determin.test 1b77879b2ae818b5b71c859e534ee334dac088b7cf3ff3bf76a2c82b1c788d11 F ext/fts5/test/fts5dlidx.test a7c42b0a74dc7c8aa1a46d586e0aadda4b6cc42c24450f8d3774b21166e93159 @@ -248,7 +248,7 @@ F ext/fts5/test/fts5unicode4.test 728c8f0caafb05567f524ad313d9f8b780fa45987b8a8d F ext/fts5/test/fts5unindexed.test 168838d2c385e131120bbf5b516d2432a5fabc4caa2259c932e1d49ae209a4ae F ext/fts5/test/fts5unindexed2.test 516236eceaac05ace322290a0d3705b4c4ffe4760d8eb9d014d9d27d56dfcc02 F ext/fts5/test/fts5update.test b8affd796e45c94a4d19ad5c26606ea06065a0f162a9562d9f005b5a80ccf0bc -F ext/fts5/test/fts5update2.test 1757efae987e6a5a8ac75e3d487fe7be0b8de6006c12f3789fa5d86ee1012706 +F ext/fts5/test/fts5update2.test c5baa76799ac605ebb8e5e21035db2014b396cef25c903eb96ba39b1d6f9f046 F ext/fts5/test/fts5version.test c22d163c17e60a99f022cbc52de5a48bb7f84deaa00fe15e9bc4c3aa1996204e F ext/fts5/test/fts5vocab.test 2a2bdb60d0998fa3124d541b6d30b019504918dc43a6584645b63a24be72f992 F ext/fts5/test/fts5vocab2.test bbba149c254375d00055930c1a501c9a51e80b0d20bf7b98f3e9fa3b03786373 @@ -2217,8 +2217,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 d69abca82145465c85241a12322986f22bf12ffe42f86c2c8e8e2f2a77d53bf8 -R 817da49217632f1ab83203ed5615b513 +P 4d11d844de3edd82f022c36381ca7f14a546a608293c329b91e7f041cec82ff5 +R 252b3e37ef138d75d16ca0a09145d26b U dan -Z b50e3f13244bcc732f70d03504469c39 +Z 1c5135e581d8308e18c2303d6757adc4 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index fb8124c66b..ca318965b4 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -4d11d844de3edd82f022c36381ca7f14a546a608293c329b91e7f041cec82ff5 +74832fffb61d5e09ff256622cc9aa1fd2c40d30324c410bd6a8c688f0506a536