@@ -146,9 +146,9 @@ extern "C" {
146146** [sqlite3_libversion_number()], [sqlite3_sourceid()],
147147** [sqlite_version()] and [sqlite_source_id()].
148148*/
149- #define SQLITE_VERSION "3.50.2 "
150- #define SQLITE_VERSION_NUMBER 3050002
151- #define SQLITE_SOURCE_ID "2025-06-28 14:00:48 2af157d77fb1304a74176eaee7fbc7c7e932d946bf25325e9c26c91db19e3079 "
149+ #define SQLITE_VERSION "3.50.4 "
150+ #define SQLITE_VERSION_NUMBER 3050004
151+ #define SQLITE_SOURCE_ID "2025-07-30 19:33:53 4d8adfb30e03f9cf27f800a2c1ba3c48fb4ca1b08b0f5ed59a4d5ecbf45e20a3 "
152152
153153/*
154154** CAPI3REF: Run-Time Library Version Numbers
@@ -9058,13 +9058,13 @@ SQLITE_API int sqlite3_stmt_status(sqlite3_stmt*, int op,int resetFlg);
90589058** [[SQLITE_STMTSTATUS_SORT]] <dt>SQLITE_STMTSTATUS_SORT</dt>
90599059** <dd>^This is the number of sort operations that have occurred.
90609060** A non-zero value in this counter may indicate an opportunity to
9061- ** improvement performance through careful use of indices.</dd>
9061+ ** improve performance through careful use of indices.</dd>
90629062**
90639063** [[SQLITE_STMTSTATUS_AUTOINDEX]] <dt>SQLITE_STMTSTATUS_AUTOINDEX</dt>
90649064** <dd>^This is the number of rows inserted into transient indices that
90659065** were created automatically in order to help joins run faster.
90669066** A non-zero value in this counter may indicate an opportunity to
9067- ** improvement performance by adding permanent indices that do not
9067+ ** improve performance by adding permanent indices that do not
90689068** need to be reinitialized each time the statement is run.</dd>
90699069**
90709070** [[SQLITE_STMTSTATUS_VM_STEP]] <dt>SQLITE_STMTSTATUS_VM_STEP</dt>
@@ -9073,19 +9073,19 @@ SQLITE_API int sqlite3_stmt_status(sqlite3_stmt*, int op,int resetFlg);
90739073** to 2147483647. The number of virtual machine operations can be
90749074** used as a proxy for the total work done by the prepared statement.
90759075** If the number of virtual machine operations exceeds 2147483647
9076- ** then the value returned by this statement status code is undefined.
9076+ ** then the value returned by this statement status code is undefined.</dd>
90779077**
90789078** [[SQLITE_STMTSTATUS_REPREPARE]] <dt>SQLITE_STMTSTATUS_REPREPARE</dt>
90799079** <dd>^This is the number of times that the prepare statement has been
90809080** automatically regenerated due to schema changes or changes to
9081- ** [bound parameters] that might affect the query plan.
9081+ ** [bound parameters] that might affect the query plan.</dd>
90829082**
90839083** [[SQLITE_STMTSTATUS_RUN]] <dt>SQLITE_STMTSTATUS_RUN</dt>
90849084** <dd>^This is the number of times that the prepared statement has
90859085** been run. A single "run" for the purposes of this counter is one
90869086** or more calls to [sqlite3_step()] followed by a call to [sqlite3_reset()].
90879087** The counter is incremented on the first [sqlite3_step()] call of each
9088- ** cycle.
9088+ ** cycle.</dd>
90899089**
90909090** [[SQLITE_STMTSTATUS_FILTER_MISS]]
90919091** [[SQLITE_STMTSTATUS_FILTER HIT]]
@@ -9095,7 +9095,7 @@ SQLITE_API int sqlite3_stmt_status(sqlite3_stmt*, int op,int resetFlg);
90959095** step was bypassed because a Bloom filter returned not-found. The
90969096** corresponding SQLITE_STMTSTATUS_FILTER_MISS value is the number of
90979097** times that the Bloom filter returned a find, and thus the join step
9098- ** had to be processed as normal.
9098+ ** had to be processed as normal.</dd>
90999099**
91009100** [[SQLITE_STMTSTATUS_MEMUSED]] <dt>SQLITE_STMTSTATUS_MEMUSED</dt>
91019101** <dd>^This is the approximate number of bytes of heap memory
@@ -9200,27 +9200,27 @@ struct sqlite3_pcache_page {
92009200** SQLite will typically create one cache instance for each open database file,
92019201** though this is not guaranteed. ^The
92029202** first parameter, szPage, is the size in bytes of the pages that must
9203- ** be allocated by the cache. ^szPage will always a power of two. ^The
9203+ ** be allocated by the cache. ^szPage will always be a power of two. ^The
92049204** second parameter szExtra is a number of bytes of extra storage
9205- ** associated with each page cache entry. ^The szExtra parameter will
9205+ ** associated with each page cache entry. ^The szExtra parameter will be
92069206** a number less than 250. SQLite will use the
92079207** extra szExtra bytes on each page to store metadata about the underlying
92089208** database page on disk. The value passed into szExtra depends
92099209** on the SQLite version, the target platform, and how SQLite was compiled.
92109210** ^The third argument to xCreate(), bPurgeable, is true if the cache being
92119211** created will be used to cache database pages of a file stored on disk, or
92129212** false if it is used for an in-memory database. The cache implementation
9213- ** does not have to do anything special based with the value of bPurgeable;
9213+ ** does not have to do anything special based upon the value of bPurgeable;
92149214** it is purely advisory. ^On a cache where bPurgeable is false, SQLite will
92159215** never invoke xUnpin() except to deliberately delete a page.
92169216** ^In other words, calls to xUnpin() on a cache with bPurgeable set to
92179217** false will always have the "discard" flag set to true.
9218- ** ^Hence, a cache created with bPurgeable false will
9218+ ** ^Hence, a cache created with bPurgeable set to false will
92199219** never contain any unpinned pages.
92209220**
92219221** [[the xCachesize() page cache method]]
92229222** ^(The xCachesize() method may be called at any time by SQLite to set the
9223- ** suggested maximum cache-size (number of pages stored by) the cache
9223+ ** suggested maximum cache-size (number of pages stored) for the cache
92249224** instance passed as the first argument. This is the value configured using
92259225** the SQLite "[PRAGMA cache_size]" command.)^ As with the bPurgeable
92269226** parameter, the implementation is not required to do anything with this
@@ -9247,12 +9247,12 @@ struct sqlite3_pcache_page {
92479247** implementation must return a pointer to the page buffer with its content
92489248** intact. If the requested page is not already in the cache, then the
92499249** cache implementation should use the value of the createFlag
9250- ** parameter to help it determined what action to take:
9250+ ** parameter to help it determine what action to take:
92519251**
92529252** <table border=1 width=85% align=center>
92539253** <tr><th> createFlag <th> Behavior when page is not already in cache
92549254** <tr><td> 0 <td> Do not allocate a new page. Return NULL.
9255- ** <tr><td> 1 <td> Allocate a new page if it easy and convenient to do so.
9255+ ** <tr><td> 1 <td> Allocate a new page if it is easy and convenient to do so.
92569256** Otherwise return NULL.
92579257** <tr><td> 2 <td> Make every effort to allocate a new page. Only return
92589258** NULL if allocating a new page is effectively impossible.
@@ -9269,7 +9269,7 @@ struct sqlite3_pcache_page {
92699269** as its second argument. If the third parameter, discard, is non-zero,
92709270** then the page must be evicted from the cache.
92719271** ^If the discard parameter is
9272- ** zero, then the page may be discarded or retained at the discretion of
9272+ ** zero, then the page may be discarded or retained at the discretion of the
92739273** page cache implementation. ^The page cache implementation
92749274** may choose to evict unpinned pages at any time.
92759275**
@@ -9287,7 +9287,7 @@ struct sqlite3_pcache_page {
92879287** When SQLite calls the xTruncate() method, the cache must discard all
92889288** existing cache entries with page numbers (keys) greater than or equal
92899289** to the value of the iLimit parameter passed to xTruncate(). If any
9290- ** of these pages are pinned, they are implicitly unpinned, meaning that
9290+ ** of these pages are pinned, they become implicitly unpinned, meaning that
92919291** they can be safely discarded.
92929292**
92939293** [[the xDestroy() page cache method]]
@@ -9586,7 +9586,7 @@ SQLITE_API int sqlite3_backup_pagecount(sqlite3_backup *p);
95869586** application receives an SQLITE_LOCKED error, it may call the
95879587** sqlite3_unlock_notify() method with the blocked connection handle as
95889588** the first argument to register for a callback that will be invoked
9589- ** when the blocking connections current transaction is concluded. ^The
9589+ ** when the blocking connection's current transaction is concluded. ^The
95909590** callback is invoked from within the [sqlite3_step] or [sqlite3_close]
95919591** call that concludes the blocking connection's transaction.
95929592**
@@ -9606,7 +9606,7 @@ SQLITE_API int sqlite3_backup_pagecount(sqlite3_backup *p);
96069606** blocked connection already has a registered unlock-notify callback,
96079607** then the new callback replaces the old.)^ ^If sqlite3_unlock_notify() is
96089608** called with a NULL pointer as its second argument, then any existing
9609- ** unlock-notify callback is canceled. ^The blocked connections
9609+ ** unlock-notify callback is canceled. ^The blocked connection's
96109610** unlock-notify callback may also be canceled by closing the blocked
96119611** connection using [sqlite3_close()].
96129612**
@@ -10004,7 +10004,7 @@ SQLITE_API int sqlite3_vtab_config(sqlite3*, int op, ...);
1000410004** support constraints. In this configuration (which is the default) if
1000510005** a call to the [xUpdate] method returns [SQLITE_CONSTRAINT], then the entire
1000610006** statement is rolled back as if [ON CONFLICT | OR ABORT] had been
10007- ** specified as part of the users SQL statement, regardless of the actual
10007+ ** specified as part of the user's SQL statement, regardless of the actual
1000810008** ON CONFLICT mode specified.
1000910009**
1001010010** If X is non-zero, then the virtual table implementation guarantees
@@ -10038,7 +10038,7 @@ SQLITE_API int sqlite3_vtab_config(sqlite3*, int op, ...);
1003810038** [[SQLITE_VTAB_INNOCUOUS]]<dt>SQLITE_VTAB_INNOCUOUS</dt>
1003910039** <dd>Calls of the form
1004010040** [sqlite3_vtab_config](db,SQLITE_VTAB_INNOCUOUS) from within the
10041- ** the [xConnect] or [xCreate] methods of a [virtual table] implementation
10041+ ** [xConnect] or [xCreate] methods of a [virtual table] implementation
1004210042** identify that virtual table as being safe to use from within triggers
1004310043** and views. Conceptually, the SQLITE_VTAB_INNOCUOUS tag means that the
1004410044** virtual table can do no serious harm even if it is controlled by a
@@ -10206,7 +10206,7 @@ SQLITE_API const char *sqlite3_vtab_collation(sqlite3_index_info*,int);
1020610206** </table>
1020710207**
1020810208** ^For the purposes of comparing virtual table output values to see if the
10209- ** values are same value for sorting purposes, two NULL values are considered
10209+ ** values are the same value for sorting purposes, two NULL values are considered
1021010210** to be the same. In other words, the comparison operator is "IS"
1021110211** (or "IS NOT DISTINCT FROM") and not "==".
1021210212**
@@ -10216,7 +10216,7 @@ SQLITE_API const char *sqlite3_vtab_collation(sqlite3_index_info*,int);
1021610216**
1021710217** ^A virtual table implementation is always free to return rows in any order
1021810218** it wants, as long as the "orderByConsumed" flag is not set. ^When the
10219- ** the "orderByConsumed" flag is unset, the query planner will add extra
10219+ ** "orderByConsumed" flag is unset, the query planner will add extra
1022010220** [bytecode] to ensure that the final results returned by the SQL query are
1022110221** ordered correctly. The use of the "orderByConsumed" flag and the
1022210222** sqlite3_vtab_distinct() interface is merely an optimization. ^Careful
@@ -10313,7 +10313,7 @@ SQLITE_API int sqlite3_vtab_in(sqlite3_index_info*, int iCons, int bHandle);
1031310313** sqlite3_vtab_in_next(X,P) should be one of the parameters to the
1031410314** xFilter method which invokes these routines, and specifically
1031510315** a parameter that was previously selected for all-at-once IN constraint
10316- ** processing use the [sqlite3_vtab_in()] interface in the
10316+ ** processing using the [sqlite3_vtab_in()] interface in the
1031710317** [xBestIndex|xBestIndex method]. ^(If the X parameter is not
1031810318** an xFilter argument that was selected for all-at-once IN constraint
1031910319** processing, then these routines return [SQLITE_ERROR].)^
@@ -10368,7 +10368,7 @@ SQLITE_API int sqlite3_vtab_in_next(sqlite3_value *pVal, sqlite3_value **ppOut);
1036810368** and only if *V is set to a value. ^The sqlite3_vtab_rhs_value(P,J,V)
1036910369** inteface returns SQLITE_NOTFOUND if the right-hand side of the J-th
1037010370** constraint is not available. ^The sqlite3_vtab_rhs_value() interface
10371- ** can return an result code other than SQLITE_OK or SQLITE_NOTFOUND if
10371+ ** can return a result code other than SQLITE_OK or SQLITE_NOTFOUND if
1037210372** something goes wrong.
1037310373**
1037410374** The sqlite3_vtab_rhs_value() interface is usually only successful if
@@ -10396,8 +10396,8 @@ SQLITE_API int sqlite3_vtab_rhs_value(sqlite3_index_info*, int, sqlite3_value **
1039610396** KEYWORDS: {conflict resolution mode}
1039710397**
1039810398** These constants are returned by [sqlite3_vtab_on_conflict()] to
10399- ** inform a [virtual table] implementation what the [ON CONFLICT] mode
10400- ** is for the SQL statement being evaluated.
10399+ ** inform a [virtual table] implementation of the [ON CONFLICT] mode
10400+ ** for the SQL statement being evaluated.
1040110401**
1040210402** Note that the [SQLITE_IGNORE] constant is also used as a potential
1040310403** return value from the [sqlite3_set_authorizer()] callback and that
@@ -10437,39 +10437,39 @@ SQLITE_API int sqlite3_vtab_rhs_value(sqlite3_index_info*, int, sqlite3_value **
1043710437** [[SQLITE_SCANSTAT_EST]] <dt>SQLITE_SCANSTAT_EST</dt>
1043810438** <dd>^The "double" variable pointed to by the V parameter will be set to the
1043910439** query planner's estimate for the average number of rows output from each
10440- ** iteration of the X-th loop. If the query planner's estimates was accurate,
10440+ ** iteration of the X-th loop. If the query planner's estimate was accurate,
1044110441** then this value will approximate the quotient NVISIT/NLOOP and the
1044210442** product of this value for all prior loops with the same SELECTID will
10443- ** be the NLOOP value for the current loop.
10443+ ** be the NLOOP value for the current loop.</dd>
1044410444**
1044510445** [[SQLITE_SCANSTAT_NAME]] <dt>SQLITE_SCANSTAT_NAME</dt>
1044610446** <dd>^The "const char *" variable pointed to by the V parameter will be set
1044710447** to a zero-terminated UTF-8 string containing the name of the index or table
10448- ** used for the X-th loop.
10448+ ** used for the X-th loop.</dd>
1044910449**
1045010450** [[SQLITE_SCANSTAT_EXPLAIN]] <dt>SQLITE_SCANSTAT_EXPLAIN</dt>
1045110451** <dd>^The "const char *" variable pointed to by the V parameter will be set
1045210452** to a zero-terminated UTF-8 string containing the [EXPLAIN QUERY PLAN]
10453- ** description for the X-th loop.
10453+ ** description for the X-th loop.</dd>
1045410454**
1045510455** [[SQLITE_SCANSTAT_SELECTID]] <dt>SQLITE_SCANSTAT_SELECTID</dt>
1045610456** <dd>^The "int" variable pointed to by the V parameter will be set to the
1045710457** id for the X-th query plan element. The id value is unique within the
1045810458** statement. The select-id is the same value as is output in the first
10459- ** column of an [EXPLAIN QUERY PLAN] query.
10459+ ** column of an [EXPLAIN QUERY PLAN] query.</dd>
1046010460**
1046110461** [[SQLITE_SCANSTAT_PARENTID]] <dt>SQLITE_SCANSTAT_PARENTID</dt>
1046210462** <dd>The "int" variable pointed to by the V parameter will be set to the
10463- ** the id of the parent of the current query element, if applicable, or
10463+ ** id of the parent of the current query element, if applicable, or
1046410464** to zero if the query element has no parent. This is the same value as
10465- ** returned in the second column of an [EXPLAIN QUERY PLAN] query.
10465+ ** returned in the second column of an [EXPLAIN QUERY PLAN] query.</dd>
1046610466**
1046710467** [[SQLITE_SCANSTAT_NCYCLE]] <dt>SQLITE_SCANSTAT_NCYCLE</dt>
1046810468** <dd>The sqlite3_int64 output value is set to the number of cycles,
1046910469** according to the processor time-stamp counter, that elapsed while the
1047010470** query element was being processed. This value is not available for
1047110471** all query elements - if it is unavailable the output variable is
10472- ** set to -1.
10472+ ** set to -1.</dd>
1047310473** </dl>
1047410474*/
1047510475#define SQLITE_SCANSTAT_NLOOP 0
@@ -10510,8 +10510,8 @@ SQLITE_API int sqlite3_vtab_rhs_value(sqlite3_index_info*, int, sqlite3_value **
1051010510** sqlite3_stmt_scanstatus_v2() with a zeroed flags parameter.
1051110511**
1051210512** Parameter "idx" identifies the specific query element to retrieve statistics
10513- ** for. Query elements are numbered starting from zero. A value of -1 may be
10514- ** to query for statistics regarding the entire query. ^If idx is out of range
10513+ ** for. Query elements are numbered starting from zero. A value of -1 may
10514+ ** retrieve statistics for the entire query. ^If idx is out of range
1051510515** - less than -1 or greater than or equal to the total number of query
1051610516** elements used to implement the statement - a non-zero value is returned and
1051710517** the variable that pOut points to is unchanged.
@@ -10668,8 +10668,8 @@ SQLITE_API int sqlite3_db_cacheflush(sqlite3*);
1066810668** triggers; and so forth.
1066910669**
1067010670** When the [sqlite3_blob_write()] API is used to update a blob column,
10671- ** the pre-update hook is invoked with SQLITE_DELETE. This is because the
10672- ** in this case the new values are not available. In this case, when a
10671+ ** the pre-update hook is invoked with SQLITE_DELETE, because
10672+ ** the new values are not yet available. In this case, when a
1067310673** callback made with op==SQLITE_DELETE is actually a write using the
1067410674** sqlite3_blob_write() API, the [sqlite3_preupdate_blobwrite()] returns
1067510675** the index of the column being written. In other cases, where the
@@ -10922,7 +10922,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_recover(sqlite3 *db, const c
1092210922** For an ordinary on-disk database file, the serialization is just a
1092310923** copy of the disk file. For an in-memory database or a "TEMP" database,
1092410924** the serialization is the same sequence of bytes which would be written
10925- ** to disk if that database where backed up to disk.
10925+ ** to disk if that database were backed up to disk.
1092610926**
1092710927** The usual case is that sqlite3_serialize() copies the serialization of
1092810928** the database into memory obtained from [sqlite3_malloc64()] and returns
@@ -10931,7 +10931,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_recover(sqlite3 *db, const c
1093110931** contains the SQLITE_SERIALIZE_NOCOPY bit, then no memory allocations
1093210932** are made, and the sqlite3_serialize() function will return a pointer
1093310933** to the contiguous memory representation of the database that SQLite
10934- ** is currently using for that database, or NULL if the no such contiguous
10934+ ** is currently using for that database, or NULL if no such contiguous
1093510935** memory representation of the database exists. A contiguous memory
1093610936** representation of the database will usually only exist if there has
1093710937** been a prior call to [sqlite3_deserialize(D,S,...)] with the same
@@ -11002,7 +11002,7 @@ SQLITE_API unsigned char *sqlite3_serialize(
1100211002** database is currently in a read transaction or is involved in a backup
1100311003** operation.
1100411004**
11005- ** It is not possible to deserialized into the TEMP database. If the
11005+ ** It is not possible to deserialize into the TEMP database. If the
1100611006** S argument to sqlite3_deserialize(D,S,P,N,M,F) is "temp" then the
1100711007** function returns SQLITE_ERROR.
1100811008**
@@ -11024,15 +11024,15 @@ SQLITE_API int sqlite3_deserialize(
1102411024 sqlite3 *db, /* The database connection */
1102511025 const char *zSchema, /* Which DB to reopen with the deserialization */
1102611026 unsigned char *pData, /* The serialized database content */
11027- sqlite3_int64 szDb, /* Number bytes in the deserialization */
11027+ sqlite3_int64 szDb, /* Number of bytes in the deserialization */
1102811028 sqlite3_int64 szBuf, /* Total size of buffer pData[] */
1102911029 unsigned mFlags /* Zero or more SQLITE_DESERIALIZE_* flags */
1103011030);
1103111031
1103211032/*
1103311033** CAPI3REF: Flags for sqlite3_deserialize()
1103411034**
11035- ** The following are allowed values for 6th argument (the F argument) to
11035+ ** The following are allowed values for the 6th argument (the F argument) to
1103611036** the [sqlite3_deserialize(D,S,P,N,M,F)] interface.
1103711037**
1103811038** The SQLITE_DESERIALIZE_FREEONCLOSE means that the database serialization
0 commit comments