Add tests for DELETE on contentless, contentless-delete and contentless-unindexed fts5 tables.

FossilOrigin-Name: 74832fffb61d5e09ff256622cc9aa1fd2c40d30324c410bd6a8c688f0506a536
This commit is contained in:
dan
2024-09-28 15:09:43 +00:00
parent 58b4a8f6e7
commit 54e35b543d
4 changed files with 69 additions and 15 deletions
+52
View File
@@ -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
+9 -7
View File
@@ -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
+7 -7
View File
@@ -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.
+1 -1
View File
@@ -1 +1 @@
4d11d844de3edd82f022c36381ca7f14a546a608293c329b91e7f041cec82ff5
74832fffb61d5e09ff256622cc9aa1fd2c40d30324c410bd6a8c688f0506a536