123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- # 2023 November 22
- #
- # 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.
- #
- #***********************************************************************
- #
- # Tests focused on phrase queries.
- #
- source [file join [file dirname [info script]] fts5_common.tcl]
- set testprefix fts5origintext4
- # If SQLITE_ENABLE_FTS5 is not defined, omit this file.
- ifcapable !fts5 {
- finish_test
- return
- }
- # The tests below verify that a doclist-index is used to limit the number
- # of pages loaded into the cache. It does this by querying sqlite3_db_status()
- # for the amount of memory used by the pager cache.
- #
- # memsubsys1 effectively limits the page-cache to 24 pages. Which masks
- # the effect tested by the tests in this file. And "mmap" prevents the
- # cache from being used, also preventing these tests from working.
- #
- if {[permutation]=="memsubsys1" || [permutation]=="mmap"} {
- finish_test
- return
- }
- sqlite3_fts5_register_origintext db
- do_execsql_test 1.0 {
- PRAGMA page_size = 4096;
- CREATE VIRTUAL TABLE ft USING fts5(
- x, tokenize="origintext unicode61", tokendata=1
- );
- }
- do_execsql_test 1.1 {
- BEGIN;
- INSERT INTO ft SELECT 'the first thing';
- WITH s(i) AS (
- SELECT 1 UNION ALL SELECT i+1 FROM s WHERE i<90000
- )
- INSERT INTO ft SELECT 'The second thing' FROM s;
- INSERT INTO ft SELECT 'the first thing';
- COMMIT;
- INSERT INTO ft(ft) VALUES('optimize');
- }
- foreach {tn sql expr} {
- 1 { SELECT rowid FROM ft('the') } {$mem > 250000}
- 2 { SELECT rowid FROM ft('first') } {$mem < 50000}
- 3 { SELECT rowid FROM ft('the first') } {$mem < 50000}
- } {
- db close
- sqlite3 db test.db
- sqlite3_fts5_register_origintext db
- execsql $sql
- do_test 1.2.$tn {
- set mem [lindex [sqlite3_db_status db CACHE_USED 0] 1]
- expr $expr
- } 1
- }
- proc b {x} { string map [list "\0" "."] $x }
- db func b b
- # execsql_pp { SELECT segid, b(term), pgno from ft_idx }
- finish_test
|