Annotation of win32/sql/sqlite/include/sqlite3.h, revision 1.2
1.1 misha 1: /*
2: ** 2001 September 15
3: **
4: ** The author disclaims copyright to this source code. In place of
5: ** a legal notice, here is a blessing:
6: **
7: ** 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.
10: **
11: *************************************************************************
12: ** This header file defines the interface that the SQLite library
1.2 ! misha 13: ** 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.
! 17: **
! 18: ** 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.
1.1 misha 32: **
1.2 ! misha 33: ** @(#) $Id: sqlite.h.in,v 1.266 2007/10/03 20:15:28 drh Exp $
1.1 misha 34: */
35: #ifndef _SQLITE3_H_
36: #define _SQLITE3_H_
37: #include <stdarg.h> /* Needed for the definition of va_list */
38:
39: /*
40: ** Make sure we can call this stuff from C++.
41: */
42: #ifdef __cplusplus
43: extern "C" {
44: #endif
45:
1.2 ! misha 46:
! 47: /*
! 48: ** Add the ability to override 'extern'
! 49: */
! 50: #ifndef SQLITE_EXTERN
! 51: # define SQLITE_EXTERN extern
! 52: #endif
! 53:
1.1 misha 54: /*
1.2 ! misha 55: ** Make sure these symbols where not defined by some previous header
! 56: ** file.
1.1 misha 57: */
58: #ifdef SQLITE_VERSION
59: # undef SQLITE_VERSION
1.2 ! misha 60: #endif
! 61: #ifdef SQLITE_VERSION_NUMBER
! 62: # undef SQLITE_VERSION_NUMBER
1.1 misha 63: #endif
64:
65: /*
1.2 ! misha 66: ** 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
! 73: ** X is the major version number, Y is the minor version number and Z
! 74: ** is the release number. The X.Y.Z might be followed by "alpha" or "beta".
! 75: ** For example "3.1.1beta".
! 76: **
! 77: ** 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: **
! 84: ** The SQLITE_VERSION_NUMBER is an integer with the value
! 85: ** (X*1000000 + Y*1000 + Z). For example, for version "3.1.1beta",
! 86: ** 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).
! 89: **
! 90: ** See also: [sqlite3_libversion()] and [sqlite3_libversion_number()].
! 91: */
! 92: #define SQLITE_VERSION "3.5.1"
! 93: #define SQLITE_VERSION_NUMBER 3005001
! 94:
! 95: /*
! 96: ** 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.
1.1 misha 110: */
1.2 ! misha 111: SQLITE_EXTERN const char sqlite3_version[];
1.1 misha 112: const char *sqlite3_libversion(void);
1.2 ! misha 113: int sqlite3_libversion_number(void);
1.1 misha 114:
115: /*
1.2 ! misha 116: ** CAPI3REF: Test To See If The Library Is Threadsafe
! 117: **
! 118: ** This routine returns TRUE (nonzero) if SQLite was compiled with
! 119: ** all of its mutexes enabled and is thus threadsafe. It returns
! 120: ** zero if the particular build is for single-threaded operation
! 121: ** only.
! 122: **
! 123: ** Really all this routine does is return true if SQLite was compiled
! 124: ** with the -DSQLITE_THREADSAFE=1 option and false if
! 125: ** compiled with -DSQLITE_THREADSAFE=0. If SQLite uses an
! 126: ** application-defined mutex subsystem, malloc subsystem, collating
! 127: ** sequence, VFS, SQL function, progress callback, commit hook,
! 128: ** extension, or other accessories and these add-ons are not
! 129: ** threadsafe, then clearly the combination will not be threadsafe
! 130: ** either. Hence, this routine never reports that the library
! 131: ** is guaranteed to be threadsafe, only when it is guaranteed not
! 132: ** to be.
! 133: **
! 134: ** This is an experimental API and may go away or change in future
! 135: ** releases.
! 136: */
! 137: int sqlite3_threadsafe(void);
! 138:
! 139: /*
! 140: ** CAPI3REF: Database Connection Handle
! 141: **
! 142: ** Each open SQLite database is represented by pointer to an instance of the
! 143: ** opaque structure named "sqlite3". It is useful to think of an sqlite3
! 144: ** pointer as an object. The [sqlite3_open()], [sqlite3_open16()], and
! 145: ** [sqlite3_open_v2()] interfaces are its constructors
! 146: ** and [sqlite3_close()] is its destructor. There are many other interfaces
! 147: ** (such as [sqlite3_prepare_v2()], [sqlite3_create_function()], and
! 148: ** [sqlite3_busy_timeout()] to name but three) that are methods on this
! 149: ** object.
1.1 misha 150: */
151: typedef struct sqlite3 sqlite3;
152:
153:
154: /*
1.2 ! misha 155: ** CAPI3REF: 64-Bit Integer Types
! 156: **
1.1 misha 157: ** Some compilers do not support the "long long" datatype. So we have
1.2 ! misha 158: ** to do compiler-specific typedefs for 64-bit signed and unsigned integers.
! 159: **
! 160: ** Many SQLite interface functions require a 64-bit integer arguments.
! 161: ** Those interfaces are declared using this typedef.
1.1 misha 162: */
1.2 ! misha 163: #ifdef SQLITE_INT64_TYPE
! 164: typedef SQLITE_INT64_TYPE sqlite_int64;
! 165: typedef unsigned SQLITE_INT64_TYPE sqlite_uint64;
! 166: #elif defined(_MSC_VER) || defined(__BORLANDC__)
1.1 misha 167: typedef __int64 sqlite_int64;
168: typedef unsigned __int64 sqlite_uint64;
169: #else
170: typedef long long int sqlite_int64;
171: typedef unsigned long long int sqlite_uint64;
172: #endif
1.2 ! misha 173: typedef sqlite_int64 sqlite3_int64;
! 174: typedef sqlite_uint64 sqlite3_uint64;
1.1 misha 175:
1.2 ! misha 176: /*
! 177: ** If compiling for a processor that lacks floating point support,
! 178: ** substitute integer for floating-point
! 179: */
! 180: #ifdef SQLITE_OMIT_FLOATING_POINT
! 181: # define double sqlite3_int64
! 182: #endif
1.1 misha 183:
184: /*
1.2 ! misha 185: ** CAPI3REF: Closing A Database Connection
1.1 misha 186: **
187: ** Call this function with a pointer to a structure that was previously
1.2 ! misha 188: ** returned from [sqlite3_open()], [sqlite3_open16()], or
! 189: ** [sqlite3_open_v2()] and the corresponding database will by
! 190: ** closed.
! 191: **
! 192: ** All SQL statements prepared using [sqlite3_prepare_v2()] or
! 193: ** [sqlite3_prepare16_v2()] must be destroyed using [sqlite3_finalize()]
! 194: ** before this routine is called. Otherwise, SQLITE_BUSY is returned and the
! 195: ** database connection remains open.
1.1 misha 196: **
1.2 ! misha 197: ** Passing this routine a database connection that has already been
! 198: ** closed results in undefined behavior. If other interfaces that
! 199: ** reference the same database connection are pending (either in the
! 200: ** same thread or in different threads) when this routine is called,
! 201: ** then the behavior is undefined and is almost certainly undesirable.
1.1 misha 202: */
203: int sqlite3_close(sqlite3 *);
204:
205: /*
206: ** The type for a callback function.
1.2 ! misha 207: ** This is legacy and deprecated. It is included for historical
! 208: ** compatibility and is not documented.
1.1 misha 209: */
210: typedef int (*sqlite3_callback)(void*,int,char**, char**);
211:
212: /*
1.2 ! misha 213: ** CAPI3REF: One-Step Query Execution Interface
! 214: **
! 215: ** This interface is used to do a one-time evaluatation of zero
! 216: ** or more SQL statements. UTF-8 text of the SQL statements to
! 217: ** be evaluted is passed in as the second parameter. The statements
! 218: ** are prepared one by one using [sqlite3_prepare()], evaluated
! 219: ** using [sqlite3_step()], then destroyed using [sqlite3_finalize()].
1.1 misha 220: **
221: ** If one or more of the SQL statements are queries, then
222: ** the callback function specified by the 3rd parameter is
223: ** invoked once for each row of the query result. This callback
224: ** should normally return 0. If the callback returns a non-zero
225: ** value then the query is aborted, all subsequent SQL statements
1.2 ! misha 226: ** are skipped and the sqlite3_exec() function returns the [SQLITE_ABORT].
1.1 misha 227: **
1.2 ! misha 228: ** The 4th parameter to this interface is an arbitrary pointer that is
! 229: ** passed through to the callback function as its first parameter.
1.1 misha 230: **
231: ** The 2nd parameter to the callback function is the number of
232: ** columns in the query result. The 3rd parameter to the callback
1.2 ! misha 233: ** is an array of strings holding the values for each column
! 234: ** as extracted using [sqlite3_column_text()].
! 235: ** The 4th parameter to the callback is an array of strings
! 236: ** obtained using [sqlite3_column_name()] and holding
1.1 misha 237: ** the names of each column.
238: **
239: ** The callback function may be NULL, even for queries. A NULL
240: ** callback is not an error. It just means that no callback
241: ** will be invoked.
242: **
243: ** If an error occurs while parsing or evaluating the SQL (but
244: ** not while executing the callback) then an appropriate error
1.2 ! misha 245: ** message is written into memory obtained from [sqlite3_malloc()] and
1.1 misha 246: ** *errmsg is made to point to that message. The calling function
1.2 ! misha 247: ** is responsible for freeing the memory using [sqlite3_free()].
! 248: ** If errmsg==NULL, then no error message is ever written.
1.1 misha 249: **
250: ** The return value is is SQLITE_OK if there are no errors and
1.2 ! misha 251: ** some other [SQLITE_OK | return code] if there is an error.
! 252: ** The particular return value depends on the type of error.
1.1 misha 253: **
254: */
255: int sqlite3_exec(
1.2 ! misha 256: sqlite3*, /* An open database */
! 257: const char *sql, /* SQL to be evaluted */
! 258: int (*callback)(void*,int,char**,char**), /* Callback function */
! 259: void *, /* 1st argument to callback */
! 260: char **errmsg /* Error msg written here */
1.1 misha 261: );
262:
263: /*
1.2 ! misha 264: ** CAPI3REF: Result Codes
! 265: ** KEYWORDS: SQLITE_OK
! 266: **
! 267: ** Many SQLite functions return an integer result code from the set shown
! 268: ** above in order to indicates success or failure.
! 269: **
! 270: ** The result codes above are the only ones returned by SQLite in its
! 271: ** default configuration. However, the [sqlite3_extended_result_codes()]
! 272: ** API can be used to set a database connectoin to return more detailed
! 273: ** result codes.
! 274: **
! 275: ** See also: [SQLITE_IOERR_READ | extended result codes]
! 276: **
1.1 misha 277: */
278: #define SQLITE_OK 0 /* Successful result */
1.2 ! misha 279: /* beginning-of-error-codes */
1.1 misha 280: #define SQLITE_ERROR 1 /* SQL error or missing database */
1.2 ! misha 281: #define SQLITE_INTERNAL 2 /* NOT USED. Internal logic error in SQLite */
1.1 misha 282: #define SQLITE_PERM 3 /* Access permission denied */
283: #define SQLITE_ABORT 4 /* Callback routine requested an abort */
284: #define SQLITE_BUSY 5 /* The database file is locked */
285: #define SQLITE_LOCKED 6 /* A table in the database is locked */
286: #define SQLITE_NOMEM 7 /* A malloc() failed */
287: #define SQLITE_READONLY 8 /* Attempt to write a readonly database */
288: #define SQLITE_INTERRUPT 9 /* Operation terminated by sqlite3_interrupt()*/
289: #define SQLITE_IOERR 10 /* Some kind of disk I/O error occurred */
290: #define SQLITE_CORRUPT 11 /* The database disk image is malformed */
1.2 ! misha 291: #define SQLITE_NOTFOUND 12 /* NOT USED. Table or record not found */
1.1 misha 292: #define SQLITE_FULL 13 /* Insertion failed because database is full */
293: #define SQLITE_CANTOPEN 14 /* Unable to open the database file */
1.2 ! misha 294: #define SQLITE_PROTOCOL 15 /* NOT USED. Database lock protocol error */
1.1 misha 295: #define SQLITE_EMPTY 16 /* Database is empty */
296: #define SQLITE_SCHEMA 17 /* The database schema changed */
1.2 ! misha 297: #define SQLITE_TOOBIG 18 /* String or BLOB exceeds size limit */
! 298: #define SQLITE_CONSTRAINT 19 /* Abort due to constraint violation */
1.1 misha 299: #define SQLITE_MISMATCH 20 /* Data type mismatch */
300: #define SQLITE_MISUSE 21 /* Library used incorrectly */
301: #define SQLITE_NOLFS 22 /* Uses OS features not supported on host */
302: #define SQLITE_AUTH 23 /* Authorization denied */
303: #define SQLITE_FORMAT 24 /* Auxiliary database format error */
304: #define SQLITE_RANGE 25 /* 2nd parameter to sqlite3_bind out of range */
305: #define SQLITE_NOTADB 26 /* File opened that is not a database file */
306: #define SQLITE_ROW 100 /* sqlite3_step() has another row ready */
307: #define SQLITE_DONE 101 /* sqlite3_step() has finished executing */
1.2 ! misha 308: /* end-of-error-codes */
1.1 misha 309:
310: /*
1.2 ! misha 311: ** CAPI3REF: Extended Result Codes
1.1 misha 312: **
1.2 ! misha 313: ** In its default configuration, SQLite API routines return one of 26 integer
! 314: ** result codes described at result-codes. However, experience has shown that
! 315: ** many of these result codes are too course-grained. They do not provide as
! 316: ** much information about problems as users might like. In an effort to
! 317: ** address this, newer versions of SQLite (version 3.3.8 and later) include
! 318: ** support for additional result codes that provide more detailed information
! 319: ** about errors. The extended result codes are enabled (or disabled) for
! 320: ** each database
! 321: ** connection using the [sqlite3_extended_result_codes()] API.
! 322: **
! 323: ** Some of the available extended result codes are listed above.
! 324: ** We expect the number of extended result codes will be expand
! 325: ** over time. Software that uses extended result codes should expect
! 326: ** to see new result codes in future releases of SQLite.
! 327: **
! 328: ** The symbolic name for an extended result code always contains a related
! 329: ** primary result code as a prefix. Primary result codes contain a single
! 330: ** "_" character. Extended result codes contain two or more "_" characters.
! 331: ** The numeric value of an extended result code can be converted to its
! 332: ** corresponding primary result code by masking off the lower 8 bytes.
! 333: **
! 334: ** The SQLITE_OK result code will never be extended. It will always
! 335: ** be exactly zero.
! 336: */
! 337: #define SQLITE_IOERR_READ (SQLITE_IOERR | (1<<8))
! 338: #define SQLITE_IOERR_SHORT_READ (SQLITE_IOERR | (2<<8))
! 339: #define SQLITE_IOERR_WRITE (SQLITE_IOERR | (3<<8))
! 340: #define SQLITE_IOERR_FSYNC (SQLITE_IOERR | (4<<8))
! 341: #define SQLITE_IOERR_DIR_FSYNC (SQLITE_IOERR | (5<<8))
! 342: #define SQLITE_IOERR_TRUNCATE (SQLITE_IOERR | (6<<8))
! 343: #define SQLITE_IOERR_FSTAT (SQLITE_IOERR | (7<<8))
! 344: #define SQLITE_IOERR_UNLOCK (SQLITE_IOERR | (8<<8))
! 345: #define SQLITE_IOERR_RDLOCK (SQLITE_IOERR | (9<<8))
! 346: #define SQLITE_IOERR_DELETE (SQLITE_IOERR | (10<<8))
! 347: #define SQLITE_IOERR_BLOCKED (SQLITE_IOERR | (11<<8))
! 348: #define SQLITE_IOERR_NOMEM (SQLITE_IOERR | (12<<8))
! 349:
! 350: /*
! 351: ** CAPI3REF: Flags For File Open Operations
! 352: **
! 353: ** Combination of the following bit values are used as the
! 354: ** third argument to the [sqlite3_open_v2()] interface and
! 355: ** as fourth argument to the xOpen method of the
! 356: ** [sqlite3_vfs] object.
! 357: **
! 358: */
! 359: #define SQLITE_OPEN_READONLY 0x00000001
! 360: #define SQLITE_OPEN_READWRITE 0x00000002
! 361: #define SQLITE_OPEN_CREATE 0x00000004
! 362: #define SQLITE_OPEN_DELETEONCLOSE 0x00000008
! 363: #define SQLITE_OPEN_EXCLUSIVE 0x00000010
! 364: #define SQLITE_OPEN_MAIN_DB 0x00000100
! 365: #define SQLITE_OPEN_TEMP_DB 0x00000200
! 366: #define SQLITE_OPEN_TRANSIENT_DB 0x00000400
! 367: #define SQLITE_OPEN_MAIN_JOURNAL 0x00000800
! 368: #define SQLITE_OPEN_TEMP_JOURNAL 0x00001000
! 369: #define SQLITE_OPEN_SUBJOURNAL 0x00002000
! 370: #define SQLITE_OPEN_MASTER_JOURNAL 0x00004000
! 371:
! 372: /*
! 373: ** CAPI3REF: Device Characteristics
! 374: **
! 375: ** The xDeviceCapabilities method of the [sqlite3_io_methods]
! 376: ** object returns an integer which is a vector of the following
! 377: ** bit values expressing I/O characteristics of the mass storage
! 378: ** device that holds the file that the [sqlite3_io_methods]
! 379: ** refers to.
! 380: **
! 381: ** The SQLITE_IOCAP_ATOMIC property means that all writes of
! 382: ** any size are atomic. The SQLITE_IOCAP_ATOMICnnn values
! 383: ** mean that writes of blocks that are nnn bytes in size and
! 384: ** are aligned to an address which is an integer multiple of
! 385: ** nnn are atomic. The SQLITE_IOCAP_SAFE_APPEND value means
! 386: ** that when data is appended to a file, the data is appended
! 387: ** first then the size of the file is extended, never the other
! 388: ** way around. The SQLITE_IOCAP_SEQUENTIAL property means that
! 389: ** information is written to disk in the same order as calls
! 390: ** to xWrite().
! 391: */
! 392: #define SQLITE_IOCAP_ATOMIC 0x00000001
! 393: #define SQLITE_IOCAP_ATOMIC512 0x00000002
! 394: #define SQLITE_IOCAP_ATOMIC1K 0x00000004
! 395: #define SQLITE_IOCAP_ATOMIC2K 0x00000008
! 396: #define SQLITE_IOCAP_ATOMIC4K 0x00000010
! 397: #define SQLITE_IOCAP_ATOMIC8K 0x00000020
! 398: #define SQLITE_IOCAP_ATOMIC16K 0x00000040
! 399: #define SQLITE_IOCAP_ATOMIC32K 0x00000080
! 400: #define SQLITE_IOCAP_ATOMIC64K 0x00000100
! 401: #define SQLITE_IOCAP_SAFE_APPEND 0x00000200
! 402: #define SQLITE_IOCAP_SEQUENTIAL 0x00000400
! 403:
! 404: /*
! 405: ** CAPI3REF: File Locking Levels
! 406: **
! 407: ** SQLite uses one of the following integer values as the second
! 408: ** argument to calls it makes to the xLock() and xUnlock() methods
! 409: ** of an [sqlite3_io_methods] object.
! 410: */
! 411: #define SQLITE_LOCK_NONE 0
! 412: #define SQLITE_LOCK_SHARED 1
! 413: #define SQLITE_LOCK_RESERVED 2
! 414: #define SQLITE_LOCK_PENDING 3
! 415: #define SQLITE_LOCK_EXCLUSIVE 4
! 416:
! 417: /*
! 418: ** CAPI3REF: Synchronization Type Flags
! 419: **
! 420: ** When SQLite invokes the xSync() method of an [sqlite3_io_methods]
! 421: ** object it uses a combination of the following integer values as
! 422: ** the second argument.
! 423: **
! 424: ** When the SQLITE_SYNC_DATAONLY flag is used, it means that the
! 425: ** sync operation only needs to flush data to mass storage. Inode
! 426: ** information need not be flushed. The SQLITE_SYNC_NORMAL means
! 427: ** to use normal fsync() semantics. The SQLITE_SYNC_FULL flag means
! 428: ** to use Mac OS-X style fullsync instead of fsync().
! 429: */
! 430: #define SQLITE_SYNC_NORMAL 0x00002
! 431: #define SQLITE_SYNC_FULL 0x00003
! 432: #define SQLITE_SYNC_DATAONLY 0x00010
! 433:
! 434:
! 435: /*
! 436: ** CAPI3REF: OS Interface Open File Handle
! 437: **
! 438: ** An [sqlite3_file] object represents an open file in the OS
! 439: ** interface layer. Individual OS interface implementations will
! 440: ** want to subclass this object by appending additional fields
! 441: ** for their own use. The pMethods entry is a pointer to an
! 442: ** [sqlite3_io_methods] object that defines methods for performing
! 443: ** I/O operations on the open file.
! 444: */
! 445: typedef struct sqlite3_file sqlite3_file;
! 446: struct sqlite3_file {
! 447: const struct sqlite3_io_methods *pMethods; /* Methods for an open file */
! 448: };
! 449:
! 450: /*
! 451: ** CAPI3REF: OS Interface File Virtual Methods Object
! 452: **
! 453: ** Every file opened by the [sqlite3_vfs] xOpen method contains a pointer to
! 454: ** an instance of the this object. This object defines the
! 455: ** methods used to perform various operations against the open file.
! 456: **
! 457: ** The flags argument to xSync may be one of [SQLITE_SYNC_NORMAL] or
! 458: ** [SQLITE_SYNC_FULL]. The first choice is the normal fsync().
! 459: * The second choice is an
! 460: ** OS-X style fullsync. The SQLITE_SYNC_DATA flag may be ORed in to
! 461: ** indicate that only the data of the file and not its inode needs to be
! 462: ** synced.
! 463: **
! 464: ** The integer values to xLock() and xUnlock() are one of
! 465: ** <ul>
! 466: ** <li> [SQLITE_LOCK_NONE],
! 467: ** <li> [SQLITE_LOCK_SHARED],
! 468: ** <li> [SQLITE_LOCK_RESERVED],
! 469: ** <li> [SQLITE_LOCK_PENDING], or
! 470: ** <li> [SQLITE_LOCK_EXCLUSIVE].
! 471: ** </ul>
! 472: ** xLock() increases the lock. xUnlock() decreases the lock.
! 473: ** The xCheckReservedLock() method looks
! 474: ** to see if any database connection, either in this
! 475: ** process or in some other process, is holding an RESERVED,
! 476: ** PENDING, or EXCLUSIVE lock on the file. It returns true
! 477: ** if such a lock exists and false if not.
! 478: **
! 479: ** The xFileControl() method is a generic interface that allows custom
! 480: ** VFS implementations to directly control an open file using the
! 481: ** [sqlite3_file_control()] interface. The second "op" argument
! 482: ** is an integer opcode. The third
! 483: ** argument is a generic pointer which is intended to be a pointer
! 484: ** to a structure that may contain arguments or space in which to
! 485: ** write return values. Potential uses for xFileControl() might be
! 486: ** functions to enable blocking locks with timeouts, to change the
! 487: ** locking strategy (for example to use dot-file locks), to inquire
! 488: ** about the status of a lock, or to break stale locks. The SQLite
! 489: ** core reserves opcodes less than 100 for its own use.
! 490: ** A [SQLITE_FCNTL_LOCKSTATE | list of opcodes] less than 100 is available.
! 491: ** Applications that define a custom xFileControl method should use opcodes
! 492: ** greater than 100 to avoid conflicts.
! 493: **
! 494: ** The xSectorSize() method returns the sector size of the
! 495: ** device that underlies the file. The sector size is the
! 496: ** minimum write that can be performed without disturbing
! 497: ** other bytes in the file. The xDeviceCharacteristics()
! 498: ** method returns a bit vector describing behaviors of the
! 499: ** underlying device:
! 500: **
! 501: ** <ul>
! 502: ** <li> [SQLITE_IOCAP_ATOMIC]
! 503: ** <li> [SQLITE_IOCAP_ATOMIC512]
! 504: ** <li> [SQLITE_IOCAP_ATOMIC1K]
! 505: ** <li> [SQLITE_IOCAP_ATOMIC2K]
! 506: ** <li> [SQLITE_IOCAP_ATOMIC4K]
! 507: ** <li> [SQLITE_IOCAP_ATOMIC8K]
! 508: ** <li> [SQLITE_IOCAP_ATOMIC16K]
! 509: ** <li> [SQLITE_IOCAP_ATOMIC32K]
! 510: ** <li> [SQLITE_IOCAP_ATOMIC64K]
! 511: ** <li> [SQLITE_IOCAP_SAFE_APPEND]
! 512: ** <li> [SQLITE_IOCAP_SEQUENTIAL]
! 513: ** </ul>
! 514: **
! 515: ** The SQLITE_IOCAP_ATOMIC property means that all writes of
! 516: ** any size are atomic. The SQLITE_IOCAP_ATOMICnnn values
! 517: ** mean that writes of blocks that are nnn bytes in size and
! 518: ** are aligned to an address which is an integer multiple of
! 519: ** nnn are atomic. The SQLITE_IOCAP_SAFE_APPEND value means
! 520: ** that when data is appended to a file, the data is appended
! 521: ** first then the size of the file is extended, never the other
! 522: ** way around. The SQLITE_IOCAP_SEQUENTIAL property means that
! 523: ** information is written to disk in the same order as calls
! 524: ** to xWrite().
! 525: */
! 526: typedef struct sqlite3_io_methods sqlite3_io_methods;
! 527: struct sqlite3_io_methods {
! 528: int iVersion;
! 529: int (*xClose)(sqlite3_file*);
! 530: int (*xRead)(sqlite3_file*, void*, int iAmt, sqlite3_int64 iOfst);
! 531: int (*xWrite)(sqlite3_file*, const void*, int iAmt, sqlite3_int64 iOfst);
! 532: int (*xTruncate)(sqlite3_file*, sqlite3_int64 size);
! 533: int (*xSync)(sqlite3_file*, int flags);
! 534: int (*xFileSize)(sqlite3_file*, sqlite3_int64 *pSize);
! 535: int (*xLock)(sqlite3_file*, int);
! 536: int (*xUnlock)(sqlite3_file*, int);
! 537: int (*xCheckReservedLock)(sqlite3_file*);
! 538: int (*xFileControl)(sqlite3_file*, int op, void *pArg);
! 539: int (*xSectorSize)(sqlite3_file*);
! 540: int (*xDeviceCharacteristics)(sqlite3_file*);
! 541: /* Additional methods may be added in future releases */
! 542: };
! 543:
! 544: /*
! 545: ** CAPI3REF: Standard File Control Opcodes
! 546: **
! 547: ** These integer constants are opcodes for the xFileControl method
! 548: ** of the [sqlite3_io_methods] object and to the [sqlite3_file_control()]
! 549: ** interface.
! 550: **
! 551: ** The [SQLITE_FCNTL_LOCKSTATE] opcode is used for debugging. This
! 552: ** opcode cases the xFileControl method to write the current state of
! 553: ** the lock (one of [SQLITE_LOCK_NONE], [SQLITE_LOCK_SHARED],
! 554: ** [SQLITE_LOCK_RESERVED], [SQLITE_LOCK_PENDING], or [SQLITE_LOCK_EXCLUSIVE])
! 555: ** into an integer that the pArg argument points to. This capability
! 556: ** is used during testing and only needs to be supported when SQLITE_TEST
! 557: ** is defined.
! 558: */
! 559: #define SQLITE_FCNTL_LOCKSTATE 1
! 560:
! 561: /*
! 562: ** CAPI3REF: Mutex Handle
! 563: **
! 564: ** The mutex module within SQLite defines [sqlite3_mutex] to be an
! 565: ** abstract type for a mutex object. The SQLite core never looks
! 566: ** at the internal representation of an [sqlite3_mutex]. It only
! 567: ** deals with pointers to the [sqlite3_mutex] object.
! 568: **
! 569: ** Mutexes are created using [sqlite3_mutex_alloc()].
! 570: */
! 571: typedef struct sqlite3_mutex sqlite3_mutex;
! 572:
! 573: /*
! 574: ** CAPI3REF: OS Interface Object
! 575: **
! 576: ** An instance of this object defines the interface between the
! 577: ** SQLite core and the underlying operating system. The "vfs"
! 578: ** in the name of the object stands for "virtual file system".
! 579: **
! 580: ** The iVersion field is initially 1 but may be larger for future
! 581: ** versions of SQLite. Additional fields may be appended to this
! 582: ** object when the iVersion value is increased.
! 583: **
! 584: ** The szOsFile field is the size of the subclassed [sqlite3_file]
! 585: ** structure used by this VFS. mxPathname is the maximum length of
! 586: ** a pathname in this VFS.
! 587: **
! 588: ** Registered vfs modules are kept on a linked list formed by
! 589: ** the pNext pointer. The [sqlite3_vfs_register()]
! 590: ** and [sqlite3_vfs_unregister()] interfaces manage this list
! 591: ** in a thread-safe way. The [sqlite3_vfs_find()] interface
! 592: ** searches the list.
! 593: **
! 594: ** The pNext field is the only fields in the sqlite3_vfs
! 595: ** structure that SQLite will ever modify. SQLite will only access
! 596: ** or modify this field while holding a particular static mutex.
! 597: ** The application should never modify anything within the sqlite3_vfs
! 598: ** object once the object has been registered.
! 599: **
! 600: ** The zName field holds the name of the VFS module. The name must
! 601: ** be unique across all VFS modules.
! 602: **
! 603: ** SQLite will guarantee that the zFilename string passed to
! 604: ** xOpen() is a full pathname as generated by xFullPathname() and
! 605: ** that the string will be valid and unchanged until xClose() is
! 606: ** called. So the [sqlite3_file] can store a pointer to the
! 607: ** filename if it needs to remember the filename for some reason.
! 608: **
! 609: ** The flags argument to xOpen() is a copy of the flags argument
! 610: ** to [sqlite3_open_v2()]. If [sqlite3_open()] or [sqlite3_open16()]
! 611: ** is used, then flags is [SQLITE_OPEN_READWRITE] | [SQLITE_OPEN_CREATE].
! 612: ** If xOpen() opens a file read-only then it sets *pOutFlags to
! 613: ** include [SQLITE_OPEN_READONLY]. Other bits in *pOutFlags may be
! 614: ** set.
! 615: **
! 616: ** SQLite will also add one of the following flags to the xOpen()
! 617: ** call, depending on the object being opened:
! 618: **
! 619: ** <ul>
! 620: ** <li> [SQLITE_OPEN_MAIN_DB]
! 621: ** <li> [SQLITE_OPEN_MAIN_JOURNAL]
! 622: ** <li> [SQLITE_OPEN_TEMP_DB]
! 623: ** <li> [SQLITE_OPEN_TEMP_JOURNAL]
! 624: ** <li> [SQLITE_OPEN_TRANSIENT_DB]
! 625: ** <li> [SQLITE_OPEN_SUBJOURNAL]
! 626: ** <li> [SQLITE_OPEN_MASTER_JOURNAL]
! 627: ** </ul>
! 628: **
! 629: ** The file I/O implementation can use the object type flags to
! 630: ** changes the way it deals with files. For example, an application
! 631: ** that does not care about crash recovery or rollback, might make
! 632: ** the open of a journal file a no-op. Writes to this journal are
! 633: ** also a no-op. Any attempt to read the journal return SQLITE_IOERR.
! 634: ** Or the implementation might recognize the a database file will
! 635: ** be doing page-aligned sector reads and writes in a random order
! 636: ** and set up its I/O subsystem accordingly.
! 637: **
! 638: ** SQLite might also add one of the following flags to the xOpen
! 639: ** method:
! 640: **
! 641: ** <ul>
! 642: ** <li> [SQLITE_OPEN_DELETEONCLOSE]
! 643: ** <li> [SQLITE_OPEN_EXCLUSIVE]
! 644: ** </ul>
! 645: **
! 646: ** The [SQLITE_OPEN_DELETEONCLOSE] flag means the file should be
! 647: ** deleted when it is closed. This will always be set for TEMP
! 648: ** databases and journals and for subjournals. The
! 649: ** [SQLITE_OPEN_EXCLUSIVE] flag means the file should be opened
! 650: ** for exclusive access. This flag is set for all files except
! 651: ** for the main database file.
! 652: **
! 653: ** Space to hold the [sqlite3_file] structure passed as the third
! 654: ** argument to xOpen is allocated by caller (the SQLite core).
! 655: ** szOsFile bytes are allocated for this object. The xOpen method
! 656: ** fills in the allocated space.
! 657: **
! 658: ** The flags argument to xAccess() may be [SQLITE_ACCESS_EXISTS]
! 659: ** to test for the existance of a file,
! 660: ** or [SQLITE_ACCESS_READWRITE] to test to see
! 661: ** if a file is readable and writable, or [SQLITE_ACCESS_READ]
! 662: ** to test to see if a file is at least readable. The file can be a
! 663: ** directory.
! 664: **
! 665: ** SQLite will always allocate at least mxPathname+1 byte for
! 666: ** the output buffers for xGetTempname and xFullPathname. The exact
! 667: ** size of the output buffer is also passed as a parameter to both
! 668: ** methods. If the output buffer is not large enough, SQLITE_CANTOPEN
! 669: ** should be returned. As this is handled as a fatal error by SQLite,
! 670: ** vfs implementations should endevour to prevent this by setting
! 671: ** mxPathname to a sufficiently large value.
! 672: **
! 673: ** The xRandomness(), xSleep(), and xCurrentTime() interfaces
! 674: ** are not strictly a part of the filesystem, but they are
! 675: ** included in the VFS structure for completeness.
! 676: ** The xRandomness() function attempts to return nBytes bytes
! 677: ** of good-quality randomness into zOut. The return value is
! 678: ** the actual number of bytes of randomness obtained. The
! 679: ** xSleep() method cause the calling thread to sleep for at
! 680: ** least the number of microseconds given. The xCurrentTime()
! 681: ** method returns a Julian Day Number for the current date and
! 682: ** time.
! 683: */
! 684: typedef struct sqlite3_vfs sqlite3_vfs;
! 685: struct sqlite3_vfs {
! 686: int iVersion; /* Structure version number */
! 687: int szOsFile; /* Size of subclassed sqlite3_file */
! 688: int mxPathname; /* Maximum file pathname length */
! 689: sqlite3_vfs *pNext; /* Next registered VFS */
! 690: const char *zName; /* Name of this virtual file system */
! 691: void *pAppData; /* Pointer to application-specific data */
! 692: int (*xOpen)(sqlite3_vfs*, const char *zName, sqlite3_file*,
! 693: int flags, int *pOutFlags);
! 694: int (*xDelete)(sqlite3_vfs*, const char *zName, int syncDir);
! 695: int (*xAccess)(sqlite3_vfs*, const char *zName, int flags);
! 696: int (*xGetTempname)(sqlite3_vfs*, int nOut, char *zOut);
! 697: int (*xFullPathname)(sqlite3_vfs*, const char *zName, int nOut, char *zOut);
! 698: void *(*xDlOpen)(sqlite3_vfs*, const char *zFilename);
! 699: void (*xDlError)(sqlite3_vfs*, int nByte, char *zErrMsg);
! 700: void *(*xDlSym)(sqlite3_vfs*,void*, const char *zSymbol);
! 701: void (*xDlClose)(sqlite3_vfs*, void*);
! 702: int (*xRandomness)(sqlite3_vfs*, int nByte, char *zOut);
! 703: int (*xSleep)(sqlite3_vfs*, int microseconds);
! 704: int (*xCurrentTime)(sqlite3_vfs*, double*);
! 705: /* New fields may be appended in figure versions. The iVersion
! 706: ** value will increment whenever this happens. */
! 707: };
! 708:
! 709: /*
! 710: ** CAPI3REF: Flags for the xAccess VFS method
! 711: **
! 712: ** These integer constants can be used as the third parameter to
! 713: ** the xAccess method of an [sqlite3_vfs] object. They determine
! 714: ** the kind of what kind of permissions the xAccess method is
! 715: ** looking for. With SQLITE_ACCESS_EXISTS, the xAccess method
! 716: ** simply checks to see if the file exists. With SQLITE_ACCESS_READWRITE,
! 717: ** the xAccess method checks to see if the file is both readable
! 718: ** and writable. With SQLITE_ACCESS_READ the xAccess method
! 719: ** checks to see if the file is readable.
! 720: */
! 721: #define SQLITE_ACCESS_EXISTS 0
! 722: #define SQLITE_ACCESS_READWRITE 1
! 723: #define SQLITE_ACCESS_READ 2
! 724:
! 725: /*
! 726: ** CAPI3REF: Enable Or Disable Extended Result Codes
! 727: **
! 728: ** This routine enables or disables the
! 729: ** [SQLITE_IOERR_READ | extended result codes] feature.
! 730: ** By default, SQLite API routines return one of only 26 integer
! 731: ** [SQLITE_OK | result codes]. When extended result codes
! 732: ** are enabled by this routine, the repetoire of result codes can be
! 733: ** much larger and can (hopefully) provide more detailed information
! 734: ** about the cause of an error.
! 735: **
! 736: ** The second argument is a boolean value that turns extended result
! 737: ** codes on and off. Extended result codes are off by default for
! 738: ** backwards compatibility with older versions of SQLite.
! 739: */
! 740: int sqlite3_extended_result_codes(sqlite3*, int onoff);
! 741:
! 742: /*
! 743: ** CAPI3REF: Last Insert Rowid
! 744: **
! 745: ** Each entry in an SQLite table has a unique 64-bit signed integer key
! 746: ** called the "rowid". The rowid is always available as an undeclared
! 747: ** column named ROWID, OID, or _ROWID_. If the table has a column of
! 748: ** type INTEGER PRIMARY KEY then that column is another an alias for the
! 749: ** rowid.
! 750: **
! 751: ** This routine returns the rowid of the most recent INSERT into
! 752: ** the database from the database connection given in the first
! 753: ** argument. If no inserts have ever occurred on this database
! 754: ** connection, zero is returned.
! 755: **
! 756: ** If an INSERT occurs within a trigger, then the rowid of the
! 757: ** inserted row is returned by this routine as long as the trigger
! 758: ** is running. But once the trigger terminates, the value returned
! 759: ** by this routine reverts to the last value inserted before the
! 760: ** trigger fired.
! 761: **
! 762: ** If another thread does a new insert on the same database connection
! 763: ** while this routine is running and thus changes the last insert rowid,
! 764: ** then the return value of this routine is undefined.
1.1 misha 765: */
1.2 ! misha 766: sqlite3_int64 sqlite3_last_insert_rowid(sqlite3*);
1.1 misha 767:
768: /*
1.2 ! misha 769: ** CAPI3REF: Count The Number Of Rows Modified
! 770: **
1.1 misha 771: ** This function returns the number of database rows that were changed
1.2 ! misha 772: ** (or inserted or deleted) by the most recent SQL statement. Only
! 773: ** changes that are directly specified by the INSERT, UPDATE, or
! 774: ** DELETE statement are counted. Auxiliary changes caused by
! 775: ** triggers are not counted. Use the [sqlite3_total_changes()] function
! 776: ** to find the total number of changes including changes caused by triggers.
! 777: **
! 778: ** Within the body of a trigger, the sqlite3_changes() interface can be
! 779: ** called to find the number of
! 780: ** changes in the most recently completed INSERT, UPDATE, or DELETE
! 781: ** statement within the body of the trigger.
1.1 misha 782: **
783: ** All changes are counted, even if they were later undone by a
784: ** ROLLBACK or ABORT. Except, changes associated with creating and
785: ** dropping tables are not counted.
786: **
1.2 ! misha 787: ** If a callback invokes [sqlite3_exec()] or [sqlite3_step()] recursively,
! 788: ** then the changes in the inner, recursive call are counted together
! 789: ** with the changes in the outer call.
1.1 misha 790: **
791: ** SQLite implements the command "DELETE FROM table" without a WHERE clause
792: ** by dropping and recreating the table. (This is much faster than going
1.2 ! misha 793: ** through and deleting individual elements from the table.) Because of
1.1 misha 794: ** this optimization, the change count for "DELETE FROM table" will be
795: ** zero regardless of the number of elements that were originally in the
796: ** table. To get an accurate count of the number of rows deleted, use
797: ** "DELETE FROM table WHERE 1" instead.
1.2 ! misha 798: **
! 799: ** If another thread makes changes on the same database connection
! 800: ** while this routine is running then the return value of this routine
! 801: ** is undefined.
1.1 misha 802: */
803: int sqlite3_changes(sqlite3*);
804:
805: /*
1.2 ! misha 806: ** CAPI3REF: Total Number Of Rows Modified
! 807: ***
1.1 misha 808: ** This function returns the number of database rows that have been
809: ** modified by INSERT, UPDATE or DELETE statements since the database handle
810: ** was opened. This includes UPDATE, INSERT and DELETE statements executed
811: ** as part of trigger programs. All changes are counted as soon as the
812: ** statement that makes them is completed (when the statement handle is
1.2 ! misha 813: ** passed to [sqlite3_reset()] or [sqlite3_finalize()]).
! 814: **
! 815: ** See also the [sqlite3_change()] interface.
1.1 misha 816: **
817: ** SQLite implements the command "DELETE FROM table" without a WHERE clause
818: ** by dropping and recreating the table. (This is much faster than going
819: ** through and deleting individual elements form the table.) Because of
820: ** this optimization, the change count for "DELETE FROM table" will be
821: ** zero regardless of the number of elements that were originally in the
822: ** table. To get an accurate count of the number of rows deleted, use
823: ** "DELETE FROM table WHERE 1" instead.
1.2 ! misha 824: **
! 825: ** If another thread makes changes on the same database connection
! 826: ** while this routine is running then the return value of this routine
! 827: ** is undefined.
1.1 misha 828: */
829: int sqlite3_total_changes(sqlite3*);
830:
1.2 ! misha 831: /*
! 832: ** CAPI3REF: Interrupt A Long-Running Query
! 833: **
! 834: ** This function causes any pending database operation to abort and
1.1 misha 835: ** return at its earliest opportunity. This routine is typically
836: ** called in response to a user action such as pressing "Cancel"
837: ** or Ctrl-C where the user wants a long query operation to halt
838: ** immediately.
1.2 ! misha 839: **
! 840: ** It is safe to call this routine from a thread different from the
! 841: ** thread that is currently running the database operation. But it
! 842: ** is not safe to call this routine with a database connection that
! 843: ** is closed or might close before sqlite3_interrupt() returns.
! 844: **
! 845: ** The SQL operation that is interrupted will return [SQLITE_INTERRUPT].
! 846: ** If an interrupted operation was an update that is inside an
! 847: ** explicit transaction, then the entire transaction will be rolled
! 848: ** back automatically.
1.1 misha 849: */
850: void sqlite3_interrupt(sqlite3*);
851:
1.2 ! misha 852: /*
! 853: ** CAPI3REF: Determine If An SQL Statement Is Complete
! 854: **
! 855: ** These functions return true if the given input string comprises
1.1 misha 856: ** one or more complete SQL statements. For the sqlite3_complete() call,
857: ** the parameter must be a nul-terminated UTF-8 string. For
858: ** sqlite3_complete16(), a nul-terminated machine byte order UTF-16 string
859: ** is required.
860: **
1.2 ! misha 861: ** These routines are useful for command-line input to determine if the
! 862: ** currently entered text forms one or more complete SQL statements or
! 863: ** if additional input is needed before sending the statements into
! 864: ** SQLite for parsing. The algorithm is simple. If the
! 865: ** last token other than spaces and comments is a semicolon, then return
! 866: ** true. Actually, the algorithm is a little more complicated than that
! 867: ** in order to deal with triggers, but the basic idea is the same: the
! 868: ** statement is not complete unless it ends in a semicolon.
1.1 misha 869: */
870: int sqlite3_complete(const char *sql);
871: int sqlite3_complete16(const void *sql);
872:
873: /*
1.2 ! misha 874: ** CAPI3REF: Register A Callback To Handle SQLITE_BUSY Errors
! 875: **
! 876: ** This routine identifies a callback function that might be invoked
! 877: ** whenever an attempt is made to open a database table
! 878: ** that another thread or process has locked.
! 879: ** If the busy callback is NULL, then [SQLITE_BUSY]
! 880: ** (or sometimes [SQLITE_IOERR_BLOCKED])
! 881: ** is returned immediately upon encountering the lock.
! 882: ** If the busy callback is not NULL, then the
! 883: ** callback will be invoked with two arguments. The
! 884: ** first argument to the handler is a copy of the void* pointer which
! 885: ** is the third argument to this routine. The second argument to
! 886: ** the handler is the number of times that the busy handler has
! 887: ** been invoked for this locking event. If the
! 888: ** busy callback returns 0, then no additional attempts are made to
! 889: ** access the database and [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED] is returned.
! 890: ** If the callback returns non-zero, then another attempt is made to open the
! 891: ** database for reading and the cycle repeats.
! 892: **
! 893: ** The presence of a busy handler does not guarantee that
! 894: ** it will be invoked when there is lock contention.
! 895: ** If SQLite determines that invoking the busy handler could result in
! 896: ** a deadlock, it will return [SQLITE_BUSY] instead.
! 897: ** Consider a scenario where one process is holding a read lock that
! 898: ** it is trying to promote to a reserved lock and
! 899: ** a second process is holding a reserved lock that it is trying
! 900: ** to promote to an exclusive lock. The first process cannot proceed
! 901: ** because it is blocked by the second and the second process cannot
! 902: ** proceed because it is blocked by the first. If both processes
! 903: ** invoke the busy handlers, neither will make any progress. Therefore,
! 904: ** SQLite returns [SQLITE_BUSY] for the first process, hoping that this
! 905: ** will induce the first process to release its read lock and allow
! 906: ** the second process to proceed.
1.1 misha 907: **
908: ** The default busy callback is NULL.
909: **
1.2 ! misha 910: ** The [SQLITE_BUSY] error is converted to [SQLITE_IOERR_BLOCKED] when
! 911: ** SQLite is in the middle of a large transaction where all the
! 912: ** changes will not fit into the in-memory cache. SQLite will
! 913: ** already hold a RESERVED lock on the database file, but it needs
! 914: ** to promote this lock to EXCLUSIVE so that it can spill cache
! 915: ** pages into the database file without harm to concurrent
! 916: ** readers. If it is unable to promote the lock, then the in-memory
! 917: ** cache will be left in an inconsistent state and so the error
! 918: ** code is promoted from the relatively benign [SQLITE_BUSY] to
! 919: ** the more severe [SQLITE_IOERR_BLOCKED]. This error code promotion
! 920: ** forces an automatic rollback of the changes. See the
! 921: ** <a href="http://www.sqlite.org/cvstrac/wiki?p=CorruptionFollowingBusyError">
! 922: ** CorruptionFollowingBusyError</a> wiki page for a discussion of why
! 923: ** this is important.
! 924: **
1.1 misha 925: ** Sqlite is re-entrant, so the busy handler may start a new query.
926: ** (It is not clear why anyone would every want to do this, but it
927: ** is allowed, in theory.) But the busy handler may not close the
928: ** database. Closing the database from a busy handler will delete
929: ** data structures out from under the executing query and will
1.2 ! misha 930: ** probably result in a segmentation fault or other runtime error.
! 931: **
! 932: ** There can only be a single busy handler defined for each database
! 933: ** connection. Setting a new busy handler clears any previous one.
! 934: ** Note that calling [sqlite3_busy_timeout()] will also set or clear
! 935: ** the busy handler.
! 936: **
! 937: ** When operating in [sqlite3_enable_shared_cache | shared cache mode],
! 938: ** only a single busy handler can be defined for each database file.
! 939: ** So if two database connections share a single cache, then changing
! 940: ** the busy handler on one connection will also change the busy
! 941: ** handler in the other connection. The busy handler is invoked
! 942: ** in the thread that was running when the SQLITE_BUSY was hit.
1.1 misha 943: */
944: int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*);
945:
946: /*
1.2 ! misha 947: ** CAPI3REF: Set A Busy Timeout
! 948: **
1.1 misha 949: ** This routine sets a busy handler that sleeps for a while when a
950: ** table is locked. The handler will sleep multiple times until
1.2 ! misha 951: ** at least "ms" milliseconds of sleeping have been done. After
! 952: ** "ms" milliseconds of sleeping, the handler returns 0 which
! 953: ** causes [sqlite3_step()] to return [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED].
1.1 misha 954: **
955: ** Calling this routine with an argument less than or equal to zero
956: ** turns off all busy handlers.
1.2 ! misha 957: **
! 958: ** There can only be a single busy handler for a particular database
! 959: ** connection. If another busy handler was defined
! 960: ** (using [sqlite3_busy_handler()]) prior to calling
! 961: ** this routine, that other busy handler is cleared.
1.1 misha 962: */
963: int sqlite3_busy_timeout(sqlite3*, int ms);
964:
965: /*
1.2 ! misha 966: ** CAPI3REF: Convenience Routines For Running Queries
! 967: **
! 968: ** This next routine is a convenience wrapper around [sqlite3_exec()].
1.1 misha 969: ** Instead of invoking a user-supplied callback for each row of the
970: ** result, this routine remembers each row of the result in memory
1.2 ! misha 971: ** obtained from [sqlite3_malloc()], then returns all of the result after the
1.1 misha 972: ** query has finished.
973: **
974: ** As an example, suppose the query result where this table:
975: **
1.2 ! misha 976: ** <blockquote><pre>
1.1 misha 977: ** Name | Age
978: ** -----------------------
979: ** Alice | 43
980: ** Bob | 28
981: ** Cindy | 21
1.2 ! misha 982: ** </pre></blockquote>
1.1 misha 983: **
984: ** If the 3rd argument were &azResult then after the function returns
985: ** azResult will contain the following data:
986: **
1.2 ! misha 987: ** <blockquote><pre>
! 988: ** azResult[0] = "Name";
! 989: ** azResult[1] = "Age";
! 990: ** azResult[2] = "Alice";
! 991: ** azResult[3] = "43";
! 992: ** azResult[4] = "Bob";
! 993: ** azResult[5] = "28";
! 994: ** azResult[6] = "Cindy";
! 995: ** azResult[7] = "21";
! 996: ** </pre></blockquote>
1.1 misha 997: **
998: ** Notice that there is an extra row of data containing the column
999: ** headers. But the *nrow return value is still 3. *ncolumn is
1000: ** set to 2. In general, the number of values inserted into azResult
1001: ** will be ((*nrow) + 1)*(*ncolumn).
1002: **
1003: ** After the calling function has finished using the result, it should
1004: ** pass the result data pointer to sqlite3_free_table() in order to
1005: ** release the memory that was malloc-ed. Because of the way the
1.2 ! misha 1006: ** [sqlite3_malloc()] happens, the calling function must not try to call
! 1007: ** [sqlite3_free()] directly. Only [sqlite3_free_table()] is able to release
1.1 misha 1008: ** the memory properly and safely.
1009: **
1.2 ! misha 1010: ** The return value of this routine is the same as from [sqlite3_exec()].
1.1 misha 1011: */
1012: int sqlite3_get_table(
1.2 ! misha 1013: sqlite3*, /* An open database */
1.1 misha 1014: const char *sql, /* SQL to be executed */
1015: char ***resultp, /* Result written to a char *[] that this points to */
1016: int *nrow, /* Number of result rows written here */
1017: int *ncolumn, /* Number of result columns written here */
1018: char **errmsg /* Error msg written here */
1019: );
1020: void sqlite3_free_table(char **result);
1021:
1022: /*
1.2 ! misha 1023: ** CAPI3REF: Formatted String Printing Functions
! 1024: **
! 1025: ** These routines are workalikes of the "printf()" family of functions
! 1026: ** from the standard C library.
1.1 misha 1027: **
1.2 ! misha 1028: ** The sqlite3_mprintf() and sqlite3_vmprintf() routines write their
! 1029: ** results into memory obtained from [sqlite3_malloc()].
! 1030: ** The strings returned by these two routines should be
! 1031: ** released by [sqlite3_free()]. Both routines return a
! 1032: ** NULL pointer if [sqlite3_malloc()] is unable to allocate enough
! 1033: ** memory to hold the resulting string.
! 1034: **
! 1035: ** In sqlite3_snprintf() routine is similar to "snprintf()" from
! 1036: ** the standard C library. The result is written into the
! 1037: ** buffer supplied as the second parameter whose size is given by
! 1038: ** the first parameter. Note that the order of the
! 1039: ** first two parameters is reversed from snprintf(). This is an
! 1040: ** historical accident that cannot be fixed without breaking
! 1041: ** backwards compatibility. Note also that sqlite3_snprintf()
! 1042: ** returns a pointer to its buffer instead of the number of
! 1043: ** characters actually written into the buffer. We admit that
! 1044: ** the number of characters written would be a more useful return
! 1045: ** value but we cannot change the implementation of sqlite3_snprintf()
! 1046: ** now without breaking compatibility.
! 1047: **
! 1048: ** As long as the buffer size is greater than zero, sqlite3_snprintf()
! 1049: ** guarantees that the buffer is always zero-terminated. The first
! 1050: ** parameter "n" is the total size of the buffer, including space for
! 1051: ** the zero terminator. So the longest string that can be completely
! 1052: ** written will be n-1 characters.
1.1 misha 1053: **
1.2 ! misha 1054: ** These routines all implement some additional formatting
! 1055: ** options that are useful for constructing SQL statements.
1.1 misha 1056: ** All of the usual printf formatting options apply. In addition, there
1.2 ! misha 1057: ** is are "%q", "%Q", and "%z" options.
! 1058: **
! 1059: ** The %q option works like %s in that it substitutes a null-terminated
1.1 misha 1060: ** string from the argument list. But %q also doubles every '\'' character.
1061: ** %q is designed for use inside a string literal. By doubling each '\''
1062: ** character it escapes that character and allows it to be inserted into
1063: ** the string.
1064: **
1065: ** For example, so some string variable contains text as follows:
1066: **
1.2 ! misha 1067: ** <blockquote><pre>
! 1068: ** char *zText = "It's a happy day!";
! 1069: ** </pre></blockquote>
! 1070: **
! 1071: ** One can use this text in an SQL statement as follows:
! 1072: **
! 1073: ** <blockquote><pre>
! 1074: ** char *zSQL = sqlite3_mprintf("INSERT INTO table VALUES('%q')", zText);
! 1075: ** sqlite3_exec(db, zSQL, 0, 0, 0);
! 1076: ** sqlite3_free(zSQL);
! 1077: ** </pre></blockquote>
1.1 misha 1078: **
1079: ** Because the %q format string is used, the '\'' character in zText
1080: ** is escaped and the SQL generated is as follows:
1081: **
1.2 ! misha 1082: ** <blockquote><pre>
! 1083: ** INSERT INTO table1 VALUES('It''s a happy day!')
! 1084: ** </pre></blockquote>
1.1 misha 1085: **
1086: ** This is correct. Had we used %s instead of %q, the generated SQL
1087: ** would have looked like this:
1088: **
1.2 ! misha 1089: ** <blockquote><pre>
! 1090: ** INSERT INTO table1 VALUES('It's a happy day!');
! 1091: ** </pre></blockquote>
1.1 misha 1092: **
1093: ** This second example is an SQL syntax error. As a general rule you
1094: ** should always use %q instead of %s when inserting text into a string
1095: ** literal.
1.2 ! misha 1096: **
! 1097: ** The %Q option works like %q except it also adds single quotes around
! 1098: ** the outside of the total string. Or if the parameter in the argument
! 1099: ** list is a NULL pointer, %Q substitutes the text "NULL" (without single
! 1100: ** quotes) in place of the %Q option. So, for example, one could say:
! 1101: **
! 1102: ** <blockquote><pre>
! 1103: ** char *zSQL = sqlite3_mprintf("INSERT INTO table VALUES(%Q)", zText);
! 1104: ** sqlite3_exec(db, zSQL, 0, 0, 0);
! 1105: ** sqlite3_free(zSQL);
! 1106: ** </pre></blockquote>
! 1107: **
! 1108: ** The code above will render a correct SQL statement in the zSQL
! 1109: ** variable even if the zText variable is a NULL pointer.
! 1110: **
! 1111: ** The "%z" formatting option works exactly like "%s" with the
! 1112: ** addition that after the string has been read and copied into
! 1113: ** the result, [sqlite3_free()] is called on the input string.
1.1 misha 1114: */
1115: char *sqlite3_mprintf(const char*,...);
1116: char *sqlite3_vmprintf(const char*, va_list);
1117: char *sqlite3_snprintf(int,char*,const char*, ...);
1118:
1119: /*
1.2 ! misha 1120: ** CAPI3REF: Memory Allocation Subsystem
! 1121: **
! 1122: ** The SQLite core uses these three routines for all of its own
! 1123: ** internal memory allocation needs. (See the exception below.)
! 1124: ** The default implementation
! 1125: ** of the memory allocation subsystem uses the malloc(), realloc()
! 1126: ** and free() provided by the standard C library. However, if
! 1127: ** SQLite is compiled with the following C preprocessor macro
! 1128: **
! 1129: ** <blockquote> SQLITE_OMIT_MEMORY_ALLOCATION </blockquote>
! 1130: **
! 1131: ** then no implementation is provided for these routines by
! 1132: ** SQLite. The application that links against SQLite is
! 1133: ** expected to provide its own implementation. If the application
! 1134: ** does provide its own implementation for these routines, then
! 1135: ** it must also provide an implementations for
! 1136: ** [sqlite3_memory_alarm()], [sqlite3_memory_used()], and
! 1137: ** [sqlite3_memory_highwater()]. The alternative implementations
! 1138: ** for these last three routines need not actually work, but
! 1139: ** stub functions at least are needed to statisfy the linker.
! 1140: ** SQLite never calls [sqlite3_memory_highwater()] itself, but
! 1141: ** the symbol is included in a table as part of the
! 1142: ** [sqlite3_load_extension()] interface. The
! 1143: ** [sqlite3_memory_alarm()] and [sqlite3_memory_used()] interfaces
! 1144: ** are called by [sqlite3_soft_heap_limit()] and working implementations
! 1145: ** of both routines must be provided if [sqlite3_soft_heap_limit()]
! 1146: ** is to operate correctly.
! 1147: **
! 1148: ** <b>Exception:</b> The windows OS interface layer calls
! 1149: ** the system malloc() and free() directly when converting
! 1150: ** filenames between the UTF-8 encoding used by SQLite
! 1151: ** and whatever filename encoding is used by the particular windows
! 1152: ** installation. Memory allocation errors are detected, but
! 1153: ** they are reported back as [SQLITE_CANTOPEN] or
! 1154: ** [SQLITE_IOERR] rather than [SQLITE_NOMEM].
! 1155: */
! 1156: void *sqlite3_malloc(int);
! 1157: void *sqlite3_realloc(void*, int);
! 1158: void sqlite3_free(void*);
! 1159:
! 1160: /*
! 1161: ** CAPI3REF: Memory Allocator Statistics
! 1162: **
! 1163: ** In addition to the basic three allocation routines
! 1164: ** [sqlite3_malloc()], [sqlite3_free()], and [sqlite3_realloc()],
! 1165: ** the memory allocation subsystem included with the SQLite
! 1166: ** sources provides the interfaces shown below.
! 1167: **
! 1168: ** The first of these two routines returns the amount of memory
! 1169: ** currently outstanding (malloced but not freed). The second
! 1170: ** returns the largest instantaneous amount of outstanding
! 1171: ** memory. The highwater mark is reset if the argument is
! 1172: ** true.
! 1173: **
! 1174: ** The implementation of these routines in the SQLite core
! 1175: ** is omitted if the application is compiled with the
! 1176: ** SQLITE_OMIT_MEMORY_ALLOCATION macro defined. In that case,
! 1177: ** the application that links SQLite must provide its own
! 1178: ** alternative implementation. See the documentation on
! 1179: ** [sqlite3_malloc()] for additional information.
! 1180: */
! 1181: sqlite3_int64 sqlite3_memory_used(void);
! 1182: sqlite3_int64 sqlite3_memory_highwater(int resetFlag);
! 1183:
! 1184: /*
! 1185: ** CAPI3REF: Memory Allocation Alarms
! 1186: **
! 1187: ** The [sqlite3_memory_alarm] routine is used to register
! 1188: ** a callback on memory allocation events.
! 1189: **
! 1190: ** This routine registers or clears a callbacks that fires when
! 1191: ** the amount of memory allocated exceeds iThreshold. Only
! 1192: ** a single callback can be registered at a time. Each call
! 1193: ** to [sqlite3_memory_alarm()] overwrites the previous callback.
! 1194: ** The callback is disabled by setting xCallback to a NULL
! 1195: ** pointer.
! 1196: **
! 1197: ** The parameters to the callback are the pArg value, the
! 1198: ** amount of memory currently in use, and the size of the
! 1199: ** allocation that provoked the callback. The callback will
! 1200: ** presumably invoke [sqlite3_free()] to free up memory space.
! 1201: ** The callback may invoke [sqlite3_malloc()] or [sqlite3_realloc()]
! 1202: ** but if it does, no additional callbacks will be invoked by
! 1203: ** the recursive calls.
! 1204: **
! 1205: ** The [sqlite3_soft_heap_limit()] interface works by registering
! 1206: ** a memory alarm at the soft heap limit and invoking
! 1207: ** [sqlite3_release_memory()] in the alarm callback. Application
! 1208: ** programs should not attempt to use the [sqlite3_memory_alarm()]
! 1209: ** interface because doing so will interfere with the
! 1210: ** [sqlite3_soft_heap_limit()] module. This interface is exposed
! 1211: ** only so that applications can provide their own
! 1212: ** alternative implementation when the SQLite core is
! 1213: ** compiled with SQLITE_OMIT_MEMORY_ALLOCATION.
! 1214: */
! 1215: int sqlite3_memory_alarm(
! 1216: void(*xCallback)(void *pArg, sqlite3_int64 used, int N),
! 1217: void *pArg,
! 1218: sqlite3_int64 iThreshold
! 1219: );
! 1220:
! 1221:
! 1222: /*
! 1223: ** CAPI3REF: Compile-Time Authorization Callbacks
! 1224: ***
! 1225: ** This routine registers a authorizer callback with the SQLite library.
! 1226: ** The authorizer callback is invoked as SQL statements are being compiled
! 1227: ** by [sqlite3_prepare()] or its variants [sqlite3_prepare_v2()],
! 1228: ** [sqlite3_prepare16()] and [sqlite3_prepare16_v2()]. At various
! 1229: ** points during the compilation process, as logic is being created
! 1230: ** to perform various actions, the authorizer callback is invoked to
! 1231: ** see if those actions are allowed. The authorizer callback should
! 1232: ** return SQLITE_OK to allow the action, [SQLITE_IGNORE] to disallow the
! 1233: ** specific action but allow the SQL statement to continue to be
! 1234: ** compiled, or [SQLITE_DENY] to cause the entire SQL statement to be
! 1235: ** rejected with an error.
! 1236: **
! 1237: ** Depending on the action, the [SQLITE_IGNORE] and [SQLITE_DENY] return
! 1238: ** codes might mean something different or they might mean the same
! 1239: ** thing. If the action is, for example, to perform a delete opertion,
! 1240: ** then [SQLITE_IGNORE] and [SQLITE_DENY] both cause the statement compilation
! 1241: ** to fail with an error. But if the action is to read a specific column
! 1242: ** from a specific table, then [SQLITE_DENY] will cause the entire
! 1243: ** statement to fail but [SQLITE_IGNORE] will cause a NULL value to be
! 1244: ** read instead of the actual column value.
! 1245: **
! 1246: ** The first parameter to the authorizer callback is a copy of
! 1247: ** the third parameter to the sqlite3_set_authorizer() interface.
! 1248: ** The second parameter to the callback is an integer
! 1249: ** [SQLITE_COPY | action code] that specifies the particular action
! 1250: ** to be authorized. The available action codes are
! 1251: ** [SQLITE_COPY | documented separately]. The third through sixth
! 1252: ** parameters to the callback are strings that contain additional
! 1253: ** details about the action to be authorized.
! 1254: **
! 1255: ** An authorizer is used when preparing SQL statements from an untrusted
! 1256: ** source, to ensure that the SQL statements do not try to access data
! 1257: ** that they are not allowed to see, or that they do not try to
! 1258: ** execute malicious statements that damage the database. For
! 1259: ** example, an application may allow a user to enter arbitrary
! 1260: ** SQL queries for evaluation by a database. But the application does
! 1261: ** not want the user to be able to make arbitrary changes to the
! 1262: ** database. An authorizer could then be put in place while the
! 1263: ** user-entered SQL is being prepared that disallows everything
! 1264: ** except SELECT statements.
! 1265: **
! 1266: ** Only a single authorizer can be in place on a database connection
! 1267: ** at a time. Each call to sqlite3_set_authorizer overrides the
! 1268: ** previous call. A NULL authorizer means that no authorization
! 1269: ** callback is invoked. The default authorizer is NULL.
! 1270: **
! 1271: ** Note that the authorizer callback is invoked only during
! 1272: ** [sqlite3_prepare()] or its variants. Authorization is not
! 1273: ** performed during statement evaluation in [sqlite3_step()].
1.1 misha 1274: */
1275: int sqlite3_set_authorizer(
1276: sqlite3*,
1277: int (*xAuth)(void*,int,const char*,const char*,const char*,const char*),
1278: void *pUserData
1279: );
1280:
1281: /*
1.2 ! misha 1282: ** CAPI3REF: Authorizer Return Codes
! 1283: **
! 1284: ** The [sqlite3_set_authorizer | authorizer callback function] must
! 1285: ** return either [SQLITE_OK] or one of these two constants in order
! 1286: ** to signal SQLite whether or not the action is permitted. See the
! 1287: ** [sqlite3_set_authorizer | authorizer documentation] for additional
! 1288: ** information.
! 1289: */
! 1290: #define SQLITE_DENY 1 /* Abort the SQL statement with an error */
! 1291: #define SQLITE_IGNORE 2 /* Don't allow access, but don't generate an error */
! 1292:
! 1293: /*
! 1294: ** CAPI3REF: Authorizer Action Codes
! 1295: **
! 1296: ** The [sqlite3_set_authorizer()] interface registers a callback function
! 1297: ** that is invoked to authorizer certain SQL statement actions. The
! 1298: ** second parameter to the callback is an integer code that specifies
! 1299: ** what action is being authorized. These are the integer action codes that
! 1300: ** the authorizer callback may be passed.
! 1301: **
! 1302: ** These action code values signify what kind of operation is to be
! 1303: ** authorized. The 3rd and 4th parameters to the authorization callback
! 1304: ** function will be parameters or NULL depending on which of these
! 1305: ** codes is used as the second parameter. The 5th parameter to the
! 1306: ** authorizer callback is the name of the database ("main", "temp",
! 1307: ** etc.) if applicable. The 6th parameter to the authorizer callback
1.1 misha 1308: ** is the name of the inner-most trigger or view that is responsible for
1309: ** the access attempt or NULL if this access attempt is directly from
1.2 ! misha 1310: ** top-level SQL code.
1.1 misha 1311: */
1.2 ! misha 1312: /******************************************* 3rd ************ 4th ***********/
1.1 misha 1313: #define SQLITE_CREATE_INDEX 1 /* Index Name Table Name */
1314: #define SQLITE_CREATE_TABLE 2 /* Table Name NULL */
1315: #define SQLITE_CREATE_TEMP_INDEX 3 /* Index Name Table Name */
1316: #define SQLITE_CREATE_TEMP_TABLE 4 /* Table Name NULL */
1317: #define SQLITE_CREATE_TEMP_TRIGGER 5 /* Trigger Name Table Name */
1318: #define SQLITE_CREATE_TEMP_VIEW 6 /* View Name NULL */
1319: #define SQLITE_CREATE_TRIGGER 7 /* Trigger Name Table Name */
1320: #define SQLITE_CREATE_VIEW 8 /* View Name NULL */
1321: #define SQLITE_DELETE 9 /* Table Name NULL */
1322: #define SQLITE_DROP_INDEX 10 /* Index Name Table Name */
1323: #define SQLITE_DROP_TABLE 11 /* Table Name NULL */
1324: #define SQLITE_DROP_TEMP_INDEX 12 /* Index Name Table Name */
1325: #define SQLITE_DROP_TEMP_TABLE 13 /* Table Name NULL */
1326: #define SQLITE_DROP_TEMP_TRIGGER 14 /* Trigger Name Table Name */
1327: #define SQLITE_DROP_TEMP_VIEW 15 /* View Name NULL */
1328: #define SQLITE_DROP_TRIGGER 16 /* Trigger Name Table Name */
1329: #define SQLITE_DROP_VIEW 17 /* View Name NULL */
1330: #define SQLITE_INSERT 18 /* Table Name NULL */
1331: #define SQLITE_PRAGMA 19 /* Pragma Name 1st arg or NULL */
1332: #define SQLITE_READ 20 /* Table Name Column Name */
1333: #define SQLITE_SELECT 21 /* NULL NULL */
1334: #define SQLITE_TRANSACTION 22 /* NULL NULL */
1335: #define SQLITE_UPDATE 23 /* Table Name Column Name */
1336: #define SQLITE_ATTACH 24 /* Filename NULL */
1337: #define SQLITE_DETACH 25 /* Database Name NULL */
1.2 ! misha 1338: #define SQLITE_ALTER_TABLE 26 /* Database Name Table Name */
! 1339: #define SQLITE_REINDEX 27 /* Index Name NULL */
! 1340: #define SQLITE_ANALYZE 28 /* Table Name NULL */
! 1341: #define SQLITE_CREATE_VTABLE 29 /* Table Name Module Name */
! 1342: #define SQLITE_DROP_VTABLE 30 /* Table Name Module Name */
! 1343: #define SQLITE_FUNCTION 31 /* Function Name NULL */
! 1344: #define SQLITE_COPY 0 /* No longer used */
! 1345:
! 1346: /*
! 1347: ** CAPI3REF: Tracing And Profiling Functions
! 1348: **
! 1349: ** These routines register callback functions that can be used for
! 1350: ** tracing and profiling the execution of SQL statements.
! 1351: ** The callback function registered by sqlite3_trace() is invoked
! 1352: ** at the first [sqlite3_step()] for the evaluation of an SQL statement.
! 1353: ** The callback function registered by sqlite3_profile() is invoked
! 1354: ** as each SQL statement finishes and includes
! 1355: ** information on how long that statement ran.
! 1356: **
! 1357: ** The sqlite3_profile() API is currently considered experimental and
! 1358: ** is subject to change.
1.1 misha 1359: */
1360: void *sqlite3_trace(sqlite3*, void(*xTrace)(void*,const char*), void*);
1.2 ! misha 1361: void *sqlite3_profile(sqlite3*,
! 1362: void(*xProfile)(void*,const char*,sqlite3_uint64), void*);
1.1 misha 1363:
1364: /*
1.2 ! misha 1365: ** CAPI3REF: Query Progress Callbacks
! 1366: **
1.1 misha 1367: ** This routine configures a callback function - the progress callback - that
1.2 ! misha 1368: ** is invoked periodically during long running calls to [sqlite3_exec()],
! 1369: ** [sqlite3_step()] and [sqlite3_get_table()]. An example use for this
! 1370: ** interface is to keep a GUI updated during a large query.
1.1 misha 1371: **
1372: ** The progress callback is invoked once for every N virtual machine opcodes,
1373: ** where N is the second argument to this function. The progress callback
1374: ** itself is identified by the third argument to this function. The fourth
1375: ** argument to this function is a void pointer passed to the progress callback
1376: ** function each time it is invoked.
1377: **
1.2 ! misha 1378: ** If a call to [sqlite3_exec()], [sqlite3_step()], or [sqlite3_get_table()]
! 1379: ** results in fewer than N opcodes being executed, then the progress
! 1380: ** callback is never invoked.
1.1 misha 1381: **
1.2 ! misha 1382: ** Only a single progress callback function may be registered for each
! 1383: ** open database connection. Every call to sqlite3_progress_handler()
! 1384: ** overwrites the results of the previous call.
1.1 misha 1385: ** To remove the progress callback altogether, pass NULL as the third
1386: ** argument to this function.
1387: **
1388: ** If the progress callback returns a result other than 0, then the current
1.2 ! misha 1389: ** query is immediately terminated and any database changes rolled back.
! 1390: ** The containing [sqlite3_exec()], [sqlite3_step()], or
! 1391: ** [sqlite3_get_table()] call returns SQLITE_INTERRUPT. This feature
! 1392: ** can be used, for example, to implement the "Cancel" button on a
! 1393: ** progress dialog box in a GUI.
1.1 misha 1394: */
1395: void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
1396:
1397: /*
1.2 ! misha 1398: ** CAPI3REF: Opening A New Database Connection
1.1 misha 1399: **
1400: ** Open the sqlite database file "filename". The "filename" is UTF-8
1.2 ! misha 1401: ** encoded for [sqlite3_open()] and [sqlite3_open_v2()] and UTF-16 encoded
! 1402: ** in the native byte order for [sqlite3_open16()].
! 1403: ** An [sqlite3*] handle is returned in *ppDb, even
1.1 misha 1404: ** if an error occurs. If the database is opened (or created) successfully,
1.2 ! misha 1405: ** then [SQLITE_OK] is returned. Otherwise an error code is returned. The
! 1406: ** [sqlite3_errmsg()] or [sqlite3_errmsg16()] routines can be used to obtain
1.1 misha 1407: ** an English language description of the error.
1408: **
1.2 ! misha 1409: ** The default encoding for the database will be UTF-8 if
! 1410: ** [sqlite3_open()] or [sqlite3_open_v2()] is called and
! 1411: ** UTF-16 if [sqlite3_open16()] is used.
1.1 misha 1412: **
1413: ** Whether or not an error occurs when it is opened, resources associated
1.2 ! misha 1414: ** with the [sqlite3*] handle should be released by passing it to
! 1415: ** [sqlite3_close()] when it is no longer required.
! 1416: **
! 1417: ** The [sqlite3_open_v2()] interface works like [sqlite3_open()] except that
! 1418: ** provides two additional parameters for additional control over the
! 1419: ** new database connection. The flags parameter can be one of:
! 1420: **
! 1421: ** <ol>
! 1422: ** <li> [SQLITE_OPEN_READONLY]
! 1423: ** <li> [SQLITE_OPEN_READWRITE]
! 1424: ** <li> [SQLITE_OPEN_READWRITE] | [SQLITE_OPEN_CREATE]
! 1425: ** </ol>
! 1426: **
! 1427: ** The first value opens the database read-only. If the database does
! 1428: ** not previously exist, an error is returned. The second option opens
! 1429: ** the database for reading and writing if possible, or reading only if
! 1430: ** if the file is write protected. In either case the database must already
! 1431: ** exist or an error is returned. The third option opens the database
! 1432: ** for reading and writing and creates it if it does not already exist.
! 1433: ** The third options is behavior that is always used for [sqlite3_open()]
! 1434: ** and [sqlite3_open16()].
! 1435: **
! 1436: ** If the filename is ":memory:", then an private
! 1437: ** in-memory database is created for the connection. This in-memory
! 1438: ** database will vanish when the database connection is closed. Future
! 1439: ** version of SQLite might make use of additional special filenames
! 1440: ** that begin with the ":" character. It is recommended that
! 1441: ** when a database filename really does begin with
! 1442: ** ":" that you prefix the filename with a pathname like "./" to
! 1443: ** avoid ambiguity.
! 1444: **
! 1445: ** If the filename is an empty string, then a private temporary
! 1446: ** on-disk database will be created. This private database will be
! 1447: ** automatically deleted as soon as the database connection is closed.
! 1448: **
! 1449: ** The fourth parameter to sqlite3_open_v2() is the name of the
! 1450: ** [sqlite3_vfs] object that defines the operating system
! 1451: ** interface that the new database connection should use. If the
! 1452: ** fourth parameter is a NULL pointer then the default [sqlite3_vfs]
! 1453: ** object is used.
! 1454: **
! 1455: ** <b>Note to windows users:</b> The encoding used for the filename argument
! 1456: ** of [sqlite3_open()] and [sqlite3_open_v2()] must be UTF-8, not whatever
! 1457: ** codepage is currently defined. Filenames containing international
! 1458: ** characters must be converted to UTF-8 prior to passing them into
! 1459: ** [sqlite3_open()] or [sqlite3_open_v2()].
1.1 misha 1460: */
1461: int sqlite3_open(
1462: const char *filename, /* Database filename (UTF-8) */
1463: sqlite3 **ppDb /* OUT: SQLite db handle */
1464: );
1465: int sqlite3_open16(
1466: const void *filename, /* Database filename (UTF-16) */
1467: sqlite3 **ppDb /* OUT: SQLite db handle */
1468: );
1.2 ! misha 1469: int sqlite3_open_v2(
! 1470: const char *filename, /* Database filename (UTF-8) */
! 1471: sqlite3 **ppDb, /* OUT: SQLite db handle */
! 1472: int flags, /* Flags */
! 1473: const char *zVfs /* Name of VFS module to use */
! 1474: );
1.1 misha 1475:
1476: /*
1.2 ! misha 1477: ** CAPI3REF: Error Codes And Messages
! 1478: **
! 1479: ** The sqlite3_errcode() interface returns the numeric
! 1480: ** [SQLITE_OK | result code] or [SQLITE_IOERR_READ | extended result code]
! 1481: ** for the most recent failed sqlite3_* API call associated
! 1482: ** with [sqlite3] handle 'db'. If a prior API call failed but the
! 1483: ** most recent API call succeeded, the return value from sqlite3_errcode()
! 1484: ** is undefined.
! 1485: **
! 1486: ** The sqlite3_errmsg() and sqlite3_errmsg16() return English-language
! 1487: ** text that describes the error, as either UTF8 or UTF16 respectively.
! 1488: ** Memory to hold the error message string is managed internally. The
! 1489: ** string may be overwritten or deallocated by subsequent calls to SQLite
! 1490: ** interface functions.
1.1 misha 1491: **
1492: ** Calls to many sqlite3_* functions set the error code and string returned
1.2 ! misha 1493: ** by [sqlite3_errcode()], [sqlite3_errmsg()], and [sqlite3_errmsg16()]
! 1494: ** (overwriting the previous values). Note that calls to [sqlite3_errcode()],
! 1495: ** [sqlite3_errmsg()], and [sqlite3_errmsg16()] themselves do not affect the
! 1496: ** results of future invocations. Calls to API routines that do not return
! 1497: ** an error code (example: [sqlite3_data_count()]) do not
! 1498: ** change the error code returned by this routine. Interfaces that are
! 1499: ** not associated with a specific database connection (examples:
! 1500: ** [sqlite3_mprintf()] or [sqlite3_enable_shared_cache()] do not change
! 1501: ** the return code.
1.1 misha 1502: **
1503: ** Assuming no other intervening sqlite3_* API calls are made, the error
1504: ** code returned by this function is associated with the same error as
1.2 ! misha 1505: ** the strings returned by [sqlite3_errmsg()] and [sqlite3_errmsg16()].
1.1 misha 1506: */
1507: int sqlite3_errcode(sqlite3 *db);
1.2 ! misha 1508: const char *sqlite3_errmsg(sqlite3*);
! 1509: const void *sqlite3_errmsg16(sqlite3*);
1.1 misha 1510:
1511: /*
1.2 ! misha 1512: ** CAPI3REF: SQL Statement Object
! 1513: **
! 1514: ** Instance of this object represent single SQL statements. This
! 1515: ** is variously known as a "prepared statement" or a
! 1516: ** "compiled SQL statement" or simply as a "statement".
! 1517: **
! 1518: ** The life of a statement object goes something like this:
1.1 misha 1519: **
1.2 ! misha 1520: ** <ol>
! 1521: ** <li> Create the object using [sqlite3_prepare_v2()] or a related
! 1522: ** function.
! 1523: ** <li> Bind values to host parameters using
! 1524: ** [sqlite3_bind_blob | sqlite3_bind_* interfaces].
! 1525: ** <li> Run the SQL by calling [sqlite3_step()] one or more times.
! 1526: ** <li> Reset the statement using [sqlite3_reset()] then go back
! 1527: ** to step 2. Do this zero or more times.
! 1528: ** <li> Destroy the object using [sqlite3_finalize()].
! 1529: ** </ol>
1.1 misha 1530: **
1.2 ! misha 1531: ** Refer to documentation on individual methods above for additional
! 1532: ** information.
1.1 misha 1533: */
1534: typedef struct sqlite3_stmt sqlite3_stmt;
1535:
1536: /*
1.2 ! misha 1537: ** CAPI3REF: Compiling An SQL Statement
! 1538: **
1.1 misha 1539: ** To execute an SQL query, it must first be compiled into a byte-code
1.2 ! misha 1540: ** program using one of these routines.
! 1541: **
! 1542: ** The first argument "db" is an [sqlite3 | SQLite database handle]
! 1543: ** obtained from a prior call to [sqlite3_open()], [sqlite3_open_v2()]
! 1544: ** or [sqlite3_open16()].
! 1545: ** The second argument "zSql" is the statement to be compiled, encoded
! 1546: ** as either UTF-8 or UTF-16. The sqlite3_prepare() and sqlite3_prepare_v2()
! 1547: ** interfaces uses UTF-8 and sqlite3_prepare16() and sqlite3_prepare16_v2()
! 1548: ** use UTF-16.
! 1549: **
! 1550: ** If the nByte argument is less
! 1551: ** than zero, then zSql is read up to the first zero terminator. If
! 1552: ** nByte is non-negative, then it is the maximum number of
! 1553: ** bytes read from zSql. When nByte is non-negative, the
! 1554: ** zSql string ends at either the first '\000' character or
! 1555: ** until the nByte-th byte, whichever comes first.
1.1 misha 1556: **
1557: ** *pzTail is made to point to the first byte past the end of the first
1558: ** SQL statement in zSql. This routine only compiles the first statement
1559: ** in zSql, so *pzTail is left pointing to what remains uncompiled.
1560: **
1.2 ! misha 1561: ** *ppStmt is left pointing to a compiled
! 1562: ** [sqlite3_stmt | SQL statement structure] that can be
! 1563: ** executed using [sqlite3_step()]. Or if there is an error, *ppStmt may be
1.1 misha 1564: ** set to NULL. If the input text contained no SQL (if the input is and
1.2 ! misha 1565: ** empty string or a comment) then *ppStmt is set to NULL. The calling
! 1566: ** procedure is responsible for deleting the compiled SQL statement
! 1567: ** using [sqlite3_finalize()] after it has finished with it.
! 1568: **
! 1569: ** On success, [SQLITE_OK] is returned. Otherwise an
! 1570: ** [SQLITE_ERROR | error code] is returned.
! 1571: **
! 1572: ** The sqlite3_prepare_v2() and sqlite3_prepare16_v2() interfaces are
! 1573: ** recommended for all new programs. The two older interfaces are retained
! 1574: ** for backwards compatibility, but their use is discouraged.
! 1575: ** In the "v2" interfaces, the prepared statement
! 1576: ** that is returned (the [sqlite3_stmt] object) contains a copy of the
! 1577: ** original SQL text. This causes the [sqlite3_step()] interface to
! 1578: ** behave a differently in two ways:
! 1579: **
! 1580: ** <ol>
! 1581: ** <li>
! 1582: ** If the database schema changes, instead of returning [SQLITE_SCHEMA] as it
! 1583: ** always used to do, [sqlite3_step()] will automatically recompile the SQL
! 1584: ** statement and try to run it again. If the schema has changed in a way
! 1585: ** that makes the statement no longer valid, [sqlite3_step()] will still
! 1586: ** return [SQLITE_SCHEMA]. But unlike the legacy behavior, [SQLITE_SCHEMA] is
! 1587: ** now a fatal error. Calling [sqlite3_prepare_v2()] again will not make the
! 1588: ** error go away. Note: use [sqlite3_errmsg()] to find the text of the parsing
! 1589: ** error that results in an [SQLITE_SCHEMA] return.
! 1590: ** </li>
! 1591: **
! 1592: ** <li>
! 1593: ** When an error occurs,
! 1594: ** [sqlite3_step()] will return one of the detailed
! 1595: ** [SQLITE_ERROR | result codes] or
! 1596: ** [SQLITE_IOERR_READ | extended result codes] such as directly.
! 1597: ** The legacy behavior was that [sqlite3_step()] would only return a generic
! 1598: ** [SQLITE_ERROR] result code and you would have to make a second call to
! 1599: ** [sqlite3_reset()] in order to find the underlying cause of the problem.
! 1600: ** With the "v2" prepare interfaces, the underlying reason for the error is
! 1601: ** returned immediately.
! 1602: ** </li>
! 1603: ** </ol>
1.1 misha 1604: */
1605: int sqlite3_prepare(
1606: sqlite3 *db, /* Database handle */
1607: const char *zSql, /* SQL statement, UTF-8 encoded */
1.2 ! misha 1608: int nByte, /* Maximum length of zSql in bytes. */
! 1609: sqlite3_stmt **ppStmt, /* OUT: Statement handle */
! 1610: const char **pzTail /* OUT: Pointer to unused portion of zSql */
! 1611: );
! 1612: int sqlite3_prepare_v2(
! 1613: sqlite3 *db, /* Database handle */
! 1614: const char *zSql, /* SQL statement, UTF-8 encoded */
! 1615: int nByte, /* Maximum length of zSql in bytes. */
1.1 misha 1616: sqlite3_stmt **ppStmt, /* OUT: Statement handle */
1617: const char **pzTail /* OUT: Pointer to unused portion of zSql */
1618: );
1619: int sqlite3_prepare16(
1620: sqlite3 *db, /* Database handle */
1621: const void *zSql, /* SQL statement, UTF-16 encoded */
1.2 ! misha 1622: int nByte, /* Maximum length of zSql in bytes. */
! 1623: sqlite3_stmt **ppStmt, /* OUT: Statement handle */
! 1624: const void **pzTail /* OUT: Pointer to unused portion of zSql */
! 1625: );
! 1626: int sqlite3_prepare16_v2(
! 1627: sqlite3 *db, /* Database handle */
! 1628: const void *zSql, /* SQL statement, UTF-16 encoded */
! 1629: int nByte, /* Maximum length of zSql in bytes. */
1.1 misha 1630: sqlite3_stmt **ppStmt, /* OUT: Statement handle */
1631: const void **pzTail /* OUT: Pointer to unused portion of zSql */
1632: );
1633:
1634: /*
1.2 ! misha 1635: ** CAPI3REF: Dynamically Typed Value Object
! 1636: **
! 1637: ** SQLite uses dynamic typing for the values it stores. Values can
! 1638: ** be integers, floating point values, strings, BLOBs, or NULL. When
! 1639: ** passing around values internally, each value is represented as
! 1640: ** an instance of the sqlite3_value object.
! 1641: */
! 1642: typedef struct Mem sqlite3_value;
! 1643:
! 1644: /*
! 1645: ** CAPI3REF: SQL Function Context Object
! 1646: **
! 1647: ** The context in which an SQL function executes is stored in an
! 1648: ** sqlite3_context object. A pointer to such an object is the
! 1649: ** first parameter to user-defined SQL functions.
1.1 misha 1650: */
1651: typedef struct sqlite3_context sqlite3_context;
1652:
1653: /*
1.2 ! misha 1654: ** CAPI3REF: Binding Values To Prepared Statements
! 1655: **
! 1656: ** In the SQL strings input to [sqlite3_prepare_v2()] and its variants,
! 1657: ** one or more literals can be replace by a parameter in one of these
! 1658: ** forms:
! 1659: **
! 1660: ** <ul>
! 1661: ** <li> ?
! 1662: ** <li> ?NNN
! 1663: ** <li> :AAA
! 1664: ** <li> @AAA
! 1665: ** <li> $VVV
! 1666: ** </ul>
! 1667: **
! 1668: ** In the parameter forms shown above NNN is an integer literal,
! 1669: ** AAA is an alphanumeric identifier and VVV is a variable name according
! 1670: ** to the syntax rules of the TCL programming language.
! 1671: ** The values of these parameters (also called "host parameter names")
! 1672: ** can be set using the sqlite3_bind_*() routines defined here.
! 1673: **
! 1674: ** The first argument to the sqlite3_bind_*() routines always is a pointer
! 1675: ** to the [sqlite3_stmt] object returned from [sqlite3_prepare_v2()] or
! 1676: ** its variants. The second
! 1677: ** argument is the index of the parameter to be set. The first parameter has
! 1678: ** an index of 1. When the same named parameter is used more than once, second
! 1679: ** and subsequent
! 1680: ** occurrences have the same index as the first occurrence. The index for
! 1681: ** named parameters can be looked up using the
! 1682: ** [sqlite3_bind_parameter_name()] API if desired. The index for "?NNN"
! 1683: ** parametes is the value of NNN.
! 1684: ** The NNN value must be between 1 and the compile-time
! 1685: ** parameter SQLITE_MAX_VARIABLE_NUMBER (default value: 999).
! 1686: ** See <a href="limits.html">limits.html</a> for additional information.
! 1687: **
! 1688: ** The third argument is the value to bind to the parameter.
! 1689: **
! 1690: ** In those
! 1691: ** routines that have a fourth argument, its value is the number of bytes
! 1692: ** in the parameter. To be clear: the value is the number of bytes in the
! 1693: ** string, not the number of characters. The number
! 1694: ** of bytes does not include the zero-terminator at the end of strings.
! 1695: ** If the fourth parameter is negative, the length of the string is
! 1696: ** number of bytes up to the first zero terminator.
1.1 misha 1697: **
1.2 ! misha 1698: ** The fifth argument to sqlite3_bind_blob(), sqlite3_bind_text(), and
1.1 misha 1699: ** sqlite3_bind_text16() is a destructor used to dispose of the BLOB or
1700: ** text after SQLite has finished with it. If the fifth argument is the
1.2 ! misha 1701: ** special value [SQLITE_STATIC], then the library assumes that the information
1.1 misha 1702: ** is in static, unmanaged space and does not need to be freed. If the
1.2 ! misha 1703: ** fifth argument has the value [SQLITE_TRANSIENT], then SQLite makes its
! 1704: ** own private copy of the data immediately, before the sqlite3_bind_*()
! 1705: ** routine returns.
! 1706: **
! 1707: ** The sqlite3_bind_zeroblob() routine binds a BLOB of length n that
! 1708: ** is filled with zeros. A zeroblob uses a fixed amount of memory
! 1709: ** (just an integer to hold it size) while it is being processed.
! 1710: ** Zeroblobs are intended to serve as place-holders for BLOBs whose
! 1711: ** content is later written using
! 1712: ** [sqlite3_blob_open | increment BLOB I/O] routines. A negative
! 1713: ** value for the zeroblob results in a zero-length BLOB.
! 1714: **
! 1715: ** The sqlite3_bind_*() routines must be called after
! 1716: ** [sqlite3_prepare_v2()] (and its variants) or [sqlite3_reset()] and
! 1717: ** before [sqlite3_step()].
! 1718: ** Bindings are not cleared by the [sqlite3_reset()] routine.
! 1719: ** Unbound parameters are interpreted as NULL.
! 1720: **
! 1721: ** These routines return [SQLITE_OK] on success or an error code if
! 1722: ** anything goes wrong. [SQLITE_RANGE] is returned if the parameter
! 1723: ** index is out of range. [SQLITE_NOMEM] is returned if malloc fails.
! 1724: ** [SQLITE_MISUSE] is returned if these routines are called on a virtual
! 1725: ** machine that is the wrong state or which has already been finalized.
1.1 misha 1726: */
1727: int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*));
1728: int sqlite3_bind_double(sqlite3_stmt*, int, double);
1729: int sqlite3_bind_int(sqlite3_stmt*, int, int);
1.2 ! misha 1730: int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite3_int64);
1.1 misha 1731: int sqlite3_bind_null(sqlite3_stmt*, int);
1732: int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*));
1733: int sqlite3_bind_text16(sqlite3_stmt*, int, const void*, int, void(*)(void*));
1734: int sqlite3_bind_value(sqlite3_stmt*, int, const sqlite3_value*);
1.2 ! misha 1735: int sqlite3_bind_zeroblob(sqlite3_stmt*, int, int n);
1.1 misha 1736:
1737: /*
1.2 ! misha 1738: ** CAPI3REF: Number Of Host Parameters
! 1739: **
! 1740: ** Return the largest host parameter index in the precompiled statement given
! 1741: ** as the argument. When the host parameters are of the forms like ":AAA"
! 1742: ** or "?", then they are assigned sequential increasing numbers beginning
! 1743: ** with one, so the value returned is the number of parameters. However
! 1744: ** if the same host parameter name is used multiple times, each occurrance
! 1745: ** is given the same number, so the value returned in that case is the number
! 1746: ** of unique host parameter names. If host parameters of the form "?NNN"
! 1747: ** are used (where NNN is an integer) then there might be gaps in the
! 1748: ** numbering and the value returned by this interface is the index of the
! 1749: ** host parameter with the largest index value.
! 1750: **
! 1751: ** The prepared statement must not be [sqlite3_finalize | finalized]
! 1752: ** prior to this routine returnning. Otherwise the results are undefined
! 1753: ** and probably undesirable.
1.1 misha 1754: */
1755: int sqlite3_bind_parameter_count(sqlite3_stmt*);
1756:
1757: /*
1.2 ! misha 1758: ** CAPI3REF: Name Of A Host Parameter
! 1759: **
! 1760: ** This routine returns a pointer to the name of the n-th parameter in a
! 1761: ** [sqlite3_stmt | prepared statement].
! 1762: ** Host parameters of the form ":AAA" or "@AAA" or "$VVV" have a name
! 1763: ** which is the string ":AAA" or "@AAA" or "$VVV".
! 1764: ** In other words, the initial ":" or "$" or "@"
! 1765: ** is included as part of the name.
! 1766: ** Parameters of the form "?" or "?NNN" have no name.
! 1767: **
! 1768: ** The first bound parameter has an index of 1, not 0.
! 1769: **
! 1770: ** If the value n is out of range or if the n-th parameter is nameless,
! 1771: ** then NULL is returned. The returned string is always in the
! 1772: ** UTF-8 encoding even if the named parameter was originally specified
! 1773: ** as UTF-16 in [sqlite3_prepare16()] or [sqlite3_prepare16_v2()].
1.1 misha 1774: */
1775: const char *sqlite3_bind_parameter_name(sqlite3_stmt*, int);
1776:
1777: /*
1.2 ! misha 1778: ** CAPI3REF: Index Of A Parameter With A Given Name
! 1779: **
! 1780: ** This routine returns the index of a host parameter with the given name.
! 1781: ** The name must match exactly. If no parameter with the given name is
! 1782: ** found, return 0. Parameter names must be UTF8.
1.1 misha 1783: */
1784: int sqlite3_bind_parameter_index(sqlite3_stmt*, const char *zName);
1785:
1786: /*
1.2 ! misha 1787: ** CAPI3REF: Reset All Bindings On A Prepared Statement
! 1788: **
! 1789: ** Contrary to the intuition of many, [sqlite3_reset()] does not
! 1790: ** reset the [sqlite3_bind_blob | bindings] on a
! 1791: ** [sqlite3_stmt | prepared statement]. Use this routine to
! 1792: ** reset all host parameters to NULL.
1.1 misha 1793: */
1.2 ! misha 1794: int sqlite3_clear_bindings(sqlite3_stmt*);
1.1 misha 1795:
1796: /*
1.2 ! misha 1797: ** CAPI3REF: Number Of Columns In A Result Set
! 1798: **
! 1799: ** Return the number of columns in the result set returned by the
! 1800: ** [sqlite3_stmt | compiled SQL statement]. This routine returns 0
! 1801: ** if pStmt is an SQL statement that does not return data (for
! 1802: ** example an UPDATE).
! 1803: */
! 1804: int sqlite3_column_count(sqlite3_stmt *pStmt);
1.1 misha 1805:
1806: /*
1.2 ! misha 1807: ** CAPI3REF: Column Names In A Result Set
! 1808: **
! 1809: ** These routines return the name assigned to a particular column
! 1810: ** in the result set of a SELECT statement. The sqlite3_column_name()
! 1811: ** interface returns a pointer to a UTF8 string and sqlite3_column_name16()
! 1812: ** returns a pointer to a UTF16 string. The first parameter is the
! 1813: ** [sqlite3_stmt | prepared statement] that implements the SELECT statement.
! 1814: ** The second parameter is the column number. The left-most column is
! 1815: ** number 0.
! 1816: **
! 1817: ** The returned string pointer is valid until either the
! 1818: ** [sqlite3_stmt | prepared statement] is destroyed by [sqlite3_finalize()]
! 1819: ** or until the next call sqlite3_column_name() or sqlite3_column_name16()
! 1820: ** on the same column.
! 1821: **
! 1822: ** If sqlite3_malloc() fails during the processing of either routine
! 1823: ** (for example during a conversion from UTF-8 to UTF-16) then a
! 1824: ** NULL pointer is returned.
! 1825: */
! 1826: const char *sqlite3_column_name(sqlite3_stmt*, int N);
! 1827: const void *sqlite3_column_name16(sqlite3_stmt*, int N);
! 1828:
! 1829: /*
! 1830: ** CAPI3REF: Source Of Data In A Query Result
! 1831: **
! 1832: ** These routines provide a means to determine what column of what
! 1833: ** table in which database a result of a SELECT statement comes from.
! 1834: ** The name of the database or table or column can be returned as
! 1835: ** either a UTF8 or UTF16 string. The _database_ routines return
! 1836: ** the database name, the _table_ routines return the table name, and
! 1837: ** the origin_ routines return the column name.
! 1838: ** The returned string is valid until
! 1839: ** the [sqlite3_stmt | prepared statement] is destroyed using
! 1840: ** [sqlite3_finalize()] or until the same information is requested
! 1841: ** again in a different encoding.
! 1842: **
! 1843: ** The names returned are the original un-aliased names of the
! 1844: ** database, table, and column.
! 1845: **
! 1846: ** The first argument to the following calls is a
! 1847: ** [sqlite3_stmt | compiled SQL statement].
! 1848: ** These functions return information about the Nth column returned by
! 1849: ** the statement, where N is the second function argument.
! 1850: **
! 1851: ** If the Nth column returned by the statement is an expression
! 1852: ** or subquery and is not a column value, then all of these functions
! 1853: ** return NULL. Otherwise, they return the
! 1854: ** name of the attached database, table and column that query result
! 1855: ** column was extracted from.
! 1856: **
! 1857: ** As with all other SQLite APIs, those postfixed with "16" return UTF-16
! 1858: ** encoded strings, the other functions return UTF-8.
! 1859: **
! 1860: ** These APIs are only available if the library was compiled with the
! 1861: ** SQLITE_ENABLE_COLUMN_METADATA preprocessor symbol defined.
! 1862: **
! 1863: ** If two or more threads call one or more of these routines against the same
! 1864: ** prepared statement and column at the same time then the results are
! 1865: ** undefined.
! 1866: */
! 1867: const char *sqlite3_column_database_name(sqlite3_stmt*,int);
! 1868: const void *sqlite3_column_database_name16(sqlite3_stmt*,int);
! 1869: const char *sqlite3_column_table_name(sqlite3_stmt*,int);
! 1870: const void *sqlite3_column_table_name16(sqlite3_stmt*,int);
! 1871: const char *sqlite3_column_origin_name(sqlite3_stmt*,int);
! 1872: const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
! 1873:
! 1874: /*
! 1875: ** CAPI3REF: Declared Datatype Of A Query Result
! 1876: **
! 1877: ** The first parameter is a [sqlite3_stmt | compiled SQL statement].
! 1878: ** If this statement is a SELECT statement and the Nth column of the
! 1879: ** returned result set of that SELECT is a table column (not an
! 1880: ** expression or subquery) then the declared type of the table
! 1881: ** column is returned. If the Nth column of the result set is an
! 1882: ** expression or subquery, then a NULL pointer is returned.
! 1883: ** The returned string is always UTF-8 encoded. For example, in
! 1884: ** the database schema:
1.1 misha 1885: **
1886: ** CREATE TABLE t1(c1 VARIANT);
1887: **
1888: ** And the following statement compiled:
1889: **
1.2 ! misha 1890: ** SELECT c1 + 1, c1 FROM t1;
1.1 misha 1891: **
1892: ** Then this routine would return the string "VARIANT" for the second
1893: ** result column (i==1), and a NULL pointer for the first result column
1894: ** (i==0).
1.2 ! misha 1895: **
! 1896: ** SQLite uses dynamic run-time typing. So just because a column
! 1897: ** is declared to contain a particular type does not mean that the
! 1898: ** data stored in that column is of the declared type. SQLite is
! 1899: ** strongly typed, but the typing is dynamic not static. Type
! 1900: ** is associated with individual values, not with the containers
! 1901: ** used to hold those values.
1.1 misha 1902: */
1903: const char *sqlite3_column_decltype(sqlite3_stmt *, int i);
1904: const void *sqlite3_column_decltype16(sqlite3_stmt*,int);
1905:
1906: /*
1.2 ! misha 1907: ** CAPI3REF: Evaluate An SQL Statement
! 1908: **
! 1909: ** After an [sqlite3_stmt | SQL statement] has been prepared with a call
! 1910: ** to either [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()] or to one of
! 1911: ** the legacy interfaces [sqlite3_prepare()] or [sqlite3_prepare16()],
! 1912: ** then this function must be called one or more times to evaluate the
! 1913: ** statement.
! 1914: **
! 1915: ** The details of the behavior of this sqlite3_step() interface depend
! 1916: ** on whether the statement was prepared using the newer "v2" interface
! 1917: ** [sqlite3_prepare_v2()] and [sqlite3_prepare16_v2()] or the older legacy
! 1918: ** interface [sqlite3_prepare()] and [sqlite3_prepare16()]. The use of the
! 1919: ** new "v2" interface is recommended for new applications but the legacy
! 1920: ** interface will continue to be supported.
! 1921: **
! 1922: ** In the lagacy interface, the return value will be either [SQLITE_BUSY],
! 1923: ** [SQLITE_DONE], [SQLITE_ROW], [SQLITE_ERROR], or [SQLITE_MISUSE].
! 1924: ** With the "v2" interface, any of the other [SQLITE_OK | result code]
! 1925: ** or [SQLITE_IOERR_READ | extended result code] might be returned as
! 1926: ** well.
! 1927: **
! 1928: ** [SQLITE_BUSY] means that the database engine was unable to acquire the
! 1929: ** database locks it needs to do its job. If the statement is a COMMIT
! 1930: ** or occurs outside of an explicit transaction, then you can retry the
! 1931: ** statement. If the statement is not a COMMIT and occurs within a
! 1932: ** explicit transaction then you should rollback the transaction before
! 1933: ** continuing.
1.1 misha 1934: **
1.2 ! misha 1935: ** [SQLITE_DONE] means that the statement has finished executing
1.1 misha 1936: ** successfully. sqlite3_step() should not be called again on this virtual
1.2 ! misha 1937: ** machine without first calling [sqlite3_reset()] to reset the virtual
! 1938: ** machine back to its initial state.
1.1 misha 1939: **
1940: ** If the SQL statement being executed returns any data, then
1.2 ! misha 1941: ** [SQLITE_ROW] is returned each time a new row of data is ready
1.1 misha 1942: ** for processing by the caller. The values may be accessed using
1.2 ! misha 1943: ** the [sqlite3_column_int | column access functions].
! 1944: ** sqlite3_step() is called again to retrieve the next row of data.
1.1 misha 1945: **
1.2 ! misha 1946: ** [SQLITE_ERROR] means that a run-time error (such as a constraint
1.1 misha 1947: ** violation) has occurred. sqlite3_step() should not be called again on
1.2 ! misha 1948: ** the VM. More information may be found by calling [sqlite3_errmsg()].
! 1949: ** With the legacy interface, a more specific error code (example:
! 1950: ** [SQLITE_INTERRUPT], [SQLITE_SCHEMA], [SQLITE_CORRUPT], and so forth)
! 1951: ** can be obtained by calling [sqlite3_reset()] on the
! 1952: ** [sqlite3_stmt | prepared statement]. In the "v2" interface,
! 1953: ** the more specific error code is returned directly by sqlite3_step().
! 1954: **
! 1955: ** [SQLITE_MISUSE] means that the this routine was called inappropriately.
! 1956: ** Perhaps it was called on a [sqlite3_stmt | prepared statement] that has
! 1957: ** already been [sqlite3_finalize | finalized] or on one that had
! 1958: ** previously returned [SQLITE_ERROR] or [SQLITE_DONE]. Or it could
! 1959: ** be the case that the same database connection is being used by two or
! 1960: ** more threads at the same moment in time.
! 1961: **
! 1962: ** <b>Goofy Interface Alert:</b>
! 1963: ** In the legacy interface,
! 1964: ** the sqlite3_step() API always returns a generic error code,
! 1965: ** [SQLITE_ERROR], following any error other than [SQLITE_BUSY]
! 1966: ** and [SQLITE_MISUSE]. You must call [sqlite3_reset()] or
! 1967: ** [sqlite3_finalize()] in order to find one of the specific
! 1968: ** [SQLITE_ERROR | result codes] that better describes the error.
! 1969: ** We admit that this is a goofy design. The problem has been fixed
! 1970: ** with the "v2" interface. If you prepare all of your SQL statements
! 1971: ** using either [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()] instead
! 1972: ** of the legacy [sqlite3_prepare()] and [sqlite3_prepare16()], then the
! 1973: ** more specific [SQLITE_ERROR | result codes] are returned directly
! 1974: ** by sqlite3_step(). The use of the "v2" interface is recommended.
1.1 misha 1975: */
1976: int sqlite3_step(sqlite3_stmt*);
1977:
1978: /*
1.2 ! misha 1979: ** CAPI3REF:
! 1980: **
1.1 misha 1981: ** Return the number of values in the current row of the result set.
1982: **
1.2 ! misha 1983: ** After a call to [sqlite3_step()] that returns [SQLITE_ROW], this routine
! 1984: ** will return the same value as the [sqlite3_column_count()] function.
! 1985: ** After [sqlite3_step()] has returned an [SQLITE_DONE], [SQLITE_BUSY], or
! 1986: ** a [SQLITE_ERROR | error code], or before [sqlite3_step()] has been
! 1987: ** called on the [sqlite3_stmt | prepared statement] for the first time,
! 1988: ** this routine returns zero.
1.1 misha 1989: */
1990: int sqlite3_data_count(sqlite3_stmt *pStmt);
1991:
1992: /*
1.2 ! misha 1993: ** CAPI3REF: Fundamental Datatypes
! 1994: **
! 1995: ** Every value in SQLite has one of five fundamental datatypes:
! 1996: **
! 1997: ** <ul>
! 1998: ** <li> 64-bit signed integer
! 1999: ** <li> 64-bit IEEE floating point number
! 2000: ** <li> string
! 2001: ** <li> BLOB
! 2002: ** <li> NULL
! 2003: ** </ul>
! 2004: **
! 2005: ** These constants are codes for each of those types.
! 2006: **
! 2007: ** Note that the SQLITE_TEXT constant was also used in SQLite version 2
! 2008: ** for a completely different meaning. Software that links against both
! 2009: ** SQLite version 2 and SQLite version 3 should use SQLITE3_TEXT not
! 2010: ** SQLITE_TEXT.
1.1 misha 2011: */
2012: #define SQLITE_INTEGER 1
2013: #define SQLITE_FLOAT 2
2014: #define SQLITE_BLOB 4
2015: #define SQLITE_NULL 5
2016: #ifdef SQLITE_TEXT
2017: # undef SQLITE_TEXT
2018: #else
2019: # define SQLITE_TEXT 3
2020: #endif
2021: #define SQLITE3_TEXT 3
2022:
2023: /*
1.2 ! misha 2024: ** CAPI3REF: Results Values From A Query
! 2025: **
! 2026: ** These routines return information about
! 2027: ** a single column of the current result row of a query. In every
! 2028: ** case the first argument is a pointer to the
! 2029: ** [sqlite3_stmt | SQL statement] that is being
! 2030: ** evaluated (the [sqlite3_stmt*] that was returned from
! 2031: ** [sqlite3_prepare_v2()] or one of its variants) and
1.1 misha 2032: ** the second argument is the index of the column for which information
1.2 ! misha 2033: ** should be returned. The left-most column of the result set
! 2034: ** has an index of 0.
1.1 misha 2035: **
2036: ** If the SQL statement is not currently point to a valid row, or if the
1.2 ! misha 2037: ** the column index is out of range, the result is undefined.
! 2038: ** These routines may only be called when the most recent call to
! 2039: ** [sqlite3_step()] has returned [SQLITE_ROW] and neither
! 2040: ** [sqlite3_reset()] nor [sqlite3_finalize()] has been call subsequently.
! 2041: ** If any of these routines are called after [sqlite3_reset()] or
! 2042: ** [sqlite3_finalize()] or after [sqlite3_step()] has returned
! 2043: ** something other than [SQLITE_ROW], the results are undefined.
! 2044: ** If [sqlite3_step()] or [sqlite3_reset()] or [sqlite3_finalize()]
! 2045: ** are called from a different thread while any of these routines
! 2046: ** are pending, then the results are undefined.
! 2047: **
! 2048: ** The sqlite3_column_type() routine returns
! 2049: ** [SQLITE_INTEGER | datatype code] for the initial data type
! 2050: ** of the result column. The returned value is one of [SQLITE_INTEGER],
! 2051: ** [SQLITE_FLOAT], [SQLITE_TEXT], [SQLITE_BLOB], or [SQLITE_NULL]. The value
! 2052: ** returned by sqlite3_column_type() is only meaningful if no type
! 2053: ** conversions have occurred as described below. After a type conversion,
! 2054: ** the value returned by sqlite3_column_type() is undefined. Future
! 2055: ** versions of SQLite may change the behavior of sqlite3_column_type()
! 2056: ** following a type conversion.
! 2057: **
! 2058: ** If the result is a BLOB or UTF-8 string then the sqlite3_column_bytes()
! 2059: ** routine returns the number of bytes in that BLOB or string.
! 2060: ** If the result is a UTF-16 string, then sqlite3_column_bytes() converts
! 2061: ** the string to UTF-8 and then returns the number of bytes.
! 2062: ** If the result is a numeric value then sqlite3_column_bytes() uses
! 2063: ** [sqlite3_snprintf()] to convert that value to a UTF-8 string and returns
! 2064: ** the number of bytes in that string.
! 2065: ** The value returned does not include the zero terminator at the end
! 2066: ** of the string. For clarity: the value returned is the number of
! 2067: ** bytes in the string, not the number of characters.
! 2068: **
! 2069: ** Strings returned by sqlite3_column_text() and sqlite3_column_text16(),
! 2070: ** even zero-length strings, are always zero terminated. The return
! 2071: ** value from sqlite3_column_blob() for a zero-length blob is an arbitrary
! 2072: ** pointer, possibly even a NULL pointer.
! 2073: **
! 2074: ** The sqlite3_column_bytes16() routine is similar to sqlite3_column_bytes()
! 2075: ** but leaves the result in UTF-16 instead of UTF-8.
! 2076: ** The zero terminator is not included in this count.
1.1 misha 2077: **
2078: ** These routines attempt to convert the value where appropriate. For
2079: ** example, if the internal representation is FLOAT and a text result
1.2 ! misha 2080: ** is requested, [sqlite3_snprintf()] is used internally to do the conversion
1.1 misha 2081: ** automatically. The following table details the conversions that
2082: ** are applied:
2083: **
1.2 ! misha 2084: ** <blockquote>
! 2085: ** <table border="1">
! 2086: ** <tr><th> Internal<br>Type <th> Requested<br>Type <th> Conversion
! 2087: **
! 2088: ** <tr><td> NULL <td> INTEGER <td> Result is 0
! 2089: ** <tr><td> NULL <td> FLOAT <td> Result is 0.0
! 2090: ** <tr><td> NULL <td> TEXT <td> Result is NULL pointer
! 2091: ** <tr><td> NULL <td> BLOB <td> Result is NULL pointer
! 2092: ** <tr><td> INTEGER <td> FLOAT <td> Convert from integer to float
! 2093: ** <tr><td> INTEGER <td> TEXT <td> ASCII rendering of the integer
! 2094: ** <tr><td> INTEGER <td> BLOB <td> Same as for INTEGER->TEXT
! 2095: ** <tr><td> FLOAT <td> INTEGER <td> Convert from float to integer
! 2096: ** <tr><td> FLOAT <td> TEXT <td> ASCII rendering of the float
! 2097: ** <tr><td> FLOAT <td> BLOB <td> Same as FLOAT->TEXT
! 2098: ** <tr><td> TEXT <td> INTEGER <td> Use atoi()
! 2099: ** <tr><td> TEXT <td> FLOAT <td> Use atof()
! 2100: ** <tr><td> TEXT <td> BLOB <td> No change
! 2101: ** <tr><td> BLOB <td> INTEGER <td> Convert to TEXT then use atoi()
! 2102: ** <tr><td> BLOB <td> FLOAT <td> Convert to TEXT then use atof()
! 2103: ** <tr><td> BLOB <td> TEXT <td> Add a zero terminator if needed
! 2104: ** </table>
! 2105: ** </blockquote>
! 2106: **
! 2107: ** The table above makes reference to standard C library functions atoi()
! 2108: ** and atof(). SQLite does not really use these functions. It has its
! 2109: ** on equavalent internal routines. The atoi() and atof() names are
! 2110: ** used in the table for brevity and because they are familiar to most
! 2111: ** C programmers.
! 2112: **
! 2113: ** Note that when type conversions occur, pointers returned by prior
! 2114: ** calls to sqlite3_column_blob(), sqlite3_column_text(), and/or
! 2115: ** sqlite3_column_text16() may be invalidated.
! 2116: ** Type conversions and pointer invalidations might occur
! 2117: ** in the following cases:
! 2118: **
! 2119: ** <ul>
! 2120: ** <li><p> The initial content is a BLOB and sqlite3_column_text()
! 2121: ** or sqlite3_column_text16() is called. A zero-terminator might
! 2122: ** need to be added to the string.</p></li>
! 2123: **
! 2124: ** <li><p> The initial content is UTF-8 text and sqlite3_column_bytes16() or
! 2125: ** sqlite3_column_text16() is called. The content must be converted
! 2126: ** to UTF-16.</p></li>
! 2127: **
! 2128: ** <li><p> The initial content is UTF-16 text and sqlite3_column_bytes() or
! 2129: ** sqlite3_column_text() is called. The content must be converted
! 2130: ** to UTF-8.</p></li>
! 2131: ** </ul>
! 2132: **
! 2133: ** Conversions between UTF-16be and UTF-16le are always done in place and do
! 2134: ** not invalidate a prior pointer, though of course the content of the buffer
! 2135: ** that the prior pointer points to will have been modified. Other kinds
! 2136: ** of conversion are done in place when it is possible, but sometime it is
! 2137: ** not possible and in those cases prior pointers are invalidated.
! 2138: **
! 2139: ** The safest and easiest to remember policy is to invoke these routines
! 2140: ** in one of the following ways:
! 2141: **
! 2142: ** <ul>
! 2143: ** <li>sqlite3_column_text() followed by sqlite3_column_bytes()</li>
! 2144: ** <li>sqlite3_column_blob() followed by sqlite3_column_bytes()</li>
! 2145: ** <li>sqlite3_column_text16() followed by sqlite3_column_bytes16()</li>
! 2146: ** </ul>
! 2147: **
! 2148: ** In other words, you should call sqlite3_column_text(), sqlite3_column_blob(),
! 2149: ** or sqlite3_column_text16() first to force the result into the desired
! 2150: ** format, then invoke sqlite3_column_bytes() or sqlite3_column_bytes16() to
! 2151: ** find the size of the result. Do not mix call to sqlite3_column_text() or
! 2152: ** sqlite3_column_blob() with calls to sqlite3_column_bytes16(). And do not
! 2153: ** mix calls to sqlite3_column_text16() with calls to sqlite3_column_bytes().
! 2154: **
! 2155: ** The pointers returned are valid until a type conversion occurs as
! 2156: ** described above, or until [sqlite3_step()] or [sqlite3_reset()] or
! 2157: ** [sqlite3_finalize()] is called. The memory space used to hold strings
! 2158: ** and blobs is freed automatically. Do <b>not</b> pass the pointers returned
! 2159: ** [sqlite3_column_blob()], [sqlite3_column_text()], etc. into
! 2160: ** [sqlite3_free()].
! 2161: **
! 2162: ** If a memory allocation error occurs during the evaluation of any
! 2163: ** of these routines, a default value is returned. The default value
! 2164: ** is either the integer 0, the floating point number 0.0, or a NULL
! 2165: ** pointer. Subsequent calls to [sqlite3_errcode()] will return
! 2166: ** [SQLITE_NOMEM].
1.1 misha 2167: */
2168: const void *sqlite3_column_blob(sqlite3_stmt*, int iCol);
2169: int sqlite3_column_bytes(sqlite3_stmt*, int iCol);
2170: int sqlite3_column_bytes16(sqlite3_stmt*, int iCol);
2171: double sqlite3_column_double(sqlite3_stmt*, int iCol);
2172: int sqlite3_column_int(sqlite3_stmt*, int iCol);
1.2 ! misha 2173: sqlite3_int64 sqlite3_column_int64(sqlite3_stmt*, int iCol);
1.1 misha 2174: const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);
2175: const void *sqlite3_column_text16(sqlite3_stmt*, int iCol);
2176: int sqlite3_column_type(sqlite3_stmt*, int iCol);
1.2 ! misha 2177: sqlite3_value *sqlite3_column_value(sqlite3_stmt*, int iCol);
1.1 misha 2178:
2179: /*
1.2 ! misha 2180: ** CAPI3REF: Destroy A Prepared Statement Object
! 2181: **
! 2182: ** The sqlite3_finalize() function is called to delete a
! 2183: ** [sqlite3_stmt | compiled SQL statement]. If the statement was
! 2184: ** executed successfully, or not executed at all, then SQLITE_OK is returned.
! 2185: ** If execution of the statement failed then an
! 2186: ** [SQLITE_ERROR | error code] or [SQLITE_IOERR_READ | extended error code]
! 2187: ** is returned.
1.1 misha 2188: **
2189: ** This routine can be called at any point during the execution of the
1.2 ! misha 2190: ** [sqlite3_stmt | virtual machine]. If the virtual machine has not
! 2191: ** completed execution when this routine is called, that is like
! 2192: ** encountering an error or an interrupt. (See [sqlite3_interrupt()].)
! 2193: ** Incomplete updates may be rolled back and transactions cancelled,
! 2194: ** depending on the circumstances, and the
! 2195: ** [SQLITE_ERROR | result code] returned will be [SQLITE_ABORT].
1.1 misha 2196: */
2197: int sqlite3_finalize(sqlite3_stmt *pStmt);
2198:
2199: /*
1.2 ! misha 2200: ** CAPI3REF: Reset A Prepared Statement Object
! 2201: **
! 2202: ** The sqlite3_reset() function is called to reset a
! 2203: ** [sqlite3_stmt | compiled SQL statement] object.
! 2204: ** back to it's initial state, ready to be re-executed.
1.1 misha 2205: ** Any SQL statement variables that had values bound to them using
1.2 ! misha 2206: ** the [sqlite3_bind_blob | sqlite3_bind_*() API] retain their values.
! 2207: ** Use [sqlite3_clear_bindings()] to reset the bindings.
1.1 misha 2208: */
2209: int sqlite3_reset(sqlite3_stmt *pStmt);
2210:
2211: /*
1.2 ! misha 2212: ** CAPI3REF: Create Or Redefine SQL Functions
! 2213: **
! 2214: ** The following two functions are used to add SQL functions or aggregates
! 2215: ** or to redefine the behavior of existing SQL functions or aggregates. The
1.1 misha 2216: ** difference only between the two is that the second parameter, the
2217: ** name of the (scalar) function or aggregate, is encoded in UTF-8 for
2218: ** sqlite3_create_function() and UTF-16 for sqlite3_create_function16().
2219: **
1.2 ! misha 2220: ** The first argument is the [sqlite3 | database handle] that holds the
! 2221: ** SQL function or aggregate is to be added or redefined. If a single
! 2222: ** program uses more than one database handle internally, then SQL
! 2223: ** functions or aggregates must be added individually to each database
! 2224: ** handle with which they will be used.
! 2225: **
! 2226: ** The second parameter is the name of the SQL function to be created
! 2227: ** or redefined.
! 2228: ** The length of the name is limited to 255 bytes, exclusive of the
! 2229: ** zero-terminator. Note that the name length limit is in bytes, not
! 2230: ** characters. Any attempt to create a function with a longer name
! 2231: ** will result in an SQLITE_ERROR error.
1.1 misha 2232: **
1.2 ! misha 2233: ** The third parameter is the number of arguments that the SQL function or
! 2234: ** aggregate takes. If this parameter is negative, then the SQL function or
1.1 misha 2235: ** aggregate may take any number of arguments.
2236: **
1.2 ! misha 2237: ** The fourth parameter, eTextRep, specifies what
! 2238: ** [SQLITE_UTF8 | text encoding] this SQL function prefers for
! 2239: ** its parameters. Any SQL function implementation should be able to work
! 2240: ** work with UTF-8, UTF-16le, or UTF-16be. But some implementations may be
! 2241: ** more efficient with one encoding than another. It is allowed to
! 2242: ** invoke sqlite3_create_function() or sqlite3_create_function16() multiple
! 2243: ** times with the same function but with different values of eTextRep.
! 2244: ** When multiple implementations of the same function are available, SQLite
! 2245: ** will pick the one that involves the least amount of data conversion.
! 2246: ** If there is only a single implementation which does not care what
! 2247: ** text encoding is used, then the fourth argument should be
! 2248: ** [SQLITE_ANY].
! 2249: **
! 2250: ** The fifth parameter is an arbitrary pointer. The implementation
! 2251: ** of the function can gain access to this pointer using
! 2252: ** [sqlite3_user_data()].
1.1 misha 2253: **
2254: ** The seventh, eighth and ninth parameters, xFunc, xStep and xFinal, are
1.2 ! misha 2255: ** pointers to C-language functions that implement the SQL
! 2256: ** function or aggregate. A scalar SQL function requires an implementation of
1.1 misha 2257: ** the xFunc callback only, NULL pointers should be passed as the xStep
1.2 ! misha 2258: ** and xFinal parameters. An aggregate SQL function requires an implementation
! 2259: ** of xStep and xFinal and NULL should be passed for xFunc. To delete an
! 2260: ** existing SQL function or aggregate, pass NULL for all three function
! 2261: ** callback.
! 2262: **
! 2263: ** It is permitted to register multiple implementations of the same
! 2264: ** functions with the same name but with either differing numbers of
! 2265: ** arguments or differing perferred text encodings. SQLite will use
! 2266: ** the implementation most closely matches the way in which the
! 2267: ** SQL function is used.
1.1 misha 2268: */
2269: int sqlite3_create_function(
2270: sqlite3 *,
2271: const char *zFunctionName,
2272: int nArg,
2273: int eTextRep,
2274: void*,
2275: void (*xFunc)(sqlite3_context*,int,sqlite3_value**),
2276: void (*xStep)(sqlite3_context*,int,sqlite3_value**),
2277: void (*xFinal)(sqlite3_context*)
2278: );
2279: int sqlite3_create_function16(
2280: sqlite3*,
2281: const void *zFunctionName,
2282: int nArg,
2283: int eTextRep,
2284: void*,
2285: void (*xFunc)(sqlite3_context*,int,sqlite3_value**),
2286: void (*xStep)(sqlite3_context*,int,sqlite3_value**),
2287: void (*xFinal)(sqlite3_context*)
2288: );
2289:
2290: /*
1.2 ! misha 2291: ** CAPI3REF: Text Encodings
! 2292: **
! 2293: ** These constant define integer codes that represent the various
! 2294: ** text encodings supported by SQLite.
! 2295: */
! 2296: #define SQLITE_UTF8 1
! 2297: #define SQLITE_UTF16LE 2
! 2298: #define SQLITE_UTF16BE 3
! 2299: #define SQLITE_UTF16 4 /* Use native byte order */
! 2300: #define SQLITE_ANY 5 /* sqlite3_create_function only */
! 2301: #define SQLITE_UTF16_ALIGNED 8 /* sqlite3_create_collation only */
! 2302:
! 2303: /*
! 2304: ** CAPI3REF: Obsolete Functions
! 2305: **
! 2306: ** These functions are all now obsolete. In order to maintain
! 2307: ** backwards compatibility with older code, we continue to support
! 2308: ** these functions. However, new development projects should avoid
! 2309: ** the use of these functions. To help encourage people to avoid
! 2310: ** using these functions, we are not going to tell you want they do.
1.1 misha 2311: */
2312: int sqlite3_aggregate_count(sqlite3_context*);
1.2 ! misha 2313: int sqlite3_expired(sqlite3_stmt*);
! 2314: int sqlite3_transfer_bindings(sqlite3_stmt*, sqlite3_stmt*);
! 2315: int sqlite3_global_recover(void);
! 2316: void sqlite3_thread_cleanup(void);
! 2317:
! 2318: /*
! 2319: ** CAPI3REF: Obtaining SQL Function Parameter Values
! 2320: **
! 2321: ** The C-language implementation of SQL functions and aggregates uses
! 2322: ** this set of interface routines to access the parameter values on
! 2323: ** the function or aggregate.
! 2324: **
! 2325: ** The xFunc (for scalar functions) or xStep (for aggregates) parameters
! 2326: ** to [sqlite3_create_function()] and [sqlite3_create_function16()]
! 2327: ** define callbacks that implement the SQL functions and aggregates.
! 2328: ** The 4th parameter to these callbacks is an array of pointers to
! 2329: ** [sqlite3_value] objects. There is one [sqlite3_value] object for
! 2330: ** each parameter to the SQL function. These routines are used to
! 2331: ** extract values from the [sqlite3_value] objects.
! 2332: **
! 2333: ** These routines work just like the corresponding
! 2334: ** [sqlite3_column_blob | sqlite3_column_* routines] except that
! 2335: ** these routines take a single [sqlite3_value*] pointer instead
! 2336: ** of an [sqlite3_stmt*] pointer and an integer column number.
! 2337: **
! 2338: ** The sqlite3_value_text16() interface extracts a UTF16 string
! 2339: ** in the native byte-order of the host machine. The
! 2340: ** sqlite3_value_text16be() and sqlite3_value_text16le() interfaces
! 2341: ** extract UTF16 strings as big-endian and little-endian respectively.
! 2342: **
! 2343: ** The sqlite3_value_numeric_type() interface attempts to apply
! 2344: ** numeric affinity to the value. This means that an attempt is
! 2345: ** made to convert the value to an integer or floating point. If
! 2346: ** such a conversion is possible without loss of information (in order
! 2347: ** words if the value is original a string that looks like a number)
! 2348: ** then it is done. Otherwise no conversion occurs. The
! 2349: ** [SQLITE_INTEGER | datatype] after conversion is returned.
! 2350: **
! 2351: ** Please pay particular attention to the fact that the pointer that
! 2352: ** is returned from [sqlite3_value_blob()], [sqlite3_value_text()], or
! 2353: ** [sqlite3_value_text16()] can be invalidated by a subsequent call to
! 2354: ** [sqlite3_value_bytes()], [sqlite3_value_bytes16()], [sqlite3_value_text()],
! 2355: ** or [sqlite3_value_text16()].
! 2356: **
! 2357: ** These routines must be called from the same thread as
! 2358: ** the SQL function that supplied the sqlite3_value* parameters.
! 2359: ** Or, if the sqlite3_value* argument comes from the [sqlite3_column_value()]
! 2360: ** interface, then these routines should be called from the same thread
! 2361: ** that ran [sqlite3_column_value()].
1.1 misha 2362: */
2363: const void *sqlite3_value_blob(sqlite3_value*);
2364: int sqlite3_value_bytes(sqlite3_value*);
2365: int sqlite3_value_bytes16(sqlite3_value*);
2366: double sqlite3_value_double(sqlite3_value*);
2367: int sqlite3_value_int(sqlite3_value*);
1.2 ! misha 2368: sqlite3_int64 sqlite3_value_int64(sqlite3_value*);
1.1 misha 2369: const unsigned char *sqlite3_value_text(sqlite3_value*);
2370: const void *sqlite3_value_text16(sqlite3_value*);
2371: const void *sqlite3_value_text16le(sqlite3_value*);
2372: const void *sqlite3_value_text16be(sqlite3_value*);
2373: int sqlite3_value_type(sqlite3_value*);
1.2 ! misha 2374: int sqlite3_value_numeric_type(sqlite3_value*);
1.1 misha 2375:
2376: /*
1.2 ! misha 2377: ** CAPI3REF: Obtain Aggregate Function Context
! 2378: **
! 2379: ** The implementation of aggregate SQL functions use this routine to allocate
1.1 misha 2380: ** a structure for storing their state. The first time this routine
2381: ** is called for a particular aggregate, a new structure of size nBytes
2382: ** is allocated, zeroed, and returned. On subsequent calls (for the
2383: ** same aggregate instance) the same buffer is returned. The implementation
2384: ** of the aggregate can use the returned buffer to accumulate data.
2385: **
1.2 ! misha 2386: ** The buffer allocated is freed automatically by SQLite whan the aggregate
! 2387: ** query concludes.
! 2388: **
! 2389: ** The first parameter should be a copy of the
! 2390: ** [sqlite3_context | SQL function context] that is the first
! 2391: ** parameter to the callback routine that implements the aggregate
! 2392: ** function.
! 2393: **
! 2394: ** This routine must be called from the same thread in which
! 2395: ** the aggregate SQL function is running.
1.1 misha 2396: */
2397: void *sqlite3_aggregate_context(sqlite3_context*, int nBytes);
2398:
2399: /*
1.2 ! misha 2400: ** CAPI3REF: User Data For Functions
! 2401: **
! 2402: ** The pUserData parameter to the [sqlite3_create_function()]
! 2403: ** and [sqlite3_create_function16()] routines
! 2404: ** used to register user functions is available to
! 2405: ** the implementation of the function using this call.
! 2406: **
! 2407: ** This routine must be called from the same thread in which
! 2408: ** the SQL function is running.
1.1 misha 2409: */
2410: void *sqlite3_user_data(sqlite3_context*);
2411:
2412: /*
1.2 ! misha 2413: ** CAPI3REF: Function Auxiliary Data
! 2414: **
! 2415: ** The following two functions may be used by scalar SQL functions to
1.1 misha 2416: ** associate meta-data with argument values. If the same value is passed to
1.2 ! misha 2417: ** multiple invocations of the same SQL function during query execution, under
1.1 misha 2418: ** some circumstances the associated meta-data may be preserved. This may
2419: ** be used, for example, to add a regular-expression matching scalar
2420: ** function. The compiled version of the regular expression is stored as
2421: ** meta-data associated with the SQL value passed as the regular expression
1.2 ! misha 2422: ** pattern. The compiled regular expression can be reused on multiple
! 2423: ** invocations of the same function so that the original pattern string
! 2424: ** does not need to be recompiled on each invocation.
1.1 misha 2425: **
1.2 ! misha 2426: ** The sqlite3_get_auxdata() interface returns a pointer to the meta-data
! 2427: ** associated with the Nth argument value to the current SQL function
1.1 misha 2428: ** call, where N is the second parameter. If no meta-data has been set for
2429: ** that value, then a NULL pointer is returned.
2430: **
1.2 ! misha 2431: ** The sqlite3_set_auxdata() is used to associate meta-data with an SQL
! 2432: ** function argument. The third parameter is a pointer to the meta-data
1.1 misha 2433: ** to be associated with the Nth user function argument value. The fourth
1.2 ! misha 2434: ** parameter specifies a destructor that will be called on the meta-
! 2435: ** data pointer to release it when it is no longer required. If the
! 2436: ** destructor is NULL, it is not invoked.
1.1 misha 2437: **
2438: ** In practice, meta-data is preserved between function calls for
2439: ** expressions that are constant at compile time. This includes literal
2440: ** values and SQL variables.
1.2 ! misha 2441: **
! 2442: ** These routines must be called from the same thread in which
! 2443: ** the SQL function is running.
1.1 misha 2444: */
2445: void *sqlite3_get_auxdata(sqlite3_context*, int);
2446: void sqlite3_set_auxdata(sqlite3_context*, int, void*, void (*)(void*));
2447:
2448:
2449: /*
1.2 ! misha 2450: ** CAPI3REF: Constants Defining Special Destructor Behavior
! 2451: **
1.1 misha 2452: ** These are special value for the destructor that is passed in as the
1.2 ! misha 2453: ** final argument to routines like [sqlite3_result_blob()]. If the destructor
1.1 misha 2454: ** argument is SQLITE_STATIC, it means that the content pointer is constant
2455: ** and will never change. It does not need to be destroyed. The
2456: ** SQLITE_TRANSIENT value means that the content will likely change in
2457: ** the near future and that SQLite should make its own private copy of
2458: ** the content before returning.
1.2 ! misha 2459: **
! 2460: ** The typedef is necessary to work around problems in certain
! 2461: ** C++ compilers. See ticket #2191.
1.1 misha 2462: */
1.2 ! misha 2463: typedef void (*sqlite3_destructor_type)(void*);
! 2464: #define SQLITE_STATIC ((sqlite3_destructor_type)0)
! 2465: #define SQLITE_TRANSIENT ((sqlite3_destructor_type)-1)
! 2466:
! 2467: /*
! 2468: ** CAPI3REF: Setting The Result Of An SQL Function
! 2469: **
! 2470: ** These routines are used by the xFunc or xFinal callbacks that
! 2471: ** implement SQL functions and aggregates. See
! 2472: ** [sqlite3_create_function()] and [sqlite3_create_function16()]
! 2473: ** for additional information.
! 2474: **
! 2475: ** These functions work very much like the
! 2476: ** [sqlite3_bind_blob | sqlite3_bind_*] family of functions used
! 2477: ** to bind values to host parameters in prepared statements.
! 2478: ** Refer to the
! 2479: ** [sqlite3_bind_blob | sqlite3_bind_* documentation] for
! 2480: ** additional information.
! 2481: **
! 2482: ** The sqlite3_result_error() and sqlite3_result_error16() functions
! 2483: ** cause the implemented SQL function to throw an exception. The
! 2484: ** parameter to sqlite3_result_error() or sqlite3_result_error16()
! 2485: ** is the text of an error message.
! 2486: **
! 2487: ** The sqlite3_result_toobig() cause the function implementation
! 2488: ** to throw and error indicating that a string or BLOB is to long
! 2489: ** to represent.
! 2490: **
! 2491: ** These routines must be called from within the same thread as
! 2492: ** the SQL function associated with the [sqlite3_context] pointer.
1.1 misha 2493: */
2494: void sqlite3_result_blob(sqlite3_context*, const void*, int, void(*)(void*));
2495: void sqlite3_result_double(sqlite3_context*, double);
2496: void sqlite3_result_error(sqlite3_context*, const char*, int);
2497: void sqlite3_result_error16(sqlite3_context*, const void*, int);
1.2 ! misha 2498: void sqlite3_result_error_toobig(sqlite3_context*);
! 2499: void sqlite3_result_error_nomem(sqlite3_context*);
1.1 misha 2500: void sqlite3_result_int(sqlite3_context*, int);
1.2 ! misha 2501: void sqlite3_result_int64(sqlite3_context*, sqlite3_int64);
1.1 misha 2502: void sqlite3_result_null(sqlite3_context*);
2503: void sqlite3_result_text(sqlite3_context*, const char*, int, void(*)(void*));
2504: void sqlite3_result_text16(sqlite3_context*, const void*, int, void(*)(void*));
2505: void sqlite3_result_text16le(sqlite3_context*, const void*, int,void(*)(void*));
2506: void sqlite3_result_text16be(sqlite3_context*, const void*, int,void(*)(void*));
2507: void sqlite3_result_value(sqlite3_context*, sqlite3_value*);
1.2 ! misha 2508: void sqlite3_result_zeroblob(sqlite3_context*, int n);
1.1 misha 2509:
2510: /*
1.2 ! misha 2511: ** CAPI3REF: Define New Collating Sequences
! 2512: **
! 2513: ** These functions are used to add new collation sequences to the
! 2514: ** [sqlite3*] handle specified as the first argument.
1.1 misha 2515: **
2516: ** The name of the new collation sequence is specified as a UTF-8 string
1.2 ! misha 2517: ** for sqlite3_create_collation() and sqlite3_create_collation_v2()
! 2518: ** and a UTF-16 string for sqlite3_create_collation16(). In all cases
! 2519: ** the name is passed as the second function argument.
1.1 misha 2520: **
1.2 ! misha 2521: ** The third argument must be one of the constants [SQLITE_UTF8],
! 2522: ** [SQLITE_UTF16LE] or [SQLITE_UTF16BE], indicating that the user-supplied
1.1 misha 2523: ** routine expects to be passed pointers to strings encoded using UTF-8,
2524: ** UTF-16 little-endian or UTF-16 big-endian respectively.
2525: **
2526: ** A pointer to the user supplied routine must be passed as the fifth
2527: ** argument. If it is NULL, this is the same as deleting the collation
2528: ** sequence (so that SQLite cannot call it anymore). Each time the user
2529: ** supplied function is invoked, it is passed a copy of the void* passed as
2530: ** the fourth argument to sqlite3_create_collation() or
2531: ** sqlite3_create_collation16() as its first parameter.
2532: **
2533: ** The remaining arguments to the user-supplied routine are two strings,
2534: ** each represented by a [length, data] pair and encoded in the encoding
2535: ** that was passed as the third argument when the collation sequence was
2536: ** registered. The user routine should return negative, zero or positive if
2537: ** the first string is less than, equal to, or greater than the second
2538: ** string. i.e. (STRING1 - STRING2).
1.2 ! misha 2539: **
! 2540: ** The sqlite3_create_collation_v2() works like sqlite3_create_collation()
! 2541: ** excapt that it takes an extra argument which is a destructor for
! 2542: ** the collation. The destructor is called when the collation is
! 2543: ** destroyed and is passed a copy of the fourth parameter void* pointer
! 2544: ** of the sqlite3_create_collation_v2(). Collations are destroyed when
! 2545: ** they are overridden by later calls to the collation creation functions
! 2546: ** or when the [sqlite3*] database handle is closed using [sqlite3_close()].
! 2547: **
! 2548: ** The sqlite3_create_collation_v2() interface is experimental and
! 2549: ** subject to change in future releases. The other collation creation
! 2550: ** functions are stable.
1.1 misha 2551: */
2552: int sqlite3_create_collation(
2553: sqlite3*,
2554: const char *zName,
2555: int eTextRep,
2556: void*,
2557: int(*xCompare)(void*,int,const void*,int,const void*)
2558: );
1.2 ! misha 2559: int sqlite3_create_collation_v2(
! 2560: sqlite3*,
! 2561: const char *zName,
! 2562: int eTextRep,
! 2563: void*,
! 2564: int(*xCompare)(void*,int,const void*,int,const void*),
! 2565: void(*xDestroy)(void*)
! 2566: );
1.1 misha 2567: int sqlite3_create_collation16(
2568: sqlite3*,
2569: const char *zName,
2570: int eTextRep,
2571: void*,
2572: int(*xCompare)(void*,int,const void*,int,const void*)
2573: );
2574:
2575: /*
1.2 ! misha 2576: ** CAPI3REF: Collation Needed Callbacks
! 2577: **
1.1 misha 2578: ** To avoid having to register all collation sequences before a database
2579: ** can be used, a single callback function may be registered with the
2580: ** database handle to be called whenever an undefined collation sequence is
2581: ** required.
2582: **
2583: ** If the function is registered using the sqlite3_collation_needed() API,
2584: ** then it is passed the names of undefined collation sequences as strings
2585: ** encoded in UTF-8. If sqlite3_collation_needed16() is used, the names
2586: ** are passed as UTF-16 in machine native byte order. A call to either
2587: ** function replaces any existing callback.
2588: **
1.2 ! misha 2589: ** When the callback is invoked, the first argument passed is a copy
1.1 misha 2590: ** of the second argument to sqlite3_collation_needed() or
2591: ** sqlite3_collation_needed16(). The second argument is the database
1.2 ! misha 2592: ** handle. The third argument is one of [SQLITE_UTF8], [SQLITE_UTF16BE], or
! 2593: ** [SQLITE_UTF16LE], indicating the most desirable form of the collation
1.1 misha 2594: ** sequence function required. The fourth parameter is the name of the
2595: ** required collation sequence.
2596: **
1.2 ! misha 2597: ** The callback function should register the desired collation using
! 2598: ** [sqlite3_create_collation()], [sqlite3_create_collation16()], or
! 2599: ** [sqlite3_create_collation_v2()].
1.1 misha 2600: */
2601: int sqlite3_collation_needed(
2602: sqlite3*,
2603: void*,
2604: void(*)(void*,sqlite3*,int eTextRep,const char*)
2605: );
2606: int sqlite3_collation_needed16(
2607: sqlite3*,
2608: void*,
2609: void(*)(void*,sqlite3*,int eTextRep,const void*)
2610: );
2611:
2612: /*
2613: ** Specify the key for an encrypted database. This routine should be
2614: ** called right after sqlite3_open().
2615: **
2616: ** The code to implement this API is not available in the public release
2617: ** of SQLite.
2618: */
2619: int sqlite3_key(
2620: sqlite3 *db, /* Database to be rekeyed */
2621: const void *pKey, int nKey /* The key */
2622: );
2623:
2624: /*
2625: ** Change the key on an open database. If the current database is not
2626: ** encrypted, this routine will encrypt it. If pNew==0 or nNew==0, the
2627: ** database is decrypted.
2628: **
2629: ** The code to implement this API is not available in the public release
2630: ** of SQLite.
2631: */
2632: int sqlite3_rekey(
2633: sqlite3 *db, /* Database to be rekeyed */
2634: const void *pKey, int nKey /* The new key */
2635: );
2636:
2637: /*
1.2 ! misha 2638: ** CAPI3REF: Suspend Execution For A Short Time
! 2639: **
! 2640: ** This function causes the current thread to suspend execution
! 2641: ** a number of milliseconds specified in its parameter.
! 2642: **
! 2643: ** If the operating system does not support sleep requests with
! 2644: ** millisecond time resolution, then the time will be rounded up to
! 2645: ** the nearest second. The number of milliseconds of sleep actually
! 2646: ** requested from the operating system is returned.
! 2647: **
! 2648: ** SQLite implements this interface by calling the xSleep()
! 2649: ** method of the default [sqlite3_vfs] object.
! 2650: */
! 2651: int sqlite3_sleep(int);
! 2652:
! 2653: /*
! 2654: ** CAPI3REF: Name Of The Folder Holding Temporary Files
! 2655: **
! 2656: ** If this global variable is made to point to a string which is
! 2657: ** the name of a folder (a.ka. directory), then all temporary files
1.1 misha 2658: ** created by SQLite will be placed in that directory. If this variable
2659: ** is NULL pointer, then SQLite does a search for an appropriate temporary
2660: ** file directory.
2661: **
1.2 ! misha 2662: ** It is not safe to modify this variable once a database connection
! 2663: ** has been opened. It is intended that this variable be set once
! 2664: ** as part of process initialization and before any SQLite interface
! 2665: ** routines have been call and remain unchanged thereafter.
! 2666: */
! 2667: SQLITE_EXTERN char *sqlite3_temp_directory;
! 2668:
! 2669: /*
! 2670: ** CAPI3REF: Test To See If The Database Is In Auto-Commit Mode
! 2671: **
! 2672: ** Test to see whether or not the database connection is in autocommit
! 2673: ** mode. Return TRUE if it is and FALSE if not. Autocommit mode is on
! 2674: ** by default. Autocommit is disabled by a BEGIN statement and reenabled
! 2675: ** by the next COMMIT or ROLLBACK.
! 2676: **
! 2677: ** If certain kinds of errors occur on a statement within a multi-statement
! 2678: ** transactions (errors including [SQLITE_FULL], [SQLITE_IOERR],
! 2679: ** [SQLITE_NOMEM], [SQLITE_BUSY], and [SQLITE_INTERRUPT]) then the
! 2680: ** transaction might be rolled back automatically. The only way to
! 2681: ** find out if SQLite automatically rolled back the transaction after
! 2682: ** an error is to use this function.
! 2683: **
! 2684: ** If another thread changes the autocommit status of the database
! 2685: ** connection while this routine is running, then the return value
! 2686: ** is undefined.
! 2687: */
! 2688: int sqlite3_get_autocommit(sqlite3*);
! 2689:
! 2690: /*
! 2691: ** CAPI3REF: Find The Database Handle Associated With A Prepared Statement
! 2692: **
! 2693: ** Return the [sqlite3*] database handle to which a
! 2694: ** [sqlite3_stmt | prepared statement] belongs.
! 2695: ** This is the same database handle that was
! 2696: ** the first argument to the [sqlite3_prepare_v2()] or its variants
! 2697: ** that was used to create the statement in the first place.
! 2698: */
! 2699: sqlite3 *sqlite3_db_handle(sqlite3_stmt*);
! 2700:
! 2701:
! 2702: /*
! 2703: ** CAPI3REF: Commit And Rollback Notification Callbacks
! 2704: **
! 2705: ** These routines
! 2706: ** register callback functions to be invoked whenever a transaction
! 2707: ** is committed or rolled back. The pArg argument is passed through
! 2708: ** to the callback. If the callback on a commit hook function
! 2709: ** returns non-zero, then the commit is converted into a rollback.
! 2710: **
! 2711: ** If another function was previously registered, its pArg value is returned.
! 2712: ** Otherwise NULL is returned.
! 2713: **
! 2714: ** Registering a NULL function disables the callback.
! 2715: **
! 2716: ** For the purposes of this API, a transaction is said to have been
! 2717: ** rolled back if an explicit "ROLLBACK" statement is executed, or
! 2718: ** an error or constraint causes an implicit rollback to occur. The
! 2719: ** callback is not invoked if a transaction is automatically rolled
! 2720: ** back because the database connection is closed.
! 2721: **
! 2722: ** These are experimental interfaces and are subject to change.
! 2723: */
! 2724: void *sqlite3_commit_hook(sqlite3*, int(*)(void*), void*);
! 2725: void *sqlite3_rollback_hook(sqlite3*, void(*)(void *), void*);
! 2726:
! 2727: /*
! 2728: ** CAPI3REF: Data Change Notification Callbacks
! 2729: **
! 2730: ** Register a callback function with the database connection identified by the
! 2731: ** first argument to be invoked whenever a row is updated, inserted or deleted.
! 2732: ** Any callback set by a previous call to this function for the same
! 2733: ** database connection is overridden.
! 2734: **
! 2735: ** The second argument is a pointer to the function to invoke when a
! 2736: ** row is updated, inserted or deleted. The first argument to the callback is
! 2737: ** a copy of the third argument to sqlite3_update_hook(). The second callback
! 2738: ** argument is one of SQLITE_INSERT, SQLITE_DELETE or SQLITE_UPDATE, depending
! 2739: ** on the operation that caused the callback to be invoked. The third and
! 2740: ** fourth arguments to the callback contain pointers to the database and
! 2741: ** table name containing the affected row. The final callback parameter is
! 2742: ** the rowid of the row. In the case of an update, this is the rowid after
! 2743: ** the update takes place.
! 2744: **
! 2745: ** The update hook is not invoked when internal system tables are
! 2746: ** modified (i.e. sqlite_master and sqlite_sequence).
! 2747: **
! 2748: ** If another function was previously registered, its pArg value is returned.
! 2749: ** Otherwise NULL is returned.
! 2750: */
! 2751: void *sqlite3_update_hook(
! 2752: sqlite3*,
! 2753: void(*)(void *,int ,char const *,char const *,sqlite3_int64),
! 2754: void*
! 2755: );
! 2756:
! 2757: /*
! 2758: ** CAPI3REF: Enable Or Disable Shared Pager Cache
! 2759: **
! 2760: ** This routine enables or disables the sharing of the database cache
! 2761: ** and schema data structures between connections to the same database.
! 2762: ** Sharing is enabled if the argument is true and disabled if the argument
! 2763: ** is false.
! 2764: **
! 2765: ** Beginning in SQLite version 3.5.0, cache sharing is enabled and disabled
! 2766: ** for an entire process. In prior versions of SQLite, sharing was
! 2767: ** enabled or disabled for each thread separately.
! 2768: **
! 2769: ** The cache sharing mode set by this interface effects all subsequent
! 2770: ** calls to [sqlite3_open()], [sqlite3_open_v2()], and [sqlite3_open16()].
! 2771: ** Existing database connections continue use the sharing mode that was
! 2772: ** in effect at the time they were opened.
! 2773: **
! 2774: ** Virtual tables cannot be used with a shared cache. When shared
! 2775: ** cache is enabled, the [sqlite3_create_module()] API used to register
! 2776: ** virtual tables will always return an error.
! 2777: **
! 2778: ** This routine returns [SQLITE_OK] if shared cache was
! 2779: ** enabled or disabled successfully. An [SQLITE_ERROR | error code]
! 2780: ** is returned otherwise.
! 2781: **
! 2782: ** Shared cache is disabled by default. But this might change in
! 2783: ** future releases of SQLite. Applications that care about shared
! 2784: ** cache setting should set it explicitly.
! 2785: */
! 2786: int sqlite3_enable_shared_cache(int);
! 2787:
! 2788: /*
! 2789: ** CAPI3REF: Attempt To Free Heap Memory
! 2790: **
! 2791: ** Attempt to free N bytes of heap memory by deallocating non-essential
! 2792: ** memory allocations held by the database library (example: memory
! 2793: ** used to cache database pages to improve performance).
! 2794: */
! 2795: int sqlite3_release_memory(int);
! 2796:
! 2797: /*
! 2798: ** CAPI3REF: Impose A Limit On Heap Size
! 2799: **
! 2800: ** Place a "soft" limit on the amount of heap memory that may be allocated
! 2801: ** by SQLite. If an internal allocation is requested
! 2802: ** that would exceed the specified limit, [sqlite3_release_memory()] is
! 2803: ** invoked one or more times to free up some space before the allocation
! 2804: ** is made.
! 2805: **
! 2806: ** The limit is called "soft", because if [sqlite3_release_memory()] cannot
! 2807: ** free sufficient memory to prevent the limit from being exceeded,
! 2808: ** the memory is allocated anyway and the current operation proceeds.
! 2809: **
! 2810: ** A negative or zero value for N means that there is no soft heap limit and
! 2811: ** [sqlite3_release_memory()] will only be called when memory is exhausted.
! 2812: ** The default value for the soft heap limit is zero.
! 2813: **
! 2814: ** SQLite makes a best effort to honor the soft heap limit. But if it
! 2815: ** is unable to reduce memory usage below the soft limit, execution will
! 2816: ** continue without error or notification. This is why the limit is
! 2817: ** called a "soft" limit. It is advisory only.
! 2818: **
! 2819: ** The soft heap limit is implemented using the [sqlite3_memory_alarm()]
! 2820: ** interface. Only a single memory alarm is available in the default
! 2821: ** implementation. This means that if the application also uses the
! 2822: ** memory alarm interface it will interfere with the operation of the
! 2823: ** soft heap limit and undefined behavior will result.
! 2824: **
! 2825: ** Prior to SQLite version 3.5.0, this routine only constrained the memory
! 2826: ** allocated by a single thread - the same thread in which this routine
! 2827: ** runs. Beginning with SQLite version 3.5.0, the soft heap limit is
! 2828: ** applied to all threads. The value specified for the soft heap limit
! 2829: ** is an upper bound on the total memory allocation for all threads. In
! 2830: ** version 3.5.0 there is no mechanism for limiting the heap usage for
! 2831: ** individual threads.
! 2832: */
! 2833: void sqlite3_soft_heap_limit(int);
! 2834:
! 2835: /*
! 2836: ** CAPI3REF: Extract Metadata About A Column Of A Table
! 2837: **
! 2838: ** This routine
! 2839: ** returns meta-data about a specific column of a specific database
! 2840: ** table accessible using the connection handle passed as the first function
! 2841: ** argument.
! 2842: **
! 2843: ** The column is identified by the second, third and fourth parameters to
! 2844: ** this function. The second parameter is either the name of the database
! 2845: ** (i.e. "main", "temp" or an attached database) containing the specified
! 2846: ** table or NULL. If it is NULL, then all attached databases are searched
! 2847: ** for the table using the same algorithm as the database engine uses to
! 2848: ** resolve unqualified table references.
! 2849: **
! 2850: ** The third and fourth parameters to this function are the table and column
! 2851: ** name of the desired column, respectively. Neither of these parameters
! 2852: ** may be NULL.
! 2853: **
! 2854: ** Meta information is returned by writing to the memory locations passed as
! 2855: ** the 5th and subsequent parameters to this function. Any of these
! 2856: ** arguments may be NULL, in which case the corresponding element of meta
! 2857: ** information is ommitted.
! 2858: **
! 2859: ** <pre>
! 2860: ** Parameter Output Type Description
! 2861: ** -----------------------------------
! 2862: **
! 2863: ** 5th const char* Data type
! 2864: ** 6th const char* Name of the default collation sequence
! 2865: ** 7th int True if the column has a NOT NULL constraint
! 2866: ** 8th int True if the column is part of the PRIMARY KEY
! 2867: ** 9th int True if the column is AUTOINCREMENT
! 2868: ** </pre>
! 2869: **
! 2870: **
! 2871: ** The memory pointed to by the character pointers returned for the
! 2872: ** declaration type and collation sequence is valid only until the next
! 2873: ** call to any sqlite API function.
! 2874: **
! 2875: ** If the specified table is actually a view, then an error is returned.
! 2876: **
! 2877: ** If the specified column is "rowid", "oid" or "_rowid_" and an
! 2878: ** INTEGER PRIMARY KEY column has been explicitly declared, then the output
! 2879: ** parameters are set for the explicitly declared column. If there is no
! 2880: ** explicitly declared IPK column, then the output parameters are set as
! 2881: ** follows:
! 2882: **
! 2883: ** <pre>
! 2884: ** data type: "INTEGER"
! 2885: ** collation sequence: "BINARY"
! 2886: ** not null: 0
! 2887: ** primary key: 1
! 2888: ** auto increment: 0
! 2889: ** </pre>
! 2890: **
! 2891: ** This function may load one or more schemas from database files. If an
! 2892: ** error occurs during this process, or if the requested table or column
! 2893: ** cannot be found, an SQLITE error code is returned and an error message
! 2894: ** left in the database handle (to be retrieved using sqlite3_errmsg()).
! 2895: **
! 2896: ** This API is only available if the library was compiled with the
! 2897: ** SQLITE_ENABLE_COLUMN_METADATA preprocessor symbol defined.
! 2898: */
! 2899: int sqlite3_table_column_metadata(
! 2900: sqlite3 *db, /* Connection handle */
! 2901: const char *zDbName, /* Database name or NULL */
! 2902: const char *zTableName, /* Table name */
! 2903: const char *zColumnName, /* Column name */
! 2904: char const **pzDataType, /* OUTPUT: Declared data type */
! 2905: char const **pzCollSeq, /* OUTPUT: Collation sequence name */
! 2906: int *pNotNull, /* OUTPUT: True if NOT NULL constraint exists */
! 2907: int *pPrimaryKey, /* OUTPUT: True if column part of PK */
! 2908: int *pAutoinc /* OUTPUT: True if column is auto-increment */
! 2909: );
! 2910:
! 2911: /*
! 2912: ** CAPI3REF: Load An Extension
! 2913: **
! 2914: ** Attempt to load an SQLite extension library contained in the file
! 2915: ** zFile. The entry point is zProc. zProc may be 0 in which case the
! 2916: ** name of the entry point defaults to "sqlite3_extension_init".
! 2917: **
! 2918: ** Return [SQLITE_OK] on success and [SQLITE_ERROR] if something goes wrong.
! 2919: **
! 2920: ** If an error occurs and pzErrMsg is not 0, then fill *pzErrMsg with
! 2921: ** error message text. The calling function should free this memory
! 2922: ** by calling [sqlite3_free()].
! 2923: **
! 2924: ** Extension loading must be enabled using [sqlite3_enable_load_extension()]
! 2925: ** prior to calling this API or an error will be returned.
! 2926: */
! 2927: int sqlite3_load_extension(
! 2928: sqlite3 *db, /* Load the extension into this database connection */
! 2929: const char *zFile, /* Name of the shared library containing extension */
! 2930: const char *zProc, /* Entry point. Derived from zFile if 0 */
! 2931: char **pzErrMsg /* Put error message here if not 0 */
! 2932: );
! 2933:
! 2934: /*
! 2935: ** CAPI3REF: Enable Or Disable Extension Loading
! 2936: **
! 2937: ** So as not to open security holes in older applications that are
! 2938: ** unprepared to deal with extension loading, and as a means of disabling
! 2939: ** extension loading while evaluating user-entered SQL, the following
! 2940: ** API is provided to turn the [sqlite3_load_extension()] mechanism on and
! 2941: ** off. It is off by default. See ticket #1863.
! 2942: **
! 2943: ** Call this routine with onoff==1 to turn extension loading on
! 2944: ** and call it with onoff==0 to turn it back off again.
! 2945: */
! 2946: int sqlite3_enable_load_extension(sqlite3 *db, int onoff);
! 2947:
! 2948: /*
! 2949: ** CAPI3REF: Make Arrangements To Automatically Load An Extension
! 2950: **
! 2951: ** Register an extension entry point that is automatically invoked
! 2952: ** whenever a new database connection is opened using
! 2953: ** [sqlite3_open()], [sqlite3_open16()], or [sqlite3_open_v2()].
! 2954: **
! 2955: ** This API can be invoked at program startup in order to register
! 2956: ** one or more statically linked extensions that will be available
! 2957: ** to all new database connections.
! 2958: **
! 2959: ** Duplicate extensions are detected so calling this routine multiple
! 2960: ** times with the same extension is harmless.
! 2961: **
! 2962: ** This routine stores a pointer to the extension in an array
! 2963: ** that is obtained from malloc(). If you run a memory leak
! 2964: ** checker on your program and it reports a leak because of this
! 2965: ** array, then invoke [sqlite3_automatic_extension_reset()] prior
! 2966: ** to shutdown to free the memory.
! 2967: **
! 2968: ** Automatic extensions apply across all threads.
! 2969: **
! 2970: ** This interface is experimental and is subject to change or
! 2971: ** removal in future releases of SQLite.
! 2972: */
! 2973: int sqlite3_auto_extension(void *xEntryPoint);
! 2974:
! 2975:
! 2976: /*
! 2977: ** CAPI3REF: Reset Automatic Extension Loading
! 2978: **
! 2979: ** Disable all previously registered automatic extensions. This
! 2980: ** routine undoes the effect of all prior [sqlite3_automatic_extension()]
! 2981: ** calls.
! 2982: **
! 2983: ** This call disabled automatic extensions in all threads.
! 2984: **
! 2985: ** This interface is experimental and is subject to change or
! 2986: ** removal in future releases of SQLite.
! 2987: */
! 2988: void sqlite3_reset_auto_extension(void);
! 2989:
! 2990:
! 2991: /*
! 2992: ****** EXPERIMENTAL - subject to change without notice **************
! 2993: **
! 2994: ** The interface to the virtual-table mechanism is currently considered
! 2995: ** to be experimental. The interface might change in incompatible ways.
! 2996: ** If this is a problem for you, do not use the interface at this time.
! 2997: **
! 2998: ** When the virtual-table mechanism stablizes, we will declare the
! 2999: ** interface fixed, support it indefinitely, and remove this comment.
! 3000: */
! 3001:
! 3002: /*
! 3003: ** Structures used by the virtual table interface
! 3004: */
! 3005: typedef struct sqlite3_vtab sqlite3_vtab;
! 3006: typedef struct sqlite3_index_info sqlite3_index_info;
! 3007: typedef struct sqlite3_vtab_cursor sqlite3_vtab_cursor;
! 3008: typedef struct sqlite3_module sqlite3_module;
! 3009:
! 3010: /*
! 3011: ** A module is a class of virtual tables. Each module is defined
! 3012: ** by an instance of the following structure. This structure consists
! 3013: ** mostly of methods for the module.
! 3014: */
! 3015: struct sqlite3_module {
! 3016: int iVersion;
! 3017: int (*xCreate)(sqlite3*, void *pAux,
! 3018: int argc, const char *const*argv,
! 3019: sqlite3_vtab **ppVTab, char**);
! 3020: int (*xConnect)(sqlite3*, void *pAux,
! 3021: int argc, const char *const*argv,
! 3022: sqlite3_vtab **ppVTab, char**);
! 3023: int (*xBestIndex)(sqlite3_vtab *pVTab, sqlite3_index_info*);
! 3024: int (*xDisconnect)(sqlite3_vtab *pVTab);
! 3025: int (*xDestroy)(sqlite3_vtab *pVTab);
! 3026: int (*xOpen)(sqlite3_vtab *pVTab, sqlite3_vtab_cursor **ppCursor);
! 3027: int (*xClose)(sqlite3_vtab_cursor*);
! 3028: int (*xFilter)(sqlite3_vtab_cursor*, int idxNum, const char *idxStr,
! 3029: int argc, sqlite3_value **argv);
! 3030: int (*xNext)(sqlite3_vtab_cursor*);
! 3031: int (*xEof)(sqlite3_vtab_cursor*);
! 3032: int (*xColumn)(sqlite3_vtab_cursor*, sqlite3_context*, int);
! 3033: int (*xRowid)(sqlite3_vtab_cursor*, sqlite3_int64 *pRowid);
! 3034: int (*xUpdate)(sqlite3_vtab *, int, sqlite3_value **, sqlite3_int64 *);
! 3035: int (*xBegin)(sqlite3_vtab *pVTab);
! 3036: int (*xSync)(sqlite3_vtab *pVTab);
! 3037: int (*xCommit)(sqlite3_vtab *pVTab);
! 3038: int (*xRollback)(sqlite3_vtab *pVTab);
! 3039: int (*xFindFunction)(sqlite3_vtab *pVtab, int nArg, const char *zName,
! 3040: void (**pxFunc)(sqlite3_context*,int,sqlite3_value**),
! 3041: void **ppArg);
! 3042:
! 3043: int (*xRename)(sqlite3_vtab *pVtab, const char *zNew);
! 3044: };
! 3045:
! 3046: /*
! 3047: ** The sqlite3_index_info structure and its substructures is used to
! 3048: ** pass information into and receive the reply from the xBestIndex
! 3049: ** method of an sqlite3_module. The fields under **Inputs** are the
! 3050: ** inputs to xBestIndex and are read-only. xBestIndex inserts its
! 3051: ** results into the **Outputs** fields.
! 3052: **
! 3053: ** The aConstraint[] array records WHERE clause constraints of the
! 3054: ** form:
! 3055: **
! 3056: ** column OP expr
! 3057: **
! 3058: ** Where OP is =, <, <=, >, or >=. The particular operator is stored
! 3059: ** in aConstraint[].op. The index of the column is stored in
! 3060: ** aConstraint[].iColumn. aConstraint[].usable is TRUE if the
! 3061: ** expr on the right-hand side can be evaluated (and thus the constraint
! 3062: ** is usable) and false if it cannot.
! 3063: **
! 3064: ** The optimizer automatically inverts terms of the form "expr OP column"
! 3065: ** and makes other simplifications to the WHERE clause in an attempt to
! 3066: ** get as many WHERE clause terms into the form shown above as possible.
! 3067: ** The aConstraint[] array only reports WHERE clause terms in the correct
! 3068: ** form that refer to the particular virtual table being queried.
! 3069: **
! 3070: ** Information about the ORDER BY clause is stored in aOrderBy[].
! 3071: ** Each term of aOrderBy records a column of the ORDER BY clause.
! 3072: **
! 3073: ** The xBestIndex method must fill aConstraintUsage[] with information
! 3074: ** about what parameters to pass to xFilter. If argvIndex>0 then
! 3075: ** the right-hand side of the corresponding aConstraint[] is evaluated
! 3076: ** and becomes the argvIndex-th entry in argv. If aConstraintUsage[].omit
! 3077: ** is true, then the constraint is assumed to be fully handled by the
! 3078: ** virtual table and is not checked again by SQLite.
! 3079: **
! 3080: ** The idxNum and idxPtr values are recorded and passed into xFilter.
! 3081: ** sqlite3_free() is used to free idxPtr if needToFreeIdxPtr is true.
! 3082: **
! 3083: ** The orderByConsumed means that output from xFilter will occur in
! 3084: ** the correct order to satisfy the ORDER BY clause so that no separate
! 3085: ** sorting step is required.
! 3086: **
! 3087: ** The estimatedCost value is an estimate of the cost of doing the
! 3088: ** particular lookup. A full scan of a table with N entries should have
! 3089: ** a cost of N. A binary search of a table of N entries should have a
! 3090: ** cost of approximately log(N).
! 3091: */
! 3092: struct sqlite3_index_info {
! 3093: /* Inputs */
! 3094: int nConstraint; /* Number of entries in aConstraint */
! 3095: struct sqlite3_index_constraint {
! 3096: int iColumn; /* Column on left-hand side of constraint */
! 3097: unsigned char op; /* Constraint operator */
! 3098: unsigned char usable; /* True if this constraint is usable */
! 3099: int iTermOffset; /* Used internally - xBestIndex should ignore */
! 3100: } *aConstraint; /* Table of WHERE clause constraints */
! 3101: int nOrderBy; /* Number of terms in the ORDER BY clause */
! 3102: struct sqlite3_index_orderby {
! 3103: int iColumn; /* Column number */
! 3104: unsigned char desc; /* True for DESC. False for ASC. */
! 3105: } *aOrderBy; /* The ORDER BY clause */
! 3106:
! 3107: /* Outputs */
! 3108: struct sqlite3_index_constraint_usage {
! 3109: int argvIndex; /* if >0, constraint is part of argv to xFilter */
! 3110: unsigned char omit; /* Do not code a test for this constraint */
! 3111: } *aConstraintUsage;
! 3112: int idxNum; /* Number used to identify the index */
! 3113: char *idxStr; /* String, possibly obtained from sqlite3_malloc */
! 3114: int needToFreeIdxStr; /* Free idxStr using sqlite3_free() if true */
! 3115: int orderByConsumed; /* True if output is already ordered */
! 3116: double estimatedCost; /* Estimated cost of using this index */
! 3117: };
! 3118: #define SQLITE_INDEX_CONSTRAINT_EQ 2
! 3119: #define SQLITE_INDEX_CONSTRAINT_GT 4
! 3120: #define SQLITE_INDEX_CONSTRAINT_LE 8
! 3121: #define SQLITE_INDEX_CONSTRAINT_LT 16
! 3122: #define SQLITE_INDEX_CONSTRAINT_GE 32
! 3123: #define SQLITE_INDEX_CONSTRAINT_MATCH 64
! 3124:
! 3125: /*
! 3126: ** This routine is used to register a new module name with an SQLite
! 3127: ** connection. Module names must be registered before creating new
! 3128: ** virtual tables on the module, or before using preexisting virtual
! 3129: ** tables of the module.
! 3130: */
! 3131: int sqlite3_create_module(
! 3132: sqlite3 *db, /* SQLite connection to register module with */
! 3133: const char *zName, /* Name of the module */
! 3134: const sqlite3_module *, /* Methods for the module */
! 3135: void * /* Client data for xCreate/xConnect */
! 3136: );
! 3137:
! 3138: /*
! 3139: ** This routine is identical to the sqlite3_create_module() method above,
! 3140: ** except that it allows a destructor function to be specified. It is
! 3141: ** even more experimental than the rest of the virtual tables API.
! 3142: */
! 3143: int sqlite3_create_module_v2(
! 3144: sqlite3 *db, /* SQLite connection to register module with */
! 3145: const char *zName, /* Name of the module */
! 3146: const sqlite3_module *, /* Methods for the module */
! 3147: void *, /* Client data for xCreate/xConnect */
! 3148: void(*xDestroy)(void*) /* Module destructor function */
! 3149: );
! 3150:
! 3151: /*
! 3152: ** Every module implementation uses a subclass of the following structure
! 3153: ** to describe a particular instance of the module. Each subclass will
! 3154: ** be tailored to the specific needs of the module implementation. The
! 3155: ** purpose of this superclass is to define certain fields that are common
! 3156: ** to all module implementations.
! 3157: **
! 3158: ** Virtual tables methods can set an error message by assigning a
! 3159: ** string obtained from sqlite3_mprintf() to zErrMsg. The method should
! 3160: ** take care that any prior string is freed by a call to sqlite3_free()
! 3161: ** prior to assigning a new string to zErrMsg. After the error message
! 3162: ** is delivered up to the client application, the string will be automatically
! 3163: ** freed by sqlite3_free() and the zErrMsg field will be zeroed. Note
! 3164: ** that sqlite3_mprintf() and sqlite3_free() are used on the zErrMsg field
! 3165: ** since virtual tables are commonly implemented in loadable extensions which
! 3166: ** do not have access to sqlite3MPrintf() or sqlite3Free().
! 3167: */
! 3168: struct sqlite3_vtab {
! 3169: const sqlite3_module *pModule; /* The module for this virtual table */
! 3170: int nRef; /* Used internally */
! 3171: char *zErrMsg; /* Error message from sqlite3_mprintf() */
! 3172: /* Virtual table implementations will typically add additional fields */
! 3173: };
! 3174:
! 3175: /* Every module implementation uses a subclass of the following structure
! 3176: ** to describe cursors that point into the virtual table and are used
! 3177: ** to loop through the virtual table. Cursors are created using the
! 3178: ** xOpen method of the module. Each module implementation will define
! 3179: ** the content of a cursor structure to suit its own needs.
! 3180: **
! 3181: ** This superclass exists in order to define fields of the cursor that
! 3182: ** are common to all implementations.
! 3183: */
! 3184: struct sqlite3_vtab_cursor {
! 3185: sqlite3_vtab *pVtab; /* Virtual table of this cursor */
! 3186: /* Virtual table implementations will typically add additional fields */
! 3187: };
! 3188:
! 3189: /*
! 3190: ** The xCreate and xConnect methods of a module use the following API
! 3191: ** to declare the format (the names and datatypes of the columns) of
! 3192: ** the virtual tables they implement.
! 3193: */
! 3194: int sqlite3_declare_vtab(sqlite3*, const char *zCreateTable);
! 3195:
! 3196: /*
! 3197: ** Virtual tables can provide alternative implementations of functions
! 3198: ** using the xFindFunction method. But global versions of those functions
! 3199: ** must exist in order to be overloaded.
! 3200: **
! 3201: ** This API makes sure a global version of a function with a particular
! 3202: ** name and number of parameters exists. If no such function exists
! 3203: ** before this API is called, a new function is created. The implementation
! 3204: ** of the new function always causes an exception to be thrown. So
! 3205: ** the new function is not good for anything by itself. Its only
! 3206: ** purpose is to be a place-holder function that can be overloaded
! 3207: ** by virtual tables.
! 3208: **
! 3209: ** This API should be considered part of the virtual table interface,
! 3210: ** which is experimental and subject to change.
! 3211: */
! 3212: int sqlite3_overload_function(sqlite3*, const char *zFuncName, int nArg);
! 3213:
! 3214: /*
! 3215: ** The interface to the virtual-table mechanism defined above (back up
! 3216: ** to a comment remarkably similar to this one) is currently considered
! 3217: ** to be experimental. The interface might change in incompatible ways.
! 3218: ** If this is a problem for you, do not use the interface at this time.
! 3219: **
! 3220: ** When the virtual-table mechanism stabilizes, we will declare the
! 3221: ** interface fixed, support it indefinitely, and remove this comment.
! 3222: **
! 3223: ****** EXPERIMENTAL - subject to change without notice **************
! 3224: */
! 3225:
! 3226: /*
! 3227: ** CAPI3REF: A Handle To An Open BLOB
! 3228: **
! 3229: ** An instance of the following opaque structure is used to
! 3230: ** represent an blob-handle. A blob-handle is created by
! 3231: ** [sqlite3_blob_open()] and destroyed by [sqlite3_blob_close()].
! 3232: ** The [sqlite3_blob_read()] and [sqlite3_blob_write()] interfaces
! 3233: ** can be used to read or write small subsections of the blob.
! 3234: ** The [sqlite3_blob_bytes()] interface returns the size of the
! 3235: ** blob in bytes.
! 3236: */
! 3237: typedef struct sqlite3_blob sqlite3_blob;
! 3238:
! 3239: /*
! 3240: ** CAPI3REF: Open A BLOB For Incremental I/O
! 3241: **
! 3242: ** Open a handle to the blob located in row iRow,, column zColumn,
! 3243: ** table zTable in database zDb. i.e. the same blob that would
! 3244: ** be selected by:
! 3245: **
! 3246: ** <pre>
! 3247: ** SELECT zColumn FROM zDb.zTable WHERE rowid = iRow;
! 3248: ** </pre>
! 3249: **
! 3250: ** If the flags parameter is non-zero, the blob is opened for
! 3251: ** read and write access. If it is zero, the blob is opened for read
! 3252: ** access.
! 3253: **
! 3254: ** On success, [SQLITE_OK] is returned and the new
! 3255: ** [sqlite3_blob | blob handle] is written to *ppBlob.
! 3256: ** Otherwise an error code is returned and
! 3257: ** any value written to *ppBlob should not be used by the caller.
! 3258: ** This function sets the database-handle error code and message
! 3259: ** accessible via [sqlite3_errcode()] and [sqlite3_errmsg()].
! 3260: */
! 3261: int sqlite3_blob_open(
! 3262: sqlite3*,
! 3263: const char *zDb,
! 3264: const char *zTable,
! 3265: const char *zColumn,
! 3266: sqlite3_int64 iRow,
! 3267: int flags,
! 3268: sqlite3_blob **ppBlob
! 3269: );
! 3270:
! 3271: /*
! 3272: ** CAPI3REF: Close A BLOB Handle
! 3273: **
! 3274: ** Close an open [sqlite3_blob | blob handle].
! 3275: */
! 3276: int sqlite3_blob_close(sqlite3_blob *);
! 3277:
! 3278: /*
! 3279: ** CAPI3REF: Return The Size Of An Open BLOB
! 3280: **
! 3281: ** Return the size in bytes of the blob accessible via the open
! 3282: ** [sqlite3_blob | blob-handle] passed as an argument.
! 3283: */
! 3284: int sqlite3_blob_bytes(sqlite3_blob *);
! 3285:
! 3286: /*
! 3287: ** CAPI3REF: Read Data From A BLOB Incrementally
! 3288: **
! 3289: ** This function is used to read data from an open
! 3290: ** [sqlite3_blob | blob-handle] into a caller supplied buffer.
! 3291: ** n bytes of data are copied into buffer
! 3292: ** z from the open blob, starting at offset iOffset.
! 3293: **
! 3294: ** On success, SQLITE_OK is returned. Otherwise, an
! 3295: ** [SQLITE_ERROR | SQLite error code] or an
! 3296: ** [SQLITE_IOERR_READ | extended error code] is returned.
1.1 misha 3297: */
1.2 ! misha 3298: int sqlite3_blob_read(sqlite3_blob *, void *z, int n, int iOffset);
! 3299:
! 3300: /*
! 3301: ** CAPI3REF: Write Data Into A BLOB Incrementally
! 3302: **
! 3303: ** This function is used to write data into an open
! 3304: ** [sqlite3_blob | blob-handle] from a user supplied buffer.
! 3305: ** n bytes of data are copied from the buffer
! 3306: ** pointed to by z into the open blob, starting at offset iOffset.
! 3307: **
! 3308: ** If the [sqlite3_blob | blob-handle] passed as the first argument
! 3309: ** was not opened for writing (the flags parameter to [sqlite3_blob_open()]
! 3310: *** was zero), this function returns [SQLITE_READONLY].
! 3311: **
! 3312: ** This function may only modify the contents of the blob, it is
! 3313: ** not possible to increase the size of a blob using this API. If
! 3314: ** offset iOffset is less than n bytes from the end of the blob,
! 3315: ** [SQLITE_ERROR] is returned and no data is written.
! 3316: **
! 3317: ** On success, SQLITE_OK is returned. Otherwise, an
! 3318: ** [SQLITE_ERROR | SQLite error code] or an
! 3319: ** [SQLITE_IOERR_READ | extended error code] is returned.
! 3320: */
! 3321: int sqlite3_blob_write(sqlite3_blob *, const void *z, int n, int iOffset);
! 3322:
! 3323: /*
! 3324: ** CAPI3REF: Virtual File System Objects
! 3325: **
! 3326: ** A virtual filesystem (VFS) is an [sqlite3_vfs] object
! 3327: ** that SQLite uses to interact
! 3328: ** with the underlying operating system. Most builds come with a
! 3329: ** single default VFS that is appropriate for the host computer.
! 3330: ** New VFSes can be registered and existing VFSes can be unregistered.
! 3331: ** The following interfaces are provided.
! 3332: **
! 3333: ** The sqlite3_vfs_find() interface returns a pointer to a VFS given its
! 3334: ** name. Names are case sensitive. If there is no match, a NULL
! 3335: ** pointer is returned. If zVfsName is NULL then the default
! 3336: ** VFS is returned.
! 3337: **
! 3338: ** New VFSes are registered with sqlite3_vfs_register(). Each
! 3339: ** new VFS becomes the default VFS if the makeDflt flag is set.
! 3340: ** The same VFS can be registered multiple times without injury.
! 3341: ** To make an existing VFS into the default VFS, register it again
! 3342: ** with the makeDflt flag set. If two different VFSes with the
! 3343: ** same name are registered, the behavior is undefined. If a
! 3344: ** VFS is registered with a name that is NULL or an empty string,
! 3345: ** then the behavior is undefined.
! 3346: **
! 3347: ** Unregister a VFS with the sqlite3_vfs_unregister() interface.
! 3348: ** If the default VFS is unregistered, another VFS is chosen as
! 3349: ** the default. The choice for the new VFS is arbitrary.
! 3350: */
! 3351: sqlite3_vfs *sqlite3_vfs_find(const char *zVfsName);
! 3352: int sqlite3_vfs_register(sqlite3_vfs*, int makeDflt);
! 3353: int sqlite3_vfs_unregister(sqlite3_vfs*);
! 3354:
! 3355: /*
! 3356: ** CAPI3REF: Mutexes
! 3357: **
! 3358: ** The SQLite core uses these routines for thread
! 3359: ** synchronization. Though they are intended for internal
! 3360: ** use by SQLite, code that links against SQLite is
! 3361: ** permitted to use any of these routines.
! 3362: **
! 3363: ** The SQLite source code contains multiple implementations
! 3364: ** of these mutex routines. An appropriate implementation
! 3365: ** is selected automatically at compile-time. The following
! 3366: ** implementations are available in the SQLite core:
! 3367: **
! 3368: ** <ul>
! 3369: ** <li> SQLITE_MUTEX_OS2
! 3370: ** <li> SQLITE_MUTEX_PTHREAD
! 3371: ** <li> SQLITE_MUTEX_W32
! 3372: ** <li> SQLITE_MUTEX_NOOP
! 3373: ** </ul>
! 3374: **
! 3375: ** The SQLITE_MUTEX_NOOP implementation is a set of routines
! 3376: ** that does no real locking and is appropriate for use in
! 3377: ** a single-threaded application. The SQLITE_MUTEX_OS2,
! 3378: ** SQLITE_MUTEX_PTHREAD, and SQLITE_MUTEX_W32 implementations
! 3379: ** are appropriate for use on os/2, unix, and windows.
! 3380: **
! 3381: ** If SQLite is compiled with the SQLITE_MUTEX_APPDEF preprocessor
! 3382: ** macro defined (with "-DSQLITE_MUTEX_APPDEF=1"), then no mutex
! 3383: ** implementation is included with the library. The
! 3384: ** mutex interface routines defined here become external
! 3385: ** references in the SQLite library for which implementations
! 3386: ** must be provided by the application. This facility allows an
! 3387: ** application that links against SQLite to provide its own mutex
! 3388: ** implementation without having to modify the SQLite core.
! 3389: **
! 3390: ** The sqlite3_mutex_alloc() routine allocates a new
! 3391: ** mutex and returns a pointer to it. If it returns NULL
! 3392: ** that means that a mutex could not be allocated. SQLite
! 3393: ** will unwind its stack and return an error. The argument
! 3394: ** to sqlite3_mutex_alloc() is one of these integer constants:
! 3395: **
! 3396: ** <ul>
! 3397: ** <li> SQLITE_MUTEX_FAST
! 3398: ** <li> SQLITE_MUTEX_RECURSIVE
! 3399: ** <li> SQLITE_MUTEX_STATIC_MASTER
! 3400: ** <li> SQLITE_MUTEX_STATIC_MEM
! 3401: ** <li> SQLITE_MUTEX_STATIC_MEM2
! 3402: ** <li> SQLITE_MUTEX_STATIC_PRNG
! 3403: ** <li> SQLITE_MUTEX_STATIC_LRU
! 3404: ** </ul>
! 3405: **
! 3406: ** The first two constants cause sqlite3_mutex_alloc() to create
! 3407: ** a new mutex. The new mutex is recursive when SQLITE_MUTEX_RECURSIVE
! 3408: ** is used but not necessarily so when SQLITE_MUTEX_FAST is used.
! 3409: ** The mutex implementation does not need to make a distinction
! 3410: ** between SQLITE_MUTEX_RECURSIVE and SQLITE_MUTEX_FAST if it does
! 3411: ** not want to. But SQLite will only request a recursive mutex in
! 3412: ** cases where it really needs one. If a faster non-recursive mutex
! 3413: ** implementation is available on the host platform, the mutex subsystem
! 3414: ** might return such a mutex in response to SQLITE_MUTEX_FAST.
! 3415: **
! 3416: ** The other allowed parameters to sqlite3_mutex_alloc() each return
! 3417: ** a pointer to a static preexisting mutex. Four static mutexes are
! 3418: ** used by the current version of SQLite. Future versions of SQLite
! 3419: ** may add additional static mutexes. Static mutexes are for internal
! 3420: ** use by SQLite only. Applications that use SQLite mutexes should
! 3421: ** use only the dynamic mutexes returned by SQLITE_MUTEX_FAST or
! 3422: ** SQLITE_MUTEX_RECURSIVE.
! 3423: **
! 3424: ** Note that if one of the dynamic mutex parameters (SQLITE_MUTEX_FAST
! 3425: ** or SQLITE_MUTEX_RECURSIVE) is used then sqlite3_mutex_alloc()
! 3426: ** returns a different mutex on every call. But for the static
! 3427: ** mutex types, the same mutex is returned on every call that has
! 3428: ** the same type number.
! 3429: **
! 3430: ** The sqlite3_mutex_free() routine deallocates a previously
! 3431: ** allocated dynamic mutex. SQLite is careful to deallocate every
! 3432: ** dynamic mutex that it allocates. The dynamic mutexes must not be in
! 3433: ** use when they are deallocated. Attempting to deallocate a static
! 3434: ** mutex results in undefined behavior. SQLite never deallocates
! 3435: ** a static mutex.
! 3436: **
! 3437: ** The sqlite3_mutex_enter() and sqlite3_mutex_try() routines attempt
! 3438: ** to enter a mutex. If another thread is already within the mutex,
! 3439: ** sqlite3_mutex_enter() will block and sqlite3_mutex_try() will return
! 3440: ** SQLITE_BUSY. The sqlite3_mutex_try() interface returns SQLITE_OK
! 3441: ** upon successful entry. Mutexes created using SQLITE_MUTEX_RECURSIVE can
! 3442: ** be entered multiple times by the same thread. In such cases the,
! 3443: ** mutex must be exited an equal number of times before another thread
! 3444: ** can enter. If the same thread tries to enter any other kind of mutex
! 3445: ** more than once, the behavior is undefined. SQLite will never exhibit
! 3446: ** such behavior in its own use of mutexes.
! 3447: **
! 3448: ** Some systems (ex: windows95) do not the operation implemented by
! 3449: ** sqlite3_mutex_try(). On those systems, sqlite3_mutex_try() will
! 3450: ** always return SQLITE_BUSY. The SQLite core only ever uses
! 3451: ** sqlite3_mutex_try() as an optimization so this is acceptable behavior.
! 3452: **
! 3453: ** The sqlite3_mutex_leave() routine exits a mutex that was
! 3454: ** previously entered by the same thread. The behavior
! 3455: ** is undefined if the mutex is not currently entered by the
! 3456: ** calling thread or is not currently allocated. SQLite will
! 3457: ** never do either.
! 3458: **
! 3459: ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()].
! 3460: */
! 3461: sqlite3_mutex *sqlite3_mutex_alloc(int);
! 3462: void sqlite3_mutex_free(sqlite3_mutex*);
! 3463: void sqlite3_mutex_enter(sqlite3_mutex*);
! 3464: int sqlite3_mutex_try(sqlite3_mutex*);
! 3465: void sqlite3_mutex_leave(sqlite3_mutex*);
! 3466:
! 3467: /*
! 3468: ** CAPI3REF: Mutex Verifcation Routines
! 3469: **
! 3470: ** The sqlite3_mutex_held() and sqlite3_mutex_notheld() routines
! 3471: ** are intended for use inside assert() statements. The SQLite core
! 3472: ** never uses these routines except inside an assert() and applications
! 3473: ** are advised to follow the lead of the core. The core only
! 3474: ** provides implementations for these routines when it is compiled
! 3475: ** with the SQLITE_DEBUG flag. External mutex implementations
! 3476: ** are only required to provide these routines if SQLITE_DEBUG is
! 3477: ** defined and if NDEBUG is not defined.
! 3478: **
! 3479: ** These routines should return true if the mutex in their argument
! 3480: ** is held or not held, respectively, by the calling thread.
! 3481: **
! 3482: ** The implementation is not required to provided versions of these
! 3483: ** routines that actually work.
! 3484: ** If the implementation does not provide working
! 3485: ** versions of these routines, it should at least provide stubs
! 3486: ** that always return true so that one does not get spurious
! 3487: ** assertion failures.
! 3488: **
! 3489: ** If the argument to sqlite3_mutex_held() is a NULL pointer then
! 3490: ** the routine should return 1. This seems counter-intuitive since
! 3491: ** clearly the mutex cannot be held if it does not exist. But the
! 3492: ** the reason the mutex does not exist is because the build is not
! 3493: ** using mutexes. And we do not want the assert() containing the
! 3494: ** call to sqlite3_mutex_held() to fail, so a non-zero return is
! 3495: ** the appropriate thing to do. The sqlite3_mutex_notheld()
! 3496: ** interface should also return 1 when given a NULL pointer.
! 3497: */
! 3498: int sqlite3_mutex_held(sqlite3_mutex*);
! 3499: int sqlite3_mutex_notheld(sqlite3_mutex*);
! 3500:
! 3501: /*
! 3502: ** CAPI3REF: Mutex Types
! 3503: **
! 3504: ** The [sqlite3_mutex_alloc()] interface takes a single argument
! 3505: ** which is one of these integer constants.
! 3506: */
! 3507: #define SQLITE_MUTEX_FAST 0
! 3508: #define SQLITE_MUTEX_RECURSIVE 1
! 3509: #define SQLITE_MUTEX_STATIC_MASTER 2
! 3510: #define SQLITE_MUTEX_STATIC_MEM 3 /* sqlite3_malloc() */
! 3511: #define SQLITE_MUTEX_STATIC_MEM2 4 /* sqlite3_release_memory() */
! 3512: #define SQLITE_MUTEX_STATIC_PRNG 5 /* sqlite3_random() */
! 3513: #define SQLITE_MUTEX_STATIC_LRU 6 /* lru page list */
! 3514:
! 3515: /*
! 3516: ** CAPI3REF: Low-Level Control Of Database Files
! 3517: **
! 3518: ** The [sqlite3_file_control()] interface makes a direct call to the
! 3519: ** xFileControl method for the [sqlite3_io_methods] object associated
! 3520: ** with a particular database identified by the second argument. The
! 3521: ** name of the database is the name assigned to the database by the
! 3522: ** <a href="lang_attach.html">ATTACH</a> SQL command that opened the
! 3523: ** database. To control the main database file, use the name "main"
! 3524: ** or a NULL pointer. The third and fourth parameters to this routine
! 3525: ** are passed directly through to the second and third parameters of
! 3526: ** the xFileControl method. The return value of the xFileControl
! 3527: ** method becomes the return value of this routine.
! 3528: **
! 3529: ** If the second parameter (zDbName) does not match the name of any
! 3530: ** open database file, then SQLITE_ERROR is returned. This error
! 3531: ** code is not remembered and will not be recalled by [sqlite3_errcode()]
! 3532: ** or [sqlite3_errmsg()]. The underlying xFileControl method might
! 3533: ** also return SQLITE_ERROR. There is no way to distinguish between
! 3534: ** an incorrect zDbName and an SQLITE_ERROR return from the underlying
! 3535: ** xFileControl method.
! 3536: **
! 3537: ** See also: [SQLITE_FCNTL_LOCKSTATE]
! 3538: */
! 3539: int sqlite3_file_control(sqlite3*, const char *zDbName, int op, void*);
! 3540:
! 3541: /*
! 3542: ** Undo the hack that converts floating point types to integer for
! 3543: ** builds on processors without floating point support.
! 3544: */
! 3545: #ifdef SQLITE_OMIT_FLOATING_POINT
! 3546: # undef double
! 3547: #endif
1.1 misha 3548:
3549: #ifdef __cplusplus
3550: } /* End of the 'extern "C"' block */
3551: #endif
3552: #endif
E-mail: