1# 2015 Apr 24 2# 3# The author disclaims copyright to this source code. In place of 4# a legal notice, here is a blessing: 5# 6# May you do good and not evil. 7# May you find forgiveness for yourself and forgive others. 8# May you share freely, never taking more than you give. 9# 10#*********************************************************************** 11# 12# The tests in this file focus on testing that unrecognized file-format 13# versions are detected and reported. 14# 15 16source [file join [file dirname [info script]] fts5_common.tcl] 17set testprefix fts5version 18 19# If SQLITE_ENABLE_FTS5 is defined, omit this file. 20ifcapable !fts5 { 21 finish_test 22 return 23} 24 25 26do_execsql_test 1.1 { 27 CREATE VIRTUAL TABLE t1 USING fts5(one); 28 INSERT INTO t1 VALUES('a b c d'); 29} {} 30 31do_execsql_test 1.2 { 32 SELECT * FROM t1_config WHERE k='version' 33} {version 4} 34 35do_execsql_test 1.3 { 36 SELECT rowid FROM t1 WHERE t1 MATCH 'a'; 37} {1} 38 39sqlite3_db_config db DEFENSIVE 0 40do_execsql_test 1.4 { 41 UPDATE t1_config set v=5 WHERE k='version'; 42} 43 44do_test 1.5 { 45 db close 46 sqlite3 db test.db 47 catchsql { SELECT * FROM t1 WHERE t1 MATCH 'a' } 48} {1 {invalid fts5 file format (found 5, expected 4) - run 'rebuild'}} 49 50do_test 1.6 { 51 db close 52 sqlite3 db test.db 53 catchsql { INSERT INTO t1 VALUES('x y z') } 54} {1 {invalid fts5 file format (found 5, expected 4) - run 'rebuild'}} 55 56do_test 1.7 { 57 sqlite3_db_config db DEFENSIVE 0 58 execsql { DELETE FROM t1_config WHERE k='version' } 59 db close 60 sqlite3 db test.db 61 catchsql { SELECT * FROM t1 WHERE t1 MATCH 'a' } 62} {1 {invalid fts5 file format (found 0, expected 4) - run 'rebuild'}} 63 64 65finish_test 66