1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-07-30 19:03:16 +03:00

Fix various documentation typos suggested by Mark Benningfield.

No changes to code.

FossilOrigin-Name: 08f09dc4f986a27f4e4e69f8226dbfaf0cfe1269cefc2830bf0fbef7b9bbda48
This commit is contained in:
drh
2019-11-26 14:24:12 +00:00
parent 51690f26bc
commit 2bbcaee833
5 changed files with 88 additions and 94 deletions

View File

@ -159,7 +159,7 @@ struct Fts5PhraseIter {
** **
** xSetAuxdata(pFts5, pAux, xDelete) ** xSetAuxdata(pFts5, pAux, xDelete)
** **
** Save the pointer passed as the second argument as the extension functions ** Save the pointer passed as the second argument as the extension function's
** "auxiliary data". The pointer may then be retrieved by the current or any ** "auxiliary data". The pointer may then be retrieved by the current or any
** future invocation of the same fts5 extension function made as part of ** future invocation of the same fts5 extension function made as part of
** the same MATCH query using the xGetAuxdata() API. ** the same MATCH query using the xGetAuxdata() API.
@ -401,8 +401,8 @@ struct Fts5ExtensionApi {
** **
** There are several ways to approach this in FTS5: ** There are several ways to approach this in FTS5:
** **
** <ol><li> By mapping all synonyms to a single token. In this case, the ** <ol><li> By mapping all synonyms to a single token. In this case, using
** In the above example, this means that the tokenizer returns the ** the above example, this means that the tokenizer returns the
** same token for inputs "first" and "1st". Say that token is in ** same token for inputs "first" and "1st". Say that token is in
** fact "first", so that when the user inserts the document "I won ** fact "first", so that when the user inserts the document "I won
** 1st place" entries are added to the index for tokens "i", "won", ** 1st place" entries are added to the index for tokens "i", "won",

View File

@ -200,7 +200,7 @@ int sqlite3session_attach(
** The second argument (xFilter) is the "filter callback". For changes to rows ** The second argument (xFilter) is the "filter callback". For changes to rows
** in tables that are not attached to the Session object, the filter is called ** in tables that are not attached to the Session object, the filter is called
** to determine whether changes to the table's rows should be tracked or not. ** to determine whether changes to the table's rows should be tracked or not.
** If xFilter returns 0, changes is not tracked. Note that once a table is ** If xFilter returns 0, changes are not tracked. Note that once a table is
** attached, xFilter will not be called again. ** attached, xFilter will not be called again.
*/ */
void sqlite3session_table_filter( void sqlite3session_table_filter(
@ -374,7 +374,7 @@ int sqlite3session_changeset(
** It an error if database zFrom does not exist or does not contain the ** It an error if database zFrom does not exist or does not contain the
** required compatible table. ** required compatible table.
** **
** If the operation successful, SQLITE_OK is returned. Otherwise, an SQLite ** If the operation is successful, SQLITE_OK is returned. Otherwise, an SQLite
** error code. In this case, if argument pzErrMsg is not NULL, *pzErrMsg ** error code. In this case, if argument pzErrMsg is not NULL, *pzErrMsg
** may be set to point to a buffer containing an English language error ** may be set to point to a buffer containing an English language error
** message. It is the responsibility of the caller to free this buffer using ** message. It is the responsibility of the caller to free this buffer using
@ -511,7 +511,7 @@ int sqlite3changeset_start_v2(
** CAPI3REF: Advance A Changeset Iterator ** CAPI3REF: Advance A Changeset Iterator
** METHOD: sqlite3_changeset_iter ** METHOD: sqlite3_changeset_iter
** **
** This function may only be used with iterators created by function ** This function may only be used with iterators created by the function
** [sqlite3changeset_start()]. If it is called on an iterator passed to ** [sqlite3changeset_start()]. If it is called on an iterator passed to
** a conflict-handler callback by [sqlite3changeset_apply()], SQLITE_MISUSE ** a conflict-handler callback by [sqlite3changeset_apply()], SQLITE_MISUSE
** is returned and the call has no effect. ** is returned and the call has no effect.
@ -927,8 +927,8 @@ int sqlite3changegroup_new(sqlite3_changegroup **pp);
** case, this function fails with SQLITE_SCHEMA. If the input changeset ** case, this function fails with SQLITE_SCHEMA. If the input changeset
** appears to be corrupt and the corruption is detected, SQLITE_CORRUPT is ** appears to be corrupt and the corruption is detected, SQLITE_CORRUPT is
** returned. Or, if an out-of-memory condition occurs during processing, this ** returned. Or, if an out-of-memory condition occurs during processing, this
** function returns SQLITE_NOMEM. In all cases, if an error occurs the ** function returns SQLITE_NOMEM. In all cases, if an error occurs the state
** final contents of the changegroup is undefined. ** of the final contents of the changegroup is undefined.
** **
** If no error occurs, SQLITE_OK is returned. ** If no error occurs, SQLITE_OK is returned.
*/ */
@ -1103,7 +1103,7 @@ void sqlite3changegroup_delete(sqlite3_changegroup*);
** **
** It is safe to execute SQL statements, including those that write to the ** It is safe to execute SQL statements, including those that write to the
** table that the callback related to, from within the xConflict callback. ** table that the callback related to, from within the xConflict callback.
** This can be used to further customize the applications conflict ** This can be used to further customize the application's conflict
** resolution strategy. ** resolution strategy.
** **
** All changes made by these functions are enclosed in a savepoint transaction. ** All changes made by these functions are enclosed in a savepoint transaction.
@ -1413,7 +1413,7 @@ int sqlite3rebaser_configure(
** **
** Argument pIn must point to a buffer containing a changeset nIn bytes ** Argument pIn must point to a buffer containing a changeset nIn bytes
** in size. This function allocates and populates a buffer with a copy ** in size. This function allocates and populates a buffer with a copy
** of the changeset rebased rebased according to the configuration of the ** of the changeset rebased according to the configuration of the
** rebaser object passed as the first argument. If successful, (*ppOut) ** rebaser object passed as the first argument. If successful, (*ppOut)
** is set to point to the new buffer containing the rebased changeset and ** is set to point to the new buffer containing the rebased changeset and
** (*pnOut) to its size in bytes and SQLITE_OK returned. It is the ** (*pnOut) to its size in bytes and SQLITE_OK returned. It is the

View File

@ -1,5 +1,5 @@
C Fix\sto\scheck-in\s[5d9a369301a65f32]\sso\sthat\sit\scompiles\swithout\sSQLITE_DEBUG. C Fix\svarious\sdocumentation\stypos\ssuggested\sby\sMark\sBenningfield.\nNo\schanges\sto\scode.
D 2019-11-26T11:10:59.831 D 2019-11-26T14:24:12.657
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@ -109,7 +109,7 @@ F ext/fts3/unicode/UnicodeData.txt cd07314edb62d49fde34debdaf92fa2aa69011e7
F ext/fts3/unicode/mkunicode.tcl bf7fcaa6d68e6d38223467983785d054f1cff4d9e3905dd51f6ed8801bb590d5 F ext/fts3/unicode/mkunicode.tcl bf7fcaa6d68e6d38223467983785d054f1cff4d9e3905dd51f6ed8801bb590d5
F ext/fts3/unicode/parseunicode.tcl a981bd6466d12dd17967515801c3ff23f74a281be1a03cf1e6f52a6959fc77eb F ext/fts3/unicode/parseunicode.tcl a981bd6466d12dd17967515801c3ff23f74a281be1a03cf1e6f52a6959fc77eb
F ext/fts5/extract_api_docs.tcl a36e54ec777172ddd3f9a88daf593b00848368e0 F ext/fts5/extract_api_docs.tcl a36e54ec777172ddd3f9a88daf593b00848368e0
F ext/fts5/fts5.h 7c9da96f2b9dcfa4dd94081fb2d87ec418d8cdb35b25df56756c334b6b558fd7 F ext/fts5/fts5.h c132a9323f22a972c4c93a8d5a3d901113a6e612faf30ca8e695788438c5ca2a
F ext/fts5/fts5Int.h d7cbc214ee167496f70905667e18f73ea0402f7ef09236ce305e117e0efc866a F ext/fts5/fts5Int.h d7cbc214ee167496f70905667e18f73ea0402f7ef09236ce305e117e0efc866a
F ext/fts5/fts5_aux.c dcc627d8b6e3fc773db528ff67b39955dab7b51628f9dba8e15849e5bedfd7fa F ext/fts5/fts5_aux.c dcc627d8b6e3fc773db528ff67b39955dab7b51628f9dba8e15849e5bedfd7fa
F ext/fts5/fts5_buffer.c 5a5fe0159752c0fb0a5a93c722e9db2662822709490769d482b76a6dc8aaca70 F ext/fts5/fts5_buffer.c 5a5fe0159752c0fb0a5a93c722e9db2662822709490769d482b76a6dc8aaca70
@ -440,7 +440,7 @@ F ext/session/sessionrebase.test ccfa716b23bd1d3b03217ee58cfd90c78d4b99f53e6a9a2
F ext/session/sessionstat1.test 218d351cf9fcd6648f125a26b607b140310160184723c2666091b54450a68fb5 F ext/session/sessionstat1.test 218d351cf9fcd6648f125a26b607b140310160184723c2666091b54450a68fb5
F ext/session/sessionwor.test 67b5ab91d4f93ce65ff1f58240ac5ddf73f8670facc1ffa49cef56293d52818d F ext/session/sessionwor.test 67b5ab91d4f93ce65ff1f58240ac5ddf73f8670facc1ffa49cef56293d52818d
F ext/session/sqlite3session.c a4dfb372f270df93422b0dc7666fd46849e6979b62a152f11287c21eed4ac21b F ext/session/sqlite3session.c a4dfb372f270df93422b0dc7666fd46849e6979b62a152f11287c21eed4ac21b
F ext/session/sqlite3session.h 919be6649d39d6413ce7a63fc3e3bca3270e18bc2d57ad4040a70007b9e54397 F ext/session/sqlite3session.h a2db5b72b938d12c727b4b4ec632254ca493670a9c0de597af3271a7f774fc57
F ext/session/test_session.c 98797aba475a799376c9a42214f2d1debf2d0c3cb657d9c8bbf4f70bf3fb4aec F ext/session/test_session.c 98797aba475a799376c9a42214f2d1debf2d0c3cb657d9c8bbf4f70bf3fb4aec
F ext/userauth/sqlite3userauth.h 7f3ea8c4686db8e40b0a0e7a8e0b00fac13aa7a3 F ext/userauth/sqlite3userauth.h 7f3ea8c4686db8e40b0a0e7a8e0b00fac13aa7a3
F ext/userauth/user-auth.txt e6641021a9210364665fe625d067617d03f27b04 F ext/userauth/user-auth.txt e6641021a9210364665fe625d067617d03f27b04
@ -528,7 +528,7 @@ F src/resolve.c 2f8fb48e61d0006031df27e53810b6767972526d768d3cc6888435dc350c4c7a
F src/rowset.c d977b011993aaea002cab3e0bb2ce50cf346000dff94e944d547b989f4b1fe93 F src/rowset.c d977b011993aaea002cab3e0bb2ce50cf346000dff94e944d547b989f4b1fe93
F src/select.c f403b7bd2304d4dfd5ad2614cc0ad3386a97af707922882bdabba4c14ce12975 F src/select.c f403b7bd2304d4dfd5ad2614cc0ad3386a97af707922882bdabba4c14ce12975
F src/shell.c.in 4a3a9e1c11847b1904f2b01d087af1c052f660902755abab457cab1756817ded F src/shell.c.in 4a3a9e1c11847b1904f2b01d087af1c052f660902755abab457cab1756817ded
F src/sqlite.h.in 4fe42f27a7be44586bbd94f49f2b097ef8a1053c747d82f135456c7f5381c85a F src/sqlite.h.in 1eb869c09c8f9cc364b0edf074ac240e90bb5c56aef07d07822c71ad4f41fc93
F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
F src/sqlite3ext.h 72af51aa4e912e14cd495fb6e7fac65f0940db80ed950d90911aff292cc47ce2 F src/sqlite3ext.h 72af51aa4e912e14cd495fb6e7fac65f0940db80ed950d90911aff292cc47ce2
F src/sqliteInt.h 98bc9562acfc361e34182aa25b00e2c73095732ddd3ba4158f984b94f5601f96 F src/sqliteInt.h 98bc9562acfc361e34182aa25b00e2c73095732ddd3ba4158f984b94f5601f96
@ -1851,7 +1851,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
P 4dbd398d640852d4a696d68c72ee039968023d402a8053b5e6b4ef1d75e982a8 P fefe2d046725254367f9f82a8c8cb137e8b75dbbf4bc48debf0649479ff2f0c2
R c30d91ad566e8c3fd02ab81ce2924a94 R 2cbc86068e6280db02b2343a5ae4d180
U drh U drh
Z 5a7fe38d50394448e46848d424b8b569 Z bfb42d33cd846c85cfceaf8d7b65a29d

View File

@ -1 +1 @@
fefe2d046725254367f9f82a8c8cb137e8b75dbbf4bc48debf0649479ff2f0c2 08f09dc4f986a27f4e4e69f8226dbfaf0cfe1269cefc2830bf0fbef7b9bbda48

View File

@ -982,16 +982,16 @@ struct sqlite3_io_methods {
** ^The [SQLITE_FCNTL_BUSYHANDLER] ** ^The [SQLITE_FCNTL_BUSYHANDLER]
** file-control may be invoked by SQLite on the database file handle ** file-control may be invoked by SQLite on the database file handle
** shortly after it is opened in order to provide a custom VFS with access ** shortly after it is opened in order to provide a custom VFS with access
** to the connections busy-handler callback. The argument is of type (void **) ** to the connection's busy-handler callback. The argument is of type (void**)
** - an array of two (void *) values. The first (void *) actually points ** - an array of two (void *) values. The first (void *) actually points
** to a function of type (int (*)(void *)). In order to invoke the connections ** to a function of type (int (*)(void *)). In order to invoke the connection's
** busy-handler, this function should be invoked with the second (void *) in ** busy-handler, this function should be invoked with the second (void *) in
** the array as the only argument. If it returns non-zero, then the operation ** the array as the only argument. If it returns non-zero, then the operation
** should be retried. If it returns zero, the custom VFS should abandon the ** should be retried. If it returns zero, the custom VFS should abandon the
** current operation. ** current operation.
** **
** <li>[[SQLITE_FCNTL_TEMPFILENAME]] ** <li>[[SQLITE_FCNTL_TEMPFILENAME]]
** ^Application can invoke the [SQLITE_FCNTL_TEMPFILENAME] file-control ** ^Applications can invoke the [SQLITE_FCNTL_TEMPFILENAME] file-control
** to have SQLite generate a ** to have SQLite generate a
** temporary filename using the same algorithm that is followed to generate ** temporary filename using the same algorithm that is followed to generate
** temporary filenames for TEMP tables and other internal uses. The ** temporary filenames for TEMP tables and other internal uses. The
@ -1104,7 +1104,7 @@ struct sqlite3_io_methods {
** not provide a mechanism to detect changes to MAIN only. Also, the ** not provide a mechanism to detect changes to MAIN only. Also, the
** [sqlite3_total_changes()] interface responds to internal changes only and ** [sqlite3_total_changes()] interface responds to internal changes only and
** omits changes made by other database connections. The ** omits changes made by other database connections. The
** [PRAGMA data_version] command provide a mechanism to detect changes to ** [PRAGMA data_version] command provides a mechanism to detect changes to
** a single attached database that occur due to other database connections, ** a single attached database that occur due to other database connections,
** but omits changes implemented by the database connection on which it is ** but omits changes implemented by the database connection on which it is
** called. This file control is the only mechanism to detect changes that ** called. This file control is the only mechanism to detect changes that
@ -1192,10 +1192,10 @@ typedef struct sqlite3_api_routines sqlite3_api_routines;
** to 3 with SQLite [version 3.7.6] on [dateof:3.7.6]. Additional fields ** to 3 with SQLite [version 3.7.6] on [dateof:3.7.6]. Additional fields
** may be appended to the sqlite3_vfs object and the iVersion value ** may be appended to the sqlite3_vfs object and the iVersion value
** may increase again in future versions of SQLite. ** may increase again in future versions of SQLite.
** Note that the structure ** Note that due to an oversight, the structure
** of the sqlite3_vfs object changes in the transition from ** of the sqlite3_vfs object changed in the transition from
** SQLite [version 3.5.9] to [version 3.6.0] on [dateof:3.6.0] ** SQLite [version 3.5.9] to [version 3.6.0] on [dateof:3.6.0]
** and yet the iVersion field was not modified. ** and yet the iVersion field was not increased.
** **
** The szOsFile field is the size of the subclassed [sqlite3_file] ** The szOsFile field is the size of the subclassed [sqlite3_file]
** structure used by this VFS. mxPathname is the maximum length of ** structure used by this VFS. mxPathname is the maximum length of
@ -1286,7 +1286,7 @@ typedef struct sqlite3_api_routines sqlite3_api_routines;
** for exclusive access. ** for exclusive access.
** **
** ^At least szOsFile bytes of memory are allocated by SQLite ** ^At least szOsFile bytes of memory are allocated by SQLite
** to hold the [sqlite3_file] structure passed as the third ** to hold the [sqlite3_file] structure passed as the third
** argument to xOpen. The xOpen method does not have to ** argument to xOpen. The xOpen method does not have to
** allocate the structure; it should just fill it in. Note that ** allocate the structure; it should just fill it in. Note that
** the xOpen method must set the sqlite3_file.pMethods to either ** the xOpen method must set the sqlite3_file.pMethods to either
@ -1623,7 +1623,7 @@ int sqlite3_db_config(sqlite3*, int op, ...);
** that causes the corresponding memory allocation to fail. ** that causes the corresponding memory allocation to fail.
** **
** The xInit method initializes the memory allocator. For example, ** The xInit method initializes the memory allocator. For example,
** it might allocate any require mutexes or initialize internal data ** it might allocate any required mutexes or initialize internal data
** structures. The xShutdown method is invoked (indirectly) by ** structures. The xShutdown method is invoked (indirectly) by
** [sqlite3_shutdown()] and should deallocate any resources acquired ** [sqlite3_shutdown()] and should deallocate any resources acquired
** by xInit. The pAppData pointer is used as the only parameter to ** by xInit. The pAppData pointer is used as the only parameter to
@ -1764,7 +1764,7 @@ struct sqlite3_mem_methods {
** <dd> ^The SQLITE_CONFIG_PAGECACHE option specifies a memory pool ** <dd> ^The SQLITE_CONFIG_PAGECACHE option specifies a memory pool
** that SQLite can use for the database page cache with the default page ** that SQLite can use for the database page cache with the default page
** cache implementation. ** cache implementation.
** This configuration option is a no-op if an application-define page ** This configuration option is a no-op if an application-defined page
** cache implementation is loaded using the [SQLITE_CONFIG_PCACHE2]. ** cache implementation is loaded using the [SQLITE_CONFIG_PCACHE2].
** ^There are three arguments to SQLITE_CONFIG_PAGECACHE: A pointer to ** ^There are three arguments to SQLITE_CONFIG_PAGECACHE: A pointer to
** 8-byte aligned memory (pMem), the size of each page cache line (sz), ** 8-byte aligned memory (pMem), the size of each page cache line (sz),
@ -2249,7 +2249,7 @@ struct sqlite3_mem_methods {
** [[SQLITE_DBCONFIG_DQS_DML]] ** [[SQLITE_DBCONFIG_DQS_DML]]
** <dt>SQLITE_DBCONFIG_DQS_DML</td> ** <dt>SQLITE_DBCONFIG_DQS_DML</td>
** <dd>The SQLITE_DBCONFIG_DQS_DML option activates or deactivates ** <dd>The SQLITE_DBCONFIG_DQS_DML option activates or deactivates
** the legacy [double-quoted string literal] misfeature for DML statement ** the legacy [double-quoted string literal] misfeature for DML statements
** only, that is DELETE, INSERT, SELECT, and UPDATE statements. The ** only, that is DELETE, INSERT, SELECT, and UPDATE statements. The
** default value of this setting is determined by the [-DSQLITE_DQS] ** default value of this setting is determined by the [-DSQLITE_DQS]
** compile-time option. ** compile-time option.
@ -2510,7 +2510,7 @@ int sqlite3_total_changes(sqlite3*);
** ^The sqlite3_interrupt(D) call is in effect until all currently running ** ^The sqlite3_interrupt(D) call is in effect until all currently running
** SQL statements on [database connection] D complete. ^Any new SQL statements ** SQL statements on [database connection] D complete. ^Any new SQL statements
** that are started after the sqlite3_interrupt() call and before the ** that are started after the sqlite3_interrupt() call and before the
** running statements reaches zero are interrupted as if they had been ** running statement count reaches zero are interrupted as if they had been
** running prior to the sqlite3_interrupt() call. ^New SQL statements ** running prior to the sqlite3_interrupt() call. ^New SQL statements
** that are started after the running statement count reaches zero are ** that are started after the running statement count reaches zero are
** not effected by the sqlite3_interrupt(). ** not effected by the sqlite3_interrupt().
@ -2678,9 +2678,9 @@ int sqlite3_busy_timeout(sqlite3*, int ms);
** Cindy | 21 ** Cindy | 21
** </pre></blockquote> ** </pre></blockquote>
** **
** There are two column (M==2) and three rows (N==3). Thus the ** There are two columns (M==2) and three rows (N==3). Thus the
** result table has 8 entries. Suppose the result table is stored ** result table has 8 entries. Suppose the result table is stored
** in an array names azResult. Then azResult holds this content: ** in an array named azResult. Then azResult holds this content:
** **
** <blockquote><pre> ** <blockquote><pre>
** azResult&#91;0] = "Name"; ** azResult&#91;0] = "Name";
@ -2834,19 +2834,6 @@ char *sqlite3_vsnprintf(int,char*,const char*, va_list);
** 4 byte boundary if the [SQLITE_4_BYTE_ALIGNED_MALLOC] compile-time ** 4 byte boundary if the [SQLITE_4_BYTE_ALIGNED_MALLOC] compile-time
** option is used. ** option is used.
** **
** In SQLite version 3.5.0 and 3.5.1, it was possible to define
** the SQLITE_OMIT_MEMORY_ALLOCATION which would cause the built-in
** implementation of these routines to be omitted. That capability
** is no longer provided. Only built-in memory allocators can be used.
**
** Prior to SQLite version 3.7.10, the Windows OS interface layer called
** the system malloc() and free() directly when converting
** filenames between the UTF-8 encoding used by SQLite
** and whatever filename encoding is used by the particular Windows
** installation. Memory allocation errors were detected, but
** they were reported back as [SQLITE_CANTOPEN] or
** [SQLITE_IOERR] rather than [SQLITE_NOMEM].
**
** The pointer arguments to [sqlite3_free()] and [sqlite3_realloc()] ** The pointer arguments to [sqlite3_free()] and [sqlite3_realloc()]
** must be either NULL or else pointers obtained from a prior ** must be either NULL or else pointers obtained from a prior
** invocation of [sqlite3_malloc()] or [sqlite3_realloc()] that have ** invocation of [sqlite3_malloc()] or [sqlite3_realloc()] that have
@ -2895,7 +2882,7 @@ sqlite3_int64 sqlite3_memory_highwater(int resetFlag);
** SQLite contains a high-quality pseudo-random number generator (PRNG) used to ** SQLite contains a high-quality pseudo-random number generator (PRNG) used to
** select random [ROWID | ROWIDs] when inserting new records into a table that ** select random [ROWID | ROWIDs] when inserting new records into a table that
** already uses the largest possible [ROWID]. The PRNG is also used for ** already uses the largest possible [ROWID]. The PRNG is also used for
** the build-in random() and randomblob() SQL functions. This interface allows ** the built-in random() and randomblob() SQL functions. This interface allows
** applications to access the same PRNG for other purposes. ** applications to access the same PRNG for other purposes.
** **
** ^A call to this routine stores N bytes of randomness into buffer P. ** ^A call to this routine stores N bytes of randomness into buffer P.
@ -3496,7 +3483,7 @@ int sqlite3_open_v2(
** P is the name of the query parameter, then ** P is the name of the query parameter, then
** sqlite3_uri_parameter(F,P) returns the value of the P ** sqlite3_uri_parameter(F,P) returns the value of the P
** parameter if it exists or a NULL pointer if P does not appear as a ** parameter if it exists or a NULL pointer if P does not appear as a
** query parameter on F. If P is a query parameter of F ** query parameter on F. If P is a query parameter of F and it
** has no explicit value, then sqlite3_uri_parameter(F,P) returns ** has no explicit value, then sqlite3_uri_parameter(F,P) returns
** a pointer to an empty string. ** a pointer to an empty string.
** **
@ -3508,7 +3495,7 @@ int sqlite3_open_v2(
** sqlite3_uri_boolean(F,P,B) routines returns false (0) if the value of ** sqlite3_uri_boolean(F,P,B) routines returns false (0) if the value of
** query parameter P is one of "no", "false", or "off" in any case or ** query parameter P is one of "no", "false", or "off" in any case or
** if the value begins with a numeric zero. If P is not a query ** if the value begins with a numeric zero. If P is not a query
** parameter on F or if the value of P is does not match any of the ** parameter on F or if the value of P does not match any of the
** above, then sqlite3_uri_boolean(F,P,B) returns (B!=0). ** above, then sqlite3_uri_boolean(F,P,B) returns (B!=0).
** **
** The sqlite3_uri_int64(F,P,D) routine converts the value of P into a ** The sqlite3_uri_int64(F,P,D) routine converts the value of P into a
@ -3845,12 +3832,12 @@ int sqlite3_limit(sqlite3*, int id, int newVal);
** </li> ** </li>
** **
** <li> ** <li>
** ^If the specific value bound to [parameter | host parameter] in the ** ^If the specific value bound to a [parameter | host parameter] in the
** WHERE clause might influence the choice of query plan for a statement, ** WHERE clause might influence the choice of query plan for a statement,
** then the statement will be automatically recompiled, as if there had been ** then the statement will be automatically recompiled, as if there had been
** a schema change, on the first [sqlite3_step()] call following any change ** a schema change, on the first [sqlite3_step()] call following any change
** to the [sqlite3_bind_text | bindings] of that [parameter]. ** to the [sqlite3_bind_text | bindings] of that [parameter].
** ^The specific value of WHERE-clause [parameter] might influence the ** ^The specific value of a WHERE-clause [parameter] might influence the
** choice of query plan if the parameter is the left-hand side of a [LIKE] ** choice of query plan if the parameter is the left-hand side of a [LIKE]
** or [GLOB] operator or if the parameter is compared to an indexed column ** or [GLOB] operator or if the parameter is compared to an indexed column
** and the [SQLITE_ENABLE_STAT4] compile-time option is enabled. ** and the [SQLITE_ENABLE_STAT4] compile-time option is enabled.
@ -4359,7 +4346,7 @@ const void *sqlite3_column_name16(sqlite3_stmt*, int N);
** **
** ^If the Nth column returned by the statement is an expression or ** ^If the Nth column returned by the statement is an expression or
** subquery and is not a column value, then all of these functions return ** subquery and is not a column value, then all of these functions return
** NULL. ^These routine might also return NULL if a memory allocation error ** NULL. ^These routines might also return NULL if a memory allocation error
** occurs. ^Otherwise, they return the name of the attached database, table, ** occurs. ^Otherwise, they return the name of the attached database, table,
** or column that query result column was extracted from. ** or column that query result column was extracted from.
** **
@ -4369,10 +4356,6 @@ const void *sqlite3_column_name16(sqlite3_stmt*, int N);
** ^These APIs are only available if the library was compiled with the ** ^These APIs are only available if the library was compiled with the
** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol.
** **
** If two or more threads call one or more of these routines against the same
** prepared statement and column at the same time then the results are
** undefined.
**
** If two or more threads call one or more ** If two or more threads call one or more
** [sqlite3_column_database_name | column metadata interfaces] ** [sqlite3_column_database_name | column metadata interfaces]
** for the same [prepared statement] and result column ** for the same [prepared statement] and result column
@ -4509,7 +4492,7 @@ int sqlite3_step(sqlite3_stmt*);
** ^The sqlite3_data_count(P) interface returns the number of columns in the ** ^The sqlite3_data_count(P) interface returns the number of columns in the
** current row of the result set of [prepared statement] P. ** current row of the result set of [prepared statement] P.
** ^If prepared statement P does not have results ready to return ** ^If prepared statement P does not have results ready to return
** (via calls to the [sqlite3_column_int | sqlite3_column_*()] of ** (via calls to the [sqlite3_column_int | sqlite3_column()] family of
** interfaces) then sqlite3_data_count(P) returns 0. ** interfaces) then sqlite3_data_count(P) returns 0.
** ^The sqlite3_data_count(P) routine also returns 0 if P is a NULL pointer. ** ^The sqlite3_data_count(P) routine also returns 0 if P is a NULL pointer.
** ^The sqlite3_data_count(P) routine returns 0 if the previous call to ** ^The sqlite3_data_count(P) routine returns 0 if the previous call to
@ -5011,9 +4994,12 @@ int sqlite3_create_window_function(
** to [sqlite3_create_function()], [sqlite3_create_function16()], or ** to [sqlite3_create_function()], [sqlite3_create_function16()], or
** [sqlite3_create_function_v2()]. ** [sqlite3_create_function_v2()].
** **
** The SQLITE_DETERMINISTIC flag means that the new function will always ** The SQLITE_DETERMINISTIC flag means that the new function always gives
** maps the same inputs into the same output. The abs() function is ** the same output when the input parameters are the same. The abs() function
** deterministic, for example, but randomblob() is not. ** is deterministic, for example, but randomblob() is not. Functions must
** be deterministic in order to be used in certain contexts such as
** [CHECK constraints] or [generated columns]. SQLite might also optimize
** deterministic functions by factoring them out of inner loops.
** **
** The SQLITE_DIRECTONLY flag means that the function may only be invoked ** The SQLITE_DIRECTONLY flag means that the function may only be invoked
** from top-level SQL, and cannot be used in VIEWs or TRIGGERs. This is ** from top-level SQL, and cannot be used in VIEWs or TRIGGERs. This is
@ -5092,8 +5078,8 @@ SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int64,int),
** **
** These routines extract type, size, and content information from ** These routines extract type, size, and content information from
** [protected sqlite3_value] objects. Protected sqlite3_value objects ** [protected sqlite3_value] objects. Protected sqlite3_value objects
** are used to pass parameter information into implementation of ** are used to pass parameter information into the functions that
** [application-defined SQL functions] and [virtual tables]. ** implement [application-defined SQL functions] and [virtual tables].
** **
** These routines work only with [protected sqlite3_value] objects. ** These routines work only with [protected sqlite3_value] objects.
** Any attempt to use these routines on an [unprotected sqlite3_value] ** Any attempt to use these routines on an [unprotected sqlite3_value]
@ -5150,7 +5136,7 @@ SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int64,int),
** ^The sqlite3_value_frombind(X) interface returns non-zero if the ** ^The sqlite3_value_frombind(X) interface returns non-zero if the
** value X originated from one of the [sqlite3_bind_int|sqlite3_bind()] ** value X originated from one of the [sqlite3_bind_int|sqlite3_bind()]
** interfaces. ^If X comes from an SQL literal value, or a table column, ** interfaces. ^If X comes from an SQL literal value, or a table column,
** and expression, then sqlite3_value_frombind(X) returns zero. ** or an expression, then sqlite3_value_frombind(X) returns zero.
** **
** Please pay particular attention to the fact that the pointer returned ** Please pay particular attention to the fact that the pointer returned
** from [sqlite3_value_blob()], [sqlite3_value_text()], or ** from [sqlite3_value_blob()], [sqlite3_value_text()], or
@ -5236,8 +5222,8 @@ void sqlite3_value_free(sqlite3_value*);
** routine to allocate memory for storing their state. ** routine to allocate memory for storing their state.
** **
** ^The first time the sqlite3_aggregate_context(C,N) routine is called ** ^The first time the sqlite3_aggregate_context(C,N) routine is called
** for a particular aggregate function, SQLite ** for a particular aggregate function, SQLite allocates
** allocates N of memory, zeroes out that memory, and returns a pointer ** N bytes of memory, zeroes out that memory, and returns a pointer
** to the new memory. ^On second and subsequent calls to ** to the new memory. ^On second and subsequent calls to
** sqlite3_aggregate_context() for the same aggregate function instance, ** sqlite3_aggregate_context() for the same aggregate function instance,
** the same buffer is returned. Sqlite3_aggregate_context() is normally ** the same buffer is returned. Sqlite3_aggregate_context() is normally
@ -5254,7 +5240,7 @@ void sqlite3_value_free(sqlite3_value*);
** **
** ^(The amount of space allocated by sqlite3_aggregate_context(C,N) is ** ^(The amount of space allocated by sqlite3_aggregate_context(C,N) is
** determined by the N parameter on first successful call. Changing the ** determined by the N parameter on first successful call. Changing the
** value of N in subsequent call to sqlite3_aggregate_context() within ** value of N in any subsequents call to sqlite3_aggregate_context() within
** the same aggregate function instance will not resize the memory ** the same aggregate function instance will not resize the memory
** allocation.)^ Within the xFinal callback, it is customary to set ** allocation.)^ Within the xFinal callback, it is customary to set
** N=0 in calls to sqlite3_aggregate_context(C,N) so that no ** N=0 in calls to sqlite3_aggregate_context(C,N) so that no
@ -5602,7 +5588,7 @@ void sqlite3_result_subtype(sqlite3_context*,unsigned int);
** </ol> ** </ol>
** **
** If a collating function fails any of the above constraints and that ** If a collating function fails any of the above constraints and that
** collating function is registered and used, then the behavior of SQLite ** collating function is registered and used, then the behavior of SQLite
** is undefined. ** is undefined.
** **
** ^The sqlite3_create_collation_v2() works like sqlite3_create_collation() ** ^The sqlite3_create_collation_v2() works like sqlite3_create_collation()
@ -5929,12 +5915,16 @@ sqlite3 *sqlite3_db_handle(sqlite3_stmt*);
** CAPI3REF: Return The Filename For A Database Connection ** CAPI3REF: Return The Filename For A Database Connection
** METHOD: sqlite3 ** METHOD: sqlite3
** **
** ^The sqlite3_db_filename(D,N) interface returns a pointer to a filename ** ^The sqlite3_db_filename(D,N) interface returns a pointer to the filename
** associated with database N of connection D. ^The main database file ** associated with database N of connection D.
** has the name "main". If there is no attached database N on the database ** ^If there is no attached database N on the database
** connection D, or if database N is a temporary or in-memory database, then ** connection D, or if database N is a temporary or in-memory database, then
** this function will return either a NULL pointer or an empty string. ** this function will return either a NULL pointer or an empty string.
** **
** ^The string value returned by this routine is owned and managed by
** the database connection. ^The value will be valid until the database N
** is [DETACH]-ed or until the database connection closes.
**
** ^The filename returned by this function is the output of the ** ^The filename returned by this function is the output of the
** xFullPathname method of the [VFS]. ^In other words, the filename ** xFullPathname method of the [VFS]. ^In other words, the filename
** will be an absolute pathname, even if the filename used ** will be an absolute pathname, even if the filename used
@ -6088,15 +6078,19 @@ void *sqlite3_update_hook(
** **
** ^(The cache sharing mode set by this interface effects all subsequent ** ^(The cache sharing mode set by this interface effects all subsequent
** calls to [sqlite3_open()], [sqlite3_open_v2()], and [sqlite3_open16()]. ** calls to [sqlite3_open()], [sqlite3_open_v2()], and [sqlite3_open16()].
** Existing database connections continue use the sharing mode ** Existing database connections continue to use the sharing mode
** that was in effect at the time they were opened.)^ ** that was in effect at the time they were opened.)^
** **
** ^(This routine returns [SQLITE_OK] if shared cache was enabled or disabled ** ^(This routine returns [SQLITE_OK] if shared cache was enabled or disabled
** successfully. An [error code] is returned otherwise.)^ ** successfully. An [error code] is returned otherwise.)^
** **
** ^Shared cache is disabled by default. But this might change in ** ^Shared cache is disabled by default. It is recommended that it stay
** future releases of SQLite. Applications that care about shared ** that way. In other words, do not use this routine. This interface
** cache setting should set it explicitly. ** continues to be provided for historical compatibility, but its use is
** discouraged. Any use of shared cache is discouraged. If shared cache
** must be used, it is recommended that shared cache only be enabled for
** individual database connections using the [sqlite3_open_v2()] interface
** with the [SQLITE_OPEN_SHAREDCACHE] flag.
** **
** Note: This method is disabled on MacOS X 10.7 and iOS version 5.0 ** Note: This method is disabled on MacOS X 10.7 and iOS version 5.0
** and will always return SQLITE_MISUSE. On those systems, ** and will always return SQLITE_MISUSE. On those systems,
@ -6229,7 +6223,7 @@ SQLITE_DEPRECATED void sqlite3_soft_heap_limit(int N);
** interface returns SQLITE_OK and fills in the non-NULL pointers in ** interface returns SQLITE_OK and fills in the non-NULL pointers in
** the final five arguments with appropriate values if the specified ** the final five arguments with appropriate values if the specified
** column exists. ^The sqlite3_table_column_metadata() interface returns ** column exists. ^The sqlite3_table_column_metadata() interface returns
** SQLITE_ERROR and if the specified column does not exist. ** SQLITE_ERROR if the specified column does not exist.
** ^If the column-name parameter to sqlite3_table_column_metadata() is a ** ^If the column-name parameter to sqlite3_table_column_metadata() is a
** NULL pointer, then this routine simply checks for the existence of the ** NULL pointer, then this routine simply checks for the existence of the
** table and returns SQLITE_OK if the table exists and SQLITE_ERROR if it ** table and returns SQLITE_OK if the table exists and SQLITE_ERROR if it
@ -6371,7 +6365,7 @@ int sqlite3_load_extension(
** to enable or disable only the C-API.)^ ** to enable or disable only the C-API.)^
** **
** <b>Security warning:</b> It is recommended that extension loading ** <b>Security warning:</b> It is recommended that extension loading
** be disabled using the [SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION] method ** be enabled using the [SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION] method
** rather than this interface, so the [load_extension()] SQL function ** rather than this interface, so the [load_extension()] SQL function
** remains disabled. This will prevent SQL injections from giving attackers ** remains disabled. This will prevent SQL injections from giving attackers
** access to extension loading capabilities. ** access to extension loading capabilities.
@ -6458,7 +6452,7 @@ typedef struct sqlite3_module sqlite3_module;
** KEYWORDS: sqlite3_module {virtual table module} ** KEYWORDS: sqlite3_module {virtual table module}
** **
** This structure, sometimes called a "virtual table module", ** This structure, sometimes called a "virtual table module",
** defines the implementation of a [virtual tables]. ** defines the implementation of a [virtual table].
** This structure consists mostly of methods for the module. ** This structure consists mostly of methods for the module.
** **
** ^A virtual table module is created by filling in a persistent ** ^A virtual table module is created by filling in a persistent
@ -6595,7 +6589,7 @@ struct sqlite3_module {
** If a virtual table extension is ** If a virtual table extension is
** used with an SQLite version earlier than 3.8.2, the results of attempting ** used with an SQLite version earlier than 3.8.2, the results of attempting
** to read or write the estimatedRows field are undefined (but are likely ** to read or write the estimatedRows field are undefined (but are likely
** to included crashing the application). The estimatedRows field should ** to include crashing the application). The estimatedRows field should
** therefore only be used if [sqlite3_libversion_number()] returns a ** therefore only be used if [sqlite3_libversion_number()] returns a
** value greater than or equal to 3008002. Similarly, the idxFlags field ** value greater than or equal to 3008002. Similarly, the idxFlags field
** was added for [version 3.9.0] ([dateof:3.9.0]). ** was added for [version 3.9.0] ([dateof:3.9.0]).
@ -6647,7 +6641,7 @@ struct sqlite3_index_info {
/* /*
** CAPI3REF: Virtual Table Constraint Operator Codes ** CAPI3REF: Virtual Table Constraint Operator Codes
** **
** These macros defined the allowed values for the ** These macros define the allowed values for the
** [sqlite3_index_info].aConstraint[].op field. Each value represents ** [sqlite3_index_info].aConstraint[].op field. Each value represents
** an operator that is part of a constraint term in the wHERE clause of ** an operator that is part of a constraint term in the wHERE clause of
** a query that uses a [virtual table]. ** a query that uses a [virtual table].
@ -7257,7 +7251,7 @@ void sqlite3_mutex_leave(sqlite3_mutex*);
** The only difference is that the public sqlite3_XXX functions enumerated ** The only difference is that the public sqlite3_XXX functions enumerated
** above silently ignore any invocations that pass a NULL pointer instead ** above silently ignore any invocations that pass a NULL pointer instead
** of a valid mutex handle. The implementations of the methods defined ** of a valid mutex handle. The implementations of the methods defined
** by this structure are not required to handle this case, the results ** by this structure are not required to handle this case. The results
** of passing a NULL pointer instead of a valid mutex handle are undefined ** of passing a NULL pointer instead of a valid mutex handle are undefined
** (i.e. it is acceptable to provide an implementation that segfaults if ** (i.e. it is acceptable to provide an implementation that segfaults if
** it is passed a NULL pointer). ** it is passed a NULL pointer).
@ -7730,7 +7724,7 @@ int sqlite3_status64(
** **
** [[SQLITE_STATUS_PAGECACHE_SIZE]] ^(<dt>SQLITE_STATUS_PAGECACHE_SIZE</dt> ** [[SQLITE_STATUS_PAGECACHE_SIZE]] ^(<dt>SQLITE_STATUS_PAGECACHE_SIZE</dt>
** <dd>This parameter records the largest memory allocation request ** <dd>This parameter records the largest memory allocation request
** handed to [pagecache memory allocator]. Only the value returned in the ** handed to the [pagecache memory allocator]. Only the value returned in the
** *pHighwater parameter to [sqlite3_status()] is of interest. ** *pHighwater parameter to [sqlite3_status()] is of interest.
** The value written into the *pCurrent parameter is undefined.</dd>)^ ** The value written into the *pCurrent parameter is undefined.</dd>)^
** **
@ -7806,7 +7800,7 @@ int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int resetFlg);
** checked out.</dd>)^ ** checked out.</dd>)^
** **
** [[SQLITE_DBSTATUS_LOOKASIDE_HIT]] ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_HIT</dt> ** [[SQLITE_DBSTATUS_LOOKASIDE_HIT]] ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_HIT</dt>
** <dd>This parameter returns the number malloc attempts that were ** <dd>This parameter returns the number of malloc attempts that were
** satisfied using lookaside memory. Only the high-water value is meaningful; ** satisfied using lookaside memory. Only the high-water value is meaningful;
** the current value is always zero.)^ ** the current value is always zero.)^
** **
@ -7888,7 +7882,7 @@ int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int resetFlg);
** cache overflowing. Transactions are more efficient if they are written ** cache overflowing. Transactions are more efficient if they are written
** to disk all at once. When pages spill mid-transaction, that introduces ** to disk all at once. When pages spill mid-transaction, that introduces
** additional overhead. This parameter can be used help identify ** additional overhead. This parameter can be used help identify
** inefficiencies that can be resolve by increasing the cache size. ** inefficiencies that can be resolved by increasing the cache size.
** </dd> ** </dd>
** **
** [[SQLITE_DBSTATUS_DEFERRED_FKS]] ^(<dt>SQLITE_DBSTATUS_DEFERRED_FKS</dt> ** [[SQLITE_DBSTATUS_DEFERRED_FKS]] ^(<dt>SQLITE_DBSTATUS_DEFERRED_FKS</dt>
@ -7977,7 +7971,7 @@ int sqlite3_stmt_status(sqlite3_stmt*, int op,int resetFlg);
** **
** [[SQLITE_STMTSTATUS_REPREPARE]] <dt>SQLITE_STMTSTATUS_REPREPARE</dt> ** [[SQLITE_STMTSTATUS_REPREPARE]] <dt>SQLITE_STMTSTATUS_REPREPARE</dt>
** <dd>^This is the number of times that the prepare statement has been ** <dd>^This is the number of times that the prepare statement has been
** automatically regenerated due to schema changes or change to ** automatically regenerated due to schema changes or changes to
** [bound parameters] that might affect the query plan. ** [bound parameters] that might affect the query plan.
** **
** [[SQLITE_STMTSTATUS_RUN]] <dt>SQLITE_STMTSTATUS_RUN</dt> ** [[SQLITE_STMTSTATUS_RUN]] <dt>SQLITE_STMTSTATUS_RUN</dt>
@ -8148,7 +8142,7 @@ struct sqlite3_pcache_page {
** **
** ^(SQLite will normally invoke xFetch() with a createFlag of 0 or 1. SQLite ** ^(SQLite will normally invoke xFetch() with a createFlag of 0 or 1. SQLite
** will only use a createFlag of 2 after a prior call with a createFlag of 1 ** will only use a createFlag of 2 after a prior call with a createFlag of 1
** failed.)^ In between the to xFetch() calls, SQLite may ** failed.)^ In between the xFetch() calls, SQLite may
** attempt to unpin one or more cache pages by spilling the content of ** attempt to unpin one or more cache pages by spilling the content of
** pinned pages to disk and synching the operating system disk cache. ** pinned pages to disk and synching the operating system disk cache.
** **
@ -8466,7 +8460,7 @@ int sqlite3_backup_pagecount(sqlite3_backup *p);
** the first argument to register for a callback that will be invoked ** the first argument to register for a callback that will be invoked
** when the blocking connections current transaction is concluded. ^The ** when the blocking connections current transaction is concluded. ^The
** callback is invoked from within the [sqlite3_step] or [sqlite3_close] ** callback is invoked from within the [sqlite3_step] or [sqlite3_close]
** call that concludes the blocking connections transaction. ** call that concludes the blocking connection's transaction.
** **
** ^(If sqlite3_unlock_notify() is called in a multi-threaded application, ** ^(If sqlite3_unlock_notify() is called in a multi-threaded application,
** there is a chance that the blocking connection will have already ** there is a chance that the blocking connection will have already
@ -8504,7 +8498,7 @@ int sqlite3_backup_pagecount(sqlite3_backup *p);
** an unlock-notify callback is a pointer to an array of void* pointers, ** an unlock-notify callback is a pointer to an array of void* pointers,
** and the second is the number of entries in the array. ** and the second is the number of entries in the array.
** **
** When a blocking connections transaction is concluded, there may be ** When a blocking connection's transaction is concluded, there may be
** more than one blocked connection that has registered for an unlock-notify ** more than one blocked connection that has registered for an unlock-notify
** callback. ^If two or more such blocked connections have specified the ** callback. ^If two or more such blocked connections have specified the
** same callback function, then instead of invoking the callback function ** same callback function, then instead of invoking the callback function
@ -8978,15 +8972,15 @@ SQLITE_EXPERIMENTAL const char *sqlite3_vtab_collation(sqlite3_index_info*,int);
** **
** <dl> ** <dl>
** [[SQLITE_SCANSTAT_NLOOP]] <dt>SQLITE_SCANSTAT_NLOOP</dt> ** [[SQLITE_SCANSTAT_NLOOP]] <dt>SQLITE_SCANSTAT_NLOOP</dt>
** <dd>^The [sqlite3_int64] variable pointed to by the T parameter will be ** <dd>^The [sqlite3_int64] variable pointed to by the V parameter will be
** set to the total number of times that the X-th loop has run.</dd> ** set to the total number of times that the X-th loop has run.</dd>
** **
** [[SQLITE_SCANSTAT_NVISIT]] <dt>SQLITE_SCANSTAT_NVISIT</dt> ** [[SQLITE_SCANSTAT_NVISIT]] <dt>SQLITE_SCANSTAT_NVISIT</dt>
** <dd>^The [sqlite3_int64] variable pointed to by the T parameter will be set ** <dd>^The [sqlite3_int64] variable pointed to by the V parameter will be set
** to the total number of rows examined by all iterations of the X-th loop.</dd> ** to the total number of rows examined by all iterations of the X-th loop.</dd>
** **
** [[SQLITE_SCANSTAT_EST]] <dt>SQLITE_SCANSTAT_EST</dt> ** [[SQLITE_SCANSTAT_EST]] <dt>SQLITE_SCANSTAT_EST</dt>
** <dd>^The "double" variable pointed to by the T parameter will be set to the ** <dd>^The "double" variable pointed to by the V parameter will be set to the
** query planner's estimate for the average number of rows output from each ** query planner's estimate for the average number of rows output from each
** iteration of the X-th loop. If the query planner's estimates was accurate, ** iteration of the X-th loop. If the query planner's estimates was accurate,
** then this value will approximate the quotient NVISIT/NLOOP and the ** then this value will approximate the quotient NVISIT/NLOOP and the
@ -8994,17 +8988,17 @@ SQLITE_EXPERIMENTAL const char *sqlite3_vtab_collation(sqlite3_index_info*,int);
** be the NLOOP value for the current loop. ** be the NLOOP value for the current loop.
** **
** [[SQLITE_SCANSTAT_NAME]] <dt>SQLITE_SCANSTAT_NAME</dt> ** [[SQLITE_SCANSTAT_NAME]] <dt>SQLITE_SCANSTAT_NAME</dt>
** <dd>^The "const char *" variable pointed to by the T parameter will be set ** <dd>^The "const char *" variable pointed to by the V parameter will be set
** to a zero-terminated UTF-8 string containing the name of the index or table ** to a zero-terminated UTF-8 string containing the name of the index or table
** used for the X-th loop. ** used for the X-th loop.
** **
** [[SQLITE_SCANSTAT_EXPLAIN]] <dt>SQLITE_SCANSTAT_EXPLAIN</dt> ** [[SQLITE_SCANSTAT_EXPLAIN]] <dt>SQLITE_SCANSTAT_EXPLAIN</dt>
** <dd>^The "const char *" variable pointed to by the T parameter will be set ** <dd>^The "const char *" variable pointed to by the V parameter will be set
** to a zero-terminated UTF-8 string containing the [EXPLAIN QUERY PLAN] ** to a zero-terminated UTF-8 string containing the [EXPLAIN QUERY PLAN]
** description for the X-th loop. ** description for the X-th loop.
** **
** [[SQLITE_SCANSTAT_SELECTID]] <dt>SQLITE_SCANSTAT_SELECT</dt> ** [[SQLITE_SCANSTAT_SELECTID]] <dt>SQLITE_SCANSTAT_SELECT</dt>
** <dd>^The "int" variable pointed to by the T parameter will be set to the ** <dd>^The "int" variable pointed to by the V parameter will be set to the
** "select-id" for the X-th loop. The select-id identifies which query or ** "select-id" for the X-th loop. The select-id identifies which query or
** subquery the loop is part of. The main query has a select-id of zero. ** subquery the loop is part of. The main query has a select-id of zero.
** The select-id is the same value as is output in the first column ** The select-id is the same value as is output in the first column