# 2023 Feb 17 # # The author disclaims copyright to this source code. In place of # a legal notice, here is a blessing: # # May you do good and not evil. # May you find forgiveness for yourself and forgive others. # May you share freely, never taking more than you give. # #************************************************************************* # source [file join [file dirname [info script]] fts5_common.tcl] ifcapable !fts5 { finish_test ; return } set ::testprefix fts5secure2 do_execsql_test 1.0 { CREATE VIRTUAL TABLE ft USING fts5(col); INSERT INTO ft VALUES('data for the table'); INSERT INTO ft VALUES('more of the same'); INSERT INTO ft VALUES('and extra data'); } do_execsql_test 1.1 { SELECT * FROM ft_config } {version 4} do_execsql_test 1.2 { INSERT INTO ft(ft, rank) VALUES('secure-delete', 1); SELECT * FROM ft_config; } {secure-delete 1 version 4} do_execsql_test 1.3 { INSERT INTO ft(ft, rank) VALUES('secure-delete', 1); SELECT * FROM ft_config; } {secure-delete 1 version 4} do_execsql_test 1.4 { DELETE FROM ft WHERE rowid=2; SELECT * FROM ft_config; } {secure-delete 1 version 5} do_execsql_test 1.5 { SELECT rowid, col FROM ft('data'); } {1 {data for the table} 3 {and extra data}} db close sqlite3 db test.db do_execsql_test 1.6 { SELECT rowid, col FROM ft('data'); } {1 {data for the table} 3 {and extra data}} #------------------------------------------------------------------------ reset_db do_execsql_test 2.0 { CREATE VIRTUAL TABLE ft USING fts5(col); INSERT INTO ft VALUES('one zero one one zero'); INSERT INTO ft(ft, rank) VALUES('secure-delete', 1); } do_execsql_test 2.1 { SELECT count(*) FROM ft_data WHERE block=X'00000004'; } {0} do_execsql_test 2.2 { UPDATE ft SET col = 'zero one zero zero one' WHERE rowid=1; } do_execsql_test 2.3 { SELECT count(*) FROM ft_data WHERE block=X'00000004'; } {1} do_execsql_test 2.4 { INSERT INTO ft VALUES('one zero zero one'); DELETE FROM ft WHERE rowid=1; } do_execsql_test 2.5 { SELECT count(*) FROM ft_data WHERE block=X'00000004'; } {2} finish_test