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