From 397f88e27640cb7475bd9e6c8ec7f028933f6343 Mon Sep 17 00:00:00 2001 From: Frederic Cervenansky Date: Wed, 8 Sep 2010 05:44:27 +0000 Subject: [PATCH] Relevant Ctests for creaImageIO --- CMakeLists.txt | 2 + appli/TestWxGimmickReaderDialog/main.cxx | 2 +- src/creaImageIODicomImageReader2.cpp | 18 +- tests/CMakeLists.txt | 28 + tests/TestDcmDescriptor.cpp | 44 + tests/data/localdatabase_Descriptor.dscp | 56 + win32/sqlite3.dll | Bin 223232 -> 875520 bytes win32/sqlite3.h | 6340 +++++++++++++++++++--- win32/sqlite3.lib | Bin 22162 -> 40776 bytes 9 files changed, 5602 insertions(+), 888 deletions(-) create mode 100644 tests/CMakeLists.txt create mode 100644 tests/TestDcmDescriptor.cpp create mode 100644 tests/data/localdatabase_Descriptor.dscp diff --git a/CMakeLists.txt b/CMakeLists.txt index 1fbdf84..b0ead96 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -101,6 +101,7 @@ ENDIF(BUILD_CREA_PACS) # SUBDIRS(appli) SUBDIRS(bbtk) +SUBDIRS(tests) IF(MSVC AND CMAKE_SIZEOF_VOID_P MATCHES 4) SUBDIRS(win32) @@ -111,3 +112,4 @@ endif() SUBDIRS(install) +ENABLE_TESTING() diff --git a/appli/TestWxGimmickReaderDialog/main.cxx b/appli/TestWxGimmickReaderDialog/main.cxx index 8c7ce1f..03c25ec 100644 --- a/appli/TestWxGimmickReaderDialog/main.cxx +++ b/appli/TestWxGimmickReaderDialog/main.cxx @@ -55,7 +55,7 @@ bool myApp::OnInit( ) -1, "localdatabase_Descriptor.dscp", "Local Database", - _T("Select image(s) - Gimmick! (c) CREATIS-LRMN 2008"), + _T("Select image(s) - DCMAPI (c) VPH NOE ( cnrs - upf)"), wxDefaultPosition, wxSize(810,750), min_dim, diff --git a/src/creaImageIODicomImageReader2.cpp b/src/creaImageIODicomImageReader2.cpp index fc7f56b..479170e 100644 --- a/src/creaImageIODicomImageReader2.cpp +++ b/src/creaImageIODicomImageReader2.cpp @@ -9,7 +9,7 @@ #include #include - +#include "gdcmUIDs.h" #ifdef _DEBUG #define new DEBUG_NEW #endif @@ -59,6 +59,16 @@ namespace creaImageIO im = 0; } return im; + //gdcm::Tag grouplength(0x0000,0x0000); + //gdcm::DataElement de(gdcm::Tag(0x0000, 0x0000)); + //de.SetByteValue("0",gdcm::VR::UL); + // + // + //gdcm::UIDs::GetUIDString(gdcm::UIDS::uid_1_2_840_10008_1_1),gdcm::VR::UI); + + //std::ostream os; + //de.Write(&os); + } //===================================================================== @@ -151,6 +161,12 @@ namespace creaImageIO { uint16_t el; uint16_t gr; + { + gdcm::Attribute< 0x0008,0x103e> at; + std::string sr; + at.SetValue(sr); + + } tree::AttributeDescriptor::GetDicomGroupElementFromKey(i->first,gr,el); //if ( ( gr!=0 ) && ( el!=0 ) ) const gdcm::Tag tag(gr, el); diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt new file mode 100644 index 0000000..b3e6b22 --- /dev/null +++ b/tests/CMakeLists.txt @@ -0,0 +1,28 @@ +# Tests of the creaImageIO +SET(KIT creaImageIO) +SET(TEST_DRIVER "${KIT}Tests") + +# Test source list +FILE(GLOB TEST_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "Test*.cpp" "Test*.cxx") +CREATE_TEST_SOURCELIST(TEST_SOURCELIST "${TEST_DRIVER}.cpp" ${TEST_FILES}) + +# Create test executables +ADD_EXECUTABLE(${TEST_DRIVER} ${TEST_SOURCELIST}) + +# Link dependent libraries +TARGET_LINK_LIBRARIES(${TEST_DRIVER} creaImageIO) + +# Create list of tests for the ADD_TEST +SET(TESTS_TO_ADD ${TEST_SOURCELIST}) +# Remove test driver from list +REMOVE(TESTS_TO_ADD "${TEST_DRIVER}.cpp") +# Add all the test executables +FOREACH(TEST ${TESTS_TO_ADD}) + # Get the file name + GET_FILENAME_COMPONENT(TEST_NAME ${TEST} NAME_WE) + # Add the test + ADD_TEST(${TEST_NAME} "${EXECUTABLE_OUTPUT_PATH}/${TEST_DRIVER}" ${TEST_NAME}) +ENDFOREACH(TEST) + +# location of the test data +ADD_DEFINITIONS(-DGIMMICK_TEST_DATA_DIR="${CMAKE_CURRENT_SOURCE_DIR}/data") diff --git a/tests/TestDcmDescriptor.cpp b/tests/TestDcmDescriptor.cpp new file mode 100644 index 0000000..4637c6e --- /dev/null +++ b/tests/TestDcmDescriptor.cpp @@ -0,0 +1,44 @@ +/** +* \file TestDcmDescriptor.cxx +* \brief Test the Descriptor reading. +*/ +#include +#include + +#include + +/** +* TestDcmDescriptor +* \brief Read a descriptor file and check its content. +* \param argc Argument count (unused). +* \param argv Argument list (unused). +* \return The test result. +*/ +int TestDcmDescriptor( int argc, char* argv[] ) +{ + std::cout << "TestDcmDescriptor..." << std::endl; + + + // read a descriptor file + creaImageIO::tree::Descriptor dscp; + const std::string path = GIMMICK_TEST_DATA_DIR; + const std::string filepath = path + "/localdatabase_Descriptor.dscp"; + std::cout << path << std::endl; + dscp.createDescriptorfromFile(filepath); + + // get Attribute map + creaImageIO::tree::AttributeMapType tags; + dscp.BuildAttributeMap(tags); + + // check its content + std::cout << "tags size: " << tags.size() << std::endl; + creaImageIO::tree::AttributeMapType::iterator it; + for ( it=tags.begin() ; it != tags.end(); it++ ) + { + std::cout << (*it).first << " => " << "empty" << std::endl; + } + + + // default test result + return EXIT_FAILURE; +} diff --git a/tests/data/localdatabase_Descriptor.dscp b/tests/data/localdatabase_Descriptor.dscp new file mode 100644 index 0000000..3694fcf --- /dev/null +++ b/tests/data/localdatabase_Descriptor.dscp @@ -0,0 +1,56 @@ + +Root +O Name Name 4 + +Patient +O NumberOfChildren #Series +D 0x0010 0x0010 4 +D 0x0010 0x0040 3 +D 0x0010 0x0030 3 +D 0x0010 0x0020 2 + +Series +O NumberOfChildren #Images +D 0x0008 0x0060 4 +D 0x0008 0x1030 3 +D 0x0008 0x103E 3 +D 0x0008 0x0080 3 +#D 0x0008 0x0081 3 +#D 0x0008 0x1010 3 +#D 0x0008 0x1048 3 +#D 0x0008 0x1050 3 +D 0x0018 0x1030 3 +D 0x0020 0x0010 3 +D 0x0008 0x0020 3 +D 0x0008 0x0030 3 +D 0x0008 0x0050 3 +#D 0x0008 0x0005 3 +D 0x0008 0x0021 3 +D 0x0008 0x0031 3 +D 0x0020 0x000D 3 +D 0x0020 0x000E 2 + +Image +D 0x0020 0x0013 3 +D 0x0028 0x0010 3 +D 0x0028 0x0011 3 +D 0x0028 0x0008 3 +#D 0x0028 0x0103 3 +D 0x0020 0x0032 3 +D 0x0020 0x0037 3 +D 0x0020 0x1041 3 +D 0x0028 0x0030 3 +#D 0x0028 0x0100 3 +#D 0x0028 0x0101 3 +#D 0x0008 0x0008 3 +D 0x0008 0x0023 3 +D 0x0008 0x0033 3 +D 0x0020 0x4000 3 +#D 0x0004 0x1500 4 +#D 0x0004 0x1501 4 +#D 0x0028 0x1052 3 +#D 0x0028 0x1053 3 +#D 0x0050 0x0004 3 +#D 0x0020 0x0052 3 +#D 0x0008 0x0016 3 +O FullFileName Full_file_name 2 diff --git a/win32/sqlite3.dll b/win32/sqlite3.dll index 2f47313f3bf30868cb76e8d7d205239ed5c43f7d..edb6c58c1eaab33073f45125f5cc1196a7480d5f 100644 GIT binary patch literal 875520 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
+** assert( sqlite3_libversion_number()==SQLITE_VERSION_NUMBER );
+** assert( strcmp(sqlite3_sourceid(),SQLITE_SOURCE_ID)==0 );
+** assert( strcmp(sqlite3_libversion(),SQLITE_VERSION)==0 );
+** 
)^ +** +** ^The sqlite3_version[] string constant contains the text of [SQLITE_VERSION] +** macro. ^The sqlite3_libversion() function returns a pointer to the +** to the sqlite3_version[] string constant. The sqlite3_libversion() +** function is provided for use in DLLs since DLL users usually do not have +** direct access to string constants within the DLL. ^The +** sqlite3_libversion_number() function returns an integer equal to +** [SQLITE_VERSION_NUMBER]. ^The sqlite3_sourceid() function returns +** a pointer to a string constant whose value is the same as the +** [SQLITE_SOURCE_ID] C preprocessor macro. +** +** See also: [sqlite_version()] and [sqlite_source_id()]. */ -typedef struct sqlite3 sqlite3; +SQLITE_API SQLITE_EXTERN const char sqlite3_version[]; +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 +** +** ^The sqlite3_compileoption_used() function returns 0 or 1 +** indicating whether the specified option was defined at +** compile time. ^The SQLITE_ prefix may be omitted from the +** option name passed to sqlite3_compileoption_used(). +** +** ^The sqlite3_compileoption_get() function allows interating +** over the list of options that were defined at compile time by +** returning the N-th compile time option string. ^If N is out of range, +** sqlite3_compileoption_get() returns a NULL pointer. ^The SQLITE_ +** prefix is omitted from any strings returned by +** sqlite3_compileoption_get(). +** +** ^Support for the diagnostic functions sqlite3_compileoption_used() +** and sqlite3_compileoption_get() may be omitted by specifing the +** [SQLITE_OMIT_COMPILEOPTION_DIAGS] option at compile time. +** +** See also: SQL functions [sqlite_compileoption_used()] and +** [sqlite_compileoption_get()] and the [compile_options pragma]. +*/ +SQLITE_API int sqlite3_compileoption_used(const char *zOptName); +SQLITE_API const char *sqlite3_compileoption_get(int N); +#endif /* SQLITE_OMIT_COMPILEOPTION_DIAGS */ + +/* +** CAPI3REF: Test To See If The Library Is Threadsafe +** +** ^The sqlite3_threadsafe() function returns zero if and only if +** SQLite was compiled mutexing code omitted due to the +** [SQLITE_THREADSAFE] compile-time option being set to 0. +** +** SQLite can be compiled with or without mutexes. When +** the [SQLITE_THREADSAFE] C preprocessor macro is 1 or 2, mutexes +** are enabled and SQLite is threadsafe. When the +** [SQLITE_THREADSAFE] macro is 0, +** the mutexes are omitted. Without the mutexes, it is not safe +** to use SQLite concurrently from more than one thread. +** +** Enabling mutexes incurs a measurable performance penalty. +** So if speed is of utmost importance, it makes sense to disable +** the mutexes. But for maximum safety, mutexes should be enabled. +** ^The default behavior is for mutexes to be enabled. +** +** This interface can be used by an application to make sure that the +** version of SQLite that it is linking against was compiled with +** the desired setting of the [SQLITE_THREADSAFE] macro. +** +** This interface only reports on the compile-time mutex setting +** of the [SQLITE_THREADSAFE] flag. If SQLite is compiled with +** SQLITE_THREADSAFE=1 or =2 then mutexes are enabled by default but +** can be fully or partially disabled using a call to [sqlite3_config()] +** with the verbs [SQLITE_CONFIG_SINGLETHREAD], [SQLITE_CONFIG_MULTITHREAD], +** or [SQLITE_CONFIG_MUTEX]. ^(The return value of the +** sqlite3_threadsafe() function shows only the compile-time setting of +** thread safety, not any run-time changes to that setting made by +** sqlite3_config(). In other words, the return value from sqlite3_threadsafe() +** is unchanged by calls to sqlite3_config().)^ +** +** See the [threading mode] documentation for additional information. +*/ +SQLITE_API int sqlite3_threadsafe(void); +/* +** CAPI3REF: Database Connection Handle +** KEYWORDS: {database connection} {database connections} +** +** Each open SQLite database is represented by a pointer to an instance of +** the opaque structure named "sqlite3". It is useful to think of an sqlite3 +** pointer as an object. The [sqlite3_open()], [sqlite3_open16()], and +** [sqlite3_open_v2()] interfaces are its constructors, and [sqlite3_close()] +** is its destructor. There are many other interfaces (such as +** [sqlite3_prepare_v2()], [sqlite3_create_function()], and +** [sqlite3_busy_timeout()] to name but three) that are methods on an +** sqlite3 object. +*/ +typedef struct sqlite3 sqlite3; /* -** Some compilers do not support the "long long" datatype. So we have -** to do a typedef that for 64-bit integers that depends on what compiler -** is being used. +** CAPI3REF: 64-Bit Integer Types +** KEYWORDS: sqlite_int64 sqlite_uint64 +** +** Because there is no cross-platform way to specify 64-bit integer types +** SQLite includes typedefs for 64-bit signed and unsigned integers. +** +** The sqlite3_int64 and sqlite3_uint64 are the preferred type definitions. +** The sqlite_int64 and sqlite_uint64 types are supported for backwards +** compatibility only. +** +** ^The sqlite3_int64 and sqlite_int64 types can store integer values +** between -9223372036854775808 and +9223372036854775807 inclusive. ^The +** sqlite3_uint64 and sqlite_uint64 types can store integer values +** between 0 and +18446744073709551615 inclusive. */ -#if defined(_MSC_VER) || defined(__BORLANDC__) +#ifdef SQLITE_INT64_TYPE + typedef SQLITE_INT64_TYPE sqlite_int64; + typedef unsigned SQLITE_INT64_TYPE sqlite_uint64; +#elif defined(_MSC_VER) || defined(__BORLANDC__) typedef __int64 sqlite_int64; typedef unsigned __int64 sqlite_uint64; #else typedef long long int sqlite_int64; typedef unsigned long long int sqlite_uint64; #endif +typedef sqlite_int64 sqlite3_int64; +typedef sqlite_uint64 sqlite3_uint64; +/* +** If compiling for a processor that lacks floating point support, +** substitute integer for floating-point. +*/ +#ifdef SQLITE_OMIT_FLOATING_POINT +# define double sqlite3_int64 +#endif /* -** A function to close the database. +** CAPI3REF: Closing A Database Connection +** +** ^The sqlite3_close() routine is the destructor for the [sqlite3] object. +** ^Calls to sqlite3_close() return SQLITE_OK if the [sqlite3] object is +** successfullly destroyed and all associated resources are deallocated. +** +** Applications must [sqlite3_finalize | finalize] all [prepared statements] +** and [sqlite3_blob_close | close] all [BLOB handles] associated with +** the [sqlite3] object prior to attempting to close the object. ^If +** sqlite3_close() is called on a [database connection] that still has +** outstanding [prepared statements] or [BLOB handles], then it returns +** SQLITE_BUSY. ** -** Call this function with a pointer to a structure that was previously -** returned from sqlite3_open() and the corresponding database will by closed. +** ^If [sqlite3_close()] is invoked while a transaction is open, +** the transaction is automatically rolled back. ** -** All SQL statements prepared using sqlite3_prepare() or -** sqlite3_prepare16() must be deallocated using sqlite3_finalize() before -** this routine is called. Otherwise, SQLITE_BUSY is returned and the -** database connection remains open. +** The C parameter to [sqlite3_close(C)] must be either a NULL +** pointer or an [sqlite3] object pointer obtained +** from [sqlite3_open()], [sqlite3_open16()], or +** [sqlite3_open_v2()], and not previously closed. +** ^Calling sqlite3_close() with a NULL pointer argument is a +** harmless no-op. */ -int sqlite3_close(sqlite3 *); +SQLITE_API int sqlite3_close(sqlite3 *); /* ** The type for a callback function. +** This is legacy and deprecated. It is included for historical +** compatibility and is not documented. */ typedef int (*sqlite3_callback)(void*,int,char**, char**); /* -** A function to executes one or more statements of SQL. -** -** If one or more of the SQL statements are queries, then -** the callback function specified by the 3rd parameter is -** invoked once for each row of the query result. This callback -** should normally return 0. If the callback returns a non-zero -** value then the query is aborted, all subsequent SQL statements -** are skipped and the sqlite3_exec() function returns the SQLITE_ABORT. -** -** The 4th parameter is an arbitrary pointer that is passed -** to the callback function as its first parameter. -** -** The 2nd parameter to the callback function is the number of -** columns in the query result. The 3rd parameter to the callback -** is an array of strings holding the values for each column. -** The 4th parameter to the callback is an array of strings holding -** the names of each column. -** -** The callback function may be NULL, even for queries. A NULL -** callback is not an error. It just means that no callback -** will be invoked. -** -** If an error occurs while parsing or evaluating the SQL (but -** not while executing the callback) then an appropriate error -** message is written into memory obtained from malloc() and -** *errmsg is made to point to that message. The calling function -** is responsible for freeing the memory that holds the error -** message. Use sqlite3_free() for this. If errmsg==NULL, -** then no error message is ever written. -** -** The return value is is SQLITE_OK if there are no errors and -** some other return code if there is an error. The particular -** return value depends on the type of error. -** -** If the query could not be executed because a database file is -** locked or busy, then this function returns SQLITE_BUSY. (This -** behavior can be modified somewhat using the sqlite3_busy_handler() -** and sqlite3_busy_timeout() functions below.) -*/ -int sqlite3_exec( - sqlite3*, /* An open database */ - const char *sql, /* SQL to be executed */ - sqlite3_callback, /* Callback function */ - void *, /* 1st argument to callback function */ - char **errmsg /* Error msg written here */ +** CAPI3REF: One-Step Query Execution Interface +** +** The sqlite3_exec() interface is a convenience wrapper around +** [sqlite3_prepare_v2()], [sqlite3_step()], and [sqlite3_finalize()], +** that allows an application to run multiple statements of SQL +** without having to use a lot of C code. +** +** ^The sqlite3_exec() interface runs zero or more UTF-8 encoded, +** semicolon-separate SQL statements passed into its 2nd argument, +** in the context of the [database connection] passed in as its 1st +** argument. ^If the callback function of the 3rd argument to +** sqlite3_exec() is not NULL, then it is invoked for each result row +** coming out of the evaluated SQL statements. ^The 4th argument to +** to sqlite3_exec() is relayed through to the 1st argument of each +** callback invocation. ^If the callback pointer to sqlite3_exec() +** is NULL, then no callback is ever invoked and result rows are +** ignored. +** +** ^If an error occurs while evaluating the SQL statements passed into +** sqlite3_exec(), then execution of the current statement stops and +** subsequent statements are skipped. ^If the 5th parameter to sqlite3_exec() +** is not NULL then any error message is written into memory obtained +** from [sqlite3_malloc()] and passed back through the 5th parameter. +** To avoid memory leaks, the application should invoke [sqlite3_free()] +** on error message strings returned through the 5th parameter of +** of sqlite3_exec() after the error message string is no longer needed. +** ^If the 5th parameter to sqlite3_exec() is not NULL and no errors +** occur, then sqlite3_exec() sets the pointer in its 5th parameter to +** NULL before returning. +** +** ^If an sqlite3_exec() callback returns non-zero, the sqlite3_exec() +** routine returns SQLITE_ABORT without invoking the callback again and +** without running any subsequent SQL statements. +** +** ^The 2nd argument to the sqlite3_exec() callback function is the +** number of columns in the result. ^The 3rd argument to the sqlite3_exec() +** callback is an array of pointers to strings obtained as if from +** [sqlite3_column_text()], one for each column. ^If an element of a +** result row is NULL then the corresponding string pointer for the +** sqlite3_exec() callback is a NULL pointer. ^The 4th argument to the +** sqlite3_exec() callback is an array of pointers to strings where each +** entry represents the name of corresponding result column as obtained +** from [sqlite3_column_name()]. +** +** ^If the 2nd parameter to sqlite3_exec() is a NULL pointer, a pointer +** to an empty string, or a pointer that contains only whitespace and/or +** SQL comments, then no SQL statements are evaluated and the database +** is not changed. +** +** Restrictions: +** +**
    +**
  • The application must insure that the 1st parameter to sqlite3_exec() +** is a valid and open [database connection]. +**
  • The application must not close [database connection] specified by +** the 1st parameter to sqlite3_exec() while sqlite3_exec() is running. +**
  • The application must not modify the SQL statement text passed into +** the 2nd parameter of sqlite3_exec() while sqlite3_exec() is running. +**
+*/ +SQLITE_API int sqlite3_exec( + sqlite3*, /* An open database */ + const char *sql, /* SQL to be evaluated */ + int (*callback)(void*,int,char**,char**), /* Callback function */ + void *, /* 1st argument to callback */ + char **errmsg /* Error msg written here */ ); /* -** Return values for sqlite3_exec() and sqlite3_step() +** CAPI3REF: Result Codes +** KEYWORDS: SQLITE_OK {error code} {error codes} +** KEYWORDS: {result code} {result codes} +** +** Many SQLite functions return an integer result code from the set shown +** here in order to indicates success or failure. +** +** New error codes may be added in future versions of SQLite. +** +** See also: [SQLITE_IOERR_READ | extended result codes] */ #define SQLITE_OK 0 /* Successful result */ +/* beginning-of-error-codes */ #define SQLITE_ERROR 1 /* SQL error or missing database */ -#define SQLITE_INTERNAL 2 /* An internal logic error in SQLite */ +#define SQLITE_INTERNAL 2 /* Internal logic error in SQLite */ #define SQLITE_PERM 3 /* Access permission denied */ #define SQLITE_ABORT 4 /* Callback routine requested an abort */ #define SQLITE_BUSY 5 /* The database file is locked */ @@ -146,14 +390,14 @@ int sqlite3_exec( #define SQLITE_INTERRUPT 9 /* Operation terminated by sqlite3_interrupt()*/ #define SQLITE_IOERR 10 /* Some kind of disk I/O error occurred */ #define SQLITE_CORRUPT 11 /* The database disk image is malformed */ -#define SQLITE_NOTFOUND 12 /* (Internal Only) Table or record not found */ +#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 /* Database lock protocol error */ +#define SQLITE_PROTOCOL 15 /* NOT USED. Database lock protocol error */ #define SQLITE_EMPTY 16 /* Database is empty */ #define SQLITE_SCHEMA 17 /* The database schema changed */ -#define SQLITE_TOOBIG 18 /* Too much data for one row of a table */ -#define SQLITE_CONSTRAINT 19 /* Abort due to contraint violation */ +#define SQLITE_TOOBIG 18 /* String or BLOB exceeds size limit */ +#define SQLITE_CONSTRAINT 19 /* Abort due to constraint violation */ #define SQLITE_MISMATCH 20 /* Data type mismatch */ #define SQLITE_MISUSE 21 /* Library used incorrectly */ #define SQLITE_NOLFS 22 /* Uses OS features not supported on host */ @@ -163,1004 +407,5328 @@ int sqlite3_exec( #define SQLITE_NOTADB 26 /* File opened that is not a database file */ #define SQLITE_ROW 100 /* sqlite3_step() has another row ready */ #define SQLITE_DONE 101 /* sqlite3_step() has finished executing */ +/* end-of-error-codes */ /* -** Each entry in an SQLite table has a unique integer key. (The key is -** the value of the INTEGER PRIMARY KEY column if there is such a column, -** otherwise the key is generated at random. The unique key is always -** available as the ROWID, OID, or _ROWID_ column.) The following routine -** returns the integer key of the most recent insert in the database. +** CAPI3REF: Extended Result Codes +** KEYWORDS: {extended error code} {extended error codes} +** KEYWORDS: {extended result code} {extended result codes} ** -** This function is similar to the mysql_insert_id() function from MySQL. -*/ -sqlite_int64 sqlite3_last_insert_rowid(sqlite3*); - -/* -** This function returns the number of database rows that were changed -** (or inserted or deleted) by the most recent called sqlite3_exec(). -** -** All changes are counted, even if they were later undone by a -** ROLLBACK or ABORT. Except, changes associated with creating and -** dropping tables are not counted. +** In its default configuration, SQLite API routines return one of 26 integer +** [SQLITE_OK | result codes]. However, experience has shown that many of +** these result codes are too coarse-grained. They do not provide as +** much information about problems as programmers might like. In an effort to +** address this, newer versions of SQLite (version 3.3.8 and later) include +** support for additional result codes that provide more detailed information +** about errors. The extended result codes are enabled or disabled +** on a per database connection basis using the +** [sqlite3_extended_result_codes()] API. ** -** If a callback invokes sqlite3_exec() recursively, then the changes -** in the inner, recursive call are counted together with the changes -** in the outer call. +** Some of the available extended result codes are listed here. +** One may expect the number of extended result codes will be expand +** over time. Software that uses extended result codes should expect +** to see new result codes in future releases of SQLite. ** -** SQLite implements the command "DELETE FROM table" without a WHERE clause -** by dropping and recreating the table. (This is much faster than going -** through and deleting individual elements form the table.) Because of -** this optimization, the change count for "DELETE FROM table" will be -** zero regardless of the number of elements that were originally in the -** table. To get an accurate count of the number of rows deleted, use -** "DELETE FROM table WHERE 1" instead. +** The SQLITE_OK result code will never be extended. It will always +** be exactly zero. */ -int sqlite3_changes(sqlite3*); +#define SQLITE_IOERR_READ (SQLITE_IOERR | (1<<8)) +#define SQLITE_IOERR_SHORT_READ (SQLITE_IOERR | (2<<8)) +#define SQLITE_IOERR_WRITE (SQLITE_IOERR | (3<<8)) +#define SQLITE_IOERR_FSYNC (SQLITE_IOERR | (4<<8)) +#define SQLITE_IOERR_DIR_FSYNC (SQLITE_IOERR | (5<<8)) +#define SQLITE_IOERR_TRUNCATE (SQLITE_IOERR | (6<<8)) +#define SQLITE_IOERR_FSTAT (SQLITE_IOERR | (7<<8)) +#define SQLITE_IOERR_UNLOCK (SQLITE_IOERR | (8<<8)) +#define SQLITE_IOERR_RDLOCK (SQLITE_IOERR | (9<<8)) +#define SQLITE_IOERR_DELETE (SQLITE_IOERR | (10<<8)) +#define SQLITE_IOERR_BLOCKED (SQLITE_IOERR | (11<<8)) +#define SQLITE_IOERR_NOMEM (SQLITE_IOERR | (12<<8)) +#define SQLITE_IOERR_ACCESS (SQLITE_IOERR | (13<<8)) +#define SQLITE_IOERR_CHECKRESERVEDLOCK (SQLITE_IOERR | (14<<8)) +#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) ) /* -** This function returns the number of database rows that have been -** modified by INSERT, UPDATE or DELETE statements since the database handle -** was opened. This includes UPDATE, INSERT and DELETE statements executed -** as part of trigger programs. All changes are counted as soon as the -** statement that makes them is completed (when the statement handle is -** passed to sqlite3_reset() or sqlite_finalise()). -** -** SQLite implements the command "DELETE FROM table" without a WHERE clause -** by dropping and recreating the table. (This is much faster than going -** through and deleting individual elements form the table.) Because of -** this optimization, the change count for "DELETE FROM table" will be -** zero regardless of the number of elements that were originally in the -** table. To get an accurate count of the number of rows deleted, use -** "DELETE FROM table WHERE 1" instead. -*/ -int sqlite3_total_changes(sqlite3*); - -/* This function causes any pending database operation to abort and -** return at its earliest opportunity. This routine is typically -** called in response to a user action such as pressing "Cancel" -** or Ctrl-C where the user wants a long query operation to halt -** immediately. -*/ -void sqlite3_interrupt(sqlite3*); - - -/* These functions return true if the given input string comprises -** one or more complete SQL statements. For the sqlite3_complete() call, -** the parameter must be a nul-terminated UTF-8 string. For -** sqlite3_complete16(), a nul-terminated machine byte order UTF-16 string -** is required. +** CAPI3REF: Flags For File Open Operations ** -** The algorithm is simple. If the last token other than spaces -** and comments is a semicolon, then return true. otherwise return -** false. +** These bit values are intended for use in the +** 3rd parameter to the [sqlite3_open_v2()] interface and +** in the 4th parameter to the xOpen method of the +** [sqlite3_vfs] object. */ -int sqlite3_complete(const char *sql); -int sqlite3_complete16(const void *sql); +#define SQLITE_OPEN_READONLY 0x00000001 /* Ok for sqlite3_open_v2() */ +#define SQLITE_OPEN_READWRITE 0x00000002 /* Ok for sqlite3_open_v2() */ +#define SQLITE_OPEN_CREATE 0x00000004 /* Ok for sqlite3_open_v2() */ +#define SQLITE_OPEN_DELETEONCLOSE 0x00000008 /* VFS only */ +#define SQLITE_OPEN_EXCLUSIVE 0x00000010 /* VFS only */ +#define SQLITE_OPEN_AUTOPROXY 0x00000020 /* VFS only */ +#define SQLITE_OPEN_MAIN_DB 0x00000100 /* VFS only */ +#define SQLITE_OPEN_TEMP_DB 0x00000200 /* VFS only */ +#define SQLITE_OPEN_TRANSIENT_DB 0x00000400 /* VFS only */ +#define SQLITE_OPEN_MAIN_JOURNAL 0x00000800 /* VFS only */ +#define SQLITE_OPEN_TEMP_JOURNAL 0x00001000 /* VFS only */ +#define SQLITE_OPEN_SUBJOURNAL 0x00002000 /* VFS only */ +#define SQLITE_OPEN_MASTER_JOURNAL 0x00004000 /* VFS only */ +#define SQLITE_OPEN_NOMUTEX 0x00008000 /* Ok for sqlite3_open_v2() */ +#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() */ /* -** This routine identifies a callback function that is invoked -** whenever an attempt is made to open a database table that is -** currently locked by another process or thread. If the busy callback -** is NULL, then sqlite3_exec() returns SQLITE_BUSY immediately if -** it finds a locked table. If the busy callback is not NULL, then -** sqlite3_exec() invokes the callback with three arguments. The -** second argument is the name of the locked table and the third -** argument is the number of times the table has been busy. If the -** busy callback returns 0, then sqlite3_exec() immediately returns -** SQLITE_BUSY. If the callback returns non-zero, then sqlite3_exec() -** tries to open the table again and the cycle repeats. +** CAPI3REF: Device Characteristics ** -** The default busy callback is NULL. +** The xDeviceCapabilities 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] +** refers to. ** -** Sqlite is re-entrant, so the busy handler may start a new query. -** (It is not clear why anyone would every want to do this, but it -** is allowed, in theory.) But the busy handler may not close the -** database. Closing the database from a busy handler will delete -** data structures out from under the executing query and will -** probably result in a coredump. +** The SQLITE_IOCAP_ATOMIC property means that all writes of +** any size are atomic. The SQLITE_IOCAP_ATOMICnnn values +** mean that writes of blocks that are nnn bytes in size and +** are aligned to an address which is an integer multiple of +** nnn are atomic. The SQLITE_IOCAP_SAFE_APPEND value means +** that when data is appended to a file, the data is appended +** first then the size of the file is extended, never the other +** way around. The SQLITE_IOCAP_SEQUENTIAL property means that +** information is written to disk in the same order as calls +** to xWrite(). */ -int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*); +#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 /* -** This routine sets a busy handler that sleeps for a while when a -** table is locked. The handler will sleep multiple times until -** at least "ms" milleseconds of sleeping have been done. After -** "ms" milleseconds of sleeping, the handler returns 0 which -** causes sqlite3_exec() to return SQLITE_BUSY. +** CAPI3REF: File Locking Levels ** -** Calling this routine with an argument less than or equal to zero -** turns off all busy handlers. +** SQLite uses one of these integer values as the second +** argument to calls it makes to the xLock() and xUnlock() methods +** of an [sqlite3_io_methods] object. */ -int sqlite3_busy_timeout(sqlite3*, int ms); +#define SQLITE_LOCK_NONE 0 +#define SQLITE_LOCK_SHARED 1 +#define SQLITE_LOCK_RESERVED 2 +#define SQLITE_LOCK_PENDING 3 +#define SQLITE_LOCK_EXCLUSIVE 4 /* -** This next routine is really just a wrapper around sqlite3_exec(). -** Instead of invoking a user-supplied callback for each row of the -** result, this routine remembers each row of the result in memory -** obtained from malloc(), then returns all of the result after the -** query has finished. +** CAPI3REF: Synchronization Type Flags ** -** As an example, suppose the query result where this table: -** -** Name | Age -** ----------------------- -** Alice | 43 -** Bob | 28 -** Cindy | 21 +** When SQLite invokes the xSync() method of an +** [sqlite3_io_methods] object it uses a combination of +** these integer values as the second argument. ** -** If the 3rd argument were &azResult then after the function returns -** azResult will contain the following data: -** -** azResult[0] = "Name"; -** azResult[1] = "Age"; -** azResult[2] = "Alice"; -** azResult[3] = "43"; -** azResult[4] = "Bob"; -** azResult[5] = "28"; -** azResult[6] = "Cindy"; -** azResult[7] = "21"; -** -** Notice that there is an extra row of data containing the column -** headers. But the *nrow return value is still 3. *ncolumn is -** set to 2. In general, the number of values inserted into azResult -** will be ((*nrow) + 1)*(*ncolumn). -** -** After the calling function has finished using the result, it should -** pass the result data pointer to sqlite3_free_table() in order to -** release the memory that was malloc-ed. Because of the way the -** malloc() happens, the calling function must not try to call -** malloc() directly. Only sqlite3_free_table() is able to release -** the memory properly and safely. -** -** The return value of this routine is the same as from sqlite3_exec(). -*/ -int sqlite3_get_table( - sqlite3*, /* An open database */ - const char *sql, /* SQL to be executed */ - char ***resultp, /* Result written to a char *[] that this points to */ - int *nrow, /* Number of result rows written here */ - int *ncolumn, /* Number of result columns written here */ - char **errmsg /* Error msg written here */ -); +** When the SQLITE_SYNC_DATAONLY flag is used, it means that the +** sync operation only needs to flush data to mass storage. Inode +** information need not be flushed. If the lower four bits of the flag +** equal SQLITE_SYNC_NORMAL, that means to use normal fsync() semantics. +** If the lower four bits equal SQLITE_SYNC_FULL, that means +** to use Mac OS X style fullsync instead of fsync(). +*/ +#define SQLITE_SYNC_NORMAL 0x00002 +#define SQLITE_SYNC_FULL 0x00003 +#define SQLITE_SYNC_DATAONLY 0x00010 /* -** Call this routine to free the memory that sqlite3_get_table() allocated. +** CAPI3REF: OS Interface Open File Handle +** +** An [sqlite3_file] object represents an open file in the +** [sqlite3_vfs | OS interface layer]. Individual OS interface +** implementations will +** want to subclass this object by appending additional fields +** for their own use. The pMethods entry is a pointer to an +** [sqlite3_io_methods] object that defines methods for performing +** I/O operations on the open file. */ -void sqlite3_free_table(char **result); +typedef struct sqlite3_file sqlite3_file; +struct sqlite3_file { + const struct sqlite3_io_methods *pMethods; /* Methods for an open file */ +}; /* -** The following routines are variants of the "sprintf()" from the -** standard C library. The resulting string is written into memory -** obtained from malloc() so that there is never a possiblity of buffer -** overflow. These routines also implement some additional formatting -** options that are useful for constructing SQL statements. +** CAPI3REF: OS Interface File Virtual Methods Object ** -** The strings returned by these routines should be freed by calling -** sqlite3_free(). +** Every file opened by the [sqlite3_vfs] xOpen method populates an +** [sqlite3_file] object (or, more commonly, a subclass of the +** [sqlite3_file] object) with a pointer to an instance of this object. +** This object defines the methods used to perform various operations +** against the open file represented by the [sqlite3_file] object. ** -** All of the usual printf formatting options apply. In addition, there -** is a "%q" option. %q works like %s in that it substitutes a null-terminated -** string from the argument list. But %q also doubles every '\'' character. -** %q is designed for use inside a string literal. By doubling each '\'' -** character it escapes that character and allows it to be inserted into -** the string. -** -** For example, so some string variable contains text as follows: +** If the xOpen method sets the sqlite3_file.pMethods element +** to a non-NULL pointer, then the sqlite3_io_methods.xClose method +** may be invoked even if the xOpen reported that it failed. The +** only way to prevent a call to xClose following a failed xOpen +** is for the xOpen to set the sqlite3_file.pMethods element to NULL. ** -** char *zText = "It's a happy day!"; +** The flags argument to xSync may be one of [SQLITE_SYNC_NORMAL] or +** [SQLITE_SYNC_FULL]. The first choice is the normal fsync(). +** The second choice is a Mac OS X style fullsync. The [SQLITE_SYNC_DATAONLY] +** flag may be ORed in to indicate that only the data of the file +** and not its inode needs to be synced. ** -** We can use this text in an SQL statement as follows: +** The integer values to xLock() and xUnlock() are one of +**
    +**
  • [SQLITE_LOCK_NONE], +**
  • [SQLITE_LOCK_SHARED], +**
  • [SQLITE_LOCK_RESERVED], +**
  • [SQLITE_LOCK_PENDING], or +**
  • [SQLITE_LOCK_EXCLUSIVE]. +**
+** xLock() increases the lock. xUnlock() decreases the lock. +** The xCheckReservedLock() method checks whether any database connection, +** either in this process or in some other process, is holding a RESERVED, +** PENDING, or EXCLUSIVE lock on the file. It returns true +** if such a lock exists and false otherwise. ** -** sqlite3_exec_printf(db, "INSERT INTO table VALUES('%q')", -** callback1, 0, 0, zText); +** The xFileControl() method is a generic interface that allows custom +** VFS implementations to directly control an open file using the +** [sqlite3_file_control()] interface. The second "op" argument is an +** integer opcode. The third argument is a generic pointer intended to +** point to a structure that may contain arguments or space in which to +** write return values. Potential uses for xFileControl() might be +** functions to enable blocking locks with timeouts, to change the +** locking strategy (for example to use dot-file locks), to inquire +** about the status of a lock, or to break stale locks. The SQLite +** core reserves all opcodes less than 100 for its own use. +** A [SQLITE_FCNTL_LOCKSTATE | list of opcodes] less than 100 is available. +** Applications that define a custom xFileControl method should use opcodes +** greater than 100 to avoid conflicts. ** -** Because the %q format string is used, the '\'' character in zText -** is escaped and the SQL generated is as follows: +** The xSectorSize() method returns the sector size of the +** device that underlies the file. The sector size is the +** minimum write that can be performed without disturbing +** other bytes in the file. The xDeviceCharacteristics() +** method returns a bit vector describing behaviors of the +** underlying device: ** -** INSERT INTO table1 VALUES('It''s a happy day!') -** -** This is correct. Had we used %s instead of %q, the generated SQL -** would have looked like this: +**
    +**
  • [SQLITE_IOCAP_ATOMIC] +**
  • [SQLITE_IOCAP_ATOMIC512] +**
  • [SQLITE_IOCAP_ATOMIC1K] +**
  • [SQLITE_IOCAP_ATOMIC2K] +**
  • [SQLITE_IOCAP_ATOMIC4K] +**
  • [SQLITE_IOCAP_ATOMIC8K] +**
  • [SQLITE_IOCAP_ATOMIC16K] +**
  • [SQLITE_IOCAP_ATOMIC32K] +**
  • [SQLITE_IOCAP_ATOMIC64K] +**
  • [SQLITE_IOCAP_SAFE_APPEND] +**
  • [SQLITE_IOCAP_SEQUENTIAL] +**
** -** INSERT INTO table1 VALUES('It's a happy day!'); +** The SQLITE_IOCAP_ATOMIC property means that all writes of +** any size are atomic. The SQLITE_IOCAP_ATOMICnnn values +** mean that writes of blocks that are nnn bytes in size and +** are aligned to an address which is an integer multiple of +** nnn are atomic. The SQLITE_IOCAP_SAFE_APPEND value means +** that when data is appended to a file, the data is appended +** first then the size of the file is extended, never the other +** way around. The SQLITE_IOCAP_SEQUENTIAL property means that +** information is written to disk in the same order as calls +** to xWrite(). ** -** This second example is an SQL syntax error. As a general rule you -** should always use %q instead of %s when inserting text into a string -** literal. +** If xRead() returns SQLITE_IOERR_SHORT_READ it must also fill +** in the unread portions of the buffer with zeros. A VFS that +** fails to zero-fill short reads might seem to work. However, +** failure to zero-fill short reads will eventually lead to +** database corruption. */ -char *sqlite3_mprintf(const char*,...); -char *sqlite3_vmprintf(const char*, va_list); -void sqlite3_free(char *z); -char *sqlite3_snprintf(int,char*,const char*, ...); +typedef struct sqlite3_io_methods sqlite3_io_methods; +struct sqlite3_io_methods { + int iVersion; + int (*xClose)(sqlite3_file*); + int (*xRead)(sqlite3_file*, void*, int iAmt, sqlite3_int64 iOfst); + int (*xWrite)(sqlite3_file*, const void*, int iAmt, sqlite3_int64 iOfst); + int (*xTruncate)(sqlite3_file*, sqlite3_int64 size); + int (*xSync)(sqlite3_file*, int flags); + int (*xFileSize)(sqlite3_file*, sqlite3_int64 *pSize); + int (*xLock)(sqlite3_file*, int); + int (*xUnlock)(sqlite3_file*, int); + int (*xCheckReservedLock)(sqlite3_file*, int *pResOut); + int (*xFileControl)(sqlite3_file*, int op, void *pArg); + int (*xSectorSize)(sqlite3_file*); + int (*xDeviceCharacteristics)(sqlite3_file*); + /* Additional methods may be added in future releases */ +}; -#ifndef SQLITE_OMIT_AUTHORIZATION /* -** This routine registers a callback with the SQLite library. The -** callback is invoked (at compile-time, not at run-time) for each -** attempt to access a column of a table in the database. The callback -** returns SQLITE_OK if access is allowed, SQLITE_DENY if the entire -** SQL statement should be aborted with an error and SQLITE_IGNORE -** if the column should be treated as a NULL value. +** CAPI3REF: Standard File Control Opcodes +** +** These integer constants are opcodes for the xFileControl method +** of the [sqlite3_io_methods] object and for the [sqlite3_file_control()] +** interface. +** +** The [SQLITE_FCNTL_LOCKSTATE] opcode is used for debugging. This +** opcode causes the xFileControl method to write the current state of +** the lock (one of [SQLITE_LOCK_NONE], [SQLITE_LOCK_SHARED], +** [SQLITE_LOCK_RESERVED], [SQLITE_LOCK_PENDING], or [SQLITE_LOCK_EXCLUSIVE]) +** 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. */ -int sqlite3_set_authorizer( - sqlite3*, - int (*xAuth)(void*,int,const char*,const char*,const char*,const char*), - void *pUserData -); -#endif +#define SQLITE_FCNTL_LOCKSTATE 1 +#define SQLITE_GET_LOCKPROXYFILE 2 +#define SQLITE_SET_LOCKPROXYFILE 3 +#define SQLITE_LAST_ERRNO 4 /* -** The second parameter to the access authorization function above will -** be one of the values below. These values signify what kind of operation -** is to be authorized. The 3rd and 4th parameters to the authorization -** function will be parameters or NULL depending on which of the following -** codes is used as the second parameter. The 5th parameter is the name -** of the database ("main", "temp", etc.) if applicable. The 6th parameter -** is the name of the inner-most trigger or view that is responsible for -** the access attempt or NULL if this access attempt is directly from -** input SQL code. +** CAPI3REF: Mutex Handle +** +** The mutex module within SQLite defines [sqlite3_mutex] to be an +** abstract type for a mutex object. The SQLite core never looks +** at the internal representation of an [sqlite3_mutex]. It only +** deals with pointers to the [sqlite3_mutex] object. ** -** Arg-3 Arg-4 +** Mutexes are created using [sqlite3_mutex_alloc()]. */ -#define SQLITE_COPY 0 /* Table Name File Name */ -#define SQLITE_CREATE_INDEX 1 /* Index Name Table Name */ -#define SQLITE_CREATE_TABLE 2 /* Table Name NULL */ -#define SQLITE_CREATE_TEMP_INDEX 3 /* Index Name Table Name */ -#define SQLITE_CREATE_TEMP_TABLE 4 /* Table Name NULL */ -#define SQLITE_CREATE_TEMP_TRIGGER 5 /* Trigger Name Table Name */ -#define SQLITE_CREATE_TEMP_VIEW 6 /* View Name NULL */ -#define SQLITE_CREATE_TRIGGER 7 /* Trigger Name Table Name */ -#define SQLITE_CREATE_VIEW 8 /* View Name NULL */ -#define SQLITE_DELETE 9 /* Table Name NULL */ -#define SQLITE_DROP_INDEX 10 /* Index Name Table Name */ -#define SQLITE_DROP_TABLE 11 /* Table Name NULL */ -#define SQLITE_DROP_TEMP_INDEX 12 /* Index Name Table Name */ -#define SQLITE_DROP_TEMP_TABLE 13 /* Table Name NULL */ -#define SQLITE_DROP_TEMP_TRIGGER 14 /* Trigger Name Table Name */ -#define SQLITE_DROP_TEMP_VIEW 15 /* View Name NULL */ -#define SQLITE_DROP_TRIGGER 16 /* Trigger Name Table Name */ -#define SQLITE_DROP_VIEW 17 /* View Name NULL */ -#define SQLITE_INSERT 18 /* Table Name NULL */ -#define SQLITE_PRAGMA 19 /* Pragma Name 1st arg or NULL */ -#define SQLITE_READ 20 /* Table Name Column Name */ -#define SQLITE_SELECT 21 /* NULL NULL */ -#define SQLITE_TRANSACTION 22 /* NULL NULL */ -#define SQLITE_UPDATE 23 /* Table Name Column Name */ -#define SQLITE_ATTACH 24 /* Filename NULL */ -#define SQLITE_DETACH 25 /* Database Name NULL */ - +typedef struct sqlite3_mutex sqlite3_mutex; /* -** The return value of the authorization function should be one of the -** following constants: +** CAPI3REF: OS Interface Object +** +** An instance of the sqlite3_vfs object defines the interface between +** the SQLite core and the underlying operating system. The "vfs" +** in the name of the object stands for "virtual file system". +** +** The value of the iVersion field is initially 1 but may be larger in +** future versions of SQLite. Additional fields may be appended to this +** object when the iVersion value is increased. Note that the structure +** of the sqlite3_vfs object changes in the transaction between +** SQLite version 3.5.9 and 3.6.0 and yet the iVersion field was not +** modified. +** +** The szOsFile field is the size of the subclassed [sqlite3_file] +** structure used by this VFS. mxPathname is the maximum length of +** a pathname in this VFS. +** +** Registered sqlite3_vfs objects are kept on a linked list formed by +** the pNext pointer. The [sqlite3_vfs_register()] +** and [sqlite3_vfs_unregister()] interfaces manage this list +** in a thread-safe way. The [sqlite3_vfs_find()] interface +** searches the list. Neither the application code nor the VFS +** implementation should use the pNext pointer. +** +** The pNext field is the only field in the sqlite3_vfs +** structure that SQLite will ever modify. SQLite will only access +** or modify this field while holding a particular static mutex. +** The application should never modify anything within the sqlite3_vfs +** object once the object has been registered. +** +** The zName field holds the name of the VFS module. The name must +** be unique across all VFS modules. +** +** SQLite will guarantee that the zFilename parameter to xOpen +** is either a NULL pointer or string obtained +** from xFullPathname(). SQLite further guarantees that +** the string will be valid and unchanged until xClose() is +** called. Because of the previous sentence, +** the [sqlite3_file] can safely store a pointer to the +** filename if it needs to remember the filename for some reason. +** If the zFilename parameter is xOpen is a NULL pointer then xOpen +** must invent its own temporary name for the file. Whenever the +** xFilename parameter is NULL it will also be the case that the +** flags parameter will include [SQLITE_OPEN_DELETEONCLOSE]. +** +** The flags argument to xOpen() includes all bits set in +** the flags argument to [sqlite3_open_v2()]. Or if [sqlite3_open()] +** or [sqlite3_open16()] is used, then flags includes at least +** [SQLITE_OPEN_READWRITE] | [SQLITE_OPEN_CREATE]. +** If xOpen() opens a file read-only then it sets *pOutFlags to +** include [SQLITE_OPEN_READONLY]. Other bits in *pOutFlags may be set. +** +** SQLite will also add one of the following flags to the xOpen() +** call, depending on the object being opened: +** +**
    +**
  • [SQLITE_OPEN_MAIN_DB] +**
  • [SQLITE_OPEN_MAIN_JOURNAL] +**
  • [SQLITE_OPEN_TEMP_DB] +**
  • [SQLITE_OPEN_TEMP_JOURNAL] +**
  • [SQLITE_OPEN_TRANSIENT_DB] +**
  • [SQLITE_OPEN_SUBJOURNAL] +**
  • [SQLITE_OPEN_MASTER_JOURNAL] +**
+** +** The file I/O implementation can use the object type flags to +** change the way it deals with files. For example, an application +** that does not care about crash recovery or rollback might make +** the open of a journal file a no-op. Writes to this journal would +** also be no-ops, and any attempt to read the journal would return +** SQLITE_IOERR. Or the implementation might recognize that a database +** file will be doing page-aligned sector reads and writes in a random +** order and set up its I/O subsystem accordingly. +** +** SQLite might also add one of the following flags to the xOpen method: +** +**
    +**
  • [SQLITE_OPEN_DELETEONCLOSE] +**
  • [SQLITE_OPEN_EXCLUSIVE] +**
+** +** The [SQLITE_OPEN_DELETEONCLOSE] flag means the file should be +** deleted when it is closed. The [SQLITE_OPEN_DELETEONCLOSE] +** will be set for TEMP databases, journals and for subjournals. +** +** The [SQLITE_OPEN_EXCLUSIVE] flag is always used in conjunction +** with the [SQLITE_OPEN_CREATE] flag, which are both directly +** analogous to the O_EXCL and O_CREAT flags of the POSIX open() +** API. The SQLITE_OPEN_EXCLUSIVE flag, when paired with the +** SQLITE_OPEN_CREATE, is used to indicate that file should always +** be created, and that it is an error if it already exists. +** It is not used to indicate the file should be opened +** for exclusive access. +** +** At least szOsFile bytes of memory are allocated by SQLite +** to hold the [sqlite3_file] structure passed as the third +** argument to xOpen. The xOpen method does not have to +** allocate the structure; it should just fill it in. Note that +** the xOpen method must set the sqlite3_file.pMethods to either +** a valid [sqlite3_io_methods] object or to NULL. xOpen must do +** this even if the open fails. SQLite expects that the sqlite3_file.pMethods +** element will be valid after xOpen returns regardless of the success +** or failure of the xOpen call. +** +** The flags argument to xAccess() may be [SQLITE_ACCESS_EXISTS] +** to test for the existence of a file, or [SQLITE_ACCESS_READWRITE] to +** test whether a file is readable and writable, or [SQLITE_ACCESS_READ] +** to test whether a file is at least readable. The file can be a +** directory. +** +** SQLite will always allocate at least mxPathname+1 bytes for the +** output buffer xFullPathname. The exact size of the output buffer +** is also passed as a parameter to both methods. If the output buffer +** is not large enough, [SQLITE_CANTOPEN] should be returned. Since this is +** 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 +** 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. +** */ -/* #define SQLITE_OK 0 // Allow access (This is actually defined above) */ -#define SQLITE_DENY 1 /* Abort the SQL statement with an error */ -#define SQLITE_IGNORE 2 /* Don't allow access, but don't generate an error */ +typedef struct sqlite3_vfs sqlite3_vfs; +struct sqlite3_vfs { + int iVersion; /* Structure version number */ + int szOsFile; /* Size of subclassed sqlite3_file */ + int mxPathname; /* Maximum file pathname length */ + sqlite3_vfs *pNext; /* Next registered VFS */ + const char *zName; /* Name of this virtual file system */ + void *pAppData; /* Pointer to application-specific data */ + int (*xOpen)(sqlite3_vfs*, const char *zName, sqlite3_file*, + int flags, int *pOutFlags); + int (*xDelete)(sqlite3_vfs*, const char *zName, int syncDir); + int (*xAccess)(sqlite3_vfs*, const char *zName, int flags, int *pResOut); + int (*xFullPathname)(sqlite3_vfs*, const char *zName, int nOut, char *zOut); + void *(*xDlOpen)(sqlite3_vfs*, const char *zFilename); + void (*xDlError)(sqlite3_vfs*, int nByte, char *zErrMsg); + void (*(*xDlSym)(sqlite3_vfs*,void*, const char *zSymbol))(void); + void (*xDlClose)(sqlite3_vfs*, void*); + int (*xRandomness)(sqlite3_vfs*, int nByte, char *zOut); + 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. */ +}; /* -** Register a function that is called at every invocation of sqlite3_exec() -** or sqlite3_prepare(). This function can be used (for example) to generate -** a log file of all SQL executed against a database. +** CAPI3REF: Flags for the xAccess VFS method +** +** These integer constants can be used as the third parameter to +** the xAccess method of an [sqlite3_vfs] object. They determine +** what kind of permissions the xAccess method is looking for. +** 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. +** With SQLITE_ACCESS_READ, the xAccess method +** checks whether the file is readable. */ -void *sqlite3_trace(sqlite3*, void(*xTrace)(void*,const char*), void*); +#define SQLITE_ACCESS_EXISTS 0 +#define SQLITE_ACCESS_READWRITE 1 +#define SQLITE_ACCESS_READ 2 /* -** This routine configures a callback function - the progress callback - that -** is invoked periodically during long running calls to sqlite3_exec(), -** sqlite3_step() and sqlite3_get_table(). An example use for this API is to keep -** a GUI updated during a large query. +** CAPI3REF: Initialize The SQLite Library ** -** The progress callback is invoked once for every N virtual machine opcodes, -** where N is the second argument to this function. The progress callback -** itself is identified by the third argument to this function. The fourth -** argument to this function is a void pointer passed to the progress callback -** function each time it is invoked. +** ^The sqlite3_initialize() routine initializes the +** SQLite library. ^The sqlite3_shutdown() routine +** deallocates any resources that were allocated by sqlite3_initialize(). +** These routines are designed to aid in process initialization and +** shutdown on embedded systems. Workstation applications using +** SQLite normally do not need to invoke either of these routines. ** -** If a call to sqlite3_exec(), sqlite3_step() or sqlite3_get_table() results -** in less than N opcodes being executed, then the progress callback is not -** invoked. -** -** To remove the progress callback altogether, pass NULL as the third -** argument to this function. +** A call to sqlite3_initialize() is an "effective" call if it is +** the first time sqlite3_initialize() is invoked during the lifetime of +** the process, or if it is the first time sqlite3_initialize() is invoked +** following a call to sqlite3_shutdown(). ^(Only an effective call +** of sqlite3_initialize() does any initialization. All other calls +** are harmless no-ops.)^ ** -** If the progress callback returns a result other than 0, then the current -** query is immediately terminated and any database changes rolled back. If the -** query was part of a larger transaction, then the transaction is not rolled -** back and remains active. The sqlite3_exec() call returns SQLITE_ABORT. +** A call to sqlite3_shutdown() is an "effective" call if it is the first +** call to sqlite3_shutdown() since the last sqlite3_initialize(). ^(Only +** an effective call to sqlite3_shutdown() does any deinitialization. +** All other valid calls to sqlite3_shutdown() are harmless no-ops.)^ ** -******* THIS IS AN EXPERIMENTAL API AND IS SUBJECT TO CHANGE ****** -*/ -void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*); - -/* -** Register a callback function to be invoked whenever a new transaction -** is committed. The pArg argument is passed through to the callback. -** callback. If the callback function returns non-zero, then the commit -** is converted into a rollback. +** The sqlite3_initialize() interface is threadsafe, but sqlite3_shutdown() +** is not. The sqlite3_shutdown() interface must only be called from a +** single thread. All open [database connections] must be closed and all +** other SQLite resources must be deallocated prior to invoking +** sqlite3_shutdown(). +** +** Among other things, ^sqlite3_initialize() will invoke +** sqlite3_os_init(). Similarly, ^sqlite3_shutdown() +** will invoke sqlite3_os_end(). +** +** ^The sqlite3_initialize() routine returns [SQLITE_OK] on success. +** ^If for some reason, sqlite3_initialize() is unable to initialize +** the library (perhaps it is unable to allocate a needed resource such +** as a mutex) it returns an [error code] other than [SQLITE_OK]. ** -** If another function was previously registered, its pArg value is returned. -** Otherwise NULL is returned. +** ^The sqlite3_initialize() routine is called internally by many other +** SQLite interfaces so that an application usually does not need to +** invoke sqlite3_initialize() directly. For example, [sqlite3_open()] +** calls sqlite3_initialize() so the SQLite library will be automatically +** initialized when [sqlite3_open()] is called if it has not be initialized +** already. ^However, if SQLite is compiled with the [SQLITE_OMIT_AUTOINIT] +** compile-time option, then the automatic calls to sqlite3_initialize() +** are omitted and the application must call sqlite3_initialize() directly +** prior to using any other SQLite interface. For maximum portability, +** it is recommended that applications always invoke sqlite3_initialize() +** directly prior to using any other SQLite interface. Future releases +** of SQLite may require this. In other words, the behavior exhibited +** when SQLite is compiled with [SQLITE_OMIT_AUTOINIT] might become the +** default behavior in some future release of SQLite. ** -** Registering a NULL function disables the callback. +** The sqlite3_os_init() routine does operating-system specific +** initialization of the SQLite library. The sqlite3_os_end() +** routine undoes the effect of sqlite3_os_init(). Typical tasks +** performed by these routines include allocation or deallocation +** of static resources, initialization of global variables, +** setting up a default [sqlite3_vfs] module, or setting up +** a default configuration using [sqlite3_config()]. ** -******* THIS IS AN EXPERIMENTAL API AND IS SUBJECT TO CHANGE ****** +** The application should never invoke either sqlite3_os_init() +** or sqlite3_os_end() directly. The application should only invoke +** sqlite3_initialize() and sqlite3_shutdown(). The sqlite3_os_init() +** interface is called automatically by sqlite3_initialize() and +** sqlite3_os_end() is called by sqlite3_shutdown(). Appropriate +** implementations for sqlite3_os_init() and sqlite3_os_end() +** are built into SQLite when it is compiled for Unix, Windows, or OS/2. +** When [custom builds | built for other platforms] +** (using the [SQLITE_OS_OTHER=1] compile-time +** option) the application must supply a suitable implementation for +** sqlite3_os_init() and sqlite3_os_end(). An application-supplied +** implementation of sqlite3_os_init() or sqlite3_os_end() +** must return [SQLITE_OK] on success and some other [error code] upon +** failure. */ -void *sqlite3_commit_hook(sqlite3*, int(*)(void*), void*); +SQLITE_API int sqlite3_initialize(void); +SQLITE_API int sqlite3_shutdown(void); +SQLITE_API int sqlite3_os_init(void); +SQLITE_API int sqlite3_os_end(void); /* -** Open the sqlite database file "filename". The "filename" is UTF-8 -** encoded for sqlite3_open() and UTF-16 encoded in the native byte order -** for sqlite3_open16(). An sqlite3* handle is returned in *ppDb, even -** if an error occurs. If the database is opened (or created) successfully, -** then SQLITE_OK is returned. Otherwise an error code is returned. The -** sqlite3_errmsg() or sqlite3_errmsg16() routines can be used to obtain -** an English language description of the error. +** CAPI3REF: Configuring The SQLite Library ** -** If the database file does not exist, then a new database is created. -** The encoding for the database is UTF-8 if sqlite3_open() is called and -** UTF-16 if sqlite3_open16 is used. +** The sqlite3_config() interface is used to make global configuration +** changes to SQLite in order to tune SQLite to the specific needs of +** the application. The default configuration is recommended for most +** applications and so this routine is usually not necessary. It is +** provided to support rare applications with unusual needs. ** -** Whether or not an error occurs when it is opened, resources associated -** with the sqlite3* handle should be released by passing it to -** sqlite3_close() when it is no longer required. +** The sqlite3_config() interface is not threadsafe. The application +** must insure that no other SQLite interfaces are invoked by other +** threads while sqlite3_config() is running. Furthermore, sqlite3_config() +** may only be invoked prior to library initialization using +** [sqlite3_initialize()] or after shutdown by [sqlite3_shutdown()]. +** ^If sqlite3_config() is called after [sqlite3_initialize()] and before +** [sqlite3_shutdown()] then it will return SQLITE_MISUSE. +** Note, however, that ^sqlite3_config() can be called as part of the +** implementation of an application-defined [sqlite3_os_init()]. +** +** The first argument to sqlite3_config() is an integer +** [SQLITE_CONFIG_SINGLETHREAD | configuration option] that determines +** what property of SQLite is to be configured. Subsequent arguments +** vary depending on the [SQLITE_CONFIG_SINGLETHREAD | configuration option] +** in the first argument. +** +** ^When a configuration option is set, sqlite3_config() returns [SQLITE_OK]. +** ^If the option is unknown or SQLite is unable to set the option +** then this routine returns a non-zero [error code]. */ -int sqlite3_open( - const char *filename, /* Database filename (UTF-8) */ - sqlite3 **ppDb /* OUT: SQLite db handle */ -); -int sqlite3_open16( - const void *filename, /* Database filename (UTF-16) */ - sqlite3 **ppDb /* OUT: SQLite db handle */ -); +SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_config(int, ...); /* -** Return the error code for the most recent sqlite3_* API call associated -** with sqlite3 handle 'db'. SQLITE_OK is returned if the most recent -** API call was successful. +** CAPI3REF: Configure database connections +** EXPERIMENTAL ** -** Calls to many sqlite3_* functions set the error code and string returned -** by sqlite3_errcode(), sqlite3_errmsg() and sqlite3_errmsg16() -** (overwriting the previous values). Note that calls to sqlite3_errcode(), -** sqlite3_errmsg() and sqlite3_errmsg16() themselves do not affect the -** results of future invocations. +** The sqlite3_db_config() interface is used to make configuration +** changes to a [database connection]. The interface is similar to +** [sqlite3_config()] except that the changes apply to a single +** [database connection] (specified in the first argument). The +** sqlite3_db_config() interface should only be used immediately after +** the database connection is created using [sqlite3_open()], +** [sqlite3_open16()], or [sqlite3_open_v2()]. ** -** Assuming no other intervening sqlite3_* API calls are made, the error -** code returned by this function is associated with the same error as -** the strings returned by sqlite3_errmsg() and sqlite3_errmsg16(). +** The second argument to sqlite3_db_config(D,V,...) is the +** configuration verb - an integer code that indicates what +** aspect of the [database connection] is being configured. +** The only choice for this value is [SQLITE_DBCONFIG_LOOKASIDE]. +** New verbs are likely to be added in future releases of SQLite. +** Additional arguments depend on the verb. +** +** ^Calls to sqlite3_db_config() return SQLITE_OK if and only if +** the call is considered successful. */ -int sqlite3_errcode(sqlite3 *db); +SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_db_config(sqlite3*, int op, ...); /* -** Return a pointer to a UTF-8 encoded string describing in english the -** error condition for the most recent sqlite3_* API call. The returned -** string is always terminated by an 0x00 byte. +** CAPI3REF: Memory Allocation Routines +** EXPERIMENTAL +** +** An instance of this object defines the interface between SQLite +** and low-level memory allocation routines. +** +** This object is used in only one place in the SQLite interface. +** A pointer to an instance of this object is the argument to +** [sqlite3_config()] when the configuration option is +** [SQLITE_CONFIG_MALLOC] or [SQLITE_CONFIG_GETMALLOC]. +** By creating an instance of this object +** and passing it to [sqlite3_config]([SQLITE_CONFIG_MALLOC]) +** during configuration, an application can specify an alternative +** memory allocation subsystem for SQLite to use for all of its +** dynamic memory needs. +** +** Note that SQLite comes with several [built-in memory allocators] +** that are perfectly adequate for the overwhelming majority of applications +** and that this object is only useful to a tiny minority of applications +** with specialized memory allocation requirements. This object is +** also used during testing of SQLite in order to specify an alternative +** memory allocator that simulates memory out-of-memory conditions in +** order to verify that SQLite recovers gracefully from such +** conditions. +** +** The xMalloc and xFree methods must work like the +** malloc() and free() functions from the standard C library. +** The xRealloc method must work like realloc() from the standard C library +** with the exception that if the second argument to xRealloc is zero, +** xRealloc must be a no-op - it must not perform any allocation or +** deallocation. ^SQLite guarantees that the second argument to +** xRealloc is always a value returned by a prior call to xRoundup. +** And so in cases where xRoundup always returns a positive number, +** xRealloc can perform exactly as the standard library realloc() and +** still be in compliance with this specification. +** +** xSize should return the allocated size of a memory allocation +** previously obtained from xMalloc or xRealloc. The allocated size +** is always at least as big as the requested size but may be larger. +** +** The xRoundup method returns what would be the allocated size of +** a memory allocation given a particular requested size. Most memory +** allocators round up memory allocations at least to the next multiple +** of 8. Some allocators round up to a larger multiple or to a power of 2. +** Every memory allocation request coming in through [sqlite3_malloc()] +** or [sqlite3_realloc()] first calls xRoundup. If xRoundup returns 0, +** that causes the corresponding memory allocation to fail. +** +** The xInit method initializes the memory allocator. (For example, +** it might allocate any require mutexes or initialize internal data +** structures. The xShutdown method is invoked (indirectly) by +** [sqlite3_shutdown()] and should deallocate any resources acquired +** by xInit. The pAppData pointer is used as the only parameter to +** xInit and xShutdown. ** -** The string "not an error" is returned when the most recent API call was -** successful. +** SQLite holds the [SQLITE_MUTEX_STATIC_MASTER] mutex when it invokes +** the xInit method, so the xInit method need not be threadsafe. The +** xShutdown method is only called from [sqlite3_shutdown()] so it does +** not need to be threadsafe either. For all other methods, SQLite +** holds the [SQLITE_MUTEX_STATIC_MEM] mutex as long as the +** [SQLITE_CONFIG_MEMSTATUS] configuration option is turned on (which +** it is by default) and so the methods are automatically serialized. +** However, if [SQLITE_CONFIG_MEMSTATUS] is disabled, then the other +** methods must be threadsafe or else make their own arrangements for +** serialization. +** +** SQLite will never invoke xInit() more than once without an intervening +** call to xShutdown(). */ -const char *sqlite3_errmsg(sqlite3*); +typedef struct sqlite3_mem_methods sqlite3_mem_methods; +struct sqlite3_mem_methods { + void *(*xMalloc)(int); /* Memory allocation function */ + void (*xFree)(void*); /* Free a prior allocation */ + void *(*xRealloc)(void*,int); /* Resize an allocation */ + int (*xSize)(void*); /* Return the size of an allocation */ + int (*xRoundup)(int); /* Round up request size to allocation size */ + int (*xInit)(void*); /* Initialize the memory allocator */ + void (*xShutdown)(void*); /* Deinitialize the memory allocator */ + void *pAppData; /* Argument to xInit() and xShutdown() */ +}; /* -** Return a pointer to a UTF-16 native byte order encoded string describing -** in english the error condition for the most recent sqlite3_* API call. -** The returned string is always terminated by a pair of 0x00 bytes. +** 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. +** +** New configuration options may be added in future releases of SQLite. +** Existing configuration options might be discontinued. Applications +** should check the return code from [sqlite3_config()] to make sure that +** the call worked. The [sqlite3_config()] interface will return a +** non-zero [error code] if a discontinued or unsupported configuration option +** is invoked. +** +**
+**
SQLITE_CONFIG_SINGLETHREAD
+**
There are no arguments to this option. ^This option sets the +** [threading mode] to Single-thread. In other words, it disables +** all mutexing and puts SQLite into a mode where it can only be used +** by a single thread. ^If SQLite is compiled with +** the [SQLITE_THREADSAFE | SQLITE_THREADSAFE=0] compile-time option then +** it is not possible to change the [threading mode] from its default +** value of Single-thread and so [sqlite3_config()] will return +** [SQLITE_ERROR] if called with the SQLITE_CONFIG_SINGLETHREAD +** configuration option.
+** +**
SQLITE_CONFIG_MULTITHREAD
+**
There are no arguments to this option. ^This option sets the +** [threading mode] to Multi-thread. In other words, it disables +** mutexing on [database connection] and [prepared statement] objects. +** The application is responsible for serializing access to +** [database connections] and [prepared statements]. But other mutexes +** are enabled so that SQLite will be safe to use in a multi-threaded +** environment as long as no two threads attempt to use the same +** [database connection] at the same time. ^If SQLite is compiled with +** the [SQLITE_THREADSAFE | SQLITE_THREADSAFE=0] compile-time option then +** it is not possible to set the Multi-thread [threading mode] and +** [sqlite3_config()] will return [SQLITE_ERROR] if called with the +** SQLITE_CONFIG_MULTITHREAD configuration option.
+** +**
SQLITE_CONFIG_SERIALIZED
+**
There are no arguments to this option. ^This option sets the +** [threading mode] to Serialized. In other words, this option enables +** all mutexes including the recursive +** mutexes on [database connection] and [prepared statement] objects. +** In this mode (which is the default when SQLite is compiled with +** [SQLITE_THREADSAFE=1]) the SQLite library will itself serialize access +** to [database connections] and [prepared statements] so that the +** application is free to use the same [database connection] or the +** same [prepared statement] in different threads at the same time. +** ^If SQLite is compiled with +** the [SQLITE_THREADSAFE | SQLITE_THREADSAFE=0] compile-time option then +** it is not possible to set the Serialized [threading mode] and +** [sqlite3_config()] will return [SQLITE_ERROR] if called with the +** SQLITE_CONFIG_SERIALIZED configuration option.
+** +**
SQLITE_CONFIG_MALLOC
+**
^(This option takes a single argument which is a pointer to an +** instance of the [sqlite3_mem_methods] structure. The argument specifies +** alternative low-level memory allocation routines to be used in place of +** the memory allocation routines built into SQLite.)^ ^SQLite makes +** its own private copy of the content of the [sqlite3_mem_methods] structure +** before the [sqlite3_config()] call returns.
+** +**
SQLITE_CONFIG_GETMALLOC
+**
^(This option takes a single argument which is a pointer to an +** instance of the [sqlite3_mem_methods] structure. The [sqlite3_mem_methods] +** structure is filled with the currently defined memory allocation routines.)^ +** This option can be used to overload the default memory allocation +** routines with a wrapper that simulations memory allocation failure or +** tracks memory usage, for example.
+** +**
SQLITE_CONFIG_MEMSTATUS
+**
^This option takes single argument of type int, interpreted as a +** boolean, which enables or disables the collection of memory allocation +** statistics. ^(When memory allocation statistics are disabled, the +** following SQLite interfaces become non-operational: +**
    +**
  • [sqlite3_memory_used()] +**
  • [sqlite3_memory_highwater()] +**
  • [sqlite3_soft_heap_limit()] +**
  • [sqlite3_status()] +**
)^ +** ^Memory allocation statistics are enabled by default unless SQLite is +** compiled with [SQLITE_DEFAULT_MEMSTATUS]=0 in which case memory +** allocation statistics are disabled by default. +**
+** +**
SQLITE_CONFIG_SCRATCH
+**
^This option specifies a static memory buffer that SQLite can use for +** scratch memory. There are three arguments: A pointer an 8-byte +** aligned memory buffer from which the scrach allocations will be +** drawn, the size of each scratch allocation (sz), +** and the maximum number of scratch allocations (N). The sz +** argument must be a multiple of 16. The sz parameter should be a few bytes +** larger than the actual scratch space required due to internal overhead. +** The first argument must be a pointer to an 8-byte aligned buffer +** of at least sz*N bytes of memory. +** ^SQLite will use no more than one scratch buffer per thread. So +** N should be set to the expected maximum number of threads. ^SQLite will +** never require a scratch buffer that is more than 6 times the database +** page size. ^If SQLite needs needs additional scratch memory beyond +** what is provided by this configuration option, then +** [sqlite3_malloc()] will be used to obtain the memory needed.
+** +**
SQLITE_CONFIG_PAGECACHE
+**
^This option specifies a static memory buffer that SQLite can use for +** the database page cache with the default page cache implemenation. +** This configuration should not be used if an application-define page +** cache implementation is loaded using the SQLITE_CONFIG_PCACHE option. +** There are three arguments to this option: A pointer to 8-byte aligned +** memory, the size of each page buffer (sz), and the number of pages (N). +** The sz argument should be the size of the largest database page +** (a power of two between 512 and 32768) plus a little extra for each +** page header. ^The page header size is 20 to 40 bytes depending on +** the host architecture. ^It is harmless, apart from the wasted memory, +** to make sz a little too large. The first +** argument should point to an allocation of at least sz*N bytes of memory. +** ^SQLite will use the memory provided by the first argument to satisfy its +** memory needs for the first N pages that it adds to cache. ^If additional +** page cache memory is needed beyond what is provided by this option, then +** SQLite goes to [sqlite3_malloc()] for the additional storage space. +** ^The implementation might use one or more of the N buffers to hold +** memory accounting information. The pointer in the first argument must +** be aligned to an 8-byte boundary or subsequent behavior of SQLite +** will be undefined.
+** +**
SQLITE_CONFIG_HEAP
+**
^This option specifies a static memory buffer that SQLite will use +** for all of its dynamic memory allocation needs beyond those provided +** for by [SQLITE_CONFIG_SCRATCH] and [SQLITE_CONFIG_PAGECACHE]. +** There are three arguments: An 8-byte aligned pointer to the memory, +** the number of bytes in the memory buffer, and the minimum allocation size. +** ^If the first pointer (the memory pointer) is NULL, then SQLite reverts +** to using its default memory allocator (the system malloc() implementation), +** undoing any prior invocation of [SQLITE_CONFIG_MALLOC]. ^If the +** memory pointer is not NULL and either [SQLITE_ENABLE_MEMSYS3] or +** [SQLITE_ENABLE_MEMSYS5] are defined, then the alternative memory +** allocator is engaged to handle all of SQLites memory allocation needs. +** The first pointer (the memory pointer) must be aligned to an 8-byte +** boundary or subsequent behavior of SQLite will be undefined.
+** +**
SQLITE_CONFIG_MUTEX
+**
^(This option takes a single argument which is a pointer to an +** instance of the [sqlite3_mutex_methods] structure. The argument specifies +** alternative low-level mutex routines to be used in place +** the mutex routines built into SQLite.)^ ^SQLite makes a copy of the +** content of the [sqlite3_mutex_methods] structure before the call to +** [sqlite3_config()] returns. ^If SQLite is compiled with +** the [SQLITE_THREADSAFE | SQLITE_THREADSAFE=0] compile-time option then +** the entire mutexing subsystem is omitted from the build and hence calls to +** [sqlite3_config()] with the SQLITE_CONFIG_MUTEX configuration option will +** return [SQLITE_ERROR].
+** +**
SQLITE_CONFIG_GETMUTEX
+**
^(This option takes a single argument which is a pointer to an +** instance of the [sqlite3_mutex_methods] structure. The +** [sqlite3_mutex_methods] +** structure is filled with the currently defined mutex routines.)^ +** This option can be used to overload the default mutex allocation +** routines with a wrapper used to track mutex usage for performance +** profiling or testing, for example. ^If SQLite is compiled with +** the [SQLITE_THREADSAFE | SQLITE_THREADSAFE=0] compile-time option then +** the entire mutexing subsystem is omitted from the build and hence calls to +** [sqlite3_config()] with the SQLITE_CONFIG_GETMUTEX configuration option will +** return [SQLITE_ERROR].
+** +**
SQLITE_CONFIG_LOOKASIDE
+**
^(This option takes two arguments that determine the default +** memory allocation for the lookaside memory allocator on each +** [database connection]. The first argument is the +** size of each lookaside buffer slot and the second is the number of +** slots allocated to each database connection.)^ ^(This option sets the +** default lookaside size. The [SQLITE_DBCONFIG_LOOKASIDE] +** verb to [sqlite3_db_config()] can be used to change the lookaside +** configuration on individual connections.)^
+** +**
SQLITE_CONFIG_PCACHE
+**
^(This option takes a single argument which is a pointer to +** an [sqlite3_pcache_methods] object. This object specifies the interface +** to a custom page cache implementation.)^ ^SQLite makes a copy of the +** object and uses it for page cache memory allocations.
** -** The string "not an error" is returned when the most recent API call was -** successful. +**
SQLITE_CONFIG_GETPCACHE
+**
^(This option takes a single argument which is a pointer to an +** [sqlite3_pcache_methods] object. SQLite copies of the current +** page cache implementation into that object.)^
+** +**
*/ -const void *sqlite3_errmsg16(sqlite3*); +#define SQLITE_CONFIG_SINGLETHREAD 1 /* nil */ +#define SQLITE_CONFIG_MULTITHREAD 2 /* nil */ +#define SQLITE_CONFIG_SERIALIZED 3 /* nil */ +#define SQLITE_CONFIG_MALLOC 4 /* sqlite3_mem_methods* */ +#define SQLITE_CONFIG_GETMALLOC 5 /* sqlite3_mem_methods* */ +#define SQLITE_CONFIG_SCRATCH 6 /* void*, int sz, int N */ +#define SQLITE_CONFIG_PAGECACHE 7 /* void*, int sz, int N */ +#define SQLITE_CONFIG_HEAP 8 /* void*, int nByte, int min */ +#define SQLITE_CONFIG_MEMSTATUS 9 /* boolean */ +#define SQLITE_CONFIG_MUTEX 10 /* sqlite3_mutex_methods* */ +#define SQLITE_CONFIG_GETMUTEX 11 /* sqlite3_mutex_methods* */ +/* previously SQLITE_CONFIG_CHUNKALLOC 12 which is now unused. */ +#define SQLITE_CONFIG_LOOKASIDE 13 /* int int */ +#define SQLITE_CONFIG_PCACHE 14 /* sqlite3_pcache_methods* */ +#define SQLITE_CONFIG_GETPCACHE 15 /* sqlite3_pcache_methods* */ +#define SQLITE_CONFIG_LOG 16 /* xFunc, void* */ /* -** An instance of the following opaque structure is used to represent -** a compiled SQL statment. +** CAPI3REF: Configuration Options +** EXPERIMENTAL +** +** These constants are the available integer configuration options that +** can be passed as the second argument to the [sqlite3_db_config()] interface. +** +** New configuration options may be added in future releases of SQLite. +** Existing configuration options might be discontinued. Applications +** should check the return code from [sqlite3_db_config()] to make sure that +** the call worked. ^The [sqlite3_db_config()] interface will return a +** non-zero [error code] if a discontinued or unsupported configuration option +** is invoked. +** +**
+**
SQLITE_DBCONFIG_LOOKASIDE
+**
^This option takes three additional arguments that determine the +** [lookaside memory allocator] configuration for the [database connection]. +** ^The first argument (the third parameter to [sqlite3_db_config()] is a +** pointer to an memory buffer to use for lookaside memory. +** ^The first argument after the SQLITE_DBCONFIG_LOOKASIDE verb +** may be NULL in which case SQLite will allocate the +** lookaside buffer itself using [sqlite3_malloc()]. ^The second argument is the +** size of each lookaside buffer slot. ^The third argument is the number of +** slots. The size of the buffer in the first argument must be greater than +** or equal to the product of the second and third arguments. The buffer +** must be aligned to an 8-byte boundary. ^If the second argument to +** SQLITE_DBCONFIG_LOOKASIDE is not a multiple of 8, it is internally +** rounded down to the next smaller +** multiple of 8. See also: [SQLITE_CONFIG_LOOKASIDE]
+** +**
*/ -typedef struct sqlite3_stmt sqlite3_stmt; +#define SQLITE_DBCONFIG_LOOKASIDE 1001 /* void* int int */ -/* -** To execute an SQL query, it must first be compiled into a byte-code -** program using one of the following routines. The only difference between -** them is that the second argument, specifying the SQL statement to -** compile, is assumed to be encoded in UTF-8 for the sqlite3_prepare() -** function and UTF-16 for sqlite3_prepare16(). -** -** The first parameter "db" is an SQLite database handle. The second -** parameter "zSql" is the statement to be compiled, encoded as either -** UTF-8 or UTF-16 (see above). If the next parameter, "nBytes", is less -** than zero, then zSql is read up to the first nul terminator. If -** "nBytes" is not less than zero, then it is the length of the string zSql -** in bytes (not characters). -** -** *pzTail is made to point to the first byte past the end of the first -** SQL statement in zSql. This routine only compiles the first statement -** in zSql, so *pzTail is left pointing to what remains uncompiled. -** -** *ppStmt is left pointing to a compiled SQL statement that can be -** executed using sqlite3_step(). Or if there is an error, *ppStmt may be -** set to NULL. If the input text contained no SQL (if the input is and -** empty string or a comment) then *ppStmt is set to NULL. -** -** On success, SQLITE_OK is returned. Otherwise an error code is returned. -*/ -int sqlite3_prepare( - sqlite3 *db, /* Database handle */ - const char *zSql, /* SQL statement, UTF-8 encoded */ - int nBytes, /* Length of zSql in bytes. */ - sqlite3_stmt **ppStmt, /* OUT: Statement handle */ - const char **pzTail /* OUT: Pointer to unused portion of zSql */ -); -int sqlite3_prepare16( - sqlite3 *db, /* Database handle */ - const void *zSql, /* SQL statement, UTF-16 encoded */ - int nBytes, /* Length of zSql in bytes. */ - sqlite3_stmt **ppStmt, /* OUT: Statement handle */ - const void **pzTail /* OUT: Pointer to unused portion of zSql */ -); /* -** Pointers to the following two opaque structures are used to communicate -** with the implementations of user-defined functions. +** CAPI3REF: Enable Or Disable Extended Result Codes +** +** ^The sqlite3_extended_result_codes() routine enables or disables the +** [extended result codes] feature of SQLite. ^The extended result +** codes are disabled by default for historical compatibility. */ -typedef struct sqlite3_context sqlite3_context; -typedef struct Mem sqlite3_value; +SQLITE_API int sqlite3_extended_result_codes(sqlite3*, int onoff); /* -** In the SQL strings input to sqlite3_prepare() and sqlite3_prepare16(), -** one or more literals can be replace by a wildcard "?" or ":N:" where -** N is an integer. These value of these wildcard literals can be set -** using the routines listed below. +** CAPI3REF: Last Insert Rowid ** -** In every case, the first parameter is a pointer to the sqlite3_stmt -** structure returned from sqlite3_prepare(). The second parameter is the -** index of the wildcard. The first "?" has an index of 1. ":N:" wildcards -** use the index N. +** ^Each entry in an SQLite table has a unique 64-bit signed +** integer key called the [ROWID | "rowid"]. ^The rowid is always available +** as an undeclared column named ROWID, OID, or _ROWID_ as long as those +** names are not also used by explicitly declared columns. ^If +** the table has a column of type [INTEGER PRIMARY KEY] then that column +** is another alias for the rowid. ** -** The fifth parameter to sqlite3_bind_blob(), sqlite3_bind_text(), and -** sqlite3_bind_text16() is a destructor used to dispose of the BLOB or -** text after SQLite has finished with it. If the fifth argument is the -** special value SQLITE_STATIC, then the library assumes that the information -** is in static, unmanaged space and does not need to be freed. If the -** fifth argument has the value SQLITE_TRANSIENT, then SQLite makes its -** own private copy of the data. +** ^This routine returns the [rowid] of the most recent +** successful [INSERT] into the database from the [database connection] +** in the first argument. ^If no successful [INSERT]s +** have ever occurred on that database connection, zero is returned. ** -** The sqlite3_bind_* routine must be called before sqlite3_step() after -** an sqlite3_prepare() or sqlite3_reset(). Unbound wildcards are interpreted -** as NULL. -*/ -int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*)); -int sqlite3_bind_double(sqlite3_stmt*, int, double); -int sqlite3_bind_int(sqlite3_stmt*, int, int); -int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite_int64); -int sqlite3_bind_null(sqlite3_stmt*, int); -int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*)); -int sqlite3_bind_text16(sqlite3_stmt*, int, const void*, int, void(*)(void*)); -int sqlite3_bind_value(sqlite3_stmt*, int, const sqlite3_value*); - -/* -** Return the number of wildcards in a compiled SQL statement. This -** routine was added to support DBD::SQLite. -*/ -int sqlite3_bind_parameter_count(sqlite3_stmt*); - -/* -** Return the name of the i-th parameter. Ordinary wildcards "?" are -** nameless and a NULL is returned. For wildcards of the form :N or -** $vvvv the complete text of the wildcard is returned. -** NULL is returned if the index is out of range. +** ^(If an [INSERT] occurs within a trigger, then the [rowid] of the inserted +** row is returned by this routine as long as the trigger is running. +** But once the trigger terminates, the value returned by this routine +** reverts to the last value inserted before the trigger fired.)^ +** +** ^An [INSERT] that fails due to a constraint violation is not a +** successful [INSERT] and does not change the value returned by this +** routine. ^Thus INSERT OR FAIL, INSERT OR IGNORE, INSERT OR ROLLBACK, +** and INSERT OR ABORT make no changes to the return value of this +** routine when their insertion fails. ^(When INSERT OR REPLACE +** encounters a constraint violation, it does not fail. The +** INSERT continues to completion after deleting rows that caused +** the constraint problem so INSERT OR REPLACE will always change +** the return value of this interface.)^ +** +** ^For the purposes of this routine, an [INSERT] is considered to +** be successful even if it is subsequently rolled back. +** +** This function is accessible to SQL statements via the +** [last_insert_rowid() SQL function]. +** +** If a separate thread performs a new [INSERT] on the same +** database connection while the [sqlite3_last_insert_rowid()] +** function is running and thus changes the last insert [rowid], +** then the value returned by [sqlite3_last_insert_rowid()] is +** unpredictable and might not equal either the old or the new +** last insert [rowid]. */ -const char *sqlite3_bind_parameter_name(sqlite3_stmt*, int); +SQLITE_API sqlite3_int64 sqlite3_last_insert_rowid(sqlite3*); /* -** Return the index of a parameter with the given name. The name -** must match exactly. If no parameter with the given name is found, -** return 0. +** CAPI3REF: Count The Number Of Rows Modified +** +** ^This function returns the number of database rows that were changed +** or inserted or deleted by the most recently completed SQL statement +** on the [database connection] specified by the first parameter. +** ^(Only changes that are directly specified by the [INSERT], [UPDATE], +** or [DELETE] statement are counted. Auxiliary changes caused by +** triggers or [foreign key actions] are not counted.)^ Use the +** [sqlite3_total_changes()] function to find the total number of changes +** including changes caused by triggers and foreign key actions. +** +** ^Changes to a view that are simulated by an [INSTEAD OF trigger] +** are not counted. Only real table changes are counted. +** +** ^(A "row change" is a change to a single row of a single table +** caused by an INSERT, DELETE, or UPDATE statement. Rows that +** are changed as side effects of [REPLACE] constraint resolution, +** rollback, ABORT processing, [DROP TABLE], or by any other +** mechanisms do not count as direct row changes.)^ +** +** A "trigger context" is a scope of execution that begins and +** ends with the script of a [CREATE TRIGGER | trigger]. +** Most SQL statements are +** evaluated outside of any trigger. This is the "top level" +** trigger context. If a trigger fires from the top level, a +** new trigger context is entered for the duration of that one +** trigger. Subtriggers create subcontexts for their duration. +** +** ^Calling [sqlite3_exec()] or [sqlite3_step()] recursively does +** not create a new trigger context. +** +** ^This function returns the number of direct row changes in the +** most recent INSERT, UPDATE, or DELETE statement within the same +** trigger context. +** +** ^Thus, when called from the top level, this function returns the +** number of changes in the most recent INSERT, UPDATE, or DELETE +** that also occurred at the top level. ^(Within the body of a trigger, +** the sqlite3_changes() interface can be called to find the number of +** changes in the most recently completed INSERT, UPDATE, or DELETE +** statement within the body of the same trigger. +** However, the number returned does not include changes +** caused by subtriggers since those have their own context.)^ +** +** See also the [sqlite3_total_changes()] interface, the +** [count_changes pragma], and the [changes() SQL function]. +** +** If a separate thread makes changes on the same database connection +** while [sqlite3_changes()] is running then the value returned +** is unpredictable and not meaningful. */ -int sqlite3_bind_parameter_index(sqlite3_stmt*, const char *zName); +SQLITE_API int sqlite3_changes(sqlite3*); /* -** Return the number of columns in the result set returned by the compiled -** SQL statement. This routine returns 0 if pStmt is an SQL statement -** that does not return data (for example an UPDATE). +** CAPI3REF: Total Number Of Rows Modified +** +** ^This function returns the number of row changes caused by [INSERT], +** [UPDATE] or [DELETE] statements since the [database connection] was opened. +** ^(The count returned by sqlite3_total_changes() includes all changes +** from all [CREATE TRIGGER | trigger] contexts and changes made by +** [foreign key actions]. However, +** the count does not include changes used to implement [REPLACE] constraints, +** do rollbacks or ABORT processing, or [DROP TABLE] processing. The +** count does not include rows of views that fire an [INSTEAD OF trigger], +** though if the INSTEAD OF trigger makes changes of its own, those changes +** are counted.)^ +** ^The sqlite3_total_changes() function counts the changes as soon as +** the statement that makes them is completed (when the statement handle +** is passed to [sqlite3_reset()] or [sqlite3_finalize()]). +** +** See also the [sqlite3_changes()] interface, the +** [count_changes pragma], and the [total_changes() SQL function]. +** +** If a separate thread makes changes on the same database connection +** while [sqlite3_total_changes()] is running then the value +** returned is unpredictable and not meaningful. */ -int sqlite3_column_count(sqlite3_stmt *pStmt); +SQLITE_API int sqlite3_total_changes(sqlite3*); /* -** The first parameter is a compiled SQL statement. This function returns -** the column heading for the Nth column of that statement, where N is the -** second function parameter. The string returned is UTF-8 for -** sqlite3_column_name() and UTF-16 for sqlite3_column_name16(). +** CAPI3REF: Interrupt A Long-Running Query +** +** ^This function causes any pending database operation to abort and +** return at its earliest opportunity. This routine is typically +** called in response to a user action such as pressing "Cancel" +** or Ctrl-C where the user wants a long query operation to halt +** immediately. +** +** ^It is safe to call this routine from a thread different from the +** thread that is currently running the database operation. But it +** is not safe to call this routine with a [database connection] that +** is closed or might close before sqlite3_interrupt() returns. +** +** ^If an SQL operation is very nearly finished at the time when +** sqlite3_interrupt() is called, then it might not have an opportunity +** to be interrupted and might continue to completion. +** +** ^An SQL operation that is interrupted will return [SQLITE_INTERRUPT]. +** ^If the interrupted SQL operation is an INSERT, UPDATE, or DELETE +** that is inside an explicit transaction, then the entire transaction +** will be rolled back automatically. +** +** ^The sqlite3_interrupt(D) call is in effect until all currently running +** SQL statements on [database connection] D complete. ^Any new SQL statements +** that are started after the sqlite3_interrupt() call and before the +** running statements reaches zero are interrupted as if they had been +** running prior to the sqlite3_interrupt() call. ^New SQL statements +** that are started after the running statement count reaches zero are +** not effected by the sqlite3_interrupt(). +** ^A call to sqlite3_interrupt(D) that occurs when there are no running +** SQL statements is a no-op and has no effect on SQL statements +** that are started after the sqlite3_interrupt() call returns. +** +** If the database connection closes while [sqlite3_interrupt()] +** is running then bad things will likely happen. */ -const char *sqlite3_column_name(sqlite3_stmt*,int); -const void *sqlite3_column_name16(sqlite3_stmt*,int); +SQLITE_API void sqlite3_interrupt(sqlite3*); /* -** The first parameter is a compiled SQL statement. If this statement -** is a SELECT statement, the Nth column of the returned result set -** of the SELECT is a table column then the declared type of the table -** column is returned. If the Nth column of the result set is not at table -** column, then a NULL pointer is returned. The returned string is always -** UTF-8 encoded. For example, in the database schema: +** CAPI3REF: Determine If An SQL Statement Is Complete ** -** CREATE TABLE t1(c1 VARIANT); +** These routines are useful during command-line input to determine if the +** currently entered text seems to form a complete SQL statement or +** if additional input is needed before sending the text into +** SQLite for parsing. ^These routines return 1 if the input string +** appears to be a complete SQL statement. ^A statement is judged to be +** complete if it ends with a semicolon token and is not a prefix of a +** well-formed CREATE TRIGGER statement. ^Semicolons that are embedded within +** string literals or quoted identifier names or comments are not +** independent tokens (they are part of the token in which they are +** embedded) and thus do not count as a statement terminator. ^Whitespace +** and comments that follow the final semicolon are ignored. +** +** ^These routines return 0 if the statement is incomplete. ^If a +** memory allocation fails, then SQLITE_NOMEM is returned. +** +** ^These routines do not parse the SQL statements thus +** will not detect syntactically incorrect SQL. ** -** And the following statement compiled: +** ^(If SQLite has not been initialized using [sqlite3_initialize()] prior +** to invoking sqlite3_complete16() then sqlite3_initialize() is invoked +** automatically by sqlite3_complete16(). If that initialization fails, +** then the return value from sqlite3_complete16() will be non-zero +** regardless of whether or not the input SQL is complete.)^ ** -** SELECT c1 + 1, 0 FROM t1; +** The input to [sqlite3_complete()] must be a zero-terminated +** UTF-8 string. ** -** Then this routine would return the string "VARIANT" for the second -** result column (i==1), and a NULL pointer for the first result column -** (i==0). +** The input to [sqlite3_complete16()] must be a zero-terminated +** UTF-16 string in native byte order. */ -const char *sqlite3_column_decltype(sqlite3_stmt *, int i); +SQLITE_API int sqlite3_complete(const char *sql); +SQLITE_API int sqlite3_complete16(const void *sql); /* -** The first parameter is a compiled SQL statement. If this statement -** is a SELECT statement, the Nth column of the returned result set -** of the SELECT is a table column then the declared type of the table -** column is returned. If the Nth column of the result set is not at table -** column, then a NULL pointer is returned. The returned string is always -** UTF-16 encoded. For example, in the database schema: +** CAPI3REF: Register A Callback To Handle SQLITE_BUSY Errors ** -** CREATE TABLE t1(c1 INTEGER); +** ^This routine sets a callback function that might be invoked whenever +** an attempt is made to open a database table that another thread +** or process has locked. ** -** And the following statement compiled: +** ^If the busy callback is NULL, then [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED] +** is returned immediately upon encountering the lock. ^If the busy callback +** is not NULL, then the callback might be invoked with two arguments. ** -** SELECT c1 + 1, 0 FROM t1; +** ^The first argument to the busy handler is a copy of the void* pointer which +** is the third argument to sqlite3_busy_handler(). ^The second argument to +** the busy handler callback is the number of times that the busy handler has +** been invoked for this locking event. ^If the +** busy callback returns 0, then no additional attempts are made to +** access the database and [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED] is returned. +** ^If the callback returns non-zero, then another attempt +** is made to open the database for reading and the cycle repeats. ** -** Then this routine would return the string "INTEGER" for the second -** result column (i==1), and a NULL pointer for the first result column -** (i==0). -*/ -const void *sqlite3_column_decltype16(sqlite3_stmt*,int); - -/* -** After an SQL query has been compiled with a call to either -** sqlite3_prepare() or sqlite3_prepare16(), then this function must be -** called one or more times to execute the statement. +** The presence of a busy handler does not guarantee that it will be invoked +** when there is lock contention. ^If SQLite determines that invoking the busy +** handler could result in a deadlock, it will go ahead and return [SQLITE_BUSY] +** or [SQLITE_IOERR_BLOCKED] instead of invoking the busy handler. +** Consider a scenario where one process is holding a read lock that +** it is trying to promote to a reserved lock and +** a second process is holding a reserved lock that it is trying +** to promote to an exclusive lock. The first process cannot proceed +** because it is blocked by the second and the second process cannot +** proceed because it is blocked by the first. If both processes +** invoke the busy handlers, neither will make any progress. Therefore, +** SQLite returns [SQLITE_BUSY] for the first process, hoping that this +** will induce the first process to release its read lock and allow +** the second process to proceed. ** -** The return value will be either SQLITE_BUSY, SQLITE_DONE, -** SQLITE_ROW, SQLITE_ERROR, or SQLITE_MISUSE. +** ^The default busy callback is NULL. ** -** SQLITE_BUSY means that the database engine attempted to open -** a locked database and there is no busy callback registered. -** Call sqlite3_step() again to retry the open. +** ^The [SQLITE_BUSY] error is converted to [SQLITE_IOERR_BLOCKED] +** when SQLite is in the middle of a large transaction where all the +** changes will not fit into the in-memory cache. SQLite will +** already hold a RESERVED lock on the database file, but it needs +** to promote this lock to EXCLUSIVE so that it can spill cache +** pages into the database file without harm to concurrent +** readers. ^If it is unable to promote the lock, then the in-memory +** cache will be left in an inconsistent state and so the error +** code is promoted from the relatively benign [SQLITE_BUSY] to +** the more severe [SQLITE_IOERR_BLOCKED]. ^This error code promotion +** forces an automatic rollback of the changes. See the +** +** CorruptionFollowingBusyError wiki page for a discussion of why +** this is important. ** -** SQLITE_DONE means that the statement has finished executing -** successfully. sqlite3_step() should not be called again on this virtual -** machine. +** ^(There can only be a single busy handler defined for each +** [database connection]. Setting a new busy handler clears any +** previously set handler.)^ ^Note that calling [sqlite3_busy_timeout()] +** will also set or clear the busy handler. ** -** If the SQL statement being executed returns any data, then -** SQLITE_ROW is returned each time a new row of data is ready -** for processing by the caller. The values may be accessed using -** the sqlite3_column_*() functions described below. sqlite3_step() -** is called again to retrieve the next row of data. +** The busy callback should not take any actions which modify the +** database connection that invoked the busy handler. Any such actions +** result in undefined behavior. ** -** SQLITE_ERROR means that a run-time error (such as a constraint -** violation) has occurred. sqlite3_step() should not be called again on -** the VM. More information may be found by calling sqlite3_errmsg(). -** -** SQLITE_MISUSE means that the this routine was called inappropriately. -** Perhaps it was called on a virtual machine that had already been -** finalized or on one that had previously returned SQLITE_ERROR or -** SQLITE_DONE. Or it could be the case the the same database connection -** is being used simulataneously by two or more threads. +** A busy handler must not close the database connection +** or [prepared statement] that invoked the busy handler. */ -int sqlite3_step(sqlite3_stmt*); +SQLITE_API int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*); /* -** Return the number of values in the current row of the result set. +** CAPI3REF: Set A Busy Timeout +** +** ^This routine sets a [sqlite3_busy_handler | busy handler] that sleeps +** for a specified amount of time when a table is locked. ^The handler +** will sleep multiple times until at least "ms" milliseconds of sleeping +** have accumulated. ^After at least "ms" milliseconds of sleeping, +** the handler returns 0 which causes [sqlite3_step()] to return +** [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED]. +** +** ^Calling this routine with an argument less than or equal to zero +** turns off all busy handlers. ** -** After a call to sqlite3_step() that returns SQLITE_ROW, this routine -** will return the same value as the sqlite3_column_count() function. -** After sqlite3_step() has returned an SQLITE_DONE, SQLITE_BUSY or -** error code, or before sqlite3_step() has been called on a -** compiled SQL statement, this routine returns zero. +** ^(There can only be a single busy handler for a particular +** [database connection] any any given moment. If another busy handler +** was defined (using [sqlite3_busy_handler()]) prior to calling +** this routine, that other busy handler is cleared.)^ */ -int sqlite3_data_count(sqlite3_stmt *pStmt); +SQLITE_API int sqlite3_busy_timeout(sqlite3*, int ms); /* -** Values are stored in the database in one of the following fundamental -** types. +** CAPI3REF: Convenience Routines For Running Queries +** +** Definition: A result table is memory data structure created by the +** [sqlite3_get_table()] interface. A result table records the +** complete query results from one or more queries. +** +** The table conceptually has a number of rows and columns. But +** these numbers are not part of the result table itself. These +** numbers are obtained separately. Let N be the number of rows +** and M be the number of columns. +** +** A result table is an array of pointers to zero-terminated UTF-8 strings. +** There are (N+1)*M elements in the array. The first M pointers point +** to zero-terminated strings that contain the names of the columns. +** The remaining entries all point to query results. NULL values result +** in NULL pointers. All other values are in their UTF-8 zero-terminated +** string representation as returned by [sqlite3_column_text()]. +** +** A result table might consist of one or more memory allocations. +** It is not safe to pass a result table directly to [sqlite3_free()]. +** A result table should be deallocated using [sqlite3_free_table()]. +** +** As an example of the result table format, suppose a query result +** is as follows: +** +**
+**        Name        | Age
+**        -----------------------
+**        Alice       | 43
+**        Bob         | 28
+**        Cindy       | 21
+** 
+** +** There are two column (M==2) and three rows (N==3). Thus the +** result table has 8 entries. Suppose the result table is stored +** in an array names azResult. Then azResult holds this content: +** +**
+**        azResult[0] = "Name";
+**        azResult[1] = "Age";
+**        azResult[2] = "Alice";
+**        azResult[3] = "43";
+**        azResult[4] = "Bob";
+**        azResult[5] = "28";
+**        azResult[6] = "Cindy";
+**        azResult[7] = "21";
+** 
+** +** ^The sqlite3_get_table() function evaluates one or more +** semicolon-separated SQL statements in the zero-terminated UTF-8 +** string of its 2nd parameter and returns a result table to the +** pointer given in its 3rd parameter. +** +** After the application has finished with the result from sqlite3_get_table(), +** it should pass the result table pointer to sqlite3_free_table() in order to +** release the memory that was malloced. Because of the way the +** [sqlite3_malloc()] happens within sqlite3_get_table(), the calling +** function must not try to call [sqlite3_free()] directly. Only +** [sqlite3_free_table()] is able to release the memory properly and safely. +** +** ^(The sqlite3_get_table() interface is implemented as a wrapper around +** [sqlite3_exec()]. The sqlite3_get_table() routine does not have access +** to any internal data structures of SQLite. It uses only the public +** interface defined here. As a consequence, errors that occur in the +** wrapper layer outside of the internal [sqlite3_exec()] call are not +** reflected in subsequent calls to [sqlite3_errcode()] or +** [sqlite3_errmsg()].)^ +*/ +SQLITE_API int sqlite3_get_table( + sqlite3 *db, /* An open database */ + const char *zSql, /* SQL to be evaluated */ + char ***pazResult, /* Results of the query */ + int *pnRow, /* Number of result rows written here */ + int *pnColumn, /* Number of result columns written here */ + char **pzErrmsg /* Error msg written here */ +); +SQLITE_API void sqlite3_free_table(char **result); + +/* +** CAPI3REF: Formatted String Printing Functions +** +** These routines are work-alikes of the "printf()" family of functions +** from the standard C library. +** +** ^The sqlite3_mprintf() and sqlite3_vmprintf() routines write their +** results into memory obtained from [sqlite3_malloc()]. +** The strings returned by these two routines should be +** released by [sqlite3_free()]. ^Both routines return a +** NULL pointer if [sqlite3_malloc()] is unable to allocate enough +** memory to hold the resulting string. +** +** ^(In sqlite3_snprintf() routine is similar to "snprintf()" from +** the standard C library. The result is written into the +** buffer supplied as the second parameter whose size is given by +** the first parameter. Note that the order of the +** first two parameters is reversed from snprintf().)^ This is an +** historical accident that cannot be fixed without breaking +** backwards compatibility. ^(Note also that sqlite3_snprintf() +** returns a pointer to its buffer instead of the number of +** characters actually written into the buffer.)^ We admit that +** the number of characters written would be a more useful return +** value but we cannot change the implementation of sqlite3_snprintf() +** now without breaking compatibility. +** +** ^As long as the buffer size is greater than zero, sqlite3_snprintf() +** guarantees that the buffer is always zero-terminated. ^The first +** parameter "n" is the total size of the buffer, including space for +** the zero terminator. So the longest string that can be completely +** written will be n-1 characters. +** +** These routines all implement some additional formatting +** options that are useful for constructing SQL statements. +** All of the usual printf() formatting options apply. In addition, there +** is are "%q", "%Q", and "%z" options. +** +** ^(The %q option works like %s in that it substitutes a null-terminated +** string from the argument list. But %q also doubles every '\'' character. +** %q is designed for use inside a string literal.)^ By doubling each '\'' +** character it escapes that character and allows it to be inserted into +** the string. +** +** For example, assume the string variable zText contains text as follows: +** +**
+**  char *zText = "It's a happy day!";
+** 
+** +** One can use this text in an SQL statement as follows: +** +**
+**  char *zSQL = sqlite3_mprintf("INSERT INTO table VALUES('%q')", zText);
+**  sqlite3_exec(db, zSQL, 0, 0, 0);
+**  sqlite3_free(zSQL);
+** 
+** +** Because the %q format string is used, the '\'' character in zText +** is escaped and the SQL generated is as follows: +** +**
+**  INSERT INTO table1 VALUES('It''s a happy day!')
+** 
+** +** This is correct. Had we used %s instead of %q, the generated SQL +** would have looked like this: +** +**
+**  INSERT INTO table1 VALUES('It's a happy day!');
+** 
+** +** This second example is an SQL syntax error. As a general rule you should +** always use %q instead of %s when inserting text into a string literal. +** +** ^(The %Q option works like %q except it also adds single quotes around +** the outside of the total string. Additionally, if the parameter in the +** argument list is a NULL pointer, %Q substitutes the text "NULL" (without +** single quotes).)^ So, for example, one could say: +** +**
+**  char *zSQL = sqlite3_mprintf("INSERT INTO table VALUES(%Q)", zText);
+**  sqlite3_exec(db, zSQL, 0, 0, 0);
+**  sqlite3_free(zSQL);
+** 
+** +** The code above will render a correct SQL statement in the zSQL +** variable even if the zText variable is a NULL pointer. +** +** ^(The "%z" formatting option works like "%s" but with the +** addition that after the string has been read and copied into +** the result, [sqlite3_free()] is called on the input string.)^ +*/ +SQLITE_API char *sqlite3_mprintf(const char*,...); +SQLITE_API char *sqlite3_vmprintf(const char*, va_list); +SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); + +/* +** CAPI3REF: Memory Allocation Subsystem +** +** The SQLite core uses these three routines for all of its own +** internal memory allocation needs. "Core" in the previous sentence +** does not include operating-system specific VFS implementation. The +** Windows VFS uses native malloc() and free() for some operations. +** +** ^The sqlite3_malloc() routine returns a pointer to a block +** of memory at least N bytes in length, where N is the parameter. +** ^If sqlite3_malloc() is unable to obtain sufficient free +** memory, it returns a NULL pointer. ^If the parameter N to +** sqlite3_malloc() is zero or negative then sqlite3_malloc() returns +** a NULL pointer. +** +** ^Calling sqlite3_free() with a pointer previously returned +** by sqlite3_malloc() or sqlite3_realloc() releases that memory so +** that it might be reused. ^The sqlite3_free() routine is +** a no-op if is called with a NULL pointer. Passing a NULL pointer +** to sqlite3_free() is harmless. After being freed, memory +** should neither be read nor written. Even reading previously freed +** memory might result in a segmentation fault or other severe error. +** Memory corruption, a segmentation fault, or other severe error +** might result if sqlite3_free() is called with a non-NULL pointer that +** was not obtained from sqlite3_malloc() or sqlite3_realloc(). +** +** ^(The sqlite3_realloc() interface attempts to resize a +** prior memory allocation to be at least N bytes, where N is the +** second parameter. The memory allocation to be resized is the first +** parameter.)^ ^ If the first parameter to sqlite3_realloc() +** is a NULL pointer then its behavior is identical to calling +** sqlite3_malloc(N) where N is the second parameter to sqlite3_realloc(). +** ^If the second parameter to sqlite3_realloc() is zero or +** negative then the behavior is exactly the same as calling +** sqlite3_free(P) where P is the first parameter to sqlite3_realloc(). +** ^sqlite3_realloc() returns a pointer to a memory allocation +** of at least N bytes in size or NULL if sufficient memory is unavailable. +** ^If M is the size of the prior allocation, then min(N,M) bytes +** of the prior allocation are copied into the beginning of buffer returned +** by sqlite3_realloc() and the prior allocation is freed. +** ^If sqlite3_realloc() returns NULL, then the prior allocation +** is not freed. +** +** ^The memory returned by sqlite3_malloc() and sqlite3_realloc() +** is always aligned to at least an 8 byte boundary. +** +** In SQLite version 3.5.0 and 3.5.1, it was possible to define +** the SQLITE_OMIT_MEMORY_ALLOCATION which would cause the built-in +** implementation of these routines to be omitted. That capability +** is no longer provided. Only built-in memory allocators can be used. +** +** The Windows OS interface layer calls +** the system malloc() and free() directly when converting +** filenames between the UTF-8 encoding used by SQLite +** and whatever filename encoding is used by the particular Windows +** installation. Memory allocation errors are detected, but +** they are reported back as [SQLITE_CANTOPEN] or +** [SQLITE_IOERR] rather than [SQLITE_NOMEM]. +** +** The pointer arguments to [sqlite3_free()] and [sqlite3_realloc()] +** must be either NULL or else pointers obtained from a prior +** invocation of [sqlite3_malloc()] or [sqlite3_realloc()] that have +** not yet been released. +** +** The application must not read or write any part of +** a block of memory after it has been released using +** [sqlite3_free()] or [sqlite3_realloc()]. +*/ +SQLITE_API void *sqlite3_malloc(int); +SQLITE_API void *sqlite3_realloc(void*, int); +SQLITE_API void sqlite3_free(void*); + +/* +** CAPI3REF: Memory Allocator Statistics +** +** SQLite provides these two interfaces for reporting on the status +** of the [sqlite3_malloc()], [sqlite3_free()], and [sqlite3_realloc()] +** routines, which form the built-in memory allocation subsystem. +** +** ^The [sqlite3_memory_used()] routine returns the number of bytes +** of memory currently outstanding (malloced but not freed). +** ^The [sqlite3_memory_highwater()] routine returns the maximum +** value of [sqlite3_memory_used()] since the high-water mark +** was last reset. ^The values returned by [sqlite3_memory_used()] and +** [sqlite3_memory_highwater()] include any overhead +** added by SQLite in its implementation of [sqlite3_malloc()], +** but not overhead added by the any underlying system library +** routines that [sqlite3_malloc()] may call. +** +** ^The memory high-water mark is reset to the current value of +** [sqlite3_memory_used()] if and only if the parameter to +** [sqlite3_memory_highwater()] is true. ^The value returned +** by [sqlite3_memory_highwater(1)] is the high-water mark +** prior to the reset. +*/ +SQLITE_API sqlite3_int64 sqlite3_memory_used(void); +SQLITE_API sqlite3_int64 sqlite3_memory_highwater(int resetFlag); + +/* +** CAPI3REF: Pseudo-Random Number Generator +** +** SQLite contains a high-quality pseudo-random number generator (PRNG) used to +** select random [ROWID | ROWIDs] when inserting new records into a table that +** already uses the largest possible [ROWID]. The PRNG is also used for +** the build-in random() and randomblob() SQL functions. This interface allows +** applications to access the same PRNG for other purposes. +** +** ^A call to this routine stores N bytes of randomness into buffer P. +** +** ^The first time this routine is invoked (either internally or by +** the application) the PRNG is seeded using randomness obtained +** from the xRandomness method of the default [sqlite3_vfs] object. +** ^On all subsequent invocations, the pseudo-randomness is generated +** internally and without recourse to the [sqlite3_vfs] xRandomness +** method. +*/ +SQLITE_API void sqlite3_randomness(int N, void *P); + +/* +** CAPI3REF: Compile-Time Authorization Callbacks +** +** ^This routine registers a authorizer callback with a particular +** [database connection], supplied in the first argument. +** ^The authorizer callback is invoked as SQL statements are being compiled +** by [sqlite3_prepare()] or its variants [sqlite3_prepare_v2()], +** [sqlite3_prepare16()] and [sqlite3_prepare16_v2()]. ^At various +** points during the compilation process, as logic is being created +** to perform various actions, the authorizer callback is invoked to +** see if those actions are allowed. ^The authorizer callback should +** return [SQLITE_OK] to allow the action, [SQLITE_IGNORE] to disallow the +** specific action but allow the SQL statement to continue to be +** compiled, or [SQLITE_DENY] to cause the entire SQL statement to be +** rejected with an error. ^If the authorizer callback returns +** any value other than [SQLITE_IGNORE], [SQLITE_OK], or [SQLITE_DENY] +** then the [sqlite3_prepare_v2()] or equivalent call that triggered +** the authorizer will fail with an error message. +** +** When the callback returns [SQLITE_OK], that means the operation +** requested is ok. ^When the callback returns [SQLITE_DENY], the +** [sqlite3_prepare_v2()] or equivalent call that triggered the +** authorizer will fail with an error message explaining that +** access is denied. +** +** ^The first parameter to the authorizer callback is a copy of the third +** parameter to the sqlite3_set_authorizer() interface. ^The second parameter +** to the callback is an integer [SQLITE_COPY | action code] that specifies +** the particular action to be authorized. ^The third through sixth parameters +** to the callback are zero-terminated strings that contain additional +** details about the action to be authorized. +** +** ^If the action code is [SQLITE_READ] +** and the callback returns [SQLITE_IGNORE] then the +** [prepared statement] statement is constructed to substitute +** a NULL value in place of the table column that would have +** been read if [SQLITE_OK] had been returned. The [SQLITE_IGNORE] +** return can be used to deny an untrusted user access to individual +** columns of a table. +** ^If the action code is [SQLITE_DELETE] and the callback returns +** [SQLITE_IGNORE] then the [DELETE] operation proceeds but the +** [truncate optimization] is disabled and all rows are deleted individually. +** +** An authorizer is used when [sqlite3_prepare | preparing] +** SQL statements from an untrusted source, to ensure that the SQL statements +** do not try to access data they are not allowed to see, or that they do not +** try to execute malicious statements that damage the database. For +** example, an application may allow a user to enter arbitrary +** SQL queries for evaluation by a database. But the application does +** not want the user to be able to make arbitrary changes to the +** database. An authorizer could then be put in place while the +** user-entered SQL is being [sqlite3_prepare | prepared] that +** disallows everything except [SELECT] statements. +** +** Applications that need to process SQL from untrusted sources +** might also consider lowering resource limits using [sqlite3_limit()] +** and limiting database size using the [max_page_count] [PRAGMA] +** in addition to using an authorizer. +** +** ^(Only a single authorizer can be in place on a database connection +** at a time. Each call to sqlite3_set_authorizer overrides the +** previous call.)^ ^Disable the authorizer by installing a NULL callback. +** The authorizer is disabled by default. +** +** The authorizer callback must not do anything that will modify +** the database connection that invoked the authorizer callback. +** Note that [sqlite3_prepare_v2()] and [sqlite3_step()] both modify their +** database connections for the meaning of "modify" in this paragraph. +** +** ^When [sqlite3_prepare_v2()] is used to prepare a statement, the +** statement might be re-prepared during [sqlite3_step()] due to a +** schema change. Hence, the application should ensure that the +** correct authorizer callback remains in place during the [sqlite3_step()]. +** +** ^Note that the authorizer callback is invoked only during +** [sqlite3_prepare()] or its variants. Authorization is not +** performed during statement evaluation in [sqlite3_step()], unless +** as stated in the previous paragraph, sqlite3_step() invokes +** sqlite3_prepare_v2() to reprepare a statement after a schema change. +*/ +SQLITE_API int sqlite3_set_authorizer( + sqlite3*, + int (*xAuth)(void*,int,const char*,const char*,const char*,const char*), + void *pUserData +); + +/* +** CAPI3REF: Authorizer Return Codes +** +** The [sqlite3_set_authorizer | authorizer callback function] must +** return either [SQLITE_OK] or one of these two constants in order +** to signal SQLite whether or not the action is permitted. See the +** [sqlite3_set_authorizer | authorizer documentation] for additional +** information. +*/ +#define SQLITE_DENY 1 /* Abort the SQL statement with an error */ +#define SQLITE_IGNORE 2 /* Don't allow access, but don't generate an error */ + +/* +** CAPI3REF: Authorizer Action Codes +** +** The [sqlite3_set_authorizer()] interface registers a callback function +** that is invoked to authorize certain SQL statement actions. The +** second parameter to the callback is an integer code that specifies +** what action is being authorized. These are the integer action codes that +** the authorizer callback may be passed. +** +** These action code values signify what kind of operation is to be +** authorized. The 3rd and 4th parameters to the authorization +** callback function will be parameters or NULL depending on which of these +** codes is used as the second parameter. ^(The 5th parameter to the +** authorizer callback is the name of the database ("main", "temp", +** etc.) if applicable.)^ ^The 6th parameter to the authorizer callback +** is the name of the inner-most trigger or view that is responsible for +** the access attempt or NULL if this access attempt is directly from +** top-level SQL code. +*/ +/******************************************* 3rd ************ 4th ***********/ +#define SQLITE_CREATE_INDEX 1 /* Index Name Table Name */ +#define SQLITE_CREATE_TABLE 2 /* Table Name NULL */ +#define SQLITE_CREATE_TEMP_INDEX 3 /* Index Name Table Name */ +#define SQLITE_CREATE_TEMP_TABLE 4 /* Table Name NULL */ +#define SQLITE_CREATE_TEMP_TRIGGER 5 /* Trigger Name Table Name */ +#define SQLITE_CREATE_TEMP_VIEW 6 /* View Name NULL */ +#define SQLITE_CREATE_TRIGGER 7 /* Trigger Name Table Name */ +#define SQLITE_CREATE_VIEW 8 /* View Name NULL */ +#define SQLITE_DELETE 9 /* Table Name NULL */ +#define SQLITE_DROP_INDEX 10 /* Index Name Table Name */ +#define SQLITE_DROP_TABLE 11 /* Table Name NULL */ +#define SQLITE_DROP_TEMP_INDEX 12 /* Index Name Table Name */ +#define SQLITE_DROP_TEMP_TABLE 13 /* Table Name NULL */ +#define SQLITE_DROP_TEMP_TRIGGER 14 /* Trigger Name Table Name */ +#define SQLITE_DROP_TEMP_VIEW 15 /* View Name NULL */ +#define SQLITE_DROP_TRIGGER 16 /* Trigger Name Table Name */ +#define SQLITE_DROP_VIEW 17 /* View Name NULL */ +#define SQLITE_INSERT 18 /* Table Name NULL */ +#define SQLITE_PRAGMA 19 /* Pragma Name 1st arg or NULL */ +#define SQLITE_READ 20 /* Table Name Column Name */ +#define SQLITE_SELECT 21 /* NULL NULL */ +#define SQLITE_TRANSACTION 22 /* Operation NULL */ +#define SQLITE_UPDATE 23 /* Table Name Column Name */ +#define SQLITE_ATTACH 24 /* Filename NULL */ +#define SQLITE_DETACH 25 /* Database Name NULL */ +#define SQLITE_ALTER_TABLE 26 /* Database Name Table Name */ +#define SQLITE_REINDEX 27 /* Index Name NULL */ +#define SQLITE_ANALYZE 28 /* Table Name NULL */ +#define SQLITE_CREATE_VTABLE 29 /* Table Name Module Name */ +#define SQLITE_DROP_VTABLE 30 /* Table Name Module Name */ +#define SQLITE_FUNCTION 31 /* NULL Function Name */ +#define SQLITE_SAVEPOINT 32 /* Operation Savepoint Name */ +#define SQLITE_COPY 0 /* No longer used */ + +/* +** CAPI3REF: Tracing And Profiling Functions +** EXPERIMENTAL +** +** These routines register callback functions that can be used for +** tracing and profiling the execution of SQL statements. +** +** ^The callback function registered by sqlite3_trace() is invoked at +** various times when an SQL statement is being run by [sqlite3_step()]. +** ^The sqlite3_trace() callback is invoked with a UTF-8 rendering of the +** SQL statement text as the statement first begins executing. +** ^(Additional sqlite3_trace() callbacks might occur +** as each triggered subprogram is entered. The callbacks for triggers +** contain a UTF-8 SQL comment that identifies the trigger.)^ +** +** ^The callback function registered by sqlite3_profile() is invoked +** as each SQL statement finishes. ^The profile callback contains +** 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 SQLITE_EXPERIMENTAL void *sqlite3_profile(sqlite3*, + void(*xProfile)(void*,const char*,sqlite3_uint64), void*); + +/* +** CAPI3REF: Query Progress Callbacks +** +** ^This routine configures a callback function - the +** progress callback - that is invoked periodically during long +** running calls to [sqlite3_exec()], [sqlite3_step()] and +** [sqlite3_get_table()]. An example use for this +** interface is to keep a GUI updated during a large query. +** +** ^If the progress callback returns non-zero, the operation is +** interrupted. This feature can be used to implement a +** "Cancel" button on a GUI progress dialog box. +** +** The progress handler must not do anything that will modify +** the database connection that invoked the progress handler. +** Note that [sqlite3_prepare_v2()] and [sqlite3_step()] both modify their +** database connections for the meaning of "modify" in this paragraph. +** +*/ +SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*); + +/* +** CAPI3REF: Opening A New Database Connection +** +** ^These routines open an SQLite database file whose name is given by the +** filename argument. ^The filename argument is interpreted as UTF-8 for +** sqlite3_open() and sqlite3_open_v2() and as UTF-16 in the native byte +** order for sqlite3_open16(). ^(A [database connection] handle is usually +** returned in *ppDb, even if an error occurs. The only exception is that +** if SQLite is unable to allocate memory to hold the [sqlite3] object, +** a NULL will be written into *ppDb instead of a pointer to the [sqlite3] +** object.)^ ^(If the database is opened (and/or created) successfully, then +** [SQLITE_OK] is returned. Otherwise an [error code] is returned.)^ ^The +** [sqlite3_errmsg()] or [sqlite3_errmsg16()] routines can be used to obtain +** an English language description of the error following a failure of any +** of the sqlite3_open() routines. +** +** ^The default encoding for the database will be UTF-8 if +** sqlite3_open() or sqlite3_open_v2() is called and +** UTF-16 in the native byte order if sqlite3_open16() is used. +** +** Whether or not an error occurs when it is opened, resources +** associated with the [database connection] handle should be released by +** passing it to [sqlite3_close()] when it is no longer required. +** +** The sqlite3_open_v2() interface works like sqlite3_open() +** except that it accepts two additional parameters for additional control +** over the new database connection. ^(The flags parameter to +** sqlite3_open_v2() can take one of +** the following three values, optionally combined with the +** [SQLITE_OPEN_NOMUTEX], [SQLITE_OPEN_FULLMUTEX], [SQLITE_OPEN_SHAREDCACHE], +** and/or [SQLITE_OPEN_PRIVATECACHE] flags:)^ +** +**
+** ^(
[SQLITE_OPEN_READONLY]
+**
The database is opened in read-only mode. If the database does not +** already exist, an error is returned.
)^ +** +** ^(
[SQLITE_OPEN_READWRITE]
+**
The database is opened for reading and writing if possible, or reading +** only if the file is write protected by the operating system. In either +** case the database must already exist, otherwise an error is returned.
)^ +** +** ^(
[SQLITE_OPEN_READWRITE] | [SQLITE_OPEN_CREATE]
+**
The database is opened for reading and writing, and is creates it if +** it does not already exist. This is the behavior that is always used for +** sqlite3_open() and sqlite3_open16().
)^ +**
+** +** If the 3rd parameter to sqlite3_open_v2() is not one of the +** combinations shown above or one of the combinations shown above combined +** with the [SQLITE_OPEN_NOMUTEX], [SQLITE_OPEN_FULLMUTEX], +** [SQLITE_OPEN_SHAREDCACHE] and/or [SQLITE_OPEN_SHAREDCACHE] flags, +** then the behavior is undefined. +** +** ^If the [SQLITE_OPEN_NOMUTEX] flag is set, then the database connection +** opens in the multi-thread [threading mode] as long as the single-thread +** mode has not been set at compile-time or start-time. ^If the +** [SQLITE_OPEN_FULLMUTEX] flag is set then the database connection opens +** in the serialized [threading mode] unless single-thread was +** previously selected at compile-time or start-time. +** ^The [SQLITE_OPEN_SHAREDCACHE] flag causes the database connection to be +** eligible to use [shared cache mode], regardless of whether or not shared +** cache is enabled using [sqlite3_enable_shared_cache()]. ^The +** [SQLITE_OPEN_PRIVATECACHE] flag causes the database connection to not +** participate in [shared cache mode] even if it is enabled. +** +** ^If the filename is ":memory:", then a private, temporary in-memory database +** is created for the connection. ^This in-memory database will vanish when +** the database connection is closed. Future versions of SQLite might +** make use of additional special filenames that begin with the ":" character. +** It is recommended that when a database filename actually does begin with +** a ":" character you should prefix the filename with a pathname such as +** "./" to avoid ambiguity. +** +** ^If the filename is an empty string, then a private, temporary +** on-disk database will be created. ^This private database will be +** automatically deleted as soon as the database connection is closed. +** +** ^The fourth parameter to sqlite3_open_v2() is the name of the +** [sqlite3_vfs] object that defines the operating system interface that +** the new database connection should use. ^If the fourth parameter is +** a NULL pointer then the default [sqlite3_vfs] object is used. +** +** Note to Windows users: The encoding used for the filename argument +** of sqlite3_open() and sqlite3_open_v2() must be UTF-8, not whatever +** codepage is currently defined. Filenames containing international +** characters must be converted to UTF-8 prior to passing them into +** sqlite3_open() or sqlite3_open_v2(). +*/ +SQLITE_API int sqlite3_open( + const char *filename, /* Database filename (UTF-8) */ + sqlite3 **ppDb /* OUT: SQLite db handle */ +); +SQLITE_API int sqlite3_open16( + const void *filename, /* Database filename (UTF-16) */ + sqlite3 **ppDb /* OUT: SQLite db handle */ +); +SQLITE_API int sqlite3_open_v2( + const char *filename, /* Database filename (UTF-8) */ + sqlite3 **ppDb, /* OUT: SQLite db handle */ + int flags, /* Flags */ + const char *zVfs /* Name of VFS module to use */ +); + +/* +** CAPI3REF: Error Codes And Messages +** +** ^The sqlite3_errcode() interface returns the numeric [result code] or +** [extended result code] for the most recent failed sqlite3_* API call +** associated with a [database connection]. If a prior API call failed +** but the most recent API call succeeded, the return value from +** sqlite3_errcode() is undefined. ^The sqlite3_extended_errcode() +** interface is the same except that it always returns the +** [extended result code] even when extended result codes are +** disabled. +** +** ^The sqlite3_errmsg() and sqlite3_errmsg16() return English-language +** text that describes the error, as either UTF-8 or UTF-16 respectively. +** ^(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 +** subsequent calls to other SQLite interface functions.)^ +** +** When the serialized [threading mode] is in use, it might be the +** case that a second error occurs on a separate thread in between +** the time of the first error and the call to these interfaces. +** When that happens, the second error will be reported since these +** interfaces always report the most recent result. To avoid +** this, each thread can obtain exclusive use of the [database connection] D +** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning +** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after +** all calls to the interfaces listed here are completed. +** +** If an interface fails with SQLITE_MISUSE, that means the interface +** was invoked incorrectly by the application. In that case, the +** error code and message may or may not be set. +*/ +SQLITE_API int sqlite3_errcode(sqlite3 *db); +SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); +SQLITE_API const char *sqlite3_errmsg(sqlite3*); +SQLITE_API const void *sqlite3_errmsg16(sqlite3*); + +/* +** CAPI3REF: SQL Statement Object +** KEYWORDS: {prepared statement} {prepared statements} +** +** An instance of this object represents a single SQL statement. +** This object is variously known as a "prepared statement" or a +** "compiled SQL statement" or simply as a "statement". +** +** The life of a statement object goes something like this: +** +**
    +**
  1. Create the object using [sqlite3_prepare_v2()] or a related +** function. +**
  2. Bind values to [host parameters] using the sqlite3_bind_*() +** interfaces. +**
  3. Run the SQL by calling [sqlite3_step()] one or more times. +**
  4. Reset the statement using [sqlite3_reset()] then go back +** to step 2. Do this zero or more times. +**
  5. Destroy the object using [sqlite3_finalize()]. +**
+** +** Refer to documentation on individual methods above for additional +** information. +*/ +typedef struct sqlite3_stmt sqlite3_stmt; + +/* +** CAPI3REF: Run-time Limits +** +** ^(This interface allows the size of various constructs to be limited +** on a connection by connection basis. The first parameter is the +** [database connection] whose limit is to be set or queried. The +** second parameter is one of the [limit categories] that define a +** class of constructs to be size limited. The third parameter is the +** new limit for that construct. The function returns the old limit.)^ +** +** ^If the new limit is a negative number, the limit is unchanged. +** ^(For the limit category of SQLITE_LIMIT_XYZ there is a +** [limits | hard upper bound] +** set by a compile-time C preprocessor macro named +** [limits | SQLITE_MAX_XYZ]. +** (The "_LIMIT_" in the name is changed to "_MAX_".))^ +** ^Attempts to increase a limit above its hard upper bound are +** silently truncated to the hard upper bound. +** +** Run-time limits are intended for use in applications that manage +** both their own internal database and also databases that are controlled +** by untrusted external sources. An example application might be a +** web browser that has its own databases for storing history and +** separate databases controlled by JavaScript applications downloaded +** off the Internet. The internal databases can be given the +** large, default limits. Databases managed by external sources can +** be given much smaller limits designed to prevent a denial of service +** attack. Developers might also want to use the [sqlite3_set_authorizer()] +** interface to further control untrusted SQL. The size of the database +** created by an untrusted script can be contained using the +** [max_page_count] [PRAGMA]. +** +** New run-time limit categories may be added in future releases. +*/ +SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal); + +/* +** CAPI3REF: Run-Time Limit Categories +** KEYWORDS: {limit category} {*limit categories} +** +** These constants define various performance limits +** that can be lowered at run-time using [sqlite3_limit()]. +** The synopsis of the meanings of the various limits is shown below. +** Additional information is available at [limits | Limits in SQLite]. +** +**
+** ^(
SQLITE_LIMIT_LENGTH
+**
The maximum size of any string or BLOB or table row.
)^ +** +** ^(
SQLITE_LIMIT_SQL_LENGTH
+**
The maximum length of an SQL statement, in bytes.
)^ +** +** ^(
SQLITE_LIMIT_COLUMN
+**
The maximum number of columns in a table definition or in the +** result set of a [SELECT] or the maximum number of columns in an index +** or in an ORDER BY or GROUP BY clause.
)^ +** +** ^(
SQLITE_LIMIT_EXPR_DEPTH
+**
The maximum depth of the parse tree on any expression.
)^ +** +** ^(
SQLITE_LIMIT_COMPOUND_SELECT
+**
The maximum number of terms in a compound SELECT statement.
)^ +** +** ^(
SQLITE_LIMIT_VDBE_OP
+**
The maximum number of instructions in a virtual machine program +** used to implement an SQL statement.
)^ +** +** ^(
SQLITE_LIMIT_FUNCTION_ARG
+**
The maximum number of arguments on a function.
)^ +** +** ^(
SQLITE_LIMIT_ATTACHED
+**
The maximum number of [ATTACH | attached databases].)^
+** +** ^(
SQLITE_LIMIT_LIKE_PATTERN_LENGTH
+**
The maximum length of the pattern argument to the [LIKE] or +** [GLOB] operators.
)^ +** +** ^(
SQLITE_LIMIT_VARIABLE_NUMBER
+**
The maximum number of variables in an SQL statement that can +** be bound.
)^ +** +** ^(
SQLITE_LIMIT_TRIGGER_DEPTH
+**
The maximum depth of recursion for triggers.
)^ +**
+*/ +#define SQLITE_LIMIT_LENGTH 0 +#define SQLITE_LIMIT_SQL_LENGTH 1 +#define SQLITE_LIMIT_COLUMN 2 +#define SQLITE_LIMIT_EXPR_DEPTH 3 +#define SQLITE_LIMIT_COMPOUND_SELECT 4 +#define SQLITE_LIMIT_VDBE_OP 5 +#define SQLITE_LIMIT_FUNCTION_ARG 6 +#define SQLITE_LIMIT_ATTACHED 7 +#define SQLITE_LIMIT_LIKE_PATTERN_LENGTH 8 +#define SQLITE_LIMIT_VARIABLE_NUMBER 9 +#define SQLITE_LIMIT_TRIGGER_DEPTH 10 + +/* +** CAPI3REF: Compiling An SQL Statement +** KEYWORDS: {SQL statement compiler} +** +** To execute an SQL query, it must first be compiled into a byte-code +** program using one of these routines. +** +** The first argument, "db", is a [database connection] obtained from a +** prior successful call to [sqlite3_open()], [sqlite3_open_v2()] or +** [sqlite3_open16()]. The database connection must not have been closed. +** +** The second argument, "zSql", is the statement to be compiled, encoded +** as either UTF-8 or UTF-16. The sqlite3_prepare() and sqlite3_prepare_v2() +** interfaces use UTF-8, and sqlite3_prepare16() and sqlite3_prepare16_v2() +** use UTF-16. +** +** ^If the nByte argument is less than zero, then zSql is read up to the +** first zero terminator. ^If nByte is non-negative, then it is the maximum +** number of bytes read from zSql. ^When nByte is non-negative, the +** zSql string ends at either the first '\000' or '\u0000' character or +** the nByte-th byte, whichever comes first. If the caller knows +** that the supplied string is nul-terminated, then there is a small +** performance advantage to be gained by passing an nByte parameter that +** is equal to the number of bytes in the input string including +** the nul-terminator bytes. +** +** ^If pzTail is not NULL then *pzTail is made to point to the first byte +** past the end of the first SQL statement in zSql. These routines only +** compile the first statement in zSql, so *pzTail is left pointing to +** what remains uncompiled. +** +** ^*ppStmt is left pointing to a compiled [prepared statement] that can be +** executed using [sqlite3_step()]. ^If there is an error, *ppStmt is set +** to NULL. ^If the input text contains no SQL (if the input is an empty +** string or a comment) then *ppStmt is set to NULL. +** The calling procedure is responsible for deleting the compiled +** SQL statement using [sqlite3_finalize()] after it has finished with it. +** ppStmt may not be NULL. +** +** ^On success, the sqlite3_prepare() family of routines return [SQLITE_OK]; +** otherwise an [error code] is returned. +** +** The sqlite3_prepare_v2() and sqlite3_prepare16_v2() interfaces are +** recommended for all new programs. The two older interfaces are retained +** for backwards compatibility, but their use is discouraged. +** ^In the "v2" interfaces, the prepared statement +** that is returned (the [sqlite3_stmt] object) contains a copy of the +** original SQL text. This causes the [sqlite3_step()] interface to +** behave differently in three ways: +** +**
    +**
  1. +** ^If the database schema changes, instead of returning [SQLITE_SCHEMA] as it +** always used to do, [sqlite3_step()] will automatically recompile the SQL +** statement and try to run it again. ^If the schema has changed in +** a way that makes the statement no longer valid, [sqlite3_step()] will still +** return [SQLITE_SCHEMA]. But unlike the legacy behavior, [SQLITE_SCHEMA] is +** now a fatal error. Calling [sqlite3_prepare_v2()] again will not make the +** error go away. Note: use [sqlite3_errmsg()] to find the text +** of the parsing error that results in an [SQLITE_SCHEMA] return. +**
  2. +** +**
  3. +** ^When an error occurs, [sqlite3_step()] will return one of the detailed +** [error codes] or [extended error codes]. ^The legacy behavior was that +** [sqlite3_step()] would only return a generic [SQLITE_ERROR] result code +** and the application would have to make a second call to [sqlite3_reset()] +** in order to find the underlying cause of the problem. With the "v2" prepare +** interfaces, the underlying reason for the error is returned immediately. +**
  4. +** +**
  5. +** ^If the value of a [parameter | host parameter] in the WHERE clause might +** change the query plan for a statement, then the statement may be +** automatically recompiled (as if there had been a schema change) on the first +** [sqlite3_step()] call following any change to the +** [sqlite3_bind_text | bindings] of the [parameter]. +**
  6. +**
+*/ +SQLITE_API int sqlite3_prepare( + sqlite3 *db, /* Database handle */ + const char *zSql, /* SQL statement, UTF-8 encoded */ + int nByte, /* Maximum length of zSql in bytes. */ + sqlite3_stmt **ppStmt, /* OUT: Statement handle */ + const char **pzTail /* OUT: Pointer to unused portion of zSql */ +); +SQLITE_API int sqlite3_prepare_v2( + sqlite3 *db, /* Database handle */ + const char *zSql, /* SQL statement, UTF-8 encoded */ + int nByte, /* Maximum length of zSql in bytes. */ + sqlite3_stmt **ppStmt, /* OUT: Statement handle */ + const char **pzTail /* OUT: Pointer to unused portion of zSql */ +); +SQLITE_API int sqlite3_prepare16( + sqlite3 *db, /* Database handle */ + const void *zSql, /* SQL statement, UTF-16 encoded */ + int nByte, /* Maximum length of zSql in bytes. */ + sqlite3_stmt **ppStmt, /* OUT: Statement handle */ + const void **pzTail /* OUT: Pointer to unused portion of zSql */ +); +SQLITE_API int sqlite3_prepare16_v2( + sqlite3 *db, /* Database handle */ + const void *zSql, /* SQL statement, UTF-16 encoded */ + int nByte, /* Maximum length of zSql in bytes. */ + sqlite3_stmt **ppStmt, /* OUT: Statement handle */ + const void **pzTail /* OUT: Pointer to unused portion of zSql */ +); + +/* +** CAPI3REF: Retrieving Statement SQL +** +** ^This interface can be used to retrieve a saved copy of the original +** SQL text used to create a [prepared statement] if that statement was +** compiled using either [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()]. +*/ +SQLITE_API const char *sqlite3_sql(sqlite3_stmt *pStmt); + +/* +** CAPI3REF: Dynamically Typed Value Object +** KEYWORDS: {protected sqlite3_value} {unprotected sqlite3_value} +** +** SQLite uses the sqlite3_value object to represent all values +** that can be stored in a database table. SQLite uses dynamic typing +** for the values it stores. ^Values stored in sqlite3_value objects +** can be integers, floating point values, strings, BLOBs, or NULL. +** +** An sqlite3_value object may be either "protected" or "unprotected". +** Some interfaces require a protected sqlite3_value. Other interfaces +** will accept either a protected or an unprotected sqlite3_value. +** Every interface that accepts sqlite3_value arguments specifies +** whether or not it requires a protected sqlite3_value. +** +** The terms "protected" and "unprotected" refer to whether or not +** a mutex is held. A internal mutex is held for a protected +** sqlite3_value object but no mutex is held for an unprotected +** sqlite3_value object. If SQLite is compiled to be single-threaded +** (with [SQLITE_THREADSAFE=0] and with [sqlite3_threadsafe()] returning 0) +** or if SQLite is run in one of reduced mutex modes +** [SQLITE_CONFIG_SINGLETHREAD] or [SQLITE_CONFIG_MULTITHREAD] +** then there is no distinction between protected and unprotected +** sqlite3_value objects and they can be used interchangeably. However, +** for maximum code portability it is recommended that applications +** still make the distinction between between protected and unprotected +** sqlite3_value objects even when not strictly required. +** +** ^The sqlite3_value objects that are passed as parameters into the +** implementation of [application-defined SQL functions] are protected. +** ^The sqlite3_value object returned by +** [sqlite3_column_value()] is unprotected. +** Unprotected sqlite3_value objects may only be used with +** [sqlite3_result_value()] and [sqlite3_bind_value()]. +** The [sqlite3_value_blob | sqlite3_value_type()] family of +** interfaces require protected sqlite3_value objects. +*/ +typedef struct Mem sqlite3_value; + +/* +** CAPI3REF: SQL Function Context Object +** +** The context in which an SQL function executes is stored in an +** sqlite3_context object. ^A pointer to an sqlite3_context object +** is always first parameter to [application-defined SQL functions]. +** The application-defined SQL function implementation will pass this +** pointer through into calls to [sqlite3_result_int | sqlite3_result()], +** [sqlite3_aggregate_context()], [sqlite3_user_data()], +** [sqlite3_context_db_handle()], [sqlite3_get_auxdata()], +** and/or [sqlite3_set_auxdata()]. +*/ +typedef struct sqlite3_context sqlite3_context; + +/* +** CAPI3REF: Binding Values To Prepared Statements +** KEYWORDS: {host parameter} {host parameters} {host parameter name} +** KEYWORDS: {SQL parameter} {SQL parameters} {parameter binding} +** +** ^(In the SQL statement text input to [sqlite3_prepare_v2()] and its variants, +** literals may be replaced by a [parameter] that matches one of following +** templates: +** +**
    +**
  • ? +**
  • ?NNN +**
  • :VVV +**
  • @VVV +**
  • $VVV +**
+** +** In the templates above, NNN represents an integer literal, +** and VVV represents an alphanumeric identifer.)^ ^The values of these +** parameters (also called "host parameter names" or "SQL parameters") +** can be set using the sqlite3_bind_*() routines defined here. +** +** ^The first argument to the sqlite3_bind_*() routines is always +** a pointer to the [sqlite3_stmt] object returned from +** [sqlite3_prepare_v2()] or its variants. +** +** ^The second argument is the index of the SQL parameter to be set. +** ^The leftmost SQL parameter has an index of 1. ^When the same named +** SQL parameter is used more than once, second and subsequent +** occurrences have the same index as the first occurrence. +** ^The index for named parameters can be looked up using the +** [sqlite3_bind_parameter_index()] API if desired. ^The index +** for "?NNN" parameters is the value of NNN. +** ^The NNN value must be between 1 and the [sqlite3_limit()] +** parameter [SQLITE_LIMIT_VARIABLE_NUMBER] (default value: 999). +** +** ^The third argument is the value to bind to the parameter. +** +** ^(In those routines that have a fourth argument, its value is the +** number of bytes in the parameter. To be clear: the value is the +** number of bytes in the value, not the number of characters.)^ +** ^If the fourth parameter is negative, the length of the string is +** the number of bytes up to the first zero terminator. +** +** ^The fifth argument to sqlite3_bind_blob(), sqlite3_bind_text(), and +** sqlite3_bind_text16() is a destructor used to dispose of the BLOB or +** string after SQLite has finished with it. ^If the fifth argument is +** the special value [SQLITE_STATIC], then SQLite assumes that the +** information is in static, unmanaged space and does not need to be freed. +** ^If the fifth argument has the value [SQLITE_TRANSIENT], then +** SQLite makes its own private copy of the data immediately, before +** the sqlite3_bind_*() routine returns. +** +** ^The sqlite3_bind_zeroblob() routine binds a BLOB of length N that +** is filled with zeroes. ^A zeroblob uses a fixed amount of memory +** (just an integer to hold its size) while it is being processed. +** Zeroblobs are intended to serve as placeholders for BLOBs whose +** content is later written using +** [sqlite3_blob_open | incremental BLOB I/O] routines. +** ^A negative value for the zeroblob results in a zero-length BLOB. +** +** ^If any of the sqlite3_bind_*() routines are called with a NULL pointer +** for the [prepared statement] or with a prepared statement for which +** [sqlite3_step()] has been called more recently than [sqlite3_reset()], +** then the call will return [SQLITE_MISUSE]. If any sqlite3_bind_() +** routine is passed a [prepared statement] that has been finalized, the +** result is undefined and probably harmful. +** +** ^Bindings are not cleared by the [sqlite3_reset()] routine. +** ^Unbound parameters are interpreted as NULL. +** +** ^The sqlite3_bind_* routines return [SQLITE_OK] on success or an +** [error code] if anything goes wrong. +** ^[SQLITE_RANGE] is returned if the parameter +** index is out of range. ^[SQLITE_NOMEM] is returned if malloc() fails. +** +** See also: [sqlite3_bind_parameter_count()], +** [sqlite3_bind_parameter_name()], and [sqlite3_bind_parameter_index()]. +*/ +SQLITE_API int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*)); +SQLITE_API int sqlite3_bind_double(sqlite3_stmt*, int, double); +SQLITE_API int sqlite3_bind_int(sqlite3_stmt*, int, int); +SQLITE_API int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite3_int64); +SQLITE_API int sqlite3_bind_null(sqlite3_stmt*, int); +SQLITE_API int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*)); +SQLITE_API int sqlite3_bind_text16(sqlite3_stmt*, int, const void*, int, void(*)(void*)); +SQLITE_API int sqlite3_bind_value(sqlite3_stmt*, int, const sqlite3_value*); +SQLITE_API int sqlite3_bind_zeroblob(sqlite3_stmt*, int, int n); + +/* +** CAPI3REF: Number Of SQL Parameters +** +** ^This routine can be used to find the number of [SQL parameters] +** in a [prepared statement]. SQL parameters are tokens of the +** form "?", "?NNN", ":AAA", "$AAA", or "@AAA" that serve as +** placeholders for values that are [sqlite3_bind_blob | bound] +** to the parameters at a later time. +** +** ^(This routine actually returns the index of the largest (rightmost) +** parameter. For all forms except ?NNN, this will correspond to the +** number of unique parameters. If parameters of the ?NNN form are used, +** there may be gaps in the list.)^ +** +** See also: [sqlite3_bind_blob|sqlite3_bind()], +** [sqlite3_bind_parameter_name()], and +** [sqlite3_bind_parameter_index()]. +*/ +SQLITE_API int sqlite3_bind_parameter_count(sqlite3_stmt*); + +/* +** CAPI3REF: Name Of A Host Parameter +** +** ^The sqlite3_bind_parameter_name(P,N) interface returns +** the name of the N-th [SQL parameter] in the [prepared statement] P. +** ^(SQL parameters of the form "?NNN" or ":AAA" or "@AAA" or "$AAA" +** have a name which is the string "?NNN" or ":AAA" or "@AAA" or "$AAA" +** respectively. +** In other words, the initial ":" or "$" or "@" or "?" +** is included as part of the name.)^ +** ^Parameters of the form "?" without a following integer have no name +** and are referred to as "nameless" or "anonymous parameters". +** +** ^The first host parameter has an index of 1, not 0. +** +** ^If the value N is out of range or if the N-th parameter is +** nameless, then NULL is returned. ^The returned string is +** always in UTF-8 encoding even if the named parameter was +** originally specified as UTF-16 in [sqlite3_prepare16()] or +** [sqlite3_prepare16_v2()]. +** +** See also: [sqlite3_bind_blob|sqlite3_bind()], +** [sqlite3_bind_parameter_count()], and +** [sqlite3_bind_parameter_index()]. +*/ +SQLITE_API const char *sqlite3_bind_parameter_name(sqlite3_stmt*, int); + +/* +** CAPI3REF: Index Of A Parameter With A Given Name +** +** ^Return the index of an SQL parameter given its name. ^The +** index value returned is suitable for use as the second +** parameter to [sqlite3_bind_blob|sqlite3_bind()]. ^A zero +** is returned if no matching parameter is found. ^The parameter +** name must be given in UTF-8 even if the original statement +** was prepared from UTF-16 text using [sqlite3_prepare16_v2()]. +** +** See also: [sqlite3_bind_blob|sqlite3_bind()], +** [sqlite3_bind_parameter_count()], and +** [sqlite3_bind_parameter_index()]. +*/ +SQLITE_API int sqlite3_bind_parameter_index(sqlite3_stmt*, const char *zName); + +/* +** CAPI3REF: Reset All Bindings On A Prepared Statement +** +** ^Contrary to the intuition of many, [sqlite3_reset()] does not reset +** the [sqlite3_bind_blob | bindings] on a [prepared statement]. +** ^Use this routine to reset all host parameters to NULL. +*/ +SQLITE_API int sqlite3_clear_bindings(sqlite3_stmt*); + +/* +** CAPI3REF: Number Of Columns In A Result Set +** +** ^Return the number of columns in the result set returned by the +** [prepared statement]. ^This routine returns 0 if pStmt is an SQL +** statement that does not return data (for example an [UPDATE]). +*/ +SQLITE_API int sqlite3_column_count(sqlite3_stmt *pStmt); + +/* +** CAPI3REF: Column Names In A Result Set +** +** ^These routines return the name assigned to a particular column +** in the result set of a [SELECT] statement. ^The sqlite3_column_name() +** interface returns a pointer to a zero-terminated UTF-8 string +** and sqlite3_column_name16() returns a pointer to a zero-terminated +** UTF-16 string. ^The first parameter is the [prepared statement] +** that implements the [SELECT] statement. ^The second parameter is the +** column number. ^The leftmost column is number 0. +** +** ^The returned string pointer is valid until either the [prepared statement] +** is destroyed by [sqlite3_finalize()] or until the next call to +** sqlite3_column_name() or sqlite3_column_name16() on the same column. +** +** ^If sqlite3_malloc() fails during the processing of either routine +** (for example during a conversion from UTF-8 to UTF-16) then a +** NULL pointer is returned. +** +** ^The name of a result column is the value of the "AS" clause for +** that column, if there is an AS clause. If there is no AS clause +** then the name of the column is unspecified and may change from +** one release of SQLite to the next. +*/ +SQLITE_API const char *sqlite3_column_name(sqlite3_stmt*, int N); +SQLITE_API const void *sqlite3_column_name16(sqlite3_stmt*, int N); + +/* +** CAPI3REF: Source Of Data In A Query Result +** +** ^These routines provide a means to determine the database, table, and +** table column that is the origin of a particular result column in +** [SELECT] statement. +** ^The name of the database or table or column can be returned as +** either a UTF-8 or UTF-16 string. ^The _database_ routines return +** the database name, the _table_ routines return the table name, and +** the origin_ routines return the column name. +** ^The returned string is valid until the [prepared statement] is destroyed +** using [sqlite3_finalize()] or until the same information is requested +** again in a different encoding. +** +** ^The names returned are the original un-aliased names of the +** database, table, and column. +** +** ^The first argument to these interfaces is a [prepared statement]. +** ^These functions return information about the Nth result column returned by +** the statement, where N is the second function argument. +** ^The left-most column is column 0 for these routines. +** +** ^If the Nth column returned by the statement is an expression or +** subquery and is not a column value, then all of these functions return +** NULL. ^These routine might also return NULL if a memory allocation error +** occurs. ^Otherwise, they return the name of the attached database, table, +** or column that query result column was extracted from. +** +** ^As with all other SQLite APIs, those whose names end with "16" return +** UTF-16 encoded strings and the other functions return UTF-8. +** +** ^These APIs are only available if the library was compiled with the +** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. +** +** If two or more threads call one or more of these routines against the same +** prepared statement and column at the same time then the results are +** undefined. +** +** If two or more threads call one or more +** [sqlite3_column_database_name | column metadata interfaces] +** for the same [prepared statement] and result column +** at the same time then the results are undefined. +*/ +SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); +SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); +SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); +SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); +SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); +SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int); + +/* +** CAPI3REF: Declared Datatype Of A Query Result +** +** ^(The first parameter is a [prepared statement]. +** If this statement is a [SELECT] statement and the Nth column of the +** returned result set of that [SELECT] is a table column (not an +** expression or subquery) then the declared type of the table +** column is returned.)^ ^If the Nth column of the result set is an +** expression or subquery, then a NULL pointer is returned. +** ^The returned string is always UTF-8 encoded. +** +** ^(For example, given the database schema: +** +** CREATE TABLE t1(c1 VARIANT); +** +** and the following statement to be compiled: +** +** SELECT c1 + 1, c1 FROM t1; +** +** this routine would return the string "VARIANT" for the second result +** column (i==1), and a NULL pointer for the first result column (i==0).)^ +** +** ^SQLite uses dynamic run-time typing. ^So just because a column +** is declared to contain a particular type does not mean that the +** data stored in that column is of the declared type. SQLite is +** strongly typed, but the typing is dynamic not static. ^Type +** is associated with individual values, not with the containers +** used to hold those values. +*/ +SQLITE_API const char *sqlite3_column_decltype(sqlite3_stmt*,int); +SQLITE_API const void *sqlite3_column_decltype16(sqlite3_stmt*,int); + +/* +** CAPI3REF: Evaluate An SQL Statement +** +** After a [prepared statement] has been prepared using either +** [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()] or one of the legacy +** interfaces [sqlite3_prepare()] or [sqlite3_prepare16()], this function +** must be called one or more times to evaluate the statement. +** +** The details of the behavior of the sqlite3_step() interface depend +** on whether the statement was prepared using the newer "v2" interface +** [sqlite3_prepare_v2()] and [sqlite3_prepare16_v2()] or the older legacy +** interface [sqlite3_prepare()] and [sqlite3_prepare16()]. The use of the +** new "v2" interface is recommended for new applications but the legacy +** interface will continue to be supported. +** +** ^In the legacy interface, the return value will be either [SQLITE_BUSY], +** [SQLITE_DONE], [SQLITE_ROW], [SQLITE_ERROR], or [SQLITE_MISUSE]. +** ^With the "v2" interface, any of the other [result codes] or +** [extended result codes] might be returned as well. +** +** ^[SQLITE_BUSY] means that the database engine was unable to acquire the +** database locks it needs to do its job. ^If the statement is a [COMMIT] +** or occurs outside of an explicit transaction, then you can retry the +** statement. If the statement is not a [COMMIT] and occurs within a +** explicit transaction then you should rollback the transaction before +** continuing. +** +** ^[SQLITE_DONE] means that the statement has finished executing +** successfully. sqlite3_step() should not be called again on this virtual +** machine without first calling [sqlite3_reset()] to reset the virtual +** machine back to its initial state. +** +** ^If the SQL statement being executed returns any data, then [SQLITE_ROW] +** is returned each time a new row of data is ready for processing by the +** caller. The values may be accessed using the [column access functions]. +** sqlite3_step() is called again to retrieve the next row of data. +** +** ^[SQLITE_ERROR] means that a run-time error (such as a constraint +** violation) has occurred. sqlite3_step() should not be called again on +** the VM. More information may be found by calling [sqlite3_errmsg()]. +** ^With the legacy interface, a more specific error code (for example, +** [SQLITE_INTERRUPT], [SQLITE_SCHEMA], [SQLITE_CORRUPT], and so forth) +** can be obtained by calling [sqlite3_reset()] on the +** [prepared statement]. ^In the "v2" interface, +** the more specific error code is returned directly by sqlite3_step(). +** +** [SQLITE_MISUSE] means that the this routine was called inappropriately. +** Perhaps it was called on a [prepared statement] that has +** already been [sqlite3_finalize | finalized] or on one that had +** previously returned [SQLITE_ERROR] or [SQLITE_DONE]. Or it could +** be the case that the same database connection is being used by two or +** more threads at the same moment in time. +** +** Goofy Interface Alert: 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 +** [sqlite3_reset()] or [sqlite3_finalize()] in order to find one of the +** specific [error codes] that better describes the error. +** We admit that this is a goofy design. The problem has been fixed +** with the "v2" interface. If you prepare all of your SQL statements +** using either [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()] instead +** of the legacy [sqlite3_prepare()] and [sqlite3_prepare16()] interfaces, +** then the more specific [error codes] are returned directly +** by sqlite3_step(). The use of the "v2" interface is recommended. +*/ +SQLITE_API int sqlite3_step(sqlite3_stmt*); + +/* +** CAPI3REF: Number of columns in a result set +** +** ^The sqlite3_data_count(P) the number of columns in the +** of the result set of [prepared statement] P. +*/ +SQLITE_API int sqlite3_data_count(sqlite3_stmt *pStmt); + +/* +** CAPI3REF: Fundamental Datatypes +** KEYWORDS: SQLITE_TEXT +** +** ^(Every value in SQLite has one of five fundamental datatypes: +** +**
    +**
  • 64-bit signed integer +**
  • 64-bit IEEE floating point number +**
  • string +**
  • BLOB +**
  • NULL +**
)^ +** +** These constants are codes for each of those types. +** +** Note that the SQLITE_TEXT constant was also used in SQLite version 2 +** for a completely different meaning. Software that links against both +** SQLite version 2 and SQLite version 3 should use SQLITE3_TEXT, not +** SQLITE_TEXT. +*/ +#define SQLITE_INTEGER 1 +#define SQLITE_FLOAT 2 +#define SQLITE_BLOB 4 +#define SQLITE_NULL 5 +#ifdef SQLITE_TEXT +# undef SQLITE_TEXT +#else +# define SQLITE_TEXT 3 +#endif +#define SQLITE3_TEXT 3 + +/* +** CAPI3REF: Result Values From A Query +** KEYWORDS: {column access functions} +** +** These routines form the "result set" interface. +** +** ^These routines return information about a single column of the current +** result row of a query. ^In every case the first argument is a pointer +** to the [prepared statement] that is being evaluated (the [sqlite3_stmt*] +** that was returned from [sqlite3_prepare_v2()] or one of its variants) +** and the second argument is the index of the column for which information +** should be returned. ^The leftmost column of the result set has the index 0. +** ^The number of columns in the result can be determined using +** [sqlite3_column_count()]. +** +** If the SQL statement does not currently point to a valid row, or if the +** column index is out of range, the result is undefined. +** These routines may only be called when the most recent call to +** [sqlite3_step()] has returned [SQLITE_ROW] and neither +** [sqlite3_reset()] nor [sqlite3_finalize()] have been called subsequently. +** If any of these routines are called after [sqlite3_reset()] or +** [sqlite3_finalize()] or after [sqlite3_step()] has returned +** something other than [SQLITE_ROW], the results are undefined. +** If [sqlite3_step()] or [sqlite3_reset()] or [sqlite3_finalize()] +** are called from a different thread while any of these routines +** are pending, then the results are undefined. +** +** ^The sqlite3_column_type() routine returns the +** [SQLITE_INTEGER | datatype code] for the initial data type +** of the result column. ^The returned value is one of [SQLITE_INTEGER], +** [SQLITE_FLOAT], [SQLITE_TEXT], [SQLITE_BLOB], or [SQLITE_NULL]. The value +** returned by sqlite3_column_type() is only meaningful if no type +** conversions have occurred as described below. After a type conversion, +** the value returned by sqlite3_column_type() is undefined. Future +** versions of SQLite may change the behavior of sqlite3_column_type() +** following a type conversion. +** +** ^If the result is a BLOB or UTF-8 string then the sqlite3_column_bytes() +** routine returns the number of bytes in that BLOB or string. +** ^If the result is a UTF-16 string, then sqlite3_column_bytes() converts +** the string to UTF-8 and then returns the number of bytes. +** ^If the result is a numeric value then sqlite3_column_bytes() uses +** [sqlite3_snprintf()] to convert that value to a UTF-8 string and returns +** the number of bytes in that string. +** ^The value returned does not include the zero terminator at the end +** of the string. ^For clarity: the value returned is the number of +** bytes in the string, not the number of characters. +** +** ^Strings returned by sqlite3_column_text() and sqlite3_column_text16(), +** even empty strings, are always zero terminated. ^The return +** value from sqlite3_column_blob() for a zero-length BLOB is an arbitrary +** pointer, possibly even a NULL pointer. +** +** ^The sqlite3_column_bytes16() routine is similar to sqlite3_column_bytes() +** but leaves the result in UTF-16 in native byte order instead of UTF-8. +** ^The zero terminator is not included in this count. +** +** ^The object returned by [sqlite3_column_value()] is an +** [unprotected sqlite3_value] object. An unprotected sqlite3_value object +** may only be used with [sqlite3_bind_value()] and [sqlite3_result_value()]. +** If the [unprotected sqlite3_value] object returned by +** [sqlite3_column_value()] is used in any other way, including calls +** to routines like [sqlite3_value_int()], [sqlite3_value_text()], +** or [sqlite3_value_bytes()], then the behavior is undefined. +** +** These routines attempt to convert the value where appropriate. ^For +** example, if the internal representation is FLOAT and a text result +** is requested, [sqlite3_snprintf()] is used internally to perform the +** conversion automatically. ^(The following table details the conversions +** that are applied: +** +**
+** +**
Internal
Type
Requested
Type
Conversion +** +**
NULL INTEGER Result is 0 +**
NULL FLOAT Result is 0.0 +**
NULL TEXT Result is NULL pointer +**
NULL BLOB Result is NULL pointer +**
INTEGER FLOAT Convert from integer to float +**
INTEGER TEXT ASCII rendering of the integer +**
INTEGER BLOB Same as INTEGER->TEXT +**
FLOAT INTEGER Convert from float to integer +**
FLOAT TEXT ASCII rendering of the float +**
FLOAT BLOB Same as FLOAT->TEXT +**
TEXT INTEGER Use atoi() +**
TEXT FLOAT Use atof() +**
TEXT BLOB No change +**
BLOB INTEGER Convert to TEXT then use atoi() +**
BLOB FLOAT Convert to TEXT then use atof() +**
BLOB TEXT Add a zero terminator if needed +**
+**
)^ +** +** The table above makes reference to standard C library functions atoi() +** and atof(). SQLite does not really use these functions. It has its +** own equivalent internal routines. The atoi() and atof() names are +** used in the table for brevity and because they are familiar to most +** C programmers. +** +** ^Note that when type conversions occur, pointers returned by prior +** calls to sqlite3_column_blob(), sqlite3_column_text(), and/or +** sqlite3_column_text16() may be invalidated. +** ^(Type conversions and pointer invalidations might occur +** in the following cases: +** +**
    +**
  • The initial content is a BLOB and sqlite3_column_text() or +** sqlite3_column_text16() is called. A zero-terminator might +** need to be added to the string.
  • +**
  • The initial content is UTF-8 text and sqlite3_column_bytes16() or +** sqlite3_column_text16() is called. The content must be converted +** to UTF-16.
  • +**
  • The initial content is UTF-16 text and sqlite3_column_bytes() or +** sqlite3_column_text() is called. The content must be converted +** to UTF-8.
  • +**
)^ +** +** ^Conversions between UTF-16be and UTF-16le are always done in place and do +** not invalidate a prior pointer, though of course the content of the buffer +** that the prior pointer points to will have been modified. Other kinds +** of conversion are done in place when it is possible, but sometimes they +** are not possible and in those cases prior pointers are invalidated. +** +** ^(The safest and easiest to remember policy is to invoke these routines +** in one of the following ways: +** +**
    +**
  • sqlite3_column_text() followed by sqlite3_column_bytes()
  • +**
  • sqlite3_column_blob() followed by sqlite3_column_bytes()
  • +**
  • sqlite3_column_text16() followed by sqlite3_column_bytes16()
  • +**
)^ +** +** In other words, you should call sqlite3_column_text(), +** sqlite3_column_blob(), or sqlite3_column_text16() first to force the result +** into the desired format, then invoke sqlite3_column_bytes() or +** sqlite3_column_bytes16() to find the size of the result. Do not mix calls +** to sqlite3_column_text() or sqlite3_column_blob() with calls to +** sqlite3_column_bytes16(), and do not mix calls to sqlite3_column_text16() +** with calls to sqlite3_column_bytes(). +** +** ^The pointers returned are valid until a type conversion occurs as +** described above, or until [sqlite3_step()] or [sqlite3_reset()] or +** [sqlite3_finalize()] is called. ^The memory space used to hold strings +** and BLOBs is freed automatically. Do not pass the pointers returned +** [sqlite3_column_blob()], [sqlite3_column_text()], etc. into +** [sqlite3_free()]. +** +** ^(If a memory allocation error occurs during the evaluation of any +** of these routines, a default value is returned. The default value +** is either the integer 0, the floating point number 0.0, or a NULL +** pointer. Subsequent calls to [sqlite3_errcode()] will return +** [SQLITE_NOMEM].)^ +*/ +SQLITE_API const void *sqlite3_column_blob(sqlite3_stmt*, int iCol); +SQLITE_API int sqlite3_column_bytes(sqlite3_stmt*, int iCol); +SQLITE_API int sqlite3_column_bytes16(sqlite3_stmt*, int iCol); +SQLITE_API double sqlite3_column_double(sqlite3_stmt*, int iCol); +SQLITE_API int sqlite3_column_int(sqlite3_stmt*, int iCol); +SQLITE_API sqlite3_int64 sqlite3_column_int64(sqlite3_stmt*, int iCol); +SQLITE_API const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol); +SQLITE_API const void *sqlite3_column_text16(sqlite3_stmt*, int iCol); +SQLITE_API int sqlite3_column_type(sqlite3_stmt*, int iCol); +SQLITE_API sqlite3_value *sqlite3_column_value(sqlite3_stmt*, int iCol); + +/* +** CAPI3REF: Destroy A Prepared Statement Object +** +** ^The sqlite3_finalize() function is called to delete a [prepared statement]. +** ^If the statement was executed successfully or not executed at all, then +** SQLITE_OK is returned. ^If execution of the statement failed then an +** [error code] or [extended error code] is returned. +** +** ^This routine can be called at any point during the execution of the +** [prepared statement]. ^If the virtual machine has not +** completed execution when this routine is called, that is like +** encountering an error or an [sqlite3_interrupt | interrupt]. +** ^Incomplete updates may be rolled back and transactions canceled, +** depending on the circumstances, and the +** [error code] returned will be [SQLITE_ABORT]. +*/ +SQLITE_API int sqlite3_finalize(sqlite3_stmt *pStmt); + +/* +** CAPI3REF: Reset A Prepared Statement Object +** +** The sqlite3_reset() function is called to reset a [prepared statement] +** object back to its initial state, ready to be re-executed. +** ^Any SQL statement variables that had values bound to them using +** the [sqlite3_bind_blob | sqlite3_bind_*() API] retain their values. +** Use [sqlite3_clear_bindings()] to reset the bindings. +** +** ^The [sqlite3_reset(S)] interface resets the [prepared statement] S +** back to the beginning of its program. +** +** ^If the most recent call to [sqlite3_step(S)] for the +** [prepared statement] S returned [SQLITE_ROW] or [SQLITE_DONE], +** or if [sqlite3_step(S)] has never before been called on S, +** then [sqlite3_reset(S)] returns [SQLITE_OK]. +** +** ^If the most recent call to [sqlite3_step(S)] for the +** [prepared statement] S indicated an error, then +** [sqlite3_reset(S)] returns an appropriate [error code]. +** +** ^The [sqlite3_reset(S)] interface does not change the values +** of any [sqlite3_bind_blob|bindings] on the [prepared statement] S. +*/ +SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt); + +/* +** CAPI3REF: Create Or Redefine SQL Functions +** KEYWORDS: {function creation routines} +** KEYWORDS: {application-defined SQL function} +** KEYWORDS: {application-defined SQL functions} +** +** ^These two functions (collectively known as "function creation routines") +** are used to add SQL functions or aggregates or to redefine the behavior +** of existing SQL functions or aggregates. The only difference between the +** two is that the second parameter, the name of the (scalar) function or +** aggregate, is encoded in UTF-8 for sqlite3_create_function() and UTF-16 +** for sqlite3_create_function16(). +** +** ^The first parameter is the [database connection] to which the SQL +** function is to be added. ^If an application uses more than one database +** connection then application-defined SQL functions must be added +** to each database connection separately. +** +** The second parameter is the name of the SQL function to be created or +** redefined. ^The length of the name is limited to 255 bytes, exclusive of +** the zero-terminator. Note that the name length limit is in bytes, not +** characters. ^Any attempt to create a function with a longer name +** will result in [SQLITE_ERROR] being returned. +** +** ^The third parameter (nArg) +** is the number of arguments that the SQL function or +** aggregate takes. ^If this parameter is -1, then the SQL function or +** aggregate may take any number of arguments between 0 and the limit +** set by [sqlite3_limit]([SQLITE_LIMIT_FUNCTION_ARG]). If the third +** parameter is less than -1 or greater than 127 then the behavior is +** undefined. +** +** The fourth parameter, eTextRep, specifies what +** [SQLITE_UTF8 | text encoding] this SQL function prefers for +** its parameters. Any SQL function implementation should be able to work +** work with UTF-8, UTF-16le, or UTF-16be. But some implementations may be +** more efficient with one encoding than another. ^An application may +** invoke sqlite3_create_function() or sqlite3_create_function16() multiple +** times with the same function but with different values of eTextRep. +** ^When multiple implementations of the same function are available, SQLite +** will pick the one that involves the least amount of data conversion. +** If there is only a single implementation which does not care what text +** encoding is used, then the fourth argument should be [SQLITE_ANY]. +** +** ^(The fifth parameter is an arbitrary pointer. The implementation of the +** function can gain access to this pointer using [sqlite3_user_data()].)^ +** +** The seventh, eighth and ninth parameters, xFunc, xStep and xFinal, are +** pointers to C-language functions that implement the SQL function or +** aggregate. ^A scalar SQL function requires an implementation of the xFunc +** callback only; NULL pointers should be passed as the xStep and xFinal +** parameters. ^An aggregate SQL function requires an implementation of xStep +** and xFinal and NULL should be passed for xFunc. ^To delete an existing +** SQL function or aggregate, pass NULL for all three function callbacks. +** +** ^It is permitted to register multiple implementations of the same +** functions with the same name but with either differing numbers of +** arguments or differing preferred text encodings. ^SQLite will use +** the implementation that most closely matches the way in which the +** SQL function is used. ^A function implementation with a non-negative +** nArg parameter is a better match than a function implementation with +** a negative nArg. ^A function where the preferred text encoding +** matches the database encoding is a better +** match than a function where the encoding is different. +** ^A function where the encoding difference is between UTF16le and UTF16be +** is a closer match than a function where the encoding difference is +** between UTF8 and UTF16. +** +** ^Built-in functions may be overloaded by new application-defined functions. +** ^The first application-defined function with a given name overrides all +** built-in functions in the same [database connection] with the same name. +** ^Subsequent application-defined functions of the same name only override +** prior application-defined functions that are an exact match for the +** number of parameters and preferred encoding. +** +** ^An application-defined function is permitted to call other +** SQLite interfaces. However, such calls must not +** close the database connection nor finalize or reset the prepared +** statement in which the function is running. +*/ +SQLITE_API int sqlite3_create_function( + sqlite3 *db, + const char *zFunctionName, + int nArg, + int eTextRep, + void *pApp, + void (*xFunc)(sqlite3_context*,int,sqlite3_value**), + void (*xStep)(sqlite3_context*,int,sqlite3_value**), + void (*xFinal)(sqlite3_context*) +); +SQLITE_API int sqlite3_create_function16( + sqlite3 *db, + const void *zFunctionName, + int nArg, + int eTextRep, + void *pApp, + void (*xFunc)(sqlite3_context*,int,sqlite3_value**), + void (*xStep)(sqlite3_context*,int,sqlite3_value**), + void (*xFinal)(sqlite3_context*) +); + +/* +** CAPI3REF: Text Encodings +** +** These constant define integer codes that represent the various +** text encodings supported by SQLite. +*/ +#define SQLITE_UTF8 1 +#define SQLITE_UTF16LE 2 +#define SQLITE_UTF16BE 3 +#define SQLITE_UTF16 4 /* Use native byte order */ +#define SQLITE_ANY 5 /* sqlite3_create_function only */ +#define SQLITE_UTF16_ALIGNED 8 /* sqlite3_create_collation only */ + +/* +** CAPI3REF: Deprecated Functions +** DEPRECATED +** +** These functions are [deprecated]. In order to maintain +** backwards compatibility with older code, these functions continue +** to be supported. However, new applications should avoid +** the use of these functions. To help encourage people to avoid +** using these functions, we are not going to tell you what they do. +*/ +#ifndef SQLITE_OMIT_DEPRECATED +SQLITE_API SQLITE_DEPRECATED int sqlite3_aggregate_count(sqlite3_context*); +SQLITE_API SQLITE_DEPRECATED int sqlite3_expired(sqlite3_stmt*); +SQLITE_API SQLITE_DEPRECATED int sqlite3_transfer_bindings(sqlite3_stmt*, sqlite3_stmt*); +SQLITE_API SQLITE_DEPRECATED int sqlite3_global_recover(void); +SQLITE_API SQLITE_DEPRECATED void sqlite3_thread_cleanup(void); +SQLITE_API SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int64,int),void*,sqlite3_int64); +#endif + +/* +** CAPI3REF: Obtaining SQL Function Parameter Values +** +** The C-language implementation of SQL functions and aggregates uses +** this set of interface routines to access the parameter values on +** the function or aggregate. +** +** The xFunc (for scalar functions) or xStep (for aggregates) parameters +** to [sqlite3_create_function()] and [sqlite3_create_function16()] +** define callbacks that implement the SQL functions and aggregates. +** The 4th parameter to these callbacks is an array of pointers to +** [protected sqlite3_value] objects. There is one [sqlite3_value] object for +** each parameter to the SQL function. These routines are used to +** extract values from the [sqlite3_value] objects. +** +** These routines work only with [protected sqlite3_value] objects. +** Any attempt to use these routines on an [unprotected sqlite3_value] +** object results in undefined behavior. +** +** ^These routines work just like the corresponding [column access functions] +** except that these routines take a single [protected sqlite3_value] object +** pointer instead of a [sqlite3_stmt*] pointer and an integer column number. +** +** ^The sqlite3_value_text16() interface extracts a UTF-16 string +** in the native byte-order of the host machine. ^The +** sqlite3_value_text16be() and sqlite3_value_text16le() interfaces +** extract UTF-16 strings as big-endian and little-endian respectively. +** +** ^(The sqlite3_value_numeric_type() interface attempts to apply +** numeric affinity to the value. This means that an attempt is +** made to convert the value to an integer or floating point. If +** such a conversion is possible without loss of information (in other +** words, if the value is a string that looks like a number) +** then the conversion is performed. Otherwise no conversion occurs. +** The [SQLITE_INTEGER | datatype] after conversion is returned.)^ +** +** Please pay particular attention to the fact that the pointer returned +** from [sqlite3_value_blob()], [sqlite3_value_text()], or +** [sqlite3_value_text16()] can be invalidated by a subsequent call to +** [sqlite3_value_bytes()], [sqlite3_value_bytes16()], [sqlite3_value_text()], +** or [sqlite3_value_text16()]. +** +** These routines must be called from the same thread as +** the SQL function that supplied the [sqlite3_value*] parameters. +*/ +SQLITE_API const void *sqlite3_value_blob(sqlite3_value*); +SQLITE_API int sqlite3_value_bytes(sqlite3_value*); +SQLITE_API int sqlite3_value_bytes16(sqlite3_value*); +SQLITE_API double sqlite3_value_double(sqlite3_value*); +SQLITE_API int sqlite3_value_int(sqlite3_value*); +SQLITE_API sqlite3_int64 sqlite3_value_int64(sqlite3_value*); +SQLITE_API const unsigned char *sqlite3_value_text(sqlite3_value*); +SQLITE_API const void *sqlite3_value_text16(sqlite3_value*); +SQLITE_API const void *sqlite3_value_text16le(sqlite3_value*); +SQLITE_API const void *sqlite3_value_text16be(sqlite3_value*); +SQLITE_API int sqlite3_value_type(sqlite3_value*); +SQLITE_API int sqlite3_value_numeric_type(sqlite3_value*); + +/* +** CAPI3REF: Obtain Aggregate Function Context +** +** Implementions of aggregate SQL functions use this +** routine to allocate memory for storing their state. +** +** ^The first time the sqlite3_aggregate_context(C,N) routine is called +** for a particular aggregate function, SQLite +** allocates N of memory, zeroes out that memory, and returns a pointer +** to the new memory. ^On second and subsequent calls to +** sqlite3_aggregate_context() for the same aggregate function instance, +** the same buffer is returned. Sqlite3_aggregate_context() is normally +** called once for each invocation of the xStep callback and then one +** last time when the xFinal callback is invoked. ^(When no rows match +** an aggregate query, the xStep() callback of the aggregate function +** implementation is never called and xFinal() is called exactly once. +** In those cases, sqlite3_aggregate_context() might be called for the +** first time from within xFinal().)^ +** +** ^The sqlite3_aggregate_context(C,N) routine returns a NULL pointer if N is +** less than or equal to zero or if a memory allocate error occurs. +** +** ^(The amount of space allocated by sqlite3_aggregate_context(C,N) is +** determined by the N parameter on first successful call. Changing the +** value of N in subsequent call to sqlite3_aggregate_context() within +** the same aggregate function instance will not resize the memory +** allocation.)^ +** +** ^SQLite automatically frees the memory allocated by +** sqlite3_aggregate_context() when the aggregate query concludes. +** +** The first parameter must be a copy of the +** [sqlite3_context | SQL function context] that is the first parameter +** to the xStep or xFinal callback routine that implements the aggregate +** function. +** +** This routine must be called from the same thread in which +** the aggregate SQL function is running. +*/ +SQLITE_API void *sqlite3_aggregate_context(sqlite3_context*, int nBytes); + +/* +** CAPI3REF: User Data For Functions +** +** ^The sqlite3_user_data() interface returns a copy of +** the pointer that was the pUserData parameter (the 5th parameter) +** of the [sqlite3_create_function()] +** and [sqlite3_create_function16()] routines that originally +** registered the application defined function. +** +** This routine must be called from the same thread in which +** the application-defined function is running. +*/ +SQLITE_API void *sqlite3_user_data(sqlite3_context*); + +/* +** CAPI3REF: Database Connection For Functions +** +** ^The sqlite3_context_db_handle() interface returns a copy of +** the pointer to the [database connection] (the 1st parameter) +** of the [sqlite3_create_function()] +** and [sqlite3_create_function16()] routines that originally +** registered the application defined function. +*/ +SQLITE_API sqlite3 *sqlite3_context_db_handle(sqlite3_context*); + +/* +** CAPI3REF: Function Auxiliary Data +** +** The following two functions may be used by scalar 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. This may +** be used, for example, to add a regular-expression matching scalar +** function. The compiled version of the regular expression is stored as +** metadata associated with the SQL value passed as the regular expression +** pattern. The compiled regular expression can be reused on multiple +** invocations of the same function so that the original pattern string +** does not need to be recompiled on each invocation. +** +** ^The sqlite3_get_auxdata() interface returns a pointer to the metadata +** associated by the sqlite3_set_auxdata() function with the Nth argument +** value to the application-defined function. ^If no metadata has been ever +** been set for the Nth argument of the function, or if the corresponding +** function parameter has changed since the meta-data was set, +** then sqlite3_get_auxdata() returns a NULL pointer. +** +** ^The sqlite3_set_auxdata() interface saves the metadata +** pointed to by its 3rd parameter as the metadata for the N-th +** argument of the application-defined function. Subsequent +** calls to sqlite3_get_auxdata() might return this data, if it has +** not been destroyed. +** ^If it is not NULL, SQLite will invoke the destructor +** function given by the 4th parameter to sqlite3_set_auxdata() on +** the metadata when the corresponding function parameter changes +** or when the SQL statement completes, whichever comes first. +** +** SQLite is free to call the destructor and drop metadata on any +** parameter of any function at any time. ^The only guarantee is that +** the destructor will be called before the metadata is dropped. +** +** ^(In practice, metadata is preserved between function calls for +** expressions that are constant at compile time. This includes literal +** values and [parameters].)^ +** +** These routines must be called from the same thread in which +** the SQL function is running. +*/ +SQLITE_API void *sqlite3_get_auxdata(sqlite3_context*, int N); +SQLITE_API void sqlite3_set_auxdata(sqlite3_context*, int N, void*, void (*)(void*)); + + +/* +** CAPI3REF: Constants Defining Special Destructor Behavior +** +** These are special values for the destructor that is passed in as the +** final argument to routines like [sqlite3_result_blob()]. ^If the destructor +** argument is SQLITE_STATIC, it means that the content pointer is constant +** and will never change. It does not need to be destroyed. ^The +** SQLITE_TRANSIENT value means that the content will likely change in +** the near future and that SQLite should make its own private copy of +** the content before returning. +** +** The typedef is necessary to work around problems in certain +** C++ compilers. See ticket #2191. +*/ +typedef void (*sqlite3_destructor_type)(void*); +#define SQLITE_STATIC ((sqlite3_destructor_type)0) +#define SQLITE_TRANSIENT ((sqlite3_destructor_type)-1) + +/* +** CAPI3REF: Setting The Result Of An SQL Function +** +** These routines are used by the xFunc or xFinal callbacks that +** implement SQL functions and aggregates. See +** [sqlite3_create_function()] and [sqlite3_create_function16()] +** for additional information. +** +** These functions work very much like the [parameter binding] family of +** functions used to bind values to host parameters in prepared statements. +** Refer to the [SQL parameter] documentation for additional information. +** +** ^The sqlite3_result_blob() interface sets the result from +** an application-defined function to be the BLOB whose content is pointed +** to by the second parameter and which is N bytes long where N is the +** third parameter. +** +** ^The sqlite3_result_zeroblob() interfaces set the result of +** the application-defined function to be a BLOB containing all zero +** bytes and N bytes in size, where N is the value of the 2nd parameter. +** +** ^The sqlite3_result_double() interface sets the result from +** an application-defined function to be a floating point value specified +** by its 2nd argument. +** +** ^The sqlite3_result_error() and sqlite3_result_error16() functions +** cause the implemented SQL function to throw an exception. +** ^SQLite uses the string pointed to by the +** 2nd parameter of sqlite3_result_error() or sqlite3_result_error16() +** as the text of an error message. ^SQLite interprets the error +** message string from sqlite3_result_error() as UTF-8. ^SQLite +** interprets the string from sqlite3_result_error16() as UTF-16 in native +** byte order. ^If the third parameter to sqlite3_result_error() +** or sqlite3_result_error16() is negative then SQLite takes as the error +** message all text up through the first zero character. +** ^If the third parameter to sqlite3_result_error() or +** sqlite3_result_error16() is non-negative then SQLite takes that many +** bytes (not characters) from the 2nd parameter as the error message. +** ^The sqlite3_result_error() and sqlite3_result_error16() +** routines make a private copy of the error message text before +** they return. Hence, the calling function can deallocate or +** modify the text after they return without harm. +** ^The sqlite3_result_error_code() function changes the error code +** returned by SQLite as a result of an error in a function. ^By default, +** the error code is SQLITE_ERROR. ^A subsequent call to sqlite3_result_error() +** or sqlite3_result_error16() resets the error code to SQLITE_ERROR. +** +** ^The sqlite3_result_toobig() interface causes SQLite to throw an error +** indicating that a string or BLOB is too long to represent. +** +** ^The sqlite3_result_nomem() interface causes SQLite to throw an error +** indicating that a memory allocation failed. +** +** ^The sqlite3_result_int() interface sets the return value +** of the application-defined function to be the 32-bit signed integer +** value given in the 2nd argument. +** ^The sqlite3_result_int64() interface sets the return value +** of the application-defined function to be the 64-bit signed integer +** value given in the 2nd argument. +** +** ^The sqlite3_result_null() interface sets the return value +** of the application-defined function to be NULL. +** +** ^The sqlite3_result_text(), sqlite3_result_text16(), +** sqlite3_result_text16le(), and sqlite3_result_text16be() interfaces +** set the return value of the application-defined function to be +** a text string which is represented as UTF-8, UTF-16 native byte order, +** UTF-16 little endian, or UTF-16 big endian, respectively. +** ^SQLite takes the text result from the application from +** the 2nd parameter of the sqlite3_result_text* interfaces. +** ^If the 3rd parameter to the sqlite3_result_text* interfaces +** is negative, then SQLite takes result text from the 2nd parameter +** through the first zero character. +** ^If the 3rd parameter to the sqlite3_result_text* interfaces +** is non-negative, then as many bytes (not characters) of the text +** pointed to by the 2nd parameter are taken as the application-defined +** function result. +** ^If the 4th parameter to the sqlite3_result_text* interfaces +** or sqlite3_result_blob is a non-NULL pointer, then SQLite calls that +** function as the destructor on the text or BLOB result when it has +** finished using that result. +** ^If the 4th parameter to the sqlite3_result_text* interfaces or to +** sqlite3_result_blob is the special constant SQLITE_STATIC, then SQLite +** assumes that the text or BLOB result is in constant space and does not +** copy the content of the parameter nor call a destructor on the content +** when it has finished using that result. +** ^If the 4th parameter to the sqlite3_result_text* interfaces +** or sqlite3_result_blob is the special constant SQLITE_TRANSIENT +** then SQLite makes a copy of the result into space obtained from +** from [sqlite3_malloc()] before it returns. +** +** ^The sqlite3_result_value() interface sets the result of +** the application-defined function to be a copy the +** [unprotected sqlite3_value] object specified by the 2nd parameter. ^The +** sqlite3_result_value() interface makes a copy of the [sqlite3_value] +** so that the [sqlite3_value] specified in the parameter may change or +** be deallocated after sqlite3_result_value() returns without harm. +** ^A [protected sqlite3_value] object may always be used where an +** [unprotected sqlite3_value] object is required, so either +** kind of [sqlite3_value] object can be used with this interface. +** +** If these routines are called from within the different thread +** than the one containing the application-defined function that received +** the [sqlite3_context] pointer, the results are undefined. +*/ +SQLITE_API void sqlite3_result_blob(sqlite3_context*, const void*, int, void(*)(void*)); +SQLITE_API void sqlite3_result_double(sqlite3_context*, double); +SQLITE_API void sqlite3_result_error(sqlite3_context*, const char*, int); +SQLITE_API void sqlite3_result_error16(sqlite3_context*, const void*, int); +SQLITE_API void sqlite3_result_error_toobig(sqlite3_context*); +SQLITE_API void sqlite3_result_error_nomem(sqlite3_context*); +SQLITE_API void sqlite3_result_error_code(sqlite3_context*, int); +SQLITE_API void sqlite3_result_int(sqlite3_context*, int); +SQLITE_API void sqlite3_result_int64(sqlite3_context*, sqlite3_int64); +SQLITE_API void sqlite3_result_null(sqlite3_context*); +SQLITE_API void sqlite3_result_text(sqlite3_context*, const char*, int, void(*)(void*)); +SQLITE_API void sqlite3_result_text16(sqlite3_context*, const void*, int, void(*)(void*)); +SQLITE_API void sqlite3_result_text16le(sqlite3_context*, const void*, int,void(*)(void*)); +SQLITE_API void sqlite3_result_text16be(sqlite3_context*, const void*, int,void(*)(void*)); +SQLITE_API void sqlite3_result_value(sqlite3_context*, sqlite3_value*); +SQLITE_API void sqlite3_result_zeroblob(sqlite3_context*, int n); + +/* +** CAPI3REF: Define New Collating Sequences +** +** These functions are used to add new collation sequences to the +** [database connection] specified as the first argument. +** +** ^The name of the new collation sequence is specified as a UTF-8 string +** for sqlite3_create_collation() and sqlite3_create_collation_v2() +** and a UTF-16 string for sqlite3_create_collation16(). ^In all cases +** the name is passed as the second function argument. +** +** ^The third argument may be one of the constants [SQLITE_UTF8], +** [SQLITE_UTF16LE], or [SQLITE_UTF16BE], indicating that the user-supplied +** routine expects to be passed pointers to strings encoded using UTF-8, +** UTF-16 little-endian, or UTF-16 big-endian, respectively. ^The +** third argument might also be [SQLITE_UTF16] to indicate that the routine +** expects pointers to be UTF-16 strings in the native byte order, or the +** argument can be [SQLITE_UTF16_ALIGNED] if the +** the routine expects pointers to 16-bit word aligned strings +** of UTF-16 in the native byte order. +** +** A pointer to the user supplied routine must be passed as the fifth +** argument. ^If it is NULL, this is the same as deleting the collation +** sequence (so that SQLite cannot call it anymore). +** ^Each time the application supplied function is invoked, it is passed +** as its first parameter a copy of the void* passed as the fourth argument +** to sqlite3_create_collation() or sqlite3_create_collation16(). +** +** ^The remaining arguments to the application-supplied routine are two strings, +** each represented by a (length, data) pair and encoded in the encoding +** that was passed as the third argument when the collation sequence was +** registered. The application defined collation routine should +** return negative, zero or positive if the first string is less than, +** equal to, or greater than the second string. i.e. (STRING1 - STRING2). +** +** ^The sqlite3_create_collation_v2() works like sqlite3_create_collation() +** except that it takes an extra argument which is a destructor for +** the collation. ^The destructor is called when the collation is +** destroyed and is passed a copy of the fourth parameter void* pointer +** of the sqlite3_create_collation_v2(). +** ^Collations are destroyed when they are overridden by later calls to the +** collation creation functions or when the [database connection] is closed +** using [sqlite3_close()]. +** +** See also: [sqlite3_collation_needed()] and [sqlite3_collation_needed16()]. +*/ +SQLITE_API int sqlite3_create_collation( + sqlite3*, + const char *zName, + int eTextRep, + void*, + int(*xCompare)(void*,int,const void*,int,const void*) +); +SQLITE_API int sqlite3_create_collation_v2( + sqlite3*, + const char *zName, + int eTextRep, + void*, + int(*xCompare)(void*,int,const void*,int,const void*), + void(*xDestroy)(void*) +); +SQLITE_API int sqlite3_create_collation16( + sqlite3*, + const void *zName, + int eTextRep, + void*, + int(*xCompare)(void*,int,const void*,int,const void*) +); + +/* +** CAPI3REF: Collation Needed Callbacks +** +** ^To avoid having to register all collation sequences before a database +** can be used, a single callback function may be registered with the +** [database connection] to be invoked whenever an undefined collation +** sequence is required. +** +** ^If the function is registered using the sqlite3_collation_needed() API, +** then it is passed the names of undefined collation sequences as strings +** encoded in UTF-8. ^If sqlite3_collation_needed16() is used, +** the names are passed as UTF-16 in machine native byte order. +** ^A call to either function replaces the existing collation-needed callback. +** +** ^(When the callback is invoked, the first argument passed is a copy +** of the second argument to sqlite3_collation_needed() or +** sqlite3_collation_needed16(). The second argument is the database +** connection. The third argument is one of [SQLITE_UTF8], [SQLITE_UTF16BE], +** or [SQLITE_UTF16LE], indicating the most desirable form of the collation +** sequence function required. The fourth parameter is the name of the +** required collation sequence.)^ +** +** The callback function should register the desired collation using +** [sqlite3_create_collation()], [sqlite3_create_collation16()], or +** [sqlite3_create_collation_v2()]. +*/ +SQLITE_API int sqlite3_collation_needed( + sqlite3*, + void*, + void(*)(void*,sqlite3*,int eTextRep,const char*) +); +SQLITE_API int sqlite3_collation_needed16( + sqlite3*, + void*, + void(*)(void*,sqlite3*,int eTextRep,const void*) +); + +#if SQLITE_HAS_CODEC +/* +** Specify the key for an encrypted database. This routine should be +** called right after sqlite3_open(). +** +** The code to implement this API is not available in the public release +** of SQLite. +*/ +SQLITE_API int sqlite3_key( + sqlite3 *db, /* Database to be rekeyed */ + const void *pKey, int nKey /* The key */ +); + +/* +** Change the key on an open database. If the current database is not +** encrypted, this routine will encrypt it. If pNew==0 or nNew==0, the +** database is decrypted. +** +** The code to implement this API is not available in the public release +** of SQLite. +*/ +SQLITE_API int sqlite3_rekey( + sqlite3 *db, /* Database to be rekeyed */ + const void *pKey, int nKey /* The new key */ +); + +/* +** Specify the activation key for a SEE database. Unless +** activated, none of the SEE routines will work. +*/ +SQLITE_API void sqlite3_activate_see( + const char *zPassPhrase /* Activation phrase */ +); +#endif + +#ifdef SQLITE_ENABLE_CEROD +/* +** Specify the activation key for a CEROD database. Unless +** activated, none of the CEROD routines will work. +*/ +SQLITE_API void sqlite3_activate_cerod( + const char *zPassPhrase /* Activation phrase */ +); +#endif + +/* +** CAPI3REF: Suspend Execution For A Short Time +** +** ^The sqlite3_sleep() function causes the current thread to suspend execution +** for at least a number of milliseconds specified in its parameter. +** +** ^If the operating system does not support sleep requests with +** millisecond time resolution, then the time will be rounded up to +** the nearest second. ^The number of milliseconds of sleep actually +** requested from the operating system is returned. +** +** ^SQLite implements this interface by calling the xSleep() +** method of the default [sqlite3_vfs] object. +*/ +SQLITE_API int sqlite3_sleep(int); + +/* +** CAPI3REF: Name Of The Folder Holding Temporary Files +** +** ^(If this global variable is made to point to a string which is +** the name of a folder (a.k.a. directory), then all temporary files +** created by SQLite when using a built-in [sqlite3_vfs | VFS] +** will be placed in that directory.)^ ^If this variable +** is a NULL pointer, then SQLite performs a search for an appropriate +** temporary file directory. +** +** It is not safe to read or modify this variable in more than one +** thread at a time. It is not safe to read or modify this variable +** if a [database connection] is being used at the same time in a separate +** thread. +** It is intended that this variable be set once +** as part of process initialization and before any SQLite interface +** routines have been called and that this variable remain unchanged +** thereafter. +** +** ^The [temp_store_directory pragma] may modify this variable and cause +** it to point to memory obtained from [sqlite3_malloc]. ^Furthermore, +** the [temp_store_directory pragma] always assumes that any string +** that this variable points to is held in memory obtained from +** [sqlite3_malloc] and the pragma may attempt to free that memory +** using [sqlite3_free]. +** Hence, if this variable is modified directly, either it should be +** made NULL or made to point to memory obtained from [sqlite3_malloc] +** or else the use of the [temp_store_directory pragma] should be avoided. +*/ +SQLITE_API SQLITE_EXTERN char *sqlite3_temp_directory; + +/* +** CAPI3REF: Test For Auto-Commit Mode +** KEYWORDS: {autocommit mode} +** +** ^The sqlite3_get_autocommit() interface returns non-zero or +** zero if the given database connection is or is not in autocommit mode, +** respectively. ^Autocommit mode is on by default. +** ^Autocommit mode is disabled by a [BEGIN] statement. +** ^Autocommit mode is re-enabled by a [COMMIT] or [ROLLBACK]. +** +** If certain kinds of errors occur on a statement within a multi-statement +** transaction (errors including [SQLITE_FULL], [SQLITE_IOERR], +** [SQLITE_NOMEM], [SQLITE_BUSY], and [SQLITE_INTERRUPT]) then the +** transaction might be rolled back automatically. The only way to +** find out whether SQLite automatically rolled back the transaction after +** an error is to use this function. +** +** If another thread changes the autocommit status of the database +** connection while this routine is running, then the return value +** is undefined. +*/ +SQLITE_API int sqlite3_get_autocommit(sqlite3*); + +/* +** CAPI3REF: Find The Database Handle Of A Prepared Statement +** +** ^The sqlite3_db_handle interface returns the [database connection] handle +** to which a [prepared statement] belongs. ^The [database connection] +** returned by sqlite3_db_handle is the same [database connection] +** that was the first argument +** to the [sqlite3_prepare_v2()] call (or its variants) that was used to +** create the statement in the first place. +*/ +SQLITE_API sqlite3 *sqlite3_db_handle(sqlite3_stmt*); + +/* +** CAPI3REF: Find the next prepared statement +** +** ^This interface returns a pointer to the next [prepared statement] after +** pStmt associated with the [database connection] pDb. ^If pStmt is NULL +** then this interface returns a pointer to the first prepared statement +** associated with the database connection pDb. ^If no prepared statement +** satisfies the conditions of this routine, it returns NULL. +** +** The [database connection] pointer D in a call to +** [sqlite3_next_stmt(D,S)] must refer to an open database +** connection and in particular must not be a NULL pointer. +*/ +SQLITE_API sqlite3_stmt *sqlite3_next_stmt(sqlite3 *pDb, sqlite3_stmt *pStmt); + +/* +** CAPI3REF: Commit And Rollback Notification Callbacks +** +** ^The sqlite3_commit_hook() interface registers a callback +** function to be invoked whenever a transaction is [COMMIT | committed]. +** ^Any callback set by a previous call to sqlite3_commit_hook() +** for the same database connection is overridden. +** ^The sqlite3_rollback_hook() interface registers a callback +** function to be invoked whenever a transaction is [ROLLBACK | rolled back]. +** ^Any callback set by a previous call to sqlite3_rollback_hook() +** for the same database connection is overridden. +** ^The pArg argument is passed through to the callback. +** ^If the callback on a commit hook function returns non-zero, +** then the commit is converted into a rollback. +** +** ^The sqlite3_commit_hook(D,C,P) and sqlite3_rollback_hook(D,C,P) functions +** return the P argument from the previous call of the same function +** on the same [database connection] D, or NULL for +** the first call for each function on D. +** +** The callback implementation must not do anything that will modify +** the database connection that invoked the callback. Any actions +** to modify the database connection must be deferred until after the +** completion of the [sqlite3_step()] call that triggered the commit +** or rollback hook in the first place. +** Note that [sqlite3_prepare_v2()] and [sqlite3_step()] both modify their +** database connections for the meaning of "modify" in this paragraph. +** +** ^Registering a NULL function disables the callback. +** +** ^When the commit hook callback routine returns zero, the [COMMIT] +** operation is allowed to continue normally. ^If the commit hook +** returns non-zero, then the [COMMIT] is converted into a [ROLLBACK]. +** ^The rollback hook is invoked on a rollback that results from a commit +** hook returning non-zero, just as it would be with any other rollback. +** +** ^For the purposes of this API, a transaction is said to have been +** rolled back if an explicit "ROLLBACK" statement is executed, or +** 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. +*/ +SQLITE_API void *sqlite3_commit_hook(sqlite3*, int(*)(void*), void*); +SQLITE_API void *sqlite3_rollback_hook(sqlite3*, void(*)(void *), void*); + +/* +** CAPI3REF: Data Change Notification Callbacks +** +** ^The sqlite3_update_hook() interface registers a callback function +** with the [database connection] identified by the first argument +** to be invoked whenever a row is updated, inserted or deleted. +** ^Any callback set by a previous call to this function +** for the same database connection is overridden. +** +** ^The second argument is a pointer to the function to invoke when a +** row is updated, inserted or deleted. +** ^The first argument to the callback is a copy of the third argument +** to sqlite3_update_hook(). +** ^The second callback argument is one of [SQLITE_INSERT], [SQLITE_DELETE], +** or [SQLITE_UPDATE], depending on the operation that caused the callback +** to be invoked. +** ^The third and fourth arguments to the callback contain pointers to the +** database and table name containing the affected row. +** ^The final callback parameter is the [rowid] of the row. +** ^In the case of an update, this is the [rowid] after the update takes place. +** +** ^(The update hook is not invoked when internal system tables are +** modified (i.e. sqlite_master and sqlite_sequence).)^ +** +** ^In the current implementation, the update hook +** is not invoked when duplication rows are deleted because of an +** [ON CONFLICT | ON CONFLICT REPLACE] clause. ^Nor is the update hook +** invoked when rows are deleted using the [truncate optimization]. +** The exceptions defined in this paragraph might change in a future +** release of SQLite. +** +** The update hook implementation must not do anything that will modify +** the database connection that invoked the update hook. Any actions +** to modify the database connection must be deferred until after the +** completion of the [sqlite3_step()] call that triggered the update hook. +** Note that [sqlite3_prepare_v2()] and [sqlite3_step()] both modify their +** database connections for the meaning of "modify" in this paragraph. +** +** ^The sqlite3_update_hook(D,C,P) function +** returns the P argument from the previous call +** on the same [database connection] D, or NULL for +** the first call on D. +** +** See also the [sqlite3_commit_hook()] and [sqlite3_rollback_hook()] +** interfaces. +*/ +SQLITE_API void *sqlite3_update_hook( + sqlite3*, + void(*)(void *,int ,char const *,char const *,sqlite3_int64), + void* +); + +/* +** CAPI3REF: Enable Or Disable Shared Pager Cache +** KEYWORDS: {shared cache} +** +** ^(This routine enables or disables the sharing of the database cache +** and schema data structures between [database connection | connections] +** to the same database. Sharing is enabled if the argument is true +** and disabled if the argument is false.)^ +** +** ^Cache sharing is enabled and disabled for an entire process. +** This is a change as of SQLite version 3.5.0. In prior versions of SQLite, +** sharing was enabled or disabled for each thread separately. +** +** ^(The cache sharing mode set by this interface effects all subsequent +** calls to [sqlite3_open()], [sqlite3_open_v2()], and [sqlite3_open16()]. +** Existing database connections continue use the sharing mode +** that was in effect at the time they were opened.)^ +** +** ^(This routine returns [SQLITE_OK] if shared cache was enabled or disabled +** successfully. An [error code] is returned otherwise.)^ +** +** ^Shared cache is disabled by default. But this might change in +** future releases of SQLite. Applications that care about shared +** cache setting should set it explicitly. +** +** See Also: [SQLite Shared-Cache Mode] +*/ +SQLITE_API int sqlite3_enable_shared_cache(int); + +/* +** CAPI3REF: Attempt To Free Heap Memory +** +** ^The sqlite3_release_memory() interface attempts to free N bytes +** of heap memory by deallocating non-essential memory allocations +** held by the database library. Memory used to cache database +** pages to improve performance is an example of non-essential memory. +** ^sqlite3_release_memory() returns the number of bytes actually freed, +** which might be more or less than the amount requested. +*/ +SQLITE_API int sqlite3_release_memory(int); + +/* +** CAPI3REF: Impose A Limit On Heap Size +** +** ^The sqlite3_soft_heap_limit() interface places a "soft" limit +** on the amount of heap memory that may be allocated by SQLite. +** ^If an internal allocation is requested that would exceed the +** soft heap limit, [sqlite3_release_memory()] is invoked one or +** more times to free up some space before the allocation is performed. +** +** ^The limit is called "soft" because if [sqlite3_release_memory()] +** cannot free sufficient memory to prevent the limit from being exceeded, +** the memory is allocated anyway and the current operation proceeds. +** +** ^A negative or zero value for N means that there is no soft heap limit and +** [sqlite3_release_memory()] will only be called when memory is exhausted. +** ^The default value for the soft heap limit is zero. +** +** ^(SQLite makes a best effort to honor the soft heap limit. +** But if the soft heap limit cannot be honored, execution will +** continue without error or notification.)^ This is why the limit is +** called a "soft" limit. It is advisory only. +** +** Prior to SQLite version 3.5.0, this routine only constrained the memory +** allocated by a single thread - the same thread in which this routine +** runs. Beginning with SQLite version 3.5.0, the soft heap limit is +** applied to all threads. The value specified for the soft heap limit +** is an upper bound on the total memory allocation for all threads. In +** version 3.5.0 there is no mechanism for limiting the heap usage for +** individual threads. +*/ +SQLITE_API void sqlite3_soft_heap_limit(int); + +/* +** CAPI3REF: Extract Metadata About A Column Of A Table +** +** ^This routine returns metadata about a specific column of a specific +** database table accessible using the [database connection] handle +** passed as the first function argument. +** +** ^The column is identified by the second, third and fourth parameters to +** this function. ^The second parameter is either the name of the database +** (i.e. "main", "temp", or an attached database) containing the specified +** table or NULL. ^If it is NULL, then all attached databases are searched +** for the table using the same algorithm used by the database engine to +** resolve unqualified table references. +** +** ^The third and fourth parameters to this function are the table and column +** name of the desired column, respectively. Neither of these parameters +** may be NULL. +** +** ^Metadata is returned by writing to the memory locations passed as the 5th +** and subsequent parameters to this function. ^Any of these arguments may be +** NULL, in which case the corresponding element of metadata is omitted. +** +** ^(
+** +**
Parameter Output
Type
Description +** +**
5th const char* Data type +**
6th const char* Name of default collation sequence +**
7th int True if column has a NOT NULL constraint +**
8th int True if column is part of the PRIMARY KEY +**
9th int True if column is [AUTOINCREMENT] +**
+**
)^ +** +** ^The memory pointed to by the character pointers returned for the +** declaration type and collation sequence is valid only until the next +** call to any SQLite API function. +** +** ^If the specified table is actually a view, an [error code] is returned. +** +** ^If the specified column is "rowid", "oid" or "_rowid_" and an +** [INTEGER PRIMARY KEY] column has been explicitly declared, then the output +** parameters are set for the explicitly declared column. ^(If there is no +** explicitly declared [INTEGER PRIMARY KEY] column, then the output +** parameters are set as follows: +** +**
+**     data type: "INTEGER"
+**     collation sequence: "BINARY"
+**     not null: 0
+**     primary key: 1
+**     auto increment: 0
+** 
)^ +** +** ^(This function may load one or more schemas from database files. If an +** error occurs during this process, or if the requested table or column +** cannot be found, an [error code] is returned and an error message left +** in the [database connection] (to be retrieved using sqlite3_errmsg()).)^ +** +** ^This API is only available if the library was compiled with the +** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol defined. +*/ +SQLITE_API int sqlite3_table_column_metadata( + sqlite3 *db, /* Connection handle */ + const char *zDbName, /* Database name or NULL */ + const char *zTableName, /* Table name */ + const char *zColumnName, /* Column name */ + char const **pzDataType, /* OUTPUT: Declared data type */ + char const **pzCollSeq, /* OUTPUT: Collation sequence name */ + int *pNotNull, /* OUTPUT: True if NOT NULL constraint exists */ + int *pPrimaryKey, /* OUTPUT: True if column part of PK */ + int *pAutoinc /* OUTPUT: True if column is auto-increment */ +); + +/* +** CAPI3REF: Load An Extension +** +** ^This interface loads an SQLite extension library from the named file. +** +** ^The sqlite3_load_extension() interface attempts to load an +** SQLite extension library contained in the file zFile. +** +** ^The entry point is zProc. +** ^zProc may be 0, in which case the name of the entry point +** defaults to "sqlite3_extension_init". +** ^The sqlite3_load_extension() interface returns +** [SQLITE_OK] on success and [SQLITE_ERROR] if something goes wrong. +** ^If an error occurs and pzErrMsg is not 0, then the +** [sqlite3_load_extension()] interface shall attempt to +** fill *pzErrMsg with error message text stored in memory +** obtained from [sqlite3_malloc()]. The calling function +** should free this memory by calling [sqlite3_free()]. +** +** ^Extension loading must be enabled using +** [sqlite3_enable_load_extension()] prior to calling this API, +** otherwise an error will be returned. +** +** See also the [load_extension() SQL function]. +*/ +SQLITE_API int sqlite3_load_extension( + sqlite3 *db, /* Load the extension into this database connection */ + const char *zFile, /* Name of the shared library containing extension */ + const char *zProc, /* Entry point. Derived from zFile if 0 */ + char **pzErrMsg /* Put error message here if not 0 */ +); + +/* +** CAPI3REF: Enable Or Disable Extension Loading +** +** ^So as not to open security holes in older applications that are +** unprepared to deal with extension loading, and as a means of disabling +** extension loading while evaluating user-entered SQL, the following API +** is provided to turn the [sqlite3_load_extension()] mechanism on and off. +** +** ^Extension loading is off by default. See ticket #1863. +** ^Call the sqlite3_enable_load_extension() routine with onoff==1 +** to turn extension loading on and call it with onoff==0 to turn +** it back off again. +*/ +SQLITE_API int sqlite3_enable_load_extension(sqlite3 *db, int onoff); + +/* +** CAPI3REF: Automatically Load An Extensions +** +** ^This API can be invoked at program startup in order to register +** one or more statically linked extensions that will be available +** to all new [database connections]. +** +** ^(This routine stores a pointer to the extension entry point +** in an array that is obtained from [sqlite3_malloc()]. That memory +** is deallocated by [sqlite3_reset_auto_extension()].)^ +** +** ^This function registers an extension entry point that is +** automatically invoked whenever a new [database connection] +** is opened using [sqlite3_open()], [sqlite3_open16()], +** or [sqlite3_open_v2()]. +** ^Duplicate extensions are detected so calling this routine +** multiple times with the same extension is harmless. +** ^Automatic extensions apply across all threads. +*/ +SQLITE_API int sqlite3_auto_extension(void (*xEntryPoint)(void)); + +/* +** CAPI3REF: Reset Automatic Extension Loading +** +** ^(This function disables all previously registered automatic +** extensions. It undoes the effect of all prior +** [sqlite3_auto_extension()] calls.)^ +** +** ^This function disables automatic extensions in all threads. +*/ +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. +** +** When the virtual-table mechanism stabilizes, we will declare the +** interface fixed, support it indefinitely, and remove this comment. +*/ + +/* +** Structures used by the virtual table interface +*/ +typedef struct sqlite3_vtab sqlite3_vtab; +typedef struct sqlite3_index_info sqlite3_index_info; +typedef struct sqlite3_vtab_cursor sqlite3_vtab_cursor; +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]. +** This structure consists mostly of methods for the module. +** +** ^A virtual table module is created by filling in a persistent +** instance of this structure and passing a pointer to that instance +** to [sqlite3_create_module()] or [sqlite3_create_module_v2()]. +** ^The registration remains valid until it is replaced by a different +** module or until the [database connection] closes. The content +** of this structure must not change while it is registered with +** any database connection. +*/ +struct sqlite3_module { + int iVersion; + int (*xCreate)(sqlite3*, void *pAux, + int argc, const char *const*argv, + sqlite3_vtab **ppVTab, char**); + int (*xConnect)(sqlite3*, void *pAux, + int argc, const char *const*argv, + sqlite3_vtab **ppVTab, char**); + int (*xBestIndex)(sqlite3_vtab *pVTab, sqlite3_index_info*); + int (*xDisconnect)(sqlite3_vtab *pVTab); + int (*xDestroy)(sqlite3_vtab *pVTab); + int (*xOpen)(sqlite3_vtab *pVTab, sqlite3_vtab_cursor **ppCursor); + int (*xClose)(sqlite3_vtab_cursor*); + int (*xFilter)(sqlite3_vtab_cursor*, int idxNum, const char *idxStr, + int argc, sqlite3_value **argv); + int (*xNext)(sqlite3_vtab_cursor*); + int (*xEof)(sqlite3_vtab_cursor*); + int (*xColumn)(sqlite3_vtab_cursor*, sqlite3_context*, int); + int (*xRowid)(sqlite3_vtab_cursor*, sqlite3_int64 *pRowid); + int (*xUpdate)(sqlite3_vtab *, int, sqlite3_value **, sqlite3_int64 *); + int (*xBegin)(sqlite3_vtab *pVTab); + int (*xSync)(sqlite3_vtab *pVTab); + int (*xCommit)(sqlite3_vtab *pVTab); + int (*xRollback)(sqlite3_vtab *pVTab); + int (*xFindFunction)(sqlite3_vtab *pVtab, int nArg, const char *zName, + void (**pxFunc)(sqlite3_context*,int,sqlite3_value**), + void **ppArg); + int (*xRename)(sqlite3_vtab *pVtab, const char *zNew); +}; + +/* +** 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] +** method of a [virtual table module]. The fields under **Inputs** are the +** inputs to xBestIndex and are read-only. xBestIndex inserts its +** results into the **Outputs** fields. +** +** ^(The aConstraint[] array records WHERE clause constraints of the form: +** +**
column OP expr
+** +** where OP is =, <, <=, >, or >=.)^ ^(The particular operator is +** stored in aConstraint[].op.)^ ^(The index of the column is stored in +** aConstraint[].iColumn.)^ ^(aConstraint[].usable is TRUE if the +** expr on the right-hand side can be evaluated (and thus the constraint +** is usable) and false if it cannot.)^ +** +** ^The optimizer automatically inverts terms of the form "expr OP column" +** and makes other simplifications to the WHERE clause in an attempt to +** get as many WHERE clause terms into the form shown above as possible. +** ^The aConstraint[] array only reports WHERE clause terms that are +** relevant to the particular virtual table being queried. +** +** ^Information about the ORDER BY clause is stored in aOrderBy[]. +** ^Each term of aOrderBy records a column of the ORDER BY clause. +** +** The [xBestIndex] method must fill aConstraintUsage[] with information +** about what parameters to pass to xFilter. ^If argvIndex>0 then +** the right-hand side of the corresponding aConstraint[] is evaluated +** and becomes the argvIndex-th entry in argv. ^(If aConstraintUsage[].omit +** is true, then the constraint is assumed to be fully handled by the +** virtual table and is not checked again by SQLite.)^ +** +** ^The idxNum and idxPtr values are recorded and passed into the +** [xFilter] method. +** ^[sqlite3_free()] is used to free idxPtr if and only if +** needToFreeIdxPtr is true. +** +** ^The orderByConsumed means that output from [xFilter]/[xNext] will occur in +** the correct order to satisfy the ORDER BY clause so that no separate +** sorting step is required. +** +** ^The estimatedCost value is an estimate of the cost of doing the +** particular lookup. A full scan of a table with N entries should have +** a cost of N. A binary search of a table of N entries should have a +** cost of approximately log(N). +*/ +struct sqlite3_index_info { + /* Inputs */ + int nConstraint; /* Number of entries in aConstraint */ + struct sqlite3_index_constraint { + int iColumn; /* Column on left-hand side of constraint */ + unsigned char op; /* Constraint operator */ + unsigned char usable; /* True if this constraint is usable */ + int iTermOffset; /* Used internally - xBestIndex should ignore */ + } *aConstraint; /* Table of WHERE clause constraints */ + int nOrderBy; /* Number of terms in the ORDER BY clause */ + struct sqlite3_index_orderby { + int iColumn; /* Column number */ + unsigned char desc; /* True for DESC. False for ASC. */ + } *aOrderBy; /* The ORDER BY clause */ + /* Outputs */ + struct sqlite3_index_constraint_usage { + int argvIndex; /* if >0, constraint is part of argv to xFilter */ + unsigned char omit; /* Do not code a test for this constraint */ + } *aConstraintUsage; + int idxNum; /* Number used to identify the index */ + char *idxStr; /* String, possibly obtained from sqlite3_malloc */ + int needToFreeIdxStr; /* Free idxStr using sqlite3_free() if true */ + int orderByConsumed; /* True if output is already ordered */ + double estimatedCost; /* Estimated cost of using this index */ +}; +#define SQLITE_INDEX_CONSTRAINT_EQ 2 +#define SQLITE_INDEX_CONSTRAINT_GT 4 +#define SQLITE_INDEX_CONSTRAINT_LE 8 +#define SQLITE_INDEX_CONSTRAINT_LT 16 +#define SQLITE_INDEX_CONSTRAINT_GE 32 +#define SQLITE_INDEX_CONSTRAINT_MATCH 64 + +/* +** 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 +** creating a new [virtual table] using the module and before using a +** preexisting [virtual table] for the module. +** +** ^The module name is registered on the [database connection] specified +** by the first parameter. ^The name of the module is given by the +** second parameter. ^The third parameter is a pointer to +** the implementation of the [virtual table module]. ^The fourth +** parameter is an arbitrary client data pointer that is passed through +** into the [xCreate] and [xConnect] methods of the virtual table module +** when a new virtual table is be being created or reinitialized. +** +** ^The sqlite3_create_module_v2() interface has a fifth parameter which +** is a pointer to a destructor for the pClientData. ^SQLite will +** invoke the destructor function (if it is not NULL) when SQLite +** no longer needs the pClientData pointer. ^The sqlite3_create_module() +** interface is equivalent to sqlite3_create_module_v2() with a NULL +** destructor. +*/ +SQLITE_API SQLITE_EXPERIMENTAL 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( + 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 */ + void(*xDestroy)(void*) /* Module destructor function */ +); + +/* +** 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 +** of the [virtual table]. Each subclass will +** be tailored to the specific needs of the module implementation. +** The purpose of this superclass is to define certain fields that are +** common to all module implementations. +** +** ^Virtual tables methods can set an error message by assigning a +** string obtained from [sqlite3_mprintf()] to zErrMsg. The method should +** take care that any prior string is freed by a call to [sqlite3_free()] +** prior to assigning a new string to zErrMsg. ^After the error message +** is delivered up to the client application, the string will be automatically +** freed by sqlite3_free() and the zErrMsg field will be zeroed. +*/ +struct sqlite3_vtab { + const sqlite3_module *pModule; /* The module for this virtual table */ + int nRef; /* NO LONGER USED */ + char *zErrMsg; /* Error message from sqlite3_mprintf() */ + /* Virtual table implementations will typically add additional fields */ +}; + +/* +** 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 +** [virtual table] and are used +** to loop through the virtual table. Cursors are created using the +** [sqlite3_module.xOpen | xOpen] method of the module and are destroyed +** by the [sqlite3_module.xClose | xClose] method. Cursors are used +** by the [xFilter], [xNext], [xEof], [xColumn], and [xRowid] methods +** of the module. Each module implementation will define +** the content of a cursor structure to suit its own needs. +** +** This superclass exists in order to define fields of the cursor that +** are common to all implementations. +*/ +struct sqlite3_vtab_cursor { + sqlite3_vtab *pVtab; /* Virtual table of this cursor */ + /* Virtual table implementations will typically add additional fields */ +}; + +/* +** 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); + +/* +** 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]. +** But global versions of those functions +** must exist in order to be overloaded.)^ +** +** ^(This API makes sure a global version of a function with a particular +** name and number of parameters exists. If no such function exists +** before this API is called, a new function is created.)^ ^The implementation +** of the new function always causes an exception to be thrown. So +** the new function is not good for anything by itself. Its only +** 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); + +/* +** The interface to the virtual-table mechanism defined above (back up +** to a comment remarkably similar to this one) 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. +** +** 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 ************** +*/ + +/* +** CAPI3REF: A Handle To An Open BLOB +** KEYWORDS: {BLOB handle} {BLOB handles} +** +** An instance of this object represents an open BLOB on which +** [sqlite3_blob_open | incremental BLOB I/O] can be performed. +** ^Objects of this type are created by [sqlite3_blob_open()] +** and destroyed by [sqlite3_blob_close()]. +** ^The [sqlite3_blob_read()] and [sqlite3_blob_write()] interfaces +** can be used to read or write small subsections of the BLOB. +** ^The [sqlite3_blob_bytes()] interface returns the size of the BLOB in bytes. +*/ +typedef struct sqlite3_blob sqlite3_blob; + +/* +** CAPI3REF: Open A BLOB For Incremental I/O +** +** ^(This interfaces opens a [BLOB handle | handle] to the BLOB located +** in row iRow, column zColumn, table zTable in database zDb; +** in other words, the same BLOB that would be selected by: +** +**
+**     SELECT zColumn FROM zDb.zTable WHERE [rowid] = iRow;
+** 
)^ +** +** ^If the flags parameter is non-zero, then the BLOB is opened for read +** and write access. ^If it is zero, the BLOB is opened for read access. +** ^It is not possible to open a column that is part of an index or primary +** key for writing. ^If [foreign key constraints] are enabled, it is +** not possible to open a column that is part of a [child key] for writing. +** +** ^Note that the database name is not the filename that contains +** the database but rather the symbolic name of the database that +** appears after the AS keyword when the database is connected using [ATTACH]. +** ^For the main database file, the database name is "main". +** ^For TEMP tables, the database name is "temp". +** +** ^(On success, [SQLITE_OK] is returned and the new [BLOB handle] is written +** to *ppBlob. Otherwise an [error code] is returned and *ppBlob is set +** to be a null pointer.)^ +** ^This function sets the [database connection] error code and message +** accessible via [sqlite3_errcode()] and [sqlite3_errmsg()] and related +** functions. ^Note that the *ppBlob variable is always initialized in a +** way that makes it safe to invoke [sqlite3_blob_close()] on *ppBlob +** regardless of the success or failure of this routine. +** +** ^(If the row that a BLOB handle points to is modified by an +** [UPDATE], [DELETE], or by [ON CONFLICT] side-effects +** then the BLOB handle is marked as "expired". +** This is true if any column of the row is changed, even a column +** other than the one the BLOB handle is open on.)^ +** ^Calls to [sqlite3_blob_read()] and [sqlite3_blob_write()] for +** a expired BLOB handle fail with an return code of [SQLITE_ABORT]. +** ^(Changes written into a BLOB prior to the BLOB expiring are not +** rolled back by the expiration of the BLOB. Such changes will eventually +** commit if the transaction continues to completion.)^ +** +** ^Use the [sqlite3_blob_bytes()] interface to determine the size of +** the opened blob. ^The size of a blob may not be changed by this +** interface. Use the [UPDATE] SQL command to change the size of a +** blob. +** +** ^The [sqlite3_bind_zeroblob()] and [sqlite3_result_zeroblob()] interfaces +** and the built-in [zeroblob] SQL function can be used, if desired, +** to create an empty, zero-filled blob in which to read or write using +** this interface. +** +** To avoid a resource leak, every open [BLOB handle] should eventually +** be released by a call to [sqlite3_blob_close()]. +*/ +SQLITE_API int sqlite3_blob_open( + sqlite3*, + const char *zDb, + const char *zTable, + const char *zColumn, + sqlite3_int64 iRow, + int flags, + sqlite3_blob **ppBlob +); + +/* +** CAPI3REF: Close A BLOB Handle +** +** ^Closes an open [BLOB handle]. +** +** ^Closing a BLOB shall cause the current transaction to commit +** if there are no other BLOBs, no pending prepared statements, and the +** database connection is in [autocommit mode]. +** ^If any writes were made to the BLOB, they might be held in cache +** until the close operation if they will fit. +** +** ^(Closing the BLOB often forces the changes +** out to disk and so if any I/O errors occur, they will likely occur +** at the time when the BLOB is closed. Any errors that occur during +** closing are reported as a non-zero return value.)^ +** +** ^(The BLOB is closed unconditionally. Even if this routine returns +** an error code, the BLOB is still closed.)^ +** +** ^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. */ -#define SQLITE_INTEGER 1 -#define SQLITE_FLOAT 2 -/* #define SQLITE_TEXT 3 // See below */ -#define SQLITE_BLOB 4 -#define SQLITE_NULL 5 +SQLITE_API int sqlite3_blob_close(sqlite3_blob *); /* -** SQLite version 2 defines SQLITE_TEXT differently. To allow both -** version 2 and version 3 to be included, undefine them both if a -** conflict is seen. Define SQLITE3_TEXT to be the version 3 value. +** CAPI3REF: Return The Size Of An Open BLOB +** +** ^Returns the size in bytes of the BLOB accessible via the +** successfully opened [BLOB handle] in its only argument. ^The +** incremental blob I/O routines can only read or overwriting existing +** blob content; they cannot change the size of a blob. +** +** This routine only works on a [BLOB handle] which has been created +** by a prior successful call to [sqlite3_blob_open()] and which has not +** been closed by [sqlite3_blob_close()]. Passing any other pointer in +** to this routine results in undefined and probably undesirable behavior. */ -#ifdef SQLITE_TEXT -# undef SQLITE_TEXT -#else -# define SQLITE_TEXT 3 +SQLITE_API int sqlite3_blob_bytes(sqlite3_blob *); + +/* +** CAPI3REF: Read Data From A BLOB Incrementally +** +** ^(This function is used to read data from an open [BLOB handle] into a +** caller-supplied buffer. N bytes of data are copied into buffer Z +** from the open BLOB, starting at offset iOffset.)^ +** +** ^If offset iOffset is less than N bytes from the end of the BLOB, +** [SQLITE_ERROR] is returned and no data is read. ^If N or iOffset is +** less than zero, [SQLITE_ERROR] is returned and no data is read. +** ^The size of the blob (and hence the maximum value of N+iOffset) +** can be determined using the [sqlite3_blob_bytes()] interface. +** +** ^An attempt to read from an expired [BLOB handle] fails with an +** error code of [SQLITE_ABORT]. +** +** ^(On success, sqlite3_blob_read() returns SQLITE_OK. +** Otherwise, an [error code] or an [extended error code] is returned.)^ +** +** This routine only works on a [BLOB handle] which has been created +** by a prior successful call to [sqlite3_blob_open()] and which has not +** been closed by [sqlite3_blob_close()]. Passing any other pointer in +** to this routine results in undefined and probably undesirable behavior. +** +** See also: [sqlite3_blob_write()]. +*/ +SQLITE_API int sqlite3_blob_read(sqlite3_blob *, void *Z, int N, int iOffset); + +/* +** CAPI3REF: Write Data Into A BLOB Incrementally +** +** ^This function is used to write data into an open [BLOB handle] from a +** caller-supplied buffer. ^N bytes of data are copied from the buffer Z +** into the open BLOB, starting at offset iOffset. +** +** ^If the [BLOB handle] passed as the first argument was not opened for +** writing (the flags parameter to [sqlite3_blob_open()] was zero), +** this function returns [SQLITE_READONLY]. +** +** ^This function may only modify the contents of the BLOB; it is +** not possible to increase the size of a BLOB using this API. +** ^If offset iOffset is less than N bytes from the end of the BLOB, +** [SQLITE_ERROR] is returned and no data is written. ^If N is +** less than zero [SQLITE_ERROR] is returned and no data is written. +** The size of the BLOB (and hence the maximum value of N+iOffset) +** can be determined using the [sqlite3_blob_bytes()] interface. +** +** ^An attempt to write to an expired [BLOB handle] fails with an +** error code of [SQLITE_ABORT]. ^Writes to the BLOB that occurred +** before the [BLOB handle] expired are not rolled back by the +** expiration of the handle, though of course those changes might +** have been overwritten by the statement that expired the BLOB handle +** or by other independent statements. +** +** ^(On success, sqlite3_blob_write() returns SQLITE_OK. +** Otherwise, an [error code] or an [extended error code] is returned.)^ +** +** This routine only works on a [BLOB handle] which has been created +** by a prior successful call to [sqlite3_blob_open()] and which has not +** been closed by [sqlite3_blob_close()]. Passing any other pointer in +** to this routine results in undefined and probably undesirable behavior. +** +** See also: [sqlite3_blob_read()]. +*/ +SQLITE_API int sqlite3_blob_write(sqlite3_blob *, const void *z, int n, int iOffset); + +/* +** CAPI3REF: Virtual File System Objects +** +** A virtual filesystem (VFS) is an [sqlite3_vfs] object +** that SQLite uses to interact +** with the underlying operating system. Most SQLite builds come with a +** single default VFS that is appropriate for the host computer. +** New VFSes can be registered and existing VFSes can be unregistered. +** The following interfaces are provided. +** +** ^The sqlite3_vfs_find() interface returns a pointer to a VFS given its name. +** ^Names are case sensitive. +** ^Names are zero-terminated UTF-8 strings. +** ^If there is no match, a NULL pointer is returned. +** ^If zVfsName is NULL then the default VFS is returned. +** +** ^New VFSes are registered with sqlite3_vfs_register(). +** ^Each new VFS becomes the default VFS if the makeDflt flag is set. +** ^The same VFS can be registered multiple times without injury. +** ^To make an existing VFS into the default VFS, register it again +** with the makeDflt flag set. If two different VFSes with the +** same name are registered, the behavior is undefined. If a +** VFS is registered with a name that is NULL or an empty string, +** then the behavior is undefined. +** +** ^Unregister a VFS with the sqlite3_vfs_unregister() interface. +** ^(If the default VFS is unregistered, another VFS is chosen as +** the default. The choice for the new VFS is arbitrary.)^ +*/ +SQLITE_API sqlite3_vfs *sqlite3_vfs_find(const char *zVfsName); +SQLITE_API int sqlite3_vfs_register(sqlite3_vfs*, int makeDflt); +SQLITE_API int sqlite3_vfs_unregister(sqlite3_vfs*); + +/* +** CAPI3REF: Mutexes +** +** The SQLite core uses these routines for thread +** synchronization. Though they are intended for internal +** use by SQLite, code that links against SQLite is +** permitted to use any of these routines. +** +** The SQLite source code contains multiple implementations +** of these mutex routines. An appropriate implementation +** is selected automatically at compile-time. ^(The following +** implementations are available in the SQLite core: +** +**
    +**
  • SQLITE_MUTEX_OS2 +**
  • SQLITE_MUTEX_PTHREAD +**
  • SQLITE_MUTEX_W32 +**
  • SQLITE_MUTEX_NOOP +**
)^ +** +** ^The SQLITE_MUTEX_NOOP implementation is a set of routines +** that does no real locking and is appropriate for use in +** a single-threaded application. ^The SQLITE_MUTEX_OS2, +** SQLITE_MUTEX_PTHREAD, and SQLITE_MUTEX_W32 implementations +** are appropriate for use on OS/2, Unix, and Windows. +** +** ^(If SQLite is compiled with the SQLITE_MUTEX_APPDEF preprocessor +** macro defined (with "-DSQLITE_MUTEX_APPDEF=1"), then no mutex +** implementation is included with the library. In this case the +** application must supply a custom mutex implementation using the +** [SQLITE_CONFIG_MUTEX] option of the sqlite3_config() function +** before calling sqlite3_initialize() or any other public sqlite3_ +** function that calls sqlite3_initialize().)^ +** +** ^The sqlite3_mutex_alloc() routine allocates a new +** mutex and returns a pointer to it. ^If it returns NULL +** that means that a mutex could not be allocated. ^SQLite +** will unwind its stack and return an error. ^(The argument +** to sqlite3_mutex_alloc() is one of these integer constants: +** +**
    +**
  • SQLITE_MUTEX_FAST +**
  • SQLITE_MUTEX_RECURSIVE +**
  • SQLITE_MUTEX_STATIC_MASTER +**
  • SQLITE_MUTEX_STATIC_MEM +**
  • SQLITE_MUTEX_STATIC_MEM2 +**
  • SQLITE_MUTEX_STATIC_PRNG +**
  • SQLITE_MUTEX_STATIC_LRU +**
  • SQLITE_MUTEX_STATIC_LRU2 +**
)^ +** +** ^The first two constants (SQLITE_MUTEX_FAST and SQLITE_MUTEX_RECURSIVE) +** cause sqlite3_mutex_alloc() to create +** a new mutex. ^The new mutex is recursive when SQLITE_MUTEX_RECURSIVE +** is used but not necessarily so when SQLITE_MUTEX_FAST is used. +** The mutex implementation does not need to make a distinction +** between SQLITE_MUTEX_RECURSIVE and SQLITE_MUTEX_FAST if it does +** not want to. ^SQLite will only request a recursive mutex in +** cases where it really needs one. ^If a faster non-recursive mutex +** implementation is available on the host platform, the mutex subsystem +** might return such a mutex in response to SQLITE_MUTEX_FAST. +** +** ^The other allowed parameters to sqlite3_mutex_alloc() (anything other +** than SQLITE_MUTEX_FAST and SQLITE_MUTEX_RECURSIVE) each return +** a pointer to a static preexisting mutex. ^Six static mutexes are +** used by the current version of SQLite. Future versions of SQLite +** may add additional static mutexes. Static mutexes are for internal +** use by SQLite only. Applications that use SQLite mutexes should +** use only the dynamic mutexes returned by SQLITE_MUTEX_FAST or +** SQLITE_MUTEX_RECURSIVE. +** +** ^Note that if one of the dynamic mutex parameters (SQLITE_MUTEX_FAST +** or SQLITE_MUTEX_RECURSIVE) is used then sqlite3_mutex_alloc() +** returns a different mutex on every call. ^But for the static +** mutex types, the same mutex is returned on every call that has +** the same type number. +** +** ^The sqlite3_mutex_free() routine deallocates a previously +** allocated dynamic mutex. ^SQLite is careful to deallocate every +** dynamic mutex that it allocates. The dynamic mutexes must not be in +** use when they are deallocated. Attempting to deallocate a static +** mutex results in undefined behavior. ^SQLite never deallocates +** a static mutex. +** +** ^The sqlite3_mutex_enter() and sqlite3_mutex_try() routines attempt +** to enter a mutex. ^If another thread is already within the mutex, +** sqlite3_mutex_enter() will block and sqlite3_mutex_try() will return +** SQLITE_BUSY. ^The sqlite3_mutex_try() interface returns [SQLITE_OK] +** upon successful entry. ^(Mutexes created using +** SQLITE_MUTEX_RECURSIVE can be entered multiple times by the same thread. +** In such cases the, +** mutex must be exited an equal number of times before another thread +** can enter.)^ ^(If the same thread tries to enter any other +** kind of mutex more than once, the behavior is undefined. +** SQLite will never exhibit +** such behavior in its own use of mutexes.)^ +** +** ^(Some systems (for example, Windows 95) do not support the operation +** implemented by sqlite3_mutex_try(). On those systems, sqlite3_mutex_try() +** will always return SQLITE_BUSY. The SQLite core only ever uses +** sqlite3_mutex_try() as an optimization so this is acceptable behavior.)^ +** +** ^The sqlite3_mutex_leave() routine exits a mutex that was +** previously entered by the same thread. ^(The behavior +** is undefined if the mutex is not currently entered by the +** calling thread or is not currently allocated. SQLite will +** never do either.)^ +** +** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or +** sqlite3_mutex_leave() is a NULL pointer, then all three routines +** behave as no-ops. +** +** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. +*/ +SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); +SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); +SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); +SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); +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. +** +** Usually, the default mutex implementations provided by SQLite are +** sufficient, however the user has the option of substituting a custom +** implementation for specialized deployments or systems for which SQLite +** does not provide a suitable implementation. In this case, the user +** creates and populates an instance of this structure to pass +** to sqlite3_config() along with the [SQLITE_CONFIG_MUTEX] option. +** Additionally, an instance of this structure can be used as an +** output variable when querying the system for the current mutex +** implementation, using the [SQLITE_CONFIG_GETMUTEX] option. +** +** ^The xMutexInit method defined by this structure is invoked as +** part of system initialization by the sqlite3_initialize() function. +** ^The xMutexInit routine is calle by SQLite exactly once for each +** effective call to [sqlite3_initialize()]. +** +** ^The xMutexEnd method defined by this structure is invoked as +** part of system shutdown by the sqlite3_shutdown() function. The +** implementation of this method is expected to release all outstanding +** resources obtained by the mutex methods implementation, especially +** those obtained by the xMutexInit method. ^The xMutexEnd() +** interface is invoked exactly once for each call to [sqlite3_shutdown()]. +** +** ^(The remaining seven methods defined by this structure (xMutexAlloc, +** xMutexFree, xMutexEnter, xMutexTry, xMutexLeave, xMutexHeld and +** xMutexNotheld) implement the following interfaces (respectively): +** +**
    +**
  • [sqlite3_mutex_alloc()]
  • +**
  • [sqlite3_mutex_free()]
  • +**
  • [sqlite3_mutex_enter()]
  • +**
  • [sqlite3_mutex_try()]
  • +**
  • [sqlite3_mutex_leave()]
  • +**
  • [sqlite3_mutex_held()]
  • +**
  • [sqlite3_mutex_notheld()]
  • +**
)^ +** +** The only difference is that the public sqlite3_XXX functions enumerated +** above silently ignore any invocations that pass a NULL pointer instead +** of a valid mutex handle. The implementations of the methods defined +** by this structure are not required to handle this case, the results +** of passing a NULL pointer instead of a valid mutex handle are undefined +** (i.e. it is acceptable to provide an implementation that segfaults if +** it is passed a NULL pointer). +** +** The xMutexInit() method must be threadsafe. ^It must be harmless to +** invoke xMutexInit() mutiple times within the same process and without +** intervening calls to xMutexEnd(). Second and subsequent calls to +** xMutexInit() must be no-ops. +** +** ^xMutexInit() must not use SQLite memory allocation ([sqlite3_malloc()] +** and its associates). ^Similarly, xMutexAlloc() must not use SQLite memory +** allocation for a static mutex. ^However xMutexAlloc() may use SQLite +** memory allocation for a fast or recursive mutex. +** +** ^SQLite will invoke the xMutexEnd() method when [sqlite3_shutdown()] is +** called, but only if the prior call to xMutexInit returned SQLITE_OK. +** If xMutexInit fails in any way, it is expected to clean up after itself +** prior to returning. +*/ +typedef struct sqlite3_mutex_methods sqlite3_mutex_methods; +struct sqlite3_mutex_methods { + int (*xMutexInit)(void); + int (*xMutexEnd)(void); + sqlite3_mutex *(*xMutexAlloc)(int); + void (*xMutexFree)(sqlite3_mutex *); + void (*xMutexEnter)(sqlite3_mutex *); + int (*xMutexTry)(sqlite3_mutex *); + void (*xMutexLeave)(sqlite3_mutex *); + int (*xMutexHeld)(sqlite3_mutex *); + int (*xMutexNotheld)(sqlite3_mutex *); +}; + +/* +** CAPI3REF: Mutex Verification Routines +** +** The sqlite3_mutex_held() and sqlite3_mutex_notheld() routines +** are intended for use inside assert() statements. ^The SQLite core +** never uses these routines except inside an assert() and applications +** are advised to follow the lead of the core. ^The SQLite core only +** provides implementations for these routines when it is compiled +** with the SQLITE_DEBUG flag. ^External mutex implementations +** are only required to provide these routines if SQLITE_DEBUG is +** defined and if NDEBUG is not defined. +** +** ^These routines should return true if the mutex in their argument +** is held or not held, respectively, by the calling thread. +** +** ^The implementation is not required to provided versions of these +** routines that actually work. If the implementation does not provide working +** versions of these routines, it should at least provide stubs that always +** return true so that one does not get spurious assertion failures. +** +** ^If the argument to sqlite3_mutex_held() is a NULL pointer then +** the routine should return 1. This seems counter-intuitive since +** clearly the mutex cannot be held if it does not exist. But the +** the reason the mutex does not exist is because the build is not +** using mutexes. And we do not want the assert() containing the +** call to sqlite3_mutex_held() to fail, so a non-zero return is +** the appropriate thing to do. ^The sqlite3_mutex_notheld() +** interface should also return 1 when given a NULL pointer. +*/ +#ifndef NDEBUG +SQLITE_API int sqlite3_mutex_held(sqlite3_mutex*); +SQLITE_API int sqlite3_mutex_notheld(sqlite3_mutex*); #endif -#define SQLITE3_TEXT 3 /* -** The next group of routines returns information about the information -** in a single column of the current result row of a query. In every -** case the first parameter is a pointer to the SQL statement that is being -** executed (the sqlite_stmt* that was returned from sqlite3_prepare()) and -** the second argument is the index of the column for which information -** should be returned. iCol is zero-indexed. The left-most column as an -** index of 0. +** CAPI3REF: Mutex Types ** -** If the SQL statement is not currently point to a valid row, or if the -** the colulmn index is out of range, the result is undefined. +** The [sqlite3_mutex_alloc()] interface takes a single argument +** which is one of these integer constants. ** -** These routines attempt to convert the value where appropriate. For -** example, if the internal representation is FLOAT and a text result -** is requested, sprintf() is used internally to do the conversion -** automatically. The following table details the conversions that -** are applied: -** -** Internal Type Requested Type Conversion -** ------------- -------------- -------------------------- -** NULL INTEGER Result is 0 -** NULL FLOAT Result is 0.0 -** NULL TEXT Result is an empty string -** NULL BLOB Result is a zero-length BLOB -** INTEGER FLOAT Convert from integer to float -** INTEGER TEXT ASCII rendering of the integer -** INTEGER BLOB Same as for INTEGER->TEXT -** FLOAT INTEGER Convert from float to integer -** FLOAT TEXT ASCII rendering of the float -** FLOAT BLOB Same as FLOAT->TEXT -** TEXT INTEGER Use atoi() -** TEXT FLOAT Use atof() -** TEXT BLOB No change -** BLOB INTEGER Convert to TEXT then use atoi() -** BLOB FLOAT Convert to TEXT then use atof() -** BLOB TEXT Add a \000 terminator if needed -** -** The following access routines are provided: -** -** _type() Return the datatype of the result. This is one of -** SQLITE_INTEGER, SQLITE_FLOAT, SQLITE_TEXT, SQLITE_BLOB, -** or SQLITE_NULL. -** _blob() Return the value of a BLOB. -** _bytes() Return the number of bytes in a BLOB value or the number -** of bytes in a TEXT value represented as UTF-8. The \000 -** terminator is included in the byte count for TEXT values. -** _bytes16() Return the number of bytes in a BLOB value or the number -** of bytes in a TEXT value represented as UTF-16. The \u0000 -** terminator is included in the byte count for TEXT values. -** _double() Return a FLOAT value. -** _int() Return an INTEGER value in the host computer's native -** integer representation. This might be either a 32- or 64-bit -** integer depending on the host. -** _int64() Return an INTEGER value as a 64-bit signed integer. -** _text() Return the value as UTF-8 text. -** _text16() Return the value as UTF-16 text. -*/ -const void *sqlite3_column_blob(sqlite3_stmt*, int iCol); -int sqlite3_column_bytes(sqlite3_stmt*, int iCol); -int sqlite3_column_bytes16(sqlite3_stmt*, int iCol); -double sqlite3_column_double(sqlite3_stmt*, int iCol); -int sqlite3_column_int(sqlite3_stmt*, int iCol); -sqlite_int64 sqlite3_column_int64(sqlite3_stmt*, int iCol); -const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol); -const void *sqlite3_column_text16(sqlite3_stmt*, int iCol); -int sqlite3_column_type(sqlite3_stmt*, int iCol); - -/* -** The sqlite3_finalize() function is called to delete a compiled -** SQL statement obtained by a previous call to sqlite3_prepare() -** or sqlite3_prepare16(). If the statement was executed successfully, or -** not executed at all, then SQLITE_OK is returned. If execution of the -** statement failed then an error code is returned. -** -** This routine can be called at any point during the execution of the -** virtual machine. If the virtual machine has not completed execution -** when this routine is called, that is like encountering an error or -** an interrupt. (See sqlite3_interrupt().) Incomplete updates may be -** rolled back and transactions cancelled, depending on the circumstances, -** and the result code returned will be SQLITE_ABORT. -*/ -int sqlite3_finalize(sqlite3_stmt *pStmt); - -/* -** The sqlite3_reset() function is called to reset a compiled SQL -** statement obtained by a previous call to sqlite3_prepare() or -** sqlite3_prepare16() back to it's initial state, ready to be re-executed. -** Any SQL statement variables that had values bound to them using -** the sqlite3_bind_*() API retain their values. -*/ -int sqlite3_reset(sqlite3_stmt *pStmt); - -/* -** The following two functions are used to add user functions or aggregates -** implemented in C to the SQL langauge interpreted by SQLite. The -** difference only between the two is that the second parameter, the -** name of the (scalar) function or aggregate, is encoded in UTF-8 for -** sqlite3_create_function() and UTF-16 for sqlite3_create_function16(). -** -** The first argument is the database handle that the new function or -** aggregate is to be added to. If a single program uses more than one -** database handle internally, then user functions or aggregates must -** be added individually to each database handle with which they will be -** used. -** -** The third parameter is the number of arguments that the function or -** aggregate takes. If this parameter is negative, then the function or -** aggregate may take any number of arguments. -** -** The fourth parameter is one of SQLITE_UTF* values defined below, -** indicating the encoding that the function is most likely to handle -** values in. This does not change the behaviour of the programming -** interface. However, if two versions of the same function are registered -** with different encoding values, SQLite invokes the version likely to -** minimize conversions between text encodings. +** The set of static mutexes may change from one SQLite release to the +** next. Applications that override the built-in mutex logic must be +** prepared to accommodate additional static mutexes. +*/ +#define SQLITE_MUTEX_FAST 0 +#define SQLITE_MUTEX_RECURSIVE 1 +#define SQLITE_MUTEX_STATIC_MASTER 2 +#define SQLITE_MUTEX_STATIC_MEM 3 /* sqlite3_malloc() */ +#define SQLITE_MUTEX_STATIC_MEM2 4 /* NOT USED */ +#define SQLITE_MUTEX_STATIC_OPEN 4 /* sqlite3BtreeOpen() */ +#define SQLITE_MUTEX_STATIC_PRNG 5 /* sqlite3_random() */ +#define SQLITE_MUTEX_STATIC_LRU 6 /* lru page list */ +#define SQLITE_MUTEX_STATIC_LRU2 7 /* lru page list */ + +/* +** CAPI3REF: Retrieve the mutex for a database connection ** -** The seventh, eighth and ninth parameters, xFunc, xStep and xFinal, are -** pointers to user implemented C functions that implement the user -** function or aggregate. A scalar function requires an implementation of -** the xFunc callback only, NULL pointers should be passed as the xStep -** and xFinal parameters. An aggregate function requires an implementation -** of xStep and xFinal, but NULL should be passed for xFunc. To delete an -** existing user function or aggregate, pass NULL for all three function -** callback. Specifying an inconstent set of callback values, such as an -** xFunc and an xFinal, or an xStep but no xFinal, SQLITE_ERROR is -** returned. -*/ -int sqlite3_create_function( - sqlite3 *, - const char *zFunctionName, - int nArg, - int eTextRep, - void*, - void (*xFunc)(sqlite3_context*,int,sqlite3_value**), - void (*xStep)(sqlite3_context*,int,sqlite3_value**), - void (*xFinal)(sqlite3_context*) -); -int sqlite3_create_function16( - sqlite3*, - const void *zFunctionName, - int nArg, - int eTextRep, - void*, - void (*xFunc)(sqlite3_context*,int,sqlite3_value**), - void (*xStep)(sqlite3_context*,int,sqlite3_value**), - void (*xFinal)(sqlite3_context*) -); +** ^This interface returns a pointer the [sqlite3_mutex] object that +** serializes access to the [database connection] given in the argument +** when the [threading mode] is Serialized. +** ^If the [threading mode] is Single-thread or Multi-thread then this +** routine returns a NULL pointer. +*/ +SQLITE_API sqlite3_mutex *sqlite3_db_mutex(sqlite3*); /* -** The next routine returns the number of calls to xStep for a particular -** aggregate function instance. The current call to xStep counts so this -** routine always returns at least 1. +** CAPI3REF: Low-Level Control Of Database Files +** +** ^The [sqlite3_file_control()] interface makes a direct call to the +** xFileControl method for the [sqlite3_io_methods] object associated +** with a particular database identified by the second argument. ^The +** name of the database "main" for the main database or "temp" for the +** TEMP database, or the name that appears after the AS keyword for +** databases that are added using the [ATTACH] SQL command. +** ^A NULL pointer can be used in place of "main" to refer to the +** main database file. +** ^The third and fourth parameters to this routine +** are passed directly through to the second and third parameters of +** the xFileControl method. ^The return value of the xFileControl +** method becomes the return value of this routine. +** +** ^If the second parameter (zDbName) does not match the name of any +** open database file, then SQLITE_ERROR is returned. ^This error +** code is not remembered and will not be recalled by [sqlite3_errcode()] +** or [sqlite3_errmsg()]. The underlying xFileControl method might +** also return SQLITE_ERROR. There is no way to distinguish between +** an incorrect zDbName and an SQLITE_ERROR return from the underlying +** xFileControl method. +** +** See also: [SQLITE_FCNTL_LOCKSTATE] */ -int sqlite3_aggregate_count(sqlite3_context*); +SQLITE_API int sqlite3_file_control(sqlite3*, const char *zDbName, int op, void*); /* -** The next group of routines returns information about parameters to -** a user-defined function. Function implementations use these routines -** to access their parameters. These routines are the same as the -** sqlite3_column_* routines except that these routines take a single -** sqlite3_value* pointer instead of an sqlite3_stmt* and an integer -** column number. +** CAPI3REF: Testing Interface +** +** ^The sqlite3_test_control() interface is used to read out internal +** state of SQLite and to inject faults into SQLite for testing +** purposes. ^The first parameter is an operation code that determines +** the number, meaning, and operation of all subsequent parameters. +** +** This interface is not for use by applications. It exists solely +** for verifying the correct operation of the SQLite library. Depending +** on how the SQLite library is compiled, this interface might not exist. +** +** The details of the operation codes, their meanings, the parameters +** they take, and what they do are all subject to change without notice. +** Unlike most of the SQLite API, this function is not guaranteed to +** operate consistently from one release to the next. */ -const void *sqlite3_value_blob(sqlite3_value*); -int sqlite3_value_bytes(sqlite3_value*); -int sqlite3_value_bytes16(sqlite3_value*); -double sqlite3_value_double(sqlite3_value*); -int sqlite3_value_int(sqlite3_value*); -sqlite_int64 sqlite3_value_int64(sqlite3_value*); -const unsigned char *sqlite3_value_text(sqlite3_value*); -const void *sqlite3_value_text16(sqlite3_value*); -const void *sqlite3_value_text16le(sqlite3_value*); -const void *sqlite3_value_text16be(sqlite3_value*); -int sqlite3_value_type(sqlite3_value*); +SQLITE_API int sqlite3_test_control(int op, ...); /* -** Aggregate functions use the following routine to allocate -** a structure for storing their state. The first time this routine -** is called for a particular aggregate, a new structure of size nBytes -** is allocated, zeroed, and returned. On subsequent calls (for the -** same aggregate instance) the same buffer is returned. The implementation -** of the aggregate can use the returned buffer to accumulate data. +** CAPI3REF: Testing Interface Operation Codes +** +** These constants are the valid operation code parameters used +** as the first argument to [sqlite3_test_control()]. ** -** The buffer allocated is freed automatically by SQLite. +** These parameters and their meanings are subject to change +** without notice. These values are for testing purposes only. +** Applications should not use any of these parameters or the +** [sqlite3_test_control()] interface. */ -void *sqlite3_aggregate_context(sqlite3_context*, int nBytes); +#define SQLITE_TESTCTRL_FIRST 5 +#define SQLITE_TESTCTRL_PRNG_SAVE 5 +#define SQLITE_TESTCTRL_PRNG_RESTORE 6 +#define SQLITE_TESTCTRL_PRNG_RESET 7 +#define SQLITE_TESTCTRL_BITVEC_TEST 8 +#define SQLITE_TESTCTRL_FAULT_INSTALL 9 +#define SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS 10 +#define SQLITE_TESTCTRL_PENDING_BYTE 11 +#define SQLITE_TESTCTRL_ASSERT 12 +#define SQLITE_TESTCTRL_ALWAYS 13 +#define SQLITE_TESTCTRL_RESERVE 14 +#define SQLITE_TESTCTRL_OPTIMIZATIONS 15 +#define SQLITE_TESTCTRL_ISKEYWORD 16 +#define SQLITE_TESTCTRL_LAST 16 /* -** The pUserData parameter to the sqlite3_create_function() and -** sqlite3_create_aggregate() routines used to register user functions -** is available to the implementation of the function using this -** call. +** CAPI3REF: SQLite Runtime Status +** EXPERIMENTAL +** +** ^This interface is used to retrieve runtime status information +** about the preformance of SQLite, and optionally to reset various +** highwater marks. ^The first argument is an integer code for +** the specific parameter to measure. ^(Recognized integer codes +** are of the form [SQLITE_STATUS_MEMORY_USED | SQLITE_STATUS_...].)^ +** ^The current value of the parameter is returned into *pCurrent. +** ^The highest recorded value is returned in *pHighwater. ^If the +** resetFlag is true, then the highest record value is reset after +** *pHighwater is written. ^(Some parameters do not record the highest +** value. For those parameters +** nothing is written into *pHighwater and the resetFlag is ignored.)^ +** ^(Other parameters record only the highwater mark and not the current +** value. For these latter parameters nothing is written into *pCurrent.)^ +** +** ^The sqlite3_db_status() routine returns SQLITE_OK on success and a +** non-zero [error code] on failure. +** +** This routine is threadsafe but is not atomic. This routine can be +** called while other threads are running the same or different SQLite +** interfaces. However the values returned in *pCurrent and +** *pHighwater reflect the status of SQLite at different points in time +** and it is possible that another thread might change the parameter +** in between the times when *pCurrent and *pHighwater are written. +** +** See also: [sqlite3_db_status()] */ -void *sqlite3_user_data(sqlite3_context*); +SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_status(int op, int *pCurrent, int *pHighwater, int resetFlag); + /* -** The following two functions may be used by scalar user functions to -** associate meta-data with argument values. If the same value is passed to -** multiple invocations of the user-function during query execution, under -** some circumstances the associated meta-data may be preserved. This may -** be used, for example, to add a regular-expression matching scalar -** function. The compiled version of the regular expression is stored as -** meta-data associated with the SQL value passed as the regular expression -** pattern. -** -** Calling sqlite3_get_auxdata() returns a pointer to the meta data -** associated with the Nth argument value to the current user function -** call, where N is the second parameter. If no meta-data has been set for -** that value, then a NULL pointer is returned. -** -** The sqlite3_set_auxdata() is used to associate meta data with a user -** function argument. The third parameter is a pointer to the meta data -** to be associated with the Nth user function argument value. The fourth -** parameter specifies a 'delete function' that will be called on the meta -** data pointer to release it when it is no longer required. If the delete -** function pointer is NULL, it is not invoked. -** -** In practice, meta-data is preserved between function calls for -** expressions that are constant at compile time. This includes literal -** values and SQL variables. +** CAPI3REF: Status Parameters +** EXPERIMENTAL +** +** These integer constants designate various run-time status parameters +** that can be returned by [sqlite3_status()]. +** +**
+** ^(
SQLITE_STATUS_MEMORY_USED
+**
This parameter is the current amount of memory checked out +** using [sqlite3_malloc()], either directly or indirectly. The +** figure includes calls made to [sqlite3_malloc()] by the application +** and internal memory usage by the SQLite library. Scratch memory +** controlled by [SQLITE_CONFIG_SCRATCH] and auxiliary page-cache +** memory controlled by [SQLITE_CONFIG_PAGECACHE] is not included in +** this parameter. The amount returned is the sum of the allocation +** sizes as reported by the xSize method in [sqlite3_mem_methods].
)^ +** +** ^(
SQLITE_STATUS_MALLOC_SIZE
+**
This parameter records the largest memory allocation request +** handed to [sqlite3_malloc()] or [sqlite3_realloc()] (or their +** internal equivalents). Only the value returned in the +** *pHighwater parameter to [sqlite3_status()] is of interest. +** The value written into the *pCurrent parameter is undefined.
)^ +** +** ^(
SQLITE_STATUS_PAGECACHE_USED
+**
This parameter returns the number of pages used out of the +** [pagecache memory allocator] that was configured using +** [SQLITE_CONFIG_PAGECACHE]. The +** value returned is in pages, not in bytes.
)^ +** +** ^(
SQLITE_STATUS_PAGECACHE_OVERFLOW
+**
This parameter returns the number of bytes of page cache +** allocation which could not be statisfied by the [SQLITE_CONFIG_PAGECACHE] +** buffer and where forced to overflow to [sqlite3_malloc()]. The +** returned value includes allocations that overflowed because they +** where too large (they were larger than the "sz" parameter to +** [SQLITE_CONFIG_PAGECACHE]) and allocations that overflowed because +** no space was left in the page cache.
)^ +** +** ^(
SQLITE_STATUS_PAGECACHE_SIZE
+**
This parameter records the largest memory allocation request +** handed to [pagecache memory allocator]. Only the value returned in the +** *pHighwater parameter to [sqlite3_status()] is of interest. +** The value written into the *pCurrent parameter is undefined.
)^ +** +** ^(
SQLITE_STATUS_SCRATCH_USED
+**
This parameter returns the number of allocations used out of the +** [scratch memory allocator] configured using +** [SQLITE_CONFIG_SCRATCH]. The value returned is in allocations, not +** in bytes. Since a single thread may only have one scratch allocation +** outstanding at time, this parameter also reports the number of threads +** using scratch memory at the same time.
)^ +** +** ^(
SQLITE_STATUS_SCRATCH_OVERFLOW
+**
This parameter returns the number of bytes of scratch memory +** allocation which could not be statisfied by the [SQLITE_CONFIG_SCRATCH] +** buffer and where forced to overflow to [sqlite3_malloc()]. The values +** returned include overflows because the requested allocation was too +** larger (that is, because the requested allocation was larger than the +** "sz" parameter to [SQLITE_CONFIG_SCRATCH]) and because no scratch buffer +** slots were available. +**
)^ +** +** ^(
SQLITE_STATUS_SCRATCH_SIZE
+**
This parameter records the largest memory allocation request +** handed to [scratch memory allocator]. Only the value returned in the +** *pHighwater parameter to [sqlite3_status()] is of interest. +** The value written into the *pCurrent parameter is undefined.
)^ +** +** ^(
SQLITE_STATUS_PARSER_STACK
+**
This parameter records the deepest parser stack. It is only +** meaningful if SQLite is compiled with [YYTRACKMAXSTACKDEPTH].
)^ +**
+** +** New status parameters may be added from time to time. +*/ +#define SQLITE_STATUS_MEMORY_USED 0 +#define SQLITE_STATUS_PAGECACHE_USED 1 +#define SQLITE_STATUS_PAGECACHE_OVERFLOW 2 +#define SQLITE_STATUS_SCRATCH_USED 3 +#define SQLITE_STATUS_SCRATCH_OVERFLOW 4 +#define SQLITE_STATUS_MALLOC_SIZE 5 +#define SQLITE_STATUS_PARSER_STACK 6 +#define SQLITE_STATUS_PAGECACHE_SIZE 7 +#define SQLITE_STATUS_SCRATCH_SIZE 8 + +/* +** 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. +** +** ^The current value of the requested parameter is written into *pCur +** and the highest instantaneous value is written into *pHiwtr. ^If +** the resetFlg is true, then the highest instantaneous value is +** reset back down to the current value. +** +** 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); + +/* +** 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. +** +** New verbs may be added in future releases of SQLite. Existing verbs +** might be discontinued. Applications should check the return code from +** [sqlite3_db_status()] to make sure that the call worked. +** The [sqlite3_db_status()] interface will return a non-zero error code +** if a discontinued or unsupported verb is invoked. +** +**
+** ^(
SQLITE_DBSTATUS_LOOKASIDE_USED
+**
This parameter returns the number of lookaside memory slots currently +** checked out.
)^ +**
*/ -void *sqlite3_get_auxdata(sqlite3_context*, int); -void sqlite3_set_auxdata(sqlite3_context*, int, void*, void (*)(void*)); +#define SQLITE_DBSTATUS_LOOKASIDE_USED 0 /* -** These are special value for the destructor that is passed in as the -** final argument to routines like sqlite3_result_blob(). If the destructor -** argument is SQLITE_STATIC, it means that the content pointer is constant -** and will never change. It does not need to be destroyed. The -** SQLITE_TRANSIENT value means that the content will likely change in -** the near future and that SQLite should make its own private copy of -** the content before returning. +** CAPI3REF: Prepared Statement Status +** EXPERIMENTAL +** +** ^(Each prepared statement maintains various +** [SQLITE_STMTSTATUS_SORT | counters] that measure the number +** of times it has performed specific operations.)^ These counters can +** be used to monitor the performance characteristics of the prepared +** statements. For example, if the number of table steps greatly exceeds +** the number of table searches or result rows, that would tend to indicate +** that the prepared statement is using a full table scan rather than +** an index. +** +** ^(This interface is used to retrieve and reset counter values from +** a [prepared statement]. The first argument is the prepared statement +** object to be interrogated. The second argument +** is an integer code for a specific [SQLITE_STMTSTATUS_SORT | counter] +** to be interrogated.)^ +** ^The current value of the requested counter is returned. +** ^If the resetFlg is true, then the counter is reset to zero after this +** interface call returns. +** +** See also: [sqlite3_status()] and [sqlite3_db_status()]. */ -#define SQLITE_STATIC ((void(*)(void *))0) -#define SQLITE_TRANSIENT ((void(*)(void *))-1) +SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_stmt_status(sqlite3_stmt*, int op,int resetFlg); /* -** User-defined functions invoke the following routines in order to -** set their return value. +** CAPI3REF: Status Parameters for prepared statements +** EXPERIMENTAL +** +** These preprocessor macros define integer codes that name counter +** values associated with the [sqlite3_stmt_status()] interface. +** The meanings of the various counters are as follows: +** +**
+**
SQLITE_STMTSTATUS_FULLSCAN_STEP
+**
^This is the number of times that SQLite has stepped forward in +** a table as part of a full table scan. Large numbers for this counter +** may indicate opportunities for performance improvement through +** careful use of indices.
+** +**
SQLITE_STMTSTATUS_SORT
+**
^This is the number of sort operations that have occurred. +** A non-zero value in this counter may indicate an opportunity to +** improvement performance through careful use of indices.
+** +**
*/ -void sqlite3_result_blob(sqlite3_context*, const void*, int, void(*)(void*)); -void sqlite3_result_double(sqlite3_context*, double); -void sqlite3_result_error(sqlite3_context*, const char*, int); -void sqlite3_result_error16(sqlite3_context*, const void*, int); -void sqlite3_result_int(sqlite3_context*, int); -void sqlite3_result_int64(sqlite3_context*, sqlite_int64); -void sqlite3_result_null(sqlite3_context*); -void sqlite3_result_text(sqlite3_context*, const char*, int, void(*)(void*)); -void sqlite3_result_text16(sqlite3_context*, const void*, int, void(*)(void*)); -void sqlite3_result_text16le(sqlite3_context*, const void*, int,void(*)(void*)); -void sqlite3_result_text16be(sqlite3_context*, const void*, int,void(*)(void*)); -void sqlite3_result_value(sqlite3_context*, sqlite3_value*); +#define SQLITE_STMTSTATUS_FULLSCAN_STEP 1 +#define SQLITE_STMTSTATUS_SORT 2 /* -** These are the allowed values for the eTextRep argument to -** sqlite3_create_collation and sqlite3_create_function. +** 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 +** its size or internal structure and never deals with the +** sqlite3_pcache object except by holding and passing pointers +** to the object. +** +** See [sqlite3_pcache_methods] for additional information. */ -#define SQLITE_UTF8 1 -#define SQLITE_UTF16LE 2 -#define SQLITE_UTF16BE 3 -#define SQLITE_UTF16 4 /* Use native byte order */ -#define SQLITE_ANY 5 /* sqlite3_create_function only */ +typedef struct sqlite3_pcache sqlite3_pcache; /* -** These two functions are used to add new collation sequences to the -** sqlite3 handle specified as the first argument. +** CAPI3REF: Application Defined Page Cache. +** KEYWORDS: {page cache} +** EXPERIMENTAL ** -** The name of the new collation sequence is specified as a UTF-8 string -** for sqlite3_create_collation() and a UTF-16 string for -** sqlite3_create_collation16(). In both cases the name is passed as the -** second function argument. +** ^(The [sqlite3_config]([SQLITE_CONFIG_PCACHE], ...) interface can +** register an alternative page cache implementation by passing in an +** instance of the sqlite3_pcache_methods structure.)^ The majority of the +** heap memory used by SQLite is used by the page cache to cache data read +** from, or ready to be written to, the database file. By implementing a +** custom page cache using this API, an application can control more +** precisely the amount of memory consumed by SQLite, the way in which +** that memory is allocated and released, and the policies used to +** determine exactly which parts of a database file are cached and for +** how long. ** -** The third argument must be one of the constants SQLITE_UTF8, -** SQLITE_UTF16LE or SQLITE_UTF16BE, indicating that the user-supplied -** routine expects to be passed pointers to strings encoded using UTF-8, -** UTF-16 little-endian or UTF-16 big-endian respectively. +** ^(The contents of the sqlite3_pcache_methods structure are copied to an +** internal buffer by SQLite within the call to [sqlite3_config]. Hence +** the application may discard the parameter after the call to +** [sqlite3_config()] returns.)^ ** -** A pointer to the user supplied routine must be passed as the fifth -** argument. If it is NULL, this is the same as deleting the collation -** sequence (so that SQLite cannot call it anymore). Each time the user -** supplied function is invoked, it is passed a copy of the void* passed as -** the fourth argument to sqlite3_create_collation() or -** sqlite3_create_collation16() as its first parameter. -** -** The remaining arguments to the user-supplied routine are two strings, -** each represented by a [length, data] pair and encoded in the encoding -** that was passed as the third argument when the collation sequence was -** registered. The user routine should return negative, zero or positive if -** the first string is less than, equal to, or greater than the second -** string. i.e. (STRING1 - STRING2). +** ^The xInit() method is called once for each call to [sqlite3_initialize()] +** (usually only once during the lifetime of the process). ^(The xInit() +** method is passed a copy of the sqlite3_pcache_methods.pArg value.)^ +** ^The xInit() method can set up up global structures and/or any mutexes +** required by the custom page cache implementation. +** +** ^The xShutdown() method is called from within [sqlite3_shutdown()], +** if the application invokes this API. It can be used to clean up +** any outstanding resources before process shutdown, if required. +** +** ^SQLite holds a [SQLITE_MUTEX_RECURSIVE] mutex when it invokes +** the xInit method, so the xInit method need not be threadsafe. ^The +** xShutdown method is only called from [sqlite3_shutdown()] so it does +** not need to be threadsafe either. All other methods must be threadsafe +** in multithreaded applications. +** +** ^SQLite will never invoke xInit() more than once without an intervening +** call to xShutdown(). +** +** ^The xCreate() method is used to construct a new cache instance. SQLite +** will typically create one cache instance for each open database file, +** though this is not guaranteed. ^The +** first parameter, szPage, is the size in bytes of the pages that must +** be allocated by the cache. ^szPage will not be a power of two. ^szPage +** will the page size of the database file that is to be cached plus an +** increment (here called "R") of about 100 or 200. ^SQLite will use the +** extra R bytes on each page to store metadata about the underlying +** database page on disk. The value of R depends +** on the SQLite version, the target platform, and how SQLite was compiled. +** ^R is constant for a particular build of SQLite. ^The second argument to +** xCreate(), bPurgeable, is true if the cache being created will +** be used to cache database pages of a file stored on disk, or +** false if it is used for an in-memory database. ^The cache implementation +** does not have to do anything special based with the value of bPurgeable; +** it is purely advisory. ^On a cache where bPurgeable is false, SQLite will +** never invoke xUnpin() except to deliberately delete a page. +** ^In other words, a cache created with bPurgeable set to false will +** never contain any unpinned pages. +** +** ^(The xCachesize() method may be called at any time by SQLite to set the +** suggested maximum cache-size (number of pages stored by) the cache +** instance passed as the first argument. This is the value configured using +** the SQLite "[PRAGMA cache_size]" command.)^ ^As with the bPurgeable +** parameter, the implementation is not required to do anything with this +** value; it is advisory only. +** +** ^The xPagecount() method should return the number of pages currently +** stored in the cache. +** +** ^The xFetch() method is used to fetch a page and return a pointer to it. +** ^A 'page', in this context, is a buffer of szPage bytes aligned at an +** 8-byte boundary. ^The page to be fetched is determined by the key. ^The +** mimimum key value is 1. After it has been retrieved using xFetch, the page +** is considered to be "pinned". +** +** ^If the requested page is already in the page cache, then the page cache +** implementation must return a pointer to the page buffer with its content +** intact. ^(If the requested page is not already in the cache, then the +** behavior of the cache implementation is determined by the value of the +** createFlag parameter passed to xFetch, according to the following table: +** +** +**
createFlag Behaviour when page is not already in cache +**
0 Do not allocate a new page. Return NULL. +**
1 Allocate a new page if it easy and convenient to do so. +** Otherwise return NULL. +**
2 Make every effort to allocate a new page. Only return +** NULL if allocating a new page is effectively impossible. +**
)^ +** +** SQLite will normally invoke xFetch() with a createFlag of 0 or 1. If +** a call to xFetch() with createFlag==1 returns NULL, then SQLite will +** attempt to unpin one or more cache pages by spilling the content of +** pinned pages to disk and synching the operating system disk cache. After +** attempting to unpin pages, the xFetch() method will be invoked again with +** a createFlag of 2. +** +** ^xUnpin() is called by SQLite with a pointer to a currently pinned page +** as its second argument. ^(If the third parameter, discard, is non-zero, +** then the page should be evicted from the cache. In this case SQLite +** assumes that the next time the page is retrieved from the cache using +** the xFetch() method, it will be zeroed.)^ ^If the discard parameter is +** zero, then the page is considered to be unpinned. ^The cache implementation +** may choose to evict unpinned pages at any time. +** +** ^(The cache is not required to perform any reference counting. A single +** call to xUnpin() unpins the page regardless of the number of prior calls +** to xFetch().)^ +** +** ^The xRekey() method is used to change the key value associated with the +** page passed as the second argument from oldKey to newKey. ^If the cache +** previously contains an entry associated with newKey, it should be +** discarded. ^Any prior cache entry associated with newKey is guaranteed not +** to be pinned. +** +** ^When SQLite calls the xTruncate() method, the cache must discard all +** existing cache entries with page numbers (keys) greater than or equal +** to the value of the iLimit parameter passed to xTruncate(). ^If any +** of these pages are pinned, they are implicitly unpinned, meaning that +** they can be safely discarded. +** +** ^The xDestroy() method is used to delete a cache allocated by xCreate(). +** All resources associated with the specified cache should be freed. ^After +** calling the xDestroy() method, SQLite considers the [sqlite3_pcache*] +** handle invalid, and will not use it with any other sqlite3_pcache_methods +** functions. */ -int sqlite3_create_collation( - sqlite3*, - const char *zName, - int eTextRep, - void*, - int(*xCompare)(void*,int,const void*,int,const void*) -); -int sqlite3_create_collation16( - sqlite3*, - const char *zName, - int eTextRep, - void*, - int(*xCompare)(void*,int,const void*,int,const void*) -); +typedef struct sqlite3_pcache_methods sqlite3_pcache_methods; +struct sqlite3_pcache_methods { + void *pArg; + int (*xInit)(void*); + void (*xShutdown)(void*); + sqlite3_pcache *(*xCreate)(int szPage, int bPurgeable); + void (*xCachesize)(sqlite3_pcache*, int nCachesize); + int (*xPagecount)(sqlite3_pcache*); + void *(*xFetch)(sqlite3_pcache*, unsigned key, int createFlag); + void (*xUnpin)(sqlite3_pcache*, void*, int discard); + void (*xRekey)(sqlite3_pcache*, void*, unsigned oldKey, unsigned newKey); + void (*xTruncate)(sqlite3_pcache*, unsigned iLimit); + void (*xDestroy)(sqlite3_pcache*); +}; /* -** To avoid having to register all collation sequences before a database -** can be used, a single callback function may be registered with the -** database handle to be called whenever an undefined collation sequence is -** required. +** CAPI3REF: Online Backup Object +** EXPERIMENTAL ** -** If the function is registered using the sqlite3_collation_needed() API, -** then it is passed the names of undefined collation sequences as strings -** encoded in UTF-8. If sqlite3_collation_needed16() is used, the names -** are passed as UTF-16 in machine native byte order. A call to either -** function replaces any existing callback. +** The sqlite3_backup object records state information about an ongoing +** online backup operation. ^The sqlite3_backup object is created by +** a call to [sqlite3_backup_init()] and is destroyed by a call to +** [sqlite3_backup_finish()]. ** -** When the user-function is invoked, the first argument passed is a copy -** of the second argument to sqlite3_collation_needed() or -** sqlite3_collation_needed16(). The second argument is the database -** handle. The third argument is one of SQLITE_UTF8, SQLITE_UTF16BE or -** SQLITE_UTF16LE, indicating the most desirable form of the collation -** sequence function required. The fourth parameter is the name of the -** required collation sequence. +** See Also: [Using the SQLite Online Backup API] +*/ +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 +** for copying in-memory databases to or from persistent files. +** +** See Also: [Using the SQLite Online Backup API] +** +** ^Exclusive access is required to the destination database for the +** duration of the operation. ^However the source database is only +** read-locked while it is actually being read; it is not locked +** continuously for the entire backup operation. ^Thus, the backup may be +** performed on a live source database without preventing other users from +** reading or writing to the source database while the backup is underway. +** +** ^(To perform a backup operation: +**
    +**
  1. sqlite3_backup_init() is called once to initialize the +** backup, +**
  2. sqlite3_backup_step() is called one or more times to transfer +** the data between the two databases, and finally +**
  3. sqlite3_backup_finish() is called to release all resources +** associated with the backup operation. +**
)^ +** There should be exactly one call to sqlite3_backup_finish() for each +** successful call to sqlite3_backup_init(). +** +** sqlite3_backup_init() +** +** ^The D and N arguments to sqlite3_backup_init(D,N,S,M) are the +** [database connection] associated with the destination database +** and the database name, respectively. +** ^The database name is "main" for the main database, "temp" for the +** temporary database, or the name specified after the AS keyword in +** an [ATTACH] statement for an attached database. +** ^The S and M arguments passed to +** sqlite3_backup_init(D,N,S,M) identify the [database connection] +** and database name of the source database, respectively. +** ^The source and destination [database connections] (parameters S and D) +** must be different or else sqlite3_backup_init(D,N,S,M) will file with +** an error. ** -** The collation sequence is returned to SQLite by a collation-needed -** callback using the sqlite3_create_collation() or -** sqlite3_create_collation16() APIs, described above. +** ^If an error occurs within sqlite3_backup_init(D,N,S,M), then NULL is +** returned and an error code and error message are store3d in the +** destination [database connection] D. +** ^The error code and message for the failed call to sqlite3_backup_init() +** can be retrieved using the [sqlite3_errcode()], [sqlite3_errmsg()], and/or +** [sqlite3_errmsg16()] functions. +** ^A successful call to sqlite3_backup_init() returns a pointer to an +** [sqlite3_backup] object. +** ^The [sqlite3_backup] object may be used with the sqlite3_backup_step() and +** sqlite3_backup_finish() functions to perform the specified backup +** operation. +** +** sqlite3_backup_step() +** +** ^Function sqlite3_backup_step(B,N) will copy up to N pages between +** the source and destination databases specified by [sqlite3_backup] object B. +** ^If N is negative, all remaining source pages are copied. +** ^If sqlite3_backup_step(B,N) successfully copies N pages and there +** are still more pages to be copied, then the function resturns [SQLITE_OK]. +** ^If sqlite3_backup_step(B,N) successfully finishes copying all pages +** from source to destination, then it returns [SQLITE_DONE]. +** ^If an error occurs while running sqlite3_backup_step(B,N), +** then an [error code] is returned. ^As well as [SQLITE_OK] and +** [SQLITE_DONE], a call to sqlite3_backup_step() may return [SQLITE_READONLY], +** [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. +** +** ^If sqlite3_backup_step() cannot obtain a required file-system lock, then +** the [sqlite3_busy_handler | busy-handler function] +** is invoked (if one is specified). ^If the +** busy-handler returns non-zero before the lock is available, then +** [SQLITE_BUSY] is returned to the caller. ^In this case the call to +** sqlite3_backup_step() can be retried later. ^If the source +** [database connection] +** is being used to write to the source database when sqlite3_backup_step() +** is called, then [SQLITE_LOCKED] is returned immediately. ^Again, in this +** case the call to sqlite3_backup_step() can be retried later on. ^(If +** [SQLITE_IOERR_ACCESS | SQLITE_IOERR_XXX], [SQLITE_NOMEM], or +** [SQLITE_READONLY] is returned, then +** there is no point in retrying the call to sqlite3_backup_step(). These +** errors are considered fatal.)^ The application must accept +** that the backup operation has failed and pass the backup operation handle +** to the sqlite3_backup_finish() to release associated resources. +** +** ^The first call to sqlite3_backup_step() obtains an exclusive lock +** on the destination file. ^The exclusive lock is not released until either +** sqlite3_backup_finish() is called or the backup operation is complete +** and sqlite3_backup_step() returns [SQLITE_DONE]. ^Every call to +** sqlite3_backup_step() obtains a [shared lock] on the source database that +** lasts for the duration of the sqlite3_backup_step() call. +** ^Because the source database is not locked between calls to +** sqlite3_backup_step(), the source database may be modified mid-way +** through the backup process. ^If the source database is modified by an +** external process or via a database connection other than the one being +** used by the backup operation, then the backup will be automatically +** restarted by the next call to sqlite3_backup_step(). ^If the source +** database is modified by the using the same database connection as is used +** by the backup operation, then the backup database is automatically +** updated at the same time. +** +** sqlite3_backup_finish() +** +** When sqlite3_backup_step() has returned [SQLITE_DONE], or when the +** application wishes to abandon the backup operation, the application +** should destroy the [sqlite3_backup] by passing it to sqlite3_backup_finish(). +** ^The sqlite3_backup_finish() interfaces releases all +** resources associated with the [sqlite3_backup] object. +** ^If sqlite3_backup_step() has not yet returned [SQLITE_DONE], then any +** active write-transaction on the destination database is rolled back. +** The [sqlite3_backup] object is invalid +** and may not be used following a call to sqlite3_backup_finish(). +** +** ^The value returned by sqlite3_backup_finish is [SQLITE_OK] if no +** sqlite3_backup_step() errors occurred, regardless or whether or not +** sqlite3_backup_step() completed. +** ^If an out-of-memory condition or IO error occurred during any prior +** sqlite3_backup_step() call on the same [sqlite3_backup] object, then +** sqlite3_backup_finish() returns the corresponding [error code]. +** +** ^A return of [SQLITE_BUSY] or [SQLITE_LOCKED] from sqlite3_backup_step() +** is not a permanent error and does not affect the return value of +** sqlite3_backup_finish(). +** +** sqlite3_backup_remaining(), sqlite3_backup_pagecount() +** +** ^Each call to sqlite3_backup_step() sets two values inside +** the [sqlite3_backup] object: the number of pages still to be backed +** up and the total number of pages in the source databae file. +** The sqlite3_backup_remaining() and sqlite3_backup_pagecount() interfaces +** retrieve these two values, respectively. +** +** ^The values returned by these functions are only updated by +** sqlite3_backup_step(). ^If the source database is modified during a backup +** operation, then the values are not updated to account for any extra +** pages that need to be updated or the size of the source database file +** changing. +** +** Concurrent Usage of Database Handles +** +** ^The source [database connection] may be used by the application for other +** purposes while a backup operation is underway or being initialized. +** ^If SQLite is compiled and configured to support threadsafe database +** connections, then the source database connection may be used concurrently +** from within other threads. +** +** However, the application must guarantee that the destination +** [database connection] is not passed to any other API (by any thread) after +** sqlite3_backup_init() is called and before the corresponding call to +** sqlite3_backup_finish(). SQLite does not currently check to see +** if the application incorrectly accesses the destination [database connection] +** and so no error code is reported, but the operations may malfunction +** nevertheless. Use of the destination database connection while a +** backup is in progress might also also cause a mutex deadlock. +** +** If running in [shared cache mode], the application must +** guarantee that the shared cache used by the destination database +** is not accessed while the backup is running. In practice this means +** that the application must guarantee that the disk file being +** backed up to is not accessed by any connection within the process, +** not just the specific connection that was passed to sqlite3_backup_init(). +** +** The [sqlite3_backup] object itself is partially threadsafe. Multiple +** threads may safely make multiple concurrent calls to sqlite3_backup_step(). +** However, the sqlite3_backup_remaining() and sqlite3_backup_pagecount() +** APIs are not strictly speaking threadsafe. If they are invoked at the +** same time as another thread is invoking sqlite3_backup_step() it is +** possible that they return invalid values. */ -int sqlite3_collation_needed( - sqlite3*, - void*, - void(*)(void*,sqlite3*,int eTextRep,const char*) -); -int sqlite3_collation_needed16( - sqlite3*, - void*, - void(*)(void*,sqlite3*,int eTextRep,const void*) +SQLITE_API sqlite3_backup *sqlite3_backup_init( + sqlite3 *pDest, /* Destination database handle */ + const char *zDestName, /* Destination database name */ + sqlite3 *pSource, /* Source database handle */ + const char *zSourceName /* Source database name */ ); +SQLITE_API int sqlite3_backup_step(sqlite3_backup *p, int nPage); +SQLITE_API int sqlite3_backup_finish(sqlite3_backup *p); +SQLITE_API int sqlite3_backup_remaining(sqlite3_backup *p); +SQLITE_API int sqlite3_backup_pagecount(sqlite3_backup *p); /* -** Specify the key for an encrypted database. This routine should be -** called right after sqlite3_open(). +** CAPI3REF: Unlock Notification +** EXPERIMENTAL ** -** The code to implement this API is not available in the public release -** of SQLite. +** ^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 +** individual tables within the shared-cache cannot be obtained. See +** [SQLite Shared-Cache Mode] for a description of shared-cache locking. +** ^This API may be used to register a callback that SQLite will invoke +** when the connection currently holding the required lock relinquishes it. +** ^This API is only available if the library was compiled with the +** [SQLITE_ENABLE_UNLOCK_NOTIFY] C-preprocessor symbol defined. +** +** See Also: [Using the SQLite Unlock Notification Feature]. +** +** ^Shared-cache locks are released when a database connection concludes +** its current transaction, either by committing it or rolling it back. +** +** ^When a connection (known as the blocked connection) fails to obtain a +** shared-cache lock and SQLITE_LOCKED is returned to the caller, the +** identity of the database connection (the blocking connection) that +** has locked the required resource is stored internally. ^After an +** application receives an SQLITE_LOCKED error, it may call the +** sqlite3_unlock_notify() method with the blocked connection handle as +** the first argument to register for a callback that will be invoked +** when the blocking connections current transaction is concluded. ^The +** callback is invoked from within the [sqlite3_step] or [sqlite3_close] +** call that concludes the blocking connections transaction. +** +** ^(If sqlite3_unlock_notify() is called in a multi-threaded application, +** there is a chance that the blocking connection will have already +** concluded its transaction by the time sqlite3_unlock_notify() is invoked. +** If this happens, then the specified callback is invoked immediately, +** from within the call to sqlite3_unlock_notify().)^ +** +** ^If the blocked connection is attempting to obtain a write-lock on a +** shared-cache table, and more than one other connection currently holds +** a read-lock on the same table, then SQLite arbitrarily selects one of +** the other connections to use as the blocking connection. +** +** ^(There may be at most one unlock-notify callback registered by a +** blocked connection. If sqlite3_unlock_notify() is called when the +** 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 canceled by closing the blocked +** connection using [sqlite3_close()]. +** +** The unlock-notify callback is not reentrant. If an application invokes +** any sqlite3_xxx API functions from within an unlock-notify callback, a +** crash or deadlock may be the result. +** +** ^Unless deadlock is detected (see below), sqlite3_unlock_notify() always +** returns SQLITE_OK. +** +** Callback Invocation Details +** +** When an unlock-notify callback is registered, the application provides a +** single void* pointer that is passed to the callback when it is invoked. +** However, the signature of the callback function allows SQLite to pass +** it an array of void* context pointers. The first argument passed to +** an unlock-notify callback is a pointer to an array of void* pointers, +** and the second is the number of entries in the array. +** +** When a blocking connections transaction is concluded, there may be +** more than one blocked connection that has registered for an unlock-notify +** callback. ^If two or more such blocked connections have specified the +** same callback function, then instead of invoking the callback function +** multiple times, it is invoked once with the set of void* context pointers +** specified by the blocked connections bundled together into an array. +** This gives the application an opportunity to prioritize any actions +** related to the set of unblocked database connections. +** +** Deadlock Detection +** +** Assuming that after registering for an unlock-notify callback a +** database waits for the callback to be issued before taking any further +** action (a reasonable assumption), then using this API may cause the +** application to deadlock. For example, if connection X is waiting for +** connection Y's transaction to be concluded, and similarly connection +** Y is waiting on connection X's transaction, then neither connection +** will proceed and the system may remain deadlocked indefinitely. +** +** To avoid this scenario, the sqlite3_unlock_notify() performs deadlock +** detection. ^If a given call to sqlite3_unlock_notify() would put the +** system in a deadlocked state, then SQLITE_LOCKED is returned and no +** unlock-notify callback is registered. The system is said to be in +** a deadlocked state if connection A has registered for an unlock-notify +** callback on the conclusion of connection B's transaction, and connection +** B has itself registered for an unlock-notify callback when connection +** A's transaction is concluded. ^Indirect deadlock is also detected, so +** the system is also considered to be deadlocked if connection B has +** registered for an unlock-notify callback on the conclusion of connection +** C's transaction, where connection C is waiting on connection A. ^Any +** number of levels of indirection are allowed. +** +** The "DROP TABLE" Exception +** +** When a call to [sqlite3_step()] returns SQLITE_LOCKED, it is almost +** always appropriate to call sqlite3_unlock_notify(). There is however, +** one exception. When executing a "DROP TABLE" or "DROP INDEX" statement, +** SQLite checks if there are any currently executing SELECT statements +** that belong to the same connection. If there are, SQLITE_LOCKED is +** returned. In this case there is no "blocking connection", so invoking +** sqlite3_unlock_notify() results in the unlock-notify callback being +** invoked immediately. If the application then re-attempts the "DROP TABLE" +** or "DROP INDEX" query, an infinite loop might be the result. +** +** One way around this problem is to check the extended error code returned +** by an sqlite3_step() call. ^(If there is a blocking connection, then the +** extended error code is set to SQLITE_LOCKED_SHAREDCACHE. Otherwise, in +** the special "DROP TABLE/INDEX" case, the extended error code is just +** SQLITE_LOCKED.)^ */ -int sqlite3_key( - sqlite3 *db, /* Database to be rekeyed */ - const void *pKey, int nKey /* The key */ +SQLITE_API int sqlite3_unlock_notify( + sqlite3 *pBlocked, /* Waiting connection */ + void (*xNotify)(void **apArg, int nArg), /* Callback function to invoke */ + void *pNotifyArg /* Argument to pass to xNotify */ ); + /* -** Change the key on an open database. If the current database is not -** encrypted, this routine will encrypt it. If pNew==0 or nNew==0, the -** database is decrypted. +** CAPI3REF: String Comparison +** EXPERIMENTAL ** -** The code to implement this API is not available in the public release -** of SQLite. +** ^The [sqlite3_strnicmp()] API allows applications and extensions to +** compare the contents of two buffers containing UTF-8 strings in a +** case-indendent fashion, using the same definition of case independence +** that SQLite uses internally when comparing identifiers. */ -int sqlite3_rekey( - sqlite3 *db, /* Database to be rekeyed */ - const void *pKey, int nKey /* The new key */ -); +SQLITE_API int sqlite3_strnicmp(const char *, const char *, int); /* -** If the following global variable is made to point to a constant -** string which is the name of a directory, then all temporary files -** created by SQLite will be placed in that directory. If this variable -** is NULL pointer, then SQLite does a search for an appropriate temporary -** file directory. +** CAPI3REF: Error Logging Interface +** EXPERIMENTAL ** -** This variable should only be changed when there are no open databases. -** Once sqlite3_open() has been called, this variable should not be changed -** until all database connections are closed. +** ^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. +** +** The sqlite3_log() interface is intended for use by extensions such as +** virtual tables, collating functions, and SQL functions. While there is +** nothing to prevent an application from calling sqlite3_log(), doing so +** is considered bad form. +** +** The zFormat string must not be NULL. +** +** To avoid deadlocks and other threading problems, the sqlite3_log() routine +** will not use dynamically allocated memory. The log message is stored in +** a fixed-length buffer on the stack. If the log message is longer than +** a few hundred characters, it will be truncated to the length of the +** buffer. +*/ +SQLITE_API void sqlite3_log(int iErrCode, const char *zFormat, ...); + +/* +** Undo the hack that converts floating point types to integer for +** builds on processors without floating point support. */ -extern const char *sqlite3_temp_directory; +#ifdef SQLITE_OMIT_FLOATING_POINT +# undef double +#endif #ifdef __cplusplus } /* End of the 'extern "C"' block */ #endif #endif + diff --git a/win32/sqlite3.lib b/win32/sqlite3.lib index 833ee6175fef63166299486a77940d81222bdb6c..83e0f812829c368bd78270c716f4b5f311529675 100644 GIT binary patch literal 40776 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 literal 22162 zcmdU0OKe<47QJ>t2u=tY2oS#Mgb)%)ocPnW^LPF~=jS*9GJ`s8yOUVcc6-`wCXCP^ zu|O%Cj| z)~SEhyH#GhtJ<8nx~FSv$^P|h+deeZ+t=6AXUn(g*K*I`kb1n-MMVE1+V~sM=A}ei zhKai0QP{eiNaA&b0>3D1n3L((5U*jW$K<{Ra>j;6qlEzyIf&Na77D9m^6v|^n z5;qV60|Oc#AOr@Hj>OvtfuSWD*ANQaRM>u*Na7oWz>eb@pCSZyc5A$k5ZJX!<4uGD zzbfpm6Go@U6oBqeK#)AOsGeToS08 z1Hi#fjV3~Y?-dSRB$D_HA#fP{67M4fj;zpl6`{aS3P;C@B)&ih92?g77$I;R`IdMO zA#kEg18JNPxT!F5iAdsWguqGEhXm^4Byg%%<2pj%^lFVa5DNUPa0dNH;!A|US>#9J zLxjNSIt|p}C~yw_QsNpyfgcsdP#+SXBLvPP9SM}_JaA#XK&5i*W0ix4&K(#% zc4qAKXl3p%^{G~^k1CZ@=SN0-1$s?usQ9s?=TDue9Nagy4;E9?vlWv-rF!K`vv#H0 zs#PW$Gp*XS7R92nZRck)EMB|YO^|BYt@>lSgUeme!SRd3aGEzHHSD&LB~c@m_c4L z6Ht)>d%Hi#j4M%wZqIebO{)a%vORAZ(xQ>#tZCRw6hOx%)J(1c^_*Aq16r)Qjz zVhKGqssBpLD!5KXNwY1Syd^1R=F92VI%8TIYpOCzFofh-!!%v_pj z!pw&{n?@Yuv*r(N5ST&I7(R#C(qQ`bXw(LwQOKeKWfvBi<+jJJPAD{bSyX@{Jc5l) zs4Z0kyXBsqo@!ODHX48CgNF${{nmvyq*s=8|rm)T6UW^Y; zcy^VZpUc{{+5}5YzS(JAo|>uFr~byWmP#DWW{qpfH(#UDs#=?g%g{42Tl-3_RjJNj z6P1=`(GvRlPU1pai)>v?C#aJ7S+<-pk*!;=&b2C2Gjp|OtI}-zb&4%OfhfmzYW(F| zbI$5?btbd5r)QhU#pSfLiNMxt%+^>ZR&TxrZ-1fVxBhIihJ6fcv_xR1ro}u#CUSKf z*wW6;`8$l+rW<2h!m7sFL%(`D^YxaqCPOn72KCKyV^$$;VZ=cj^p6JHA88XU&9>l` z#BKcA*RgVCb227nK@P<5)hlxtRB9@(q2->||tpT54OM4`SA7U2QZm>9O{AxRv|6*YU|8n#;e$~FB93ivMQZn$z?%pd!ww? zL;GYF#e13~4sn*8 zz5$N!Ao>*O-bwU6uxc04o4~I?eK&M~<9m=EFtiux0UO{~dKXx{k7yS77C5?}=o6rH z0Qmtr4-z$j?}3Ylh&}^`4ub<&afIkq;3r@lzP~Sk;bTM}0~_E&dk^S30Uh8baA}0- zYvA}vZUm&sk9=(9^LcDT;WI}Ut;(qfta?%l& zIMkf<@;J$ClblX4$EcV)%QH^=P3{g#`x?f@y6hKS$L8}o1xa&zkb>5MrCDc5Zp zIea}qyHLL{zL=n^)kMm*(oHgl`^7WK?O1Uvi@QjI3FLEk*rxbmQmze89Q9l{+ELGh ztt&hVZZFR1Wv~;<<2|q~3i$(UQ?n^@X71R>y`8}Cf4jT-xjx5jBmKFhPLG07;l)7P z<@$OKCL0*&I?dof*Kwi6L`Q|jGK=!3IxAA_v4iPB#ZLvRz-%pj*1Jke-h!lK2%hwiPM;@T&NcG8<<=A?W|ruFIA1FIA~!JBFkv-9I^}OHOS3MASZCk*2CC ztSqT|PF)-JE-F#A_D@FYIXm>8DT#M>Ln#YZWa}_d^a5s;ec)$1EA+yi?24QuoZ8dc zW~<{dnutJV-1gN;$>HFT>WR>i+Kr*j&C!*kYqyftb=%2^t?&Pd2HVY~sj7n@Uf%R* zDA98ECQRFjv8qSKnGK0&WFoi?KYlUn$?k*+0w*jy8T-s6JquqJ7DfK7Q;NV2!z94Z6^zWAd;FsVUbJKnVeFZkKNY$A1`~rd&T-(UZh597gl@Oi z%cI^OILcDWv#GVML6FM$M5m?pRHub@Z)d^)l^O)xvu5dw^}xxrTo6*JyT%)B%SW6D z6JKy5vAn>}T5goI7uUS9_1lQlDrGMtT4v90Ovr0PiQUFiQmZu*5pN77w5vUp`8U&1e%JC&Ds)fQ#^bl?o4{fubjp$NZ<#ldL+S|ilt~$t{$V|(&qzg2xo%!` zD0<4B=>d7#^$Fx6^Ok29>m|8nklw-VtlrcN@?S8hRu0$OKfL-#Mi|a4)KB!qFU*S$ z*$C@5Q9|!4^TPCQU;XB-)6A||xK7KaN--;A{9}BMbcmVx8Ckxi=@RUJcCqH8;=F^p zDIMOY!P|i~A=wacUhz%W9;+F64(l4Qc5+tv*(F!{_V|+j0I+L!E%+9Be0pcl9;5ju z1E+*ff^o6OD0Us3jy>lZk>%cSE0(}^SBMQ88pgq&^YKO6Z;8hz_pO|+a4#LmDBrUv zpE$isda3h;ufAY8HG9rg(irp72($7nFt);VJdjbxn^5L^BFyqrnG+YT?POVW`mPwA zT^_UC3Ae`=8J)|5eAs2T$JiepFY8dk$QZLvgageWpKS9eE6F_gQT6a(r7{W%B{!^v@08T4`}PZZckn{5e;B4rI*e zxW0kg0&EU~Ysq!a@#3=QT)gGT=(ykEO&ouWWC44ENMC&*#3;YIIVF3}SH^+xcwCRV zU6sY?Oag^DBc*&Wz}fy55A7GS&$yMahMKAyqYcHfDV z@`(WFZPY(47N8uBK2Cb8Pk)H_82o(P4OMH)?rlto5ShYbG~&X zGXB?v*qkOT%oo{-JZ14Yhd@>{7G;g?MApYx+bwNm{dzjUYfi7M!WLggBJ0d7*Rl-PnG8Bj+=ReVnXt>H0Hz?&BDjn;bTAlE}%}bFPw=BXhvB zK9|#QMcMi@_L7gHWY1Y_;x-mboj*0LZkm|GY_V^-mW-sUS58~V7jm(*S7H|6B zgPf2(=Nf^rIkTVhnHvO*p!nBCYy_4$o4lUDsn~PAaz$q60hg)W`7)!g2tUyv=Q7tS zSYe9SVQl0L1=yUz6(8vtH7R^W+igDQLI^J=d(PK>89OE64coz4asL9BO<3{^sL{ym zxzpiFZnCt;82MJ(6=1wA=P8jd?cD)Rbq9wRlRf8Z!*a$xLinWiWHCD3wJ>L7{@fej zyp#Tm;V|DF^k3`?Ft&eo6!V|%4=~q z9?E3Jou~F#BXhyw0IR%LWl=Kvw&#K)oYA=;$9On@KF-Lze$?kw|DeqYi}#_(ciJ(F z(cJ9gbnH1-`C_}N;})B^HONxu&$*alp6C;t$-a@uDGS$S>^yA5;*|fi-WFGEPj!-W zrFSXYsKTum>oI3C7~7t~BeU9BpEIzjDqOD_ zHw?r%|ESOCZZ?Y7YNQ>{1^JxKMsdbSPaX3ay`{f!jYit=e3;MaHia1@yVMI=jLx!u iJ2{`v;&c}M!km$od?CQ;9+ed4i>!q&T6`hb!v6rc@(@b^ -- 2.45.1

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 literal 223232 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�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⩔yx_)0Cef+v0zwj4ZMwyrq-uZ zmVNhl9=^k^&1sh27Uwu#uuAtVxzv{X;p)U&S1*5oV5mbdWTda4t z{kka~Q9#&qhxN%Ln2{(LJ^4C%R?Kz!i#i%FFxt{I!8K)^r0Z125yNvNSTGTZQh?=Q zydTwzhV+8rAZ>!j8ai@099%Vu#R9kTMtzdrumAq!3BB*wlW1?~DNRFM;LKl8mK=9 zN1taf9kJ&X4eBo+dQWfKqn`{G3?BN+96Y^z=v~|uLvMI|8;R?lZhBqUea5P8czF-A ztOI-WKK*4}U9n$zVZ-deEOpi4`j{JWsH3T0FBk|G^#=3byDvOdeA;$JfWRD!{iRr<(xPi0s0HB8pd9Z60`xL zDV}gWt`#2xHLe=R{hP<$0Z}FO6oo-}An!mn=vpZ_0Qzeht|fUEWJ%5&zX-jm=z#7q z6MhPxA>m-)0J@TXfqn-}$HNPHw&!R%g?WbNd5-FP4|&5nWXaJ(;W?;N!O)@iC_%ix zPcL37t{DnncnqVACj*q#$@g?mzgl!)!|8!@*>;ou`ZIzB{qsJek`(l_%SW#QNh0hj zPyYok15f%3l-666P*~qT=MYMF2-n1p>Zv+TL@|cIi1$lc1TAJw(PFRw6p;c(_$M7# z>J|}4Qn!6MRj9MFr}G+I9!%&Y;=Nj-mR`H=Wo z)98lTN?@Y)J^jQqKN}}HnFlI-o%mUp_}Mt|voJi~4K|IkSIX)2Lqmp^ap?UygP=fo zcqfoQ$mA4$HevF!F}(nMd<@Fam+cLC&19yJwYMQNiTCt*MuC5}X*mFP#N^}&l9Qt( zC-oyt2|-NT zc2B3`>90@KA>}-Kf<+K|d-Ni((TQWfM{q|{&#HbRKoxvLDd+?ZHXW$NJqkgVJn^)C zgKlw3+Vf+JiCa8b?Pr5rMHkwcn)sZ?nYAJ zWvCn#Y7Yc7J21_d-{q!?v-jlddI4^QK6wO7%rSYoXLr!k6)f6qs76t2uVeD^ZTDcy z2;2_SZ8zPWrrTh;e$(wT-A2>hWxB1V>oeWmrn|{>YfQJ(ba$BU7SnAu-R-8EV7e)$ z8*jQD_@*$B&6`A2TKb8d4R9J`XC#DU23|i za51ybC7bSSxLE7uCVywR<8UdRznLyQf9~%(4Dr7FeJ%#JUwQj{3dpR9qq{h{ubCj? zefu48Tzp-ed3Ct;nsT3y+xbW=xBEM>T-M{UTp?gPpc@dsBbM_6;=dcq4ZuwUWCI2l z#BenWW4K-=hD&$EaN?2}t^u%oJK_Vj0D6($_@l90%40|y?}q`$$sc}4$sZsBmIDrZ zVmKKa$F>#6a>F;qaNUJ5+z`@FhyP)uGm(q@utPc@?%}IrxD>=0KzQDK#7Eh;xMR6p zc<)4cWI*C4F)F;3>d9z-xd}zy#p*Kpb}&zy(+exD9X@;32@1fad{!0Q?yc zS0BfH1#mTBKA;$IJK%0W2jKgFJ%HB$e*w(d5XYqfvH&U|A8-?(3a|mN8SogO3$PDx z6z~_oBp|UNj=KnO6~GBt0VoGF0PY8TAMh;Tw}7_*Cjh5!jN{S)GN2IP1vCOW0N({X z1vmhB1uzUa2{_|U;0s^}Ai<`|QaC5lRxih## z?o941E(v4gv$=D)bGa1mJnnq%D_kmf0e2yH5tqhY%w59G<Vvbp)(0&XFf!+E$x zTrQW#UB_L|E#~sM0`3OxMy`-s!Y$>Nam%?PZUtA&m2fvj`s3=d+it7%-d5)Ku3l5U z-tTSje{M)%{j~qBmFvq_-|DNrbt)$FDX$LP>hsR@t335Hc;Ke4x;uQ8ey?>k`)+*z z9ASn}O<8T(Ixlv5qe!30csdZp@HTwWm+O(j%&-}CV>y$L#XcP?P`7b4wwagvytOku z{gvyy)q!aYtU;{XymeEN*7&OHrgK|U?emrSE34P9UhnmmW0!iQa;FAF<&B`gy7e=$ z8u8ockIu@BNS>elekQ)m1j@Z@eEy9!GYUwVMf^XT%qdN2rW4(m(_T@{X?o5;eU#s4 z^O?~kX3SF>CE`1?{Oi_L`d3#}SKl6mTRJh|kFKQQ5uIzT*PwH=eWpJ?CE&B)tPQMR zLrr?>ClUXsFUrgOWv39Xx3+dob@_DJ@V>6@wyCs?*Qg}C4c;|Vp=&GGm-#C1oc?-k zt#{_jYJXXD&%4d*UtJbxpmIzlLVh!2p*4|jpk|t?ePwn2)s^e(ytV$-wbdIcrwP|r zd27A5wl2E<>uPF|!rG|}s%yN{$f1|0>eSSF(QBv6Y`)KkQ4KCsSNECj2T$*G3Go*2 z`DgYL)9)0LHGNUT>gm25?HQH1=^ahp(_T^JZF#Ulali-&5Mj@Qgz-xvM%AZ!3|6fg>izc-Fc1@M4u zKp~(U;0JU7b^y8n1At+`1R$XW-vBZIA|MY?2q*9IFpcgOz zI06_3i~%M938+&FARUkekO4V>$nU>%`7h!YlID`fbRJYlir}*Od8|c@3G!J;g2Z1?nm&+JeB^wGb6pV~EN1`q_tme{JQh0q84i zjF=MfUq&*GE&sd&;2;&y7eeN6RD?GuSQVwZXSp7rH7t~K7v=$#%5tHJuf z$ngusF7tW8p}!Yfw4MrJ#N@bFVvB)p)&$%e-0DiG-Q4WhGJka?#@n$>7vLPRm33vl z^?`Lr$BF0i%G)YYY;GZ*>uQLnbKFuqH<$s%vB;s!M`|s1bL=`gO}Pe9xU$%F-gRqg zHq!GNdWK-3=R0CS7G|Wz*g8|Nz(izhoxgTX8H;l-dtO&V@mtxmk{z&SCjsM4g zSOCsI6`dBZB~MsnO}E)?MYc!m7UfdMeU9ypEER$2z%!g~d!PMXxyP~3akC49QjCK+ z?ri5Z&I8W(ov*kqb$7bqQOaT5i^XNjvzBv&SnEow$5wB9+^$FuNWYX~WV_>9^-O1$ z)9FMcP#eYV7jL%RVXMQ?_)O`C(mT@kl*b*ax=77eKU90QqppzqcW$m3hj9_N!O~&b zX4zrcW$ChfU^z>;LJ)-2LbX^gHi_R5?-#d<2gFyzMfRUad!?ZKJvmM(Ri1FXs}4J} zUA3+z*If4^ce(pDH`hV@lH-md4WCuA|G;jS3Zz-`wQ`w!m;8*pN3L@0R(EPQIoCM5 zoCU6zT!_4b!&n{tjDLdf=Re^SEcaVh+t%Aov!~cM+BexdrMIPKb%*+*_K}w9T;#mL zd6V;pu15Dx_mAA~yT{yI7sn;UaNK<+s}QUBxaarXq# zNH5wEc;NVWK7mi~GzmhNI%lQi4 z$Jg+FzJYJ#oB39L6W`8v@LTw8{C0i^zmwm^ck*5QZoZq}!}szB&`tyVAb*%Y!XM>_ z_+dWGkMd*uaekbiz_d)fCBc$tNw!=fWC)o;mcR?5APbt1E#wG!LcUNaEEh_Il|rdd zE>s9Up+@iv4ML;PEVK%ngm$4r*dlBbwhKFiox(1mQ|J|&%bZdq+)0$=Ft)f-7YSwIPjy2Dk zZ!NSgx0av}m0HWK6;_}1IqOO5BVw9uG5X5}Ta)eQw&!h=wt4pN*bAi+X{A&yRY*0G zUuu+^rA<<=^rCb`>Xm;lZ%}R^ybl_E_Bm@DzN~i!ojcH8C*0f+$!(6ikgv5gSst`J zV%cp;v_E6tXMe@MP`*vRNB+QZ+%fK$z@$~YnxH1C$!dz4s-~&wYKEGrW~sa?s}y`m1?P4u2!f%wMO-;4Qiv>thTC~)ONK)-J)(&x1+D@RClSJYL~iO z?N;}wy`Z6fbwC|d535Jiqw0`4tcKN5bxb|3j;j-xGK<#|v_vggOVLubG%a1r&@#0w zjn_m?)-)|!%hB?*e63Jhu9avjwNkBItI&K}jpo-Hv_`F2Yt=Ss?OKPnMcbxr*LG+- zwOv}L)}`&%y0tx8uXaG|*9NpfO{D%l#&Ij*d?bXeqt-F&aqGBs0@HZ$VuF|`CW|Rz zs+cCGi_7dK_LcThd%3;B?z7j}{q_cXqrKVQ3ZBqzzr|JVs&M&SH7>tvqw5}*?t0Mm zZKRI*aHQQ}`M$W&ew}@{Jzlz98juF1!)UXk(vWmax?Wx*mow}&GQ4eJ7$bZUwg^{* zDZ&$BiEu<1BK)KRFN77s31NirLD(Q%5GDu@goSOI=+vCq&KzgHv(UNRxzbtcEO+{x zHBP^?(b?>5b+$V@oco*~I8Qh)bOl`Bay{z$p{vWa-^Jl}3F7~?{6>B={~$kX`&g13 zD;-=q=HcOAZMjkC5Wg#KwEtH5s}k#2=eQGG;!OvKD_Tks?%*f+RLdonN$VW(Z1Eyd z5*LZ*+huzvxQrqNq<@dy#w5H7bHuUd$+sWy~o|_KJd@EOLh!LCOH4^;Vmha zR7;vA-I8I+v}9R$i)c~6`07%RQEm<=d7gEKgf{EYDkhYx$k!kCt~J+5T?% z#B!Q&rf{Bcv2eL?wO|vR!o9*~;UVD>q0Q=t#NND1 zW4>dlW36L@<2R1Q>Kod7+PD_uJjZ#FlSkXGbN<4)-i8# zYrD0>y2ZN9y4||Ny3@ML+G*{w?zVPY_gH(aY08tz-<3Y~A8L%&;ok0k8g%xW`z`ke zOrHUcKu#Rw)KB>yem{Se#flcJv)0jM~j zKy!G_^(WVRt})j~t{C?m_t|c4M+~VST&L@Au5s4{mH^`23GPI9vOC3{>P~Z~yEELG z?kqR&7TvO2b7#AA+2?g*fZ@}cHS<6yJ+@odyYNNo^LO-FaM`pyTiW4 zzRkYfzQexLz6)Hb3mm%JzQ^8cKVa{-57-CohwVq~N9{xQVSCsE|)80pIjsR(>3A#ahl z$=l@}@=ke|+$nd-yX9_Z#l7+YxnCZT2j#=^5&5V*BoE7Bc~l;gkIUoo1eUhql>{YG zNmf#nR3%MGS2C1LB}?HIQIQo*$yRcdJlYe`YsiUs?F{XxHmW@U?%oT|J_wz02>K#7 z2%1DRJM_Qp(B>*EiQqqJ;5}K;(KKPN@LM4aO(+W*>wrB~x&>NKiTn`CbgojO+@o|U ze^XK%)sEL3qmEA<=c<>h4(J-Z_L%k)?Rl-x`Koio`H9ny9(g|cn$vwF_4T0`t{qMm zbj*ABhxk0pCd*@%2ZUFJN$b<%Mrg5dFXrX$P2J4A=<&>Y#09LLA%)mqVisE-_T4!T}-bwhVXA;z$V4JQG5aUs8s z{~o`O|B9v5@}%XUqpiL#BbW( zmFtyO#izc>#+O*%N8HDuskca%VuXelK9=bhslu7o)5H_v!?xFLarRGLTsGFuA+scC z9Y04K#7Rl$W0y-#>EM6+UXia9D$7B=D=}s*S1J^rQlt1G(HoU!;A)f7u5>6{lx@m( zWruRWSqp9tJQZT^0Px}Bi!mnpD?itAyX9re+ZGxv{Oc0%fVJN`U>&p`wjQw_wGLT_ zt^Zu(%@8xiERh#QQ5H2ZTg(yj#C)+(TrQS~E5%Z=T&xg%VvXn*8^lJjS!@+IiS1&C zxJBG{%2@Ya^s47E&iv2k=ij&Qx4#W~nJc-$ZGS3#q&OUPjy8u~T?!rhUiC-nPt{+l ze^eK0H(*SV4=uRWd9~}ut}EPJsX>e16uyRWz>VU~;;Z7t_TM_VnpiF!O;BXpYr9^0 zNcxUEBCk zhoZXGhg@8T5&uE!Lh)tsEsXIm!AO2CB-gmzFBQoDkT23M*Bsifo$okfTo=2z9kJMJ z021K;X#cz2E3K2Bk)D>jF diff --git a/win32/sqlite3.h b/win32/sqlite3.h index 94558be..d72fdbd 100644 --- a/win32/sqlite3.h +++ b/win32/sqlite3.h @@ -10,9 +10,25 @@ ** ************************************************************************* ** This header file defines the interface that the SQLite library -** presents to client programs. +** presents to client programs. If a C-function, structure, datatype, +** or constant definition does not appear in this file, then it is +** not a published API of SQLite, is subject to change without +** notice, and should not be referenced by programs that use SQLite. ** -** @(#) $Id: sqlite3.h,v 1.1 2008/10/02 10:51:04 guigues Exp $ +** Some of the definitions that are in this file are marked as +** "experimental". Experimental interfaces are normally new +** features recently added to SQLite. We do not anticipate changes +** to experimental interfaces but reserve the right to make minor changes +** if experience from use "in the wild" suggest such changes are prudent. +** +** The official C-language API documentation for SQLite is derived +** from comments in this file. This file is the authoritative source +** on how SQLite interfaces are suppose to operate. +** +** The name of this file under configuration management is "sqlite.h.in". +** The makefile makes some minor changes to this file (such as inserting +** the version number) and changes its name to "sqlite3.h" as +** part of the build process. */ #ifndef _SQLITE3_H_ #define _SQLITE3_H_ @@ -25,118 +41,346 @@ extern "C" { #endif + +/* +** Add the ability to override 'extern' +*/ +#ifndef SQLITE_EXTERN +# define SQLITE_EXTERN extern +#endif + +#ifndef SQLITE_API +# define SQLITE_API +#endif + + +/* +** These no-op macros are used in front of interfaces to mark those +** interfaces as either deprecated or experimental. New applications +** should not use deprecated interfaces - they are support for backwards +** compatibility only. Application writers should be aware that +** experimental interfaces are subject to change in point releases. +** +** These macros used to resolve to various kinds of compiler magic that +** would generate warning messages when they were used. But that +** compiler magic ended up generating such a flurry of bug reports +** that we have taken it all out and gone back to using simple +** noop macros. +*/ +#define SQLITE_DEPRECATED +#define SQLITE_EXPERIMENTAL + /* -** The version of the SQLite library. +** Ensure these symbols were not defined by some previous header file. */ #ifdef SQLITE_VERSION # undef SQLITE_VERSION -#else -# define SQLITE_VERSION "3.0.8" +#endif +#ifdef SQLITE_VERSION_NUMBER +# undef SQLITE_VERSION_NUMBER #endif /* -** The version string is also compiled into the library so that a program -** can check to make sure that the lib*.a file and the *.h file are from -** the same version. The sqlite3_libversion() function returns a pointer -** to the sqlite3_version variable - useful in DLLs which cannot access -** global variables. +** CAPI3REF: Compile-Time Library Version Numbers +** +** ^(The [SQLITE_VERSION] C preprocessor macro in the sqlite3.h header +** evaluates to a string literal that is the SQLite version in the +** format "X.Y.Z" where X is the major version number (always 3 for +** SQLite3) and Y is the minor version number and Z is the release number.)^ +** ^(The [SQLITE_VERSION_NUMBER] C preprocessor macro resolves to an integer +** with the value (X*1000000 + Y*1000 + Z) where X, Y, and Z are the same +** numbers used in [SQLITE_VERSION].)^ +** The SQLITE_VERSION_NUMBER for any given release of SQLite will also +** be larger than the release from which it is derived. Either Y will +** be held constant and Z will be incremented or else Y will be incremented +** and Z will be reset to zero. +** +** Since version 3.6.18, SQLite source code has been stored in the +** Fossil configuration management +** system. ^The SQLITE_SOURCE_ID macro evalutes to +** a string which identifies a particular check-in of SQLite +** within its configuration management system. ^The SQLITE_SOURCE_ID +** string contains the date and time of the check-in (UTC) and an SHA1 +** hash of the entire source tree. +** +** See also: [sqlite3_libversion()], +** [sqlite3_libversion_number()], [sqlite3_sourceid()], +** [sqlite_version()] and [sqlite_source_id()]. */ -extern const char sqlite3_version[]; -const char *sqlite3_libversion(void); +#define SQLITE_VERSION "3.6.23.1" +#define SQLITE_VERSION_NUMBER 3006023 +#define SQLITE_SOURCE_ID "2010-03-26 22:28:06 b078b588d617e07886ad156e9f54ade6d823568e" /* -** Each open sqlite database is represented by an instance of the -** following opaque structure. +** CAPI3REF: Run-Time Library Version Numbers +** KEYWORDS: sqlite3_version, sqlite3_sourceid +** +** These interfaces provide the same information as the [SQLITE_VERSION], +** [SQLITE_VERSION_NUMBER], and [SQLITE_SOURCE_ID] C preprocessor macros +** but are associated with the library instead of the header file. ^(Cautious +** programmers might include assert() statements in their application to +** verify that values returned by these interfaces match the macros in +** the header, and thus insure that the application is +** compiled with matching library and header files. +** +**