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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

Dd2UCw;NHTU~ia3)$x{p^YgP;U^o^T{Xi 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 z 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 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. +** +**

+** 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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 -- 2.47.1