blob: 04e938ba9b124b40f8342c4b94278d72143df71e [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**
drh871f6ca2007-08-14 18:03:14 +000033** @(#) $Id: sqlite.h.in,v 1.221 2007/08/14 18:03:15 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
drh871f6ca2007-08-14 18:03:14 +0000739** thread that is currently running the database operation. But it
740** is not safe to call this routine with a database connection that
741** is closed or might close before sqlite3_interrupt() returns.
drh6ed48bf2007-06-14 20:57:18 +0000742**
743** The SQL operation that is interrupted will return [SQLITE_INTERRUPT].
744** If an interrupted operation was an update that is inside an
745** explicit transaction, then the entire transaction will be rolled
746** back automatically.
drh4c504392000-10-16 22:06:40 +0000747*/
danielk1977f9d64d22004-06-19 08:18:07 +0000748void sqlite3_interrupt(sqlite3*);
drh4c504392000-10-16 22:06:40 +0000749
drh6ed48bf2007-06-14 20:57:18 +0000750/*
751** CAPI3REF: Determine If An SQL Statement Is Complete
752**
753** These functions return true if the given input string comprises
danielk197761de0d12004-05-27 23:56:16 +0000754** one or more complete SQL statements. For the sqlite3_complete() call,
755** the parameter must be a nul-terminated UTF-8 string. For
756** sqlite3_complete16(), a nul-terminated machine byte order UTF-16 string
757** is required.
drh75897232000-05-29 14:26:00 +0000758**
drh6ed48bf2007-06-14 20:57:18 +0000759** These routines are useful for command-line input to determine if the
760** currently entered text forms one or more complete SQL statements or
761** if additional input is needed before sending the statements into
762** SQLite for parsing. The algorithm is simple. If the
drh930cc582007-03-28 13:07:40 +0000763** last token other than spaces and comments is a semicolon, then return
764** true. Actually, the algorithm is a little more complicated than that
765** in order to deal with triggers, but the basic idea is the same: the
766** statement is not complete unless it ends in a semicolon.
drh75897232000-05-29 14:26:00 +0000767*/
danielk19776f8a5032004-05-10 10:34:51 +0000768int sqlite3_complete(const char *sql);
danielk197761de0d12004-05-27 23:56:16 +0000769int sqlite3_complete16(const void *sql);
drh75897232000-05-29 14:26:00 +0000770
drh2dfbbca2000-07-28 14:32:48 +0000771/*
drh6ed48bf2007-06-14 20:57:18 +0000772** CAPI3REF: Register A Callback To Handle SQLITE_BUSY Errors
773**
774** This routine identifies a callback function that might be invoked
775** whenever an attempt is made to open a database table
776** that another thread or process has locked.
777** If the busy callback is NULL, then [SQLITE_BUSY]
778** (or sometimes [SQLITE_IOERR_BLOCKED])
779** is returned immediately upon encountering the lock.
780** If the busy callback is not NULL, then the
781** callback will be invoked with two arguments. The
drh86939b52007-01-10 12:54:51 +0000782** first argument to the handler is a copy of the void* pointer which
783** is the third argument to this routine. The second argument to
784** the handler is the number of times that the busy handler has
drh6ed48bf2007-06-14 20:57:18 +0000785** been invoked for this locking event. If the
786** busy callback returns 0, then no additional attempts are made to
787** access the database and [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED] is returned.
788** If the callback returns non-zero, then another attempt is made to open the
789** database for reading and the cycle repeats.
drh2dfbbca2000-07-28 14:32:48 +0000790**
drh86939b52007-01-10 12:54:51 +0000791** The presence of a busy handler does not guarantee that
792** it will be invoked when there is lock contention.
793** If SQLite determines that invoking the busy handler could result in
drh6ed48bf2007-06-14 20:57:18 +0000794** a deadlock, it will return [SQLITE_BUSY] instead.
drh86939b52007-01-10 12:54:51 +0000795** Consider a scenario where one process is holding a read lock that
796** it is trying to promote to a reserved lock and
797** a second process is holding a reserved lock that it is trying
798** to promote to an exclusive lock. The first process cannot proceed
799** because it is blocked by the second and the second process cannot
800** proceed because it is blocked by the first. If both processes
801** invoke the busy handlers, neither will make any progress. Therefore,
drh6ed48bf2007-06-14 20:57:18 +0000802** SQLite returns [SQLITE_BUSY] for the first process, hoping that this
drh86939b52007-01-10 12:54:51 +0000803** will induce the first process to release its read lock and allow
804** the second process to proceed.
805**
drh2dfbbca2000-07-28 14:32:48 +0000806** The default busy callback is NULL.
807**
drh6ed48bf2007-06-14 20:57:18 +0000808** The [SQLITE_BUSY] error is converted to [SQLITE_IOERR_BLOCKED] when
809** SQLite is in the middle of a large transaction where all the
810** changes will not fit into the in-memory cache. SQLite will
811** already hold a RESERVED lock on the database file, but it needs
812** to promote this lock to EXCLUSIVE so that it can spill cache
813** pages into the database file without harm to concurrent
814** readers. If it is unable to promote the lock, then the in-memory
815** cache will be left in an inconsistent state and so the error
816** code is promoted from the relatively benign [SQLITE_BUSY] to
817** the more severe [SQLITE_IOERR_BLOCKED]. This error code promotion
818** forces an automatic rollback of the changes. See the
819** <a href="http://www.sqlite.org/cvstrac/wiki?p=CorruptionFollowingBusyError">
820** CorruptionFollowingBusyError</a> wiki page for a discussion of why
821** this is important.
822**
drh2dfbbca2000-07-28 14:32:48 +0000823** Sqlite is re-entrant, so the busy handler may start a new query.
drh6ed48bf2007-06-14 20:57:18 +0000824** (It is not clear why anyone would every want to do this, but it
drh2dfbbca2000-07-28 14:32:48 +0000825** is allowed, in theory.) But the busy handler may not close the
826** database. Closing the database from a busy handler will delete
827** data structures out from under the executing query and will
drh6ed48bf2007-06-14 20:57:18 +0000828** probably result in a segmentation fault or other runtime error.
829**
830** There can only be a single busy handler defined for each database
831** connection. Setting a new busy handler clears any previous one.
832** Note that calling [sqlite3_busy_timeout()] will also set or clear
833** the busy handler.
drh2dfbbca2000-07-28 14:32:48 +0000834*/
danielk1977f9d64d22004-06-19 08:18:07 +0000835int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*);
drh2dfbbca2000-07-28 14:32:48 +0000836
837/*
drh6ed48bf2007-06-14 20:57:18 +0000838** CAPI3REF: Set A Busy Timeout
839**
drh2dfbbca2000-07-28 14:32:48 +0000840** This routine sets a busy handler that sleeps for a while when a
841** table is locked. The handler will sleep multiple times until
drh6ed48bf2007-06-14 20:57:18 +0000842** at least "ms" milliseconds of sleeping have been done. After
843** "ms" milliseconds of sleeping, the handler returns 0 which
844** causes [sqlite3_step()] to return [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED].
drh2dfbbca2000-07-28 14:32:48 +0000845**
846** Calling this routine with an argument less than or equal to zero
847** turns off all busy handlers.
drh6ed48bf2007-06-14 20:57:18 +0000848**
849** There can only be a single busy handler for a particular database
850** connection. If another busy handler was defined
851** (using [sqlite3_busy_handler()]) prior to calling
852** this routine, that other busy handler is cleared.
drh2dfbbca2000-07-28 14:32:48 +0000853*/
danielk1977f9d64d22004-06-19 08:18:07 +0000854int sqlite3_busy_timeout(sqlite3*, int ms);
drh2dfbbca2000-07-28 14:32:48 +0000855
drhe3710332000-09-29 13:30:53 +0000856/*
drh6ed48bf2007-06-14 20:57:18 +0000857** CAPI3REF: Convenience Routines For Running Queries
858**
859** This next routine is a convenience wrapper around [sqlite3_exec()].
drhe3710332000-09-29 13:30:53 +0000860** Instead of invoking a user-supplied callback for each row of the
861** result, this routine remembers each row of the result in memory
drh6ed48bf2007-06-14 20:57:18 +0000862** obtained from [sqlite3_malloc()], then returns all of the result after the
drha18c5682000-10-08 22:20:57 +0000863** query has finished.
864**
865** As an example, suppose the query result where this table:
866**
drh6ed48bf2007-06-14 20:57:18 +0000867** <pre>
drha18c5682000-10-08 22:20:57 +0000868** Name | Age
869** -----------------------
870** Alice | 43
871** Bob | 28
872** Cindy | 21
drh6ed48bf2007-06-14 20:57:18 +0000873** </pre>
drha18c5682000-10-08 22:20:57 +0000874**
875** If the 3rd argument were &azResult then after the function returns
drh98699b52000-10-09 12:57:00 +0000876** azResult will contain the following data:
drha18c5682000-10-08 22:20:57 +0000877**
drh6ed48bf2007-06-14 20:57:18 +0000878** <pre>
drha18c5682000-10-08 22:20:57 +0000879** azResult[0] = "Name";
880** azResult[1] = "Age";
881** azResult[2] = "Alice";
882** azResult[3] = "43";
883** azResult[4] = "Bob";
884** azResult[5] = "28";
885** azResult[6] = "Cindy";
886** azResult[7] = "21";
drh6ed48bf2007-06-14 20:57:18 +0000887** </pre>
drha18c5682000-10-08 22:20:57 +0000888**
889** Notice that there is an extra row of data containing the column
890** headers. But the *nrow return value is still 3. *ncolumn is
891** set to 2. In general, the number of values inserted into azResult
892** will be ((*nrow) + 1)*(*ncolumn).
893**
894** After the calling function has finished using the result, it should
danielk19776f8a5032004-05-10 10:34:51 +0000895** pass the result data pointer to sqlite3_free_table() in order to
drha18c5682000-10-08 22:20:57 +0000896** release the memory that was malloc-ed. Because of the way the
drh6ed48bf2007-06-14 20:57:18 +0000897** [sqlite3_malloc()] happens, the calling function must not try to call
898** [sqlite3_free()] directly. Only [sqlite3_free_table()] is able to release
drha18c5682000-10-08 22:20:57 +0000899** the memory properly and safely.
drhe3710332000-09-29 13:30:53 +0000900**
drh6ed48bf2007-06-14 20:57:18 +0000901** The return value of this routine is the same as from [sqlite3_exec()].
drhe3710332000-09-29 13:30:53 +0000902*/
danielk19776f8a5032004-05-10 10:34:51 +0000903int sqlite3_get_table(
drh6ed48bf2007-06-14 20:57:18 +0000904 sqlite3*, /* An open database */
drh9f71c2e2001-11-03 23:57:09 +0000905 const char *sql, /* SQL to be executed */
drhe3710332000-09-29 13:30:53 +0000906 char ***resultp, /* Result written to a char *[] that this points to */
907 int *nrow, /* Number of result rows written here */
908 int *ncolumn, /* Number of result columns written here */
909 char **errmsg /* Error msg written here */
910);
danielk19776f8a5032004-05-10 10:34:51 +0000911void sqlite3_free_table(char **result);
drhe3710332000-09-29 13:30:53 +0000912
drha18c5682000-10-08 22:20:57 +0000913/*
drh6ed48bf2007-06-14 20:57:18 +0000914** CAPI3REF: Formatted String Printing Functions
915**
916** These routines are workalikes of the "printf()" family of functions
917** from the standard C library.
918**
919** The sqlite3_mprintf() and sqlite3_vmprintf() routines write their
drh6d2069d2007-08-14 01:58:53 +0000920** results into memory obtained from [sqlite3_malloc()].
drh6ed48bf2007-06-14 20:57:18 +0000921** The strings returned by these two routines should be
922** released by [sqlite3_free()]. Both routines return a
923** NULL pointer if [sqlite3_malloc()] is unable to allocate enough
924** memory to hold the resulting string.
925**
926** In sqlite3_snprintf() routine is similar to "snprintf()" from
927** the standard C library. The result is written into the
928** buffer supplied as the second parameter whose size is given by
929** the first parameter. Note that the order of the
930** first two parameters is reversed from snprintf(). This is an
931** historical accident that cannot be fixed without breaking
932** backwards compatibility. Note also that sqlite3_snprintf()
933** returns a pointer to its buffer instead of the number of
934** characters actually written into the buffer. We admit that
935** the number of characters written would be a more useful return
936** value but we cannot change the implementation of sqlite3_snprintf()
937** now without breaking compatibility.
938**
939** As long as the buffer size is greater than zero, sqlite3_snprintf()
940** guarantees that the buffer is always zero-terminated. The first
941** parameter "n" is the total size of the buffer, including space for
942** the zero terminator. So the longest string that can be completely
943** written will be n-1 characters.
944**
945** These routines all implement some additional formatting
drh4f26d6c2004-05-26 23:25:30 +0000946** options that are useful for constructing SQL statements.
drha18c5682000-10-08 22:20:57 +0000947** All of the usual printf formatting options apply. In addition, there
drh6ed48bf2007-06-14 20:57:18 +0000948** is are "%q" and "%Q" options.
949**
950** The %q option works like %s in that it substitutes a null-terminated
drh66b89c82000-11-28 20:47:17 +0000951** string from the argument list. But %q also doubles every '\'' character.
drha18c5682000-10-08 22:20:57 +0000952** %q is designed for use inside a string literal. By doubling each '\''
drh66b89c82000-11-28 20:47:17 +0000953** character it escapes that character and allows it to be inserted into
drha18c5682000-10-08 22:20:57 +0000954** the string.
955**
956** For example, so some string variable contains text as follows:
957**
drh6ed48bf2007-06-14 20:57:18 +0000958** <blockquote><pre>
959** char *zText = "It's a happy day!";
960** </pre></blockquote>
drha18c5682000-10-08 22:20:57 +0000961**
drh6ed48bf2007-06-14 20:57:18 +0000962** One can use this text in an SQL statement as follows:
drha18c5682000-10-08 22:20:57 +0000963**
drh6ed48bf2007-06-14 20:57:18 +0000964** <blockquote><pre>
965** char *zSQL = sqlite3_mprintf("INSERT INTO table VALUES('%q')", zText);
966** sqlite3_exec(db, zSQL, 0, 0, 0);
967** sqlite3_free(zSQL);
968** </pre></blockquote>
drha18c5682000-10-08 22:20:57 +0000969**
970** Because the %q format string is used, the '\'' character in zText
971** is escaped and the SQL generated is as follows:
972**
drh6ed48bf2007-06-14 20:57:18 +0000973** <blockquote><pre>
974** INSERT INTO table1 VALUES('It''s a happy day!')
975** </pre></blockquote>
drha18c5682000-10-08 22:20:57 +0000976**
977** This is correct. Had we used %s instead of %q, the generated SQL
978** would have looked like this:
979**
drh6ed48bf2007-06-14 20:57:18 +0000980** <blockquote><pre>
981** INSERT INTO table1 VALUES('It's a happy day!');
982** </pre></blockquote>
drha18c5682000-10-08 22:20:57 +0000983**
984** This second example is an SQL syntax error. As a general rule you
985** should always use %q instead of %s when inserting text into a string
986** literal.
drh6ed48bf2007-06-14 20:57:18 +0000987**
988** The %Q option works like %q except it also adds single quotes around
989** the outside of the total string. Or if the parameter in the argument
990** list is a NULL pointer, %Q substitutes the text "NULL" (without single
991** quotes) in place of the %Q option. So, for example, one could say:
992**
993** <blockquote><pre>
994** char *zSQL = sqlite3_mprintf("INSERT INTO table VALUES(%Q)", zText);
995** sqlite3_exec(db, zSQL, 0, 0, 0);
996** sqlite3_free(zSQL);
997** </pre></blockquote>
998**
999** The code above will render a correct SQL statement in the zSQL
1000** variable even if the zText variable is a NULL pointer.
drha18c5682000-10-08 22:20:57 +00001001*/
danielk19776f8a5032004-05-10 10:34:51 +00001002char *sqlite3_mprintf(const char*,...);
1003char *sqlite3_vmprintf(const char*, va_list);
drhfeac5f82004-08-01 00:10:45 +00001004char *sqlite3_snprintf(int,char*,const char*, ...);
drh5191b7e2002-03-08 02:12:00 +00001005
drh28dd4792006-06-26 21:35:44 +00001006/*
drh6ed48bf2007-06-14 20:57:18 +00001007** CAPI3REF: Memory Allocation Functions
1008**
1009** SQLite uses its own memory allocator. On some installations, this
drh28dd4792006-06-26 21:35:44 +00001010** memory allocator is identical to the standard malloc()/realloc()/free()
1011** and can be used interchangable. On others, the implementations are
1012** different. For maximum portability, it is best not to mix calls
1013** to the standard malloc/realloc/free with the sqlite versions.
1014*/
1015void *sqlite3_malloc(int);
1016void *sqlite3_realloc(void*, int);
1017void sqlite3_free(void*);
1018
drh5191b7e2002-03-08 02:12:00 +00001019/*
drh6ed48bf2007-06-14 20:57:18 +00001020** CAPI3REF: Compile-Time Authorization Callbacks
1021***
1022** This routine registers a authorizer callback with the SQLite library.
1023** The authorizer callback is invoked as SQL statements are being compiled
1024** by [sqlite3_prepare()] or its variants [sqlite3_prepare_v2()],
1025** [sqlite3_prepare16()] and [sqlite3_prepare16_v2()]. At various
1026** points during the compilation process, as logic is being created
1027** to perform various actions, the authorizer callback is invoked to
1028** see if those actions are allowed. The authorizer callback should
1029** return SQLITE_OK to allow the action, [SQLITE_IGNORE] to disallow the
1030** specific action but allow the SQL statement to continue to be
1031** compiled, or [SQLITE_DENY] to cause the entire SQL statement to be
1032** rejected with an error.
1033**
1034** Depending on the action, the [SQLITE_IGNORE] and [SQLITE_DENY] return
1035** codes might mean something different or they might mean the same
1036** thing. If the action is, for example, to perform a delete opertion,
1037** then [SQLITE_IGNORE] and [SQLITE_DENY] both cause the statement compilation
1038** to fail with an error. But if the action is to read a specific column
1039** from a specific table, then [SQLITE_DENY] will cause the entire
1040** statement to fail but [SQLITE_IGNORE] will cause a NULL value to be
1041** read instead of the actual column value.
1042**
1043** The first parameter to the authorizer callback is a copy of
1044** the third parameter to the sqlite3_set_authorizer() interface.
1045** The second parameter to the callback is an integer
1046** [SQLITE_COPY | action code] that specifies the particular action
1047** to be authorized. The available action codes are
1048** [SQLITE_COPY | documented separately]. The third through sixth
1049** parameters to the callback are strings that contain additional
1050** details about the action to be authorized.
1051**
1052** An authorizer is used when preparing SQL statements from an untrusted
1053** source, to ensure that the SQL statements do not try to access data
1054** that they are not allowed to see, or that they do not try to
1055** execute malicious statements that damage the database. For
1056** example, an application may allow a user to enter arbitrary
1057** SQL queries for evaluation by a database. But the application does
1058** not want the user to be able to make arbitrary changes to the
1059** database. An authorizer could then be put in place while the
1060** user-entered SQL is being prepared that disallows everything
1061** except SELECT statements.
1062**
1063** Only a single authorizer can be in place on a database connection
1064** at a time. Each call to sqlite3_set_authorizer overrides the
1065** previous call. A NULL authorizer means that no authorization
1066** callback is invoked. The default authorizer is NULL.
1067**
1068** Note that the authorizer callback is invoked only during
1069** [sqlite3_prepare()] or its variants. Authorization is not
1070** performed during statement evaluation in [sqlite3_step()].
drhed6c8672003-01-12 18:02:16 +00001071*/
danielk19776f8a5032004-05-10 10:34:51 +00001072int sqlite3_set_authorizer(
danielk1977f9d64d22004-06-19 08:18:07 +00001073 sqlite3*,
drhe22a3342003-04-22 20:30:37 +00001074 int (*xAuth)(void*,int,const char*,const char*,const char*,const char*),
drhe5f9c642003-01-13 23:27:31 +00001075 void *pUserData
drhed6c8672003-01-12 18:02:16 +00001076);
1077
1078/*
drh6ed48bf2007-06-14 20:57:18 +00001079** CAPI3REF: Authorizer Return Codes
1080**
1081** The [sqlite3_set_authorizer | authorizer callback function] must
1082** return either [SQLITE_OK] or one of these two constants in order
1083** to signal SQLite whether or not the action is permitted. See the
1084** [sqlite3_set_authorizer | authorizer documentation] for additional
1085** information.
1086*/
1087#define SQLITE_DENY 1 /* Abort the SQL statement with an error */
1088#define SQLITE_IGNORE 2 /* Don't allow access, but don't generate an error */
1089
1090/*
1091** CAPI3REF: Authorizer Action Codes
1092**
1093** The [sqlite3_set_authorizer()] interface registers a callback function
1094** that is invoked to authorizer certain SQL statement actions. The
1095** second parameter to the callback is an integer code that specifies
1096** what action is being authorized. These are the integer action codes that
1097** the authorizer callback may be passed.
1098**
1099** These action code values signify what kind of operation is to be
1100** authorized. The 3rd and 4th parameters to the authorization callback
1101** function will be parameters or NULL depending on which of these
1102** codes is used as the second parameter. The 5th parameter to the
1103** authorizer callback is the name of the database ("main", "temp",
1104** etc.) if applicable. The 6th parameter to the authorizer callback
drh5cf590c2003-04-24 01:45:04 +00001105** is the name of the inner-most trigger or view that is responsible for
1106** the access attempt or NULL if this access attempt is directly from
drh6ed48bf2007-06-14 20:57:18 +00001107** top-level SQL code.
drhed6c8672003-01-12 18:02:16 +00001108*/
drh6ed48bf2007-06-14 20:57:18 +00001109/******************************************* 3rd ************ 4th ***********/
drhe5f9c642003-01-13 23:27:31 +00001110#define SQLITE_CREATE_INDEX 1 /* Index Name Table Name */
1111#define SQLITE_CREATE_TABLE 2 /* Table Name NULL */
1112#define SQLITE_CREATE_TEMP_INDEX 3 /* Index Name Table Name */
1113#define SQLITE_CREATE_TEMP_TABLE 4 /* Table Name NULL */
drh77ad4e42003-01-14 02:49:27 +00001114#define SQLITE_CREATE_TEMP_TRIGGER 5 /* Trigger Name Table Name */
drhe5f9c642003-01-13 23:27:31 +00001115#define SQLITE_CREATE_TEMP_VIEW 6 /* View Name NULL */
drh77ad4e42003-01-14 02:49:27 +00001116#define SQLITE_CREATE_TRIGGER 7 /* Trigger Name Table Name */
drhe5f9c642003-01-13 23:27:31 +00001117#define SQLITE_CREATE_VIEW 8 /* View Name NULL */
1118#define SQLITE_DELETE 9 /* Table Name NULL */
drh77ad4e42003-01-14 02:49:27 +00001119#define SQLITE_DROP_INDEX 10 /* Index Name Table Name */
drhe5f9c642003-01-13 23:27:31 +00001120#define SQLITE_DROP_TABLE 11 /* Table Name NULL */
drh77ad4e42003-01-14 02:49:27 +00001121#define SQLITE_DROP_TEMP_INDEX 12 /* Index Name Table Name */
drhe5f9c642003-01-13 23:27:31 +00001122#define SQLITE_DROP_TEMP_TABLE 13 /* Table Name NULL */
drh77ad4e42003-01-14 02:49:27 +00001123#define SQLITE_DROP_TEMP_TRIGGER 14 /* Trigger Name Table Name */
drhe5f9c642003-01-13 23:27:31 +00001124#define SQLITE_DROP_TEMP_VIEW 15 /* View Name NULL */
drh77ad4e42003-01-14 02:49:27 +00001125#define SQLITE_DROP_TRIGGER 16 /* Trigger Name Table Name */
drhe5f9c642003-01-13 23:27:31 +00001126#define SQLITE_DROP_VIEW 17 /* View Name NULL */
1127#define SQLITE_INSERT 18 /* Table Name NULL */
1128#define SQLITE_PRAGMA 19 /* Pragma Name 1st arg or NULL */
1129#define SQLITE_READ 20 /* Table Name Column Name */
1130#define SQLITE_SELECT 21 /* NULL NULL */
1131#define SQLITE_TRANSACTION 22 /* NULL NULL */
1132#define SQLITE_UPDATE 23 /* Table Name Column Name */
drh81e293b2003-06-06 19:00:42 +00001133#define SQLITE_ATTACH 24 /* Filename NULL */
1134#define SQLITE_DETACH 25 /* Database Name NULL */
danielk19771c8c23c2004-11-12 15:53:37 +00001135#define SQLITE_ALTER_TABLE 26 /* Database Name Table Name */
danielk19771d54df82004-11-23 15:41:16 +00001136#define SQLITE_REINDEX 27 /* Index Name NULL */
drhe6e04962005-07-23 02:17:03 +00001137#define SQLITE_ANALYZE 28 /* Table Name NULL */
danielk1977f1a381e2006-06-16 08:01:02 +00001138#define SQLITE_CREATE_VTABLE 29 /* Table Name Module Name */
1139#define SQLITE_DROP_VTABLE 30 /* Table Name Module Name */
drh5169bbc2006-08-24 14:59:45 +00001140#define SQLITE_FUNCTION 31 /* Function Name NULL */
drh6ed48bf2007-06-14 20:57:18 +00001141#define SQLITE_COPY 0 /* No longer used */
drhed6c8672003-01-12 18:02:16 +00001142
1143/*
drh6ed48bf2007-06-14 20:57:18 +00001144** CAPI3REF: Tracing And Profiling Functions
1145**
1146** These routines register callback functions that can be used for
1147** tracing and profiling the execution of SQL statements.
1148** The callback function registered by sqlite3_trace() is invoked
1149** at the first [sqlite3_step()] for the evaluation of an SQL statement.
1150** The callback function registered by sqlite3_profile() is invoked
1151** as each SQL statement finishes and includes
drh19e2d372005-08-29 23:00:03 +00001152** information on how long that statement ran.
1153**
1154** The sqlite3_profile() API is currently considered experimental and
1155** is subject to change.
drh18de4822003-01-16 16:28:53 +00001156*/
danielk1977f9d64d22004-06-19 08:18:07 +00001157void *sqlite3_trace(sqlite3*, void(*xTrace)(void*,const char*), void*);
drh19e2d372005-08-29 23:00:03 +00001158void *sqlite3_profile(sqlite3*,
drh6d2069d2007-08-14 01:58:53 +00001159 void(*xProfile)(void*,const char*,sqlite3_uint64), void*);
drh18de4822003-01-16 16:28:53 +00001160
danielk1977348bb5d2003-10-18 09:37:26 +00001161/*
drh6ed48bf2007-06-14 20:57:18 +00001162** CAPI3REF: Query Progress Callbacks
1163**
danielk1977348bb5d2003-10-18 09:37:26 +00001164** This routine configures a callback function - the progress callback - that
drh6ed48bf2007-06-14 20:57:18 +00001165** is invoked periodically during long running calls to [sqlite3_exec()],
1166** [sqlite3_step()] and [sqlite3_get_table()]. An example use for this
1167** interface is to keep a GUI updated during a large query.
danielk1977348bb5d2003-10-18 09:37:26 +00001168**
1169** The progress callback is invoked once for every N virtual machine opcodes,
1170** where N is the second argument to this function. The progress callback
1171** itself is identified by the third argument to this function. The fourth
1172** argument to this function is a void pointer passed to the progress callback
1173** function each time it is invoked.
1174**
drh6ed48bf2007-06-14 20:57:18 +00001175** If a call to [sqlite3_exec()], [sqlite3_step()], or [sqlite3_get_table()]
1176** results in fewer than N opcodes being executed, then the progress
1177** callback is never invoked.
danielk1977348bb5d2003-10-18 09:37:26 +00001178**
drh6ed48bf2007-06-14 20:57:18 +00001179** Only a single progress callback function may be registered for each
1180** open database connection. Every call to sqlite3_progress_handler()
1181** overwrites the results of the previous call.
danielk1977348bb5d2003-10-18 09:37:26 +00001182** To remove the progress callback altogether, pass NULL as the third
1183** argument to this function.
1184**
1185** If the progress callback returns a result other than 0, then the current
drh6ed48bf2007-06-14 20:57:18 +00001186** query is immediately terminated and any database changes rolled back.
1187** The containing [sqlite3_exec()], [sqlite3_step()], or
1188** [sqlite3_get_table()] call returns SQLITE_INTERRUPT. This feature
1189** can be used, for example, to implement the "Cancel" button on a
1190** progress dialog box in a GUI.
danielk1977348bb5d2003-10-18 09:37:26 +00001191*/
danielk1977f9d64d22004-06-19 08:18:07 +00001192void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
danielk1977348bb5d2003-10-18 09:37:26 +00001193
drhaa940ea2004-01-15 02:44:03 +00001194/*
drh6ed48bf2007-06-14 20:57:18 +00001195** CAPI3REF: Opening A New Database Connection
drhaa940ea2004-01-15 02:44:03 +00001196**
drh4f26d6c2004-05-26 23:25:30 +00001197** Open the sqlite database file "filename". The "filename" is UTF-8
1198** encoded for sqlite3_open() and UTF-16 encoded in the native byte order
drh6ed48bf2007-06-14 20:57:18 +00001199** for sqlite3_open16(). An [sqlite3*] handle is returned in *ppDb, even
drh4f26d6c2004-05-26 23:25:30 +00001200** if an error occurs. If the database is opened (or created) successfully,
drh6d2069d2007-08-14 01:58:53 +00001201** then [SQLITE_OK] is returned. Otherwise an error code is returned. The
1202** [sqlite3_errmsg()] or [sqlite3_errmsg16()] routines can be used to obtain
drh4f26d6c2004-05-26 23:25:30 +00001203** an English language description of the error.
drh22fbcb82004-02-01 01:22:50 +00001204**
drh6ed48bf2007-06-14 20:57:18 +00001205** If the database file does not exist, then a new database will be created
1206** as needed. The default encoding for the database will be UTF-8 if
1207** sqlite3_open() is called and UTF-16 if sqlite3_open16 is used.
danielk197765904932004-05-26 06:18:37 +00001208**
1209** Whether or not an error occurs when it is opened, resources associated
drh6ed48bf2007-06-14 20:57:18 +00001210** with the [sqlite3*] handle should be released by passing it to
drh6d2069d2007-08-14 01:58:53 +00001211** [sqlite3_close()] when it is no longer required.
1212**
1213** The sqlite3_open_v2() interface works like sqlite3_open() except that
1214** provides two additional parameters for additional control over the
1215** new database connection. The flags parameter can be one of:
1216**
1217** <ol>
1218** <li> [SQLITE_OPEN_READONLY]
1219** <li> [SQLITE_OPEN_READWRITE]
1220** <li> [SQLITE_OPEN_READWRITE] | [SQLITE_OPEN_CREATE]
1221** </ol>
1222**
1223** The first value opens the database read-only. If the database does
1224** not previously exist, an error is returned. The second option opens
1225** the database for reading and writing but the database must already
1226** exist or an error is returned. The third option opens the database
1227** for reading and writing and creates it if it does not already exist.
1228** The third options is behavior that is used always for sqlite3_open()
1229** and sqlite3_open16().
1230**
1231** The fourth parameter to sqlite3_open_v2() is a pointer to an
1232** [sqlite3_adaptor] object that defines the operating system
1233** interface that the new database connection should use. If the
1234** fourth parameter is a NULL pointer then a default suitable for
1235** the host environment is substituted.
drh6ed48bf2007-06-14 20:57:18 +00001236**
1237** Note to windows users: The encoding used for the filename argument
1238** of sqlite3_open() must be UTF-8, not whatever codepage is currently
1239** defined. Filenames containing international characters must be converted
1240** to UTF-8 prior to passing them into sqlite3_open().
danielk197765904932004-05-26 06:18:37 +00001241*/
1242int sqlite3_open(
1243 const char *filename, /* Database filename (UTF-8) */
danielk19774f057f92004-06-08 00:02:33 +00001244 sqlite3 **ppDb /* OUT: SQLite db handle */
danielk197765904932004-05-26 06:18:37 +00001245);
danielk197765904932004-05-26 06:18:37 +00001246int sqlite3_open16(
1247 const void *filename, /* Database filename (UTF-16) */
danielk19774f057f92004-06-08 00:02:33 +00001248 sqlite3 **ppDb /* OUT: SQLite db handle */
danielk197765904932004-05-26 06:18:37 +00001249);
drh6d2069d2007-08-14 01:58:53 +00001250int sqlite3_open_v2(
1251 const void *filename, /* Database filename (UTF-16) */
1252 sqlite3 **ppDb, /* OUT: SQLite db handle */
1253 int flags, /* Flags */
1254 sqlite3_adaptor* /* The OS interface layer */
1255);
danielk1977295ba552004-05-19 10:34:51 +00001256
danielk197765904932004-05-26 06:18:37 +00001257/*
drh6ed48bf2007-06-14 20:57:18 +00001258** CAPI3REF: Error Codes And Messages
1259**
1260** The sqlite3_errcode() interface returns the numeric
1261** [SQLITE_OK | result code] or [SQLITE_IOERR_READ | extended result code]
1262** for the most recent failed sqlite3_* API call associated
1263** with [sqlite3] handle 'db'. If a prior API call failed but the
1264** most recent API call succeeded, the return value from sqlite3_errcode()
1265** is undefined.
1266**
1267** The sqlite3_errmsg() and sqlite3_errmsg16() return English-langauge
1268** text that describes the error, as either UTF8 or UTF16 respectively.
1269** Memory to hold the error message string is managed internally. The
1270** string may be overwritten or deallocated by subsequent calls to SQLite
1271** interface functions.
danielk197765904932004-05-26 06:18:37 +00001272**
1273** Calls to many sqlite3_* functions set the error code and string returned
drh6ed48bf2007-06-14 20:57:18 +00001274** by [sqlite3_errcode()], [sqlite3_errmsg()], and [sqlite3_errmsg16()]
1275** (overwriting the previous values). Note that calls to [sqlite3_errcode()],
1276** [sqlite3_errmsg()], and [sqlite3_errmsg16()] themselves do not affect the
1277** results of future invocations. Calls to API routines that do not return
1278** an error code (examples: [sqlite3_data_count()] or [sqlite3_mprintf()]) do
1279** not change the error code returned by this routine.
danielk197765904932004-05-26 06:18:37 +00001280**
1281** Assuming no other intervening sqlite3_* API calls are made, the error
1282** code returned by this function is associated with the same error as
drh6ed48bf2007-06-14 20:57:18 +00001283** the strings returned by [sqlite3_errmsg()] and [sqlite3_errmsg16()].
danielk197765904932004-05-26 06:18:37 +00001284*/
1285int sqlite3_errcode(sqlite3 *db);
danielk197765904932004-05-26 06:18:37 +00001286const char *sqlite3_errmsg(sqlite3*);
danielk197765904932004-05-26 06:18:37 +00001287const void *sqlite3_errmsg16(sqlite3*);
1288
1289/*
drh6ed48bf2007-06-14 20:57:18 +00001290** CAPI3REF: SQL Statement Object
1291**
1292** Instance of this object represent single SQL statements. This
1293** is variously known as a "prepared statement" or a
1294** "compiled SQL statement" or simply as a "statement".
1295**
1296** The life of a statement object goes something like this:
1297**
1298** <ol>
1299** <li> Create the object using [sqlite3_prepare_v2()] or a related
1300** function.
1301** <li> Bind values to host parameters using
1302** [sqlite3_bind_blob | sqlite3_bind_* interfaces].
1303** <li> Run the SQL by calling [sqlite3_step()] one or more times.
1304** <li> Reset the statement using [sqlite3_reset()] then go back
1305** to step 2. Do this zero or more times.
1306** <li> Destroy the object using [sqlite3_finalize()].
1307** </ol>
1308**
1309** Refer to documentation on individual methods above for additional
1310** information.
danielk197765904932004-05-26 06:18:37 +00001311*/
danielk1977fc57d7b2004-05-26 02:04:57 +00001312typedef struct sqlite3_stmt sqlite3_stmt;
1313
danielk1977e3209e42004-05-20 01:40:18 +00001314/*
drh6ed48bf2007-06-14 20:57:18 +00001315** CAPI3REF: Compiling An SQL Statement
danielk197765904932004-05-26 06:18:37 +00001316**
drh6ed48bf2007-06-14 20:57:18 +00001317** To execute an SQL query, it must first be compiled into a byte-code
1318** program using one of these routines.
1319**
1320** The first argument "db" is an [sqlite3 | SQLite database handle]
1321** obtained from a prior call to [sqlite3_open()] or [sqlite3_open16()].
1322** The second argument "zSql" is the statement to be compiled, encoded
1323** as either UTF-8 or UTF-16. The sqlite3_prepare() and sqlite3_prepare_v2()
1324** interfaces uses UTF-8 and sqlite3_prepare16() and sqlite3_prepare16_v2()
drh21f06722007-07-19 12:41:39 +00001325** use UTF-16.
1326**
1327** If the nByte argument is less
drh6ed48bf2007-06-14 20:57:18 +00001328** than zero, then zSql is read up to the first zero terminator. If
drh21f06722007-07-19 12:41:39 +00001329** nByte is non-negative, then it is the maximum number of
1330** bytes read from zSql. When nByte is non-negative, the
1331** zSql string ends at either the first '\000' character or
1332** until the nByte-th byte, whichever comes first.
danielk197765904932004-05-26 06:18:37 +00001333**
1334** *pzTail is made to point to the first byte past the end of the first
1335** SQL statement in zSql. This routine only compiles the first statement
1336** in zSql, so *pzTail is left pointing to what remains uncompiled.
1337**
drh6ed48bf2007-06-14 20:57:18 +00001338** *ppStmt is left pointing to a compiled
1339** [sqlite3_stmt | SQL statement structure] that can be
1340** executed using [sqlite3_step()]. Or if there is an error, *ppStmt may be
danielk197765904932004-05-26 06:18:37 +00001341** set to NULL. If the input text contained no SQL (if the input is and
drh6ed48bf2007-06-14 20:57:18 +00001342** empty string or a comment) then *ppStmt is set to NULL. The calling
1343** procedure is responsible for deleting the compiled SQL statement
1344** using [sqlite3_finalize()] after it has finished with it.
danielk197765904932004-05-26 06:18:37 +00001345**
drh6ed48bf2007-06-14 20:57:18 +00001346** On success, [SQLITE_OK] is returned. Otherwise an
1347** [SQLITE_ERROR | error code] is returned.
1348**
1349** The sqlite3_prepare_v2() and sqlite3_prepare16_v2() interfaces are
1350** recommended for all new programs. The two older interfaces are retained
1351** for backwards compatibility, but their use is discouraged.
1352** In the "v2" interfaces, the prepared statement
1353** that is returned (the [sqlite3_stmt] object) contains a copy of the
1354** original SQL text. This causes the [sqlite3_step()] interface to
1355** behave a differently in two ways:
1356**
1357** <ol>
1358** <li>
1359** If the database schema changes, instead of returning [SQLITE_SCHEMA] as it
1360** always used to do, [sqlite3_step()] will automatically recompile the SQL
1361** statement and try to run it again. If the schema has changed in a way
1362** that makes the statement no longer valid, [sqlite3_step()] will still
1363** return [SQLITE_SCHEMA]. But unlike the legacy behavior, [SQLITE_SCHEMA] is
1364** now a fatal error. Calling [sqlite3_prepare_v2()] again will not make the
1365** error go away. Note: use [sqlite3_errmsg()] to find the text of the parsing
1366** error that results in an [SQLITE_SCHEMA] return.
1367** </li>
1368**
1369** <li>
1370** When an error occurs,
1371** [sqlite3_step()] will return one of the detailed
1372** [SQLITE_ERROR | result codes] or
1373** [SQLITE_IOERR_READ | extended result codes] such as directly.
1374** The legacy behavior was that [sqlite3_step()] would only return a generic
1375** [SQLITE_ERROR] result code and you would have to make a second call to
1376** [sqlite3_reset()] in order to find the underlying cause of the problem.
1377** With the "v2" prepare interfaces, the underlying reason for the error is
1378** returned immediately.
1379** </li>
1380** </ol>
danielk197765904932004-05-26 06:18:37 +00001381*/
1382int sqlite3_prepare(
1383 sqlite3 *db, /* Database handle */
1384 const char *zSql, /* SQL statement, UTF-8 encoded */
drh21f06722007-07-19 12:41:39 +00001385 int nByte, /* Maximum length of zSql in bytes. */
danielk197765904932004-05-26 06:18:37 +00001386 sqlite3_stmt **ppStmt, /* OUT: Statement handle */
1387 const char **pzTail /* OUT: Pointer to unused portion of zSql */
1388);
drh6ed48bf2007-06-14 20:57:18 +00001389int sqlite3_prepare_v2(
1390 sqlite3 *db, /* Database handle */
1391 const char *zSql, /* SQL statement, UTF-8 encoded */
drh21f06722007-07-19 12:41:39 +00001392 int nByte, /* Maximum length of zSql in bytes. */
drh6ed48bf2007-06-14 20:57:18 +00001393 sqlite3_stmt **ppStmt, /* OUT: Statement handle */
1394 const char **pzTail /* OUT: Pointer to unused portion of zSql */
1395);
danielk197765904932004-05-26 06:18:37 +00001396int sqlite3_prepare16(
1397 sqlite3 *db, /* Database handle */
1398 const void *zSql, /* SQL statement, UTF-16 encoded */
drh21f06722007-07-19 12:41:39 +00001399 int nByte, /* Maximum length of zSql in bytes. */
danielk197765904932004-05-26 06:18:37 +00001400 sqlite3_stmt **ppStmt, /* OUT: Statement handle */
1401 const void **pzTail /* OUT: Pointer to unused portion of zSql */
1402);
drhb900aaf2006-11-09 00:24:53 +00001403int sqlite3_prepare16_v2(
1404 sqlite3 *db, /* Database handle */
1405 const void *zSql, /* SQL statement, UTF-16 encoded */
drh21f06722007-07-19 12:41:39 +00001406 int nByte, /* Maximum length of zSql in bytes. */
drhb900aaf2006-11-09 00:24:53 +00001407 sqlite3_stmt **ppStmt, /* OUT: Statement handle */
1408 const void **pzTail /* OUT: Pointer to unused portion of zSql */
1409);
1410
1411/*
drh6ed48bf2007-06-14 20:57:18 +00001412** CAPI3REF: Dynamically Typed Value Object
1413**
1414** SQLite uses dynamic typing for the values it stores. Values can
1415** be integers, floating point values, strings, BLOBs, or NULL. When
1416** passing around values internally, each value is represented as
1417** an instance of the sqlite3_value object.
drhf4479502004-05-27 03:12:53 +00001418*/
drhf4479502004-05-27 03:12:53 +00001419typedef struct Mem sqlite3_value;
1420
1421/*
drh6ed48bf2007-06-14 20:57:18 +00001422** CAPI3REF: SQL Function Context Object
drh4f26d6c2004-05-26 23:25:30 +00001423**
drh6ed48bf2007-06-14 20:57:18 +00001424** The context in which an SQL function executes is stored in an
1425** sqlite3_context object. A pointer to such an object is the
1426** first parameter to user-defined SQL functions.
1427*/
1428typedef struct sqlite3_context sqlite3_context;
1429
1430/*
1431** CAPI3REF: Binding Values To Prepared Statements
1432**
1433** In the SQL strings input to [sqlite3_prepare_v2()] and its variants,
1434** one or more literals can be replace by a parameter in one of these
1435** forms:
1436**
1437** <ul>
1438** <li> ?
1439** <li> ?NNN
1440** <li> :AAA
1441** <li> @AAA
1442** <li> $VVV
1443** </ul>
1444**
1445** In the parameter forms shown above NNN is an integer literal,
1446** AAA is an alphanumeric identifier and VVV is a variable name according
1447** to the syntax rules of the TCL programming language.
1448** The values of these parameters (also called "host parameter names")
1449** can be set using the sqlite3_bind_*() routines defined here.
1450**
1451** The first argument to the sqlite3_bind_*() routines always is a pointer
1452** to the [sqlite3_stmt] object returned from [sqlite3_prepare_v2()] or
1453** its variants. The second
1454** argument is the index of the parameter to be set. The first parameter has
1455** an index of 1. When the same named parameter is used more than once, second
1456** and subsequent
1457** occurrences have the same index as the first occurrence. The index for
1458** named parameters can be looked up using the
1459** [sqlite3_bind_parameter_name()] API if desired. The index for "?NNN"
1460** parametes is the value of NNN.
1461** The NNN value must be between 1 and the compile-time
1462** parameter SQLITE_MAX_VARIABLE_NUMBER (default value: 999).
1463** See <a href="limits.html">limits.html</a> for additional information.
1464**
1465** The third argument is the value to bind to the parameter.
1466**
1467** In those
1468** routines that have a fourth argument, its value is the number of bytes
1469** in the parameter. To be clear: the value is the number of bytes in the
1470** string, not the number of characters. The number
1471** of bytes does not include the zero-terminator at the end of strings.
1472** If the fourth parameter is negative, the length of the string is
1473** number of bytes up to the first zero terminator.
drh4f26d6c2004-05-26 23:25:30 +00001474**
drh930cc582007-03-28 13:07:40 +00001475** The fifth argument to sqlite3_bind_blob(), sqlite3_bind_text(), and
drh900dfba2004-07-21 15:21:36 +00001476** sqlite3_bind_text16() is a destructor used to dispose of the BLOB or
1477** text after SQLite has finished with it. If the fifth argument is the
drh6ed48bf2007-06-14 20:57:18 +00001478** special value [SQLITE_STATIC], then the library assumes that the information
drh900dfba2004-07-21 15:21:36 +00001479** is in static, unmanaged space and does not need to be freed. If the
drh6ed48bf2007-06-14 20:57:18 +00001480** fifth argument has the value [SQLITE_TRANSIENT], then SQLite makes its
1481** own private copy of the data immediately, before the sqlite3_bind_*()
1482** routine returns.
drh4f26d6c2004-05-26 23:25:30 +00001483**
drh6ed48bf2007-06-14 20:57:18 +00001484** The sqlite3_bind_zeroblob() routine binds a BLOB of length n that
1485** is filled with zeros. A zeroblob uses a fixed amount of memory
1486** (just an integer to hold it size) while it is being processed.
1487** Zeroblobs are intended to serve as place-holders for BLOBs whose
1488** content is later written using
1489** [sqlite3_blob_open | increment BLOB I/O] routines.
1490**
1491** The sqlite3_bind_*() routines must be called after
1492** [sqlite3_prepare_v2()] (and its variants) or [sqlite3_reset()] and
1493** before [sqlite3_step()].
1494** Bindings are not cleared by the [sqlite3_reset()] routine.
1495** Unbound parameters are interpreted as NULL.
1496**
1497** These routines return [SQLITE_OK] on success or an error code if
1498** anything goes wrong. [SQLITE_RANGE] is returned if the parameter
1499** index is out of range. [SQLITE_NOMEM] is returned if malloc fails.
1500** [SQLITE_MISUSE] is returned if these routines are called on a virtual
1501** machine that is the wrong state or which has already been finalized.
drh4f26d6c2004-05-26 23:25:30 +00001502*/
danielk1977d8123362004-06-12 09:25:12 +00001503int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*));
drhf4479502004-05-27 03:12:53 +00001504int sqlite3_bind_double(sqlite3_stmt*, int, double);
1505int sqlite3_bind_int(sqlite3_stmt*, int, int);
drh6d2069d2007-08-14 01:58:53 +00001506int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite3_int64);
drhf4479502004-05-27 03:12:53 +00001507int sqlite3_bind_null(sqlite3_stmt*, int);
danielk1977d8123362004-06-12 09:25:12 +00001508int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*));
1509int sqlite3_bind_text16(sqlite3_stmt*, int, const void*, int, void(*)(void*));
drhf4479502004-05-27 03:12:53 +00001510int sqlite3_bind_value(sqlite3_stmt*, int, const sqlite3_value*);
drhb026e052007-05-02 01:34:31 +00001511int sqlite3_bind_zeroblob(sqlite3_stmt*, int, int n);
drh4f26d6c2004-05-26 23:25:30 +00001512
1513/*
drh6ed48bf2007-06-14 20:57:18 +00001514** CAPI3REF: Number Of Host Parameters
1515**
1516** Return the largest host parameter index in the precompiled statement given
1517** as the argument. When the host parameters are of the forms like ":AAA"
1518** or "?", then they are assigned sequential increasing numbers beginning
1519** with one, so the value returned is the number of parameters. However
1520** if the same host parameter name is used multiple times, each occurrance
1521** is given the same number, so the value returned in that case is the number
1522** of unique host parameter names. If host parameters of the form "?NNN"
1523** are used (where NNN is an integer) then there might be gaps in the
1524** numbering and the value returned by this interface is the index of the
1525** host parameter with the largest index value.
drh75f6a032004-07-15 14:15:00 +00001526*/
1527int sqlite3_bind_parameter_count(sqlite3_stmt*);
1528
1529/*
drh6ed48bf2007-06-14 20:57:18 +00001530** CAPI3REF: Name Of A Host Parameter
1531**
1532** This routine returns a pointer to the name of the n-th parameter in a
1533** [sqlite3_stmt | prepared statement].
1534** Host parameters of the form ":AAA" or "@AAA" or "$VVV" have a name
1535** which is the string ":AAA" or "@AAA" or "$VVV".
1536** In other words, the initial ":" or "$" or "@"
1537** is included as part of the name.
1538** Parameters of the form "?" or "?NNN" have no name.
1539**
1540** The first bound parameter has an index of 1, not 0.
1541**
1542** If the value n is out of range or if the n-th parameter is nameless,
1543** then NULL is returned. The returned string is always in the
1544** UTF-8 encoding even if the named parameter was originally specified
1545** as UTF-16 in [sqlite3_prepare16()] or [sqlite3_prepare16_v2()].
drh895d7472004-08-20 16:02:39 +00001546*/
1547const char *sqlite3_bind_parameter_name(sqlite3_stmt*, int);
1548
1549/*
drh6ed48bf2007-06-14 20:57:18 +00001550** CAPI3REF: Index Of A Parameter With A Given Name
1551**
1552** This routine returns the index of a host parameter with the given name.
1553** The name must match exactly. If no parameter with the given name is
1554** found, return 0. Parameter names must be UTF8.
drhfa6bc002004-09-07 16:19:52 +00001555*/
1556int sqlite3_bind_parameter_index(sqlite3_stmt*, const char *zName);
1557
1558/*
drh6ed48bf2007-06-14 20:57:18 +00001559** CAPI3REF: Reset All Bindings On A Prepared Statement
1560**
1561** Contrary to the intuition of many, [sqlite3_reset()] does not
1562** reset the [sqlite3_bind_blob | bindings] on a
1563** [sqlite3_stmt | prepared statement]. Use this routine to
1564** reset all host parameters to NULL.
danielk1977600dd0b2005-01-20 01:14:23 +00001565*/
1566int sqlite3_clear_bindings(sqlite3_stmt*);
1567
1568/*
drh6ed48bf2007-06-14 20:57:18 +00001569** CAPI3REF: Number Of Columns In A Result Set
1570**
1571** Return the number of columns in the result set returned by the
1572** [sqlite3_stmt | compiled SQL statement]. This routine returns 0
1573** if pStmt is an SQL statement that does not return data (for
1574** example an UPDATE).
danielk197765904932004-05-26 06:18:37 +00001575*/
1576int sqlite3_column_count(sqlite3_stmt *pStmt);
1577
1578/*
drh6ed48bf2007-06-14 20:57:18 +00001579** CAPI3REF: Column Names In A Result Set
1580**
1581** These routines return the name assigned to a particular column
1582** in the result set of a SELECT statement. The sqlite3_column_name()
1583** interface returns a pointer to a UTF8 string and sqlite3_column_name16()
1584** returns a pointer to a UTF16 string. The first parameter is the
drh6d2069d2007-08-14 01:58:53 +00001585** [sqlite3_stmt | prepared statement] that implements the SELECT statement.
drh6ed48bf2007-06-14 20:57:18 +00001586** The second parameter is the column number. The left-most column is
1587** number 0.
1588**
1589** The returned string pointer is valid until either the
drh6d2069d2007-08-14 01:58:53 +00001590** [sqlite3_stmt | prepared statement] is destroyed by [sqlite3_finalize()]
drh6ed48bf2007-06-14 20:57:18 +00001591** or until the next call sqlite3_column_name() or sqlite3_column_name16()
1592** on the same column.
danielk197765904932004-05-26 06:18:37 +00001593*/
drh6ed48bf2007-06-14 20:57:18 +00001594const char *sqlite3_column_name(sqlite3_stmt*, int N);
1595const void *sqlite3_column_name16(sqlite3_stmt*, int N);
danielk197765904932004-05-26 06:18:37 +00001596
1597/*
drh6ed48bf2007-06-14 20:57:18 +00001598** CAPI3REF: Source Of Data In A Query Result
1599**
1600** These routines provide a means to determine what column of what
1601** table in which database a result of a SELECT statement comes from.
1602** The name of the database or table or column can be returned as
drhbf2564f2007-06-21 15:25:05 +00001603** either a UTF8 or UTF16 string. The _database_ routines return
1604** the database name, the _table_ routines return the table name, and
1605** the origin_ routines return the column name.
1606** The returned string is valid until
drh6ed48bf2007-06-14 20:57:18 +00001607** the [sqlite3_stmt | prepared statement] is destroyed using
1608** [sqlite3_finalize()] or until the same information is requested
drhbf2564f2007-06-21 15:25:05 +00001609** again in a different encoding.
1610**
1611** The names returned are the original un-aliased names of the
1612** database, table, and column.
drh6ed48bf2007-06-14 20:57:18 +00001613**
1614** The first argument to the following calls is a
1615** [sqlite3_stmt | compiled SQL statement].
danielk1977955de522006-02-10 02:27:42 +00001616** These functions return information about the Nth column returned by
1617** the statement, where N is the second function argument.
1618**
drh6ed48bf2007-06-14 20:57:18 +00001619** If the Nth column returned by the statement is an expression
1620** or subquery and is not a column value, then all of these functions
1621** return NULL. Otherwise, they return the
1622** name of the attached database, table and column that query result
1623** column was extracted from.
danielk1977955de522006-02-10 02:27:42 +00001624**
1625** As with all other SQLite APIs, those postfixed with "16" return UTF-16
drh6ed48bf2007-06-14 20:57:18 +00001626** encoded strings, the other functions return UTF-8.
danielk19774b1ae992006-02-10 03:06:10 +00001627**
1628** These APIs are only available if the library was compiled with the
1629** SQLITE_ENABLE_COLUMN_METADATA preprocessor symbol defined.
danielk1977955de522006-02-10 02:27:42 +00001630*/
1631const char *sqlite3_column_database_name(sqlite3_stmt*,int);
1632const void *sqlite3_column_database_name16(sqlite3_stmt*,int);
1633const char *sqlite3_column_table_name(sqlite3_stmt*,int);
1634const void *sqlite3_column_table_name16(sqlite3_stmt*,int);
1635const char *sqlite3_column_origin_name(sqlite3_stmt*,int);
1636const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
1637
1638/*
drh6ed48bf2007-06-14 20:57:18 +00001639** CAPI3REF: Declared Datatype Of A Query Result
1640**
1641** The first parameter is a [sqlite3_stmt | compiled SQL statement].
1642** If this statement is a SELECT statement and the Nth column of the
1643** returned result set of that SELECT is a table column (not an
1644** expression or subquery) then the declared type of the table
1645** column is returned. If the Nth column of the result set is an
1646** expression or subquery, then a NULL pointer is returned.
1647** The returned string is always UTF-8 encoded. For example, in
1648** the database schema:
danielk197765904932004-05-26 06:18:37 +00001649**
1650** CREATE TABLE t1(c1 VARIANT);
1651**
1652** And the following statement compiled:
1653**
danielk1977955de522006-02-10 02:27:42 +00001654** SELECT c1 + 1, c1 FROM t1;
danielk197765904932004-05-26 06:18:37 +00001655**
1656** Then this routine would return the string "VARIANT" for the second
1657** result column (i==1), and a NULL pointer for the first result column
1658** (i==0).
drh6ed48bf2007-06-14 20:57:18 +00001659**
1660** SQLite uses dynamic run-time typing. So just because a column
1661** is declared to contain a particular type does not mean that the
1662** data stored in that column is of the declared type. SQLite is
1663** strongly typed, but the typing is dynamic not static. Type
1664** is associated with individual values, not with the containers
1665** used to hold those values.
danielk197765904932004-05-26 06:18:37 +00001666*/
1667const char *sqlite3_column_decltype(sqlite3_stmt *, int i);
danielk197765904932004-05-26 06:18:37 +00001668const void *sqlite3_column_decltype16(sqlite3_stmt*,int);
1669
danielk1977106bb232004-05-21 10:08:53 +00001670/*
drh6ed48bf2007-06-14 20:57:18 +00001671** CAPI3REF: Evaluate An SQL Statement
danielk1977106bb232004-05-21 10:08:53 +00001672**
drh6ed48bf2007-06-14 20:57:18 +00001673** After an [sqlite3_stmt | SQL statement] has been prepared with a call
1674** to either [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()] or to one of
1675** the legacy interfaces [sqlite3_prepare()] or [sqlite3_prepare16()],
1676** then this function must be called one or more times to evaluate the
1677** statement.
danielk1977106bb232004-05-21 10:08:53 +00001678**
drh6ed48bf2007-06-14 20:57:18 +00001679** The details of the behavior of this sqlite3_step() interface depend
1680** on whether the statement was prepared using the newer "v2" interface
1681** [sqlite3_prepare_v2()] and [sqlite3_prepare16_v2()] or the older legacy
1682** interface [sqlite3_prepare()] and [sqlite3_prepare16()]. The use of the
1683** new "v2" interface is recommended for new applications but the legacy
1684** interface will continue to be supported.
danielk1977106bb232004-05-21 10:08:53 +00001685**
drh6ed48bf2007-06-14 20:57:18 +00001686** In the lagacy interface, the return value will be either [SQLITE_BUSY],
1687** [SQLITE_DONE], [SQLITE_ROW], [SQLITE_ERROR], or [SQLITE_MISUSE].
1688** With the "v2" interface, any of the other [SQLITE_OK | result code]
1689** or [SQLITE_IOERR_READ | extended result code] might be returned as
1690** well.
1691**
1692** [SQLITE_BUSY] means that the database engine was unable to acquire the
1693** database locks it needs to do its job. If the statement is a COMMIT
1694** or occurs outside of an explicit transaction, then you can retry the
1695** statement. If the statement is not a COMMIT and occurs within a
1696** explicit transaction then you should rollback the transaction before
1697** continuing.
1698**
1699** [SQLITE_DONE] means that the statement has finished executing
danielk1977106bb232004-05-21 10:08:53 +00001700** successfully. sqlite3_step() should not be called again on this virtual
drh6ed48bf2007-06-14 20:57:18 +00001701** machine without first calling [sqlite3_reset()] to reset the virtual
1702** machine back to its initial state.
danielk1977106bb232004-05-21 10:08:53 +00001703**
1704** If the SQL statement being executed returns any data, then
drh6ed48bf2007-06-14 20:57:18 +00001705** [SQLITE_ROW] is returned each time a new row of data is ready
danielk1977106bb232004-05-21 10:08:53 +00001706** for processing by the caller. The values may be accessed using
drh6ed48bf2007-06-14 20:57:18 +00001707** the [sqlite3_column_int | column access functions].
1708** sqlite3_step() is called again to retrieve the next row of data.
danielk1977106bb232004-05-21 10:08:53 +00001709**
drh6ed48bf2007-06-14 20:57:18 +00001710** [SQLITE_ERROR] means that a run-time error (such as a constraint
danielk1977106bb232004-05-21 10:08:53 +00001711** violation) has occurred. sqlite3_step() should not be called again on
drh6ed48bf2007-06-14 20:57:18 +00001712** the VM. More information may be found by calling [sqlite3_errmsg()].
1713** With the legacy interface, a more specific error code (example:
1714** [SQLITE_INTERRUPT], [SQLITE_SCHEMA], [SQLITE_CORRUPT], and so forth)
1715** can be obtained by calling [sqlite3_reset()] on the
drh6d2069d2007-08-14 01:58:53 +00001716** [sqlite3_stmt | prepared statement]. In the "v2" interface,
drh6ed48bf2007-06-14 20:57:18 +00001717** the more specific error code is returned directly by sqlite3_step().
danielk1977106bb232004-05-21 10:08:53 +00001718**
drh6ed48bf2007-06-14 20:57:18 +00001719** [SQLITE_MISUSE] means that the this routine was called inappropriately.
drh6d2069d2007-08-14 01:58:53 +00001720** Perhaps it was called on a [sqlite3_stmt | prepared statement] that has
drh6ed48bf2007-06-14 20:57:18 +00001721** already been [sqlite3_finalize | finalized] or on one that had
1722** previously returned [SQLITE_ERROR] or [SQLITE_DONE]. Or it could
1723** be the case that the same database connection is being used by two or
1724** more threads at the same moment in time.
1725**
1726** <b>Goofy Interface Alert:</b>
1727** In the legacy interface,
1728** the sqlite3_step() API always returns a generic error code,
1729** [SQLITE_ERROR], following any error other than [SQLITE_BUSY]
1730** and [SQLITE_MISUSE]. You must call [sqlite3_reset()] or
1731** [sqlite3_finalize()] in order to find one of the specific
1732** [SQLITE_ERROR | result codes] that better describes the error.
1733** We admit that this is a goofy design. The problem has been fixed
1734** with the "v2" interface. If you prepare all of your SQL statements
1735** using either [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()] instead
1736** of the legacy [sqlite3_prepare()] and [sqlite3_prepare16()], then the
1737** more specific [SQLITE_ERROR | result codes] are returned directly
1738** by sqlite3_step(). The use of the "v2" interface is recommended.
danielk1977106bb232004-05-21 10:08:53 +00001739*/
danielk197717240fd2004-05-26 00:07:25 +00001740int sqlite3_step(sqlite3_stmt*);
danielk1977106bb232004-05-21 10:08:53 +00001741
danielk1977106bb232004-05-21 10:08:53 +00001742/*
drh6ed48bf2007-06-14 20:57:18 +00001743** CAPI3REF:
1744**
danielk1977106bb232004-05-21 10:08:53 +00001745** Return the number of values in the current row of the result set.
1746**
drh6ed48bf2007-06-14 20:57:18 +00001747** After a call to [sqlite3_step()] that returns [SQLITE_ROW], this routine
1748** will return the same value as the [sqlite3_column_count()] function.
1749** After [sqlite3_step()] has returned an [SQLITE_DONE], [SQLITE_BUSY], or
1750** a [SQLITE_ERROR | error code], or before [sqlite3_step()] has been
drh6d2069d2007-08-14 01:58:53 +00001751** called on the [sqlite3_stmt | prepared statement] for the first time,
drh6ed48bf2007-06-14 20:57:18 +00001752** this routine returns zero.
danielk1977106bb232004-05-21 10:08:53 +00001753*/
danielk197793d46752004-05-23 13:30:58 +00001754int sqlite3_data_count(sqlite3_stmt *pStmt);
danielk19774adee202004-05-08 08:23:19 +00001755
drh4f26d6c2004-05-26 23:25:30 +00001756/*
drh6ed48bf2007-06-14 20:57:18 +00001757** CAPI3REF: Fundamental Datatypes
1758**
1759** Every value in SQLite has one of five fundamental datatypes:
1760**
1761** <ul>
1762** <li> 64-bit signed integer
1763** <li> 64-bit IEEE floating point number
1764** <li> string
1765** <li> BLOB
1766** <li> NULL
1767** </ul>
1768**
1769** These constants are codes for each of those types.
1770**
1771** Note that the SQLITE_TEXT constant was also used in SQLite version 2
1772** for a completely different meaning. Software that links against both
1773** SQLite version 2 and SQLite version 3 should use SQLITE3_TEXT not
1774** SQLITE_TEXT.
drh4f26d6c2004-05-26 23:25:30 +00001775*/
drh9c054832004-05-31 18:51:57 +00001776#define SQLITE_INTEGER 1
1777#define SQLITE_FLOAT 2
drh9c054832004-05-31 18:51:57 +00001778#define SQLITE_BLOB 4
1779#define SQLITE_NULL 5
drh1e284f42004-10-06 15:52:01 +00001780#ifdef SQLITE_TEXT
1781# undef SQLITE_TEXT
1782#else
1783# define SQLITE_TEXT 3
1784#endif
1785#define SQLITE3_TEXT 3
1786
1787/*
drh6ed48bf2007-06-14 20:57:18 +00001788** CAPI3REF: Results Values From A Query
1789**
1790** These routines return information about the information
drh4f26d6c2004-05-26 23:25:30 +00001791** in a single column of the current result row of a query. In every
drh6ed48bf2007-06-14 20:57:18 +00001792** case the first argument is a pointer to the
1793** [sqlite3_stmt | SQL statement] that is being
drh6d2069d2007-08-14 01:58:53 +00001794** evaluate (the [sqlite3_stmt*] that was returned from
drh6ed48bf2007-06-14 20:57:18 +00001795** [sqlite3_prepare_v2()] or one of its variants) and
drh4f26d6c2004-05-26 23:25:30 +00001796** the second argument is the index of the column for which information
drh6ed48bf2007-06-14 20:57:18 +00001797** should be returned. The left-most column has an index of 0.
danielk1977106bb232004-05-21 10:08:53 +00001798**
drh4f26d6c2004-05-26 23:25:30 +00001799** If the SQL statement is not currently point to a valid row, or if the
drh6ed48bf2007-06-14 20:57:18 +00001800** the column index is out of range, the result is undefined.
1801**
1802** The sqlite3_column_type() routine returns
1803** [SQLITE_INTEGER | datatype code] for the initial data type
1804** of the result column. The returned value is one of [SQLITE_INTEGER],
1805** [SQLITE_FLOAT], [SQLITE_TEXT], [SQLITE_BLOB], or [SQLITE_NULL]. The value
1806** returned by sqlite3_column_type() is only meaningful if no type
1807** conversions have occurred as described below. After a type conversion,
1808** the value returned by sqlite3_column_type() is undefined. Future
1809** versions of SQLite may change the behavior of sqlite3_column_type()
1810** following a type conversion.
1811**
drh6ed48bf2007-06-14 20:57:18 +00001812** If the result is a BLOB or UTF-8 string then the sqlite3_column_bytes()
1813** routine returns the number of bytes in that BLOB or string.
1814** If the result is a UTF-16 string, then sqlite3_column_bytes() converts
1815** the string to UTF-8 and then returns the number of bytes.
1816** If the result is a numeric value then sqlite3_column_bytes() uses
1817** [sqlite3_snprintf()] to convert that value to a UTF-8 string and returns
1818** the number of bytes in that string.
1819** The value returned does not include the zero terminator at the end
1820** of the string. For clarity: the value returned is the number of
1821** bytes in the string, not the number of characters.
1822**
1823** The sqlite3_column_bytes16() routine is similar to sqlite3_column_bytes()
1824** but leaves the result in UTF-16 instead of UTF-8.
1825** The zero terminator is not included in this count.
drh4f26d6c2004-05-26 23:25:30 +00001826**
1827** These routines attempt to convert the value where appropriate. For
1828** example, if the internal representation is FLOAT and a text result
drh6ed48bf2007-06-14 20:57:18 +00001829** is requested, [sqlite3_snprintf()] is used internally to do the conversion
drh4f26d6c2004-05-26 23:25:30 +00001830** automatically. The following table details the conversions that
1831** are applied:
1832**
drh6ed48bf2007-06-14 20:57:18 +00001833** <blockquote>
1834** <table border="1">
1835** <tr><th> Internal <th> Requested <th>
1836** <tr><th> Type <th> Type <th> Conversion
drh4f26d6c2004-05-26 23:25:30 +00001837**
drh6ed48bf2007-06-14 20:57:18 +00001838** <tr><td> NULL <td> INTEGER <td> Result is 0
1839** <tr><td> NULL <td> FLOAT <td> Result is 0.0
1840** <tr><td> NULL <td> TEXT <td> Result is NULL pointer
1841** <tr><td> NULL <td> BLOB <td> Result is NULL pointer
1842** <tr><td> INTEGER <td> FLOAT <td> Convert from integer to float
1843** <tr><td> INTEGER <td> TEXT <td> ASCII rendering of the integer
1844** <tr><td> INTEGER <td> BLOB <td> Same as for INTEGER->TEXT
1845** <tr><td> FLOAT <td> INTEGER <td> Convert from float to integer
1846** <tr><td> FLOAT <td> TEXT <td> ASCII rendering of the float
1847** <tr><td> FLOAT <td> BLOB <td> Same as FLOAT->TEXT
1848** <tr><td> TEXT <td> INTEGER <td> Use atoi()
1849** <tr><td> TEXT <td> FLOAT <td> Use atof()
1850** <tr><td> TEXT <td> BLOB <td> No change
1851** <tr><td> BLOB <td> INTEGER <td> Convert to TEXT then use atoi()
1852** <tr><td> BLOB <td> FLOAT <td> Convert to TEXT then use atof()
1853** <tr><td> BLOB <td> TEXT <td> Add a zero terminator if needed
1854** </table>
1855** </blockquote>
drh4f26d6c2004-05-26 23:25:30 +00001856**
drh6ed48bf2007-06-14 20:57:18 +00001857** The table above makes reference to standard C library functions atoi()
1858** and atof(). SQLite does not really use these functions. It has its
1859** on equavalent internal routines. The atoi() and atof() names are
1860** used in the table for brevity and because they are familiar to most
1861** C programmers.
1862**
1863** Note that when type conversions occur, pointers returned by prior
1864** calls to sqlite3_column_blob(), sqlite3_column_text(), and/or
1865** sqlite3_column_text16() may be invalidated.
1866** Type conversions and pointer invalidations might occur
1867** in the following cases:
1868**
1869** <ul>
1870** <li><p> The initial content is a BLOB and sqlite3_column_text()
1871** or sqlite3_column_text16() is called. A zero-terminator might
1872** need to be added to the string.</p></li>
1873**
1874** <li><p> The initial content is UTF-8 text and sqlite3_column_bytes16() or
1875** sqlite3_column_text16() is called. The content must be converted
1876** to UTF-16.</p></li>
1877**
1878** <li><p> The initial content is UTF-16 text and sqlite3_column_bytes() or
1879** sqlite3_column_text() is called. The content must be converted
1880** to UTF-8.</p></li>
1881** </ul>
1882**
1883** Conversions between UTF-16be and UTF-16le are always done in place and do
1884** not invalidate a prior pointer, though of course the content of the buffer
1885** that the prior pointer points to will have been modified. Other kinds
1886** of conversion are done in place when it is possible, but sometime it is
1887** not possible and in those cases prior pointers are invalidated.
1888**
1889** The safest and easiest to remember policy is to invoke these routines
1890** in one of the following ways:
1891**
1892** <ul>
1893** <li>sqlite3_column_text() followed by sqlite3_column_bytes()</li>
1894** <li>sqlite3_column_blob() followed by sqlite3_column_bytes()</li>
1895** <li>sqlite3_column_text16() followed by sqlite3_column_bytes16()</li>
1896** </ul>
1897**
1898** In other words, you should call sqlite3_column_text(), sqlite3_column_blob(),
1899** or sqlite3_column_text16() first to force the result into the desired
1900** format, then invoke sqlite3_column_bytes() or sqlite3_column_bytes16() to
1901** find the size of the result. Do not mix call to sqlite3_column_text() or
1902** sqlite3_column_blob() with calls to sqlite3_column_bytes16(). And do not
1903** mix calls to sqlite3_column_text16() with calls to sqlite3_column_bytes().
danielk1977106bb232004-05-21 10:08:53 +00001904*/
drhf4479502004-05-27 03:12:53 +00001905const void *sqlite3_column_blob(sqlite3_stmt*, int iCol);
1906int sqlite3_column_bytes(sqlite3_stmt*, int iCol);
1907int sqlite3_column_bytes16(sqlite3_stmt*, int iCol);
1908double sqlite3_column_double(sqlite3_stmt*, int iCol);
1909int sqlite3_column_int(sqlite3_stmt*, int iCol);
drh6d2069d2007-08-14 01:58:53 +00001910sqlite3_int64 sqlite3_column_int64(sqlite3_stmt*, int iCol);
drhf4479502004-05-27 03:12:53 +00001911const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);
1912const void *sqlite3_column_text16(sqlite3_stmt*, int iCol);
drh4f26d6c2004-05-26 23:25:30 +00001913int sqlite3_column_type(sqlite3_stmt*, int iCol);
drh4be8b512006-06-13 23:51:34 +00001914sqlite3_value *sqlite3_column_value(sqlite3_stmt*, int iCol);
danielk19774adee202004-05-08 08:23:19 +00001915
danielk197765904932004-05-26 06:18:37 +00001916/*
drh6ed48bf2007-06-14 20:57:18 +00001917** CAPI3REF: Destroy A Prepared Statement Object
1918**
1919** The sqlite3_finalize() function is called to delete a
1920** [sqlite3_stmt | compiled SQL statement]. If the statement was
1921** executed successfully, or not executed at all, then SQLITE_OK is returned.
1922** If execution of the statement failed then an
1923** [SQLITE_ERROR | error code] or [SQLITE_IOERR_READ | extended error code]
1924** is returned.
danielk197765904932004-05-26 06:18:37 +00001925**
1926** This routine can be called at any point during the execution of the
drh6ed48bf2007-06-14 20:57:18 +00001927** [sqlite3_stmt | virtual machine]. If the virtual machine has not
1928** completed execution when this routine is called, that is like
1929** encountering an error or an interrupt. (See [sqlite3_interrupt()].)
1930** Incomplete updates may be rolled back and transactions cancelled,
1931** depending on the circumstances, and the
1932** [SQLITE_ERROR | result code] returned will be [SQLITE_ABORT].
danielk197765904932004-05-26 06:18:37 +00001933*/
1934int sqlite3_finalize(sqlite3_stmt *pStmt);
1935
1936/*
drh6ed48bf2007-06-14 20:57:18 +00001937** CAPI3REF: Reset A Prepared Statement Object
1938**
1939** The sqlite3_reset() function is called to reset a
drh6d2069d2007-08-14 01:58:53 +00001940** [sqlite3_stmt | compiled SQL statement] object.
drh6ed48bf2007-06-14 20:57:18 +00001941** back to it's initial state, ready to be re-executed.
danielk197765904932004-05-26 06:18:37 +00001942** Any SQL statement variables that had values bound to them using
drh6ed48bf2007-06-14 20:57:18 +00001943** the [sqlite3_bind_blob | sqlite3_bind_*() API] retain their values.
1944** Use [sqlite3_clear_bindings()] to reset the bindings.
danielk197765904932004-05-26 06:18:37 +00001945*/
1946int sqlite3_reset(sqlite3_stmt *pStmt);
1947
1948/*
drh6ed48bf2007-06-14 20:57:18 +00001949** CAPI3REF: Create Or Redefine SQL Functions
1950**
1951** The following two functions are used to add SQL functions or aggregates
1952** or to redefine the behavior of existing SQL functions or aggregates. The
danielk197765904932004-05-26 06:18:37 +00001953** difference only between the two is that the second parameter, the
1954** name of the (scalar) function or aggregate, is encoded in UTF-8 for
1955** sqlite3_create_function() and UTF-16 for sqlite3_create_function16().
1956**
drh6ed48bf2007-06-14 20:57:18 +00001957** The first argument is the [sqlite3 | database handle] that holds the
1958** SQL function or aggregate is to be added or redefined. If a single
1959** program uses more than one database handle internally, then SQL
1960** functions or aggregates must be added individually to each database
1961** handle with which they will be used.
danielk197765904932004-05-26 06:18:37 +00001962**
drh6ed48bf2007-06-14 20:57:18 +00001963** The second parameter is the name of the SQL function to be created
1964** or redefined.
1965** The length of the name is limited to 255 bytes, exclusive of the
1966** zero-terminator. Note that the name length limit is in bytes, not
1967** characters. Any attempt to create a function with a longer name
1968** will result in an SQLITE_ERROR error.
1969**
1970** The third parameter is the number of arguments that the SQL function or
1971** aggregate takes. If this parameter is negative, then the SQL function or
danielk197765904932004-05-26 06:18:37 +00001972** aggregate may take any number of arguments.
1973**
drh6ed48bf2007-06-14 20:57:18 +00001974** The fourth parameter, eTextRep, specifies what
1975** [SQLITE_UTF8 | text encoding] this SQL function prefers for
1976** its parameters. Any SQL function implementation should be able to work
1977** work with UTF-8, UTF-16le, or UTF-16be. But some implementations may be
1978** more efficient with one encoding than another. It is allowed to
drh6d2069d2007-08-14 01:58:53 +00001979** invoke sqlite3_create_function() or sqlite3_create_function16() multiple
drh6ed48bf2007-06-14 20:57:18 +00001980** times with the same function but with different values of eTextRep.
1981** When multiple implementations of the same function are available, SQLite
1982** will pick the one that involves the least amount of data conversion.
1983** If there is only a single implementation which does not care what
1984** text encoding is used, then the fourth argument should be
1985** [SQLITE_ANY].
1986**
1987** The fifth parameter is an arbitrary pointer. The implementation
1988** of the function can gain access to this pointer using
drh6d2069d2007-08-14 01:58:53 +00001989** [sqlite3_user_data()].
danielk1977d02eb1f2004-06-06 09:44:03 +00001990**
danielk197765904932004-05-26 06:18:37 +00001991** The seventh, eighth and ninth parameters, xFunc, xStep and xFinal, are
drh6ed48bf2007-06-14 20:57:18 +00001992** pointers to C-language functions that implement the SQL
1993** function or aggregate. A scalar SQL function requires an implementation of
danielk197765904932004-05-26 06:18:37 +00001994** the xFunc callback only, NULL pointers should be passed as the xStep
drh6ed48bf2007-06-14 20:57:18 +00001995** and xFinal parameters. An aggregate SQL function requires an implementation
1996** of xStep and xFinal and NULL should be passed for xFunc. To delete an
1997** existing SQL function or aggregate, pass NULL for all three function
1998** callback.
1999**
2000** It is permitted to register multiple implementations of the same
2001** functions with the same name but with either differing numbers of
2002** arguments or differing perferred text encodings. SQLite will use
2003** the implementation most closely matches the way in which the
2004** SQL function is used.
danielk197765904932004-05-26 06:18:37 +00002005*/
2006int sqlite3_create_function(
2007 sqlite3 *,
2008 const char *zFunctionName,
2009 int nArg,
2010 int eTextRep,
danielk197765904932004-05-26 06:18:37 +00002011 void*,
2012 void (*xFunc)(sqlite3_context*,int,sqlite3_value**),
2013 void (*xStep)(sqlite3_context*,int,sqlite3_value**),
2014 void (*xFinal)(sqlite3_context*)
2015);
2016int sqlite3_create_function16(
2017 sqlite3*,
2018 const void *zFunctionName,
2019 int nArg,
2020 int eTextRep,
danielk197765904932004-05-26 06:18:37 +00002021 void*,
2022 void (*xFunc)(sqlite3_context*,int,sqlite3_value**),
2023 void (*xStep)(sqlite3_context*,int,sqlite3_value**),
2024 void (*xFinal)(sqlite3_context*)
2025);
2026
2027/*
drh6ed48bf2007-06-14 20:57:18 +00002028** CAPI3REF: Text Encodings
2029**
2030** These constant define integer codes that represent the various
2031** text encodings supported by SQLite.
danielk197765904932004-05-26 06:18:37 +00002032*/
drh6ed48bf2007-06-14 20:57:18 +00002033#define SQLITE_UTF8 1
2034#define SQLITE_UTF16LE 2
2035#define SQLITE_UTF16BE 3
2036#define SQLITE_UTF16 4 /* Use native byte order */
2037#define SQLITE_ANY 5 /* sqlite3_create_function only */
2038#define SQLITE_UTF16_ALIGNED 8 /* sqlite3_create_collation only */
danielk197765904932004-05-26 06:18:37 +00002039
danielk19770ffba6b2004-05-24 09:10:10 +00002040/*
drh6ed48bf2007-06-14 20:57:18 +00002041** CAPI3REF: Obsolete Functions
2042**
2043** These functions are all now obsolete. In order to maintain
2044** backwards compatibility with older code, we continue to support
2045** these functions. However, new development projects should avoid
2046** the use of these functions. To help encourage people to avoid
2047** using these functions, we are not going to tell you want they do.
2048*/
2049int sqlite3_aggregate_count(sqlite3_context*);
2050int sqlite3_expired(sqlite3_stmt*);
2051int sqlite3_transfer_bindings(sqlite3_stmt*, sqlite3_stmt*);
2052int sqlite3_global_recover(void);
2053
2054
2055/*
2056** CAPI3REF: Obtaining SQL Function Parameter Values
2057**
2058** The C-language implementation of SQL functions and aggregates uses
2059** this set of interface routines to access the parameter values on
2060** the function or aggregate.
2061**
2062** The xFunc (for scalar functions) or xStep (for aggregates) parameters
2063** to [sqlite3_create_function()] and [sqlite3_create_function16()]
2064** define callbacks that implement the SQL functions and aggregates.
2065** The 4th parameter to these callbacks is an array of pointers to
2066** [sqlite3_value] objects. There is one [sqlite3_value] object for
2067** each parameter to the SQL function. These routines are used to
2068** extract values from the [sqlite3_value] objects.
2069**
2070** These routines work just like the corresponding
2071** [sqlite3_column_blob | sqlite3_column_* routines] except that
2072** these routines take a single [sqlite3_value*] pointer instead
2073** of an [sqlite3_stmt*] pointer and an integer column number.
2074**
2075** The sqlite3_value_text16() interface extracts a UTF16 string
2076** in the native byte-order of the host machine. The
2077** sqlite3_value_text16be() and sqlite3_value_text16le() interfaces
2078** extract UTF16 strings as big-endian and little-endian respectively.
2079**
2080** The sqlite3_value_numeric_type() interface attempts to apply
2081** numeric affinity to the value. This means that an attempt is
2082** made to convert the value to an integer or floating point. If
2083** such a conversion is possible without loss of information (in order
2084** words if the value is original a string that looks like a number)
2085** then it is done. Otherwise no conversion occurs. The
2086** [SQLITE_INTEGER | datatype] after conversion is returned.
2087**
2088** Please pay particular attention to the fact that the pointer that
2089** is returned from [sqlite3_value_blob()], [sqlite3_value_text()], or
2090** [sqlite3_value_text16()] can be invalidated by a subsequent call to
drh6d2069d2007-08-14 01:58:53 +00002091** [sqlite3_value_bytes()], [sqlite3_value_bytes16()], [sqlite3_value_text()],
drh6ed48bf2007-06-14 20:57:18 +00002092** or [sqlite3_value_text16()].
danielk19770ffba6b2004-05-24 09:10:10 +00002093*/
drhf4479502004-05-27 03:12:53 +00002094const void *sqlite3_value_blob(sqlite3_value*);
2095int sqlite3_value_bytes(sqlite3_value*);
2096int sqlite3_value_bytes16(sqlite3_value*);
2097double sqlite3_value_double(sqlite3_value*);
2098int sqlite3_value_int(sqlite3_value*);
drh6d2069d2007-08-14 01:58:53 +00002099sqlite3_int64 sqlite3_value_int64(sqlite3_value*);
drhf4479502004-05-27 03:12:53 +00002100const unsigned char *sqlite3_value_text(sqlite3_value*);
2101const void *sqlite3_value_text16(sqlite3_value*);
danielk1977d8123362004-06-12 09:25:12 +00002102const void *sqlite3_value_text16le(sqlite3_value*);
2103const void *sqlite3_value_text16be(sqlite3_value*);
danielk197793d46752004-05-23 13:30:58 +00002104int sqlite3_value_type(sqlite3_value*);
drh29d72102006-02-09 22:13:41 +00002105int sqlite3_value_numeric_type(sqlite3_value*);
danielk19770ffba6b2004-05-24 09:10:10 +00002106
2107/*
drh6ed48bf2007-06-14 20:57:18 +00002108** CAPI3REF: Obtain Aggregate Function Context
2109**
2110** The implementation of aggregate SQL functions use this routine to allocate
danielk19770ae8b832004-05-25 12:05:56 +00002111** a structure for storing their state. The first time this routine
2112** is called for a particular aggregate, a new structure of size nBytes
2113** is allocated, zeroed, and returned. On subsequent calls (for the
2114** same aggregate instance) the same buffer is returned. The implementation
2115** of the aggregate can use the returned buffer to accumulate data.
2116**
drh6ed48bf2007-06-14 20:57:18 +00002117** The buffer allocated is freed automatically by SQLite whan the aggregate
2118** query concludes.
2119**
2120** The first parameter should be a copy of the
2121** [sqlite3_context | SQL function context] that is the first
2122** parameter to the callback routine that implements the aggregate
2123** function.
danielk19770ae8b832004-05-25 12:05:56 +00002124*/
drh4f26d6c2004-05-26 23:25:30 +00002125void *sqlite3_aggregate_context(sqlite3_context*, int nBytes);
danielk19777e18c252004-05-25 11:47:24 +00002126
2127/*
drh6ed48bf2007-06-14 20:57:18 +00002128** CAPI3REF: User Data For Functions
2129**
2130** The pUserData parameter to the [sqlite3_create_function()]
2131** and [sqlite3_create_function16()] routines
2132** used to register user functions is available to
drhc0f2a012005-07-09 02:39:40 +00002133** the implementation of the function using this call.
danielk19777e18c252004-05-25 11:47:24 +00002134*/
2135void *sqlite3_user_data(sqlite3_context*);
2136
2137/*
drh6ed48bf2007-06-14 20:57:18 +00002138** CAPI3REF: Function Auxiliary Data
2139**
2140** The following two functions may be used by scalar SQL functions to
danielk1977682f68b2004-06-05 10:22:17 +00002141** associate meta-data with argument values. If the same value is passed to
drh6ed48bf2007-06-14 20:57:18 +00002142** multiple invocations of the same SQL function during query execution, under
danielk1977682f68b2004-06-05 10:22:17 +00002143** some circumstances the associated meta-data may be preserved. This may
2144** be used, for example, to add a regular-expression matching scalar
2145** function. The compiled version of the regular expression is stored as
2146** meta-data associated with the SQL value passed as the regular expression
drh6ed48bf2007-06-14 20:57:18 +00002147** pattern. The compiled regular expression can be reused on multiple
2148** invocations of the same function so that the original pattern string
2149** does not need to be recompiled on each invocation.
danielk1977682f68b2004-06-05 10:22:17 +00002150**
drh6ed48bf2007-06-14 20:57:18 +00002151** The sqlite3_get_auxdata() interface returns a pointer to the meta-data
2152** associated with the Nth argument value to the current SQL function
danielk1977682f68b2004-06-05 10:22:17 +00002153** call, where N is the second parameter. If no meta-data has been set for
2154** that value, then a NULL pointer is returned.
2155**
drh6ed48bf2007-06-14 20:57:18 +00002156** The sqlite3_set_auxdata() is used to associate meta-data with an SQL
2157** function argument. The third parameter is a pointer to the meta-data
danielk1977682f68b2004-06-05 10:22:17 +00002158** to be associated with the Nth user function argument value. The fourth
drh6ed48bf2007-06-14 20:57:18 +00002159** parameter specifies a destructor that will be called on the meta-
2160** data pointer to release it when it is no longer required. If the
2161** destructor is NULL, it is not invoked.
danielk1977682f68b2004-06-05 10:22:17 +00002162**
2163** In practice, meta-data is preserved between function calls for
2164** expressions that are constant at compile time. This includes literal
2165** values and SQL variables.
2166*/
2167void *sqlite3_get_auxdata(sqlite3_context*, int);
2168void sqlite3_set_auxdata(sqlite3_context*, int, void*, void (*)(void*));
2169
drha2854222004-06-17 19:04:17 +00002170
2171/*
drh6ed48bf2007-06-14 20:57:18 +00002172** CAPI3REF: Constants Defining Special Destructor Behavior
2173**
drha2854222004-06-17 19:04:17 +00002174** These are special value for the destructor that is passed in as the
drh6ed48bf2007-06-14 20:57:18 +00002175** final argument to routines like [sqlite3_result_blob()]. If the destructor
drha2854222004-06-17 19:04:17 +00002176** argument is SQLITE_STATIC, it means that the content pointer is constant
2177** and will never change. It does not need to be destroyed. The
2178** SQLITE_TRANSIENT value means that the content will likely change in
2179** the near future and that SQLite should make its own private copy of
2180** the content before returning.
drh6c9121a2007-01-26 00:51:43 +00002181**
2182** The typedef is necessary to work around problems in certain
2183** C++ compilers. See ticket #2191.
drha2854222004-06-17 19:04:17 +00002184*/
drh6c9121a2007-01-26 00:51:43 +00002185typedef void (*sqlite3_destructor_type)(void*);
2186#define SQLITE_STATIC ((sqlite3_destructor_type)0)
2187#define SQLITE_TRANSIENT ((sqlite3_destructor_type)-1)
danielk1977d8123362004-06-12 09:25:12 +00002188
danielk1977682f68b2004-06-05 10:22:17 +00002189/*
drh6ed48bf2007-06-14 20:57:18 +00002190** CAPI3REF: Setting The Result Of An SQL Function
2191**
2192** These routines are used by the xFunc or xFinal callbacks that
2193** implement SQL functions and aggregates. See
2194** [sqlite3_create_function()] and [sqlite3_create_function16()]
2195** for additional information.
2196**
2197** These functions work very much like the
2198** [sqlite3_bind_blob | sqlite3_bind_*] family of functions used
2199** to bind values to host parameters in prepared statements.
2200** Refer to the
2201** [sqlite3_bind_blob | sqlite3_bind_* documentation] for
2202** additional information.
2203**
2204** The sqlite3_result_error() and sqlite3_result_error16() functions
2205** cause the implemented SQL function to throw an exception. The
2206** parameter to sqlite3_result_error() or sqlite3_result_error16()
2207** is the text of an error message.
2208**
2209** The sqlite3_result_toobig() cause the function implementation
2210** to throw and error indicating that a string or BLOB is to long
2211** to represent.
danielk19777e18c252004-05-25 11:47:24 +00002212*/
danielk1977d8123362004-06-12 09:25:12 +00002213void sqlite3_result_blob(sqlite3_context*, const void*, int, void(*)(void*));
drh4f26d6c2004-05-26 23:25:30 +00002214void sqlite3_result_double(sqlite3_context*, double);
danielk19777e18c252004-05-25 11:47:24 +00002215void sqlite3_result_error(sqlite3_context*, const char*, int);
2216void sqlite3_result_error16(sqlite3_context*, const void*, int);
drh6ed48bf2007-06-14 20:57:18 +00002217void sqlite3_result_error_toobig(sqlite3_context*);
drh4f26d6c2004-05-26 23:25:30 +00002218void sqlite3_result_int(sqlite3_context*, int);
drh6d2069d2007-08-14 01:58:53 +00002219void sqlite3_result_int64(sqlite3_context*, sqlite3_int64);
drh4f26d6c2004-05-26 23:25:30 +00002220void sqlite3_result_null(sqlite3_context*);
danielk1977d8123362004-06-12 09:25:12 +00002221void sqlite3_result_text(sqlite3_context*, const char*, int, void(*)(void*));
2222void sqlite3_result_text16(sqlite3_context*, const void*, int, void(*)(void*));
2223void sqlite3_result_text16le(sqlite3_context*, const void*, int,void(*)(void*));
2224void sqlite3_result_text16be(sqlite3_context*, const void*, int,void(*)(void*));
drh4f26d6c2004-05-26 23:25:30 +00002225void sqlite3_result_value(sqlite3_context*, sqlite3_value*);
drhb026e052007-05-02 01:34:31 +00002226void sqlite3_result_zeroblob(sqlite3_context*, int n);
drhf9b596e2004-05-26 16:54:42 +00002227
drh52619df2004-06-11 17:48:02 +00002228/*
drh6ed48bf2007-06-14 20:57:18 +00002229** CAPI3REF: Define New Collating Sequences
2230**
2231** These functions are used to add new collation sequences to the
2232** [sqlite3*] handle specified as the first argument.
danielk19777cedc8d2004-06-10 10:50:08 +00002233**
2234** The name of the new collation sequence is specified as a UTF-8 string
drh6ed48bf2007-06-14 20:57:18 +00002235** for sqlite3_create_collation() and sqlite3_create_collation_v2()
2236** and a UTF-16 string for sqlite3_create_collation16(). In all cases
2237** the name is passed as the second function argument.
danielk19777cedc8d2004-06-10 10:50:08 +00002238**
drh6ed48bf2007-06-14 20:57:18 +00002239** The third argument must be one of the constants [SQLITE_UTF8],
2240** [SQLITE_UTF16LE] or [SQLITE_UTF16BE], indicating that the user-supplied
danielk19777cedc8d2004-06-10 10:50:08 +00002241** routine expects to be passed pointers to strings encoded using UTF-8,
2242** UTF-16 little-endian or UTF-16 big-endian respectively.
2243**
2244** A pointer to the user supplied routine must be passed as the fifth
2245** argument. If it is NULL, this is the same as deleting the collation
2246** sequence (so that SQLite cannot call it anymore). Each time the user
2247** supplied function is invoked, it is passed a copy of the void* passed as
2248** the fourth argument to sqlite3_create_collation() or
2249** sqlite3_create_collation16() as its first parameter.
2250**
2251** The remaining arguments to the user-supplied routine are two strings,
2252** each represented by a [length, data] pair and encoded in the encoding
2253** that was passed as the third argument when the collation sequence was
2254** registered. The user routine should return negative, zero or positive if
2255** the first string is less than, equal to, or greater than the second
2256** string. i.e. (STRING1 - STRING2).
drh6ed48bf2007-06-14 20:57:18 +00002257**
2258** The sqlite3_create_collation_v2() works like sqlite3_create_collation()
2259** excapt that it takes an extra argument which is a destructor for
2260** the collation. The destructor is called when the collation is
2261** destroyed and is passed a copy of the fourth parameter void* pointer
2262** of the sqlite3_create_collation_v2(). Collations are destroyed when
2263** they are overridden by later calls to the collation creation functions
2264** or when the [sqlite3*] database handle is closed using [sqlite3_close()].
2265**
2266** The sqlite3_create_collation_v2() interface is experimental and
2267** subject to change in future releases. The other collation creation
2268** functions are stable.
danielk19777cedc8d2004-06-10 10:50:08 +00002269*/
danielk19770202b292004-06-09 09:55:16 +00002270int sqlite3_create_collation(
2271 sqlite3*,
2272 const char *zName,
danielk19777cedc8d2004-06-10 10:50:08 +00002273 int eTextRep,
danielk19770202b292004-06-09 09:55:16 +00002274 void*,
2275 int(*xCompare)(void*,int,const void*,int,const void*)
2276);
drh6ed48bf2007-06-14 20:57:18 +00002277int sqlite3_create_collation_v2(
2278 sqlite3*,
2279 const char *zName,
2280 int eTextRep,
2281 void*,
2282 int(*xCompare)(void*,int,const void*,int,const void*),
2283 void(*xDestroy)(void*)
2284);
danielk19770202b292004-06-09 09:55:16 +00002285int sqlite3_create_collation16(
2286 sqlite3*,
2287 const char *zName,
danielk19777cedc8d2004-06-10 10:50:08 +00002288 int eTextRep,
danielk19770202b292004-06-09 09:55:16 +00002289 void*,
2290 int(*xCompare)(void*,int,const void*,int,const void*)
2291);
2292
danielk19777cedc8d2004-06-10 10:50:08 +00002293/*
drh6ed48bf2007-06-14 20:57:18 +00002294** CAPI3REF: Collation Needed Callbacks
danielk1977a393c032007-05-07 14:58:53 +00002295**
danielk19777cedc8d2004-06-10 10:50:08 +00002296** To avoid having to register all collation sequences before a database
2297** can be used, a single callback function may be registered with the
2298** database handle to be called whenever an undefined collation sequence is
2299** required.
2300**
2301** If the function is registered using the sqlite3_collation_needed() API,
2302** then it is passed the names of undefined collation sequences as strings
2303** encoded in UTF-8. If sqlite3_collation_needed16() is used, the names
2304** are passed as UTF-16 in machine native byte order. A call to either
2305** function replaces any existing callback.
2306**
drh6ed48bf2007-06-14 20:57:18 +00002307** When the callback is invoked, the first argument passed is a copy
danielk19777cedc8d2004-06-10 10:50:08 +00002308** of the second argument to sqlite3_collation_needed() or
2309** sqlite3_collation_needed16(). The second argument is the database
drh6ed48bf2007-06-14 20:57:18 +00002310** handle. The third argument is one of [SQLITE_UTF8], [SQLITE_UTF16BE], or
2311** [SQLITE_UTF16LE], indicating the most desirable form of the collation
danielk19777cedc8d2004-06-10 10:50:08 +00002312** sequence function required. The fourth parameter is the name of the
2313** required collation sequence.
2314**
drh6ed48bf2007-06-14 20:57:18 +00002315** The callback function should register the desired collation using
2316** [sqlite3_create_collation()], [sqlite3_create_collation16()], or
2317** [sqlite3_create_collation_v2()].
danielk19777cedc8d2004-06-10 10:50:08 +00002318*/
2319int sqlite3_collation_needed(
2320 sqlite3*,
2321 void*,
2322 void(*)(void*,sqlite3*,int eTextRep,const char*)
2323);
2324int sqlite3_collation_needed16(
2325 sqlite3*,
2326 void*,
2327 void(*)(void*,sqlite3*,int eTextRep,const void*)
2328);
2329
drh2011d5f2004-07-22 02:40:37 +00002330/*
2331** Specify the key for an encrypted database. This routine should be
2332** called right after sqlite3_open().
2333**
2334** The code to implement this API is not available in the public release
2335** of SQLite.
2336*/
2337int sqlite3_key(
2338 sqlite3 *db, /* Database to be rekeyed */
2339 const void *pKey, int nKey /* The key */
2340);
2341
2342/*
2343** Change the key on an open database. If the current database is not
2344** encrypted, this routine will encrypt it. If pNew==0 or nNew==0, the
2345** database is decrypted.
2346**
2347** The code to implement this API is not available in the public release
2348** of SQLite.
2349*/
2350int sqlite3_rekey(
2351 sqlite3 *db, /* Database to be rekeyed */
2352 const void *pKey, int nKey /* The new key */
2353);
danielk19770202b292004-06-09 09:55:16 +00002354
drhab3f9fe2004-08-14 17:10:10 +00002355/*
drh6ed48bf2007-06-14 20:57:18 +00002356** CAPI3REF: Suspend Execution For A Short Time
2357**
danielk1977d84d4832007-06-20 09:09:47 +00002358** This function causes the current thread to suspend execution
drh6ed48bf2007-06-14 20:57:18 +00002359** a number of milliseconds specified in its parameter.
danielk1977600dd0b2005-01-20 01:14:23 +00002360**
2361** If the operating system does not support sleep requests with
drh6ed48bf2007-06-14 20:57:18 +00002362** millisecond time resolution, then the time will be rounded up to
2363** the nearest second. The number of milliseconds of sleep actually
danielk1977600dd0b2005-01-20 01:14:23 +00002364** requested from the operating system is returned.
danielk1977600dd0b2005-01-20 01:14:23 +00002365*/
2366int sqlite3_sleep(int);
2367
2368/*
drh6ed48bf2007-06-14 20:57:18 +00002369** CAPI3REF: Name Of The Folder Holding Temporary Files
drhd89bd002005-01-22 03:03:54 +00002370**
drh6ed48bf2007-06-14 20:57:18 +00002371** If this global variable is made to point to a string which is
2372** the name of a folder (a.ka. directory), then all temporary files
drhab3f9fe2004-08-14 17:10:10 +00002373** created by SQLite will be placed in that directory. If this variable
2374** is NULL pointer, then SQLite does a search for an appropriate temporary
2375** file directory.
2376**
drh6ed48bf2007-06-14 20:57:18 +00002377** Once [sqlite3_open()] has been called, changing this variable will
2378** invalidate the current temporary database, if any. Generally speaking,
2379** it is not safe to invoke this routine after [sqlite3_open()] has
2380** been called.
drhab3f9fe2004-08-14 17:10:10 +00002381*/
drh73be5012007-08-08 12:11:21 +00002382SQLITE_EXTERN char *sqlite3_temp_directory;
drhab3f9fe2004-08-14 17:10:10 +00002383
danielk19776b456a22005-03-21 04:04:02 +00002384/*
drh6ed48bf2007-06-14 20:57:18 +00002385** CAPI3REF: Test To See If The Databse Is In Auto-Commit Mode
danielk19776b456a22005-03-21 04:04:02 +00002386**
drh3e1d8e62005-05-26 16:23:34 +00002387** Test to see whether or not the database connection is in autocommit
2388** mode. Return TRUE if it is and FALSE if not. Autocommit mode is on
2389** by default. Autocommit is disabled by a BEGIN statement and reenabled
2390** by the next COMMIT or ROLLBACK.
drh3e1d8e62005-05-26 16:23:34 +00002391*/
2392int sqlite3_get_autocommit(sqlite3*);
2393
drh51942bc2005-06-12 22:01:42 +00002394/*
drh6ed48bf2007-06-14 20:57:18 +00002395** CAPI3REF: Find The Database Handle Associated With A Prepared Statement
2396**
2397** Return the [sqlite3*] database handle to which a
2398** [sqlite3_stmt | prepared statement] belongs.
2399** This is the same database handle that was
2400** the first argument to the [sqlite3_prepare_v2()] or its variants
2401** that was used to create the statement in the first place.
drh51942bc2005-06-12 22:01:42 +00002402*/
2403sqlite3 *sqlite3_db_handle(sqlite3_stmt*);
drh3e1d8e62005-05-26 16:23:34 +00002404
drh6ed48bf2007-06-14 20:57:18 +00002405
drhb37df7b2005-10-13 02:09:49 +00002406/*
drh6ed48bf2007-06-14 20:57:18 +00002407** CAPI3REF: Commit And Rollback Notification Callbacks
2408**
2409** These routines
2410** register callback functions to be invoked whenever a transaction
2411** is committed or rolled back. The pArg argument is passed through
2412** to the callback. If the callback on a commit hook function
2413** returns non-zero, then the commit is converted into a rollback.
2414**
2415** If another function was previously registered, its pArg value is returned.
2416** Otherwise NULL is returned.
2417**
2418** Registering a NULL function disables the callback.
2419**
2420** For the purposes of this API, a transaction is said to have been
2421** rolled back if an explicit "ROLLBACK" statement is executed, or
2422** an error or constraint causes an implicit rollback to occur. The
2423** callback is not invoked if a transaction is automatically rolled
2424** back because the database connection is closed.
2425**
2426** These are experimental interfaces and are subject to change.
2427*/
2428void *sqlite3_commit_hook(sqlite3*, int(*)(void*), void*);
2429void *sqlite3_rollback_hook(sqlite3*, void(*)(void *), void*);
2430
2431/*
2432** CAPI3REF: Data Change Notification Callbacks
2433**
danielk197794eb6a12005-12-15 15:22:08 +00002434** Register a callback function with the database connection identified by the
2435** first argument to be invoked whenever a row is updated, inserted or deleted.
2436** Any callback set by a previous call to this function for the same
2437** database connection is overridden.
2438**
2439** The second argument is a pointer to the function to invoke when a
2440** row is updated, inserted or deleted. The first argument to the callback is
drh6ed48bf2007-06-14 20:57:18 +00002441** a copy of the third argument to sqlite3_update_hook(). The second callback
danielk197794eb6a12005-12-15 15:22:08 +00002442** argument is one of SQLITE_INSERT, SQLITE_DELETE or SQLITE_UPDATE, depending
2443** on the operation that caused the callback to be invoked. The third and
2444** fourth arguments to the callback contain pointers to the database and
2445** table name containing the affected row. The final callback parameter is
2446** the rowid of the row. In the case of an update, this is the rowid after
2447** the update takes place.
2448**
2449** The update hook is not invoked when internal system tables are
2450** modified (i.e. sqlite_master and sqlite_sequence).
danielk197771fd80b2005-12-16 06:54:01 +00002451**
2452** If another function was previously registered, its pArg value is returned.
2453** Otherwise NULL is returned.
danielk197794eb6a12005-12-15 15:22:08 +00002454*/
danielk197771fd80b2005-12-16 06:54:01 +00002455void *sqlite3_update_hook(
danielk197794eb6a12005-12-15 15:22:08 +00002456 sqlite3*,
drh6d2069d2007-08-14 01:58:53 +00002457 void(*)(void *,int ,char const *,char const *,sqlite3_int64),
danielk197794eb6a12005-12-15 15:22:08 +00002458 void*
2459);
danielk197713a68c32005-12-15 10:11:30 +00002460
danielk1977f3f06bb2005-12-16 15:24:28 +00002461/*
drh6ed48bf2007-06-14 20:57:18 +00002462** CAPI3REF: Enable Or Disable Shared Pager Cache
danielk1977f3f06bb2005-12-16 15:24:28 +00002463**
drh6ed48bf2007-06-14 20:57:18 +00002464** This routine enables or disables the sharing of the database cache
2465** and schema data structures between connections to the same database.
2466** Sharing is enabled if the argument is true and disabled if the argument
2467** is false.
danielk1977f3f06bb2005-12-16 15:24:28 +00002468**
drh6ed48bf2007-06-14 20:57:18 +00002469** Cache sharing is enabled and disabled on a thread-by-thread basis.
2470** Each call to this routine enables or disables cache sharing only for
2471** connections created in the same thread in which this routine is called.
2472** There is no mechanism for sharing cache between database connections
2473** running in different threads.
2474**
2475** Sharing must be disabled prior to shutting down a thread or else
2476** the thread will leak memory. Call this routine with an argument of
2477** 0 to turn off sharing. Or use the sqlite3_thread_cleanup() API.
2478**
2479** This routine must not be called when any database connections
2480** are active in the current thread. Enabling or disabling shared
2481** cache while there are active database connections will result
2482** in memory corruption.
2483**
2484** When the shared cache is enabled, the
2485** following routines must always be called from the same thread:
2486** [sqlite3_open()], [sqlite3_prepare_v2()], [sqlite3_step()],
2487** [sqlite3_reset()], [sqlite3_finalize()], and [sqlite3_close()].
2488** This is due to the fact that the shared cache makes use of
2489** thread-specific storage so that it will be available for sharing
2490** with other connections.
2491**
2492** Virtual tables cannot be used with a shared cache. When shared
2493** cache is enabled, the sqlite3_create_module() API used to register
2494** virtual tables will always return an error.
2495**
2496** This routine returns [SQLITE_OK] if shared cache was
2497** enabled or disabled successfully. An [SQLITE_ERROR | error code]
2498** is returned otherwise.
2499**
2500** Shared cache is disabled by default for backward compatibility.
danielk1977aef0bf62005-12-30 16:28:01 +00002501*/
2502int sqlite3_enable_shared_cache(int);
2503
2504/*
drh6ed48bf2007-06-14 20:57:18 +00002505** CAPI3REF: Attempt To Free Heap Memory
2506**
danielk197752622822006-01-09 09:59:49 +00002507** Attempt to free N bytes of heap memory by deallocating non-essential
2508** memory allocations held by the database library (example: memory
2509** used to cache database pages to improve performance).
2510**
drh6f7adc82006-01-11 21:41:20 +00002511** This function is not a part of standard builds. It is only created
2512** if SQLite is compiled with the SQLITE_ENABLE_MEMORY_MANAGEMENT macro.
danielk197752622822006-01-09 09:59:49 +00002513*/
2514int sqlite3_release_memory(int);
2515
2516/*
drh6ed48bf2007-06-14 20:57:18 +00002517** CAPI3REF: Impose A Limit On Heap Size
2518**
danielk197752622822006-01-09 09:59:49 +00002519** Place a "soft" limit on the amount of heap memory that may be allocated by
2520** SQLite within the current thread. If an internal allocation is requested
drh6ed48bf2007-06-14 20:57:18 +00002521** that would exceed the specified limit, [sqlite3_release_memory()] is invoked
danielk197752622822006-01-09 09:59:49 +00002522** one or more times to free up some space before the allocation is made.
2523**
drh6ed48bf2007-06-14 20:57:18 +00002524** The limit is called "soft", because if [sqlite3_release_memory()] cannot free
danielk197752622822006-01-09 09:59:49 +00002525** sufficient memory to prevent the limit from being exceeded, the memory is
2526** allocated anyway and the current operation proceeds.
2527**
drh6ed48bf2007-06-14 20:57:18 +00002528** Prior to shutting down a thread sqlite3_soft_heap_limit() must be set to
2529** zero (the default) or else the thread will leak memory. Alternatively, use
2530** the [sqlite3_thread_cleanup()] API.
2531**
2532** A negative or zero value for N means that there is no soft heap limit and
2533** [sqlite3_release_memory()] will only be called when memory is exhaused.
2534** The default value for the soft heap limit is zero.
2535**
2536** SQLite makes a best effort to honor the soft heap limit. But if it
2537** is unable to reduce memory usage below the soft limit, execution will
2538** continue without error or notification. This is why the limit is
2539** called a "soft" limit. It is advisory only.
2540**
drh6f7adc82006-01-11 21:41:20 +00002541** This function is only available if the library was compiled with the
2542** SQLITE_ENABLE_MEMORY_MANAGEMENT option set.
danielk197752622822006-01-09 09:59:49 +00002543** memory-management has been enabled.
2544*/
drhd2d4a6b2006-01-10 15:18:27 +00002545void sqlite3_soft_heap_limit(int);
danielk197752622822006-01-09 09:59:49 +00002546
2547/*
drh6ed48bf2007-06-14 20:57:18 +00002548** CAPI3REF: Clean Up Thread Local Storage
2549**
drh6f7adc82006-01-11 21:41:20 +00002550** This routine makes sure that all thread-local storage has been
2551** deallocated for the current thread.
2552**
2553** This routine is not technically necessary. All thread-local storage
2554** will be automatically deallocated once memory-management and
2555** shared-cache are disabled and the soft heap limit has been set
2556** to zero. This routine is provided as a convenience for users who
2557** want to make absolutely sure they have not forgotten something
2558** prior to killing off a thread.
2559*/
2560void sqlite3_thread_cleanup(void);
2561
2562/*
drh6ed48bf2007-06-14 20:57:18 +00002563** CAPI3REF: Extract Metadata About A Column Of A Table
2564**
2565** This routine
2566** returns meta-data about a specific column of a specific database
danielk1977deb802c2006-02-09 13:43:28 +00002567** table accessible using the connection handle passed as the first function
2568** argument.
2569**
2570** The column is identified by the second, third and fourth parameters to
2571** this function. The second parameter is either the name of the database
2572** (i.e. "main", "temp" or an attached database) containing the specified
2573** table or NULL. If it is NULL, then all attached databases are searched
2574** for the table using the same algorithm as the database engine uses to
2575** resolve unqualified table references.
2576**
2577** The third and fourth parameters to this function are the table and column
2578** name of the desired column, respectively. Neither of these parameters
2579** may be NULL.
2580**
2581** Meta information is returned by writing to the memory locations passed as
2582** the 5th and subsequent parameters to this function. Any of these
2583** arguments may be NULL, in which case the corresponding element of meta
2584** information is ommitted.
2585**
drh6ed48bf2007-06-14 20:57:18 +00002586** <pre>
danielk1977deb802c2006-02-09 13:43:28 +00002587** Parameter Output Type Description
2588** -----------------------------------
2589**
2590** 5th const char* Data type
2591** 6th const char* Name of the default collation sequence
2592** 7th int True if the column has a NOT NULL constraint
2593** 8th int True if the column is part of the PRIMARY KEY
2594** 9th int True if the column is AUTOINCREMENT
drh6ed48bf2007-06-14 20:57:18 +00002595** </pre>
danielk1977deb802c2006-02-09 13:43:28 +00002596**
2597**
2598** The memory pointed to by the character pointers returned for the
2599** declaration type and collation sequence is valid only until the next
2600** call to any sqlite API function.
2601**
2602** If the specified table is actually a view, then an error is returned.
2603**
2604** If the specified column is "rowid", "oid" or "_rowid_" and an
2605** INTEGER PRIMARY KEY column has been explicitly declared, then the output
2606** parameters are set for the explicitly declared column. If there is no
2607** explicitly declared IPK column, then the output parameters are set as
2608** follows:
2609**
drh6ed48bf2007-06-14 20:57:18 +00002610** <pre>
danielk1977deb802c2006-02-09 13:43:28 +00002611** data type: "INTEGER"
2612** collation sequence: "BINARY"
2613** not null: 0
2614** primary key: 1
2615** auto increment: 0
drh6ed48bf2007-06-14 20:57:18 +00002616** </pre>
danielk1977deb802c2006-02-09 13:43:28 +00002617**
2618** This function may load one or more schemas from database files. If an
2619** error occurs during this process, or if the requested table or column
2620** cannot be found, an SQLITE error code is returned and an error message
2621** left in the database handle (to be retrieved using sqlite3_errmsg()).
danielk19774b1ae992006-02-10 03:06:10 +00002622**
2623** This API is only available if the library was compiled with the
2624** SQLITE_ENABLE_COLUMN_METADATA preprocessor symbol defined.
danielk1977deb802c2006-02-09 13:43:28 +00002625*/
2626int sqlite3_table_column_metadata(
2627 sqlite3 *db, /* Connection handle */
2628 const char *zDbName, /* Database name or NULL */
2629 const char *zTableName, /* Table name */
2630 const char *zColumnName, /* Column name */
2631 char const **pzDataType, /* OUTPUT: Declared data type */
2632 char const **pzCollSeq, /* OUTPUT: Collation sequence name */
2633 int *pNotNull, /* OUTPUT: True if NOT NULL constraint exists */
2634 int *pPrimaryKey, /* OUTPUT: True if column part of PK */
2635 int *pAutoinc /* OUTPUT: True if colums is auto-increment */
2636);
2637
2638/*
drh6ed48bf2007-06-14 20:57:18 +00002639** CAPI3REF: Load An Extension
drh1e397f82006-06-08 15:28:43 +00002640**
2641** Attempt to load an SQLite extension library contained in the file
2642** zFile. The entry point is zProc. zProc may be 0 in which case the
drhc2e87a32006-06-27 15:16:14 +00002643** name of the entry point defaults to "sqlite3_extension_init".
drh1e397f82006-06-08 15:28:43 +00002644**
drh6ed48bf2007-06-14 20:57:18 +00002645** Return [SQLITE_OK] on success and [SQLITE_ERROR] if something goes wrong.
drh1e397f82006-06-08 15:28:43 +00002646**
2647** If an error occurs and pzErrMsg is not 0, then fill *pzErrMsg with
2648** error message text. The calling function should free this memory
drh6ed48bf2007-06-14 20:57:18 +00002649** by calling [sqlite3_free()].
drh1e397f82006-06-08 15:28:43 +00002650**
drh6ed48bf2007-06-14 20:57:18 +00002651** Extension loading must be enabled using [sqlite3_enable_load_extension()]
drhc2e87a32006-06-27 15:16:14 +00002652** prior to calling this API or an error will be returned.
drh1e397f82006-06-08 15:28:43 +00002653*/
2654int sqlite3_load_extension(
2655 sqlite3 *db, /* Load the extension into this database connection */
2656 const char *zFile, /* Name of the shared library containing extension */
2657 const char *zProc, /* Entry point. Derived from zFile if 0 */
2658 char **pzErrMsg /* Put error message here if not 0 */
2659);
2660
2661/*
drh6ed48bf2007-06-14 20:57:18 +00002662** CAPI3REF: Enable Or Disable Extension Loading
2663**
drhc2e87a32006-06-27 15:16:14 +00002664** So as not to open security holes in older applications that are
drh6ed48bf2007-06-14 20:57:18 +00002665** unprepared to deal with extension loading, and as a means of disabling
2666** extension loading while evaluating user-entered SQL, the following
2667** API is provided to turn the [sqlite3_load_extension()] mechanism on and
drhc2e87a32006-06-27 15:16:14 +00002668** off. It is off by default. See ticket #1863.
2669**
2670** Call this routine with onoff==1 to turn extension loading on
2671** and call it with onoff==0 to turn it back off again.
2672*/
2673int sqlite3_enable_load_extension(sqlite3 *db, int onoff);
2674
2675/*
drh6ed48bf2007-06-14 20:57:18 +00002676** CAPI3REF: Make Arrangements To Automatically Load An Extension
drh9eff6162006-06-12 21:59:13 +00002677**
drh1409be62006-08-23 20:07:20 +00002678** Register an extension entry point that is automatically invoked
drh6ed48bf2007-06-14 20:57:18 +00002679** whenever a new database connection is opened using
2680** [sqlite3_open()] or [sqlite3_open16()].
drh1409be62006-08-23 20:07:20 +00002681**
2682** This API can be invoked at program startup in order to register
2683** one or more statically linked extensions that will be available
2684** to all new database connections.
2685**
2686** Duplicate extensions are detected so calling this routine multiple
2687** times with the same extension is harmless.
2688**
2689** This routine stores a pointer to the extension in an array
2690** that is obtained from malloc(). If you run a memory leak
2691** checker on your program and it reports a leak because of this
drh6ed48bf2007-06-14 20:57:18 +00002692** array, then invoke [sqlite3_automatic_extension_reset()] prior
drh1409be62006-08-23 20:07:20 +00002693** to shutdown to free the memory.
2694**
2695** Automatic extensions apply across all threads.
drh6ed48bf2007-06-14 20:57:18 +00002696**
2697** This interface is experimental and is subject to change or
2698** removal in future releases of SQLite.
drh1409be62006-08-23 20:07:20 +00002699*/
2700int sqlite3_auto_extension(void *xEntryPoint);
2701
2702
2703/*
drh6ed48bf2007-06-14 20:57:18 +00002704** CAPI3REF: Reset Automatic Extension Loading
drh1409be62006-08-23 20:07:20 +00002705**
2706** Disable all previously registered automatic extensions. This
drh6ed48bf2007-06-14 20:57:18 +00002707** routine undoes the effect of all prior [sqlite3_automatic_extension()]
drh1409be62006-08-23 20:07:20 +00002708** calls.
2709**
2710** This call disabled automatic extensions in all threads.
drh6ed48bf2007-06-14 20:57:18 +00002711**
2712** This interface is experimental and is subject to change or
2713** removal in future releases of SQLite.
drh1409be62006-08-23 20:07:20 +00002714*/
2715void sqlite3_reset_auto_extension(void);
2716
2717
2718/*
2719****** EXPERIMENTAL - subject to change without notice **************
2720**
drh9eff6162006-06-12 21:59:13 +00002721** The interface to the virtual-table mechanism is currently considered
2722** to be experimental. The interface might change in incompatible ways.
2723** If this is a problem for you, do not use the interface at this time.
2724**
2725** When the virtual-table mechanism stablizes, we will declare the
2726** interface fixed, support it indefinitely, and remove this comment.
2727*/
2728
2729/*
2730** Structures used by the virtual table interface
drhe09daa92006-06-10 13:29:31 +00002731*/
2732typedef struct sqlite3_vtab sqlite3_vtab;
2733typedef struct sqlite3_index_info sqlite3_index_info;
2734typedef struct sqlite3_vtab_cursor sqlite3_vtab_cursor;
2735typedef struct sqlite3_module sqlite3_module;
drh9eff6162006-06-12 21:59:13 +00002736
2737/*
2738** A module is a class of virtual tables. Each module is defined
2739** by an instance of the following structure. This structure consists
2740** mostly of methods for the module.
2741*/
drhe09daa92006-06-10 13:29:31 +00002742struct sqlite3_module {
2743 int iVersion;
danielk19779da9d472006-06-14 06:58:15 +00002744 int (*xCreate)(sqlite3*, void *pAux,
drhe4102962006-09-11 00:34:22 +00002745 int argc, const char *const*argv,
drh4ca8aac2006-09-10 17:31:58 +00002746 sqlite3_vtab **ppVTab, char**);
danielk19779da9d472006-06-14 06:58:15 +00002747 int (*xConnect)(sqlite3*, void *pAux,
drhe4102962006-09-11 00:34:22 +00002748 int argc, const char *const*argv,
drh4ca8aac2006-09-10 17:31:58 +00002749 sqlite3_vtab **ppVTab, char**);
drhe09daa92006-06-10 13:29:31 +00002750 int (*xBestIndex)(sqlite3_vtab *pVTab, sqlite3_index_info*);
2751 int (*xDisconnect)(sqlite3_vtab *pVTab);
2752 int (*xDestroy)(sqlite3_vtab *pVTab);
2753 int (*xOpen)(sqlite3_vtab *pVTab, sqlite3_vtab_cursor **ppCursor);
2754 int (*xClose)(sqlite3_vtab_cursor*);
drh4be8b512006-06-13 23:51:34 +00002755 int (*xFilter)(sqlite3_vtab_cursor*, int idxNum, const char *idxStr,
drhe09daa92006-06-10 13:29:31 +00002756 int argc, sqlite3_value **argv);
2757 int (*xNext)(sqlite3_vtab_cursor*);
danielk1977a298e902006-06-22 09:53:48 +00002758 int (*xEof)(sqlite3_vtab_cursor*);
drhe09daa92006-06-10 13:29:31 +00002759 int (*xColumn)(sqlite3_vtab_cursor*, sqlite3_context*, int);
drh6d2069d2007-08-14 01:58:53 +00002760 int (*xRowid)(sqlite3_vtab_cursor*, sqlite3_int64 *pRowid);
2761 int (*xUpdate)(sqlite3_vtab *, int, sqlite3_value **, sqlite3_int64 *);
drhe09daa92006-06-10 13:29:31 +00002762 int (*xBegin)(sqlite3_vtab *pVTab);
2763 int (*xSync)(sqlite3_vtab *pVTab);
2764 int (*xCommit)(sqlite3_vtab *pVTab);
2765 int (*xRollback)(sqlite3_vtab *pVTab);
drhb7f6f682006-07-08 17:06:43 +00002766 int (*xFindFunction)(sqlite3_vtab *pVtab, int nArg, const char *zName,
drhe94b0c32006-07-08 18:09:15 +00002767 void (**pxFunc)(sqlite3_context*,int,sqlite3_value**),
2768 void **ppArg);
danielk1977182c4ba2007-06-27 15:53:34 +00002769
2770 int (*xRename)(sqlite3_vtab *pVtab, const char *zNew);
drhe09daa92006-06-10 13:29:31 +00002771};
drh9eff6162006-06-12 21:59:13 +00002772
2773/*
2774** The sqlite3_index_info structure and its substructures is used to
2775** pass information into and receive the reply from the xBestIndex
2776** method of an sqlite3_module. The fields under **Inputs** are the
2777** inputs to xBestIndex and are read-only. xBestIndex inserts its
2778** results into the **Outputs** fields.
2779**
2780** The aConstraint[] array records WHERE clause constraints of the
2781** form:
2782**
2783** column OP expr
2784**
2785** Where OP is =, <, <=, >, or >=. The particular operator is stored
2786** in aConstraint[].op. The index of the column is stored in
2787** aConstraint[].iColumn. aConstraint[].usable is TRUE if the
2788** expr on the right-hand side can be evaluated (and thus the constraint
2789** is usable) and false if it cannot.
2790**
2791** The optimizer automatically inverts terms of the form "expr OP column"
2792** and makes other simplificatinos to the WHERE clause in an attempt to
2793** get as many WHERE clause terms into the form shown above as possible.
2794** The aConstraint[] array only reports WHERE clause terms in the correct
2795** form that refer to the particular virtual table being queried.
2796**
2797** Information about the ORDER BY clause is stored in aOrderBy[].
2798** Each term of aOrderBy records a column of the ORDER BY clause.
2799**
2800** The xBestIndex method must fill aConstraintUsage[] with information
danielk19775fac9f82006-06-13 14:16:58 +00002801** about what parameters to pass to xFilter. If argvIndex>0 then
drh9eff6162006-06-12 21:59:13 +00002802** the right-hand side of the corresponding aConstraint[] is evaluated
2803** and becomes the argvIndex-th entry in argv. If aConstraintUsage[].omit
2804** is true, then the constraint is assumed to be fully handled by the
2805** virtual table and is not checked again by SQLite.
2806**
drh4be8b512006-06-13 23:51:34 +00002807** The idxNum and idxPtr values are recorded and passed into xFilter.
2808** sqlite3_free() is used to free idxPtr if needToFreeIdxPtr is true.
drh9eff6162006-06-12 21:59:13 +00002809**
2810** The orderByConsumed means that output from xFilter will occur in
2811** the correct order to satisfy the ORDER BY clause so that no separate
2812** sorting step is required.
2813**
2814** The estimatedCost value is an estimate of the cost of doing the
2815** particular lookup. A full scan of a table with N entries should have
2816** a cost of N. A binary search of a table of N entries should have a
2817** cost of approximately log(N).
2818*/
drhe09daa92006-06-10 13:29:31 +00002819struct sqlite3_index_info {
2820 /* Inputs */
drh9eff6162006-06-12 21:59:13 +00002821 const int nConstraint; /* Number of entries in aConstraint */
2822 const struct sqlite3_index_constraint {
2823 int iColumn; /* Column on left-hand side of constraint */
2824 unsigned char op; /* Constraint operator */
2825 unsigned char usable; /* True if this constraint is usable */
2826 int iTermOffset; /* Used internally - xBestIndex should ignore */
2827 } *const aConstraint; /* Table of WHERE clause constraints */
2828 const int nOrderBy; /* Number of terms in the ORDER BY clause */
2829 const struct sqlite3_index_orderby {
2830 int iColumn; /* Column number */
2831 unsigned char desc; /* True for DESC. False for ASC. */
2832 } *const aOrderBy; /* The ORDER BY clause */
drhe09daa92006-06-10 13:29:31 +00002833
2834 /* Outputs */
drh9eff6162006-06-12 21:59:13 +00002835 struct sqlite3_index_constraint_usage {
2836 int argvIndex; /* if >0, constraint is part of argv to xFilter */
2837 unsigned char omit; /* Do not code a test for this constraint */
2838 } *const aConstraintUsage;
drh4be8b512006-06-13 23:51:34 +00002839 int idxNum; /* Number used to identify the index */
2840 char *idxStr; /* String, possibly obtained from sqlite3_malloc */
2841 int needToFreeIdxStr; /* Free idxStr using sqlite3_free() if true */
drh9eff6162006-06-12 21:59:13 +00002842 int orderByConsumed; /* True if output is already ordered */
2843 double estimatedCost; /* Estimated cost of using this index */
drhe09daa92006-06-10 13:29:31 +00002844};
drh9eff6162006-06-12 21:59:13 +00002845#define SQLITE_INDEX_CONSTRAINT_EQ 2
2846#define SQLITE_INDEX_CONSTRAINT_GT 4
2847#define SQLITE_INDEX_CONSTRAINT_LE 8
2848#define SQLITE_INDEX_CONSTRAINT_LT 16
2849#define SQLITE_INDEX_CONSTRAINT_GE 32
2850#define SQLITE_INDEX_CONSTRAINT_MATCH 64
2851
2852/*
2853** This routine is used to register a new module name with an SQLite
2854** connection. Module names must be registered before creating new
2855** virtual tables on the module, or before using preexisting virtual
2856** tables of the module.
2857*/
drhb9bb7c12006-06-11 23:41:55 +00002858int sqlite3_create_module(
drh9eff6162006-06-12 21:59:13 +00002859 sqlite3 *db, /* SQLite connection to register module with */
2860 const char *zName, /* Name of the module */
danielk1977d1ab1ba2006-06-15 04:28:13 +00002861 const sqlite3_module *, /* Methods for the module */
2862 void * /* Client data for xCreate/xConnect */
drhb9bb7c12006-06-11 23:41:55 +00002863);
drhe09daa92006-06-10 13:29:31 +00002864
drh9eff6162006-06-12 21:59:13 +00002865/*
danielk1977832a58a2007-06-22 15:21:15 +00002866** This routine is identical to the sqlite3_create_module() method above,
2867** except that it allows a destructor function to be specified. It is
2868** even more experimental than the rest of the virtual tables API.
2869*/
2870int sqlite3_create_module_v2(
2871 sqlite3 *db, /* SQLite connection to register module with */
2872 const char *zName, /* Name of the module */
2873 const sqlite3_module *, /* Methods for the module */
2874 void *, /* Client data for xCreate/xConnect */
2875 void(*xDestroy)(void*) /* Module destructor function */
2876);
2877
2878/*
drh9eff6162006-06-12 21:59:13 +00002879** Every module implementation uses a subclass of the following structure
2880** to describe a particular instance of the module. Each subclass will
2881** be taylored to the specific needs of the module implementation. The
2882** purpose of this superclass is to define certain fields that are common
2883** to all module implementations.
drhfe1368e2006-09-10 17:08:29 +00002884**
2885** Virtual tables methods can set an error message by assigning a
2886** string obtained from sqlite3_mprintf() to zErrMsg. The method should
2887** take care that any prior string is freed by a call to sqlite3_free()
2888** prior to assigning a new string to zErrMsg. After the error message
2889** is delivered up to the client application, the string will be automatically
2890** freed by sqlite3_free() and the zErrMsg field will be zeroed. Note
2891** that sqlite3_mprintf() and sqlite3_free() are used on the zErrMsg field
2892** since virtual tables are commonly implemented in loadable extensions which
2893** do not have access to sqlite3MPrintf() or sqlite3Free().
drh9eff6162006-06-12 21:59:13 +00002894*/
2895struct sqlite3_vtab {
drha967e882006-06-13 01:04:52 +00002896 const sqlite3_module *pModule; /* The module for this virtual table */
danielk1977be718892006-06-23 08:05:19 +00002897 int nRef; /* Used internally */
drh4ca8aac2006-09-10 17:31:58 +00002898 char *zErrMsg; /* Error message from sqlite3_mprintf() */
drh9eff6162006-06-12 21:59:13 +00002899 /* Virtual table implementations will typically add additional fields */
2900};
2901
2902/* Every module implementation uses a subclass of the following structure
2903** to describe cursors that point into the virtual table and are used
2904** to loop through the virtual table. Cursors are created using the
2905** xOpen method of the module. Each module implementation will define
2906** the content of a cursor structure to suit its own needs.
2907**
2908** This superclass exists in order to define fields of the cursor that
2909** are common to all implementations.
2910*/
2911struct sqlite3_vtab_cursor {
2912 sqlite3_vtab *pVtab; /* Virtual table of this cursor */
2913 /* Virtual table implementations will typically add additional fields */
2914};
2915
2916/*
2917** The xCreate and xConnect methods of a module use the following API
2918** to declare the format (the names and datatypes of the columns) of
2919** the virtual tables they implement.
2920*/
danielk19777e6ebfb2006-06-12 11:24:37 +00002921int sqlite3_declare_vtab(sqlite3*, const char *zCreateTable);
drhe09daa92006-06-10 13:29:31 +00002922
2923/*
drhb7481e72006-09-16 21:45:14 +00002924** Virtual tables can provide alternative implementations of functions
2925** using the xFindFunction method. But global versions of those functions
2926** must exist in order to be overloaded.
2927**
2928** This API makes sure a global version of a function with a particular
2929** name and number of parameters exists. If no such function exists
2930** before this API is called, a new function is created. The implementation
2931** of the new function always causes an exception to be thrown. So
2932** the new function is not good for anything by itself. Its only
2933** purpose is to be a place-holder function that can be overloaded
2934** by virtual tables.
2935**
2936** This API should be considered part of the virtual table interface,
2937** which is experimental and subject to change.
2938*/
2939int sqlite3_overload_function(sqlite3*, const char *zFuncName, int nArg);
2940
2941/*
drh9eff6162006-06-12 21:59:13 +00002942** The interface to the virtual-table mechanism defined above (back up
2943** to a comment remarkably similar to this one) is currently considered
2944** to be experimental. The interface might change in incompatible ways.
2945** If this is a problem for you, do not use the interface at this time.
2946**
2947** When the virtual-table mechanism stablizes, we will declare the
2948** interface fixed, support it indefinitely, and remove this comment.
2949**
2950****** EXPERIMENTAL - subject to change without notice **************
2951*/
2952
danielk19778cbadb02007-05-03 16:31:26 +00002953/*
drh6ed48bf2007-06-14 20:57:18 +00002954** CAPI3REF: A Handle To An Open BLOB
2955**
danielk19778cbadb02007-05-03 16:31:26 +00002956** An instance of the following opaque structure is used to
drh6ed48bf2007-06-14 20:57:18 +00002957** represent an blob-handle. A blob-handle is created by
2958** [sqlite3_blob_open()] and destroyed by [sqlite3_blob_close()].
2959** The [sqlite3_blob_read()] and [sqlite3_blob_write()] interfaces
2960** can be used to read or write small subsections of the blob.
2961** The [sqltie3_blob_size()] interface returns the size of the
2962** blob in bytes.
danielk19778cbadb02007-05-03 16:31:26 +00002963*/
danielk1977b4e9af92007-05-01 17:49:49 +00002964typedef struct sqlite3_blob sqlite3_blob;
2965
danielk19778cbadb02007-05-03 16:31:26 +00002966/*
drh6ed48bf2007-06-14 20:57:18 +00002967** CAPI3REF: Open A BLOB For Incremental I/O
2968**
danielk19778cbadb02007-05-03 16:31:26 +00002969** Open a handle to the blob located in row iRow,, column zColumn,
2970** table zTable in database zDb. i.e. the same blob that would
2971** be selected by:
2972**
drh6ed48bf2007-06-14 20:57:18 +00002973** <pre>
2974** SELECT zColumn FROM zDb.zTable WHERE rowid = iRow;
2975** </pre>
danielk19778cbadb02007-05-03 16:31:26 +00002976**
2977** If the flags parameter is non-zero, the blob is opened for
2978** read and write access. If it is zero, the blob is opened for read
2979** access.
2980**
drh6ed48bf2007-06-14 20:57:18 +00002981** On success, [SQLITE_OK] is returned and the new
2982** [sqlite3_blob | blob handle] is written to *ppBlob.
2983** Otherwise an error code is returned and
danielk19778cbadb02007-05-03 16:31:26 +00002984** any value written to *ppBlob should not be used by the caller.
2985** This function sets the database-handle error code and message
drh6ed48bf2007-06-14 20:57:18 +00002986** accessible via [sqlite3_errcode()] and [sqlite3_errmsg()].
danielk19778cbadb02007-05-03 16:31:26 +00002987*/
danielk1977b4e9af92007-05-01 17:49:49 +00002988int sqlite3_blob_open(
2989 sqlite3*,
2990 const char *zDb,
2991 const char *zTable,
2992 const char *zColumn,
drh6d2069d2007-08-14 01:58:53 +00002993 sqlite3_int64 iRow,
danielk1977b4e9af92007-05-01 17:49:49 +00002994 int flags,
2995 sqlite3_blob **ppBlob
2996);
2997
danielk19778cbadb02007-05-03 16:31:26 +00002998/*
drh6ed48bf2007-06-14 20:57:18 +00002999** CAPI3REF: Close A BLOB Handle
3000**
3001** Close an open [sqlite3_blob | blob handle].
danielk19778cbadb02007-05-03 16:31:26 +00003002*/
danielk1977b4e9af92007-05-01 17:49:49 +00003003int sqlite3_blob_close(sqlite3_blob *);
3004
danielk19778cbadb02007-05-03 16:31:26 +00003005/*
drh6ed48bf2007-06-14 20:57:18 +00003006** CAPI3REF: Return The Size Of An Open BLOB
3007**
danielk19778cbadb02007-05-03 16:31:26 +00003008** Return the size in bytes of the blob accessible via the open
drh6ed48bf2007-06-14 20:57:18 +00003009** [sqlite3_blob | blob-handle] passed as an argument.
danielk19778cbadb02007-05-03 16:31:26 +00003010*/
danielk1977b4e9af92007-05-01 17:49:49 +00003011int sqlite3_blob_bytes(sqlite3_blob *);
3012
drh9eff6162006-06-12 21:59:13 +00003013/*
drh6ed48bf2007-06-14 20:57:18 +00003014** CAPI3REF: Read Data From A BLOB Incrementally
3015**
3016** This function is used to read data from an open
3017** [sqlite3_blob | blob-handle] into a caller supplied buffer.
3018** n bytes of data are copied into buffer
danielk19778cbadb02007-05-03 16:31:26 +00003019** z from the open blob, starting at offset iOffset.
3020**
drh6ed48bf2007-06-14 20:57:18 +00003021** On success, SQLITE_OK is returned. Otherwise, an
3022** [SQLITE_ERROR | SQLite error code] or an
3023** [SQLITE_IOERR_READ | extended error code] is returned.
danielk19778cbadb02007-05-03 16:31:26 +00003024*/
3025int sqlite3_blob_read(sqlite3_blob *, void *z, int n, int iOffset);
3026
3027/*
drh6ed48bf2007-06-14 20:57:18 +00003028** CAPI3REF: Write Data Into A BLOB Incrementally
3029**
3030** This function is used to write data into an open
3031** [sqlite3_blob | blob-handle] from a user supplied buffer.
3032** n bytes of data are copied from the buffer
danielk19778cbadb02007-05-03 16:31:26 +00003033** pointed to by z into the open blob, starting at offset iOffset.
3034**
drh6ed48bf2007-06-14 20:57:18 +00003035** If the [sqlite3_blob | blob-handle] passed as the first argument
3036** was not opened for writing (the flags parameter to [sqlite3_blob_open()]
3037*** was zero), this function returns [SQLITE_READONLY].
danielk19778cbadb02007-05-03 16:31:26 +00003038**
3039** This function may only modify the contents of the blob, it is
3040** not possible to increase the size of a blob using this API. If
3041** offset iOffset is less than n bytes from the end of the blob,
drh6ed48bf2007-06-14 20:57:18 +00003042** [SQLITE_ERROR] is returned and no data is written.
danielk19778cbadb02007-05-03 16:31:26 +00003043**
drh6ed48bf2007-06-14 20:57:18 +00003044** On success, SQLITE_OK is returned. Otherwise, an
3045** [SQLITE_ERROR | SQLite error code] or an
3046** [SQLITE_IOERR_READ | extended error code] is returned.
danielk19778cbadb02007-05-03 16:31:26 +00003047*/
3048int sqlite3_blob_write(sqlite3_blob *, const void *z, int n, int iOffset);
3049
drh6d2069d2007-08-14 01:58:53 +00003050
3051
danielk19778cbadb02007-05-03 16:31:26 +00003052/*
drhb37df7b2005-10-13 02:09:49 +00003053** Undo the hack that converts floating point types to integer for
3054** builds on processors without floating point support.
3055*/
3056#ifdef SQLITE_OMIT_FLOATING_POINT
3057# undef double
3058#endif
3059
drh382c0242001-10-06 16:33:02 +00003060#ifdef __cplusplus
3061} /* End of the 'extern "C"' block */
3062#endif
danielk19774adee202004-05-08 08:23:19 +00003063#endif