|
|
|
@ -107,9 +107,9 @@ extern "C" { |
|
|
|
** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
|
|
|
** [sqlite_version()] and [sqlite_source_id()]. |
|
|
|
*/ |
|
|
|
#define SQLITE_VERSION "3.6.23.1" |
|
|
|
#define SQLITE_VERSION_NUMBER 3006023 |
|
|
|
#define SQLITE_SOURCE_ID "2010-03-26 22:28:06 b078b588d617e07886ad156e9f54ade6d823568e" |
|
|
|
#define SQLITE_VERSION "3.7.0.1" |
|
|
|
#define SQLITE_VERSION_NUMBER 3007000 |
|
|
|
#define SQLITE_SOURCE_ID "2010-08-04 12:31:11 042a1abb030a0711386add7eb6e10832cc8b0f57" |
|
|
|
|
|
|
|
/* |
|
|
|
** CAPI3REF: Run-Time Library Version Numbers |
|
|
|
@ -146,7 +146,6 @@ SQLITE_API const char *sqlite3_libversion(void); |
|
|
|
SQLITE_API const char *sqlite3_sourceid(void); |
|
|
|
SQLITE_API int sqlite3_libversion_number(void); |
|
|
|
|
|
|
|
#ifndef SQLITE_OMIT_COMPILEOPTION_DIAGS |
|
|
|
/* |
|
|
|
** CAPI3REF: Run-Time Library Compilation Options Diagnostics |
|
|
|
** |
|
|
|
@ -169,9 +168,10 @@ SQLITE_API int sqlite3_libversion_number(void); |
|
|
|
** See also: SQL functions [sqlite_compileoption_used()] and |
|
|
|
** [sqlite_compileoption_get()] and the [compile_options pragma]. |
|
|
|
*/ |
|
|
|
#ifndef SQLITE_OMIT_COMPILEOPTION_DIAGS |
|
|
|
SQLITE_API int sqlite3_compileoption_used(const char *zOptName); |
|
|
|
SQLITE_API const char *sqlite3_compileoption_get(int N); |
|
|
|
#endif /* SQLITE_OMIT_COMPILEOPTION_DIAGS */ |
|
|
|
#endif |
|
|
|
|
|
|
|
/* |
|
|
|
** CAPI3REF: Test To See If The Library Is Threadsafe |
|
|
|
@ -393,7 +393,7 @@ SQLITE_API int sqlite3_exec( |
|
|
|
#define SQLITE_NOTFOUND 12 /* NOT USED. Table or record not found */ |
|
|
|
#define SQLITE_FULL 13 /* Insertion failed because database is full */ |
|
|
|
#define SQLITE_CANTOPEN 14 /* Unable to open the database file */ |
|
|
|
#define SQLITE_PROTOCOL 15 /* NOT USED. Database lock protocol error */ |
|
|
|
#define SQLITE_PROTOCOL 15 /* Database lock protocol error */ |
|
|
|
#define SQLITE_EMPTY 16 /* Database is empty */ |
|
|
|
#define SQLITE_SCHEMA 17 /* The database schema changed */ |
|
|
|
#define SQLITE_TOOBIG 18 /* String or BLOB exceeds size limit */ |
|
|
|
@ -449,7 +449,12 @@ SQLITE_API int sqlite3_exec( |
|
|
|
#define SQLITE_IOERR_LOCK (SQLITE_IOERR | (15<<8)) |
|
|
|
#define SQLITE_IOERR_CLOSE (SQLITE_IOERR | (16<<8)) |
|
|
|
#define SQLITE_IOERR_DIR_CLOSE (SQLITE_IOERR | (17<<8)) |
|
|
|
#define SQLITE_LOCKED_SHAREDCACHE (SQLITE_LOCKED | (1<<8) ) |
|
|
|
#define SQLITE_IOERR_SHMOPEN (SQLITE_IOERR | (18<<8)) |
|
|
|
#define SQLITE_IOERR_SHMSIZE (SQLITE_IOERR | (19<<8)) |
|
|
|
#define SQLITE_IOERR_SHMLOCK (SQLITE_IOERR | (20<<8)) |
|
|
|
#define SQLITE_LOCKED_SHAREDCACHE (SQLITE_LOCKED | (1<<8)) |
|
|
|
#define SQLITE_BUSY_RECOVERY (SQLITE_BUSY | (1<<8)) |
|
|
|
#define SQLITE_CANTOPEN_NOTEMPDIR (SQLITE_CANTOPEN | (1<<8)) |
|
|
|
|
|
|
|
/* |
|
|
|
** CAPI3REF: Flags For File Open Operations |
|
|
|
@ -476,11 +481,12 @@ SQLITE_API int sqlite3_exec( |
|
|
|
#define SQLITE_OPEN_FULLMUTEX 0x00010000 /* Ok for sqlite3_open_v2() */ |
|
|
|
#define SQLITE_OPEN_SHAREDCACHE 0x00020000 /* Ok for sqlite3_open_v2() */ |
|
|
|
#define SQLITE_OPEN_PRIVATECACHE 0x00040000 /* Ok for sqlite3_open_v2() */ |
|
|
|
#define SQLITE_OPEN_WAL 0x00080000 /* VFS only */ |
|
|
|
|
|
|
|
/* |
|
|
|
** CAPI3REF: Device Characteristics |
|
|
|
** |
|
|
|
** The xDeviceCapabilities method of the [sqlite3_io_methods] |
|
|
|
** The xDeviceCharacteristics method of the [sqlite3_io_methods] |
|
|
|
** object returns an integer which is a vector of the these |
|
|
|
** bit values expressing I/O characteristics of the mass storage |
|
|
|
** device that holds the file that the [sqlite3_io_methods] |
|
|
|
@ -497,17 +503,18 @@ SQLITE_API int sqlite3_exec( |
|
|
|
** information is written to disk in the same order as calls |
|
|
|
** to xWrite(). |
|
|
|
*/ |
|
|
|
#define SQLITE_IOCAP_ATOMIC 0x00000001 |
|
|
|
#define SQLITE_IOCAP_ATOMIC512 0x00000002 |
|
|
|
#define SQLITE_IOCAP_ATOMIC1K 0x00000004 |
|
|
|
#define SQLITE_IOCAP_ATOMIC2K 0x00000008 |
|
|
|
#define SQLITE_IOCAP_ATOMIC4K 0x00000010 |
|
|
|
#define SQLITE_IOCAP_ATOMIC8K 0x00000020 |
|
|
|
#define SQLITE_IOCAP_ATOMIC16K 0x00000040 |
|
|
|
#define SQLITE_IOCAP_ATOMIC32K 0x00000080 |
|
|
|
#define SQLITE_IOCAP_ATOMIC64K 0x00000100 |
|
|
|
#define SQLITE_IOCAP_SAFE_APPEND 0x00000200 |
|
|
|
#define SQLITE_IOCAP_SEQUENTIAL 0x00000400 |
|
|
|
#define SQLITE_IOCAP_ATOMIC 0x00000001 |
|
|
|
#define SQLITE_IOCAP_ATOMIC512 0x00000002 |
|
|
|
#define SQLITE_IOCAP_ATOMIC1K 0x00000004 |
|
|
|
#define SQLITE_IOCAP_ATOMIC2K 0x00000008 |
|
|
|
#define SQLITE_IOCAP_ATOMIC4K 0x00000010 |
|
|
|
#define SQLITE_IOCAP_ATOMIC8K 0x00000020 |
|
|
|
#define SQLITE_IOCAP_ATOMIC16K 0x00000040 |
|
|
|
#define SQLITE_IOCAP_ATOMIC32K 0x00000080 |
|
|
|
#define SQLITE_IOCAP_ATOMIC64K 0x00000100 |
|
|
|
#define SQLITE_IOCAP_SAFE_APPEND 0x00000200 |
|
|
|
#define SQLITE_IOCAP_SEQUENTIAL 0x00000400 |
|
|
|
#define SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN 0x00000800 |
|
|
|
|
|
|
|
/* |
|
|
|
** CAPI3REF: File Locking Levels |
|
|
|
@ -658,6 +665,12 @@ struct sqlite3_io_methods { |
|
|
|
int (*xFileControl)(sqlite3_file*, int op, void *pArg); |
|
|
|
int (*xSectorSize)(sqlite3_file*); |
|
|
|
int (*xDeviceCharacteristics)(sqlite3_file*); |
|
|
|
/* Methods above are valid for version 1 */ |
|
|
|
int (*xShmMap)(sqlite3_file*, int iPg, int pgsz, int, void volatile**); |
|
|
|
int (*xShmLock)(sqlite3_file*, int offset, int n, int flags); |
|
|
|
void (*xShmBarrier)(sqlite3_file*); |
|
|
|
int (*xShmUnmap)(sqlite3_file*, int deleteFlag); |
|
|
|
/* Methods above are valid for version 2 */ |
|
|
|
/* Additional methods may be added in future releases */ |
|
|
|
}; |
|
|
|
|
|
|
|
@ -675,11 +688,19 @@ struct sqlite3_io_methods { |
|
|
|
** into an integer that the pArg argument points to. This capability |
|
|
|
** is used during testing and only needs to be supported when SQLITE_TEST |
|
|
|
** is defined. |
|
|
|
** |
|
|
|
** The [SQLITE_FCNTL_SIZE_HINT] opcode is used by SQLite to give the VFS |
|
|
|
** layer a hint of how large the database file will grow to be during the |
|
|
|
** current transaction. This hint is not guaranteed to be accurate but it |
|
|
|
** is often close. The underlying VFS might choose to preallocate database |
|
|
|
** file space based on this hint in order to help writes to the database |
|
|
|
** file run faster. |
|
|
|
*/ |
|
|
|
#define SQLITE_FCNTL_LOCKSTATE 1 |
|
|
|
#define SQLITE_GET_LOCKPROXYFILE 2 |
|
|
|
#define SQLITE_SET_LOCKPROXYFILE 3 |
|
|
|
#define SQLITE_LAST_ERRNO 4 |
|
|
|
#define SQLITE_FCNTL_SIZE_HINT 5 |
|
|
|
|
|
|
|
/* |
|
|
|
** CAPI3REF: Mutex Handle |
|
|
|
@ -811,20 +832,27 @@ typedef struct sqlite3_mutex sqlite3_mutex; |
|
|
|
** handled as a fatal error by SQLite, vfs implementations should endeavor |
|
|
|
** to prevent this by setting mxPathname to a sufficiently large value. |
|
|
|
** |
|
|
|
** The xRandomness(), xSleep(), and xCurrentTime() interfaces |
|
|
|
** are not strictly a part of the filesystem, but they are |
|
|
|
** The xRandomness(), xSleep(), xCurrentTime(), and xCurrentTimeInt64() |
|
|
|
** interfaces are not strictly a part of the filesystem, but they are |
|
|
|
** included in the VFS structure for completeness. |
|
|
|
** The xRandomness() function attempts to return nBytes bytes |
|
|
|
** of good-quality randomness into zOut. The return value is |
|
|
|
** the actual number of bytes of randomness obtained. |
|
|
|
** The xSleep() method causes the calling thread to sleep for at |
|
|
|
** least the number of microseconds given. The xCurrentTime() |
|
|
|
** method returns a Julian Day Number for the current date and time. |
|
|
|
** |
|
|
|
** method returns a Julian Day Number for the current date and time as |
|
|
|
** a floating point value. |
|
|
|
** The xCurrentTimeInt64() method returns, as an integer, the Julian |
|
|
|
** Day Number multipled by 86400000 (the number of milliseconds in |
|
|
|
** a 24-hour day). |
|
|
|
** ^SQLite will use the xCurrentTimeInt64() method to get the current |
|
|
|
** date and time if that method is available (if iVersion is 2 or |
|
|
|
** greater and the function pointer is not NULL) and will fall back |
|
|
|
** to xCurrentTime() if xCurrentTimeInt64() is unavailable. |
|
|
|
*/ |
|
|
|
typedef struct sqlite3_vfs sqlite3_vfs; |
|
|
|
struct sqlite3_vfs { |
|
|
|
int iVersion; /* Structure version number */ |
|
|
|
int iVersion; /* Structure version number (currently 2) */ |
|
|
|
int szOsFile; /* Size of subclassed sqlite3_file */ |
|
|
|
int mxPathname; /* Maximum file pathname length */ |
|
|
|
sqlite3_vfs *pNext; /* Next registered VFS */ |
|
|
|
@ -843,8 +871,16 @@ struct sqlite3_vfs { |
|
|
|
int (*xSleep)(sqlite3_vfs*, int microseconds); |
|
|
|
int (*xCurrentTime)(sqlite3_vfs*, double*); |
|
|
|
int (*xGetLastError)(sqlite3_vfs*, int, char *); |
|
|
|
/* New fields may be appended in figure versions. The iVersion |
|
|
|
** value will increment whenever this happens. */ |
|
|
|
/* |
|
|
|
** The methods above are in version 1 of the sqlite_vfs object |
|
|
|
** definition. Those that follow are added in version 2 or later |
|
|
|
*/ |
|
|
|
int (*xCurrentTimeInt64)(sqlite3_vfs*, sqlite3_int64*); |
|
|
|
/* |
|
|
|
** The methods above are in versions 1 and 2 of the sqlite_vfs object. |
|
|
|
** New fields may be appended in figure versions. The iVersion |
|
|
|
** value will increment whenever this happens. |
|
|
|
*/ |
|
|
|
}; |
|
|
|
|
|
|
|
/* |
|
|
|
@ -856,13 +892,58 @@ struct sqlite3_vfs { |
|
|
|
** With SQLITE_ACCESS_EXISTS, the xAccess method |
|
|
|
** simply checks whether the file exists. |
|
|
|
** With SQLITE_ACCESS_READWRITE, the xAccess method |
|
|
|
** checks whether the file is both readable and writable. |
|
|
|
** checks whether the named directory is both readable and writable |
|
|
|
** (in other words, if files can be added, removed, and renamed within |
|
|
|
** the directory). |
|
|
|
** The SQLITE_ACCESS_READWRITE constant is currently used only by the |
|
|
|
** [temp_store_directory pragma], though this could change in a future |
|
|
|
** release of SQLite. |
|
|
|
** With SQLITE_ACCESS_READ, the xAccess method |
|
|
|
** checks whether the file is readable. |
|
|
|
** checks whether the file is readable. The SQLITE_ACCESS_READ constant is |
|
|
|
** currently unused, though it might be used in a future release of |
|
|
|
** SQLite. |
|
|
|
*/ |
|
|
|
#define SQLITE_ACCESS_EXISTS 0 |
|
|
|
#define SQLITE_ACCESS_READWRITE 1 |
|
|
|
#define SQLITE_ACCESS_READ 2 |
|
|
|
#define SQLITE_ACCESS_READWRITE 1 /* Used by PRAGMA temp_store_directory */ |
|
|
|
#define SQLITE_ACCESS_READ 2 /* Unused */ |
|
|
|
|
|
|
|
/* |
|
|
|
** CAPI3REF: Flags for the xShmLock VFS method |
|
|
|
** |
|
|
|
** These integer constants define the various locking operations |
|
|
|
** allowed by the xShmLock method of [sqlite3_io_methods]. The |
|
|
|
** following are the only legal combinations of flags to the |
|
|
|
** xShmLock method: |
|
|
|
** |
|
|
|
** <ul> |
|
|
|
** <li> SQLITE_SHM_LOCK | SQLITE_SHM_SHARED |
|
|
|
** <li> SQLITE_SHM_LOCK | SQLITE_SHM_EXCLUSIVE |
|
|
|
** <li> SQLITE_SHM_UNLOCK | SQLITE_SHM_SHARED |
|
|
|
** <li> SQLITE_SHM_UNLOCK | SQLITE_SHM_EXCLUSIVE |
|
|
|
** </ul> |
|
|
|
** |
|
|
|
** When unlocking, the same SHARED or EXCLUSIVE flag must be supplied as |
|
|
|
** was given no the corresponding lock. |
|
|
|
** |
|
|
|
** The xShmLock method can transition between unlocked and SHARED or |
|
|
|
** between unlocked and EXCLUSIVE. It cannot transition between SHARED |
|
|
|
** and EXCLUSIVE. |
|
|
|
*/ |
|
|
|
#define SQLITE_SHM_UNLOCK 1 |
|
|
|
#define SQLITE_SHM_LOCK 2 |
|
|
|
#define SQLITE_SHM_SHARED 4 |
|
|
|
#define SQLITE_SHM_EXCLUSIVE 8 |
|
|
|
|
|
|
|
/* |
|
|
|
** CAPI3REF: Maximum xShmLock index |
|
|
|
** |
|
|
|
** The xShmLock method on [sqlite3_io_methods] may use values |
|
|
|
** between 0 and this upper bound as its "offset" argument. |
|
|
|
** The SQLite core will never attempt to acquire or release a |
|
|
|
** lock outside of this range |
|
|
|
*/ |
|
|
|
#define SQLITE_SHM_NLOCK 8 |
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
** CAPI3REF: Initialize The SQLite Library |
|
|
|
@ -973,11 +1054,10 @@ SQLITE_API int sqlite3_os_end(void); |
|
|
|
** ^If the option is unknown or SQLite is unable to set the option |
|
|
|
** then this routine returns a non-zero [error code]. |
|
|
|
*/ |
|
|
|
SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_config(int, ...); |
|
|
|
SQLITE_API int sqlite3_config(int, ...); |
|
|
|
|
|
|
|
/* |
|
|
|
** CAPI3REF: Configure database connections |
|
|
|
** EXPERIMENTAL |
|
|
|
** |
|
|
|
** The sqlite3_db_config() interface is used to make configuration |
|
|
|
** changes to a [database connection]. The interface is similar to |
|
|
|
@ -997,11 +1077,10 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_config(int, ...); |
|
|
|
** ^Calls to sqlite3_db_config() return SQLITE_OK if and only if |
|
|
|
** the call is considered successful. |
|
|
|
*/ |
|
|
|
SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_db_config(sqlite3*, int op, ...); |
|
|
|
SQLITE_API int sqlite3_db_config(sqlite3*, int op, ...); |
|
|
|
|
|
|
|
/* |
|
|
|
** CAPI3REF: Memory Allocation Routines |
|
|
|
** EXPERIMENTAL |
|
|
|
** |
|
|
|
** An instance of this object defines the interface between SQLite |
|
|
|
** and low-level memory allocation routines. |
|
|
|
@ -1083,7 +1162,6 @@ struct sqlite3_mem_methods { |
|
|
|
|
|
|
|
/* |
|
|
|
** CAPI3REF: Configuration Options |
|
|
|
** EXPERIMENTAL |
|
|
|
** |
|
|
|
** These constants are the available integer configuration options that |
|
|
|
** can be passed as the first argument to the [sqlite3_config()] interface. |
|
|
|
@ -1269,6 +1347,24 @@ struct sqlite3_mem_methods { |
|
|
|
** [sqlite3_pcache_methods] object. SQLite copies of the current |
|
|
|
** page cache implementation into that object.)^ </dd> |
|
|
|
** |
|
|
|
** <dt>SQLITE_CONFIG_LOG</dt> |
|
|
|
** <dd> ^The SQLITE_CONFIG_LOG option takes two arguments: a pointer to a |
|
|
|
** function with a call signature of void(*)(void*,int,const char*), |
|
|
|
** and a pointer to void. ^If the function pointer is not NULL, it is |
|
|
|
** invoked by [sqlite3_log()] to process each logging event. ^If the |
|
|
|
** function pointer is NULL, the [sqlite3_log()] interface becomes a no-op. |
|
|
|
** ^The void pointer that is the second argument to SQLITE_CONFIG_LOG is |
|
|
|
** passed through as the first parameter to the application-defined logger |
|
|
|
** function whenever that function is invoked. ^The second parameter to |
|
|
|
** the logger function is a copy of the first parameter to the corresponding |
|
|
|
** [sqlite3_log()] call and is intended to be a [result code] or an |
|
|
|
** [extended result code]. ^The third parameter passed to the logger is |
|
|
|
** log message after formatting via [sqlite3_snprintf()]. |
|
|
|
** The SQLite logging interface is not reentrant; the logger function |
|
|
|
** supplied by the application must not invoke any SQLite interface. |
|
|
|
** In a multi-threaded application, the application-defined logger |
|
|
|
** function must be threadsafe. </dd> |
|
|
|
** |
|
|
|
** </dl> |
|
|
|
*/ |
|
|
|
#define SQLITE_CONFIG_SINGLETHREAD 1 /* nil */ |
|
|
|
@ -1289,8 +1385,7 @@ struct sqlite3_mem_methods { |
|
|
|
#define SQLITE_CONFIG_LOG 16 /* xFunc, void* */ |
|
|
|
|
|
|
|
/* |
|
|
|
** CAPI3REF: Configuration Options |
|
|
|
** EXPERIMENTAL |
|
|
|
** CAPI3REF: Database Connection Configuration Options |
|
|
|
** |
|
|
|
** These constants are the available integer configuration options that |
|
|
|
** can be passed as the second argument to the [sqlite3_db_config()] interface. |
|
|
|
@ -2066,7 +2161,6 @@ SQLITE_API int sqlite3_set_authorizer( |
|
|
|
|
|
|
|
/* |
|
|
|
** CAPI3REF: Tracing And Profiling Functions |
|
|
|
** EXPERIMENTAL |
|
|
|
** |
|
|
|
** These routines register callback functions that can be used for |
|
|
|
** tracing and profiling the execution of SQL statements. |
|
|
|
@ -2084,7 +2178,7 @@ SQLITE_API int sqlite3_set_authorizer( |
|
|
|
** the original statement text and an estimate of wall-clock time |
|
|
|
** of how long that statement took to run. |
|
|
|
*/ |
|
|
|
SQLITE_API SQLITE_EXPERIMENTAL void *sqlite3_trace(sqlite3*, void(*xTrace)(void*,const char*), void*); |
|
|
|
SQLITE_API void *sqlite3_trace(sqlite3*, void(*xTrace)(void*,const char*), void*); |
|
|
|
SQLITE_API SQLITE_EXPERIMENTAL void *sqlite3_profile(sqlite3*, |
|
|
|
void(*xProfile)(void*,const char*,sqlite3_uint64), void*); |
|
|
|
|
|
|
|
@ -2877,6 +2971,14 @@ SQLITE_API const void *sqlite3_column_decltype16(sqlite3_stmt*,int); |
|
|
|
** be the case that the same database connection is being used by two or |
|
|
|
** more threads at the same moment in time. |
|
|
|
** |
|
|
|
** For all versions of SQLite up to and including 3.6.23.1, it was required |
|
|
|
** after sqlite3_step() returned anything other than [SQLITE_ROW] that |
|
|
|
** [sqlite3_reset()] be called before any subsequent invocation of |
|
|
|
** sqlite3_step(). Failure to invoke [sqlite3_reset()] in this way would |
|
|
|
** result in an [SQLITE_MISUSE] return from sqlite3_step(). But after |
|
|
|
** version 3.6.23.1, sqlite3_step() began calling [sqlite3_reset()] |
|
|
|
** automatically in this circumstance rather than returning [SQLITE_MISUSE]. |
|
|
|
** |
|
|
|
** <b>Goofy Interface Alert:</b> In the legacy interface, the sqlite3_step() |
|
|
|
** API always returns a generic error code, [SQLITE_ERROR], following any |
|
|
|
** error other than [SQLITE_BUSY] and [SQLITE_MISUSE]. You must call |
|
|
|
@ -3689,7 +3791,7 @@ SQLITE_API int sqlite3_collation_needed16( |
|
|
|
void(*)(void*,sqlite3*,int eTextRep,const void*) |
|
|
|
); |
|
|
|
|
|
|
|
#if SQLITE_HAS_CODEC |
|
|
|
#ifdef SQLITE_HAS_CODEC |
|
|
|
/* |
|
|
|
** Specify the key for an encrypted database. This routine should be |
|
|
|
** called right after sqlite3_open(). |
|
|
|
@ -3872,8 +3974,6 @@ SQLITE_API sqlite3_stmt *sqlite3_next_stmt(sqlite3 *pDb, sqlite3_stmt *pStmt); |
|
|
|
** an error or constraint causes an implicit rollback to occur. |
|
|
|
** ^The rollback callback is not invoked if a transaction is |
|
|
|
** automatically rolled back because the database connection is closed. |
|
|
|
** ^The rollback callback is not invoked if a transaction is |
|
|
|
** rolled back because a commit callback returned non-zero. |
|
|
|
** |
|
|
|
** See also the [sqlite3_update_hook()] interface. |
|
|
|
*/ |
|
|
|
@ -4159,8 +4259,6 @@ SQLITE_API int sqlite3_auto_extension(void (*xEntryPoint)(void)); |
|
|
|
SQLITE_API void sqlite3_reset_auto_extension(void); |
|
|
|
|
|
|
|
/* |
|
|
|
****** EXPERIMENTAL - subject to change without notice ************** |
|
|
|
** |
|
|
|
** The interface to the virtual-table mechanism is currently considered |
|
|
|
** to be experimental. The interface might change in incompatible ways. |
|
|
|
** If this is a problem for you, do not use the interface at this time. |
|
|
|
@ -4180,7 +4278,6 @@ typedef struct sqlite3_module sqlite3_module; |
|
|
|
/* |
|
|
|
** CAPI3REF: Virtual Table Object |
|
|
|
** KEYWORDS: sqlite3_module {virtual table module} |
|
|
|
** EXPERIMENTAL |
|
|
|
** |
|
|
|
** This structure, sometimes called a a "virtual table module", |
|
|
|
** defines the implementation of a [virtual tables]. |
|
|
|
@ -4227,7 +4324,6 @@ struct sqlite3_module { |
|
|
|
/* |
|
|
|
** CAPI3REF: Virtual Table Indexing Information |
|
|
|
** KEYWORDS: sqlite3_index_info |
|
|
|
** EXPERIMENTAL |
|
|
|
** |
|
|
|
** The sqlite3_index_info structure and its substructures is used to |
|
|
|
** pass information into and receive the reply from the [xBestIndex] |
|
|
|
@ -4309,7 +4405,6 @@ struct sqlite3_index_info { |
|
|
|
|
|
|
|
/* |
|
|
|
** CAPI3REF: Register A Virtual Table Implementation |
|
|
|
** EXPERIMENTAL |
|
|
|
** |
|
|
|
** ^These routines are used to register a new [virtual table module] name. |
|
|
|
** ^Module names must be registered before |
|
|
|
@ -4331,13 +4426,13 @@ struct sqlite3_index_info { |
|
|
|
** interface is equivalent to sqlite3_create_module_v2() with a NULL |
|
|
|
** destructor. |
|
|
|
*/ |
|
|
|
SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_create_module( |
|
|
|
SQLITE_API int sqlite3_create_module( |
|
|
|
sqlite3 *db, /* SQLite connection to register module with */ |
|
|
|
const char *zName, /* Name of the module */ |
|
|
|
const sqlite3_module *p, /* Methods for the module */ |
|
|
|
void *pClientData /* Client data for xCreate/xConnect */ |
|
|
|
); |
|
|
|
SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_create_module_v2( |
|
|
|
SQLITE_API int sqlite3_create_module_v2( |
|
|
|
sqlite3 *db, /* SQLite connection to register module with */ |
|
|
|
const char *zName, /* Name of the module */ |
|
|
|
const sqlite3_module *p, /* Methods for the module */ |
|
|
|
@ -4348,7 +4443,6 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_create_module_v2( |
|
|
|
/* |
|
|
|
** CAPI3REF: Virtual Table Instance Object |
|
|
|
** KEYWORDS: sqlite3_vtab |
|
|
|
** EXPERIMENTAL |
|
|
|
** |
|
|
|
** Every [virtual table module] implementation uses a subclass |
|
|
|
** of this object to describe a particular instance |
|
|
|
@ -4374,7 +4468,6 @@ struct sqlite3_vtab { |
|
|
|
/* |
|
|
|
** CAPI3REF: Virtual Table Cursor Object |
|
|
|
** KEYWORDS: sqlite3_vtab_cursor {virtual table cursor} |
|
|
|
** EXPERIMENTAL |
|
|
|
** |
|
|
|
** Every [virtual table module] implementation uses a subclass of the |
|
|
|
** following structure to describe cursors that point into the |
|
|
|
@ -4396,18 +4489,16 @@ struct sqlite3_vtab_cursor { |
|
|
|
|
|
|
|
/* |
|
|
|
** CAPI3REF: Declare The Schema Of A Virtual Table |
|
|
|
** EXPERIMENTAL |
|
|
|
** |
|
|
|
** ^The [xCreate] and [xConnect] methods of a |
|
|
|
** [virtual table module] call this interface |
|
|
|
** to declare the format (the names and datatypes of the columns) of |
|
|
|
** the virtual tables they implement. |
|
|
|
*/ |
|
|
|
SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_declare_vtab(sqlite3*, const char *zSQL); |
|
|
|
SQLITE_API int sqlite3_declare_vtab(sqlite3*, const char *zSQL); |
|
|
|
|
|
|
|
/* |
|
|
|
** CAPI3REF: Overload A Function For A Virtual Table |
|
|
|
** EXPERIMENTAL |
|
|
|
** |
|
|
|
** ^(Virtual tables can provide alternative implementations of functions |
|
|
|
** using the [xFindFunction] method of the [virtual table module]. |
|
|
|
@ -4422,7 +4513,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_declare_vtab(sqlite3*, const char *zS |
|
|
|
** purpose is to be a placeholder function that can be overloaded |
|
|
|
** by a [virtual table]. |
|
|
|
*/ |
|
|
|
SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_overload_function(sqlite3*, const char *zFuncName, int nArg); |
|
|
|
SQLITE_API int sqlite3_overload_function(sqlite3*, const char *zFuncName, int nArg); |
|
|
|
|
|
|
|
/* |
|
|
|
** The interface to the virtual-table mechanism defined above (back up |
|
|
|
@ -4432,8 +4523,6 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_overload_function(sqlite3*, const cha |
|
|
|
** |
|
|
|
** When the virtual-table mechanism stabilizes, we will declare the |
|
|
|
** interface fixed, support it indefinitely, and remove this comment. |
|
|
|
** |
|
|
|
****** EXPERIMENTAL - subject to change without notice ************** |
|
|
|
*/ |
|
|
|
|
|
|
|
/* |
|
|
|
@ -4776,7 +4865,6 @@ SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*); |
|
|
|
|
|
|
|
/* |
|
|
|
** CAPI3REF: Mutex Methods Object |
|
|
|
** EXPERIMENTAL |
|
|
|
** |
|
|
|
** An instance of this structure defines the low-level routines |
|
|
|
** used to allocate and use mutexes. |
|
|
|
@ -4989,11 +5077,11 @@ SQLITE_API int sqlite3_test_control(int op, ...); |
|
|
|
#define SQLITE_TESTCTRL_RESERVE 14 |
|
|
|
#define SQLITE_TESTCTRL_OPTIMIZATIONS 15 |
|
|
|
#define SQLITE_TESTCTRL_ISKEYWORD 16 |
|
|
|
#define SQLITE_TESTCTRL_LAST 16 |
|
|
|
#define SQLITE_TESTCTRL_PGHDRSZ 17 |
|
|
|
#define SQLITE_TESTCTRL_LAST 17 |
|
|
|
|
|
|
|
/* |
|
|
|
** CAPI3REF: SQLite Runtime Status |
|
|
|
** EXPERIMENTAL |
|
|
|
** |
|
|
|
** ^This interface is used to retrieve runtime status information |
|
|
|
** about the preformance of SQLite, and optionally to reset various |
|
|
|
@ -5021,12 +5109,11 @@ SQLITE_API int sqlite3_test_control(int op, ...); |
|
|
|
** |
|
|
|
** See also: [sqlite3_db_status()] |
|
|
|
*/ |
|
|
|
SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_status(int op, int *pCurrent, int *pHighwater, int resetFlag); |
|
|
|
SQLITE_API int sqlite3_status(int op, int *pCurrent, int *pHighwater, int resetFlag); |
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
** CAPI3REF: Status Parameters |
|
|
|
** EXPERIMENTAL |
|
|
|
** |
|
|
|
** These integer constants designate various run-time status parameters |
|
|
|
** that can be returned by [sqlite3_status()]. |
|
|
|
@ -5113,14 +5200,15 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_status(int op, int *pCurrent, int *pH |
|
|
|
|
|
|
|
/* |
|
|
|
** CAPI3REF: Database Connection Status |
|
|
|
** EXPERIMENTAL |
|
|
|
** |
|
|
|
** ^This interface is used to retrieve runtime status information |
|
|
|
** about a single [database connection]. ^The first argument is the |
|
|
|
** database connection object to be interrogated. ^The second argument |
|
|
|
** is the parameter to interrogate. ^Currently, the only allowed value |
|
|
|
** for the second parameter is [SQLITE_DBSTATUS_LOOKASIDE_USED]. |
|
|
|
** Additional options will likely appear in future releases of SQLite. |
|
|
|
** is an integer constant, taken from the set of |
|
|
|
** [SQLITE_DBSTATUS_LOOKASIDE_USED | SQLITE_DBSTATUS_*] macros, that |
|
|
|
** determiness the parameter to interrogate. The set of |
|
|
|
** [SQLITE_DBSTATUS_LOOKASIDE_USED | SQLITE_DBSTATUS_*] macros is likely |
|
|
|
** to grow in future releases of SQLite. |
|
|
|
** |
|
|
|
** ^The current value of the requested parameter is written into *pCur |
|
|
|
** and the highest instantaneous value is written into *pHiwtr. ^If |
|
|
|
@ -5129,11 +5217,10 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_status(int op, int *pCurrent, int *pH |
|
|
|
** |
|
|
|
** See also: [sqlite3_status()] and [sqlite3_stmt_status()]. |
|
|
|
*/ |
|
|
|
SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int resetFlg); |
|
|
|
SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int resetFlg); |
|
|
|
|
|
|
|
/* |
|
|
|
** CAPI3REF: Status Parameters for database connections |
|
|
|
** EXPERIMENTAL |
|
|
|
** |
|
|
|
** These constants are the available integer "verbs" that can be passed as |
|
|
|
** the second argument to the [sqlite3_db_status()] interface. |
|
|
|
@ -5148,14 +5235,21 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_db_status(sqlite3*, int op, int *pCur |
|
|
|
** ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_USED</dt> |
|
|
|
** <dd>This parameter returns the number of lookaside memory slots currently |
|
|
|
** checked out.</dd>)^ |
|
|
|
** |
|
|
|
** <dt>SQLITE_DBSTATUS_CACHE_USED</dt> |
|
|
|
** <dd>^This parameter returns the approximate number of 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> |
|
|
|
** </dl> |
|
|
|
*/ |
|
|
|
#define SQLITE_DBSTATUS_LOOKASIDE_USED 0 |
|
|
|
#define SQLITE_DBSTATUS_CACHE_USED 1 |
|
|
|
#define SQLITE_DBSTATUS_MAX 1 /* Largest defined DBSTATUS */ |
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
** CAPI3REF: Prepared Statement Status |
|
|
|
** EXPERIMENTAL |
|
|
|
** |
|
|
|
** ^(Each prepared statement maintains various |
|
|
|
** [SQLITE_STMTSTATUS_SORT | counters] that measure the number |
|
|
|
@ -5177,11 +5271,10 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_db_status(sqlite3*, int op, int *pCur |
|
|
|
** |
|
|
|
** See also: [sqlite3_status()] and [sqlite3_db_status()]. |
|
|
|
*/ |
|
|
|
SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_stmt_status(sqlite3_stmt*, int op,int resetFlg); |
|
|
|
SQLITE_API int sqlite3_stmt_status(sqlite3_stmt*, int op,int resetFlg); |
|
|
|
|
|
|
|
/* |
|
|
|
** CAPI3REF: Status Parameters for prepared statements |
|
|
|
** EXPERIMENTAL |
|
|
|
** |
|
|
|
** These preprocessor macros define integer codes that name counter |
|
|
|
** values associated with the [sqlite3_stmt_status()] interface. |
|
|
|
@ -5199,14 +5292,21 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_stmt_status(sqlite3_stmt*, int op,int |
|
|
|
** A non-zero value in this counter may indicate an opportunity to |
|
|
|
** improvement performance through careful use of indices.</dd> |
|
|
|
** |
|
|
|
** <dt>SQLITE_STMTSTATUS_AUTOINDEX</dt> |
|
|
|
** <dd>^This is the number of rows inserted into transient indices that |
|
|
|
** were created automatically in order to help joins run faster. |
|
|
|
** A non-zero value in this counter may indicate an opportunity to |
|
|
|
** improvement performance by adding permanent indices that do not |
|
|
|
** need to be reinitialized each time the statement is run.</dd> |
|
|
|
** |
|
|
|
** </dl> |
|
|
|
*/ |
|
|
|
#define SQLITE_STMTSTATUS_FULLSCAN_STEP 1 |
|
|
|
#define SQLITE_STMTSTATUS_SORT 2 |
|
|
|
#define SQLITE_STMTSTATUS_AUTOINDEX 3 |
|
|
|
|
|
|
|
/* |
|
|
|
** CAPI3REF: Custom Page Cache Object |
|
|
|
** EXPERIMENTAL |
|
|
|
** |
|
|
|
** The sqlite3_pcache type is opaque. It is implemented by |
|
|
|
** the pluggable module. The SQLite core has no knowledge of |
|
|
|
@ -5221,7 +5321,6 @@ typedef struct sqlite3_pcache sqlite3_pcache; |
|
|
|
/* |
|
|
|
** CAPI3REF: Application Defined Page Cache. |
|
|
|
** KEYWORDS: {page cache} |
|
|
|
** EXPERIMENTAL |
|
|
|
** |
|
|
|
** ^(The [sqlite3_config]([SQLITE_CONFIG_PCACHE], ...) interface can |
|
|
|
** register an alternative page cache implementation by passing in an |
|
|
|
@ -5363,7 +5462,6 @@ struct sqlite3_pcache_methods { |
|
|
|
|
|
|
|
/* |
|
|
|
** CAPI3REF: Online Backup Object |
|
|
|
** EXPERIMENTAL |
|
|
|
** |
|
|
|
** The sqlite3_backup object records state information about an ongoing |
|
|
|
** online backup operation. ^The sqlite3_backup object is created by |
|
|
|
@ -5376,7 +5474,6 @@ typedef struct sqlite3_backup sqlite3_backup; |
|
|
|
|
|
|
|
/* |
|
|
|
** CAPI3REF: Online Backup API. |
|
|
|
** EXPERIMENTAL |
|
|
|
** |
|
|
|
** The backup API copies the content of one database into another. |
|
|
|
** It is useful either for creating backups of databases or |
|
|
|
@ -5445,10 +5542,14 @@ typedef struct sqlite3_backup sqlite3_backup; |
|
|
|
** [SQLITE_NOMEM], [SQLITE_BUSY], [SQLITE_LOCKED], or an |
|
|
|
** [SQLITE_IOERR_ACCESS | SQLITE_IOERR_XXX] extended error code. |
|
|
|
** |
|
|
|
** ^The sqlite3_backup_step() might return [SQLITE_READONLY] if the destination |
|
|
|
** database was opened read-only or if |
|
|
|
** the destination is an in-memory database with a different page size |
|
|
|
** from the source database. |
|
|
|
** ^(The sqlite3_backup_step() might return [SQLITE_READONLY] if |
|
|
|
** <ol> |
|
|
|
** <li> the destination database was opened read-only, or |
|
|
|
** <li> the destination database is using write-ahead-log journaling |
|
|
|
** and the destination and source page sizes differ, or |
|
|
|
** <li> The destination database is an in-memory database and the |
|
|
|
** destination and source page sizes differ. |
|
|
|
** </ol>)^ |
|
|
|
** |
|
|
|
** ^If sqlite3_backup_step() cannot obtain a required file-system lock, then |
|
|
|
** the [sqlite3_busy_handler | busy-handler function] |
|
|
|
@ -5564,7 +5665,6 @@ SQLITE_API int sqlite3_backup_pagecount(sqlite3_backup *p); |
|
|
|
|
|
|
|
/* |
|
|
|
** CAPI3REF: Unlock Notification |
|
|
|
** EXPERIMENTAL |
|
|
|
** |
|
|
|
** ^When running in shared-cache mode, a database operation may fail with |
|
|
|
** an [SQLITE_LOCKED] error if the required locks on the shared-cache or |
|
|
|
@ -5686,7 +5786,6 @@ SQLITE_API int sqlite3_unlock_notify( |
|
|
|
|
|
|
|
/* |
|
|
|
** CAPI3REF: String Comparison |
|
|
|
** EXPERIMENTAL |
|
|
|
** |
|
|
|
** ^The [sqlite3_strnicmp()] API allows applications and extensions to |
|
|
|
** compare the contents of two buffers containing UTF-8 strings in a |
|
|
|
@ -5697,12 +5796,11 @@ SQLITE_API int sqlite3_strnicmp(const char *, const char *, int); |
|
|
|
|
|
|
|
/* |
|
|
|
** CAPI3REF: Error Logging Interface |
|
|
|
** EXPERIMENTAL |
|
|
|
** |
|
|
|
** ^The [sqlite3_log()] interface writes a message into the error log |
|
|
|
** established by the [SQLITE_CONFIG_LOG] option to [sqlite3_config()]. |
|
|
|
** ^If logging is enabled, the zFormat string and subsequent arguments are |
|
|
|
** passed through to [sqlite3_vmprintf()] to generate the final output string. |
|
|
|
** used with [sqlite3_snprintf()] to generate the final output string. |
|
|
|
** |
|
|
|
** The sqlite3_log() interface is intended for use by extensions such as |
|
|
|
** virtual tables, collating functions, and SQL functions. While there is |
|
|
|
@ -5719,6 +5817,89 @@ SQLITE_API int sqlite3_strnicmp(const char *, const char *, int); |
|
|
|
*/ |
|
|
|
SQLITE_API void sqlite3_log(int iErrCode, const char *zFormat, ...); |
|
|
|
|
|
|
|
/* |
|
|
|
** CAPI3REF: Write-Ahead Log Commit Hook |
|
|
|
** |
|
|
|
** ^The [sqlite3_wal_hook()] function is used to register a callback that |
|
|
|
** will be invoked each time a database connection commits data to a |
|
|
|
** [write-ahead log] (i.e. whenever a transaction is committed in |
|
|
|
** [journal_mode | journal_mode=WAL mode]). |
|
|
|
** |
|
|
|
** ^The callback is invoked by SQLite after the commit has taken place and |
|
|
|
** the associated write-lock on the database released, so the implementation |
|
|
|
** may read, write or [checkpoint] the database as required. |
|
|
|
** |
|
|
|
** ^The first parameter passed to the callback function when it is invoked |
|
|
|
** is a copy of the third parameter passed to sqlite3_wal_hook() when |
|
|
|
** registering the callback. ^The second is a copy of the database handle. |
|
|
|
** ^The third parameter is the name of the database that was written to - |
|
|
|
** either "main" or the name of an [ATTACH]-ed database. ^The fourth parameter |
|
|
|
** is the number of pages currently in the write-ahead log file, |
|
|
|
** including those that were just committed. |
|
|
|
** |
|
|
|
** The callback function should normally return [SQLITE_OK]. ^If an error |
|
|
|
** code is returned, that error will propagate back up through the |
|
|
|
** SQLite code base to cause the statement that provoked the callback |
|
|
|
** to report an error, though the commit will have still occurred. If the |
|
|
|
** callback returns [SQLITE_ROW] or [SQLITE_DONE], or if it returns a value |
|
|
|
** that does not correspond to any valid SQLite error code, the results |
|
|
|
** are undefined. |
|
|
|
** |
|
|
|
** A single database handle may have at most a single write-ahead log callback |
|
|
|
** registered at one time. ^Calling [sqlite3_wal_hook()] replaces any |
|
|
|
** previously registered write-ahead log callback. ^Note that the |
|
|
|
** [sqlite3_wal_autocheckpoint()] interface and the |
|
|
|
** [wal_autocheckpoint pragma] both invoke [sqlite3_wal_hook()] and will |
|
|
|
** those overwrite any prior [sqlite3_wal_hook()] settings. |
|
|
|
*/ |
|
|
|
SQLITE_API void *sqlite3_wal_hook( |
|
|
|
sqlite3*, |
|
|
|
int(*)(void *,sqlite3*,const char*,int), |
|
|
|
void* |
|
|
|
); |
|
|
|
|
|
|
|
/* |
|
|
|
** CAPI3REF: Configure an auto-checkpoint |
|
|
|
** |
|
|
|
** ^The [sqlite3_wal_autocheckpoint(D,N)] is a wrapper around |
|
|
|
** [sqlite3_wal_hook()] that causes any database on [database connection] D |
|
|
|
** to automatically [checkpoint] |
|
|
|
** after committing a transaction if there are N or |
|
|
|
** more frames in the [write-ahead log] file. ^Passing zero or |
|
|
|
** a negative value as the nFrame parameter disables automatic |
|
|
|
** checkpoints entirely. |
|
|
|
** |
|
|
|
** ^The callback registered by this function replaces any existing callback |
|
|
|
** registered using [sqlite3_wal_hook()]. ^Likewise, registering a callback |
|
|
|
** using [sqlite3_wal_hook()] disables the automatic checkpoint mechanism |
|
|
|
** configured by this function. |
|
|
|
** |
|
|
|
** ^The [wal_autocheckpoint pragma] can be used to invoke this interface |
|
|
|
** from SQL. |
|
|
|
** |
|
|
|
** ^Every new [database connection] defaults to having the auto-checkpoint |
|
|
|
** enabled with a threshold of 1000 pages. The use of this interface |
|
|
|
** is only necessary if the default setting is found to be suboptimal |
|
|
|
** for a particular application. |
|
|
|
*/ |
|
|
|
SQLITE_API int sqlite3_wal_autocheckpoint(sqlite3 *db, int N); |
|
|
|
|
|
|
|
/* |
|
|
|
** CAPI3REF: Checkpoint a database |
|
|
|
** |
|
|
|
** ^The [sqlite3_wal_checkpoint(D,X)] interface causes database named X |
|
|
|
** on [database connection] D to be [checkpointed]. ^If X is NULL or an |
|
|
|
** empty string, then a checkpoint is run on all databases of |
|
|
|
** connection D. ^If the database connection D is not in |
|
|
|
** [WAL | write-ahead log mode] then this interface is a harmless no-op. |
|
|
|
** |
|
|
|
** ^The [wal_checkpoint pragma] can be used to invoke this interface |
|
|
|
** from SQL. ^The [sqlite3_wal_autocheckpoint()] interface and the |
|
|
|
** [wal_autocheckpoint pragma] can be used to cause this interface to be |
|
|
|
** run whenever the WAL reaches a certain size threshold. |
|
|
|
*/ |
|
|
|
SQLITE_API int sqlite3_wal_checkpoint(sqlite3 *db, const char *zDb); |
|
|
|
|
|
|
|
/* |
|
|
|
** Undo the hack that converts floating point types to integer for |
|
|
|
** builds on processors without floating point support. |
|
|
|
|