1226031Sstas/*
2226031Sstas** 2001 September 15
3226031Sstas**
4226031Sstas** The author disclaims copyright to this source code.  In place of
5226031Sstas** a legal notice, here is a blessing:
6226031Sstas**
7226031Sstas**    May you do good and not evil.
8226031Sstas**    May you find forgiveness for yourself and forgive others.
9226031Sstas**    May you share freely, never taking more than you give.
10226031Sstas**
11226031Sstas*************************************************************************
12226031Sstas** This header file defines the interface that the SQLite library
13226031Sstas** presents to client programs.  If a C-function, structure, datatype,
14226031Sstas** or constant definition does not appear in this file, then it is
15226031Sstas** not a published API of SQLite, is subject to change without
16226031Sstas** notice, and should not be referenced by programs that use SQLite.
17226031Sstas**
18226031Sstas** Some of the definitions that are in this file are marked as
19226031Sstas** "experimental".  Experimental interfaces are normally new
20226031Sstas** features recently added to SQLite.  We do not anticipate changes
21226031Sstas** to experimental interfaces but reserve the right to make minor changes
22226031Sstas** if experience from use "in the wild" suggest such changes are prudent.
23226031Sstas**
24226031Sstas** The official C-language API documentation for SQLite is derived
25226031Sstas** from comments in this file.  This file is the authoritative source
26226031Sstas** on how SQLite interfaces are suppose to operate.
27226031Sstas**
28226031Sstas** The name of this file under configuration management is "sqlite.h.in".
29226031Sstas** The makefile makes some minor changes to this file (such as inserting
30226031Sstas** the version number) and changes its name to "sqlite3.h" as
31226031Sstas** part of the build process.
32226031Sstas*/
33226031Sstas#ifndef _SQLITE3_H_
34226031Sstas#define _SQLITE3_H_
35226031Sstas#include <stdarg.h>     /* Needed for the definition of va_list */
36226031Sstas
37226031Sstas/*
38226031Sstas** Make sure we can call this stuff from C++.
39226031Sstas*/
40226031Sstas#ifdef __cplusplus
41226031Sstasextern "C" {
42226031Sstas#endif
43226031Sstas
44226031Sstas
45226031Sstas/*
46226031Sstas** Add the ability to override 'extern'
47226031Sstas*/
48226031Sstas#ifndef SQLITE_EXTERN
49226031Sstas# define SQLITE_EXTERN extern
50226031Sstas#endif
51226031Sstas
52226031Sstas#ifndef SQLITE_API
53226031Sstas# define SQLITE_API
54226031Sstas#endif
55226031Sstas
56226031Sstas
57226031Sstas/*
58226031Sstas** These no-op macros are used in front of interfaces to mark those
59226031Sstas** interfaces as either deprecated or experimental.  New applications
60226031Sstas** should not use deprecated interfaces - they are support for backwards
61226031Sstas** compatibility only.  Application writers should be aware that
62226031Sstas** experimental interfaces are subject to change in point releases.
63226031Sstas**
64226031Sstas** These macros used to resolve to various kinds of compiler magic that
65226031Sstas** would generate warning messages when they were used.  But that
66226031Sstas** compiler magic ended up generating such a flurry of bug reports
67226031Sstas** that we have taken it all out and gone back to using simple
68226031Sstas** noop macros.
69226031Sstas*/
70226031Sstas#define SQLITE_DEPRECATED
71226031Sstas#define SQLITE_EXPERIMENTAL
72226031Sstas
73226031Sstas/*
74226031Sstas** Ensure these symbols were not defined by some previous header file.
75226031Sstas*/
76226031Sstas#ifdef SQLITE_VERSION
77226031Sstas# undef SQLITE_VERSION
78226031Sstas#endif
79226031Sstas#ifdef SQLITE_VERSION_NUMBER
80226031Sstas# undef SQLITE_VERSION_NUMBER
81226031Sstas#endif
82226031Sstas
83226031Sstas/*
84226031Sstas** CAPI3REF: Compile-Time Library Version Numbers
85226031Sstas**
86226031Sstas** ^(The [SQLITE_VERSION] C preprocessor macro in the sqlite3.h header
87226031Sstas** evaluates to a string literal that is the SQLite version in the
88226031Sstas** format "X.Y.Z" where X is the major version number (always 3 for
89226031Sstas** SQLite3) and Y is the minor version number and Z is the release number.)^
90226031Sstas** ^(The [SQLITE_VERSION_NUMBER] C preprocessor macro resolves to an integer
91226031Sstas** with the value (X*1000000 + Y*1000 + Z) where X, Y, and Z are the same
92226031Sstas** numbers used in [SQLITE_VERSION].)^
93226031Sstas** The SQLITE_VERSION_NUMBER for any given release of SQLite will also
94226031Sstas** be larger than the release from which it is derived.  Either Y will
95226031Sstas** be held constant and Z will be incremented or else Y will be incremented
96226031Sstas** and Z will be reset to zero.
97226031Sstas**
98226031Sstas** Since version 3.6.18, SQLite source code has been stored in the
99226031Sstas** <a href="http://www.fossil-scm.org/">Fossil configuration management
100226128Sstas** system</a>.  ^The SQLITE_SOURCE_ID macro evaluates to
101226031Sstas** a string which identifies a particular check-in of SQLite
102226031Sstas** within its configuration management system.  ^The SQLITE_SOURCE_ID
103226031Sstas** string contains the date and time of the check-in (UTC) and an SHA1
104226031Sstas** hash of the entire source tree.
105226031Sstas**
106226031Sstas** See also: [sqlite3_libversion()],
107226031Sstas** [sqlite3_libversion_number()], [sqlite3_sourceid()],
108226031Sstas** [sqlite_version()] and [sqlite_source_id()].
109226031Sstas*/
110226128Sstas#define SQLITE_VERSION        "3.7.8"
111226128Sstas#define SQLITE_VERSION_NUMBER 3007008
112226128Sstas#define SQLITE_SOURCE_ID      "2011-09-19 14:49:19 3e0da808d2f5b4d12046e05980ca04578f581177"
113226031Sstas
114226031Sstas/*
115226031Sstas** CAPI3REF: Run-Time Library Version Numbers
116226031Sstas** KEYWORDS: sqlite3_version, sqlite3_sourceid
117226031Sstas**
118226031Sstas** These interfaces provide the same information as the [SQLITE_VERSION],
119226031Sstas** [SQLITE_VERSION_NUMBER], and [SQLITE_SOURCE_ID] C preprocessor macros
120226031Sstas** but are associated with the library instead of the header file.  ^(Cautious
121226031Sstas** programmers might include assert() statements in their application to
122226031Sstas** verify that values returned by these interfaces match the macros in
123226031Sstas** the header, and thus insure that the application is
124226031Sstas** compiled with matching library and header files.
125226031Sstas**
126226031Sstas** <blockquote><pre>
127226031Sstas** assert( sqlite3_libversion_number()==SQLITE_VERSION_NUMBER );
128226031Sstas** assert( strcmp(sqlite3_sourceid(),SQLITE_SOURCE_ID)==0 );
129226031Sstas** assert( strcmp(sqlite3_libversion(),SQLITE_VERSION)==0 );
130226031Sstas** </pre></blockquote>)^
131226031Sstas**
132226031Sstas** ^The sqlite3_version[] string constant contains the text of [SQLITE_VERSION]
133226031Sstas** macro.  ^The sqlite3_libversion() function returns a pointer to the
134226031Sstas** to the sqlite3_version[] string constant.  The sqlite3_libversion()
135226031Sstas** function is provided for use in DLLs since DLL users usually do not have
136226031Sstas** direct access to string constants within the DLL.  ^The
137226031Sstas** sqlite3_libversion_number() function returns an integer equal to
138226128Sstas** [SQLITE_VERSION_NUMBER].  ^The sqlite3_sourceid() function returns
139226128Sstas** a pointer to a string constant whose value is the same as the
140226031Sstas** [SQLITE_SOURCE_ID] C preprocessor macro.
141226031Sstas**
142226031Sstas** See also: [sqlite_version()] and [sqlite_source_id()].
143226031Sstas*/
144226031SstasSQLITE_API SQLITE_EXTERN const char sqlite3_version[];
145226031SstasSQLITE_API const char *sqlite3_libversion(void);
146226031SstasSQLITE_API const char *sqlite3_sourceid(void);
147226031SstasSQLITE_API int sqlite3_libversion_number(void);
148226031Sstas
149226031Sstas/*
150226031Sstas** CAPI3REF: Run-Time Library Compilation Options Diagnostics
151226031Sstas**
152226128Sstas** ^The sqlite3_compileoption_used() function returns 0 or 1
153226128Sstas** indicating whether the specified option was defined at
154226128Sstas** compile time.  ^The SQLITE_ prefix may be omitted from the
155226128Sstas** option name passed to sqlite3_compileoption_used().
156226031Sstas**
157226128Sstas** ^The sqlite3_compileoption_get() function allows iterating
158226031Sstas** over the list of options that were defined at compile time by
159226031Sstas** returning the N-th compile time option string.  ^If N is out of range,
160226128Sstas** sqlite3_compileoption_get() returns a NULL pointer.  ^The SQLITE_
161226128Sstas** prefix is omitted from any strings returned by
162226031Sstas** sqlite3_compileoption_get().
163226031Sstas**
164226031Sstas** ^Support for the diagnostic functions sqlite3_compileoption_used()
165226128Sstas** and sqlite3_compileoption_get() may be omitted by specifying the
166226031Sstas** [SQLITE_OMIT_COMPILEOPTION_DIAGS] option at compile time.
167226031Sstas**
168226031Sstas** See also: SQL functions [sqlite_compileoption_used()] and
169226031Sstas** [sqlite_compileoption_get()] and the [compile_options pragma].
170226031Sstas*/
171226128Sstas#ifndef SQLITE_OMIT_COMPILEOPTION_DIAGS
172226031SstasSQLITE_API int sqlite3_compileoption_used(const char *zOptName);
173226031SstasSQLITE_API const char *sqlite3_compileoption_get(int N);
174226128Sstas#endif
175226031Sstas
176226031Sstas/*
177226031Sstas** CAPI3REF: Test To See If The Library Is Threadsafe
178226031Sstas**
179226031Sstas** ^The sqlite3_threadsafe() function returns zero if and only if
180226031Sstas** SQLite was compiled mutexing code omitted due to the
181226031Sstas** [SQLITE_THREADSAFE] compile-time option being set to 0.
182226031Sstas**
183226031Sstas** SQLite can be compiled with or without mutexes.  When
184226031Sstas** the [SQLITE_THREADSAFE] C preprocessor macro is 1 or 2, mutexes
185226031Sstas** are enabled and SQLite is threadsafe.  When the
186226128Sstas** [SQLITE_THREADSAFE] macro is 0,
187226031Sstas** the mutexes are omitted.  Without the mutexes, it is not safe
188226031Sstas** to use SQLite concurrently from more than one thread.
189226031Sstas**
190226031Sstas** Enabling mutexes incurs a measurable performance penalty.
191226031Sstas** So if speed is of utmost importance, it makes sense to disable
192226031Sstas** the mutexes.  But for maximum safety, mutexes should be enabled.
193226031Sstas** ^The default behavior is for mutexes to be enabled.
194226031Sstas**
195226031Sstas** This interface can be used by an application to make sure that the
196226031Sstas** version of SQLite that it is linking against was compiled with
197226031Sstas** the desired setting of the [SQLITE_THREADSAFE] macro.
198226031Sstas**
199226031Sstas** This interface only reports on the compile-time mutex setting
200226031Sstas** of the [SQLITE_THREADSAFE] flag.  If SQLite is compiled with
201226031Sstas** SQLITE_THREADSAFE=1 or =2 then mutexes are enabled by default but
202226031Sstas** can be fully or partially disabled using a call to [sqlite3_config()]
203226031Sstas** with the verbs [SQLITE_CONFIG_SINGLETHREAD], [SQLITE_CONFIG_MULTITHREAD],
204226031Sstas** or [SQLITE_CONFIG_MUTEX].  ^(The return value of the
205226031Sstas** sqlite3_threadsafe() function shows only the compile-time setting of
206226031Sstas** thread safety, not any run-time changes to that setting made by
207226031Sstas** sqlite3_config(). In other words, the return value from sqlite3_threadsafe()
208226031Sstas** is unchanged by calls to sqlite3_config().)^
209226031Sstas**
210226031Sstas** See the [threading mode] documentation for additional information.
211226031Sstas*/
212226031SstasSQLITE_API int sqlite3_threadsafe(void);
213226031Sstas
214226031Sstas/*
215226031Sstas** CAPI3REF: Database Connection Handle
216226031Sstas** KEYWORDS: {database connection} {database connections}
217226031Sstas**
218226031Sstas** Each open SQLite database is represented by a pointer to an instance of
219226031Sstas** the opaque structure named "sqlite3".  It is useful to think of an sqlite3
220226031Sstas** pointer as an object.  The [sqlite3_open()], [sqlite3_open16()], and
221226031Sstas** [sqlite3_open_v2()] interfaces are its constructors, and [sqlite3_close()]
222226031Sstas** is its destructor.  There are many other interfaces (such as
223226031Sstas** [sqlite3_prepare_v2()], [sqlite3_create_function()], and
224226031Sstas** [sqlite3_busy_timeout()] to name but three) that are methods on an
225226031Sstas** sqlite3 object.
226226031Sstas*/
227226031Sstastypedef struct sqlite3 sqlite3;
228226031Sstas
229226031Sstas/*
230226031Sstas** CAPI3REF: 64-Bit Integer Types
231226031Sstas** KEYWORDS: sqlite_int64 sqlite_uint64
232226031Sstas**
233226031Sstas** Because there is no cross-platform way to specify 64-bit integer types
234226031Sstas** SQLite includes typedefs for 64-bit signed and unsigned integers.
235226031Sstas**
236226031Sstas** The sqlite3_int64 and sqlite3_uint64 are the preferred type definitions.
237226031Sstas** The sqlite_int64 and sqlite_uint64 types are supported for backwards
238226031Sstas** compatibility only.
239226031Sstas**
240226031Sstas** ^The sqlite3_int64 and sqlite_int64 types can store integer values
241226031Sstas** between -9223372036854775808 and +9223372036854775807 inclusive.  ^The
242226128Sstas** sqlite3_uint64 and sqlite_uint64 types can store integer values
243226031Sstas** between 0 and +18446744073709551615 inclusive.
244226031Sstas*/
245226031Sstas#ifdef SQLITE_INT64_TYPE
246226031Sstas  typedef SQLITE_INT64_TYPE sqlite_int64;
247226031Sstas  typedef unsigned SQLITE_INT64_TYPE sqlite_uint64;
248226031Sstas#elif defined(_MSC_VER) || defined(__BORLANDC__)
249226031Sstas  typedef __int64 sqlite_int64;
250226031Sstas  typedef unsigned __int64 sqlite_uint64;
251226031Sstas#else
252226031Sstas  typedef long long int sqlite_int64;
253226031Sstas  typedef unsigned long long int sqlite_uint64;
254226031Sstas#endif
255226031Sstastypedef sqlite_int64 sqlite3_int64;
256226031Sstastypedef sqlite_uint64 sqlite3_uint64;
257226031Sstas
258226031Sstas/*
259226031Sstas** If compiling for a processor that lacks floating point support,
260226031Sstas** substitute integer for floating-point.
261226031Sstas*/
262226031Sstas#ifdef SQLITE_OMIT_FLOATING_POINT
263226031Sstas# define double sqlite3_int64
264226031Sstas#endif
265226031Sstas
266226031Sstas/*
267226031Sstas** CAPI3REF: Closing A Database Connection
268226031Sstas**
269226031Sstas** ^The sqlite3_close() routine is the destructor for the [sqlite3] object.
270226031Sstas** ^Calls to sqlite3_close() return SQLITE_OK if the [sqlite3] object is
271226128Sstas** successfully destroyed and all associated resources are deallocated.
272226031Sstas**
273226031Sstas** Applications must [sqlite3_finalize | finalize] all [prepared statements]
274226031Sstas** and [sqlite3_blob_close | close] all [BLOB handles] associated with
275226031Sstas** the [sqlite3] object prior to attempting to close the object.  ^If
276226031Sstas** sqlite3_close() is called on a [database connection] that still has
277226031Sstas** outstanding [prepared statements] or [BLOB handles], then it returns
278226031Sstas** SQLITE_BUSY.
279226031Sstas**
280226031Sstas** ^If [sqlite3_close()] is invoked while a transaction is open,
281226031Sstas** the transaction is automatically rolled back.
282226031Sstas**
283226031Sstas** The C parameter to [sqlite3_close(C)] must be either a NULL
284226031Sstas** pointer or an [sqlite3] object pointer obtained
285226031Sstas** from [sqlite3_open()], [sqlite3_open16()], or
286226031Sstas** [sqlite3_open_v2()], and not previously closed.
287226128Sstas** ^Calling sqlite3_close() with a NULL pointer argument is a
288226031Sstas** harmless no-op.
289226031Sstas*/
290226031SstasSQLITE_API int sqlite3_close(sqlite3 *);
291226031Sstas
292226031Sstas/*
293226031Sstas** The type for a callback function.
294226031Sstas** This is legacy and deprecated.  It is included for historical
295226031Sstas** compatibility and is not documented.
296226031Sstas*/
297226031Sstastypedef int (*sqlite3_callback)(void*,int,char**, char**);
298226031Sstas
299226031Sstas/*
300226031Sstas** CAPI3REF: One-Step Query Execution Interface
301226031Sstas**
302226031Sstas** The sqlite3_exec() interface is a convenience wrapper around
303226031Sstas** [sqlite3_prepare_v2()], [sqlite3_step()], and [sqlite3_finalize()],
304226031Sstas** that allows an application to run multiple statements of SQL
305226128Sstas** without having to use a lot of C code.
306226031Sstas**
307226031Sstas** ^The sqlite3_exec() interface runs zero or more UTF-8 encoded,
308226031Sstas** semicolon-separate SQL statements passed into its 2nd argument,
309226031Sstas** in the context of the [database connection] passed in as its 1st
310226031Sstas** argument.  ^If the callback function of the 3rd argument to
311226031Sstas** sqlite3_exec() is not NULL, then it is invoked for each result row
312226031Sstas** coming out of the evaluated SQL statements.  ^The 4th argument to
313226128Sstas** sqlite3_exec() is relayed through to the 1st argument of each
314226031Sstas** callback invocation.  ^If the callback pointer to sqlite3_exec()
315226031Sstas** is NULL, then no callback is ever invoked and result rows are
316226031Sstas** ignored.
317226031Sstas**
318226031Sstas** ^If an error occurs while evaluating the SQL statements passed into
319226031Sstas** sqlite3_exec(), then execution of the current statement stops and
320226031Sstas** subsequent statements are skipped.  ^If the 5th parameter to sqlite3_exec()
321226031Sstas** is not NULL then any error message is written into memory obtained
322226031Sstas** from [sqlite3_malloc()] and passed back through the 5th parameter.
323226031Sstas** To avoid memory leaks, the application should invoke [sqlite3_free()]
324226031Sstas** on error message strings returned through the 5th parameter of
325226031Sstas** of sqlite3_exec() after the error message string is no longer needed.
326226031Sstas** ^If the 5th parameter to sqlite3_exec() is not NULL and no errors
327226031Sstas** occur, then sqlite3_exec() sets the pointer in its 5th parameter to
328226031Sstas** NULL before returning.
329226031Sstas**
330226031Sstas** ^If an sqlite3_exec() callback returns non-zero, the sqlite3_exec()
331226031Sstas** routine returns SQLITE_ABORT without invoking the callback again and
332226031Sstas** without running any subsequent SQL statements.
333226031Sstas**
334226031Sstas** ^The 2nd argument to the sqlite3_exec() callback function is the
335226031Sstas** number of columns in the result.  ^The 3rd argument to the sqlite3_exec()
336226031Sstas** callback is an array of pointers to strings obtained as if from
337226031Sstas** [sqlite3_column_text()], one for each column.  ^If an element of a
338226031Sstas** result row is NULL then the corresponding string pointer for the
339226031Sstas** sqlite3_exec() callback is a NULL pointer.  ^The 4th argument to the
340226031Sstas** sqlite3_exec() callback is an array of pointers to strings where each
341226031Sstas** entry represents the name of corresponding result column as obtained
342226031Sstas** from [sqlite3_column_name()].
343226031Sstas**
344226031Sstas** ^If the 2nd parameter to sqlite3_exec() is a NULL pointer, a pointer
345226128Sstas** to an empty string, or a pointer that contains only whitespace and/or
346226031Sstas** SQL comments, then no SQL statements are evaluated and the database
347226031Sstas** is not changed.
348226031Sstas**
349226031Sstas** Restrictions:
350226031Sstas**
351226031Sstas** <ul>
352226031Sstas** <li> The application must insure that the 1st parameter to sqlite3_exec()
353226031Sstas**      is a valid and open [database connection].
354226031Sstas** <li> The application must not close [database connection] specified by
355226031Sstas**      the 1st parameter to sqlite3_exec() while sqlite3_exec() is running.
356226031Sstas** <li> The application must not modify the SQL statement text passed into
357226031Sstas**      the 2nd parameter of sqlite3_exec() while sqlite3_exec() is running.
358226031Sstas** </ul>
359226031Sstas*/
360226031SstasSQLITE_API int sqlite3_exec(
361226031Sstas  sqlite3*,                                  /* An open database */
362226031Sstas  const char *sql,                           /* SQL to be evaluated */
363226031Sstas  int (*callback)(void*,int,char**,char**),  /* Callback function */
364226031Sstas  void *,                                    /* 1st argument to callback */
365226031Sstas  char **errmsg                              /* Error msg written here */
366226031Sstas);
367226031Sstas
368226031Sstas/*
369226031Sstas** CAPI3REF: Result Codes
370226031Sstas** KEYWORDS: SQLITE_OK {error code} {error codes}
371226031Sstas** KEYWORDS: {result code} {result codes}
372226031Sstas**
373226031Sstas** Many SQLite functions return an integer result code from the set shown
374226031Sstas** here in order to indicates success or failure.
375226031Sstas**
376226031Sstas** New error codes may be added in future versions of SQLite.
377226031Sstas**
378226128Sstas** See also: [SQLITE_IOERR_READ | extended result codes],
379226128Sstas** [sqlite3_vtab_on_conflict()] [SQLITE_ROLLBACK | result codes].
380226031Sstas*/
381226031Sstas#define SQLITE_OK           0   /* Successful result */
382226031Sstas/* beginning-of-error-codes */
383226031Sstas#define SQLITE_ERROR        1   /* SQL error or missing database */
384226031Sstas#define SQLITE_INTERNAL     2   /* Internal logic error in SQLite */
385226031Sstas#define SQLITE_PERM         3   /* Access permission denied */
386226031Sstas#define SQLITE_ABORT        4   /* Callback routine requested an abort */
387226031Sstas#define SQLITE_BUSY         5   /* The database file is locked */
388226031Sstas#define SQLITE_LOCKED       6   /* A table in the database is locked */
389226031Sstas#define SQLITE_NOMEM        7   /* A malloc() failed */
390226031Sstas#define SQLITE_READONLY     8   /* Attempt to write a readonly database */
391226031Sstas#define SQLITE_INTERRUPT    9   /* Operation terminated by sqlite3_interrupt()*/
392226031Sstas#define SQLITE_IOERR       10   /* Some kind of disk I/O error occurred */
393226031Sstas#define SQLITE_CORRUPT     11   /* The database disk image is malformed */
394226128Sstas#define SQLITE_NOTFOUND    12   /* Unknown opcode in sqlite3_file_control() */
395226031Sstas#define SQLITE_FULL        13   /* Insertion failed because database is full */
396226031Sstas#define SQLITE_CANTOPEN    14   /* Unable to open the database file */
397226128Sstas#define SQLITE_PROTOCOL    15   /* Database lock protocol error */
398226031Sstas#define SQLITE_EMPTY       16   /* Database is empty */
399226031Sstas#define SQLITE_SCHEMA      17   /* The database schema changed */
400226031Sstas#define SQLITE_TOOBIG      18   /* String or BLOB exceeds size limit */
401226031Sstas#define SQLITE_CONSTRAINT  19   /* Abort due to constraint violation */
402226031Sstas#define SQLITE_MISMATCH    20   /* Data type mismatch */
403226031Sstas#define SQLITE_MISUSE      21   /* Library used incorrectly */
404226031Sstas#define SQLITE_NOLFS       22   /* Uses OS features not supported on host */
405226031Sstas#define SQLITE_AUTH        23   /* Authorization denied */
406226031Sstas#define SQLITE_FORMAT      24   /* Auxiliary database format error */
407226031Sstas#define SQLITE_RANGE       25   /* 2nd parameter to sqlite3_bind out of range */
408226031Sstas#define SQLITE_NOTADB      26   /* File opened that is not a database file */
409226031Sstas#define SQLITE_ROW         100  /* sqlite3_step() has another row ready */
410226031Sstas#define SQLITE_DONE        101  /* sqlite3_step() has finished executing */
411226031Sstas/* end-of-error-codes */
412226031Sstas
413226031Sstas/*
414226031Sstas** CAPI3REF: Extended Result Codes
415226031Sstas** KEYWORDS: {extended error code} {extended error codes}
416226031Sstas** KEYWORDS: {extended result code} {extended result codes}
417226031Sstas**
418226031Sstas** In its default configuration, SQLite API routines return one of 26 integer
419226031Sstas** [SQLITE_OK | result codes].  However, experience has shown that many of
420226031Sstas** these result codes are too coarse-grained.  They do not provide as
421226031Sstas** much information about problems as programmers might like.  In an effort to
422226031Sstas** address this, newer versions of SQLite (version 3.3.8 and later) include
423226031Sstas** support for additional result codes that provide more detailed information
424226031Sstas** about errors. The extended result codes are enabled or disabled
425226031Sstas** on a per database connection basis using the
426226031Sstas** [sqlite3_extended_result_codes()] API.
427226031Sstas**
428226031Sstas** Some of the available extended result codes are listed here.
429226031Sstas** One may expect the number of extended result codes will be expand
430226031Sstas** over time.  Software that uses extended result codes should expect
431226031Sstas** to see new result codes in future releases of SQLite.
432226031Sstas**
433226031Sstas** The SQLITE_OK result code will never be extended.  It will always
434226031Sstas** be exactly zero.
435226031Sstas*/
436226031Sstas#define SQLITE_IOERR_READ              (SQLITE_IOERR | (1<<8))
437226031Sstas#define SQLITE_IOERR_SHORT_READ        (SQLITE_IOERR | (2<<8))
438226031Sstas#define SQLITE_IOERR_WRITE             (SQLITE_IOERR | (3<<8))
439226031Sstas#define SQLITE_IOERR_FSYNC             (SQLITE_IOERR | (4<<8))
440226031Sstas#define SQLITE_IOERR_DIR_FSYNC         (SQLITE_IOERR | (5<<8))
441226031Sstas#define SQLITE_IOERR_TRUNCATE          (SQLITE_IOERR | (6<<8))
442226031Sstas#define SQLITE_IOERR_FSTAT             (SQLITE_IOERR | (7<<8))
443226031Sstas#define SQLITE_IOERR_UNLOCK            (SQLITE_IOERR | (8<<8))
444226031Sstas#define SQLITE_IOERR_RDLOCK            (SQLITE_IOERR | (9<<8))
445226031Sstas#define SQLITE_IOERR_DELETE            (SQLITE_IOERR | (10<<8))
446226031Sstas#define SQLITE_IOERR_BLOCKED           (SQLITE_IOERR | (11<<8))
447226031Sstas#define SQLITE_IOERR_NOMEM             (SQLITE_IOERR | (12<<8))
448226031Sstas#define SQLITE_IOERR_ACCESS            (SQLITE_IOERR | (13<<8))
449226031Sstas#define SQLITE_IOERR_CHECKRESERVEDLOCK (SQLITE_IOERR | (14<<8))
450226031Sstas#define SQLITE_IOERR_LOCK              (SQLITE_IOERR | (15<<8))
451226031Sstas#define SQLITE_IOERR_CLOSE             (SQLITE_IOERR | (16<<8))
452226031Sstas#define SQLITE_IOERR_DIR_CLOSE         (SQLITE_IOERR | (17<<8))
453226128Sstas#define SQLITE_IOERR_SHMOPEN           (SQLITE_IOERR | (18<<8))
454226128Sstas#define SQLITE_IOERR_SHMSIZE           (SQLITE_IOERR | (19<<8))
455226128Sstas#define SQLITE_IOERR_SHMLOCK           (SQLITE_IOERR | (20<<8))
456226128Sstas#define SQLITE_IOERR_SHMMAP            (SQLITE_IOERR | (21<<8))
457226128Sstas#define SQLITE_IOERR_SEEK              (SQLITE_IOERR | (22<<8))
458226128Sstas#define SQLITE_LOCKED_SHAREDCACHE      (SQLITE_LOCKED |  (1<<8))
459226128Sstas#define SQLITE_BUSY_RECOVERY           (SQLITE_BUSY   |  (1<<8))
460226128Sstas#define SQLITE_CANTOPEN_NOTEMPDIR      (SQLITE_CANTOPEN | (1<<8))
461226128Sstas#define SQLITE_CORRUPT_VTAB            (SQLITE_CORRUPT | (1<<8))
462226128Sstas#define SQLITE_READONLY_RECOVERY       (SQLITE_READONLY | (1<<8))
463226128Sstas#define SQLITE_READONLY_CANTLOCK       (SQLITE_READONLY | (2<<8))
464226031Sstas
465226031Sstas/*
466226031Sstas** CAPI3REF: Flags For File Open Operations
467226031Sstas**
468226031Sstas** These bit values are intended for use in the
469226031Sstas** 3rd parameter to the [sqlite3_open_v2()] interface and
470226128Sstas** in the 4th parameter to the [sqlite3_vfs.xOpen] method.
471226031Sstas*/
472226031Sstas#define SQLITE_OPEN_READONLY         0x00000001  /* Ok for sqlite3_open_v2() */
473226031Sstas#define SQLITE_OPEN_READWRITE        0x00000002  /* Ok for sqlite3_open_v2() */
474226031Sstas#define SQLITE_OPEN_CREATE           0x00000004  /* Ok for sqlite3_open_v2() */
475226031Sstas#define SQLITE_OPEN_DELETEONCLOSE    0x00000008  /* VFS only */
476226031Sstas#define SQLITE_OPEN_EXCLUSIVE        0x00000010  /* VFS only */
477226031Sstas#define SQLITE_OPEN_AUTOPROXY        0x00000020  /* VFS only */
478226128Sstas#define SQLITE_OPEN_URI              0x00000040  /* Ok for sqlite3_open_v2() */
479226031Sstas#define SQLITE_OPEN_MAIN_DB          0x00000100  /* VFS only */
480226031Sstas#define SQLITE_OPEN_TEMP_DB          0x00000200  /* VFS only */
481226031Sstas#define SQLITE_OPEN_TRANSIENT_DB     0x00000400  /* VFS only */
482226031Sstas#define SQLITE_OPEN_MAIN_JOURNAL     0x00000800  /* VFS only */
483226031Sstas#define SQLITE_OPEN_TEMP_JOURNAL     0x00001000  /* VFS only */
484226031Sstas#define SQLITE_OPEN_SUBJOURNAL       0x00002000  /* VFS only */
485226031Sstas#define SQLITE_OPEN_MASTER_JOURNAL   0x00004000  /* VFS only */
486226031Sstas#define SQLITE_OPEN_NOMUTEX          0x00008000  /* Ok for sqlite3_open_v2() */
487226031Sstas#define SQLITE_OPEN_FULLMUTEX        0x00010000  /* Ok for sqlite3_open_v2() */
488226031Sstas#define SQLITE_OPEN_SHAREDCACHE      0x00020000  /* Ok for sqlite3_open_v2() */
489226031Sstas#define SQLITE_OPEN_PRIVATECACHE     0x00040000  /* Ok for sqlite3_open_v2() */
490226128Sstas#define SQLITE_OPEN_WAL              0x00080000  /* VFS only */
491226031Sstas
492226128Sstas/* Reserved:                         0x00F00000 */
493226128Sstas
494226031Sstas/*
495226031Sstas** CAPI3REF: Device Characteristics
496226031Sstas**
497226128Sstas** The xDeviceCharacteristics method of the [sqlite3_io_methods]
498226031Sstas** object returns an integer which is a vector of the these
499226031Sstas** bit values expressing I/O characteristics of the mass storage
500226031Sstas** device that holds the file that the [sqlite3_io_methods]
501226031Sstas** refers to.
502226031Sstas**
503226031Sstas** The SQLITE_IOCAP_ATOMIC property means that all writes of
504226031Sstas** any size are atomic.  The SQLITE_IOCAP_ATOMICnnn values
505226031Sstas** mean that writes of blocks that are nnn bytes in size and
506226031Sstas** are aligned to an address which is an integer multiple of
507226031Sstas** nnn are atomic.  The SQLITE_IOCAP_SAFE_APPEND value means
508226031Sstas** that when data is appended to a file, the data is appended
509226031Sstas** first then the size of the file is extended, never the other
510226031Sstas** way around.  The SQLITE_IOCAP_SEQUENTIAL property means that
511226031Sstas** information is written to disk in the same order as calls
512226031Sstas** to xWrite().
513226031Sstas*/
514226128Sstas#define SQLITE_IOCAP_ATOMIC                 0x00000001
515226128Sstas#define SQLITE_IOCAP_ATOMIC512              0x00000002
516226128Sstas#define SQLITE_IOCAP_ATOMIC1K               0x00000004
517226128Sstas#define SQLITE_IOCAP_ATOMIC2K               0x00000008
518226128Sstas#define SQLITE_IOCAP_ATOMIC4K               0x00000010
519226128Sstas#define SQLITE_IOCAP_ATOMIC8K               0x00000020
520226128Sstas#define SQLITE_IOCAP_ATOMIC16K              0x00000040
521226128Sstas#define SQLITE_IOCAP_ATOMIC32K              0x00000080
522226128Sstas#define SQLITE_IOCAP_ATOMIC64K              0x00000100
523226128Sstas#define SQLITE_IOCAP_SAFE_APPEND            0x00000200
524226128Sstas#define SQLITE_IOCAP_SEQUENTIAL             0x00000400
525226128Sstas#define SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN  0x00000800
526226031Sstas
527226031Sstas/*
528226031Sstas** CAPI3REF: File Locking Levels
529226031Sstas**
530226031Sstas** SQLite uses one of these integer values as the second
531226031Sstas** argument to calls it makes to the xLock() and xUnlock() methods
532226031Sstas** of an [sqlite3_io_methods] object.
533226031Sstas*/
534226031Sstas#define SQLITE_LOCK_NONE          0
535226031Sstas#define SQLITE_LOCK_SHARED        1
536226031Sstas#define SQLITE_LOCK_RESERVED      2
537226031Sstas#define SQLITE_LOCK_PENDING       3
538226031Sstas#define SQLITE_LOCK_EXCLUSIVE     4
539226031Sstas
540226031Sstas/*
541226031Sstas** CAPI3REF: Synchronization Type Flags
542226031Sstas**
543226031Sstas** When SQLite invokes the xSync() method of an
544226031Sstas** [sqlite3_io_methods] object it uses a combination of
545226031Sstas** these integer values as the second argument.
546226031Sstas**
547226031Sstas** When the SQLITE_SYNC_DATAONLY flag is used, it means that the
548226031Sstas** sync operation only needs to flush data to mass storage.  Inode
549226031Sstas** information need not be flushed. If the lower four bits of the flag
550226031Sstas** equal SQLITE_SYNC_NORMAL, that means to use normal fsync() semantics.
551226031Sstas** If the lower four bits equal SQLITE_SYNC_FULL, that means
552226031Sstas** to use Mac OS X style fullsync instead of fsync().
553226128Sstas**
554226128Sstas** Do not confuse the SQLITE_SYNC_NORMAL and SQLITE_SYNC_FULL flags
555226128Sstas** with the [PRAGMA synchronous]=NORMAL and [PRAGMA synchronous]=FULL
556226128Sstas** settings.  The [synchronous pragma] determines when calls to the
557226128Sstas** xSync VFS method occur and applies uniformly across all platforms.
558226128Sstas** The SQLITE_SYNC_NORMAL and SQLITE_SYNC_FULL flags determine how
559226128Sstas** energetic or rigorous or forceful the sync operations are and
560226128Sstas** only make a difference on Mac OSX for the default SQLite code.
561226128Sstas** (Third-party VFS implementations might also make the distinction
562226128Sstas** between SQLITE_SYNC_NORMAL and SQLITE_SYNC_FULL, but among the
563226128Sstas** operating systems natively supported by SQLite, only Mac OSX
564226128Sstas** cares about the difference.)
565226031Sstas*/
566226031Sstas#define SQLITE_SYNC_NORMAL        0x00002
567226031Sstas#define SQLITE_SYNC_FULL          0x00003
568226031Sstas#define SQLITE_SYNC_DATAONLY      0x00010
569226031Sstas
570226031Sstas/*
571226031Sstas** CAPI3REF: OS Interface Open File Handle
572226031Sstas**
573226128Sstas** An [sqlite3_file] object represents an open file in the
574226031Sstas** [sqlite3_vfs | OS interface layer].  Individual OS interface
575226031Sstas** implementations will
576226031Sstas** want to subclass this object by appending additional fields
577226031Sstas** for their own use.  The pMethods entry is a pointer to an
578226031Sstas** [sqlite3_io_methods] object that defines methods for performing
579226031Sstas** I/O operations on the open file.
580226031Sstas*/
581226031Sstastypedef struct sqlite3_file sqlite3_file;
582226031Sstasstruct sqlite3_file {
583226031Sstas  const struct sqlite3_io_methods *pMethods;  /* Methods for an open file */
584226031Sstas};
585226031Sstas
586226031Sstas/*
587226031Sstas** CAPI3REF: OS Interface File Virtual Methods Object
588226031Sstas**
589226128Sstas** Every file opened by the [sqlite3_vfs.xOpen] method populates an
590226031Sstas** [sqlite3_file] object (or, more commonly, a subclass of the
591226031Sstas** [sqlite3_file] object) with a pointer to an instance of this object.
592226031Sstas** This object defines the methods used to perform various operations
593226031Sstas** against the open file represented by the [sqlite3_file] object.
594226031Sstas**
595226128Sstas** If the [sqlite3_vfs.xOpen] method sets the sqlite3_file.pMethods element
596226031Sstas** to a non-NULL pointer, then the sqlite3_io_methods.xClose method
597226128Sstas** may be invoked even if the [sqlite3_vfs.xOpen] reported that it failed.  The
598226128Sstas** only way to prevent a call to xClose following a failed [sqlite3_vfs.xOpen]
599226128Sstas** is for the [sqlite3_vfs.xOpen] to set the sqlite3_file.pMethods element
600226128Sstas** to NULL.
601226031Sstas**
602226031Sstas** The flags argument to xSync may be one of [SQLITE_SYNC_NORMAL] or
603226031Sstas** [SQLITE_SYNC_FULL].  The first choice is the normal fsync().
604226031Sstas** The second choice is a Mac OS X style fullsync.  The [SQLITE_SYNC_DATAONLY]
605226031Sstas** flag may be ORed in to indicate that only the data of the file
606226031Sstas** and not its inode needs to be synced.
607226031Sstas**
608226031Sstas** The integer values to xLock() and xUnlock() are one of
609226031Sstas** <ul>
610226031Sstas** <li> [SQLITE_LOCK_NONE],
611226031Sstas** <li> [SQLITE_LOCK_SHARED],
612226031Sstas** <li> [SQLITE_LOCK_RESERVED],
613226031Sstas** <li> [SQLITE_LOCK_PENDING], or
614226031Sstas** <li> [SQLITE_LOCK_EXCLUSIVE].
615226031Sstas** </ul>
616226031Sstas** xLock() increases the lock. xUnlock() decreases the lock.
617226031Sstas** The xCheckReservedLock() method checks whether any database connection,
618226031Sstas** either in this process or in some other process, is holding a RESERVED,
619226031Sstas** PENDING, or EXCLUSIVE lock on the file.  It returns true
620226031Sstas** if such a lock exists and false otherwise.
621226031Sstas**
622226031Sstas** The xFileControl() method is a generic interface that allows custom
623226031Sstas** VFS implementations to directly control an open file using the
624226031Sstas** [sqlite3_file_control()] interface.  The second "op" argument is an
625226031Sstas** integer opcode.  The third argument is a generic pointer intended to
626226031Sstas** point to a structure that may contain arguments or space in which to
627226031Sstas** write return values.  Potential uses for xFileControl() might be
628226031Sstas** functions to enable blocking locks with timeouts, to change the
629226031Sstas** locking strategy (for example to use dot-file locks), to inquire
630226031Sstas** about the status of a lock, or to break stale locks.  The SQLite
631226031Sstas** core reserves all opcodes less than 100 for its own use.
632226031Sstas** A [SQLITE_FCNTL_LOCKSTATE | list of opcodes] less than 100 is available.
633226031Sstas** Applications that define a custom xFileControl method should use opcodes
634226128Sstas** greater than 100 to avoid conflicts.  VFS implementations should
635226128Sstas** return [SQLITE_NOTFOUND] for file control opcodes that they do not
636226128Sstas** recognize.
637226031Sstas**
638226031Sstas** The xSectorSize() method returns the sector size of the
639226031Sstas** device that underlies the file.  The sector size is the
640226031Sstas** minimum write that can be performed without disturbing
641226031Sstas** other bytes in the file.  The xDeviceCharacteristics()
642226031Sstas** method returns a bit vector describing behaviors of the
643226031Sstas** underlying device:
644226031Sstas**
645226031Sstas** <ul>
646226031Sstas** <li> [SQLITE_IOCAP_ATOMIC]
647226031Sstas** <li> [SQLITE_IOCAP_ATOMIC512]
648226031Sstas** <li> [SQLITE_IOCAP_ATOMIC1K]
649226031Sstas** <li> [SQLITE_IOCAP_ATOMIC2K]
650226031Sstas** <li> [SQLITE_IOCAP_ATOMIC4K]
651226031Sstas** <li> [SQLITE_IOCAP_ATOMIC8K]
652226031Sstas** <li> [SQLITE_IOCAP_ATOMIC16K]
653226031Sstas** <li> [SQLITE_IOCAP_ATOMIC32K]
654226031Sstas** <li> [SQLITE_IOCAP_ATOMIC64K]
655226031Sstas** <li> [SQLITE_IOCAP_SAFE_APPEND]
656226031Sstas** <li> [SQLITE_IOCAP_SEQUENTIAL]
657226031Sstas** </ul>
658226031Sstas**
659226031Sstas** The SQLITE_IOCAP_ATOMIC property means that all writes of
660226031Sstas** any size are atomic.  The SQLITE_IOCAP_ATOMICnnn values
661226031Sstas** mean that writes of blocks that are nnn bytes in size and
662226031Sstas** are aligned to an address which is an integer multiple of
663226031Sstas** nnn are atomic.  The SQLITE_IOCAP_SAFE_APPEND value means
664226031Sstas** that when data is appended to a file, the data is appended
665226031Sstas** first then the size of the file is extended, never the other
666226031Sstas** way around.  The SQLITE_IOCAP_SEQUENTIAL property means that
667226031Sstas** information is written to disk in the same order as calls
668226031Sstas** to xWrite().
669226031Sstas**
670226031Sstas** If xRead() returns SQLITE_IOERR_SHORT_READ it must also fill
671226031Sstas** in the unread portions of the buffer with zeros.  A VFS that
672226031Sstas** fails to zero-fill short reads might seem to work.  However,
673226031Sstas** failure to zero-fill short reads will eventually lead to
674226031Sstas** database corruption.
675226031Sstas*/
676226031Sstastypedef struct sqlite3_io_methods sqlite3_io_methods;
677226031Sstasstruct sqlite3_io_methods {
678226031Sstas  int iVersion;
679226031Sstas  int (*xClose)(sqlite3_file*);
680226031Sstas  int (*xRead)(sqlite3_file*, void*, int iAmt, sqlite3_int64 iOfst);
681226031Sstas  int (*xWrite)(sqlite3_file*, const void*, int iAmt, sqlite3_int64 iOfst);
682226031Sstas  int (*xTruncate)(sqlite3_file*, sqlite3_int64 size);
683226031Sstas  int (*xSync)(sqlite3_file*, int flags);
684226031Sstas  int (*xFileSize)(sqlite3_file*, sqlite3_int64 *pSize);
685226031Sstas  int (*xLock)(sqlite3_file*, int);
686226031Sstas  int (*xUnlock)(sqlite3_file*, int);
687226031Sstas  int (*xCheckReservedLock)(sqlite3_file*, int *pResOut);
688226031Sstas  int (*xFileControl)(sqlite3_file*, int op, void *pArg);
689226031Sstas  int (*xSectorSize)(sqlite3_file*);
690226031Sstas  int (*xDeviceCharacteristics)(sqlite3_file*);
691226128Sstas  /* Methods above are valid for version 1 */
692226128Sstas  int (*xShmMap)(sqlite3_file*, int iPg, int pgsz, int, void volatile**);
693226128Sstas  int (*xShmLock)(sqlite3_file*, int offset, int n, int flags);
694226128Sstas  void (*xShmBarrier)(sqlite3_file*);
695226128Sstas  int (*xShmUnmap)(sqlite3_file*, int deleteFlag);
696226128Sstas  /* Methods above are valid for version 2 */
697226031Sstas  /* Additional methods may be added in future releases */
698226031Sstas};
699226031Sstas
700226031Sstas/*
701226031Sstas** CAPI3REF: Standard File Control Opcodes
702226031Sstas**
703226031Sstas** These integer constants are opcodes for the xFileControl method
704226031Sstas** of the [sqlite3_io_methods] object and for the [sqlite3_file_control()]
705226031Sstas** interface.
706226031Sstas**
707226031Sstas** The [SQLITE_FCNTL_LOCKSTATE] opcode is used for debugging.  This
708226031Sstas** opcode causes the xFileControl method to write the current state of
709226031Sstas** the lock (one of [SQLITE_LOCK_NONE], [SQLITE_LOCK_SHARED],
710226031Sstas** [SQLITE_LOCK_RESERVED], [SQLITE_LOCK_PENDING], or [SQLITE_LOCK_EXCLUSIVE])
711226031Sstas** into an integer that the pArg argument points to. This capability
712226031Sstas** is used during testing and only needs to be supported when SQLITE_TEST
713226031Sstas** is defined.
714226128Sstas**
715226128Sstas** The [SQLITE_FCNTL_SIZE_HINT] opcode is used by SQLite to give the VFS
716226128Sstas** layer a hint of how large the database file will grow to be during the
717226128Sstas** current transaction.  This hint is not guaranteed to be accurate but it
718226128Sstas** is often close.  The underlying VFS might choose to preallocate database
719226128Sstas** file space based on this hint in order to help writes to the database
720226128Sstas** file run faster.
721226128Sstas**
722226128Sstas** The [SQLITE_FCNTL_CHUNK_SIZE] opcode is used to request that the VFS
723226128Sstas** extends and truncates the database file in chunks of a size specified
724226128Sstas** by the user. The fourth argument to [sqlite3_file_control()] should
725226128Sstas** point to an integer (type int) containing the new chunk-size to use
726226128Sstas** for the nominated database. Allocating database file space in large
727226128Sstas** chunks (say 1MB at a time), may reduce file-system fragmentation and
728226128Sstas** improve performance on some systems.
729226128Sstas**
730226128Sstas** The [SQLITE_FCNTL_FILE_POINTER] opcode is used to obtain a pointer
731226128Sstas** to the [sqlite3_file] object associated with a particular database
732226128Sstas** connection.  See the [sqlite3_file_control()] documentation for
733226128Sstas** additional information.
734226128Sstas**
735226128Sstas** ^(The [SQLITE_FCNTL_SYNC_OMITTED] opcode is generated internally by
736226128Sstas** SQLite and sent to all VFSes in place of a call to the xSync method
737226128Sstas** when the database connection has [PRAGMA synchronous] set to OFF.)^
738226128Sstas** Some specialized VFSes need this signal in order to operate correctly
739226128Sstas** when [PRAGMA synchronous | PRAGMA synchronous=OFF] is set, but most
740226128Sstas** VFSes do not need this signal and should silently ignore this opcode.
741226128Sstas** Applications should not call [sqlite3_file_control()] with this
742226128Sstas** opcode as doing so may disrupt the operation of the specialized VFSes
743226128Sstas** that do require it.
744226128Sstas**
745226128Sstas** ^The [SQLITE_FCNTL_WIN32_AV_RETRY] opcode is used to configure automatic
746226128Sstas** retry counts and intervals for certain disk I/O operations for the
747226128Sstas** windows [VFS] in order to work to provide robustness against
748226128Sstas** anti-virus programs.  By default, the windows VFS will retry file read,
749226128Sstas** file write, and file delete opertions up to 10 times, with a delay
750226128Sstas** of 25 milliseconds before the first retry and with the delay increasing
751226128Sstas** by an additional 25 milliseconds with each subsequent retry.  This
752226128Sstas** opcode allows those to values (10 retries and 25 milliseconds of delay)
753226128Sstas** to be adjusted.  The values are changed for all database connections
754226128Sstas** within the same process.  The argument is a pointer to an array of two
755226128Sstas** integers where the first integer i the new retry count and the second
756226128Sstas** integer is the delay.  If either integer is negative, then the setting
757226128Sstas** is not changed but instead the prior value of that setting is written
758226128Sstas** into the array entry, allowing the current retry settings to be
759226128Sstas** interrogated.  The zDbName parameter is ignored.
760226128Sstas**
761226128Sstas** ^The [SQLITE_FCNTL_PERSIST_WAL] opcode is used to set or query the
762226128Sstas** persistent [WAL | Write AHead Log] setting.  By default, the auxiliary
763226128Sstas** write ahead log and shared memory files used for transaction control
764226128Sstas** are automatically deleted when the latest connection to the database
765226128Sstas** closes.  Setting persistent WAL mode causes those files to persist after
766226128Sstas** close.  Persisting the files is useful when other processes that do not
767226128Sstas** have write permission on the directory containing the database file want
768226128Sstas** to read the database file, as the WAL and shared memory files must exist
769226128Sstas** in order for the database to be readable.  The fourth parameter to
770226128Sstas** [sqlite3_file_control()] for this opcode should be a pointer to an integer.
771226128Sstas** That integer is 0 to disable persistent WAL mode or 1 to enable persistent
772226128Sstas** WAL mode.  If the integer is -1, then it is overwritten with the current
773226128Sstas** WAL persistence setting.
774226128Sstas**
775226031Sstas*/
776226031Sstas#define SQLITE_FCNTL_LOCKSTATE        1
777226031Sstas#define SQLITE_GET_LOCKPROXYFILE      2
778226031Sstas#define SQLITE_SET_LOCKPROXYFILE      3
779226031Sstas#define SQLITE_LAST_ERRNO             4
780226128Sstas#define SQLITE_FCNTL_SIZE_HINT        5
781226128Sstas#define SQLITE_FCNTL_CHUNK_SIZE       6
782226128Sstas#define SQLITE_FCNTL_FILE_POINTER     7
783226128Sstas#define SQLITE_FCNTL_SYNC_OMITTED     8
784226128Sstas#define SQLITE_FCNTL_WIN32_AV_RETRY   9
785226128Sstas#define SQLITE_FCNTL_PERSIST_WAL     10
786226031Sstas
787226031Sstas/*
788226031Sstas** CAPI3REF: Mutex Handle
789226031Sstas**
790226031Sstas** The mutex module within SQLite defines [sqlite3_mutex] to be an
791226031Sstas** abstract type for a mutex object.  The SQLite core never looks
792226031Sstas** at the internal representation of an [sqlite3_mutex].  It only
793226031Sstas** deals with pointers to the [sqlite3_mutex] object.
794226031Sstas**
795226031Sstas** Mutexes are created using [sqlite3_mutex_alloc()].
796226031Sstas*/
797226031Sstastypedef struct sqlite3_mutex sqlite3_mutex;
798226031Sstas
799226031Sstas/*
800226031Sstas** CAPI3REF: OS Interface Object
801226031Sstas**
802226031Sstas** An instance of the sqlite3_vfs object defines the interface between
803226031Sstas** the SQLite core and the underlying operating system.  The "vfs"
804226128Sstas** in the name of the object stands for "virtual file system".  See
805226128Sstas** the [VFS | VFS documentation] for further information.
806226031Sstas**
807226031Sstas** The value of the iVersion field is initially 1 but may be larger in
808226031Sstas** future versions of SQLite.  Additional fields may be appended to this
809226031Sstas** object when the iVersion value is increased.  Note that the structure
810226031Sstas** of the sqlite3_vfs object changes in the transaction between
811226031Sstas** SQLite version 3.5.9 and 3.6.0 and yet the iVersion field was not
812226031Sstas** modified.
813226031Sstas**
814226031Sstas** The szOsFile field is the size of the subclassed [sqlite3_file]
815226031Sstas** structure used by this VFS.  mxPathname is the maximum length of
816226031Sstas** a pathname in this VFS.
817226031Sstas**
818226031Sstas** Registered sqlite3_vfs objects are kept on a linked list formed by
819226031Sstas** the pNext pointer.  The [sqlite3_vfs_register()]
820226031Sstas** and [sqlite3_vfs_unregister()] interfaces manage this list
821226031Sstas** in a thread-safe way.  The [sqlite3_vfs_find()] interface
822226031Sstas** searches the list.  Neither the application code nor the VFS
823226031Sstas** implementation should use the pNext pointer.
824226031Sstas**
825226031Sstas** The pNext field is the only field in the sqlite3_vfs
826226031Sstas** structure that SQLite will ever modify.  SQLite will only access
827226031Sstas** or modify this field while holding a particular static mutex.
828226031Sstas** The application should never modify anything within the sqlite3_vfs
829226031Sstas** object once the object has been registered.
830226031Sstas**
831226031Sstas** The zName field holds the name of the VFS module.  The name must
832226031Sstas** be unique across all VFS modules.
833226031Sstas**
834226128Sstas** [[sqlite3_vfs.xOpen]]
835226128Sstas** ^SQLite guarantees that the zFilename parameter to xOpen
836226031Sstas** is either a NULL pointer or string obtained
837226128Sstas** from xFullPathname() with an optional suffix added.
838226128Sstas** ^If a suffix is added to the zFilename parameter, it will
839226128Sstas** consist of a single "-" character followed by no more than
840226128Sstas** 10 alphanumeric and/or "-" characters.
841226128Sstas** ^SQLite further guarantees that
842226031Sstas** the string will be valid and unchanged until xClose() is
843226031Sstas** called. Because of the previous sentence,
844226031Sstas** the [sqlite3_file] can safely store a pointer to the
845226031Sstas** filename if it needs to remember the filename for some reason.
846226128Sstas** If the zFilename parameter to xOpen is a NULL pointer then xOpen
847226128Sstas** must invent its own temporary name for the file.  ^Whenever the
848226031Sstas** xFilename parameter is NULL it will also be the case that the
849226031Sstas** flags parameter will include [SQLITE_OPEN_DELETEONCLOSE].
850226031Sstas**
851226031Sstas** The flags argument to xOpen() includes all bits set in
852226031Sstas** the flags argument to [sqlite3_open_v2()].  Or if [sqlite3_open()]
853226031Sstas** or [sqlite3_open16()] is used, then flags includes at least
854226128Sstas** [SQLITE_OPEN_READWRITE] | [SQLITE_OPEN_CREATE].
855226031Sstas** If xOpen() opens a file read-only then it sets *pOutFlags to
856226031Sstas** include [SQLITE_OPEN_READONLY].  Other bits in *pOutFlags may be set.
857226031Sstas**
858226128Sstas** ^(SQLite will also add one of the following flags to the xOpen()
859226031Sstas** call, depending on the object being opened:
860226031Sstas**
861226031Sstas** <ul>
862226031Sstas** <li>  [SQLITE_OPEN_MAIN_DB]
863226031Sstas** <li>  [SQLITE_OPEN_MAIN_JOURNAL]
864226031Sstas** <li>  [SQLITE_OPEN_TEMP_DB]
865226031Sstas** <li>  [SQLITE_OPEN_TEMP_JOURNAL]
866226031Sstas** <li>  [SQLITE_OPEN_TRANSIENT_DB]
867226031Sstas** <li>  [SQLITE_OPEN_SUBJOURNAL]
868226031Sstas** <li>  [SQLITE_OPEN_MASTER_JOURNAL]
869226128Sstas** <li>  [SQLITE_OPEN_WAL]
870226128Sstas** </ul>)^
871226031Sstas**
872226031Sstas** The file I/O implementation can use the object type flags to
873226031Sstas** change the way it deals with files.  For example, an application
874226031Sstas** that does not care about crash recovery or rollback might make
875226031Sstas** the open of a journal file a no-op.  Writes to this journal would
876226031Sstas** also be no-ops, and any attempt to read the journal would return
877226031Sstas** SQLITE_IOERR.  Or the implementation might recognize that a database
878226031Sstas** file will be doing page-aligned sector reads and writes in a random
879226031Sstas** order and set up its I/O subsystem accordingly.
880226031Sstas**
881226031Sstas** SQLite might also add one of the following flags to the xOpen method:
882226031Sstas**
883226031Sstas** <ul>
884226031Sstas** <li> [SQLITE_OPEN_DELETEONCLOSE]
885226031Sstas** <li> [SQLITE_OPEN_EXCLUSIVE]
886226031Sstas** </ul>
887226031Sstas**
888226031Sstas** The [SQLITE_OPEN_DELETEONCLOSE] flag means the file should be
889226128Sstas** deleted when it is closed.  ^The [SQLITE_OPEN_DELETEONCLOSE]
890226128Sstas** will be set for TEMP databases and their journals, transient
891226128Sstas** databases, and subjournals.
892226031Sstas**
893226128Sstas** ^The [SQLITE_OPEN_EXCLUSIVE] flag is always used in conjunction
894226031Sstas** with the [SQLITE_OPEN_CREATE] flag, which are both directly
895226031Sstas** analogous to the O_EXCL and O_CREAT flags of the POSIX open()
896226128Sstas** API.  The SQLITE_OPEN_EXCLUSIVE flag, when paired with the
897226031Sstas** SQLITE_OPEN_CREATE, is used to indicate that file should always
898226031Sstas** be created, and that it is an error if it already exists.
899226128Sstas** It is <i>not</i> used to indicate the file should be opened
900226031Sstas** for exclusive access.
901226031Sstas**
902226128Sstas** ^At least szOsFile bytes of memory are allocated by SQLite
903226031Sstas** to hold the  [sqlite3_file] structure passed as the third
904226031Sstas** argument to xOpen.  The xOpen method does not have to
905226031Sstas** allocate the structure; it should just fill it in.  Note that
906226031Sstas** the xOpen method must set the sqlite3_file.pMethods to either
907226031Sstas** a valid [sqlite3_io_methods] object or to NULL.  xOpen must do
908226031Sstas** this even if the open fails.  SQLite expects that the sqlite3_file.pMethods
909226031Sstas** element will be valid after xOpen returns regardless of the success
910226031Sstas** or failure of the xOpen call.
911226031Sstas**
912226128Sstas** [[sqlite3_vfs.xAccess]]
913226128Sstas** ^The flags argument to xAccess() may be [SQLITE_ACCESS_EXISTS]
914226031Sstas** to test for the existence of a file, or [SQLITE_ACCESS_READWRITE] to
915226031Sstas** test whether a file is readable and writable, or [SQLITE_ACCESS_READ]
916226031Sstas** to test whether a file is at least readable.   The file can be a
917226031Sstas** directory.
918226031Sstas**
919226128Sstas** ^SQLite will always allocate at least mxPathname+1 bytes for the
920226031Sstas** output buffer xFullPathname.  The exact size of the output buffer
921226031Sstas** is also passed as a parameter to both  methods. If the output buffer
922226031Sstas** is not large enough, [SQLITE_CANTOPEN] should be returned. Since this is
923226031Sstas** handled as a fatal error by SQLite, vfs implementations should endeavor
924226031Sstas** to prevent this by setting mxPathname to a sufficiently large value.
925226031Sstas**
926226128Sstas** The xRandomness(), xSleep(), xCurrentTime(), and xCurrentTimeInt64()
927226128Sstas** interfaces are not strictly a part of the filesystem, but they are
928226031Sstas** included in the VFS structure for completeness.
929226031Sstas** The xRandomness() function attempts to return nBytes bytes
930226031Sstas** of good-quality randomness into zOut.  The return value is
931226031Sstas** the actual number of bytes of randomness obtained.
932226031Sstas** The xSleep() method causes the calling thread to sleep for at
933226128Sstas** least the number of microseconds given.  ^The xCurrentTime()
934226128Sstas** method returns a Julian Day Number for the current date and time as
935226128Sstas** a floating point value.
936226128Sstas** ^The xCurrentTimeInt64() method returns, as an integer, the Julian
937226128Sstas** Day Number multiplied by 86400000 (the number of milliseconds in
938226128Sstas** a 24-hour day).
939226128Sstas** ^SQLite will use the xCurrentTimeInt64() method to get the current
940226128Sstas** date and time if that method is available (if iVersion is 2 or
941226128Sstas** greater and the function pointer is not NULL) and will fall back
942226128Sstas** to xCurrentTime() if xCurrentTimeInt64() is unavailable.
943226031Sstas**
944226128Sstas** ^The xSetSystemCall(), xGetSystemCall(), and xNestSystemCall() interfaces
945226128Sstas** are not used by the SQLite core.  These optional interfaces are provided
946226128Sstas** by some VFSes to facilitate testing of the VFS code. By overriding
947226128Sstas** system calls with functions under its control, a test program can
948226128Sstas** simulate faults and error conditions that would otherwise be difficult
949226128Sstas** or impossible to induce.  The set of system calls that can be overridden
950226128Sstas** varies from one VFS to another, and from one version of the same VFS to the
951226128Sstas** next.  Applications that use these interfaces must be prepared for any
952226128Sstas** or all of these interfaces to be NULL or for their behavior to change
953226128Sstas** from one release to the next.  Applications must not attempt to access
954226128Sstas** any of these methods if the iVersion of the VFS is less than 3.
955226031Sstas*/
956226031Sstastypedef struct sqlite3_vfs sqlite3_vfs;
957226128Sstastypedef void (*sqlite3_syscall_ptr)(void);
958226031Sstasstruct sqlite3_vfs {
959226128Sstas  int iVersion;            /* Structure version number (currently 3) */
960226031Sstas  int szOsFile;            /* Size of subclassed sqlite3_file */
961226031Sstas  int mxPathname;          /* Maximum file pathname length */
962226031Sstas  sqlite3_vfs *pNext;      /* Next registered VFS */
963226031Sstas  const char *zName;       /* Name of this virtual file system */
964226031Sstas  void *pAppData;          /* Pointer to application-specific data */
965226031Sstas  int (*xOpen)(sqlite3_vfs*, const char *zName, sqlite3_file*,
966226031Sstas               int flags, int *pOutFlags);
967226031Sstas  int (*xDelete)(sqlite3_vfs*, const char *zName, int syncDir);
968226031Sstas  int (*xAccess)(sqlite3_vfs*, const char *zName, int flags, int *pResOut);
969226031Sstas  int (*xFullPathname)(sqlite3_vfs*, const char *zName, int nOut, char *zOut);
970226031Sstas  void *(*xDlOpen)(sqlite3_vfs*, const char *zFilename);
971226031Sstas  void (*xDlError)(sqlite3_vfs*, int nByte, char *zErrMsg);
972226031Sstas  void (*(*xDlSym)(sqlite3_vfs*,void*, const char *zSymbol))(void);
973226031Sstas  void (*xDlClose)(sqlite3_vfs*, void*);
974226031Sstas  int (*xRandomness)(sqlite3_vfs*, int nByte, char *zOut);
975226031Sstas  int (*xSleep)(sqlite3_vfs*, int microseconds);
976226031Sstas  int (*xCurrentTime)(sqlite3_vfs*, double*);
977226031Sstas  int (*xGetLastError)(sqlite3_vfs*, int, char *);
978226128Sstas  /*
979226128Sstas  ** The methods above are in version 1 of the sqlite_vfs object
980226128Sstas  ** definition.  Those that follow are added in version 2 or later
981226128Sstas  */
982226128Sstas  int (*xCurrentTimeInt64)(sqlite3_vfs*, sqlite3_int64*);
983226128Sstas  /*
984226128Sstas  ** The methods above are in versions 1 and 2 of the sqlite_vfs object.
985226128Sstas  ** Those below are for version 3 and greater.
986226128Sstas  */
987226128Sstas  int (*xSetSystemCall)(sqlite3_vfs*, const char *zName, sqlite3_syscall_ptr);
988226128Sstas  sqlite3_syscall_ptr (*xGetSystemCall)(sqlite3_vfs*, const char *zName);
989226128Sstas  const char *(*xNextSystemCall)(sqlite3_vfs*, const char *zName);
990226128Sstas  /*
991226128Sstas  ** The methods above are in versions 1 through 3 of the sqlite_vfs object.
992226128Sstas  ** New fields may be appended in figure versions.  The iVersion
993226128Sstas  ** value will increment whenever this happens.
994226128Sstas  */
995226031Sstas};
996226031Sstas
997226031Sstas/*
998226031Sstas** CAPI3REF: Flags for the xAccess VFS method
999226031Sstas**
1000226031Sstas** These integer constants can be used as the third parameter to
1001226031Sstas** the xAccess method of an [sqlite3_vfs] object.  They determine
1002226031Sstas** what kind of permissions the xAccess method is looking for.
1003226031Sstas** With SQLITE_ACCESS_EXISTS, the xAccess method
1004226031Sstas** simply checks whether the file exists.
1005226031Sstas** With SQLITE_ACCESS_READWRITE, the xAccess method
1006226128Sstas** checks whether the named directory is both readable and writable
1007226128Sstas** (in other words, if files can be added, removed, and renamed within
1008226128Sstas** the directory).
1009226128Sstas** The SQLITE_ACCESS_READWRITE constant is currently used only by the
1010226128Sstas** [temp_store_directory pragma], though this could change in a future
1011226128Sstas** release of SQLite.
1012226031Sstas** With SQLITE_ACCESS_READ, the xAccess method
1013226128Sstas** checks whether the file is readable.  The SQLITE_ACCESS_READ constant is
1014226128Sstas** currently unused, though it might be used in a future release of
1015226128Sstas** SQLite.
1016226031Sstas*/
1017226031Sstas#define SQLITE_ACCESS_EXISTS    0
1018226128Sstas#define SQLITE_ACCESS_READWRITE 1   /* Used by PRAGMA temp_store_directory */
1019226128Sstas#define SQLITE_ACCESS_READ      2   /* Unused */
1020226031Sstas
1021226031Sstas/*
1022226128Sstas** CAPI3REF: Flags for the xShmLock VFS method
1023226128Sstas**
1024226128Sstas** These integer constants define the various locking operations
1025226128Sstas** allowed by the xShmLock method of [sqlite3_io_methods].  The
1026226128Sstas** following are the only legal combinations of flags to the
1027226128Sstas** xShmLock method:
1028226128Sstas**
1029226128Sstas** <ul>
1030226128Sstas** <li>  SQLITE_SHM_LOCK | SQLITE_SHM_SHARED
1031226128Sstas** <li>  SQLITE_SHM_LOCK | SQLITE_SHM_EXCLUSIVE
1032226128Sstas** <li>  SQLITE_SHM_UNLOCK | SQLITE_SHM_SHARED
1033226128Sstas** <li>  SQLITE_SHM_UNLOCK | SQLITE_SHM_EXCLUSIVE
1034226128Sstas** </ul>
1035226128Sstas**
1036226128Sstas** When unlocking, the same SHARED or EXCLUSIVE flag must be supplied as
1037226128Sstas** was given no the corresponding lock.
1038226128Sstas**
1039226128Sstas** The xShmLock method can transition between unlocked and SHARED or
1040226128Sstas** between unlocked and EXCLUSIVE.  It cannot transition between SHARED
1041226128Sstas** and EXCLUSIVE.
1042226128Sstas*/
1043226128Sstas#define SQLITE_SHM_UNLOCK       1
1044226128Sstas#define SQLITE_SHM_LOCK         2
1045226128Sstas#define SQLITE_SHM_SHARED       4
1046226128Sstas#define SQLITE_SHM_EXCLUSIVE    8
1047226128Sstas
1048226128Sstas/*
1049226128Sstas** CAPI3REF: Maximum xShmLock index
1050226128Sstas**
1051226128Sstas** The xShmLock method on [sqlite3_io_methods] may use values
1052226128Sstas** between 0 and this upper bound as its "offset" argument.
1053226128Sstas** The SQLite core will never attempt to acquire or release a
1054226128Sstas** lock outside of this range
1055226128Sstas*/
1056226128Sstas#define SQLITE_SHM_NLOCK        8
1057226128Sstas
1058226128Sstas
1059226128Sstas/*
1060226031Sstas** CAPI3REF: Initialize The SQLite Library
1061226031Sstas**
1062226031Sstas** ^The sqlite3_initialize() routine initializes the
1063226031Sstas** SQLite library.  ^The sqlite3_shutdown() routine
1064226031Sstas** deallocates any resources that were allocated by sqlite3_initialize().
1065226031Sstas** These routines are designed to aid in process initialization and
1066226031Sstas** shutdown on embedded systems.  Workstation applications using
1067226031Sstas** SQLite normally do not need to invoke either of these routines.
1068226031Sstas**
1069226031Sstas** A call to sqlite3_initialize() is an "effective" call if it is
1070226031Sstas** the first time sqlite3_initialize() is invoked during the lifetime of
1071226031Sstas** the process, or if it is the first time sqlite3_initialize() is invoked
1072226031Sstas** following a call to sqlite3_shutdown().  ^(Only an effective call
1073226031Sstas** of sqlite3_initialize() does any initialization.  All other calls
1074226031Sstas** are harmless no-ops.)^
1075226031Sstas**
1076226031Sstas** A call to sqlite3_shutdown() is an "effective" call if it is the first
1077226031Sstas** call to sqlite3_shutdown() since the last sqlite3_initialize().  ^(Only
1078226031Sstas** an effective call to sqlite3_shutdown() does any deinitialization.
1079226031Sstas** All other valid calls to sqlite3_shutdown() are harmless no-ops.)^
1080226031Sstas**
1081226031Sstas** The sqlite3_initialize() interface is threadsafe, but sqlite3_shutdown()
1082226031Sstas** is not.  The sqlite3_shutdown() interface must only be called from a
1083226031Sstas** single thread.  All open [database connections] must be closed and all
1084226031Sstas** other SQLite resources must be deallocated prior to invoking
1085226031Sstas** sqlite3_shutdown().
1086226031Sstas**
1087226031Sstas** Among other things, ^sqlite3_initialize() will invoke
1088226031Sstas** sqlite3_os_init().  Similarly, ^sqlite3_shutdown()
1089226031Sstas** will invoke sqlite3_os_end().
1090226031Sstas**
1091226031Sstas** ^The sqlite3_initialize() routine returns [SQLITE_OK] on success.
1092226031Sstas** ^If for some reason, sqlite3_initialize() is unable to initialize
1093226031Sstas** the library (perhaps it is unable to allocate a needed resource such
1094226031Sstas** as a mutex) it returns an [error code] other than [SQLITE_OK].
1095226031Sstas**
1096226031Sstas** ^The sqlite3_initialize() routine is called internally by many other
1097226031Sstas** SQLite interfaces so that an application usually does not need to
1098226031Sstas** invoke sqlite3_initialize() directly.  For example, [sqlite3_open()]
1099226031Sstas** calls sqlite3_initialize() so the SQLite library will be automatically
1100226031Sstas** initialized when [sqlite3_open()] is called if it has not be initialized
1101226031Sstas** already.  ^However, if SQLite is compiled with the [SQLITE_OMIT_AUTOINIT]
1102226031Sstas** compile-time option, then the automatic calls to sqlite3_initialize()
1103226031Sstas** are omitted and the application must call sqlite3_initialize() directly
1104226031Sstas** prior to using any other SQLite interface.  For maximum portability,
1105226031Sstas** it is recommended that applications always invoke sqlite3_initialize()
1106226031Sstas** directly prior to using any other SQLite interface.  Future releases
1107226031Sstas** of SQLite may require this.  In other words, the behavior exhibited
1108226031Sstas** when SQLite is compiled with [SQLITE_OMIT_AUTOINIT] might become the
1109226031Sstas** default behavior in some future release of SQLite.
1110226031Sstas**
1111226031Sstas** The sqlite3_os_init() routine does operating-system specific
1112226031Sstas** initialization of the SQLite library.  The sqlite3_os_end()
1113226031Sstas** routine undoes the effect of sqlite3_os_init().  Typical tasks
1114226031Sstas** performed by these routines include allocation or deallocation
1115226031Sstas** of static resources, initialization of global variables,
1116226031Sstas** setting up a default [sqlite3_vfs] module, or setting up
1117226031Sstas** a default configuration using [sqlite3_config()].
1118226031Sstas**
1119226031Sstas** The application should never invoke either sqlite3_os_init()
1120226031Sstas** or sqlite3_os_end() directly.  The application should only invoke
1121226031Sstas** sqlite3_initialize() and sqlite3_shutdown().  The sqlite3_os_init()
1122226031Sstas** interface is called automatically by sqlite3_initialize() and
1123226031Sstas** sqlite3_os_end() is called by sqlite3_shutdown().  Appropriate
1124226031Sstas** implementations for sqlite3_os_init() and sqlite3_os_end()
1125226031Sstas** are built into SQLite when it is compiled for Unix, Windows, or OS/2.
1126226031Sstas** When [custom builds | built for other platforms]
1127226031Sstas** (using the [SQLITE_OS_OTHER=1] compile-time
1128226031Sstas** option) the application must supply a suitable implementation for
1129226031Sstas** sqlite3_os_init() and sqlite3_os_end().  An application-supplied
1130226031Sstas** implementation of sqlite3_os_init() or sqlite3_os_end()
1131226031Sstas** must return [SQLITE_OK] on success and some other [error code] upon
1132226031Sstas** failure.
1133226031Sstas*/
1134226031SstasSQLITE_API int sqlite3_initialize(void);
1135226031SstasSQLITE_API int sqlite3_shutdown(void);
1136226031SstasSQLITE_API int sqlite3_os_init(void);
1137226031SstasSQLITE_API int sqlite3_os_end(void);
1138226031Sstas
1139226031Sstas/*
1140226031Sstas** CAPI3REF: Configuring The SQLite Library
1141226031Sstas**
1142226031Sstas** The sqlite3_config() interface is used to make global configuration
1143226031Sstas** changes to SQLite in order to tune SQLite to the specific needs of
1144226031Sstas** the application.  The default configuration is recommended for most
1145226031Sstas** applications and so this routine is usually not necessary.  It is
1146226031Sstas** provided to support rare applications with unusual needs.
1147226031Sstas**
1148226031Sstas** The sqlite3_config() interface is not threadsafe.  The application
1149226031Sstas** must insure that no other SQLite interfaces are invoked by other
1150226031Sstas** threads while sqlite3_config() is running.  Furthermore, sqlite3_config()
1151226031Sstas** may only be invoked prior to library initialization using
1152226031Sstas** [sqlite3_initialize()] or after shutdown by [sqlite3_shutdown()].
1153226031Sstas** ^If sqlite3_config() is called after [sqlite3_initialize()] and before
1154226031Sstas** [sqlite3_shutdown()] then it will return SQLITE_MISUSE.
1155226031Sstas** Note, however, that ^sqlite3_config() can be called as part of the
1156226031Sstas** implementation of an application-defined [sqlite3_os_init()].
1157226031Sstas**
1158226031Sstas** The first argument to sqlite3_config() is an integer
1159226128Sstas** [configuration option] that determines
1160226031Sstas** what property of SQLite is to be configured.  Subsequent arguments
1161226128Sstas** vary depending on the [configuration option]
1162226031Sstas** in the first argument.
1163226031Sstas**
1164226031Sstas** ^When a configuration option is set, sqlite3_config() returns [SQLITE_OK].
1165226031Sstas** ^If the option is unknown or SQLite is unable to set the option
1166226031Sstas** then this routine returns a non-zero [error code].
1167226031Sstas*/
1168226128SstasSQLITE_API int sqlite3_config(int, ...);
1169226031Sstas
1170226031Sstas/*
1171226031Sstas** CAPI3REF: Configure database connections
1172226031Sstas**
1173226031Sstas** The sqlite3_db_config() interface is used to make configuration
1174226031Sstas** changes to a [database connection].  The interface is similar to
1175226031Sstas** [sqlite3_config()] except that the changes apply to a single
1176226128Sstas** [database connection] (specified in the first argument).
1177226031Sstas**
1178226031Sstas** The second argument to sqlite3_db_config(D,V,...)  is the
1179226128Sstas** [SQLITE_DBCONFIG_LOOKASIDE | configuration verb] - an integer code
1180226128Sstas** that indicates what aspect of the [database connection] is being configured.
1181226128Sstas** Subsequent arguments vary depending on the configuration verb.
1182226031Sstas**
1183226031Sstas** ^Calls to sqlite3_db_config() return SQLITE_OK if and only if
1184226031Sstas** the call is considered successful.
1185226031Sstas*/
1186226128SstasSQLITE_API int sqlite3_db_config(sqlite3*, int op, ...);
1187226031Sstas
1188226031Sstas/*
1189226031Sstas** CAPI3REF: Memory Allocation Routines
1190226031Sstas**
1191226031Sstas** An instance of this object defines the interface between SQLite
1192226031Sstas** and low-level memory allocation routines.
1193226031Sstas**
1194226031Sstas** This object is used in only one place in the SQLite interface.
1195226031Sstas** A pointer to an instance of this object is the argument to
1196226031Sstas** [sqlite3_config()] when the configuration option is
1197226128Sstas** [SQLITE_CONFIG_MALLOC] or [SQLITE_CONFIG_GETMALLOC].
1198226031Sstas** By creating an instance of this object
1199226031Sstas** and passing it to [sqlite3_config]([SQLITE_CONFIG_MALLOC])
1200226031Sstas** during configuration, an application can specify an alternative
1201226031Sstas** memory allocation subsystem for SQLite to use for all of its
1202226031Sstas** dynamic memory needs.
1203226031Sstas**
1204226031Sstas** Note that SQLite comes with several [built-in memory allocators]
1205226031Sstas** that are perfectly adequate for the overwhelming majority of applications
1206226031Sstas** and that this object is only useful to a tiny minority of applications
1207226031Sstas** with specialized memory allocation requirements.  This object is
1208226031Sstas** also used during testing of SQLite in order to specify an alternative
1209226031Sstas** memory allocator that simulates memory out-of-memory conditions in
1210226031Sstas** order to verify that SQLite recovers gracefully from such
1211226031Sstas** conditions.
1212226031Sstas**
1213226128Sstas** The xMalloc, xRealloc, and xFree methods must work like the
1214226128Sstas** malloc(), realloc() and free() functions from the standard C library.
1215226128Sstas** ^SQLite guarantees that the second argument to
1216226031Sstas** xRealloc is always a value returned by a prior call to xRoundup.
1217226031Sstas**
1218226031Sstas** xSize should return the allocated size of a memory allocation
1219226031Sstas** previously obtained from xMalloc or xRealloc.  The allocated size
1220226031Sstas** is always at least as big as the requested size but may be larger.
1221226031Sstas**
1222226031Sstas** The xRoundup method returns what would be the allocated size of
1223226031Sstas** a memory allocation given a particular requested size.  Most memory
1224226031Sstas** allocators round up memory allocations at least to the next multiple
1225226031Sstas** of 8.  Some allocators round up to a larger multiple or to a power of 2.
1226226031Sstas** Every memory allocation request coming in through [sqlite3_malloc()]
1227226128Sstas** or [sqlite3_realloc()] first calls xRoundup.  If xRoundup returns 0,
1228226031Sstas** that causes the corresponding memory allocation to fail.
1229226031Sstas**
1230226031Sstas** The xInit method initializes the memory allocator.  (For example,
1231226031Sstas** it might allocate any require mutexes or initialize internal data
1232226031Sstas** structures.  The xShutdown method is invoked (indirectly) by
1233226031Sstas** [sqlite3_shutdown()] and should deallocate any resources acquired
1234226031Sstas** by xInit.  The pAppData pointer is used as the only parameter to
1235226031Sstas** xInit and xShutdown.
1236226031Sstas**
1237226031Sstas** SQLite holds the [SQLITE_MUTEX_STATIC_MASTER] mutex when it invokes
1238226031Sstas** the xInit method, so the xInit method need not be threadsafe.  The
1239226031Sstas** xShutdown method is only called from [sqlite3_shutdown()] so it does
1240226031Sstas** not need to be threadsafe either.  For all other methods, SQLite
1241226031Sstas** holds the [SQLITE_MUTEX_STATIC_MEM] mutex as long as the
1242226031Sstas** [SQLITE_CONFIG_MEMSTATUS] configuration option is turned on (which
1243226031Sstas** it is by default) and so the methods are automatically serialized.
1244226031Sstas** However, if [SQLITE_CONFIG_MEMSTATUS] is disabled, then the other
1245226031Sstas** methods must be threadsafe or else make their own arrangements for
1246226031Sstas** serialization.
1247226031Sstas**
1248226031Sstas** SQLite will never invoke xInit() more than once without an intervening
1249226031Sstas** call to xShutdown().
1250226031Sstas*/
1251226031Sstastypedef struct sqlite3_mem_methods sqlite3_mem_methods;
1252226031Sstasstruct sqlite3_mem_methods {
1253226031Sstas  void *(*xMalloc)(int);         /* Memory allocation function */
1254226031Sstas  void (*xFree)(void*);          /* Free a prior allocation */
1255226031Sstas  void *(*xRealloc)(void*,int);  /* Resize an allocation */
1256226031Sstas  int (*xSize)(void*);           /* Return the size of an allocation */
1257226031Sstas  int (*xRoundup)(int);          /* Round up request size to allocation size */
1258226031Sstas  int (*xInit)(void*);           /* Initialize the memory allocator */
1259226031Sstas  void (*xShutdown)(void*);      /* Deinitialize the memory allocator */
1260226031Sstas  void *pAppData;                /* Argument to xInit() and xShutdown() */
1261226031Sstas};
1262226031Sstas
1263226031Sstas/*
1264226031Sstas** CAPI3REF: Configuration Options
1265226128Sstas** KEYWORDS: {configuration option}
1266226031Sstas**
1267226031Sstas** These constants are the available integer configuration options that
1268226031Sstas** can be passed as the first argument to the [sqlite3_config()] interface.
1269226031Sstas**
1270226031Sstas** New configuration options may be added in future releases of SQLite.
1271226031Sstas** Existing configuration options might be discontinued.  Applications
1272226031Sstas** should check the return code from [sqlite3_config()] to make sure that
1273226031Sstas** the call worked.  The [sqlite3_config()] interface will return a
1274226031Sstas** non-zero [error code] if a discontinued or unsupported configuration option
1275226031Sstas** is invoked.
1276226031Sstas**
1277226031Sstas** <dl>
1278226128Sstas** [[SQLITE_CONFIG_SINGLETHREAD]] <dt>SQLITE_CONFIG_SINGLETHREAD</dt>
1279226031Sstas** <dd>There are no arguments to this option.  ^This option sets the
1280226031Sstas** [threading mode] to Single-thread.  In other words, it disables
1281226031Sstas** all mutexing and puts SQLite into a mode where it can only be used
1282226031Sstas** by a single thread.   ^If SQLite is compiled with
1283226031Sstas** the [SQLITE_THREADSAFE | SQLITE_THREADSAFE=0] compile-time option then
1284226031Sstas** it is not possible to change the [threading mode] from its default
1285226128Sstas** value of Single-thread and so [sqlite3_config()] will return
1286226031Sstas** [SQLITE_ERROR] if called with the SQLITE_CONFIG_SINGLETHREAD
1287226031Sstas** configuration option.</dd>
1288226031Sstas**
1289226128Sstas** [[SQLITE_CONFIG_MULTITHREAD]] <dt>SQLITE_CONFIG_MULTITHREAD</dt>
1290226031Sstas** <dd>There are no arguments to this option.  ^This option sets the
1291226031Sstas** [threading mode] to Multi-thread.  In other words, it disables
1292226031Sstas** mutexing on [database connection] and [prepared statement] objects.
1293226031Sstas** The application is responsible for serializing access to
1294226031Sstas** [database connections] and [prepared statements].  But other mutexes
1295226031Sstas** are enabled so that SQLite will be safe to use in a multi-threaded
1296226031Sstas** environment as long as no two threads attempt to use the same
1297226031Sstas** [database connection] at the same time.  ^If SQLite is compiled with
1298226031Sstas** the [SQLITE_THREADSAFE | SQLITE_THREADSAFE=0] compile-time option then
1299226031Sstas** it is not possible to set the Multi-thread [threading mode] and
1300226031Sstas** [sqlite3_config()] will return [SQLITE_ERROR] if called with the
1301226031Sstas** SQLITE_CONFIG_MULTITHREAD configuration option.</dd>
1302226031Sstas**
1303226128Sstas** [[SQLITE_CONFIG_SERIALIZED]] <dt>SQLITE_CONFIG_SERIALIZED</dt>
1304226031Sstas** <dd>There are no arguments to this option.  ^This option sets the
1305226031Sstas** [threading mode] to Serialized. In other words, this option enables
1306226031Sstas** all mutexes including the recursive
1307226031Sstas** mutexes on [database connection] and [prepared statement] objects.
1308226031Sstas** In this mode (which is the default when SQLite is compiled with
1309226031Sstas** [SQLITE_THREADSAFE=1]) the SQLite library will itself serialize access
1310226031Sstas** to [database connections] and [prepared statements] so that the
1311226031Sstas** application is free to use the same [database connection] or the
1312226031Sstas** same [prepared statement] in different threads at the same time.
1313226031Sstas** ^If SQLite is compiled with
1314226031Sstas** the [SQLITE_THREADSAFE | SQLITE_THREADSAFE=0] compile-time option then
1315226031Sstas** it is not possible to set the Serialized [threading mode] and
1316226031Sstas** [sqlite3_config()] will return [SQLITE_ERROR] if called with the
1317226031Sstas** SQLITE_CONFIG_SERIALIZED configuration option.</dd>
1318226031Sstas**
1319226128Sstas** [[SQLITE_CONFIG_MALLOC]] <dt>SQLITE_CONFIG_MALLOC</dt>
1320226031Sstas** <dd> ^(This option takes a single argument which is a pointer to an
1321226031Sstas** instance of the [sqlite3_mem_methods] structure.  The argument specifies
1322226031Sstas** alternative low-level memory allocation routines to be used in place of
1323226031Sstas** the memory allocation routines built into SQLite.)^ ^SQLite makes
1324226031Sstas** its own private copy of the content of the [sqlite3_mem_methods] structure
1325226031Sstas** before the [sqlite3_config()] call returns.</dd>
1326226031Sstas**
1327226128Sstas** [[SQLITE_CONFIG_GETMALLOC]] <dt>SQLITE_CONFIG_GETMALLOC</dt>
1328226031Sstas** <dd> ^(This option takes a single argument which is a pointer to an
1329226031Sstas** instance of the [sqlite3_mem_methods] structure.  The [sqlite3_mem_methods]
1330226031Sstas** structure is filled with the currently defined memory allocation routines.)^
1331226031Sstas** This option can be used to overload the default memory allocation
1332226031Sstas** routines with a wrapper that simulations memory allocation failure or
1333226031Sstas** tracks memory usage, for example. </dd>
1334226031Sstas**
1335226128Sstas** [[SQLITE_CONFIG_MEMSTATUS]] <dt>SQLITE_CONFIG_MEMSTATUS</dt>
1336226128Sstas** <dd> ^This option takes single argument of type int, interpreted as a
1337226128Sstas** boolean, which enables or disables the collection of memory allocation
1338226128Sstas** statistics. ^(When memory allocation statistics are disabled, the
1339226031Sstas** following SQLite interfaces become non-operational:
1340226031Sstas**   <ul>
1341226031Sstas**   <li> [sqlite3_memory_used()]
1342226031Sstas**   <li> [sqlite3_memory_highwater()]
1343226128Sstas**   <li> [sqlite3_soft_heap_limit64()]
1344226031Sstas**   <li> [sqlite3_status()]
1345226031Sstas**   </ul>)^
1346226031Sstas** ^Memory allocation statistics are enabled by default unless SQLite is
1347226031Sstas** compiled with [SQLITE_DEFAULT_MEMSTATUS]=0 in which case memory
1348226031Sstas** allocation statistics are disabled by default.
1349226031Sstas** </dd>
1350226031Sstas**
1351226128Sstas** [[SQLITE_CONFIG_SCRATCH]] <dt>SQLITE_CONFIG_SCRATCH</dt>
1352226031Sstas** <dd> ^This option specifies a static memory buffer that SQLite can use for
1353226031Sstas** scratch memory.  There are three arguments:  A pointer an 8-byte
1354226128Sstas** aligned memory buffer from which the scratch allocations will be
1355226031Sstas** drawn, the size of each scratch allocation (sz),
1356226031Sstas** and the maximum number of scratch allocations (N).  The sz
1357226128Sstas** argument must be a multiple of 16.
1358226031Sstas** The first argument must be a pointer to an 8-byte aligned buffer
1359226031Sstas** of at least sz*N bytes of memory.
1360226128Sstas** ^SQLite will use no more than two scratch buffers per thread.  So
1361226128Sstas** N should be set to twice the expected maximum number of threads.
1362226128Sstas** ^SQLite will never require a scratch buffer that is more than 6
1363226128Sstas** times the database page size. ^If SQLite needs needs additional
1364226128Sstas** scratch memory beyond what is provided by this configuration option, then
1365226031Sstas** [sqlite3_malloc()] will be used to obtain the memory needed.</dd>
1366226031Sstas**
1367226128Sstas** [[SQLITE_CONFIG_PAGECACHE]] <dt>SQLITE_CONFIG_PAGECACHE</dt>
1368226031Sstas** <dd> ^This option specifies a static memory buffer that SQLite can use for
1369226128Sstas** the database page cache with the default page cache implementation.
1370226031Sstas** This configuration should not be used if an application-define page
1371226031Sstas** cache implementation is loaded using the SQLITE_CONFIG_PCACHE option.
1372226031Sstas** There are three arguments to this option: A pointer to 8-byte aligned
1373226031Sstas** memory, the size of each page buffer (sz), and the number of pages (N).
1374226031Sstas** The sz argument should be the size of the largest database page
1375226031Sstas** (a power of two between 512 and 32768) plus a little extra for each
1376226031Sstas** page header.  ^The page header size is 20 to 40 bytes depending on
1377226031Sstas** the host architecture.  ^It is harmless, apart from the wasted memory,
1378226031Sstas** to make sz a little too large.  The first
1379226031Sstas** argument should point to an allocation of at least sz*N bytes of memory.
1380226031Sstas** ^SQLite will use the memory provided by the first argument to satisfy its
1381226031Sstas** memory needs for the first N pages that it adds to cache.  ^If additional
1382226031Sstas** page cache memory is needed beyond what is provided by this option, then
1383226031Sstas** SQLite goes to [sqlite3_malloc()] for the additional storage space.
1384226128Sstas** The pointer in the first argument must
1385226031Sstas** be aligned to an 8-byte boundary or subsequent behavior of SQLite
1386226031Sstas** will be undefined.</dd>
1387226031Sstas**
1388226128Sstas** [[SQLITE_CONFIG_HEAP]] <dt>SQLITE_CONFIG_HEAP</dt>
1389226031Sstas** <dd> ^This option specifies a static memory buffer that SQLite will use
1390226031Sstas** for all of its dynamic memory allocation needs beyond those provided
1391226031Sstas** for by [SQLITE_CONFIG_SCRATCH] and [SQLITE_CONFIG_PAGECACHE].
1392226031Sstas** There are three arguments: An 8-byte aligned pointer to the memory,
1393226031Sstas** the number of bytes in the memory buffer, and the minimum allocation size.
1394226031Sstas** ^If the first pointer (the memory pointer) is NULL, then SQLite reverts
1395226031Sstas** to using its default memory allocator (the system malloc() implementation),
1396226031Sstas** undoing any prior invocation of [SQLITE_CONFIG_MALLOC].  ^If the
1397226031Sstas** memory pointer is not NULL and either [SQLITE_ENABLE_MEMSYS3] or
1398226031Sstas** [SQLITE_ENABLE_MEMSYS5] are defined, then the alternative memory
1399226031Sstas** allocator is engaged to handle all of SQLites memory allocation needs.
1400226031Sstas** The first pointer (the memory pointer) must be aligned to an 8-byte
1401226128Sstas** boundary or subsequent behavior of SQLite will be undefined.
1402226128Sstas** The minimum allocation size is capped at 2^12. Reasonable values
1403226128Sstas** for the minimum allocation size are 2^5 through 2^8.</dd>
1404226031Sstas**
1405226128Sstas** [[SQLITE_CONFIG_MUTEX]] <dt>SQLITE_CONFIG_MUTEX</dt>
1406226031Sstas** <dd> ^(This option takes a single argument which is a pointer to an
1407226031Sstas** instance of the [sqlite3_mutex_methods] structure.  The argument specifies
1408226031Sstas** alternative low-level mutex routines to be used in place
1409226031Sstas** the mutex routines built into SQLite.)^  ^SQLite makes a copy of the
1410226031Sstas** content of the [sqlite3_mutex_methods] structure before the call to
1411226031Sstas** [sqlite3_config()] returns. ^If SQLite is compiled with
1412226031Sstas** the [SQLITE_THREADSAFE | SQLITE_THREADSAFE=0] compile-time option then
1413226031Sstas** the entire mutexing subsystem is omitted from the build and hence calls to
1414226031Sstas** [sqlite3_config()] with the SQLITE_CONFIG_MUTEX configuration option will
1415226031Sstas** return [SQLITE_ERROR].</dd>
1416226031Sstas**
1417226128Sstas** [[SQLITE_CONFIG_GETMUTEX]] <dt>SQLITE_CONFIG_GETMUTEX</dt>
1418226031Sstas** <dd> ^(This option takes a single argument which is a pointer to an
1419226031Sstas** instance of the [sqlite3_mutex_methods] structure.  The
1420226031Sstas** [sqlite3_mutex_methods]
1421226031Sstas** structure is filled with the currently defined mutex routines.)^
1422226031Sstas** This option can be used to overload the default mutex allocation
1423226031Sstas** routines with a wrapper used to track mutex usage for performance
1424226031Sstas** profiling or testing, for example.   ^If SQLite is compiled with
1425226031Sstas** the [SQLITE_THREADSAFE | SQLITE_THREADSAFE=0] compile-time option then
1426226031Sstas** the entire mutexing subsystem is omitted from the build and hence calls to
1427226031Sstas** [sqlite3_config()] with the SQLITE_CONFIG_GETMUTEX configuration option will
1428226031Sstas** return [SQLITE_ERROR].</dd>
1429226031Sstas**
1430226128Sstas** [[SQLITE_CONFIG_LOOKASIDE]] <dt>SQLITE_CONFIG_LOOKASIDE</dt>
1431226031Sstas** <dd> ^(This option takes two arguments that determine the default
1432226031Sstas** memory allocation for the lookaside memory allocator on each
1433226031Sstas** [database connection].  The first argument is the
1434226031Sstas** size of each lookaside buffer slot and the second is the number of
1435226031Sstas** slots allocated to each database connection.)^  ^(This option sets the
1436226031Sstas** <i>default</i> lookaside size. The [SQLITE_DBCONFIG_LOOKASIDE]
1437226031Sstas** verb to [sqlite3_db_config()] can be used to change the lookaside
1438226031Sstas** configuration on individual connections.)^ </dd>
1439226031Sstas**
1440226128Sstas** [[SQLITE_CONFIG_PCACHE]] <dt>SQLITE_CONFIG_PCACHE</dt>
1441226031Sstas** <dd> ^(This option takes a single argument which is a pointer to
1442226031Sstas** an [sqlite3_pcache_methods] object.  This object specifies the interface
1443226031Sstas** to a custom page cache implementation.)^  ^SQLite makes a copy of the
1444226031Sstas** object and uses it for page cache memory allocations.</dd>
1445226031Sstas**
1446226128Sstas** [[SQLITE_CONFIG_GETPCACHE]] <dt>SQLITE_CONFIG_GETPCACHE</dt>
1447226031Sstas** <dd> ^(This option takes a single argument which is a pointer to an
1448226031Sstas** [sqlite3_pcache_methods] object.  SQLite copies of the current
1449226031Sstas** page cache implementation into that object.)^ </dd>
1450226031Sstas**
1451226128Sstas** [[SQLITE_CONFIG_LOG]] <dt>SQLITE_CONFIG_LOG</dt>
1452226128Sstas** <dd> ^The SQLITE_CONFIG_LOG option takes two arguments: a pointer to a
1453226128Sstas** function with a call signature of void(*)(void*,int,const char*),
1454226128Sstas** and a pointer to void. ^If the function pointer is not NULL, it is
1455226128Sstas** invoked by [sqlite3_log()] to process each logging event.  ^If the
1456226128Sstas** function pointer is NULL, the [sqlite3_log()] interface becomes a no-op.
1457226128Sstas** ^The void pointer that is the second argument to SQLITE_CONFIG_LOG is
1458226128Sstas** passed through as the first parameter to the application-defined logger
1459226128Sstas** function whenever that function is invoked.  ^The second parameter to
1460226128Sstas** the logger function is a copy of the first parameter to the corresponding
1461226128Sstas** [sqlite3_log()] call and is intended to be a [result code] or an
1462226128Sstas** [extended result code].  ^The third parameter passed to the logger is
1463226128Sstas** log message after formatting via [sqlite3_snprintf()].
1464226128Sstas** The SQLite logging interface is not reentrant; the logger function
1465226128Sstas** supplied by the application must not invoke any SQLite interface.
1466226128Sstas** In a multi-threaded application, the application-defined logger
1467226128Sstas** function must be threadsafe. </dd>
1468226128Sstas**
1469226128Sstas** [[SQLITE_CONFIG_URI]] <dt>SQLITE_CONFIG_URI
1470226128Sstas** <dd> This option takes a single argument of type int. If non-zero, then
1471226128Sstas** URI handling is globally enabled. If the parameter is zero, then URI handling
1472226128Sstas** is globally disabled. If URI handling is globally enabled, all filenames
1473226128Sstas** passed to [sqlite3_open()], [sqlite3_open_v2()], [sqlite3_open16()] or
1474226128Sstas** specified as part of [ATTACH] commands are interpreted as URIs, regardless
1475226128Sstas** of whether or not the [SQLITE_OPEN_URI] flag is set when the database
1476226128Sstas** connection is opened. If it is globally disabled, filenames are
1477226128Sstas** only interpreted as URIs if the SQLITE_OPEN_URI flag is set when the
1478226128Sstas** database connection is opened. By default, URI handling is globally
1479226128Sstas** disabled. The default value may be changed by compiling with the
1480226128Sstas** [SQLITE_USE_URI] symbol defined.
1481226031Sstas** </dl>
1482226031Sstas*/
1483226031Sstas#define SQLITE_CONFIG_SINGLETHREAD  1  /* nil */
1484226031Sstas#define SQLITE_CONFIG_MULTITHREAD   2  /* nil */
1485226031Sstas#define SQLITE_CONFIG_SERIALIZED    3  /* nil */
1486226031Sstas#define SQLITE_CONFIG_MALLOC        4  /* sqlite3_mem_methods* */
1487226031Sstas#define SQLITE_CONFIG_GETMALLOC     5  /* sqlite3_mem_methods* */
1488226031Sstas#define SQLITE_CONFIG_SCRATCH       6  /* void*, int sz, int N */
1489226031Sstas#define SQLITE_CONFIG_PAGECACHE     7  /* void*, int sz, int N */
1490226031Sstas#define SQLITE_CONFIG_HEAP          8  /* void*, int nByte, int min */
1491226031Sstas#define SQLITE_CONFIG_MEMSTATUS     9  /* boolean */
1492226031Sstas#define SQLITE_CONFIG_MUTEX        10  /* sqlite3_mutex_methods* */
1493226031Sstas#define SQLITE_CONFIG_GETMUTEX     11  /* sqlite3_mutex_methods* */
1494226128Sstas/* previously SQLITE_CONFIG_CHUNKALLOC 12 which is now unused. */
1495226031Sstas#define SQLITE_CONFIG_LOOKASIDE    13  /* int int */
1496226031Sstas#define SQLITE_CONFIG_PCACHE       14  /* sqlite3_pcache_methods* */
1497226031Sstas#define SQLITE_CONFIG_GETPCACHE    15  /* sqlite3_pcache_methods* */
1498226031Sstas#define SQLITE_CONFIG_LOG          16  /* xFunc, void* */
1499226128Sstas#define SQLITE_CONFIG_URI          17  /* int */
1500226031Sstas
1501226031Sstas/*
1502226128Sstas** CAPI3REF: Database Connection Configuration Options
1503226031Sstas**
1504226031Sstas** These constants are the available integer configuration options that
1505226031Sstas** can be passed as the second argument to the [sqlite3_db_config()] interface.
1506226031Sstas**
1507226031Sstas** New configuration options may be added in future releases of SQLite.
1508226031Sstas** Existing configuration options might be discontinued.  Applications
1509226031Sstas** should check the return code from [sqlite3_db_config()] to make sure that
1510226031Sstas** the call worked.  ^The [sqlite3_db_config()] interface will return a
1511226031Sstas** non-zero [error code] if a discontinued or unsupported configuration option
1512226031Sstas** is invoked.
1513226031Sstas**
1514226031Sstas** <dl>
1515226031Sstas** <dt>SQLITE_DBCONFIG_LOOKASIDE</dt>
1516226128Sstas** <dd> ^This option takes three additional arguments that determine the
1517226031Sstas** [lookaside memory allocator] configuration for the [database connection].
1518226031Sstas** ^The first argument (the third parameter to [sqlite3_db_config()] is a
1519226128Sstas** pointer to a memory buffer to use for lookaside memory.
1520226031Sstas** ^The first argument after the SQLITE_DBCONFIG_LOOKASIDE verb
1521226031Sstas** may be NULL in which case SQLite will allocate the
1522226031Sstas** lookaside buffer itself using [sqlite3_malloc()]. ^The second argument is the
1523226031Sstas** size of each lookaside buffer slot.  ^The third argument is the number of
1524226031Sstas** slots.  The size of the buffer in the first argument must be greater than
1525226031Sstas** or equal to the product of the second and third arguments.  The buffer
1526226031Sstas** must be aligned to an 8-byte boundary.  ^If the second argument to
1527226031Sstas** SQLITE_DBCONFIG_LOOKASIDE is not a multiple of 8, it is internally
1528226128Sstas** rounded down to the next smaller multiple of 8.  ^(The lookaside memory
1529226128Sstas** configuration for a database connection can only be changed when that
1530226128Sstas** connection is not currently using lookaside memory, or in other words
1531226128Sstas** when the "current value" returned by
1532226128Sstas** [sqlite3_db_status](D,[SQLITE_CONFIG_LOOKASIDE],...) is zero.
1533226128Sstas** Any attempt to change the lookaside memory configuration when lookaside
1534226128Sstas** memory is in use leaves the configuration unchanged and returns
1535226128Sstas** [SQLITE_BUSY].)^</dd>
1536226031Sstas**
1537226128Sstas** <dt>SQLITE_DBCONFIG_ENABLE_FKEY</dt>
1538226128Sstas** <dd> ^This option is used to enable or disable the enforcement of
1539226128Sstas** [foreign key constraints].  There should be two additional arguments.
1540226128Sstas** The first argument is an integer which is 0 to disable FK enforcement,
1541226128Sstas** positive to enable FK enforcement or negative to leave FK enforcement
1542226128Sstas** unchanged.  The second parameter is a pointer to an integer into which
1543226128Sstas** is written 0 or 1 to indicate whether FK enforcement is off or on
1544226128Sstas** following this call.  The second parameter may be a NULL pointer, in
1545226128Sstas** which case the FK enforcement setting is not reported back. </dd>
1546226128Sstas**
1547226128Sstas** <dt>SQLITE_DBCONFIG_ENABLE_TRIGGER</dt>
1548226128Sstas** <dd> ^This option is used to enable or disable [CREATE TRIGGER | triggers].
1549226128Sstas** There should be two additional arguments.
1550226128Sstas** The first argument is an integer which is 0 to disable triggers,
1551226128Sstas** positive to enable triggers or negative to leave the setting unchanged.
1552226128Sstas** The second parameter is a pointer to an integer into which
1553226128Sstas** is written 0 or 1 to indicate whether triggers are disabled or enabled
1554226128Sstas** following this call.  The second parameter may be a NULL pointer, in
1555226128Sstas** which case the trigger setting is not reported back. </dd>
1556226128Sstas**
1557226031Sstas** </dl>
1558226031Sstas*/
1559226128Sstas#define SQLITE_DBCONFIG_LOOKASIDE       1001  /* void* int int */
1560226128Sstas#define SQLITE_DBCONFIG_ENABLE_FKEY     1002  /* int int* */
1561226128Sstas#define SQLITE_DBCONFIG_ENABLE_TRIGGER  1003  /* int int* */
1562226031Sstas
1563226031Sstas
1564226031Sstas/*
1565226031Sstas** CAPI3REF: Enable Or Disable Extended Result Codes
1566226031Sstas**
1567226031Sstas** ^The sqlite3_extended_result_codes() routine enables or disables the
1568226031Sstas** [extended result codes] feature of SQLite. ^The extended result
1569226031Sstas** codes are disabled by default for historical compatibility.
1570226031Sstas*/
1571226031SstasSQLITE_API int sqlite3_extended_result_codes(sqlite3*, int onoff);
1572226031Sstas
1573226031Sstas/*
1574226031Sstas** CAPI3REF: Last Insert Rowid
1575226031Sstas**
1576226031Sstas** ^Each entry in an SQLite table has a unique 64-bit signed
1577226031Sstas** integer key called the [ROWID | "rowid"]. ^The rowid is always available
1578226031Sstas** as an undeclared column named ROWID, OID, or _ROWID_ as long as those
1579226031Sstas** names are not also used by explicitly declared columns. ^If
1580226031Sstas** the table has a column of type [INTEGER PRIMARY KEY] then that column
1581226031Sstas** is another alias for the rowid.
1582226031Sstas**
1583226031Sstas** ^This routine returns the [rowid] of the most recent
1584226031Sstas** successful [INSERT] into the database from the [database connection]
1585226128Sstas** in the first argument.  ^As of SQLite version 3.7.7, this routines
1586226128Sstas** records the last insert rowid of both ordinary tables and [virtual tables].
1587226128Sstas** ^If no successful [INSERT]s
1588226031Sstas** have ever occurred on that database connection, zero is returned.
1589226031Sstas**
1590226128Sstas** ^(If an [INSERT] occurs within a trigger or within a [virtual table]
1591226128Sstas** method, then this routine will return the [rowid] of the inserted
1592226128Sstas** row as long as the trigger or virtual table method is running.
1593226128Sstas** But once the trigger or virtual table method ends, the value returned
1594226128Sstas** by this routine reverts to what it was before the trigger or virtual
1595226128Sstas** table method began.)^
1596226031Sstas**
1597226031Sstas** ^An [INSERT] that fails due to a constraint violation is not a
1598226031Sstas** successful [INSERT] and does not change the value returned by this
1599226031Sstas** routine.  ^Thus INSERT OR FAIL, INSERT OR IGNORE, INSERT OR ROLLBACK,
1600226031Sstas** and INSERT OR ABORT make no changes to the return value of this
1601226031Sstas** routine when their insertion fails.  ^(When INSERT OR REPLACE
1602226031Sstas** encounters a constraint violation, it does not fail.  The
1603226031Sstas** INSERT continues to completion after deleting rows that caused
1604226031Sstas** the constraint problem so INSERT OR REPLACE will always change
1605226031Sstas** the return value of this interface.)^
1606226031Sstas**
1607226031Sstas** ^For the purposes of this routine, an [INSERT] is considered to
1608226031Sstas** be successful even if it is subsequently rolled back.
1609226031Sstas**
1610226031Sstas** This function is accessible to SQL statements via the
1611226031Sstas** [last_insert_rowid() SQL function].
1612226031Sstas**
1613226031Sstas** If a separate thread performs a new [INSERT] on the same
1614226031Sstas** database connection while the [sqlite3_last_insert_rowid()]
1615226031Sstas** function is running and thus changes the last insert [rowid],
1616226031Sstas** then the value returned by [sqlite3_last_insert_rowid()] is
1617226031Sstas** unpredictable and might not equal either the old or the new
1618226031Sstas** last insert [rowid].
1619226031Sstas*/
1620226031SstasSQLITE_API sqlite3_int64 sqlite3_last_insert_rowid(sqlite3*);
1621226031Sstas
1622226031Sstas/*
1623226031Sstas** CAPI3REF: Count The Number Of Rows Modified
1624226031Sstas**
1625226031Sstas** ^This function returns the number of database rows that were changed
1626226031Sstas** or inserted or deleted by the most recently completed SQL statement
1627226031Sstas** on the [database connection] specified by the first parameter.
1628226031Sstas** ^(Only changes that are directly specified by the [INSERT], [UPDATE],
1629226031Sstas** or [DELETE] statement are counted.  Auxiliary changes caused by
1630226031Sstas** triggers or [foreign key actions] are not counted.)^ Use the
1631226031Sstas** [sqlite3_total_changes()] function to find the total number of changes
1632226031Sstas** including changes caused by triggers and foreign key actions.
1633226031Sstas**
1634226031Sstas** ^Changes to a view that are simulated by an [INSTEAD OF trigger]
1635226031Sstas** are not counted.  Only real table changes are counted.
1636226031Sstas**
1637226031Sstas** ^(A "row change" is a change to a single row of a single table
1638226031Sstas** caused by an INSERT, DELETE, or UPDATE statement.  Rows that
1639226031Sstas** are changed as side effects of [REPLACE] constraint resolution,
1640226031Sstas** rollback, ABORT processing, [DROP TABLE], or by any other
1641226031Sstas** mechanisms do not count as direct row changes.)^
1642226031Sstas**
1643226031Sstas** A "trigger context" is a scope of execution that begins and
1644226128Sstas** ends with the script of a [CREATE TRIGGER | trigger].
1645226031Sstas** Most SQL statements are
1646226031Sstas** evaluated outside of any trigger.  This is the "top level"
1647226031Sstas** trigger context.  If a trigger fires from the top level, a
1648226031Sstas** new trigger context is entered for the duration of that one
1649226031Sstas** trigger.  Subtriggers create subcontexts for their duration.
1650226031Sstas**
1651226031Sstas** ^Calling [sqlite3_exec()] or [sqlite3_step()] recursively does
1652226031Sstas** not create a new trigger context.
1653226031Sstas**
1654226031Sstas** ^This function returns the number of direct row changes in the
1655226031Sstas** most recent INSERT, UPDATE, or DELETE statement within the same
1656226031Sstas** trigger context.
1657226031Sstas**
1658226031Sstas** ^Thus, when called from the top level, this function returns the
1659226031Sstas** number of changes in the most recent INSERT, UPDATE, or DELETE
1660226031Sstas** that also occurred at the top level.  ^(Within the body of a trigger,
1661226031Sstas** the sqlite3_changes() interface can be called to find the number of
1662226031Sstas** changes in the most recently completed INSERT, UPDATE, or DELETE
1663226031Sstas** statement within the body of the same trigger.
1664226031Sstas** However, the number returned does not include changes
1665226031Sstas** caused by subtriggers since those have their own context.)^
1666226031Sstas**
1667226031Sstas** See also the [sqlite3_total_changes()] interface, the
1668226031Sstas** [count_changes pragma], and the [changes() SQL function].
1669226031Sstas**
1670226031Sstas** If a separate thread makes changes on the same database connection
1671226031Sstas** while [sqlite3_changes()] is running then the value returned
1672226031Sstas** is unpredictable and not meaningful.
1673226031Sstas*/
1674226031SstasSQLITE_API int sqlite3_changes(sqlite3*);
1675226031Sstas
1676226031Sstas/*
1677226031Sstas** CAPI3REF: Total Number Of Rows Modified
1678226031Sstas**
1679226031Sstas** ^This function returns the number of row changes caused by [INSERT],
1680226031Sstas** [UPDATE] or [DELETE] statements since the [database connection] was opened.
1681226031Sstas** ^(The count returned by sqlite3_total_changes() includes all changes
1682226031Sstas** from all [CREATE TRIGGER | trigger] contexts and changes made by
1683226031Sstas** [foreign key actions]. However,
1684226031Sstas** the count does not include changes used to implement [REPLACE] constraints,
1685226031Sstas** do rollbacks or ABORT processing, or [DROP TABLE] processing.  The
1686226031Sstas** count does not include rows of views that fire an [INSTEAD OF trigger],
1687226128Sstas** though if the INSTEAD OF trigger makes changes of its own, those changes
1688226031Sstas** are counted.)^
1689226031Sstas** ^The sqlite3_total_changes() function counts the changes as soon as
1690226031Sstas** the statement that makes them is completed (when the statement handle
1691226031Sstas** is passed to [sqlite3_reset()] or [sqlite3_finalize()]).
1692226031Sstas**
1693226031Sstas** See also the [sqlite3_changes()] interface, the
1694226031Sstas** [count_changes pragma], and the [total_changes() SQL function].
1695226031Sstas**
1696226031Sstas** If a separate thread makes changes on the same database connection
1697226031Sstas** while [sqlite3_total_changes()] is running then the value
1698226031Sstas** returned is unpredictable and not meaningful.
1699226031Sstas*/
1700226031SstasSQLITE_API int sqlite3_total_changes(sqlite3*);
1701226031Sstas
1702226031Sstas/*
1703226031Sstas** CAPI3REF: Interrupt A Long-Running Query
1704226031Sstas**
1705226031Sstas** ^This function causes any pending database operation to abort and
1706226031Sstas** return at its earliest opportunity. This routine is typically
1707226031Sstas** called in response to a user action such as pressing "Cancel"
1708226031Sstas** or Ctrl-C where the user wants a long query operation to halt
1709226031Sstas** immediately.
1710226031Sstas**
1711226031Sstas** ^It is safe to call this routine from a thread different from the
1712226031Sstas** thread that is currently running the database operation.  But it
1713226031Sstas** is not safe to call this routine with a [database connection] that
1714226031Sstas** is closed or might close before sqlite3_interrupt() returns.
1715226031Sstas**
1716226031Sstas** ^If an SQL operation is very nearly finished at the time when
1717226031Sstas** sqlite3_interrupt() is called, then it might not have an opportunity
1718226031Sstas** to be interrupted and might continue to completion.
1719226031Sstas**
1720226031Sstas** ^An SQL operation that is interrupted will return [SQLITE_INTERRUPT].
1721226031Sstas** ^If the interrupted SQL operation is an INSERT, UPDATE, or DELETE
1722226031Sstas** that is inside an explicit transaction, then the entire transaction
1723226031Sstas** will be rolled back automatically.
1724226031Sstas**
1725226031Sstas** ^The sqlite3_interrupt(D) call is in effect until all currently running
1726226031Sstas** SQL statements on [database connection] D complete.  ^Any new SQL statements
1727226128Sstas** that are started after the sqlite3_interrupt() call and before the
1728226031Sstas** running statements reaches zero are interrupted as if they had been
1729226031Sstas** running prior to the sqlite3_interrupt() call.  ^New SQL statements
1730226031Sstas** that are started after the running statement count reaches zero are
1731226031Sstas** not effected by the sqlite3_interrupt().
1732226031Sstas** ^A call to sqlite3_interrupt(D) that occurs when there are no running
1733226031Sstas** SQL statements is a no-op and has no effect on SQL statements
1734226031Sstas** that are started after the sqlite3_interrupt() call returns.
1735226031Sstas**
1736226031Sstas** If the database connection closes while [sqlite3_interrupt()]
1737226031Sstas** is running then bad things will likely happen.
1738226031Sstas*/
1739226031SstasSQLITE_API void sqlite3_interrupt(sqlite3*);
1740226031Sstas
1741226031Sstas/*
1742226031Sstas** CAPI3REF: Determine If An SQL Statement Is Complete
1743226031Sstas**
1744226031Sstas** These routines are useful during command-line input to determine if the
1745226031Sstas** currently entered text seems to form a complete SQL statement or
1746226031Sstas** if additional input is needed before sending the text into
1747226031Sstas** SQLite for parsing.  ^These routines return 1 if the input string
1748226031Sstas** appears to be a complete SQL statement.  ^A statement is judged to be
1749226031Sstas** complete if it ends with a semicolon token and is not a prefix of a
1750226031Sstas** well-formed CREATE TRIGGER statement.  ^Semicolons that are embedded within
1751226031Sstas** string literals or quoted identifier names or comments are not
1752226031Sstas** independent tokens (they are part of the token in which they are
1753226031Sstas** embedded) and thus do not count as a statement terminator.  ^Whitespace
1754226031Sstas** and comments that follow the final semicolon are ignored.
1755226031Sstas**
1756226031Sstas** ^These routines return 0 if the statement is incomplete.  ^If a
1757226031Sstas** memory allocation fails, then SQLITE_NOMEM is returned.
1758226031Sstas**
1759226031Sstas** ^These routines do not parse the SQL statements thus
1760226031Sstas** will not detect syntactically incorrect SQL.
1761226031Sstas**
1762226128Sstas** ^(If SQLite has not been initialized using [sqlite3_initialize()] prior
1763226031Sstas** to invoking sqlite3_complete16() then sqlite3_initialize() is invoked
1764226031Sstas** automatically by sqlite3_complete16().  If that initialization fails,
1765226031Sstas** then the return value from sqlite3_complete16() will be non-zero
1766226031Sstas** regardless of whether or not the input SQL is complete.)^
1767226031Sstas**
1768226031Sstas** The input to [sqlite3_complete()] must be a zero-terminated
1769226031Sstas** UTF-8 string.
1770226031Sstas**
1771226031Sstas** The input to [sqlite3_complete16()] must be a zero-terminated
1772226031Sstas** UTF-16 string in native byte order.
1773226031Sstas*/
1774226031SstasSQLITE_API int sqlite3_complete(const char *sql);
1775226031SstasSQLITE_API int sqlite3_complete16(const void *sql);
1776226031Sstas
1777226031Sstas/*
1778226031Sstas** CAPI3REF: Register A Callback To Handle SQLITE_BUSY Errors
1779226031Sstas**
1780226031Sstas** ^This routine sets a callback function that might be invoked whenever
1781226031Sstas** an attempt is made to open a database table that another thread
1782226031Sstas** or process has locked.
1783226031Sstas**
1784226031Sstas** ^If the busy callback is NULL, then [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED]
1785226031Sstas** is returned immediately upon encountering the lock.  ^If the busy callback
1786226031Sstas** is not NULL, then the callback might be invoked with two arguments.
1787226031Sstas**
1788226031Sstas** ^The first argument to the busy handler is a copy of the void* pointer which
1789226031Sstas** is the third argument to sqlite3_busy_handler().  ^The second argument to
1790226031Sstas** the busy handler callback is the number of times that the busy handler has
1791226031Sstas** been invoked for this locking event.  ^If the
1792226031Sstas** busy callback returns 0, then no additional attempts are made to
1793226031Sstas** access the database and [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED] is returned.
1794226031Sstas** ^If the callback returns non-zero, then another attempt
1795226031Sstas** is made to open the database for reading and the cycle repeats.
1796226031Sstas**
1797226031Sstas** The presence of a busy handler does not guarantee that it will be invoked
1798226031Sstas** when there is lock contention. ^If SQLite determines that invoking the busy
1799226031Sstas** handler could result in a deadlock, it will go ahead and return [SQLITE_BUSY]
1800226031Sstas** or [SQLITE_IOERR_BLOCKED] instead of invoking the busy handler.
1801226031Sstas** Consider a scenario where one process is holding a read lock that
1802226031Sstas** it is trying to promote to a reserved lock and
1803226031Sstas** a second process is holding a reserved lock that it is trying
1804226031Sstas** to promote to an exclusive lock.  The first process cannot proceed
1805226031Sstas** because it is blocked by the second and the second process cannot
1806226031Sstas** proceed because it is blocked by the first.  If both processes
1807226031Sstas** invoke the busy handlers, neither will make any progress.  Therefore,
1808226031Sstas** SQLite returns [SQLITE_BUSY] for the first process, hoping that this
1809226031Sstas** will induce the first process to release its read lock and allow
1810226031Sstas** the second process to proceed.
1811226031Sstas**
1812226031Sstas** ^The default busy callback is NULL.
1813226031Sstas**
1814226031Sstas** ^The [SQLITE_BUSY] error is converted to [SQLITE_IOERR_BLOCKED]
1815226031Sstas** when SQLite is in the middle of a large transaction where all the
1816226031Sstas** changes will not fit into the in-memory cache.  SQLite will
1817226031Sstas** already hold a RESERVED lock on the database file, but it needs
1818226031Sstas** to promote this lock to EXCLUSIVE so that it can spill cache
1819226031Sstas** pages into the database file without harm to concurrent
1820226031Sstas** readers.  ^If it is unable to promote the lock, then the in-memory
1821226031Sstas** cache will be left in an inconsistent state and so the error
1822226031Sstas** code is promoted from the relatively benign [SQLITE_BUSY] to
1823226031Sstas** the more severe [SQLITE_IOERR_BLOCKED].  ^This error code promotion
1824226031Sstas** forces an automatic rollback of the changes.  See the
1825226031Sstas** <a href="/cvstrac/wiki?p=CorruptionFollowingBusyError">
1826226031Sstas** CorruptionFollowingBusyError</a> wiki page for a discussion of why
1827226031Sstas** this is important.
1828226031Sstas**
1829226031Sstas** ^(There can only be a single busy handler defined for each
1830226031Sstas** [database connection].  Setting a new busy handler clears any
1831226031Sstas** previously set handler.)^  ^Note that calling [sqlite3_busy_timeout()]
1832226031Sstas** will also set or clear the busy handler.
1833226031Sstas**
1834226031Sstas** The busy callback should not take any actions which modify the
1835226031Sstas** database connection that invoked the busy handler.  Any such actions
1836226031Sstas** result in undefined behavior.
1837226128Sstas**
1838226031Sstas** A busy handler must not close the database connection
1839226031Sstas** or [prepared statement] that invoked the busy handler.
1840226031Sstas*/
1841226031SstasSQLITE_API int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*);
1842226031Sstas
1843226031Sstas/*
1844226031Sstas** CAPI3REF: Set A Busy Timeout
1845226031Sstas**
1846226031Sstas** ^This routine sets a [sqlite3_busy_handler | busy handler] that sleeps
1847226031Sstas** for a specified amount of time when a table is locked.  ^The handler
1848226031Sstas** will sleep multiple times until at least "ms" milliseconds of sleeping
1849226031Sstas** have accumulated.  ^After at least "ms" milliseconds of sleeping,
1850226031Sstas** the handler returns 0 which causes [sqlite3_step()] to return
1851226031Sstas** [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED].
1852226031Sstas**
1853226031Sstas** ^Calling this routine with an argument less than or equal to zero
1854226031Sstas** turns off all busy handlers.
1855226031Sstas**
1856226031Sstas** ^(There can only be a single busy handler for a particular
1857226031Sstas** [database connection] any any given moment.  If another busy handler
1858226031Sstas** was defined  (using [sqlite3_busy_handler()]) prior to calling
1859226031Sstas** this routine, that other busy handler is cleared.)^
1860226031Sstas*/
1861226031SstasSQLITE_API int sqlite3_busy_timeout(sqlite3*, int ms);
1862226031Sstas
1863226031Sstas/*
1864226031Sstas** CAPI3REF: Convenience Routines For Running Queries
1865226031Sstas**
1866226128Sstas** This is a legacy interface that is preserved for backwards compatibility.
1867226128Sstas** Use of this interface is not recommended.
1868226128Sstas**
1869226031Sstas** Definition: A <b>result table</b> is memory data structure created by the
1870226031Sstas** [sqlite3_get_table()] interface.  A result table records the
1871226031Sstas** complete query results from one or more queries.
1872226031Sstas**
1873226031Sstas** The table conceptually has a number of rows and columns.  But
1874226031Sstas** these numbers are not part of the result table itself.  These
1875226031Sstas** numbers are obtained separately.  Let N be the number of rows
1876226031Sstas** and M be the number of columns.
1877226031Sstas**
1878226031Sstas** A result table is an array of pointers to zero-terminated UTF-8 strings.
1879226031Sstas** There are (N+1)*M elements in the array.  The first M pointers point
1880226031Sstas** to zero-terminated strings that  contain the names of the columns.
1881226031Sstas** The remaining entries all point to query results.  NULL values result
1882226031Sstas** in NULL pointers.  All other values are in their UTF-8 zero-terminated
1883226031Sstas** string representation as returned by [sqlite3_column_text()].
1884226031Sstas**
1885226031Sstas** A result table might consist of one or more memory allocations.
1886226031Sstas** It is not safe to pass a result table directly to [sqlite3_free()].
1887226031Sstas** A result table should be deallocated using [sqlite3_free_table()].
1888226031Sstas**
1889226128Sstas** ^(As an example of the result table format, suppose a query result
1890226031Sstas** is as follows:
1891226031Sstas**
1892226031Sstas** <blockquote><pre>
1893226031Sstas**        Name        | Age
1894226031Sstas**        -----------------------
1895226031Sstas**        Alice       | 43
1896226031Sstas**        Bob         | 28
1897226031Sstas**        Cindy       | 21
1898226031Sstas** </pre></blockquote>
1899226031Sstas**
1900226031Sstas** There are two column (M==2) and three rows (N==3).  Thus the
1901226031Sstas** result table has 8 entries.  Suppose the result table is stored
1902226031Sstas** in an array names azResult.  Then azResult holds this content:
1903226031Sstas**
1904226031Sstas** <blockquote><pre>
1905226031Sstas**        azResult&#91;0] = "Name";
1906226031Sstas**        azResult&#91;1] = "Age";
1907226031Sstas**        azResult&#91;2] = "Alice";
1908226031Sstas**        azResult&#91;3] = "43";
1909226031Sstas**        azResult&#91;4] = "Bob";
1910226031Sstas**        azResult&#91;5] = "28";
1911226031Sstas**        azResult&#91;6] = "Cindy";
1912226031Sstas**        azResult&#91;7] = "21";
1913226128Sstas** </pre></blockquote>)^
1914226031Sstas**
1915226031Sstas** ^The sqlite3_get_table() function evaluates one or more
1916226031Sstas** semicolon-separated SQL statements in the zero-terminated UTF-8
1917226031Sstas** string of its 2nd parameter and returns a result table to the
1918226031Sstas** pointer given in its 3rd parameter.
1919226031Sstas**
1920226031Sstas** After the application has finished with the result from sqlite3_get_table(),
1921226128Sstas** it must pass the result table pointer to sqlite3_free_table() in order to
1922226031Sstas** release the memory that was malloced.  Because of the way the
1923226031Sstas** [sqlite3_malloc()] happens within sqlite3_get_table(), the calling
1924226031Sstas** function must not try to call [sqlite3_free()] directly.  Only
1925226031Sstas** [sqlite3_free_table()] is able to release the memory properly and safely.
1926226031Sstas**
1927226128Sstas** The sqlite3_get_table() interface is implemented as a wrapper around
1928226031Sstas** [sqlite3_exec()].  The sqlite3_get_table() routine does not have access
1929226031Sstas** to any internal data structures of SQLite.  It uses only the public
1930226031Sstas** interface defined here.  As a consequence, errors that occur in the
1931226031Sstas** wrapper layer outside of the internal [sqlite3_exec()] call are not
1932226031Sstas** reflected in subsequent calls to [sqlite3_errcode()] or
1933226128Sstas** [sqlite3_errmsg()].
1934226031Sstas*/
1935226031SstasSQLITE_API int sqlite3_get_table(
1936226031Sstas  sqlite3 *db,          /* An open database */
1937226031Sstas  const char *zSql,     /* SQL to be evaluated */
1938226031Sstas  char ***pazResult,    /* Results of the query */
1939226031Sstas  int *pnRow,           /* Number of result rows written here */
1940226031Sstas  int *pnColumn,        /* Number of result columns written here */
1941226031Sstas  char **pzErrmsg       /* Error msg written here */
1942226031Sstas);
1943226031SstasSQLITE_API void sqlite3_free_table(char **result);
1944226031Sstas
1945226031Sstas/*
1946226031Sstas** CAPI3REF: Formatted String Printing Functions
1947226031Sstas**
1948226031Sstas** These routines are work-alikes of the "printf()" family of functions
1949226031Sstas** from the standard C library.
1950226031Sstas**
1951226031Sstas** ^The sqlite3_mprintf() and sqlite3_vmprintf() routines write their
1952226031Sstas** results into memory obtained from [sqlite3_malloc()].
1953226031Sstas** The strings returned by these two routines should be
1954226031Sstas** released by [sqlite3_free()].  ^Both routines return a
1955226031Sstas** NULL pointer if [sqlite3_malloc()] is unable to allocate enough
1956226031Sstas** memory to hold the resulting string.
1957226031Sstas**
1958226128Sstas** ^(The sqlite3_snprintf() routine is similar to "snprintf()" from
1959226031Sstas** the standard C library.  The result is written into the
1960226031Sstas** buffer supplied as the second parameter whose size is given by
1961226031Sstas** the first parameter. Note that the order of the
1962226031Sstas** first two parameters is reversed from snprintf().)^  This is an
1963226031Sstas** historical accident that cannot be fixed without breaking
1964226031Sstas** backwards compatibility.  ^(Note also that sqlite3_snprintf()
1965226031Sstas** returns a pointer to its buffer instead of the number of
1966226031Sstas** characters actually written into the buffer.)^  We admit that
1967226031Sstas** the number of characters written would be a more useful return
1968226031Sstas** value but we cannot change the implementation of sqlite3_snprintf()
1969226031Sstas** now without breaking compatibility.
1970226031Sstas**
1971226031Sstas** ^As long as the buffer size is greater than zero, sqlite3_snprintf()
1972226031Sstas** guarantees that the buffer is always zero-terminated.  ^The first
1973226031Sstas** parameter "n" is the total size of the buffer, including space for
1974226031Sstas** the zero terminator.  So the longest string that can be completely
1975226031Sstas** written will be n-1 characters.
1976226031Sstas**
1977226128Sstas** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf().
1978226128Sstas**
1979226031Sstas** These routines all implement some additional formatting
1980226031Sstas** options that are useful for constructing SQL statements.
1981226031Sstas** All of the usual printf() formatting options apply.  In addition, there
1982226031Sstas** is are "%q", "%Q", and "%z" options.
1983226031Sstas**
1984226031Sstas** ^(The %q option works like %s in that it substitutes a null-terminated
1985226031Sstas** string from the argument list.  But %q also doubles every '\'' character.
1986226031Sstas** %q is designed for use inside a string literal.)^  By doubling each '\''
1987226031Sstas** character it escapes that character and allows it to be inserted into
1988226031Sstas** the string.
1989226031Sstas**
1990226031Sstas** For example, assume the string variable zText contains text as follows:
1991226031Sstas**
1992226031Sstas** <blockquote><pre>
1993226031Sstas**  char *zText = "It's a happy day!";
1994226031Sstas** </pre></blockquote>
1995226031Sstas**
1996226031Sstas** One can use this text in an SQL statement as follows:
1997226031Sstas**
1998226031Sstas** <blockquote><pre>
1999226031Sstas**  char *zSQL = sqlite3_mprintf("INSERT INTO table VALUES('%q')", zText);
2000226031Sstas**  sqlite3_exec(db, zSQL, 0, 0, 0);
2001226031Sstas**  sqlite3_free(zSQL);
2002226031Sstas** </pre></blockquote>
2003226031Sstas**
2004226031Sstas** Because the %q format string is used, the '\'' character in zText
2005226031Sstas** is escaped and the SQL generated is as follows:
2006226031Sstas**
2007226031Sstas** <blockquote><pre>
2008226031Sstas**  INSERT INTO table1 VALUES('It''s a happy day!')
2009226031Sstas** </pre></blockquote>
2010226031Sstas**
2011226031Sstas** This is correct.  Had we used %s instead of %q, the generated SQL
2012226031Sstas** would have looked like this:
2013226031Sstas**
2014226031Sstas** <blockquote><pre>
2015226031Sstas**  INSERT INTO table1 VALUES('It's a happy day!');
2016226031Sstas** </pre></blockquote>
2017226031Sstas**
2018226031Sstas** This second example is an SQL syntax error.  As a general rule you should
2019226031Sstas** always use %q instead of %s when inserting text into a string literal.
2020226031Sstas**
2021226031Sstas** ^(The %Q option works like %q except it also adds single quotes around
2022226031Sstas** the outside of the total string.  Additionally, if the parameter in the
2023226031Sstas** argument list is a NULL pointer, %Q substitutes the text "NULL" (without
2024226031Sstas** single quotes).)^  So, for example, one could say:
2025226031Sstas**
2026226031Sstas** <blockquote><pre>
2027226031Sstas**  char *zSQL = sqlite3_mprintf("INSERT INTO table VALUES(%Q)", zText);
2028226031Sstas**  sqlite3_exec(db, zSQL, 0, 0, 0);
2029226031Sstas**  sqlite3_free(zSQL);
2030226031Sstas** </pre></blockquote>
2031226031Sstas**
2032226031Sstas** The code above will render a correct SQL statement in the zSQL
2033226031Sstas** variable even if the zText variable is a NULL pointer.
2034226031Sstas**
2035226031Sstas** ^(The "%z" formatting option works like "%s" but with the
2036226031Sstas** addition that after the string has been read and copied into
2037226031Sstas** the result, [sqlite3_free()] is called on the input string.)^
2038226031Sstas*/
2039226031SstasSQLITE_API char *sqlite3_mprintf(const char*,...);
2040226031SstasSQLITE_API char *sqlite3_vmprintf(const char*, va_list);
2041226031SstasSQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...);
2042226128SstasSQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
2043226031Sstas
2044226031Sstas/*
2045226031Sstas** CAPI3REF: Memory Allocation Subsystem
2046226031Sstas**
2047226031Sstas** The SQLite core uses these three routines for all of its own
2048226031Sstas** internal memory allocation needs. "Core" in the previous sentence
2049226031Sstas** does not include operating-system specific VFS implementation.  The
2050226031Sstas** Windows VFS uses native malloc() and free() for some operations.
2051226031Sstas**
2052226031Sstas** ^The sqlite3_malloc() routine returns a pointer to a block
2053226031Sstas** of memory at least N bytes in length, where N is the parameter.
2054226031Sstas** ^If sqlite3_malloc() is unable to obtain sufficient free
2055226031Sstas** memory, it returns a NULL pointer.  ^If the parameter N to
2056226031Sstas** sqlite3_malloc() is zero or negative then sqlite3_malloc() returns
2057226031Sstas** a NULL pointer.
2058226031Sstas**
2059226031Sstas** ^Calling sqlite3_free() with a pointer previously returned
2060226031Sstas** by sqlite3_malloc() or sqlite3_realloc() releases that memory so
2061226031Sstas** that it might be reused.  ^The sqlite3_free() routine is
2062226031Sstas** a no-op if is called with a NULL pointer.  Passing a NULL pointer
2063226031Sstas** to sqlite3_free() is harmless.  After being freed, memory
2064226031Sstas** should neither be read nor written.  Even reading previously freed
2065226031Sstas** memory might result in a segmentation fault or other severe error.
2066226031Sstas** Memory corruption, a segmentation fault, or other severe error
2067226031Sstas** might result if sqlite3_free() is called with a non-NULL pointer that
2068226031Sstas** was not obtained from sqlite3_malloc() or sqlite3_realloc().
2069226031Sstas**
2070226031Sstas** ^(The sqlite3_realloc() interface attempts to resize a
2071226031Sstas** prior memory allocation to be at least N bytes, where N is the
2072226031Sstas** second parameter.  The memory allocation to be resized is the first
2073226031Sstas** parameter.)^ ^ If the first parameter to sqlite3_realloc()
2074226031Sstas** is a NULL pointer then its behavior is identical to calling
2075226031Sstas** sqlite3_malloc(N) where N is the second parameter to sqlite3_realloc().
2076226031Sstas** ^If the second parameter to sqlite3_realloc() is zero or
2077226031Sstas** negative then the behavior is exactly the same as calling
2078226031Sstas** sqlite3_free(P) where P is the first parameter to sqlite3_realloc().
2079226031Sstas** ^sqlite3_realloc() returns a pointer to a memory allocation
2080226031Sstas** of at least N bytes in size or NULL if sufficient memory is unavailable.
2081226031Sstas** ^If M is the size of the prior allocation, then min(N,M) bytes
2082226031Sstas** of the prior allocation are copied into the beginning of buffer returned
2083226031Sstas** by sqlite3_realloc() and the prior allocation is freed.
2084226031Sstas** ^If sqlite3_realloc() returns NULL, then the prior allocation
2085226031Sstas** is not freed.
2086226031Sstas**
2087226031Sstas** ^The memory returned by sqlite3_malloc() and sqlite3_realloc()
2088226128Sstas** is always aligned to at least an 8 byte boundary, or to a
2089226128Sstas** 4 byte boundary if the [SQLITE_4_BYTE_ALIGNED_MALLOC] compile-time
2090226128Sstas** option is used.
2091226031Sstas**
2092226031Sstas** In SQLite version 3.5.0 and 3.5.1, it was possible to define
2093226031Sstas** the SQLITE_OMIT_MEMORY_ALLOCATION which would cause the built-in
2094226031Sstas** implementation of these routines to be omitted.  That capability
2095226031Sstas** is no longer provided.  Only built-in memory allocators can be used.
2096226031Sstas**
2097226031Sstas** The Windows OS interface layer calls
2098226031Sstas** the system malloc() and free() directly when converting
2099226031Sstas** filenames between the UTF-8 encoding used by SQLite
2100226031Sstas** and whatever filename encoding is used by the particular Windows
2101226031Sstas** installation.  Memory allocation errors are detected, but
2102226031Sstas** they are reported back as [SQLITE_CANTOPEN] or
2103226031Sstas** [SQLITE_IOERR] rather than [SQLITE_NOMEM].
2104226031Sstas**
2105226031Sstas** The pointer arguments to [sqlite3_free()] and [sqlite3_realloc()]
2106226031Sstas** must be either NULL or else pointers obtained from a prior
2107226031Sstas** invocation of [sqlite3_malloc()] or [sqlite3_realloc()] that have
2108226031Sstas** not yet been released.
2109226031Sstas**
2110226031Sstas** The application must not read or write any part of
2111226031Sstas** a block of memory after it has been released using
2112226031Sstas** [sqlite3_free()] or [sqlite3_realloc()].
2113226031Sstas*/
2114226031SstasSQLITE_API void *sqlite3_malloc(int);
2115226031SstasSQLITE_API void *sqlite3_realloc(void*, int);
2116226031SstasSQLITE_API void sqlite3_free(void*);
2117226031Sstas
2118226031Sstas/*
2119226031Sstas** CAPI3REF: Memory Allocator Statistics
2120226031Sstas**
2121226031Sstas** SQLite provides these two interfaces for reporting on the status
2122226031Sstas** of the [sqlite3_malloc()], [sqlite3_free()], and [sqlite3_realloc()]
2123226031Sstas** routines, which form the built-in memory allocation subsystem.
2124226031Sstas**
2125226031Sstas** ^The [sqlite3_memory_used()] routine returns the number of bytes
2126226031Sstas** of memory currently outstanding (malloced but not freed).
2127226031Sstas** ^The [sqlite3_memory_highwater()] routine returns the maximum
2128226031Sstas** value of [sqlite3_memory_used()] since the high-water mark
2129226031Sstas** was last reset.  ^The values returned by [sqlite3_memory_used()] and
2130226031Sstas** [sqlite3_memory_highwater()] include any overhead
2131226031Sstas** added by SQLite in its implementation of [sqlite3_malloc()],
2132226031Sstas** but not overhead added by the any underlying system library
2133226031Sstas** routines that [sqlite3_malloc()] may call.
2134226031Sstas**
2135226031Sstas** ^The memory high-water mark is reset to the current value of
2136226031Sstas** [sqlite3_memory_used()] if and only if the parameter to
2137226031Sstas** [sqlite3_memory_highwater()] is true.  ^The value returned
2138226031Sstas** by [sqlite3_memory_highwater(1)] is the high-water mark
2139226031Sstas** prior to the reset.
2140226031Sstas*/
2141226031SstasSQLITE_API sqlite3_int64 sqlite3_memory_used(void);
2142226031SstasSQLITE_API sqlite3_int64 sqlite3_memory_highwater(int resetFlag);
2143226031Sstas
2144226031Sstas/*
2145226031Sstas** CAPI3REF: Pseudo-Random Number Generator
2146226031Sstas**
2147226031Sstas** SQLite contains a high-quality pseudo-random number generator (PRNG) used to
2148226031Sstas** select random [ROWID | ROWIDs] when inserting new records into a table that
2149226031Sstas** already uses the largest possible [ROWID].  The PRNG is also used for
2150226031Sstas** the build-in random() and randomblob() SQL functions.  This interface allows
2151226031Sstas** applications to access the same PRNG for other purposes.
2152226031Sstas**
2153226031Sstas** ^A call to this routine stores N bytes of randomness into buffer P.
2154226031Sstas**
2155226031Sstas** ^The first time this routine is invoked (either internally or by
2156226031Sstas** the application) the PRNG is seeded using randomness obtained
2157226031Sstas** from the xRandomness method of the default [sqlite3_vfs] object.
2158226031Sstas** ^On all subsequent invocations, the pseudo-randomness is generated
2159226031Sstas** internally and without recourse to the [sqlite3_vfs] xRandomness
2160226031Sstas** method.
2161226031Sstas*/
2162226031SstasSQLITE_API void sqlite3_randomness(int N, void *P);
2163226031Sstas
2164226031Sstas/*
2165226031Sstas** CAPI3REF: Compile-Time Authorization Callbacks
2166226031Sstas**
2167226128Sstas** ^This routine registers an authorizer callback with a particular
2168226031Sstas** [database connection], supplied in the first argument.
2169226031Sstas** ^The authorizer callback is invoked as SQL statements are being compiled
2170226031Sstas** by [sqlite3_prepare()] or its variants [sqlite3_prepare_v2()],
2171226031Sstas** [sqlite3_prepare16()] and [sqlite3_prepare16_v2()].  ^At various
2172226031Sstas** points during the compilation process, as logic is being created
2173226031Sstas** to perform various actions, the authorizer callback is invoked to
2174226031Sstas** see if those actions are allowed.  ^The authorizer callback should
2175226031Sstas** return [SQLITE_OK] to allow the action, [SQLITE_IGNORE] to disallow the
2176226031Sstas** specific action but allow the SQL statement to continue to be
2177226031Sstas** compiled, or [SQLITE_DENY] to cause the entire SQL statement to be
2178226031Sstas** rejected with an error.  ^If the authorizer callback returns
2179226031Sstas** any value other than [SQLITE_IGNORE], [SQLITE_OK], or [SQLITE_DENY]
2180226031Sstas** then the [sqlite3_prepare_v2()] or equivalent call that triggered
2181226031Sstas** the authorizer will fail with an error message.
2182226031Sstas**
2183226031Sstas** When the callback returns [SQLITE_OK], that means the operation
2184226031Sstas** requested is ok.  ^When the callback returns [SQLITE_DENY], the
2185226031Sstas** [sqlite3_prepare_v2()] or equivalent call that triggered the
2186226031Sstas** authorizer will fail with an error message explaining that
2187226128Sstas** access is denied.
2188226031Sstas**
2189226031Sstas** ^The first parameter to the authorizer callback is a copy of the third
2190226031Sstas** parameter to the sqlite3_set_authorizer() interface. ^The second parameter
2191226031Sstas** to the callback is an integer [SQLITE_COPY | action code] that specifies
2192226031Sstas** the particular action to be authorized. ^The third through sixth parameters
2193226031Sstas** to the callback are zero-terminated strings that contain additional
2194226031Sstas** details about the action to be authorized.
2195226031Sstas**
2196226031Sstas** ^If the action code is [SQLITE_READ]
2197226031Sstas** and the callback returns [SQLITE_IGNORE] then the
2198226031Sstas** [prepared statement] statement is constructed to substitute
2199226031Sstas** a NULL value in place of the table column that would have
2200226031Sstas** been read if [SQLITE_OK] had been returned.  The [SQLITE_IGNORE]
2201226031Sstas** return can be used to deny an untrusted user access to individual
2202226031Sstas** columns of a table.
2203226031Sstas** ^If the action code is [SQLITE_DELETE] and the callback returns
2204226031Sstas** [SQLITE_IGNORE] then the [DELETE] operation proceeds but the
2205226031Sstas** [truncate optimization] is disabled and all rows are deleted individually.
2206226031Sstas**
2207226031Sstas** An authorizer is used when [sqlite3_prepare | preparing]
2208226031Sstas** SQL statements from an untrusted source, to ensure that the SQL statements
2209226031Sstas** do not try to access data they are not allowed to see, or that they do not
2210226031Sstas** try to execute malicious statements that damage the database.  For
2211226031Sstas** example, an application may allow a user to enter arbitrary
2212226031Sstas** SQL queries for evaluation by a database.  But the application does
2213226031Sstas** not want the user to be able to make arbitrary changes to the
2214226031Sstas** database.  An authorizer could then be put in place while the
2215226031Sstas** user-entered SQL is being [sqlite3_prepare | prepared] that
2216226031Sstas** disallows everything except [SELECT] statements.
2217226031Sstas**
2218226031Sstas** Applications that need to process SQL from untrusted sources
2219226031Sstas** might also consider lowering resource limits using [sqlite3_limit()]
2220226031Sstas** and limiting database size using the [max_page_count] [PRAGMA]
2221226031Sstas** in addition to using an authorizer.
2222226031Sstas**
2223226031Sstas** ^(Only a single authorizer can be in place on a database connection
2224226031Sstas** at a time.  Each call to sqlite3_set_authorizer overrides the
2225226031Sstas** previous call.)^  ^Disable the authorizer by installing a NULL callback.
2226226031Sstas** The authorizer is disabled by default.
2227226031Sstas**
2228226031Sstas** The authorizer callback must not do anything that will modify
2229226031Sstas** the database connection that invoked the authorizer callback.
2230226031Sstas** Note that [sqlite3_prepare_v2()] and [sqlite3_step()] both modify their
2231226031Sstas** database connections for the meaning of "modify" in this paragraph.
2232226031Sstas**
2233226031Sstas** ^When [sqlite3_prepare_v2()] is used to prepare a statement, the
2234226128Sstas** statement might be re-prepared during [sqlite3_step()] due to a
2235226031Sstas** schema change.  Hence, the application should ensure that the
2236226031Sstas** correct authorizer callback remains in place during the [sqlite3_step()].
2237226031Sstas**
2238226031Sstas** ^Note that the authorizer callback is invoked only during
2239226031Sstas** [sqlite3_prepare()] or its variants.  Authorization is not
2240226031Sstas** performed during statement evaluation in [sqlite3_step()], unless
2241226031Sstas** as stated in the previous paragraph, sqlite3_step() invokes
2242226031Sstas** sqlite3_prepare_v2() to reprepare a statement after a schema change.
2243226031Sstas*/
2244226031SstasSQLITE_API int sqlite3_set_authorizer(
2245226031Sstas  sqlite3*,
2246226031Sstas  int (*xAuth)(void*,int,const char*,const char*,const char*,const char*),
2247226031Sstas  void *pUserData
2248226031Sstas);
2249226031Sstas
2250226031Sstas/*
2251226031Sstas** CAPI3REF: Authorizer Return Codes
2252226031Sstas**
2253226031Sstas** The [sqlite3_set_authorizer | authorizer callback function] must
2254226031Sstas** return either [SQLITE_OK] or one of these two constants in order
2255226031Sstas** to signal SQLite whether or not the action is permitted.  See the
2256226031Sstas** [sqlite3_set_authorizer | authorizer documentation] for additional
2257226031Sstas** information.
2258226128Sstas**
2259226128Sstas** Note that SQLITE_IGNORE is also used as a [SQLITE_ROLLBACK | return code]
2260226128Sstas** from the [sqlite3_vtab_on_conflict()] interface.
2261226031Sstas*/
2262226031Sstas#define SQLITE_DENY   1   /* Abort the SQL statement with an error */
2263226031Sstas#define SQLITE_IGNORE 2   /* Don't allow access, but don't generate an error */
2264226031Sstas
2265226031Sstas/*
2266226031Sstas** CAPI3REF: Authorizer Action Codes
2267226031Sstas**
2268226031Sstas** The [sqlite3_set_authorizer()] interface registers a callback function
2269226031Sstas** that is invoked to authorize certain SQL statement actions.  The
2270226031Sstas** second parameter to the callback is an integer code that specifies
2271226031Sstas** what action is being authorized.  These are the integer action codes that
2272226031Sstas** the authorizer callback may be passed.
2273226031Sstas**
2274226031Sstas** These action code values signify what kind of operation is to be
2275226031Sstas** authorized.  The 3rd and 4th parameters to the authorization
2276226031Sstas** callback function will be parameters or NULL depending on which of these
2277226031Sstas** codes is used as the second parameter.  ^(The 5th parameter to the
2278226031Sstas** authorizer callback is the name of the database ("main", "temp",
2279226031Sstas** etc.) if applicable.)^  ^The 6th parameter to the authorizer callback
2280226031Sstas** is the name of the inner-most trigger or view that is responsible for
2281226031Sstas** the access attempt or NULL if this access attempt is directly from
2282226031Sstas** top-level SQL code.
2283226031Sstas*/
2284226031Sstas/******************************************* 3rd ************ 4th ***********/
2285226031Sstas#define SQLITE_CREATE_INDEX          1   /* Index Name      Table Name      */
2286226031Sstas#define SQLITE_CREATE_TABLE          2   /* Table Name      NULL            */
2287226031Sstas#define SQLITE_CREATE_TEMP_INDEX     3   /* Index Name      Table Name      */
2288226031Sstas#define SQLITE_CREATE_TEMP_TABLE     4   /* Table Name      NULL            */
2289226031Sstas#define SQLITE_CREATE_TEMP_TRIGGER   5   /* Trigger Name    Table Name      */
2290226031Sstas#define SQLITE_CREATE_TEMP_VIEW      6   /* View Name       NULL            */
2291226031Sstas#define SQLITE_CREATE_TRIGGER        7   /* Trigger Name    Table Name      */
2292226031Sstas#define SQLITE_CREATE_VIEW           8   /* View Name       NULL            */
2293226031Sstas#define SQLITE_DELETE                9   /* Table Name      NULL            */
2294226031Sstas#define SQLITE_DROP_INDEX           10   /* Index Name      Table Name      */
2295226031Sstas#define SQLITE_DROP_TABLE           11   /* Table Name      NULL            */
2296226031Sstas#define SQLITE_DROP_TEMP_INDEX      12   /* Index Name      Table Name      */
2297226031Sstas#define SQLITE_DROP_TEMP_TABLE      13   /* Table Name      NULL            */
2298226031Sstas#define SQLITE_DROP_TEMP_TRIGGER    14   /* Trigger Name    Table Name      */
2299226031Sstas#define SQLITE_DROP_TEMP_VIEW       15   /* View Name       NULL            */
2300226031Sstas#define SQLITE_DROP_TRIGGER         16   /* Trigger Name    Table Name      */
2301226031Sstas#define SQLITE_DROP_VIEW            17   /* View Name       NULL            */
2302226031Sstas#define SQLITE_INSERT               18   /* Table Name      NULL            */
2303226031Sstas#define SQLITE_PRAGMA               19   /* Pragma Name     1st arg or NULL */
2304226031Sstas#define SQLITE_READ                 20   /* Table Name      Column Name     */
2305226031Sstas#define SQLITE_SELECT               21   /* NULL            NULL            */
2306226031Sstas#define SQLITE_TRANSACTION          22   /* Operation       NULL            */
2307226031Sstas#define SQLITE_UPDATE               23   /* Table Name      Column Name     */
2308226031Sstas#define SQLITE_ATTACH               24   /* Filename        NULL            */
2309226031Sstas#define SQLITE_DETACH               25   /* Database Name   NULL            */
2310226031Sstas#define SQLITE_ALTER_TABLE          26   /* Database Name   Table Name      */
2311226031Sstas#define SQLITE_REINDEX              27   /* Index Name      NULL            */
2312226031Sstas#define SQLITE_ANALYZE              28   /* Table Name      NULL            */
2313226031Sstas#define SQLITE_CREATE_VTABLE        29   /* Table Name      Module Name     */
2314226031Sstas#define SQLITE_DROP_VTABLE          30   /* Table Name      Module Name     */
2315226031Sstas#define SQLITE_FUNCTION             31   /* NULL            Function Name   */
2316226031Sstas#define SQLITE_SAVEPOINT            32   /* Operation       Savepoint Name  */
2317226031Sstas#define SQLITE_COPY                  0   /* No longer used */
2318226031Sstas
2319226031Sstas/*
2320226031Sstas** CAPI3REF: Tracing And Profiling Functions
2321226031Sstas**
2322226031Sstas** These routines register callback functions that can be used for
2323226031Sstas** tracing and profiling the execution of SQL statements.
2324226031Sstas**
2325226031Sstas** ^The callback function registered by sqlite3_trace() is invoked at
2326226031Sstas** various times when an SQL statement is being run by [sqlite3_step()].
2327226031Sstas** ^The sqlite3_trace() callback is invoked with a UTF-8 rendering of the
2328226031Sstas** SQL statement text as the statement first begins executing.
2329226031Sstas** ^(Additional sqlite3_trace() callbacks might occur
2330226031Sstas** as each triggered subprogram is entered.  The callbacks for triggers
2331226031Sstas** contain a UTF-8 SQL comment that identifies the trigger.)^
2332226031Sstas**
2333226031Sstas** ^The callback function registered by sqlite3_profile() is invoked
2334226031Sstas** as each SQL statement finishes.  ^The profile callback contains
2335226031Sstas** the original statement text and an estimate of wall-clock time
2336226128Sstas** of how long that statement took to run.  ^The profile callback
2337226128Sstas** time is in units of nanoseconds, however the current implementation
2338226128Sstas** is only capable of millisecond resolution so the six least significant
2339226128Sstas** digits in the time are meaningless.  Future versions of SQLite
2340226128Sstas** might provide greater resolution on the profiler callback.  The
2341226128Sstas** sqlite3_profile() function is considered experimental and is
2342226128Sstas** subject to change in future versions of SQLite.
2343226031Sstas*/
2344226128SstasSQLITE_API void *sqlite3_trace(sqlite3*, void(*xTrace)(void*,const char*), void*);
2345226031SstasSQLITE_API SQLITE_EXPERIMENTAL void *sqlite3_profile(sqlite3*,
2346226031Sstas   void(*xProfile)(void*,const char*,sqlite3_uint64), void*);
2347226031Sstas
2348226031Sstas/*
2349226031Sstas** CAPI3REF: Query Progress Callbacks
2350226031Sstas**
2351226128Sstas** ^The sqlite3_progress_handler(D,N,X,P) interface causes the callback
2352226128Sstas** function X to be invoked periodically during long running calls to
2353226128Sstas** [sqlite3_exec()], [sqlite3_step()] and [sqlite3_get_table()] for
2354226128Sstas** database connection D.  An example use for this
2355226031Sstas** interface is to keep a GUI updated during a large query.
2356226031Sstas**
2357226128Sstas** ^The parameter P is passed through as the only parameter to the
2358226128Sstas** callback function X.  ^The parameter N is the number of
2359226128Sstas** [virtual machine instructions] that are evaluated between successive
2360226128Sstas** invocations of the callback X.
2361226128Sstas**
2362226128Sstas** ^Only a single progress handler may be defined at one time per
2363226128Sstas** [database connection]; setting a new progress handler cancels the
2364226128Sstas** old one.  ^Setting parameter X to NULL disables the progress handler.
2365226128Sstas** ^The progress handler is also disabled by setting N to a value less
2366226128Sstas** than 1.
2367226128Sstas**
2368226031Sstas** ^If the progress callback returns non-zero, the operation is
2369226031Sstas** interrupted.  This feature can be used to implement a
2370226031Sstas** "Cancel" button on a GUI progress dialog box.
2371226031Sstas**
2372226128Sstas** The progress handler callback must not do anything that will modify
2373226031Sstas** the database connection that invoked the progress handler.
2374226031Sstas** Note that [sqlite3_prepare_v2()] and [sqlite3_step()] both modify their
2375226031Sstas** database connections for the meaning of "modify" in this paragraph.
2376226031Sstas**
2377226031Sstas*/
2378226031SstasSQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
2379226031Sstas
2380226031Sstas/*
2381226031Sstas** CAPI3REF: Opening A New Database Connection
2382226031Sstas**
2383226128Sstas** ^These routines open an SQLite database file as specified by the
2384226031Sstas** filename argument. ^The filename argument is interpreted as UTF-8 for
2385226031Sstas** sqlite3_open() and sqlite3_open_v2() and as UTF-16 in the native byte
2386226031Sstas** order for sqlite3_open16(). ^(A [database connection] handle is usually
2387226031Sstas** returned in *ppDb, even if an error occurs.  The only exception is that
2388226031Sstas** if SQLite is unable to allocate memory to hold the [sqlite3] object,
2389226031Sstas** a NULL will be written into *ppDb instead of a pointer to the [sqlite3]
2390226031Sstas** object.)^ ^(If the database is opened (and/or created) successfully, then
2391226031Sstas** [SQLITE_OK] is returned.  Otherwise an [error code] is returned.)^ ^The
2392226031Sstas** [sqlite3_errmsg()] or [sqlite3_errmsg16()] routines can be used to obtain
2393226031Sstas** an English language description of the error following a failure of any
2394226031Sstas** of the sqlite3_open() routines.
2395226031Sstas**
2396226031Sstas** ^The default encoding for the database will be UTF-8 if
2397226031Sstas** sqlite3_open() or sqlite3_open_v2() is called and
2398226031Sstas** UTF-16 in the native byte order if sqlite3_open16() is used.
2399226031Sstas**
2400226031Sstas** Whether or not an error occurs when it is opened, resources
2401226031Sstas** associated with the [database connection] handle should be released by
2402226031Sstas** passing it to [sqlite3_close()] when it is no longer required.
2403226031Sstas**
2404226031Sstas** The sqlite3_open_v2() interface works like sqlite3_open()
2405226031Sstas** except that it accepts two additional parameters for additional control
2406226031Sstas** over the new database connection.  ^(The flags parameter to
2407226031Sstas** sqlite3_open_v2() can take one of
2408226128Sstas** the following three values, optionally combined with the
2409226031Sstas** [SQLITE_OPEN_NOMUTEX], [SQLITE_OPEN_FULLMUTEX], [SQLITE_OPEN_SHAREDCACHE],
2410226128Sstas** [SQLITE_OPEN_PRIVATECACHE], and/or [SQLITE_OPEN_URI] flags:)^
2411226031Sstas**
2412226031Sstas** <dl>
2413226031Sstas** ^(<dt>[SQLITE_OPEN_READONLY]</dt>
2414226031Sstas** <dd>The database is opened in read-only mode.  If the database does not
2415226031Sstas** already exist, an error is returned.</dd>)^
2416226031Sstas**
2417226031Sstas** ^(<dt>[SQLITE_OPEN_READWRITE]</dt>
2418226031Sstas** <dd>The database is opened for reading and writing if possible, or reading
2419226031Sstas** only if the file is write protected by the operating system.  In either
2420226031Sstas** case the database must already exist, otherwise an error is returned.</dd>)^
2421226031Sstas**
2422226031Sstas** ^(<dt>[SQLITE_OPEN_READWRITE] | [SQLITE_OPEN_CREATE]</dt>
2423226128Sstas** <dd>The database is opened for reading and writing, and is created if
2424226031Sstas** it does not already exist. This is the behavior that is always used for
2425226031Sstas** sqlite3_open() and sqlite3_open16().</dd>)^
2426226031Sstas** </dl>
2427226031Sstas**
2428226031Sstas** If the 3rd parameter to sqlite3_open_v2() is not one of the
2429226128Sstas** combinations shown above optionally combined with other
2430226128Sstas** [SQLITE_OPEN_READONLY | SQLITE_OPEN_* bits]
2431226031Sstas** then the behavior is undefined.
2432226031Sstas**
2433226031Sstas** ^If the [SQLITE_OPEN_NOMUTEX] flag is set, then the database connection
2434226031Sstas** opens in the multi-thread [threading mode] as long as the single-thread
2435226031Sstas** mode has not been set at compile-time or start-time.  ^If the
2436226031Sstas** [SQLITE_OPEN_FULLMUTEX] flag is set then the database connection opens
2437226031Sstas** in the serialized [threading mode] unless single-thread was
2438226031Sstas** previously selected at compile-time or start-time.
2439226031Sstas** ^The [SQLITE_OPEN_SHAREDCACHE] flag causes the database connection to be
2440226031Sstas** eligible to use [shared cache mode], regardless of whether or not shared
2441226031Sstas** cache is enabled using [sqlite3_enable_shared_cache()].  ^The
2442226031Sstas** [SQLITE_OPEN_PRIVATECACHE] flag causes the database connection to not
2443226031Sstas** participate in [shared cache mode] even if it is enabled.
2444226031Sstas**
2445226128Sstas** ^The fourth parameter to sqlite3_open_v2() is the name of the
2446226128Sstas** [sqlite3_vfs] object that defines the operating system interface that
2447226128Sstas** the new database connection should use.  ^If the fourth parameter is
2448226128Sstas** a NULL pointer then the default [sqlite3_vfs] object is used.
2449226128Sstas**
2450226031Sstas** ^If the filename is ":memory:", then a private, temporary in-memory database
2451226031Sstas** is created for the connection.  ^This in-memory database will vanish when
2452226031Sstas** the database connection is closed.  Future versions of SQLite might
2453226031Sstas** make use of additional special filenames that begin with the ":" character.
2454226031Sstas** It is recommended that when a database filename actually does begin with
2455226031Sstas** a ":" character you should prefix the filename with a pathname such as
2456226031Sstas** "./" to avoid ambiguity.
2457226031Sstas**
2458226031Sstas** ^If the filename is an empty string, then a private, temporary
2459226031Sstas** on-disk database will be created.  ^This private database will be
2460226031Sstas** automatically deleted as soon as the database connection is closed.
2461226031Sstas**
2462226128Sstas** [[URI filenames in sqlite3_open()]] <h3>URI Filenames</h3>
2463226031Sstas**
2464226128Sstas** ^If [URI filename] interpretation is enabled, and the filename argument
2465226128Sstas** begins with "file:", then the filename is interpreted as a URI. ^URI
2466226128Sstas** filename interpretation is enabled if the [SQLITE_OPEN_URI] flag is
2467226128Sstas** set in the fourth argument to sqlite3_open_v2(), or if it has
2468226128Sstas** been enabled globally using the [SQLITE_CONFIG_URI] option with the
2469226128Sstas** [sqlite3_config()] method or by the [SQLITE_USE_URI] compile-time option.
2470226128Sstas** As of SQLite version 3.7.7, URI filename interpretation is turned off
2471226128Sstas** by default, but future releases of SQLite might enable URI filename
2472226128Sstas** interpretation by default.  See "[URI filenames]" for additional
2473226128Sstas** information.
2474226128Sstas**
2475226128Sstas** URI filenames are parsed according to RFC 3986. ^If the URI contains an
2476226128Sstas** authority, then it must be either an empty string or the string
2477226128Sstas** "localhost". ^If the authority is not an empty string or "localhost", an
2478226128Sstas** error is returned to the caller. ^The fragment component of a URI, if
2479226128Sstas** present, is ignored.
2480226128Sstas**
2481226128Sstas** ^SQLite uses the path component of the URI as the name of the disk file
2482226128Sstas** which contains the database. ^If the path begins with a '/' character,
2483226128Sstas** then it is interpreted as an absolute path. ^If the path does not begin
2484226128Sstas** with a '/' (meaning that the authority section is omitted from the URI)
2485226128Sstas** then the path is interpreted as a relative path.
2486226128Sstas** ^On windows, the first component of an absolute path
2487226128Sstas** is a drive specification (e.g. "C:").
2488226128Sstas**
2489226128Sstas** [[core URI query parameters]]
2490226128Sstas** The query component of a URI may contain parameters that are interpreted
2491226128Sstas** either by SQLite itself, or by a [VFS | custom VFS implementation].
2492226128Sstas** SQLite interprets the following three query parameters:
2493226128Sstas**
2494226128Sstas** <ul>
2495226128Sstas**   <li> <b>vfs</b>: ^The "vfs" parameter may be used to specify the name of
2496226128Sstas**     a VFS object that provides the operating system interface that should
2497226128Sstas**     be used to access the database file on disk. ^If this option is set to
2498226128Sstas**     an empty string the default VFS object is used. ^Specifying an unknown
2499226128Sstas**     VFS is an error. ^If sqlite3_open_v2() is used and the vfs option is
2500226128Sstas**     present, then the VFS specified by the option takes precedence over
2501226128Sstas**     the value passed as the fourth parameter to sqlite3_open_v2().
2502226128Sstas**
2503226128Sstas**   <li> <b>mode</b>: ^(The mode parameter may be set to either "ro", "rw" or
2504226128Sstas**     "rwc". Attempting to set it to any other value is an error)^.
2505226128Sstas**     ^If "ro" is specified, then the database is opened for read-only
2506226128Sstas**     access, just as if the [SQLITE_OPEN_READONLY] flag had been set in the
2507226128Sstas**     third argument to sqlite3_prepare_v2(). ^If the mode option is set to
2508226128Sstas**     "rw", then the database is opened for read-write (but not create)
2509226128Sstas**     access, as if SQLITE_OPEN_READWRITE (but not SQLITE_OPEN_CREATE) had
2510226128Sstas**     been set. ^Value "rwc" is equivalent to setting both
2511226128Sstas**     SQLITE_OPEN_READWRITE and SQLITE_OPEN_CREATE. ^If sqlite3_open_v2() is
2512226128Sstas**     used, it is an error to specify a value for the mode parameter that is
2513226128Sstas**     less restrictive than that specified by the flags passed as the third
2514226128Sstas**     parameter.
2515226128Sstas**
2516226128Sstas**   <li> <b>cache</b>: ^The cache parameter may be set to either "shared" or
2517226128Sstas**     "private". ^Setting it to "shared" is equivalent to setting the
2518226128Sstas**     SQLITE_OPEN_SHAREDCACHE bit in the flags argument passed to
2519226128Sstas**     sqlite3_open_v2(). ^Setting the cache parameter to "private" is
2520226128Sstas**     equivalent to setting the SQLITE_OPEN_PRIVATECACHE bit.
2521226128Sstas**     ^If sqlite3_open_v2() is used and the "cache" parameter is present in
2522226128Sstas**     a URI filename, its value overrides any behaviour requested by setting
2523226128Sstas**     SQLITE_OPEN_PRIVATECACHE or SQLITE_OPEN_SHAREDCACHE flag.
2524226128Sstas** </ul>
2525226128Sstas**
2526226128Sstas** ^Specifying an unknown parameter in the query component of a URI is not an
2527226128Sstas** error.  Future versions of SQLite might understand additional query
2528226128Sstas** parameters.  See "[query parameters with special meaning to SQLite]" for
2529226128Sstas** additional information.
2530226128Sstas**
2531226128Sstas** [[URI filename examples]] <h3>URI filename examples</h3>
2532226128Sstas**
2533226128Sstas** <table border="1" align=center cellpadding=5>
2534226128Sstas** <tr><th> URI filenames <th> Results
2535226128Sstas** <tr><td> file:data.db <td>
2536226128Sstas**          Open the file "data.db" in the current directory.
2537226128Sstas** <tr><td> file:/home/fred/data.db<br>
2538226128Sstas**          file:///home/fred/data.db <br>
2539226128Sstas**          file://localhost/home/fred/data.db <br> <td>
2540226128Sstas**          Open the database file "/home/fred/data.db".
2541226128Sstas** <tr><td> file://darkstar/home/fred/data.db <td>
2542226128Sstas**          An error. "darkstar" is not a recognized authority.
2543226128Sstas** <tr><td style="white-space:nowrap">
2544226128Sstas**          file:///C:/Documents%20and%20Settings/fred/Desktop/data.db
2545226128Sstas**     <td> Windows only: Open the file "data.db" on fred's desktop on drive
2546226128Sstas**          C:. Note that the %20 escaping in this example is not strictly
2547226128Sstas**          necessary - space characters can be used literally
2548226128Sstas**          in URI filenames.
2549226128Sstas** <tr><td> file:data.db?mode=ro&cache=private <td>
2550226128Sstas**          Open file "data.db" in the current directory for read-only access.
2551226128Sstas**          Regardless of whether or not shared-cache mode is enabled by
2552226128Sstas**          default, use a private cache.
2553226128Sstas** <tr><td> file:/home/fred/data.db?vfs=unix-nolock <td>
2554226128Sstas**          Open file "/home/fred/data.db". Use the special VFS "unix-nolock".
2555226128Sstas** <tr><td> file:data.db?mode=readonly <td>
2556226128Sstas**          An error. "readonly" is not a valid option for the "mode" parameter.
2557226128Sstas** </table>
2558226128Sstas**
2559226128Sstas** ^URI hexadecimal escape sequences (%HH) are supported within the path and
2560226128Sstas** query components of a URI. A hexadecimal escape sequence consists of a
2561226128Sstas** percent sign - "%" - followed by exactly two hexadecimal digits
2562226128Sstas** specifying an octet value. ^Before the path or query components of a
2563226128Sstas** URI filename are interpreted, they are encoded using UTF-8 and all
2564226128Sstas** hexadecimal escape sequences replaced by a single byte containing the
2565226128Sstas** corresponding octet. If this process generates an invalid UTF-8 encoding,
2566226128Sstas** the results are undefined.
2567226128Sstas**
2568226031Sstas** <b>Note to Windows users:</b>  The encoding used for the filename argument
2569226031Sstas** of sqlite3_open() and sqlite3_open_v2() must be UTF-8, not whatever
2570226031Sstas** codepage is currently defined.  Filenames containing international
2571226031Sstas** characters must be converted to UTF-8 prior to passing them into
2572226031Sstas** sqlite3_open() or sqlite3_open_v2().
2573226031Sstas*/
2574226031SstasSQLITE_API int sqlite3_open(
2575226031Sstas  const char *filename,   /* Database filename (UTF-8) */
2576226031Sstas  sqlite3 **ppDb          /* OUT: SQLite db handle */
2577226031Sstas);
2578226031SstasSQLITE_API int sqlite3_open16(
2579226031Sstas  const void *filename,   /* Database filename (UTF-16) */
2580226031Sstas  sqlite3 **ppDb          /* OUT: SQLite db handle */
2581226031Sstas);
2582226031SstasSQLITE_API int sqlite3_open_v2(
2583226031Sstas  const char *filename,   /* Database filename (UTF-8) */
2584226031Sstas  sqlite3 **ppDb,         /* OUT: SQLite db handle */
2585226031Sstas  int flags,              /* Flags */
2586226031Sstas  const char *zVfs        /* Name of VFS module to use */
2587226031Sstas);
2588226031Sstas
2589226031Sstas/*
2590226128Sstas** CAPI3REF: Obtain Values For URI Parameters
2591226128Sstas**
2592226128Sstas** This is a utility routine, useful to VFS implementations, that checks
2593226128Sstas** to see if a database file was a URI that contained a specific query
2594226128Sstas** parameter, and if so obtains the value of the query parameter.
2595226128Sstas**
2596226128Sstas** The zFilename argument is the filename pointer passed into the xOpen()
2597226128Sstas** method of a VFS implementation.  The zParam argument is the name of the
2598226128Sstas** query parameter we seek.  This routine returns the value of the zParam
2599226128Sstas** parameter if it exists.  If the parameter does not exist, this routine
2600226128Sstas** returns a NULL pointer.
2601226128Sstas**
2602226128Sstas** If the zFilename argument to this function is not a pointer that SQLite
2603226128Sstas** passed into the xOpen VFS method, then the behavior of this routine
2604226128Sstas** is undefined and probably undesirable.
2605226128Sstas*/
2606226128SstasSQLITE_API const char *sqlite3_uri_parameter(const char *zFilename, const char *zParam);
2607226128Sstas
2608226128Sstas
2609226128Sstas/*
2610226031Sstas** CAPI3REF: Error Codes And Messages
2611226031Sstas**
2612226031Sstas** ^The sqlite3_errcode() interface returns the numeric [result code] or
2613226031Sstas** [extended result code] for the most recent failed sqlite3_* API call
2614226031Sstas** associated with a [database connection]. If a prior API call failed
2615226031Sstas** but the most recent API call succeeded, the return value from
2616226031Sstas** sqlite3_errcode() is undefined.  ^The sqlite3_extended_errcode()
2617226128Sstas** interface is the same except that it always returns the
2618226031Sstas** [extended result code] even when extended result codes are
2619226031Sstas** disabled.
2620226031Sstas**
2621226031Sstas** ^The sqlite3_errmsg() and sqlite3_errmsg16() return English-language
2622226031Sstas** text that describes the error, as either UTF-8 or UTF-16 respectively.
2623226031Sstas** ^(Memory to hold the error message string is managed internally.
2624226031Sstas** The application does not need to worry about freeing the result.
2625226031Sstas** However, the error string might be overwritten or deallocated by
2626226031Sstas** subsequent calls to other SQLite interface functions.)^
2627226031Sstas**
2628226031Sstas** When the serialized [threading mode] is in use, it might be the
2629226031Sstas** case that a second error occurs on a separate thread in between
2630226031Sstas** the time of the first error and the call to these interfaces.
2631226031Sstas** When that happens, the second error will be reported since these
2632226031Sstas** interfaces always report the most recent result.  To avoid
2633226031Sstas** this, each thread can obtain exclusive use of the [database connection] D
2634226031Sstas** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning
2635226031Sstas** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after
2636226031Sstas** all calls to the interfaces listed here are completed.
2637226031Sstas**
2638226031Sstas** If an interface fails with SQLITE_MISUSE, that means the interface
2639226031Sstas** was invoked incorrectly by the application.  In that case, the
2640226031Sstas** error code and message may or may not be set.
2641226031Sstas*/
2642226031SstasSQLITE_API int sqlite3_errcode(sqlite3 *db);
2643226031SstasSQLITE_API int sqlite3_extended_errcode(sqlite3 *db);
2644226031SstasSQLITE_API const char *sqlite3_errmsg(sqlite3*);
2645226031SstasSQLITE_API const void *sqlite3_errmsg16(sqlite3*);
2646226031Sstas
2647226031Sstas/*
2648226031Sstas** CAPI3REF: SQL Statement Object
2649226031Sstas** KEYWORDS: {prepared statement} {prepared statements}
2650226031Sstas**
2651226031Sstas** An instance of this object represents a single SQL statement.
2652226031Sstas** This object is variously known as a "prepared statement" or a
2653226031Sstas** "compiled SQL statement" or simply as a "statement".
2654226031Sstas**
2655226031Sstas** The life of a statement object goes something like this:
2656226031Sstas**
2657226031Sstas** <ol>
2658226031Sstas** <li> Create the object using [sqlite3_prepare_v2()] or a related
2659226031Sstas**      function.
2660226031Sstas** <li> Bind values to [host parameters] using the sqlite3_bind_*()
2661226031Sstas**      interfaces.
2662226031Sstas** <li> Run the SQL by calling [sqlite3_step()] one or more times.
2663226031Sstas** <li> Reset the statement using [sqlite3_reset()] then go back
2664226031Sstas**      to step 2.  Do this zero or more times.
2665226031Sstas** <li> Destroy the object using [sqlite3_finalize()].
2666226031Sstas** </ol>
2667226031Sstas**
2668226031Sstas** Refer to documentation on individual methods above for additional
2669226031Sstas** information.
2670226031Sstas*/
2671226031Sstastypedef struct sqlite3_stmt sqlite3_stmt;
2672226031Sstas
2673226031Sstas/*
2674226031Sstas** CAPI3REF: Run-time Limits
2675226031Sstas**
2676226031Sstas** ^(This interface allows the size of various constructs to be limited
2677226031Sstas** on a connection by connection basis.  The first parameter is the
2678226031Sstas** [database connection] whose limit is to be set or queried.  The
2679226031Sstas** second parameter is one of the [limit categories] that define a
2680226031Sstas** class of constructs to be size limited.  The third parameter is the
2681226128Sstas** new limit for that construct.)^
2682226031Sstas**
2683226031Sstas** ^If the new limit is a negative number, the limit is unchanged.
2684226128Sstas** ^(For each limit category SQLITE_LIMIT_<i>NAME</i> there is a
2685226031Sstas** [limits | hard upper bound]
2686226128Sstas** set at compile-time by a C preprocessor macro called
2687226128Sstas** [limits | SQLITE_MAX_<i>NAME</i>].
2688226031Sstas** (The "_LIMIT_" in the name is changed to "_MAX_".))^
2689226031Sstas** ^Attempts to increase a limit above its hard upper bound are
2690226031Sstas** silently truncated to the hard upper bound.
2691226031Sstas**
2692226128Sstas** ^Regardless of whether or not the limit was changed, the
2693226128Sstas** [sqlite3_limit()] interface returns the prior value of the limit.
2694226128Sstas** ^Hence, to find the current value of a limit without changing it,
2695226128Sstas** simply invoke this interface with the third parameter set to -1.
2696226128Sstas**
2697226031Sstas** Run-time limits are intended for use in applications that manage
2698226031Sstas** both their own internal database and also databases that are controlled
2699226031Sstas** by untrusted external sources.  An example application might be a
2700226031Sstas** web browser that has its own databases for storing history and
2701226031Sstas** separate databases controlled by JavaScript applications downloaded
2702226031Sstas** off the Internet.  The internal databases can be given the
2703226031Sstas** large, default limits.  Databases managed by external sources can
2704226031Sstas** be given much smaller limits designed to prevent a denial of service
2705226031Sstas** attack.  Developers might also want to use the [sqlite3_set_authorizer()]
2706226031Sstas** interface to further control untrusted SQL.  The size of the database
2707226031Sstas** created by an untrusted script can be contained using the
2708226031Sstas** [max_page_count] [PRAGMA].
2709226031Sstas**
2710226031Sstas** New run-time limit categories may be added in future releases.
2711226031Sstas*/
2712226031SstasSQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
2713226031Sstas
2714226031Sstas/*
2715226031Sstas** CAPI3REF: Run-Time Limit Categories
2716226031Sstas** KEYWORDS: {limit category} {*limit categories}
2717226031Sstas**
2718226031Sstas** These constants define various performance limits
2719226031Sstas** that can be lowered at run-time using [sqlite3_limit()].
2720226031Sstas** The synopsis of the meanings of the various limits is shown below.
2721226031Sstas** Additional information is available at [limits | Limits in SQLite].
2722226031Sstas**
2723226031Sstas** <dl>
2724226128Sstas** [[SQLITE_LIMIT_LENGTH]] ^(<dt>SQLITE_LIMIT_LENGTH</dt>
2725226128Sstas** <dd>The maximum size of any string or BLOB or table row, in bytes.<dd>)^
2726226031Sstas**
2727226128Sstas** [[SQLITE_LIMIT_SQL_LENGTH]] ^(<dt>SQLITE_LIMIT_SQL_LENGTH</dt>
2728226031Sstas** <dd>The maximum length of an SQL statement, in bytes.</dd>)^
2729226031Sstas**
2730226128Sstas** [[SQLITE_LIMIT_COLUMN]] ^(<dt>SQLITE_LIMIT_COLUMN</dt>
2731226031Sstas** <dd>The maximum number of columns in a table definition or in the
2732226031Sstas** result set of a [SELECT] or the maximum number of columns in an index
2733226031Sstas** or in an ORDER BY or GROUP BY clause.</dd>)^
2734226031Sstas**
2735226128Sstas** [[SQLITE_LIMIT_EXPR_DEPTH]] ^(<dt>SQLITE_LIMIT_EXPR_DEPTH</dt>
2736226031Sstas** <dd>The maximum depth of the parse tree on any expression.</dd>)^
2737226031Sstas**
2738226128Sstas** [[SQLITE_LIMIT_COMPOUND_SELECT]] ^(<dt>SQLITE_LIMIT_COMPOUND_SELECT</dt>
2739226031Sstas** <dd>The maximum number of terms in a compound SELECT statement.</dd>)^
2740226031Sstas**
2741226128Sstas** [[SQLITE_LIMIT_VDBE_OP]] ^(<dt>SQLITE_LIMIT_VDBE_OP</dt>
2742226031Sstas** <dd>The maximum number of instructions in a virtual machine program
2743226128Sstas** used to implement an SQL statement.  This limit is not currently
2744226128Sstas** enforced, though that might be added in some future release of
2745226128Sstas** SQLite.</dd>)^
2746226031Sstas**
2747226128Sstas** [[SQLITE_LIMIT_FUNCTION_ARG]] ^(<dt>SQLITE_LIMIT_FUNCTION_ARG</dt>
2748226031Sstas** <dd>The maximum number of arguments on a function.</dd>)^
2749226031Sstas**
2750226128Sstas** [[SQLITE_LIMIT_ATTACHED]] ^(<dt>SQLITE_LIMIT_ATTACHED</dt>
2751226031Sstas** <dd>The maximum number of [ATTACH | attached databases].)^</dd>
2752226031Sstas**
2753226128Sstas** [[SQLITE_LIMIT_LIKE_PATTERN_LENGTH]]
2754226031Sstas** ^(<dt>SQLITE_LIMIT_LIKE_PATTERN_LENGTH</dt>
2755226031Sstas** <dd>The maximum length of the pattern argument to the [LIKE] or
2756226031Sstas** [GLOB] operators.</dd>)^
2757226031Sstas**
2758226128Sstas** [[SQLITE_LIMIT_VARIABLE_NUMBER]]
2759226031Sstas** ^(<dt>SQLITE_LIMIT_VARIABLE_NUMBER</dt>
2760226128Sstas** <dd>The maximum index number of any [parameter] in an SQL statement.)^
2761226031Sstas**
2762226128Sstas** [[SQLITE_LIMIT_TRIGGER_DEPTH]] ^(<dt>SQLITE_LIMIT_TRIGGER_DEPTH</dt>
2763226031Sstas** <dd>The maximum depth of recursion for triggers.</dd>)^
2764226031Sstas** </dl>
2765226031Sstas*/
2766226031Sstas#define SQLITE_LIMIT_LENGTH                    0
2767226031Sstas#define SQLITE_LIMIT_SQL_LENGTH                1
2768226031Sstas#define SQLITE_LIMIT_COLUMN                    2
2769226031Sstas#define SQLITE_LIMIT_EXPR_DEPTH                3
2770226031Sstas#define SQLITE_LIMIT_COMPOUND_SELECT           4
2771226031Sstas#define SQLITE_LIMIT_VDBE_OP                   5
2772226031Sstas#define SQLITE_LIMIT_FUNCTION_ARG              6
2773226031Sstas#define SQLITE_LIMIT_ATTACHED                  7
2774226031Sstas#define SQLITE_LIMIT_LIKE_PATTERN_LENGTH       8
2775226031Sstas#define SQLITE_LIMIT_VARIABLE_NUMBER           9
2776226031Sstas#define SQLITE_LIMIT_TRIGGER_DEPTH            10
2777226031Sstas
2778226031Sstas/*
2779226031Sstas** CAPI3REF: Compiling An SQL Statement
2780226031Sstas** KEYWORDS: {SQL statement compiler}
2781226031Sstas**
2782226031Sstas** To execute an SQL query, it must first be compiled into a byte-code
2783226031Sstas** program using one of these routines.
2784226031Sstas**
2785226031Sstas** The first argument, "db", is a [database connection] obtained from a
2786226031Sstas** prior successful call to [sqlite3_open()], [sqlite3_open_v2()] or
2787226031Sstas** [sqlite3_open16()].  The database connection must not have been closed.
2788226031Sstas**
2789226031Sstas** The second argument, "zSql", is the statement to be compiled, encoded
2790226031Sstas** as either UTF-8 or UTF-16.  The sqlite3_prepare() and sqlite3_prepare_v2()
2791226031Sstas** interfaces use UTF-8, and sqlite3_prepare16() and sqlite3_prepare16_v2()
2792226031Sstas** use UTF-16.
2793226031Sstas**
2794226031Sstas** ^If the nByte argument is less than zero, then zSql is read up to the
2795226031Sstas** first zero terminator. ^If nByte is non-negative, then it is the maximum
2796226031Sstas** number of  bytes read from zSql.  ^When nByte is non-negative, the
2797226031Sstas** zSql string ends at either the first '\000' or '\u0000' character or
2798226031Sstas** the nByte-th byte, whichever comes first. If the caller knows
2799226031Sstas** that the supplied string is nul-terminated, then there is a small
2800226031Sstas** performance advantage to be gained by passing an nByte parameter that
2801226031Sstas** is equal to the number of bytes in the input string <i>including</i>
2802226031Sstas** the nul-terminator bytes.
2803226031Sstas**
2804226031Sstas** ^If pzTail is not NULL then *pzTail is made to point to the first byte
2805226031Sstas** past the end of the first SQL statement in zSql.  These routines only
2806226031Sstas** compile the first statement in zSql, so *pzTail is left pointing to
2807226031Sstas** what remains uncompiled.
2808226031Sstas**
2809226031Sstas** ^*ppStmt is left pointing to a compiled [prepared statement] that can be
2810226031Sstas** executed using [sqlite3_step()].  ^If there is an error, *ppStmt is set
2811226031Sstas** to NULL.  ^If the input text contains no SQL (if the input is an empty
2812226031Sstas** string or a comment) then *ppStmt is set to NULL.
2813226031Sstas** The calling procedure is responsible for deleting the compiled
2814226031Sstas** SQL statement using [sqlite3_finalize()] after it has finished with it.
2815226031Sstas** ppStmt may not be NULL.
2816226031Sstas**
2817226031Sstas** ^On success, the sqlite3_prepare() family of routines return [SQLITE_OK];
2818226031Sstas** otherwise an [error code] is returned.
2819226031Sstas**
2820226031Sstas** The sqlite3_prepare_v2() and sqlite3_prepare16_v2() interfaces are
2821226031Sstas** recommended for all new programs. The two older interfaces are retained
2822226031Sstas** for backwards compatibility, but their use is discouraged.
2823226031Sstas** ^In the "v2" interfaces, the prepared statement
2824226031Sstas** that is returned (the [sqlite3_stmt] object) contains a copy of the
2825226031Sstas** original SQL text. This causes the [sqlite3_step()] interface to
2826226031Sstas** behave differently in three ways:
2827226031Sstas**
2828226031Sstas** <ol>
2829226031Sstas** <li>
2830226031Sstas** ^If the database schema changes, instead of returning [SQLITE_SCHEMA] as it
2831226031Sstas** always used to do, [sqlite3_step()] will automatically recompile the SQL
2832226128Sstas** statement and try to run it again.
2833226031Sstas** </li>
2834226031Sstas**
2835226031Sstas** <li>
2836226031Sstas** ^When an error occurs, [sqlite3_step()] will return one of the detailed
2837226031Sstas** [error codes] or [extended error codes].  ^The legacy behavior was that
2838226031Sstas** [sqlite3_step()] would only return a generic [SQLITE_ERROR] result code
2839226031Sstas** and the application would have to make a second call to [sqlite3_reset()]
2840226031Sstas** in order to find the underlying cause of the problem. With the "v2" prepare
2841226031Sstas** interfaces, the underlying reason for the error is returned immediately.
2842226031Sstas** </li>
2843226031Sstas**
2844226031Sstas** <li>
2845226128Sstas** ^If the specific value bound to [parameter | host parameter] in the
2846226128Sstas** WHERE clause might influence the choice of query plan for a statement,
2847226128Sstas** then the statement will be automatically recompiled, as if there had been
2848226128Sstas** a schema change, on the first  [sqlite3_step()] call following any change
2849226128Sstas** to the [sqlite3_bind_text | bindings] of that [parameter].
2850226128Sstas** ^The specific value of WHERE-clause [parameter] might influence the
2851226128Sstas** choice of query plan if the parameter is the left-hand side of a [LIKE]
2852226128Sstas** or [GLOB] operator or if the parameter is compared to an indexed column
2853226128Sstas** and the [SQLITE_ENABLE_STAT2] compile-time option is enabled.
2854226128Sstas** the
2855226031Sstas** </li>
2856226031Sstas** </ol>
2857226031Sstas*/
2858226031SstasSQLITE_API int sqlite3_prepare(
2859226031Sstas  sqlite3 *db,            /* Database handle */
2860226031Sstas  const char *zSql,       /* SQL statement, UTF-8 encoded */
2861226031Sstas  int nByte,              /* Maximum length of zSql in bytes. */
2862226031Sstas  sqlite3_stmt **ppStmt,  /* OUT: Statement handle */
2863226031Sstas  const char **pzTail     /* OUT: Pointer to unused portion of zSql */
2864226031Sstas);
2865226031SstasSQLITE_API int sqlite3_prepare_v2(
2866226031Sstas  sqlite3 *db,            /* Database handle */
2867226031Sstas  const char *zSql,       /* SQL statement, UTF-8 encoded */
2868226031Sstas  int nByte,              /* Maximum length of zSql in bytes. */
2869226031Sstas  sqlite3_stmt **ppStmt,  /* OUT: Statement handle */
2870226031Sstas  const char **pzTail     /* OUT: Pointer to unused portion of zSql */
2871226031Sstas);
2872226031SstasSQLITE_API int sqlite3_prepare16(
2873226031Sstas  sqlite3 *db,            /* Database handle */
2874226031Sstas  const void *zSql,       /* SQL statement, UTF-16 encoded */
2875226031Sstas  int nByte,              /* Maximum length of zSql in bytes. */
2876226031Sstas  sqlite3_stmt **ppStmt,  /* OUT: Statement handle */
2877226031Sstas  const void **pzTail     /* OUT: Pointer to unused portion of zSql */
2878226031Sstas);
2879226031SstasSQLITE_API int sqlite3_prepare16_v2(
2880226031Sstas  sqlite3 *db,            /* Database handle */
2881226031Sstas  const void *zSql,       /* SQL statement, UTF-16 encoded */
2882226031Sstas  int nByte,              /* Maximum length of zSql in bytes. */
2883226031Sstas  sqlite3_stmt **ppStmt,  /* OUT: Statement handle */
2884226031Sstas  const void **pzTail     /* OUT: Pointer to unused portion of zSql */
2885226031Sstas);
2886226031Sstas
2887226031Sstas/*
2888226031Sstas** CAPI3REF: Retrieving Statement SQL
2889226031Sstas**
2890226031Sstas** ^This interface can be used to retrieve a saved copy of the original
2891226031Sstas** SQL text used to create a [prepared statement] if that statement was
2892226031Sstas** compiled using either [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()].
2893226031Sstas*/
2894226031SstasSQLITE_API const char *sqlite3_sql(sqlite3_stmt *pStmt);
2895226031Sstas
2896226031Sstas/*
2897226128Sstas** CAPI3REF: Determine If An SQL Statement Writes The Database
2898226128Sstas**
2899226128Sstas** ^The sqlite3_stmt_readonly(X) interface returns true (non-zero) if
2900226128Sstas** and only if the [prepared statement] X makes no direct changes to
2901226128Sstas** the content of the database file.
2902226128Sstas**
2903226128Sstas** Note that [application-defined SQL functions] or
2904226128Sstas** [virtual tables] might change the database indirectly as a side effect.
2905226128Sstas** ^(For example, if an application defines a function "eval()" that
2906226128Sstas** calls [sqlite3_exec()], then the following SQL statement would
2907226128Sstas** change the database file through side-effects:
2908226128Sstas**
2909226128Sstas** <blockquote><pre>
2910226128Sstas**    SELECT eval('DELETE FROM t1') FROM t2;
2911226128Sstas** </pre></blockquote>
2912226128Sstas**
2913226128Sstas** But because the [SELECT] statement does not change the database file
2914226128Sstas** directly, sqlite3_stmt_readonly() would still return true.)^
2915226128Sstas**
2916226128Sstas** ^Transaction control statements such as [BEGIN], [COMMIT], [ROLLBACK],
2917226128Sstas** [SAVEPOINT], and [RELEASE] cause sqlite3_stmt_readonly() to return true,
2918226128Sstas** since the statements themselves do not actually modify the database but
2919226128Sstas** rather they control the timing of when other statements modify the
2920226128Sstas** database.  ^The [ATTACH] and [DETACH] statements also cause
2921226128Sstas** sqlite3_stmt_readonly() to return true since, while those statements
2922226128Sstas** change the configuration of a database connection, they do not make
2923226128Sstas** changes to the content of the database files on disk.
2924226128Sstas*/
2925226128SstasSQLITE_API int sqlite3_stmt_readonly(sqlite3_stmt *pStmt);
2926226128Sstas
2927226128Sstas/*
2928226031Sstas** CAPI3REF: Dynamically Typed Value Object
2929226031Sstas** KEYWORDS: {protected sqlite3_value} {unprotected sqlite3_value}
2930226031Sstas**
2931226031Sstas** SQLite uses the sqlite3_value object to represent all values
2932226031Sstas** that can be stored in a database table. SQLite uses dynamic typing
2933226031Sstas** for the values it stores.  ^Values stored in sqlite3_value objects
2934226031Sstas** can be integers, floating point values, strings, BLOBs, or NULL.
2935226031Sstas**
2936226031Sstas** An sqlite3_value object may be either "protected" or "unprotected".
2937226031Sstas** Some interfaces require a protected sqlite3_value.  Other interfaces
2938226031Sstas** will accept either a protected or an unprotected sqlite3_value.
2939226031Sstas** Every interface that accepts sqlite3_value arguments specifies
2940226031Sstas** whether or not it requires a protected sqlite3_value.
2941226031Sstas**
2942226031Sstas** The terms "protected" and "unprotected" refer to whether or not
2943226128Sstas** a mutex is held.  An internal mutex is held for a protected
2944226031Sstas** sqlite3_value object but no mutex is held for an unprotected
2945226031Sstas** sqlite3_value object.  If SQLite is compiled to be single-threaded
2946226031Sstas** (with [SQLITE_THREADSAFE=0] and with [sqlite3_threadsafe()] returning 0)
2947226128Sstas** or if SQLite is run in one of reduced mutex modes
2948226031Sstas** [SQLITE_CONFIG_SINGLETHREAD] or [SQLITE_CONFIG_MULTITHREAD]
2949226031Sstas** then there is no distinction between protected and unprotected
2950226031Sstas** sqlite3_value objects and they can be used interchangeably.  However,
2951226031Sstas** for maximum code portability it is recommended that applications
2952226128Sstas** still make the distinction between protected and unprotected
2953226031Sstas** sqlite3_value objects even when not strictly required.
2954226031Sstas**
2955226031Sstas** ^The sqlite3_value objects that are passed as parameters into the
2956226031Sstas** implementation of [application-defined SQL functions] are protected.
2957226031Sstas** ^The sqlite3_value object returned by
2958226031Sstas** [sqlite3_column_value()] is unprotected.
2959226031Sstas** Unprotected sqlite3_value objects may only be used with
2960226031Sstas** [sqlite3_result_value()] and [sqlite3_bind_value()].
2961226031Sstas** The [sqlite3_value_blob | sqlite3_value_type()] family of
2962226031Sstas** interfaces require protected sqlite3_value objects.
2963226031Sstas*/
2964226031Sstastypedef struct Mem sqlite3_value;
2965226031Sstas
2966226031Sstas/*
2967226031Sstas** CAPI3REF: SQL Function Context Object
2968226031Sstas**
2969226031Sstas** The context in which an SQL function executes is stored in an
2970226031Sstas** sqlite3_context object.  ^A pointer to an sqlite3_context object
2971226031Sstas** is always first parameter to [application-defined SQL functions].
2972226031Sstas** The application-defined SQL function implementation will pass this
2973226031Sstas** pointer through into calls to [sqlite3_result_int | sqlite3_result()],
2974226031Sstas** [sqlite3_aggregate_context()], [sqlite3_user_data()],
2975226031Sstas** [sqlite3_context_db_handle()], [sqlite3_get_auxdata()],
2976226031Sstas** and/or [sqlite3_set_auxdata()].
2977226031Sstas*/
2978226031Sstastypedef struct sqlite3_context sqlite3_context;
2979226031Sstas
2980226031Sstas/*
2981226031Sstas** CAPI3REF: Binding Values To Prepared Statements
2982226031Sstas** KEYWORDS: {host parameter} {host parameters} {host parameter name}
2983226031Sstas** KEYWORDS: {SQL parameter} {SQL parameters} {parameter binding}
2984226031Sstas**
2985226031Sstas** ^(In the SQL statement text input to [sqlite3_prepare_v2()] and its variants,
2986226031Sstas** literals may be replaced by a [parameter] that matches one of following
2987226031Sstas** templates:
2988226031Sstas**
2989226031Sstas** <ul>
2990226031Sstas** <li>  ?
2991226031Sstas** <li>  ?NNN
2992226031Sstas** <li>  :VVV
2993226031Sstas** <li>  @VVV
2994226031Sstas** <li>  $VVV
2995226031Sstas** </ul>
2996226031Sstas**
2997226031Sstas** In the templates above, NNN represents an integer literal,
2998226128Sstas** and VVV represents an alphanumeric identifier.)^  ^The values of these
2999226031Sstas** parameters (also called "host parameter names" or "SQL parameters")
3000226031Sstas** can be set using the sqlite3_bind_*() routines defined here.
3001226031Sstas**
3002226031Sstas** ^The first argument to the sqlite3_bind_*() routines is always
3003226031Sstas** a pointer to the [sqlite3_stmt] object returned from
3004226031Sstas** [sqlite3_prepare_v2()] or its variants.
3005226031Sstas**
3006226031Sstas** ^The second argument is the index of the SQL parameter to be set.
3007226031Sstas** ^The leftmost SQL parameter has an index of 1.  ^When the same named
3008226031Sstas** SQL parameter is used more than once, second and subsequent
3009226031Sstas** occurrences have the same index as the first occurrence.
3010226031Sstas** ^The index for named parameters can be looked up using the
3011226031Sstas** [sqlite3_bind_parameter_index()] API if desired.  ^The index
3012226031Sstas** for "?NNN" parameters is the value of NNN.
3013226031Sstas** ^The NNN value must be between 1 and the [sqlite3_limit()]
3014226031Sstas** parameter [SQLITE_LIMIT_VARIABLE_NUMBER] (default value: 999).
3015226031Sstas**
3016226031Sstas** ^The third argument is the value to bind to the parameter.
3017226031Sstas**
3018226031Sstas** ^(In those routines that have a fourth argument, its value is the
3019226031Sstas** number of bytes in the parameter.  To be clear: the value is the
3020226031Sstas** number of <u>bytes</u> in the value, not the number of characters.)^
3021226031Sstas** ^If the fourth parameter is negative, the length of the string is
3022226031Sstas** the number of bytes up to the first zero terminator.
3023226031Sstas**
3024226031Sstas** ^The fifth argument to sqlite3_bind_blob(), sqlite3_bind_text(), and
3025226031Sstas** sqlite3_bind_text16() is a destructor used to dispose of the BLOB or
3026226128Sstas** string after SQLite has finished with it.  ^The destructor is called
3027226128Sstas** to dispose of the BLOB or string even if the call to sqlite3_bind_blob(),
3028226128Sstas** sqlite3_bind_text(), or sqlite3_bind_text16() fails.
3029226128Sstas** ^If the fifth argument is
3030226031Sstas** the special value [SQLITE_STATIC], then SQLite assumes that the
3031226031Sstas** information is in static, unmanaged space and does not need to be freed.
3032226031Sstas** ^If the fifth argument has the value [SQLITE_TRANSIENT], then
3033226031Sstas** SQLite makes its own private copy of the data immediately, before
3034226031Sstas** the sqlite3_bind_*() routine returns.
3035226031Sstas**
3036226031Sstas** ^The sqlite3_bind_zeroblob() routine binds a BLOB of length N that
3037226031Sstas** is filled with zeroes.  ^A zeroblob uses a fixed amount of memory
3038226031Sstas** (just an integer to hold its size) while it is being processed.
3039226031Sstas** Zeroblobs are intended to serve as placeholders for BLOBs whose
3040226031Sstas** content is later written using
3041226031Sstas** [sqlite3_blob_open | incremental BLOB I/O] routines.
3042226031Sstas** ^A negative value for the zeroblob results in a zero-length BLOB.
3043226031Sstas**
3044226031Sstas** ^If any of the sqlite3_bind_*() routines are called with a NULL pointer
3045226031Sstas** for the [prepared statement] or with a prepared statement for which
3046226031Sstas** [sqlite3_step()] has been called more recently than [sqlite3_reset()],
3047226031Sstas** then the call will return [SQLITE_MISUSE].  If any sqlite3_bind_()
3048226031Sstas** routine is passed a [prepared statement] that has been finalized, the
3049226031Sstas** result is undefined and probably harmful.
3050226031Sstas**
3051226031Sstas** ^Bindings are not cleared by the [sqlite3_reset()] routine.
3052226031Sstas** ^Unbound parameters are interpreted as NULL.
3053226031Sstas**
3054226031Sstas** ^The sqlite3_bind_* routines return [SQLITE_OK] on success or an
3055226031Sstas** [error code] if anything goes wrong.
3056226031Sstas** ^[SQLITE_RANGE] is returned if the parameter
3057226031Sstas** index is out of range.  ^[SQLITE_NOMEM] is returned if malloc() fails.
3058226031Sstas**
3059226031Sstas** See also: [sqlite3_bind_parameter_count()],
3060226031Sstas** [sqlite3_bind_parameter_name()], and [sqlite3_bind_parameter_index()].
3061226031Sstas*/
3062226031SstasSQLITE_API int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*));
3063226031SstasSQLITE_API int sqlite3_bind_double(sqlite3_stmt*, int, double);
3064226031SstasSQLITE_API int sqlite3_bind_int(sqlite3_stmt*, int, int);
3065226031SstasSQLITE_API int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite3_int64);
3066226031SstasSQLITE_API int sqlite3_bind_null(sqlite3_stmt*, int);
3067226031SstasSQLITE_API int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*));
3068226031SstasSQLITE_API int sqlite3_bind_text16(sqlite3_stmt*, int, const void*, int, void(*)(void*));
3069226031SstasSQLITE_API int sqlite3_bind_value(sqlite3_stmt*, int, const sqlite3_value*);
3070226031SstasSQLITE_API int sqlite3_bind_zeroblob(sqlite3_stmt*, int, int n);
3071226031Sstas
3072226031Sstas/*
3073226031Sstas** CAPI3REF: Number Of SQL Parameters
3074226031Sstas**
3075226031Sstas** ^This routine can be used to find the number of [SQL parameters]
3076226031Sstas** in a [prepared statement].  SQL parameters are tokens of the
3077226031Sstas** form "?", "?NNN", ":AAA", "$AAA", or "@AAA" that serve as
3078226031Sstas** placeholders for values that are [sqlite3_bind_blob | bound]
3079226031Sstas** to the parameters at a later time.
3080226031Sstas**
3081226031Sstas** ^(This routine actually returns the index of the largest (rightmost)
3082226031Sstas** parameter. For all forms except ?NNN, this will correspond to the
3083226031Sstas** number of unique parameters.  If parameters of the ?NNN form are used,
3084226031Sstas** there may be gaps in the list.)^
3085226031Sstas**
3086226031Sstas** See also: [sqlite3_bind_blob|sqlite3_bind()],
3087226031Sstas** [sqlite3_bind_parameter_name()], and
3088226031Sstas** [sqlite3_bind_parameter_index()].
3089226031Sstas*/
3090226031SstasSQLITE_API int sqlite3_bind_parameter_count(sqlite3_stmt*);
3091226031Sstas
3092226031Sstas/*
3093226031Sstas** CAPI3REF: Name Of A Host Parameter
3094226031Sstas**
3095226031Sstas** ^The sqlite3_bind_parameter_name(P,N) interface returns
3096226031Sstas** the name of the N-th [SQL parameter] in the [prepared statement] P.
3097226031Sstas** ^(SQL parameters of the form "?NNN" or ":AAA" or "@AAA" or "$AAA"
3098226031Sstas** have a name which is the string "?NNN" or ":AAA" or "@AAA" or "$AAA"
3099226031Sstas** respectively.
3100226031Sstas** In other words, the initial ":" or "$" or "@" or "?"
3101226031Sstas** is included as part of the name.)^
3102226031Sstas** ^Parameters of the form "?" without a following integer have no name
3103226031Sstas** and are referred to as "nameless" or "anonymous parameters".
3104226031Sstas**
3105226031Sstas** ^The first host parameter has an index of 1, not 0.
3106226031Sstas**
3107226031Sstas** ^If the value N is out of range or if the N-th parameter is
3108226031Sstas** nameless, then NULL is returned.  ^The returned string is
3109226031Sstas** always in UTF-8 encoding even if the named parameter was
3110226031Sstas** originally specified as UTF-16 in [sqlite3_prepare16()] or
3111226031Sstas** [sqlite3_prepare16_v2()].
3112226031Sstas**
3113226031Sstas** See also: [sqlite3_bind_blob|sqlite3_bind()],
3114226031Sstas** [sqlite3_bind_parameter_count()], and
3115226031Sstas** [sqlite3_bind_parameter_index()].
3116226031Sstas*/
3117226031SstasSQLITE_API const char *sqlite3_bind_parameter_name(sqlite3_stmt*, int);
3118226031Sstas
3119226031Sstas/*
3120226031Sstas** CAPI3REF: Index Of A Parameter With A Given Name
3121226031Sstas**
3122226031Sstas** ^Return the index of an SQL parameter given its name.  ^The
3123226031Sstas** index value returned is suitable for use as the second
3124226031Sstas** parameter to [sqlite3_bind_blob|sqlite3_bind()].  ^A zero
3125226031Sstas** is returned if no matching parameter is found.  ^The parameter
3126226031Sstas** name must be given in UTF-8 even if the original statement
3127226031Sstas** was prepared from UTF-16 text using [sqlite3_prepare16_v2()].
3128226031Sstas**
3129226031Sstas** See also: [sqlite3_bind_blob|sqlite3_bind()],
3130226031Sstas** [sqlite3_bind_parameter_count()], and
3131226031Sstas** [sqlite3_bind_parameter_index()].
3132226031Sstas*/
3133226031SstasSQLITE_API int sqlite3_bind_parameter_index(sqlite3_stmt*, const char *zName);
3134226031Sstas
3135226031Sstas/*
3136226031Sstas** CAPI3REF: Reset All Bindings On A Prepared Statement
3137226031Sstas**
3138226031Sstas** ^Contrary to the intuition of many, [sqlite3_reset()] does not reset
3139226031Sstas** the [sqlite3_bind_blob | bindings] on a [prepared statement].
3140226031Sstas** ^Use this routine to reset all host parameters to NULL.
3141226031Sstas*/
3142226031SstasSQLITE_API int sqlite3_clear_bindings(sqlite3_stmt*);
3143226031Sstas
3144226031Sstas/*
3145226031Sstas** CAPI3REF: Number Of Columns In A Result Set
3146226031Sstas**
3147226031Sstas** ^Return the number of columns in the result set returned by the
3148226031Sstas** [prepared statement]. ^This routine returns 0 if pStmt is an SQL
3149226031Sstas** statement that does not return data (for example an [UPDATE]).
3150226128Sstas**
3151226128Sstas** See also: [sqlite3_data_count()]
3152226031Sstas*/
3153226031SstasSQLITE_API int sqlite3_column_count(sqlite3_stmt *pStmt);
3154226031Sstas
3155226031Sstas/*
3156226031Sstas** CAPI3REF: Column Names In A Result Set
3157226031Sstas**
3158226031Sstas** ^These routines return the name assigned to a particular column
3159226031Sstas** in the result set of a [SELECT] statement.  ^The sqlite3_column_name()
3160226031Sstas** interface returns a pointer to a zero-terminated UTF-8 string
3161226031Sstas** and sqlite3_column_name16() returns a pointer to a zero-terminated
3162226031Sstas** UTF-16 string.  ^The first parameter is the [prepared statement]
3163226031Sstas** that implements the [SELECT] statement. ^The second parameter is the
3164226031Sstas** column number.  ^The leftmost column is number 0.
3165226031Sstas**
3166226031Sstas** ^The returned string pointer is valid until either the [prepared statement]
3167226128Sstas** is destroyed by [sqlite3_finalize()] or until the statement is automatically
3168226128Sstas** reprepared by the first call to [sqlite3_step()] for a particular run
3169226128Sstas** or until the next call to
3170226031Sstas** sqlite3_column_name() or sqlite3_column_name16() on the same column.
3171226031Sstas**
3172226031Sstas** ^If sqlite3_malloc() fails during the processing of either routine
3173226031Sstas** (for example during a conversion from UTF-8 to UTF-16) then a
3174226031Sstas** NULL pointer is returned.
3175226031Sstas**
3176226031Sstas** ^The name of a result column is the value of the "AS" clause for
3177226031Sstas** that column, if there is an AS clause.  If there is no AS clause
3178226031Sstas** then the name of the column is unspecified and may change from
3179226031Sstas** one release of SQLite to the next.
3180226031Sstas*/
3181226031SstasSQLITE_API const char *sqlite3_column_name(sqlite3_stmt*, int N);
3182226031SstasSQLITE_API const void *sqlite3_column_name16(sqlite3_stmt*, int N);
3183226031Sstas
3184226031Sstas/*
3185226031Sstas** CAPI3REF: Source Of Data In A Query Result
3186226031Sstas**
3187226031Sstas** ^These routines provide a means to determine the database, table, and
3188226031Sstas** table column that is the origin of a particular result column in
3189226031Sstas** [SELECT] statement.
3190226031Sstas** ^The name of the database or table or column can be returned as
3191226031Sstas** either a UTF-8 or UTF-16 string.  ^The _database_ routines return
3192226031Sstas** the database name, the _table_ routines return the table name, and
3193226031Sstas** the origin_ routines return the column name.
3194226031Sstas** ^The returned string is valid until the [prepared statement] is destroyed
3195226128Sstas** using [sqlite3_finalize()] or until the statement is automatically
3196226128Sstas** reprepared by the first call to [sqlite3_step()] for a particular run
3197226128Sstas** or until the same information is requested
3198226031Sstas** again in a different encoding.
3199226031Sstas**
3200226031Sstas** ^The names returned are the original un-aliased names of the
3201226031Sstas** database, table, and column.
3202226031Sstas**
3203226031Sstas** ^The first argument to these interfaces is a [prepared statement].
3204226031Sstas** ^These functions return information about the Nth result column returned by
3205226031Sstas** the statement, where N is the second function argument.
3206226031Sstas** ^The left-most column is column 0 for these routines.
3207226031Sstas**
3208226031Sstas** ^If the Nth column returned by the statement is an expression or
3209226031Sstas** subquery and is not a column value, then all of these functions return
3210226031Sstas** NULL.  ^These routine might also return NULL if a memory allocation error
3211226031Sstas** occurs.  ^Otherwise, they return the name of the attached database, table,
3212226031Sstas** or column that query result column was extracted from.
3213226031Sstas**
3214226031Sstas** ^As with all other SQLite APIs, those whose names end with "16" return
3215226031Sstas** UTF-16 encoded strings and the other functions return UTF-8.
3216226031Sstas**
3217226031Sstas** ^These APIs are only available if the library was compiled with the
3218226031Sstas** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol.
3219226031Sstas**
3220226031Sstas** If two or more threads call one or more of these routines against the same
3221226031Sstas** prepared statement and column at the same time then the results are
3222226031Sstas** undefined.
3223226031Sstas**
3224226031Sstas** If two or more threads call one or more
3225226031Sstas** [sqlite3_column_database_name | column metadata interfaces]
3226226031Sstas** for the same [prepared statement] and result column
3227226031Sstas** at the same time then the results are undefined.
3228226031Sstas*/
3229226031SstasSQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int);
3230226031SstasSQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int);
3231226031SstasSQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int);
3232226031SstasSQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int);
3233226031SstasSQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int);
3234226031SstasSQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
3235226031Sstas
3236226031Sstas/*
3237226031Sstas** CAPI3REF: Declared Datatype Of A Query Result
3238226031Sstas**
3239226031Sstas** ^(The first parameter is a [prepared statement].
3240226031Sstas** If this statement is a [SELECT] statement and the Nth column of the
3241226031Sstas** returned result set of that [SELECT] is a table column (not an
3242226031Sstas** expression or subquery) then the declared type of the table
3243226031Sstas** column is returned.)^  ^If the Nth column of the result set is an
3244226031Sstas** expression or subquery, then a NULL pointer is returned.
3245226031Sstas** ^The returned string is always UTF-8 encoded.
3246226031Sstas**
3247226031Sstas** ^(For example, given the database schema:
3248226031Sstas**
3249226031Sstas** CREATE TABLE t1(c1 VARIANT);
3250226031Sstas**
3251226031Sstas** and the following statement to be compiled:
3252226031Sstas**
3253226031Sstas** SELECT c1 + 1, c1 FROM t1;
3254226031Sstas**
3255226031Sstas** this routine would return the string "VARIANT" for the second result
3256226031Sstas** column (i==1), and a NULL pointer for the first result column (i==0).)^
3257226031Sstas**
3258226031Sstas** ^SQLite uses dynamic run-time typing.  ^So just because a column
3259226031Sstas** is declared to contain a particular type does not mean that the
3260226031Sstas** data stored in that column is of the declared type.  SQLite is
3261226031Sstas** strongly typed, but the typing is dynamic not static.  ^Type
3262226031Sstas** is associated with individual values, not with the containers
3263226031Sstas** used to hold those values.
3264226031Sstas*/
3265226031SstasSQLITE_API const char *sqlite3_column_decltype(sqlite3_stmt*,int);
3266226031SstasSQLITE_API const void *sqlite3_column_decltype16(sqlite3_stmt*,int);
3267226031Sstas
3268226031Sstas/*
3269226031Sstas** CAPI3REF: Evaluate An SQL Statement
3270226031Sstas**
3271226031Sstas** After a [prepared statement] has been prepared using either
3272226031Sstas** [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()] or one of the legacy
3273226031Sstas** interfaces [sqlite3_prepare()] or [sqlite3_prepare16()], this function
3274226031Sstas** must be called one or more times to evaluate the statement.
3275226031Sstas**
3276226031Sstas** The details of the behavior of the sqlite3_step() interface depend
3277226031Sstas** on whether the statement was prepared using the newer "v2" interface
3278226031Sstas** [sqlite3_prepare_v2()] and [sqlite3_prepare16_v2()] or the older legacy
3279226031Sstas** interface [sqlite3_prepare()] and [sqlite3_prepare16()].  The use of the
3280226031Sstas** new "v2" interface is recommended for new applications but the legacy
3281226031Sstas** interface will continue to be supported.
3282226031Sstas**
3283226031Sstas** ^In the legacy interface, the return value will be either [SQLITE_BUSY],
3284226031Sstas** [SQLITE_DONE], [SQLITE_ROW], [SQLITE_ERROR], or [SQLITE_MISUSE].
3285226031Sstas** ^With the "v2" interface, any of the other [result codes] or
3286226031Sstas** [extended result codes] might be returned as well.
3287226031Sstas**
3288226031Sstas** ^[SQLITE_BUSY] means that the database engine was unable to acquire the
3289226031Sstas** database locks it needs to do its job.  ^If the statement is a [COMMIT]
3290226031Sstas** or occurs outside of an explicit transaction, then you can retry the
3291226128Sstas** statement.  If the statement is not a [COMMIT] and occurs within an
3292226031Sstas** explicit transaction then you should rollback the transaction before
3293226031Sstas** continuing.
3294226031Sstas**
3295226031Sstas** ^[SQLITE_DONE] means that the statement has finished executing
3296226031Sstas** successfully.  sqlite3_step() should not be called again on this virtual
3297226031Sstas** machine without first calling [sqlite3_reset()] to reset the virtual
3298226031Sstas** machine back to its initial state.
3299226031Sstas**
3300226031Sstas** ^If the SQL statement being executed returns any data, then [SQLITE_ROW]
3301226031Sstas** is returned each time a new row of data is ready for processing by the
3302226031Sstas** caller. The values may be accessed using the [column access functions].
3303226031Sstas** sqlite3_step() is called again to retrieve the next row of data.
3304226031Sstas**
3305226031Sstas** ^[SQLITE_ERROR] means that a run-time error (such as a constraint
3306226031Sstas** violation) has occurred.  sqlite3_step() should not be called again on
3307226031Sstas** the VM. More information may be found by calling [sqlite3_errmsg()].
3308226031Sstas** ^With the legacy interface, a more specific error code (for example,
3309226031Sstas** [SQLITE_INTERRUPT], [SQLITE_SCHEMA], [SQLITE_CORRUPT], and so forth)
3310226031Sstas** can be obtained by calling [sqlite3_reset()] on the
3311226031Sstas** [prepared statement].  ^In the "v2" interface,
3312226031Sstas** the more specific error code is returned directly by sqlite3_step().
3313226031Sstas**
3314226031Sstas** [SQLITE_MISUSE] means that the this routine was called inappropriately.
3315226031Sstas** Perhaps it was called on a [prepared statement] that has
3316226031Sstas** already been [sqlite3_finalize | finalized] or on one that had
3317226031Sstas** previously returned [SQLITE_ERROR] or [SQLITE_DONE].  Or it could
3318226031Sstas** be the case that the same database connection is being used by two or
3319226031Sstas** more threads at the same moment in time.
3320226031Sstas**
3321226128Sstas** For all versions of SQLite up to and including 3.6.23.1, a call to
3322226128Sstas** [sqlite3_reset()] was required after sqlite3_step() returned anything
3323226128Sstas** other than [SQLITE_ROW] before any subsequent invocation of
3324226128Sstas** sqlite3_step().  Failure to reset the prepared statement using
3325226128Sstas** [sqlite3_reset()] would result in an [SQLITE_MISUSE] return from
3326226128Sstas** sqlite3_step().  But after version 3.6.23.1, sqlite3_step() began
3327226128Sstas** calling [sqlite3_reset()] automatically in this circumstance rather
3328226128Sstas** than returning [SQLITE_MISUSE].  This is not considered a compatibility
3329226128Sstas** break because any application that ever receives an SQLITE_MISUSE error
3330226128Sstas** is broken by definition.  The [SQLITE_OMIT_AUTORESET] compile-time option
3331226128Sstas** can be used to restore the legacy behavior.
3332226128Sstas**
3333226031Sstas** <b>Goofy Interface Alert:</b> In the legacy interface, the sqlite3_step()
3334226031Sstas** API always returns a generic error code, [SQLITE_ERROR], following any
3335226031Sstas** error other than [SQLITE_BUSY] and [SQLITE_MISUSE].  You must call
3336226031Sstas** [sqlite3_reset()] or [sqlite3_finalize()] in order to find one of the
3337226031Sstas** specific [error codes] that better describes the error.
3338226031Sstas** We admit that this is a goofy design.  The problem has been fixed
3339226031Sstas** with the "v2" interface.  If you prepare all of your SQL statements
3340226031Sstas** using either [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()] instead
3341226031Sstas** of the legacy [sqlite3_prepare()] and [sqlite3_prepare16()] interfaces,
3342226031Sstas** then the more specific [error codes] are returned directly
3343226031Sstas** by sqlite3_step().  The use of the "v2" interface is recommended.
3344226031Sstas*/
3345226031SstasSQLITE_API int sqlite3_step(sqlite3_stmt*);
3346226031Sstas
3347226031Sstas/*
3348226031Sstas** CAPI3REF: Number of columns in a result set
3349226031Sstas**
3350226128Sstas** ^The sqlite3_data_count(P) interface returns the number of columns in the
3351226128Sstas** current row of the result set of [prepared statement] P.
3352226128Sstas** ^If prepared statement P does not have results ready to return
3353226128Sstas** (via calls to the [sqlite3_column_int | sqlite3_column_*()] of
3354226128Sstas** interfaces) then sqlite3_data_count(P) returns 0.
3355226128Sstas** ^The sqlite3_data_count(P) routine also returns 0 if P is a NULL pointer.
3356226128Sstas**
3357226128Sstas** See also: [sqlite3_column_count()]
3358226031Sstas*/
3359226031SstasSQLITE_API int sqlite3_data_count(sqlite3_stmt *pStmt);
3360226031Sstas
3361226031Sstas/*
3362226031Sstas** CAPI3REF: Fundamental Datatypes
3363226031Sstas** KEYWORDS: SQLITE_TEXT
3364226031Sstas**
3365226031Sstas** ^(Every value in SQLite has one of five fundamental datatypes:
3366226031Sstas**
3367226031Sstas** <ul>
3368226031Sstas** <li> 64-bit signed integer
3369226031Sstas** <li> 64-bit IEEE floating point number
3370226031Sstas** <li> string
3371226031Sstas** <li> BLOB
3372226031Sstas** <li> NULL
3373226031Sstas** </ul>)^
3374226031Sstas**
3375226031Sstas** These constants are codes for each of those types.
3376226031Sstas**
3377226031Sstas** Note that the SQLITE_TEXT constant was also used in SQLite version 2
3378226031Sstas** for a completely different meaning.  Software that links against both
3379226031Sstas** SQLite version 2 and SQLite version 3 should use SQLITE3_TEXT, not
3380226031Sstas** SQLITE_TEXT.
3381226031Sstas*/
3382226031Sstas#define SQLITE_INTEGER  1
3383226031Sstas#define SQLITE_FLOAT    2
3384226031Sstas#define SQLITE_BLOB     4
3385226031Sstas#define SQLITE_NULL     5
3386226031Sstas#ifdef SQLITE_TEXT
3387226031Sstas# undef SQLITE_TEXT
3388226031Sstas#else
3389226031Sstas# define SQLITE_TEXT     3
3390226031Sstas#endif
3391226031Sstas#define SQLITE3_TEXT     3
3392226031Sstas
3393226031Sstas/*
3394226031Sstas** CAPI3REF: Result Values From A Query
3395226031Sstas** KEYWORDS: {column access functions}
3396226031Sstas**
3397226031Sstas** These routines form the "result set" interface.
3398226031Sstas**
3399226031Sstas** ^These routines return information about a single column of the current
3400226031Sstas** result row of a query.  ^In every case the first argument is a pointer
3401226031Sstas** to the [prepared statement] that is being evaluated (the [sqlite3_stmt*]
3402226031Sstas** that was returned from [sqlite3_prepare_v2()] or one of its variants)
3403226031Sstas** and the second argument is the index of the column for which information
3404226031Sstas** should be returned. ^The leftmost column of the result set has the index 0.
3405226031Sstas** ^The number of columns in the result can be determined using
3406226031Sstas** [sqlite3_column_count()].
3407226031Sstas**
3408226031Sstas** If the SQL statement does not currently point to a valid row, or if the
3409226031Sstas** column index is out of range, the result is undefined.
3410226031Sstas** These routines may only be called when the most recent call to
3411226031Sstas** [sqlite3_step()] has returned [SQLITE_ROW] and neither
3412226031Sstas** [sqlite3_reset()] nor [sqlite3_finalize()] have been called subsequently.
3413226031Sstas** If any of these routines are called after [sqlite3_reset()] or
3414226031Sstas** [sqlite3_finalize()] or after [sqlite3_step()] has returned
3415226031Sstas** something other than [SQLITE_ROW], the results are undefined.
3416226031Sstas** If [sqlite3_step()] or [sqlite3_reset()] or [sqlite3_finalize()]
3417226031Sstas** are called from a different thread while any of these routines
3418226031Sstas** are pending, then the results are undefined.
3419226031Sstas**
3420226031Sstas** ^The sqlite3_column_type() routine returns the
3421226031Sstas** [SQLITE_INTEGER | datatype code] for the initial data type
3422226031Sstas** of the result column.  ^The returned value is one of [SQLITE_INTEGER],
3423226031Sstas** [SQLITE_FLOAT], [SQLITE_TEXT], [SQLITE_BLOB], or [SQLITE_NULL].  The value
3424226031Sstas** returned by sqlite3_column_type() is only meaningful if no type
3425226031Sstas** conversions have occurred as described below.  After a type conversion,
3426226031Sstas** the value returned by sqlite3_column_type() is undefined.  Future
3427226031Sstas** versions of SQLite may change the behavior of sqlite3_column_type()
3428226031Sstas** following a type conversion.
3429226031Sstas**
3430226031Sstas** ^If the result is a BLOB or UTF-8 string then the sqlite3_column_bytes()
3431226031Sstas** routine returns the number of bytes in that BLOB or string.
3432226031Sstas** ^If the result is a UTF-16 string, then sqlite3_column_bytes() converts
3433226031Sstas** the string to UTF-8 and then returns the number of bytes.
3434226031Sstas** ^If the result is a numeric value then sqlite3_column_bytes() uses
3435226031Sstas** [sqlite3_snprintf()] to convert that value to a UTF-8 string and returns
3436226031Sstas** the number of bytes in that string.
3437226128Sstas** ^If the result is NULL, then sqlite3_column_bytes() returns zero.
3438226128Sstas**
3439226128Sstas** ^If the result is a BLOB or UTF-16 string then the sqlite3_column_bytes16()
3440226128Sstas** routine returns the number of bytes in that BLOB or string.
3441226128Sstas** ^If the result is a UTF-8 string, then sqlite3_column_bytes16() converts
3442226128Sstas** the string to UTF-16 and then returns the number of bytes.
3443226128Sstas** ^If the result is a numeric value then sqlite3_column_bytes16() uses
3444226128Sstas** [sqlite3_snprintf()] to convert that value to a UTF-16 string and returns
3445226128Sstas** the number of bytes in that string.
3446226128Sstas** ^If the result is NULL, then sqlite3_column_bytes16() returns zero.
3447226128Sstas**
3448226128Sstas** ^The values returned by [sqlite3_column_bytes()] and
3449226128Sstas** [sqlite3_column_bytes16()] do not include the zero terminators at the end
3450226128Sstas** of the string.  ^For clarity: the values returned by
3451226128Sstas** [sqlite3_column_bytes()] and [sqlite3_column_bytes16()] are the number of
3452226031Sstas** bytes in the string, not the number of characters.
3453226031Sstas**
3454226031Sstas** ^Strings returned by sqlite3_column_text() and sqlite3_column_text16(),
3455226031Sstas** even empty strings, are always zero terminated.  ^The return
3456226128Sstas** value from sqlite3_column_blob() for a zero-length BLOB is a NULL pointer.
3457226031Sstas**
3458226031Sstas** ^The object returned by [sqlite3_column_value()] is an
3459226031Sstas** [unprotected sqlite3_value] object.  An unprotected sqlite3_value object
3460226031Sstas** may only be used with [sqlite3_bind_value()] and [sqlite3_result_value()].
3461226031Sstas** If the [unprotected sqlite3_value] object returned by
3462226031Sstas** [sqlite3_column_value()] is used in any other way, including calls
3463226031Sstas** to routines like [sqlite3_value_int()], [sqlite3_value_text()],
3464226031Sstas** or [sqlite3_value_bytes()], then the behavior is undefined.
3465226031Sstas**
3466226031Sstas** These routines attempt to convert the value where appropriate.  ^For
3467226031Sstas** example, if the internal representation is FLOAT and a text result
3468226031Sstas** is requested, [sqlite3_snprintf()] is used internally to perform the
3469226031Sstas** conversion automatically.  ^(The following table details the conversions
3470226031Sstas** that are applied:
3471226031Sstas**
3472226031Sstas** <blockquote>
3473226031Sstas** <table border="1">
3474226031Sstas** <tr><th> Internal<br>Type <th> Requested<br>Type <th>  Conversion
3475226031Sstas**
3476226031Sstas** <tr><td>  NULL    <td> INTEGER   <td> Result is 0
3477226031Sstas** <tr><td>  NULL    <td>  FLOAT    <td> Result is 0.0
3478226031Sstas** <tr><td>  NULL    <td>   TEXT    <td> Result is NULL pointer
3479226031Sstas** <tr><td>  NULL    <td>   BLOB    <td> Result is NULL pointer
3480226031Sstas** <tr><td> INTEGER  <td>  FLOAT    <td> Convert from integer to float
3481226031Sstas** <tr><td> INTEGER  <td>   TEXT    <td> ASCII rendering of the integer
3482226031Sstas** <tr><td> INTEGER  <td>   BLOB    <td> Same as INTEGER->TEXT
3483226031Sstas** <tr><td>  FLOAT   <td> INTEGER   <td> Convert from float to integer
3484226031Sstas** <tr><td>  FLOAT   <td>   TEXT    <td> ASCII rendering of the float
3485226031Sstas** <tr><td>  FLOAT   <td>   BLOB    <td> Same as FLOAT->TEXT
3486226031Sstas** <tr><td>  TEXT    <td> INTEGER   <td> Use atoi()
3487226031Sstas** <tr><td>  TEXT    <td>  FLOAT    <td> Use atof()
3488226031Sstas** <tr><td>  TEXT    <td>   BLOB    <td> No change
3489226031Sstas** <tr><td>  BLOB    <td> INTEGER   <td> Convert to TEXT then use atoi()
3490226031Sstas** <tr><td>  BLOB    <td>  FLOAT    <td> Convert to TEXT then use atof()
3491226031Sstas** <tr><td>  BLOB    <td>   TEXT    <td> Add a zero terminator if needed
3492226031Sstas** </table>
3493226031Sstas** </blockquote>)^
3494226031Sstas**
3495226031Sstas** The table above makes reference to standard C library functions atoi()
3496226031Sstas** and atof().  SQLite does not really use these functions.  It has its
3497226031Sstas** own equivalent internal routines.  The atoi() and atof() names are
3498226031Sstas** used in the table for brevity and because they are familiar to most
3499226031Sstas** C programmers.
3500226031Sstas**
3501226128Sstas** Note that when type conversions occur, pointers returned by prior
3502226031Sstas** calls to sqlite3_column_blob(), sqlite3_column_text(), and/or
3503226031Sstas** sqlite3_column_text16() may be invalidated.
3504226128Sstas** Type conversions and pointer invalidations might occur
3505226031Sstas** in the following cases:
3506226031Sstas**
3507226031Sstas** <ul>
3508226031Sstas** <li> The initial content is a BLOB and sqlite3_column_text() or
3509226031Sstas**      sqlite3_column_text16() is called.  A zero-terminator might
3510226031Sstas**      need to be added to the string.</li>
3511226031Sstas** <li> The initial content is UTF-8 text and sqlite3_column_bytes16() or
3512226031Sstas**      sqlite3_column_text16() is called.  The content must be converted
3513226031Sstas**      to UTF-16.</li>
3514226031Sstas** <li> The initial content is UTF-16 text and sqlite3_column_bytes() or
3515226031Sstas**      sqlite3_column_text() is called.  The content must be converted
3516226031Sstas**      to UTF-8.</li>
3517226128Sstas** </ul>
3518226031Sstas**
3519226031Sstas** ^Conversions between UTF-16be and UTF-16le are always done in place and do
3520226031Sstas** not invalidate a prior pointer, though of course the content of the buffer
3521226128Sstas** that the prior pointer references will have been modified.  Other kinds
3522226031Sstas** of conversion are done in place when it is possible, but sometimes they
3523226031Sstas** are not possible and in those cases prior pointers are invalidated.
3524226031Sstas**
3525226128Sstas** The safest and easiest to remember policy is to invoke these routines
3526226031Sstas** in one of the following ways:
3527226031Sstas**
3528226031Sstas** <ul>
3529226031Sstas**  <li>sqlite3_column_text() followed by sqlite3_column_bytes()</li>
3530226031Sstas**  <li>sqlite3_column_blob() followed by sqlite3_column_bytes()</li>
3531226031Sstas**  <li>sqlite3_column_text16() followed by sqlite3_column_bytes16()</li>
3532226128Sstas** </ul>
3533226031Sstas**
3534226031Sstas** In other words, you should call sqlite3_column_text(),
3535226031Sstas** sqlite3_column_blob(), or sqlite3_column_text16() first to force the result
3536226031Sstas** into the desired format, then invoke sqlite3_column_bytes() or
3537226031Sstas** sqlite3_column_bytes16() to find the size of the result.  Do not mix calls
3538226031Sstas** to sqlite3_column_text() or sqlite3_column_blob() with calls to
3539226031Sstas** sqlite3_column_bytes16(), and do not mix calls to sqlite3_column_text16()
3540226031Sstas** with calls to sqlite3_column_bytes().
3541226031Sstas**
3542226031Sstas** ^The pointers returned are valid until a type conversion occurs as
3543226031Sstas** described above, or until [sqlite3_step()] or [sqlite3_reset()] or
3544226031Sstas** [sqlite3_finalize()] is called.  ^The memory space used to hold strings
3545226031Sstas** and BLOBs is freed automatically.  Do <b>not</b> pass the pointers returned
3546226031Sstas** [sqlite3_column_blob()], [sqlite3_column_text()], etc. into
3547226031Sstas** [sqlite3_free()].
3548226031Sstas**
3549226031Sstas** ^(If a memory allocation error occurs during the evaluation of any
3550226031Sstas** of these routines, a default value is returned.  The default value
3551226031Sstas** is either the integer 0, the floating point number 0.0, or a NULL
3552226031Sstas** pointer.  Subsequent calls to [sqlite3_errcode()] will return
3553226031Sstas** [SQLITE_NOMEM].)^
3554226031Sstas*/
3555226031SstasSQLITE_API const void *sqlite3_column_blob(sqlite3_stmt*, int iCol);
3556226031SstasSQLITE_API int sqlite3_column_bytes(sqlite3_stmt*, int iCol);
3557226031SstasSQLITE_API int sqlite3_column_bytes16(sqlite3_stmt*, int iCol);
3558226031SstasSQLITE_API double sqlite3_column_double(sqlite3_stmt*, int iCol);
3559226031SstasSQLITE_API int sqlite3_column_int(sqlite3_stmt*, int iCol);
3560226031SstasSQLITE_API sqlite3_int64 sqlite3_column_int64(sqlite3_stmt*, int iCol);
3561226031SstasSQLITE_API const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);
3562226031SstasSQLITE_API const void *sqlite3_column_text16(sqlite3_stmt*, int iCol);
3563226031SstasSQLITE_API int sqlite3_column_type(sqlite3_stmt*, int iCol);
3564226031SstasSQLITE_API sqlite3_value *sqlite3_column_value(sqlite3_stmt*, int iCol);
3565226031Sstas
3566226031Sstas/*
3567226031Sstas** CAPI3REF: Destroy A Prepared Statement Object
3568226031Sstas**
3569226031Sstas** ^The sqlite3_finalize() function is called to delete a [prepared statement].
3570226128Sstas** ^If the most recent evaluation of the statement encountered no errors
3571226128Sstas** or if the statement is never been evaluated, then sqlite3_finalize() returns
3572226128Sstas** SQLITE_OK.  ^If the most recent evaluation of statement S failed, then
3573226128Sstas** sqlite3_finalize(S) returns the appropriate [error code] or
3574226128Sstas** [extended error code].
3575226031Sstas**
3576226128Sstas** ^The sqlite3_finalize(S) routine can be called at any point during
3577226128Sstas** the life cycle of [prepared statement] S:
3578226128Sstas** before statement S is ever evaluated, after
3579226128Sstas** one or more calls to [sqlite3_reset()], or after any call
3580226128Sstas** to [sqlite3_step()] regardless of whether or not the statement has
3581226128Sstas** completed execution.
3582226128Sstas**
3583226128Sstas** ^Invoking sqlite3_finalize() on a NULL pointer is a harmless no-op.
3584226128Sstas**
3585226128Sstas** The application must finalize every [prepared statement] in order to avoid
3586226128Sstas** resource leaks.  It is a grievous error for the application to try to use
3587226128Sstas** a prepared statement after it has been finalized.  Any use of a prepared
3588226128Sstas** statement after it has been finalized can result in undefined and
3589226128Sstas** undesirable behavior such as segfaults and heap corruption.
3590226031Sstas*/
3591226031SstasSQLITE_API int sqlite3_finalize(sqlite3_stmt *pStmt);
3592226031Sstas
3593226031Sstas/*
3594226031Sstas** CAPI3REF: Reset A Prepared Statement Object
3595226031Sstas**
3596226031Sstas** The sqlite3_reset() function is called to reset a [prepared statement]
3597226031Sstas** object back to its initial state, ready to be re-executed.
3598226031Sstas** ^Any SQL statement variables that had values bound to them using
3599226031Sstas** the [sqlite3_bind_blob | sqlite3_bind_*() API] retain their values.
3600226031Sstas** Use [sqlite3_clear_bindings()] to reset the bindings.
3601226031Sstas**
3602226031Sstas** ^The [sqlite3_reset(S)] interface resets the [prepared statement] S
3603226031Sstas** back to the beginning of its program.
3604226031Sstas**
3605226031Sstas** ^If the most recent call to [sqlite3_step(S)] for the
3606226031Sstas** [prepared statement] S returned [SQLITE_ROW] or [SQLITE_DONE],
3607226031Sstas** or if [sqlite3_step(S)] has never before been called on S,
3608226031Sstas** then [sqlite3_reset(S)] returns [SQLITE_OK].
3609226031Sstas**
3610226031Sstas** ^If the most recent call to [sqlite3_step(S)] for the
3611226031Sstas** [prepared statement] S indicated an error, then
3612226031Sstas** [sqlite3_reset(S)] returns an appropriate [error code].
3613226031Sstas**
3614226031Sstas** ^The [sqlite3_reset(S)] interface does not change the values
3615226031Sstas** of any [sqlite3_bind_blob|bindings] on the [prepared statement] S.
3616226031Sstas*/
3617226031SstasSQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt);
3618226031Sstas
3619226031Sstas/*
3620226031Sstas** CAPI3REF: Create Or Redefine SQL Functions
3621226031Sstas** KEYWORDS: {function creation routines}
3622226031Sstas** KEYWORDS: {application-defined SQL function}
3623226031Sstas** KEYWORDS: {application-defined SQL functions}
3624226031Sstas**
3625226128Sstas** ^These functions (collectively known as "function creation routines")
3626226031Sstas** are used to add SQL functions or aggregates or to redefine the behavior
3627226128Sstas** of existing SQL functions or aggregates.  The only differences between
3628226128Sstas** these routines are the text encoding expected for
3629226128Sstas** the second parameter (the name of the function being created)
3630226128Sstas** and the presence or absence of a destructor callback for
3631226128Sstas** the application data pointer.
3632226031Sstas**
3633226031Sstas** ^The first parameter is the [database connection] to which the SQL
3634226031Sstas** function is to be added.  ^If an application uses more than one database
3635226031Sstas** connection then application-defined SQL functions must be added
3636226031Sstas** to each database connection separately.
3637226031Sstas**
3638226128Sstas** ^The second parameter is the name of the SQL function to be created or
3639226128Sstas** redefined.  ^The length of the name is limited to 255 bytes in a UTF-8
3640226128Sstas** representation, exclusive of the zero-terminator.  ^Note that the name
3641226128Sstas** length limit is in UTF-8 bytes, not characters nor UTF-16 bytes.
3642226128Sstas** ^Any attempt to create a function with a longer name
3643226128Sstas** will result in [SQLITE_MISUSE] being returned.
3644226031Sstas**
3645226031Sstas** ^The third parameter (nArg)
3646226031Sstas** is the number of arguments that the SQL function or
3647226031Sstas** aggregate takes. ^If this parameter is -1, then the SQL function or
3648226031Sstas** aggregate may take any number of arguments between 0 and the limit
3649226031Sstas** set by [sqlite3_limit]([SQLITE_LIMIT_FUNCTION_ARG]).  If the third
3650226031Sstas** parameter is less than -1 or greater than 127 then the behavior is
3651226031Sstas** undefined.
3652226031Sstas**
3653226128Sstas** ^The fourth parameter, eTextRep, specifies what
3654226031Sstas** [SQLITE_UTF8 | text encoding] this SQL function prefers for
3655226128Sstas** its parameters.  Every SQL function implementation must be able to work
3656226128Sstas** with UTF-8, UTF-16le, or UTF-16be.  But some implementations may be
3657226031Sstas** more efficient with one encoding than another.  ^An application may
3658226031Sstas** invoke sqlite3_create_function() or sqlite3_create_function16() multiple
3659226031Sstas** times with the same function but with different values of eTextRep.
3660226031Sstas** ^When multiple implementations of the same function are available, SQLite
3661226031Sstas** will pick the one that involves the least amount of data conversion.
3662226031Sstas** If there is only a single implementation which does not care what text
3663226031Sstas** encoding is used, then the fourth argument should be [SQLITE_ANY].
3664226031Sstas**
3665226031Sstas** ^(The fifth parameter is an arbitrary pointer.  The implementation of the
3666226031Sstas** function can gain access to this pointer using [sqlite3_user_data()].)^
3667226031Sstas**
3668226128Sstas** ^The sixth, seventh and eighth parameters, xFunc, xStep and xFinal, are
3669226031Sstas** pointers to C-language functions that implement the SQL function or
3670226031Sstas** aggregate. ^A scalar SQL function requires an implementation of the xFunc
3671226128Sstas** callback only; NULL pointers must be passed as the xStep and xFinal
3672226031Sstas** parameters. ^An aggregate SQL function requires an implementation of xStep
3673226128Sstas** and xFinal and NULL pointer must be passed for xFunc. ^To delete an existing
3674226128Sstas** SQL function or aggregate, pass NULL pointers for all three function
3675226128Sstas** callbacks.
3676226031Sstas**
3677226128Sstas** ^(If the ninth parameter to sqlite3_create_function_v2() is not NULL,
3678226128Sstas** then it is destructor for the application data pointer.
3679226128Sstas** The destructor is invoked when the function is deleted, either by being
3680226128Sstas** overloaded or when the database connection closes.)^
3681226128Sstas** ^The destructor is also invoked if the call to
3682226128Sstas** sqlite3_create_function_v2() fails.
3683226128Sstas** ^When the destructor callback of the tenth parameter is invoked, it
3684226128Sstas** is passed a single argument which is a copy of the application data
3685226128Sstas** pointer which was the fifth parameter to sqlite3_create_function_v2().
3686226128Sstas**
3687226031Sstas** ^It is permitted to register multiple implementations of the same
3688226031Sstas** functions with the same name but with either differing numbers of
3689226031Sstas** arguments or differing preferred text encodings.  ^SQLite will use
3690226031Sstas** the implementation that most closely matches the way in which the
3691226031Sstas** SQL function is used.  ^A function implementation with a non-negative
3692226031Sstas** nArg parameter is a better match than a function implementation with
3693226031Sstas** a negative nArg.  ^A function where the preferred text encoding
3694226031Sstas** matches the database encoding is a better
3695226128Sstas** match than a function where the encoding is different.
3696226031Sstas** ^A function where the encoding difference is between UTF16le and UTF16be
3697226031Sstas** is a closer match than a function where the encoding difference is
3698226031Sstas** between UTF8 and UTF16.
3699226031Sstas**
3700226031Sstas** ^Built-in functions may be overloaded by new application-defined functions.
3701226031Sstas**
3702226031Sstas** ^An application-defined function is permitted to call other
3703226031Sstas** SQLite interfaces.  However, such calls must not
3704226031Sstas** close the database connection nor finalize or reset the prepared
3705226031Sstas** statement in which the function is running.
3706226031Sstas*/
3707226031SstasSQLITE_API int sqlite3_create_function(
3708226031Sstas  sqlite3 *db,
3709226031Sstas  const char *zFunctionName,
3710226031Sstas  int nArg,
3711226031Sstas  int eTextRep,
3712226031Sstas  void *pApp,
3713226031Sstas  void (*xFunc)(sqlite3_context*,int,sqlite3_value**),
3714226031Sstas  void (*xStep)(sqlite3_context*,int,sqlite3_value**),
3715226031Sstas  void (*xFinal)(sqlite3_context*)
3716226031Sstas);
3717226031SstasSQLITE_API int sqlite3_create_function16(
3718226031Sstas  sqlite3 *db,
3719226031Sstas  const void *zFunctionName,
3720226031Sstas  int nArg,
3721226031Sstas  int eTextRep,
3722226031Sstas  void *pApp,
3723226031Sstas  void (*xFunc)(sqlite3_context*,int,sqlite3_value**),
3724226031Sstas  void (*xStep)(sqlite3_context*,int,sqlite3_value**),
3725226031Sstas  void (*xFinal)(sqlite3_context*)
3726226031Sstas);
3727226128SstasSQLITE_API int sqlite3_create_function_v2(
3728226128Sstas  sqlite3 *db,
3729226128Sstas  const char *zFunctionName,
3730226128Sstas  int nArg,
3731226128Sstas  int eTextRep,
3732226128Sstas  void *pApp,
3733226128Sstas  void (*xFunc)(sqlite3_context*,int,sqlite3_value**),
3734226128Sstas  void (*xStep)(sqlite3_context*,int,sqlite3_value**),
3735226128Sstas  void (*xFinal)(sqlite3_context*),
3736226128Sstas  void(*xDestroy)(void*)
3737226128Sstas);
3738226031Sstas
3739226031Sstas/*
3740226031Sstas** CAPI3REF: Text Encodings
3741226031Sstas**
3742226031Sstas** These constant define integer codes that represent the various
3743226031Sstas** text encodings supported by SQLite.
3744226031Sstas*/
3745226031Sstas#define SQLITE_UTF8           1
3746226031Sstas#define SQLITE_UTF16LE        2
3747226031Sstas#define SQLITE_UTF16BE        3
3748226031Sstas#define SQLITE_UTF16          4    /* Use native byte order */
3749226031Sstas#define SQLITE_ANY            5    /* sqlite3_create_function only */
3750226031Sstas#define SQLITE_UTF16_ALIGNED  8    /* sqlite3_create_collation only */
3751226031Sstas
3752226031Sstas/*
3753226031Sstas** CAPI3REF: Deprecated Functions
3754226031Sstas** DEPRECATED
3755226031Sstas**
3756226031Sstas** These functions are [deprecated].  In order to maintain
3757226128Sstas** backwards compatibility with older code, these functions continue
3758226031Sstas** to be supported.  However, new applications should avoid
3759226031Sstas** the use of these functions.  To help encourage people to avoid
3760226031Sstas** using these functions, we are not going to tell you what they do.
3761226031Sstas*/
3762226031Sstas#ifndef SQLITE_OMIT_DEPRECATED
3763226031SstasSQLITE_API SQLITE_DEPRECATED int sqlite3_aggregate_count(sqlite3_context*);
3764226031SstasSQLITE_API SQLITE_DEPRECATED int sqlite3_expired(sqlite3_stmt*);
3765226031SstasSQLITE_API SQLITE_DEPRECATED int sqlite3_transfer_bindings(sqlite3_stmt*, sqlite3_stmt*);
3766226031SstasSQLITE_API SQLITE_DEPRECATED int sqlite3_global_recover(void);
3767226031SstasSQLITE_API SQLITE_DEPRECATED void sqlite3_thread_cleanup(void);
3768226031SstasSQLITE_API SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int64,int),void*,sqlite3_int64);
3769226031Sstas#endif
3770226031Sstas
3771226031Sstas/*
3772226031Sstas** CAPI3REF: Obtaining SQL Function Parameter Values
3773226031Sstas**
3774226031Sstas** The C-language implementation of SQL functions and aggregates uses
3775226031Sstas** this set of interface routines to access the parameter values on
3776226031Sstas** the function or aggregate.
3777226031Sstas**
3778226031Sstas** The xFunc (for scalar functions) or xStep (for aggregates) parameters
3779226031Sstas** to [sqlite3_create_function()] and [sqlite3_create_function16()]
3780226031Sstas** define callbacks that implement the SQL functions and aggregates.
3781226128Sstas** The 3rd parameter to these callbacks is an array of pointers to
3782226031Sstas** [protected sqlite3_value] objects.  There is one [sqlite3_value] object for
3783226031Sstas** each parameter to the SQL function.  These routines are used to
3784226031Sstas** extract values from the [sqlite3_value] objects.
3785226031Sstas**
3786226031Sstas** These routines work only with [protected sqlite3_value] objects.
3787226031Sstas** Any attempt to use these routines on an [unprotected sqlite3_value]
3788226031Sstas** object results in undefined behavior.
3789226031Sstas**
3790226031Sstas** ^These routines work just like the corresponding [column access functions]
3791226031Sstas** except that  these routines take a single [protected sqlite3_value] object
3792226031Sstas** pointer instead of a [sqlite3_stmt*] pointer and an integer column number.
3793226031Sstas**
3794226031Sstas** ^The sqlite3_value_text16() interface extracts a UTF-16 string
3795226031Sstas** in the native byte-order of the host machine.  ^The
3796226031Sstas** sqlite3_value_text16be() and sqlite3_value_text16le() interfaces
3797226031Sstas** extract UTF-16 strings as big-endian and little-endian respectively.
3798226031Sstas**
3799226031Sstas** ^(The sqlite3_value_numeric_type() interface attempts to apply
3800226031Sstas** numeric affinity to the value.  This means that an attempt is
3801226031Sstas** made to convert the value to an integer or floating point.  If
3802226031Sstas** such a conversion is possible without loss of information (in other
3803226031Sstas** words, if the value is a string that looks like a number)
3804226031Sstas** then the conversion is performed.  Otherwise no conversion occurs.
3805226031Sstas** The [SQLITE_INTEGER | datatype] after conversion is returned.)^
3806226031Sstas**
3807226031Sstas** Please pay particular attention to the fact that the pointer returned
3808226031Sstas** from [sqlite3_value_blob()], [sqlite3_value_text()], or
3809226031Sstas** [sqlite3_value_text16()] can be invalidated by a subsequent call to
3810226031Sstas** [sqlite3_value_bytes()], [sqlite3_value_bytes16()], [sqlite3_value_text()],
3811226031Sstas** or [sqlite3_value_text16()].
3812226031Sstas**
3813226031Sstas** These routines must be called from the same thread as
3814226031Sstas** the SQL function that supplied the [sqlite3_value*] parameters.
3815226031Sstas*/
3816226031SstasSQLITE_API const void *sqlite3_value_blob(sqlite3_value*);
3817226031SstasSQLITE_API int sqlite3_value_bytes(sqlite3_value*);
3818226031SstasSQLITE_API int sqlite3_value_bytes16(sqlite3_value*);
3819226031SstasSQLITE_API double sqlite3_value_double(sqlite3_value*);
3820226031SstasSQLITE_API int sqlite3_value_int(sqlite3_value*);
3821226031SstasSQLITE_API sqlite3_int64 sqlite3_value_int64(sqlite3_value*);
3822226031SstasSQLITE_API const unsigned char *sqlite3_value_text(sqlite3_value*);
3823226031SstasSQLITE_API const void *sqlite3_value_text16(sqlite3_value*);
3824226031SstasSQLITE_API const void *sqlite3_value_text16le(sqlite3_value*);
3825226031SstasSQLITE_API const void *sqlite3_value_text16be(sqlite3_value*);
3826226031SstasSQLITE_API int sqlite3_value_type(sqlite3_value*);
3827226031SstasSQLITE_API int sqlite3_value_numeric_type(sqlite3_value*);
3828226031Sstas
3829226031Sstas/*
3830226031Sstas** CAPI3REF: Obtain Aggregate Function Context
3831226031Sstas**
3832226128Sstas** Implementations of aggregate SQL functions use this
3833226031Sstas** routine to allocate memory for storing their state.
3834226031Sstas**
3835226128Sstas** ^The first time the sqlite3_aggregate_context(C,N) routine is called
3836226031Sstas** for a particular aggregate function, SQLite
3837226031Sstas** allocates N of memory, zeroes out that memory, and returns a pointer
3838226031Sstas** to the new memory. ^On second and subsequent calls to
3839226031Sstas** sqlite3_aggregate_context() for the same aggregate function instance,
3840226031Sstas** the same buffer is returned.  Sqlite3_aggregate_context() is normally
3841226031Sstas** called once for each invocation of the xStep callback and then one
3842226031Sstas** last time when the xFinal callback is invoked.  ^(When no rows match
3843226031Sstas** an aggregate query, the xStep() callback of the aggregate function
3844226031Sstas** implementation is never called and xFinal() is called exactly once.
3845226031Sstas** In those cases, sqlite3_aggregate_context() might be called for the
3846226031Sstas** first time from within xFinal().)^
3847226031Sstas**
3848226031Sstas** ^The sqlite3_aggregate_context(C,N) routine returns a NULL pointer if N is
3849226031Sstas** less than or equal to zero or if a memory allocate error occurs.
3850226031Sstas**
3851226031Sstas** ^(The amount of space allocated by sqlite3_aggregate_context(C,N) is
3852226031Sstas** determined by the N parameter on first successful call.  Changing the
3853226031Sstas** value of N in subsequent call to sqlite3_aggregate_context() within
3854226031Sstas** the same aggregate function instance will not resize the memory
3855226031Sstas** allocation.)^
3856226031Sstas**
3857226128Sstas** ^SQLite automatically frees the memory allocated by
3858226031Sstas** sqlite3_aggregate_context() when the aggregate query concludes.
3859226031Sstas**
3860226031Sstas** The first parameter must be a copy of the
3861226031Sstas** [sqlite3_context | SQL function context] that is the first parameter
3862226031Sstas** to the xStep or xFinal callback routine that implements the aggregate
3863226031Sstas** function.
3864226031Sstas**
3865226031Sstas** This routine must be called from the same thread in which
3866226031Sstas** the aggregate SQL function is running.
3867226031Sstas*/
3868226031SstasSQLITE_API void *sqlite3_aggregate_context(sqlite3_context*, int nBytes);
3869226031Sstas
3870226031Sstas/*
3871226031Sstas** CAPI3REF: User Data For Functions
3872226031Sstas**
3873226031Sstas** ^The sqlite3_user_data() interface returns a copy of
3874226031Sstas** the pointer that was the pUserData parameter (the 5th parameter)
3875226031Sstas** of the [sqlite3_create_function()]
3876226031Sstas** and [sqlite3_create_function16()] routines that originally
3877226031Sstas** registered the application defined function.
3878226031Sstas**
3879226031Sstas** This routine must be called from the same thread in which
3880226031Sstas** the application-defined function is running.
3881226031Sstas*/
3882226031SstasSQLITE_API void *sqlite3_user_data(sqlite3_context*);
3883226031Sstas
3884226031Sstas/*
3885226031Sstas** CAPI3REF: Database Connection For Functions
3886226031Sstas**
3887226031Sstas** ^The sqlite3_context_db_handle() interface returns a copy of
3888226031Sstas** the pointer to the [database connection] (the 1st parameter)
3889226031Sstas** of the [sqlite3_create_function()]
3890226031Sstas** and [sqlite3_create_function16()] routines that originally
3891226031Sstas** registered the application defined function.
3892226031Sstas*/
3893226031SstasSQLITE_API sqlite3 *sqlite3_context_db_handle(sqlite3_context*);
3894226031Sstas
3895226031Sstas/*
3896226031Sstas** CAPI3REF: Function Auxiliary Data
3897226031Sstas**
3898226031Sstas** The following two functions may be used by scalar SQL functions to
3899226031Sstas** associate metadata with argument values. If the same value is passed to
3900226031Sstas** multiple invocations of the same SQL function during query execution, under
3901226031Sstas** some circumstances the associated metadata may be preserved. This may
3902226031Sstas** be used, for example, to add a regular-expression matching scalar
3903226031Sstas** function. The compiled version of the regular expression is stored as
3904226031Sstas** metadata associated with the SQL value passed as the regular expression
3905226031Sstas** pattern.  The compiled regular expression can be reused on multiple
3906226031Sstas** invocations of the same function so that the original pattern string
3907226031Sstas** does not need to be recompiled on each invocation.
3908226031Sstas**
3909226031Sstas** ^The sqlite3_get_auxdata() interface returns a pointer to the metadata
3910226031Sstas** associated by the sqlite3_set_auxdata() function with the Nth argument
3911226031Sstas** value to the application-defined function. ^If no metadata has been ever
3912226031Sstas** been set for the Nth argument of the function, or if the corresponding
3913226031Sstas** function parameter has changed since the meta-data was set,
3914226031Sstas** then sqlite3_get_auxdata() returns a NULL pointer.
3915226031Sstas**
3916226031Sstas** ^The sqlite3_set_auxdata() interface saves the metadata
3917226031Sstas** pointed to by its 3rd parameter as the metadata for the N-th
3918226031Sstas** argument of the application-defined function.  Subsequent
3919226031Sstas** calls to sqlite3_get_auxdata() might return this data, if it has
3920226031Sstas** not been destroyed.
3921226031Sstas** ^If it is not NULL, SQLite will invoke the destructor
3922226031Sstas** function given by the 4th parameter to sqlite3_set_auxdata() on
3923226031Sstas** the metadata when the corresponding function parameter changes
3924226031Sstas** or when the SQL statement completes, whichever comes first.
3925226031Sstas**
3926226031Sstas** SQLite is free to call the destructor and drop metadata on any
3927226031Sstas** parameter of any function at any time.  ^The only guarantee is that
3928226031Sstas** the destructor will be called before the metadata is dropped.
3929226031Sstas**
3930226031Sstas** ^(In practice, metadata is preserved between function calls for
3931226031Sstas** expressions that are constant at compile time. This includes literal
3932226031Sstas** values and [parameters].)^
3933226031Sstas**
3934226031Sstas** These routines must be called from the same thread in which
3935226031Sstas** the SQL function is running.
3936226031Sstas*/
3937226031SstasSQLITE_API void *sqlite3_get_auxdata(sqlite3_context*, int N);
3938226031SstasSQLITE_API void sqlite3_set_auxdata(sqlite3_context*, int N, void*, void (*)(void*));
3939226031Sstas
3940226031Sstas
3941226031Sstas/*
3942226031Sstas** CAPI3REF: Constants Defining Special Destructor Behavior
3943226031Sstas**
3944226031Sstas** These are special values for the destructor that is passed in as the
3945226031Sstas** final argument to routines like [sqlite3_result_blob()].  ^If the destructor
3946226031Sstas** argument is SQLITE_STATIC, it means that the content pointer is constant
3947226031Sstas** and will never change.  It does not need to be destroyed.  ^The
3948226031Sstas** SQLITE_TRANSIENT value means that the content will likely change in
3949226031Sstas** the near future and that SQLite should make its own private copy of
3950226031Sstas** the content before returning.
3951226031Sstas**
3952226031Sstas** The typedef is necessary to work around problems in certain
3953226031Sstas** C++ compilers.  See ticket #2191.
3954226031Sstas*/
3955226031Sstastypedef void (*sqlite3_destructor_type)(void*);
3956226031Sstas#define SQLITE_STATIC      ((sqlite3_destructor_type)0)
3957226031Sstas#define SQLITE_TRANSIENT   ((sqlite3_destructor_type)-1)
3958226031Sstas
3959226031Sstas/*
3960226031Sstas** CAPI3REF: Setting The Result Of An SQL Function
3961226031Sstas**
3962226031Sstas** These routines are used by the xFunc or xFinal callbacks that
3963226031Sstas** implement SQL functions and aggregates.  See
3964226031Sstas** [sqlite3_create_function()] and [sqlite3_create_function16()]
3965226031Sstas** for additional information.
3966226031Sstas**
3967226031Sstas** These functions work very much like the [parameter binding] family of
3968226031Sstas** functions used to bind values to host parameters in prepared statements.
3969226031Sstas** Refer to the [SQL parameter] documentation for additional information.
3970226031Sstas**
3971226031Sstas** ^The sqlite3_result_blob() interface sets the result from
3972226031Sstas** an application-defined function to be the BLOB whose content is pointed
3973226031Sstas** to by the second parameter and which is N bytes long where N is the
3974226031Sstas** third parameter.
3975226031Sstas**
3976226031Sstas** ^The sqlite3_result_zeroblob() interfaces set the result of
3977226031Sstas** the application-defined function to be a BLOB containing all zero
3978226031Sstas** bytes and N bytes in size, where N is the value of the 2nd parameter.
3979226031Sstas**
3980226031Sstas** ^The sqlite3_result_double() interface sets the result from
3981226031Sstas** an application-defined function to be a floating point value specified
3982226031Sstas** by its 2nd argument.
3983226031Sstas**
3984226031Sstas** ^The sqlite3_result_error() and sqlite3_result_error16() functions
3985226031Sstas** cause the implemented SQL function to throw an exception.
3986226031Sstas** ^SQLite uses the string pointed to by the
3987226031Sstas** 2nd parameter of sqlite3_result_error() or sqlite3_result_error16()
3988226031Sstas** as the text of an error message.  ^SQLite interprets the error
3989226031Sstas** message string from sqlite3_result_error() as UTF-8. ^SQLite
3990226031Sstas** interprets the string from sqlite3_result_error16() as UTF-16 in native
3991226031Sstas** byte order.  ^If the third parameter to sqlite3_result_error()
3992226031Sstas** or sqlite3_result_error16() is negative then SQLite takes as the error
3993226031Sstas** message all text up through the first zero character.
3994226031Sstas** ^If the third parameter to sqlite3_result_error() or
3995226031Sstas** sqlite3_result_error16() is non-negative then SQLite takes that many
3996226031Sstas** bytes (not characters) from the 2nd parameter as the error message.
3997226031Sstas** ^The sqlite3_result_error() and sqlite3_result_error16()
3998226031Sstas** routines make a private copy of the error message text before
3999226031Sstas** they return.  Hence, the calling function can deallocate or
4000226031Sstas** modify the text after they return without harm.
4001226031Sstas** ^The sqlite3_result_error_code() function changes the error code
4002226031Sstas** returned by SQLite as a result of an error in a function.  ^By default,
4003226031Sstas** the error code is SQLITE_ERROR.  ^A subsequent call to sqlite3_result_error()
4004226031Sstas** or sqlite3_result_error16() resets the error code to SQLITE_ERROR.
4005226031Sstas**
4006226031Sstas** ^The sqlite3_result_toobig() interface causes SQLite to throw an error
4007226031Sstas** indicating that a string or BLOB is too long to represent.
4008226031Sstas**
4009226031Sstas** ^The sqlite3_result_nomem() interface causes SQLite to throw an error
4010226031Sstas** indicating that a memory allocation failed.
4011226031Sstas**
4012226031Sstas** ^The sqlite3_result_int() interface sets the return value
4013226031Sstas** of the application-defined function to be the 32-bit signed integer
4014226031Sstas** value given in the 2nd argument.
4015226031Sstas** ^The sqlite3_result_int64() interface sets the return value
4016226031Sstas** of the application-defined function to be the 64-bit signed integer
4017226031Sstas** value given in the 2nd argument.
4018226031Sstas**
4019226031Sstas** ^The sqlite3_result_null() interface sets the return value
4020226031Sstas** of the application-defined function to be NULL.
4021226031Sstas**
4022226031Sstas** ^The sqlite3_result_text(), sqlite3_result_text16(),
4023226031Sstas** sqlite3_result_text16le(), and sqlite3_result_text16be() interfaces
4024226031Sstas** set the return value of the application-defined function to be
4025226031Sstas** a text string which is represented as UTF-8, UTF-16 native byte order,
4026226031Sstas** UTF-16 little endian, or UTF-16 big endian, respectively.
4027226031Sstas** ^SQLite takes the text result from the application from
4028226031Sstas** the 2nd parameter of the sqlite3_result_text* interfaces.
4029226031Sstas** ^If the 3rd parameter to the sqlite3_result_text* interfaces
4030226031Sstas** is negative, then SQLite takes result text from the 2nd parameter
4031226031Sstas** through the first zero character.
4032226031Sstas** ^If the 3rd parameter to the sqlite3_result_text* interfaces
4033226031Sstas** is non-negative, then as many bytes (not characters) of the text
4034226031Sstas** pointed to by the 2nd parameter are taken as the application-defined
4035226031Sstas** function result.
4036226031Sstas** ^If the 4th parameter to the sqlite3_result_text* interfaces
4037226031Sstas** or sqlite3_result_blob is a non-NULL pointer, then SQLite calls that
4038226031Sstas** function as the destructor on the text or BLOB result when it has
4039226031Sstas** finished using that result.
4040226031Sstas** ^If the 4th parameter to the sqlite3_result_text* interfaces or to
4041226031Sstas** sqlite3_result_blob is the special constant SQLITE_STATIC, then SQLite
4042226031Sstas** assumes that the text or BLOB result is in constant space and does not
4043226031Sstas** copy the content of the parameter nor call a destructor on the content
4044226031Sstas** when it has finished using that result.
4045226031Sstas** ^If the 4th parameter to the sqlite3_result_text* interfaces
4046226031Sstas** or sqlite3_result_blob is the special constant SQLITE_TRANSIENT
4047226031Sstas** then SQLite makes a copy of the result into space obtained from
4048226031Sstas** from [sqlite3_malloc()] before it returns.
4049226031Sstas**
4050226031Sstas** ^The sqlite3_result_value() interface sets the result of
4051226031Sstas** the application-defined function to be a copy the
4052226031Sstas** [unprotected sqlite3_value] object specified by the 2nd parameter.  ^The
4053226031Sstas** sqlite3_result_value() interface makes a copy of the [sqlite3_value]
4054226031Sstas** so that the [sqlite3_value] specified in the parameter may change or
4055226031Sstas** be deallocated after sqlite3_result_value() returns without harm.
4056226031Sstas** ^A [protected sqlite3_value] object may always be used where an
4057226031Sstas** [unprotected sqlite3_value] object is required, so either
4058226031Sstas** kind of [sqlite3_value] object can be used with this interface.
4059226031Sstas**
4060226031Sstas** If these routines are called from within the different thread
4061226031Sstas** than the one containing the application-defined function that received
4062226031Sstas** the [sqlite3_context] pointer, the results are undefined.
4063226031Sstas*/
4064226031SstasSQLITE_API void sqlite3_result_blob(sqlite3_context*, const void*, int, void(*)(void*));
4065226031SstasSQLITE_API void sqlite3_result_double(sqlite3_context*, double);
4066226031SstasSQLITE_API void sqlite3_result_error(sqlite3_context*, const char*, int);
4067226031SstasSQLITE_API void sqlite3_result_error16(sqlite3_context*, const void*, int);
4068226031SstasSQLITE_API void sqlite3_result_error_toobig(sqlite3_context*);
4069226031SstasSQLITE_API void sqlite3_result_error_nomem(sqlite3_context*);
4070226031SstasSQLITE_API void sqlite3_result_error_code(sqlite3_context*, int);
4071226031SstasSQLITE_API void sqlite3_result_int(sqlite3_context*, int);
4072226031SstasSQLITE_API void sqlite3_result_int64(sqlite3_context*, sqlite3_int64);
4073226031SstasSQLITE_API void sqlite3_result_null(sqlite3_context*);
4074226031SstasSQLITE_API void sqlite3_result_text(sqlite3_context*, const char*, int, void(*)(void*));
4075226031SstasSQLITE_API void sqlite3_result_text16(sqlite3_context*, const void*, int, void(*)(void*));
4076226031SstasSQLITE_API void sqlite3_result_text16le(sqlite3_context*, const void*, int,void(*)(void*));
4077226031SstasSQLITE_API void sqlite3_result_text16be(sqlite3_context*, const void*, int,void(*)(void*));
4078226031SstasSQLITE_API void sqlite3_result_value(sqlite3_context*, sqlite3_value*);
4079226031SstasSQLITE_API void sqlite3_result_zeroblob(sqlite3_context*, int n);
4080226031Sstas
4081226031Sstas/*
4082226031Sstas** CAPI3REF: Define New Collating Sequences
4083226031Sstas**
4084226128Sstas** ^These functions add, remove, or modify a [collation] associated
4085226128Sstas** with the [database connection] specified as the first argument.
4086226031Sstas**
4087226128Sstas** ^The name of the collation is a UTF-8 string
4088226031Sstas** for sqlite3_create_collation() and sqlite3_create_collation_v2()
4089226128Sstas** and a UTF-16 string in native byte order for sqlite3_create_collation16().
4090226128Sstas** ^Collation names that compare equal according to [sqlite3_strnicmp()] are
4091226128Sstas** considered to be the same name.
4092226031Sstas**
4093226128Sstas** ^(The third argument (eTextRep) must be one of the constants:
4094226128Sstas** <ul>
4095226128Sstas** <li> [SQLITE_UTF8],
4096226128Sstas** <li> [SQLITE_UTF16LE],
4097226128Sstas** <li> [SQLITE_UTF16BE],
4098226128Sstas** <li> [SQLITE_UTF16], or
4099226128Sstas** <li> [SQLITE_UTF16_ALIGNED].
4100226128Sstas** </ul>)^
4101226128Sstas** ^The eTextRep argument determines the encoding of strings passed
4102226128Sstas** to the collating function callback, xCallback.
4103226128Sstas** ^The [SQLITE_UTF16] and [SQLITE_UTF16_ALIGNED] values for eTextRep
4104226128Sstas** force strings to be UTF16 with native byte order.
4105226128Sstas** ^The [SQLITE_UTF16_ALIGNED] value for eTextRep forces strings to begin
4106226128Sstas** on an even byte address.
4107226031Sstas**
4108226128Sstas** ^The fourth argument, pArg, is an application data pointer that is passed
4109226128Sstas** through as the first argument to the collating function callback.
4110226031Sstas**
4111226128Sstas** ^The fifth argument, xCallback, is a pointer to the collating function.
4112226128Sstas** ^Multiple collating functions can be registered using the same name but
4113226128Sstas** with different eTextRep parameters and SQLite will use whichever
4114226128Sstas** function requires the least amount of data transformation.
4115226128Sstas** ^If the xCallback argument is NULL then the collating function is
4116226128Sstas** deleted.  ^When all collating functions having the same name are deleted,
4117226128Sstas** that collation is no longer usable.
4118226031Sstas**
4119226128Sstas** ^The collating function callback is invoked with a copy of the pArg
4120226128Sstas** application data pointer and with two strings in the encoding specified
4121226128Sstas** by the eTextRep argument.  The collating function must return an
4122226128Sstas** integer that is negative, zero, or positive
4123226128Sstas** if the first string is less than, equal to, or greater than the second,
4124226128Sstas** respectively.  A collating function must always return the same answer
4125226128Sstas** given the same inputs.  If two or more collating functions are registered
4126226128Sstas** to the same collation name (using different eTextRep values) then all
4127226128Sstas** must give an equivalent answer when invoked with equivalent strings.
4128226128Sstas** The collating function must obey the following properties for all
4129226128Sstas** strings A, B, and C:
4130226128Sstas**
4131226128Sstas** <ol>
4132226128Sstas** <li> If A==B then B==A.
4133226128Sstas** <li> If A==B and B==C then A==C.
4134226128Sstas** <li> If A&lt;B THEN B&gt;A.
4135226128Sstas** <li> If A&lt;B and B&lt;C then A&lt;C.
4136226128Sstas** </ol>
4137226128Sstas**
4138226128Sstas** If a collating function fails any of the above constraints and that
4139226128Sstas** collating function is  registered and used, then the behavior of SQLite
4140226128Sstas** is undefined.
4141226128Sstas**
4142226031Sstas** ^The sqlite3_create_collation_v2() works like sqlite3_create_collation()
4143226128Sstas** with the addition that the xDestroy callback is invoked on pArg when
4144226128Sstas** the collating function is deleted.
4145226128Sstas** ^Collating functions are deleted when they are overridden by later
4146226128Sstas** calls to the collation creation functions or when the
4147226128Sstas** [database connection] is closed using [sqlite3_close()].
4148226031Sstas**
4149226128Sstas** ^The xDestroy callback is <u>not</u> called if the
4150226128Sstas** sqlite3_create_collation_v2() function fails.  Applications that invoke
4151226128Sstas** sqlite3_create_collation_v2() with a non-NULL xDestroy argument should
4152226128Sstas** check the return code and dispose of the application data pointer
4153226128Sstas** themselves rather than expecting SQLite to deal with it for them.
4154226128Sstas** This is different from every other SQLite interface.  The inconsistency
4155226128Sstas** is unfortunate but cannot be changed without breaking backwards
4156226128Sstas** compatibility.
4157226128Sstas**
4158226031Sstas** See also:  [sqlite3_collation_needed()] and [sqlite3_collation_needed16()].
4159226031Sstas*/
4160226031SstasSQLITE_API int sqlite3_create_collation(
4161226128Sstas  sqlite3*,
4162226128Sstas  const char *zName,
4163226128Sstas  int eTextRep,
4164226128Sstas  void *pArg,
4165226031Sstas  int(*xCompare)(void*,int,const void*,int,const void*)
4166226031Sstas);
4167226031SstasSQLITE_API int sqlite3_create_collation_v2(
4168226128Sstas  sqlite3*,
4169226128Sstas  const char *zName,
4170226128Sstas  int eTextRep,
4171226128Sstas  void *pArg,
4172226031Sstas  int(*xCompare)(void*,int,const void*,int,const void*),
4173226031Sstas  void(*xDestroy)(void*)
4174226031Sstas);
4175226031SstasSQLITE_API int sqlite3_create_collation16(
4176226128Sstas  sqlite3*,
4177226031Sstas  const void *zName,
4178226128Sstas  int eTextRep,
4179226128Sstas  void *pArg,
4180226031Sstas  int(*xCompare)(void*,int,const void*,int,const void*)
4181226031Sstas);
4182226031Sstas
4183226031Sstas/*
4184226031Sstas** CAPI3REF: Collation Needed Callbacks
4185226031Sstas**
4186226031Sstas** ^To avoid having to register all collation sequences before a database
4187226031Sstas** can be used, a single callback function may be registered with the
4188226031Sstas** [database connection] to be invoked whenever an undefined collation
4189226031Sstas** sequence is required.
4190226031Sstas**
4191226031Sstas** ^If the function is registered using the sqlite3_collation_needed() API,
4192226031Sstas** then it is passed the names of undefined collation sequences as strings
4193226031Sstas** encoded in UTF-8. ^If sqlite3_collation_needed16() is used,
4194226031Sstas** the names are passed as UTF-16 in machine native byte order.
4195226031Sstas** ^A call to either function replaces the existing collation-needed callback.
4196226031Sstas**
4197226031Sstas** ^(When the callback is invoked, the first argument passed is a copy
4198226031Sstas** of the second argument to sqlite3_collation_needed() or
4199226031Sstas** sqlite3_collation_needed16().  The second argument is the database
4200226031Sstas** connection.  The third argument is one of [SQLITE_UTF8], [SQLITE_UTF16BE],
4201226031Sstas** or [SQLITE_UTF16LE], indicating the most desirable form of the collation
4202226031Sstas** sequence function required.  The fourth parameter is the name of the
4203226031Sstas** required collation sequence.)^
4204226031Sstas**
4205226031Sstas** The callback function should register the desired collation using
4206226031Sstas** [sqlite3_create_collation()], [sqlite3_create_collation16()], or
4207226031Sstas** [sqlite3_create_collation_v2()].
4208226031Sstas*/
4209226031SstasSQLITE_API int sqlite3_collation_needed(
4210226128Sstas  sqlite3*,
4211226128Sstas  void*,
4212226031Sstas  void(*)(void*,sqlite3*,int eTextRep,const char*)
4213226031Sstas);
4214226031SstasSQLITE_API int sqlite3_collation_needed16(
4215226128Sstas  sqlite3*,
4216226031Sstas  void*,
4217226031Sstas  void(*)(void*,sqlite3*,int eTextRep,const void*)
4218226031Sstas);
4219226031Sstas
4220226128Sstas#ifdef SQLITE_HAS_CODEC
4221226031Sstas/*
4222226031Sstas** Specify the key for an encrypted database.  This routine should be
4223226031Sstas** called right after sqlite3_open().
4224226031Sstas**
4225226031Sstas** The code to implement this API is not available in the public release
4226226031Sstas** of SQLite.
4227226031Sstas*/
4228226031SstasSQLITE_API int sqlite3_key(
4229226031Sstas  sqlite3 *db,                   /* Database to be rekeyed */
4230226031Sstas  const void *pKey, int nKey     /* The key */
4231226031Sstas);
4232226031Sstas
4233226031Sstas/*
4234226031Sstas** Change the key on an open database.  If the current database is not
4235226031Sstas** encrypted, this routine will encrypt it.  If pNew==0 or nNew==0, the
4236226031Sstas** database is decrypted.
4237226031Sstas**
4238226031Sstas** The code to implement this API is not available in the public release
4239226031Sstas** of SQLite.
4240226031Sstas*/
4241226031SstasSQLITE_API int sqlite3_rekey(
4242226031Sstas  sqlite3 *db,                   /* Database to be rekeyed */
4243226031Sstas  const void *pKey, int nKey     /* The new key */
4244226031Sstas);
4245226031Sstas
4246226031Sstas/*
4247226128Sstas** Specify the activation key for a SEE database.  Unless
4248226031Sstas** activated, none of the SEE routines will work.
4249226031Sstas*/
4250226031SstasSQLITE_API void sqlite3_activate_see(
4251226031Sstas  const char *zPassPhrase        /* Activation phrase */
4252226031Sstas);
4253226031Sstas#endif
4254226031Sstas
4255226031Sstas#ifdef SQLITE_ENABLE_CEROD
4256226031Sstas/*
4257226128Sstas** Specify the activation key for a CEROD database.  Unless
4258226031Sstas** activated, none of the CEROD routines will work.
4259226031Sstas*/
4260226031SstasSQLITE_API void sqlite3_activate_cerod(
4261226031Sstas  const char *zPassPhrase        /* Activation phrase */
4262226031Sstas);
4263226031Sstas#endif
4264226031Sstas
4265226031Sstas/*
4266226031Sstas** CAPI3REF: Suspend Execution For A Short Time
4267226031Sstas**
4268226128Sstas** The sqlite3_sleep() function causes the current thread to suspend execution
4269226031Sstas** for at least a number of milliseconds specified in its parameter.
4270226031Sstas**
4271226128Sstas** If the operating system does not support sleep requests with
4272226031Sstas** millisecond time resolution, then the time will be rounded up to
4273226128Sstas** the nearest second. The number of milliseconds of sleep actually
4274226031Sstas** requested from the operating system is returned.
4275226031Sstas**
4276226031Sstas** ^SQLite implements this interface by calling the xSleep()
4277226128Sstas** method of the default [sqlite3_vfs] object.  If the xSleep() method
4278226128Sstas** of the default VFS is not implemented correctly, or not implemented at
4279226128Sstas** all, then the behavior of sqlite3_sleep() may deviate from the description
4280226128Sstas** in the previous paragraphs.
4281226031Sstas*/
4282226031SstasSQLITE_API int sqlite3_sleep(int);
4283226031Sstas
4284226031Sstas/*
4285226031Sstas** CAPI3REF: Name Of The Folder Holding Temporary Files
4286226031Sstas**
4287226031Sstas** ^(If this global variable is made to point to a string which is
4288226031Sstas** the name of a folder (a.k.a. directory), then all temporary files
4289226031Sstas** created by SQLite when using a built-in [sqlite3_vfs | VFS]
4290226031Sstas** will be placed in that directory.)^  ^If this variable
4291226031Sstas** is a NULL pointer, then SQLite performs a search for an appropriate
4292226031Sstas** temporary file directory.
4293226031Sstas**
4294226031Sstas** It is not safe to read or modify this variable in more than one
4295226031Sstas** thread at a time.  It is not safe to read or modify this variable
4296226031Sstas** if a [database connection] is being used at the same time in a separate
4297226031Sstas** thread.
4298226031Sstas** It is intended that this variable be set once
4299226031Sstas** as part of process initialization and before any SQLite interface
4300226031Sstas** routines have been called and that this variable remain unchanged
4301226031Sstas** thereafter.
4302226031Sstas**
4303226031Sstas** ^The [temp_store_directory pragma] may modify this variable and cause
4304226031Sstas** it to point to memory obtained from [sqlite3_malloc].  ^Furthermore,
4305226031Sstas** the [temp_store_directory pragma] always assumes that any string
4306226128Sstas** that this variable points to is held in memory obtained from
4307226031Sstas** [sqlite3_malloc] and the pragma may attempt to free that memory
4308226031Sstas** using [sqlite3_free].
4309226031Sstas** Hence, if this variable is modified directly, either it should be
4310226031Sstas** made NULL or made to point to memory obtained from [sqlite3_malloc]
4311226031Sstas** or else the use of the [temp_store_directory pragma] should be avoided.
4312226031Sstas*/
4313226031SstasSQLITE_API SQLITE_EXTERN char *sqlite3_temp_directory;
4314226031Sstas
4315226031Sstas/*
4316226031Sstas** CAPI3REF: Test For Auto-Commit Mode
4317226031Sstas** KEYWORDS: {autocommit mode}
4318226031Sstas**
4319226031Sstas** ^The sqlite3_get_autocommit() interface returns non-zero or
4320226031Sstas** zero if the given database connection is or is not in autocommit mode,
4321226031Sstas** respectively.  ^Autocommit mode is on by default.
4322226031Sstas** ^Autocommit mode is disabled by a [BEGIN] statement.
4323226031Sstas** ^Autocommit mode is re-enabled by a [COMMIT] or [ROLLBACK].
4324226031Sstas**
4325226031Sstas** If certain kinds of errors occur on a statement within a multi-statement
4326226031Sstas** transaction (errors including [SQLITE_FULL], [SQLITE_IOERR],
4327226031Sstas** [SQLITE_NOMEM], [SQLITE_BUSY], and [SQLITE_INTERRUPT]) then the
4328226031Sstas** transaction might be rolled back automatically.  The only way to
4329226031Sstas** find out whether SQLite automatically rolled back the transaction after
4330226031Sstas** an error is to use this function.
4331226031Sstas**
4332226031Sstas** If another thread changes the autocommit status of the database
4333226031Sstas** connection while this routine is running, then the return value
4334226031Sstas** is undefined.
4335226031Sstas*/
4336226031SstasSQLITE_API int sqlite3_get_autocommit(sqlite3*);
4337226031Sstas
4338226031Sstas/*
4339226031Sstas** CAPI3REF: Find The Database Handle Of A Prepared Statement
4340226031Sstas**
4341226031Sstas** ^The sqlite3_db_handle interface returns the [database connection] handle
4342226031Sstas** to which a [prepared statement] belongs.  ^The [database connection]
4343226031Sstas** returned by sqlite3_db_handle is the same [database connection]
4344226031Sstas** that was the first argument
4345226031Sstas** to the [sqlite3_prepare_v2()] call (or its variants) that was used to
4346226031Sstas** create the statement in the first place.
4347226031Sstas*/
4348226031SstasSQLITE_API sqlite3 *sqlite3_db_handle(sqlite3_stmt*);
4349226031Sstas
4350226031Sstas/*
4351226031Sstas** CAPI3REF: Find the next prepared statement
4352226031Sstas**
4353226031Sstas** ^This interface returns a pointer to the next [prepared statement] after
4354226031Sstas** pStmt associated with the [database connection] pDb.  ^If pStmt is NULL
4355226031Sstas** then this interface returns a pointer to the first prepared statement
4356226031Sstas** associated with the database connection pDb.  ^If no prepared statement
4357226031Sstas** satisfies the conditions of this routine, it returns NULL.
4358226031Sstas**
4359226031Sstas** The [database connection] pointer D in a call to
4360226031Sstas** [sqlite3_next_stmt(D,S)] must refer to an open database
4361226031Sstas** connection and in particular must not be a NULL pointer.
4362226031Sstas*/
4363226031SstasSQLITE_API sqlite3_stmt *sqlite3_next_stmt(sqlite3 *pDb, sqlite3_stmt *pStmt);
4364226031Sstas
4365226031Sstas/*
4366226031Sstas** CAPI3REF: Commit And Rollback Notification Callbacks
4367226031Sstas**
4368226031Sstas** ^The sqlite3_commit_hook() interface registers a callback
4369226031Sstas** function to be invoked whenever a transaction is [COMMIT | committed].
4370226031Sstas** ^Any callback set by a previous call to sqlite3_commit_hook()
4371226031Sstas** for the same database connection is overridden.
4372226031Sstas** ^The sqlite3_rollback_hook() interface registers a callback
4373226031Sstas** function to be invoked whenever a transaction is [ROLLBACK | rolled back].
4374226031Sstas** ^Any callback set by a previous call to sqlite3_rollback_hook()
4375226031Sstas** for the same database connection is overridden.
4376226031Sstas** ^The pArg argument is passed through to the callback.
4377226031Sstas** ^If the callback on a commit hook function returns non-zero,
4378226031Sstas** then the commit is converted into a rollback.
4379226031Sstas**
4380226031Sstas** ^The sqlite3_commit_hook(D,C,P) and sqlite3_rollback_hook(D,C,P) functions
4381226031Sstas** return the P argument from the previous call of the same function
4382226031Sstas** on the same [database connection] D, or NULL for
4383226031Sstas** the first call for each function on D.
4384226031Sstas**
4385226031Sstas** The callback implementation must not do anything that will modify
4386226031Sstas** the database connection that invoked the callback.  Any actions
4387226031Sstas** to modify the database connection must be deferred until after the
4388226031Sstas** completion of the [sqlite3_step()] call that triggered the commit
4389226031Sstas** or rollback hook in the first place.
4390226031Sstas** Note that [sqlite3_prepare_v2()] and [sqlite3_step()] both modify their
4391226031Sstas** database connections for the meaning of "modify" in this paragraph.
4392226031Sstas**
4393226031Sstas** ^Registering a NULL function disables the callback.
4394226031Sstas**
4395226031Sstas** ^When the commit hook callback routine returns zero, the [COMMIT]
4396226031Sstas** operation is allowed to continue normally.  ^If the commit hook
4397226031Sstas** returns non-zero, then the [COMMIT] is converted into a [ROLLBACK].
4398226031Sstas** ^The rollback hook is invoked on a rollback that results from a commit
4399226031Sstas** hook returning non-zero, just as it would be with any other rollback.
4400226031Sstas**
4401226031Sstas** ^For the purposes of this API, a transaction is said to have been
4402226031Sstas** rolled back if an explicit "ROLLBACK" statement is executed, or
4403226031Sstas** an error or constraint causes an implicit rollback to occur.
4404226031Sstas** ^The rollback callback is not invoked if a transaction is
4405226031Sstas** automatically rolled back because the database connection is closed.
4406226031Sstas**
4407226031Sstas** See also the [sqlite3_update_hook()] interface.
4408226031Sstas*/
4409226031SstasSQLITE_API void *sqlite3_commit_hook(sqlite3*, int(*)(void*), void*);
4410226031SstasSQLITE_API void *sqlite3_rollback_hook(sqlite3*, void(*)(void *), void*);
4411226031Sstas
4412226031Sstas/*
4413226031Sstas** CAPI3REF: Data Change Notification Callbacks
4414226031Sstas**
4415226031Sstas** ^The sqlite3_update_hook() interface registers a callback function
4416226031Sstas** with the [database connection] identified by the first argument
4417226031Sstas** to be invoked whenever a row is updated, inserted or deleted.
4418226031Sstas** ^Any callback set by a previous call to this function
4419226031Sstas** for the same database connection is overridden.
4420226031Sstas**
4421226031Sstas** ^The second argument is a pointer to the function to invoke when a
4422226031Sstas** row is updated, inserted or deleted.
4423226031Sstas** ^The first argument to the callback is a copy of the third argument
4424226031Sstas** to sqlite3_update_hook().
4425226031Sstas** ^The second callback argument is one of [SQLITE_INSERT], [SQLITE_DELETE],
4426226031Sstas** or [SQLITE_UPDATE], depending on the operation that caused the callback
4427226031Sstas** to be invoked.
4428226031Sstas** ^The third and fourth arguments to the callback contain pointers to the
4429226031Sstas** database and table name containing the affected row.
4430226031Sstas** ^The final callback parameter is the [rowid] of the row.
4431226031Sstas** ^In the case of an update, this is the [rowid] after the update takes place.
4432226031Sstas**
4433226031Sstas** ^(The update hook is not invoked when internal system tables are
4434226031Sstas** modified (i.e. sqlite_master and sqlite_sequence).)^
4435226031Sstas**
4436226031Sstas** ^In the current implementation, the update hook
4437226031Sstas** is not invoked when duplication rows are deleted because of an
4438226031Sstas** [ON CONFLICT | ON CONFLICT REPLACE] clause.  ^Nor is the update hook
4439226031Sstas** invoked when rows are deleted using the [truncate optimization].
4440226031Sstas** The exceptions defined in this paragraph might change in a future
4441226031Sstas** release of SQLite.
4442226031Sstas**
4443226031Sstas** The update hook implementation must not do anything that will modify
4444226031Sstas** the database connection that invoked the update hook.  Any actions
4445226031Sstas** to modify the database connection must be deferred until after the
4446226031Sstas** completion of the [sqlite3_step()] call that triggered the update hook.
4447226031Sstas** Note that [sqlite3_prepare_v2()] and [sqlite3_step()] both modify their
4448226031Sstas** database connections for the meaning of "modify" in this paragraph.
4449226031Sstas**
4450226031Sstas** ^The sqlite3_update_hook(D,C,P) function
4451226031Sstas** returns the P argument from the previous call
4452226031Sstas** on the same [database connection] D, or NULL for
4453226031Sstas** the first call on D.
4454226031Sstas**
4455226031Sstas** See also the [sqlite3_commit_hook()] and [sqlite3_rollback_hook()]
4456226031Sstas** interfaces.
4457226031Sstas*/
4458226031SstasSQLITE_API void *sqlite3_update_hook(
4459226128Sstas  sqlite3*,
4460226031Sstas  void(*)(void *,int ,char const *,char const *,sqlite3_int64),
4461226031Sstas  void*
4462226031Sstas);
4463226031Sstas
4464226031Sstas/*
4465226031Sstas** CAPI3REF: Enable Or Disable Shared Pager Cache
4466226031Sstas** KEYWORDS: {shared cache}
4467226031Sstas**
4468226031Sstas** ^(This routine enables or disables the sharing of the database cache
4469226031Sstas** and schema data structures between [database connection | connections]
4470226031Sstas** to the same database. Sharing is enabled if the argument is true
4471226031Sstas** and disabled if the argument is false.)^
4472226031Sstas**
4473226031Sstas** ^Cache sharing is enabled and disabled for an entire process.
4474226031Sstas** This is a change as of SQLite version 3.5.0. In prior versions of SQLite,
4475226031Sstas** sharing was enabled or disabled for each thread separately.
4476226031Sstas**
4477226031Sstas** ^(The cache sharing mode set by this interface effects all subsequent
4478226031Sstas** calls to [sqlite3_open()], [sqlite3_open_v2()], and [sqlite3_open16()].
4479226031Sstas** Existing database connections continue use the sharing mode
4480226031Sstas** that was in effect at the time they were opened.)^
4481226031Sstas**
4482226031Sstas** ^(This routine returns [SQLITE_OK] if shared cache was enabled or disabled
4483226031Sstas** successfully.  An [error code] is returned otherwise.)^
4484226031Sstas**
4485226031Sstas** ^Shared cache is disabled by default. But this might change in
4486226031Sstas** future releases of SQLite.  Applications that care about shared
4487226031Sstas** cache setting should set it explicitly.
4488226031Sstas**
4489226031Sstas** See Also:  [SQLite Shared-Cache Mode]
4490226031Sstas*/
4491226031SstasSQLITE_API int sqlite3_enable_shared_cache(int);
4492226031Sstas
4493226031Sstas/*
4494226031Sstas** CAPI3REF: Attempt To Free Heap Memory
4495226031Sstas**
4496226031Sstas** ^The sqlite3_release_memory() interface attempts to free N bytes
4497226031Sstas** of heap memory by deallocating non-essential memory allocations
4498226031Sstas** held by the database library.   Memory used to cache database
4499226031Sstas** pages to improve performance is an example of non-essential memory.
4500226031Sstas** ^sqlite3_release_memory() returns the number of bytes actually freed,
4501226031Sstas** which might be more or less than the amount requested.
4502226128Sstas** ^The sqlite3_release_memory() routine is a no-op returning zero
4503226128Sstas** if SQLite is not compiled with [SQLITE_ENABLE_MEMORY_MANAGEMENT].
4504226031Sstas*/
4505226031SstasSQLITE_API int sqlite3_release_memory(int);
4506226031Sstas
4507226031Sstas/*
4508226031Sstas** CAPI3REF: Impose A Limit On Heap Size
4509226031Sstas**
4510226128Sstas** ^The sqlite3_soft_heap_limit64() interface sets and/or queries the
4511226128Sstas** soft limit on the amount of heap memory that may be allocated by SQLite.
4512226128Sstas** ^SQLite strives to keep heap memory utilization below the soft heap
4513226128Sstas** limit by reducing the number of pages held in the page cache
4514226128Sstas** as heap memory usages approaches the limit.
4515226128Sstas** ^The soft heap limit is "soft" because even though SQLite strives to stay
4516226128Sstas** below the limit, it will exceed the limit rather than generate
4517226128Sstas** an [SQLITE_NOMEM] error.  In other words, the soft heap limit
4518226128Sstas** is advisory only.
4519226031Sstas**
4520226128Sstas** ^The return value from sqlite3_soft_heap_limit64() is the size of
4521226128Sstas** the soft heap limit prior to the call.  ^If the argument N is negative
4522226128Sstas** then no change is made to the soft heap limit.  Hence, the current
4523226128Sstas** size of the soft heap limit can be determined by invoking
4524226128Sstas** sqlite3_soft_heap_limit64() with a negative argument.
4525226031Sstas**
4526226128Sstas** ^If the argument N is zero then the soft heap limit is disabled.
4527226031Sstas**
4528226128Sstas** ^(The soft heap limit is not enforced in the current implementation
4529226128Sstas** if one or more of following conditions are true:
4530226031Sstas**
4531226128Sstas** <ul>
4532226128Sstas** <li> The soft heap limit is set to zero.
4533226128Sstas** <li> Memory accounting is disabled using a combination of the
4534226128Sstas**      [sqlite3_config]([SQLITE_CONFIG_MEMSTATUS],...) start-time option and
4535226128Sstas**      the [SQLITE_DEFAULT_MEMSTATUS] compile-time option.
4536226128Sstas** <li> An alternative page cache implementation is specified using
4537226128Sstas**      [sqlite3_config]([SQLITE_CONFIG_PCACHE],...).
4538226128Sstas** <li> The page cache allocates from its own memory pool supplied
4539226128Sstas**      by [sqlite3_config]([SQLITE_CONFIG_PAGECACHE],...) rather than
4540226128Sstas**      from the heap.
4541226128Sstas** </ul>)^
4542226128Sstas**
4543226128Sstas** Beginning with SQLite version 3.7.3, the soft heap limit is enforced
4544226128Sstas** regardless of whether or not the [SQLITE_ENABLE_MEMORY_MANAGEMENT]
4545226128Sstas** compile-time option is invoked.  With [SQLITE_ENABLE_MEMORY_MANAGEMENT],
4546226128Sstas** the soft heap limit is enforced on every memory allocation.  Without
4547226128Sstas** [SQLITE_ENABLE_MEMORY_MANAGEMENT], the soft heap limit is only enforced
4548226128Sstas** when memory is allocated by the page cache.  Testing suggests that because
4549226128Sstas** the page cache is the predominate memory user in SQLite, most
4550226128Sstas** applications will achieve adequate soft heap limit enforcement without
4551226128Sstas** the use of [SQLITE_ENABLE_MEMORY_MANAGEMENT].
4552226128Sstas**
4553226128Sstas** The circumstances under which SQLite will enforce the soft heap limit may
4554226128Sstas** changes in future releases of SQLite.
4555226031Sstas*/
4556226128SstasSQLITE_API sqlite3_int64 sqlite3_soft_heap_limit64(sqlite3_int64 N);
4557226031Sstas
4558226031Sstas/*
4559226128Sstas** CAPI3REF: Deprecated Soft Heap Limit Interface
4560226128Sstas** DEPRECATED
4561226128Sstas**
4562226128Sstas** This is a deprecated version of the [sqlite3_soft_heap_limit64()]
4563226128Sstas** interface.  This routine is provided for historical compatibility
4564226128Sstas** only.  All new applications should use the
4565226128Sstas** [sqlite3_soft_heap_limit64()] interface rather than this one.
4566226128Sstas*/
4567226128SstasSQLITE_API SQLITE_DEPRECATED void sqlite3_soft_heap_limit(int N);
4568226128Sstas
4569226128Sstas
4570226128Sstas/*
4571226031Sstas** CAPI3REF: Extract Metadata About A Column Of A Table
4572226031Sstas**
4573226031Sstas** ^This routine returns metadata about a specific column of a specific
4574226031Sstas** database table accessible using the [database connection] handle
4575226031Sstas** passed as the first function argument.
4576226031Sstas**
4577226031Sstas** ^The column is identified by the second, third and fourth parameters to
4578226031Sstas** this function. ^The second parameter is either the name of the database
4579226031Sstas** (i.e. "main", "temp", or an attached database) containing the specified
4580226031Sstas** table or NULL. ^If it is NULL, then all attached databases are searched
4581226031Sstas** for the table using the same algorithm used by the database engine to
4582226031Sstas** resolve unqualified table references.
4583226031Sstas**
4584226031Sstas** ^The third and fourth parameters to this function are the table and column
4585226031Sstas** name of the desired column, respectively. Neither of these parameters
4586226031Sstas** may be NULL.
4587226031Sstas**
4588226031Sstas** ^Metadata is returned by writing to the memory locations passed as the 5th
4589226031Sstas** and subsequent parameters to this function. ^Any of these arguments may be
4590226031Sstas** NULL, in which case the corresponding element of metadata is omitted.
4591226031Sstas**
4592226031Sstas** ^(<blockquote>
4593226031Sstas** <table border="1">
4594226031Sstas** <tr><th> Parameter <th> Output<br>Type <th>  Description
4595226031Sstas**
4596226031Sstas** <tr><td> 5th <td> const char* <td> Data type
4597226031Sstas** <tr><td> 6th <td> const char* <td> Name of default collation sequence
4598226031Sstas** <tr><td> 7th <td> int         <td> True if column has a NOT NULL constraint
4599226031Sstas** <tr><td> 8th <td> int         <td> True if column is part of the PRIMARY KEY
4600226031Sstas** <tr><td> 9th <td> int         <td> True if column is [AUTOINCREMENT]
4601226031Sstas** </table>
4602226031Sstas** </blockquote>)^
4603226031Sstas**
4604226031Sstas** ^The memory pointed to by the character pointers returned for the
4605226031Sstas** declaration type and collation sequence is valid only until the next
4606226031Sstas** call to any SQLite API function.
4607226031Sstas**
4608226031Sstas** ^If the specified table is actually a view, an [error code] is returned.
4609226031Sstas**
4610226031Sstas** ^If the specified column is "rowid", "oid" or "_rowid_" and an
4611226031Sstas** [INTEGER PRIMARY KEY] column has been explicitly declared, then the output
4612226031Sstas** parameters are set for the explicitly declared column. ^(If there is no
4613226031Sstas** explicitly declared [INTEGER PRIMARY KEY] column, then the output
4614226031Sstas** parameters are set as follows:
4615226031Sstas**
4616226031Sstas** <pre>
4617226031Sstas**     data type: "INTEGER"
4618226031Sstas**     collation sequence: "BINARY"
4619226031Sstas**     not null: 0
4620226031Sstas**     primary key: 1
4621226031Sstas**     auto increment: 0
4622226031Sstas** </pre>)^
4623226031Sstas**
4624226031Sstas** ^(This function may load one or more schemas from database files. If an
4625226031Sstas** error occurs during this process, or if the requested table or column
4626226031Sstas** cannot be found, an [error code] is returned and an error message left
4627226031Sstas** in the [database connection] (to be retrieved using sqlite3_errmsg()).)^
4628226031Sstas**
4629226031Sstas** ^This API is only available if the library was compiled with the
4630226031Sstas** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol defined.
4631226031Sstas*/
4632226031SstasSQLITE_API int sqlite3_table_column_metadata(
4633226031Sstas  sqlite3 *db,                /* Connection handle */
4634226031Sstas  const char *zDbName,        /* Database name or NULL */
4635226031Sstas  const char *zTableName,     /* Table name */
4636226031Sstas  const char *zColumnName,    /* Column name */
4637226031Sstas  char const **pzDataType,    /* OUTPUT: Declared data type */
4638226031Sstas  char const **pzCollSeq,     /* OUTPUT: Collation sequence name */
4639226031Sstas  int *pNotNull,              /* OUTPUT: True if NOT NULL constraint exists */
4640226031Sstas  int *pPrimaryKey,           /* OUTPUT: True if column part of PK */
4641226031Sstas  int *pAutoinc               /* OUTPUT: True if column is auto-increment */
4642226031Sstas);
4643226031Sstas
4644226031Sstas/*
4645226031Sstas** CAPI3REF: Load An Extension
4646226031Sstas**
4647226031Sstas** ^This interface loads an SQLite extension library from the named file.
4648226031Sstas**
4649226031Sstas** ^The sqlite3_load_extension() interface attempts to load an
4650226031Sstas** SQLite extension library contained in the file zFile.
4651226031Sstas**
4652226031Sstas** ^The entry point is zProc.
4653226031Sstas** ^zProc may be 0, in which case the name of the entry point
4654226031Sstas** defaults to "sqlite3_extension_init".
4655226031Sstas** ^The sqlite3_load_extension() interface returns
4656226031Sstas** [SQLITE_OK] on success and [SQLITE_ERROR] if something goes wrong.
4657226031Sstas** ^If an error occurs and pzErrMsg is not 0, then the
4658226031Sstas** [sqlite3_load_extension()] interface shall attempt to
4659226031Sstas** fill *pzErrMsg with error message text stored in memory
4660226031Sstas** obtained from [sqlite3_malloc()]. The calling function
4661226031Sstas** should free this memory by calling [sqlite3_free()].
4662226031Sstas**
4663226031Sstas** ^Extension loading must be enabled using
4664226031Sstas** [sqlite3_enable_load_extension()] prior to calling this API,
4665226031Sstas** otherwise an error will be returned.
4666226031Sstas**
4667226031Sstas** See also the [load_extension() SQL function].
4668226031Sstas*/
4669226031SstasSQLITE_API int sqlite3_load_extension(
4670226031Sstas  sqlite3 *db,          /* Load the extension into this database connection */
4671226031Sstas  const char *zFile,    /* Name of the shared library containing extension */
4672226031Sstas  const char *zProc,    /* Entry point.  Derived from zFile if 0 */
4673226031Sstas  char **pzErrMsg       /* Put error message here if not 0 */
4674226031Sstas);
4675226031Sstas
4676226031Sstas/*
4677226031Sstas** CAPI3REF: Enable Or Disable Extension Loading
4678226031Sstas**
4679226031Sstas** ^So as not to open security holes in older applications that are
4680226031Sstas** unprepared to deal with extension loading, and as a means of disabling
4681226031Sstas** extension loading while evaluating user-entered SQL, the following API
4682226031Sstas** is provided to turn the [sqlite3_load_extension()] mechanism on and off.
4683226031Sstas**
4684226031Sstas** ^Extension loading is off by default. See ticket #1863.
4685226031Sstas** ^Call the sqlite3_enable_load_extension() routine with onoff==1
4686226031Sstas** to turn extension loading on and call it with onoff==0 to turn
4687226031Sstas** it back off again.
4688226031Sstas*/
4689226031SstasSQLITE_API int sqlite3_enable_load_extension(sqlite3 *db, int onoff);
4690226031Sstas
4691226031Sstas/*
4692226128Sstas** CAPI3REF: Automatically Load Statically Linked Extensions
4693226031Sstas**
4694226128Sstas** ^This interface causes the xEntryPoint() function to be invoked for
4695226128Sstas** each new [database connection] that is created.  The idea here is that
4696226128Sstas** xEntryPoint() is the entry point for a statically linked SQLite extension
4697226128Sstas** that is to be automatically loaded into all new database connections.
4698226031Sstas**
4699226128Sstas** ^(Even though the function prototype shows that xEntryPoint() takes
4700226128Sstas** no arguments and returns void, SQLite invokes xEntryPoint() with three
4701226128Sstas** arguments and expects and integer result as if the signature of the
4702226128Sstas** entry point where as follows:
4703226031Sstas**
4704226128Sstas** <blockquote><pre>
4705226128Sstas** &nbsp;  int xEntryPoint(
4706226128Sstas** &nbsp;    sqlite3 *db,
4707226128Sstas** &nbsp;    const char **pzErrMsg,
4708226128Sstas** &nbsp;    const struct sqlite3_api_routines *pThunk
4709226128Sstas** &nbsp;  );
4710226128Sstas** </pre></blockquote>)^
4711226128Sstas**
4712226128Sstas** If the xEntryPoint routine encounters an error, it should make *pzErrMsg
4713226128Sstas** point to an appropriate error message (obtained from [sqlite3_mprintf()])
4714226128Sstas** and return an appropriate [error code].  ^SQLite ensures that *pzErrMsg
4715226128Sstas** is NULL before calling the xEntryPoint().  ^SQLite will invoke
4716226128Sstas** [sqlite3_free()] on *pzErrMsg after xEntryPoint() returns.  ^If any
4717226128Sstas** xEntryPoint() returns an error, the [sqlite3_open()], [sqlite3_open16()],
4718226128Sstas** or [sqlite3_open_v2()] call that provoked the xEntryPoint() will fail.
4719226128Sstas**
4720226128Sstas** ^Calling sqlite3_auto_extension(X) with an entry point X that is already
4721226128Sstas** on the list of automatic extensions is a harmless no-op. ^No entry point
4722226128Sstas** will be called more than once for each database connection that is opened.
4723226128Sstas**
4724226128Sstas** See also: [sqlite3_reset_auto_extension()].
4725226031Sstas*/
4726226031SstasSQLITE_API int sqlite3_auto_extension(void (*xEntryPoint)(void));
4727226031Sstas
4728226031Sstas/*
4729226031Sstas** CAPI3REF: Reset Automatic Extension Loading
4730226031Sstas**
4731226128Sstas** ^This interface disables all automatic extensions previously
4732226128Sstas** registered using [sqlite3_auto_extension()].
4733226031Sstas*/
4734226031SstasSQLITE_API void sqlite3_reset_auto_extension(void);
4735226031Sstas
4736226031Sstas/*
4737226031Sstas** The interface to the virtual-table mechanism is currently considered
4738226031Sstas** to be experimental.  The interface might change in incompatible ways.
4739226031Sstas** If this is a problem for you, do not use the interface at this time.
4740226031Sstas**
4741226031Sstas** When the virtual-table mechanism stabilizes, we will declare the
4742226031Sstas** interface fixed, support it indefinitely, and remove this comment.
4743226031Sstas*/
4744226031Sstas
4745226031Sstas/*
4746226031Sstas** Structures used by the virtual table interface
4747226031Sstas*/
4748226031Sstastypedef struct sqlite3_vtab sqlite3_vtab;
4749226031Sstastypedef struct sqlite3_index_info sqlite3_index_info;
4750226031Sstastypedef struct sqlite3_vtab_cursor sqlite3_vtab_cursor;
4751226031Sstastypedef struct sqlite3_module sqlite3_module;
4752226031Sstas
4753226031Sstas/*
4754226031Sstas** CAPI3REF: Virtual Table Object
4755226031Sstas** KEYWORDS: sqlite3_module {virtual table module}
4756226031Sstas**
4757226128Sstas** This structure, sometimes called a "virtual table module",
4758226128Sstas** defines the implementation of a [virtual tables].
4759226031Sstas** This structure consists mostly of methods for the module.
4760226031Sstas**
4761226031Sstas** ^A virtual table module is created by filling in a persistent
4762226031Sstas** instance of this structure and passing a pointer to that instance
4763226031Sstas** to [sqlite3_create_module()] or [sqlite3_create_module_v2()].
4764226031Sstas** ^The registration remains valid until it is replaced by a different
4765226031Sstas** module or until the [database connection] closes.  The content
4766226031Sstas** of this structure must not change while it is registered with
4767226031Sstas** any database connection.
4768226031Sstas*/
4769226031Sstasstruct sqlite3_module {
4770226031Sstas  int iVersion;
4771226031Sstas  int (*xCreate)(sqlite3*, void *pAux,
4772226031Sstas               int argc, const char *const*argv,
4773226031Sstas               sqlite3_vtab **ppVTab, char**);
4774226031Sstas  int (*xConnect)(sqlite3*, void *pAux,
4775226031Sstas               int argc, const char *const*argv,
4776226031Sstas               sqlite3_vtab **ppVTab, char**);
4777226031Sstas  int (*xBestIndex)(sqlite3_vtab *pVTab, sqlite3_index_info*);
4778226031Sstas  int (*xDisconnect)(sqlite3_vtab *pVTab);
4779226031Sstas  int (*xDestroy)(sqlite3_vtab *pVTab);
4780226031Sstas  int (*xOpen)(sqlite3_vtab *pVTab, sqlite3_vtab_cursor **ppCursor);
4781226031Sstas  int (*xClose)(sqlite3_vtab_cursor*);
4782226031Sstas  int (*xFilter)(sqlite3_vtab_cursor*, int idxNum, const char *idxStr,
4783226031Sstas                int argc, sqlite3_value **argv);
4784226031Sstas  int (*xNext)(sqlite3_vtab_cursor*);
4785226031Sstas  int (*xEof)(sqlite3_vtab_cursor*);
4786226031Sstas  int (*xColumn)(sqlite3_vtab_cursor*, sqlite3_context*, int);
4787226031Sstas  int (*xRowid)(sqlite3_vtab_cursor*, sqlite3_int64 *pRowid);
4788226031Sstas  int (*xUpdate)(sqlite3_vtab *, int, sqlite3_value **, sqlite3_int64 *);
4789226031Sstas  int (*xBegin)(sqlite3_vtab *pVTab);
4790226031Sstas  int (*xSync)(sqlite3_vtab *pVTab);
4791226031Sstas  int (*xCommit)(sqlite3_vtab *pVTab);
4792226031Sstas  int (*xRollback)(sqlite3_vtab *pVTab);
4793226031Sstas  int (*xFindFunction)(sqlite3_vtab *pVtab, int nArg, const char *zName,
4794226031Sstas                       void (**pxFunc)(sqlite3_context*,int,sqlite3_value**),
4795226031Sstas                       void **ppArg);
4796226031Sstas  int (*xRename)(sqlite3_vtab *pVtab, const char *zNew);
4797226128Sstas  /* The methods above are in version 1 of the sqlite_module object. Those
4798226128Sstas  ** below are for version 2 and greater. */
4799226128Sstas  int (*xSavepoint)(sqlite3_vtab *pVTab, int);
4800226128Sstas  int (*xRelease)(sqlite3_vtab *pVTab, int);
4801226128Sstas  int (*xRollbackTo)(sqlite3_vtab *pVTab, int);
4802226031Sstas};
4803226031Sstas
4804226031Sstas/*
4805226031Sstas** CAPI3REF: Virtual Table Indexing Information
4806226031Sstas** KEYWORDS: sqlite3_index_info
4807226031Sstas**
4808226128Sstas** The sqlite3_index_info structure and its substructures is used as part
4809226128Sstas** of the [virtual table] interface to
4810226031Sstas** pass information into and receive the reply from the [xBestIndex]
4811226031Sstas** method of a [virtual table module].  The fields under **Inputs** are the
4812226031Sstas** inputs to xBestIndex and are read-only.  xBestIndex inserts its
4813226031Sstas** results into the **Outputs** fields.
4814226031Sstas**
4815226031Sstas** ^(The aConstraint[] array records WHERE clause constraints of the form:
4816226031Sstas**
4817226128Sstas** <blockquote>column OP expr</blockquote>
4818226031Sstas**
4819226031Sstas** where OP is =, &lt;, &lt;=, &gt;, or &gt;=.)^  ^(The particular operator is
4820226128Sstas** stored in aConstraint[].op using one of the
4821226128Sstas** [SQLITE_INDEX_CONSTRAINT_EQ | SQLITE_INDEX_CONSTRAINT_ values].)^
4822226128Sstas** ^(The index of the column is stored in
4823226031Sstas** aConstraint[].iColumn.)^  ^(aConstraint[].usable is TRUE if the
4824226031Sstas** expr on the right-hand side can be evaluated (and thus the constraint
4825226031Sstas** is usable) and false if it cannot.)^
4826226031Sstas**
4827226031Sstas** ^The optimizer automatically inverts terms of the form "expr OP column"
4828226031Sstas** and makes other simplifications to the WHERE clause in an attempt to
4829226031Sstas** get as many WHERE clause terms into the form shown above as possible.
4830226031Sstas** ^The aConstraint[] array only reports WHERE clause terms that are
4831226031Sstas** relevant to the particular virtual table being queried.
4832226031Sstas**
4833226031Sstas** ^Information about the ORDER BY clause is stored in aOrderBy[].
4834226031Sstas** ^Each term of aOrderBy records a column of the ORDER BY clause.
4835226031Sstas**
4836226031Sstas** The [xBestIndex] method must fill aConstraintUsage[] with information
4837226031Sstas** about what parameters to pass to xFilter.  ^If argvIndex>0 then
4838226031Sstas** the right-hand side of the corresponding aConstraint[] is evaluated
4839226031Sstas** and becomes the argvIndex-th entry in argv.  ^(If aConstraintUsage[].omit
4840226031Sstas** is true, then the constraint is assumed to be fully handled by the
4841226031Sstas** virtual table and is not checked again by SQLite.)^
4842226031Sstas**
4843226031Sstas** ^The idxNum and idxPtr values are recorded and passed into the
4844226031Sstas** [xFilter] method.
4845226031Sstas** ^[sqlite3_free()] is used to free idxPtr if and only if
4846226031Sstas** needToFreeIdxPtr is true.
4847226031Sstas**
4848226031Sstas** ^The orderByConsumed means that output from [xFilter]/[xNext] will occur in
4849226031Sstas** the correct order to satisfy the ORDER BY clause so that no separate
4850226031Sstas** sorting step is required.
4851226031Sstas**
4852226031Sstas** ^The estimatedCost value is an estimate of the cost of doing the
4853226031Sstas** particular lookup.  A full scan of a table with N entries should have
4854226031Sstas** a cost of N.  A binary search of a table of N entries should have a
4855226031Sstas** cost of approximately log(N).
4856226031Sstas*/
4857226031Sstasstruct sqlite3_index_info {
4858226031Sstas  /* Inputs */
4859226031Sstas  int nConstraint;           /* Number of entries in aConstraint */
4860226031Sstas  struct sqlite3_index_constraint {
4861226031Sstas     int iColumn;              /* Column on left-hand side of constraint */
4862226031Sstas     unsigned char op;         /* Constraint operator */
4863226031Sstas     unsigned char usable;     /* True if this constraint is usable */
4864226031Sstas     int iTermOffset;          /* Used internally - xBestIndex should ignore */
4865226031Sstas  } *aConstraint;            /* Table of WHERE clause constraints */
4866226031Sstas  int nOrderBy;              /* Number of terms in the ORDER BY clause */
4867226031Sstas  struct sqlite3_index_orderby {
4868226031Sstas     int iColumn;              /* Column number */
4869226031Sstas     unsigned char desc;       /* True for DESC.  False for ASC. */
4870226031Sstas  } *aOrderBy;               /* The ORDER BY clause */
4871226031Sstas  /* Outputs */
4872226031Sstas  struct sqlite3_index_constraint_usage {
4873226031Sstas    int argvIndex;           /* if >0, constraint is part of argv to xFilter */
4874226031Sstas    unsigned char omit;      /* Do not code a test for this constraint */
4875226031Sstas  } *aConstraintUsage;
4876226031Sstas  int idxNum;                /* Number used to identify the index */
4877226031Sstas  char *idxStr;              /* String, possibly obtained from sqlite3_malloc */
4878226031Sstas  int needToFreeIdxStr;      /* Free idxStr using sqlite3_free() if true */
4879226031Sstas  int orderByConsumed;       /* True if output is already ordered */
4880226031Sstas  double estimatedCost;      /* Estimated cost of using this index */
4881226031Sstas};
4882226128Sstas
4883226128Sstas/*
4884226128Sstas** CAPI3REF: Virtual Table Constraint Operator Codes
4885226128Sstas**
4886226128Sstas** These macros defined the allowed values for the
4887226128Sstas** [sqlite3_index_info].aConstraint[].op field.  Each value represents
4888226128Sstas** an operator that is part of a constraint term in the wHERE clause of
4889226128Sstas** a query that uses a [virtual table].
4890226128Sstas*/
4891226031Sstas#define SQLITE_INDEX_CONSTRAINT_EQ    2
4892226031Sstas#define SQLITE_INDEX_CONSTRAINT_GT    4
4893226031Sstas#define SQLITE_INDEX_CONSTRAINT_LE    8
4894226031Sstas#define SQLITE_INDEX_CONSTRAINT_LT    16
4895226031Sstas#define SQLITE_INDEX_CONSTRAINT_GE    32
4896226031Sstas#define SQLITE_INDEX_CONSTRAINT_MATCH 64
4897226031Sstas
4898226031Sstas/*
4899226031Sstas** CAPI3REF: Register A Virtual Table Implementation
4900226031Sstas**
4901226031Sstas** ^These routines are used to register a new [virtual table module] name.
4902226031Sstas** ^Module names must be registered before
4903226031Sstas** creating a new [virtual table] using the module and before using a
4904226031Sstas** preexisting [virtual table] for the module.
4905226031Sstas**
4906226031Sstas** ^The module name is registered on the [database connection] specified
4907226128Sstas** by the first parameter.  ^The name of the module is given by the
4908226031Sstas** second parameter.  ^The third parameter is a pointer to
4909226031Sstas** the implementation of the [virtual table module].   ^The fourth
4910226031Sstas** parameter is an arbitrary client data pointer that is passed through
4911226031Sstas** into the [xCreate] and [xConnect] methods of the virtual table module
4912226031Sstas** when a new virtual table is be being created or reinitialized.
4913226031Sstas**
4914226031Sstas** ^The sqlite3_create_module_v2() interface has a fifth parameter which
4915226031Sstas** is a pointer to a destructor for the pClientData.  ^SQLite will
4916226031Sstas** invoke the destructor function (if it is not NULL) when SQLite
4917226128Sstas** no longer needs the pClientData pointer.  ^The destructor will also
4918226128Sstas** be invoked if the call to sqlite3_create_module_v2() fails.
4919226128Sstas** ^The sqlite3_create_module()
4920226031Sstas** interface is equivalent to sqlite3_create_module_v2() with a NULL
4921226031Sstas** destructor.
4922226031Sstas*/
4923226128SstasSQLITE_API int sqlite3_create_module(
4924226031Sstas  sqlite3 *db,               /* SQLite connection to register module with */
4925226031Sstas  const char *zName,         /* Name of the module */
4926226031Sstas  const sqlite3_module *p,   /* Methods for the module */
4927226031Sstas  void *pClientData          /* Client data for xCreate/xConnect */
4928226031Sstas);
4929226128SstasSQLITE_API int sqlite3_create_module_v2(
4930226031Sstas  sqlite3 *db,               /* SQLite connection to register module with */
4931226031Sstas  const char *zName,         /* Name of the module */
4932226031Sstas  const sqlite3_module *p,   /* Methods for the module */
4933226031Sstas  void *pClientData,         /* Client data for xCreate/xConnect */
4934226031Sstas  void(*xDestroy)(void*)     /* Module destructor function */
4935226031Sstas);
4936226031Sstas
4937226031Sstas/*
4938226031Sstas** CAPI3REF: Virtual Table Instance Object
4939226031Sstas** KEYWORDS: sqlite3_vtab
4940226031Sstas**
4941226031Sstas** Every [virtual table module] implementation uses a subclass
4942226031Sstas** of this object to describe a particular instance
4943226031Sstas** of the [virtual table].  Each subclass will
4944226031Sstas** be tailored to the specific needs of the module implementation.
4945226031Sstas** The purpose of this superclass is to define certain fields that are
4946226031Sstas** common to all module implementations.
4947226031Sstas**
4948226031Sstas** ^Virtual tables methods can set an error message by assigning a
4949226031Sstas** string obtained from [sqlite3_mprintf()] to zErrMsg.  The method should
4950226031Sstas** take care that any prior string is freed by a call to [sqlite3_free()]
4951226031Sstas** prior to assigning a new string to zErrMsg.  ^After the error message
4952226031Sstas** is delivered up to the client application, the string will be automatically
4953226031Sstas** freed by sqlite3_free() and the zErrMsg field will be zeroed.
4954226031Sstas*/
4955226031Sstasstruct sqlite3_vtab {
4956226031Sstas  const sqlite3_module *pModule;  /* The module for this virtual table */
4957226031Sstas  int nRef;                       /* NO LONGER USED */
4958226031Sstas  char *zErrMsg;                  /* Error message from sqlite3_mprintf() */
4959226031Sstas  /* Virtual table implementations will typically add additional fields */
4960226031Sstas};
4961226031Sstas
4962226031Sstas/*
4963226031Sstas** CAPI3REF: Virtual Table Cursor Object
4964226031Sstas** KEYWORDS: sqlite3_vtab_cursor {virtual table cursor}
4965226031Sstas**
4966226031Sstas** Every [virtual table module] implementation uses a subclass of the
4967226031Sstas** following structure to describe cursors that point into the
4968226031Sstas** [virtual table] and are used
4969226031Sstas** to loop through the virtual table.  Cursors are created using the
4970226031Sstas** [sqlite3_module.xOpen | xOpen] method of the module and are destroyed
4971226031Sstas** by the [sqlite3_module.xClose | xClose] method.  Cursors are used
4972226031Sstas** by the [xFilter], [xNext], [xEof], [xColumn], and [xRowid] methods
4973226031Sstas** of the module.  Each module implementation will define
4974226031Sstas** the content of a cursor structure to suit its own needs.
4975226031Sstas**
4976226031Sstas** This superclass exists in order to define fields of the cursor that
4977226031Sstas** are common to all implementations.
4978226031Sstas*/
4979226031Sstasstruct sqlite3_vtab_cursor {
4980226031Sstas  sqlite3_vtab *pVtab;      /* Virtual table of this cursor */
4981226031Sstas  /* Virtual table implementations will typically add additional fields */
4982226031Sstas};
4983226031Sstas
4984226031Sstas/*
4985226031Sstas** CAPI3REF: Declare The Schema Of A Virtual Table
4986226031Sstas**
4987226031Sstas** ^The [xCreate] and [xConnect] methods of a
4988226031Sstas** [virtual table module] call this interface
4989226031Sstas** to declare the format (the names and datatypes of the columns) of
4990226031Sstas** the virtual tables they implement.
4991226031Sstas*/
4992226128SstasSQLITE_API int sqlite3_declare_vtab(sqlite3*, const char *zSQL);
4993226031Sstas
4994226031Sstas/*
4995226031Sstas** CAPI3REF: Overload A Function For A Virtual Table
4996226031Sstas**
4997226031Sstas** ^(Virtual tables can provide alternative implementations of functions
4998226128Sstas** using the [xFindFunction] method of the [virtual table module].
4999226031Sstas** But global versions of those functions
5000226031Sstas** must exist in order to be overloaded.)^
5001226031Sstas**
5002226031Sstas** ^(This API makes sure a global version of a function with a particular
5003226031Sstas** name and number of parameters exists.  If no such function exists
5004226031Sstas** before this API is called, a new function is created.)^  ^The implementation
5005226031Sstas** of the new function always causes an exception to be thrown.  So
5006226031Sstas** the new function is not good for anything by itself.  Its only
5007226031Sstas** purpose is to be a placeholder function that can be overloaded
5008226031Sstas** by a [virtual table].
5009226031Sstas*/
5010226128SstasSQLITE_API int sqlite3_overload_function(sqlite3*, const char *zFuncName, int nArg);
5011226031Sstas
5012226031Sstas/*
5013226031Sstas** The interface to the virtual-table mechanism defined above (back up
5014226031Sstas** to a comment remarkably similar to this one) is currently considered
5015226031Sstas** to be experimental.  The interface might change in incompatible ways.
5016226031Sstas** If this is a problem for you, do not use the interface at this time.
5017226031Sstas**
5018226031Sstas** When the virtual-table mechanism stabilizes, we will declare the
5019226031Sstas** interface fixed, support it indefinitely, and remove this comment.
5020226031Sstas*/
5021226031Sstas
5022226031Sstas/*
5023226031Sstas** CAPI3REF: A Handle To An Open BLOB
5024226031Sstas** KEYWORDS: {BLOB handle} {BLOB handles}
5025226031Sstas**
5026226031Sstas** An instance of this object represents an open BLOB on which
5027226031Sstas** [sqlite3_blob_open | incremental BLOB I/O] can be performed.
5028226031Sstas** ^Objects of this type are created by [sqlite3_blob_open()]
5029226031Sstas** and destroyed by [sqlite3_blob_close()].
5030226031Sstas** ^The [sqlite3_blob_read()] and [sqlite3_blob_write()] interfaces
5031226031Sstas** can be used to read or write small subsections of the BLOB.
5032226031Sstas** ^The [sqlite3_blob_bytes()] interface returns the size of the BLOB in bytes.
5033226031Sstas*/
5034226031Sstastypedef struct sqlite3_blob sqlite3_blob;
5035226031Sstas
5036226031Sstas/*
5037226031Sstas** CAPI3REF: Open A BLOB For Incremental I/O
5038226031Sstas**
5039226031Sstas** ^(This interfaces opens a [BLOB handle | handle] to the BLOB located
5040226031Sstas** in row iRow, column zColumn, table zTable in database zDb;
5041226031Sstas** in other words, the same BLOB that would be selected by:
5042226031Sstas**
5043226031Sstas** <pre>
5044226031Sstas**     SELECT zColumn FROM zDb.zTable WHERE [rowid] = iRow;
5045226031Sstas** </pre>)^
5046226031Sstas**
5047226031Sstas** ^If the flags parameter is non-zero, then the BLOB is opened for read
5048226031Sstas** and write access. ^If it is zero, the BLOB is opened for read access.
5049226128Sstas** ^It is not possible to open a column that is part of an index or primary
5050226128Sstas** key for writing. ^If [foreign key constraints] are enabled, it is
5051226031Sstas** not possible to open a column that is part of a [child key] for writing.
5052226031Sstas**
5053226031Sstas** ^Note that the database name is not the filename that contains
5054226031Sstas** the database but rather the symbolic name of the database that
5055226031Sstas** appears after the AS keyword when the database is connected using [ATTACH].
5056226031Sstas** ^For the main database file, the database name is "main".
5057226031Sstas** ^For TEMP tables, the database name is "temp".
5058226031Sstas**
5059226031Sstas** ^(On success, [SQLITE_OK] is returned and the new [BLOB handle] is written
5060226031Sstas** to *ppBlob. Otherwise an [error code] is returned and *ppBlob is set
5061226031Sstas** to be a null pointer.)^
5062226031Sstas** ^This function sets the [database connection] error code and message
5063226031Sstas** accessible via [sqlite3_errcode()] and [sqlite3_errmsg()] and related
5064226031Sstas** functions. ^Note that the *ppBlob variable is always initialized in a
5065226031Sstas** way that makes it safe to invoke [sqlite3_blob_close()] on *ppBlob
5066226031Sstas** regardless of the success or failure of this routine.
5067226031Sstas**
5068226031Sstas** ^(If the row that a BLOB handle points to is modified by an
5069226031Sstas** [UPDATE], [DELETE], or by [ON CONFLICT] side-effects
5070226031Sstas** then the BLOB handle is marked as "expired".
5071226031Sstas** This is true if any column of the row is changed, even a column
5072226031Sstas** other than the one the BLOB handle is open on.)^
5073226031Sstas** ^Calls to [sqlite3_blob_read()] and [sqlite3_blob_write()] for
5074226128Sstas** an expired BLOB handle fail with a return code of [SQLITE_ABORT].
5075226031Sstas** ^(Changes written into a BLOB prior to the BLOB expiring are not
5076226031Sstas** rolled back by the expiration of the BLOB.  Such changes will eventually
5077226031Sstas** commit if the transaction continues to completion.)^
5078226031Sstas**
5079226031Sstas** ^Use the [sqlite3_blob_bytes()] interface to determine the size of
5080226031Sstas** the opened blob.  ^The size of a blob may not be changed by this
5081226031Sstas** interface.  Use the [UPDATE] SQL command to change the size of a
5082226031Sstas** blob.
5083226031Sstas**
5084226031Sstas** ^The [sqlite3_bind_zeroblob()] and [sqlite3_result_zeroblob()] interfaces
5085226031Sstas** and the built-in [zeroblob] SQL function can be used, if desired,
5086226031Sstas** to create an empty, zero-filled blob in which to read or write using
5087226031Sstas** this interface.
5088226031Sstas**
5089226031Sstas** To avoid a resource leak, every open [BLOB handle] should eventually
5090226031Sstas** be released by a call to [sqlite3_blob_close()].
5091226031Sstas*/
5092226031SstasSQLITE_API int sqlite3_blob_open(
5093226031Sstas  sqlite3*,
5094226031Sstas  const char *zDb,
5095226031Sstas  const char *zTable,
5096226031Sstas  const char *zColumn,
5097226031Sstas  sqlite3_int64 iRow,
5098226031Sstas  int flags,
5099226031Sstas  sqlite3_blob **ppBlob
5100226031Sstas);
5101226031Sstas
5102226031Sstas/*
5103226128Sstas** CAPI3REF: Move a BLOB Handle to a New Row
5104226128Sstas**
5105226128Sstas** ^This function is used to move an existing blob handle so that it points
5106226128Sstas** to a different row of the same database table. ^The new row is identified
5107226128Sstas** by the rowid value passed as the second argument. Only the row can be
5108226128Sstas** changed. ^The database, table and column on which the blob handle is open
5109226128Sstas** remain the same. Moving an existing blob handle to a new row can be
5110226128Sstas** faster than closing the existing handle and opening a new one.
5111226128Sstas**
5112226128Sstas** ^(The new row must meet the same criteria as for [sqlite3_blob_open()] -
5113226128Sstas** it must exist and there must be either a blob or text value stored in
5114226128Sstas** the nominated column.)^ ^If the new row is not present in the table, or if
5115226128Sstas** it does not contain a blob or text value, or if another error occurs, an
5116226128Sstas** SQLite error code is returned and the blob handle is considered aborted.
5117226128Sstas** ^All subsequent calls to [sqlite3_blob_read()], [sqlite3_blob_write()] or
5118226128Sstas** [sqlite3_blob_reopen()] on an aborted blob handle immediately return
5119226128Sstas** SQLITE_ABORT. ^Calling [sqlite3_blob_bytes()] on an aborted blob handle
5120226128Sstas** always returns zero.
5121226128Sstas**
5122226128Sstas** ^This function sets the database handle error code and message.
5123226128Sstas*/
5124226128SstasSQLITE_API SQLITE_EXPERIMENTAL int sqlite3_blob_reopen(sqlite3_blob *, sqlite3_int64);
5125226128Sstas
5126226128Sstas/*
5127226031Sstas** CAPI3REF: Close A BLOB Handle
5128226031Sstas**
5129226031Sstas** ^Closes an open [BLOB handle].
5130226031Sstas**
5131226031Sstas** ^Closing a BLOB shall cause the current transaction to commit
5132226031Sstas** if there are no other BLOBs, no pending prepared statements, and the
5133226031Sstas** database connection is in [autocommit mode].
5134226031Sstas** ^If any writes were made to the BLOB, they might be held in cache
5135226031Sstas** until the close operation if they will fit.
5136226031Sstas**
5137226031Sstas** ^(Closing the BLOB often forces the changes
5138226031Sstas** out to disk and so if any I/O errors occur, they will likely occur
5139226031Sstas** at the time when the BLOB is closed.  Any errors that occur during
5140226031Sstas** closing are reported as a non-zero return value.)^
5141226031Sstas**
5142226031Sstas** ^(The BLOB is closed unconditionally.  Even if this routine returns
5143226031Sstas** an error code, the BLOB is still closed.)^
5144226031Sstas**
5145226031Sstas** ^Calling this routine with a null pointer (such as would be returned
5146226031Sstas** by a failed call to [sqlite3_blob_open()]) is a harmless no-op.
5147226031Sstas*/
5148226031SstasSQLITE_API int sqlite3_blob_close(sqlite3_blob *);
5149226031Sstas
5150226031Sstas/*
5151226031Sstas** CAPI3REF: Return The Size Of An Open BLOB
5152226031Sstas**
5153226128Sstas** ^Returns the size in bytes of the BLOB accessible via the
5154226031Sstas** successfully opened [BLOB handle] in its only argument.  ^The
5155226031Sstas** incremental blob I/O routines can only read or overwriting existing
5156226031Sstas** blob content; they cannot change the size of a blob.
5157226031Sstas**
5158226031Sstas** This routine only works on a [BLOB handle] which has been created
5159226031Sstas** by a prior successful call to [sqlite3_blob_open()] and which has not
5160226031Sstas** been closed by [sqlite3_blob_close()].  Passing any other pointer in
5161226031Sstas** to this routine results in undefined and probably undesirable behavior.
5162226031Sstas*/
5163226031SstasSQLITE_API int sqlite3_blob_bytes(sqlite3_blob *);
5164226031Sstas
5165226031Sstas/*
5166226031Sstas** CAPI3REF: Read Data From A BLOB Incrementally
5167226031Sstas**
5168226031Sstas** ^(This function is used to read data from an open [BLOB handle] into a
5169226031Sstas** caller-supplied buffer. N bytes of data are copied into buffer Z
5170226031Sstas** from the open BLOB, starting at offset iOffset.)^
5171226031Sstas**
5172226031Sstas** ^If offset iOffset is less than N bytes from the end of the BLOB,
5173226031Sstas** [SQLITE_ERROR] is returned and no data is read.  ^If N or iOffset is
5174226031Sstas** less than zero, [SQLITE_ERROR] is returned and no data is read.
5175226031Sstas** ^The size of the blob (and hence the maximum value of N+iOffset)
5176226031Sstas** can be determined using the [sqlite3_blob_bytes()] interface.
5177226031Sstas**
5178226031Sstas** ^An attempt to read from an expired [BLOB handle] fails with an
5179226031Sstas** error code of [SQLITE_ABORT].
5180226031Sstas**
5181226031Sstas** ^(On success, sqlite3_blob_read() returns SQLITE_OK.
5182226031Sstas** Otherwise, an [error code] or an [extended error code] is returned.)^
5183226031Sstas**
5184226031Sstas** This routine only works on a [BLOB handle] which has been created
5185226031Sstas** by a prior successful call to [sqlite3_blob_open()] and which has not
5186226031Sstas** been closed by [sqlite3_blob_close()].  Passing any other pointer in
5187226031Sstas** to this routine results in undefined and probably undesirable behavior.
5188226031Sstas**
5189226031Sstas** See also: [sqlite3_blob_write()].
5190226031Sstas*/
5191226031SstasSQLITE_API int sqlite3_blob_read(sqlite3_blob *, void *Z, int N, int iOffset);
5192226031Sstas
5193226031Sstas/*
5194226031Sstas** CAPI3REF: Write Data Into A BLOB Incrementally
5195226031Sstas**
5196226031Sstas** ^This function is used to write data into an open [BLOB handle] from a
5197226031Sstas** caller-supplied buffer. ^N bytes of data are copied from the buffer Z
5198226031Sstas** into the open BLOB, starting at offset iOffset.
5199226031Sstas**
5200226031Sstas** ^If the [BLOB handle] passed as the first argument was not opened for
5201226031Sstas** writing (the flags parameter to [sqlite3_blob_open()] was zero),
5202226031Sstas** this function returns [SQLITE_READONLY].
5203226031Sstas**
5204226031Sstas** ^This function may only modify the contents of the BLOB; it is
5205226031Sstas** not possible to increase the size of a BLOB using this API.
5206226031Sstas** ^If offset iOffset is less than N bytes from the end of the BLOB,
5207226031Sstas** [SQLITE_ERROR] is returned and no data is written.  ^If N is
5208226031Sstas** less than zero [SQLITE_ERROR] is returned and no data is written.
5209226031Sstas** The size of the BLOB (and hence the maximum value of N+iOffset)
5210226031Sstas** can be determined using the [sqlite3_blob_bytes()] interface.
5211226031Sstas**
5212226031Sstas** ^An attempt to write to an expired [BLOB handle] fails with an
5213226031Sstas** error code of [SQLITE_ABORT].  ^Writes to the BLOB that occurred
5214226031Sstas** before the [BLOB handle] expired are not rolled back by the
5215226031Sstas** expiration of the handle, though of course those changes might
5216226031Sstas** have been overwritten by the statement that expired the BLOB handle
5217226031Sstas** or by other independent statements.
5218226031Sstas**
5219226031Sstas** ^(On success, sqlite3_blob_write() returns SQLITE_OK.
5220226031Sstas** Otherwise, an  [error code] or an [extended error code] is returned.)^
5221226031Sstas**
5222226031Sstas** This routine only works on a [BLOB handle] which has been created
5223226031Sstas** by a prior successful call to [sqlite3_blob_open()] and which has not
5224226031Sstas** been closed by [sqlite3_blob_close()].  Passing any other pointer in
5225226031Sstas** to this routine results in undefined and probably undesirable behavior.
5226226031Sstas**
5227226031Sstas** See also: [sqlite3_blob_read()].
5228226031Sstas*/
5229226031SstasSQLITE_API int sqlite3_blob_write(sqlite3_blob *, const void *z, int n, int iOffset);
5230226031Sstas
5231226031Sstas/*
5232226031Sstas** CAPI3REF: Virtual File System Objects
5233226031Sstas**
5234226031Sstas** A virtual filesystem (VFS) is an [sqlite3_vfs] object
5235226031Sstas** that SQLite uses to interact
5236226031Sstas** with the underlying operating system.  Most SQLite builds come with a
5237226031Sstas** single default VFS that is appropriate for the host computer.
5238226031Sstas** New VFSes can be registered and existing VFSes can be unregistered.
5239226031Sstas** The following interfaces are provided.
5240226031Sstas**
5241226031Sstas** ^The sqlite3_vfs_find() interface returns a pointer to a VFS given its name.
5242226031Sstas** ^Names are case sensitive.
5243226031Sstas** ^Names are zero-terminated UTF-8 strings.
5244226031Sstas** ^If there is no match, a NULL pointer is returned.
5245226031Sstas** ^If zVfsName is NULL then the default VFS is returned.
5246226031Sstas**
5247226031Sstas** ^New VFSes are registered with sqlite3_vfs_register().
5248226031Sstas** ^Each new VFS becomes the default VFS if the makeDflt flag is set.
5249226031Sstas** ^The same VFS can be registered multiple times without injury.
5250226031Sstas** ^To make an existing VFS into the default VFS, register it again
5251226031Sstas** with the makeDflt flag set.  If two different VFSes with the
5252226031Sstas** same name are registered, the behavior is undefined.  If a
5253226031Sstas** VFS is registered with a name that is NULL or an empty string,
5254226031Sstas** then the behavior is undefined.
5255226031Sstas**
5256226031Sstas** ^Unregister a VFS with the sqlite3_vfs_unregister() interface.
5257226031Sstas** ^(If the default VFS is unregistered, another VFS is chosen as
5258226031Sstas** the default.  The choice for the new VFS is arbitrary.)^
5259226031Sstas*/
5260226031SstasSQLITE_API sqlite3_vfs *sqlite3_vfs_find(const char *zVfsName);
5261226031SstasSQLITE_API int sqlite3_vfs_register(sqlite3_vfs*, int makeDflt);
5262226031SstasSQLITE_API int sqlite3_vfs_unregister(sqlite3_vfs*);
5263226031Sstas
5264226031Sstas/*
5265226031Sstas** CAPI3REF: Mutexes
5266226031Sstas**
5267226031Sstas** The SQLite core uses these routines for thread
5268226031Sstas** synchronization. Though they are intended for internal
5269226031Sstas** use by SQLite, code that links against SQLite is
5270226031Sstas** permitted to use any of these routines.
5271226031Sstas**
5272226031Sstas** The SQLite source code contains multiple implementations
5273226031Sstas** of these mutex routines.  An appropriate implementation
5274226031Sstas** is selected automatically at compile-time.  ^(The following
5275226031Sstas** implementations are available in the SQLite core:
5276226031Sstas**
5277226031Sstas** <ul>
5278226031Sstas** <li>   SQLITE_MUTEX_OS2
5279226031Sstas** <li>   SQLITE_MUTEX_PTHREAD
5280226031Sstas** <li>   SQLITE_MUTEX_W32
5281226031Sstas** <li>   SQLITE_MUTEX_NOOP
5282226031Sstas** </ul>)^
5283226031Sstas**
5284226031Sstas** ^The SQLITE_MUTEX_NOOP implementation is a set of routines
5285226031Sstas** that does no real locking and is appropriate for use in
5286226031Sstas** a single-threaded application.  ^The SQLITE_MUTEX_OS2,
5287226031Sstas** SQLITE_MUTEX_PTHREAD, and SQLITE_MUTEX_W32 implementations
5288226031Sstas** are appropriate for use on OS/2, Unix, and Windows.
5289226031Sstas**
5290226031Sstas** ^(If SQLite is compiled with the SQLITE_MUTEX_APPDEF preprocessor
5291226031Sstas** macro defined (with "-DSQLITE_MUTEX_APPDEF=1"), then no mutex
5292226031Sstas** implementation is included with the library. In this case the
5293226031Sstas** application must supply a custom mutex implementation using the
5294226031Sstas** [SQLITE_CONFIG_MUTEX] option of the sqlite3_config() function
5295226031Sstas** before calling sqlite3_initialize() or any other public sqlite3_
5296226031Sstas** function that calls sqlite3_initialize().)^
5297226031Sstas**
5298226031Sstas** ^The sqlite3_mutex_alloc() routine allocates a new
5299226031Sstas** mutex and returns a pointer to it. ^If it returns NULL
5300226031Sstas** that means that a mutex could not be allocated.  ^SQLite
5301226031Sstas** will unwind its stack and return an error.  ^(The argument
5302226031Sstas** to sqlite3_mutex_alloc() is one of these integer constants:
5303226031Sstas**
5304226031Sstas** <ul>
5305226031Sstas** <li>  SQLITE_MUTEX_FAST
5306226031Sstas** <li>  SQLITE_MUTEX_RECURSIVE
5307226031Sstas** <li>  SQLITE_MUTEX_STATIC_MASTER
5308226031Sstas** <li>  SQLITE_MUTEX_STATIC_MEM
5309226031Sstas** <li>  SQLITE_MUTEX_STATIC_MEM2
5310226031Sstas** <li>  SQLITE_MUTEX_STATIC_PRNG
5311226031Sstas** <li>  SQLITE_MUTEX_STATIC_LRU
5312226031Sstas** <li>  SQLITE_MUTEX_STATIC_LRU2
5313226031Sstas** </ul>)^
5314226031Sstas**
5315226031Sstas** ^The first two constants (SQLITE_MUTEX_FAST and SQLITE_MUTEX_RECURSIVE)
5316226031Sstas** cause sqlite3_mutex_alloc() to create
5317226031Sstas** a new mutex.  ^The new mutex is recursive when SQLITE_MUTEX_RECURSIVE
5318226031Sstas** is used but not necessarily so when SQLITE_MUTEX_FAST is used.
5319226031Sstas** The mutex implementation does not need to make a distinction
5320226031Sstas** between SQLITE_MUTEX_RECURSIVE and SQLITE_MUTEX_FAST if it does
5321226031Sstas** not want to.  ^SQLite will only request a recursive mutex in
5322226031Sstas** cases where it really needs one.  ^If a faster non-recursive mutex
5323226031Sstas** implementation is available on the host platform, the mutex subsystem
5324226031Sstas** might return such a mutex in response to SQLITE_MUTEX_FAST.
5325226031Sstas**
5326226031Sstas** ^The other allowed parameters to sqlite3_mutex_alloc() (anything other
5327226031Sstas** than SQLITE_MUTEX_FAST and SQLITE_MUTEX_RECURSIVE) each return
5328226031Sstas** a pointer to a static preexisting mutex.  ^Six static mutexes are
5329226031Sstas** used by the current version of SQLite.  Future versions of SQLite
5330226031Sstas** may add additional static mutexes.  Static mutexes are for internal
5331226031Sstas** use by SQLite only.  Applications that use SQLite mutexes should
5332226031Sstas** use only the dynamic mutexes returned by SQLITE_MUTEX_FAST or
5333226031Sstas** SQLITE_MUTEX_RECURSIVE.
5334226031Sstas**
5335226031Sstas** ^Note that if one of the dynamic mutex parameters (SQLITE_MUTEX_FAST
5336226031Sstas** or SQLITE_MUTEX_RECURSIVE) is used then sqlite3_mutex_alloc()
5337226031Sstas** returns a different mutex on every call.  ^But for the static
5338226031Sstas** mutex types, the same mutex is returned on every call that has
5339226031Sstas** the same type number.
5340226031Sstas**
5341226031Sstas** ^The sqlite3_mutex_free() routine deallocates a previously
5342226031Sstas** allocated dynamic mutex.  ^SQLite is careful to deallocate every
5343226031Sstas** dynamic mutex that it allocates.  The dynamic mutexes must not be in
5344226031Sstas** use when they are deallocated.  Attempting to deallocate a static
5345226031Sstas** mutex results in undefined behavior.  ^SQLite never deallocates
5346226031Sstas** a static mutex.
5347226031Sstas**
5348226031Sstas** ^The sqlite3_mutex_enter() and sqlite3_mutex_try() routines attempt
5349226031Sstas** to enter a mutex.  ^If another thread is already within the mutex,
5350226031Sstas** sqlite3_mutex_enter() will block and sqlite3_mutex_try() will return
5351226031Sstas** SQLITE_BUSY.  ^The sqlite3_mutex_try() interface returns [SQLITE_OK]
5352226031Sstas** upon successful entry.  ^(Mutexes created using
5353226031Sstas** SQLITE_MUTEX_RECURSIVE can be entered multiple times by the same thread.
5354226031Sstas** In such cases the,
5355226031Sstas** mutex must be exited an equal number of times before another thread
5356226031Sstas** can enter.)^  ^(If the same thread tries to enter any other
5357226031Sstas** kind of mutex more than once, the behavior is undefined.
5358226031Sstas** SQLite will never exhibit
5359226031Sstas** such behavior in its own use of mutexes.)^
5360226031Sstas**
5361226031Sstas** ^(Some systems (for example, Windows 95) do not support the operation
5362226031Sstas** implemented by sqlite3_mutex_try().  On those systems, sqlite3_mutex_try()
5363226031Sstas** will always return SQLITE_BUSY.  The SQLite core only ever uses
5364226031Sstas** sqlite3_mutex_try() as an optimization so this is acceptable behavior.)^
5365226031Sstas**
5366226031Sstas** ^The sqlite3_mutex_leave() routine exits a mutex that was
5367226031Sstas** previously entered by the same thread.   ^(The behavior
5368226031Sstas** is undefined if the mutex is not currently entered by the
5369226031Sstas** calling thread or is not currently allocated.  SQLite will
5370226031Sstas** never do either.)^
5371226031Sstas**
5372226031Sstas** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or
5373226031Sstas** sqlite3_mutex_leave() is a NULL pointer, then all three routines
5374226031Sstas** behave as no-ops.
5375226031Sstas**
5376226031Sstas** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()].
5377226031Sstas*/
5378226031SstasSQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int);
5379226031SstasSQLITE_API void sqlite3_mutex_free(sqlite3_mutex*);
5380226031SstasSQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*);
5381226031SstasSQLITE_API int sqlite3_mutex_try(sqlite3_mutex*);
5382226031SstasSQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
5383226031Sstas
5384226031Sstas/*
5385226031Sstas** CAPI3REF: Mutex Methods Object
5386226031Sstas**
5387226031Sstas** An instance of this structure defines the low-level routines
5388226031Sstas** used to allocate and use mutexes.
5389226031Sstas**
5390226031Sstas** Usually, the default mutex implementations provided by SQLite are
5391226031Sstas** sufficient, however the user has the option of substituting a custom
5392226031Sstas** implementation for specialized deployments or systems for which SQLite
5393226031Sstas** does not provide a suitable implementation. In this case, the user
5394226031Sstas** creates and populates an instance of this structure to pass
5395226031Sstas** to sqlite3_config() along with the [SQLITE_CONFIG_MUTEX] option.
5396226031Sstas** Additionally, an instance of this structure can be used as an
5397226031Sstas** output variable when querying the system for the current mutex
5398226031Sstas** implementation, using the [SQLITE_CONFIG_GETMUTEX] option.
5399226031Sstas**
5400226031Sstas** ^The xMutexInit method defined by this structure is invoked as
5401226031Sstas** part of system initialization by the sqlite3_initialize() function.
5402226128Sstas** ^The xMutexInit routine is called by SQLite exactly once for each
5403226031Sstas** effective call to [sqlite3_initialize()].
5404226031Sstas**
5405226031Sstas** ^The xMutexEnd method defined by this structure is invoked as
5406226031Sstas** part of system shutdown by the sqlite3_shutdown() function. The
5407226031Sstas** implementation of this method is expected to release all outstanding
5408226031Sstas** resources obtained by the mutex methods implementation, especially
5409226031Sstas** those obtained by the xMutexInit method.  ^The xMutexEnd()
5410226031Sstas** interface is invoked exactly once for each call to [sqlite3_shutdown()].
5411226031Sstas**
5412226031Sstas** ^(The remaining seven methods defined by this structure (xMutexAlloc,
5413226031Sstas** xMutexFree, xMutexEnter, xMutexTry, xMutexLeave, xMutexHeld and
5414226031Sstas** xMutexNotheld) implement the following interfaces (respectively):
5415226031Sstas**
5416226031Sstas** <ul>
5417226031Sstas**   <li>  [sqlite3_mutex_alloc()] </li>
5418226031Sstas**   <li>  [sqlite3_mutex_free()] </li>
5419226031Sstas**   <li>  [sqlite3_mutex_enter()] </li>
5420226031Sstas**   <li>  [sqlite3_mutex_try()] </li>
5421226031Sstas**   <li>  [sqlite3_mutex_leave()] </li>
5422226031Sstas**   <li>  [sqlite3_mutex_held()] </li>
5423226031Sstas**   <li>  [sqlite3_mutex_notheld()] </li>
5424226031Sstas** </ul>)^
5425226031Sstas**
5426226031Sstas** The only difference is that the public sqlite3_XXX functions enumerated
5427226031Sstas** above silently ignore any invocations that pass a NULL pointer instead
5428226031Sstas** of a valid mutex handle. The implementations of the methods defined
5429226031Sstas** by this structure are not required to handle this case, the results
5430226031Sstas** of passing a NULL pointer instead of a valid mutex handle are undefined
5431226031Sstas** (i.e. it is acceptable to provide an implementation that segfaults if
5432226031Sstas** it is passed a NULL pointer).
5433226031Sstas**
5434226031Sstas** The xMutexInit() method must be threadsafe.  ^It must be harmless to
5435226128Sstas** invoke xMutexInit() multiple times within the same process and without
5436226031Sstas** intervening calls to xMutexEnd().  Second and subsequent calls to
5437226031Sstas** xMutexInit() must be no-ops.
5438226031Sstas**
5439226031Sstas** ^xMutexInit() must not use SQLite memory allocation ([sqlite3_malloc()]
5440226031Sstas** and its associates).  ^Similarly, xMutexAlloc() must not use SQLite memory
5441226031Sstas** allocation for a static mutex.  ^However xMutexAlloc() may use SQLite
5442226031Sstas** memory allocation for a fast or recursive mutex.
5443226031Sstas**
5444226031Sstas** ^SQLite will invoke the xMutexEnd() method when [sqlite3_shutdown()] is
5445226031Sstas** called, but only if the prior call to xMutexInit returned SQLITE_OK.
5446226031Sstas** If xMutexInit fails in any way, it is expected to clean up after itself
5447226031Sstas** prior to returning.
5448226031Sstas*/
5449226031Sstastypedef struct sqlite3_mutex_methods sqlite3_mutex_methods;
5450226031Sstasstruct sqlite3_mutex_methods {
5451226031Sstas  int (*xMutexInit)(void);
5452226031Sstas  int (*xMutexEnd)(void);
5453226031Sstas  sqlite3_mutex *(*xMutexAlloc)(int);
5454226031Sstas  void (*xMutexFree)(sqlite3_mutex *);
5455226031Sstas  void (*xMutexEnter)(sqlite3_mutex *);
5456226031Sstas  int (*xMutexTry)(sqlite3_mutex *);
5457226031Sstas  void (*xMutexLeave)(sqlite3_mutex *);
5458226031Sstas  int (*xMutexHeld)(sqlite3_mutex *);
5459226031Sstas  int (*xMutexNotheld)(sqlite3_mutex *);
5460226031Sstas};
5461226031Sstas
5462226031Sstas/*
5463226031Sstas** CAPI3REF: Mutex Verification Routines
5464226031Sstas**
5465226031Sstas** The sqlite3_mutex_held() and sqlite3_mutex_notheld() routines
5466226031Sstas** are intended for use inside assert() statements.  ^The SQLite core
5467226031Sstas** never uses these routines except inside an assert() and applications
5468226031Sstas** are advised to follow the lead of the core.  ^The SQLite core only
5469226031Sstas** provides implementations for these routines when it is compiled
5470226031Sstas** with the SQLITE_DEBUG flag.  ^External mutex implementations
5471226031Sstas** are only required to provide these routines if SQLITE_DEBUG is
5472226031Sstas** defined and if NDEBUG is not defined.
5473226031Sstas**
5474226031Sstas** ^These routines should return true if the mutex in their argument
5475226031Sstas** is held or not held, respectively, by the calling thread.
5476226031Sstas**
5477226031Sstas** ^The implementation is not required to provided versions of these
5478226031Sstas** routines that actually work. If the implementation does not provide working
5479226031Sstas** versions of these routines, it should at least provide stubs that always
5480226031Sstas** return true so that one does not get spurious assertion failures.
5481226031Sstas**
5482226031Sstas** ^If the argument to sqlite3_mutex_held() is a NULL pointer then
5483226031Sstas** the routine should return 1.   This seems counter-intuitive since
5484226128Sstas** clearly the mutex cannot be held if it does not exist.  But
5485226031Sstas** the reason the mutex does not exist is because the build is not
5486226031Sstas** using mutexes.  And we do not want the assert() containing the
5487226031Sstas** call to sqlite3_mutex_held() to fail, so a non-zero return is
5488226031Sstas** the appropriate thing to do.  ^The sqlite3_mutex_notheld()
5489226031Sstas** interface should also return 1 when given a NULL pointer.
5490226031Sstas*/
5491226031Sstas#ifndef NDEBUG
5492226031SstasSQLITE_API int sqlite3_mutex_held(sqlite3_mutex*);
5493226031SstasSQLITE_API int sqlite3_mutex_notheld(sqlite3_mutex*);
5494226031Sstas#endif
5495226031Sstas
5496226031Sstas/*
5497226031Sstas** CAPI3REF: Mutex Types
5498226031Sstas**
5499226031Sstas** The [sqlite3_mutex_alloc()] interface takes a single argument
5500226031Sstas** which is one of these integer constants.
5501226031Sstas**
5502226031Sstas** The set of static mutexes may change from one SQLite release to the
5503226031Sstas** next.  Applications that override the built-in mutex logic must be
5504226031Sstas** prepared to accommodate additional static mutexes.
5505226031Sstas*/
5506226031Sstas#define SQLITE_MUTEX_FAST             0
5507226031Sstas#define SQLITE_MUTEX_RECURSIVE        1
5508226031Sstas#define SQLITE_MUTEX_STATIC_MASTER    2
5509226031Sstas#define SQLITE_MUTEX_STATIC_MEM       3  /* sqlite3_malloc() */
5510226031Sstas#define SQLITE_MUTEX_STATIC_MEM2      4  /* NOT USED */
5511226031Sstas#define SQLITE_MUTEX_STATIC_OPEN      4  /* sqlite3BtreeOpen() */
5512226031Sstas#define SQLITE_MUTEX_STATIC_PRNG      5  /* sqlite3_random() */
5513226031Sstas#define SQLITE_MUTEX_STATIC_LRU       6  /* lru page list */
5514226128Sstas#define SQLITE_MUTEX_STATIC_LRU2      7  /* NOT USED */
5515226128Sstas#define SQLITE_MUTEX_STATIC_PMEM      7  /* sqlite3PageMalloc() */
5516226031Sstas
5517226031Sstas/*
5518226031Sstas** CAPI3REF: Retrieve the mutex for a database connection
5519226031Sstas**
5520226128Sstas** ^This interface returns a pointer the [sqlite3_mutex] object that
5521226031Sstas** serializes access to the [database connection] given in the argument
5522226031Sstas** when the [threading mode] is Serialized.
5523226031Sstas** ^If the [threading mode] is Single-thread or Multi-thread then this
5524226031Sstas** routine returns a NULL pointer.
5525226031Sstas*/
5526226031SstasSQLITE_API sqlite3_mutex *sqlite3_db_mutex(sqlite3*);
5527226031Sstas
5528226031Sstas/*
5529226031Sstas** CAPI3REF: Low-Level Control Of Database Files
5530226031Sstas**
5531226031Sstas** ^The [sqlite3_file_control()] interface makes a direct call to the
5532226031Sstas** xFileControl method for the [sqlite3_io_methods] object associated
5533226031Sstas** with a particular database identified by the second argument. ^The
5534226128Sstas** name of the database is "main" for the main database or "temp" for the
5535226031Sstas** TEMP database, or the name that appears after the AS keyword for
5536226031Sstas** databases that are added using the [ATTACH] SQL command.
5537226031Sstas** ^A NULL pointer can be used in place of "main" to refer to the
5538226031Sstas** main database file.
5539226031Sstas** ^The third and fourth parameters to this routine
5540226031Sstas** are passed directly through to the second and third parameters of
5541226031Sstas** the xFileControl method.  ^The return value of the xFileControl
5542226031Sstas** method becomes the return value of this routine.
5543226031Sstas**
5544226128Sstas** ^The SQLITE_FCNTL_FILE_POINTER value for the op parameter causes
5545226128Sstas** a pointer to the underlying [sqlite3_file] object to be written into
5546226128Sstas** the space pointed to by the 4th parameter.  ^The SQLITE_FCNTL_FILE_POINTER
5547226128Sstas** case is a short-circuit path which does not actually invoke the
5548226128Sstas** underlying sqlite3_io_methods.xFileControl method.
5549226128Sstas**
5550226031Sstas** ^If the second parameter (zDbName) does not match the name of any
5551226031Sstas** open database file, then SQLITE_ERROR is returned.  ^This error
5552226031Sstas** code is not remembered and will not be recalled by [sqlite3_errcode()]
5553226031Sstas** or [sqlite3_errmsg()].  The underlying xFileControl method might
5554226031Sstas** also return SQLITE_ERROR.  There is no way to distinguish between
5555226031Sstas** an incorrect zDbName and an SQLITE_ERROR return from the underlying
5556226031Sstas** xFileControl method.
5557226031Sstas**
5558226031Sstas** See also: [SQLITE_FCNTL_LOCKSTATE]
5559226031Sstas*/
5560226031SstasSQLITE_API int sqlite3_file_control(sqlite3*, const char *zDbName, int op, void*);
5561226031Sstas
5562226031Sstas/*
5563226031Sstas** CAPI3REF: Testing Interface
5564226031Sstas**
5565226031Sstas** ^The sqlite3_test_control() interface is used to read out internal
5566226031Sstas** state of SQLite and to inject faults into SQLite for testing
5567226031Sstas** purposes.  ^The first parameter is an operation code that determines
5568226031Sstas** the number, meaning, and operation of all subsequent parameters.
5569226031Sstas**
5570226031Sstas** This interface is not for use by applications.  It exists solely
5571226031Sstas** for verifying the correct operation of the SQLite library.  Depending
5572226031Sstas** on how the SQLite library is compiled, this interface might not exist.
5573226031Sstas**
5574226031Sstas** The details of the operation codes, their meanings, the parameters
5575226031Sstas** they take, and what they do are all subject to change without notice.
5576226031Sstas** Unlike most of the SQLite API, this function is not guaranteed to
5577226031Sstas** operate consistently from one release to the next.
5578226031Sstas*/
5579226031SstasSQLITE_API int sqlite3_test_control(int op, ...);
5580226031Sstas
5581226031Sstas/*
5582226031Sstas** CAPI3REF: Testing Interface Operation Codes
5583226031Sstas**
5584226031Sstas** These constants are the valid operation code parameters used
5585226031Sstas** as the first argument to [sqlite3_test_control()].
5586226031Sstas**
5587226031Sstas** These parameters and their meanings are subject to change
5588226031Sstas** without notice.  These values are for testing purposes only.
5589226031Sstas** Applications should not use any of these parameters or the
5590226031Sstas** [sqlite3_test_control()] interface.
5591226031Sstas*/
5592226031Sstas#define SQLITE_TESTCTRL_FIRST                    5
5593226031Sstas#define SQLITE_TESTCTRL_PRNG_SAVE                5
5594226031Sstas#define SQLITE_TESTCTRL_PRNG_RESTORE             6
5595226031Sstas#define SQLITE_TESTCTRL_PRNG_RESET               7
5596226031Sstas#define SQLITE_TESTCTRL_BITVEC_TEST              8
5597226031Sstas#define SQLITE_TESTCTRL_FAULT_INSTALL            9
5598226031Sstas#define SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS     10
5599226031Sstas#define SQLITE_TESTCTRL_PENDING_BYTE            11
5600226031Sstas#define SQLITE_TESTCTRL_ASSERT                  12
5601226031Sstas#define SQLITE_TESTCTRL_ALWAYS                  13
5602226031Sstas#define SQLITE_TESTCTRL_RESERVE                 14
5603226031Sstas#define SQLITE_TESTCTRL_OPTIMIZATIONS           15
5604226031Sstas#define SQLITE_TESTCTRL_ISKEYWORD               16
5605226128Sstas#define SQLITE_TESTCTRL_PGHDRSZ                 17
5606226128Sstas#define SQLITE_TESTCTRL_SCRATCHMALLOC           18
5607226128Sstas#define SQLITE_TESTCTRL_LOCALTIME_FAULT         19
5608226128Sstas#define SQLITE_TESTCTRL_LAST                    19
5609226031Sstas
5610226031Sstas/*
5611226031Sstas** CAPI3REF: SQLite Runtime Status
5612226031Sstas**
5613226031Sstas** ^This interface is used to retrieve runtime status information
5614226128Sstas** about the performance of SQLite, and optionally to reset various
5615226031Sstas** highwater marks.  ^The first argument is an integer code for
5616226031Sstas** the specific parameter to measure.  ^(Recognized integer codes
5617226128Sstas** are of the form [status parameters | SQLITE_STATUS_...].)^
5618226031Sstas** ^The current value of the parameter is returned into *pCurrent.
5619226031Sstas** ^The highest recorded value is returned in *pHighwater.  ^If the
5620226031Sstas** resetFlag is true, then the highest record value is reset after
5621226031Sstas** *pHighwater is written.  ^(Some parameters do not record the highest
5622226031Sstas** value.  For those parameters
5623226031Sstas** nothing is written into *pHighwater and the resetFlag is ignored.)^
5624226031Sstas** ^(Other parameters record only the highwater mark and not the current
5625226031Sstas** value.  For these latter parameters nothing is written into *pCurrent.)^
5626226031Sstas**
5627226128Sstas** ^The sqlite3_status() routine returns SQLITE_OK on success and a
5628226031Sstas** non-zero [error code] on failure.
5629226031Sstas**
5630226031Sstas** This routine is threadsafe but is not atomic.  This routine can be
5631226031Sstas** called while other threads are running the same or different SQLite
5632226031Sstas** interfaces.  However the values returned in *pCurrent and
5633226031Sstas** *pHighwater reflect the status of SQLite at different points in time
5634226031Sstas** and it is possible that another thread might change the parameter
5635226031Sstas** in between the times when *pCurrent and *pHighwater are written.
5636226031Sstas**
5637226031Sstas** See also: [sqlite3_db_status()]
5638226031Sstas*/
5639226128SstasSQLITE_API int sqlite3_status(int op, int *pCurrent, int *pHighwater, int resetFlag);
5640226031Sstas
5641226031Sstas
5642226031Sstas/*
5643226031Sstas** CAPI3REF: Status Parameters
5644226128Sstas** KEYWORDS: {status parameters}
5645226031Sstas**
5646226031Sstas** These integer constants designate various run-time status parameters
5647226031Sstas** that can be returned by [sqlite3_status()].
5648226031Sstas**
5649226031Sstas** <dl>
5650226128Sstas** [[SQLITE_STATUS_MEMORY_USED]] ^(<dt>SQLITE_STATUS_MEMORY_USED</dt>
5651226031Sstas** <dd>This parameter is the current amount of memory checked out
5652226031Sstas** using [sqlite3_malloc()], either directly or indirectly.  The
5653226031Sstas** figure includes calls made to [sqlite3_malloc()] by the application
5654226031Sstas** and internal memory usage by the SQLite library.  Scratch memory
5655226031Sstas** controlled by [SQLITE_CONFIG_SCRATCH] and auxiliary page-cache
5656226031Sstas** memory controlled by [SQLITE_CONFIG_PAGECACHE] is not included in
5657226031Sstas** this parameter.  The amount returned is the sum of the allocation
5658226031Sstas** sizes as reported by the xSize method in [sqlite3_mem_methods].</dd>)^
5659226031Sstas**
5660226128Sstas** [[SQLITE_STATUS_MALLOC_SIZE]] ^(<dt>SQLITE_STATUS_MALLOC_SIZE</dt>
5661226031Sstas** <dd>This parameter records the largest memory allocation request
5662226031Sstas** handed to [sqlite3_malloc()] or [sqlite3_realloc()] (or their
5663226031Sstas** internal equivalents).  Only the value returned in the
5664226128Sstas** *pHighwater parameter to [sqlite3_status()] is of interest.
5665226031Sstas** The value written into the *pCurrent parameter is undefined.</dd>)^
5666226031Sstas**
5667226128Sstas** [[SQLITE_STATUS_MALLOC_COUNT]] ^(<dt>SQLITE_STATUS_MALLOC_COUNT</dt>
5668226128Sstas** <dd>This parameter records the number of separate memory allocations
5669226128Sstas** currently checked out.</dd>)^
5670226128Sstas**
5671226128Sstas** [[SQLITE_STATUS_PAGECACHE_USED]] ^(<dt>SQLITE_STATUS_PAGECACHE_USED</dt>
5672226031Sstas** <dd>This parameter returns the number of pages used out of the
5673226128Sstas** [pagecache memory allocator] that was configured using
5674226031Sstas** [SQLITE_CONFIG_PAGECACHE].  The
5675226031Sstas** value returned is in pages, not in bytes.</dd>)^
5676226031Sstas**
5677226128Sstas** [[SQLITE_STATUS_PAGECACHE_OVERFLOW]]
5678226031Sstas** ^(<dt>SQLITE_STATUS_PAGECACHE_OVERFLOW</dt>
5679226031Sstas** <dd>This parameter returns the number of bytes of page cache
5680226128Sstas** allocation which could not be satisfied by the [SQLITE_CONFIG_PAGECACHE]
5681226031Sstas** buffer and where forced to overflow to [sqlite3_malloc()].  The
5682226031Sstas** returned value includes allocations that overflowed because they
5683226031Sstas** where too large (they were larger than the "sz" parameter to
5684226031Sstas** [SQLITE_CONFIG_PAGECACHE]) and allocations that overflowed because
5685226031Sstas** no space was left in the page cache.</dd>)^
5686226031Sstas**
5687226128Sstas** [[SQLITE_STATUS_PAGECACHE_SIZE]] ^(<dt>SQLITE_STATUS_PAGECACHE_SIZE</dt>
5688226031Sstas** <dd>This parameter records the largest memory allocation request
5689226031Sstas** handed to [pagecache memory allocator].  Only the value returned in the
5690226128Sstas** *pHighwater parameter to [sqlite3_status()] is of interest.
5691226031Sstas** The value written into the *pCurrent parameter is undefined.</dd>)^
5692226031Sstas**
5693226128Sstas** [[SQLITE_STATUS_SCRATCH_USED]] ^(<dt>SQLITE_STATUS_SCRATCH_USED</dt>
5694226031Sstas** <dd>This parameter returns the number of allocations used out of the
5695226031Sstas** [scratch memory allocator] configured using
5696226031Sstas** [SQLITE_CONFIG_SCRATCH].  The value returned is in allocations, not
5697226031Sstas** in bytes.  Since a single thread may only have one scratch allocation
5698226031Sstas** outstanding at time, this parameter also reports the number of threads
5699226031Sstas** using scratch memory at the same time.</dd>)^
5700226031Sstas**
5701226128Sstas** [[SQLITE_STATUS_SCRATCH_OVERFLOW]] ^(<dt>SQLITE_STATUS_SCRATCH_OVERFLOW</dt>
5702226031Sstas** <dd>This parameter returns the number of bytes of scratch memory
5703226128Sstas** allocation which could not be satisfied by the [SQLITE_CONFIG_SCRATCH]
5704226031Sstas** buffer and where forced to overflow to [sqlite3_malloc()].  The values
5705226031Sstas** returned include overflows because the requested allocation was too
5706226031Sstas** larger (that is, because the requested allocation was larger than the
5707226031Sstas** "sz" parameter to [SQLITE_CONFIG_SCRATCH]) and because no scratch buffer
5708226031Sstas** slots were available.
5709226031Sstas** </dd>)^
5710226031Sstas**
5711226128Sstas** [[SQLITE_STATUS_SCRATCH_SIZE]] ^(<dt>SQLITE_STATUS_SCRATCH_SIZE</dt>
5712226031Sstas** <dd>This parameter records the largest memory allocation request
5713226031Sstas** handed to [scratch memory allocator].  Only the value returned in the
5714226128Sstas** *pHighwater parameter to [sqlite3_status()] is of interest.
5715226031Sstas** The value written into the *pCurrent parameter is undefined.</dd>)^
5716226031Sstas**
5717226128Sstas** [[SQLITE_STATUS_PARSER_STACK]] ^(<dt>SQLITE_STATUS_PARSER_STACK</dt>
5718226031Sstas** <dd>This parameter records the deepest parser stack.  It is only
5719226031Sstas** meaningful if SQLite is compiled with [YYTRACKMAXSTACKDEPTH].</dd>)^
5720226031Sstas** </dl>
5721226031Sstas**
5722226031Sstas** New status parameters may be added from time to time.
5723226031Sstas*/
5724226031Sstas#define SQLITE_STATUS_MEMORY_USED          0
5725226031Sstas#define SQLITE_STATUS_PAGECACHE_USED       1
5726226031Sstas#define SQLITE_STATUS_PAGECACHE_OVERFLOW   2
5727226031Sstas#define SQLITE_STATUS_SCRATCH_USED         3
5728226031Sstas#define SQLITE_STATUS_SCRATCH_OVERFLOW     4
5729226031Sstas#define SQLITE_STATUS_MALLOC_SIZE          5
5730226031Sstas#define SQLITE_STATUS_PARSER_STACK         6
5731226031Sstas#define SQLITE_STATUS_PAGECACHE_SIZE       7
5732226031Sstas#define SQLITE_STATUS_SCRATCH_SIZE         8
5733226128Sstas#define SQLITE_STATUS_MALLOC_COUNT         9
5734226031Sstas
5735226031Sstas/*
5736226031Sstas** CAPI3REF: Database Connection Status
5737226031Sstas**
5738226128Sstas** ^This interface is used to retrieve runtime status information
5739226031Sstas** about a single [database connection].  ^The first argument is the
5740226031Sstas** database connection object to be interrogated.  ^The second argument
5741226128Sstas** is an integer constant, taken from the set of
5742226128Sstas** [SQLITE_DBSTATUS options], that
5743226128Sstas** determines the parameter to interrogate.  The set of
5744226128Sstas** [SQLITE_DBSTATUS options] is likely
5745226128Sstas** to grow in future releases of SQLite.
5746226031Sstas**
5747226031Sstas** ^The current value of the requested parameter is written into *pCur
5748226031Sstas** and the highest instantaneous value is written into *pHiwtr.  ^If
5749226031Sstas** the resetFlg is true, then the highest instantaneous value is
5750226031Sstas** reset back down to the current value.
5751226031Sstas**
5752226128Sstas** ^The sqlite3_db_status() routine returns SQLITE_OK on success and a
5753226128Sstas** non-zero [error code] on failure.
5754226128Sstas**
5755226031Sstas** See also: [sqlite3_status()] and [sqlite3_stmt_status()].
5756226031Sstas*/
5757226128SstasSQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int resetFlg);
5758226031Sstas
5759226031Sstas/*
5760226031Sstas** CAPI3REF: Status Parameters for database connections
5761226128Sstas** KEYWORDS: {SQLITE_DBSTATUS options}
5762226031Sstas**
5763226031Sstas** These constants are the available integer "verbs" that can be passed as
5764226031Sstas** the second argument to the [sqlite3_db_status()] interface.
5765226031Sstas**
5766226031Sstas** New verbs may be added in future releases of SQLite. Existing verbs
5767226031Sstas** might be discontinued. Applications should check the return code from
5768226031Sstas** [sqlite3_db_status()] to make sure that the call worked.
5769226031Sstas** The [sqlite3_db_status()] interface will return a non-zero error code
5770226031Sstas** if a discontinued or unsupported verb is invoked.
5771226031Sstas**
5772226031Sstas** <dl>
5773226128Sstas** [[SQLITE_DBSTATUS_LOOKASIDE_USED]] ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_USED</dt>
5774226031Sstas** <dd>This parameter returns the number of lookaside memory slots currently
5775226031Sstas** checked out.</dd>)^
5776226128Sstas**
5777226128Sstas** [[SQLITE_DBSTATUS_LOOKASIDE_HIT]] ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_HIT</dt>
5778226128Sstas** <dd>This parameter returns the number malloc attempts that were
5779226128Sstas** satisfied using lookaside memory. Only the high-water value is meaningful;
5780226128Sstas** the current value is always zero.)^
5781226128Sstas**
5782226128Sstas** [[SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE]]
5783226128Sstas** ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE</dt>
5784226128Sstas** <dd>This parameter returns the number malloc attempts that might have
5785226128Sstas** been satisfied using lookaside memory but failed due to the amount of
5786226128Sstas** memory requested being larger than the lookaside slot size.
5787226128Sstas** Only the high-water value is meaningful;
5788226128Sstas** the current value is always zero.)^
5789226128Sstas**
5790226128Sstas** [[SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL]]
5791226128Sstas** ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL</dt>
5792226128Sstas** <dd>This parameter returns the number malloc attempts that might have
5793226128Sstas** been satisfied using lookaside memory but failed due to all lookaside
5794226128Sstas** memory already being in use.
5795226128Sstas** Only the high-water value is meaningful;
5796226128Sstas** the current value is always zero.)^
5797226128Sstas**
5798226128Sstas** [[SQLITE_DBSTATUS_CACHE_USED]] ^(<dt>SQLITE_DBSTATUS_CACHE_USED</dt>
5799226128Sstas** <dd>This parameter returns the approximate number of of bytes of heap
5800226128Sstas** memory used by all pager caches associated with the database connection.)^
5801226128Sstas** ^The highwater mark associated with SQLITE_DBSTATUS_CACHE_USED is always 0.
5802226128Sstas**
5803226128Sstas** [[SQLITE_DBSTATUS_SCHEMA_USED]] ^(<dt>SQLITE_DBSTATUS_SCHEMA_USED</dt>
5804226128Sstas** <dd>This parameter returns the approximate number of of bytes of heap
5805226128Sstas** memory used to store the schema for all databases associated
5806226128Sstas** with the connection - main, temp, and any [ATTACH]-ed databases.)^
5807226128Sstas** ^The full amount of memory used by the schemas is reported, even if the
5808226128Sstas** schema memory is shared with other database connections due to
5809226128Sstas** [shared cache mode] being enabled.
5810226128Sstas** ^The highwater mark associated with SQLITE_DBSTATUS_SCHEMA_USED is always 0.
5811226128Sstas**
5812226128Sstas** [[SQLITE_DBSTATUS_STMT_USED]] ^(<dt>SQLITE_DBSTATUS_STMT_USED</dt>
5813226128Sstas** <dd>This parameter returns the approximate number of of bytes of heap
5814226128Sstas** and lookaside memory used by all prepared statements associated with
5815226128Sstas** the database connection.)^
5816226128Sstas** ^The highwater mark associated with SQLITE_DBSTATUS_STMT_USED is always 0.
5817226128Sstas** </dd>
5818226031Sstas** </dl>
5819226031Sstas*/
5820226128Sstas#define SQLITE_DBSTATUS_LOOKASIDE_USED       0
5821226128Sstas#define SQLITE_DBSTATUS_CACHE_USED           1
5822226128Sstas#define SQLITE_DBSTATUS_SCHEMA_USED          2
5823226128Sstas#define SQLITE_DBSTATUS_STMT_USED            3
5824226128Sstas#define SQLITE_DBSTATUS_LOOKASIDE_HIT        4
5825226128Sstas#define SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE  5
5826226128Sstas#define SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL  6
5827226128Sstas#define SQLITE_DBSTATUS_MAX                  6   /* Largest defined DBSTATUS */
5828226031Sstas
5829226031Sstas
5830226031Sstas/*
5831226031Sstas** CAPI3REF: Prepared Statement Status
5832226031Sstas**
5833226031Sstas** ^(Each prepared statement maintains various
5834226128Sstas** [SQLITE_STMTSTATUS counters] that measure the number
5835226031Sstas** of times it has performed specific operations.)^  These counters can
5836226031Sstas** be used to monitor the performance characteristics of the prepared
5837226031Sstas** statements.  For example, if the number of table steps greatly exceeds
5838226031Sstas** the number of table searches or result rows, that would tend to indicate
5839226031Sstas** that the prepared statement is using a full table scan rather than
5840226128Sstas** an index.
5841226031Sstas**
5842226031Sstas** ^(This interface is used to retrieve and reset counter values from
5843226031Sstas** a [prepared statement].  The first argument is the prepared statement
5844226031Sstas** object to be interrogated.  The second argument
5845226128Sstas** is an integer code for a specific [SQLITE_STMTSTATUS counter]
5846226031Sstas** to be interrogated.)^
5847226031Sstas** ^The current value of the requested counter is returned.
5848226031Sstas** ^If the resetFlg is true, then the counter is reset to zero after this
5849226031Sstas** interface call returns.
5850226031Sstas**
5851226031Sstas** See also: [sqlite3_status()] and [sqlite3_db_status()].
5852226031Sstas*/
5853226128SstasSQLITE_API int sqlite3_stmt_status(sqlite3_stmt*, int op,int resetFlg);
5854226031Sstas
5855226031Sstas/*
5856226031Sstas** CAPI3REF: Status Parameters for prepared statements
5857226128Sstas** KEYWORDS: {SQLITE_STMTSTATUS counter} {SQLITE_STMTSTATUS counters}
5858226031Sstas**
5859226031Sstas** These preprocessor macros define integer codes that name counter
5860226031Sstas** values associated with the [sqlite3_stmt_status()] interface.
5861226031Sstas** The meanings of the various counters are as follows:
5862226031Sstas**
5863226031Sstas** <dl>
5864226128Sstas** [[SQLITE_STMTSTATUS_FULLSCAN_STEP]] <dt>SQLITE_STMTSTATUS_FULLSCAN_STEP</dt>
5865226031Sstas** <dd>^This is the number of times that SQLite has stepped forward in
5866226031Sstas** a table as part of a full table scan.  Large numbers for this counter
5867226128Sstas** may indicate opportunities for performance improvement through
5868226031Sstas** careful use of indices.</dd>
5869226031Sstas**
5870226128Sstas** [[SQLITE_STMTSTATUS_SORT]] <dt>SQLITE_STMTSTATUS_SORT</dt>
5871226031Sstas** <dd>^This is the number of sort operations that have occurred.
5872226031Sstas** A non-zero value in this counter may indicate an opportunity to
5873226031Sstas** improvement performance through careful use of indices.</dd>
5874226031Sstas**
5875226128Sstas** [[SQLITE_STMTSTATUS_AUTOINDEX]] <dt>SQLITE_STMTSTATUS_AUTOINDEX</dt>
5876226128Sstas** <dd>^This is the number of rows inserted into transient indices that
5877226128Sstas** were created automatically in order to help joins run faster.
5878226128Sstas** A non-zero value in this counter may indicate an opportunity to
5879226128Sstas** improvement performance by adding permanent indices that do not
5880226128Sstas** need to be reinitialized each time the statement is run.</dd>
5881226128Sstas**
5882226031Sstas** </dl>
5883226031Sstas*/
5884226031Sstas#define SQLITE_STMTSTATUS_FULLSCAN_STEP     1
5885226031Sstas#define SQLITE_STMTSTATUS_SORT              2
5886226128Sstas#define SQLITE_STMTSTATUS_AUTOINDEX         3
5887226031Sstas
5888226031Sstas/*
5889226031Sstas** CAPI3REF: Custom Page Cache Object
5890226031Sstas**
5891226031Sstas** The sqlite3_pcache type is opaque.  It is implemented by
5892226031Sstas** the pluggable module.  The SQLite core has no knowledge of
5893226031Sstas** its size or internal structure and never deals with the
5894226031Sstas** sqlite3_pcache object except by holding and passing pointers
5895226031Sstas** to the object.
5896226031Sstas**
5897226031Sstas** See [sqlite3_pcache_methods] for additional information.
5898226031Sstas*/
5899226031Sstastypedef struct sqlite3_pcache sqlite3_pcache;
5900226031Sstas
5901226031Sstas/*
5902226031Sstas** CAPI3REF: Application Defined Page Cache.
5903226031Sstas** KEYWORDS: {page cache}
5904226031Sstas**
5905226031Sstas** ^(The [sqlite3_config]([SQLITE_CONFIG_PCACHE], ...) interface can
5906226128Sstas** register an alternative page cache implementation by passing in an
5907226128Sstas** instance of the sqlite3_pcache_methods structure.)^
5908226128Sstas** In many applications, most of the heap memory allocated by
5909226128Sstas** SQLite is used for the page cache.
5910226128Sstas** By implementing a
5911226128Sstas** custom page cache using this API, an application can better control
5912226128Sstas** the amount of memory consumed by SQLite, the way in which
5913226128Sstas** that memory is allocated and released, and the policies used to
5914226128Sstas** determine exactly which parts of a database file are cached and for
5915226031Sstas** how long.
5916226031Sstas**
5917226128Sstas** The alternative page cache mechanism is an
5918226128Sstas** extreme measure that is only needed by the most demanding applications.
5919226128Sstas** The built-in page cache is recommended for most uses.
5920226128Sstas**
5921226031Sstas** ^(The contents of the sqlite3_pcache_methods structure are copied to an
5922226031Sstas** internal buffer by SQLite within the call to [sqlite3_config].  Hence
5923226031Sstas** the application may discard the parameter after the call to
5924226031Sstas** [sqlite3_config()] returns.)^
5925226031Sstas**
5926226128Sstas** [[the xInit() page cache method]]
5927226128Sstas** ^(The xInit() method is called once for each effective
5928226128Sstas** call to [sqlite3_initialize()])^
5929226031Sstas** (usually only once during the lifetime of the process). ^(The xInit()
5930226031Sstas** method is passed a copy of the sqlite3_pcache_methods.pArg value.)^
5931226128Sstas** The intent of the xInit() method is to set up global data structures
5932226128Sstas** required by the custom page cache implementation.
5933226128Sstas** ^(If the xInit() method is NULL, then the
5934226128Sstas** built-in default page cache is used instead of the application defined
5935226128Sstas** page cache.)^
5936226031Sstas**
5937226128Sstas** [[the xShutdown() page cache method]]
5938226128Sstas** ^The xShutdown() method is called by [sqlite3_shutdown()].
5939226128Sstas** It can be used to clean up
5940226031Sstas** any outstanding resources before process shutdown, if required.
5941226128Sstas** ^The xShutdown() method may be NULL.
5942226031Sstas**
5943226128Sstas** ^SQLite automatically serializes calls to the xInit method,
5944226128Sstas** so the xInit method need not be threadsafe.  ^The
5945226031Sstas** xShutdown method is only called from [sqlite3_shutdown()] so it does
5946226031Sstas** not need to be threadsafe either.  All other methods must be threadsafe
5947226031Sstas** in multithreaded applications.
5948226031Sstas**
5949226031Sstas** ^SQLite will never invoke xInit() more than once without an intervening
5950226031Sstas** call to xShutdown().
5951226031Sstas**
5952226128Sstas** [[the xCreate() page cache methods]]
5953226128Sstas** ^SQLite invokes the xCreate() method to construct a new cache instance.
5954226128Sstas** SQLite will typically create one cache instance for each open database file,
5955226031Sstas** though this is not guaranteed. ^The
5956226031Sstas** first parameter, szPage, is the size in bytes of the pages that must
5957226031Sstas** be allocated by the cache.  ^szPage will not be a power of two.  ^szPage
5958226031Sstas** will the page size of the database file that is to be cached plus an
5959226128Sstas** increment (here called "R") of less than 250.  SQLite will use the
5960226031Sstas** extra R bytes on each page to store metadata about the underlying
5961226031Sstas** database page on disk.  The value of R depends
5962226031Sstas** on the SQLite version, the target platform, and how SQLite was compiled.
5963226128Sstas** ^(R is constant for a particular build of SQLite. Except, there are two
5964226128Sstas** distinct values of R when SQLite is compiled with the proprietary
5965226128Sstas** ZIPVFS extension.)^  ^The second argument to
5966226031Sstas** xCreate(), bPurgeable, is true if the cache being created will
5967226031Sstas** be used to cache database pages of a file stored on disk, or
5968226128Sstas** false if it is used for an in-memory database. The cache implementation
5969226031Sstas** does not have to do anything special based with the value of bPurgeable;
5970226031Sstas** it is purely advisory.  ^On a cache where bPurgeable is false, SQLite will
5971226031Sstas** never invoke xUnpin() except to deliberately delete a page.
5972226128Sstas** ^In other words, calls to xUnpin() on a cache with bPurgeable set to
5973226128Sstas** false will always have the "discard" flag set to true.
5974226128Sstas** ^Hence, a cache created with bPurgeable false will
5975226031Sstas** never contain any unpinned pages.
5976226031Sstas**
5977226128Sstas** [[the xCachesize() page cache method]]
5978226031Sstas** ^(The xCachesize() method may be called at any time by SQLite to set the
5979226031Sstas** suggested maximum cache-size (number of pages stored by) the cache
5980226031Sstas** instance passed as the first argument. This is the value configured using
5981226128Sstas** the SQLite "[PRAGMA cache_size]" command.)^  As with the bPurgeable
5982226031Sstas** parameter, the implementation is not required to do anything with this
5983226031Sstas** value; it is advisory only.
5984226031Sstas**
5985226128Sstas** [[the xPagecount() page cache methods]]
5986226128Sstas** The xPagecount() method must return the number of pages currently
5987226128Sstas** stored in the cache, both pinned and unpinned.
5988226128Sstas**
5989226128Sstas** [[the xFetch() page cache methods]]
5990226128Sstas** The xFetch() method locates a page in the cache and returns a pointer to
5991226128Sstas** the page, or a NULL pointer.
5992226128Sstas** A "page", in this context, means a buffer of szPage bytes aligned at an
5993226128Sstas** 8-byte boundary. The page to be fetched is determined by the key. ^The
5994226128Sstas** minimum key value is 1.  After it has been retrieved using xFetch, the page
5995226031Sstas** is considered to be "pinned".
5996226031Sstas**
5997226128Sstas** If the requested page is already in the page cache, then the page cache
5998226031Sstas** implementation must return a pointer to the page buffer with its content
5999226128Sstas** intact.  If the requested page is not already in the cache, then the
6000226128Sstas** cache implementation should use the value of the createFlag
6001226128Sstas** parameter to help it determined what action to take:
6002226031Sstas**
6003226031Sstas** <table border=1 width=85% align=center>
6004226031Sstas** <tr><th> createFlag <th> Behaviour when page is not already in cache
6005226031Sstas** <tr><td> 0 <td> Do not allocate a new page.  Return NULL.
6006226031Sstas** <tr><td> 1 <td> Allocate a new page if it easy and convenient to do so.
6007226031Sstas**                 Otherwise return NULL.
6008226031Sstas** <tr><td> 2 <td> Make every effort to allocate a new page.  Only return
6009226031Sstas**                 NULL if allocating a new page is effectively impossible.
6010226128Sstas** </table>
6011226031Sstas**
6012226128Sstas** ^(SQLite will normally invoke xFetch() with a createFlag of 0 or 1.  SQLite
6013226128Sstas** will only use a createFlag of 2 after a prior call with a createFlag of 1
6014226128Sstas** failed.)^  In between the to xFetch() calls, SQLite may
6015226031Sstas** attempt to unpin one or more cache pages by spilling the content of
6016226128Sstas** pinned pages to disk and synching the operating system disk cache.
6017226031Sstas**
6018226128Sstas** [[the xUnpin() page cache method]]
6019226031Sstas** ^xUnpin() is called by SQLite with a pointer to a currently pinned page
6020226128Sstas** as its second argument.  If the third parameter, discard, is non-zero,
6021226128Sstas** then the page must be evicted from the cache.
6022226128Sstas** ^If the discard parameter is
6023226128Sstas** zero, then the page may be discarded or retained at the discretion of
6024226128Sstas** page cache implementation. ^The page cache implementation
6025226031Sstas** may choose to evict unpinned pages at any time.
6026226031Sstas**
6027226128Sstas** The cache must not perform any reference counting. A single
6028226128Sstas** call to xUnpin() unpins the page regardless of the number of prior calls
6029226128Sstas** to xFetch().
6030226031Sstas**
6031226128Sstas** [[the xRekey() page cache methods]]
6032226128Sstas** The xRekey() method is used to change the key value associated with the
6033226128Sstas** page passed as the second argument. If the cache
6034226128Sstas** previously contains an entry associated with newKey, it must be
6035226031Sstas** discarded. ^Any prior cache entry associated with newKey is guaranteed not
6036226031Sstas** to be pinned.
6037226031Sstas**
6038226128Sstas** When SQLite calls the xTruncate() method, the cache must discard all
6039226031Sstas** existing cache entries with page numbers (keys) greater than or equal
6040226128Sstas** to the value of the iLimit parameter passed to xTruncate(). If any
6041226031Sstas** of these pages are pinned, they are implicitly unpinned, meaning that
6042226031Sstas** they can be safely discarded.
6043226031Sstas**
6044226128Sstas** [[the xDestroy() page cache method]]
6045226031Sstas** ^The xDestroy() method is used to delete a cache allocated by xCreate().
6046226031Sstas** All resources associated with the specified cache should be freed. ^After
6047226031Sstas** calling the xDestroy() method, SQLite considers the [sqlite3_pcache*]
6048226031Sstas** handle invalid, and will not use it with any other sqlite3_pcache_methods
6049226031Sstas** functions.
6050226031Sstas*/
6051226031Sstastypedef struct sqlite3_pcache_methods sqlite3_pcache_methods;
6052226031Sstasstruct sqlite3_pcache_methods {
6053226031Sstas  void *pArg;
6054226031Sstas  int (*xInit)(void*);
6055226031Sstas  void (*xShutdown)(void*);
6056226031Sstas  sqlite3_pcache *(*xCreate)(int szPage, int bPurgeable);
6057226031Sstas  void (*xCachesize)(sqlite3_pcache*, int nCachesize);
6058226031Sstas  int (*xPagecount)(sqlite3_pcache*);
6059226031Sstas  void *(*xFetch)(sqlite3_pcache*, unsigned key, int createFlag);
6060226031Sstas  void (*xUnpin)(sqlite3_pcache*, void*, int discard);
6061226031Sstas  void (*xRekey)(sqlite3_pcache*, void*, unsigned oldKey, unsigned newKey);
6062226031Sstas  void (*xTruncate)(sqlite3_pcache*, unsigned iLimit);
6063226031Sstas  void (*xDestroy)(sqlite3_pcache*);
6064226031Sstas};
6065226031Sstas
6066226031Sstas/*
6067226031Sstas** CAPI3REF: Online Backup Object
6068226031Sstas**
6069226031Sstas** The sqlite3_backup object records state information about an ongoing
6070226031Sstas** online backup operation.  ^The sqlite3_backup object is created by
6071226031Sstas** a call to [sqlite3_backup_init()] and is destroyed by a call to
6072226031Sstas** [sqlite3_backup_finish()].
6073226031Sstas**
6074226031Sstas** See Also: [Using the SQLite Online Backup API]
6075226031Sstas*/
6076226031Sstastypedef struct sqlite3_backup sqlite3_backup;
6077226031Sstas
6078226031Sstas/*
6079226031Sstas** CAPI3REF: Online Backup API.
6080226031Sstas**
6081226031Sstas** The backup API copies the content of one database into another.
6082226031Sstas** It is useful either for creating backups of databases or
6083226128Sstas** for copying in-memory databases to or from persistent files.
6084226031Sstas**
6085226031Sstas** See Also: [Using the SQLite Online Backup API]
6086226031Sstas**
6087226128Sstas** ^SQLite holds a write transaction open on the destination database file
6088226128Sstas** for the duration of the backup operation.
6089226128Sstas** ^The source database is read-locked only while it is being read;
6090226128Sstas** it is not locked continuously for the entire backup operation.
6091226128Sstas** ^Thus, the backup may be performed on a live source database without
6092226128Sstas** preventing other database connections from
6093226031Sstas** reading or writing to the source database while the backup is underway.
6094226128Sstas**
6095226128Sstas** ^(To perform a backup operation:
6096226031Sstas**   <ol>
6097226031Sstas**     <li><b>sqlite3_backup_init()</b> is called once to initialize the
6098226128Sstas**         backup,
6099226128Sstas**     <li><b>sqlite3_backup_step()</b> is called one or more times to transfer
6100226031Sstas**         the data between the two databases, and finally
6101226128Sstas**     <li><b>sqlite3_backup_finish()</b> is called to release all resources
6102226128Sstas**         associated with the backup operation.
6103226031Sstas**   </ol>)^
6104226031Sstas** There should be exactly one call to sqlite3_backup_finish() for each
6105226031Sstas** successful call to sqlite3_backup_init().
6106226031Sstas**
6107226128Sstas** [[sqlite3_backup_init()]] <b>sqlite3_backup_init()</b>
6108226031Sstas**
6109226128Sstas** ^The D and N arguments to sqlite3_backup_init(D,N,S,M) are the
6110226128Sstas** [database connection] associated with the destination database
6111226031Sstas** and the database name, respectively.
6112226031Sstas** ^The database name is "main" for the main database, "temp" for the
6113226031Sstas** temporary database, or the name specified after the AS keyword in
6114226031Sstas** an [ATTACH] statement for an attached database.
6115226128Sstas** ^The S and M arguments passed to
6116226031Sstas** sqlite3_backup_init(D,N,S,M) identify the [database connection]
6117226031Sstas** and database name of the source database, respectively.
6118226031Sstas** ^The source and destination [database connections] (parameters S and D)
6119226128Sstas** must be different or else sqlite3_backup_init(D,N,S,M) will fail with
6120226031Sstas** an error.
6121226031Sstas**
6122226031Sstas** ^If an error occurs within sqlite3_backup_init(D,N,S,M), then NULL is
6123226128Sstas** returned and an error code and error message are stored in the
6124226031Sstas** destination [database connection] D.
6125226031Sstas** ^The error code and message for the failed call to sqlite3_backup_init()
6126226031Sstas** can be retrieved using the [sqlite3_errcode()], [sqlite3_errmsg()], and/or
6127226031Sstas** [sqlite3_errmsg16()] functions.
6128226031Sstas** ^A successful call to sqlite3_backup_init() returns a pointer to an
6129226031Sstas** [sqlite3_backup] object.
6130226031Sstas** ^The [sqlite3_backup] object may be used with the sqlite3_backup_step() and
6131226128Sstas** sqlite3_backup_finish() functions to perform the specified backup
6132226031Sstas** operation.
6133226031Sstas**
6134226128Sstas** [[sqlite3_backup_step()]] <b>sqlite3_backup_step()</b>
6135226031Sstas**
6136226128Sstas** ^Function sqlite3_backup_step(B,N) will copy up to N pages between
6137226031Sstas** the source and destination databases specified by [sqlite3_backup] object B.
6138226128Sstas** ^If N is negative, all remaining source pages are copied.
6139226031Sstas** ^If sqlite3_backup_step(B,N) successfully copies N pages and there
6140226128Sstas** are still more pages to be copied, then the function returns [SQLITE_OK].
6141226031Sstas** ^If sqlite3_backup_step(B,N) successfully finishes copying all pages
6142226031Sstas** from source to destination, then it returns [SQLITE_DONE].
6143226031Sstas** ^If an error occurs while running sqlite3_backup_step(B,N),
6144226031Sstas** then an [error code] is returned. ^As well as [SQLITE_OK] and
6145226031Sstas** [SQLITE_DONE], a call to sqlite3_backup_step() may return [SQLITE_READONLY],
6146226031Sstas** [SQLITE_NOMEM], [SQLITE_BUSY], [SQLITE_LOCKED], or an
6147226031Sstas** [SQLITE_IOERR_ACCESS | SQLITE_IOERR_XXX] extended error code.
6148226031Sstas**
6149226128Sstas** ^(The sqlite3_backup_step() might return [SQLITE_READONLY] if
6150226128Sstas** <ol>
6151226128Sstas** <li> the destination database was opened read-only, or
6152226128Sstas** <li> the destination database is using write-ahead-log journaling
6153226128Sstas** and the destination and source page sizes differ, or
6154226128Sstas** <li> the destination database is an in-memory database and the
6155226128Sstas** destination and source page sizes differ.
6156226128Sstas** </ol>)^
6157226031Sstas**
6158226031Sstas** ^If sqlite3_backup_step() cannot obtain a required file-system lock, then
6159226031Sstas** the [sqlite3_busy_handler | busy-handler function]
6160226128Sstas** is invoked (if one is specified). ^If the
6161226128Sstas** busy-handler returns non-zero before the lock is available, then
6162226031Sstas** [SQLITE_BUSY] is returned to the caller. ^In this case the call to
6163226031Sstas** sqlite3_backup_step() can be retried later. ^If the source
6164226031Sstas** [database connection]
6165226031Sstas** is being used to write to the source database when sqlite3_backup_step()
6166226031Sstas** is called, then [SQLITE_LOCKED] is returned immediately. ^Again, in this
6167226031Sstas** case the call to sqlite3_backup_step() can be retried later on. ^(If
6168226031Sstas** [SQLITE_IOERR_ACCESS | SQLITE_IOERR_XXX], [SQLITE_NOMEM], or
6169226128Sstas** [SQLITE_READONLY] is returned, then
6170226128Sstas** there is no point in retrying the call to sqlite3_backup_step(). These
6171226128Sstas** errors are considered fatal.)^  The application must accept
6172226128Sstas** that the backup operation has failed and pass the backup operation handle
6173226031Sstas** to the sqlite3_backup_finish() to release associated resources.
6174226031Sstas**
6175226031Sstas** ^The first call to sqlite3_backup_step() obtains an exclusive lock
6176226128Sstas** on the destination file. ^The exclusive lock is not released until either
6177226128Sstas** sqlite3_backup_finish() is called or the backup operation is complete
6178226031Sstas** and sqlite3_backup_step() returns [SQLITE_DONE].  ^Every call to
6179226031Sstas** sqlite3_backup_step() obtains a [shared lock] on the source database that
6180226031Sstas** lasts for the duration of the sqlite3_backup_step() call.
6181226031Sstas** ^Because the source database is not locked between calls to
6182226031Sstas** sqlite3_backup_step(), the source database may be modified mid-way
6183226031Sstas** through the backup process.  ^If the source database is modified by an
6184226031Sstas** external process or via a database connection other than the one being
6185226031Sstas** used by the backup operation, then the backup will be automatically
6186226128Sstas** restarted by the next call to sqlite3_backup_step(). ^If the source
6187226031Sstas** database is modified by the using the same database connection as is used
6188226031Sstas** by the backup operation, then the backup database is automatically
6189226031Sstas** updated at the same time.
6190226031Sstas**
6191226128Sstas** [[sqlite3_backup_finish()]] <b>sqlite3_backup_finish()</b>
6192226031Sstas**
6193226128Sstas** When sqlite3_backup_step() has returned [SQLITE_DONE], or when the
6194226031Sstas** application wishes to abandon the backup operation, the application
6195226031Sstas** should destroy the [sqlite3_backup] by passing it to sqlite3_backup_finish().
6196226031Sstas** ^The sqlite3_backup_finish() interfaces releases all
6197226128Sstas** resources associated with the [sqlite3_backup] object.
6198226031Sstas** ^If sqlite3_backup_step() has not yet returned [SQLITE_DONE], then any
6199226031Sstas** active write-transaction on the destination database is rolled back.
6200226031Sstas** The [sqlite3_backup] object is invalid
6201226031Sstas** and may not be used following a call to sqlite3_backup_finish().
6202226031Sstas**
6203226031Sstas** ^The value returned by sqlite3_backup_finish is [SQLITE_OK] if no
6204226031Sstas** sqlite3_backup_step() errors occurred, regardless or whether or not
6205226031Sstas** sqlite3_backup_step() completed.
6206226031Sstas** ^If an out-of-memory condition or IO error occurred during any prior
6207226031Sstas** sqlite3_backup_step() call on the same [sqlite3_backup] object, then
6208226031Sstas** sqlite3_backup_finish() returns the corresponding [error code].
6209226031Sstas**
6210226031Sstas** ^A return of [SQLITE_BUSY] or [SQLITE_LOCKED] from sqlite3_backup_step()
6211226031Sstas** is not a permanent error and does not affect the return value of
6212226031Sstas** sqlite3_backup_finish().
6213226031Sstas**
6214226128Sstas** [[sqlite3_backup__remaining()]] [[sqlite3_backup_pagecount()]]
6215226128Sstas** <b>sqlite3_backup_remaining() and sqlite3_backup_pagecount()</b>
6216226031Sstas**
6217226031Sstas** ^Each call to sqlite3_backup_step() sets two values inside
6218226031Sstas** the [sqlite3_backup] object: the number of pages still to be backed
6219226128Sstas** up and the total number of pages in the source database file.
6220226031Sstas** The sqlite3_backup_remaining() and sqlite3_backup_pagecount() interfaces
6221226031Sstas** retrieve these two values, respectively.
6222226031Sstas**
6223226031Sstas** ^The values returned by these functions are only updated by
6224226031Sstas** sqlite3_backup_step(). ^If the source database is modified during a backup
6225226031Sstas** operation, then the values are not updated to account for any extra
6226226031Sstas** pages that need to be updated or the size of the source database file
6227226031Sstas** changing.
6228226031Sstas**
6229226031Sstas** <b>Concurrent Usage of Database Handles</b>
6230226031Sstas**
6231226031Sstas** ^The source [database connection] may be used by the application for other
6232226031Sstas** purposes while a backup operation is underway or being initialized.
6233226031Sstas** ^If SQLite is compiled and configured to support threadsafe database
6234226031Sstas** connections, then the source database connection may be used concurrently
6235226031Sstas** from within other threads.
6236226031Sstas**
6237226128Sstas** However, the application must guarantee that the destination
6238226128Sstas** [database connection] is not passed to any other API (by any thread) after
6239226031Sstas** sqlite3_backup_init() is called and before the corresponding call to
6240226031Sstas** sqlite3_backup_finish().  SQLite does not currently check to see
6241226031Sstas** if the application incorrectly accesses the destination [database connection]
6242226031Sstas** and so no error code is reported, but the operations may malfunction
6243226031Sstas** nevertheless.  Use of the destination database connection while a
6244226031Sstas** backup is in progress might also also cause a mutex deadlock.
6245226031Sstas**
6246226031Sstas** If running in [shared cache mode], the application must
6247226031Sstas** guarantee that the shared cache used by the destination database
6248226031Sstas** is not accessed while the backup is running. In practice this means
6249226128Sstas** that the application must guarantee that the disk file being
6250226031Sstas** backed up to is not accessed by any connection within the process,
6251226031Sstas** not just the specific connection that was passed to sqlite3_backup_init().
6252226031Sstas**
6253226128Sstas** The [sqlite3_backup] object itself is partially threadsafe. Multiple
6254226031Sstas** threads may safely make multiple concurrent calls to sqlite3_backup_step().
6255226031Sstas** However, the sqlite3_backup_remaining() and sqlite3_backup_pagecount()
6256226031Sstas** APIs are not strictly speaking threadsafe. If they are invoked at the
6257226031Sstas** same time as another thread is invoking sqlite3_backup_step() it is
6258226031Sstas** possible that they return invalid values.
6259226031Sstas*/
6260226031SstasSQLITE_API sqlite3_backup *sqlite3_backup_init(
6261226031Sstas  sqlite3 *pDest,                        /* Destination database handle */
6262226031Sstas  const char *zDestName,                 /* Destination database name */
6263226031Sstas  sqlite3 *pSource,                      /* Source database handle */
6264226031Sstas  const char *zSourceName                /* Source database name */
6265226031Sstas);
6266226031SstasSQLITE_API int sqlite3_backup_step(sqlite3_backup *p, int nPage);
6267226031SstasSQLITE_API int sqlite3_backup_finish(sqlite3_backup *p);
6268226031SstasSQLITE_API int sqlite3_backup_remaining(sqlite3_backup *p);
6269226031SstasSQLITE_API int sqlite3_backup_pagecount(sqlite3_backup *p);
6270226031Sstas
6271226031Sstas/*
6272226031Sstas** CAPI3REF: Unlock Notification
6273226031Sstas**
6274226031Sstas** ^When running in shared-cache mode, a database operation may fail with
6275226031Sstas** an [SQLITE_LOCKED] error if the required locks on the shared-cache or
6276226031Sstas** individual tables within the shared-cache cannot be obtained. See
6277226128Sstas** [SQLite Shared-Cache Mode] for a description of shared-cache locking.
6278226128Sstas** ^This API may be used to register a callback that SQLite will invoke
6279226031Sstas** when the connection currently holding the required lock relinquishes it.
6280226031Sstas** ^This API is only available if the library was compiled with the
6281226031Sstas** [SQLITE_ENABLE_UNLOCK_NOTIFY] C-preprocessor symbol defined.
6282226031Sstas**
6283226031Sstas** See Also: [Using the SQLite Unlock Notification Feature].
6284226031Sstas**
6285226031Sstas** ^Shared-cache locks are released when a database connection concludes
6286226128Sstas** its current transaction, either by committing it or rolling it back.
6287226031Sstas**
6288226031Sstas** ^When a connection (known as the blocked connection) fails to obtain a
6289226031Sstas** shared-cache lock and SQLITE_LOCKED is returned to the caller, the
6290226031Sstas** identity of the database connection (the blocking connection) that
6291226128Sstas** has locked the required resource is stored internally. ^After an
6292226031Sstas** application receives an SQLITE_LOCKED error, it may call the
6293226128Sstas** sqlite3_unlock_notify() method with the blocked connection handle as
6294226031Sstas** the first argument to register for a callback that will be invoked
6295226031Sstas** when the blocking connections current transaction is concluded. ^The
6296226031Sstas** callback is invoked from within the [sqlite3_step] or [sqlite3_close]
6297226031Sstas** call that concludes the blocking connections transaction.
6298226031Sstas**
6299226031Sstas** ^(If sqlite3_unlock_notify() is called in a multi-threaded application,
6300226031Sstas** there is a chance that the blocking connection will have already
6301226031Sstas** concluded its transaction by the time sqlite3_unlock_notify() is invoked.
6302226031Sstas** If this happens, then the specified callback is invoked immediately,
6303226031Sstas** from within the call to sqlite3_unlock_notify().)^
6304226031Sstas**
6305226031Sstas** ^If the blocked connection is attempting to obtain a write-lock on a
6306226031Sstas** shared-cache table, and more than one other connection currently holds
6307226128Sstas** a read-lock on the same table, then SQLite arbitrarily selects one of
6308226031Sstas** the other connections to use as the blocking connection.
6309226031Sstas**
6310226128Sstas** ^(There may be at most one unlock-notify callback registered by a
6311226031Sstas** blocked connection. If sqlite3_unlock_notify() is called when the
6312226031Sstas** blocked connection already has a registered unlock-notify callback,
6313226031Sstas** then the new callback replaces the old.)^ ^If sqlite3_unlock_notify() is
6314226031Sstas** called with a NULL pointer as its second argument, then any existing
6315226128Sstas** unlock-notify callback is canceled. ^The blocked connections
6316226031Sstas** unlock-notify callback may also be canceled by closing the blocked
6317226031Sstas** connection using [sqlite3_close()].
6318226031Sstas**
6319226031Sstas** The unlock-notify callback is not reentrant. If an application invokes
6320226031Sstas** any sqlite3_xxx API functions from within an unlock-notify callback, a
6321226031Sstas** crash or deadlock may be the result.
6322226031Sstas**
6323226031Sstas** ^Unless deadlock is detected (see below), sqlite3_unlock_notify() always
6324226031Sstas** returns SQLITE_OK.
6325226031Sstas**
6326226031Sstas** <b>Callback Invocation Details</b>
6327226031Sstas**
6328226128Sstas** When an unlock-notify callback is registered, the application provides a
6329226031Sstas** single void* pointer that is passed to the callback when it is invoked.
6330226031Sstas** However, the signature of the callback function allows SQLite to pass
6331226031Sstas** it an array of void* context pointers. The first argument passed to
6332226031Sstas** an unlock-notify callback is a pointer to an array of void* pointers,
6333226031Sstas** and the second is the number of entries in the array.
6334226031Sstas**
6335226031Sstas** When a blocking connections transaction is concluded, there may be
6336226031Sstas** more than one blocked connection that has registered for an unlock-notify
6337226031Sstas** callback. ^If two or more such blocked connections have specified the
6338226031Sstas** same callback function, then instead of invoking the callback function
6339226031Sstas** multiple times, it is invoked once with the set of void* context pointers
6340226031Sstas** specified by the blocked connections bundled together into an array.
6341226128Sstas** This gives the application an opportunity to prioritize any actions
6342226031Sstas** related to the set of unblocked database connections.
6343226031Sstas**
6344226031Sstas** <b>Deadlock Detection</b>
6345226031Sstas**
6346226128Sstas** Assuming that after registering for an unlock-notify callback a
6347226031Sstas** database waits for the callback to be issued before taking any further
6348226031Sstas** action (a reasonable assumption), then using this API may cause the
6349226031Sstas** application to deadlock. For example, if connection X is waiting for
6350226031Sstas** connection Y's transaction to be concluded, and similarly connection
6351226031Sstas** Y is waiting on connection X's transaction, then neither connection
6352226031Sstas** will proceed and the system may remain deadlocked indefinitely.
6353226031Sstas**
6354226031Sstas** To avoid this scenario, the sqlite3_unlock_notify() performs deadlock
6355226031Sstas** detection. ^If a given call to sqlite3_unlock_notify() would put the
6356226031Sstas** system in a deadlocked state, then SQLITE_LOCKED is returned and no
6357226031Sstas** unlock-notify callback is registered. The system is said to be in
6358226031Sstas** a deadlocked state if connection A has registered for an unlock-notify
6359226031Sstas** callback on the conclusion of connection B's transaction, and connection
6360226031Sstas** B has itself registered for an unlock-notify callback when connection
6361226031Sstas** A's transaction is concluded. ^Indirect deadlock is also detected, so
6362226031Sstas** the system is also considered to be deadlocked if connection B has
6363226031Sstas** registered for an unlock-notify callback on the conclusion of connection
6364226031Sstas** C's transaction, where connection C is waiting on connection A. ^Any
6365226031Sstas** number of levels of indirection are allowed.
6366226031Sstas**
6367226031Sstas** <b>The "DROP TABLE" Exception</b>
6368226031Sstas**
6369226128Sstas** When a call to [sqlite3_step()] returns SQLITE_LOCKED, it is almost
6370226031Sstas** always appropriate to call sqlite3_unlock_notify(). There is however,
6371226031Sstas** one exception. When executing a "DROP TABLE" or "DROP INDEX" statement,
6372226031Sstas** SQLite checks if there are any currently executing SELECT statements
6373226031Sstas** that belong to the same connection. If there are, SQLITE_LOCKED is
6374226031Sstas** returned. In this case there is no "blocking connection", so invoking
6375226031Sstas** sqlite3_unlock_notify() results in the unlock-notify callback being
6376226031Sstas** invoked immediately. If the application then re-attempts the "DROP TABLE"
6377226031Sstas** or "DROP INDEX" query, an infinite loop might be the result.
6378226031Sstas**
6379226031Sstas** One way around this problem is to check the extended error code returned
6380226031Sstas** by an sqlite3_step() call. ^(If there is a blocking connection, then the
6381226031Sstas** extended error code is set to SQLITE_LOCKED_SHAREDCACHE. Otherwise, in
6382226128Sstas** the special "DROP TABLE/INDEX" case, the extended error code is just
6383226031Sstas** SQLITE_LOCKED.)^
6384226031Sstas*/
6385226031SstasSQLITE_API int sqlite3_unlock_notify(
6386226031Sstas  sqlite3 *pBlocked,                          /* Waiting connection */
6387226031Sstas  void (*xNotify)(void **apArg, int nArg),    /* Callback function to invoke */
6388226031Sstas  void *pNotifyArg                            /* Argument to pass to xNotify */
6389226031Sstas);
6390226031Sstas
6391226031Sstas
6392226031Sstas/*
6393226031Sstas** CAPI3REF: String Comparison
6394226031Sstas**
6395226031Sstas** ^The [sqlite3_strnicmp()] API allows applications and extensions to
6396226031Sstas** compare the contents of two buffers containing UTF-8 strings in a
6397226128Sstas** case-independent fashion, using the same definition of case independence
6398226031Sstas** that SQLite uses internally when comparing identifiers.
6399226031Sstas*/
6400226031SstasSQLITE_API int sqlite3_strnicmp(const char *, const char *, int);
6401226031Sstas
6402226031Sstas/*
6403226031Sstas** CAPI3REF: Error Logging Interface
6404226031Sstas**
6405226031Sstas** ^The [sqlite3_log()] interface writes a message into the error log
6406226031Sstas** established by the [SQLITE_CONFIG_LOG] option to [sqlite3_config()].
6407226031Sstas** ^If logging is enabled, the zFormat string and subsequent arguments are
6408226128Sstas** used with [sqlite3_snprintf()] to generate the final output string.
6409226031Sstas**
6410226031Sstas** The sqlite3_log() interface is intended for use by extensions such as
6411226031Sstas** virtual tables, collating functions, and SQL functions.  While there is
6412226031Sstas** nothing to prevent an application from calling sqlite3_log(), doing so
6413226031Sstas** is considered bad form.
6414226031Sstas**
6415226031Sstas** The zFormat string must not be NULL.
6416226031Sstas**
6417226031Sstas** To avoid deadlocks and other threading problems, the sqlite3_log() routine
6418226031Sstas** will not use dynamically allocated memory.  The log message is stored in
6419226031Sstas** a fixed-length buffer on the stack.  If the log message is longer than
6420226031Sstas** a few hundred characters, it will be truncated to the length of the
6421226031Sstas** buffer.
6422226031Sstas*/
6423226031SstasSQLITE_API void sqlite3_log(int iErrCode, const char *zFormat, ...);
6424226031Sstas
6425226031Sstas/*
6426226128Sstas** CAPI3REF: Write-Ahead Log Commit Hook
6427226128Sstas**
6428226128Sstas** ^The [sqlite3_wal_hook()] function is used to register a callback that
6429226128Sstas** will be invoked each time a database connection commits data to a
6430226128Sstas** [write-ahead log] (i.e. whenever a transaction is committed in
6431226128Sstas** [journal_mode | journal_mode=WAL mode]).
6432226128Sstas**
6433226128Sstas** ^The callback is invoked by SQLite after the commit has taken place and
6434226128Sstas** the associated write-lock on the database released, so the implementation
6435226128Sstas** may read, write or [checkpoint] the database as required.
6436226128Sstas**
6437226128Sstas** ^The first parameter passed to the callback function when it is invoked
6438226128Sstas** is a copy of the third parameter passed to sqlite3_wal_hook() when
6439226128Sstas** registering the callback. ^The second is a copy of the database handle.
6440226128Sstas** ^The third parameter is the name of the database that was written to -
6441226128Sstas** either "main" or the name of an [ATTACH]-ed database. ^The fourth parameter
6442226128Sstas** is the number of pages currently in the write-ahead log file,
6443226128Sstas** including those that were just committed.
6444226128Sstas**
6445226128Sstas** The callback function should normally return [SQLITE_OK].  ^If an error
6446226128Sstas** code is returned, that error will propagate back up through the
6447226128Sstas** SQLite code base to cause the statement that provoked the callback
6448226128Sstas** to report an error, though the commit will have still occurred. If the
6449226128Sstas** callback returns [SQLITE_ROW] or [SQLITE_DONE], or if it returns a value
6450226128Sstas** that does not correspond to any valid SQLite error code, the results
6451226128Sstas** are undefined.
6452226128Sstas**
6453226128Sstas** A single database handle may have at most a single write-ahead log callback
6454226128Sstas** registered at one time. ^Calling [sqlite3_wal_hook()] replaces any
6455226128Sstas** previously registered write-ahead log callback. ^Note that the
6456226128Sstas** [sqlite3_wal_autocheckpoint()] interface and the
6457226128Sstas** [wal_autocheckpoint pragma] both invoke [sqlite3_wal_hook()] and will
6458226128Sstas** those overwrite any prior [sqlite3_wal_hook()] settings.
6459226128Sstas*/
6460226128SstasSQLITE_API void *sqlite3_wal_hook(
6461226128Sstas  sqlite3*,
6462226128Sstas  int(*)(void *,sqlite3*,const char*,int),
6463226128Sstas  void*
6464226128Sstas);
6465226128Sstas
6466226128Sstas/*
6467226128Sstas** CAPI3REF: Configure an auto-checkpoint
6468226128Sstas**
6469226128Sstas** ^The [sqlite3_wal_autocheckpoint(D,N)] is a wrapper around
6470226128Sstas** [sqlite3_wal_hook()] that causes any database on [database connection] D
6471226128Sstas** to automatically [checkpoint]
6472226128Sstas** after committing a transaction if there are N or
6473226128Sstas** more frames in the [write-ahead log] file.  ^Passing zero or
6474226128Sstas** a negative value as the nFrame parameter disables automatic
6475226128Sstas** checkpoints entirely.
6476226128Sstas**
6477226128Sstas** ^The callback registered by this function replaces any existing callback
6478226128Sstas** registered using [sqlite3_wal_hook()].  ^Likewise, registering a callback
6479226128Sstas** using [sqlite3_wal_hook()] disables the automatic checkpoint mechanism
6480226128Sstas** configured by this function.
6481226128Sstas**
6482226128Sstas** ^The [wal_autocheckpoint pragma] can be used to invoke this interface
6483226128Sstas** from SQL.
6484226128Sstas**
6485226128Sstas** ^Every new [database connection] defaults to having the auto-checkpoint
6486226128Sstas** enabled with a threshold of 1000 or [SQLITE_DEFAULT_WAL_AUTOCHECKPOINT]
6487226128Sstas** pages.  The use of this interface
6488226128Sstas** is only necessary if the default setting is found to be suboptimal
6489226128Sstas** for a particular application.
6490226128Sstas*/
6491226128SstasSQLITE_API int sqlite3_wal_autocheckpoint(sqlite3 *db, int N);
6492226128Sstas
6493226128Sstas/*
6494226128Sstas** CAPI3REF: Checkpoint a database
6495226128Sstas**
6496226128Sstas** ^The [sqlite3_wal_checkpoint(D,X)] interface causes database named X
6497226128Sstas** on [database connection] D to be [checkpointed].  ^If X is NULL or an
6498226128Sstas** empty string, then a checkpoint is run on all databases of
6499226128Sstas** connection D.  ^If the database connection D is not in
6500226128Sstas** [WAL | write-ahead log mode] then this interface is a harmless no-op.
6501226128Sstas**
6502226128Sstas** ^The [wal_checkpoint pragma] can be used to invoke this interface
6503226128Sstas** from SQL.  ^The [sqlite3_wal_autocheckpoint()] interface and the
6504226128Sstas** [wal_autocheckpoint pragma] can be used to cause this interface to be
6505226128Sstas** run whenever the WAL reaches a certain size threshold.
6506226128Sstas**
6507226128Sstas** See also: [sqlite3_wal_checkpoint_v2()]
6508226128Sstas*/
6509226128SstasSQLITE_API int sqlite3_wal_checkpoint(sqlite3 *db, const char *zDb);
6510226128Sstas
6511226128Sstas/*
6512226128Sstas** CAPI3REF: Checkpoint a database
6513226128Sstas**
6514226128Sstas** Run a checkpoint operation on WAL database zDb attached to database
6515226128Sstas** handle db. The specific operation is determined by the value of the
6516226128Sstas** eMode parameter:
6517226128Sstas**
6518226128Sstas** <dl>
6519226128Sstas** <dt>SQLITE_CHECKPOINT_PASSIVE<dd>
6520226128Sstas**   Checkpoint as many frames as possible without waiting for any database
6521226128Sstas**   readers or writers to finish. Sync the db file if all frames in the log
6522226128Sstas**   are checkpointed. This mode is the same as calling
6523226128Sstas**   sqlite3_wal_checkpoint(). The busy-handler callback is never invoked.
6524226128Sstas**
6525226128Sstas** <dt>SQLITE_CHECKPOINT_FULL<dd>
6526226128Sstas**   This mode blocks (calls the busy-handler callback) until there is no
6527226128Sstas**   database writer and all readers are reading from the most recent database
6528226128Sstas**   snapshot. It then checkpoints all frames in the log file and syncs the
6529226128Sstas**   database file. This call blocks database writers while it is running,
6530226128Sstas**   but not database readers.
6531226128Sstas**
6532226128Sstas** <dt>SQLITE_CHECKPOINT_RESTART<dd>
6533226128Sstas**   This mode works the same way as SQLITE_CHECKPOINT_FULL, except after
6534226128Sstas**   checkpointing the log file it blocks (calls the busy-handler callback)
6535226128Sstas**   until all readers are reading from the database file only. This ensures
6536226128Sstas**   that the next client to write to the database file restarts the log file
6537226128Sstas**   from the beginning. This call blocks database writers while it is running,
6538226128Sstas**   but not database readers.
6539226128Sstas** </dl>
6540226128Sstas**
6541226128Sstas** If pnLog is not NULL, then *pnLog is set to the total number of frames in
6542226128Sstas** the log file before returning. If pnCkpt is not NULL, then *pnCkpt is set to
6543226128Sstas** the total number of checkpointed frames (including any that were already
6544226128Sstas** checkpointed when this function is called). *pnLog and *pnCkpt may be
6545226128Sstas** populated even if sqlite3_wal_checkpoint_v2() returns other than SQLITE_OK.
6546226128Sstas** If no values are available because of an error, they are both set to -1
6547226128Sstas** before returning to communicate this to the caller.
6548226128Sstas**
6549226128Sstas** All calls obtain an exclusive "checkpoint" lock on the database file. If
6550226128Sstas** any other process is running a checkpoint operation at the same time, the
6551226128Sstas** lock cannot be obtained and SQLITE_BUSY is returned. Even if there is a
6552226128Sstas** busy-handler configured, it will not be invoked in this case.
6553226128Sstas**
6554226128Sstas** The SQLITE_CHECKPOINT_FULL and RESTART modes also obtain the exclusive
6555226128Sstas** "writer" lock on the database file. If the writer lock cannot be obtained
6556226128Sstas** immediately, and a busy-handler is configured, it is invoked and the writer
6557226128Sstas** lock retried until either the busy-handler returns 0 or the lock is
6558226128Sstas** successfully obtained. The busy-handler is also invoked while waiting for
6559226128Sstas** database readers as described above. If the busy-handler returns 0 before
6560226128Sstas** the writer lock is obtained or while waiting for database readers, the
6561226128Sstas** checkpoint operation proceeds from that point in the same way as
6562226128Sstas** SQLITE_CHECKPOINT_PASSIVE - checkpointing as many frames as possible
6563226128Sstas** without blocking any further. SQLITE_BUSY is returned in this case.
6564226128Sstas**
6565226128Sstas** If parameter zDb is NULL or points to a zero length string, then the
6566226128Sstas** specified operation is attempted on all WAL databases. In this case the
6567226128Sstas** values written to output parameters *pnLog and *pnCkpt are undefined. If
6568226128Sstas** an SQLITE_BUSY error is encountered when processing one or more of the
6569226128Sstas** attached WAL databases, the operation is still attempted on any remaining
6570226128Sstas** attached databases and SQLITE_BUSY is returned to the caller. If any other
6571226128Sstas** error occurs while processing an attached database, processing is abandoned
6572226128Sstas** and the error code returned to the caller immediately. If no error
6573226128Sstas** (SQLITE_BUSY or otherwise) is encountered while processing the attached
6574226128Sstas** databases, SQLITE_OK is returned.
6575226128Sstas**
6576226128Sstas** If database zDb is the name of an attached database that is not in WAL
6577226128Sstas** mode, SQLITE_OK is returned and both *pnLog and *pnCkpt set to -1. If
6578226128Sstas** zDb is not NULL (or a zero length string) and is not the name of any
6579226128Sstas** attached database, SQLITE_ERROR is returned to the caller.
6580226128Sstas*/
6581226128SstasSQLITE_API int sqlite3_wal_checkpoint_v2(
6582226128Sstas  sqlite3 *db,                    /* Database handle */
6583226128Sstas  const char *zDb,                /* Name of attached database (or NULL) */
6584226128Sstas  int eMode,                      /* SQLITE_CHECKPOINT_* value */
6585226128Sstas  int *pnLog,                     /* OUT: Size of WAL log in frames */
6586226128Sstas  int *pnCkpt                     /* OUT: Total number of frames checkpointed */
6587226128Sstas);
6588226128Sstas
6589226128Sstas/*
6590226128Sstas** CAPI3REF: Checkpoint operation parameters
6591226128Sstas**
6592226128Sstas** These constants can be used as the 3rd parameter to
6593226128Sstas** [sqlite3_wal_checkpoint_v2()].  See the [sqlite3_wal_checkpoint_v2()]
6594226128Sstas** documentation for additional information about the meaning and use of
6595226128Sstas** each of these values.
6596226128Sstas*/
6597226128Sstas#define SQLITE_CHECKPOINT_PASSIVE 0
6598226128Sstas#define SQLITE_CHECKPOINT_FULL    1
6599226128Sstas#define SQLITE_CHECKPOINT_RESTART 2
6600226128Sstas
6601226128Sstas/*
6602226128Sstas** CAPI3REF: Virtual Table Interface Configuration
6603226128Sstas**
6604226128Sstas** This function may be called by either the [xConnect] or [xCreate] method
6605226128Sstas** of a [virtual table] implementation to configure
6606226128Sstas** various facets of the virtual table interface.
6607226128Sstas**
6608226128Sstas** If this interface is invoked outside the context of an xConnect or
6609226128Sstas** xCreate virtual table method then the behavior is undefined.
6610226128Sstas**
6611226128Sstas** At present, there is only one option that may be configured using
6612226128Sstas** this function. (See [SQLITE_VTAB_CONSTRAINT_SUPPORT].)  Further options
6613226128Sstas** may be added in the future.
6614226128Sstas*/
6615226128SstasSQLITE_API int sqlite3_vtab_config(sqlite3*, int op, ...);
6616226128Sstas
6617226128Sstas/*
6618226128Sstas** CAPI3REF: Virtual Table Configuration Options
6619226128Sstas**
6620226128Sstas** These macros define the various options to the
6621226128Sstas** [sqlite3_vtab_config()] interface that [virtual table] implementations
6622226128Sstas** can use to customize and optimize their behavior.
6623226128Sstas**
6624226128Sstas** <dl>
6625226128Sstas** <dt>SQLITE_VTAB_CONSTRAINT_SUPPORT
6626226128Sstas** <dd>Calls of the form
6627226128Sstas** [sqlite3_vtab_config](db,SQLITE_VTAB_CONSTRAINT_SUPPORT,X) are supported,
6628226128Sstas** where X is an integer.  If X is zero, then the [virtual table] whose
6629226128Sstas** [xCreate] or [xConnect] method invoked [sqlite3_vtab_config()] does not
6630226128Sstas** support constraints.  In this configuration (which is the default) if
6631226128Sstas** a call to the [xUpdate] method returns [SQLITE_CONSTRAINT], then the entire
6632226128Sstas** statement is rolled back as if [ON CONFLICT | OR ABORT] had been
6633226128Sstas** specified as part of the users SQL statement, regardless of the actual
6634226128Sstas** ON CONFLICT mode specified.
6635226128Sstas**
6636226128Sstas** If X is non-zero, then the virtual table implementation guarantees
6637226128Sstas** that if [xUpdate] returns [SQLITE_CONSTRAINT], it will do so before
6638226128Sstas** any modifications to internal or persistent data structures have been made.
6639226128Sstas** If the [ON CONFLICT] mode is ABORT, FAIL, IGNORE or ROLLBACK, SQLite
6640226128Sstas** is able to roll back a statement or database transaction, and abandon
6641226128Sstas** or continue processing the current SQL statement as appropriate.
6642226128Sstas** If the ON CONFLICT mode is REPLACE and the [xUpdate] method returns
6643226128Sstas** [SQLITE_CONSTRAINT], SQLite handles this as if the ON CONFLICT mode
6644226128Sstas** had been ABORT.
6645226128Sstas**
6646226128Sstas** Virtual table implementations that are required to handle OR REPLACE
6647226128Sstas** must do so within the [xUpdate] method. If a call to the
6648226128Sstas** [sqlite3_vtab_on_conflict()] function indicates that the current ON
6649226128Sstas** CONFLICT policy is REPLACE, the virtual table implementation should
6650226128Sstas** silently replace the appropriate rows within the xUpdate callback and
6651226128Sstas** return SQLITE_OK. Or, if this is not possible, it may return
6652226128Sstas** SQLITE_CONSTRAINT, in which case SQLite falls back to OR ABORT
6653226128Sstas** constraint handling.
6654226128Sstas** </dl>
6655226128Sstas*/
6656226128Sstas#define SQLITE_VTAB_CONSTRAINT_SUPPORT 1
6657226128Sstas
6658226128Sstas/*
6659226128Sstas** CAPI3REF: Determine The Virtual Table Conflict Policy
6660226128Sstas**
6661226128Sstas** This function may only be called from within a call to the [xUpdate] method
6662226128Sstas** of a [virtual table] implementation for an INSERT or UPDATE operation. ^The
6663226128Sstas** value returned is one of [SQLITE_ROLLBACK], [SQLITE_IGNORE], [SQLITE_FAIL],
6664226128Sstas** [SQLITE_ABORT], or [SQLITE_REPLACE], according to the [ON CONFLICT] mode
6665226128Sstas** of the SQL statement that triggered the call to the [xUpdate] method of the
6666226128Sstas** [virtual table].
6667226128Sstas*/
6668226128SstasSQLITE_API int sqlite3_vtab_on_conflict(sqlite3 *);
6669226128Sstas
6670226128Sstas/*
6671226128Sstas** CAPI3REF: Conflict resolution modes
6672226128Sstas**
6673226128Sstas** These constants are returned by [sqlite3_vtab_on_conflict()] to
6674226128Sstas** inform a [virtual table] implementation what the [ON CONFLICT] mode
6675226128Sstas** is for the SQL statement being evaluated.
6676226128Sstas**
6677226128Sstas** Note that the [SQLITE_IGNORE] constant is also used as a potential
6678226128Sstas** return value from the [sqlite3_set_authorizer()] callback and that
6679226128Sstas** [SQLITE_ABORT] is also a [result code].
6680226128Sstas*/
6681226128Sstas#define SQLITE_ROLLBACK 1
6682226128Sstas/* #define SQLITE_IGNORE 2 // Also used by sqlite3_authorizer() callback */
6683226128Sstas#define SQLITE_FAIL     3
6684226128Sstas/* #define SQLITE_ABORT 4  // Also an error code */
6685226128Sstas#define SQLITE_REPLACE  5
6686226128Sstas
6687226128Sstas
6688226128Sstas
6689226128Sstas/*
6690226031Sstas** Undo the hack that converts floating point types to integer for
6691226031Sstas** builds on processors without floating point support.
6692226031Sstas*/
6693226031Sstas#ifdef SQLITE_OMIT_FLOATING_POINT
6694226031Sstas# undef double
6695226031Sstas#endif
6696226031Sstas
6697226031Sstas#ifdef __cplusplus
6698226031Sstas}  /* End of the 'extern "C"' block */
6699226031Sstas#endif
6700226031Sstas#endif
6701226031Sstas
6702226128Sstas/*
6703226128Sstas** 2010 August 30
6704226128Sstas**
6705226128Sstas** The author disclaims copyright to this source code.  In place of
6706226128Sstas** a legal notice, here is a blessing:
6707226128Sstas**
6708226128Sstas**    May you do good and not evil.
6709226128Sstas**    May you find forgiveness for yourself and forgive others.
6710226128Sstas**    May you share freely, never taking more than you give.
6711226128Sstas**
6712226128Sstas*************************************************************************
6713226128Sstas*/
6714226128Sstas
6715226128Sstas#ifndef _SQLITE3RTREE_H_
6716226128Sstas#define _SQLITE3RTREE_H_
6717226128Sstas
6718226128Sstas
6719226128Sstas#ifdef __cplusplus
6720226128Sstasextern "C" {
6721226128Sstas#endif
6722226128Sstas
6723226128Sstastypedef struct sqlite3_rtree_geometry sqlite3_rtree_geometry;
6724226128Sstas
6725226128Sstas/*
6726226128Sstas** Register a geometry callback named zGeom that can be used as part of an
6727226128Sstas** R-Tree geometry query as follows:
6728226128Sstas**
6729226128Sstas**   SELECT ... FROM <rtree> WHERE <rtree col> MATCH $zGeom(... params ...)
6730226128Sstas*/
6731226128SstasSQLITE_API int sqlite3_rtree_geometry_callback(
6732226128Sstas  sqlite3 *db,
6733226128Sstas  const char *zGeom,
6734226128Sstas  int (*xGeom)(sqlite3_rtree_geometry *, int nCoord, double *aCoord, int *pRes),
6735226128Sstas  void *pContext
6736226128Sstas);
6737226128Sstas
6738226128Sstas
6739226128Sstas/*
6740226128Sstas** A pointer to a structure of the following type is passed as the first
6741226128Sstas** argument to callbacks registered using rtree_geometry_callback().
6742226128Sstas*/
6743226128Sstasstruct sqlite3_rtree_geometry {
6744226128Sstas  void *pContext;                 /* Copy of pContext passed to s_r_g_c() */
6745226128Sstas  int nParam;                     /* Size of array aParam[] */
6746226128Sstas  double *aParam;                 /* Parameters passed to SQL geom function */
6747226128Sstas  void *pUser;                    /* Callback implementation user data */
6748226128Sstas  void (*xDelUser)(void *);       /* Called by SQLite to clean up pUser */
6749226128Sstas};
6750226128Sstas
6751226128Sstas
6752226128Sstas#ifdef __cplusplus
6753226128Sstas}  /* end of the 'extern "C"' block */
6754226128Sstas#endif
6755226128Sstas
6756226128Sstas#endif  /* ifndef _SQLITE3RTREE_H_ */
6757226128Sstas
6758