forked from cory/tildefriends
		
	update: sqlite 3.50.2.
This commit is contained in:
		
							
								
								
									
										15
									
								
								deps/sqlite/shell.c
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								deps/sqlite/shell.c
									
									
									
									
										vendored
									
									
								
							| @@ -8027,13 +8027,14 @@ SQLITE_EXTENSION_INIT1 | ||||
| #  include <dirent.h> | ||||
| #  include <utime.h> | ||||
| #  include <sys/time.h> | ||||
| #  define STRUCT_STAT struct stat | ||||
| #else | ||||
| #  include "windows.h" | ||||
| #  include <io.h> | ||||
| #  include <direct.h> | ||||
| /* #  include "test_windirent.h" */ | ||||
| #  define dirent DIRENT | ||||
| #  define stat _stat | ||||
| #  define STRUCT_STAT struct _stat | ||||
| #  define chmod(path,mode) fileio_chmod(path,mode) | ||||
| #  define mkdir(path,mode) fileio_mkdir(path) | ||||
| #endif | ||||
| @@ -8224,7 +8225,7 @@ LPWSTR utf8_to_utf16(const char *z){ | ||||
| */ | ||||
| static void statTimesToUtc( | ||||
|   const char *zPath, | ||||
|   struct stat *pStatBuf | ||||
|   STRUCT_STAT *pStatBuf | ||||
| ){ | ||||
|   HANDLE hFindFile; | ||||
|   WIN32_FIND_DATAW fd; | ||||
| @@ -8252,7 +8253,7 @@ static void statTimesToUtc( | ||||
| */ | ||||
| static int fileStat( | ||||
|   const char *zPath, | ||||
|   struct stat *pStatBuf | ||||
|   STRUCT_STAT *pStatBuf | ||||
| ){ | ||||
| #if defined(_WIN32) | ||||
|   sqlite3_int64 sz = strlen(zPath); | ||||
| @@ -8276,7 +8277,7 @@ static int fileStat( | ||||
| */ | ||||
| static int fileLinkStat( | ||||
|   const char *zPath, | ||||
|   struct stat *pStatBuf | ||||
|   STRUCT_STAT *pStatBuf | ||||
| ){ | ||||
| #if defined(_WIN32) | ||||
|   return fileStat(zPath, pStatBuf); | ||||
| @@ -8309,7 +8310,7 @@ static int makeDirectory( | ||||
|     int i = 1; | ||||
| 
 | ||||
|     while( rc==SQLITE_OK ){ | ||||
|       struct stat sStat; | ||||
|       STRUCT_STAT sStat; | ||||
|       int rc2; | ||||
| 
 | ||||
|       for(; zCopy[i]!='/' && i<nCopy; i++); | ||||
| @@ -8359,7 +8360,7 @@ static int writeFile( | ||||
|         ** be an error though - if there is already a directory at the same | ||||
|         ** path and either the permissions already match or can be changed | ||||
|         ** to do so using chmod(), it is not an error.  */ | ||||
|         struct stat sStat; | ||||
|         STRUCT_STAT sStat; | ||||
|         if( errno!=EEXIST | ||||
|          || 0!=fileStat(zFile, &sStat) | ||||
|          || !S_ISDIR(sStat.st_mode) | ||||
| @@ -8561,7 +8562,7 @@ struct fsdir_cursor { | ||||
|   const char *zBase; | ||||
|   int nBase; | ||||
| 
 | ||||
|   struct stat sStat;         /* Current lstat() results */ | ||||
|   STRUCT_STAT sStat;         /* Current lstat() results */ | ||||
|   char *zPath;               /* Path to current entry */ | ||||
|   sqlite3_int64 iRowid;      /* Current rowid */ | ||||
| }; | ||||
|   | ||||
							
								
								
									
										199
									
								
								deps/sqlite/sqlite3.c
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										199
									
								
								deps/sqlite/sqlite3.c
									
									
									
									
										vendored
									
									
								
							| @@ -1,6 +1,6 @@ | ||||
| /******************************************************************************
 | ||||
| ** This file is an amalgamation of many separate C source files from SQLite | ||||
| ** version 3.50.1.  By combining all the individual C code files into this | ||||
| ** version 3.50.2.  By combining all the individual C code files into this | ||||
| ** single large file, the entire code can be compiled as a single translation | ||||
| ** unit.  This allows many compilers to do optimizations that would not be | ||||
| ** possible if the files were compiled separately.  Performance improvements | ||||
| @@ -18,7 +18,7 @@ | ||||
| ** separate file. This file contains only code for the core SQLite library. | ||||
| ** | ||||
| ** The content in this amalgamation comes from Fossil check-in | ||||
| ** b77dc5e0f596d2140d9ac682b2893ff65d3a with changes in files: | ||||
| ** 2af157d77fb1304a74176eaee7fbc7c7e932 with changes in files: | ||||
| ** | ||||
| **     | ||||
| */ | ||||
| @@ -465,9 +465,9 @@ extern "C" { | ||||
| ** [sqlite3_libversion_number()], [sqlite3_sourceid()], | ||||
| ** [sqlite_version()] and [sqlite_source_id()]. | ||||
| */ | ||||
| #define SQLITE_VERSION        "3.50.1" | ||||
| #define SQLITE_VERSION_NUMBER 3050001 | ||||
| #define SQLITE_SOURCE_ID      "2025-06-06 14:52:32 b77dc5e0f596d2140d9ac682b2893ff65d3a4140aa86067a3efebe29dc914c95" | ||||
| #define SQLITE_VERSION        "3.50.2" | ||||
| #define SQLITE_VERSION_NUMBER 3050002 | ||||
| #define SQLITE_SOURCE_ID      "2025-06-28 14:00:48 2af157d77fb1304a74176eaee7fbc7c7e932d946bf25325e9c26c91db19e3079" | ||||
| 
 | ||||
| /*
 | ||||
| ** CAPI3REF: Run-Time Library Version Numbers | ||||
| @@ -4398,7 +4398,7 @@ SQLITE_API sqlite3_file *sqlite3_database_file_object(const char*); | ||||
| ** | ||||
| ** The sqlite3_create_filename(D,J,W,N,P) allocates memory to hold a version of | ||||
| ** database filename D with corresponding journal file J and WAL file W and | ||||
| ** with N URI parameters key/values pairs in the array P.  The result from | ||||
| ** an array P of N URI Key/Value pairs.  The result from | ||||
| ** sqlite3_create_filename(D,J,W,N,P) is a pointer to a database filename that | ||||
| ** is safe to pass to routines like: | ||||
| ** <ul> | ||||
| @@ -5079,7 +5079,7 @@ typedef struct sqlite3_context sqlite3_context; | ||||
| ** METHOD: sqlite3_stmt | ||||
| ** | ||||
| ** ^(In the SQL statement text input to [sqlite3_prepare_v2()] and its variants, | ||||
| ** literals may be replaced by a [parameter] that matches one of following | ||||
| ** literals may be replaced by a [parameter] that matches one of the following | ||||
| ** templates: | ||||
| ** | ||||
| ** <ul> | ||||
| @@ -5124,7 +5124,7 @@ typedef struct sqlite3_context sqlite3_context; | ||||
| ** | ||||
| ** [[byte-order determination rules]] ^The byte-order of | ||||
| ** UTF16 input text is determined by the byte-order mark (BOM, U+FEFF) | ||||
| ** found in first character, which is removed, or in the absence of a BOM | ||||
| ** found in the first character, which is removed, or in the absence of a BOM | ||||
| ** the byte order is the native byte order of the host | ||||
| ** machine for sqlite3_bind_text16() or the byte order specified in | ||||
| ** the 6th parameter for sqlite3_bind_text64().)^ | ||||
| @@ -5144,7 +5144,7 @@ typedef struct sqlite3_context sqlite3_context; | ||||
| ** or sqlite3_bind_text16() or sqlite3_bind_text64() then | ||||
| ** that parameter must be the byte offset | ||||
| ** where the NUL terminator would occur assuming the string were NUL | ||||
| ** terminated.  If any NUL characters occurs at byte offsets less than | ||||
| ** terminated.  If any NUL characters occur at byte offsets less than | ||||
| ** the value of the fourth parameter then the resulting string value will | ||||
| ** contain embedded NULs.  The result of expressions involving strings | ||||
| ** with embedded NULs is undefined. | ||||
| @@ -5356,7 +5356,7 @@ SQLITE_API const void *sqlite3_column_name16(sqlite3_stmt*, int N); | ||||
| ** METHOD: sqlite3_stmt | ||||
| ** | ||||
| ** ^These routines provide a means to determine the database, table, and | ||||
| ** table column that is the origin of a particular result column in | ||||
| ** table column that is the origin of a particular result column in a | ||||
| ** [SELECT] statement. | ||||
| ** ^The name of the database or table or column can be returned as | ||||
| ** either a UTF-8 or UTF-16 string.  ^The _database_ routines return | ||||
| @@ -5925,8 +5925,8 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt); | ||||
| ** | ||||
| ** For best security, the [SQLITE_DIRECTONLY] flag is recommended for | ||||
| ** all application-defined SQL functions that do not need to be | ||||
| ** used inside of triggers, view, CHECK constraints, or other elements of | ||||
| ** the database schema.  This flags is especially recommended for SQL | ||||
| ** used inside of triggers, views, CHECK constraints, or other elements of | ||||
| ** the database schema.  This flag is especially recommended for SQL | ||||
| ** functions that have side effects or reveal internal application state. | ||||
| ** Without this flag, an attacker might be able to modify the schema of | ||||
| ** a database file to include invocations of the function with parameters | ||||
| @@ -5957,7 +5957,7 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt); | ||||
| ** [user-defined window functions|available here]. | ||||
| ** | ||||
| ** ^(If the final parameter to sqlite3_create_function_v2() or | ||||
| ** sqlite3_create_window_function() is not NULL, then it is destructor for | ||||
| ** sqlite3_create_window_function() is not NULL, then it is the destructor for | ||||
| ** the application data pointer. The destructor is invoked when the function | ||||
| ** is deleted, either by being overloaded or when the database connection | ||||
| ** closes.)^ ^The destructor is also invoked if the call to | ||||
| @@ -6357,7 +6357,7 @@ SQLITE_API unsigned int sqlite3_value_subtype(sqlite3_value*); | ||||
| ** METHOD: sqlite3_value | ||||
| ** | ||||
| ** ^The sqlite3_value_dup(V) interface makes a copy of the [sqlite3_value] | ||||
| ** object D and returns a pointer to that copy.  ^The [sqlite3_value] returned | ||||
| ** object V and returns a pointer to that copy.  ^The [sqlite3_value] returned | ||||
| ** is a [protected sqlite3_value] object even if the input is not. | ||||
| ** ^The sqlite3_value_dup(V) interface returns NULL if V is NULL or if a | ||||
| ** memory allocation fails. ^If V is a [pointer value], then the result | ||||
| @@ -6395,7 +6395,7 @@ SQLITE_API void sqlite3_value_free(sqlite3_value*); | ||||
| ** allocation error occurs. | ||||
| ** | ||||
| ** ^(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 the first successful call.  Changing the | ||||
| ** value of N in any subsequent call to sqlite3_aggregate_context() within | ||||
| ** the same aggregate function instance will not resize the memory | ||||
| ** allocation.)^  Within the xFinal callback, it is customary to set | ||||
| @@ -6557,7 +6557,7 @@ SQLITE_API void sqlite3_set_auxdata(sqlite3_context*, int N, void*, void (*)(voi | ||||
| ** | ||||
| ** Security Warning:  These interfaces should not be exposed in scripting | ||||
| ** languages or in other circumstances where it might be possible for an | ||||
| ** an attacker to invoke them.  Any agent that can invoke these interfaces | ||||
| ** attacker to invoke them.  Any agent that can invoke these interfaces | ||||
| ** can probably also take control of the process. | ||||
| ** | ||||
| ** Database connection client data is only available for SQLite | ||||
| @@ -6671,7 +6671,7 @@ typedef void (*sqlite3_destructor_type)(void*); | ||||
| ** pointed to by the 2nd parameter are taken as the application-defined | ||||
| ** function result.  If the 3rd parameter is non-negative, then it | ||||
| ** must be the byte offset into the string where the NUL terminator would | ||||
| ** appear if the string where NUL terminated.  If any NUL characters occur | ||||
| ** appear if the string were NUL terminated.  If any NUL characters occur | ||||
| ** in the string at a byte offset that is less than the value of the 3rd | ||||
| ** parameter, then the resulting string will contain embedded NULs and the | ||||
| ** result of expressions operating on strings with embedded NULs is undefined. | ||||
| @@ -6729,7 +6729,7 @@ typedef void (*sqlite3_destructor_type)(void*); | ||||
| ** string and preferably a string literal. The sqlite3_result_pointer() | ||||
| ** routine is part of the [pointer passing interface] added for SQLite 3.20.0. | ||||
| ** | ||||
| ** If these routines are called from within the different thread | ||||
| ** If these routines are called from within a different thread | ||||
| ** than the one containing the application-defined function that received | ||||
| ** the [sqlite3_context] pointer, the results are undefined. | ||||
| */ | ||||
| @@ -7135,7 +7135,7 @@ SQLITE_API sqlite3 *sqlite3_db_handle(sqlite3_stmt*); | ||||
| ** METHOD: sqlite3 | ||||
| ** | ||||
| ** ^The sqlite3_db_name(D,N) interface returns a pointer to the schema name | ||||
| ** for the N-th database on database connection D, or a NULL pointer of N is | ||||
| ** for the N-th database on database connection D, or a NULL pointer if N is | ||||
| ** out of range.  An N value of 0 means the main database file.  An N of 1 is | ||||
| ** the "temp" schema.  Larger values of N correspond to various ATTACH-ed | ||||
| ** databases. | ||||
| @@ -7230,7 +7230,7 @@ SQLITE_API int sqlite3_txn_state(sqlite3*,const char *zSchema); | ||||
| ** <dd>The SQLITE_TXN_READ state means that the database is currently | ||||
| ** in a read transaction.  Content has been read from the database file | ||||
| ** but nothing in the database file has changed.  The transaction state | ||||
| ** will advanced to SQLITE_TXN_WRITE if any changes occur and there are | ||||
| ** will be advanced to SQLITE_TXN_WRITE if any changes occur and there are | ||||
| ** no other conflicting concurrent write transactions.  The transaction | ||||
| ** state will revert to SQLITE_TXN_NONE following a [ROLLBACK] or | ||||
| ** [COMMIT].</dd> | ||||
| @@ -7239,7 +7239,7 @@ SQLITE_API int sqlite3_txn_state(sqlite3*,const char *zSchema); | ||||
| ** <dd>The SQLITE_TXN_WRITE state means that the database is currently | ||||
| ** in a write transaction.  Content has been written to the database file | ||||
| ** but has not yet committed.  The transaction state will change to | ||||
| ** to SQLITE_TXN_NONE at the next [ROLLBACK] or [COMMIT].</dd> | ||||
| ** SQLITE_TXN_NONE at the next [ROLLBACK] or [COMMIT].</dd> | ||||
| */ | ||||
| #define SQLITE_TXN_NONE  0 | ||||
| #define SQLITE_TXN_READ  1 | ||||
| @@ -7520,7 +7520,7 @@ SQLITE_API int sqlite3_db_release_memory(sqlite3*); | ||||
| ** CAPI3REF: Impose A Limit On Heap Size | ||||
| ** | ||||
| ** These interfaces impose limits on the amount of heap memory that will be | ||||
| ** by all database connections within a single process. | ||||
| ** used by all database connections within a single process. | ||||
| ** | ||||
| ** ^The sqlite3_soft_heap_limit64() interface sets and/or queries the | ||||
| ** soft limit on the amount of heap memory that may be allocated by SQLite. | ||||
| @@ -7578,7 +7578,7 @@ SQLITE_API int sqlite3_db_release_memory(sqlite3*); | ||||
| ** </ul>)^ | ||||
| ** | ||||
| ** The circumstances under which SQLite will enforce the heap limits may | ||||
| ** changes in future releases of SQLite. | ||||
| ** change in future releases of SQLite. | ||||
| */ | ||||
| SQLITE_API sqlite3_int64 sqlite3_soft_heap_limit64(sqlite3_int64 N); | ||||
| SQLITE_API sqlite3_int64 sqlite3_hard_heap_limit64(sqlite3_int64 N); | ||||
| @@ -7693,8 +7693,8 @@ SQLITE_API int sqlite3_table_column_metadata( | ||||
| ** ^The entry point is zProc. | ||||
| ** ^(zProc may be 0, in which case SQLite will try to come up with an | ||||
| ** entry point name on its own.  It first tries "sqlite3_extension_init". | ||||
| ** If that does not work, it constructs a name "sqlite3_X_init" where the | ||||
| ** X is consists of the lower-case equivalent of all ASCII alphabetic | ||||
| ** If that does not work, it constructs a name "sqlite3_X_init" where | ||||
| ** X consists of the lower-case equivalent of all ASCII alphabetic | ||||
| ** characters in the filename from the last "/" to the first following | ||||
| ** "." and omitting any initial "lib".)^ | ||||
| ** ^The sqlite3_load_extension() interface returns | ||||
| @@ -7765,7 +7765,7 @@ SQLITE_API int sqlite3_enable_load_extension(sqlite3 *db, int onoff); | ||||
| ** ^(Even though the function prototype shows that xEntryPoint() takes | ||||
| ** no arguments and returns void, SQLite invokes xEntryPoint() with three | ||||
| ** arguments and expects an integer result as if the signature of the | ||||
| ** entry point where as follows: | ||||
| ** entry point were as follows: | ||||
| ** | ||||
| ** <blockquote><pre> | ||||
| **    int xEntryPoint( | ||||
| @@ -7929,7 +7929,7 @@ struct sqlite3_module { | ||||
| ** virtual table and might not be checked again by the byte code.)^ ^(The | ||||
| ** aConstraintUsage[].omit flag is an optimization hint. When the omit flag | ||||
| ** is left in its default setting of false, the constraint will always be | ||||
| ** checked separately in byte code.  If the omit flag is change to true, then | ||||
| ** checked separately in byte code.  If the omit flag is changed to true, then | ||||
| ** the constraint may or may not be checked in byte code.  In other words, | ||||
| ** when the omit flag is true there is no guarantee that the constraint will | ||||
| ** not be checked again using byte code.)^ | ||||
| @@ -7955,7 +7955,7 @@ struct sqlite3_module { | ||||
| ** The xBestIndex method may optionally populate the idxFlags field with a | ||||
| ** mask of SQLITE_INDEX_SCAN_* flags. One such flag is | ||||
| ** [SQLITE_INDEX_SCAN_HEX], which if set causes the [EXPLAIN QUERY PLAN] | ||||
| ** output to show the idxNum has hex instead of as decimal.  Another flag is | ||||
| ** output to show the idxNum as hex instead of as decimal.  Another flag is | ||||
| ** SQLITE_INDEX_SCAN_UNIQUE, which if set indicates that the query plan will | ||||
| ** return at most one row. | ||||
| ** | ||||
| @@ -8096,7 +8096,7 @@ struct sqlite3_index_info { | ||||
| ** the implementation of the [virtual table module].   ^The fourth | ||||
| ** parameter is an arbitrary client data pointer that is passed through | ||||
| ** into the [xCreate] and [xConnect] methods of the virtual table module | ||||
| ** when a new virtual table is be being created or reinitialized. | ||||
| ** when a new virtual table is being created or reinitialized. | ||||
| ** | ||||
| ** ^The sqlite3_create_module_v2() interface has a fifth parameter which | ||||
| ** is a pointer to a destructor for the pClientData.  ^SQLite will | ||||
| @@ -8261,7 +8261,7 @@ typedef struct sqlite3_blob sqlite3_blob; | ||||
| ** in *ppBlob. Otherwise an [error code] is returned and, unless the error | ||||
| ** code is SQLITE_MISUSE, *ppBlob is set to NULL.)^ ^This means that, provided | ||||
| ** the API is not misused, it is always safe to call [sqlite3_blob_close()] | ||||
| ** on *ppBlob after this function it returns. | ||||
| ** on *ppBlob after this function returns. | ||||
| ** | ||||
| ** This function fails with SQLITE_ERROR if any of the following are true: | ||||
| ** <ul> | ||||
| @@ -8381,7 +8381,7 @@ SQLITE_API int sqlite3_blob_close(sqlite3_blob *); | ||||
| ** | ||||
| ** ^Returns the size in bytes of the BLOB accessible via the | ||||
| ** successfully opened [BLOB handle] in its only argument.  ^The | ||||
| ** incremental blob I/O routines can only read or overwriting existing | ||||
| ** incremental blob I/O routines can only read or overwrite existing | ||||
| ** blob content; they cannot change the size of a blob. | ||||
| ** | ||||
| ** This routine only works on a [BLOB handle] which has been created | ||||
| @@ -8531,7 +8531,7 @@ SQLITE_API int sqlite3_vfs_unregister(sqlite3_vfs*); | ||||
| ** ^The sqlite3_mutex_alloc() routine allocates a new | ||||
| ** mutex and returns a pointer to it. ^The sqlite3_mutex_alloc() | ||||
| ** routine returns NULL if it is unable to allocate the requested | ||||
| ** mutex.  The argument to sqlite3_mutex_alloc() must one of these | ||||
| ** mutex.  The argument to sqlite3_mutex_alloc() must be one of these | ||||
| ** integer constants: | ||||
| ** | ||||
| ** <ul> | ||||
| @@ -8764,7 +8764,7 @@ SQLITE_API int sqlite3_mutex_notheld(sqlite3_mutex*); | ||||
| ** CAPI3REF: Retrieve the mutex for a database connection | ||||
| ** METHOD: sqlite3 | ||||
| ** | ||||
| ** ^This interface returns a pointer the [sqlite3_mutex] object that | ||||
| ** ^This interface returns a pointer to the [sqlite3_mutex] object that | ||||
| ** serializes access to the [database connection] given in the argument | ||||
| ** when the [threading mode] is Serialized. | ||||
| ** ^If the [threading mode] is Single-thread or Multi-thread then this | ||||
| @@ -8887,7 +8887,7 @@ SQLITE_API int sqlite3_test_control(int op, ...); | ||||
| ** CAPI3REF: SQL Keyword Checking | ||||
| ** | ||||
| ** These routines provide access to the set of SQL language keywords | ||||
| ** recognized by SQLite.  Applications can uses these routines to determine | ||||
| ** recognized by SQLite.  Applications can use these routines to determine | ||||
| ** whether or not a specific identifier needs to be escaped (for example, | ||||
| ** by enclosing in double-quotes) so as not to confuse the parser. | ||||
| ** | ||||
| @@ -9055,7 +9055,7 @@ SQLITE_API void sqlite3_str_reset(sqlite3_str*); | ||||
| ** content of the dynamic string under construction in X.  The value | ||||
| ** returned by [sqlite3_str_value(X)] is managed by the sqlite3_str object X | ||||
| ** and might be freed or altered by any subsequent method on the same | ||||
| ** [sqlite3_str] object.  Applications must not used the pointer returned | ||||
| ** [sqlite3_str] object.  Applications must not use the pointer returned by | ||||
| ** [sqlite3_str_value(X)] after any subsequent method call on the same | ||||
| ** object.  ^Applications may change the content of the string returned | ||||
| ** by [sqlite3_str_value(X)] as long as they do not write into any bytes | ||||
| @@ -9141,7 +9141,7 @@ SQLITE_API int sqlite3_status64( | ||||
| ** allocation which could not be satisfied by the [SQLITE_CONFIG_PAGECACHE] | ||||
| ** buffer and where forced to overflow to [sqlite3_malloc()].  The | ||||
| ** returned value includes allocations that overflowed because they | ||||
| ** where too large (they were larger than the "sz" parameter to | ||||
| ** were too large (they were larger than the "sz" parameter to | ||||
| ** [SQLITE_CONFIG_PAGECACHE]) and allocations that overflowed because | ||||
| ** no space was left in the page cache.</dd>)^ | ||||
| ** | ||||
| @@ -9225,28 +9225,29 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r | ||||
| ** [[SQLITE_DBSTATUS_LOOKASIDE_HIT]] ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_HIT</dt> | ||||
| ** <dd>This parameter returns the number of malloc attempts that were | ||||
| ** satisfied using lookaside memory. Only the high-water value is meaningful; | ||||
| ** the current value is always zero.)^ | ||||
| ** the current value is always zero.</dd>)^ | ||||
| ** | ||||
| ** [[SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE]] | ||||
| ** ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE</dt> | ||||
| ** <dd>This parameter returns the number malloc attempts that might have | ||||
| ** <dd>This parameter returns the number of malloc attempts that might have | ||||
| ** been satisfied using lookaside memory but failed due to the amount of | ||||
| ** memory requested being larger than the lookaside slot size. | ||||
| ** Only the high-water value is meaningful; | ||||
| ** the current value is always zero.)^ | ||||
| ** the current value is always zero.</dd>)^ | ||||
| ** | ||||
| ** [[SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL]] | ||||
| ** ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL</dt> | ||||
| ** <dd>This parameter returns the number malloc attempts that might have | ||||
| ** <dd>This parameter returns the number of malloc attempts that might have | ||||
| ** been satisfied using lookaside memory but failed due to all lookaside | ||||
| ** memory already being in use. | ||||
| ** Only the high-water value is meaningful; | ||||
| ** the current value is always zero.)^ | ||||
| ** the current value is always zero.</dd>)^ | ||||
| ** | ||||
| ** [[SQLITE_DBSTATUS_CACHE_USED]] ^(<dt>SQLITE_DBSTATUS_CACHE_USED</dt> | ||||
| ** <dd>This parameter returns the approximate number of bytes of heap | ||||
| ** memory used by all pager caches associated with the database connection.)^ | ||||
| ** ^The highwater mark associated with SQLITE_DBSTATUS_CACHE_USED is always 0. | ||||
| ** </dd> | ||||
| ** | ||||
| ** [[SQLITE_DBSTATUS_CACHE_USED_SHARED]] | ||||
| ** ^(<dt>SQLITE_DBSTATUS_CACHE_USED_SHARED</dt> | ||||
| @@ -9255,10 +9256,10 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r | ||||
| ** memory used by that pager cache is divided evenly between the attached | ||||
| ** connections.)^  In other words, if none of the pager caches associated | ||||
| ** with the database connection are shared, this request returns the same | ||||
| ** value as DBSTATUS_CACHE_USED. Or, if one or more or the pager caches are | ||||
| ** value as DBSTATUS_CACHE_USED. Or, if one or more of the pager caches are | ||||
| ** shared, the value returned by this call will be smaller than that returned | ||||
| ** by DBSTATUS_CACHE_USED. ^The highwater mark associated with | ||||
| ** SQLITE_DBSTATUS_CACHE_USED_SHARED is always 0. | ||||
| ** SQLITE_DBSTATUS_CACHE_USED_SHARED is always 0.</dd> | ||||
| ** | ||||
| ** [[SQLITE_DBSTATUS_SCHEMA_USED]] ^(<dt>SQLITE_DBSTATUS_SCHEMA_USED</dt> | ||||
| ** <dd>This parameter returns the approximate number of bytes of heap | ||||
| @@ -9268,6 +9269,7 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r | ||||
| ** schema memory is shared with other database connections due to | ||||
| ** [shared cache mode] being enabled. | ||||
| ** ^The highwater mark associated with SQLITE_DBSTATUS_SCHEMA_USED is always 0. | ||||
| ** </dd> | ||||
| ** | ||||
| ** [[SQLITE_DBSTATUS_STMT_USED]] ^(<dt>SQLITE_DBSTATUS_STMT_USED</dt> | ||||
| ** <dd>This parameter returns the approximate number of bytes of heap | ||||
| @@ -9304,7 +9306,7 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r | ||||
| ** been written to disk in the middle of a transaction due to the page | ||||
| ** cache overflowing. Transactions are more efficient if they are written | ||||
| ** 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 to help identify | ||||
| ** inefficiencies that can be resolved by increasing the cache size. | ||||
| ** </dd> | ||||
| ** | ||||
| @@ -9784,7 +9786,7 @@ typedef struct sqlite3_backup sqlite3_backup; | ||||
| ** external process or via a database connection other than the one being | ||||
| ** used by the backup operation, then the backup will be automatically | ||||
| ** restarted by the next call to sqlite3_backup_step(). ^If the source | ||||
| ** database is modified by the using the same database connection as is used | ||||
| ** database is modified by using the same database connection as is used | ||||
| ** by the backup operation, then the backup database is automatically | ||||
| ** updated at the same time. | ||||
| ** | ||||
| @@ -9801,7 +9803,7 @@ typedef struct sqlite3_backup sqlite3_backup; | ||||
| ** and may not be used following a call to sqlite3_backup_finish(). | ||||
| ** | ||||
| ** ^The value returned by sqlite3_backup_finish is [SQLITE_OK] if no | ||||
| ** sqlite3_backup_step() errors occurred, regardless or whether or not | ||||
| ** sqlite3_backup_step() errors occurred, regardless of whether or not | ||||
| ** sqlite3_backup_step() completed. | ||||
| ** ^If an out-of-memory condition or IO error occurred during any prior | ||||
| ** sqlite3_backup_step() call on the same [sqlite3_backup] object, then | ||||
| @@ -10871,7 +10873,7 @@ SQLITE_API void sqlite3_stmt_scanstatus_reset(sqlite3_stmt*); | ||||
| ** METHOD: sqlite3 | ||||
| ** | ||||
| ** ^If a write-transaction is open on [database connection] D when the | ||||
| ** [sqlite3_db_cacheflush(D)] interface invoked, any dirty | ||||
| ** [sqlite3_db_cacheflush(D)] interface is invoked, any dirty | ||||
| ** pages in the pager-cache that are not currently in use are written out | ||||
| ** to disk. A dirty page may be in use if a database cursor created by an | ||||
| ** active SQL statement is reading from it, or if it is page 1 of a database | ||||
| @@ -15442,8 +15444,8 @@ typedef INT16_TYPE LogEst; | ||||
| ** assuming n is a signed integer type.  UMXV(n) is similar for unsigned | ||||
| ** integer types. | ||||
| */ | ||||
| #define SMXV(n) ((((i64)1)<<(sizeof(n)-1))-1) | ||||
| #define UMXV(n) ((((i64)1)<<(sizeof(n)))-1) | ||||
| #define SMXV(n) ((((i64)1)<<(sizeof(n)*8-1))-1) | ||||
| #define UMXV(n) ((((i64)1)<<(sizeof(n)*8))-1) | ||||
| 
 | ||||
| /*
 | ||||
| ** Round up a number to the next larger multiple of 8.  This is used | ||||
| @@ -19254,7 +19256,7 @@ struct AggInfo { | ||||
|                           ** from source tables rather than from accumulators */ | ||||
|   u8 useSortingIdx;       /* In direct mode, reference the sorting index rather
 | ||||
|                           ** than the source table */ | ||||
|   u16 nSortingColumn;     /* Number of columns in the sorting index */ | ||||
|   u32 nSortingColumn;     /* Number of columns in the sorting index */ | ||||
|   int sortingIdx;         /* Cursor number of the sorting index */ | ||||
|   int sortingIdxPTab;     /* Cursor number of pseudo-table */ | ||||
|   int iFirstReg;          /* First register in range for aCol[] and aFunc[] */ | ||||
| @@ -19263,8 +19265,8 @@ struct AggInfo { | ||||
|     Table *pTab;             /* Source table */ | ||||
|     Expr *pCExpr;            /* The original expression */ | ||||
|     int iTable;              /* Cursor number of the source table */ | ||||
|     i16 iColumn;             /* Column number within the source table */ | ||||
|     i16 iSorterColumn;       /* Column number in the sorting index */ | ||||
|     int iColumn;             /* Column number within the source table */ | ||||
|     int iSorterColumn;       /* Column number in the sorting index */ | ||||
|   } *aCol; | ||||
|   int nColumn;            /* Number of used entries in aCol[] */ | ||||
|   int nAccumulator;       /* Number of columns that show through to the output.
 | ||||
| @@ -54966,7 +54968,9 @@ bitvec_set_rehash: | ||||
|     }else{ | ||||
|       memcpy(aiValues, p->u.aHash, sizeof(p->u.aHash)); | ||||
|       memset(p->u.apSub, 0, sizeof(p->u.apSub)); | ||||
|       p->iDivisor = (p->iSize + BITVEC_NPTR - 1)/BITVEC_NPTR; | ||||
|       p->iDivisor = p->iSize/BITVEC_NPTR; | ||||
|       if( (p->iSize%BITVEC_NPTR)!=0 ) p->iDivisor++; | ||||
|       if( p->iDivisor<BITVEC_NBIT ) p->iDivisor = BITVEC_NBIT; | ||||
|       rc = sqlite3BitvecSet(p, i); | ||||
|       for(j=0; j<BITVEC_NINT; j++){ | ||||
|         if( aiValues[j] ) rc |= sqlite3BitvecSet(p, aiValues[j]); | ||||
| @@ -69654,6 +69658,7 @@ SQLITE_PRIVATE int sqlite3WalUndo(Wal *pWal, int (*xUndo)(void *, Pgno), void *p | ||||
|       if( iMax!=pWal->hdr.mxFrame ) walCleanupHash(pWal); | ||||
|     } | ||||
|     SEH_EXCEPT( rc = SQLITE_IOERR_IN_PAGE; ) | ||||
|     pWal->iReCksum = 0; | ||||
|   } | ||||
|   return rc; | ||||
| } | ||||
| @@ -69701,6 +69706,9 @@ SQLITE_PRIVATE int sqlite3WalSavepointUndo(Wal *pWal, u32 *aWalData){ | ||||
|       walCleanupHash(pWal); | ||||
|     } | ||||
|     SEH_EXCEPT( rc = SQLITE_IOERR_IN_PAGE; ) | ||||
|     if( pWal->iReCksum>pWal->hdr.mxFrame ){ | ||||
|       pWal->iReCksum = 0; | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   return rc; | ||||
| @@ -117346,7 +117354,9 @@ static void findOrCreateAggInfoColumn( | ||||
| ){ | ||||
|   struct AggInfo_col *pCol; | ||||
|   int k; | ||||
|   int mxTerm = pParse->db->aLimit[SQLITE_LIMIT_COLUMN]; | ||||
| 
 | ||||
|   assert( mxTerm <= SMXV(i16) ); | ||||
|   assert( pAggInfo->iFirstReg==0 ); | ||||
|   pCol = pAggInfo->aCol; | ||||
|   for(k=0; k<pAggInfo->nColumn; k++, pCol++){ | ||||
| @@ -117364,6 +117374,10 @@ static void findOrCreateAggInfoColumn( | ||||
|     assert( pParse->db->mallocFailed ); | ||||
|     return; | ||||
|   } | ||||
|   if( k>mxTerm ){ | ||||
|     sqlite3ErrorMsg(pParse, "more than %d aggregate terms", mxTerm); | ||||
|     k = mxTerm; | ||||
|   } | ||||
|   pCol = &pAggInfo->aCol[k]; | ||||
|   assert( ExprUseYTab(pExpr) ); | ||||
|   pCol->pTab = pExpr->y.pTab; | ||||
| @@ -117397,6 +117411,7 @@ fix_up_expr: | ||||
|   if( pExpr->op==TK_COLUMN ){ | ||||
|     pExpr->op = TK_AGG_COLUMN; | ||||
|   } | ||||
|   assert( k <= SMXV(pExpr->iAgg) ); | ||||
|   pExpr->iAgg = (i16)k; | ||||
| } | ||||
| 
 | ||||
| @@ -117481,13 +117496,19 @@ static int analyzeAggregate(Walker *pWalker, Expr *pExpr){ | ||||
|         ** function that is already in the pAggInfo structure | ||||
|         */ | ||||
|         struct AggInfo_func *pItem = pAggInfo->aFunc; | ||||
|         int mxTerm = pParse->db->aLimit[SQLITE_LIMIT_COLUMN]; | ||||
|         assert( mxTerm <= SMXV(i16) ); | ||||
|         for(i=0; i<pAggInfo->nFunc; i++, pItem++){ | ||||
|           if( NEVER(pItem->pFExpr==pExpr) ) break; | ||||
|           if( sqlite3ExprCompare(0, pItem->pFExpr, pExpr, -1)==0 ){ | ||||
|             break; | ||||
|           } | ||||
|         } | ||||
|         if( i>=pAggInfo->nFunc ){ | ||||
|         if( i>mxTerm ){ | ||||
|           sqlite3ErrorMsg(pParse, "more than %d aggregate terms", mxTerm); | ||||
|           i = mxTerm; | ||||
|           assert( i<pAggInfo->nFunc ); | ||||
|         }else if( i>=pAggInfo->nFunc ){ | ||||
|           /* pExpr is original.  Make a new entry in pAggInfo->aFunc[]
 | ||||
|           */ | ||||
|           u8 enc = ENC(pParse->db); | ||||
| @@ -117541,6 +117562,7 @@ static int analyzeAggregate(Walker *pWalker, Expr *pExpr){ | ||||
|         */ | ||||
|         assert( !ExprHasProperty(pExpr, EP_TokenOnly|EP_Reduced) ); | ||||
|         ExprSetVVAProperty(pExpr, EP_NoReduce); | ||||
|         assert( i <= SMXV(pExpr->iAgg) ); | ||||
|         pExpr->iAgg = (i16)i; | ||||
|         pExpr->pAggInfo = pAggInfo; | ||||
|         return WRC_Prune; | ||||
| @@ -131999,7 +132021,7 @@ static void concatFuncCore( | ||||
|   int nSep, | ||||
|   const char *zSep | ||||
| ){ | ||||
|   i64 j, k, n = 0; | ||||
|   i64 j, n = 0; | ||||
|   int i; | ||||
|   char *z; | ||||
|   for(i=0; i<argc; i++){ | ||||
| @@ -132013,8 +132035,8 @@ static void concatFuncCore( | ||||
|   } | ||||
|   j = 0; | ||||
|   for(i=0; i<argc; i++){ | ||||
|     k = sqlite3_value_bytes(argv[i]); | ||||
|     if( k>0 ){ | ||||
|     if( sqlite3_value_type(argv[i])!=SQLITE_NULL ){ | ||||
|       int k = sqlite3_value_bytes(argv[i]); | ||||
|       const char *v = (const char*)sqlite3_value_text(argv[i]); | ||||
|       if( v!=0 ){ | ||||
|         if( j>0 && nSep>0 ){ | ||||
| @@ -163433,30 +163455,42 @@ static void exprAnalyzeOrTerm( | ||||
| **   1.  The SQLITE_Transitive optimization must be enabled | ||||
| **   2.  Must be either an == or an IS operator | ||||
| **   3.  Not originating in the ON clause of an OUTER JOIN | ||||
| **   4.  The affinities of A and B must be compatible | ||||
| **   5a. Both operands use the same collating sequence OR | ||||
| **   5b. The overall collating sequence is BINARY | ||||
| **   4.  The operator is not IS or else the query does not contain RIGHT JOIN | ||||
| **   5.  The affinities of A and B must be compatible | ||||
| **   6a. Both operands use the same collating sequence OR | ||||
| **   6b. The overall collating sequence is BINARY | ||||
| ** If this routine returns TRUE, that means that the RHS can be substituted | ||||
| ** for the LHS anyplace else in the WHERE clause where the LHS column occurs. | ||||
| ** This is an optimization.  No harm comes from returning 0.  But if 1 is | ||||
| ** returned when it should not be, then incorrect answers might result. | ||||
| */ | ||||
| static int termIsEquivalence(Parse *pParse, Expr *pExpr){ | ||||
| static int termIsEquivalence(Parse *pParse, Expr *pExpr, SrcList *pSrc){ | ||||
|   char aff1, aff2; | ||||
|   CollSeq *pColl; | ||||
|   if( !OptimizationEnabled(pParse->db, SQLITE_Transitive) ) return 0; | ||||
|   if( pExpr->op!=TK_EQ && pExpr->op!=TK_IS ) return 0; | ||||
|   if( ExprHasProperty(pExpr, EP_OuterON) ) return 0; | ||||
|   if( !OptimizationEnabled(pParse->db, SQLITE_Transitive) ) return 0;  /* (1) */ | ||||
|   if( pExpr->op!=TK_EQ && pExpr->op!=TK_IS ) return 0;                 /* (2) */ | ||||
|   if( ExprHasProperty(pExpr, EP_OuterON) ) return 0;                   /* (3) */ | ||||
|   assert( pSrc!=0 ); | ||||
|   if( pExpr->op==TK_IS | ||||
|    && pSrc->nSrc | ||||
|    && (pSrc->a[0].fg.jointype & JT_LTORJ)!=0 | ||||
|   ){ | ||||
|     return 0;                                                          /* (4) */ | ||||
|   } | ||||
|   aff1 = sqlite3ExprAffinity(pExpr->pLeft); | ||||
|   aff2 = sqlite3ExprAffinity(pExpr->pRight); | ||||
|   if( aff1!=aff2 | ||||
|    && (!sqlite3IsNumericAffinity(aff1) || !sqlite3IsNumericAffinity(aff2)) | ||||
|   ){ | ||||
|     return 0; | ||||
|     return 0;                                                          /* (5) */ | ||||
|   } | ||||
|   pColl = sqlite3ExprCompareCollSeq(pParse, pExpr); | ||||
|   if( sqlite3IsBinary(pColl) ) return 1; | ||||
|   return sqlite3ExprCollSeqMatch(pParse, pExpr->pLeft, pExpr->pRight); | ||||
|   if( !sqlite3IsBinary(pColl) | ||||
|    && !sqlite3ExprCollSeqMatch(pParse, pExpr->pLeft, pExpr->pRight) | ||||
|   ){ | ||||
|     return 0;                                                          /* (6) */ | ||||
|   } | ||||
|   return 1; | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
| @@ -163721,8 +163755,8 @@ static void exprAnalyze( | ||||
|         if( op==TK_IS ) pNew->wtFlags |= TERM_IS; | ||||
|         pTerm = &pWC->a[idxTerm]; | ||||
|         pTerm->wtFlags |= TERM_COPIED; | ||||
| 
 | ||||
|         if( termIsEquivalence(pParse, pDup) ){ | ||||
|         assert( pWInfo->pTabList!=0 ); | ||||
|         if( termIsEquivalence(pParse, pDup, pWInfo->pTabList) ){ | ||||
|           pTerm->eOperator |= WO_EQUIV; | ||||
|           eExtraOp = WO_EQUIV; | ||||
|         } | ||||
| @@ -184424,6 +184458,7 @@ SQLITE_API int sqlite3_setlk_timeout(sqlite3 *db, int ms, int flags){ | ||||
| #endif | ||||
|   if( ms<-1 ) return SQLITE_RANGE; | ||||
| #ifdef SQLITE_ENABLE_SETLK_TIMEOUT | ||||
|   sqlite3_mutex_enter(db->mutex); | ||||
|   db->setlkTimeout = ms; | ||||
|   db->setlkFlags = flags; | ||||
|   sqlite3BtreeEnterAll(db); | ||||
| @@ -184435,6 +184470,7 @@ SQLITE_API int sqlite3_setlk_timeout(sqlite3 *db, int ms, int flags){ | ||||
|     } | ||||
|   } | ||||
|   sqlite3BtreeLeaveAll(db); | ||||
|   sqlite3_mutex_leave(db->mutex); | ||||
| #endif | ||||
| #if !defined(SQLITE_ENABLE_API_ARMOR) && !defined(SQLITE_ENABLE_SETLK_TIMEOUT) | ||||
|   UNUSED_PARAMETER(db); | ||||
| @@ -257230,7 +257266,7 @@ static void fts5SourceIdFunc( | ||||
| ){ | ||||
|   assert( nArg==0 ); | ||||
|   UNUSED_PARAM2(nArg, apUnused); | ||||
|   sqlite3_result_text(pCtx, "fts5: 2025-06-06 14:52:32 b77dc5e0f596d2140d9ac682b2893ff65d3a4140aa86067a3efebe29dc914c95", -1, SQLITE_TRANSIENT); | ||||
|   sqlite3_result_text(pCtx, "fts5: 2025-06-28 14:00:48 2af157d77fb1304a74176eaee7fbc7c7e932d946bf25325e9c26c91db19e3079", -1, SQLITE_TRANSIENT); | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
| @@ -258045,6 +258081,7 @@ static int fts5StorageDeleteFromIndex( | ||||
|   for(iCol=1; rc==SQLITE_OK && iCol<=pConfig->nCol; iCol++){ | ||||
|     if( pConfig->abUnindexed[iCol-1]==0 ){ | ||||
|       sqlite3_value *pVal = 0; | ||||
|       sqlite3_value *pFree = 0; | ||||
|       const char *pText = 0; | ||||
|       int nText = 0; | ||||
|       const char *pLoc = 0; | ||||
| @@ -258061,11 +258098,22 @@ static int fts5StorageDeleteFromIndex( | ||||
|       if( pConfig->bLocale && sqlite3Fts5IsLocaleValue(pConfig, pVal) ){ | ||||
|         rc = sqlite3Fts5DecodeLocaleValue(pVal, &pText, &nText, &pLoc, &nLoc); | ||||
|       }else{ | ||||
|         pText = (const char*)sqlite3_value_text(pVal); | ||||
|         nText = sqlite3_value_bytes(pVal); | ||||
|         if( pConfig->bLocale && pSeek ){ | ||||
|           pLoc = (const char*)sqlite3_column_text(pSeek, iCol + pConfig->nCol); | ||||
|           nLoc = sqlite3_column_bytes(pSeek, iCol + pConfig->nCol); | ||||
|         if( sqlite3_value_type(pVal)!=SQLITE_TEXT ){ | ||||
|           /* Make a copy of the value to work with. This is because the call
 | ||||
|           ** to sqlite3_value_text() below forces the type of the value to | ||||
|           ** SQLITE_TEXT, and we may need to use it again later. */ | ||||
|           pFree = pVal = sqlite3_value_dup(pVal); | ||||
|           if( pVal==0 ){ | ||||
|             rc = SQLITE_NOMEM; | ||||
|           } | ||||
|         } | ||||
|         if( rc==SQLITE_OK ){ | ||||
|           pText = (const char*)sqlite3_value_text(pVal); | ||||
|           nText = sqlite3_value_bytes(pVal); | ||||
|           if( pConfig->bLocale && pSeek ){ | ||||
|             pLoc = (const char*)sqlite3_column_text(pSeek, iCol+pConfig->nCol); | ||||
|             nLoc = sqlite3_column_bytes(pSeek, iCol + pConfig->nCol); | ||||
|           } | ||||
|         } | ||||
|       } | ||||
| 
 | ||||
| @@ -258081,6 +258129,7 @@ static int fts5StorageDeleteFromIndex( | ||||
|         } | ||||
|         sqlite3Fts5ClearLocale(pConfig); | ||||
|       } | ||||
|       sqlite3_value_free(pFree); | ||||
|     } | ||||
|   } | ||||
|   if( rc==SQLITE_OK && p->nTotalRow<1 ){ | ||||
|   | ||||
							
								
								
									
										92
									
								
								deps/sqlite/sqlite3.h
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										92
									
								
								deps/sqlite/sqlite3.h
									
									
									
									
										vendored
									
									
								
							| @@ -146,9 +146,9 @@ extern "C" { | ||||
| ** [sqlite3_libversion_number()], [sqlite3_sourceid()], | ||||
| ** [sqlite_version()] and [sqlite_source_id()]. | ||||
| */ | ||||
| #define SQLITE_VERSION        "3.50.1" | ||||
| #define SQLITE_VERSION_NUMBER 3050001 | ||||
| #define SQLITE_SOURCE_ID      "2025-06-06 14:52:32 b77dc5e0f596d2140d9ac682b2893ff65d3a4140aa86067a3efebe29dc914c95" | ||||
| #define SQLITE_VERSION        "3.50.2" | ||||
| #define SQLITE_VERSION_NUMBER 3050002 | ||||
| #define SQLITE_SOURCE_ID      "2025-06-28 14:00:48 2af157d77fb1304a74176eaee7fbc7c7e932d946bf25325e9c26c91db19e3079" | ||||
|  | ||||
| /* | ||||
| ** CAPI3REF: Run-Time Library Version Numbers | ||||
| @@ -4079,7 +4079,7 @@ SQLITE_API sqlite3_file *sqlite3_database_file_object(const char*); | ||||
| ** | ||||
| ** The sqlite3_create_filename(D,J,W,N,P) allocates memory to hold a version of | ||||
| ** database filename D with corresponding journal file J and WAL file W and | ||||
| ** with N URI parameters key/values pairs in the array P.  The result from | ||||
| ** an array P of N URI Key/Value pairs.  The result from | ||||
| ** sqlite3_create_filename(D,J,W,N,P) is a pointer to a database filename that | ||||
| ** is safe to pass to routines like: | ||||
| ** <ul> | ||||
| @@ -4760,7 +4760,7 @@ typedef struct sqlite3_context sqlite3_context; | ||||
| ** METHOD: sqlite3_stmt | ||||
| ** | ||||
| ** ^(In the SQL statement text input to [sqlite3_prepare_v2()] and its variants, | ||||
| ** literals may be replaced by a [parameter] that matches one of following | ||||
| ** literals may be replaced by a [parameter] that matches one of the following | ||||
| ** templates: | ||||
| ** | ||||
| ** <ul> | ||||
| @@ -4805,7 +4805,7 @@ typedef struct sqlite3_context sqlite3_context; | ||||
| ** | ||||
| ** [[byte-order determination rules]] ^The byte-order of | ||||
| ** UTF16 input text is determined by the byte-order mark (BOM, U+FEFF) | ||||
| ** found in first character, which is removed, or in the absence of a BOM | ||||
| ** found in the first character, which is removed, or in the absence of a BOM | ||||
| ** the byte order is the native byte order of the host | ||||
| ** machine for sqlite3_bind_text16() or the byte order specified in | ||||
| ** the 6th parameter for sqlite3_bind_text64().)^ | ||||
| @@ -4825,7 +4825,7 @@ typedef struct sqlite3_context sqlite3_context; | ||||
| ** or sqlite3_bind_text16() or sqlite3_bind_text64() then | ||||
| ** that parameter must be the byte offset | ||||
| ** where the NUL terminator would occur assuming the string were NUL | ||||
| ** terminated.  If any NUL characters occurs at byte offsets less than | ||||
| ** terminated.  If any NUL characters occur at byte offsets less than | ||||
| ** the value of the fourth parameter then the resulting string value will | ||||
| ** contain embedded NULs.  The result of expressions involving strings | ||||
| ** with embedded NULs is undefined. | ||||
| @@ -5037,7 +5037,7 @@ SQLITE_API const void *sqlite3_column_name16(sqlite3_stmt*, int N); | ||||
| ** METHOD: sqlite3_stmt | ||||
| ** | ||||
| ** ^These routines provide a means to determine the database, table, and | ||||
| ** table column that is the origin of a particular result column in | ||||
| ** table column that is the origin of a particular result column in a | ||||
| ** [SELECT] statement. | ||||
| ** ^The name of the database or table or column can be returned as | ||||
| ** either a UTF-8 or UTF-16 string.  ^The _database_ routines return | ||||
| @@ -5606,8 +5606,8 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt); | ||||
| ** | ||||
| ** For best security, the [SQLITE_DIRECTONLY] flag is recommended for | ||||
| ** all application-defined SQL functions that do not need to be | ||||
| ** used inside of triggers, view, CHECK constraints, or other elements of | ||||
| ** the database schema.  This flags is especially recommended for SQL | ||||
| ** used inside of triggers, views, CHECK constraints, or other elements of | ||||
| ** the database schema.  This flag is especially recommended for SQL | ||||
| ** functions that have side effects or reveal internal application state. | ||||
| ** Without this flag, an attacker might be able to modify the schema of | ||||
| ** a database file to include invocations of the function with parameters | ||||
| @@ -5638,7 +5638,7 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt); | ||||
| ** [user-defined window functions|available here]. | ||||
| ** | ||||
| ** ^(If the final parameter to sqlite3_create_function_v2() or | ||||
| ** sqlite3_create_window_function() is not NULL, then it is destructor for | ||||
| ** sqlite3_create_window_function() is not NULL, then it is the destructor for | ||||
| ** the application data pointer. The destructor is invoked when the function | ||||
| ** is deleted, either by being overloaded or when the database connection | ||||
| ** closes.)^ ^The destructor is also invoked if the call to | ||||
| @@ -6038,7 +6038,7 @@ SQLITE_API unsigned int sqlite3_value_subtype(sqlite3_value*); | ||||
| ** METHOD: sqlite3_value | ||||
| ** | ||||
| ** ^The sqlite3_value_dup(V) interface makes a copy of the [sqlite3_value] | ||||
| ** object D and returns a pointer to that copy.  ^The [sqlite3_value] returned | ||||
| ** object V and returns a pointer to that copy.  ^The [sqlite3_value] returned | ||||
| ** is a [protected sqlite3_value] object even if the input is not. | ||||
| ** ^The sqlite3_value_dup(V) interface returns NULL if V is NULL or if a | ||||
| ** memory allocation fails. ^If V is a [pointer value], then the result | ||||
| @@ -6076,7 +6076,7 @@ SQLITE_API void sqlite3_value_free(sqlite3_value*); | ||||
| ** allocation error occurs. | ||||
| ** | ||||
| ** ^(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 the first successful call.  Changing the | ||||
| ** value of N in any subsequent call to sqlite3_aggregate_context() within | ||||
| ** the same aggregate function instance will not resize the memory | ||||
| ** allocation.)^  Within the xFinal callback, it is customary to set | ||||
| @@ -6238,7 +6238,7 @@ SQLITE_API void sqlite3_set_auxdata(sqlite3_context*, int N, void*, void (*)(voi | ||||
| ** | ||||
| ** Security Warning:  These interfaces should not be exposed in scripting | ||||
| ** languages or in other circumstances where it might be possible for an | ||||
| ** an attacker to invoke them.  Any agent that can invoke these interfaces | ||||
| ** attacker to invoke them.  Any agent that can invoke these interfaces | ||||
| ** can probably also take control of the process. | ||||
| ** | ||||
| ** Database connection client data is only available for SQLite | ||||
| @@ -6352,7 +6352,7 @@ typedef void (*sqlite3_destructor_type)(void*); | ||||
| ** pointed to by the 2nd parameter are taken as the application-defined | ||||
| ** function result.  If the 3rd parameter is non-negative, then it | ||||
| ** must be the byte offset into the string where the NUL terminator would | ||||
| ** appear if the string where NUL terminated.  If any NUL characters occur | ||||
| ** appear if the string were NUL terminated.  If any NUL characters occur | ||||
| ** in the string at a byte offset that is less than the value of the 3rd | ||||
| ** parameter, then the resulting string will contain embedded NULs and the | ||||
| ** result of expressions operating on strings with embedded NULs is undefined. | ||||
| @@ -6410,7 +6410,7 @@ typedef void (*sqlite3_destructor_type)(void*); | ||||
| ** string and preferably a string literal. The sqlite3_result_pointer() | ||||
| ** routine is part of the [pointer passing interface] added for SQLite 3.20.0. | ||||
| ** | ||||
| ** If these routines are called from within the different thread | ||||
| ** If these routines are called from within a different thread | ||||
| ** than the one containing the application-defined function that received | ||||
| ** the [sqlite3_context] pointer, the results are undefined. | ||||
| */ | ||||
| @@ -6816,7 +6816,7 @@ SQLITE_API sqlite3 *sqlite3_db_handle(sqlite3_stmt*); | ||||
| ** METHOD: sqlite3 | ||||
| ** | ||||
| ** ^The sqlite3_db_name(D,N) interface returns a pointer to the schema name | ||||
| ** for the N-th database on database connection D, or a NULL pointer of N is | ||||
| ** for the N-th database on database connection D, or a NULL pointer if N is | ||||
| ** out of range.  An N value of 0 means the main database file.  An N of 1 is | ||||
| ** the "temp" schema.  Larger values of N correspond to various ATTACH-ed | ||||
| ** databases. | ||||
| @@ -6911,7 +6911,7 @@ SQLITE_API int sqlite3_txn_state(sqlite3*,const char *zSchema); | ||||
| ** <dd>The SQLITE_TXN_READ state means that the database is currently | ||||
| ** in a read transaction.  Content has been read from the database file | ||||
| ** but nothing in the database file has changed.  The transaction state | ||||
| ** will advanced to SQLITE_TXN_WRITE if any changes occur and there are | ||||
| ** will be advanced to SQLITE_TXN_WRITE if any changes occur and there are | ||||
| ** no other conflicting concurrent write transactions.  The transaction | ||||
| ** state will revert to SQLITE_TXN_NONE following a [ROLLBACK] or | ||||
| ** [COMMIT].</dd> | ||||
| @@ -6920,7 +6920,7 @@ SQLITE_API int sqlite3_txn_state(sqlite3*,const char *zSchema); | ||||
| ** <dd>The SQLITE_TXN_WRITE state means that the database is currently | ||||
| ** in a write transaction.  Content has been written to the database file | ||||
| ** but has not yet committed.  The transaction state will change to | ||||
| ** to SQLITE_TXN_NONE at the next [ROLLBACK] or [COMMIT].</dd> | ||||
| ** SQLITE_TXN_NONE at the next [ROLLBACK] or [COMMIT].</dd> | ||||
| */ | ||||
| #define SQLITE_TXN_NONE  0 | ||||
| #define SQLITE_TXN_READ  1 | ||||
| @@ -7201,7 +7201,7 @@ SQLITE_API int sqlite3_db_release_memory(sqlite3*); | ||||
| ** CAPI3REF: Impose A Limit On Heap Size | ||||
| ** | ||||
| ** These interfaces impose limits on the amount of heap memory that will be | ||||
| ** by all database connections within a single process. | ||||
| ** used by all database connections within a single process. | ||||
| ** | ||||
| ** ^The sqlite3_soft_heap_limit64() interface sets and/or queries the | ||||
| ** soft limit on the amount of heap memory that may be allocated by SQLite. | ||||
| @@ -7259,7 +7259,7 @@ SQLITE_API int sqlite3_db_release_memory(sqlite3*); | ||||
| ** </ul>)^ | ||||
| ** | ||||
| ** The circumstances under which SQLite will enforce the heap limits may | ||||
| ** changes in future releases of SQLite. | ||||
| ** change in future releases of SQLite. | ||||
| */ | ||||
| SQLITE_API sqlite3_int64 sqlite3_soft_heap_limit64(sqlite3_int64 N); | ||||
| SQLITE_API sqlite3_int64 sqlite3_hard_heap_limit64(sqlite3_int64 N); | ||||
| @@ -7374,8 +7374,8 @@ SQLITE_API int sqlite3_table_column_metadata( | ||||
| ** ^The entry point is zProc. | ||||
| ** ^(zProc may be 0, in which case SQLite will try to come up with an | ||||
| ** entry point name on its own.  It first tries "sqlite3_extension_init". | ||||
| ** If that does not work, it constructs a name "sqlite3_X_init" where the | ||||
| ** X is consists of the lower-case equivalent of all ASCII alphabetic | ||||
| ** If that does not work, it constructs a name "sqlite3_X_init" where | ||||
| ** X consists of the lower-case equivalent of all ASCII alphabetic | ||||
| ** characters in the filename from the last "/" to the first following | ||||
| ** "." and omitting any initial "lib".)^ | ||||
| ** ^The sqlite3_load_extension() interface returns | ||||
| @@ -7446,7 +7446,7 @@ SQLITE_API int sqlite3_enable_load_extension(sqlite3 *db, int onoff); | ||||
| ** ^(Even though the function prototype shows that xEntryPoint() takes | ||||
| ** no arguments and returns void, SQLite invokes xEntryPoint() with three | ||||
| ** arguments and expects an integer result as if the signature of the | ||||
| ** entry point where as follows: | ||||
| ** entry point were as follows: | ||||
| ** | ||||
| ** <blockquote><pre> | ||||
| **    int xEntryPoint( | ||||
| @@ -7610,7 +7610,7 @@ struct sqlite3_module { | ||||
| ** virtual table and might not be checked again by the byte code.)^ ^(The | ||||
| ** aConstraintUsage[].omit flag is an optimization hint. When the omit flag | ||||
| ** is left in its default setting of false, the constraint will always be | ||||
| ** checked separately in byte code.  If the omit flag is change to true, then | ||||
| ** checked separately in byte code.  If the omit flag is changed to true, then | ||||
| ** the constraint may or may not be checked in byte code.  In other words, | ||||
| ** when the omit flag is true there is no guarantee that the constraint will | ||||
| ** not be checked again using byte code.)^ | ||||
| @@ -7636,7 +7636,7 @@ struct sqlite3_module { | ||||
| ** The xBestIndex method may optionally populate the idxFlags field with a | ||||
| ** mask of SQLITE_INDEX_SCAN_* flags. One such flag is | ||||
| ** [SQLITE_INDEX_SCAN_HEX], which if set causes the [EXPLAIN QUERY PLAN] | ||||
| ** output to show the idxNum has hex instead of as decimal.  Another flag is | ||||
| ** output to show the idxNum as hex instead of as decimal.  Another flag is | ||||
| ** SQLITE_INDEX_SCAN_UNIQUE, which if set indicates that the query plan will | ||||
| ** return at most one row. | ||||
| ** | ||||
| @@ -7777,7 +7777,7 @@ struct sqlite3_index_info { | ||||
| ** the implementation of the [virtual table module].   ^The fourth | ||||
| ** parameter is an arbitrary client data pointer that is passed through | ||||
| ** into the [xCreate] and [xConnect] methods of the virtual table module | ||||
| ** when a new virtual table is be being created or reinitialized. | ||||
| ** when a new virtual table is being created or reinitialized. | ||||
| ** | ||||
| ** ^The sqlite3_create_module_v2() interface has a fifth parameter which | ||||
| ** is a pointer to a destructor for the pClientData.  ^SQLite will | ||||
| @@ -7942,7 +7942,7 @@ typedef struct sqlite3_blob sqlite3_blob; | ||||
| ** in *ppBlob. Otherwise an [error code] is returned and, unless the error | ||||
| ** code is SQLITE_MISUSE, *ppBlob is set to NULL.)^ ^This means that, provided | ||||
| ** the API is not misused, it is always safe to call [sqlite3_blob_close()] | ||||
| ** on *ppBlob after this function it returns. | ||||
| ** on *ppBlob after this function returns. | ||||
| ** | ||||
| ** This function fails with SQLITE_ERROR if any of the following are true: | ||||
| ** <ul> | ||||
| @@ -8062,7 +8062,7 @@ SQLITE_API int sqlite3_blob_close(sqlite3_blob *); | ||||
| ** | ||||
| ** ^Returns the size in bytes of the BLOB accessible via the | ||||
| ** successfully opened [BLOB handle] in its only argument.  ^The | ||||
| ** incremental blob I/O routines can only read or overwriting existing | ||||
| ** incremental blob I/O routines can only read or overwrite existing | ||||
| ** blob content; they cannot change the size of a blob. | ||||
| ** | ||||
| ** This routine only works on a [BLOB handle] which has been created | ||||
| @@ -8212,7 +8212,7 @@ SQLITE_API int sqlite3_vfs_unregister(sqlite3_vfs*); | ||||
| ** ^The sqlite3_mutex_alloc() routine allocates a new | ||||
| ** mutex and returns a pointer to it. ^The sqlite3_mutex_alloc() | ||||
| ** routine returns NULL if it is unable to allocate the requested | ||||
| ** mutex.  The argument to sqlite3_mutex_alloc() must one of these | ||||
| ** mutex.  The argument to sqlite3_mutex_alloc() must be one of these | ||||
| ** integer constants: | ||||
| ** | ||||
| ** <ul> | ||||
| @@ -8445,7 +8445,7 @@ SQLITE_API int sqlite3_mutex_notheld(sqlite3_mutex*); | ||||
| ** CAPI3REF: Retrieve the mutex for a database connection | ||||
| ** METHOD: sqlite3 | ||||
| ** | ||||
| ** ^This interface returns a pointer the [sqlite3_mutex] object that | ||||
| ** ^This interface returns a pointer to the [sqlite3_mutex] object that | ||||
| ** serializes access to the [database connection] given in the argument | ||||
| ** when the [threading mode] is Serialized. | ||||
| ** ^If the [threading mode] is Single-thread or Multi-thread then this | ||||
| @@ -8568,7 +8568,7 @@ SQLITE_API int sqlite3_test_control(int op, ...); | ||||
| ** CAPI3REF: SQL Keyword Checking | ||||
| ** | ||||
| ** These routines provide access to the set of SQL language keywords | ||||
| ** recognized by SQLite.  Applications can uses these routines to determine | ||||
| ** recognized by SQLite.  Applications can use these routines to determine | ||||
| ** whether or not a specific identifier needs to be escaped (for example, | ||||
| ** by enclosing in double-quotes) so as not to confuse the parser. | ||||
| ** | ||||
| @@ -8736,7 +8736,7 @@ SQLITE_API void sqlite3_str_reset(sqlite3_str*); | ||||
| ** content of the dynamic string under construction in X.  The value | ||||
| ** returned by [sqlite3_str_value(X)] is managed by the sqlite3_str object X | ||||
| ** and might be freed or altered by any subsequent method on the same | ||||
| ** [sqlite3_str] object.  Applications must not used the pointer returned | ||||
| ** [sqlite3_str] object.  Applications must not use the pointer returned by | ||||
| ** [sqlite3_str_value(X)] after any subsequent method call on the same | ||||
| ** object.  ^Applications may change the content of the string returned | ||||
| ** by [sqlite3_str_value(X)] as long as they do not write into any bytes | ||||
| @@ -8822,7 +8822,7 @@ SQLITE_API int sqlite3_status64( | ||||
| ** allocation which could not be satisfied by the [SQLITE_CONFIG_PAGECACHE] | ||||
| ** buffer and where forced to overflow to [sqlite3_malloc()].  The | ||||
| ** returned value includes allocations that overflowed because they | ||||
| ** where too large (they were larger than the "sz" parameter to | ||||
| ** were too large (they were larger than the "sz" parameter to | ||||
| ** [SQLITE_CONFIG_PAGECACHE]) and allocations that overflowed because | ||||
| ** no space was left in the page cache.</dd>)^ | ||||
| ** | ||||
| @@ -8906,28 +8906,29 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r | ||||
| ** [[SQLITE_DBSTATUS_LOOKASIDE_HIT]] ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_HIT</dt> | ||||
| ** <dd>This parameter returns the number of malloc attempts that were | ||||
| ** satisfied using lookaside memory. Only the high-water value is meaningful; | ||||
| ** the current value is always zero.)^ | ||||
| ** the current value is always zero.</dd>)^ | ||||
| ** | ||||
| ** [[SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE]] | ||||
| ** ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE</dt> | ||||
| ** <dd>This parameter returns the number malloc attempts that might have | ||||
| ** <dd>This parameter returns the number of malloc attempts that might have | ||||
| ** been satisfied using lookaside memory but failed due to the amount of | ||||
| ** memory requested being larger than the lookaside slot size. | ||||
| ** Only the high-water value is meaningful; | ||||
| ** the current value is always zero.)^ | ||||
| ** the current value is always zero.</dd>)^ | ||||
| ** | ||||
| ** [[SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL]] | ||||
| ** ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL</dt> | ||||
| ** <dd>This parameter returns the number malloc attempts that might have | ||||
| ** <dd>This parameter returns the number of malloc attempts that might have | ||||
| ** been satisfied using lookaside memory but failed due to all lookaside | ||||
| ** memory already being in use. | ||||
| ** Only the high-water value is meaningful; | ||||
| ** the current value is always zero.)^ | ||||
| ** the current value is always zero.</dd>)^ | ||||
| ** | ||||
| ** [[SQLITE_DBSTATUS_CACHE_USED]] ^(<dt>SQLITE_DBSTATUS_CACHE_USED</dt> | ||||
| ** <dd>This parameter returns the approximate number of bytes of heap | ||||
| ** memory used by all pager caches associated with the database connection.)^ | ||||
| ** ^The highwater mark associated with SQLITE_DBSTATUS_CACHE_USED is always 0. | ||||
| ** </dd> | ||||
| ** | ||||
| ** [[SQLITE_DBSTATUS_CACHE_USED_SHARED]] | ||||
| ** ^(<dt>SQLITE_DBSTATUS_CACHE_USED_SHARED</dt> | ||||
| @@ -8936,10 +8937,10 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r | ||||
| ** memory used by that pager cache is divided evenly between the attached | ||||
| ** connections.)^  In other words, if none of the pager caches associated | ||||
| ** with the database connection are shared, this request returns the same | ||||
| ** value as DBSTATUS_CACHE_USED. Or, if one or more or the pager caches are | ||||
| ** value as DBSTATUS_CACHE_USED. Or, if one or more of the pager caches are | ||||
| ** shared, the value returned by this call will be smaller than that returned | ||||
| ** by DBSTATUS_CACHE_USED. ^The highwater mark associated with | ||||
| ** SQLITE_DBSTATUS_CACHE_USED_SHARED is always 0. | ||||
| ** SQLITE_DBSTATUS_CACHE_USED_SHARED is always 0.</dd> | ||||
| ** | ||||
| ** [[SQLITE_DBSTATUS_SCHEMA_USED]] ^(<dt>SQLITE_DBSTATUS_SCHEMA_USED</dt> | ||||
| ** <dd>This parameter returns the approximate number of bytes of heap | ||||
| @@ -8949,6 +8950,7 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r | ||||
| ** schema memory is shared with other database connections due to | ||||
| ** [shared cache mode] being enabled. | ||||
| ** ^The highwater mark associated with SQLITE_DBSTATUS_SCHEMA_USED is always 0. | ||||
| ** </dd> | ||||
| ** | ||||
| ** [[SQLITE_DBSTATUS_STMT_USED]] ^(<dt>SQLITE_DBSTATUS_STMT_USED</dt> | ||||
| ** <dd>This parameter returns the approximate number of bytes of heap | ||||
| @@ -8985,7 +8987,7 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r | ||||
| ** been written to disk in the middle of a transaction due to the page | ||||
| ** cache overflowing. Transactions are more efficient if they are written | ||||
| ** 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 to help identify | ||||
| ** inefficiencies that can be resolved by increasing the cache size. | ||||
| ** </dd> | ||||
| ** | ||||
| @@ -9465,7 +9467,7 @@ typedef struct sqlite3_backup sqlite3_backup; | ||||
| ** external process or via a database connection other than the one being | ||||
| ** used by the backup operation, then the backup will be automatically | ||||
| ** restarted by the next call to sqlite3_backup_step(). ^If the source | ||||
| ** database is modified by the using the same database connection as is used | ||||
| ** database is modified by using the same database connection as is used | ||||
| ** by the backup operation, then the backup database is automatically | ||||
| ** updated at the same time. | ||||
| ** | ||||
| @@ -9482,7 +9484,7 @@ typedef struct sqlite3_backup sqlite3_backup; | ||||
| ** and may not be used following a call to sqlite3_backup_finish(). | ||||
| ** | ||||
| ** ^The value returned by sqlite3_backup_finish is [SQLITE_OK] if no | ||||
| ** sqlite3_backup_step() errors occurred, regardless or whether or not | ||||
| ** sqlite3_backup_step() errors occurred, regardless of whether or not | ||||
| ** sqlite3_backup_step() completed. | ||||
| ** ^If an out-of-memory condition or IO error occurred during any prior | ||||
| ** sqlite3_backup_step() call on the same [sqlite3_backup] object, then | ||||
| @@ -10552,7 +10554,7 @@ SQLITE_API void sqlite3_stmt_scanstatus_reset(sqlite3_stmt*); | ||||
| ** METHOD: sqlite3 | ||||
| ** | ||||
| ** ^If a write-transaction is open on [database connection] D when the | ||||
| ** [sqlite3_db_cacheflush(D)] interface invoked, any dirty | ||||
| ** [sqlite3_db_cacheflush(D)] interface is invoked, any dirty | ||||
| ** pages in the pager-cache that are not currently in use are written out | ||||
| ** to disk. A dirty page may be in use if a database cursor created by an | ||||
| ** active SQL statement is reading from it, or if it is page 1 of a database | ||||
|   | ||||
		Reference in New Issue
	
	Block a user