Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix a problem in FTS4 where columns with names that are prefixes of any notindexed column were also being (incorrectly) marked as not indexed. For example in "CREATE ... t1(abc, bc, abcd, notindexed=abcd)", both abc and abcd were being treated as notindexed. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
d90c4964fcf46b0b043dbfd582670985 |
User & Date: | dan 2014-05-26 16:40:02.009 |
Context
2014-05-26
| ||
18:27 | Fix a problem in the shell when importing CSV files. If the leftmost field of the first row in the CSV file was both zero bytes in size and unquoted, no data was imported. (check-in: 856d44a206 user: dan tags: trunk) | |
16:40 | Fix a problem in FTS4 where columns with names that are prefixes of any notindexed column were also being (incorrectly) marked as not indexed. For example in "CREATE ... t1(abc, bc, abcd, notindexed=abcd)", both abc and abcd were being treated as notindexed. (check-in: d90c4964fc user: dan tags: trunk) | |
2014-05-24
| ||
17:15 | Remove references in comments to VDBE opcodes that no longer exist. This is a documentation change only; no changes to code. (check-in: ebfb51fe40 user: drh tags: trunk) | |
Changes
Changes to ext/fts3/fts3.c.
︙ | ︙ | |||
1372 1373 1374 1375 1376 1377 1378 | } /* Fill in the abNotindexed array */ for(iCol=0; iCol<nCol; iCol++){ int n = (int)strlen(p->azColumn[iCol]); for(i=0; i<nNotindexed; i++){ char *zNot = azNotindexed[i]; | > | > | 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 | } /* Fill in the abNotindexed array */ for(iCol=0; iCol<nCol; iCol++){ int n = (int)strlen(p->azColumn[iCol]); for(i=0; i<nNotindexed; i++){ char *zNot = azNotindexed[i]; if( zNot && strlen(zNot)==n && 0==sqlite3_strnicmp(p->azColumn[iCol], zNot, n) ){ p->abNotindexed[iCol] = 1; sqlite3_free(zNot); azNotindexed[i] = 0; } } } for(i=0; i<nNotindexed; i++){ |
︙ | ︙ |
Changes to test/fts4noti.test.
︙ | ︙ | |||
160 161 162 163 164 165 166 167 168 169 170 171 | INSERT INTO t2 VALUES('b', 'c', 'a'); } do_execsql_test 5.2 { SELECT docid FROM t2 WHERE t2 MATCH 'a' } {2} do_execsql_test 5.3 { SELECT docid FROM t2 WHERE t2 MATCH 'b' } {1} do_execsql_test 5.4 { SELECT docid FROM t2 WHERE t2 MATCH 'c' } {3} do_execsql_test 5.x { DROP TABLE t2 } finish_test | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 | INSERT INTO t2 VALUES('b', 'c', 'a'); } do_execsql_test 5.2 { SELECT docid FROM t2 WHERE t2 MATCH 'a' } {2} do_execsql_test 5.3 { SELECT docid FROM t2 WHERE t2 MATCH 'b' } {1} do_execsql_test 5.4 { SELECT docid FROM t2 WHERE t2 MATCH 'c' } {3} do_execsql_test 5.x { DROP TABLE t2 } #------------------------------------------------------------------------- # Check that if an indexed column name is a prefix of a notindexed column # name, the column is still correctly tokenized. This was a problem at one # point. do_execsql_test 6.1.1 { CREATE VIRTUAL TABLE t1 USING fts4( poiCategory, poiCategoryId, notindexed=poiCategoryId ); INSERT INTO t1(poiCategory, poiCategoryId) values ("Restaurant", 6021); } do_execsql_test 6.1.2 { SELECT * FROM t1 WHERE t1 MATCH 'restaurant'; } { Restaurant 6021 } do_execsql_test 6.1.3 { SELECT * FROM t1 WHERE t1 MATCH 're*'; } { Restaurant 6021 } do_execsql_test 6.1.4 { SELECT * FROM t1 WHERE t1 MATCH '6021'; } {} do_execsql_test 6.1.5 { SELECT * FROM t1 WHERE t1 MATCH '60*'; } {} do_execsql_test 6.2.1 { DROP TABLE t1; CREATE VIRTUAL TABLE t1 USING fts4( poiCategory, poiCategoryId, notindexed=poiCategory ); INSERT INTO t1(poiCategory, poiCategoryId) values ("Restaurant", 6021); } do_execsql_test 6.2.2 { SELECT * FROM t1 WHERE t1 MATCH 'restaurant'; } {} do_execsql_test 6.2.3 { SELECT * FROM t1 WHERE t1 MATCH 're*'; } {} do_execsql_test 6.2.4 { SELECT * FROM t1 WHERE t1 MATCH '6021'; } { Restaurant 6021 } do_execsql_test 6.2.5 { SELECT * FROM t1 WHERE t1 MATCH '60*'; } { Restaurant 6021 } finish_test |