| # 2020 Dec 3 |
| # |
| # 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. |
| # |
| #*********************************************************************** |
| # |
| # This file contains tests focused on prefix indexes. |
| # |
| |
| source [file join [file dirname [info script]] fts5_common.tcl] |
| set testprefix fts5prefix2 |
| |
| # If SQLITE_ENABLE_FTS5 is not defined, omit this file. |
| ifcapable !fts5 { |
| finish_test |
| return |
| } |
| |
| foreach p {3 2 1} { |
| reset_db |
| do_execsql_test 1.$p.0 " |
| CREATE VIRTUAL TABLE t1 USING fts5(xyz, prefix=$p); |
| " |
| do_execsql_test 1.$p.1 { |
| INSERT INTO t1 VALUES |
| ('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 f.'); |
| } |
| |
| do_execsql_test 1.$p.2 { |
| SELECT highlight(t1, 0, '[', ']') FROM t1('f*'); |
| } { |
| {May you [find] [forgiveness] [for] yourself and [forgive] others.} |
| {May you share [freely], never taking more than you give [f].} |
| } |
| } |
| |
| do_execsql_test 2.0 { |
| CREATE VIRTUAL TABLE t2 USING fts5(one, prefix=3); |
| INSERT INTO t2 VALUES('top'); |
| INSERT INTO t2 VALUES('to'); |
| INSERT INTO t2 VALUES('tommy'); |
| } |
| |
| do_execsql_test 2.1 { |
| SELECT * FROM t2('to*'); |
| } {top to tommy} |
| |
| #------------------------------------------------------------------------- |
| |
| foreach {tn newrowid} { |
| 1 122 |
| 2 123 |
| 3 124 |
| } { |
| reset_db |
| do_execsql_test 3.$tn.0 { |
| CREATE VIRTUAL TABLE t12 USING fts5(x); |
| INSERT INTO t12(rowid, x) VALUES(123, 'wwww'); |
| } |
| do_execsql_test 3.$tn.1 { |
| BEGIN; |
| DELETE FROM t12 WHERE rowid=123; |
| SELECT * FROM t12('wwww*'); |
| INSERT INTO t12(rowid, x) VALUES($newrowid, 'wwww'); |
| SELECT * FROM t12('wwww*'); |
| END; |
| } {wwww} |
| do_execsql_test 3.$tn.2 { |
| INSERT INTO t12(t12) VALUES('integrity-check'); |
| } |
| do_execsql_test 3.$tn.3 { |
| SELECT rowid FROM t12('wwww*'); |
| } $newrowid |
| } |
| |
| finish_test |
| |
| |
| |
| finish_test |