blob: 8f4f0820342ae6660d133927300415a1112e65c8 [file] [log] [blame]
drh75897232000-05-29 14:26:00 +00001/*
drhb19a2bc2001-09-16 00:13:26 +00002** 2001 September 15
drh75897232000-05-29 14:26:00 +00003**
drhb19a2bc2001-09-16 00:13:26 +00004** The author disclaims copyright to this source code. In place of
5** a legal notice, here is a blessing:
drh75897232000-05-29 14:26:00 +00006**
drhb19a2bc2001-09-16 00:13:26 +00007** May you do good and not evil.
8** May you find forgiveness for yourself and forgive others.
9** May you share freely, never taking more than you give.
drh75897232000-05-29 14:26:00 +000010**
11*************************************************************************
drhb19a2bc2001-09-16 00:13:26 +000012** This header file defines the interface that the SQLite library
drh6ed48bf2007-06-14 20:57:18 +000013** presents to client programs. If a C-function, structure, datatype,
14** or constant definition does not appear in this file, then it is
15** not a published API of SQLite, is subject to change without
16** notice, and should not be referenced by programs that use SQLite.
drh75897232000-05-29 14:26:00 +000017**
drh6ed48bf2007-06-14 20:57:18 +000018** Some of the definitions that are in this file are marked as
19** "experimental". Experimental interfaces are normally new
20** features recently added to SQLite. We do not anticipate changes
21** to experimental interfaces but reserve to make minor changes if
22** experience from use "in the wild" suggest such changes are prudent.
23**
24** The official C-language API documentation for SQLite is derived
25** from comments in this file. This file is the authoritative source
26** on how SQLite interfaces are suppose to operate.
27**
28** The name of this file under configuration management is "sqlite.h.in".
29** The makefile makes some minor changes to this file (such as inserting
30** the version number) and changes its name to "sqlite3.h" as
31** part of the build process.
32**
drh6d2069d2007-08-14 01:58:53 +000033** @(#) $Id: sqlite.h.in,v 1.220 2007/08/14 01:58:53 drh Exp $
drh75897232000-05-29 14:26:00 +000034*/
drh12057d52004-09-06 17:34:12 +000035#ifndef _SQLITE3_H_
36#define _SQLITE3_H_
drha18c5682000-10-08 22:20:57 +000037#include <stdarg.h> /* Needed for the definition of va_list */
drh75897232000-05-29 14:26:00 +000038
39/*
drh382c0242001-10-06 16:33:02 +000040** Make sure we can call this stuff from C++.
41*/
42#ifdef __cplusplus
43extern "C" {
44#endif
45
drh6d2069d2007-08-14 01:58:53 +000046
drh382c0242001-10-06 16:33:02 +000047/*
drh73be5012007-08-08 12:11:21 +000048** Add the ability to override 'extern'
49*/
50#ifndef SQLITE_EXTERN
51# define SQLITE_EXTERN extern
52#endif
53
54/*
drh6ed48bf2007-06-14 20:57:18 +000055** Make sure these symbols where not defined by some previous header
56** file.
drhb86ccfb2003-01-28 23:13:10 +000057*/
drh1e284f42004-10-06 15:52:01 +000058#ifdef SQLITE_VERSION
59# undef SQLITE_VERSION
drh1e284f42004-10-06 15:52:01 +000060#endif
drh6ed48bf2007-06-14 20:57:18 +000061#ifdef SQLITE_VERSION_NUMBER
62# undef SQLITE_VERSION_NUMBER
63#endif
danielk197799ba19e2005-02-05 07:33:34 +000064
65/*
drh6ed48bf2007-06-14 20:57:18 +000066** CAPI3REF: Compile-Time Library Version Numbers
67**
68** The version of the SQLite library is contained in the sqlite3.h
69** header file in a #define named SQLITE_VERSION. The SQLITE_VERSION
70** macro resolves to a string constant.
71**
72** The format of the version string is "X.Y.Z", where
danielk197799ba19e2005-02-05 07:33:34 +000073** X is the major version number, Y is the minor version number and Z
drh6ed48bf2007-06-14 20:57:18 +000074** is the release number. The X.Y.Z might be followed by "alpha" or "beta".
danielk197799ba19e2005-02-05 07:33:34 +000075** For example "3.1.1beta".
76**
drh6ed48bf2007-06-14 20:57:18 +000077** The X value is always 3 in SQLite. The X value only changes when
78** backwards compatibility is broken and we intend to never break
79** backwards compatibility. The Y value only changes when
80** there are major feature enhancements that are forwards compatible
81** but not backwards compatible. The Z value is incremented with
82** each release but resets back to 0 when Y is incremented.
83**
danielk197799ba19e2005-02-05 07:33:34 +000084** The SQLITE_VERSION_NUMBER is an integer with the value
danielk1977e48b1f12007-05-24 09:44:10 +000085** (X*1000000 + Y*1000 + Z). For example, for version "3.1.1beta",
danielk197799ba19e2005-02-05 07:33:34 +000086** SQLITE_VERSION_NUMBER is set to 3001001. To detect if they are using
87** version 3.1.1 or greater at compile time, programs may use the test
88** (SQLITE_VERSION_NUMBER>=3001001).
drh6ed48bf2007-06-14 20:57:18 +000089**
90** See also: [sqlite3_libversion()] and [sqlite3_libversion_number()].
danielk197799ba19e2005-02-05 07:33:34 +000091*/
drh6ed48bf2007-06-14 20:57:18 +000092#define SQLITE_VERSION "--VERS--"
danielk197799ba19e2005-02-05 07:33:34 +000093#define SQLITE_VERSION_NUMBER --VERSION-NUMBER--
drhb86ccfb2003-01-28 23:13:10 +000094
95/*
drh6ed48bf2007-06-14 20:57:18 +000096** CAPI3REF: Run-Time Library Version Numbers
97**
98** These routines return values equivalent to the header constants
99** [SQLITE_VERSION] and [SQLITE_VERSION_NUMBER]. The values returned
100** by this routines should only be different from the header values
101** if you compile your program using an sqlite3.h header from a
102** different version of SQLite that the version of the library you
103** link against.
104**
105** The sqlite3_version[] string constant contains the text of the
106** [SQLITE_VERSION] string. The sqlite3_libversion() function returns
107** a poiner to the sqlite3_version[] string constant. The function
108** is provided for DLL users who can only access functions and not
109** constants within the DLL.
drhb217a572000-08-22 13:40:18 +0000110*/
drh73be5012007-08-08 12:11:21 +0000111SQLITE_EXTERN const char sqlite3_version[];
drha3f70cb2004-09-30 14:24:50 +0000112const char *sqlite3_libversion(void);
danielk197799ba19e2005-02-05 07:33:34 +0000113int sqlite3_libversion_number(void);
114
115/*
drh6ed48bf2007-06-14 20:57:18 +0000116** CAPI3REF: Database Connection Handle
117**
118** Each open SQLite database is represented by pointer to an instance of the
119** opaque structure named "sqlite3". It is useful to think of an sqlite3
drh6d2069d2007-08-14 01:58:53 +0000120** pointer as an object. The [sqlite3_open], [sqlite3_open16], and
121** [sqlite3_open_v2] interfaces are its constructors
drh6ed48bf2007-06-14 20:57:18 +0000122** and [sqlite3_close] is its destructor. There are many other interfaces
123** (such as [sqlite3_prepare_v2], [sqlite3_create_function], and
124** [sqlite3_busy_timeout] to name but three) that are methods on this
125** object.
drh75897232000-05-29 14:26:00 +0000126*/
drh9bb575f2004-09-06 17:24:11 +0000127typedef struct sqlite3 sqlite3;
danielk197765904932004-05-26 06:18:37 +0000128
drh75897232000-05-29 14:26:00 +0000129
130/*
drh6ed48bf2007-06-14 20:57:18 +0000131** CAPI3REF: 64-Bit Integer Types
132**
drhefad9992004-06-22 12:13:55 +0000133** Some compilers do not support the "long long" datatype. So we have
drh6ed48bf2007-06-14 20:57:18 +0000134** to do compiler-specific typedefs for 64-bit signed and unsigned integers.
135**
136** Many SQLite interface functions require a 64-bit integer arguments.
137** Those interfaces are declared using this typedef.
drhefad9992004-06-22 12:13:55 +0000138*/
drh27436af2006-03-28 23:57:17 +0000139#ifdef SQLITE_INT64_TYPE
drh9b8f4472006-04-04 01:54:55 +0000140 typedef SQLITE_INT64_TYPE sqlite_int64;
drh27436af2006-03-28 23:57:17 +0000141 typedef unsigned SQLITE_INT64_TYPE sqlite_uint64;
142#elif defined(_MSC_VER) || defined(__BORLANDC__)
drhefad9992004-06-22 12:13:55 +0000143 typedef __int64 sqlite_int64;
drh1211de32004-07-26 12:24:22 +0000144 typedef unsigned __int64 sqlite_uint64;
drhefad9992004-06-22 12:13:55 +0000145#else
146 typedef long long int sqlite_int64;
drh1211de32004-07-26 12:24:22 +0000147 typedef unsigned long long int sqlite_uint64;
drhefad9992004-06-22 12:13:55 +0000148#endif
drh6d2069d2007-08-14 01:58:53 +0000149typedef sqlite_int64 sqlite3_int64;
150typedef sqlite_uint64 sqlite3_uint64;
drhefad9992004-06-22 12:13:55 +0000151
drhb37df7b2005-10-13 02:09:49 +0000152/*
153** If compiling for a processor that lacks floating point support,
154** substitute integer for floating-point
155*/
156#ifdef SQLITE_OMIT_FLOATING_POINT
drh6d2069d2007-08-14 01:58:53 +0000157# define double sqlite3_int64
drhb37df7b2005-10-13 02:09:49 +0000158#endif
drhefad9992004-06-22 12:13:55 +0000159
160/*
drh6ed48bf2007-06-14 20:57:18 +0000161** CAPI3REF: Closing A Database Connection
drh75897232000-05-29 14:26:00 +0000162**
163** Call this function with a pointer to a structure that was previously
drh6d2069d2007-08-14 01:58:53 +0000164** returned from [sqlite3_open()], [sqlite3_open16()], or
165** [sqlite3_open_v2()] and the corresponding database will by
drh6ed48bf2007-06-14 20:57:18 +0000166** closed.
danielk197796d81f92004-06-19 03:33:57 +0000167**
drh6ed48bf2007-06-14 20:57:18 +0000168** All SQL statements prepared using [sqlite3_prepare_v2()] or
169** [sqlite3_prepare16_v2()] must be destroyed using [sqlite3_finalize()]
170** before this routine is called. Otherwise, SQLITE_BUSY is returned and the
danielk197796d81f92004-06-19 03:33:57 +0000171** database connection remains open.
drh75897232000-05-29 14:26:00 +0000172*/
danielk1977f9d64d22004-06-19 08:18:07 +0000173int sqlite3_close(sqlite3 *);
drh75897232000-05-29 14:26:00 +0000174
175/*
176** The type for a callback function.
drh6ed48bf2007-06-14 20:57:18 +0000177** This is legacy and deprecated. It is included for historical
178** compatibility and is not documented.
drh75897232000-05-29 14:26:00 +0000179*/
drh12057d52004-09-06 17:34:12 +0000180typedef int (*sqlite3_callback)(void*,int,char**, char**);
drh75897232000-05-29 14:26:00 +0000181
182/*
drh6ed48bf2007-06-14 20:57:18 +0000183** CAPI3REF: One-Step Query Execution Interface
184**
185** This interface is used to do a one-time evaluatation of zero
186** or more SQL statements. UTF-8 text of the SQL statements to
187** be evaluted is passed in as the second parameter. The statements
188** are prepared one by one using [sqlite3_prepare()], evaluated
189** using [sqlite3_step()], then destroyed using [sqlite3_finalize()].
drh75897232000-05-29 14:26:00 +0000190**
191** If one or more of the SQL statements are queries, then
192** the callback function specified by the 3rd parameter is
193** invoked once for each row of the query result. This callback
194** should normally return 0. If the callback returns a non-zero
195** value then the query is aborted, all subsequent SQL statements
danielk19776f8a5032004-05-10 10:34:51 +0000196** are skipped and the sqlite3_exec() function returns the SQLITE_ABORT.
drh75897232000-05-29 14:26:00 +0000197**
drh6ed48bf2007-06-14 20:57:18 +0000198** The 4th parameter to this interface is an arbitrary pointer that is
199** passed through to the callback function as its first parameter.
drh75897232000-05-29 14:26:00 +0000200**
201** The 2nd parameter to the callback function is the number of
drhb19a2bc2001-09-16 00:13:26 +0000202** columns in the query result. The 3rd parameter to the callback
drh6ed48bf2007-06-14 20:57:18 +0000203** is an array of strings holding the values for each column
204** as extracted using [sqlite3_column_text()].
205** The 4th parameter to the callback is an array of strings
206** obtained using [sqlite3_column_name()] and holding
drhb19a2bc2001-09-16 00:13:26 +0000207** the names of each column.
drh75897232000-05-29 14:26:00 +0000208**
209** The callback function may be NULL, even for queries. A NULL
210** callback is not an error. It just means that no callback
211** will be invoked.
212**
213** If an error occurs while parsing or evaluating the SQL (but
214** not while executing the callback) then an appropriate error
drh6ed48bf2007-06-14 20:57:18 +0000215** message is written into memory obtained from [sqlite3_malloc()] and
drhb19a2bc2001-09-16 00:13:26 +0000216** *errmsg is made to point to that message. The calling function
217** is responsible for freeing the memory that holds the error
drh6ed48bf2007-06-14 20:57:18 +0000218** message. Use [sqlite3_free()] for this. If errmsg==NULL,
drhb86ccfb2003-01-28 23:13:10 +0000219** then no error message is ever written.
drhb19a2bc2001-09-16 00:13:26 +0000220**
221** The return value is is SQLITE_OK if there are no errors and
drh6ed48bf2007-06-14 20:57:18 +0000222** some other [SQLITE_OK | return code] if there is an error.
223** The particular return value depends on the type of error.
drh58b95762000-06-02 01:17:37 +0000224**
drh75897232000-05-29 14:26:00 +0000225*/
danielk19776f8a5032004-05-10 10:34:51 +0000226int sqlite3_exec(
drh6ed48bf2007-06-14 20:57:18 +0000227 sqlite3*, /* An open database */
228 const char *sql, /* SQL to be evaluted */
229 int (*callback)(void*,int,char**,char**), /* Callback function */
230 void *, /* 1st argument to callback */
231 char **errmsg /* Error msg written here */
drh75897232000-05-29 14:26:00 +0000232);
233
drh58b95762000-06-02 01:17:37 +0000234/*
drh6ed48bf2007-06-14 20:57:18 +0000235** CAPI3REF: Result Codes
236** KEYWORDS: SQLITE_OK
237**
238** Many SQLite functions return an integer result code from the set shown
239** above in order to indicates success or failure.
240**
241** The result codes above are the only ones returned by SQLite in its
242** default configuration. However, the [sqlite3_extended_result_codes()]
243** API can be used to set a database connectoin to return more detailed
244** result codes.
245**
246** See also: [SQLITE_IOERR_READ | extended result codes]
247**
drh58b95762000-06-02 01:17:37 +0000248*/
drh717e6402001-09-27 03:22:32 +0000249#define SQLITE_OK 0 /* Successful result */
drh15b9a152006-01-31 20:49:13 +0000250/* beginning-of-error-codes */
drh717e6402001-09-27 03:22:32 +0000251#define SQLITE_ERROR 1 /* SQL error or missing database */
drh2db0bbc2005-08-11 02:10:18 +0000252#define SQLITE_INTERNAL 2 /* NOT USED. Internal logic error in SQLite */
drh717e6402001-09-27 03:22:32 +0000253#define SQLITE_PERM 3 /* Access permission denied */
254#define SQLITE_ABORT 4 /* Callback routine requested an abort */
255#define SQLITE_BUSY 5 /* The database file is locked */
256#define SQLITE_LOCKED 6 /* A table in the database is locked */
257#define SQLITE_NOMEM 7 /* A malloc() failed */
258#define SQLITE_READONLY 8 /* Attempt to write a readonly database */
drh24cd67e2004-05-10 16:18:47 +0000259#define SQLITE_INTERRUPT 9 /* Operation terminated by sqlite3_interrupt()*/
drh717e6402001-09-27 03:22:32 +0000260#define SQLITE_IOERR 10 /* Some kind of disk I/O error occurred */
261#define SQLITE_CORRUPT 11 /* The database disk image is malformed */
drh2db0bbc2005-08-11 02:10:18 +0000262#define SQLITE_NOTFOUND 12 /* NOT USED. Table or record not found */
drh717e6402001-09-27 03:22:32 +0000263#define SQLITE_FULL 13 /* Insertion failed because database is full */
264#define SQLITE_CANTOPEN 14 /* Unable to open the database file */
drh4f0ee682007-03-30 20:43:40 +0000265#define SQLITE_PROTOCOL 15 /* NOT USED. Database lock protocol error */
drh24cd67e2004-05-10 16:18:47 +0000266#define SQLITE_EMPTY 16 /* Database is empty */
drh717e6402001-09-27 03:22:32 +0000267#define SQLITE_SCHEMA 17 /* The database schema changed */
drhc797d4d2007-05-08 01:08:49 +0000268#define SQLITE_TOOBIG 18 /* String or BLOB exceeds size limit */
drh717e6402001-09-27 03:22:32 +0000269#define SQLITE_CONSTRAINT 19 /* Abort due to contraint violation */
drh8aff1012001-12-22 14:49:24 +0000270#define SQLITE_MISMATCH 20 /* Data type mismatch */
drh247be432002-05-10 05:44:55 +0000271#define SQLITE_MISUSE 21 /* Library used incorrectly */
drh8766c342002-11-09 00:33:15 +0000272#define SQLITE_NOLFS 22 /* Uses OS features not supported on host */
drhed6c8672003-01-12 18:02:16 +0000273#define SQLITE_AUTH 23 /* Authorization denied */
drh1c2d8412003-03-31 00:30:47 +0000274#define SQLITE_FORMAT 24 /* Auxiliary database format error */
danielk19776f8a5032004-05-10 10:34:51 +0000275#define SQLITE_RANGE 25 /* 2nd parameter to sqlite3_bind out of range */
drhc602f9a2004-02-12 19:01:04 +0000276#define SQLITE_NOTADB 26 /* File opened that is not a database file */
danielk19776f8a5032004-05-10 10:34:51 +0000277#define SQLITE_ROW 100 /* sqlite3_step() has another row ready */
278#define SQLITE_DONE 101 /* sqlite3_step() has finished executing */
drh15b9a152006-01-31 20:49:13 +0000279/* end-of-error-codes */
drh717e6402001-09-27 03:22:32 +0000280
drhaf9ff332002-01-16 21:00:27 +0000281/*
drh6ed48bf2007-06-14 20:57:18 +0000282** CAPI3REF: Extended Result Codes
drh4ac285a2006-09-15 07:28:50 +0000283**
drh6ed48bf2007-06-14 20:57:18 +0000284** In its default configuration, SQLite API routines return one of 26 integer
285** result codes described at result-codes. However, experience has shown that
286** many of these result codes are too course-grained. They do not provide as
287** much information about problems as users might like. In an effort to
288** address this, newer versions of SQLite (version 3.3.8 and later) include
289** support for additional result codes that provide more detailed information
290** about errors. The extended result codes are enabled (or disabled) for
291** each database
292** connection using the [sqlite3_extended_result_codes()] API.
293**
294** Some of the available extended result codes are listed above.
295** We expect the number of extended result codes will be expand
296** over time. Software that uses extended result codes should expect
297** to see new result codes in future releases of SQLite.
298**
299** The symbolic name for an extended result code always contains a related
300** primary result code as a prefix. Primary result codes contain a single
301** "_" character. Extended result codes contain two or more "_" characters.
302** The numeric value of an extended result code can be converted to its
303** corresponding primary result code by masking off the lower 8 bytes.
drh4ac285a2006-09-15 07:28:50 +0000304**
305** The SQLITE_OK result code will never be extended. It will always
306** be exactly zero.
drh4ac285a2006-09-15 07:28:50 +0000307*/
308#define SQLITE_IOERR_READ (SQLITE_IOERR | (1<<8))
309#define SQLITE_IOERR_SHORT_READ (SQLITE_IOERR | (2<<8))
310#define SQLITE_IOERR_WRITE (SQLITE_IOERR | (3<<8))
311#define SQLITE_IOERR_FSYNC (SQLITE_IOERR | (4<<8))
312#define SQLITE_IOERR_DIR_FSYNC (SQLITE_IOERR | (5<<8))
313#define SQLITE_IOERR_TRUNCATE (SQLITE_IOERR | (6<<8))
314#define SQLITE_IOERR_FSTAT (SQLITE_IOERR | (7<<8))
315#define SQLITE_IOERR_UNLOCK (SQLITE_IOERR | (8<<8))
316#define SQLITE_IOERR_RDLOCK (SQLITE_IOERR | (9<<8))
danielk1977979f38e2007-03-27 16:19:51 +0000317#define SQLITE_IOERR_DELETE (SQLITE_IOERR | (10<<8))
danielk1977e965ac72007-06-13 15:22:28 +0000318#define SQLITE_IOERR_BLOCKED (SQLITE_IOERR | (11<<8))
drh4ac285a2006-09-15 07:28:50 +0000319
320/*
drh6d2069d2007-08-14 01:58:53 +0000321** CAPI3REF: Flags For File Open Operations
322**
323** Combination of the following bit values are used as the
324** third argument to the [sqlite3_open_v2()] interface and
325** as fourth argument to the xOpen method of the
326** [sqlite3_adaptor] object.
327**
328*/
329#define SQLITE_OPEN_READONLY 0x00000001
330#define SQLITE_OPEN_READWRITE 0x00000002
331#define SQLITE_OPEN_CREATE 0x00000004
332#define SQLITE_OPEN_DELETEONCLOSE 0x00000008
333#define SQLITE_OPEN_EXCLUSIVE 0x00000010
334#define SQLITE_OPEN_MAIN_DB 0x00000100
335#define SQLITE_OPEN_TEMP_DB 0x00000200
336#define SQLITE_OPEN_MAIN_JOURNAL 0x00000300
337#define SQLITE_OPEN_TEMP_JOURNAL 0x00000400
338#define SQLITE_OPEN_SUBJOURNAL 0x00000500
339#define SQLITE_OPEN_MASTER_JOURNAL 0x00000600
340
341/*
342** CAPI3REF: Device Characteristics
343**
344** The xDeviceCapabilities method of the [sqlite3_io_methods]
345** object returns an integer which is a vector of the following
346** bit values expressing I/O characteristics of the mass storage
347** device that holds the file that the [sqlite3_io_methods]
348** refers to.
349**
350** The SQLITE_IOCAP_ATOMIC property means that all writes of
351** any size are atomic. The SQLITE_IOCAP_ATOMICnnn values
352** mean that writes of blocks that are nnn bytes in size and
353** are aligned to an address which is an integer multiple of
354** nnn are atomic. The SQLITE_IOCAP_SAFE_APPEND value means
355** that when data is appended to a file, the data is appended
356** first then the size of the file is extended, never the other
357** way around. The SQLITE_IOCAP_SEQUENTIAL property means that
358** information is written to disk in the same order as calls
359** to xWrite().
360*/
361#define SQLITE_IOCAP_ATOMIC 0x00000001
362#define SQLITE_IOCAP_ATOMIC512 0x00000002
363#define SQLITE_IOCAP_ATOMIC1K 0x00000004
364#define SQLITE_IOCAP_ATOMIC2K 0x00000008
365#define SQLITE_IOCAP_ATOMIC4K 0x00000010
366#define SQLITE_IOCAP_ATOMIC8K 0x00000020
367#define SQLITE_IOCAP_ATOMIC16K 0x00000040
368#define SQLITE_IOCAP_ATOMIC32K 0x00000080
369#define SQLITE_IOCAP_ATOMIC64K 0x00000100
370#define SQLITE_IOCAP_SAFE_APPEND 0x00000200
371#define SQLITE_IOCAP_SEQUENTIAL 0x00000400
372
373/*
374** CAPI3REF: File Locking Levels
375**
376** SQLite uses one of the following integer values as the second
377** argument to calls it makes to the xLock() and xUnlock() methods
378** of an [sqlite3_io_methods] object. SQLite expects the return
379*** value from the xGetLock() method to be one of these integers.
380*/
381#define SQLITE_LOCK_NONE 0
382#define SQLITE_LOCK_SHARED 1
383#define SQLITE_LOCK_RESERVED 2
384#define SQLITE_LOCK_PENDING 3
385#define SQLITE_LOCK_EXCLUSIVE 4
386
387/*
388** CAPI3REF: Synchronization Type Flags
389**
390** When SQLite invokes the xSync() method of an [sqlite3_io_methods]
391** object it uses a combination of the following integer values as
392** the second argument.
393**
394** When the SQLITE_SYNC_DATAONLY flag is used, it means that the
395** sync operation only needs to flush data to mass storage. Inode
396** information need not be flushed. The SQLITE_SYNC_BARRIER flag
397** means that the nothing actually needs to be synched to mass storage,
398** but all write operations that occur before the barrier must complete
399** before any write operations that occur after the barrier begin.
400** The SQLITE_SYNC_NORMAL means to use normal fsync() semantics.
401** The SQLITE_SYNC_FULL flag means to use Mac OS-X style fullsync
402** instead of fsync().
403*/
404#define SQLITE_SYNC_BARRIER 0x00001
405#define SQLITE_SYNC_NORMAL 0x00002
406#define SQLITE_SYNC_FULL 0x00003
407#define SQLITE_SYNC_DATAONLY 0x00010
408
409
410/*
411** CAPI3REF: OS Interface Open File Handle
412**
413** An [sqlite3_file] object represents an open file in the OS
414** interface layer. Individual OS interface implementations will
415** want to subclass this object by appending additional fields
416** of their own use.
417*/
418typedef struct sqlite3_file sqlite3_file;
419struct sqlite3_file {
420 struct sqlite3_io_methods *pMethods; /* Methods against the open file */
421};
422
423/*
424** CAPI3REF: OS Interface File Virtual Methods Object
425**
426** Every open file in the OS interface layer contains a pointer to
427** an instance of the following object. This object defines the
428** methods used to perform various operations against the open file.
429*/
430typedef struct sqlite3_io_methods sqlite3_io_methods;
431struct sqlite3_io_methods {
432 int iVersion;
433 int (*xClose)(sqlite3_file*);
434 int (*xRead)(sqlite3_file*, void*, int iAmt, sqlite_int64 iOfst);
435 int (*xWrite)(sqlite3_file*, void*, int iAmt, sqlite_int64 iOfst);
436 int (*xTruncate)(sqlite3_file*, sqlite_int64 size);
437 int (*xSync)(sqlite3_file*, int flags);
438 int (*xFileSize)(sqlite3_file*, sqlite_int64 *pSize);
439 int (*xLock)(sqlite3_file*, int);
440 int (*xUnlock)(sqlite3_file*, int);
441 int (*xGetLock)(sqlite3_file*);
442 int (*xBreakLock)(sqlite3_file*);
443 int (*xSectorSize)(sqlite3_file*);
444 int (*xDeviceCharacteristics)(sqlite3_file*);
445 /* Additional methods may be added in future releases */
446};
447
448/*
449** CAPI3REF: OS Interface Mutex Handle
450**
451** Each OS interface implementation defines an [sqlite3_mutex] according
452** to its own needs. The SQLite core only deals with pointers to
453** [sqlite3_mutex] objects and knows nothing about their internal
454** structure.
455*/
456typedef struct sqlite3_mutex sqlite3_mutex;
457
458/*
459** CAPI3REF: OS Interface Object
460**
461** An instance of the [sqlite3_adaptor] object defines the OS interface
462** for an SQLite database connection. A pointer to an instance of
463** this object is the fourth parameter to [sqlite3_open_v2()].
464**
465** The iVersion field is initially 1 but may be larger for future
466** versions. szOsFile is the size of the subclassed [sqlite3_file]
467** structure used by these methods. szMutex is the size of the
468** [sqlite3_mutex] structure. mxPathname is the maximum length of
469** an OS pathname. By knowing all of these values in advance, we
470** intend for them to be allocated in advance so that the OS
471** interface methods never need to malloc() for themselves.
472**
473** The osMutex is a preallocated mutex.
474** xDeallocateMutex() is never called for this mutex.
475**
476** SQLite will guarantee that the zFilename string passed to
477** xOpen() is a full pathname as generated by xFullPathname() and
478** that the string will be valid and unchanged until xClose() is
479** callled. So the [sqlite3_file] can store a pointer to the
480** filename if it needs to remember the filename for some reason.
481**
482** The flags argument to xOpen() is a copy of the flags argument
483** to [sqlite3_open_v2()]. If [sqlite3_open()] or [sqlite3_open16()]
484** is used, then flags is [SQLITE_OPEN_READWRITE] | [SQLITE_OPEN_CREATE].
485** If xOpen() opens a file read-only then it sets *pOutFlags to
486** include [SQLITE_OPEN_READONLY]. Other bits in *pOutFlags may be
487** set.
488**
489** SQLite will also add one of the following flags to the xOpen()
490** call, depending on the object being opened:
491**
492** <ul>
493** <li> [SQLITE_OPEN_MAIN_DB]
494** <li> [SQLITE_OPEN_MAIN_JOURNAL]
495** <li> [SQLITE_OPEN_TEMP_DB]
496** <li> [SQLITE_OPEN_TEMP_JOURNAL]
497** <li> [SQLITE_OPEN_SUBJOURNAL]
498** <li> [SQLITE_OPEN_MASTER_JOURNAL]
499** </ul>
500**
501** The file I/O implementation can use the object type flags to
502** changes the way it deals with files. For example, an application
503** that does not care about crash recovery or rollback, might make
504** the open of a journal file a no-op. Writes to this journal are
505** also a no-op. Any attempt to read the journal return [SQLITE_IOERR].
506** Or the implementation might recognize the a database file will
507** be doing page-aligned sector reads and writes in a random order
508** and set up its I/O subsystem accordingly.
509**
510** SQLite might also add one of the following flags to the xOpen
511** method:
512**
513** <ul>
514** <li> [SQLITE_OPEN_DELETEONCLOSE]
515** <li> [SQLITE_OPEN_EXCLUSIVE]
516** </ul>
517**
518** The [SQLITE_OPEN_DELETEONCLOSE] flag means the file should be
519** deleted when it is closed. This will always be set for TEMP
520** databases and journals and for subjournals. The
521** [SQLITE_OPEN_EXCLUSIVE] flag means the file should be opened
522** for exclusive access. This flag is set for all files except
523** for the main database file.
524**
525** The sqlite3_file structure passed as the third argument to
526** xOpen is allocated by the caller. xOpen just fills it in. The
527** caller allocates a minimum of szOsFile bytes for the sqlite3_file
528** structure.
529**
530** The flags argument to xAccess() may be 0 (to test for the
531** existance of a file) or SQLITE_ACCESS_READWRITE to test to see
532** if a file is readable and writable, or SQLITE_ACCESS_READONLY
533** to test to see if a file is read-only. The file can be a
534** directory.
535**
536** SQLite will always allocate at least mxPathname+1 byte for
537** the output buffers for xGetTempName and xFullPathname.
538**
539** The xGetGlobal and xSetGlobal methods access an associatative
540** array of pointers to void. SQLite always holds the osMutex
541** when using either routine. The only currently defined value
542** for iClass is SQLITE_CLASS_SHAREDCACHE. The xGetGlobal
543** routine returns a NULL pointer if the requested element does not
544** exist. xSetGlobal replaces an element with the new pointer.
545** xSetGlobal returns either [SQLITE_OK], [SQLITE_FULL], [SQLITE_NOMEM],
546** or [SQLITE_MISUSE]. The entry is deleted if the new pointer is
547** NULL. The OS interface can implement these methods as a linked
548** list or as a hash table or anything else that seems appropriate.
549**
550** The xMalloc(), xRealloc(), and xFree() methods are the traditional
551** memory allocation and freeing routines. The prior
552** allocation pointer to xFree() and xRealloc() is always non-NULL.
553** The new allocation size given to xRealloc() is always positive.
554**
555** xReclaimAlloc(), xReclaimFree(), and xReclaimSetCallback() are
556** memory allocation routines in which the memory can be reclaimed
557** asynchronously by the memory allocation subsystem. Only memory
558** allocated by xReclaimAlloc() can be reclaimed in this way, and
559** then only when a reclaim callback is registered on the allocation.
560** xReclaimAlloc() and xReclaimFree() are distinct from xMalloc()
561** and xFree() since we suspect the former versions will have
562** additional overhead and also be much less frequently used.
563**
564** The xReclaimSetCallback() method declares to the memory subsystem
565** that a particular memory allocation can be reclaimed by the memory
566** subsystem if it comes under memory pressure. In order to reclaim
567** the allocation, the memory subsystem must first hold the
568** mutex given in the 3rd argument. Then it invokes the callback
569** of the 4th argument passing in a copy of the 5th argument and
570** a pointer to the allocation. If the callback returns 0 then
571** the allocation is reclaimed. If the callback returns anything
572** other than 1, then the reclaim request is denied. The xReclaimable
573** method can be called with a NULL callback pointer to indicate
574** that the allocation is no longer reclaimable.
575**
576** The [sqlite3_release_memory()] and [sqlite3_soft_heap_limit()]
577** interfaces are not part of the "core" SQLite where "core" is
578** defined as the part of SQLite that uses the [sqlite3_adaptor].
579** The [sqlite3_release_memory()] and [sqlite3_soft_heap_limit()]
580** interfaces are part of the default memory subsystem. If
581** individual applications override the default memory subsystem,
582** then [sqlite3_release_memory()] and [sqlite3_soft_heap_limit()]
583** will not work on those applications.
584**
585** The xRandomness() function attempts to return nBytes bytes
586** of good-quality randomness into zOut. The return value is
587** the actual number of bytes of randomness generated.
588**
589** Mutexes are recursive. By this we mean that the same thread
590** can enter a single mutex multiple times. Other threads cannot
591** enter the mutex until the original thread has leaf the mutex
592** once for each time entered. xEnterMutex returns 0 on success.
593** If the blockFlag is 0 and another thread already holds the
594** mutex, then xEnterMutex returns 1.
595*/
596typedef struct sqlite3_adaptor sqlite3_adaptor;
597struct sqlite3_adaptor {
598 int iVersion; /* Structure version number */
599 int szOsFile; /* Size of subclassed sqlite3_file */
600 int szMutex; /* Size of an sqlite3_mutex structure */
601 int mxPathname; /* Maximum file pathname length */
602 sqlite3_mutex *osMutex; /* A static mutex for this OS interface */
603 void *pAppData; /* Application context */
604 int (*xOpen)(void *pAppData, const char *zName, sqlite3_file*,
605 int flags, int *pOutFlags);
606 int (*xDelete)(void *pAppData, const char *zName);
607 int (*xAccess)(void *pAppData, const char *zName, int flags);
608 int (*xGetTempName)(void *pAppData, char *zOut);
609 int (*xFullPathname)(void *pAppData, const char *zName, char *zOut);
610 void *(*xGetGlobal)(void *pAppData, int iClass, const char *zName);
611 int (*xSetGlobal)(void *pAppData, int iClass, const char *zName, void*);
612 void *(*xDlOpen)(void *pAppData, char *zFilename);
613 void (*xDlError)(void*, int nByte, char *zErrMsg);
614 void *(*xDlSym)(void*, const char *zSymbol);
615 void (*xDlclose)(void*);
616 void *(*xMalloc)(void *pAppData, unsigned int nSize);
617 void *(*xRealloc)(void *pAppData, void *pOld, unsigned int nNewSize);
618 void (*xFree)(void *pAppData, void*);
619 void *(*xReclaimAlloc)(void *pAppData, unsigned int size);
620 void (*xReclaimSetCallback)(void *pAppData, void *pAllocation,
621 sqlite3_mutex*, int (*)(void*,void*), void*);
622 void (*xReclaimFree)(void *pAppData, void*);
623 int (*xRandomness)(void *pAppData, int nByte, char *zOut);
624 int (*xSleep)(void *pAppData, int microseconds);
625 int (*xCurrentTime)(void *pAppData, double*);
626 int (*xAllocateMutex)(void *pAppData, sqlite3_mutex*);
627 int (*xDeallocateMutex)(sqlite3_mutex*);
628 int (*xEnterMutex)(sqlite3_mutex*, int blockFlag);
629 int (*xLeaveMutex)(sqlite3_mutex*);
630 int (*xInMutex)(sqlite3_mutex*);
631 /* New fields may be appended in future versions. The iVersion
632 ** value will increment whenever this happens. */
633};
634
635/*
drh6ed48bf2007-06-14 20:57:18 +0000636** CAPI3REF: Enable Or Disable Extended Result Codes
637**
638** This routine enables or disables the
639** [SQLITE_IOERR_READ | extended result codes] feature.
640** By default, SQLite API routines return one of only 26 integer
641** [SQLITE_OK | result codes]. When extended result codes
642** are enabled by this routine, the repetoire of result codes can be
643** much larger and can (hopefully) provide more detailed information
644** about the cause of an error.
645**
646** The second argument is a boolean value that turns extended result
647** codes on and off. Extended result codes are off by default for
648** backwards compatibility with older versions of SQLite.
drh4ac285a2006-09-15 07:28:50 +0000649*/
650int sqlite3_extended_result_codes(sqlite3*, int onoff);
651
652/*
drh6ed48bf2007-06-14 20:57:18 +0000653** CAPI3REF: Last Insert Rowid
654**
655** Each entry in an SQLite table has a unique 64-bit signed integer key
656** called the "rowid". The rowid is always available as an undeclared
657** column named ROWID, OID, or _ROWID_. If the table has a column of
658** type INTEGER PRIMARY KEY then that column is another an alias for the
659** rowid.
660**
661** This routine returns the rowid of the most recent INSERT into
662** the database from the database connection given in the first
663** argument. If no inserts have ever occurred on this database
664** connection, zero is returned.
665**
666** If an INSERT occurs within a trigger, then the rowid of the
667** inserted row is returned by this routine as long as the trigger
668** is running. But once the trigger terminates, the value returned
669** by this routine reverts to the last value inserted before the
670** trigger fired.
drhaf9ff332002-01-16 21:00:27 +0000671*/
drh6d2069d2007-08-14 01:58:53 +0000672sqlite3_int64 sqlite3_last_insert_rowid(sqlite3*);
drhaf9ff332002-01-16 21:00:27 +0000673
drhc8d30ac2002-04-12 10:08:59 +0000674/*
drh6ed48bf2007-06-14 20:57:18 +0000675** CAPI3REF: Count The Number Of Rows Modified
676**
drhc8d30ac2002-04-12 10:08:59 +0000677** This function returns the number of database rows that were changed
drh930cc582007-03-28 13:07:40 +0000678** (or inserted or deleted) by the most recent SQL statement. Only
679** changes that are directly specified by the INSERT, UPDATE, or
680** DELETE statement are counted. Auxiliary changes caused by
drh6ed48bf2007-06-14 20:57:18 +0000681** triggers are not counted. Use the [sqlite3_total_changes()] function
682** to find the total number of changes including changes caused by triggers.
683**
684** Within the body of a trigger, the sqlite3_changes() interface can be
685** called to find the number of
drh930cc582007-03-28 13:07:40 +0000686** changes in the most recently completed INSERT, UPDATE, or DELETE
687** statement within the body of the trigger.
drhc8d30ac2002-04-12 10:08:59 +0000688**
689** All changes are counted, even if they were later undone by a
690** ROLLBACK or ABORT. Except, changes associated with creating and
691** dropping tables are not counted.
692**
drh6ed48bf2007-06-14 20:57:18 +0000693** If a callback invokes [sqlite3_exec()] or [sqlite3_step()] recursively,
drh930cc582007-03-28 13:07:40 +0000694** then the changes in the inner, recursive call are counted together
695** with the changes in the outer call.
drhc8d30ac2002-04-12 10:08:59 +0000696**
697** SQLite implements the command "DELETE FROM table" without a WHERE clause
698** by dropping and recreating the table. (This is much faster than going
drha6b81ba2007-06-27 10:21:38 +0000699** through and deleting individual elements from the table.) Because of
drhc8d30ac2002-04-12 10:08:59 +0000700** this optimization, the change count for "DELETE FROM table" will be
701** zero regardless of the number of elements that were originally in the
702** table. To get an accurate count of the number of rows deleted, use
703** "DELETE FROM table WHERE 1" instead.
704*/
danielk1977f9d64d22004-06-19 08:18:07 +0000705int sqlite3_changes(sqlite3*);
drhc8d30ac2002-04-12 10:08:59 +0000706
rdcf146a772004-02-25 22:51:06 +0000707/*
drh6ed48bf2007-06-14 20:57:18 +0000708** CAPI3REF: Total Number Of Rows Modified
709***
danielk1977b28af712004-06-21 06:50:26 +0000710** This function returns the number of database rows that have been
711** modified by INSERT, UPDATE or DELETE statements since the database handle
712** was opened. This includes UPDATE, INSERT and DELETE statements executed
713** as part of trigger programs. All changes are counted as soon as the
714** statement that makes them is completed (when the statement handle is
drh6d2069d2007-08-14 01:58:53 +0000715** passed to [sqlite3_reset()] or [sqlite3_finalise()]).
drh6ed48bf2007-06-14 20:57:18 +0000716**
717** See also the [sqlite3_change()] interface.
rdcf146a772004-02-25 22:51:06 +0000718**
719** SQLite implements the command "DELETE FROM table" without a WHERE clause
720** by dropping and recreating the table. (This is much faster than going
721** through and deleting individual elements form the table.) Because of
722** this optimization, the change count for "DELETE FROM table" will be
723** zero regardless of the number of elements that were originally in the
724** table. To get an accurate count of the number of rows deleted, use
725** "DELETE FROM table WHERE 1" instead.
rdcf146a772004-02-25 22:51:06 +0000726*/
danielk1977b28af712004-06-21 06:50:26 +0000727int sqlite3_total_changes(sqlite3*);
728
drh6ed48bf2007-06-14 20:57:18 +0000729/*
730** CAPI3REF: Interrupt A Long-Running Query
731**
732** This function causes any pending database operation to abort and
drh4c504392000-10-16 22:06:40 +0000733** return at its earliest opportunity. This routine is typically
drh66b89c82000-11-28 20:47:17 +0000734** called in response to a user action such as pressing "Cancel"
drh4c504392000-10-16 22:06:40 +0000735** or Ctrl-C where the user wants a long query operation to halt
736** immediately.
drh930cc582007-03-28 13:07:40 +0000737**
drh6ed48bf2007-06-14 20:57:18 +0000738** It is safe to call this routine from a thread different from the
739** thread that is currently running the database operation.
740**
741** The SQL operation that is interrupted will return [SQLITE_INTERRUPT].
742** If an interrupted operation was an update that is inside an
743** explicit transaction, then the entire transaction will be rolled
744** back automatically.
drh4c504392000-10-16 22:06:40 +0000745*/
danielk1977f9d64d22004-06-19 08:18:07 +0000746void sqlite3_interrupt(sqlite3*);
drh4c504392000-10-16 22:06:40 +0000747
drh6ed48bf2007-06-14 20:57:18 +0000748/*
749** CAPI3REF: Determine If An SQL Statement Is Complete
750**
751** These functions return true if the given input string comprises
danielk197761de0d12004-05-27 23:56:16 +0000752** one or more complete SQL statements. For the sqlite3_complete() call,
753** the parameter must be a nul-terminated UTF-8 string. For
754** sqlite3_complete16(), a nul-terminated machine byte order UTF-16 string
755** is required.
drh75897232000-05-29 14:26:00 +0000756**
drh6ed48bf2007-06-14 20:57:18 +0000757** These routines are useful for command-line input to determine if the
758** currently entered text forms one or more complete SQL statements or
759** if additional input is needed before sending the statements into
760** SQLite for parsing. The algorithm is simple. If the
drh930cc582007-03-28 13:07:40 +0000761** last token other than spaces and comments is a semicolon, then return
762** true. Actually, the algorithm is a little more complicated than that
763** in order to deal with triggers, but the basic idea is the same: the
764** statement is not complete unless it ends in a semicolon.
drh75897232000-05-29 14:26:00 +0000765*/
danielk19776f8a5032004-05-10 10:34:51 +0000766int sqlite3_complete(const char *sql);
danielk197761de0d12004-05-27 23:56:16 +0000767int sqlite3_complete16(const void *sql);
drh75897232000-05-29 14:26:00 +0000768
drh2dfbbca2000-07-28 14:32:48 +0000769/*
drh6ed48bf2007-06-14 20:57:18 +0000770** CAPI3REF: Register A Callback To Handle SQLITE_BUSY Errors
771**
772** This routine identifies a callback function that might be invoked
773** whenever an attempt is made to open a database table
774** that another thread or process has locked.
775** If the busy callback is NULL, then [SQLITE_BUSY]
776** (or sometimes [SQLITE_IOERR_BLOCKED])
777** is returned immediately upon encountering the lock.
778** If the busy callback is not NULL, then the
779** callback will be invoked with two arguments. The
drh86939b52007-01-10 12:54:51 +0000780** first argument to the handler is a copy of the void* pointer which
781** is the third argument to this routine. The second argument to
782** the handler is the number of times that the busy handler has
drh6ed48bf2007-06-14 20:57:18 +0000783** been invoked for this locking event. If the
784** busy callback returns 0, then no additional attempts are made to
785** access the database and [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED] is returned.
786** If the callback returns non-zero, then another attempt is made to open the
787** database for reading and the cycle repeats.
drh2dfbbca2000-07-28 14:32:48 +0000788**
drh86939b52007-01-10 12:54:51 +0000789** The presence of a busy handler does not guarantee that
790** it will be invoked when there is lock contention.
791** If SQLite determines that invoking the busy handler could result in
drh6ed48bf2007-06-14 20:57:18 +0000792** a deadlock, it will return [SQLITE_BUSY] instead.
drh86939b52007-01-10 12:54:51 +0000793** Consider a scenario where one process is holding a read lock that
794** it is trying to promote to a reserved lock and
795** a second process is holding a reserved lock that it is trying
796** to promote to an exclusive lock. The first process cannot proceed
797** because it is blocked by the second and the second process cannot
798** proceed because it is blocked by the first. If both processes
799** invoke the busy handlers, neither will make any progress. Therefore,
drh6ed48bf2007-06-14 20:57:18 +0000800** SQLite returns [SQLITE_BUSY] for the first process, hoping that this
drh86939b52007-01-10 12:54:51 +0000801** will induce the first process to release its read lock and allow
802** the second process to proceed.
803**
drh2dfbbca2000-07-28 14:32:48 +0000804** The default busy callback is NULL.
805**
drh6ed48bf2007-06-14 20:57:18 +0000806** The [SQLITE_BUSY] error is converted to [SQLITE_IOERR_BLOCKED] when
807** SQLite is in the middle of a large transaction where all the
808** changes will not fit into the in-memory cache. SQLite will
809** already hold a RESERVED lock on the database file, but it needs
810** to promote this lock to EXCLUSIVE so that it can spill cache
811** pages into the database file without harm to concurrent
812** readers. If it is unable to promote the lock, then the in-memory
813** cache will be left in an inconsistent state and so the error
814** code is promoted from the relatively benign [SQLITE_BUSY] to
815** the more severe [SQLITE_IOERR_BLOCKED]. This error code promotion
816** forces an automatic rollback of the changes. See the
817** <a href="http://www.sqlite.org/cvstrac/wiki?p=CorruptionFollowingBusyError">
818** CorruptionFollowingBusyError</a> wiki page for a discussion of why
819** this is important.
820**
drh2dfbbca2000-07-28 14:32:48 +0000821** Sqlite is re-entrant, so the busy handler may start a new query.
drh6ed48bf2007-06-14 20:57:18 +0000822** (It is not clear why anyone would every want to do this, but it
drh2dfbbca2000-07-28 14:32:48 +0000823** is allowed, in theory.) But the busy handler may not close the
824** database. Closing the database from a busy handler will delete
825** data structures out from under the executing query and will
drh6ed48bf2007-06-14 20:57:18 +0000826** probably result in a segmentation fault or other runtime error.
827**
828** There can only be a single busy handler defined for each database
829** connection. Setting a new busy handler clears any previous one.
830** Note that calling [sqlite3_busy_timeout()] will also set or clear
831** the busy handler.
drh2dfbbca2000-07-28 14:32:48 +0000832*/
danielk1977f9d64d22004-06-19 08:18:07 +0000833int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*);
drh2dfbbca2000-07-28 14:32:48 +0000834
835/*
drh6ed48bf2007-06-14 20:57:18 +0000836** CAPI3REF: Set A Busy Timeout
837**
drh2dfbbca2000-07-28 14:32:48 +0000838** This routine sets a busy handler that sleeps for a while when a
839** table is locked. The handler will sleep multiple times until
drh6ed48bf2007-06-14 20:57:18 +0000840** at least "ms" milliseconds of sleeping have been done. After
841** "ms" milliseconds of sleeping, the handler returns 0 which
842** causes [sqlite3_step()] to return [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED].
drh2dfbbca2000-07-28 14:32:48 +0000843**
844** Calling this routine with an argument less than or equal to zero
845** turns off all busy handlers.
drh6ed48bf2007-06-14 20:57:18 +0000846**
847** There can only be a single busy handler for a particular database
848** connection. If another busy handler was defined
849** (using [sqlite3_busy_handler()]) prior to calling
850** this routine, that other busy handler is cleared.
drh2dfbbca2000-07-28 14:32:48 +0000851*/
danielk1977f9d64d22004-06-19 08:18:07 +0000852int sqlite3_busy_timeout(sqlite3*, int ms);
drh2dfbbca2000-07-28 14:32:48 +0000853
drhe3710332000-09-29 13:30:53 +0000854/*
drh6ed48bf2007-06-14 20:57:18 +0000855** CAPI3REF: Convenience Routines For Running Queries
856**
857** This next routine is a convenience wrapper around [sqlite3_exec()].
drhe3710332000-09-29 13:30:53 +0000858** Instead of invoking a user-supplied callback for each row of the
859** result, this routine remembers each row of the result in memory
drh6ed48bf2007-06-14 20:57:18 +0000860** obtained from [sqlite3_malloc()], then returns all of the result after the
drha18c5682000-10-08 22:20:57 +0000861** query has finished.
862**
863** As an example, suppose the query result where this table:
864**
drh6ed48bf2007-06-14 20:57:18 +0000865** <pre>
drha18c5682000-10-08 22:20:57 +0000866** Name | Age
867** -----------------------
868** Alice | 43
869** Bob | 28
870** Cindy | 21
drh6ed48bf2007-06-14 20:57:18 +0000871** </pre>
drha18c5682000-10-08 22:20:57 +0000872**
873** If the 3rd argument were &azResult then after the function returns
drh98699b52000-10-09 12:57:00 +0000874** azResult will contain the following data:
drha18c5682000-10-08 22:20:57 +0000875**
drh6ed48bf2007-06-14 20:57:18 +0000876** <pre>
drha18c5682000-10-08 22:20:57 +0000877** azResult[0] = "Name";
878** azResult[1] = "Age";
879** azResult[2] = "Alice";
880** azResult[3] = "43";
881** azResult[4] = "Bob";
882** azResult[5] = "28";
883** azResult[6] = "Cindy";
884** azResult[7] = "21";
drh6ed48bf2007-06-14 20:57:18 +0000885** </pre>
drha18c5682000-10-08 22:20:57 +0000886**
887** Notice that there is an extra row of data containing the column
888** headers. But the *nrow return value is still 3. *ncolumn is
889** set to 2. In general, the number of values inserted into azResult
890** will be ((*nrow) + 1)*(*ncolumn).
891**
892** After the calling function has finished using the result, it should
danielk19776f8a5032004-05-10 10:34:51 +0000893** pass the result data pointer to sqlite3_free_table() in order to
drha18c5682000-10-08 22:20:57 +0000894** release the memory that was malloc-ed. Because of the way the
drh6ed48bf2007-06-14 20:57:18 +0000895** [sqlite3_malloc()] happens, the calling function must not try to call
896** [sqlite3_free()] directly. Only [sqlite3_free_table()] is able to release
drha18c5682000-10-08 22:20:57 +0000897** the memory properly and safely.
drhe3710332000-09-29 13:30:53 +0000898**
drh6ed48bf2007-06-14 20:57:18 +0000899** The return value of this routine is the same as from [sqlite3_exec()].
drhe3710332000-09-29 13:30:53 +0000900*/
danielk19776f8a5032004-05-10 10:34:51 +0000901int sqlite3_get_table(
drh6ed48bf2007-06-14 20:57:18 +0000902 sqlite3*, /* An open database */
drh9f71c2e2001-11-03 23:57:09 +0000903 const char *sql, /* SQL to be executed */
drhe3710332000-09-29 13:30:53 +0000904 char ***resultp, /* Result written to a char *[] that this points to */
905 int *nrow, /* Number of result rows written here */
906 int *ncolumn, /* Number of result columns written here */
907 char **errmsg /* Error msg written here */
908);
danielk19776f8a5032004-05-10 10:34:51 +0000909void sqlite3_free_table(char **result);
drhe3710332000-09-29 13:30:53 +0000910
drha18c5682000-10-08 22:20:57 +0000911/*
drh6ed48bf2007-06-14 20:57:18 +0000912** CAPI3REF: Formatted String Printing Functions
913**
914** These routines are workalikes of the "printf()" family of functions
915** from the standard C library.
916**
917** The sqlite3_mprintf() and sqlite3_vmprintf() routines write their
drh6d2069d2007-08-14 01:58:53 +0000918** results into memory obtained from [sqlite3_malloc()].
drh6ed48bf2007-06-14 20:57:18 +0000919** The strings returned by these two routines should be
920** released by [sqlite3_free()]. Both routines return a
921** NULL pointer if [sqlite3_malloc()] is unable to allocate enough
922** memory to hold the resulting string.
923**
924** In sqlite3_snprintf() routine is similar to "snprintf()" from
925** the standard C library. The result is written into the
926** buffer supplied as the second parameter whose size is given by
927** the first parameter. Note that the order of the
928** first two parameters is reversed from snprintf(). This is an
929** historical accident that cannot be fixed without breaking
930** backwards compatibility. Note also that sqlite3_snprintf()
931** returns a pointer to its buffer instead of the number of
932** characters actually written into the buffer. We admit that
933** the number of characters written would be a more useful return
934** value but we cannot change the implementation of sqlite3_snprintf()
935** now without breaking compatibility.
936**
937** As long as the buffer size is greater than zero, sqlite3_snprintf()
938** guarantees that the buffer is always zero-terminated. The first
939** parameter "n" is the total size of the buffer, including space for
940** the zero terminator. So the longest string that can be completely
941** written will be n-1 characters.
942**
943** These routines all implement some additional formatting
drh4f26d6c2004-05-26 23:25:30 +0000944** options that are useful for constructing SQL statements.
drha18c5682000-10-08 22:20:57 +0000945** All of the usual printf formatting options apply. In addition, there
drh6ed48bf2007-06-14 20:57:18 +0000946** is are "%q" and "%Q" options.
947**
948** The %q option works like %s in that it substitutes a null-terminated
drh66b89c82000-11-28 20:47:17 +0000949** string from the argument list. But %q also doubles every '\'' character.
drha18c5682000-10-08 22:20:57 +0000950** %q is designed for use inside a string literal. By doubling each '\''
drh66b89c82000-11-28 20:47:17 +0000951** character it escapes that character and allows it to be inserted into
drha18c5682000-10-08 22:20:57 +0000952** the string.
953**
954** For example, so some string variable contains text as follows:
955**
drh6ed48bf2007-06-14 20:57:18 +0000956** <blockquote><pre>
957** char *zText = "It's a happy day!";
958** </pre></blockquote>
drha18c5682000-10-08 22:20:57 +0000959**
drh6ed48bf2007-06-14 20:57:18 +0000960** One can use this text in an SQL statement as follows:
drha18c5682000-10-08 22:20:57 +0000961**
drh6ed48bf2007-06-14 20:57:18 +0000962** <blockquote><pre>
963** char *zSQL = sqlite3_mprintf("INSERT INTO table VALUES('%q')", zText);
964** sqlite3_exec(db, zSQL, 0, 0, 0);
965** sqlite3_free(zSQL);
966** </pre></blockquote>
drha18c5682000-10-08 22:20:57 +0000967**
968** Because the %q format string is used, the '\'' character in zText
969** is escaped and the SQL generated is as follows:
970**
drh6ed48bf2007-06-14 20:57:18 +0000971** <blockquote><pre>
972** INSERT INTO table1 VALUES('It''s a happy day!')
973** </pre></blockquote>
drha18c5682000-10-08 22:20:57 +0000974**
975** This is correct. Had we used %s instead of %q, the generated SQL
976** would have looked like this:
977**
drh6ed48bf2007-06-14 20:57:18 +0000978** <blockquote><pre>
979** INSERT INTO table1 VALUES('It's a happy day!');
980** </pre></blockquote>
drha18c5682000-10-08 22:20:57 +0000981**
982** This second example is an SQL syntax error. As a general rule you
983** should always use %q instead of %s when inserting text into a string
984** literal.
drh6ed48bf2007-06-14 20:57:18 +0000985**
986** The %Q option works like %q except it also adds single quotes around
987** the outside of the total string. Or if the parameter in the argument
988** list is a NULL pointer, %Q substitutes the text "NULL" (without single
989** quotes) in place of the %Q option. So, for example, one could say:
990**
991** <blockquote><pre>
992** char *zSQL = sqlite3_mprintf("INSERT INTO table VALUES(%Q)", zText);
993** sqlite3_exec(db, zSQL, 0, 0, 0);
994** sqlite3_free(zSQL);
995** </pre></blockquote>
996**
997** The code above will render a correct SQL statement in the zSQL
998** variable even if the zText variable is a NULL pointer.
drha18c5682000-10-08 22:20:57 +0000999*/
danielk19776f8a5032004-05-10 10:34:51 +00001000char *sqlite3_mprintf(const char*,...);
1001char *sqlite3_vmprintf(const char*, va_list);
drhfeac5f82004-08-01 00:10:45 +00001002char *sqlite3_snprintf(int,char*,const char*, ...);
drh5191b7e2002-03-08 02:12:00 +00001003
drh28dd4792006-06-26 21:35:44 +00001004/*
drh6ed48bf2007-06-14 20:57:18 +00001005** CAPI3REF: Memory Allocation Functions
1006**
1007** SQLite uses its own memory allocator. On some installations, this
drh28dd4792006-06-26 21:35:44 +00001008** memory allocator is identical to the standard malloc()/realloc()/free()
1009** and can be used interchangable. On others, the implementations are
1010** different. For maximum portability, it is best not to mix calls
1011** to the standard malloc/realloc/free with the sqlite versions.
1012*/
1013void *sqlite3_malloc(int);
1014void *sqlite3_realloc(void*, int);
1015void sqlite3_free(void*);
1016
drh5191b7e2002-03-08 02:12:00 +00001017/*
drh6ed48bf2007-06-14 20:57:18 +00001018** CAPI3REF: Compile-Time Authorization Callbacks
1019***
1020** This routine registers a authorizer callback with the SQLite library.
1021** The authorizer callback is invoked as SQL statements are being compiled
1022** by [sqlite3_prepare()] or its variants [sqlite3_prepare_v2()],
1023** [sqlite3_prepare16()] and [sqlite3_prepare16_v2()]. At various
1024** points during the compilation process, as logic is being created
1025** to perform various actions, the authorizer callback is invoked to
1026** see if those actions are allowed. The authorizer callback should
1027** return SQLITE_OK to allow the action, [SQLITE_IGNORE] to disallow the
1028** specific action but allow the SQL statement to continue to be
1029** compiled, or [SQLITE_DENY] to cause the entire SQL statement to be
1030** rejected with an error.
1031**
1032** Depending on the action, the [SQLITE_IGNORE] and [SQLITE_DENY] return
1033** codes might mean something different or they might mean the same
1034** thing. If the action is, for example, to perform a delete opertion,
1035** then [SQLITE_IGNORE] and [SQLITE_DENY] both cause the statement compilation
1036** to fail with an error. But if the action is to read a specific column
1037** from a specific table, then [SQLITE_DENY] will cause the entire
1038** statement to fail but [SQLITE_IGNORE] will cause a NULL value to be
1039** read instead of the actual column value.
1040**
1041** The first parameter to the authorizer callback is a copy of
1042** the third parameter to the sqlite3_set_authorizer() interface.
1043** The second parameter to the callback is an integer
1044** [SQLITE_COPY | action code] that specifies the particular action
1045** to be authorized. The available action codes are
1046** [SQLITE_COPY | documented separately]. The third through sixth
1047** parameters to the callback are strings that contain additional
1048** details about the action to be authorized.
1049**
1050** An authorizer is used when preparing SQL statements from an untrusted
1051** source, to ensure that the SQL statements do not try to access data
1052** that they are not allowed to see, or that they do not try to
1053** execute malicious statements that damage the database. For
1054** example, an application may allow a user to enter arbitrary
1055** SQL queries for evaluation by a database. But the application does
1056** not want the user to be able to make arbitrary changes to the
1057** database. An authorizer could then be put in place while the
1058** user-entered SQL is being prepared that disallows everything
1059** except SELECT statements.
1060**
1061** Only a single authorizer can be in place on a database connection
1062** at a time. Each call to sqlite3_set_authorizer overrides the
1063** previous call. A NULL authorizer means that no authorization
1064** callback is invoked. The default authorizer is NULL.
1065**
1066** Note that the authorizer callback is invoked only during
1067** [sqlite3_prepare()] or its variants. Authorization is not
1068** performed during statement evaluation in [sqlite3_step()].
drhed6c8672003-01-12 18:02:16 +00001069*/
danielk19776f8a5032004-05-10 10:34:51 +00001070int sqlite3_set_authorizer(
danielk1977f9d64d22004-06-19 08:18:07 +00001071 sqlite3*,
drhe22a3342003-04-22 20:30:37 +00001072 int (*xAuth)(void*,int,const char*,const char*,const char*,const char*),
drhe5f9c642003-01-13 23:27:31 +00001073 void *pUserData
drhed6c8672003-01-12 18:02:16 +00001074);
1075
1076/*
drh6ed48bf2007-06-14 20:57:18 +00001077** CAPI3REF: Authorizer Return Codes
1078**
1079** The [sqlite3_set_authorizer | authorizer callback function] must
1080** return either [SQLITE_OK] or one of these two constants in order
1081** to signal SQLite whether or not the action is permitted. See the
1082** [sqlite3_set_authorizer | authorizer documentation] for additional
1083** information.
1084*/
1085#define SQLITE_DENY 1 /* Abort the SQL statement with an error */
1086#define SQLITE_IGNORE 2 /* Don't allow access, but don't generate an error */
1087
1088/*
1089** CAPI3REF: Authorizer Action Codes
1090**
1091** The [sqlite3_set_authorizer()] interface registers a callback function
1092** that is invoked to authorizer certain SQL statement actions. The
1093** second parameter to the callback is an integer code that specifies
1094** what action is being authorized. These are the integer action codes that
1095** the authorizer callback may be passed.
1096**
1097** These action code values signify what kind of operation is to be
1098** authorized. The 3rd and 4th parameters to the authorization callback
1099** function will be parameters or NULL depending on which of these
1100** codes is used as the second parameter. The 5th parameter to the
1101** authorizer callback is the name of the database ("main", "temp",
1102** etc.) if applicable. The 6th parameter to the authorizer callback
drh5cf590c2003-04-24 01:45:04 +00001103** is the name of the inner-most trigger or view that is responsible for
1104** the access attempt or NULL if this access attempt is directly from
drh6ed48bf2007-06-14 20:57:18 +00001105** top-level SQL code.
drhed6c8672003-01-12 18:02:16 +00001106*/
drh6ed48bf2007-06-14 20:57:18 +00001107/******************************************* 3rd ************ 4th ***********/
drhe5f9c642003-01-13 23:27:31 +00001108#define SQLITE_CREATE_INDEX 1 /* Index Name Table Name */
1109#define SQLITE_CREATE_TABLE 2 /* Table Name NULL */
1110#define SQLITE_CREATE_TEMP_INDEX 3 /* Index Name Table Name */
1111#define SQLITE_CREATE_TEMP_TABLE 4 /* Table Name NULL */
drh77ad4e42003-01-14 02:49:27 +00001112#define SQLITE_CREATE_TEMP_TRIGGER 5 /* Trigger Name Table Name */
drhe5f9c642003-01-13 23:27:31 +00001113#define SQLITE_CREATE_TEMP_VIEW 6 /* View Name NULL */
drh77ad4e42003-01-14 02:49:27 +00001114#define SQLITE_CREATE_TRIGGER 7 /* Trigger Name Table Name */
drhe5f9c642003-01-13 23:27:31 +00001115#define SQLITE_CREATE_VIEW 8 /* View Name NULL */
1116#define SQLITE_DELETE 9 /* Table Name NULL */
drh77ad4e42003-01-14 02:49:27 +00001117#define SQLITE_DROP_INDEX 10 /* Index Name Table Name */
drhe5f9c642003-01-13 23:27:31 +00001118#define SQLITE_DROP_TABLE 11 /* Table Name NULL */
drh77ad4e42003-01-14 02:49:27 +00001119#define SQLITE_DROP_TEMP_INDEX 12 /* Index Name Table Name */
drhe5f9c642003-01-13 23:27:31 +00001120#define SQLITE_DROP_TEMP_TABLE 13 /* Table Name NULL */
drh77ad4e42003-01-14 02:49:27 +00001121#define SQLITE_DROP_TEMP_TRIGGER 14 /* Trigger Name Table Name */
drhe5f9c642003-01-13 23:27:31 +00001122#define SQLITE_DROP_TEMP_VIEW 15 /* View Name NULL */
drh77ad4e42003-01-14 02:49:27 +00001123#define SQLITE_DROP_TRIGGER 16 /* Trigger Name Table Name */
drhe5f9c642003-01-13 23:27:31 +00001124#define SQLITE_DROP_VIEW 17 /* View Name NULL */
1125#define SQLITE_INSERT 18 /* Table Name NULL */
1126#define SQLITE_PRAGMA 19 /* Pragma Name 1st arg or NULL */
1127#define SQLITE_READ 20 /* Table Name Column Name */
1128#define SQLITE_SELECT 21 /* NULL NULL */
1129#define SQLITE_TRANSACTION 22 /* NULL NULL */
1130#define SQLITE_UPDATE 23 /* Table Name Column Name */
drh81e293b2003-06-06 19:00:42 +00001131#define SQLITE_ATTACH 24 /* Filename NULL */
1132#define SQLITE_DETACH 25 /* Database Name NULL */
danielk19771c8c23c2004-11-12 15:53:37 +00001133#define SQLITE_ALTER_TABLE 26 /* Database Name Table Name */
danielk19771d54df82004-11-23 15:41:16 +00001134#define SQLITE_REINDEX 27 /* Index Name NULL */
drhe6e04962005-07-23 02:17:03 +00001135#define SQLITE_ANALYZE 28 /* Table Name NULL */
danielk1977f1a381e2006-06-16 08:01:02 +00001136#define SQLITE_CREATE_VTABLE 29 /* Table Name Module Name */
1137#define SQLITE_DROP_VTABLE 30 /* Table Name Module Name */
drh5169bbc2006-08-24 14:59:45 +00001138#define SQLITE_FUNCTION 31 /* Function Name NULL */
drh6ed48bf2007-06-14 20:57:18 +00001139#define SQLITE_COPY 0 /* No longer used */
drhed6c8672003-01-12 18:02:16 +00001140
1141/*
drh6ed48bf2007-06-14 20:57:18 +00001142** CAPI3REF: Tracing And Profiling Functions
1143**
1144** These routines register callback functions that can be used for
1145** tracing and profiling the execution of SQL statements.
1146** The callback function registered by sqlite3_trace() is invoked
1147** at the first [sqlite3_step()] for the evaluation of an SQL statement.
1148** The callback function registered by sqlite3_profile() is invoked
1149** as each SQL statement finishes and includes
drh19e2d372005-08-29 23:00:03 +00001150** information on how long that statement ran.
1151**
1152** The sqlite3_profile() API is currently considered experimental and
1153** is subject to change.
drh18de4822003-01-16 16:28:53 +00001154*/
danielk1977f9d64d22004-06-19 08:18:07 +00001155void *sqlite3_trace(sqlite3*, void(*xTrace)(void*,const char*), void*);
drh19e2d372005-08-29 23:00:03 +00001156void *sqlite3_profile(sqlite3*,
drh6d2069d2007-08-14 01:58:53 +00001157 void(*xProfile)(void*,const char*,sqlite3_uint64), void*);
drh18de4822003-01-16 16:28:53 +00001158
danielk1977348bb5d2003-10-18 09:37:26 +00001159/*
drh6ed48bf2007-06-14 20:57:18 +00001160** CAPI3REF: Query Progress Callbacks
1161**
danielk1977348bb5d2003-10-18 09:37:26 +00001162** This routine configures a callback function - the progress callback - that
drh6ed48bf2007-06-14 20:57:18 +00001163** is invoked periodically during long running calls to [sqlite3_exec()],
1164** [sqlite3_step()] and [sqlite3_get_table()]. An example use for this
1165** interface is to keep a GUI updated during a large query.
danielk1977348bb5d2003-10-18 09:37:26 +00001166**
1167** The progress callback is invoked once for every N virtual machine opcodes,
1168** where N is the second argument to this function. The progress callback
1169** itself is identified by the third argument to this function. The fourth
1170** argument to this function is a void pointer passed to the progress callback
1171** function each time it is invoked.
1172**
drh6ed48bf2007-06-14 20:57:18 +00001173** If a call to [sqlite3_exec()], [sqlite3_step()], or [sqlite3_get_table()]
1174** results in fewer than N opcodes being executed, then the progress
1175** callback is never invoked.
danielk1977348bb5d2003-10-18 09:37:26 +00001176**
drh6ed48bf2007-06-14 20:57:18 +00001177** Only a single progress callback function may be registered for each
1178** open database connection. Every call to sqlite3_progress_handler()
1179** overwrites the results of the previous call.
danielk1977348bb5d2003-10-18 09:37:26 +00001180** To remove the progress callback altogether, pass NULL as the third
1181** argument to this function.
1182**
1183** If the progress callback returns a result other than 0, then the current
drh6ed48bf2007-06-14 20:57:18 +00001184** query is immediately terminated and any database changes rolled back.
1185** The containing [sqlite3_exec()], [sqlite3_step()], or
1186** [sqlite3_get_table()] call returns SQLITE_INTERRUPT. This feature
1187** can be used, for example, to implement the "Cancel" button on a
1188** progress dialog box in a GUI.
danielk1977348bb5d2003-10-18 09:37:26 +00001189*/
danielk1977f9d64d22004-06-19 08:18:07 +00001190void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
danielk1977348bb5d2003-10-18 09:37:26 +00001191
drhaa940ea2004-01-15 02:44:03 +00001192/*
drh6ed48bf2007-06-14 20:57:18 +00001193** CAPI3REF: Opening A New Database Connection
drhaa940ea2004-01-15 02:44:03 +00001194**
drh4f26d6c2004-05-26 23:25:30 +00001195** Open the sqlite database file "filename". The "filename" is UTF-8
1196** encoded for sqlite3_open() and UTF-16 encoded in the native byte order
drh6ed48bf2007-06-14 20:57:18 +00001197** for sqlite3_open16(). An [sqlite3*] handle is returned in *ppDb, even
drh4f26d6c2004-05-26 23:25:30 +00001198** if an error occurs. If the database is opened (or created) successfully,
drh6d2069d2007-08-14 01:58:53 +00001199** then [SQLITE_OK] is returned. Otherwise an error code is returned. The
1200** [sqlite3_errmsg()] or [sqlite3_errmsg16()] routines can be used to obtain
drh4f26d6c2004-05-26 23:25:30 +00001201** an English language description of the error.
drh22fbcb82004-02-01 01:22:50 +00001202**
drh6ed48bf2007-06-14 20:57:18 +00001203** If the database file does not exist, then a new database will be created
1204** as needed. The default encoding for the database will be UTF-8 if
1205** sqlite3_open() is called and UTF-16 if sqlite3_open16 is used.
danielk197765904932004-05-26 06:18:37 +00001206**
1207** Whether or not an error occurs when it is opened, resources associated
drh6ed48bf2007-06-14 20:57:18 +00001208** with the [sqlite3*] handle should be released by passing it to
drh6d2069d2007-08-14 01:58:53 +00001209** [sqlite3_close()] when it is no longer required.
1210**
1211** The sqlite3_open_v2() interface works like sqlite3_open() except that
1212** provides two additional parameters for additional control over the
1213** new database connection. The flags parameter can be one of:
1214**
1215** <ol>
1216** <li> [SQLITE_OPEN_READONLY]
1217** <li> [SQLITE_OPEN_READWRITE]
1218** <li> [SQLITE_OPEN_READWRITE] | [SQLITE_OPEN_CREATE]
1219** </ol>
1220**
1221** The first value opens the database read-only. If the database does
1222** not previously exist, an error is returned. The second option opens
1223** the database for reading and writing but the database must already
1224** exist or an error is returned. The third option opens the database
1225** for reading and writing and creates it if it does not already exist.
1226** The third options is behavior that is used always for sqlite3_open()
1227** and sqlite3_open16().
1228**
1229** The fourth parameter to sqlite3_open_v2() is a pointer to an
1230** [sqlite3_adaptor] object that defines the operating system
1231** interface that the new database connection should use. If the
1232** fourth parameter is a NULL pointer then a default suitable for
1233** the host environment is substituted.
drh6ed48bf2007-06-14 20:57:18 +00001234**
1235** Note to windows users: The encoding used for the filename argument
1236** of sqlite3_open() must be UTF-8, not whatever codepage is currently
1237** defined. Filenames containing international characters must be converted
1238** to UTF-8 prior to passing them into sqlite3_open().
danielk197765904932004-05-26 06:18:37 +00001239*/
1240int sqlite3_open(
1241 const char *filename, /* Database filename (UTF-8) */
danielk19774f057f92004-06-08 00:02:33 +00001242 sqlite3 **ppDb /* OUT: SQLite db handle */
danielk197765904932004-05-26 06:18:37 +00001243);
danielk197765904932004-05-26 06:18:37 +00001244int sqlite3_open16(
1245 const void *filename, /* Database filename (UTF-16) */
danielk19774f057f92004-06-08 00:02:33 +00001246 sqlite3 **ppDb /* OUT: SQLite db handle */
danielk197765904932004-05-26 06:18:37 +00001247);
drh6d2069d2007-08-14 01:58:53 +00001248int sqlite3_open_v2(
1249 const void *filename, /* Database filename (UTF-16) */
1250 sqlite3 **ppDb, /* OUT: SQLite db handle */
1251 int flags, /* Flags */
1252 sqlite3_adaptor* /* The OS interface layer */
1253);
danielk1977295ba552004-05-19 10:34:51 +00001254
danielk197765904932004-05-26 06:18:37 +00001255/*
drh6ed48bf2007-06-14 20:57:18 +00001256** CAPI3REF: Error Codes And Messages
1257**
1258** The sqlite3_errcode() interface returns the numeric
1259** [SQLITE_OK | result code] or [SQLITE_IOERR_READ | extended result code]
1260** for the most recent failed sqlite3_* API call associated
1261** with [sqlite3] handle 'db'. If a prior API call failed but the
1262** most recent API call succeeded, the return value from sqlite3_errcode()
1263** is undefined.
1264**
1265** The sqlite3_errmsg() and sqlite3_errmsg16() return English-langauge
1266** text that describes the error, as either UTF8 or UTF16 respectively.
1267** Memory to hold the error message string is managed internally. The
1268** string may be overwritten or deallocated by subsequent calls to SQLite
1269** interface functions.
danielk197765904932004-05-26 06:18:37 +00001270**
1271** Calls to many sqlite3_* functions set the error code and string returned
drh6ed48bf2007-06-14 20:57:18 +00001272** by [sqlite3_errcode()], [sqlite3_errmsg()], and [sqlite3_errmsg16()]
1273** (overwriting the previous values). Note that calls to [sqlite3_errcode()],
1274** [sqlite3_errmsg()], and [sqlite3_errmsg16()] themselves do not affect the
1275** results of future invocations. Calls to API routines that do not return
1276** an error code (examples: [sqlite3_data_count()] or [sqlite3_mprintf()]) do
1277** not change the error code returned by this routine.
danielk197765904932004-05-26 06:18:37 +00001278**
1279** Assuming no other intervening sqlite3_* API calls are made, the error
1280** code returned by this function is associated with the same error as
drh6ed48bf2007-06-14 20:57:18 +00001281** the strings returned by [sqlite3_errmsg()] and [sqlite3_errmsg16()].
danielk197765904932004-05-26 06:18:37 +00001282*/
1283int sqlite3_errcode(sqlite3 *db);
danielk197765904932004-05-26 06:18:37 +00001284const char *sqlite3_errmsg(sqlite3*);
danielk197765904932004-05-26 06:18:37 +00001285const void *sqlite3_errmsg16(sqlite3*);
1286
1287/*
drh6ed48bf2007-06-14 20:57:18 +00001288** CAPI3REF: SQL Statement Object
1289**
1290** Instance of this object represent single SQL statements. This
1291** is variously known as a "prepared statement" or a
1292** "compiled SQL statement" or simply as a "statement".
1293**
1294** The life of a statement object goes something like this:
1295**
1296** <ol>
1297** <li> Create the object using [sqlite3_prepare_v2()] or a related
1298** function.
1299** <li> Bind values to host parameters using
1300** [sqlite3_bind_blob | sqlite3_bind_* interfaces].
1301** <li> Run the SQL by calling [sqlite3_step()] one or more times.
1302** <li> Reset the statement using [sqlite3_reset()] then go back
1303** to step 2. Do this zero or more times.
1304** <li> Destroy the object using [sqlite3_finalize()].
1305** </ol>
1306**
1307** Refer to documentation on individual methods above for additional
1308** information.
danielk197765904932004-05-26 06:18:37 +00001309*/
danielk1977fc57d7b2004-05-26 02:04:57 +00001310typedef struct sqlite3_stmt sqlite3_stmt;
1311
danielk1977e3209e42004-05-20 01:40:18 +00001312/*
drh6ed48bf2007-06-14 20:57:18 +00001313** CAPI3REF: Compiling An SQL Statement
danielk197765904932004-05-26 06:18:37 +00001314**
drh6ed48bf2007-06-14 20:57:18 +00001315** To execute an SQL query, it must first be compiled into a byte-code
1316** program using one of these routines.
1317**
1318** The first argument "db" is an [sqlite3 | SQLite database handle]
1319** obtained from a prior call to [sqlite3_open()] or [sqlite3_open16()].
1320** The second argument "zSql" is the statement to be compiled, encoded
1321** as either UTF-8 or UTF-16. The sqlite3_prepare() and sqlite3_prepare_v2()
1322** interfaces uses UTF-8 and sqlite3_prepare16() and sqlite3_prepare16_v2()
drh21f06722007-07-19 12:41:39 +00001323** use UTF-16.
1324**
1325** If the nByte argument is less
drh6ed48bf2007-06-14 20:57:18 +00001326** than zero, then zSql is read up to the first zero terminator. If
drh21f06722007-07-19 12:41:39 +00001327** nByte is non-negative, then it is the maximum number of
1328** bytes read from zSql. When nByte is non-negative, the
1329** zSql string ends at either the first '\000' character or
1330** until the nByte-th byte, whichever comes first.
danielk197765904932004-05-26 06:18:37 +00001331**
1332** *pzTail is made to point to the first byte past the end of the first
1333** SQL statement in zSql. This routine only compiles the first statement
1334** in zSql, so *pzTail is left pointing to what remains uncompiled.
1335**
drh6ed48bf2007-06-14 20:57:18 +00001336** *ppStmt is left pointing to a compiled
1337** [sqlite3_stmt | SQL statement structure] that can be
1338** executed using [sqlite3_step()]. Or if there is an error, *ppStmt may be
danielk197765904932004-05-26 06:18:37 +00001339** set to NULL. If the input text contained no SQL (if the input is and
drh6ed48bf2007-06-14 20:57:18 +00001340** empty string or a comment) then *ppStmt is set to NULL. The calling
1341** procedure is responsible for deleting the compiled SQL statement
1342** using [sqlite3_finalize()] after it has finished with it.
danielk197765904932004-05-26 06:18:37 +00001343**
drh6ed48bf2007-06-14 20:57:18 +00001344** On success, [SQLITE_OK] is returned. Otherwise an
1345** [SQLITE_ERROR | error code] is returned.
1346**
1347** The sqlite3_prepare_v2() and sqlite3_prepare16_v2() interfaces are
1348** recommended for all new programs. The two older interfaces are retained
1349** for backwards compatibility, but their use is discouraged.
1350** In the "v2" interfaces, the prepared statement
1351** that is returned (the [sqlite3_stmt] object) contains a copy of the
1352** original SQL text. This causes the [sqlite3_step()] interface to
1353** behave a differently in two ways:
1354**
1355** <ol>
1356** <li>
1357** If the database schema changes, instead of returning [SQLITE_SCHEMA] as it
1358** always used to do, [sqlite3_step()] will automatically recompile the SQL
1359** statement and try to run it again. If the schema has changed in a way
1360** that makes the statement no longer valid, [sqlite3_step()] will still
1361** return [SQLITE_SCHEMA]. But unlike the legacy behavior, [SQLITE_SCHEMA] is
1362** now a fatal error. Calling [sqlite3_prepare_v2()] again will not make the
1363** error go away. Note: use [sqlite3_errmsg()] to find the text of the parsing
1364** error that results in an [SQLITE_SCHEMA] return.
1365** </li>
1366**
1367** <li>
1368** When an error occurs,
1369** [sqlite3_step()] will return one of the detailed
1370** [SQLITE_ERROR | result codes] or
1371** [SQLITE_IOERR_READ | extended result codes] such as directly.
1372** The legacy behavior was that [sqlite3_step()] would only return a generic
1373** [SQLITE_ERROR] result code and you would have to make a second call to
1374** [sqlite3_reset()] in order to find the underlying cause of the problem.
1375** With the "v2" prepare interfaces, the underlying reason for the error is
1376** returned immediately.
1377** </li>
1378** </ol>
danielk197765904932004-05-26 06:18:37 +00001379*/
1380int sqlite3_prepare(
1381 sqlite3 *db, /* Database handle */
1382 const char *zSql, /* SQL statement, UTF-8 encoded */
drh21f06722007-07-19 12:41:39 +00001383 int nByte, /* Maximum length of zSql in bytes. */
danielk197765904932004-05-26 06:18:37 +00001384 sqlite3_stmt **ppStmt, /* OUT: Statement handle */
1385 const char **pzTail /* OUT: Pointer to unused portion of zSql */
1386);
drh6ed48bf2007-06-14 20:57:18 +00001387int sqlite3_prepare_v2(
1388 sqlite3 *db, /* Database handle */
1389 const char *zSql, /* SQL statement, UTF-8 encoded */
drh21f06722007-07-19 12:41:39 +00001390 int nByte, /* Maximum length of zSql in bytes. */
drh6ed48bf2007-06-14 20:57:18 +00001391 sqlite3_stmt **ppStmt, /* OUT: Statement handle */
1392 const char **pzTail /* OUT: Pointer to unused portion of zSql */
1393);
danielk197765904932004-05-26 06:18:37 +00001394int sqlite3_prepare16(
1395 sqlite3 *db, /* Database handle */
1396 const void *zSql, /* SQL statement, UTF-16 encoded */
drh21f06722007-07-19 12:41:39 +00001397 int nByte, /* Maximum length of zSql in bytes. */
danielk197765904932004-05-26 06:18:37 +00001398 sqlite3_stmt **ppStmt, /* OUT: Statement handle */
1399 const void **pzTail /* OUT: Pointer to unused portion of zSql */
1400);
drhb900aaf2006-11-09 00:24:53 +00001401int sqlite3_prepare16_v2(
1402 sqlite3 *db, /* Database handle */
1403 const void *zSql, /* SQL statement, UTF-16 encoded */
drh21f06722007-07-19 12:41:39 +00001404 int nByte, /* Maximum length of zSql in bytes. */
drhb900aaf2006-11-09 00:24:53 +00001405 sqlite3_stmt **ppStmt, /* OUT: Statement handle */
1406 const void **pzTail /* OUT: Pointer to unused portion of zSql */
1407);
1408
1409/*
drh6ed48bf2007-06-14 20:57:18 +00001410** CAPI3REF: Dynamically Typed Value Object
1411**
1412** SQLite uses dynamic typing for the values it stores. Values can
1413** be integers, floating point values, strings, BLOBs, or NULL. When
1414** passing around values internally, each value is represented as
1415** an instance of the sqlite3_value object.
drhf4479502004-05-27 03:12:53 +00001416*/
drhf4479502004-05-27 03:12:53 +00001417typedef struct Mem sqlite3_value;
1418
1419/*
drh6ed48bf2007-06-14 20:57:18 +00001420** CAPI3REF: SQL Function Context Object
drh4f26d6c2004-05-26 23:25:30 +00001421**
drh6ed48bf2007-06-14 20:57:18 +00001422** The context in which an SQL function executes is stored in an
1423** sqlite3_context object. A pointer to such an object is the
1424** first parameter to user-defined SQL functions.
1425*/
1426typedef struct sqlite3_context sqlite3_context;
1427
1428/*
1429** CAPI3REF: Binding Values To Prepared Statements
1430**
1431** In the SQL strings input to [sqlite3_prepare_v2()] and its variants,
1432** one or more literals can be replace by a parameter in one of these
1433** forms:
1434**
1435** <ul>
1436** <li> ?
1437** <li> ?NNN
1438** <li> :AAA
1439** <li> @AAA
1440** <li> $VVV
1441** </ul>
1442**
1443** In the parameter forms shown above NNN is an integer literal,
1444** AAA is an alphanumeric identifier and VVV is a variable name according
1445** to the syntax rules of the TCL programming language.
1446** The values of these parameters (also called "host parameter names")
1447** can be set using the sqlite3_bind_*() routines defined here.
1448**
1449** The first argument to the sqlite3_bind_*() routines always is a pointer
1450** to the [sqlite3_stmt] object returned from [sqlite3_prepare_v2()] or
1451** its variants. The second
1452** argument is the index of the parameter to be set. The first parameter has
1453** an index of 1. When the same named parameter is used more than once, second
1454** and subsequent
1455** occurrences have the same index as the first occurrence. The index for
1456** named parameters can be looked up using the
1457** [sqlite3_bind_parameter_name()] API if desired. The index for "?NNN"
1458** parametes is the value of NNN.
1459** The NNN value must be between 1 and the compile-time
1460** parameter SQLITE_MAX_VARIABLE_NUMBER (default value: 999).
1461** See <a href="limits.html">limits.html</a> for additional information.
1462**
1463** The third argument is the value to bind to the parameter.
1464**
1465** In those
1466** routines that have a fourth argument, its value is the number of bytes
1467** in the parameter. To be clear: the value is the number of bytes in the
1468** string, not the number of characters. The number
1469** of bytes does not include the zero-terminator at the end of strings.
1470** If the fourth parameter is negative, the length of the string is
1471** number of bytes up to the first zero terminator.
drh4f26d6c2004-05-26 23:25:30 +00001472**
drh930cc582007-03-28 13:07:40 +00001473** The fifth argument to sqlite3_bind_blob(), sqlite3_bind_text(), and
drh900dfba2004-07-21 15:21:36 +00001474** sqlite3_bind_text16() is a destructor used to dispose of the BLOB or
1475** text after SQLite has finished with it. If the fifth argument is the
drh6ed48bf2007-06-14 20:57:18 +00001476** special value [SQLITE_STATIC], then the library assumes that the information
drh900dfba2004-07-21 15:21:36 +00001477** is in static, unmanaged space and does not need to be freed. If the
drh6ed48bf2007-06-14 20:57:18 +00001478** fifth argument has the value [SQLITE_TRANSIENT], then SQLite makes its
1479** own private copy of the data immediately, before the sqlite3_bind_*()
1480** routine returns.
drh4f26d6c2004-05-26 23:25:30 +00001481**
drh6ed48bf2007-06-14 20:57:18 +00001482** The sqlite3_bind_zeroblob() routine binds a BLOB of length n that
1483** is filled with zeros. A zeroblob uses a fixed amount of memory
1484** (just an integer to hold it size) while it is being processed.
1485** Zeroblobs are intended to serve as place-holders for BLOBs whose
1486** content is later written using
1487** [sqlite3_blob_open | increment BLOB I/O] routines.
1488**
1489** The sqlite3_bind_*() routines must be called after
1490** [sqlite3_prepare_v2()] (and its variants) or [sqlite3_reset()] and
1491** before [sqlite3_step()].
1492** Bindings are not cleared by the [sqlite3_reset()] routine.
1493** Unbound parameters are interpreted as NULL.
1494**
1495** These routines return [SQLITE_OK] on success or an error code if
1496** anything goes wrong. [SQLITE_RANGE] is returned if the parameter
1497** index is out of range. [SQLITE_NOMEM] is returned if malloc fails.
1498** [SQLITE_MISUSE] is returned if these routines are called on a virtual
1499** machine that is the wrong state or which has already been finalized.
drh4f26d6c2004-05-26 23:25:30 +00001500*/
danielk1977d8123362004-06-12 09:25:12 +00001501int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*));
drhf4479502004-05-27 03:12:53 +00001502int sqlite3_bind_double(sqlite3_stmt*, int, double);
1503int sqlite3_bind_int(sqlite3_stmt*, int, int);
drh6d2069d2007-08-14 01:58:53 +00001504int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite3_int64);
drhf4479502004-05-27 03:12:53 +00001505int sqlite3_bind_null(sqlite3_stmt*, int);
danielk1977d8123362004-06-12 09:25:12 +00001506int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*));
1507int sqlite3_bind_text16(sqlite3_stmt*, int, const void*, int, void(*)(void*));
drhf4479502004-05-27 03:12:53 +00001508int sqlite3_bind_value(sqlite3_stmt*, int, const sqlite3_value*);
drhb026e052007-05-02 01:34:31 +00001509int sqlite3_bind_zeroblob(sqlite3_stmt*, int, int n);
drh4f26d6c2004-05-26 23:25:30 +00001510
1511/*
drh6ed48bf2007-06-14 20:57:18 +00001512** CAPI3REF: Number Of Host Parameters
1513**
1514** Return the largest host parameter index in the precompiled statement given
1515** as the argument. When the host parameters are of the forms like ":AAA"
1516** or "?", then they are assigned sequential increasing numbers beginning
1517** with one, so the value returned is the number of parameters. However
1518** if the same host parameter name is used multiple times, each occurrance
1519** is given the same number, so the value returned in that case is the number
1520** of unique host parameter names. If host parameters of the form "?NNN"
1521** are used (where NNN is an integer) then there might be gaps in the
1522** numbering and the value returned by this interface is the index of the
1523** host parameter with the largest index value.
drh75f6a032004-07-15 14:15:00 +00001524*/
1525int sqlite3_bind_parameter_count(sqlite3_stmt*);
1526
1527/*
drh6ed48bf2007-06-14 20:57:18 +00001528** CAPI3REF: Name Of A Host Parameter
1529**
1530** This routine returns a pointer to the name of the n-th parameter in a
1531** [sqlite3_stmt | prepared statement].
1532** Host parameters of the form ":AAA" or "@AAA" or "$VVV" have a name
1533** which is the string ":AAA" or "@AAA" or "$VVV".
1534** In other words, the initial ":" or "$" or "@"
1535** is included as part of the name.
1536** Parameters of the form "?" or "?NNN" have no name.
1537**
1538** The first bound parameter has an index of 1, not 0.
1539**
1540** If the value n is out of range or if the n-th parameter is nameless,
1541** then NULL is returned. The returned string is always in the
1542** UTF-8 encoding even if the named parameter was originally specified
1543** as UTF-16 in [sqlite3_prepare16()] or [sqlite3_prepare16_v2()].
drh895d7472004-08-20 16:02:39 +00001544*/
1545const char *sqlite3_bind_parameter_name(sqlite3_stmt*, int);
1546
1547/*
drh6ed48bf2007-06-14 20:57:18 +00001548** CAPI3REF: Index Of A Parameter With A Given Name
1549**
1550** This routine returns the index of a host parameter with the given name.
1551** The name must match exactly. If no parameter with the given name is
1552** found, return 0. Parameter names must be UTF8.
drhfa6bc002004-09-07 16:19:52 +00001553*/
1554int sqlite3_bind_parameter_index(sqlite3_stmt*, const char *zName);
1555
1556/*
drh6ed48bf2007-06-14 20:57:18 +00001557** CAPI3REF: Reset All Bindings On A Prepared Statement
1558**
1559** Contrary to the intuition of many, [sqlite3_reset()] does not
1560** reset the [sqlite3_bind_blob | bindings] on a
1561** [sqlite3_stmt | prepared statement]. Use this routine to
1562** reset all host parameters to NULL.
danielk1977600dd0b2005-01-20 01:14:23 +00001563*/
1564int sqlite3_clear_bindings(sqlite3_stmt*);
1565
1566/*
drh6ed48bf2007-06-14 20:57:18 +00001567** CAPI3REF: Number Of Columns In A Result Set
1568**
1569** Return the number of columns in the result set returned by the
1570** [sqlite3_stmt | compiled SQL statement]. This routine returns 0
1571** if pStmt is an SQL statement that does not return data (for
1572** example an UPDATE).
danielk197765904932004-05-26 06:18:37 +00001573*/
1574int sqlite3_column_count(sqlite3_stmt *pStmt);
1575
1576/*
drh6ed48bf2007-06-14 20:57:18 +00001577** CAPI3REF: Column Names In A Result Set
1578**
1579** These routines return the name assigned to a particular column
1580** in the result set of a SELECT statement. The sqlite3_column_name()
1581** interface returns a pointer to a UTF8 string and sqlite3_column_name16()
1582** returns a pointer to a UTF16 string. The first parameter is the
drh6d2069d2007-08-14 01:58:53 +00001583** [sqlite3_stmt | prepared statement] that implements the SELECT statement.
drh6ed48bf2007-06-14 20:57:18 +00001584** The second parameter is the column number. The left-most column is
1585** number 0.
1586**
1587** The returned string pointer is valid until either the
drh6d2069d2007-08-14 01:58:53 +00001588** [sqlite3_stmt | prepared statement] is destroyed by [sqlite3_finalize()]
drh6ed48bf2007-06-14 20:57:18 +00001589** or until the next call sqlite3_column_name() or sqlite3_column_name16()
1590** on the same column.
danielk197765904932004-05-26 06:18:37 +00001591*/
drh6ed48bf2007-06-14 20:57:18 +00001592const char *sqlite3_column_name(sqlite3_stmt*, int N);
1593const void *sqlite3_column_name16(sqlite3_stmt*, int N);
danielk197765904932004-05-26 06:18:37 +00001594
1595/*
drh6ed48bf2007-06-14 20:57:18 +00001596** CAPI3REF: Source Of Data In A Query Result
1597**
1598** These routines provide a means to determine what column of what
1599** table in which database a result of a SELECT statement comes from.
1600** The name of the database or table or column can be returned as
drhbf2564f2007-06-21 15:25:05 +00001601** either a UTF8 or UTF16 string. The _database_ routines return
1602** the database name, the _table_ routines return the table name, and
1603** the origin_ routines return the column name.
1604** The returned string is valid until
drh6ed48bf2007-06-14 20:57:18 +00001605** the [sqlite3_stmt | prepared statement] is destroyed using
1606** [sqlite3_finalize()] or until the same information is requested
drhbf2564f2007-06-21 15:25:05 +00001607** again in a different encoding.
1608**
1609** The names returned are the original un-aliased names of the
1610** database, table, and column.
drh6ed48bf2007-06-14 20:57:18 +00001611**
1612** The first argument to the following calls is a
1613** [sqlite3_stmt | compiled SQL statement].
danielk1977955de522006-02-10 02:27:42 +00001614** These functions return information about the Nth column returned by
1615** the statement, where N is the second function argument.
1616**
drh6ed48bf2007-06-14 20:57:18 +00001617** If the Nth column returned by the statement is an expression
1618** or subquery and is not a column value, then all of these functions
1619** return NULL. Otherwise, they return the
1620** name of the attached database, table and column that query result
1621** column was extracted from.
danielk1977955de522006-02-10 02:27:42 +00001622**
1623** As with all other SQLite APIs, those postfixed with "16" return UTF-16
drh6ed48bf2007-06-14 20:57:18 +00001624** encoded strings, the other functions return UTF-8.
danielk19774b1ae992006-02-10 03:06:10 +00001625**
1626** These APIs are only available if the library was compiled with the
1627** SQLITE_ENABLE_COLUMN_METADATA preprocessor symbol defined.
danielk1977955de522006-02-10 02:27:42 +00001628*/
1629const char *sqlite3_column_database_name(sqlite3_stmt*,int);
1630const void *sqlite3_column_database_name16(sqlite3_stmt*,int);
1631const char *sqlite3_column_table_name(sqlite3_stmt*,int);
1632const void *sqlite3_column_table_name16(sqlite3_stmt*,int);
1633const char *sqlite3_column_origin_name(sqlite3_stmt*,int);
1634const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
1635
1636/*
drh6ed48bf2007-06-14 20:57:18 +00001637** CAPI3REF: Declared Datatype Of A Query Result
1638**
1639** The first parameter is a [sqlite3_stmt | compiled SQL statement].
1640** If this statement is a SELECT statement and the Nth column of the
1641** returned result set of that SELECT is a table column (not an
1642** expression or subquery) then the declared type of the table
1643** column is returned. If the Nth column of the result set is an
1644** expression or subquery, then a NULL pointer is returned.
1645** The returned string is always UTF-8 encoded. For example, in
1646** the database schema:
danielk197765904932004-05-26 06:18:37 +00001647**
1648** CREATE TABLE t1(c1 VARIANT);
1649**
1650** And the following statement compiled:
1651**
danielk1977955de522006-02-10 02:27:42 +00001652** SELECT c1 + 1, c1 FROM t1;
danielk197765904932004-05-26 06:18:37 +00001653**
1654** Then this routine would return the string "VARIANT" for the second
1655** result column (i==1), and a NULL pointer for the first result column
1656** (i==0).
drh6ed48bf2007-06-14 20:57:18 +00001657**
1658** SQLite uses dynamic run-time typing. So just because a column
1659** is declared to contain a particular type does not mean that the
1660** data stored in that column is of the declared type. SQLite is
1661** strongly typed, but the typing is dynamic not static. Type
1662** is associated with individual values, not with the containers
1663** used to hold those values.
danielk197765904932004-05-26 06:18:37 +00001664*/
1665const char *sqlite3_column_decltype(sqlite3_stmt *, int i);
danielk197765904932004-05-26 06:18:37 +00001666const void *sqlite3_column_decltype16(sqlite3_stmt*,int);
1667
danielk1977106bb232004-05-21 10:08:53 +00001668/*
drh6ed48bf2007-06-14 20:57:18 +00001669** CAPI3REF: Evaluate An SQL Statement
danielk1977106bb232004-05-21 10:08:53 +00001670**
drh6ed48bf2007-06-14 20:57:18 +00001671** After an [sqlite3_stmt | SQL statement] has been prepared with a call
1672** to either [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()] or to one of
1673** the legacy interfaces [sqlite3_prepare()] or [sqlite3_prepare16()],
1674** then this function must be called one or more times to evaluate the
1675** statement.
danielk1977106bb232004-05-21 10:08:53 +00001676**
drh6ed48bf2007-06-14 20:57:18 +00001677** The details of the behavior of this sqlite3_step() interface depend
1678** on whether the statement was prepared using the newer "v2" interface
1679** [sqlite3_prepare_v2()] and [sqlite3_prepare16_v2()] or the older legacy
1680** interface [sqlite3_prepare()] and [sqlite3_prepare16()]. The use of the
1681** new "v2" interface is recommended for new applications but the legacy
1682** interface will continue to be supported.
danielk1977106bb232004-05-21 10:08:53 +00001683**
drh6ed48bf2007-06-14 20:57:18 +00001684** In the lagacy interface, the return value will be either [SQLITE_BUSY],
1685** [SQLITE_DONE], [SQLITE_ROW], [SQLITE_ERROR], or [SQLITE_MISUSE].
1686** With the "v2" interface, any of the other [SQLITE_OK | result code]
1687** or [SQLITE_IOERR_READ | extended result code] might be returned as
1688** well.
1689**
1690** [SQLITE_BUSY] means that the database engine was unable to acquire the
1691** database locks it needs to do its job. If the statement is a COMMIT
1692** or occurs outside of an explicit transaction, then you can retry the
1693** statement. If the statement is not a COMMIT and occurs within a
1694** explicit transaction then you should rollback the transaction before
1695** continuing.
1696**
1697** [SQLITE_DONE] means that the statement has finished executing
danielk1977106bb232004-05-21 10:08:53 +00001698** successfully. sqlite3_step() should not be called again on this virtual
drh6ed48bf2007-06-14 20:57:18 +00001699** machine without first calling [sqlite3_reset()] to reset the virtual
1700** machine back to its initial state.
danielk1977106bb232004-05-21 10:08:53 +00001701**
1702** If the SQL statement being executed returns any data, then
drh6ed48bf2007-06-14 20:57:18 +00001703** [SQLITE_ROW] is returned each time a new row of data is ready
danielk1977106bb232004-05-21 10:08:53 +00001704** for processing by the caller. The values may be accessed using
drh6ed48bf2007-06-14 20:57:18 +00001705** the [sqlite3_column_int | column access functions].
1706** sqlite3_step() is called again to retrieve the next row of data.
danielk1977106bb232004-05-21 10:08:53 +00001707**
drh6ed48bf2007-06-14 20:57:18 +00001708** [SQLITE_ERROR] means that a run-time error (such as a constraint
danielk1977106bb232004-05-21 10:08:53 +00001709** violation) has occurred. sqlite3_step() should not be called again on
drh6ed48bf2007-06-14 20:57:18 +00001710** the VM. More information may be found by calling [sqlite3_errmsg()].
1711** With the legacy interface, a more specific error code (example:
1712** [SQLITE_INTERRUPT], [SQLITE_SCHEMA], [SQLITE_CORRUPT], and so forth)
1713** can be obtained by calling [sqlite3_reset()] on the
drh6d2069d2007-08-14 01:58:53 +00001714** [sqlite3_stmt | prepared statement]. In the "v2" interface,
drh6ed48bf2007-06-14 20:57:18 +00001715** the more specific error code is returned directly by sqlite3_step().
danielk1977106bb232004-05-21 10:08:53 +00001716**
drh6ed48bf2007-06-14 20:57:18 +00001717** [SQLITE_MISUSE] means that the this routine was called inappropriately.
drh6d2069d2007-08-14 01:58:53 +00001718** Perhaps it was called on a [sqlite3_stmt | prepared statement] that has
drh6ed48bf2007-06-14 20:57:18 +00001719** already been [sqlite3_finalize | finalized] or on one that had
1720** previously returned [SQLITE_ERROR] or [SQLITE_DONE]. Or it could
1721** be the case that the same database connection is being used by two or
1722** more threads at the same moment in time.
1723**
1724** <b>Goofy Interface Alert:</b>
1725** In the legacy interface,
1726** the sqlite3_step() API always returns a generic error code,
1727** [SQLITE_ERROR], following any error other than [SQLITE_BUSY]
1728** and [SQLITE_MISUSE]. You must call [sqlite3_reset()] or
1729** [sqlite3_finalize()] in order to find one of the specific
1730** [SQLITE_ERROR | result codes] that better describes the error.
1731** We admit that this is a goofy design. The problem has been fixed
1732** with the "v2" interface. If you prepare all of your SQL statements
1733** using either [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()] instead
1734** of the legacy [sqlite3_prepare()] and [sqlite3_prepare16()], then the
1735** more specific [SQLITE_ERROR | result codes] are returned directly
1736** by sqlite3_step(). The use of the "v2" interface is recommended.
danielk1977106bb232004-05-21 10:08:53 +00001737*/
danielk197717240fd2004-05-26 00:07:25 +00001738int sqlite3_step(sqlite3_stmt*);
danielk1977106bb232004-05-21 10:08:53 +00001739
danielk1977106bb232004-05-21 10:08:53 +00001740/*
drh6ed48bf2007-06-14 20:57:18 +00001741** CAPI3REF:
1742**
danielk1977106bb232004-05-21 10:08:53 +00001743** Return the number of values in the current row of the result set.
1744**
drh6ed48bf2007-06-14 20:57:18 +00001745** After a call to [sqlite3_step()] that returns [SQLITE_ROW], this routine
1746** will return the same value as the [sqlite3_column_count()] function.
1747** After [sqlite3_step()] has returned an [SQLITE_DONE], [SQLITE_BUSY], or
1748** a [SQLITE_ERROR | error code], or before [sqlite3_step()] has been
drh6d2069d2007-08-14 01:58:53 +00001749** called on the [sqlite3_stmt | prepared statement] for the first time,
drh6ed48bf2007-06-14 20:57:18 +00001750** this routine returns zero.
danielk1977106bb232004-05-21 10:08:53 +00001751*/
danielk197793d46752004-05-23 13:30:58 +00001752int sqlite3_data_count(sqlite3_stmt *pStmt);
danielk19774adee202004-05-08 08:23:19 +00001753
drh4f26d6c2004-05-26 23:25:30 +00001754/*
drh6ed48bf2007-06-14 20:57:18 +00001755** CAPI3REF: Fundamental Datatypes
1756**
1757** Every value in SQLite has one of five fundamental datatypes:
1758**
1759** <ul>
1760** <li> 64-bit signed integer
1761** <li> 64-bit IEEE floating point number
1762** <li> string
1763** <li> BLOB
1764** <li> NULL
1765** </ul>
1766**
1767** These constants are codes for each of those types.
1768**
1769** Note that the SQLITE_TEXT constant was also used in SQLite version 2
1770** for a completely different meaning. Software that links against both
1771** SQLite version 2 and SQLite version 3 should use SQLITE3_TEXT not
1772** SQLITE_TEXT.
drh4f26d6c2004-05-26 23:25:30 +00001773*/
drh9c054832004-05-31 18:51:57 +00001774#define SQLITE_INTEGER 1
1775#define SQLITE_FLOAT 2
drh9c054832004-05-31 18:51:57 +00001776#define SQLITE_BLOB 4
1777#define SQLITE_NULL 5
drh1e284f42004-10-06 15:52:01 +00001778#ifdef SQLITE_TEXT
1779# undef SQLITE_TEXT
1780#else
1781# define SQLITE_TEXT 3
1782#endif
1783#define SQLITE3_TEXT 3
1784
1785/*
drh6ed48bf2007-06-14 20:57:18 +00001786** CAPI3REF: Results Values From A Query
1787**
1788** These routines return information about the information
drh4f26d6c2004-05-26 23:25:30 +00001789** in a single column of the current result row of a query. In every
drh6ed48bf2007-06-14 20:57:18 +00001790** case the first argument is a pointer to the
1791** [sqlite3_stmt | SQL statement] that is being
drh6d2069d2007-08-14 01:58:53 +00001792** evaluate (the [sqlite3_stmt*] that was returned from
drh6ed48bf2007-06-14 20:57:18 +00001793** [sqlite3_prepare_v2()] or one of its variants) and
drh4f26d6c2004-05-26 23:25:30 +00001794** the second argument is the index of the column for which information
drh6ed48bf2007-06-14 20:57:18 +00001795** should be returned. The left-most column has an index of 0.
danielk1977106bb232004-05-21 10:08:53 +00001796**
drh4f26d6c2004-05-26 23:25:30 +00001797** If the SQL statement is not currently point to a valid row, or if the
drh6ed48bf2007-06-14 20:57:18 +00001798** the column index is out of range, the result is undefined.
1799**
1800** The sqlite3_column_type() routine returns
1801** [SQLITE_INTEGER | datatype code] for the initial data type
1802** of the result column. The returned value is one of [SQLITE_INTEGER],
1803** [SQLITE_FLOAT], [SQLITE_TEXT], [SQLITE_BLOB], or [SQLITE_NULL]. The value
1804** returned by sqlite3_column_type() is only meaningful if no type
1805** conversions have occurred as described below. After a type conversion,
1806** the value returned by sqlite3_column_type() is undefined. Future
1807** versions of SQLite may change the behavior of sqlite3_column_type()
1808** following a type conversion.
1809**
drh6ed48bf2007-06-14 20:57:18 +00001810** If the result is a BLOB or UTF-8 string then the sqlite3_column_bytes()
1811** routine returns the number of bytes in that BLOB or string.
1812** If the result is a UTF-16 string, then sqlite3_column_bytes() converts
1813** the string to UTF-8 and then returns the number of bytes.
1814** If the result is a numeric value then sqlite3_column_bytes() uses
1815** [sqlite3_snprintf()] to convert that value to a UTF-8 string and returns
1816** the number of bytes in that string.
1817** The value returned does not include the zero terminator at the end
1818** of the string. For clarity: the value returned is the number of
1819** bytes in the string, not the number of characters.
1820**
1821** The sqlite3_column_bytes16() routine is similar to sqlite3_column_bytes()
1822** but leaves the result in UTF-16 instead of UTF-8.
1823** The zero terminator is not included in this count.
drh4f26d6c2004-05-26 23:25:30 +00001824**
1825** These routines attempt to convert the value where appropriate. For
1826** example, if the internal representation is FLOAT and a text result
drh6ed48bf2007-06-14 20:57:18 +00001827** is requested, [sqlite3_snprintf()] is used internally to do the conversion
drh4f26d6c2004-05-26 23:25:30 +00001828** automatically. The following table details the conversions that
1829** are applied:
1830**
drh6ed48bf2007-06-14 20:57:18 +00001831** <blockquote>
1832** <table border="1">
1833** <tr><th> Internal <th> Requested <th>
1834** <tr><th> Type <th> Type <th> Conversion
drh4f26d6c2004-05-26 23:25:30 +00001835**
drh6ed48bf2007-06-14 20:57:18 +00001836** <tr><td> NULL <td> INTEGER <td> Result is 0
1837** <tr><td> NULL <td> FLOAT <td> Result is 0.0
1838** <tr><td> NULL <td> TEXT <td> Result is NULL pointer
1839** <tr><td> NULL <td> BLOB <td> Result is NULL pointer
1840** <tr><td> INTEGER <td> FLOAT <td> Convert from integer to float
1841** <tr><td> INTEGER <td> TEXT <td> ASCII rendering of the integer
1842** <tr><td> INTEGER <td> BLOB <td> Same as for INTEGER->TEXT
1843** <tr><td> FLOAT <td> INTEGER <td> Convert from float to integer
1844** <tr><td> FLOAT <td> TEXT <td> ASCII rendering of the float
1845** <tr><td> FLOAT <td> BLOB <td> Same as FLOAT->TEXT
1846** <tr><td> TEXT <td> INTEGER <td> Use atoi()
1847** <tr><td> TEXT <td> FLOAT <td> Use atof()
1848** <tr><td> TEXT <td> BLOB <td> No change
1849** <tr><td> BLOB <td> INTEGER <td> Convert to TEXT then use atoi()
1850** <tr><td> BLOB <td> FLOAT <td> Convert to TEXT then use atof()
1851** <tr><td> BLOB <td> TEXT <td> Add a zero terminator if needed
1852** </table>
1853** </blockquote>
drh4f26d6c2004-05-26 23:25:30 +00001854**
drh6ed48bf2007-06-14 20:57:18 +00001855** The table above makes reference to standard C library functions atoi()
1856** and atof(). SQLite does not really use these functions. It has its
1857** on equavalent internal routines. The atoi() and atof() names are
1858** used in the table for brevity and because they are familiar to most
1859** C programmers.
1860**
1861** Note that when type conversions occur, pointers returned by prior
1862** calls to sqlite3_column_blob(), sqlite3_column_text(), and/or
1863** sqlite3_column_text16() may be invalidated.
1864** Type conversions and pointer invalidations might occur
1865** in the following cases:
1866**
1867** <ul>
1868** <li><p> The initial content is a BLOB and sqlite3_column_text()
1869** or sqlite3_column_text16() is called. A zero-terminator might
1870** need to be added to the string.</p></li>
1871**
1872** <li><p> The initial content is UTF-8 text and sqlite3_column_bytes16() or
1873** sqlite3_column_text16() is called. The content must be converted
1874** to UTF-16.</p></li>
1875**
1876** <li><p> The initial content is UTF-16 text and sqlite3_column_bytes() or
1877** sqlite3_column_text() is called. The content must be converted
1878** to UTF-8.</p></li>
1879** </ul>
1880**
1881** Conversions between UTF-16be and UTF-16le are always done in place and do
1882** not invalidate a prior pointer, though of course the content of the buffer
1883** that the prior pointer points to will have been modified. Other kinds
1884** of conversion are done in place when it is possible, but sometime it is
1885** not possible and in those cases prior pointers are invalidated.
1886**
1887** The safest and easiest to remember policy is to invoke these routines
1888** in one of the following ways:
1889**
1890** <ul>
1891** <li>sqlite3_column_text() followed by sqlite3_column_bytes()</li>
1892** <li>sqlite3_column_blob() followed by sqlite3_column_bytes()</li>
1893** <li>sqlite3_column_text16() followed by sqlite3_column_bytes16()</li>
1894** </ul>
1895**
1896** In other words, you should call sqlite3_column_text(), sqlite3_column_blob(),
1897** or sqlite3_column_text16() first to force the result into the desired
1898** format, then invoke sqlite3_column_bytes() or sqlite3_column_bytes16() to
1899** find the size of the result. Do not mix call to sqlite3_column_text() or
1900** sqlite3_column_blob() with calls to sqlite3_column_bytes16(). And do not
1901** mix calls to sqlite3_column_text16() with calls to sqlite3_column_bytes().
danielk1977106bb232004-05-21 10:08:53 +00001902*/
drhf4479502004-05-27 03:12:53 +00001903const void *sqlite3_column_blob(sqlite3_stmt*, int iCol);
1904int sqlite3_column_bytes(sqlite3_stmt*, int iCol);
1905int sqlite3_column_bytes16(sqlite3_stmt*, int iCol);
1906double sqlite3_column_double(sqlite3_stmt*, int iCol);
1907int sqlite3_column_int(sqlite3_stmt*, int iCol);
drh6d2069d2007-08-14 01:58:53 +00001908sqlite3_int64 sqlite3_column_int64(sqlite3_stmt*, int iCol);
drhf4479502004-05-27 03:12:53 +00001909const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);
1910const void *sqlite3_column_text16(sqlite3_stmt*, int iCol);
drh4f26d6c2004-05-26 23:25:30 +00001911int sqlite3_column_type(sqlite3_stmt*, int iCol);
drh4be8b512006-06-13 23:51:34 +00001912sqlite3_value *sqlite3_column_value(sqlite3_stmt*, int iCol);
danielk19774adee202004-05-08 08:23:19 +00001913
danielk197765904932004-05-26 06:18:37 +00001914/*
drh6ed48bf2007-06-14 20:57:18 +00001915** CAPI3REF: Destroy A Prepared Statement Object
1916**
1917** The sqlite3_finalize() function is called to delete a
1918** [sqlite3_stmt | compiled SQL statement]. If the statement was
1919** executed successfully, or not executed at all, then SQLITE_OK is returned.
1920** If execution of the statement failed then an
1921** [SQLITE_ERROR | error code] or [SQLITE_IOERR_READ | extended error code]
1922** is returned.
danielk197765904932004-05-26 06:18:37 +00001923**
1924** This routine can be called at any point during the execution of the
drh6ed48bf2007-06-14 20:57:18 +00001925** [sqlite3_stmt | virtual machine]. If the virtual machine has not
1926** completed execution when this routine is called, that is like
1927** encountering an error or an interrupt. (See [sqlite3_interrupt()].)
1928** Incomplete updates may be rolled back and transactions cancelled,
1929** depending on the circumstances, and the
1930** [SQLITE_ERROR | result code] returned will be [SQLITE_ABORT].
danielk197765904932004-05-26 06:18:37 +00001931*/
1932int sqlite3_finalize(sqlite3_stmt *pStmt);
1933
1934/*
drh6ed48bf2007-06-14 20:57:18 +00001935** CAPI3REF: Reset A Prepared Statement Object
1936**
1937** The sqlite3_reset() function is called to reset a
drh6d2069d2007-08-14 01:58:53 +00001938** [sqlite3_stmt | compiled SQL statement] object.
drh6ed48bf2007-06-14 20:57:18 +00001939** back to it's initial state, ready to be re-executed.
danielk197765904932004-05-26 06:18:37 +00001940** Any SQL statement variables that had values bound to them using
drh6ed48bf2007-06-14 20:57:18 +00001941** the [sqlite3_bind_blob | sqlite3_bind_*() API] retain their values.
1942** Use [sqlite3_clear_bindings()] to reset the bindings.
danielk197765904932004-05-26 06:18:37 +00001943*/
1944int sqlite3_reset(sqlite3_stmt *pStmt);
1945
1946/*
drh6ed48bf2007-06-14 20:57:18 +00001947** CAPI3REF: Create Or Redefine SQL Functions
1948**
1949** The following two functions are used to add SQL functions or aggregates
1950** or to redefine the behavior of existing SQL functions or aggregates. The
danielk197765904932004-05-26 06:18:37 +00001951** difference only between the two is that the second parameter, the
1952** name of the (scalar) function or aggregate, is encoded in UTF-8 for
1953** sqlite3_create_function() and UTF-16 for sqlite3_create_function16().
1954**
drh6ed48bf2007-06-14 20:57:18 +00001955** The first argument is the [sqlite3 | database handle] that holds the
1956** SQL function or aggregate is to be added or redefined. If a single
1957** program uses more than one database handle internally, then SQL
1958** functions or aggregates must be added individually to each database
1959** handle with which they will be used.
danielk197765904932004-05-26 06:18:37 +00001960**
drh6ed48bf2007-06-14 20:57:18 +00001961** The second parameter is the name of the SQL function to be created
1962** or redefined.
1963** The length of the name is limited to 255 bytes, exclusive of the
1964** zero-terminator. Note that the name length limit is in bytes, not
1965** characters. Any attempt to create a function with a longer name
1966** will result in an SQLITE_ERROR error.
1967**
1968** The third parameter is the number of arguments that the SQL function or
1969** aggregate takes. If this parameter is negative, then the SQL function or
danielk197765904932004-05-26 06:18:37 +00001970** aggregate may take any number of arguments.
1971**
drh6ed48bf2007-06-14 20:57:18 +00001972** The fourth parameter, eTextRep, specifies what
1973** [SQLITE_UTF8 | text encoding] this SQL function prefers for
1974** its parameters. Any SQL function implementation should be able to work
1975** work with UTF-8, UTF-16le, or UTF-16be. But some implementations may be
1976** more efficient with one encoding than another. It is allowed to
drh6d2069d2007-08-14 01:58:53 +00001977** invoke sqlite3_create_function() or sqlite3_create_function16() multiple
drh6ed48bf2007-06-14 20:57:18 +00001978** times with the same function but with different values of eTextRep.
1979** When multiple implementations of the same function are available, SQLite
1980** will pick the one that involves the least amount of data conversion.
1981** If there is only a single implementation which does not care what
1982** text encoding is used, then the fourth argument should be
1983** [SQLITE_ANY].
1984**
1985** The fifth parameter is an arbitrary pointer. The implementation
1986** of the function can gain access to this pointer using
drh6d2069d2007-08-14 01:58:53 +00001987** [sqlite3_user_data()].
danielk1977d02eb1f2004-06-06 09:44:03 +00001988**
danielk197765904932004-05-26 06:18:37 +00001989** The seventh, eighth and ninth parameters, xFunc, xStep and xFinal, are
drh6ed48bf2007-06-14 20:57:18 +00001990** pointers to C-language functions that implement the SQL
1991** function or aggregate. A scalar SQL function requires an implementation of
danielk197765904932004-05-26 06:18:37 +00001992** the xFunc callback only, NULL pointers should be passed as the xStep
drh6ed48bf2007-06-14 20:57:18 +00001993** and xFinal parameters. An aggregate SQL function requires an implementation
1994** of xStep and xFinal and NULL should be passed for xFunc. To delete an
1995** existing SQL function or aggregate, pass NULL for all three function
1996** callback.
1997**
1998** It is permitted to register multiple implementations of the same
1999** functions with the same name but with either differing numbers of
2000** arguments or differing perferred text encodings. SQLite will use
2001** the implementation most closely matches the way in which the
2002** SQL function is used.
danielk197765904932004-05-26 06:18:37 +00002003*/
2004int sqlite3_create_function(
2005 sqlite3 *,
2006 const char *zFunctionName,
2007 int nArg,
2008 int eTextRep,
danielk197765904932004-05-26 06:18:37 +00002009 void*,
2010 void (*xFunc)(sqlite3_context*,int,sqlite3_value**),
2011 void (*xStep)(sqlite3_context*,int,sqlite3_value**),
2012 void (*xFinal)(sqlite3_context*)
2013);
2014int sqlite3_create_function16(
2015 sqlite3*,
2016 const void *zFunctionName,
2017 int nArg,
2018 int eTextRep,
danielk197765904932004-05-26 06:18:37 +00002019 void*,
2020 void (*xFunc)(sqlite3_context*,int,sqlite3_value**),
2021 void (*xStep)(sqlite3_context*,int,sqlite3_value**),
2022 void (*xFinal)(sqlite3_context*)
2023);
2024
2025/*
drh6ed48bf2007-06-14 20:57:18 +00002026** CAPI3REF: Text Encodings
2027**
2028** These constant define integer codes that represent the various
2029** text encodings supported by SQLite.
danielk197765904932004-05-26 06:18:37 +00002030*/
drh6ed48bf2007-06-14 20:57:18 +00002031#define SQLITE_UTF8 1
2032#define SQLITE_UTF16LE 2
2033#define SQLITE_UTF16BE 3
2034#define SQLITE_UTF16 4 /* Use native byte order */
2035#define SQLITE_ANY 5 /* sqlite3_create_function only */
2036#define SQLITE_UTF16_ALIGNED 8 /* sqlite3_create_collation only */
danielk197765904932004-05-26 06:18:37 +00002037
danielk19770ffba6b2004-05-24 09:10:10 +00002038/*
drh6ed48bf2007-06-14 20:57:18 +00002039** CAPI3REF: Obsolete Functions
2040**
2041** These functions are all now obsolete. In order to maintain
2042** backwards compatibility with older code, we continue to support
2043** these functions. However, new development projects should avoid
2044** the use of these functions. To help encourage people to avoid
2045** using these functions, we are not going to tell you want they do.
2046*/
2047int sqlite3_aggregate_count(sqlite3_context*);
2048int sqlite3_expired(sqlite3_stmt*);
2049int sqlite3_transfer_bindings(sqlite3_stmt*, sqlite3_stmt*);
2050int sqlite3_global_recover(void);
2051
2052
2053/*
2054** CAPI3REF: Obtaining SQL Function Parameter Values
2055**
2056** The C-language implementation of SQL functions and aggregates uses
2057** this set of interface routines to access the parameter values on
2058** the function or aggregate.
2059**
2060** The xFunc (for scalar functions) or xStep (for aggregates) parameters
2061** to [sqlite3_create_function()] and [sqlite3_create_function16()]
2062** define callbacks that implement the SQL functions and aggregates.
2063** The 4th parameter to these callbacks is an array of pointers to
2064** [sqlite3_value] objects. There is one [sqlite3_value] object for
2065** each parameter to the SQL function. These routines are used to
2066** extract values from the [sqlite3_value] objects.
2067**
2068** These routines work just like the corresponding
2069** [sqlite3_column_blob | sqlite3_column_* routines] except that
2070** these routines take a single [sqlite3_value*] pointer instead
2071** of an [sqlite3_stmt*] pointer and an integer column number.
2072**
2073** The sqlite3_value_text16() interface extracts a UTF16 string
2074** in the native byte-order of the host machine. The
2075** sqlite3_value_text16be() and sqlite3_value_text16le() interfaces
2076** extract UTF16 strings as big-endian and little-endian respectively.
2077**
2078** The sqlite3_value_numeric_type() interface attempts to apply
2079** numeric affinity to the value. This means that an attempt is
2080** made to convert the value to an integer or floating point. If
2081** such a conversion is possible without loss of information (in order
2082** words if the value is original a string that looks like a number)
2083** then it is done. Otherwise no conversion occurs. The
2084** [SQLITE_INTEGER | datatype] after conversion is returned.
2085**
2086** Please pay particular attention to the fact that the pointer that
2087** is returned from [sqlite3_value_blob()], [sqlite3_value_text()], or
2088** [sqlite3_value_text16()] can be invalidated by a subsequent call to
drh6d2069d2007-08-14 01:58:53 +00002089** [sqlite3_value_bytes()], [sqlite3_value_bytes16()], [sqlite3_value_text()],
drh6ed48bf2007-06-14 20:57:18 +00002090** or [sqlite3_value_text16()].
danielk19770ffba6b2004-05-24 09:10:10 +00002091*/
drhf4479502004-05-27 03:12:53 +00002092const void *sqlite3_value_blob(sqlite3_value*);
2093int sqlite3_value_bytes(sqlite3_value*);
2094int sqlite3_value_bytes16(sqlite3_value*);
2095double sqlite3_value_double(sqlite3_value*);
2096int sqlite3_value_int(sqlite3_value*);
drh6d2069d2007-08-14 01:58:53 +00002097sqlite3_int64 sqlite3_value_int64(sqlite3_value*);
drhf4479502004-05-27 03:12:53 +00002098const unsigned char *sqlite3_value_text(sqlite3_value*);
2099const void *sqlite3_value_text16(sqlite3_value*);
danielk1977d8123362004-06-12 09:25:12 +00002100const void *sqlite3_value_text16le(sqlite3_value*);
2101const void *sqlite3_value_text16be(sqlite3_value*);
danielk197793d46752004-05-23 13:30:58 +00002102int sqlite3_value_type(sqlite3_value*);
drh29d72102006-02-09 22:13:41 +00002103int sqlite3_value_numeric_type(sqlite3_value*);
danielk19770ffba6b2004-05-24 09:10:10 +00002104
2105/*
drh6ed48bf2007-06-14 20:57:18 +00002106** CAPI3REF: Obtain Aggregate Function Context
2107**
2108** The implementation of aggregate SQL functions use this routine to allocate
danielk19770ae8b832004-05-25 12:05:56 +00002109** a structure for storing their state. The first time this routine
2110** is called for a particular aggregate, a new structure of size nBytes
2111** is allocated, zeroed, and returned. On subsequent calls (for the
2112** same aggregate instance) the same buffer is returned. The implementation
2113** of the aggregate can use the returned buffer to accumulate data.
2114**
drh6ed48bf2007-06-14 20:57:18 +00002115** The buffer allocated is freed automatically by SQLite whan the aggregate
2116** query concludes.
2117**
2118** The first parameter should be a copy of the
2119** [sqlite3_context | SQL function context] that is the first
2120** parameter to the callback routine that implements the aggregate
2121** function.
danielk19770ae8b832004-05-25 12:05:56 +00002122*/
drh4f26d6c2004-05-26 23:25:30 +00002123void *sqlite3_aggregate_context(sqlite3_context*, int nBytes);
danielk19777e18c252004-05-25 11:47:24 +00002124
2125/*
drh6ed48bf2007-06-14 20:57:18 +00002126** CAPI3REF: User Data For Functions
2127**
2128** The pUserData parameter to the [sqlite3_create_function()]
2129** and [sqlite3_create_function16()] routines
2130** used to register user functions is available to
drhc0f2a012005-07-09 02:39:40 +00002131** the implementation of the function using this call.
danielk19777e18c252004-05-25 11:47:24 +00002132*/
2133void *sqlite3_user_data(sqlite3_context*);
2134
2135/*
drh6ed48bf2007-06-14 20:57:18 +00002136** CAPI3REF: Function Auxiliary Data
2137**
2138** The following two functions may be used by scalar SQL functions to
danielk1977682f68b2004-06-05 10:22:17 +00002139** associate meta-data with argument values. If the same value is passed to
drh6ed48bf2007-06-14 20:57:18 +00002140** multiple invocations of the same SQL function during query execution, under
danielk1977682f68b2004-06-05 10:22:17 +00002141** some circumstances the associated meta-data may be preserved. This may
2142** be used, for example, to add a regular-expression matching scalar
2143** function. The compiled version of the regular expression is stored as
2144** meta-data associated with the SQL value passed as the regular expression
drh6ed48bf2007-06-14 20:57:18 +00002145** pattern. The compiled regular expression can be reused on multiple
2146** invocations of the same function so that the original pattern string
2147** does not need to be recompiled on each invocation.
danielk1977682f68b2004-06-05 10:22:17 +00002148**
drh6ed48bf2007-06-14 20:57:18 +00002149** The sqlite3_get_auxdata() interface returns a pointer to the meta-data
2150** associated with the Nth argument value to the current SQL function
danielk1977682f68b2004-06-05 10:22:17 +00002151** call, where N is the second parameter. If no meta-data has been set for
2152** that value, then a NULL pointer is returned.
2153**
drh6ed48bf2007-06-14 20:57:18 +00002154** The sqlite3_set_auxdata() is used to associate meta-data with an SQL
2155** function argument. The third parameter is a pointer to the meta-data
danielk1977682f68b2004-06-05 10:22:17 +00002156** to be associated with the Nth user function argument value. The fourth
drh6ed48bf2007-06-14 20:57:18 +00002157** parameter specifies a destructor that will be called on the meta-
2158** data pointer to release it when it is no longer required. If the
2159** destructor is NULL, it is not invoked.
danielk1977682f68b2004-06-05 10:22:17 +00002160**
2161** In practice, meta-data is preserved between function calls for
2162** expressions that are constant at compile time. This includes literal
2163** values and SQL variables.
2164*/
2165void *sqlite3_get_auxdata(sqlite3_context*, int);
2166void sqlite3_set_auxdata(sqlite3_context*, int, void*, void (*)(void*));
2167
drha2854222004-06-17 19:04:17 +00002168
2169/*
drh6ed48bf2007-06-14 20:57:18 +00002170** CAPI3REF: Constants Defining Special Destructor Behavior
2171**
drha2854222004-06-17 19:04:17 +00002172** These are special value for the destructor that is passed in as the
drh6ed48bf2007-06-14 20:57:18 +00002173** final argument to routines like [sqlite3_result_blob()]. If the destructor
drha2854222004-06-17 19:04:17 +00002174** argument is SQLITE_STATIC, it means that the content pointer is constant
2175** and will never change. It does not need to be destroyed. The
2176** SQLITE_TRANSIENT value means that the content will likely change in
2177** the near future and that SQLite should make its own private copy of
2178** the content before returning.
drh6c9121a2007-01-26 00:51:43 +00002179**
2180** The typedef is necessary to work around problems in certain
2181** C++ compilers. See ticket #2191.
drha2854222004-06-17 19:04:17 +00002182*/
drh6c9121a2007-01-26 00:51:43 +00002183typedef void (*sqlite3_destructor_type)(void*);
2184#define SQLITE_STATIC ((sqlite3_destructor_type)0)
2185#define SQLITE_TRANSIENT ((sqlite3_destructor_type)-1)
danielk1977d8123362004-06-12 09:25:12 +00002186
danielk1977682f68b2004-06-05 10:22:17 +00002187/*
drh6ed48bf2007-06-14 20:57:18 +00002188** CAPI3REF: Setting The Result Of An SQL Function
2189**
2190** These routines are used by the xFunc or xFinal callbacks that
2191** implement SQL functions and aggregates. See
2192** [sqlite3_create_function()] and [sqlite3_create_function16()]
2193** for additional information.
2194**
2195** These functions work very much like the
2196** [sqlite3_bind_blob | sqlite3_bind_*] family of functions used
2197** to bind values to host parameters in prepared statements.
2198** Refer to the
2199** [sqlite3_bind_blob | sqlite3_bind_* documentation] for
2200** additional information.
2201**
2202** The sqlite3_result_error() and sqlite3_result_error16() functions
2203** cause the implemented SQL function to throw an exception. The
2204** parameter to sqlite3_result_error() or sqlite3_result_error16()
2205** is the text of an error message.
2206**
2207** The sqlite3_result_toobig() cause the function implementation
2208** to throw and error indicating that a string or BLOB is to long
2209** to represent.
danielk19777e18c252004-05-25 11:47:24 +00002210*/
danielk1977d8123362004-06-12 09:25:12 +00002211void sqlite3_result_blob(sqlite3_context*, const void*, int, void(*)(void*));
drh4f26d6c2004-05-26 23:25:30 +00002212void sqlite3_result_double(sqlite3_context*, double);
danielk19777e18c252004-05-25 11:47:24 +00002213void sqlite3_result_error(sqlite3_context*, const char*, int);
2214void sqlite3_result_error16(sqlite3_context*, const void*, int);
drh6ed48bf2007-06-14 20:57:18 +00002215void sqlite3_result_error_toobig(sqlite3_context*);
drh4f26d6c2004-05-26 23:25:30 +00002216void sqlite3_result_int(sqlite3_context*, int);
drh6d2069d2007-08-14 01:58:53 +00002217void sqlite3_result_int64(sqlite3_context*, sqlite3_int64);
drh4f26d6c2004-05-26 23:25:30 +00002218void sqlite3_result_null(sqlite3_context*);
danielk1977d8123362004-06-12 09:25:12 +00002219void sqlite3_result_text(sqlite3_context*, const char*, int, void(*)(void*));
2220void sqlite3_result_text16(sqlite3_context*, const void*, int, void(*)(void*));
2221void sqlite3_result_text16le(sqlite3_context*, const void*, int,void(*)(void*));
2222void sqlite3_result_text16be(sqlite3_context*, const void*, int,void(*)(void*));
drh4f26d6c2004-05-26 23:25:30 +00002223void sqlite3_result_value(sqlite3_context*, sqlite3_value*);
drhb026e052007-05-02 01:34:31 +00002224void sqlite3_result_zeroblob(sqlite3_context*, int n);
drhf9b596e2004-05-26 16:54:42 +00002225
drh52619df2004-06-11 17:48:02 +00002226/*
drh6ed48bf2007-06-14 20:57:18 +00002227** CAPI3REF: Define New Collating Sequences
2228**
2229** These functions are used to add new collation sequences to the
2230** [sqlite3*] handle specified as the first argument.
danielk19777cedc8d2004-06-10 10:50:08 +00002231**
2232** The name of the new collation sequence is specified as a UTF-8 string
drh6ed48bf2007-06-14 20:57:18 +00002233** for sqlite3_create_collation() and sqlite3_create_collation_v2()
2234** and a UTF-16 string for sqlite3_create_collation16(). In all cases
2235** the name is passed as the second function argument.
danielk19777cedc8d2004-06-10 10:50:08 +00002236**
drh6ed48bf2007-06-14 20:57:18 +00002237** The third argument must be one of the constants [SQLITE_UTF8],
2238** [SQLITE_UTF16LE] or [SQLITE_UTF16BE], indicating that the user-supplied
danielk19777cedc8d2004-06-10 10:50:08 +00002239** routine expects to be passed pointers to strings encoded using UTF-8,
2240** UTF-16 little-endian or UTF-16 big-endian respectively.
2241**
2242** A pointer to the user supplied routine must be passed as the fifth
2243** argument. If it is NULL, this is the same as deleting the collation
2244** sequence (so that SQLite cannot call it anymore). Each time the user
2245** supplied function is invoked, it is passed a copy of the void* passed as
2246** the fourth argument to sqlite3_create_collation() or
2247** sqlite3_create_collation16() as its first parameter.
2248**
2249** The remaining arguments to the user-supplied routine are two strings,
2250** each represented by a [length, data] pair and encoded in the encoding
2251** that was passed as the third argument when the collation sequence was
2252** registered. The user routine should return negative, zero or positive if
2253** the first string is less than, equal to, or greater than the second
2254** string. i.e. (STRING1 - STRING2).
drh6ed48bf2007-06-14 20:57:18 +00002255**
2256** The sqlite3_create_collation_v2() works like sqlite3_create_collation()
2257** excapt that it takes an extra argument which is a destructor for
2258** the collation. The destructor is called when the collation is
2259** destroyed and is passed a copy of the fourth parameter void* pointer
2260** of the sqlite3_create_collation_v2(). Collations are destroyed when
2261** they are overridden by later calls to the collation creation functions
2262** or when the [sqlite3*] database handle is closed using [sqlite3_close()].
2263**
2264** The sqlite3_create_collation_v2() interface is experimental and
2265** subject to change in future releases. The other collation creation
2266** functions are stable.
danielk19777cedc8d2004-06-10 10:50:08 +00002267*/
danielk19770202b292004-06-09 09:55:16 +00002268int sqlite3_create_collation(
2269 sqlite3*,
2270 const char *zName,
danielk19777cedc8d2004-06-10 10:50:08 +00002271 int eTextRep,
danielk19770202b292004-06-09 09:55:16 +00002272 void*,
2273 int(*xCompare)(void*,int,const void*,int,const void*)
2274);
drh6ed48bf2007-06-14 20:57:18 +00002275int sqlite3_create_collation_v2(
2276 sqlite3*,
2277 const char *zName,
2278 int eTextRep,
2279 void*,
2280 int(*xCompare)(void*,int,const void*,int,const void*),
2281 void(*xDestroy)(void*)
2282);
danielk19770202b292004-06-09 09:55:16 +00002283int sqlite3_create_collation16(
2284 sqlite3*,
2285 const char *zName,
danielk19777cedc8d2004-06-10 10:50:08 +00002286 int eTextRep,
danielk19770202b292004-06-09 09:55:16 +00002287 void*,
2288 int(*xCompare)(void*,int,const void*,int,const void*)
2289);
2290
danielk19777cedc8d2004-06-10 10:50:08 +00002291/*
drh6ed48bf2007-06-14 20:57:18 +00002292** CAPI3REF: Collation Needed Callbacks
danielk1977a393c032007-05-07 14:58:53 +00002293**
danielk19777cedc8d2004-06-10 10:50:08 +00002294** To avoid having to register all collation sequences before a database
2295** can be used, a single callback function may be registered with the
2296** database handle to be called whenever an undefined collation sequence is
2297** required.
2298**
2299** If the function is registered using the sqlite3_collation_needed() API,
2300** then it is passed the names of undefined collation sequences as strings
2301** encoded in UTF-8. If sqlite3_collation_needed16() is used, the names
2302** are passed as UTF-16 in machine native byte order. A call to either
2303** function replaces any existing callback.
2304**
drh6ed48bf2007-06-14 20:57:18 +00002305** When the callback is invoked, the first argument passed is a copy
danielk19777cedc8d2004-06-10 10:50:08 +00002306** of the second argument to sqlite3_collation_needed() or
2307** sqlite3_collation_needed16(). The second argument is the database
drh6ed48bf2007-06-14 20:57:18 +00002308** handle. The third argument is one of [SQLITE_UTF8], [SQLITE_UTF16BE], or
2309** [SQLITE_UTF16LE], indicating the most desirable form of the collation
danielk19777cedc8d2004-06-10 10:50:08 +00002310** sequence function required. The fourth parameter is the name of the
2311** required collation sequence.
2312**
drh6ed48bf2007-06-14 20:57:18 +00002313** The callback function should register the desired collation using
2314** [sqlite3_create_collation()], [sqlite3_create_collation16()], or
2315** [sqlite3_create_collation_v2()].
danielk19777cedc8d2004-06-10 10:50:08 +00002316*/
2317int sqlite3_collation_needed(
2318 sqlite3*,
2319 void*,
2320 void(*)(void*,sqlite3*,int eTextRep,const char*)
2321);
2322int sqlite3_collation_needed16(
2323 sqlite3*,
2324 void*,
2325 void(*)(void*,sqlite3*,int eTextRep,const void*)
2326);
2327
drh2011d5f2004-07-22 02:40:37 +00002328/*
2329** Specify the key for an encrypted database. This routine should be
2330** called right after sqlite3_open().
2331**
2332** The code to implement this API is not available in the public release
2333** of SQLite.
2334*/
2335int sqlite3_key(
2336 sqlite3 *db, /* Database to be rekeyed */
2337 const void *pKey, int nKey /* The key */
2338);
2339
2340/*
2341** Change the key on an open database. If the current database is not
2342** encrypted, this routine will encrypt it. If pNew==0 or nNew==0, the
2343** database is decrypted.
2344**
2345** The code to implement this API is not available in the public release
2346** of SQLite.
2347*/
2348int sqlite3_rekey(
2349 sqlite3 *db, /* Database to be rekeyed */
2350 const void *pKey, int nKey /* The new key */
2351);
danielk19770202b292004-06-09 09:55:16 +00002352
drhab3f9fe2004-08-14 17:10:10 +00002353/*
drh6ed48bf2007-06-14 20:57:18 +00002354** CAPI3REF: Suspend Execution For A Short Time
2355**
danielk1977d84d4832007-06-20 09:09:47 +00002356** This function causes the current thread to suspend execution
drh6ed48bf2007-06-14 20:57:18 +00002357** a number of milliseconds specified in its parameter.
danielk1977600dd0b2005-01-20 01:14:23 +00002358**
2359** If the operating system does not support sleep requests with
drh6ed48bf2007-06-14 20:57:18 +00002360** millisecond time resolution, then the time will be rounded up to
2361** the nearest second. The number of milliseconds of sleep actually
danielk1977600dd0b2005-01-20 01:14:23 +00002362** requested from the operating system is returned.
danielk1977600dd0b2005-01-20 01:14:23 +00002363*/
2364int sqlite3_sleep(int);
2365
2366/*
drh6ed48bf2007-06-14 20:57:18 +00002367** CAPI3REF: Name Of The Folder Holding Temporary Files
drhd89bd002005-01-22 03:03:54 +00002368**
drh6ed48bf2007-06-14 20:57:18 +00002369** If this global variable is made to point to a string which is
2370** the name of a folder (a.ka. directory), then all temporary files
drhab3f9fe2004-08-14 17:10:10 +00002371** created by SQLite will be placed in that directory. If this variable
2372** is NULL pointer, then SQLite does a search for an appropriate temporary
2373** file directory.
2374**
drh6ed48bf2007-06-14 20:57:18 +00002375** Once [sqlite3_open()] has been called, changing this variable will
2376** invalidate the current temporary database, if any. Generally speaking,
2377** it is not safe to invoke this routine after [sqlite3_open()] has
2378** been called.
drhab3f9fe2004-08-14 17:10:10 +00002379*/
drh73be5012007-08-08 12:11:21 +00002380SQLITE_EXTERN char *sqlite3_temp_directory;
drhab3f9fe2004-08-14 17:10:10 +00002381
danielk19776b456a22005-03-21 04:04:02 +00002382/*
drh6ed48bf2007-06-14 20:57:18 +00002383** CAPI3REF: Test To See If The Databse Is In Auto-Commit Mode
danielk19776b456a22005-03-21 04:04:02 +00002384**
drh3e1d8e62005-05-26 16:23:34 +00002385** Test to see whether or not the database connection is in autocommit
2386** mode. Return TRUE if it is and FALSE if not. Autocommit mode is on
2387** by default. Autocommit is disabled by a BEGIN statement and reenabled
2388** by the next COMMIT or ROLLBACK.
drh3e1d8e62005-05-26 16:23:34 +00002389*/
2390int sqlite3_get_autocommit(sqlite3*);
2391
drh51942bc2005-06-12 22:01:42 +00002392/*
drh6ed48bf2007-06-14 20:57:18 +00002393** CAPI3REF: Find The Database Handle Associated With A Prepared Statement
2394**
2395** Return the [sqlite3*] database handle to which a
2396** [sqlite3_stmt | prepared statement] belongs.
2397** This is the same database handle that was
2398** the first argument to the [sqlite3_prepare_v2()] or its variants
2399** that was used to create the statement in the first place.
drh51942bc2005-06-12 22:01:42 +00002400*/
2401sqlite3 *sqlite3_db_handle(sqlite3_stmt*);
drh3e1d8e62005-05-26 16:23:34 +00002402
drh6ed48bf2007-06-14 20:57:18 +00002403
drhb37df7b2005-10-13 02:09:49 +00002404/*
drh6ed48bf2007-06-14 20:57:18 +00002405** CAPI3REF: Commit And Rollback Notification Callbacks
2406**
2407** These routines
2408** register callback functions to be invoked whenever a transaction
2409** is committed or rolled back. The pArg argument is passed through
2410** to the callback. If the callback on a commit hook function
2411** returns non-zero, then the commit is converted into a rollback.
2412**
2413** If another function was previously registered, its pArg value is returned.
2414** Otherwise NULL is returned.
2415**
2416** Registering a NULL function disables the callback.
2417**
2418** For the purposes of this API, a transaction is said to have been
2419** rolled back if an explicit "ROLLBACK" statement is executed, or
2420** an error or constraint causes an implicit rollback to occur. The
2421** callback is not invoked if a transaction is automatically rolled
2422** back because the database connection is closed.
2423**
2424** These are experimental interfaces and are subject to change.
2425*/
2426void *sqlite3_commit_hook(sqlite3*, int(*)(void*), void*);
2427void *sqlite3_rollback_hook(sqlite3*, void(*)(void *), void*);
2428
2429/*
2430** CAPI3REF: Data Change Notification Callbacks
2431**
danielk197794eb6a12005-12-15 15:22:08 +00002432** Register a callback function with the database connection identified by the
2433** first argument to be invoked whenever a row is updated, inserted or deleted.
2434** Any callback set by a previous call to this function for the same
2435** database connection is overridden.
2436**
2437** The second argument is a pointer to the function to invoke when a
2438** row is updated, inserted or deleted. The first argument to the callback is
drh6ed48bf2007-06-14 20:57:18 +00002439** a copy of the third argument to sqlite3_update_hook(). The second callback
danielk197794eb6a12005-12-15 15:22:08 +00002440** argument is one of SQLITE_INSERT, SQLITE_DELETE or SQLITE_UPDATE, depending
2441** on the operation that caused the callback to be invoked. The third and
2442** fourth arguments to the callback contain pointers to the database and
2443** table name containing the affected row. The final callback parameter is
2444** the rowid of the row. In the case of an update, this is the rowid after
2445** the update takes place.
2446**
2447** The update hook is not invoked when internal system tables are
2448** modified (i.e. sqlite_master and sqlite_sequence).
danielk197771fd80b2005-12-16 06:54:01 +00002449**
2450** If another function was previously registered, its pArg value is returned.
2451** Otherwise NULL is returned.
danielk197794eb6a12005-12-15 15:22:08 +00002452*/
danielk197771fd80b2005-12-16 06:54:01 +00002453void *sqlite3_update_hook(
danielk197794eb6a12005-12-15 15:22:08 +00002454 sqlite3*,
drh6d2069d2007-08-14 01:58:53 +00002455 void(*)(void *,int ,char const *,char const *,sqlite3_int64),
danielk197794eb6a12005-12-15 15:22:08 +00002456 void*
2457);
danielk197713a68c32005-12-15 10:11:30 +00002458
danielk1977f3f06bb2005-12-16 15:24:28 +00002459/*
drh6ed48bf2007-06-14 20:57:18 +00002460** CAPI3REF: Enable Or Disable Shared Pager Cache
danielk1977f3f06bb2005-12-16 15:24:28 +00002461**
drh6ed48bf2007-06-14 20:57:18 +00002462** This routine enables or disables the sharing of the database cache
2463** and schema data structures between connections to the same database.
2464** Sharing is enabled if the argument is true and disabled if the argument
2465** is false.
danielk1977f3f06bb2005-12-16 15:24:28 +00002466**
drh6ed48bf2007-06-14 20:57:18 +00002467** Cache sharing is enabled and disabled on a thread-by-thread basis.
2468** Each call to this routine enables or disables cache sharing only for
2469** connections created in the same thread in which this routine is called.
2470** There is no mechanism for sharing cache between database connections
2471** running in different threads.
2472**
2473** Sharing must be disabled prior to shutting down a thread or else
2474** the thread will leak memory. Call this routine with an argument of
2475** 0 to turn off sharing. Or use the sqlite3_thread_cleanup() API.
2476**
2477** This routine must not be called when any database connections
2478** are active in the current thread. Enabling or disabling shared
2479** cache while there are active database connections will result
2480** in memory corruption.
2481**
2482** When the shared cache is enabled, the
2483** following routines must always be called from the same thread:
2484** [sqlite3_open()], [sqlite3_prepare_v2()], [sqlite3_step()],
2485** [sqlite3_reset()], [sqlite3_finalize()], and [sqlite3_close()].
2486** This is due to the fact that the shared cache makes use of
2487** thread-specific storage so that it will be available for sharing
2488** with other connections.
2489**
2490** Virtual tables cannot be used with a shared cache. When shared
2491** cache is enabled, the sqlite3_create_module() API used to register
2492** virtual tables will always return an error.
2493**
2494** This routine returns [SQLITE_OK] if shared cache was
2495** enabled or disabled successfully. An [SQLITE_ERROR | error code]
2496** is returned otherwise.
2497**
2498** Shared cache is disabled by default for backward compatibility.
danielk1977aef0bf62005-12-30 16:28:01 +00002499*/
2500int sqlite3_enable_shared_cache(int);
2501
2502/*
drh6ed48bf2007-06-14 20:57:18 +00002503** CAPI3REF: Attempt To Free Heap Memory
2504**
danielk197752622822006-01-09 09:59:49 +00002505** Attempt to free N bytes of heap memory by deallocating non-essential
2506** memory allocations held by the database library (example: memory
2507** used to cache database pages to improve performance).
2508**
drh6f7adc82006-01-11 21:41:20 +00002509** This function is not a part of standard builds. It is only created
2510** if SQLite is compiled with the SQLITE_ENABLE_MEMORY_MANAGEMENT macro.
danielk197752622822006-01-09 09:59:49 +00002511*/
2512int sqlite3_release_memory(int);
2513
2514/*
drh6ed48bf2007-06-14 20:57:18 +00002515** CAPI3REF: Impose A Limit On Heap Size
2516**
danielk197752622822006-01-09 09:59:49 +00002517** Place a "soft" limit on the amount of heap memory that may be allocated by
2518** SQLite within the current thread. If an internal allocation is requested
drh6ed48bf2007-06-14 20:57:18 +00002519** that would exceed the specified limit, [sqlite3_release_memory()] is invoked
danielk197752622822006-01-09 09:59:49 +00002520** one or more times to free up some space before the allocation is made.
2521**
drh6ed48bf2007-06-14 20:57:18 +00002522** The limit is called "soft", because if [sqlite3_release_memory()] cannot free
danielk197752622822006-01-09 09:59:49 +00002523** sufficient memory to prevent the limit from being exceeded, the memory is
2524** allocated anyway and the current operation proceeds.
2525**
drh6ed48bf2007-06-14 20:57:18 +00002526** Prior to shutting down a thread sqlite3_soft_heap_limit() must be set to
2527** zero (the default) or else the thread will leak memory. Alternatively, use
2528** the [sqlite3_thread_cleanup()] API.
2529**
2530** A negative or zero value for N means that there is no soft heap limit and
2531** [sqlite3_release_memory()] will only be called when memory is exhaused.
2532** The default value for the soft heap limit is zero.
2533**
2534** SQLite makes a best effort to honor the soft heap limit. But if it
2535** is unable to reduce memory usage below the soft limit, execution will
2536** continue without error or notification. This is why the limit is
2537** called a "soft" limit. It is advisory only.
2538**
drh6f7adc82006-01-11 21:41:20 +00002539** This function is only available if the library was compiled with the
2540** SQLITE_ENABLE_MEMORY_MANAGEMENT option set.
danielk197752622822006-01-09 09:59:49 +00002541** memory-management has been enabled.
2542*/
drhd2d4a6b2006-01-10 15:18:27 +00002543void sqlite3_soft_heap_limit(int);
danielk197752622822006-01-09 09:59:49 +00002544
2545/*
drh6ed48bf2007-06-14 20:57:18 +00002546** CAPI3REF: Clean Up Thread Local Storage
2547**
drh6f7adc82006-01-11 21:41:20 +00002548** This routine makes sure that all thread-local storage has been
2549** deallocated for the current thread.
2550**
2551** This routine is not technically necessary. All thread-local storage
2552** will be automatically deallocated once memory-management and
2553** shared-cache are disabled and the soft heap limit has been set
2554** to zero. This routine is provided as a convenience for users who
2555** want to make absolutely sure they have not forgotten something
2556** prior to killing off a thread.
2557*/
2558void sqlite3_thread_cleanup(void);
2559
2560/*
drh6ed48bf2007-06-14 20:57:18 +00002561** CAPI3REF: Extract Metadata About A Column Of A Table
2562**
2563** This routine
2564** returns meta-data about a specific column of a specific database
danielk1977deb802c2006-02-09 13:43:28 +00002565** table accessible using the connection handle passed as the first function
2566** argument.
2567**
2568** The column is identified by the second, third and fourth parameters to
2569** this function. The second parameter is either the name of the database
2570** (i.e. "main", "temp" or an attached database) containing the specified
2571** table or NULL. If it is NULL, then all attached databases are searched
2572** for the table using the same algorithm as the database engine uses to
2573** resolve unqualified table references.
2574**
2575** The third and fourth parameters to this function are the table and column
2576** name of the desired column, respectively. Neither of these parameters
2577** may be NULL.
2578**
2579** Meta information is returned by writing to the memory locations passed as
2580** the 5th and subsequent parameters to this function. Any of these
2581** arguments may be NULL, in which case the corresponding element of meta
2582** information is ommitted.
2583**
drh6ed48bf2007-06-14 20:57:18 +00002584** <pre>
danielk1977deb802c2006-02-09 13:43:28 +00002585** Parameter Output Type Description
2586** -----------------------------------
2587**
2588** 5th const char* Data type
2589** 6th const char* Name of the default collation sequence
2590** 7th int True if the column has a NOT NULL constraint
2591** 8th int True if the column is part of the PRIMARY KEY
2592** 9th int True if the column is AUTOINCREMENT
drh6ed48bf2007-06-14 20:57:18 +00002593** </pre>
danielk1977deb802c2006-02-09 13:43:28 +00002594**
2595**
2596** The memory pointed to by the character pointers returned for the
2597** declaration type and collation sequence is valid only until the next
2598** call to any sqlite API function.
2599**
2600** If the specified table is actually a view, then an error is returned.
2601**
2602** If the specified column is "rowid", "oid" or "_rowid_" and an
2603** INTEGER PRIMARY KEY column has been explicitly declared, then the output
2604** parameters are set for the explicitly declared column. If there is no
2605** explicitly declared IPK column, then the output parameters are set as
2606** follows:
2607**
drh6ed48bf2007-06-14 20:57:18 +00002608** <pre>
danielk1977deb802c2006-02-09 13:43:28 +00002609** data type: "INTEGER"
2610** collation sequence: "BINARY"
2611** not null: 0
2612** primary key: 1
2613** auto increment: 0
drh6ed48bf2007-06-14 20:57:18 +00002614** </pre>
danielk1977deb802c2006-02-09 13:43:28 +00002615**
2616** This function may load one or more schemas from database files. If an
2617** error occurs during this process, or if the requested table or column
2618** cannot be found, an SQLITE error code is returned and an error message
2619** left in the database handle (to be retrieved using sqlite3_errmsg()).
danielk19774b1ae992006-02-10 03:06:10 +00002620**
2621** This API is only available if the library was compiled with the
2622** SQLITE_ENABLE_COLUMN_METADATA preprocessor symbol defined.
danielk1977deb802c2006-02-09 13:43:28 +00002623*/
2624int sqlite3_table_column_metadata(
2625 sqlite3 *db, /* Connection handle */
2626 const char *zDbName, /* Database name or NULL */
2627 const char *zTableName, /* Table name */
2628 const char *zColumnName, /* Column name */
2629 char const **pzDataType, /* OUTPUT: Declared data type */
2630 char const **pzCollSeq, /* OUTPUT: Collation sequence name */
2631 int *pNotNull, /* OUTPUT: True if NOT NULL constraint exists */
2632 int *pPrimaryKey, /* OUTPUT: True if column part of PK */
2633 int *pAutoinc /* OUTPUT: True if colums is auto-increment */
2634);
2635
2636/*
drh6ed48bf2007-06-14 20:57:18 +00002637** CAPI3REF: Load An Extension
drh1e397f82006-06-08 15:28:43 +00002638**
2639** Attempt to load an SQLite extension library contained in the file
2640** zFile. The entry point is zProc. zProc may be 0 in which case the
drhc2e87a32006-06-27 15:16:14 +00002641** name of the entry point defaults to "sqlite3_extension_init".
drh1e397f82006-06-08 15:28:43 +00002642**
drh6ed48bf2007-06-14 20:57:18 +00002643** Return [SQLITE_OK] on success and [SQLITE_ERROR] if something goes wrong.
drh1e397f82006-06-08 15:28:43 +00002644**
2645** If an error occurs and pzErrMsg is not 0, then fill *pzErrMsg with
2646** error message text. The calling function should free this memory
drh6ed48bf2007-06-14 20:57:18 +00002647** by calling [sqlite3_free()].
drh1e397f82006-06-08 15:28:43 +00002648**
drh6ed48bf2007-06-14 20:57:18 +00002649** Extension loading must be enabled using [sqlite3_enable_load_extension()]
drhc2e87a32006-06-27 15:16:14 +00002650** prior to calling this API or an error will be returned.
drh1e397f82006-06-08 15:28:43 +00002651*/
2652int sqlite3_load_extension(
2653 sqlite3 *db, /* Load the extension into this database connection */
2654 const char *zFile, /* Name of the shared library containing extension */
2655 const char *zProc, /* Entry point. Derived from zFile if 0 */
2656 char **pzErrMsg /* Put error message here if not 0 */
2657);
2658
2659/*
drh6ed48bf2007-06-14 20:57:18 +00002660** CAPI3REF: Enable Or Disable Extension Loading
2661**
drhc2e87a32006-06-27 15:16:14 +00002662** So as not to open security holes in older applications that are
drh6ed48bf2007-06-14 20:57:18 +00002663** unprepared to deal with extension loading, and as a means of disabling
2664** extension loading while evaluating user-entered SQL, the following
2665** API is provided to turn the [sqlite3_load_extension()] mechanism on and
drhc2e87a32006-06-27 15:16:14 +00002666** off. It is off by default. See ticket #1863.
2667**
2668** Call this routine with onoff==1 to turn extension loading on
2669** and call it with onoff==0 to turn it back off again.
2670*/
2671int sqlite3_enable_load_extension(sqlite3 *db, int onoff);
2672
2673/*
drh6ed48bf2007-06-14 20:57:18 +00002674** CAPI3REF: Make Arrangements To Automatically Load An Extension
drh9eff6162006-06-12 21:59:13 +00002675**
drh1409be62006-08-23 20:07:20 +00002676** Register an extension entry point that is automatically invoked
drh6ed48bf2007-06-14 20:57:18 +00002677** whenever a new database connection is opened using
2678** [sqlite3_open()] or [sqlite3_open16()].
drh1409be62006-08-23 20:07:20 +00002679**
2680** This API can be invoked at program startup in order to register
2681** one or more statically linked extensions that will be available
2682** to all new database connections.
2683**
2684** Duplicate extensions are detected so calling this routine multiple
2685** times with the same extension is harmless.
2686**
2687** This routine stores a pointer to the extension in an array
2688** that is obtained from malloc(). If you run a memory leak
2689** checker on your program and it reports a leak because of this
drh6ed48bf2007-06-14 20:57:18 +00002690** array, then invoke [sqlite3_automatic_extension_reset()] prior
drh1409be62006-08-23 20:07:20 +00002691** to shutdown to free the memory.
2692**
2693** Automatic extensions apply across all threads.
drh6ed48bf2007-06-14 20:57:18 +00002694**
2695** This interface is experimental and is subject to change or
2696** removal in future releases of SQLite.
drh1409be62006-08-23 20:07:20 +00002697*/
2698int sqlite3_auto_extension(void *xEntryPoint);
2699
2700
2701/*
drh6ed48bf2007-06-14 20:57:18 +00002702** CAPI3REF: Reset Automatic Extension Loading
drh1409be62006-08-23 20:07:20 +00002703**
2704** Disable all previously registered automatic extensions. This
drh6ed48bf2007-06-14 20:57:18 +00002705** routine undoes the effect of all prior [sqlite3_automatic_extension()]
drh1409be62006-08-23 20:07:20 +00002706** calls.
2707**
2708** This call disabled automatic extensions in all threads.
drh6ed48bf2007-06-14 20:57:18 +00002709**
2710** This interface is experimental and is subject to change or
2711** removal in future releases of SQLite.
drh1409be62006-08-23 20:07:20 +00002712*/
2713void sqlite3_reset_auto_extension(void);
2714
2715
2716/*
2717****** EXPERIMENTAL - subject to change without notice **************
2718**
drh9eff6162006-06-12 21:59:13 +00002719** The interface to the virtual-table mechanism is currently considered
2720** to be experimental. The interface might change in incompatible ways.
2721** If this is a problem for you, do not use the interface at this time.
2722**
2723** When the virtual-table mechanism stablizes, we will declare the
2724** interface fixed, support it indefinitely, and remove this comment.
2725*/
2726
2727/*
2728** Structures used by the virtual table interface
drhe09daa92006-06-10 13:29:31 +00002729*/
2730typedef struct sqlite3_vtab sqlite3_vtab;
2731typedef struct sqlite3_index_info sqlite3_index_info;
2732typedef struct sqlite3_vtab_cursor sqlite3_vtab_cursor;
2733typedef struct sqlite3_module sqlite3_module;
drh9eff6162006-06-12 21:59:13 +00002734
2735/*
2736** A module is a class of virtual tables. Each module is defined
2737** by an instance of the following structure. This structure consists
2738** mostly of methods for the module.
2739*/
drhe09daa92006-06-10 13:29:31 +00002740struct sqlite3_module {
2741 int iVersion;
danielk19779da9d472006-06-14 06:58:15 +00002742 int (*xCreate)(sqlite3*, void *pAux,
drhe4102962006-09-11 00:34:22 +00002743 int argc, const char *const*argv,
drh4ca8aac2006-09-10 17:31:58 +00002744 sqlite3_vtab **ppVTab, char**);
danielk19779da9d472006-06-14 06:58:15 +00002745 int (*xConnect)(sqlite3*, void *pAux,
drhe4102962006-09-11 00:34:22 +00002746 int argc, const char *const*argv,
drh4ca8aac2006-09-10 17:31:58 +00002747 sqlite3_vtab **ppVTab, char**);
drhe09daa92006-06-10 13:29:31 +00002748 int (*xBestIndex)(sqlite3_vtab *pVTab, sqlite3_index_info*);
2749 int (*xDisconnect)(sqlite3_vtab *pVTab);
2750 int (*xDestroy)(sqlite3_vtab *pVTab);
2751 int (*xOpen)(sqlite3_vtab *pVTab, sqlite3_vtab_cursor **ppCursor);
2752 int (*xClose)(sqlite3_vtab_cursor*);
drh4be8b512006-06-13 23:51:34 +00002753 int (*xFilter)(sqlite3_vtab_cursor*, int idxNum, const char *idxStr,
drhe09daa92006-06-10 13:29:31 +00002754 int argc, sqlite3_value **argv);
2755 int (*xNext)(sqlite3_vtab_cursor*);
danielk1977a298e902006-06-22 09:53:48 +00002756 int (*xEof)(sqlite3_vtab_cursor*);
drhe09daa92006-06-10 13:29:31 +00002757 int (*xColumn)(sqlite3_vtab_cursor*, sqlite3_context*, int);
drh6d2069d2007-08-14 01:58:53 +00002758 int (*xRowid)(sqlite3_vtab_cursor*, sqlite3_int64 *pRowid);
2759 int (*xUpdate)(sqlite3_vtab *, int, sqlite3_value **, sqlite3_int64 *);
drhe09daa92006-06-10 13:29:31 +00002760 int (*xBegin)(sqlite3_vtab *pVTab);
2761 int (*xSync)(sqlite3_vtab *pVTab);
2762 int (*xCommit)(sqlite3_vtab *pVTab);
2763 int (*xRollback)(sqlite3_vtab *pVTab);
drhb7f6f682006-07-08 17:06:43 +00002764 int (*xFindFunction)(sqlite3_vtab *pVtab, int nArg, const char *zName,
drhe94b0c32006-07-08 18:09:15 +00002765 void (**pxFunc)(sqlite3_context*,int,sqlite3_value**),
2766 void **ppArg);
danielk1977182c4ba2007-06-27 15:53:34 +00002767
2768 int (*xRename)(sqlite3_vtab *pVtab, const char *zNew);
drhe09daa92006-06-10 13:29:31 +00002769};
drh9eff6162006-06-12 21:59:13 +00002770
2771/*
2772** The sqlite3_index_info structure and its substructures is used to
2773** pass information into and receive the reply from the xBestIndex
2774** method of an sqlite3_module. The fields under **Inputs** are the
2775** inputs to xBestIndex and are read-only. xBestIndex inserts its
2776** results into the **Outputs** fields.
2777**
2778** The aConstraint[] array records WHERE clause constraints of the
2779** form:
2780**
2781** column OP expr
2782**
2783** Where OP is =, <, <=, >, or >=. The particular operator is stored
2784** in aConstraint[].op. The index of the column is stored in
2785** aConstraint[].iColumn. aConstraint[].usable is TRUE if the
2786** expr on the right-hand side can be evaluated (and thus the constraint
2787** is usable) and false if it cannot.
2788**
2789** The optimizer automatically inverts terms of the form "expr OP column"
2790** and makes other simplificatinos to the WHERE clause in an attempt to
2791** get as many WHERE clause terms into the form shown above as possible.
2792** The aConstraint[] array only reports WHERE clause terms in the correct
2793** form that refer to the particular virtual table being queried.
2794**
2795** Information about the ORDER BY clause is stored in aOrderBy[].
2796** Each term of aOrderBy records a column of the ORDER BY clause.
2797**
2798** The xBestIndex method must fill aConstraintUsage[] with information
danielk19775fac9f82006-06-13 14:16:58 +00002799** about what parameters to pass to xFilter. If argvIndex>0 then
drh9eff6162006-06-12 21:59:13 +00002800** the right-hand side of the corresponding aConstraint[] is evaluated
2801** and becomes the argvIndex-th entry in argv. If aConstraintUsage[].omit
2802** is true, then the constraint is assumed to be fully handled by the
2803** virtual table and is not checked again by SQLite.
2804**
drh4be8b512006-06-13 23:51:34 +00002805** The idxNum and idxPtr values are recorded and passed into xFilter.
2806** sqlite3_free() is used to free idxPtr if needToFreeIdxPtr is true.
drh9eff6162006-06-12 21:59:13 +00002807**
2808** The orderByConsumed means that output from xFilter will occur in
2809** the correct order to satisfy the ORDER BY clause so that no separate
2810** sorting step is required.
2811**
2812** The estimatedCost value is an estimate of the cost of doing the
2813** particular lookup. A full scan of a table with N entries should have
2814** a cost of N. A binary search of a table of N entries should have a
2815** cost of approximately log(N).
2816*/
drhe09daa92006-06-10 13:29:31 +00002817struct sqlite3_index_info {
2818 /* Inputs */
drh9eff6162006-06-12 21:59:13 +00002819 const int nConstraint; /* Number of entries in aConstraint */
2820 const struct sqlite3_index_constraint {
2821 int iColumn; /* Column on left-hand side of constraint */
2822 unsigned char op; /* Constraint operator */
2823 unsigned char usable; /* True if this constraint is usable */
2824 int iTermOffset; /* Used internally - xBestIndex should ignore */
2825 } *const aConstraint; /* Table of WHERE clause constraints */
2826 const int nOrderBy; /* Number of terms in the ORDER BY clause */
2827 const struct sqlite3_index_orderby {
2828 int iColumn; /* Column number */
2829 unsigned char desc; /* True for DESC. False for ASC. */
2830 } *const aOrderBy; /* The ORDER BY clause */
drhe09daa92006-06-10 13:29:31 +00002831
2832 /* Outputs */
drh9eff6162006-06-12 21:59:13 +00002833 struct sqlite3_index_constraint_usage {
2834 int argvIndex; /* if >0, constraint is part of argv to xFilter */
2835 unsigned char omit; /* Do not code a test for this constraint */
2836 } *const aConstraintUsage;
drh4be8b512006-06-13 23:51:34 +00002837 int idxNum; /* Number used to identify the index */
2838 char *idxStr; /* String, possibly obtained from sqlite3_malloc */
2839 int needToFreeIdxStr; /* Free idxStr using sqlite3_free() if true */
drh9eff6162006-06-12 21:59:13 +00002840 int orderByConsumed; /* True if output is already ordered */
2841 double estimatedCost; /* Estimated cost of using this index */
drhe09daa92006-06-10 13:29:31 +00002842};
drh9eff6162006-06-12 21:59:13 +00002843#define SQLITE_INDEX_CONSTRAINT_EQ 2
2844#define SQLITE_INDEX_CONSTRAINT_GT 4
2845#define SQLITE_INDEX_CONSTRAINT_LE 8
2846#define SQLITE_INDEX_CONSTRAINT_LT 16
2847#define SQLITE_INDEX_CONSTRAINT_GE 32
2848#define SQLITE_INDEX_CONSTRAINT_MATCH 64
2849
2850/*
2851** This routine is used to register a new module name with an SQLite
2852** connection. Module names must be registered before creating new
2853** virtual tables on the module, or before using preexisting virtual
2854** tables of the module.
2855*/
drhb9bb7c12006-06-11 23:41:55 +00002856int sqlite3_create_module(
drh9eff6162006-06-12 21:59:13 +00002857 sqlite3 *db, /* SQLite connection to register module with */
2858 const char *zName, /* Name of the module */
danielk1977d1ab1ba2006-06-15 04:28:13 +00002859 const sqlite3_module *, /* Methods for the module */
2860 void * /* Client data for xCreate/xConnect */
drhb9bb7c12006-06-11 23:41:55 +00002861);
drhe09daa92006-06-10 13:29:31 +00002862
drh9eff6162006-06-12 21:59:13 +00002863/*
danielk1977832a58a2007-06-22 15:21:15 +00002864** This routine is identical to the sqlite3_create_module() method above,
2865** except that it allows a destructor function to be specified. It is
2866** even more experimental than the rest of the virtual tables API.
2867*/
2868int sqlite3_create_module_v2(
2869 sqlite3 *db, /* SQLite connection to register module with */
2870 const char *zName, /* Name of the module */
2871 const sqlite3_module *, /* Methods for the module */
2872 void *, /* Client data for xCreate/xConnect */
2873 void(*xDestroy)(void*) /* Module destructor function */
2874);
2875
2876/*
drh9eff6162006-06-12 21:59:13 +00002877** Every module implementation uses a subclass of the following structure
2878** to describe a particular instance of the module. Each subclass will
2879** be taylored to the specific needs of the module implementation. The
2880** purpose of this superclass is to define certain fields that are common
2881** to all module implementations.
drhfe1368e2006-09-10 17:08:29 +00002882**
2883** Virtual tables methods can set an error message by assigning a
2884** string obtained from sqlite3_mprintf() to zErrMsg. The method should
2885** take care that any prior string is freed by a call to sqlite3_free()
2886** prior to assigning a new string to zErrMsg. After the error message
2887** is delivered up to the client application, the string will be automatically
2888** freed by sqlite3_free() and the zErrMsg field will be zeroed. Note
2889** that sqlite3_mprintf() and sqlite3_free() are used on the zErrMsg field
2890** since virtual tables are commonly implemented in loadable extensions which
2891** do not have access to sqlite3MPrintf() or sqlite3Free().
drh9eff6162006-06-12 21:59:13 +00002892*/
2893struct sqlite3_vtab {
drha967e882006-06-13 01:04:52 +00002894 const sqlite3_module *pModule; /* The module for this virtual table */
danielk1977be718892006-06-23 08:05:19 +00002895 int nRef; /* Used internally */
drh4ca8aac2006-09-10 17:31:58 +00002896 char *zErrMsg; /* Error message from sqlite3_mprintf() */
drh9eff6162006-06-12 21:59:13 +00002897 /* Virtual table implementations will typically add additional fields */
2898};
2899
2900/* Every module implementation uses a subclass of the following structure
2901** to describe cursors that point into the virtual table and are used
2902** to loop through the virtual table. Cursors are created using the
2903** xOpen method of the module. Each module implementation will define
2904** the content of a cursor structure to suit its own needs.
2905**
2906** This superclass exists in order to define fields of the cursor that
2907** are common to all implementations.
2908*/
2909struct sqlite3_vtab_cursor {
2910 sqlite3_vtab *pVtab; /* Virtual table of this cursor */
2911 /* Virtual table implementations will typically add additional fields */
2912};
2913
2914/*
2915** The xCreate and xConnect methods of a module use the following API
2916** to declare the format (the names and datatypes of the columns) of
2917** the virtual tables they implement.
2918*/
danielk19777e6ebfb2006-06-12 11:24:37 +00002919int sqlite3_declare_vtab(sqlite3*, const char *zCreateTable);
drhe09daa92006-06-10 13:29:31 +00002920
2921/*
drhb7481e72006-09-16 21:45:14 +00002922** Virtual tables can provide alternative implementations of functions
2923** using the xFindFunction method. But global versions of those functions
2924** must exist in order to be overloaded.
2925**
2926** This API makes sure a global version of a function with a particular
2927** name and number of parameters exists. If no such function exists
2928** before this API is called, a new function is created. The implementation
2929** of the new function always causes an exception to be thrown. So
2930** the new function is not good for anything by itself. Its only
2931** purpose is to be a place-holder function that can be overloaded
2932** by virtual tables.
2933**
2934** This API should be considered part of the virtual table interface,
2935** which is experimental and subject to change.
2936*/
2937int sqlite3_overload_function(sqlite3*, const char *zFuncName, int nArg);
2938
2939/*
drh9eff6162006-06-12 21:59:13 +00002940** The interface to the virtual-table mechanism defined above (back up
2941** to a comment remarkably similar to this one) is currently considered
2942** to be experimental. The interface might change in incompatible ways.
2943** If this is a problem for you, do not use the interface at this time.
2944**
2945** When the virtual-table mechanism stablizes, we will declare the
2946** interface fixed, support it indefinitely, and remove this comment.
2947**
2948****** EXPERIMENTAL - subject to change without notice **************
2949*/
2950
danielk19778cbadb02007-05-03 16:31:26 +00002951/*
drh6ed48bf2007-06-14 20:57:18 +00002952** CAPI3REF: A Handle To An Open BLOB
2953**
danielk19778cbadb02007-05-03 16:31:26 +00002954** An instance of the following opaque structure is used to
drh6ed48bf2007-06-14 20:57:18 +00002955** represent an blob-handle. A blob-handle is created by
2956** [sqlite3_blob_open()] and destroyed by [sqlite3_blob_close()].
2957** The [sqlite3_blob_read()] and [sqlite3_blob_write()] interfaces
2958** can be used to read or write small subsections of the blob.
2959** The [sqltie3_blob_size()] interface returns the size of the
2960** blob in bytes.
danielk19778cbadb02007-05-03 16:31:26 +00002961*/
danielk1977b4e9af92007-05-01 17:49:49 +00002962typedef struct sqlite3_blob sqlite3_blob;
2963
danielk19778cbadb02007-05-03 16:31:26 +00002964/*
drh6ed48bf2007-06-14 20:57:18 +00002965** CAPI3REF: Open A BLOB For Incremental I/O
2966**
danielk19778cbadb02007-05-03 16:31:26 +00002967** Open a handle to the blob located in row iRow,, column zColumn,
2968** table zTable in database zDb. i.e. the same blob that would
2969** be selected by:
2970**
drh6ed48bf2007-06-14 20:57:18 +00002971** <pre>
2972** SELECT zColumn FROM zDb.zTable WHERE rowid = iRow;
2973** </pre>
danielk19778cbadb02007-05-03 16:31:26 +00002974**
2975** If the flags parameter is non-zero, the blob is opened for
2976** read and write access. If it is zero, the blob is opened for read
2977** access.
2978**
drh6ed48bf2007-06-14 20:57:18 +00002979** On success, [SQLITE_OK] is returned and the new
2980** [sqlite3_blob | blob handle] is written to *ppBlob.
2981** Otherwise an error code is returned and
danielk19778cbadb02007-05-03 16:31:26 +00002982** any value written to *ppBlob should not be used by the caller.
2983** This function sets the database-handle error code and message
drh6ed48bf2007-06-14 20:57:18 +00002984** accessible via [sqlite3_errcode()] and [sqlite3_errmsg()].
danielk19778cbadb02007-05-03 16:31:26 +00002985*/
danielk1977b4e9af92007-05-01 17:49:49 +00002986int sqlite3_blob_open(
2987 sqlite3*,
2988 const char *zDb,
2989 const char *zTable,
2990 const char *zColumn,
drh6d2069d2007-08-14 01:58:53 +00002991 sqlite3_int64 iRow,
danielk1977b4e9af92007-05-01 17:49:49 +00002992 int flags,
2993 sqlite3_blob **ppBlob
2994);
2995
danielk19778cbadb02007-05-03 16:31:26 +00002996/*
drh6ed48bf2007-06-14 20:57:18 +00002997** CAPI3REF: Close A BLOB Handle
2998**
2999** Close an open [sqlite3_blob | blob handle].
danielk19778cbadb02007-05-03 16:31:26 +00003000*/
danielk1977b4e9af92007-05-01 17:49:49 +00003001int sqlite3_blob_close(sqlite3_blob *);
3002
danielk19778cbadb02007-05-03 16:31:26 +00003003/*
drh6ed48bf2007-06-14 20:57:18 +00003004** CAPI3REF: Return The Size Of An Open BLOB
3005**
danielk19778cbadb02007-05-03 16:31:26 +00003006** Return the size in bytes of the blob accessible via the open
drh6ed48bf2007-06-14 20:57:18 +00003007** [sqlite3_blob | blob-handle] passed as an argument.
danielk19778cbadb02007-05-03 16:31:26 +00003008*/
danielk1977b4e9af92007-05-01 17:49:49 +00003009int sqlite3_blob_bytes(sqlite3_blob *);
3010
drh9eff6162006-06-12 21:59:13 +00003011/*
drh6ed48bf2007-06-14 20:57:18 +00003012** CAPI3REF: Read Data From A BLOB Incrementally
3013**
3014** This function is used to read data from an open
3015** [sqlite3_blob | blob-handle] into a caller supplied buffer.
3016** n bytes of data are copied into buffer
danielk19778cbadb02007-05-03 16:31:26 +00003017** z from the open blob, starting at offset iOffset.
3018**
drh6ed48bf2007-06-14 20:57:18 +00003019** On success, SQLITE_OK is returned. Otherwise, an
3020** [SQLITE_ERROR | SQLite error code] or an
3021** [SQLITE_IOERR_READ | extended error code] is returned.
danielk19778cbadb02007-05-03 16:31:26 +00003022*/
3023int sqlite3_blob_read(sqlite3_blob *, void *z, int n, int iOffset);
3024
3025/*
drh6ed48bf2007-06-14 20:57:18 +00003026** CAPI3REF: Write Data Into A BLOB Incrementally
3027**
3028** This function is used to write data into an open
3029** [sqlite3_blob | blob-handle] from a user supplied buffer.
3030** n bytes of data are copied from the buffer
danielk19778cbadb02007-05-03 16:31:26 +00003031** pointed to by z into the open blob, starting at offset iOffset.
3032**
drh6ed48bf2007-06-14 20:57:18 +00003033** If the [sqlite3_blob | blob-handle] passed as the first argument
3034** was not opened for writing (the flags parameter to [sqlite3_blob_open()]
3035*** was zero), this function returns [SQLITE_READONLY].
danielk19778cbadb02007-05-03 16:31:26 +00003036**
3037** This function may only modify the contents of the blob, it is
3038** not possible to increase the size of a blob using this API. If
3039** offset iOffset is less than n bytes from the end of the blob,
drh6ed48bf2007-06-14 20:57:18 +00003040** [SQLITE_ERROR] is returned and no data is written.
danielk19778cbadb02007-05-03 16:31:26 +00003041**
drh6ed48bf2007-06-14 20:57:18 +00003042** On success, SQLITE_OK is returned. Otherwise, an
3043** [SQLITE_ERROR | SQLite error code] or an
3044** [SQLITE_IOERR_READ | extended error code] is returned.
danielk19778cbadb02007-05-03 16:31:26 +00003045*/
3046int sqlite3_blob_write(sqlite3_blob *, const void *z, int n, int iOffset);
3047
drh6d2069d2007-08-14 01:58:53 +00003048
3049
danielk19778cbadb02007-05-03 16:31:26 +00003050/*
drhb37df7b2005-10-13 02:09:49 +00003051** Undo the hack that converts floating point types to integer for
3052** builds on processors without floating point support.
3053*/
3054#ifdef SQLITE_OMIT_FLOATING_POINT
3055# undef double
3056#endif
3057
drh382c0242001-10-06 16:33:02 +00003058#ifdef __cplusplus
3059} /* End of the 'extern "C"' block */
3060#endif
danielk19774adee202004-05-08 08:23:19 +00003061#endif