Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Add some missing comments to fts3 files. No source code changes. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
b6402b2065b844acb3f1bb94ad964568 |
User & Date: | dan 2009-11-21 03:03:22.000 |
Context
2009-11-23
| ||
13:17 | Bump the version number to 3.6.21. (check-in: 39214aee65 user: drh tags: trunk) | |
2009-11-21
| ||
03:03 | Add some missing comments to fts3 files. No source code changes. (check-in: b6402b2065 user: dan tags: trunk) | |
01:33 | Fix a bug in transaction rollback during backup when the CODEC is enabled that can result in a corrupt backup file. This is only a problem when SQLITE_HAS_CODEC is defined. (check-in: f3398fc4db user: drh tags: trunk) | |
Changes
Changes to ext/fts3/fts3.c.
︙ | ︙ | |||
1256 1257 1258 1259 1260 1261 1262 1263 1264 | #define MERGE_OR 4 /* D + D -> D */ #define MERGE_POS_OR 5 /* P + P -> P */ #define MERGE_PHRASE 6 /* P + P -> D */ #define MERGE_POS_PHRASE 7 /* P + P -> P */ #define MERGE_NEAR 8 /* P + P -> D */ #define MERGE_POS_NEAR 9 /* P + P -> P */ static int fts3DoclistMerge( int mergetype, /* One of the MERGE_XXX constants */ | > > > > > > > > > > | | | 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 | #define MERGE_OR 4 /* D + D -> D */ #define MERGE_POS_OR 5 /* P + P -> P */ #define MERGE_PHRASE 6 /* P + P -> D */ #define MERGE_POS_PHRASE 7 /* P + P -> P */ #define MERGE_NEAR 8 /* P + P -> D */ #define MERGE_POS_NEAR 9 /* P + P -> P */ /* ** Merge the two doclists passed in buffer a1 (size n1 bytes) and a2 ** (size n2 bytes). The output is written to pre-allocated buffer aBuffer, ** which is guaranteed to be large enough to hold the results. The number ** of bytes written to aBuffer is stored in *pnBuffer before returning. ** ** If successful, SQLITE_OK is returned. Otherwise, if a malloc error ** occurs while allocating a temporary buffer as part of the merge operation, ** SQLITE_NOMEM is returned. */ static int fts3DoclistMerge( int mergetype, /* One of the MERGE_XXX constants */ int nParam1, /* Used by MERGE_NEAR and MERGE_POS_NEAR */ int nParam2, /* Used by MERGE_NEAR and MERGE_POS_NEAR */ char *aBuffer, /* Pre-allocated output buffer */ int *pnBuffer, /* OUT: Bytes written to aBuffer */ char *a1, /* Buffer containing first doclist */ int n1, /* Size of buffer a1 */ char *a2, /* Buffer containing second doclist */ int n2 /* Size of buffer a2 */ ){ |
︙ | ︙ | |||
1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 | typedef struct TermSelect TermSelect; struct TermSelect { int isReqPos; char *aOutput; /* Malloc'd output buffer */ int nOutput; /* Size of output in bytes */ }; static int fts3TermSelectCb( Fts3Table *p, /* Virtual table object */ void *pContext, /* Pointer to TermSelect structure */ char *zTerm, int nTerm, char *aDoclist, int nDoclist | > > > > > | 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 | typedef struct TermSelect TermSelect; struct TermSelect { int isReqPos; char *aOutput; /* Malloc'd output buffer */ int nOutput; /* Size of output in bytes */ }; /* ** This function is used as the sqlite3Fts3SegReaderIterate() callback when ** querying the full-text index for a doclist associated with a term or ** term-prefix. */ static int fts3TermSelectCb( Fts3Table *p, /* Virtual table object */ void *pContext, /* Pointer to TermSelect structure */ char *zTerm, int nTerm, char *aDoclist, int nDoclist |
︙ | ︙ | |||
1580 1581 1582 1583 1584 1585 1586 | sqlite3_free(apSegment); return rc; } /* ** Return a DocList corresponding to the phrase *pPhrase. | < < < | 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 | sqlite3_free(apSegment); return rc; } /* ** Return a DocList corresponding to the phrase *pPhrase. */ static int fts3PhraseSelect( Fts3Table *p, /* Virtual table handle */ Fts3Phrase *pPhrase, /* Phrase to return a doclist for */ int isReqPos, /* True if output should contain positions */ char **paOut, /* OUT: Pointer to malloc'd result buffer */ int *pnOut /* OUT: Size of buffer at *paOut */ |
︙ | ︙ | |||
1643 1644 1645 1646 1647 1648 1649 | }else{ sqlite3_free(pOut); } return rc; } /* | | | | 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 | }else{ sqlite3_free(pOut); } return rc; } /* ** Evaluate the full-text expression pExpr against fts3 table pTab. Store ** the resulting doclist in *paOut and *pnOut. */ static int evalFts3Expr( Fts3Table *p, /* Virtual table handle */ Fts3Expr *pExpr, /* Parsed fts3 expression */ char **paOut, /* OUT: Pointer to malloc'd result buffer */ int *pnOut /* OUT: Size of buffer at *paOut */ ){ |
︙ | ︙ | |||
1831 1832 1833 1834 1835 1836 1837 | ** This is the xEof method of the virtual table. SQLite calls this ** routine to find out if it has reached the end of a result set. */ static int fts3EofMethod(sqlite3_vtab_cursor *pCursor){ return ((Fts3Cursor *)pCursor)->isEof; } | > | | 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 | ** This is the xEof method of the virtual table. SQLite calls this ** routine to find out if it has reached the end of a result set. */ static int fts3EofMethod(sqlite3_vtab_cursor *pCursor){ return ((Fts3Cursor *)pCursor)->isEof; } /* ** This is the xColumn method of the virtual table. The SQLite ** core calls this method during a query when it needs the value ** of a column from the virtual table. This method needs to use ** one of the sqlite3_result_*() routines to store the requested ** value back in the pContext. */ static int fts3ColumnMethod(sqlite3_vtab_cursor *pCursor, sqlite3_context *pContext, int idxCol){ |
︙ | ︙ |
Changes to ext/fts3/fts3_write.c.
︙ | ︙ | |||
1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 | char *aDoclist, int nDoclist ){ SegmentWriter **ppW = (SegmentWriter **)pContext; return fts3SegWriterAdd(p, ppW, 1, zTerm, nTerm, aDoclist, nDoclist); } int sqlite3Fts3SegReaderIterate( Fts3Table *p, /* Virtual table handle */ Fts3SegReader **apSegment, /* Array of Fts3SegReader objects */ int nSegment, /* Size of apSegment array */ Fts3SegFilter *pFilter, /* Restrictions on range of iteration */ int (*xFunc)(Fts3Table *, void *, char *, int, char *, int), /* Callback */ void *pContext /* Callback context (2nd argument) */ | > > > > > > > > > > > > > > > > > > > > > > > > > | 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 | char *aDoclist, int nDoclist ){ SegmentWriter **ppW = (SegmentWriter **)pContext; return fts3SegWriterAdd(p, ppW, 1, zTerm, nTerm, aDoclist, nDoclist); } /* ** This function is used to iterate through a contiguous set of terms ** stored in the full-text index. It merges data contained in one or ** more segments to support this. ** ** The second argument is passed an array of pointers to SegReader objects ** allocated with sqlite3Fts3SegReaderNew(). This function merges the range ** of terms selected by each SegReader. If a single term is present in ** more than one segment, the associated doclists are merged. For each ** term and (possibly merged) doclist in the merged range, the callback ** function xFunc is invoked with its arguments set as follows. ** ** arg 0: Copy of 'p' parameter passed to this function ** arg 1: Copy of 'pContext' parameter passed to this function ** arg 2: Pointer to buffer containing term ** arg 3: Size of arg 2 buffer in bytes ** arg 4: Pointer to buffer containing doclist ** arg 5: Size of arg 2 buffer in bytes ** ** The 4th argument to this function is a pointer to a structure of type ** Fts3SegFilter, defined in fts3Int.h. The contents of this structure ** further restrict the range of terms that callbacks are made for and ** modify the behaviour of this function. See comments above structure ** definition for details. */ int sqlite3Fts3SegReaderIterate( Fts3Table *p, /* Virtual table handle */ Fts3SegReader **apSegment, /* Array of Fts3SegReader objects */ int nSegment, /* Size of apSegment array */ Fts3SegFilter *pFilter, /* Restrictions on range of iteration */ int (*xFunc)(Fts3Table *, void *, char *, int, char *, int), /* Callback */ void *pContext /* Callback context (2nd argument) */ |
︙ | ︙ |