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 | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
06b72b007393dc34d75a8bb16ce0e450 |
User & Date: | dan 2009-12-12 19:15:28 |
Context
2009-12-12
| ||
23:57 | Fix some documentation comments in sqlite.h.in. No functional code changes. check-in: c16b9bec user: drh tags: trunk | |
19:15 | Tests to cover a few extra branches in fts3.c. check-in: 06b72b00 user: dan tags: trunk | |
16:04 | Further fts3 coverage tests. check-in: d2a8c0f6 user: dan tags: trunk | |
Changes
Changes to ext/fts3/fts3.c.
813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 .... 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 .... 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 |
/* 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 && rc!=SQLITE_OK ){ sqlite3_result_error_code(pContext, rc); } return rc; } }else{ return SQLITE_OK; } ................................................................................ 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; /* 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 ) return rc; 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 ................................................................................ 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( !zStart || !zEnd || !zEllipsis ){ sqlite3_result_error_nomem(pContext); }else if( SQLITE_OK==fts3CursorSeek(pContext, pCsr) ){ sqlite3Fts3Snippet(pContext, pCsr, zStart, zEnd, zEllipsis); } } /* |
| | | | |
813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 .... 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 .... 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 |
/* 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; } ................................................................................ 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 ................................................................................ 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 351 352 |
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' }
} {}
finish_test
|
< > > > > > > > > > > > > > > > > > > > > > > |
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 |