|
|
@@ -111,9 +111,9 @@ extern "C" {
|
|
|
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
|
|
|
** [sqlite_version()] and [sqlite_source_id()].
|
|
|
*/
|
|
|
-#define SQLITE_VERSION "3.10.0"
|
|
|
-#define SQLITE_VERSION_NUMBER 3010000
|
|
|
-#define SQLITE_SOURCE_ID "2016-01-04 04:44:31 22abe08038cc7b66cbc25e733246d210197c9215"
|
|
|
+#define SQLITE_VERSION "3.11.0"
|
|
|
+#define SQLITE_VERSION_NUMBER 3011000
|
|
|
+#define SQLITE_SOURCE_ID "2016-01-23 00:07:51 a79c46bc61a35edbaf6112c26e8052314b0eb16a"
|
|
|
|
|
|
/*
|
|
|
** CAPI3REF: Run-Time Library Version Numbers
|
|
|
@@ -806,8 +806,13 @@ struct sqlite3_io_methods {
|
|
|
** <li>[[SQLITE_FCNTL_FILE_POINTER]]
|
|
|
** The [SQLITE_FCNTL_FILE_POINTER] opcode is used to obtain a pointer
|
|
|
** to the [sqlite3_file] object associated with a particular database
|
|
|
-** connection. See the [sqlite3_file_control()] documentation for
|
|
|
-** additional information.
|
|
|
+** connection. See also [SQLITE_FCNTL_JOURNAL_POINTER].
|
|
|
+**
|
|
|
+** <li>[[SQLITE_FCNTL_JOURNAL_POINTER]]
|
|
|
+** The [SQLITE_FCNTL_JOURNAL_POINTER] opcode is used to obtain a pointer
|
|
|
+** to the [sqlite3_file] object associated with the journal file (either
|
|
|
+** the [rollback journal] or the [write-ahead log]) for a particular database
|
|
|
+** connection. See also [SQLITE_FCNTL_FILE_POINTER].
|
|
|
**
|
|
|
** <li>[[SQLITE_FCNTL_SYNC_OMITTED]]
|
|
|
** No longer in use.
|
|
|
@@ -1022,6 +1027,7 @@ struct sqlite3_io_methods {
|
|
|
#define SQLITE_FCNTL_ZIPVFS 25
|
|
|
#define SQLITE_FCNTL_RBU 26
|
|
|
#define SQLITE_FCNTL_VFS_POINTER 27
|
|
|
+#define SQLITE_FCNTL_JOURNAL_POINTER 28
|
|
|
|
|
|
/* deprecated names */
|
|
|
#define SQLITE_GET_LOCKPROXYFILE SQLITE_FCNTL_GET_LOCKPROXYFILE
|
|
|
@@ -8052,7 +8058,7 @@ typedef struct sqlite3_rtree_query_info sqlite3_rtree_query_info;
|
|
|
#ifdef SQLITE_RTREE_INT_ONLY
|
|
|
typedef sqlite3_int64 sqlite3_rtree_dbl;
|
|
|
#else
|
|
|
- typedef double sqlite3_rtree_dbl;
|
|
|
+ typedef sqlite_double sqlite3_rtree_dbl;
|
|
|
#endif
|
|
|
|
|
|
/*
|
|
|
@@ -8224,6 +8230,9 @@ struct Fts5PhraseIter {
|
|
|
** an OOM condition or IO error), an appropriate SQLite error code is
|
|
|
** returned.
|
|
|
**
|
|
|
+** This function may be quite inefficient if used with an FTS5 table
|
|
|
+** created with the "columnsize=0" option.
|
|
|
+**
|
|
|
** xColumnText:
|
|
|
** This function attempts to retrieve the text of column iCol of the
|
|
|
** current document. If successful, (*pz) is set to point to a buffer
|
|
|
@@ -8244,15 +8253,29 @@ struct Fts5PhraseIter {
|
|
|
** the query within the current row. Return SQLITE_OK if successful, or
|
|
|
** an error code (i.e. SQLITE_NOMEM) if an error occurs.
|
|
|
**
|
|
|
+** This API can be quite slow if used with an FTS5 table created with the
|
|
|
+** "detail=none" or "detail=column" option. If the FTS5 table is created
|
|
|
+** with either "detail=none" or "detail=column" and "content=" option
|
|
|
+** (i.e. if it is a contentless table), then this API always returns 0.
|
|
|
+**
|
|
|
** xInst:
|
|
|
** Query for the details of phrase match iIdx within the current row.
|
|
|
** Phrase matches are numbered starting from zero, so the iIdx argument
|
|
|
** should be greater than or equal to zero and smaller than the value
|
|
|
** output by xInstCount().
|
|
|
**
|
|
|
+** Usually, output parameter *piPhrase is set to the phrase number, *piCol
|
|
|
+** to the column in which it occurs and *piOff the token offset of the
|
|
|
+** first token of the phrase. The exception is if the table was created
|
|
|
+** with the offsets=0 option specified. In this case *piOff is always
|
|
|
+** set to -1.
|
|
|
+**
|
|
|
** Returns SQLITE_OK if successful, or an error code (i.e. SQLITE_NOMEM)
|
|
|
** if an error occurs.
|
|
|
**
|
|
|
+** This API can be quite slow if used with an FTS5 table created with the
|
|
|
+** "detail=none" or "detail=column" option.
|
|
|
+**
|
|
|
** xRowid:
|
|
|
** Returns the rowid of the current row.
|
|
|
**
|
|
|
@@ -8336,7 +8359,7 @@ struct Fts5PhraseIter {
|
|
|
** Fts5PhraseIter iter;
|
|
|
** int iCol, iOff;
|
|
|
** for(pApi->xPhraseFirst(pFts, iPhrase, &iter, &iCol, &iOff);
|
|
|
-** iOff>=0;
|
|
|
+** iCol>=0;
|
|
|
** pApi->xPhraseNext(pFts, &iter, &iCol, &iOff)
|
|
|
** ){
|
|
|
** // An instance of phrase iPhrase at offset iOff of column iCol
|
|
|
@@ -8344,13 +8367,51 @@ struct Fts5PhraseIter {
|
|
|
**
|
|
|
** The Fts5PhraseIter structure is defined above. Applications should not
|
|
|
** modify this structure directly - it should only be used as shown above
|
|
|
-** with the xPhraseFirst() and xPhraseNext() API methods.
|
|
|
+** with the xPhraseFirst() and xPhraseNext() API methods (and by
|
|
|
+** xPhraseFirstColumn() and xPhraseNextColumn() as illustrated below).
|
|
|
+**
|
|
|
+** This API can be quite slow if used with an FTS5 table created with the
|
|
|
+** "detail=none" or "detail=column" option. If the FTS5 table is created
|
|
|
+** with either "detail=none" or "detail=column" and "content=" option
|
|
|
+** (i.e. if it is a contentless table), then this API always iterates
|
|
|
+** through an empty set (all calls to xPhraseFirst() set iCol to -1).
|
|
|
**
|
|
|
** xPhraseNext()
|
|
|
** See xPhraseFirst above.
|
|
|
+**
|
|
|
+** xPhraseFirstColumn()
|
|
|
+** This function and xPhraseNextColumn() are similar to the xPhraseFirst()
|
|
|
+** and xPhraseNext() APIs described above. The difference is that instead
|
|
|
+** of iterating through all instances of a phrase in the current row, these
|
|
|
+** APIs are used to iterate through the set of columns in the current row
|
|
|
+** that contain one or more instances of a specified phrase. For example:
|
|
|
+**
|
|
|
+** Fts5PhraseIter iter;
|
|
|
+** int iCol;
|
|
|
+** for(pApi->xPhraseFirstColumn(pFts, iPhrase, &iter, &iCol);
|
|
|
+** iCol>=0;
|
|
|
+** pApi->xPhraseNextColumn(pFts, &iter, &iCol)
|
|
|
+** ){
|
|
|
+** // Column iCol contains at least one instance of phrase iPhrase
|
|
|
+** }
|
|
|
+**
|
|
|
+** This API can be quite slow if used with an FTS5 table created with the
|
|
|
+** "detail=none" option. If the FTS5 table is created with either
|
|
|
+** "detail=none" "content=" option (i.e. if it is a contentless table),
|
|
|
+** then this API always iterates through an empty set (all calls to
|
|
|
+** xPhraseFirstColumn() set iCol to -1).
|
|
|
+**
|
|
|
+** The information accessed using this API and its companion
|
|
|
+** xPhraseFirstColumn() may also be obtained using xPhraseFirst/xPhraseNext
|
|
|
+** (or xInst/xInstCount). The chief advantage of this API is that it is
|
|
|
+** significantly more efficient than those alternatives when used with
|
|
|
+** "detail=column" tables.
|
|
|
+**
|
|
|
+** xPhraseNextColumn()
|
|
|
+** See xPhraseFirstColumn above.
|
|
|
*/
|
|
|
struct Fts5ExtensionApi {
|
|
|
- int iVersion; /* Currently always set to 1 */
|
|
|
+ int iVersion; /* Currently always set to 3 */
|
|
|
|
|
|
void *(*xUserData)(Fts5Context*);
|
|
|
|
|
|
@@ -8380,8 +8441,11 @@ struct Fts5ExtensionApi {
|
|
|
int (*xSetAuxdata)(Fts5Context*, void *pAux, void(*xDelete)(void*));
|
|
|
void *(*xGetAuxdata)(Fts5Context*, int bClear);
|
|
|
|
|
|
- void (*xPhraseFirst)(Fts5Context*, int iPhrase, Fts5PhraseIter*, int*, int*);
|
|
|
+ int (*xPhraseFirst)(Fts5Context*, int iPhrase, Fts5PhraseIter*, int*, int*);
|
|
|
void (*xPhraseNext)(Fts5Context*, Fts5PhraseIter*, int *piCol, int *piOff);
|
|
|
+
|
|
|
+ int (*xPhraseFirstColumn)(Fts5Context*, int iPhrase, Fts5PhraseIter*, int*);
|
|
|
+ void (*xPhraseNextColumn)(Fts5Context*, Fts5PhraseIter*, int *piCol);
|
|
|
};
|
|
|
|
|
|
/*
|