modernc.org/cc@v1.0.1/v2/testdata/_sqlite/ext/fts5/test/fts5vocab2.test (about) 1 # 2017 August 10 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 the fts5vocab module. 13 # 14 15 source [file join [file dirname [info script]] fts5_common.tcl] 16 set testprefix fts5vocab 17 18 # If SQLITE_ENABLE_FTS5 is defined, omit this file. 19 ifcapable !fts5 { 20 finish_test 21 return 22 } 23 24 do_execsql_test 1.0 { 25 CREATE VIRTUAL TABLE t1 USING fts5(a, b); 26 CREATE VIRTUAL TABLE v1 USING fts5vocab(t1, instance); 27 28 INSERT INTO t1 VALUES('one two', 'two three'); 29 INSERT INTO t1 VALUES('three four', 'four five five five'); 30 } 31 32 do_execsql_test 1.1 { 33 SELECT * FROM v1; 34 } { 35 five 2 b 1 36 five 2 b 2 37 five 2 b 3 38 four 2 a 1 39 four 2 b 0 40 one 1 a 0 41 three 1 b 1 42 three 2 a 0 43 two 1 a 1 44 two 1 b 0 45 } 46 47 do_execsql_test 1.2 { 48 SELECT * FROM v1 WHERE term='three'; 49 } { 50 three 1 b 1 51 three 2 a 0 52 } 53 54 do_execsql_test 1.3 { 55 BEGIN; 56 DELETE FROM t1 WHERE rowid=2; 57 SELECT * FROM v1; 58 ROLLBACK; 59 } { 60 one 1 a 0 61 three 1 b 1 62 two 1 a 1 63 two 1 b 0 64 } 65 66 do_execsql_test 1.4 { 67 BEGIN; 68 DELETE FROM t1 WHERE rowid=1; 69 SELECT * FROM v1; 70 ROLLBACK; 71 } { 72 five 2 b 1 73 five 2 b 2 74 five 2 b 3 75 four 2 a 1 76 four 2 b 0 77 three 2 a 0 78 } 79 80 do_execsql_test 1.5 { 81 DELETE FROM t1; 82 SELECT * FROM v1; 83 } { 84 } 85 86 #------------------------------------------------------------------------- 87 # 88 do_execsql_test 2.0 { 89 DROP TABLE IF EXISTS t1; 90 DROP TABLE IF EXISTS v1; 91 92 CREATE VIRTUAL TABLE t1 USING fts5(a, b, detail=column); 93 CREATE VIRTUAL TABLE v1 USING fts5vocab(t1, instance); 94 95 INSERT INTO t1 VALUES('one two', 'two three'); 96 INSERT INTO t1 VALUES('three four', 'four five five five'); 97 } 98 99 do_execsql_test 2.1 { 100 SELECT * FROM v1; 101 } { 102 five 2 b {} 103 four 2 a {} 104 four 2 b {} 105 one 1 a {} 106 three 1 b {} 107 three 2 a {} 108 two 1 a {} 109 two 1 b {} 110 } 111 112 do_execsql_test 2.2 { 113 SELECT * FROM v1 WHERE term='three'; 114 } { 115 three 1 b {} 116 three 2 a {} 117 } 118 119 do_execsql_test 2.3 { 120 BEGIN; 121 DELETE FROM t1 WHERE rowid=2; 122 SELECT * FROM v1; 123 ROLLBACK; 124 } { 125 one 1 a {} 126 three 1 b {} 127 two 1 a {} 128 two 1 b {} 129 } 130 131 do_execsql_test 2.4 { 132 BEGIN; 133 DELETE FROM t1 WHERE rowid=1; 134 SELECT * FROM v1; 135 ROLLBACK; 136 } { 137 five 2 b {} 138 four 2 a {} 139 four 2 b {} 140 three 2 a {} 141 } 142 143 do_execsql_test 2.5 { 144 DELETE FROM t1; 145 SELECT * FROM v1; 146 } { 147 } 148 149 #------------------------------------------------------------------------- 150 # 151 do_execsql_test 3.0 { 152 DROP TABLE IF EXISTS t1; 153 DROP TABLE IF EXISTS v1; 154 155 CREATE VIRTUAL TABLE t1 USING fts5(a, b, detail=none); 156 CREATE VIRTUAL TABLE v1 USING fts5vocab(t1, instance); 157 158 INSERT INTO t1 VALUES('one two', 'two three'); 159 INSERT INTO t1 VALUES('three four', 'four five five five'); 160 } 161 162 do_execsql_test 3.1 { 163 SELECT * FROM v1; 164 } { 165 five 2 {} {} 166 four 2 {} {} 167 one 1 {} {} 168 three 1 {} {} 169 three 2 {} {} 170 two 1 {} {} 171 } 172 173 do_execsql_test 3.2 { 174 SELECT * FROM v1 WHERE term='three'; 175 } { 176 three 1 {} {} 177 three 2 {} {} 178 } 179 180 do_execsql_test 3.3 { 181 BEGIN; 182 DELETE FROM t1 WHERE rowid=2; 183 SELECT * FROM v1; 184 ROLLBACK; 185 } { 186 one 1 {} {} 187 three 1 {} {} 188 two 1 {} {} 189 } 190 191 do_execsql_test 3.4 { 192 BEGIN; 193 DELETE FROM t1 WHERE rowid=1; 194 SELECT * FROM v1; 195 ROLLBACK; 196 } { 197 five 2 {} {} 198 four 2 {} {} 199 three 2 {} {} 200 } 201 202 do_execsql_test 3.5 { 203 DELETE FROM t1; 204 SELECT * FROM v1; 205 } { 206 } 207 208 finish_test 209