mirror of
https://github.com/etlegacy/etlegacy-libs.git
synced 2024-11-13 07:57:45 +00:00
libs: updated to sqlite-amalgamation-3100200
This commit is contained in:
parent
cba988204e
commit
908ecdf31e
5 changed files with 10038 additions and 3095 deletions
|
@ -2,4 +2,4 @@ Compile ET: L specific SQLite3 for several plattforms & architectures
|
||||||
|
|
||||||
Download sqlite3 amalgamation sources from https://www.sqlite.org/download.html
|
Download sqlite3 amalgamation sources from https://www.sqlite.org/download.html
|
||||||
|
|
||||||
- tested with sqlite-amalgamation-3090200
|
- tested with sqlite-amalgamation-3100200
|
||||||
|
|
4958
sqlite3/src/shell.c
Normal file
4958
sqlite3/src/shell.c
Normal file
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -111,9 +111,9 @@ extern "C" {
|
||||||
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
|
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
|
||||||
** [sqlite_version()] and [sqlite_source_id()].
|
** [sqlite_version()] and [sqlite_source_id()].
|
||||||
*/
|
*/
|
||||||
#define SQLITE_VERSION "3.9.2"
|
#define SQLITE_VERSION "3.10.2"
|
||||||
#define SQLITE_VERSION_NUMBER 3009002
|
#define SQLITE_VERSION_NUMBER 3010002
|
||||||
#define SQLITE_SOURCE_ID "2015-11-02 18:31:45 bda77dda9697c463c3d0704014d51627fceee328"
|
#define SQLITE_SOURCE_ID "2016-01-20 15:27:19 17efb4209f97fb4971656086b138599a91a75ff9"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Run-Time Library Version Numbers
|
** CAPI3REF: Run-Time Library Version Numbers
|
||||||
|
@ -478,6 +478,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_exec(
|
||||||
#define SQLITE_IOERR_GETTEMPPATH (SQLITE_IOERR | (25<<8))
|
#define SQLITE_IOERR_GETTEMPPATH (SQLITE_IOERR | (25<<8))
|
||||||
#define SQLITE_IOERR_CONVPATH (SQLITE_IOERR | (26<<8))
|
#define SQLITE_IOERR_CONVPATH (SQLITE_IOERR | (26<<8))
|
||||||
#define SQLITE_IOERR_VNODE (SQLITE_IOERR | (27<<8))
|
#define SQLITE_IOERR_VNODE (SQLITE_IOERR | (27<<8))
|
||||||
|
#define SQLITE_IOERR_AUTH (SQLITE_IOERR | (28<<8))
|
||||||
#define SQLITE_LOCKED_SHAREDCACHE (SQLITE_LOCKED | (1<<8))
|
#define SQLITE_LOCKED_SHAREDCACHE (SQLITE_LOCKED | (1<<8))
|
||||||
#define SQLITE_BUSY_RECOVERY (SQLITE_BUSY | (1<<8))
|
#define SQLITE_BUSY_RECOVERY (SQLITE_BUSY | (1<<8))
|
||||||
#define SQLITE_BUSY_SNAPSHOT (SQLITE_BUSY | (2<<8))
|
#define SQLITE_BUSY_SNAPSHOT (SQLITE_BUSY | (2<<8))
|
||||||
|
@ -793,8 +794,13 @@ struct sqlite3_io_methods {
|
||||||
** <li>[[SQLITE_FCNTL_FILE_POINTER]]
|
** <li>[[SQLITE_FCNTL_FILE_POINTER]]
|
||||||
** The [SQLITE_FCNTL_FILE_POINTER] opcode is used to obtain a pointer
|
** The [SQLITE_FCNTL_FILE_POINTER] opcode is used to obtain a pointer
|
||||||
** to the [sqlite3_file] object associated with a particular database
|
** to the [sqlite3_file] object associated with a particular database
|
||||||
** connection. See the [sqlite3_file_control()] documentation for
|
** connection. See also [SQLITE_FCNTL_JOURNAL_POINTER].
|
||||||
** additional information.
|
**
|
||||||
|
** <li>[[SQLITE_FCNTL_JOURNAL_POINTER]]
|
||||||
|
** The [SQLITE_FCNTL_JOURNAL_POINTER] opcode is used to obtain a pointer
|
||||||
|
** to the [sqlite3_file] object associated with the journal file (either
|
||||||
|
** the [rollback journal] or the [write-ahead log]) for a particular database
|
||||||
|
** connection. See also [SQLITE_FCNTL_FILE_POINTER].
|
||||||
**
|
**
|
||||||
** <li>[[SQLITE_FCNTL_SYNC_OMITTED]]
|
** <li>[[SQLITE_FCNTL_SYNC_OMITTED]]
|
||||||
** No longer in use.
|
** No longer in use.
|
||||||
|
@ -881,6 +887,15 @@ struct sqlite3_io_methods {
|
||||||
** pointer in case this file-control is not implemented. This file-control
|
** pointer in case this file-control is not implemented. This file-control
|
||||||
** is intended for diagnostic use only.
|
** is intended for diagnostic use only.
|
||||||
**
|
**
|
||||||
|
** <li>[[SQLITE_FCNTL_VFS_POINTER]]
|
||||||
|
** ^The [SQLITE_FCNTL_VFS_POINTER] opcode finds a pointer to the top-level
|
||||||
|
** [VFSes] currently in use. ^(The argument X in
|
||||||
|
** sqlite3_file_control(db,SQLITE_FCNTL_VFS_POINTER,X) must be
|
||||||
|
** of type "[sqlite3_vfs] **". This opcodes will set *X
|
||||||
|
** to a pointer to the top-level VFS.)^
|
||||||
|
** ^When there are multiple VFS shims in the stack, this opcode finds the
|
||||||
|
** upper-most shim only.
|
||||||
|
**
|
||||||
** <li>[[SQLITE_FCNTL_PRAGMA]]
|
** <li>[[SQLITE_FCNTL_PRAGMA]]
|
||||||
** ^Whenever a [PRAGMA] statement is parsed, an [SQLITE_FCNTL_PRAGMA]
|
** ^Whenever a [PRAGMA] statement is parsed, an [SQLITE_FCNTL_PRAGMA]
|
||||||
** file control is sent to the open [sqlite3_file] object corresponding
|
** file control is sent to the open [sqlite3_file] object corresponding
|
||||||
|
@ -999,6 +1014,8 @@ struct sqlite3_io_methods {
|
||||||
#define SQLITE_FCNTL_WAL_BLOCK 24
|
#define SQLITE_FCNTL_WAL_BLOCK 24
|
||||||
#define SQLITE_FCNTL_ZIPVFS 25
|
#define SQLITE_FCNTL_ZIPVFS 25
|
||||||
#define SQLITE_FCNTL_RBU 26
|
#define SQLITE_FCNTL_RBU 26
|
||||||
|
#define SQLITE_FCNTL_VFS_POINTER 27
|
||||||
|
#define SQLITE_FCNTL_JOURNAL_POINTER 28
|
||||||
|
|
||||||
/* deprecated names */
|
/* deprecated names */
|
||||||
#define SQLITE_GET_LOCKPROXYFILE SQLITE_FCNTL_GET_LOCKPROXYFILE
|
#define SQLITE_GET_LOCKPROXYFILE SQLITE_FCNTL_GET_LOCKPROXYFILE
|
||||||
|
@ -1598,29 +1615,34 @@ struct sqlite3_mem_methods {
|
||||||
** </dd>
|
** </dd>
|
||||||
**
|
**
|
||||||
** [[SQLITE_CONFIG_PAGECACHE]] <dt>SQLITE_CONFIG_PAGECACHE</dt>
|
** [[SQLITE_CONFIG_PAGECACHE]] <dt>SQLITE_CONFIG_PAGECACHE</dt>
|
||||||
** <dd> ^The SQLITE_CONFIG_PAGECACHE option specifies a static memory buffer
|
** <dd> ^The SQLITE_CONFIG_PAGECACHE option specifies a memory pool
|
||||||
** that SQLite can use for the database page cache with the default page
|
** that SQLite can use for the database page cache with the default page
|
||||||
** cache implementation.
|
** cache implementation.
|
||||||
** This configuration should not be used if an application-define page
|
** This configuration option is a no-op if an application-define page
|
||||||
** cache implementation is loaded using the [SQLITE_CONFIG_PCACHE2]
|
** cache implementation is loaded using the [SQLITE_CONFIG_PCACHE2].
|
||||||
** configuration option.
|
|
||||||
** ^There are three arguments to SQLITE_CONFIG_PAGECACHE: A pointer to
|
** ^There are three arguments to SQLITE_CONFIG_PAGECACHE: A pointer to
|
||||||
** 8-byte aligned
|
** 8-byte aligned memory (pMem), the size of each page cache line (sz),
|
||||||
** memory, the size of each page buffer (sz), and the number of pages (N).
|
** and the number of cache lines (N).
|
||||||
** The sz argument should be the size of the largest database page
|
** The sz argument should be the size of the largest database page
|
||||||
** (a power of two between 512 and 65536) plus some extra bytes for each
|
** (a power of two between 512 and 65536) plus some extra bytes for each
|
||||||
** page header. ^The number of extra bytes needed by the page header
|
** page header. ^The number of extra bytes needed by the page header
|
||||||
** can be determined using the [SQLITE_CONFIG_PCACHE_HDRSZ] option
|
** can be determined using [SQLITE_CONFIG_PCACHE_HDRSZ].
|
||||||
** to [sqlite3_config()].
|
|
||||||
** ^It is harmless, apart from the wasted memory,
|
** ^It is harmless, apart from the wasted memory,
|
||||||
** for the sz parameter to be larger than necessary. The first
|
** for the sz parameter to be larger than necessary. The pMem
|
||||||
** argument should pointer to an 8-byte aligned block of memory that
|
** argument must be either a NULL pointer or a pointer to an 8-byte
|
||||||
** is at least sz*N bytes of memory, otherwise subsequent behavior is
|
** aligned block of memory of at least sz*N bytes, otherwise
|
||||||
** undefined.
|
** subsequent behavior is undefined.
|
||||||
** ^SQLite will use the memory provided by the first argument to satisfy its
|
** ^When pMem is not NULL, SQLite will strive to use the memory provided
|
||||||
** memory needs for the first N pages that it adds to cache. ^If additional
|
** to satisfy page cache needs, falling back to [sqlite3_malloc()] if
|
||||||
** page cache memory is needed beyond what is provided by this option, then
|
** a page cache line is larger than sz bytes or if all of the pMem buffer
|
||||||
** SQLite goes to [sqlite3_malloc()] for the additional storage space.</dd>
|
** is exhausted.
|
||||||
|
** ^If pMem is NULL and N is non-zero, then each database connection
|
||||||
|
** does an initial bulk allocation for page cache memory
|
||||||
|
** from [sqlite3_malloc()] sufficient for N cache lines if N is positive or
|
||||||
|
** of -1024*N bytes if N is negative, . ^If additional
|
||||||
|
** page cache memory is needed beyond what is provided by the initial
|
||||||
|
** allocation, then SQLite goes to [sqlite3_malloc()] separately for each
|
||||||
|
** additional cache line. </dd>
|
||||||
**
|
**
|
||||||
** [[SQLITE_CONFIG_HEAP]] <dt>SQLITE_CONFIG_HEAP</dt>
|
** [[SQLITE_CONFIG_HEAP]] <dt>SQLITE_CONFIG_HEAP</dt>
|
||||||
** <dd> ^The SQLITE_CONFIG_HEAP option specifies a static memory buffer
|
** <dd> ^The SQLITE_CONFIG_HEAP option specifies a static memory buffer
|
||||||
|
@ -4389,8 +4411,8 @@ SQLITE_API unsigned int SQLITE_STDCALL sqlite3_value_subtype(sqlite3_value*);
|
||||||
** previously obtained from [sqlite3_value_dup()]. ^If V is a NULL pointer
|
** previously obtained from [sqlite3_value_dup()]. ^If V is a NULL pointer
|
||||||
** then sqlite3_value_free(V) is a harmless no-op.
|
** then sqlite3_value_free(V) is a harmless no-op.
|
||||||
*/
|
*/
|
||||||
SQLITE_API SQLITE_EXPERIMENTAL sqlite3_value *SQLITE_STDCALL sqlite3_value_dup(const sqlite3_value*);
|
SQLITE_API sqlite3_value *SQLITE_STDCALL sqlite3_value_dup(const sqlite3_value*);
|
||||||
SQLITE_API SQLITE_EXPERIMENTAL void SQLITE_STDCALL sqlite3_value_free(sqlite3_value*);
|
SQLITE_API void SQLITE_STDCALL sqlite3_value_free(sqlite3_value*);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Obtain Aggregate Function Context
|
** CAPI3REF: Obtain Aggregate Function Context
|
||||||
|
@ -5609,6 +5631,17 @@ struct sqlite3_module {
|
||||||
** ^Information about the ORDER BY clause is stored in aOrderBy[].
|
** ^Information about the ORDER BY clause is stored in aOrderBy[].
|
||||||
** ^Each term of aOrderBy records a column of the ORDER BY clause.
|
** ^Each term of aOrderBy records a column of the ORDER BY clause.
|
||||||
**
|
**
|
||||||
|
** The colUsed field indicates which columns of the virtual table may be
|
||||||
|
** required by the current scan. Virtual table columns are numbered from
|
||||||
|
** zero in the order in which they appear within the CREATE TABLE statement
|
||||||
|
** passed to sqlite3_declare_vtab(). For the first 63 columns (columns 0-62),
|
||||||
|
** the corresponding bit is set within the colUsed mask if the column may be
|
||||||
|
** required by SQLite. If the table has at least 64 columns and any column
|
||||||
|
** to the right of the first 63 is required, then bit 63 of colUsed is also
|
||||||
|
** set. In other words, column iCol may be required if the expression
|
||||||
|
** (colUsed & ((sqlite3_uint64)1 << (iCol>=63 ? 63 : iCol))) evaluates to
|
||||||
|
** non-zero.
|
||||||
|
**
|
||||||
** The [xBestIndex] method must fill aConstraintUsage[] with information
|
** The [xBestIndex] method must fill aConstraintUsage[] with information
|
||||||
** about what parameters to pass to xFilter. ^If argvIndex>0 then
|
** about what parameters to pass to xFilter. ^If argvIndex>0 then
|
||||||
** the right-hand side of the corresponding aConstraint[] is evaluated
|
** the right-hand side of the corresponding aConstraint[] is evaluated
|
||||||
|
@ -5688,6 +5721,8 @@ struct sqlite3_index_info {
|
||||||
sqlite3_int64 estimatedRows; /* Estimated number of rows returned */
|
sqlite3_int64 estimatedRows; /* Estimated number of rows returned */
|
||||||
/* Fields below are only available in SQLite 3.9.0 and later */
|
/* Fields below are only available in SQLite 3.9.0 and later */
|
||||||
int idxFlags; /* Mask of SQLITE_INDEX_SCAN_* flags */
|
int idxFlags; /* Mask of SQLITE_INDEX_SCAN_* flags */
|
||||||
|
/* Fields below are only available in SQLite 3.10.0 and later */
|
||||||
|
sqlite3_uint64 colUsed; /* Input: Mask of columns used by statement */
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -5703,12 +5738,15 @@ struct sqlite3_index_info {
|
||||||
** an operator that is part of a constraint term in the wHERE clause of
|
** an operator that is part of a constraint term in the wHERE clause of
|
||||||
** a query that uses a [virtual table].
|
** a query that uses a [virtual table].
|
||||||
*/
|
*/
|
||||||
#define SQLITE_INDEX_CONSTRAINT_EQ 2
|
#define SQLITE_INDEX_CONSTRAINT_EQ 2
|
||||||
#define SQLITE_INDEX_CONSTRAINT_GT 4
|
#define SQLITE_INDEX_CONSTRAINT_GT 4
|
||||||
#define SQLITE_INDEX_CONSTRAINT_LE 8
|
#define SQLITE_INDEX_CONSTRAINT_LE 8
|
||||||
#define SQLITE_INDEX_CONSTRAINT_LT 16
|
#define SQLITE_INDEX_CONSTRAINT_LT 16
|
||||||
#define SQLITE_INDEX_CONSTRAINT_GE 32
|
#define SQLITE_INDEX_CONSTRAINT_GE 32
|
||||||
#define SQLITE_INDEX_CONSTRAINT_MATCH 64
|
#define SQLITE_INDEX_CONSTRAINT_MATCH 64
|
||||||
|
#define SQLITE_INDEX_CONSTRAINT_LIKE 65
|
||||||
|
#define SQLITE_INDEX_CONSTRAINT_GLOB 66
|
||||||
|
#define SQLITE_INDEX_CONSTRAINT_REGEXP 67
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Register A Virtual Table Implementation
|
** CAPI3REF: Register A Virtual Table Implementation
|
||||||
|
@ -6572,7 +6610,8 @@ SQLITE_API int SQLITE_STDCALL sqlite3_status64(
|
||||||
** The value written into the *pCurrent parameter is undefined.</dd>)^
|
** The value written into the *pCurrent parameter is undefined.</dd>)^
|
||||||
**
|
**
|
||||||
** [[SQLITE_STATUS_PARSER_STACK]] ^(<dt>SQLITE_STATUS_PARSER_STACK</dt>
|
** [[SQLITE_STATUS_PARSER_STACK]] ^(<dt>SQLITE_STATUS_PARSER_STACK</dt>
|
||||||
** <dd>This parameter records the deepest parser stack. It is only
|
** <dd>The *pHighwater parameter records the deepest parser stack.
|
||||||
|
** The *pCurrent value is undefined. The *pHighwater value is only
|
||||||
** meaningful if SQLite is compiled with [YYTRACKMAXSTACKDEPTH].</dd>)^
|
** meaningful if SQLite is compiled with [YYTRACKMAXSTACKDEPTH].</dd>)^
|
||||||
** </dl>
|
** </dl>
|
||||||
**
|
**
|
||||||
|
@ -7358,18 +7397,43 @@ SQLITE_API int SQLITE_STDCALL sqlite3_strnicmp(const char *, const char *, int);
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: String Globbing
|
** CAPI3REF: String Globbing
|
||||||
*
|
*
|
||||||
** ^The [sqlite3_strglob(P,X)] interface returns zero if string X matches
|
** ^The [sqlite3_strglob(P,X)] interface returns zero if and only if
|
||||||
** the glob pattern P, and it returns non-zero if string X does not match
|
** string X matches the [GLOB] pattern P.
|
||||||
** the glob pattern P. ^The definition of glob pattern matching used in
|
** ^The definition of [GLOB] pattern matching used in
|
||||||
** [sqlite3_strglob(P,X)] is the same as for the "X GLOB P" operator in the
|
** [sqlite3_strglob(P,X)] is the same as for the "X GLOB P" operator in the
|
||||||
** SQL dialect used by SQLite. ^The sqlite3_strglob(P,X) function is case
|
** SQL dialect understood by SQLite. ^The [sqlite3_strglob(P,X)] function
|
||||||
** sensitive.
|
** is case sensitive.
|
||||||
**
|
**
|
||||||
** Note that this routine returns zero on a match and non-zero if the strings
|
** Note that this routine returns zero on a match and non-zero if the strings
|
||||||
** do not match, the same as [sqlite3_stricmp()] and [sqlite3_strnicmp()].
|
** do not match, the same as [sqlite3_stricmp()] and [sqlite3_strnicmp()].
|
||||||
|
**
|
||||||
|
** See also: [sqlite3_strlike()].
|
||||||
*/
|
*/
|
||||||
SQLITE_API int SQLITE_STDCALL sqlite3_strglob(const char *zGlob, const char *zStr);
|
SQLITE_API int SQLITE_STDCALL sqlite3_strglob(const char *zGlob, const char *zStr);
|
||||||
|
|
||||||
|
/*
|
||||||
|
** CAPI3REF: String LIKE Matching
|
||||||
|
*
|
||||||
|
** ^The [sqlite3_strlike(P,X,E)] interface returns zero if and only if
|
||||||
|
** string X matches the [LIKE] pattern P with escape character E.
|
||||||
|
** ^The definition of [LIKE] pattern matching used in
|
||||||
|
** [sqlite3_strlike(P,X,E)] is the same as for the "X LIKE P ESCAPE E"
|
||||||
|
** operator in the SQL dialect understood by SQLite. ^For "X LIKE P" without
|
||||||
|
** the ESCAPE clause, set the E parameter of [sqlite3_strlike(P,X,E)] to 0.
|
||||||
|
** ^As with the LIKE operator, the [sqlite3_strlike(P,X,E)] function is case
|
||||||
|
** insensitive - equivalent upper and lower case ASCII characters match
|
||||||
|
** one another.
|
||||||
|
**
|
||||||
|
** ^The [sqlite3_strlike(P,X,E)] function matches Unicode characters, though
|
||||||
|
** only ASCII characters are case folded.
|
||||||
|
**
|
||||||
|
** Note that this routine returns zero on a match and non-zero if the strings
|
||||||
|
** do not match, the same as [sqlite3_stricmp()] and [sqlite3_strnicmp()].
|
||||||
|
**
|
||||||
|
** See also: [sqlite3_strglob()].
|
||||||
|
*/
|
||||||
|
SQLITE_API int SQLITE_STDCALL sqlite3_strlike(const char *zGlob, const char *zStr, unsigned int cEsc);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Error Logging Interface
|
** CAPI3REF: Error Logging Interface
|
||||||
**
|
**
|
||||||
|
@ -7790,6 +7854,129 @@ SQLITE_API int SQLITE_STDCALL sqlite3_stmt_scanstatus(
|
||||||
*/
|
*/
|
||||||
SQLITE_API void SQLITE_STDCALL sqlite3_stmt_scanstatus_reset(sqlite3_stmt*);
|
SQLITE_API void SQLITE_STDCALL sqlite3_stmt_scanstatus_reset(sqlite3_stmt*);
|
||||||
|
|
||||||
|
/*
|
||||||
|
** CAPI3REF: Flush caches to disk mid-transaction
|
||||||
|
**
|
||||||
|
** ^If a write-transaction is open on [database connection] D when the
|
||||||
|
** [sqlite3_db_cacheflush(D)] interface 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
|
||||||
|
** file (page 1 is always "in use"). ^The [sqlite3_db_cacheflush(D)]
|
||||||
|
** interface flushes caches for all schemas - "main", "temp", and
|
||||||
|
** any [attached] databases.
|
||||||
|
**
|
||||||
|
** ^If this function needs to obtain extra database locks before dirty pages
|
||||||
|
** can be flushed to disk, it does so. ^If those locks cannot be obtained
|
||||||
|
** immediately and there is a busy-handler callback configured, it is invoked
|
||||||
|
** in the usual manner. ^If the required lock still cannot be obtained, then
|
||||||
|
** the database is skipped and an attempt made to flush any dirty pages
|
||||||
|
** belonging to the next (if any) database. ^If any databases are skipped
|
||||||
|
** because locks cannot be obtained, but no other error occurs, this
|
||||||
|
** function returns SQLITE_BUSY.
|
||||||
|
**
|
||||||
|
** ^If any other error occurs while flushing dirty pages to disk (for
|
||||||
|
** example an IO error or out-of-memory condition), then processing is
|
||||||
|
** abandoned and an SQLite [error code] is returned to the caller immediately.
|
||||||
|
**
|
||||||
|
** ^Otherwise, if no error occurs, [sqlite3_db_cacheflush()] returns SQLITE_OK.
|
||||||
|
**
|
||||||
|
** ^This function does not set the database handle error code or message
|
||||||
|
** returned by the [sqlite3_errcode()] and [sqlite3_errmsg()] functions.
|
||||||
|
*/
|
||||||
|
SQLITE_API int SQLITE_STDCALL sqlite3_db_cacheflush(sqlite3*);
|
||||||
|
|
||||||
|
/*
|
||||||
|
** CAPI3REF: Database Snapshot
|
||||||
|
** KEYWORDS: {snapshot}
|
||||||
|
** EXPERIMENTAL
|
||||||
|
**
|
||||||
|
** An instance of the snapshot object records the state of a [WAL mode]
|
||||||
|
** database for some specific point in history.
|
||||||
|
**
|
||||||
|
** In [WAL mode], multiple [database connections] that are open on the
|
||||||
|
** same database file can each be reading a different historical version
|
||||||
|
** of the database file. When a [database connection] begins a read
|
||||||
|
** transaction, that connection sees an unchanging copy of the database
|
||||||
|
** as it existed for the point in time when the transaction first started.
|
||||||
|
** Subsequent changes to the database from other connections are not seen
|
||||||
|
** by the reader until a new read transaction is started.
|
||||||
|
**
|
||||||
|
** The sqlite3_snapshot object records state information about an historical
|
||||||
|
** version of the database file so that it is possible to later open a new read
|
||||||
|
** transaction that sees that historical version of the database rather than
|
||||||
|
** the most recent version.
|
||||||
|
**
|
||||||
|
** The constructor for this object is [sqlite3_snapshot_get()]. The
|
||||||
|
** [sqlite3_snapshot_open()] method causes a fresh read transaction to refer
|
||||||
|
** to an historical snapshot (if possible). The destructor for
|
||||||
|
** sqlite3_snapshot objects is [sqlite3_snapshot_free()].
|
||||||
|
*/
|
||||||
|
typedef struct sqlite3_snapshot sqlite3_snapshot;
|
||||||
|
|
||||||
|
/*
|
||||||
|
** CAPI3REF: Record A Database Snapshot
|
||||||
|
** EXPERIMENTAL
|
||||||
|
**
|
||||||
|
** ^The [sqlite3_snapshot_get(D,S,P)] interface attempts to make a
|
||||||
|
** new [sqlite3_snapshot] object that records the current state of
|
||||||
|
** schema S in database connection D. ^On success, the
|
||||||
|
** [sqlite3_snapshot_get(D,S,P)] interface writes a pointer to the newly
|
||||||
|
** created [sqlite3_snapshot] object into *P and returns SQLITE_OK.
|
||||||
|
** ^If schema S of [database connection] D is not a [WAL mode] database
|
||||||
|
** that is in a read transaction, then [sqlite3_snapshot_get(D,S,P)]
|
||||||
|
** leaves the *P value unchanged and returns an appropriate [error code].
|
||||||
|
**
|
||||||
|
** The [sqlite3_snapshot] object returned from a successful call to
|
||||||
|
** [sqlite3_snapshot_get()] must be freed using [sqlite3_snapshot_free()]
|
||||||
|
** to avoid a memory leak.
|
||||||
|
**
|
||||||
|
** The [sqlite3_snapshot_get()] interface is only available when the
|
||||||
|
** SQLITE_ENABLE_SNAPSHOT compile-time option is used.
|
||||||
|
*/
|
||||||
|
SQLITE_API SQLITE_EXPERIMENTAL int SQLITE_STDCALL sqlite3_snapshot_get(
|
||||||
|
sqlite3 *db,
|
||||||
|
const char *zSchema,
|
||||||
|
sqlite3_snapshot **ppSnapshot
|
||||||
|
);
|
||||||
|
|
||||||
|
/*
|
||||||
|
** CAPI3REF: Start a read transaction on an historical snapshot
|
||||||
|
** EXPERIMENTAL
|
||||||
|
**
|
||||||
|
** ^The [sqlite3_snapshot_open(D,S,P)] interface attempts to move the
|
||||||
|
** read transaction that is currently open on schema S of
|
||||||
|
** [database connection] D so that it refers to historical [snapshot] P.
|
||||||
|
** ^The [sqlite3_snapshot_open()] interface returns SQLITE_OK on success
|
||||||
|
** or an appropriate [error code] if it fails.
|
||||||
|
**
|
||||||
|
** ^In order to succeed, a call to [sqlite3_snapshot_open(D,S,P)] must be
|
||||||
|
** the first operation, apart from other sqlite3_snapshot_open() calls,
|
||||||
|
** following the [BEGIN] that starts a new read transaction.
|
||||||
|
** ^A [snapshot] will fail to open if it has been overwritten by a
|
||||||
|
** [checkpoint].
|
||||||
|
**
|
||||||
|
** The [sqlite3_snapshot_open()] interface is only available when the
|
||||||
|
** SQLITE_ENABLE_SNAPSHOT compile-time option is used.
|
||||||
|
*/
|
||||||
|
SQLITE_API SQLITE_EXPERIMENTAL int SQLITE_STDCALL sqlite3_snapshot_open(
|
||||||
|
sqlite3 *db,
|
||||||
|
const char *zSchema,
|
||||||
|
sqlite3_snapshot *pSnapshot
|
||||||
|
);
|
||||||
|
|
||||||
|
/*
|
||||||
|
** CAPI3REF: Destroy a snapshot
|
||||||
|
** EXPERIMENTAL
|
||||||
|
**
|
||||||
|
** ^The [sqlite3_snapshot_free(P)] interface destroys [sqlite3_snapshot] P.
|
||||||
|
** The application must eventually free every [sqlite3_snapshot] object
|
||||||
|
** using this routine to avoid a memory leak.
|
||||||
|
**
|
||||||
|
** The [sqlite3_snapshot_free()] interface is only available when the
|
||||||
|
** SQLITE_ENABLE_SNAPSHOT compile-time option is used.
|
||||||
|
*/
|
||||||
|
SQLITE_API SQLITE_EXPERIMENTAL void SQLITE_STDCALL sqlite3_snapshot_free(sqlite3_snapshot*);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Undo the hack that converts floating point types to integer for
|
** Undo the hack that converts floating point types to integer for
|
||||||
|
|
|
@ -275,6 +275,10 @@ struct sqlite3_api_routines {
|
||||||
/* Version 3.9.0 and later */
|
/* Version 3.9.0 and later */
|
||||||
unsigned int (*value_subtype)(sqlite3_value*);
|
unsigned int (*value_subtype)(sqlite3_value*);
|
||||||
void (*result_subtype)(sqlite3_context*,unsigned int);
|
void (*result_subtype)(sqlite3_context*,unsigned int);
|
||||||
|
/* Version 3.10.0 and later */
|
||||||
|
int (*status64)(int,sqlite3_int64*,sqlite3_int64*,int);
|
||||||
|
int (*strlike)(const char*,const char*,unsigned int);
|
||||||
|
int (*db_cacheflush)(sqlite3*);
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -514,6 +518,10 @@ struct sqlite3_api_routines {
|
||||||
/* Version 3.9.0 and later */
|
/* Version 3.9.0 and later */
|
||||||
#define sqlite3_value_subtype sqlite3_api->value_subtype
|
#define sqlite3_value_subtype sqlite3_api->value_subtype
|
||||||
#define sqlite3_result_subtype sqlite3_api->result_subtype
|
#define sqlite3_result_subtype sqlite3_api->result_subtype
|
||||||
|
/* Version 3.10.0 and later */
|
||||||
|
#define sqlite3_status64 sqlite3_api->status64
|
||||||
|
#define sqlite3_strlike sqlite3_api->strlike
|
||||||
|
#define sqlite3_db_cacheflush sqlite3_api->db_cacheflush
|
||||||
#endif /* !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) */
|
#endif /* !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) */
|
||||||
|
|
||||||
#if !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION)
|
#if !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION)
|
||||||
|
|
Loading…
Reference in a new issue