Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Tests to cover a few extra branches in fts3.c. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
06b72b007393dc34d75a8bb16ce0e450 |
User & Date: | dan 2009-12-12 19:15:28.000 |
Context
2009-12-12
| ||
23:57 | Fix some documentation comments in sqlite.h.in. No functional code changes. (check-in: c16b9bec77 user: drh tags: trunk) | |
19:15 | Tests to cover a few extra branches in fts3.c. (check-in: 06b72b0073 user: dan tags: trunk) | |
16:04 | Further fts3 coverage tests. (check-in: d2a8c0f683 user: dan tags: trunk) | |
Changes
Changes to ext/fts3/fts3.c.
︙ | ︙ | |||
813 814 815 816 817 818 819 | /* If no row was found and no error has occured, then the %_content ** table is missing a row that is present in the full-text index. ** The data structures are corrupt. */ rc = SQLITE_CORRUPT; } pCsr->isEof = 1; | | | 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 | /* If no row was found and no error has occured, then the %_content ** table is missing a row that is present in the full-text index. ** The data structures are corrupt. */ rc = SQLITE_CORRUPT; } pCsr->isEof = 1; if( pContext ){ sqlite3_result_error_code(pContext, rc); } return rc; } }else{ return SQLITE_OK; } |
︙ | ︙ | |||
1516 1517 1518 1519 1520 1521 1522 | int i; TermSelect tsc; Fts3SegFilter filter; /* Segment term filter configuration */ Fts3SegReader **apSegment; /* Array of segments to read data from */ int nSegment = 0; /* Size of apSegment array */ int nAlloc = 16; /* Allocated size of segment array */ int rc; /* Return code */ | | | | 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 | int i; TermSelect tsc; Fts3SegFilter filter; /* Segment term filter configuration */ Fts3SegReader **apSegment; /* Array of segments to read data from */ int nSegment = 0; /* Size of apSegment array */ int nAlloc = 16; /* Allocated size of segment array */ int rc; /* Return code */ sqlite3_stmt *pStmt = 0; /* SQL statement to scan %_segdir table */ int iAge = 0; /* Used to assign ages to segments */ apSegment = (Fts3SegReader **)sqlite3_malloc(sizeof(Fts3SegReader*)*nAlloc); if( !apSegment ) return SQLITE_NOMEM; rc = sqlite3Fts3SegReaderPending(p, zTerm, nTerm, isPrefix, &apSegment[0]); if( rc!=SQLITE_OK ) goto finished; if( apSegment[0] ){ nSegment = 1; } /* Loop through the entire %_segdir table. For each segment, create a ** Fts3SegReader to iterate through the subset of the segment leaves ** that may contain a term that matches zTerm/nTerm. For non-prefix |
︙ | ︙ | |||
2046 2047 2048 2049 2050 2051 2052 | if( fts3FunctionArg(pContext, "snippet", apVal[0], &pCsr) ) return; switch( nVal ){ case 4: zEllipsis = (const char*)sqlite3_value_text(apVal[3]); case 3: zEnd = (const char*)sqlite3_value_text(apVal[2]); case 2: zStart = (const char*)sqlite3_value_text(apVal[1]); } | | | 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 | if( fts3FunctionArg(pContext, "snippet", apVal[0], &pCsr) ) return; switch( nVal ){ case 4: zEllipsis = (const char*)sqlite3_value_text(apVal[3]); case 3: zEnd = (const char*)sqlite3_value_text(apVal[2]); case 2: zStart = (const char*)sqlite3_value_text(apVal[1]); } if( !zEllipsis || !zEnd || !zStart ){ sqlite3_result_error_nomem(pContext); }else if( SQLITE_OK==fts3CursorSeek(pContext, pCsr) ){ sqlite3Fts3Snippet(pContext, pCsr, zStart, zEnd, zEllipsis); } } /* |
︙ | ︙ |
Changes to test/fts3cov.test.
︙ | ︙ | |||
344 345 346 347 348 349 350 | INSERT INTO xx VALUES('one two three'); INSERT INTO xx VALUES('four five six'); DELETE FROM xx WHERE docid = 1; } execsql { SELECT * FROM xx WHERE xx MATCH 'two' } } {} | | > > > > > > > | > > > > > > > > > > > > > > | 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 | INSERT INTO xx VALUES('one two three'); INSERT INTO xx VALUES('four five six'); DELETE FROM xx WHERE docid = 1; } execsql { SELECT * FROM xx WHERE xx MATCH 'two' } } {} do_malloc_test fts3cov-12 -sqlprep { CREATE VIRTUAL TABLE t12 USING fts3; INSERT INTO t12 VALUES('is one of the two togther'); BEGIN; INSERT INTO t12 VALUES('one which was appropriate at the time'); } -sqlbody { SELECT * FROM t12 WHERE t12 MATCH 'one' } do_malloc_test fts3cov-13 -sqlprep { PRAGMA encoding = 'UTF-16'; CREATE VIRTUAL TABLE t13 USING fts3; INSERT INTO t13 VALUES('two scalar functions'); INSERT INTO t13 VALUES('scalar two functions'); INSERT INTO t13 VALUES('functions scalar two'); } -sqlbody { SELECT snippet(t13, '%%', '%%', '#') FROM t13 WHERE t13 MATCH 'two'; SELECT snippet(t13, '%%', '%%') FROM t13 WHERE t13 MATCH 'two'; SELECT snippet(t13, '%%') FROM t13 WHERE t13 MATCH 'two'; } finish_test |