Add tests for DELETE on contentless, contentless-delete and contentless-unindexed fts5 tables.
FossilOrigin-Name: 74832fffb61d5e09ff256622cc9aa1fd2c40d30324c410bd6a8c688f0506a536
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user