mirror of
				https://github.com/isar/rusqlite.git
				synced 2025-10-30 05:18:56 +08:00 
			
		
		
		
	Merge pull request #1409 from gwenn/3.44.0
Bump bundled SQLite version to 3.44.0
This commit is contained in:
		| @@ -23,10 +23,10 @@ extern "C" { | ||||
|     ) -> ::std::os::raw::c_int; | ||||
| } | ||||
|  | ||||
| pub const SQLITE_VERSION: &[u8; 7] = b"3.43.2\0"; | ||||
| pub const SQLITE_VERSION_NUMBER: i32 = 3043002; | ||||
| pub const SQLITE_VERSION: &[u8; 7] = b"3.44.0\0"; | ||||
| pub const SQLITE_VERSION_NUMBER: i32 = 3044000; | ||||
| pub const SQLITE_SOURCE_ID: &[u8; 85] = | ||||
|     b"2023-10-10 12:14:04 4310099cce5a487035fa535dd3002c59ac7f1d1bec68d7cf317fd3e769484790\0"; | ||||
|     b"2023-11-01 11:23:50 17129ba1ff7f0daf37100ee82d507aef7827cf38de1866e2633096ae6ad81301\0"; | ||||
| pub const SQLITE_OK: i32 = 0; | ||||
| pub const SQLITE_ERROR: i32 = 1; | ||||
| pub const SQLITE_INTERNAL: i32 = 2; | ||||
| @@ -397,6 +397,7 @@ pub const SQLITE_TESTCTRL_FIRST: i32 = 5; | ||||
| pub const SQLITE_TESTCTRL_PRNG_SAVE: i32 = 5; | ||||
| pub const SQLITE_TESTCTRL_PRNG_RESTORE: i32 = 6; | ||||
| pub const SQLITE_TESTCTRL_PRNG_RESET: i32 = 7; | ||||
| pub const SQLITE_TESTCTRL_FK_NO_ACTION: i32 = 7; | ||||
| pub const SQLITE_TESTCTRL_BITVEC_TEST: i32 = 8; | ||||
| pub const SQLITE_TESTCTRL_FAULT_INSTALL: i32 = 9; | ||||
| pub const SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS: i32 = 10; | ||||
| @@ -493,6 +494,7 @@ pub const SQLITE_CHANGESETSTART_INVERT: i32 = 2; | ||||
| pub const SQLITE_CHANGESETAPPLY_NOSAVEPOINT: i32 = 1; | ||||
| pub const SQLITE_CHANGESETAPPLY_INVERT: i32 = 2; | ||||
| pub const SQLITE_CHANGESETAPPLY_IGNORENOOP: i32 = 4; | ||||
| pub const SQLITE_CHANGESETAPPLY_FKNOACTION: i32 = 8; | ||||
| pub const SQLITE_CHANGESET_DATA: i32 = 1; | ||||
| pub const SQLITE_CHANGESET_NOTFOUND: i32 = 2; | ||||
| pub const SQLITE_CHANGESET_CONFLICT: i32 = 3; | ||||
| @@ -1695,6 +1697,20 @@ extern "C" { | ||||
|         arg3: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>, | ||||
|     ); | ||||
| } | ||||
| extern "C" { | ||||
|     pub fn sqlite3_get_clientdata( | ||||
|         arg1: *mut sqlite3, | ||||
|         arg2: *const ::std::os::raw::c_char, | ||||
|     ) -> *mut ::std::os::raw::c_void; | ||||
| } | ||||
| extern "C" { | ||||
|     pub fn sqlite3_set_clientdata( | ||||
|         arg1: *mut sqlite3, | ||||
|         arg2: *const ::std::os::raw::c_char, | ||||
|         arg3: *mut ::std::os::raw::c_void, | ||||
|         arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>, | ||||
|     ) -> ::std::os::raw::c_int; | ||||
| } | ||||
| pub type sqlite3_destructor_type = | ||||
|     ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>; | ||||
| extern "C" { | ||||
| @@ -2182,6 +2198,15 @@ pub struct sqlite3_module { | ||||
|     pub xShadowName: ::std::option::Option< | ||||
|         unsafe extern "C" fn(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int, | ||||
|     >, | ||||
|     pub xIntegrity: ::std::option::Option< | ||||
|         unsafe extern "C" fn( | ||||
|             pVTab: *mut sqlite3_vtab, | ||||
|             zSchema: *const ::std::os::raw::c_char, | ||||
|             zTabName: *const ::std::os::raw::c_char, | ||||
|             mFlags: ::std::os::raw::c_int, | ||||
|             pzErr: *mut *mut ::std::os::raw::c_char, | ||||
|         ) -> ::std::os::raw::c_int, | ||||
|     >, | ||||
| } | ||||
| #[repr(C)] | ||||
| #[derive(Debug, Copy, Clone)] | ||||
| @@ -3079,6 +3104,16 @@ extern "C" { | ||||
|         ppOut: *mut *mut ::std::os::raw::c_void, | ||||
|     ) -> ::std::os::raw::c_int; | ||||
| } | ||||
| extern "C" { | ||||
|     pub fn sqlite3changeset_upgrade( | ||||
|         db: *mut sqlite3, | ||||
|         zDb: *const ::std::os::raw::c_char, | ||||
|         nIn: ::std::os::raw::c_int, | ||||
|         pIn: *const ::std::os::raw::c_void, | ||||
|         pnOut: *mut ::std::os::raw::c_int, | ||||
|         ppOut: *mut *mut ::std::os::raw::c_void, | ||||
|     ) -> ::std::os::raw::c_int; | ||||
| } | ||||
| #[repr(C)] | ||||
| #[derive(Debug, Copy, Clone)] | ||||
| pub struct sqlite3_changegroup { | ||||
| @@ -3087,6 +3122,13 @@ pub struct sqlite3_changegroup { | ||||
| extern "C" { | ||||
|     pub fn sqlite3changegroup_new(pp: *mut *mut sqlite3_changegroup) -> ::std::os::raw::c_int; | ||||
| } | ||||
| extern "C" { | ||||
|     pub fn sqlite3changegroup_schema( | ||||
|         arg1: *mut sqlite3_changegroup, | ||||
|         arg2: *mut sqlite3, | ||||
|         zDb: *const ::std::os::raw::c_char, | ||||
|     ) -> ::std::os::raw::c_int; | ||||
| } | ||||
| extern "C" { | ||||
|     pub fn sqlite3changegroup_add( | ||||
|         arg1: *mut sqlite3_changegroup, | ||||
|   | ||||
							
								
								
									
										6460
									
								
								libsqlite3-sys/sqlite3/sqlite3.c
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6460
									
								
								libsqlite3-sys/sqlite3/sqlite3.c
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										199
									
								
								libsqlite3-sys/sqlite3/sqlite3.h
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										199
									
								
								libsqlite3-sys/sqlite3/sqlite3.h
									
									
									
									
										vendored
									
									
								
							| @@ -146,9 +146,9 @@ extern "C" { | ||||
| ** [sqlite3_libversion_number()], [sqlite3_sourceid()], | ||||
| ** [sqlite_version()] and [sqlite_source_id()]. | ||||
| */ | ||||
| #define SQLITE_VERSION        "3.43.2" | ||||
| #define SQLITE_VERSION_NUMBER 3043002 | ||||
| #define SQLITE_SOURCE_ID      "2023-10-10 12:14:04 4310099cce5a487035fa535dd3002c59ac7f1d1bec68d7cf317fd3e769484790" | ||||
| #define SQLITE_VERSION        "3.44.0" | ||||
| #define SQLITE_VERSION_NUMBER 3044000 | ||||
| #define SQLITE_SOURCE_ID      "2023-11-01 11:23:50 17129ba1ff7f0daf37100ee82d507aef7827cf38de1866e2633096ae6ad81301" | ||||
|  | ||||
| /* | ||||
| ** CAPI3REF: Run-Time Library Version Numbers | ||||
| @@ -2127,7 +2127,7 @@ struct sqlite3_mem_methods { | ||||
| ** is stored in each sorted record and the required column values loaded | ||||
| ** from the database as records are returned in sorted order. The default | ||||
| ** value for this option is to never use this optimization. Specifying a | ||||
| ** negative value for this option restores the default behaviour. | ||||
| ** negative value for this option restores the default behavior. | ||||
| ** This option is only available if SQLite is compiled with the | ||||
| ** [SQLITE_ENABLE_SORTER_REFERENCES] compile-time option. | ||||
| ** | ||||
| @@ -2302,7 +2302,7 @@ struct sqlite3_mem_methods { | ||||
| ** database handle, SQLite checks if this will mean that there are now no | ||||
| ** connections at all to the database. If so, it performs a checkpoint | ||||
| ** operation before closing the connection. This option may be used to | ||||
| ** override this behaviour. The first parameter passed to this operation | ||||
| ** override this behavior. The first parameter passed to this operation | ||||
| ** is an integer - positive to disable checkpoints-on-close, or zero (the | ||||
| ** default) to enable them, and negative to leave the setting unchanged. | ||||
| ** The second parameter is a pointer to an integer | ||||
| @@ -3955,6 +3955,7 @@ SQLITE_API void sqlite3_free_filename(sqlite3_filename); | ||||
| ** | ||||
| ** ^The sqlite3_errmsg() and sqlite3_errmsg16() return English-language | ||||
| ** text that describes the error, as either UTF-8 or UTF-16 respectively. | ||||
| ** (See how SQLite handles [invalid UTF] for exceptions to this rule.) | ||||
| ** ^(Memory to hold the error message string is managed internally. | ||||
| ** The application does not need to worry about freeing the result. | ||||
| ** However, the error string might be overwritten or deallocated by | ||||
| @@ -5325,6 +5326,7 @@ SQLITE_API int sqlite3_finalize(sqlite3_stmt *pStmt); | ||||
| */ | ||||
| SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt); | ||||
|  | ||||
|  | ||||
| /* | ||||
| ** CAPI3REF: Create Or Redefine SQL Functions | ||||
| ** KEYWORDS: {function creation routines} | ||||
| @@ -5879,32 +5881,32 @@ SQLITE_API sqlite3 *sqlite3_context_db_handle(sqlite3_context*); | ||||
| ** METHOD: sqlite3_context | ||||
| ** | ||||
| ** These functions may be used by (non-aggregate) SQL functions to | ||||
| ** associate metadata with argument values. If the same value is passed to | ||||
| ** multiple invocations of the same SQL function during query execution, under | ||||
| ** some circumstances the associated metadata may be preserved.  An example | ||||
| ** of where this might be useful is in a regular-expression matching | ||||
| ** function. The compiled version of the regular expression can be stored as | ||||
| ** metadata associated with the pattern string. | ||||
| ** associate auxiliary data with argument values. If the same argument | ||||
| ** value is passed to multiple invocations of the same SQL function during | ||||
| ** query execution, under some circumstances the associated auxiliary data | ||||
| ** might be preserved.  An example of where this might be useful is in a | ||||
| ** regular-expression matching function. The compiled version of the regular | ||||
| ** expression can be stored as auxiliary data associated with the pattern string. | ||||
| ** Then as long as the pattern string remains the same, | ||||
| ** the compiled regular expression can be reused on multiple | ||||
| ** invocations of the same function. | ||||
| ** | ||||
| ** ^The sqlite3_get_auxdata(C,N) interface returns a pointer to the metadata | ||||
| ** ^The sqlite3_get_auxdata(C,N) interface returns a pointer to the auxiliary data | ||||
| ** associated by the sqlite3_set_auxdata(C,N,P,X) function with the Nth argument | ||||
| ** value to the application-defined function.  ^N is zero for the left-most | ||||
| ** function argument.  ^If there is no metadata | ||||
| ** function argument.  ^If there is no auxiliary data | ||||
| ** associated with the function argument, the sqlite3_get_auxdata(C,N) interface | ||||
| ** returns a NULL pointer. | ||||
| ** | ||||
| ** ^The sqlite3_set_auxdata(C,N,P,X) interface saves P as metadata for the N-th | ||||
| ** argument of the application-defined function.  ^Subsequent | ||||
| ** ^The sqlite3_set_auxdata(C,N,P,X) interface saves P as auxiliary data for the | ||||
| ** N-th argument of the application-defined function.  ^Subsequent | ||||
| ** calls to sqlite3_get_auxdata(C,N) return P from the most recent | ||||
| ** sqlite3_set_auxdata(C,N,P,X) call if the metadata is still valid or | ||||
| ** NULL if the metadata has been discarded. | ||||
| ** sqlite3_set_auxdata(C,N,P,X) call if the auxiliary data is still valid or | ||||
| ** NULL if the auxiliary data has been discarded. | ||||
| ** ^After each call to sqlite3_set_auxdata(C,N,P,X) where X is not NULL, | ||||
| ** SQLite will invoke the destructor function X with parameter P exactly | ||||
| ** once, when the metadata is discarded. | ||||
| ** SQLite is free to discard the metadata at any time, including: <ul> | ||||
| ** once, when the auxiliary data is discarded. | ||||
| ** SQLite is free to discard the auxiliary data at any time, including: <ul> | ||||
| ** <li> ^(when the corresponding function parameter changes)^, or | ||||
| ** <li> ^(when [sqlite3_reset()] or [sqlite3_finalize()] is called for the | ||||
| **      SQL statement)^, or | ||||
| @@ -5920,7 +5922,7 @@ SQLITE_API sqlite3 *sqlite3_context_db_handle(sqlite3_context*); | ||||
| ** function implementation should not make any use of P after | ||||
| ** sqlite3_set_auxdata() has been called. | ||||
| ** | ||||
| ** ^(In practice, metadata is preserved between function calls for | ||||
| ** ^(In practice, auxiliary data is preserved between function calls for | ||||
| ** function parameters that are compile-time constants, including literal | ||||
| ** values and [parameters] and expressions composed from the same.)^ | ||||
| ** | ||||
| @@ -5930,10 +5932,67 @@ SQLITE_API sqlite3 *sqlite3_context_db_handle(sqlite3_context*); | ||||
| ** | ||||
| ** These routines must be called from the same thread in which | ||||
| ** the SQL function is running. | ||||
| ** | ||||
| ** See also: [sqlite3_get_clientdata()] and [sqlite3_set_clientdata()]. | ||||
| */ | ||||
| SQLITE_API void *sqlite3_get_auxdata(sqlite3_context*, int N); | ||||
| SQLITE_API void sqlite3_set_auxdata(sqlite3_context*, int N, void*, void (*)(void*)); | ||||
|  | ||||
| /* | ||||
| ** CAPI3REF: Database Connection Client Data | ||||
| ** METHOD: sqlite3 | ||||
| ** | ||||
| ** These functions are used to associate one or more named pointers | ||||
| ** with a [database connection]. | ||||
| ** A call to sqlite3_set_clientdata(D,N,P,X) causes the pointer P | ||||
| ** to be attached to [database connection] D using name N.  Subsequent | ||||
| ** calls to sqlite3_get_clientdata(D,N) will return a copy of pointer P | ||||
| ** or a NULL pointer if there were no prior calls to | ||||
| ** sqlite3_set_clientdata() with the same values of D and N. | ||||
| ** Names are compared using strcmp() and are thus case sensitive. | ||||
| ** | ||||
| ** If P and X are both non-NULL, then the destructor X is invoked with | ||||
| ** argument P on the first of the following occurrences: | ||||
| ** <ul> | ||||
| ** <li> An out-of-memory error occurs during the call to | ||||
| **      sqlite3_set_clientdata() which attempts to register pointer P. | ||||
| ** <li> A subsequent call to sqlite3_set_clientdata(D,N,P,X) is made | ||||
| **      with the same D and N parameters. | ||||
| ** <li> The database connection closes.  SQLite does not make any guarantees | ||||
| **      about the order in which destructors are called, only that all | ||||
| **      destructors will be called exactly once at some point during the | ||||
| **      database connection closing process. | ||||
| ** </ul> | ||||
| ** | ||||
| ** SQLite does not do anything with client data other than invoke | ||||
| ** destructors on the client data at the appropriate time.  The intended | ||||
| ** use for client data is to provide a mechanism for wrapper libraries | ||||
| ** to store additional information about an SQLite database connection. | ||||
| ** | ||||
| ** There is no limit (other than available memory) on the number of different | ||||
| ** client data pointers (with different names) that can be attached to a | ||||
| ** single database connection.  However, the implementation is optimized | ||||
| ** for the case of having only one or two different client data names. | ||||
| ** Applications and wrapper libraries are discouraged from using more than | ||||
| ** one client data name each. | ||||
| ** | ||||
| ** There is no way to enumerate the client data pointers | ||||
| ** associated with a database connection.  The N parameter can be thought | ||||
| ** of as a secret key such that only code that knows the secret key is able | ||||
| ** to access the associated data. | ||||
| ** | ||||
| ** 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 | ||||
| ** can probably also take control of the process. | ||||
| ** | ||||
| ** Database connection client data is only available for SQLite | ||||
| ** version 3.44.0 ([dateof:3.44.0]) and later. | ||||
| ** | ||||
| ** See also: [sqlite3_set_auxdata()] and [sqlite3_get_auxdata()]. | ||||
| */ | ||||
| SQLITE_API void *sqlite3_get_clientdata(sqlite3*,const char*); | ||||
| SQLITE_API int sqlite3_set_clientdata(sqlite3*, const char*, void*, void(*)(void*)); | ||||
|  | ||||
| /* | ||||
| ** CAPI3REF: Constants Defining Special Destructor Behavior | ||||
| @@ -6566,7 +6625,7 @@ SQLITE_API int sqlite3_db_readonly(sqlite3 *db, const char *zDbName); | ||||
| SQLITE_API int sqlite3_txn_state(sqlite3*,const char *zSchema); | ||||
|  | ||||
| /* | ||||
| ** CAPI3REF: Allowed return values from [sqlite3_txn_state()] | ||||
| ** CAPI3REF: Allowed return values from sqlite3_txn_state() | ||||
| ** KEYWORDS: {transaction state} | ||||
| ** | ||||
| ** These constants define the current transaction state of a database file. | ||||
| @@ -6698,7 +6757,7 @@ SQLITE_API void *sqlite3_rollback_hook(sqlite3*, void(*)(void *), void*); | ||||
| ** ^Each call to the sqlite3_autovacuum_pages() interface overrides all | ||||
| ** previous invocations for that database connection.  ^If the callback | ||||
| ** argument (C) to sqlite3_autovacuum_pages(D,C,P,X) is a NULL pointer, | ||||
| ** then the autovacuum steps callback is cancelled.  The return value | ||||
| ** then the autovacuum steps callback is canceled.  The return value | ||||
| ** from sqlite3_autovacuum_pages() is normally SQLITE_OK, but might | ||||
| ** be some other error code if something goes wrong.  The current | ||||
| ** implementation will only return SQLITE_OK or SQLITE_MISUSE, but other | ||||
| @@ -7217,6 +7276,10 @@ struct sqlite3_module { | ||||
|   /* The methods above are in versions 1 and 2 of the sqlite_module object. | ||||
|   ** Those below are for version 3 and greater. */ | ||||
|   int (*xShadowName)(const char*); | ||||
|   /* The methods above are in versions 1 through 3 of the sqlite_module object. | ||||
|   ** Those below are for version 4 and greater. */ | ||||
|   int (*xIntegrity)(sqlite3_vtab *pVTab, const char *zSchema, | ||||
|                     const char *zTabName, int mFlags, char **pzErr); | ||||
| }; | ||||
|  | ||||
| /* | ||||
| @@ -7704,7 +7767,7 @@ SQLITE_API int sqlite3_blob_reopen(sqlite3_blob *, sqlite3_int64); | ||||
| ** code is returned and the transaction rolled back. | ||||
| ** | ||||
| ** Calling this function with an argument that is not a NULL pointer or an | ||||
| ** open blob handle results in undefined behaviour. ^Calling this routine | ||||
| ** open blob handle results in undefined behavior. ^Calling this routine | ||||
| ** with a null pointer (such as would be returned by a failed call to | ||||
| ** [sqlite3_blob_open()]) is a harmless no-op. ^Otherwise, if this function | ||||
| ** is passed a valid open blob handle, the values returned by the | ||||
| @@ -8184,6 +8247,7 @@ SQLITE_API int sqlite3_test_control(int op, ...); | ||||
| #define SQLITE_TESTCTRL_PRNG_SAVE                5 | ||||
| #define SQLITE_TESTCTRL_PRNG_RESTORE             6 | ||||
| #define SQLITE_TESTCTRL_PRNG_RESET               7  /* NOT USED */ | ||||
| #define SQLITE_TESTCTRL_FK_NO_ACTION             7 | ||||
| #define SQLITE_TESTCTRL_BITVEC_TEST              8 | ||||
| #define SQLITE_TESTCTRL_FAULT_INSTALL            9 | ||||
| #define SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS     10 | ||||
| @@ -9245,8 +9309,8 @@ SQLITE_API int sqlite3_backup_pagecount(sqlite3_backup *p); | ||||
| ** blocked connection already has a registered unlock-notify callback, | ||||
| ** then the new callback replaces the old.)^ ^If sqlite3_unlock_notify() is | ||||
| ** called with a NULL pointer as its second argument, then any existing | ||||
| ** unlock-notify callback is cancelled. ^The blocked connections | ||||
| ** unlock-notify callback may also be cancelled by closing the blocked | ||||
| ** unlock-notify callback is canceled. ^The blocked connections | ||||
| ** unlock-notify callback may also be canceled by closing the blocked | ||||
| ** connection using [sqlite3_close()]. | ||||
| ** | ||||
| ** The unlock-notify callback is not reentrant. If an application invokes | ||||
| @@ -10549,6 +10613,13 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_recover(sqlite3 *db, const c | ||||
| ** SQLITE_SERIALIZE_NOCOPY bit is set but no contiguous copy | ||||
| ** of the database exists. | ||||
| ** | ||||
| ** After the call, if the SQLITE_SERIALIZE_NOCOPY bit had been set, | ||||
| ** the returned buffer content will remain accessible and unchanged | ||||
| ** until either the next write operation on the connection or when | ||||
| ** the connection is closed, and applications must not modify the | ||||
| ** buffer. If the bit had been clear, the returned buffer will not | ||||
| ** be accessed by SQLite after the call. | ||||
| ** | ||||
| ** A call to sqlite3_serialize(D,S,P,F) might return NULL even if the | ||||
| ** SQLITE_SERIALIZE_NOCOPY bit is omitted from argument F if a memory | ||||
| ** allocation error occurs. | ||||
| @@ -10597,6 +10668,9 @@ SQLITE_API unsigned char *sqlite3_serialize( | ||||
| ** SQLite will try to increase the buffer size using sqlite3_realloc64() | ||||
| ** if writes on the database cause it to grow larger than M bytes. | ||||
| ** | ||||
| ** Applications must not modify the buffer P or invalidate it before | ||||
| ** the database connection D is closed. | ||||
| ** | ||||
| ** The sqlite3_deserialize() interface will fail with SQLITE_BUSY if the | ||||
| ** database is currently in a read transaction or is involved in a backup | ||||
| ** operation. | ||||
| @@ -10605,6 +10679,13 @@ SQLITE_API unsigned char *sqlite3_serialize( | ||||
| ** S argument to sqlite3_deserialize(D,S,P,N,M,F) is "temp" then the | ||||
| ** function returns SQLITE_ERROR. | ||||
| ** | ||||
| ** The deserialized database should not be in [WAL mode].  If the database | ||||
| ** is in WAL mode, then any attempt to use the database file will result | ||||
| ** in an [SQLITE_CANTOPEN] error.  The application can set the | ||||
| ** [file format version numbers] (bytes 18 and 19) of the input database P | ||||
| ** to 0x01 prior to invoking sqlite3_deserialize(D,S,P,N,M,F) to force the | ||||
| ** database file into rollback mode and work around this limitation. | ||||
| ** | ||||
| ** If sqlite3_deserialize(D,S,P,N,M,F) fails for any reason and if the | ||||
| ** SQLITE_DESERIALIZE_FREEONCLOSE bit is set in argument F, then | ||||
| ** [sqlite3_free()] is invoked on argument P prior to returning. | ||||
| @@ -11677,6 +11758,18 @@ SQLITE_API int sqlite3changeset_concat( | ||||
| ); | ||||
|  | ||||
|  | ||||
| /* | ||||
| ** CAPI3REF: Upgrade the Schema of a Changeset/Patchset | ||||
| */ | ||||
| SQLITE_API int sqlite3changeset_upgrade( | ||||
|   sqlite3 *db, | ||||
|   const char *zDb, | ||||
|   int nIn, const void *pIn,       /* Input changeset */ | ||||
|   int *pnOut, void **ppOut        /* OUT: Inverse of input */ | ||||
| ); | ||||
|  | ||||
|  | ||||
|  | ||||
| /* | ||||
| ** CAPI3REF: Changegroup Handle | ||||
| ** | ||||
| @@ -11723,6 +11816,38 @@ typedef struct sqlite3_changegroup sqlite3_changegroup; | ||||
| */ | ||||
| SQLITE_API int sqlite3changegroup_new(sqlite3_changegroup **pp); | ||||
|  | ||||
| /* | ||||
| ** CAPI3REF: Add a Schema to a Changegroup | ||||
| ** METHOD: sqlite3_changegroup_schema | ||||
| ** | ||||
| ** This method may be used to optionally enforce the rule that the changesets | ||||
| ** added to the changegroup handle must match the schema of database zDb | ||||
| ** ("main", "temp", or the name of an attached database). If | ||||
| ** sqlite3changegroup_add() is called to add a changeset that is not compatible | ||||
| ** with the configured schema, SQLITE_SCHEMA is returned and the changegroup | ||||
| ** object is left in an undefined state. | ||||
| ** | ||||
| ** A changeset schema is considered compatible with the database schema in | ||||
| ** the same way as for sqlite3changeset_apply(). Specifically, for each | ||||
| ** table in the changeset, there exists a database table with: | ||||
| ** | ||||
| ** <ul> | ||||
| **   <li> The name identified by the changeset, and | ||||
| **   <li> at least as many columns as recorded in the changeset, and | ||||
| **   <li> the primary key columns in the same position as recorded in | ||||
| **        the changeset. | ||||
| ** </ul> | ||||
| ** | ||||
| ** The output of the changegroup object always has the same schema as the | ||||
| ** database nominated using this function. In cases where changesets passed | ||||
| ** to sqlite3changegroup_add() have fewer columns than the corresponding table | ||||
| ** in the database schema, these are filled in using the default column | ||||
| ** values from the database schema. This makes it possible to combined | ||||
| ** changesets that have different numbers of columns for a single table | ||||
| ** within a changegroup, provided that they are otherwise compatible. | ||||
| */ | ||||
| SQLITE_API int sqlite3changegroup_schema(sqlite3_changegroup*, sqlite3*, const char *zDb); | ||||
|  | ||||
| /* | ||||
| ** CAPI3REF: Add A Changeset To A Changegroup | ||||
| ** METHOD: sqlite3_changegroup | ||||
| @@ -11791,13 +11916,18 @@ SQLITE_API int sqlite3changegroup_new(sqlite3_changegroup **pp); | ||||
| ** If the new changeset contains changes to a table that is already present | ||||
| ** in the changegroup, then the number of columns and the position of the | ||||
| ** primary key columns for the table must be consistent. If this is not the | ||||
| ** case, this function fails with SQLITE_SCHEMA. If the input changeset | ||||
| ** appears to be corrupt and the corruption is detected, SQLITE_CORRUPT is | ||||
| ** returned. Or, if an out-of-memory condition occurs during processing, this | ||||
| ** function returns SQLITE_NOMEM. In all cases, if an error occurs the state | ||||
| ** of the final contents of the changegroup is undefined. | ||||
| ** case, this function fails with SQLITE_SCHEMA. Except, if the changegroup | ||||
| ** object has been configured with a database schema using the | ||||
| ** sqlite3changegroup_schema() API, then it is possible to combine changesets | ||||
| ** with different numbers of columns for a single table, provided that | ||||
| ** they are otherwise compatible. | ||||
| ** | ||||
| ** If no error occurs, SQLITE_OK is returned. | ||||
| ** If the input changeset appears to be corrupt and the corruption is | ||||
| ** detected, SQLITE_CORRUPT is returned. Or, if an out-of-memory condition | ||||
| ** occurs during processing, this function returns SQLITE_NOMEM. | ||||
| ** | ||||
| ** In all cases, if an error occurs the state of the final contents of the | ||||
| ** changegroup is undefined. If no error occurs, SQLITE_OK is returned. | ||||
| */ | ||||
| SQLITE_API int sqlite3changegroup_add(sqlite3_changegroup*, int nData, void *pData); | ||||
|  | ||||
| @@ -12062,10 +12192,17 @@ SQLITE_API int sqlite3changeset_apply_v2( | ||||
| **    <li>an insert change if all fields of the conflicting row match | ||||
| **        the row being inserted. | ||||
| **    </ul> | ||||
| ** | ||||
| ** <dt>SQLITE_CHANGESETAPPLY_FKNOACTION <dd> | ||||
| **   If this flag it set, then all foreign key constraints in the target | ||||
| **   database behave as if they were declared with "ON UPDATE NO ACTION ON | ||||
| **   DELETE NO ACTION", even if they are actually CASCADE, RESTRICT, SET NULL | ||||
| **   or SET DEFAULT. | ||||
| */ | ||||
| #define SQLITE_CHANGESETAPPLY_NOSAVEPOINT   0x0001 | ||||
| #define SQLITE_CHANGESETAPPLY_INVERT        0x0002 | ||||
| #define SQLITE_CHANGESETAPPLY_IGNORENOOP    0x0004 | ||||
| #define SQLITE_CHANGESETAPPLY_FKNOACTION    0x0008 | ||||
|  | ||||
| /* | ||||
| ** CAPI3REF: Constants Passed To The Conflict Handler | ||||
|   | ||||
							
								
								
									
										6
									
								
								libsqlite3-sys/sqlite3/sqlite3ext.h
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								libsqlite3-sys/sqlite3/sqlite3ext.h
									
									
									
									
										vendored
									
									
								
							| @@ -363,6 +363,9 @@ struct sqlite3_api_routines { | ||||
|   int (*is_interrupted)(sqlite3*); | ||||
|   /* Version 3.43.0 and later */ | ||||
|   int (*stmt_explain)(sqlite3_stmt*,int); | ||||
|   /* Version 3.44.0 and later */ | ||||
|   void *(*get_clientdata)(sqlite3*,const char*); | ||||
|   int (*set_clientdata)(sqlite3*, const char*, void*, void(*)(void*)); | ||||
| }; | ||||
|  | ||||
| /* | ||||
| @@ -693,6 +696,9 @@ typedef int (*sqlite3_loadext_entry)( | ||||
| #define sqlite3_is_interrupted         sqlite3_api->is_interrupted | ||||
| /* Version 3.43.0 and later */ | ||||
| #define sqlite3_stmt_explain           sqlite3_api->stmt_explain | ||||
| /* Version 3.44.0 and later */ | ||||
| #define sqlite3_get_clientdata         sqlite3_api->get_clientdata | ||||
| #define sqlite3_set_clientdata         sqlite3_api->set_clientdata | ||||
| #endif /* !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) */ | ||||
|  | ||||
| #if !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) | ||||
|   | ||||
| @@ -9,7 +9,7 @@ export SQLITE3_LIB_DIR="$SCRIPT_DIR/sqlite3" | ||||
| export SQLITE3_INCLUDE_DIR="$SQLITE3_LIB_DIR" | ||||
|  | ||||
| # Download and extract amalgamation | ||||
| SQLITE=sqlite-amalgamation-3430200 | ||||
| SQLITE=sqlite-amalgamation-3440000 | ||||
| curl -O https://sqlite.org/2023/$SQLITE.zip | ||||
| unzip -p "$SQLITE.zip" "$SQLITE/sqlite3.c" > "$SQLITE3_LIB_DIR/sqlite3.c" | ||||
| unzip -p "$SQLITE.zip" "$SQLITE/sqlite3.h" > "$SQLITE3_LIB_DIR/sqlite3.h" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user