epoc32/include/stdapis/sqlite3.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
williamr@4
     1
/*
williamr@4
     2
** 2001 September 15
williamr@4
     3
**
williamr@4
     4
** The author disclaims copyright to this source code.  In place of
williamr@4
     5
** a legal notice, here is a blessing:
williamr@4
     6
**
williamr@4
     7
**    May you do good and not evil.
williamr@4
     8
**    May you find forgiveness for yourself and forgive others.
williamr@4
     9
**    May you share freely, never taking more than you give.
williamr@4
    10
**
williamr@4
    11
*************************************************************************
williamr@4
    12
** This header file defines the interface that the SQLite library
williamr@4
    13
** presents to client programs.  If a C-function, structure, datatype,
williamr@4
    14
** or constant definition does not appear in this file, then it is
williamr@4
    15
** not a published API of SQLite, is subject to change without
williamr@4
    16
** notice, and should not be referenced by programs that use SQLite.
williamr@4
    17
**
williamr@4
    18
** Some of the definitions that are in this file are marked as
williamr@4
    19
** "experimental".  Experimental interfaces are normally new
williamr@4
    20
** features recently added to SQLite.  We do not anticipate changes
williamr@4
    21
** to experimental interfaces but reserve to make minor changes if
williamr@4
    22
** experience from use "in the wild" suggest such changes are prudent.
williamr@4
    23
**
williamr@4
    24
** The official C-language API documentation for SQLite is derived
williamr@4
    25
** from comments in this file.  This file is the authoritative source
williamr@4
    26
** on how SQLite interfaces are suppose to operate.
williamr@4
    27
**
williamr@4
    28
** The name of this file under configuration management is "sqlite.h.in".
williamr@4
    29
** The makefile makes some minor changes to this file (such as inserting
williamr@4
    30
** the version number) and changes its name to "sqlite3.h" as
williamr@4
    31
** part of the build process.
williamr@4
    32
**
williamr@4
    33
** @(#) $Id: sqlite.h.in,v 1.400 2008/10/02 14:33:57 drh Exp $
williamr@4
    34
*/
williamr@4
    35
#ifndef _SQLITE3_H_
williamr@4
    36
#define _SQLITE3_H_
williamr@4
    37
#include <stdarg.h>     /* Needed for the definition of va_list */
williamr@4
    38
#include <e32def.h>
williamr@4
    39
williamr@4
    40
#ifdef SQLITE_DLL
williamr@4
    41
#	define SQLITE_EXPORT EXPORT_C
williamr@4
    42
#else
williamr@4
    43
#	define SQLITE_EXPORT
williamr@4
    44
#endif
williamr@4
    45
williamr@4
    46
/*
williamr@4
    47
** Make sure we can call this stuff from C++.
williamr@4
    48
*/
williamr@4
    49
#ifdef __cplusplus
williamr@4
    50
extern "C" {
williamr@4
    51
#endif
williamr@4
    52
williamr@4
    53
williamr@4
    54
/*
williamr@4
    55
** Add the ability to override 'extern'
williamr@4
    56
*/
williamr@4
    57
#ifndef SQLITE_EXTERN
williamr@4
    58
# define SQLITE_EXTERN extern
williamr@4
    59
#endif
williamr@4
    60
williamr@4
    61
/*
williamr@4
    62
** These no-op macros are used in front of interfaces to mark those
williamr@4
    63
** interfaces as either deprecated or experimental.  New applications
williamr@4
    64
** should not use deprecated intrfaces - they are support for backwards
williamr@4
    65
** compatibility only.  Application writers should be aware that
williamr@4
    66
** experimental interfaces are subject to change in point releases.
williamr@4
    67
**
williamr@4
    68
** These macros used to resolve to various kinds of compiler magic that
williamr@4
    69
** would generate warning messages when they were used.  But that
williamr@4
    70
** compiler magic ended up generating such a flurry of bug reports
williamr@4
    71
** that we have taken it all out and gone back to using simple
williamr@4
    72
** noop macros.
williamr@4
    73
*/
williamr@4
    74
#define SQLITE_DEPRECATED
williamr@4
    75
#define SQLITE_EXPERIMENTAL
williamr@4
    76
williamr@4
    77
/*
williamr@4
    78
** Ensure these symbols were not defined by some previous header file.
williamr@4
    79
*/
williamr@4
    80
#ifdef SQLITE_VERSION
williamr@4
    81
# undef SQLITE_VERSION
williamr@4
    82
#endif
williamr@4
    83
#ifdef SQLITE_VERSION_NUMBER
williamr@4
    84
# undef SQLITE_VERSION_NUMBER
williamr@4
    85
#endif
williamr@4
    86
williamr@4
    87
/*
williamr@4
    88
** CAPI3REF: Compile-Time Library Version Numbers {H10010} <S60100>
williamr@4
    89
**
williamr@4
    90
** The SQLITE_VERSION and SQLITE_VERSION_NUMBER #defines in
williamr@4
    91
** the sqlite3.h file specify the version of SQLite with which
williamr@4
    92
** that header file is associated.
williamr@4
    93
**
williamr@4
    94
** The "version" of SQLite is a string of the form "X.Y.Z".
williamr@4
    95
** The phrase "alpha" or "beta" might be appended after the Z.
williamr@4
    96
** The X value is major version number always 3 in SQLite3.
williamr@4
    97
** The X value only changes when backwards compatibility is
williamr@4
    98
** broken and we intend to never break backwards compatibility.
williamr@4
    99
** The Y value is the minor version number and only changes when
williamr@4
   100
** there are major feature enhancements that are forwards compatible
williamr@4
   101
** but not backwards compatible.
williamr@4
   102
** The Z value is the release number and is incremented with
williamr@4
   103
** each release but resets back to 0 whenever Y is incremented.
williamr@4
   104
**
williamr@4
   105
** See also: [sqlite3_libversion()] and [sqlite3_libversion_number()].
williamr@4
   106
**
williamr@4
   107
** INVARIANTS:
williamr@4
   108
**
williamr@4
   109
** {H10011} The SQLITE_VERSION #define in the sqlite3.h header file shall
williamr@4
   110
**          evaluate to a string literal that is the SQLite version
williamr@4
   111
**          with which the header file is associated.
williamr@4
   112
**
williamr@4
   113
** {H10014} The SQLITE_VERSION_NUMBER #define shall resolve to an integer
williamr@4
   114
**          with the value (X*1000000 + Y*1000 + Z) where X, Y, and Z
williamr@4
   115
**          are the major version, minor version, and release number.
williamr@4
   116
*/
williamr@4
   117
#define SQLITE_VERSION         "3.6.3"
williamr@4
   118
#define SQLITE_VERSION_NUMBER  3006003
williamr@4
   119
williamr@4
   120
/*
williamr@4
   121
** CAPI3REF: Run-Time Library Version Numbers {H10020} <S60100>
williamr@4
   122
** KEYWORDS: sqlite3_version
williamr@4
   123
**
williamr@4
   124
** These features provide the same information as the [SQLITE_VERSION]
williamr@4
   125
** and [SQLITE_VERSION_NUMBER] #defines in the header, but are associated
williamr@4
   126
** with the library instead of the header file.  Cautious programmers might
williamr@4
   127
** include a check in their application to verify that
williamr@4
   128
** sqlite3_libversion_number() always returns the value
williamr@4
   129
** [SQLITE_VERSION_NUMBER].
williamr@4
   130
**
williamr@4
   131
** The sqlite3_libversion() function returns the same information as is
williamr@4
   132
** in the sqlite3_version[] string constant.  The function is provided
williamr@4
   133
** for use in DLLs since DLL users usually do not have direct access to string
williamr@4
   134
** constants within the DLL.
williamr@4
   135
**
williamr@4
   136
** INVARIANTS:
williamr@4
   137
**
williamr@4
   138
** {H10021} The [sqlite3_libversion_number()] interface shall return
williamr@4
   139
**          an integer equal to [SQLITE_VERSION_NUMBER].
williamr@4
   140
**
williamr@4
   141
** {H10022} The [sqlite3_version] string constant shall contain
williamr@4
   142
**          the text of the [SQLITE_VERSION] string.
williamr@4
   143
**
williamr@4
   144
** {H10023} The [sqlite3_libversion()] function shall return
williamr@4
   145
**          a pointer to the [sqlite3_version] string constant.
williamr@4
   146
*/
williamr@4
   147
SQLITE_EXTERN const char sqlite3_version[];
williamr@4
   148
IMPORT_C const char *sqlite3_libversion(void);
williamr@4
   149
IMPORT_C int sqlite3_libversion_number(void);
williamr@4
   150
williamr@4
   151
/*
williamr@4
   152
** CAPI3REF: Test To See If The Library Is Threadsafe {H10100} <S60100>
williamr@4
   153
**
williamr@4
   154
** SQLite can be compiled with or without mutexes.  When
williamr@4
   155
** the [SQLITE_THREADSAFE] C preprocessor macro 1 or 2, mutexes
williamr@4
   156
** are enabled and SQLite is threadsafe.  When the
williamr@4
   157
** [SQLITE_THREADSAFE] macro is 0, 
williamr@4
   158
** the mutexes are omitted.  Without the mutexes, it is not safe
williamr@4
   159
** to use SQLite concurrently from more than one thread.
williamr@4
   160
**
williamr@4
   161
** Enabling mutexes incurs a measurable performance penalty.
williamr@4
   162
** So if speed is of utmost importance, it makes sense to disable
williamr@4
   163
** the mutexes.  But for maximum safety, mutexes should be enabled.
williamr@4
   164
** The default behavior is for mutexes to be enabled.
williamr@4
   165
**
williamr@4
   166
** This interface can be used by a program to make sure that the
williamr@4
   167
** version of SQLite that it is linking against was compiled with
williamr@4
   168
** the desired setting of the [SQLITE_THREADSAFE] macro.
williamr@4
   169
**
williamr@4
   170
** This interface only reports on the compile-time mutex setting
williamr@4
   171
** of the [SQLITE_THREADSAFE] flag.  If SQLite is compiled with
williamr@4
   172
** SQLITE_THREADSAFE=1 then mutexes are enabled by default but
williamr@4
   173
** can be fully or partially disabled using a call to [sqlite3_config()]
williamr@4
   174
** with the verbs [SQLITE_CONFIG_SINGLETHREAD], [SQLITE_CONFIG_MULTITHREAD],
williamr@4
   175
** or [SQLITE_CONFIG_MUTEX].  The return value of this function shows
williamr@4
   176
** only the default compile-time setting, not any run-time changes
williamr@4
   177
** to that setting.
williamr@4
   178
**
williamr@4
   179
** See the [threading mode] documentation for additional information.
williamr@4
   180
**
williamr@4
   181
** INVARIANTS:
williamr@4
   182
**
williamr@4
   183
** {H10101} The [sqlite3_threadsafe()] function shall return nonzero if
williamr@4
   184
**          and only if
williamr@4
   185
**          SQLite was compiled with the its mutexes enabled by default.
williamr@4
   186
**
williamr@4
   187
** {H10102} The value returned by the [sqlite3_threadsafe()] function
williamr@4
   188
**          shall not change when mutex setting are modified at
williamr@4
   189
**          runtime using the [sqlite3_config()] interface and 
williamr@4
   190
**          especially the [SQLITE_CONFIG_SINGLETHREAD],
williamr@4
   191
**          [SQLITE_CONFIG_MULTITHREAD], [SQLITE_CONFIG_SERIALIZED],
williamr@4
   192
**          and [SQLITE_CONFIG_MUTEX] verbs.
williamr@4
   193
*/
williamr@4
   194
IMPORT_C int sqlite3_threadsafe(void);
williamr@4
   195
williamr@4
   196
/*
williamr@4
   197
** CAPI3REF: Database Connection Handle {H12000} <S40200>
williamr@4
   198
** KEYWORDS: {database connection} {database connections}
williamr@4
   199
**
williamr@4
   200
** Each open SQLite database is represented by a pointer to an instance of
williamr@4
   201
** the opaque structure named "sqlite3".  It is useful to think of an sqlite3
williamr@4
   202
** pointer as an object.  The [sqlite3_open()], [sqlite3_open16()], and
williamr@4
   203
** [sqlite3_open_v2()] interfaces are its constructors, and [sqlite3_close()]
williamr@4
   204
** is its destructor.  There are many other interfaces (such as
williamr@4
   205
** [sqlite3_prepare_v2()], [sqlite3_create_function()], and
williamr@4
   206
** [sqlite3_busy_timeout()] to name but three) that are methods on an
williamr@4
   207
** sqlite3 object.
williamr@4
   208
*/
williamr@4
   209
typedef struct sqlite3 sqlite3;
williamr@4
   210
williamr@4
   211
/*
williamr@4
   212
** CAPI3REF: 64-Bit Integer Types {H10200} <S10110>
williamr@4
   213
** KEYWORDS: sqlite_int64 sqlite_uint64
williamr@4
   214
**
williamr@4
   215
** Because there is no cross-platform way to specify 64-bit integer types
williamr@4
   216
** SQLite includes typedefs for 64-bit signed and unsigned integers.
williamr@4
   217
**
williamr@4
   218
** The sqlite3_int64 and sqlite3_uint64 are the preferred type definitions.
williamr@4
   219
** The sqlite_int64 and sqlite_uint64 types are supported for backwards
williamr@4
   220
** compatibility only.
williamr@4
   221
**
williamr@4
   222
** INVARIANTS:
williamr@4
   223
**
williamr@4
   224
** {H10201} The [sqlite_int64] and [sqlite3_int64] type shall specify
williamr@4
   225
**          a 64-bit signed integer.
williamr@4
   226
**
williamr@4
   227
** {H10202} The [sqlite_uint64] and [sqlite3_uint64] type shall specify
williamr@4
   228
**          a 64-bit unsigned integer.
williamr@4
   229
*/
williamr@4
   230
#ifdef SQLITE_INT64_TYPE
williamr@4
   231
  typedef SQLITE_INT64_TYPE sqlite_int64;
williamr@4
   232
  typedef unsigned SQLITE_INT64_TYPE sqlite_uint64;
williamr@4
   233
#elif defined(_MSC_VER) || defined(__BORLANDC__)
williamr@4
   234
  typedef __int64 sqlite_int64;
williamr@4
   235
  typedef unsigned __int64 sqlite_uint64;
williamr@4
   236
#else
williamr@4
   237
  typedef long long int sqlite_int64;
williamr@4
   238
  typedef unsigned long long int sqlite_uint64;
williamr@4
   239
#endif
williamr@4
   240
typedef sqlite_int64 sqlite3_int64;
williamr@4
   241
typedef sqlite_uint64 sqlite3_uint64;
williamr@4
   242
williamr@4
   243
/*
williamr@4
   244
** If compiling for a processor that lacks floating point support,
williamr@4
   245
** substitute integer for floating-point.
williamr@4
   246
*/
williamr@4
   247
#ifdef SQLITE_OMIT_FLOATING_POINT
williamr@4
   248
# define double sqlite3_int64
williamr@4
   249
#endif
williamr@4
   250
williamr@4
   251
/*
williamr@4
   252
** CAPI3REF: Closing A Database Connection {H12010} <S30100><S40200>
williamr@4
   253
**
williamr@4
   254
** This routine is the destructor for the [sqlite3] object.
williamr@4
   255
**
williamr@4
   256
** Applications should [sqlite3_finalize | finalize] all [prepared statements]
williamr@4
   257
** and [sqlite3_blob_close | close] all [BLOB handles] associated with
williamr@4
   258
** the [sqlite3] object prior to attempting to close the object.
williamr@4
   259
** The [sqlite3_next_stmt()] interface can be used to locate all
williamr@4
   260
** [prepared statements] associated with a [database connection] if desired.
williamr@4
   261
** Typical code might look like this:
williamr@4
   262
**
williamr@4
   263
** <blockquote><pre>
williamr@4
   264
** sqlite3_stmt *pStmt;
williamr@4
   265
** while( (pStmt = sqlite3_next_stmt(db, 0))!=0 ){
williamr@4
   266
** &nbsp;   sqlite3_finalize(pStmt);
williamr@4
   267
** }
williamr@4
   268
** </pre></blockquote>
williamr@4
   269
**
williamr@4
   270
** If [sqlite3_close()] is invoked while a transaction is open,
williamr@4
   271
** the transaction is automatically rolled back.
williamr@4
   272
**
williamr@4
   273
** INVARIANTS:
williamr@4
   274
**
williamr@4
   275
** {H12011} A successful call to [sqlite3_close(C)] shall destroy the
williamr@4
   276
**          [database connection] object C.
williamr@4
   277
**
williamr@4
   278
** {H12012} A successful call to [sqlite3_close(C)] shall return SQLITE_OK.
williamr@4
   279
**
williamr@4
   280
** {H12013} A successful call to [sqlite3_close(C)] shall release all
williamr@4
   281
**          memory and system resources associated with [database connection]
williamr@4
   282
**          C.
williamr@4
   283
**
williamr@4
   284
** {H12014} A call to [sqlite3_close(C)] on a [database connection] C that
williamr@4
   285
**          has one or more open [prepared statements] shall fail with
williamr@4
   286
**          an [SQLITE_BUSY] error code.
williamr@4
   287
**
williamr@4
   288
** {H12015} A call to [sqlite3_close(C)] where C is a NULL pointer shall
williamr@4
   289
**          return SQLITE_OK.
williamr@4
   290
**
williamr@4
   291
** {H12019} When [sqlite3_close(C)] is invoked on a [database connection] C
williamr@4
   292
**          that has a pending transaction, the transaction shall be
williamr@4
   293
**          rolled back.
williamr@4
   294
**
williamr@4
   295
** ASSUMPTIONS:
williamr@4
   296
**
williamr@4
   297
** {A12016} The C parameter to [sqlite3_close(C)] must be either a NULL
williamr@4
   298
**          pointer or an [sqlite3] object pointer obtained
williamr@4
   299
**          from [sqlite3_open()], [sqlite3_open16()], or
williamr@4
   300
**          [sqlite3_open_v2()], and not previously closed.
williamr@4
   301
*/
williamr@4
   302
IMPORT_C int sqlite3_close(sqlite3 *);
williamr@4
   303
williamr@4
   304
/*
williamr@4
   305
** The type for a callback function.
williamr@4
   306
** This is legacy and deprecated.  It is included for historical
williamr@4
   307
** compatibility and is not documented.
williamr@4
   308
*/
williamr@4
   309
typedef int (*sqlite3_callback)(void*,int,char**, char**);
williamr@4
   310
williamr@4
   311
/*
williamr@4
   312
** CAPI3REF: One-Step Query Execution Interface {H12100} <S10000>
williamr@4
   313
**
williamr@4
   314
** The sqlite3_exec() interface is a convenient way of running one or more
williamr@4
   315
** SQL statements without having to write a lot of C code.  The UTF-8 encoded
williamr@4
   316
** SQL statements are passed in as the second parameter to sqlite3_exec().
williamr@4
   317
** The statements are evaluated one by one until either an error or
williamr@4
   318
** an interrupt is encountered, or until they are all done.  The 3rd parameter
williamr@4
   319
** is an optional callback that is invoked once for each row of any query
williamr@4
   320
** results produced by the SQL statements.  The 5th parameter tells where
williamr@4
   321
** to write any error messages.
williamr@4
   322
**
williamr@4
   323
** The error message passed back through the 5th parameter is held
williamr@4
   324
** in memory obtained from [sqlite3_malloc()].  To avoid a memory leak,
williamr@4
   325
** the calling application should call [sqlite3_free()] on any error
williamr@4
   326
** message returned through the 5th parameter when it has finished using
williamr@4
   327
** the error message.
williamr@4
   328
**
williamr@4
   329
** If the SQL statement in the 2nd parameter is NULL or an empty string
williamr@4
   330
** or a string containing only whitespace and comments, then no SQL
williamr@4
   331
** statements are evaluated and the database is not changed.
williamr@4
   332
**
williamr@4
   333
** The sqlite3_exec() interface is implemented in terms of
williamr@4
   334
** [sqlite3_prepare_v2()], [sqlite3_step()], and [sqlite3_finalize()].
williamr@4
   335
** The sqlite3_exec() routine does nothing to the database that cannot be done
williamr@4
   336
** by [sqlite3_prepare_v2()], [sqlite3_step()], and [sqlite3_finalize()].
williamr@4
   337
**
williamr@4
   338
** INVARIANTS:
williamr@4
   339
**
williamr@4
   340
** {H12101} A successful invocation of [sqlite3_exec(D,S,C,A,E)]
williamr@4
   341
**          shall sequentially evaluate all of the UTF-8 encoded,
williamr@4
   342
**          semicolon-separated SQL statements in the zero-terminated
williamr@4
   343
**          string S within the context of the [database connection] D.
williamr@4
   344
**
williamr@4
   345
** {H12102} If the S parameter to [sqlite3_exec(D,S,C,A,E)] is NULL then
williamr@4
   346
**          the actions of the interface shall be the same as if the
williamr@4
   347
**          S parameter were an empty string.
williamr@4
   348
**
williamr@4
   349
** {H12104} The return value of [sqlite3_exec()] shall be [SQLITE_OK] if all
williamr@4
   350
**          SQL statements run successfully and to completion.
williamr@4
   351
**
williamr@4
   352
** {H12105} The return value of [sqlite3_exec()] shall be an appropriate
williamr@4
   353
**          non-zero [error code] if any SQL statement fails.
williamr@4
   354
**
williamr@4
   355
** {H12107} If one or more of the SQL statements handed to [sqlite3_exec()]
williamr@4
   356
**          return results and the 3rd parameter is not NULL, then
williamr@4
   357
**          the callback function specified by the 3rd parameter shall be
williamr@4
   358
**          invoked once for each row of result.
williamr@4
   359
**
williamr@4
   360
** {H12110} If the callback returns a non-zero value then [sqlite3_exec()]
williamr@4
   361
**          shall abort the SQL statement it is currently evaluating,
williamr@4
   362
**          skip all subsequent SQL statements, and return [SQLITE_ABORT].
williamr@4
   363
**
williamr@4
   364
** {H12113} The [sqlite3_exec()] routine shall pass its 4th parameter through
williamr@4
   365
**          as the 1st parameter of the callback.
williamr@4
   366
**
williamr@4
   367
** {H12116} The [sqlite3_exec()] routine shall set the 2nd parameter of its
williamr@4
   368
**          callback to be the number of columns in the current row of
williamr@4
   369
**          result.
williamr@4
   370
**
williamr@4
   371
** {H12119} The [sqlite3_exec()] routine shall set the 3rd parameter of its
williamr@4
   372
**          callback to be an array of pointers to strings holding the
williamr@4
   373
**          values for each column in the current result set row as
williamr@4
   374
**          obtained from [sqlite3_column_text()].
williamr@4
   375
**
williamr@4
   376
** {H12122} The [sqlite3_exec()] routine shall set the 4th parameter of its
williamr@4
   377
**          callback to be an array of pointers to strings holding the
williamr@4
   378
**          names of result columns as obtained from [sqlite3_column_name()].
williamr@4
   379
**
williamr@4
   380
** {H12125} If the 3rd parameter to [sqlite3_exec()] is NULL then
williamr@4
   381
**          [sqlite3_exec()] shall silently discard query results.
williamr@4
   382
**
williamr@4
   383
** {H12131} If an error occurs while parsing or evaluating any of the SQL
williamr@4
   384
**          statements in the S parameter of [sqlite3_exec(D,S,C,A,E)] and if
williamr@4
   385
**          the E parameter is not NULL, then [sqlite3_exec()] shall store
williamr@4
   386
**          in *E an appropriate error message written into memory obtained
williamr@4
   387
**          from [sqlite3_malloc()].
williamr@4
   388
**
williamr@4
   389
** {H12134} The [sqlite3_exec(D,S,C,A,E)] routine shall set the value of
williamr@4
   390
**          *E to NULL if E is not NULL and there are no errors.
williamr@4
   391
**
williamr@4
   392
** {H12137} The [sqlite3_exec(D,S,C,A,E)] function shall set the [error code]
williamr@4
   393
**          and message accessible via [sqlite3_errcode()],
williamr@4
   394
**          [sqlite3_errmsg()], and [sqlite3_errmsg16()].
williamr@4
   395
**
williamr@4
   396
** {H12138} If the S parameter to [sqlite3_exec(D,S,C,A,E)] is NULL or an
williamr@4
   397
**          empty string or contains nothing other than whitespace, comments,
williamr@4
   398
**          and/or semicolons, then results of [sqlite3_errcode()],
williamr@4
   399
**          [sqlite3_errmsg()], and [sqlite3_errmsg16()]
williamr@4
   400
**          shall reset to indicate no errors.
williamr@4
   401
**
williamr@4
   402
** ASSUMPTIONS:
williamr@4
   403
**
williamr@4
   404
** {A12141} The first parameter to [sqlite3_exec()] must be an valid and open
williamr@4
   405
**          [database connection].
williamr@4
   406
**
williamr@4
   407
** {A12142} The database connection must not be closed while
williamr@4
   408
**          [sqlite3_exec()] is running.
williamr@4
   409
**
williamr@4
   410
** {A12143} The calling function should use [sqlite3_free()] to free
williamr@4
   411
**          the memory that *errmsg is left pointing at once the error
williamr@4
   412
**          message is no longer needed.
williamr@4
   413
**
williamr@4
   414
** {A12145} The SQL statement text in the 2nd parameter to [sqlite3_exec()]
williamr@4
   415
**          must remain unchanged while [sqlite3_exec()] is running.
williamr@4
   416
*/
williamr@4
   417
IMPORT_C int sqlite3_exec(
williamr@4
   418
  sqlite3*,                                  /* An open database */
williamr@4
   419
  const char *sql,                           /* SQL to be evaluated */
williamr@4
   420
  int (*callback)(void*,int,char**,char**),  /* Callback function */
williamr@4
   421
  void *,                                    /* 1st argument to callback */
williamr@4
   422
  char **errmsg                              /* Error msg written here */
williamr@4
   423
);
williamr@4
   424
williamr@4
   425
/*
williamr@4
   426
** CAPI3REF: Result Codes {H10210} <S10700>
williamr@4
   427
** KEYWORDS: SQLITE_OK {error code} {error codes}
williamr@4
   428
** KEYWORDS: {result code} {result codes}
williamr@4
   429
**
williamr@4
   430
** Many SQLite functions return an integer result code from the set shown
williamr@4
   431
** here in order to indicates success or failure.
williamr@4
   432
**
williamr@4
   433
** New error codes may be added in future versions of SQLite.
williamr@4
   434
**
williamr@4
   435
** See also: [SQLITE_IOERR_READ | extended result codes]
williamr@4
   436
*/
williamr@4
   437
#define SQLITE_OK           0   /* Successful result */
williamr@4
   438
/* beginning-of-error-codes */
williamr@4
   439
#define SQLITE_ERROR        1   /* SQL error or missing database */
williamr@4
   440
#define SQLITE_INTERNAL     2   /* Internal logic error in SQLite */
williamr@4
   441
#define SQLITE_PERM         3   /* Access permission denied */
williamr@4
   442
#define SQLITE_ABORT        4   /* Callback routine requested an abort */
williamr@4
   443
#define SQLITE_BUSY         5   /* The database file is locked */
williamr@4
   444
#define SQLITE_LOCKED       6   /* A table in the database is locked */
williamr@4
   445
#define SQLITE_NOMEM        7   /* A malloc() failed */
williamr@4
   446
#define SQLITE_READONLY     8   /* Attempt to write a readonly database */
williamr@4
   447
#define SQLITE_INTERRUPT    9   /* Operation terminated by sqlite3_interrupt()*/
williamr@4
   448
#define SQLITE_IOERR       10   /* Some kind of disk I/O error occurred */
williamr@4
   449
#define SQLITE_CORRUPT     11   /* The database disk image is malformed */
williamr@4
   450
#define SQLITE_NOTFOUND    12   /* NOT USED. Table or record not found */
williamr@4
   451
#define SQLITE_FULL        13   /* Insertion failed because database is full */
williamr@4
   452
#define SQLITE_CANTOPEN    14   /* Unable to open the database file */
williamr@4
   453
#define SQLITE_PROTOCOL    15   /* NOT USED. Database lock protocol error */
williamr@4
   454
#define SQLITE_EMPTY       16   /* Database is empty */
williamr@4
   455
#define SQLITE_SCHEMA      17   /* The database schema changed */
williamr@4
   456
#define SQLITE_TOOBIG      18   /* String or BLOB exceeds size limit */
williamr@4
   457
#define SQLITE_CONSTRAINT  19   /* Abort due to constraint violation */
williamr@4
   458
#define SQLITE_MISMATCH    20   /* Data type mismatch */
williamr@4
   459
#define SQLITE_MISUSE      21   /* Library used incorrectly */
williamr@4
   460
#define SQLITE_NOLFS       22   /* Uses OS features not supported on host */
williamr@4
   461
#define SQLITE_AUTH        23   /* Authorization denied */
williamr@4
   462
#define SQLITE_FORMAT      24   /* Auxiliary database format error */
williamr@4
   463
#define SQLITE_RANGE       25   /* 2nd parameter to sqlite3_bind out of range */
williamr@4
   464
#define SQLITE_NOTADB      26   /* File opened that is not a database file */
williamr@4
   465
#define SQLITE_ROW         100  /* sqlite3_step() has another row ready */
williamr@4
   466
#define SQLITE_DONE        101  /* sqlite3_step() has finished executing */
williamr@4
   467
/* end-of-error-codes */
williamr@4
   468
williamr@4
   469
/*
williamr@4
   470
** CAPI3REF: Extended Result Codes {H10220} <S10700>
williamr@4
   471
** KEYWORDS: {extended error code} {extended error codes}
williamr@4
   472
** KEYWORDS: {extended result code} {extended result codes}
williamr@4
   473
**
williamr@4
   474
** In its default configuration, SQLite API routines return one of 26 integer
williamr@4
   475
** [SQLITE_OK | result codes].  However, experience has shown that many of
williamr@4
   476
** these result codes are too coarse-grained.  They do not provide as
williamr@4
   477
** much information about problems as programmers might like.  In an effort to
williamr@4
   478
** address this, newer versions of SQLite (version 3.3.8 and later) include
williamr@4
   479
** support for additional result codes that provide more detailed information
williamr@4
   480
** about errors. The extended result codes are enabled or disabled
williamr@4
   481
** on a per database connection basis using the
williamr@4
   482
** [sqlite3_extended_result_codes()] API.
williamr@4
   483
**
williamr@4
   484
** Some of the available extended result codes are listed here.
williamr@4
   485
** One may expect the number of extended result codes will be expand
williamr@4
   486
** over time.  Software that uses extended result codes should expect
williamr@4
   487
** to see new result codes in future releases of SQLite.
williamr@4
   488
**
williamr@4
   489
** The SQLITE_OK result code will never be extended.  It will always
williamr@4
   490
** be exactly zero.
williamr@4
   491
**
williamr@4
   492
** INVARIANTS:
williamr@4
   493
**
williamr@4
   494
** {H10223} The symbolic name for an extended result code shall contains
williamr@4
   495
**          a related primary result code as a prefix.
williamr@4
   496
**
williamr@4
   497
** {H10224} Primary result code names shall contain a single "_" character.
williamr@4
   498
**
williamr@4
   499
** {H10225} Extended result code names shall contain two or more "_" characters.
williamr@4
   500
**
williamr@4
   501
** {H10226} The numeric value of an extended result code shall contain the
williamr@4
   502
**          numeric value of its corresponding primary result code in
williamr@4
   503
**          its least significant 8 bits.
williamr@4
   504
*/
williamr@4
   505
#define SQLITE_IOERR_READ              (SQLITE_IOERR | (1<<8))
williamr@4
   506
#define SQLITE_IOERR_SHORT_READ        (SQLITE_IOERR | (2<<8))
williamr@4
   507
#define SQLITE_IOERR_WRITE             (SQLITE_IOERR | (3<<8))
williamr@4
   508
#define SQLITE_IOERR_FSYNC             (SQLITE_IOERR | (4<<8))
williamr@4
   509
#define SQLITE_IOERR_DIR_FSYNC         (SQLITE_IOERR | (5<<8))
williamr@4
   510
#define SQLITE_IOERR_TRUNCATE          (SQLITE_IOERR | (6<<8))
williamr@4
   511
#define SQLITE_IOERR_FSTAT             (SQLITE_IOERR | (7<<8))
williamr@4
   512
#define SQLITE_IOERR_UNLOCK            (SQLITE_IOERR | (8<<8))
williamr@4
   513
#define SQLITE_IOERR_RDLOCK            (SQLITE_IOERR | (9<<8))
williamr@4
   514
#define SQLITE_IOERR_DELETE            (SQLITE_IOERR | (10<<8))
williamr@4
   515
#define SQLITE_IOERR_BLOCKED           (SQLITE_IOERR | (11<<8))
williamr@4
   516
#define SQLITE_IOERR_NOMEM             (SQLITE_IOERR | (12<<8))
williamr@4
   517
#define SQLITE_IOERR_ACCESS            (SQLITE_IOERR | (13<<8))
williamr@4
   518
#define SQLITE_IOERR_CHECKRESERVEDLOCK (SQLITE_IOERR | (14<<8))
williamr@4
   519
#define SQLITE_IOERR_LOCK              (SQLITE_IOERR | (15<<8))
williamr@4
   520
williamr@4
   521
/*
williamr@4
   522
** CAPI3REF: Flags For File Open Operations {H10230} <H11120> <H12700>
williamr@4
   523
**
williamr@4
   524
** These bit values are intended for use in the
williamr@4
   525
** 3rd parameter to the [sqlite3_open_v2()] interface and
williamr@4
   526
** in the 4th parameter to the xOpen method of the
williamr@4
   527
** [sqlite3_vfs] object.
williamr@4
   528
*/
williamr@4
   529
#define SQLITE_OPEN_READONLY         0x00000001
williamr@4
   530
#define SQLITE_OPEN_READWRITE        0x00000002
williamr@4
   531
#define SQLITE_OPEN_CREATE           0x00000004
williamr@4
   532
#define SQLITE_OPEN_DELETEONCLOSE    0x00000008
williamr@4
   533
#define SQLITE_OPEN_EXCLUSIVE        0x00000010
williamr@4
   534
#define SQLITE_OPEN_MAIN_DB          0x00000100
williamr@4
   535
#define SQLITE_OPEN_TEMP_DB          0x00000200
williamr@4
   536
#define SQLITE_OPEN_TRANSIENT_DB     0x00000400
williamr@4
   537
#define SQLITE_OPEN_MAIN_JOURNAL     0x00000800
williamr@4
   538
#define SQLITE_OPEN_TEMP_JOURNAL     0x00001000
williamr@4
   539
#define SQLITE_OPEN_SUBJOURNAL       0x00002000
williamr@4
   540
#define SQLITE_OPEN_MASTER_JOURNAL   0x00004000
williamr@4
   541
#define SQLITE_OPEN_NOMUTEX          0x00008000
williamr@4
   542
#define SQLITE_OPEN_FULLMUTEX        0x00010000
williamr@4
   543
williamr@4
   544
/*
williamr@4
   545
** CAPI3REF: Device Characteristics {H10240} <H11120>
williamr@4
   546
**
williamr@4
   547
** The xDeviceCapabilities method of the [sqlite3_io_methods]
williamr@4
   548
** object returns an integer which is a vector of the these
williamr@4
   549
** bit values expressing I/O characteristics of the mass storage
williamr@4
   550
** device that holds the file that the [sqlite3_io_methods]
williamr@4
   551
** refers to.
williamr@4
   552
**
williamr@4
   553
** The SQLITE_IOCAP_ATOMIC property means that all writes of
williamr@4
   554
** any size are atomic.  The SQLITE_IOCAP_ATOMICnnn values
williamr@4
   555
** mean that writes of blocks that are nnn bytes in size and
williamr@4
   556
** are aligned to an address which is an integer multiple of
williamr@4
   557
** nnn are atomic.  The SQLITE_IOCAP_SAFE_APPEND value means
williamr@4
   558
** that when data is appended to a file, the data is appended
williamr@4
   559
** first then the size of the file is extended, never the other
williamr@4
   560
** way around.  The SQLITE_IOCAP_SEQUENTIAL property means that
williamr@4
   561
** information is written to disk in the same order as calls
williamr@4
   562
** to xWrite().
williamr@4
   563
*/
williamr@4
   564
#define SQLITE_IOCAP_ATOMIC          0x00000001
williamr@4
   565
#define SQLITE_IOCAP_ATOMIC512       0x00000002
williamr@4
   566
#define SQLITE_IOCAP_ATOMIC1K        0x00000004
williamr@4
   567
#define SQLITE_IOCAP_ATOMIC2K        0x00000008
williamr@4
   568
#define SQLITE_IOCAP_ATOMIC4K        0x00000010
williamr@4
   569
#define SQLITE_IOCAP_ATOMIC8K        0x00000020
williamr@4
   570
#define SQLITE_IOCAP_ATOMIC16K       0x00000040
williamr@4
   571
#define SQLITE_IOCAP_ATOMIC32K       0x00000080
williamr@4
   572
#define SQLITE_IOCAP_ATOMIC64K       0x00000100
williamr@4
   573
#define SQLITE_IOCAP_SAFE_APPEND     0x00000200
williamr@4
   574
#define SQLITE_IOCAP_SEQUENTIAL      0x00000400
williamr@4
   575
williamr@4
   576
/*
williamr@4
   577
** CAPI3REF: File Locking Levels {H10250} <H11120> <H11310>
williamr@4
   578
**
williamr@4
   579
** SQLite uses one of these integer values as the second
williamr@4
   580
** argument to calls it makes to the xLock() and xUnlock() methods
williamr@4
   581
** of an [sqlite3_io_methods] object.
williamr@4
   582
*/
williamr@4
   583
#define SQLITE_LOCK_NONE          0
williamr@4
   584
#define SQLITE_LOCK_SHARED        1
williamr@4
   585
#define SQLITE_LOCK_RESERVED      2
williamr@4
   586
#define SQLITE_LOCK_PENDING       3
williamr@4
   587
#define SQLITE_LOCK_EXCLUSIVE     4
williamr@4
   588
williamr@4
   589
/*
williamr@4
   590
** CAPI3REF: Synchronization Type Flags {H10260} <H11120>
williamr@4
   591
**
williamr@4
   592
** When SQLite invokes the xSync() method of an
williamr@4
   593
** [sqlite3_io_methods] object it uses a combination of
williamr@4
   594
** these integer values as the second argument.
williamr@4
   595
**
williamr@4
   596
** When the SQLITE_SYNC_DATAONLY flag is used, it means that the
williamr@4
   597
** sync operation only needs to flush data to mass storage.  Inode
williamr@4
   598
** information need not be flushed. The SQLITE_SYNC_NORMAL flag means
williamr@4
   599
** to use normal fsync() semantics. The SQLITE_SYNC_FULL flag means
williamr@4
   600
** to use Mac OS-X style fullsync instead of fsync().
williamr@4
   601
*/
williamr@4
   602
#define SQLITE_SYNC_NORMAL        0x00002
williamr@4
   603
#define SQLITE_SYNC_FULL          0x00003
williamr@4
   604
#define SQLITE_SYNC_DATAONLY      0x00010
williamr@4
   605
williamr@4
   606
/*
williamr@4
   607
** CAPI3REF: OS Interface Open File Handle {H11110} <S20110>
williamr@4
   608
**
williamr@4
   609
** An [sqlite3_file] object represents an open file in the OS
williamr@4
   610
** interface layer.  Individual OS interface implementations will
williamr@4
   611
** want to subclass this object by appending additional fields
williamr@4
   612
** for their own use.  The pMethods entry is a pointer to an
williamr@4
   613
** [sqlite3_io_methods] object that defines methods for performing
williamr@4
   614
** I/O operations on the open file.
williamr@4
   615
*/
williamr@4
   616
typedef struct sqlite3_file sqlite3_file;
williamr@4
   617
struct sqlite3_file {
williamr@4
   618
  const struct sqlite3_io_methods *pMethods;  /* Methods for an open file */
williamr@4
   619
};
williamr@4
   620
williamr@4
   621
/*
williamr@4
   622
** CAPI3REF: OS Interface File Virtual Methods Object {H11120} <S20110>
williamr@4
   623
**
williamr@4
   624
** Every file opened by the [sqlite3_vfs] xOpen method populates an
williamr@4
   625
** [sqlite3_file] object (or, more commonly, a subclass of the
williamr@4
   626
** [sqlite3_file] object) with a pointer to an instance of this object.
williamr@4
   627
** This object defines the methods used to perform various operations
williamr@4
   628
** against the open file represented by the [sqlite3_file] object.
williamr@4
   629
**
williamr@4
   630
** The flags argument to xSync may be one of [SQLITE_SYNC_NORMAL] or
williamr@4
   631
** [SQLITE_SYNC_FULL].  The first choice is the normal fsync().
williamr@4
   632
** The second choice is a Mac OS-X style fullsync.  The [SQLITE_SYNC_DATAONLY]
williamr@4
   633
** flag may be ORed in to indicate that only the data of the file
williamr@4
   634
** and not its inode needs to be synced.
williamr@4
   635
**
williamr@4
   636
** The integer values to xLock() and xUnlock() are one of
williamr@4
   637
** <ul>
williamr@4
   638
** <li> [SQLITE_LOCK_NONE],
williamr@4
   639
** <li> [SQLITE_LOCK_SHARED],
williamr@4
   640
** <li> [SQLITE_LOCK_RESERVED],
williamr@4
   641
** <li> [SQLITE_LOCK_PENDING], or
williamr@4
   642
** <li> [SQLITE_LOCK_EXCLUSIVE].
williamr@4
   643
** </ul>
williamr@4
   644
** xLock() increases the lock. xUnlock() decreases the lock.
williamr@4
   645
** The xCheckReservedLock() method checks whether any database connection,
williamr@4
   646
** either in this process or in some other process, is holding a RESERVED,
williamr@4
   647
** PENDING, or EXCLUSIVE lock on the file.  It returns true
williamr@4
   648
** if such a lock exists and false otherwise.
williamr@4
   649
**
williamr@4
   650
** The xFileControl() method is a generic interface that allows custom
williamr@4
   651
** VFS implementations to directly control an open file using the
williamr@4
   652
** [sqlite3_file_control()] interface.  The second "op" argument is an
williamr@4
   653
** integer opcode.  The third argument is a generic pointer intended to
williamr@4
   654
** point to a structure that may contain arguments or space in which to
williamr@4
   655
** write return values.  Potential uses for xFileControl() might be
williamr@4
   656
** functions to enable blocking locks with timeouts, to change the
williamr@4
   657
** locking strategy (for example to use dot-file locks), to inquire
williamr@4
   658
** about the status of a lock, or to break stale locks.  The SQLite
williamr@4
   659
** core reserves all opcodes less than 100 for its own use.
williamr@4
   660
** A [SQLITE_FCNTL_LOCKSTATE | list of opcodes] less than 100 is available.
williamr@4
   661
** Applications that define a custom xFileControl method should use opcodes
williamr@4
   662
** greater than 100 to avoid conflicts.
williamr@4
   663
**
williamr@4
   664
** The xSectorSize() method returns the sector size of the
williamr@4
   665
** device that underlies the file.  The sector size is the
williamr@4
   666
** minimum write that can be performed without disturbing
williamr@4
   667
** other bytes in the file.  The xDeviceCharacteristics()
williamr@4
   668
** method returns a bit vector describing behaviors of the
williamr@4
   669
** underlying device:
williamr@4
   670
**
williamr@4
   671
** <ul>
williamr@4
   672
** <li> [SQLITE_IOCAP_ATOMIC]
williamr@4
   673
** <li> [SQLITE_IOCAP_ATOMIC512]
williamr@4
   674
** <li> [SQLITE_IOCAP_ATOMIC1K]
williamr@4
   675
** <li> [SQLITE_IOCAP_ATOMIC2K]
williamr@4
   676
** <li> [SQLITE_IOCAP_ATOMIC4K]
williamr@4
   677
** <li> [SQLITE_IOCAP_ATOMIC8K]
williamr@4
   678
** <li> [SQLITE_IOCAP_ATOMIC16K]
williamr@4
   679
** <li> [SQLITE_IOCAP_ATOMIC32K]
williamr@4
   680
** <li> [SQLITE_IOCAP_ATOMIC64K]
williamr@4
   681
** <li> [SQLITE_IOCAP_SAFE_APPEND]
williamr@4
   682
** <li> [SQLITE_IOCAP_SEQUENTIAL]
williamr@4
   683
** </ul>
williamr@4
   684
**
williamr@4
   685
** The SQLITE_IOCAP_ATOMIC property means that all writes of
williamr@4
   686
** any size are atomic.  The SQLITE_IOCAP_ATOMICnnn values
williamr@4
   687
** mean that writes of blocks that are nnn bytes in size and
williamr@4
   688
** are aligned to an address which is an integer multiple of
williamr@4
   689
** nnn are atomic.  The SQLITE_IOCAP_SAFE_APPEND value means
williamr@4
   690
** that when data is appended to a file, the data is appended
williamr@4
   691
** first then the size of the file is extended, never the other
williamr@4
   692
** way around.  The SQLITE_IOCAP_SEQUENTIAL property means that
williamr@4
   693
** information is written to disk in the same order as calls
williamr@4
   694
** to xWrite().
williamr@4
   695
*/
williamr@4
   696
typedef struct sqlite3_io_methods sqlite3_io_methods;
williamr@4
   697
struct sqlite3_io_methods {
williamr@4
   698
  int iVersion;
williamr@4
   699
  int (*xClose)(sqlite3_file*);
williamr@4
   700
  int (*xRead)(sqlite3_file*, void*, int iAmt, sqlite3_int64 iOfst);
williamr@4
   701
  int (*xWrite)(sqlite3_file*, const void*, int iAmt, sqlite3_int64 iOfst);
williamr@4
   702
  int (*xTruncate)(sqlite3_file*, sqlite3_int64 size);
williamr@4
   703
  int (*xSync)(sqlite3_file*, int flags);
williamr@4
   704
  int (*xFileSize)(sqlite3_file*, sqlite3_int64 *pSize);
williamr@4
   705
  int (*xLock)(sqlite3_file*, int);
williamr@4
   706
  int (*xUnlock)(sqlite3_file*, int);
williamr@4
   707
  int (*xCheckReservedLock)(sqlite3_file*, int *pResOut);
williamr@4
   708
  int (*xFileControl)(sqlite3_file*, int op, void *pArg);
williamr@4
   709
  int (*xSectorSize)(sqlite3_file*);
williamr@4
   710
  int (*xDeviceCharacteristics)(sqlite3_file*);
williamr@4
   711
  /* Additional methods may be added in future releases */
williamr@4
   712
};
williamr@4
   713
williamr@4
   714
/*
williamr@4
   715
** CAPI3REF: Standard File Control Opcodes {H11310} <S30800>
williamr@4
   716
**
williamr@4
   717
** These integer constants are opcodes for the xFileControl method
williamr@4
   718
** of the [sqlite3_io_methods] object and for the [sqlite3_file_control()]
williamr@4
   719
** interface.
williamr@4
   720
**
williamr@4
   721
** The [SQLITE_FCNTL_LOCKSTATE] opcode is used for debugging.  This
williamr@4
   722
** opcode causes the xFileControl method to write the current state of
williamr@4
   723
** the lock (one of [SQLITE_LOCK_NONE], [SQLITE_LOCK_SHARED],
williamr@4
   724
** [SQLITE_LOCK_RESERVED], [SQLITE_LOCK_PENDING], or [SQLITE_LOCK_EXCLUSIVE])
williamr@4
   725
** into an integer that the pArg argument points to. This capability
williamr@4
   726
** is used during testing and only needs to be supported when SQLITE_TEST
williamr@4
   727
** is defined.
williamr@4
   728
*/
williamr@4
   729
#define SQLITE_FCNTL_LOCKSTATE        1
williamr@4
   730
williamr@4
   731
/*
williamr@4
   732
** CAPI3REF: Mutex Handle {H17110} <S20130>
williamr@4
   733
**
williamr@4
   734
** The mutex module within SQLite defines [sqlite3_mutex] to be an
williamr@4
   735
** abstract type for a mutex object.  The SQLite core never looks
williamr@4
   736
** at the internal representation of an [sqlite3_mutex].  It only
williamr@4
   737
** deals with pointers to the [sqlite3_mutex] object.
williamr@4
   738
**
williamr@4
   739
** Mutexes are created using [sqlite3_mutex_alloc()].
williamr@4
   740
*/
williamr@4
   741
typedef struct sqlite3_mutex sqlite3_mutex;
williamr@4
   742
williamr@4
   743
/*
williamr@4
   744
** CAPI3REF: OS Interface Object {H11140} <S20100>
williamr@4
   745
**
williamr@4
   746
** An instance of the sqlite3_vfs object defines the interface between
williamr@4
   747
** the SQLite core and the underlying operating system.  The "vfs"
williamr@4
   748
** in the name of the object stands for "virtual file system".
williamr@4
   749
**
williamr@4
   750
** The value of the iVersion field is initially 1 but may be larger in
williamr@4
   751
** future versions of SQLite.  Additional fields may be appended to this
williamr@4
   752
** object when the iVersion value is increased.  Note that the structure
williamr@4
   753
** of the sqlite3_vfs object changes in the transaction between
williamr@4
   754
** SQLite version 3.5.9 and 3.6.0 and yet the iVersion field was not
williamr@4
   755
** modified.
williamr@4
   756
**
williamr@4
   757
** The szOsFile field is the size of the subclassed [sqlite3_file]
williamr@4
   758
** structure used by this VFS.  mxPathname is the maximum length of
williamr@4
   759
** a pathname in this VFS.
williamr@4
   760
**
williamr@4
   761
** Registered sqlite3_vfs objects are kept on a linked list formed by
williamr@4
   762
** the pNext pointer.  The [sqlite3_vfs_register()]
williamr@4
   763
** and [sqlite3_vfs_unregister()] interfaces manage this list
williamr@4
   764
** in a thread-safe way.  The [sqlite3_vfs_find()] interface
williamr@4
   765
** searches the list.  Neither the application code nor the VFS
williamr@4
   766
** implementation should use the pNext pointer.
williamr@4
   767
**
williamr@4
   768
** The pNext field is the only field in the sqlite3_vfs
williamr@4
   769
** structure that SQLite will ever modify.  SQLite will only access
williamr@4
   770
** or modify this field while holding a particular static mutex.
williamr@4
   771
** The application should never modify anything within the sqlite3_vfs
williamr@4
   772
** object once the object has been registered.
williamr@4
   773
**
williamr@4
   774
** The zName field holds the name of the VFS module.  The name must
williamr@4
   775
** be unique across all VFS modules.
williamr@4
   776
**
williamr@4
   777
** {H11141} SQLite will guarantee that the zFilename parameter to xOpen
williamr@4
   778
** is either a NULL pointer or string obtained
williamr@4
   779
** from xFullPathname().  SQLite further guarantees that
williamr@4
   780
** the string will be valid and unchanged until xClose() is
williamr@4
   781
** called. {END}  Because of the previous sentense,
williamr@4
   782
** the [sqlite3_file] can safely store a pointer to the
williamr@4
   783
** filename if it needs to remember the filename for some reason.
williamr@4
   784
** If the zFilename parameter is xOpen is a NULL pointer then xOpen
williamr@4
   785
** must invite its own temporary name for the file.  Whenever the 
williamr@4
   786
** xFilename parameter is NULL it will also be the case that the
williamr@4
   787
** flags parameter will include [SQLITE_OPEN_DELETEONCLOSE].
williamr@4
   788
**
williamr@4
   789
** {H11142} The flags argument to xOpen() includes all bits set in
williamr@4
   790
** the flags argument to [sqlite3_open_v2()].  Or if [sqlite3_open()]
williamr@4
   791
** or [sqlite3_open16()] is used, then flags includes at least
williamr@4
   792
** [SQLITE_OPEN_READWRITE] | [SQLITE_OPEN_CREATE]. {END}
williamr@4
   793
** If xOpen() opens a file read-only then it sets *pOutFlags to
williamr@4
   794
** include [SQLITE_OPEN_READONLY].  Other bits in *pOutFlags may be set.
williamr@4
   795
**
williamr@4
   796
** {H11143} SQLite will also add one of the following flags to the xOpen()
williamr@4
   797
** call, depending on the object being opened:
williamr@4
   798
**
williamr@4
   799
** <ul>
williamr@4
   800
** <li>  [SQLITE_OPEN_MAIN_DB]
williamr@4
   801
** <li>  [SQLITE_OPEN_MAIN_JOURNAL]
williamr@4
   802
** <li>  [SQLITE_OPEN_TEMP_DB]
williamr@4
   803
** <li>  [SQLITE_OPEN_TEMP_JOURNAL]
williamr@4
   804
** <li>  [SQLITE_OPEN_TRANSIENT_DB]
williamr@4
   805
** <li>  [SQLITE_OPEN_SUBJOURNAL]
williamr@4
   806
** <li>  [SQLITE_OPEN_MASTER_JOURNAL]
williamr@4
   807
** </ul> {END}
williamr@4
   808
**
williamr@4
   809
** The file I/O implementation can use the object type flags to
williamr@4
   810
** change the way it deals with files.  For example, an application
williamr@4
   811
** that does not care about crash recovery or rollback might make
williamr@4
   812
** the open of a journal file a no-op.  Writes to this journal would
williamr@4
   813
** also be no-ops, and any attempt to read the journal would return
williamr@4
   814
** SQLITE_IOERR.  Or the implementation might recognize that a database
williamr@4
   815
** file will be doing page-aligned sector reads and writes in a random
williamr@4
   816
** order and set up its I/O subsystem accordingly.
williamr@4
   817
**
williamr@4
   818
** SQLite might also add one of the following flags to the xOpen method:
williamr@4
   819
**
williamr@4
   820
** <ul>
williamr@4
   821
** <li> [SQLITE_OPEN_DELETEONCLOSE]
williamr@4
   822
** <li> [SQLITE_OPEN_EXCLUSIVE]
williamr@4
   823
** </ul>
williamr@4
   824
**
williamr@4
   825
** {H11145} The [SQLITE_OPEN_DELETEONCLOSE] flag means the file should be
williamr@4
   826
** deleted when it is closed.  {H11146} The [SQLITE_OPEN_DELETEONCLOSE]
williamr@4
   827
** will be set for TEMP  databases, journals and for subjournals.
williamr@4
   828
**
williamr@4
   829
** {H11147} The [SQLITE_OPEN_EXCLUSIVE] flag means the file should be opened
williamr@4
   830
** for exclusive access.  This flag is set for all files except
williamr@4
   831
** for the main database file.
williamr@4
   832
**
williamr@4
   833
** {H11148} At least szOsFile bytes of memory are allocated by SQLite
williamr@4
   834
** to hold the  [sqlite3_file] structure passed as the third
williamr@4
   835
** argument to xOpen. {END}  The xOpen method does not have to
williamr@4
   836
** allocate the structure; it should just fill it in.
williamr@4
   837
**
williamr@4
   838
** {H11149} The flags argument to xAccess() may be [SQLITE_ACCESS_EXISTS]
williamr@4
   839
** to test for the existence of a file, or [SQLITE_ACCESS_READWRITE] to
williamr@4
   840
** test whether a file is readable and writable, or [SQLITE_ACCESS_READ]
williamr@4
   841
** to test whether a file is at least readable. {END}  The file can be a
williamr@4
   842
** directory.
williamr@4
   843
**
williamr@4
   844
** {H11150} SQLite will always allocate at least mxPathname+1 bytes for the
williamr@4
   845
** output buffer xFullPathname. {H11151} The exact size of the output buffer
williamr@4
   846
** is also passed as a parameter to both  methods. {END}  If the output buffer
williamr@4
   847
** is not large enough, [SQLITE_CANTOPEN] should be returned. Since this is
williamr@4
   848
** handled as a fatal error by SQLite, vfs implementations should endeavor
williamr@4
   849
** to prevent this by setting mxPathname to a sufficiently large value.
williamr@4
   850
**
williamr@4
   851
** The xRandomness(), xSleep(), and xCurrentTime() interfaces
williamr@4
   852
** are not strictly a part of the filesystem, but they are
williamr@4
   853
** included in the VFS structure for completeness.
williamr@4
   854
** The xRandomness() function attempts to return nBytes bytes
williamr@4
   855
** of good-quality randomness into zOut.  The return value is
williamr@4
   856
** the actual number of bytes of randomness obtained.
williamr@4
   857
** The xSleep() method causes the calling thread to sleep for at
williamr@4
   858
** least the number of microseconds given.  The xCurrentTime()
williamr@4
   859
** method returns a Julian Day Number for the current date and time.
williamr@4
   860
*/
williamr@4
   861
typedef struct sqlite3_vfs sqlite3_vfs;
williamr@4
   862
struct sqlite3_vfs {
williamr@4
   863
  int iVersion;            /* Structure version number */
williamr@4
   864
  int szOsFile;            /* Size of subclassed sqlite3_file */
williamr@4
   865
  int mxPathname;          /* Maximum file pathname length */
williamr@4
   866
  sqlite3_vfs *pNext;      /* Next registered VFS */
williamr@4
   867
  const char *zName;       /* Name of this virtual file system */
williamr@4
   868
  void *pAppData;          /* Pointer to application-specific data */
williamr@4
   869
  int (*xOpen)(sqlite3_vfs*, const char *zName, sqlite3_file*,
williamr@4
   870
               int flags, int *pOutFlags);
williamr@4
   871
  int (*xDelete)(sqlite3_vfs*, const char *zName, int syncDir);
williamr@4
   872
  int (*xAccess)(sqlite3_vfs*, const char *zName, int flags, int *pResOut);
williamr@4
   873
  int (*xFullPathname)(sqlite3_vfs*, const char *zName, int nOut, char *zOut);
williamr@4
   874
  void *(*xDlOpen)(sqlite3_vfs*, const char *zFilename);
williamr@4
   875
  void (*xDlError)(sqlite3_vfs*, int nByte, char *zErrMsg);
williamr@4
   876
  void *(*xDlSym)(sqlite3_vfs*,void*, const char *zSymbol);
williamr@4
   877
  void (*xDlClose)(sqlite3_vfs*, void*);
williamr@4
   878
  int (*xRandomness)(sqlite3_vfs*, int nByte, char *zOut);
williamr@4
   879
  int (*xSleep)(sqlite3_vfs*, int microseconds);
williamr@4
   880
  int (*xCurrentTime)(sqlite3_vfs*, double*);
williamr@4
   881
  int (*xGetLastError)(sqlite3_vfs*, int, char *);
williamr@4
   882
  /* New fields may be appended in figure versions.  The iVersion
williamr@4
   883
  ** value will increment whenever this happens. */
williamr@4
   884
};
williamr@4
   885
williamr@4
   886
/*
williamr@4
   887
** CAPI3REF: Flags for the xAccess VFS method {H11190} <H11140>
williamr@4
   888
**
williamr@4
   889
** {H11191} These integer constants can be used as the third parameter to
williamr@4
   890
** the xAccess method of an [sqlite3_vfs] object. {END}  They determine
williamr@4
   891
** what kind of permissions the xAccess method is looking for.
williamr@4
   892
** {H11192} With SQLITE_ACCESS_EXISTS, the xAccess method
williamr@4
   893
** simply checks whether the file exists.
williamr@4
   894
** {H11193} With SQLITE_ACCESS_READWRITE, the xAccess method
williamr@4
   895
** checks whether the file is both readable and writable.
williamr@4
   896
** {H11194} With SQLITE_ACCESS_READ, the xAccess method
williamr@4
   897
** checks whether the file is readable.
williamr@4
   898
*/
williamr@4
   899
#define SQLITE_ACCESS_EXISTS    0
williamr@4
   900
#define SQLITE_ACCESS_READWRITE 1
williamr@4
   901
#define SQLITE_ACCESS_READ      2
williamr@4
   902
williamr@4
   903
/*
williamr@4
   904
** CAPI3REF: Initialize The SQLite Library {H10130} <S20000><S30100>
williamr@4
   905
**
williamr@4
   906
** The sqlite3_initialize() routine initializes the
williamr@4
   907
** SQLite library.  The sqlite3_shutdown() routine
williamr@4
   908
** deallocates any resources that were allocated by sqlite3_initialize().
williamr@4
   909
**
williamr@4
   910
** A call to sqlite3_initialize() is an "effective" call if it is
williamr@4
   911
** the first time sqlite3_initialize() is invoked during the lifetime of
williamr@4
   912
** the process, or if it is the first time sqlite3_initialize() is invoked
williamr@4
   913
** following a call to sqlite3_shutdown().  Only an effective call
williamr@4
   914
** of sqlite3_initialize() does any initialization.  All other calls
williamr@4
   915
** are harmless no-ops.
williamr@4
   916
**
williamr@4
   917
** Among other things, sqlite3_initialize() shall invoke
williamr@4
   918
** sqlite3_os_init().  Similarly, sqlite3_shutdown()
williamr@4
   919
** shall invoke sqlite3_os_end().
williamr@4
   920
**
williamr@4
   921
** The sqlite3_initialize() routine returns SQLITE_OK on success.
williamr@4
   922
** If for some reason, sqlite3_initialize() is unable to initialize
williamr@4
   923
** the library (perhaps it is unable to allocate a needed resource such
williamr@4
   924
** as a mutex) it returns an [error code] other than SQLITE_OK.
williamr@4
   925
**
williamr@4
   926
** The sqlite3_initialize() routine is called internally by many other
williamr@4
   927
** SQLite interfaces so that an application usually does not need to
williamr@4
   928
** invoke sqlite3_initialize() directly.  For example, [sqlite3_open()]
williamr@4
   929
** calls sqlite3_initialize() so the SQLite library will be automatically
williamr@4
   930
** initialized when [sqlite3_open()] is called if it has not be initialized
williamr@4
   931
** already.  However, if SQLite is compiled with the SQLITE_OMIT_AUTOINIT
williamr@4
   932
** compile-time option, then the automatic calls to sqlite3_initialize()
williamr@4
   933
** are omitted and the application must call sqlite3_initialize() directly
williamr@4
   934
** prior to using any other SQLite interface.  For maximum portability,
williamr@4
   935
** it is recommended that applications always invoke sqlite3_initialize()
williamr@4
   936
** directly prior to using any other SQLite interface.  Future releases
williamr@4
   937
** of SQLite may require this.  In other words, the behavior exhibited
williamr@4
   938
** when SQLite is compiled with SQLITE_OMIT_AUTOINIT might become the
williamr@4
   939
** default behavior in some future release of SQLite.
williamr@4
   940
**
williamr@4
   941
** The sqlite3_os_init() routine does operating-system specific
williamr@4
   942
** initialization of the SQLite library.  The sqlite3_os_end()
williamr@4
   943
** routine undoes the effect of sqlite3_os_init().  Typical tasks
williamr@4
   944
** performed by these routines include allocation or deallocation
williamr@4
   945
** of static resources, initialization of global variables,
williamr@4
   946
** setting up a default [sqlite3_vfs] module, or setting up
williamr@4
   947
** a default configuration using [sqlite3_config()].
williamr@4
   948
**
williamr@4
   949
** The application should never invoke either sqlite3_os_init()
williamr@4
   950
** or sqlite3_os_end() directly.  The application should only invoke
williamr@4
   951
** sqlite3_initialize() and sqlite3_shutdown().  The sqlite3_os_init()
williamr@4
   952
** interface is called automatically by sqlite3_initialize() and
williamr@4
   953
** sqlite3_os_end() is called by sqlite3_shutdown().  Appropriate
williamr@4
   954
** implementations for sqlite3_os_init() and sqlite3_os_end()
williamr@4
   955
** are built into SQLite when it is compiled for unix, windows, or os/2.
williamr@4
   956
** When built for other platforms (using the SQLITE_OS_OTHER=1 compile-time
williamr@4
   957
** option) the application must supply a suitable implementation for
williamr@4
   958
** sqlite3_os_init() and sqlite3_os_end().  An application-supplied
williamr@4
   959
** implementation of sqlite3_os_init() or sqlite3_os_end()
williamr@4
   960
** must return SQLITE_OK on success and some other [error code] upon
williamr@4
   961
** failure.
williamr@4
   962
*/
williamr@4
   963
IMPORT_C int sqlite3_initialize(void);
williamr@4
   964
IMPORT_C int sqlite3_shutdown(void);
williamr@4
   965
IMPORT_C int sqlite3_os_init(void);
williamr@4
   966
IMPORT_C int sqlite3_os_end(void);
williamr@4
   967
williamr@4
   968
/*
williamr@4
   969
** CAPI3REF: Configuring The SQLite Library {H10145} <S20000><S30200>
williamr@4
   970
** EXPERIMENTAL
williamr@4
   971
**
williamr@4
   972
** The sqlite3_config() interface is used to make global configuration
williamr@4
   973
** changes to SQLite in order to tune SQLite to the specific needs of
williamr@4
   974
** the application.  The default configuration is recommended for most
williamr@4
   975
** applications and so this routine is usually not necessary.  It is
williamr@4
   976
** provided to support rare applications with unusual needs.
williamr@4
   977
**
williamr@4
   978
** The sqlite3_config() interface is not threadsafe.  The application
williamr@4
   979
** must insure that no other SQLite interfaces are invoked by other
williamr@4
   980
** threads while sqlite3_config() is running.  Furthermore, sqlite3_config()
williamr@4
   981
** may only be invoked prior to library initialization using
williamr@4
   982
** [sqlite3_initialize()] or after shutdown by [sqlite3_shutdown()].
williamr@4
   983
** Note, however, that sqlite3_config() can be called as part of the
williamr@4
   984
** implementation of an application-defined [sqlite3_os_init()].
williamr@4
   985
**
williamr@4
   986
** The first argument to sqlite3_config() is an integer
williamr@4
   987
** [SQLITE_CONFIG_SINGLETHREAD | configuration option] that determines
williamr@4
   988
** what property of SQLite is to be configured.  Subsequent arguments
williamr@4
   989
** vary depending on the [SQLITE_CONFIG_SINGLETHREAD | configuration option]
williamr@4
   990
** in the first argument.
williamr@4
   991
**
williamr@4
   992
** When a configuration option is set, sqlite3_config() returns SQLITE_OK.
williamr@4
   993
** If the option is unknown or SQLite is unable to set the option
williamr@4
   994
** then this routine returns a non-zero [error code].
williamr@4
   995
*/
williamr@4
   996
IMPORT_C int sqlite3_config(int, ...);
williamr@4
   997
williamr@4
   998
/*
williamr@4
   999
** CAPI3REF: Configure database connections  {H10180} <S20000>
williamr@4
  1000
** EXPERIMENTAL
williamr@4
  1001
**
williamr@4
  1002
** The sqlite3_db_config() interface is used to make configuration
williamr@4
  1003
** changes to a [database connection].  The interface is similar to
williamr@4
  1004
** [sqlite3_config()] except that the changes apply to a single
williamr@4
  1005
** [database connection] (specified in the first argument).  The
williamr@4
  1006
** sqlite3_db_config() interface can only be used immediately after
williamr@4
  1007
** the database connection is created using [sqlite3_open()],
williamr@4
  1008
** [sqlite3_open16()], or [sqlite3_open_v2()].  
williamr@4
  1009
**
williamr@4
  1010
** The second argument to sqlite3_db_config(D,V,...)  is the
williamr@4
  1011
** configuration verb - an integer code that indicates what
williamr@4
  1012
** aspect of the [database connection] is being configured.
williamr@4
  1013
** The only choice for this value is [SQLITE_DBCONFIG_LOOKASIDE].
williamr@4
  1014
** New verbs are likely to be added in future releases of SQLite.
williamr@4
  1015
** Additional arguments depend on the verb.
williamr@4
  1016
*/
williamr@4
  1017
IMPORT_C int sqlite3_db_config(sqlite3*, int op, ...);
williamr@4
  1018
williamr@4
  1019
/*
williamr@4
  1020
** CAPI3REF: Memory Allocation Routines {H10155} <S20120>
williamr@4
  1021
** EXPERIMENTAL
williamr@4
  1022
**
williamr@4
  1023
** An instance of this object defines the interface between SQLite
williamr@4
  1024
** and low-level memory allocation routines.
williamr@4
  1025
**
williamr@4
  1026
** This object is used in only one place in the SQLite interface.
williamr@4
  1027
** A pointer to an instance of this object is the argument to
williamr@4
  1028
** [sqlite3_config()] when the configuration option is
williamr@4
  1029
** [SQLITE_CONFIG_MALLOC].  By creating an instance of this object
williamr@4
  1030
** and passing it to [sqlite3_config()] during configuration, an
williamr@4
  1031
** application can specify an alternative memory allocation subsystem
williamr@4
  1032
** for SQLite to use for all of its dynamic memory needs.
williamr@4
  1033
**
williamr@4
  1034
** Note that SQLite comes with a built-in memory allocator that is
williamr@4
  1035
** perfectly adequate for the overwhelming majority of applications
williamr@4
  1036
** and that this object is only useful to a tiny minority of applications
williamr@4
  1037
** with specialized memory allocation requirements.  This object is
williamr@4
  1038
** also used during testing of SQLite in order to specify an alternative
williamr@4
  1039
** memory allocator that simulates memory out-of-memory conditions in
williamr@4
  1040
** order to verify that SQLite recovers gracefully from such
williamr@4
  1041
** conditions.
williamr@4
  1042
**
williamr@4
  1043
** The xMalloc, xFree, and xRealloc methods must work like the
williamr@4
  1044
** malloc(), free(), and realloc() functions from the standard library.
williamr@4
  1045
**
williamr@4
  1046
** xSize should return the allocated size of a memory allocation
williamr@4
  1047
** previously obtained from xMalloc or xRealloc.  The allocated size
williamr@4
  1048
** is always at least as big as the requested size but may be larger.
williamr@4
  1049
**
williamr@4
  1050
** The xRoundup method returns what would be the allocated size of
williamr@4
  1051
** a memory allocation given a particular requested size.  Most memory
williamr@4
  1052
** allocators round up memory allocations at least to the next multiple
williamr@4
  1053
** of 8.  Some allocators round up to a larger multiple or to a power of 2.
williamr@4
  1054
**
williamr@4
  1055
** The xInit method initializes the memory allocator.  (For example,
williamr@4
  1056
** it might allocate any require mutexes or initialize internal data
williamr@4
  1057
** structures.  The xShutdown method is invoked (indirectly) by
williamr@4
  1058
** [sqlite3_shutdown()] and should deallocate any resources acquired
williamr@4
  1059
** by xInit.  The pAppData pointer is used as the only parameter to
williamr@4
  1060
** xInit and xShutdown.
williamr@4
  1061
*/
williamr@4
  1062
typedef struct sqlite3_mem_methods sqlite3_mem_methods;
williamr@4
  1063
struct sqlite3_mem_methods {
williamr@4
  1064
  void *(*xMalloc)(int);         /* Memory allocation function */
williamr@4
  1065
  void (*xFree)(void*);          /* Free a prior allocation */
williamr@4
  1066
  void *(*xRealloc)(void*,int);  /* Resize an allocation */
williamr@4
  1067
  int (*xSize)(void*);           /* Return the size of an allocation */
williamr@4
  1068
  int (*xRoundup)(int);          /* Round up request size to allocation size */
williamr@4
  1069
  int (*xInit)(void*);           /* Initialize the memory allocator */
williamr@4
  1070
  void (*xShutdown)(void*);      /* Deinitialize the memory allocator */
williamr@4
  1071
  void *pAppData;                /* Argument to xInit() and xShutdown() */
williamr@4
  1072
};
williamr@4
  1073
williamr@4
  1074
/*
williamr@4
  1075
** CAPI3REF: Configuration Options {H10160} <S20000>
williamr@4
  1076
** EXPERIMENTAL
williamr@4
  1077
**
williamr@4
  1078
** These constants are the available integer configuration options that
williamr@4
  1079
** can be passed as the first argument to the [sqlite3_config()] interface.
williamr@4
  1080
**
williamr@4
  1081
** New configuration options may be added in future releases of SQLite.
williamr@4
  1082
** Existing configuration options might be discontinued.  Applications
williamr@4
  1083
** should check the return code from [sqlite3_config()] to make sure that
williamr@4
  1084
** the call worked.  The [sqlite3_config()] interface will return a
williamr@4
  1085
** non-zero [error code] if a discontinued or unsupported configuration option
williamr@4
  1086
** is invoked.
williamr@4
  1087
**
williamr@4
  1088
** <dl>
williamr@4
  1089
** <dt>SQLITE_CONFIG_SINGLETHREAD</dt>
williamr@4
  1090
** <dd>There are no arguments to this option.  This option disables
williamr@4
  1091
** all mutexing and puts SQLite into a mode where it can only be used
williamr@4
  1092
** by a single thread.</dd>
williamr@4
  1093
**
williamr@4
  1094
** <dt>SQLITE_CONFIG_MULTITHREAD</dt>
williamr@4
  1095
** <dd>There are no arguments to this option.  This option disables
williamr@4
  1096
** mutexing on [database connection] and [prepared statement] objects.
williamr@4
  1097
** The application is responsible for serializing access to
williamr@4
  1098
** [database connections] and [prepared statements].  But other mutexes
williamr@4
  1099
** are enabled so that SQLite will be safe to use in a multi-threaded
williamr@4
  1100
** environment as long as no two threads attempt to use the same
williamr@4
  1101
** [database connection] at the same time.  See the [threading mode]
williamr@4
  1102
** documentation for additional information.</dd>
williamr@4
  1103
**
williamr@4
  1104
** <dt>SQLITE_CONFIG_SERIALIZED</dt>
williamr@4
  1105
** <dd>There are no arguments to this option.  This option enables
williamr@4
  1106
** all mutexes including the recursive
williamr@4
  1107
** mutexes on [database connection] and [prepared statement] objects.
williamr@4
  1108
** In this mode (which is the default when SQLite is compiled with
williamr@4
  1109
** [SQLITE_THREADSAFE=1]) the SQLite library will itself serialize access
williamr@4
  1110
** to [database connections] and [prepared statements] so that the
williamr@4
  1111
** application is free to use the same [database connection] or the
williamr@4
  1112
** same [prepared statement] in different threads at the same time.
williamr@4
  1113
** See the [threading mode] documentation for additional information.</dd>
williamr@4
  1114
**
williamr@4
  1115
** <dt>SQLITE_CONFIG_MALLOC</dt>
williamr@4
  1116
** <dd>This option takes a single argument which is a pointer to an
williamr@4
  1117
** instance of the [sqlite3_mem_methods] structure.  The argument specifies
williamr@4
  1118
** alternative low-level memory allocation routines to be used in place of
williamr@4
  1119
** the memory allocation routines built into SQLite.</dd>
williamr@4
  1120
**
williamr@4
  1121
** <dt>SQLITE_CONFIG_GETMALLOC</dt>
williamr@4
  1122
** <dd>This option takes a single argument which is a pointer to an
williamr@4
  1123
** instance of the [sqlite3_mem_methods] structure.  The [sqlite3_mem_methods]
williamr@4
  1124
** structure is filled with the currently defined memory allocation routines.
williamr@4
  1125
** This option can be used to overload the default memory allocation
williamr@4
  1126
** routines with a wrapper that simulations memory allocation failure or
williamr@4
  1127
** tracks memory usage, for example.</dd>
williamr@4
  1128
**
williamr@4
  1129
** <dt>SQLITE_CONFIG_MEMSTATUS</dt>
williamr@4
  1130
** <dd>This option takes single argument of type int, interpreted as a 
williamr@4
  1131
** boolean, which enables or disables the collection of memory allocation 
williamr@4
  1132
** statistics. When disabled, the following SQLite interfaces become 
williamr@4
  1133
** non-operational:
williamr@4
  1134
**   <ul>
williamr@4
  1135
**   <li> [sqlite3_memory_used()]
williamr@4
  1136
**   <li> [sqlite3_memory_highwater()]
williamr@4
  1137
**   <li> [sqlite3_soft_heap_limit()]
williamr@4
  1138
**   <li> [sqlite3_status()]
williamr@4
  1139
**   </ul>
williamr@4
  1140
** </dd>
williamr@4
  1141
**
williamr@4
  1142
** <dt>SQLITE_CONFIG_SCRATCH</dt>
williamr@4
  1143
** <dd>This option specifies a static memory buffer that SQLite can use for
williamr@4
  1144
** scratch memory.  There are three arguments:  A pointer to the memory, the
williamr@4
  1145
** size of each scratch buffer (sz), and the number of buffers (N).  The sz
williamr@4
  1146
** argument must be a multiple of 16. The sz parameter should be a few bytes
williamr@4
  1147
** larger than the actual scratch space required due internal overhead.
williamr@4
  1148
** The first
williamr@4
  1149
** argument should point to an allocation of at least sz*N bytes of memory.
williamr@4
  1150
** SQLite will use no more than one scratch buffer at once per thread, so
williamr@4
  1151
** N should be set to the expected maximum number of threads.  The sz
williamr@4
  1152
** parameter should be 6 times the size of the largest database page size.
williamr@4
  1153
** Scratch buffers are used as part of the btree balance operation.  If
williamr@4
  1154
** The btree balancer needs additional memory beyond what is provided by
williamr@4
  1155
** scratch buffers or if no scratch buffer space is specified, then SQLite
williamr@4
  1156
** goes to [sqlite3_malloc()] to obtain the memory it needs.</dd>
williamr@4
  1157
**
williamr@4
  1158
** <dt>SQLITE_CONFIG_PAGECACHE</dt>
williamr@4
  1159
** <dd>This option specifies a static memory buffer that SQLite can use for
williamr@4
  1160
** the database page cache.  There are three arguments: A pointer to the
williamr@4
  1161
** memory, the size of each page buffer (sz), and the number of pages (N).
williamr@4
  1162
** The sz argument must be a power of two between 512 and 32768.  The first
williamr@4
  1163
** argument should point to an allocation of at least sz*N bytes of memory.
williamr@4
  1164
** SQLite will use the memory provided by the first argument to satisfy its
williamr@4
  1165
** memory needs for the first N pages that it adds to cache.  If additional
williamr@4
  1166
** page cache memory is needed beyond what is provided by this option, then
williamr@4
  1167
** SQLite goes to [sqlite3_malloc()] for the additional storage space.
williamr@4
  1168
** The implementation might use one or more of the N buffers to hold 
williamr@4
  1169
** memory accounting information. </dd>
williamr@4
  1170
**
williamr@4
  1171
** <dt>SQLITE_CONFIG_HEAP</dt>
williamr@4
  1172
** <dd>This option specifies a static memory buffer that SQLite will use
williamr@4
  1173
** for all of its dynamic memory allocation needs beyond those provided
williamr@4
  1174
** for by [SQLITE_CONFIG_SCRATCH] and [SQLITE_CONFIG_PAGECACHE].
williamr@4
  1175
** There are three arguments: A pointer to the memory, the number of
williamr@4
  1176
** bytes in the memory buffer, and the minimum allocation size.  If
williamr@4
  1177
** the first pointer (the memory pointer) is NULL, then SQLite reverts
williamr@4
  1178
** to using its default memory allocator (the system malloc() implementation),
williamr@4
  1179
** undoing any prior invocation of [SQLITE_CONFIG_MALLOC].  If the
williamr@4
  1180
** memory pointer is not NULL and either [SQLITE_ENABLE_MEMSYS3] or
williamr@4
  1181
** [SQLITE_ENABLE_MEMSYS5] are defined, then the alternative memory
williamr@4
  1182
** allocator is engaged to handle all of SQLites memory allocation needs.</dd>
williamr@4
  1183
**
williamr@4
  1184
** <dt>SQLITE_CONFIG_MUTEX</dt>
williamr@4
  1185
** <dd>This option takes a single argument which is a pointer to an
williamr@4
  1186
** instance of the [sqlite3_mutex_methods] structure.  The argument specifies
williamr@4
  1187
** alternative low-level mutex routines to be used in place
williamr@4
  1188
** the mutex routines built into SQLite.</dd>
williamr@4
  1189
**
williamr@4
  1190
** <dt>SQLITE_CONFIG_GETMUTEX</dt>
williamr@4
  1191
** <dd>This option takes a single argument which is a pointer to an
williamr@4
  1192
** instance of the [sqlite3_mutex_methods] structure.  The
williamr@4
  1193
** [sqlite3_mutex_methods]
williamr@4
  1194
** structure is filled with the currently defined mutex routines.
williamr@4
  1195
** This option can be used to overload the default mutex allocation
williamr@4
  1196
** routines with a wrapper used to track mutex usage for performance
williamr@4
  1197
** profiling or testing, for example.</dd>
williamr@4
  1198
**
williamr@4
  1199
** <dt>SQLITE_CONFIG_LOOKASIDE</dt>
williamr@4
  1200
** <dd>This option takes two arguments that determine the default
williamr@4
  1201
** memory allcation lookaside optimization.  The first argument is the
williamr@4
  1202
** size of each lookaside buffer slot and the second is the number of
williamr@4
  1203
** slots allocated to each database connection.</dd>
williamr@4
  1204
**
williamr@4
  1205
** </dl>
williamr@4
  1206
*/
williamr@4
  1207
#define SQLITE_CONFIG_SINGLETHREAD  1  /* nil */
williamr@4
  1208
#define SQLITE_CONFIG_MULTITHREAD   2  /* nil */
williamr@4
  1209
#define SQLITE_CONFIG_SERIALIZED    3  /* nil */
williamr@4
  1210
#define SQLITE_CONFIG_MALLOC        4  /* sqlite3_mem_methods* */
williamr@4
  1211
#define SQLITE_CONFIG_GETMALLOC     5  /* sqlite3_mem_methods* */
williamr@4
  1212
#define SQLITE_CONFIG_SCRATCH       6  /* void*, int sz, int N */
williamr@4
  1213
#define SQLITE_CONFIG_PAGECACHE     7  /* void*, int sz, int N */
williamr@4
  1214
#define SQLITE_CONFIG_HEAP          8  /* void*, int nByte, int min */
williamr@4
  1215
#define SQLITE_CONFIG_MEMSTATUS     9  /* boolean */
williamr@4
  1216
#define SQLITE_CONFIG_MUTEX        10  /* sqlite3_mutex_methods* */
williamr@4
  1217
#define SQLITE_CONFIG_GETMUTEX     11  /* sqlite3_mutex_methods* */
williamr@4
  1218
#define SQLITE_CONFIG_CHUNKALLOC   12  /* int threshold */
williamr@4
  1219
#define SQLITE_CONFIG_LOOKASIDE    13  /* int int */
williamr@4
  1220
williamr@4
  1221
/*
williamr@4
  1222
** CAPI3REF: Configuration Options {H10170} <S20000>
williamr@4
  1223
** EXPERIMENTAL
williamr@4
  1224
**
williamr@4
  1225
** These constants are the available integer configuration options that
williamr@4
  1226
** can be passed as the second argument to the [sqlite3_db_config()] interface.
williamr@4
  1227
**
williamr@4
  1228
** New configuration options may be added in future releases of SQLite.
williamr@4
  1229
** Existing configuration options might be discontinued.  Applications
williamr@4
  1230
** should check the return code from [sqlite3_db_config()] to make sure that
williamr@4
  1231
** the call worked.  The [sqlite3_db_config()] interface will return a
williamr@4
  1232
** non-zero [error code] if a discontinued or unsupported configuration option
williamr@4
  1233
** is invoked.
williamr@4
  1234
**
williamr@4
  1235
** <dl>
williamr@4
  1236
** <dt>SQLITE_DBCONFIG_LOOKASIDE</dt>
williamr@4
  1237
** <dd>This option takes three additional arguments that determine the 
williamr@4
  1238
** [lookaside memory allocator] configuration for the [database connection].
williamr@4
  1239
** The first argument (the third parameter to [sqlite3_db_config()] is a
williamr@4
  1240
** pointer to a memory buffer to use for lookaside memory.  The first
williamr@4
  1241
** argument may be NULL in which case SQLite will allocate the lookaside
williamr@4
  1242
** buffer itself using [sqlite3_malloc()].  The second argument is the
williamr@4
  1243
** size of each lookaside buffer slot and the third argument is the number of
williamr@4
  1244
** slots.  The size of the buffer in the first argument must be greater than
williamr@4
  1245
** or equal to the product of the second and third arguments.</dd>
williamr@4
  1246
**
williamr@4
  1247
** </dl>
williamr@4
  1248
*/
williamr@4
  1249
#define SQLITE_DBCONFIG_LOOKASIDE    1001  /* void* int int */
williamr@4
  1250
williamr@4
  1251
williamr@4
  1252
/*
williamr@4
  1253
** CAPI3REF: Enable Or Disable Extended Result Codes {H12200} <S10700>
williamr@4
  1254
**
williamr@4
  1255
** The sqlite3_extended_result_codes() routine enables or disables the
williamr@4
  1256
** [extended result codes] feature of SQLite. The extended result
williamr@4
  1257
** codes are disabled by default for historical compatibility considerations.
williamr@4
  1258
**
williamr@4
  1259
** INVARIANTS:
williamr@4
  1260
**
williamr@4
  1261
** {H12201} Each new [database connection] shall have the
williamr@4
  1262
**          [extended result codes] feature disabled by default.
williamr@4
  1263
**
williamr@4
  1264
** {H12202} The [sqlite3_extended_result_codes(D,F)] interface shall enable
williamr@4
  1265
**          [extended result codes] for the  [database connection] D
williamr@4
  1266
**          if the F parameter is true, or disable them if F is false.
williamr@4
  1267
*/
williamr@4
  1268
IMPORT_C int sqlite3_extended_result_codes(sqlite3*, int onoff);
williamr@4
  1269
williamr@4
  1270
/*
williamr@4
  1271
** CAPI3REF: Last Insert Rowid {H12220} <S10700>
williamr@4
  1272
**
williamr@4
  1273
** Each entry in an SQLite table has a unique 64-bit signed
williamr@4
  1274
** integer key called the "rowid". The rowid is always available
williamr@4
  1275
** as an undeclared column named ROWID, OID, or _ROWID_ as long as those
williamr@4
  1276
** names are not also used by explicitly declared columns. If
williamr@4
  1277
** the table has a column of type INTEGER PRIMARY KEY then that column
williamr@4
  1278
** is another alias for the rowid.
williamr@4
  1279
**
williamr@4
  1280
** This routine returns the rowid of the most recent
williamr@4
  1281
** successful INSERT into the database from the [database connection]
williamr@4
  1282
** in the first argument.  If no successful INSERTs
williamr@4
  1283
** have ever occurred on that database connection, zero is returned.
williamr@4
  1284
**
williamr@4
  1285
** If an INSERT occurs within a trigger, then the rowid of the inserted
williamr@4
  1286
** row is returned by this routine as long as the trigger is running.
williamr@4
  1287
** But once the trigger terminates, the value returned by this routine
williamr@4
  1288
** reverts to the last value inserted before the trigger fired.
williamr@4
  1289
**
williamr@4
  1290
** An INSERT that fails due to a constraint violation is not a
williamr@4
  1291
** successful INSERT and does not change the value returned by this
williamr@4
  1292
** routine.  Thus INSERT OR FAIL, INSERT OR IGNORE, INSERT OR ROLLBACK,
williamr@4
  1293
** and INSERT OR ABORT make no changes to the return value of this
williamr@4
  1294
** routine when their insertion fails.  When INSERT OR REPLACE
williamr@4
  1295
** encounters a constraint violation, it does not fail.  The
williamr@4
  1296
** INSERT continues to completion after deleting rows that caused
williamr@4
  1297
** the constraint problem so INSERT OR REPLACE will always change
williamr@4
  1298
** the return value of this interface.
williamr@4
  1299
**
williamr@4
  1300
** For the purposes of this routine, an INSERT is considered to
williamr@4
  1301
** be successful even if it is subsequently rolled back.
williamr@4
  1302
**
williamr@4
  1303
** INVARIANTS:
williamr@4
  1304
**
williamr@4
  1305
** {H12221} The [sqlite3_last_insert_rowid()] function returns the rowid
williamr@4
  1306
**          of the most recent successful INSERT performed on the same
williamr@4
  1307
**          [database connection] and within the same or higher level
williamr@4
  1308
**          trigger context, or zero if there have been no qualifying inserts.
williamr@4
  1309
**
williamr@4
  1310
** {H12223} The [sqlite3_last_insert_rowid()] function returns the
williamr@4
  1311
**          same value when called from the same trigger context
williamr@4
  1312
**          immediately before and after a ROLLBACK.
williamr@4
  1313
**
williamr@4
  1314
** ASSUMPTIONS:
williamr@4
  1315
**
williamr@4
  1316
** {A12232} If a separate thread performs a new INSERT on the same
williamr@4
  1317
**          database connection while the [sqlite3_last_insert_rowid()]
williamr@4
  1318
**          function is running and thus changes the last insert rowid,
williamr@4
  1319
**          then the value returned by [sqlite3_last_insert_rowid()] is
williamr@4
  1320
**          unpredictable and might not equal either the old or the new
williamr@4
  1321
**          last insert rowid.
williamr@4
  1322
*/
williamr@4
  1323
IMPORT_C sqlite3_int64 sqlite3_last_insert_rowid(sqlite3*);
williamr@4
  1324
williamr@4
  1325
/*
williamr@4
  1326
** CAPI3REF: Count The Number Of Rows Modified {H12240} <S10600>
williamr@4
  1327
**
williamr@4
  1328
** This function returns the number of database rows that were changed
williamr@4
  1329
** or inserted or deleted by the most recently completed SQL statement
williamr@4
  1330
** on the [database connection] specified by the first parameter.
williamr@4
  1331
** Only changes that are directly specified by the INSERT, UPDATE,
williamr@4
  1332
** or DELETE statement are counted.  Auxiliary changes caused by
williamr@4
  1333
** triggers are not counted. Use the [sqlite3_total_changes()] function
williamr@4
  1334
** to find the total number of changes including changes caused by triggers.
williamr@4
  1335
**
williamr@4
  1336
** A "row change" is a change to a single row of a single table
williamr@4
  1337
** caused by an INSERT, DELETE, or UPDATE statement.  Rows that
williamr@4
  1338
** are changed as side effects of REPLACE constraint resolution,
williamr@4
  1339
** rollback, ABORT processing, DROP TABLE, or by any other
williamr@4
  1340
** mechanisms do not count as direct row changes.
williamr@4
  1341
**
williamr@4
  1342
** A "trigger context" is a scope of execution that begins and
williamr@4
  1343
** ends with the script of a trigger.  Most SQL statements are
williamr@4
  1344
** evaluated outside of any trigger.  This is the "top level"
williamr@4
  1345
** trigger context.  If a trigger fires from the top level, a
williamr@4
  1346
** new trigger context is entered for the duration of that one
williamr@4
  1347
** trigger.  Subtriggers create subcontexts for their duration.
williamr@4
  1348
**
williamr@4
  1349
** Calling [sqlite3_exec()] or [sqlite3_step()] recursively does
williamr@4
  1350
** not create a new trigger context.
williamr@4
  1351
**
williamr@4
  1352
** This function returns the number of direct row changes in the
williamr@4
  1353
** most recent INSERT, UPDATE, or DELETE statement within the same
williamr@4
  1354
** trigger context.
williamr@4
  1355
**
williamr@4
  1356
** Thus, when called from the top level, this function returns the
williamr@4
  1357
** number of changes in the most recent INSERT, UPDATE, or DELETE
williamr@4
  1358
** that also occurred at the top level.  Within the body of a trigger,
williamr@4
  1359
** the sqlite3_changes() interface can be called to find the number of
williamr@4
  1360
** changes in the most recently completed INSERT, UPDATE, or DELETE
williamr@4
  1361
** statement within the body of the same trigger.
williamr@4
  1362
** However, the number returned does not include changes
williamr@4
  1363
** caused by subtriggers since those have their own context.
williamr@4
  1364
**
williamr@4
  1365
** SQLite implements the command "DELETE FROM table" without a WHERE clause
williamr@4
  1366
** by dropping and recreating the table.  (This is much faster than going
williamr@4
  1367
** through and deleting individual elements from the table.)  Because of this
williamr@4
  1368
** optimization, the deletions in "DELETE FROM table" are not row changes and
williamr@4
  1369
** will not be counted by the sqlite3_changes() or [sqlite3_total_changes()]
williamr@4
  1370
** functions, regardless of the number of elements that were originally
williamr@4
  1371
** in the table.  To get an accurate count of the number of rows deleted, use
williamr@4
  1372
** "DELETE FROM table WHERE 1" instead.
williamr@4
  1373
**
williamr@4
  1374
** INVARIANTS:
williamr@4
  1375
**
williamr@4
  1376
** {H12241} The [sqlite3_changes()] function shall return the number of
williamr@4
  1377
**          row changes caused by the most recent INSERT, UPDATE,
williamr@4
  1378
**          or DELETE statement on the same database connection and
williamr@4
  1379
**          within the same or higher trigger context, or zero if there have
williamr@4
  1380
**          not been any qualifying row changes.
williamr@4
  1381
**
williamr@4
  1382
** {H12243} Statements of the form "DELETE FROM tablename" with no
williamr@4
  1383
**          WHERE clause shall cause subsequent calls to
williamr@4
  1384
**          [sqlite3_changes()] to return zero, regardless of the
williamr@4
  1385
**          number of rows originally in the table.
williamr@4
  1386
**
williamr@4
  1387
** ASSUMPTIONS:
williamr@4
  1388
**
williamr@4
  1389
** {A12252} If a separate thread makes changes on the same database connection
williamr@4
  1390
**          while [sqlite3_changes()] is running then the value returned
williamr@4
  1391
**          is unpredictable and not meaningful.
williamr@4
  1392
*/
williamr@4
  1393
IMPORT_C int sqlite3_changes(sqlite3*);
williamr@4
  1394
williamr@4
  1395
/*
williamr@4
  1396
** CAPI3REF: Total Number Of Rows Modified {H12260} <S10600>
williamr@4
  1397
**
williamr@4
  1398
** This function returns the number of row changes caused by INSERT,
williamr@4
  1399
** UPDATE or DELETE statements since the [database connection] was opened.
williamr@4
  1400
** The count includes all changes from all trigger contexts.  However,
williamr@4
  1401
** the count does not include changes used to implement REPLACE constraints,
williamr@4
  1402
** do rollbacks or ABORT processing, or DROP table processing.
williamr@4
  1403
** The changes are counted as soon as the statement that makes them is
williamr@4
  1404
** completed (when the statement handle is passed to [sqlite3_reset()] or
williamr@4
  1405
** [sqlite3_finalize()]).
williamr@4
  1406
**
williamr@4
  1407
** SQLite implements the command "DELETE FROM table" without a WHERE clause
williamr@4
  1408
** by dropping and recreating the table.  (This is much faster than going
williamr@4
  1409
** through and deleting individual elements from the table.)  Because of this
williamr@4
  1410
** optimization, the deletions in "DELETE FROM table" are not row changes and
williamr@4
  1411
** will not be counted by the sqlite3_changes() or [sqlite3_total_changes()]
williamr@4
  1412
** functions, regardless of the number of elements that were originally
williamr@4
  1413
** in the table.  To get an accurate count of the number of rows deleted, use
williamr@4
  1414
** "DELETE FROM table WHERE 1" instead.
williamr@4
  1415
**
williamr@4
  1416
** See also the [sqlite3_changes()] interface.
williamr@4
  1417
**
williamr@4
  1418
** INVARIANTS:
williamr@4
  1419
**
williamr@4
  1420
** {H12261} The [sqlite3_total_changes()] returns the total number
williamr@4
  1421
**          of row changes caused by INSERT, UPDATE, and/or DELETE
williamr@4
  1422
**          statements on the same [database connection], in any
williamr@4
  1423
**          trigger context, since the database connection was created.
williamr@4
  1424
**
williamr@4
  1425
** {H12263} Statements of the form "DELETE FROM tablename" with no
williamr@4
  1426
**          WHERE clause shall not change the value returned
williamr@4
  1427
**          by [sqlite3_total_changes()].
williamr@4
  1428
**
williamr@4
  1429
** ASSUMPTIONS:
williamr@4
  1430
**
williamr@4
  1431
** {A12264} If a separate thread makes changes on the same database connection
williamr@4
  1432
**          while [sqlite3_total_changes()] is running then the value
williamr@4
  1433
**          returned is unpredictable and not meaningful.
williamr@4
  1434
*/
williamr@4
  1435
IMPORT_C int sqlite3_total_changes(sqlite3*);
williamr@4
  1436
williamr@4
  1437
/*
williamr@4
  1438
** CAPI3REF: Interrupt A Long-Running Query {H12270} <S30500>
williamr@4
  1439
**
williamr@4
  1440
** This function causes any pending database operation to abort and
williamr@4
  1441
** return at its earliest opportunity. This routine is typically
williamr@4
  1442
** called in response to a user action such as pressing "Cancel"
williamr@4
  1443
** or Ctrl-C where the user wants a long query operation to halt
williamr@4
  1444
** immediately.
williamr@4
  1445
**
williamr@4
  1446
** It is safe to call this routine from a thread different from the
williamr@4
  1447
** thread that is currently running the database operation.  But it
williamr@4
  1448
** is not safe to call this routine with a [database connection] that
williamr@4
  1449
** is closed or might close before sqlite3_interrupt() returns.
williamr@4
  1450
**
williamr@4
  1451
** If an SQL operation is very nearly finished at the time when
williamr@4
  1452
** sqlite3_interrupt() is called, then it might not have an opportunity
williamr@4
  1453
** to be interrupted and might continue to completion.
williamr@4
  1454
**
williamr@4
  1455
** An SQL operation that is interrupted will return [SQLITE_INTERRUPT].
williamr@4
  1456
** If the interrupted SQL operation is an INSERT, UPDATE, or DELETE
williamr@4
  1457
** that is inside an explicit transaction, then the entire transaction
williamr@4
  1458
** will be rolled back automatically.
williamr@4
  1459
**
williamr@4
  1460
** A call to sqlite3_interrupt() has no effect on SQL statements
williamr@4
  1461
** that are started after sqlite3_interrupt() returns.
williamr@4
  1462
**
williamr@4
  1463
** INVARIANTS:
williamr@4
  1464
**
williamr@4
  1465
** {H12271} The [sqlite3_interrupt()] interface will force all running
williamr@4
  1466
**          SQL statements associated with the same database connection
williamr@4
  1467
**          to halt after processing at most one additional row of data.
williamr@4
  1468
**
williamr@4
  1469
** {H12272} Any SQL statement that is interrupted by [sqlite3_interrupt()]
williamr@4
  1470
**          will return [SQLITE_INTERRUPT].
williamr@4
  1471
**
williamr@4
  1472
** ASSUMPTIONS:
williamr@4
  1473
**
williamr@4
  1474
** {A12279} If the database connection closes while [sqlite3_interrupt()]
williamr@4
  1475
**          is running then bad things will likely happen.
williamr@4
  1476
*/
williamr@4
  1477
IMPORT_C void sqlite3_interrupt(sqlite3*);
williamr@4
  1478
williamr@4
  1479
/*
williamr@4
  1480
** CAPI3REF: Determine If An SQL Statement Is Complete {H10510} <S70200>
williamr@4
  1481
**
williamr@4
  1482
** These routines are useful for command-line input to determine if the
williamr@4
  1483
** currently entered text seems to form complete a SQL statement or
williamr@4
  1484
** if additional input is needed before sending the text into
williamr@4
  1485
** SQLite for parsing.  These routines return true if the input string
williamr@4
  1486
** appears to be a complete SQL statement.  A statement is judged to be
williamr@4
  1487
** complete if it ends with a semicolon token and is not a fragment of a
williamr@4
  1488
** CREATE TRIGGER statement.  Semicolons that are embedded within
williamr@4
  1489
** string literals or quoted identifier names or comments are not
williamr@4
  1490
** independent tokens (they are part of the token in which they are
williamr@4
  1491
** embedded) and thus do not count as a statement terminator.
williamr@4
  1492
**
williamr@4
  1493
** These routines do not parse the SQL statements thus
williamr@4
  1494
** will not detect syntactically incorrect SQL.
williamr@4
  1495
**
williamr@4
  1496
** INVARIANTS:
williamr@4
  1497
**
williamr@4
  1498
** {H10511} A successful evaluation of [sqlite3_complete()] or
williamr@4
  1499
**          [sqlite3_complete16()] functions shall
williamr@4
  1500
**          return a numeric 1 if and only if the last non-whitespace
williamr@4
  1501
**          token in their input is a semicolon that is not in between
williamr@4
  1502
**          the BEGIN and END of a CREATE TRIGGER statement.
williamr@4
  1503
**
williamr@4
  1504
** {H10512} If a memory allocation error occurs during an invocation
williamr@4
  1505
**          of [sqlite3_complete()] or [sqlite3_complete16()] then the
williamr@4
  1506
**          routine shall return [SQLITE_NOMEM].
williamr@4
  1507
**
williamr@4
  1508
** ASSUMPTIONS:
williamr@4
  1509
**
williamr@4
  1510
** {A10512} The input to [sqlite3_complete()] must be a zero-terminated
williamr@4
  1511
**          UTF-8 string.
williamr@4
  1512
**
williamr@4
  1513
** {A10513} The input to [sqlite3_complete16()] must be a zero-terminated
williamr@4
  1514
**          UTF-16 string in native byte order.
williamr@4
  1515
*/
williamr@4
  1516
IMPORT_C int sqlite3_complete(const char *sql);
williamr@4
  1517
IMPORT_C int sqlite3_complete16(const void *sql);
williamr@4
  1518
williamr@4
  1519
/*
williamr@4
  1520
** CAPI3REF: Register A Callback To Handle SQLITE_BUSY Errors {H12310} <S40400>
williamr@4
  1521
**
williamr@4
  1522
** This routine sets a callback function that might be invoked whenever
williamr@4
  1523
** an attempt is made to open a database table that another thread
williamr@4
  1524
** or process has locked.
williamr@4
  1525
**
williamr@4
  1526
** If the busy callback is NULL, then [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED]
williamr@4
  1527
** is returned immediately upon encountering the lock. If the busy callback
williamr@4
  1528
** is not NULL, then the callback will be invoked with two arguments.
williamr@4
  1529
**
williamr@4
  1530
** The first argument to the handler is a copy of the void* pointer which
williamr@4
  1531
** is the third argument to sqlite3_busy_handler().  The second argument to
williamr@4
  1532
** the handler callback is the number of times that the busy handler has
williamr@4
  1533
** been invoked for this locking event.  If the
williamr@4
  1534
** busy callback returns 0, then no additional attempts are made to
williamr@4
  1535
** access the database and [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED] is returned.
williamr@4
  1536
** If the callback returns non-zero, then another attempt
williamr@4
  1537
** is made to open the database for reading and the cycle repeats.
williamr@4
  1538
**
williamr@4
  1539
** The presence of a busy handler does not guarantee that it will be invoked
williamr@4
  1540
** when there is lock contention. If SQLite determines that invoking the busy
williamr@4
  1541
** handler could result in a deadlock, it will go ahead and return [SQLITE_BUSY]
williamr@4
  1542
** or [SQLITE_IOERR_BLOCKED] instead of invoking the busy handler.
williamr@4
  1543
** Consider a scenario where one process is holding a read lock that
williamr@4
  1544
** it is trying to promote to a reserved lock and
williamr@4
  1545
** a second process is holding a reserved lock that it is trying
williamr@4
  1546
** to promote to an exclusive lock.  The first process cannot proceed
williamr@4
  1547
** because it is blocked by the second and the second process cannot
williamr@4
  1548
** proceed because it is blocked by the first.  If both processes
williamr@4
  1549
** invoke the busy handlers, neither will make any progress.  Therefore,
williamr@4
  1550
** SQLite returns [SQLITE_BUSY] for the first process, hoping that this
williamr@4
  1551
** will induce the first process to release its read lock and allow
williamr@4
  1552
** the second process to proceed.
williamr@4
  1553
**
williamr@4
  1554
** The default busy callback is NULL.
williamr@4
  1555
**
williamr@4
  1556
** The [SQLITE_BUSY] error is converted to [SQLITE_IOERR_BLOCKED]
williamr@4
  1557
** when SQLite is in the middle of a large transaction where all the
williamr@4
  1558
** changes will not fit into the in-memory cache.  SQLite will
williamr@4
  1559
** already hold a RESERVED lock on the database file, but it needs
williamr@4
  1560
** to promote this lock to EXCLUSIVE so that it can spill cache
williamr@4
  1561
** pages into the database file without harm to concurrent
williamr@4
  1562
** readers.  If it is unable to promote the lock, then the in-memory
williamr@4
  1563
** cache will be left in an inconsistent state and so the error
williamr@4
  1564
** code is promoted from the relatively benign [SQLITE_BUSY] to
williamr@4
  1565
** the more severe [SQLITE_IOERR_BLOCKED].  This error code promotion
williamr@4
  1566
** forces an automatic rollback of the changes.  See the
williamr@4
  1567
** <a href="/cvstrac/wiki?p=CorruptionFollowingBusyError">
williamr@4
  1568
** CorruptionFollowingBusyError</a> wiki page for a discussion of why
williamr@4
  1569
** this is important.
williamr@4
  1570
**
williamr@4
  1571
** There can only be a single busy handler defined for each
williamr@4
  1572
** [database connection].  Setting a new busy handler clears any
williamr@4
  1573
** previously set handler.  Note that calling [sqlite3_busy_timeout()]
williamr@4
  1574
** will also set or clear the busy handler.
williamr@4
  1575
**
williamr@4
  1576
** The busy callback should not take any actions which modify the
williamr@4
  1577
** database connection that invoked the busy handler.  Any such actions
williamr@4
  1578
** result in undefined behavior.
williamr@4
  1579
** 
williamr@4
  1580
** INVARIANTS:
williamr@4
  1581
**
williamr@4
  1582
** {H12311} The [sqlite3_busy_handler(D,C,A)] function shall replace
williamr@4
  1583
**          busy callback in the [database connection] D with a new
williamr@4
  1584
**          a new busy handler C and application data pointer A.
williamr@4
  1585
**
williamr@4
  1586
** {H12312} Newly created [database connections] shall have a busy
williamr@4
  1587
**          handler of NULL.
williamr@4
  1588
**
williamr@4
  1589
** {H12314} When two or more [database connections] share a
williamr@4
  1590
**          [sqlite3_enable_shared_cache | common cache],
williamr@4
  1591
**          the busy handler for the database connection currently using
williamr@4
  1592
**          the cache shall be invoked when the cache encounters a lock.
williamr@4
  1593
**
williamr@4
  1594
** {H12316} If a busy handler callback returns zero, then the SQLite interface
williamr@4
  1595
**          that provoked the locking event shall return [SQLITE_BUSY].
williamr@4
  1596
**
williamr@4
  1597
** {H12318} SQLite shall invokes the busy handler with two arguments which
williamr@4
  1598
**          are a copy of the pointer supplied by the 3rd parameter to
williamr@4
  1599
**          [sqlite3_busy_handler()] and a count of the number of prior
williamr@4
  1600
**          invocations of the busy handler for the same locking event.
williamr@4
  1601
**
williamr@4
  1602
** ASSUMPTIONS:
williamr@4
  1603
**
williamr@4
  1604
** {A12319} A busy handler must not close the database connection
williamr@4
  1605
**          or [prepared statement] that invoked the busy handler.
williamr@4
  1606
*/
williamr@4
  1607
IMPORT_C int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*);
williamr@4
  1608
williamr@4
  1609
/*
williamr@4
  1610
** CAPI3REF: Set A Busy Timeout {H12340} <S40410>
williamr@4
  1611
**
williamr@4
  1612
** This routine sets a [sqlite3_busy_handler | busy handler] that sleeps
williamr@4
  1613
** for a specified amount of time when a table is locked.  The handler
williamr@4
  1614
** will sleep multiple times until at least "ms" milliseconds of sleeping
williamr@4
  1615
** have accumulated. {H12343} After "ms" milliseconds of sleeping,
williamr@4
  1616
** the handler returns 0 which causes [sqlite3_step()] to return
williamr@4
  1617
** [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED].
williamr@4
  1618
**
williamr@4
  1619
** Calling this routine with an argument less than or equal to zero
williamr@4
  1620
** turns off all busy handlers.
williamr@4
  1621
**
williamr@4
  1622
** There can only be a single busy handler for a particular
williamr@4
  1623
** [database connection] any any given moment.  If another busy handler
williamr@4
  1624
** was defined  (using [sqlite3_busy_handler()]) prior to calling
williamr@4
  1625
** this routine, that other busy handler is cleared.
williamr@4
  1626
**
williamr@4
  1627
** INVARIANTS:
williamr@4
  1628
**
williamr@4
  1629
** {H12341} The [sqlite3_busy_timeout()] function shall override any prior
williamr@4
  1630
**          [sqlite3_busy_timeout()] or [sqlite3_busy_handler()] setting
williamr@4
  1631
**          on the same [database connection].
williamr@4
  1632
**
williamr@4
  1633
** {H12343} If the 2nd parameter to [sqlite3_busy_timeout()] is less than
williamr@4
  1634
**          or equal to zero, then the busy handler shall be cleared so that
williamr@4
  1635
**          all subsequent locking events immediately return [SQLITE_BUSY].
williamr@4
  1636
**
williamr@4
  1637
** {H12344} If the 2nd parameter to [sqlite3_busy_timeout()] is a positive
williamr@4
  1638
**          number N, then a busy handler shall be set that repeatedly calls
williamr@4
  1639
**          the xSleep() method in the [sqlite3_vfs | VFS interface] until
williamr@4
  1640
**          either the lock clears or until the cumulative sleep time
williamr@4
  1641
**          reported back by xSleep() exceeds N milliseconds.
williamr@4
  1642
*/
williamr@4
  1643
IMPORT_C int sqlite3_busy_timeout(sqlite3*, int ms);
williamr@4
  1644
williamr@4
  1645
/*
williamr@4
  1646
** CAPI3REF: Convenience Routines For Running Queries {H12370} <S10000>
williamr@4
  1647
**
williamr@4
  1648
** Definition: A <b>result table</b> is memory data structure created by the
williamr@4
  1649
** [sqlite3_get_table()] interface.  A result table records the
williamr@4
  1650
** complete query results from one or more queries.
williamr@4
  1651
**
williamr@4
  1652
** The table conceptually has a number of rows and columns.  But
williamr@4
  1653
** these numbers are not part of the result table itself.  These
williamr@4
  1654
** numbers are obtained separately.  Let N be the number of rows
williamr@4
  1655
** and M be the number of columns.
williamr@4
  1656
**
williamr@4
  1657
** A result table is an array of pointers to zero-terminated UTF-8 strings.
williamr@4
  1658
** There are (N+1)*M elements in the array.  The first M pointers point
williamr@4
  1659
** to zero-terminated strings that  contain the names of the columns.
williamr@4
  1660
** The remaining entries all point to query results.  NULL values result
williamr@4
  1661
** in NULL pointers.  All other values are in their UTF-8 zero-terminated
williamr@4
  1662
** string representation as returned by [sqlite3_column_text()].
williamr@4
  1663
**
williamr@4
  1664
** A result table might consist of one or more memory allocations.
williamr@4
  1665
** It is not safe to pass a result table directly to [sqlite3_free()].
williamr@4
  1666
** A result table should be deallocated using [sqlite3_free_table()].
williamr@4
  1667
**
williamr@4
  1668
** As an example of the result table format, suppose a query result
williamr@4
  1669
** is as follows:
williamr@4
  1670
**
williamr@4
  1671
** <blockquote><pre>
williamr@4
  1672
**        Name        | Age
williamr@4
  1673
**        -----------------------
williamr@4
  1674
**        Alice       | 43
williamr@4
  1675
**        Bob         | 28
williamr@4
  1676
**        Cindy       | 21
williamr@4
  1677
** </pre></blockquote>
williamr@4
  1678
**
williamr@4
  1679
** There are two column (M==2) and three rows (N==3).  Thus the
williamr@4
  1680
** result table has 8 entries.  Suppose the result table is stored
williamr@4
  1681
** in an array names azResult.  Then azResult holds this content:
williamr@4
  1682
**
williamr@4
  1683
** <blockquote><pre>
williamr@4
  1684
**        azResult&#91;0] = "Name";
williamr@4
  1685
**        azResult&#91;1] = "Age";
williamr@4
  1686
**        azResult&#91;2] = "Alice";
williamr@4
  1687
**        azResult&#91;3] = "43";
williamr@4
  1688
**        azResult&#91;4] = "Bob";
williamr@4
  1689
**        azResult&#91;5] = "28";
williamr@4
  1690
**        azResult&#91;6] = "Cindy";
williamr@4
  1691
**        azResult&#91;7] = "21";
williamr@4
  1692
** </pre></blockquote>
williamr@4
  1693
**
williamr@4
  1694
** The sqlite3_get_table() function evaluates one or more
williamr@4
  1695
** semicolon-separated SQL statements in the zero-terminated UTF-8
williamr@4
  1696
** string of its 2nd parameter.  It returns a result table to the
williamr@4
  1697
** pointer given in its 3rd parameter.
williamr@4
  1698
**
williamr@4
  1699
** After the calling function has finished using the result, it should
williamr@4
  1700
** pass the pointer to the result table to sqlite3_free_table() in order to
williamr@4
  1701
** release the memory that was malloced.  Because of the way the
williamr@4
  1702
** [sqlite3_malloc()] happens within sqlite3_get_table(), the calling
williamr@4
  1703
** function must not try to call [sqlite3_free()] directly.  Only
williamr@4
  1704
** [sqlite3_free_table()] is able to release the memory properly and safely.
williamr@4
  1705
**
williamr@4
  1706
** The sqlite3_get_table() interface is implemented as a wrapper around
williamr@4
  1707
** [sqlite3_exec()].  The sqlite3_get_table() routine does not have access
williamr@4
  1708
** to any internal data structures of SQLite.  It uses only the public
williamr@4
  1709
** interface defined here.  As a consequence, errors that occur in the
williamr@4
  1710
** wrapper layer outside of the internal [sqlite3_exec()] call are not
williamr@4
  1711
** reflected in subsequent calls to [sqlite3_errcode()] or [sqlite3_errmsg()].
williamr@4
  1712
**
williamr@4
  1713
** INVARIANTS:
williamr@4
  1714
**
williamr@4
  1715
** {H12371} If a [sqlite3_get_table()] fails a memory allocation, then
williamr@4
  1716
**          it shall free the result table under construction, abort the
williamr@4
  1717
**          query in process, skip any subsequent queries, set the
williamr@4
  1718
**          *pazResult output pointer to NULL and return [SQLITE_NOMEM].
williamr@4
  1719
**
williamr@4
  1720
** {H12373} If the pnColumn parameter to [sqlite3_get_table()] is not NULL
williamr@4
  1721
**          then a successful invocation of [sqlite3_get_table()] shall
williamr@4
  1722
**          write the number of columns in the
williamr@4
  1723
**          result set of the query into *pnColumn.
williamr@4
  1724
**
williamr@4
  1725
** {H12374} If the pnRow parameter to [sqlite3_get_table()] is not NULL
williamr@4
  1726
**          then a successful invocation of [sqlite3_get_table()] shall
williamr@4
  1727
**          writes the number of rows in the
williamr@4
  1728
**          result set of the query into *pnRow.
williamr@4
  1729
**
williamr@4
  1730
** {H12376} A successful invocation of [sqlite3_get_table()] that computes
williamr@4
  1731
**          N rows of result with C columns per row shall make *pazResult
williamr@4
  1732
**          point to an array of pointers to (N+1)*C strings where the first
williamr@4
  1733
**          C strings are column names as obtained from
williamr@4
  1734
**          [sqlite3_column_name()] and the rest are column result values
williamr@4
  1735
**          obtained from [sqlite3_column_text()].
williamr@4
  1736
**
williamr@4
  1737
** {H12379} The values in the pazResult array returned by [sqlite3_get_table()]
williamr@4
  1738
**          shall remain valid until cleared by [sqlite3_free_table()].
williamr@4
  1739
**
williamr@4
  1740
** {H12382} When an error occurs during evaluation of [sqlite3_get_table()]
williamr@4
  1741
**          the function shall set *pazResult to NULL, write an error message
williamr@4
  1742
**          into memory obtained from [sqlite3_malloc()], make
williamr@4
  1743
**          **pzErrmsg point to that error message, and return a
williamr@4
  1744
**          appropriate [error code].
williamr@4
  1745
*/
williamr@4
  1746
IMPORT_C int sqlite3_get_table(
williamr@4
  1747
  sqlite3 *db,          /* An open database */
williamr@4
  1748
  const char *zSql,     /* SQL to be evaluated */
williamr@4
  1749
  char ***pazResult,    /* Results of the query */
williamr@4
  1750
  int *pnRow,           /* Number of result rows written here */
williamr@4
  1751
  int *pnColumn,        /* Number of result columns written here */
williamr@4
  1752
  char **pzErrmsg       /* Error msg written here */
williamr@4
  1753
);
williamr@4
  1754
IMPORT_C void sqlite3_free_table(char **result);
williamr@4
  1755
williamr@4
  1756
/*
williamr@4
  1757
** CAPI3REF: Formatted String Printing Functions {H17400} <S70000><S20000>
williamr@4
  1758
**
williamr@4
  1759
** These routines are workalikes of the "printf()" family of functions
williamr@4
  1760
** from the standard C library.
williamr@4
  1761
**
williamr@4
  1762
** The sqlite3_mprintf() and sqlite3_vmprintf() routines write their
williamr@4
  1763
** results into memory obtained from [sqlite3_malloc()].
williamr@4
  1764
** The strings returned by these two routines should be
williamr@4
  1765
** released by [sqlite3_free()].  Both routines return a
williamr@4
  1766
** NULL pointer if [sqlite3_malloc()] is unable to allocate enough
williamr@4
  1767
** memory to hold the resulting string.
williamr@4
  1768
**
williamr@4
  1769
** In sqlite3_snprintf() routine is similar to "snprintf()" from
williamr@4
  1770
** the standard C library.  The result is written into the
williamr@4
  1771
** buffer supplied as the second parameter whose size is given by
williamr@4
  1772
** the first parameter. Note that the order of the
williamr@4
  1773
** first two parameters is reversed from snprintf().  This is an
williamr@4
  1774
** historical accident that cannot be fixed without breaking
williamr@4
  1775
** backwards compatibility.  Note also that sqlite3_snprintf()
williamr@4
  1776
** returns a pointer to its buffer instead of the number of
williamr@4
  1777
** characters actually written into the buffer.  We admit that
williamr@4
  1778
** the number of characters written would be a more useful return
williamr@4
  1779
** value but we cannot change the implementation of sqlite3_snprintf()
williamr@4
  1780
** now without breaking compatibility.
williamr@4
  1781
**
williamr@4
  1782
** As long as the buffer size is greater than zero, sqlite3_snprintf()
williamr@4
  1783
** guarantees that the buffer is always zero-terminated.  The first
williamr@4
  1784
** parameter "n" is the total size of the buffer, including space for
williamr@4
  1785
** the zero terminator.  So the longest string that can be completely
williamr@4
  1786
** written will be n-1 characters.
williamr@4
  1787
**
williamr@4
  1788
** These routines all implement some additional formatting
williamr@4
  1789
** options that are useful for constructing SQL statements.
williamr@4
  1790
** All of the usual printf() formatting options apply.  In addition, there
williamr@4
  1791
** is are "%q", "%Q", and "%z" options.
williamr@4
  1792
**
williamr@4
  1793
** The %q option works like %s in that it substitutes a null-terminated
williamr@4
  1794
** string from the argument list.  But %q also doubles every '\'' character.
williamr@4
  1795
** %q is designed for use inside a string literal.  By doubling each '\''
williamr@4
  1796
** character it escapes that character and allows it to be inserted into
williamr@4
  1797
** the string.
williamr@4
  1798
**
williamr@4
  1799
** For example, assume the string variable zText contains text as follows:
williamr@4
  1800
**
williamr@4
  1801
** <blockquote><pre>
williamr@4
  1802
**  char *zText = "It's a happy day!";
williamr@4
  1803
** </pre></blockquote>
williamr@4
  1804
**
williamr@4
  1805
** One can use this text in an SQL statement as follows:
williamr@4
  1806
**
williamr@4
  1807
** <blockquote><pre>
williamr@4
  1808
**  char *zSQL = sqlite3_mprintf("INSERT INTO table VALUES('%q')", zText);
williamr@4
  1809
**  sqlite3_exec(db, zSQL, 0, 0, 0);
williamr@4
  1810
**  sqlite3_free(zSQL);
williamr@4
  1811
** </pre></blockquote>
williamr@4
  1812
**
williamr@4
  1813
** Because the %q format string is used, the '\'' character in zText
williamr@4
  1814
** is escaped and the SQL generated is as follows:
williamr@4
  1815
**
williamr@4
  1816
** <blockquote><pre>
williamr@4
  1817
**  INSERT INTO table1 VALUES('It''s a happy day!')
williamr@4
  1818
** </pre></blockquote>
williamr@4
  1819
**
williamr@4
  1820
** This is correct.  Had we used %s instead of %q, the generated SQL
williamr@4
  1821
** would have looked like this:
williamr@4
  1822
**
williamr@4
  1823
** <blockquote><pre>
williamr@4
  1824
**  INSERT INTO table1 VALUES('It's a happy day!');
williamr@4
  1825
** </pre></blockquote>
williamr@4
  1826
**
williamr@4
  1827
** This second example is an SQL syntax error.  As a general rule you should
williamr@4
  1828
** always use %q instead of %s when inserting text into a string literal.
williamr@4
  1829
**
williamr@4
  1830
** The %Q option works like %q except it also adds single quotes around
williamr@4
  1831
** the outside of the total string.  Additionally, if the parameter in the
williamr@4
  1832
** argument list is a NULL pointer, %Q substitutes the text "NULL" (without
williamr@4
  1833
** single quotes) in place of the %Q option.  So, for example, one could say:
williamr@4
  1834
**
williamr@4
  1835
** <blockquote><pre>
williamr@4
  1836
**  char *zSQL = sqlite3_mprintf("INSERT INTO table VALUES(%Q)", zText);
williamr@4
  1837
**  sqlite3_exec(db, zSQL, 0, 0, 0);
williamr@4
  1838
**  sqlite3_free(zSQL);
williamr@4
  1839
** </pre></blockquote>
williamr@4
  1840
**
williamr@4
  1841
** The code above will render a correct SQL statement in the zSQL
williamr@4
  1842
** variable even if the zText variable is a NULL pointer.
williamr@4
  1843
**
williamr@4
  1844
** The "%z" formatting option works exactly like "%s" with the
williamr@4
  1845
** addition that after the string has been read and copied into
williamr@4
  1846
** the result, [sqlite3_free()] is called on the input string. {END}
williamr@4
  1847
**
williamr@4
  1848
** INVARIANTS:
williamr@4
  1849
**
williamr@4
  1850
** {H17403}  The [sqlite3_mprintf()] and [sqlite3_vmprintf()] interfaces
williamr@4
  1851
**           return either pointers to zero-terminated UTF-8 strings held in
williamr@4
  1852
**           memory obtained from [sqlite3_malloc()] or NULL pointers if
williamr@4
  1853
**           a call to [sqlite3_malloc()] fails.
williamr@4
  1854
**
williamr@4
  1855
** {H17406}  The [sqlite3_snprintf()] interface writes a zero-terminated
williamr@4
  1856
**           UTF-8 string into the buffer pointed to by the second parameter
williamr@4
  1857
**           provided that the first parameter is greater than zero.
williamr@4
  1858
**
williamr@4
  1859
** {H17407}  The [sqlite3_snprintf()] interface does not write slots of
williamr@4
  1860
**           its output buffer (the second parameter) outside the range
williamr@4
  1861
**           of 0 through N-1 (where N is the first parameter)
williamr@4
  1862
**           regardless of the length of the string
williamr@4
  1863
**           requested by the format specification.
williamr@4
  1864
*/
williamr@4
  1865
IMPORT_C char *sqlite3_mprintf(const char*,...);
williamr@4
  1866
IMPORT_C char *sqlite3_vmprintf(const char*, va_list);
williamr@4
  1867
IMPORT_C char *sqlite3_snprintf(int,char*,const char*, ...);
williamr@4
  1868
williamr@4
  1869
/*
williamr@4
  1870
** CAPI3REF: Memory Allocation Subsystem {H17300} <S20000>
williamr@4
  1871
**
williamr@4
  1872
** The SQLite core  uses these three routines for all of its own
williamr@4
  1873
** internal memory allocation needs. "Core" in the previous sentence
williamr@4
  1874
** does not include operating-system specific VFS implementation.  The
williamr@4
  1875
** Windows VFS uses native malloc() and free() for some operations.
williamr@4
  1876
**
williamr@4
  1877
** The sqlite3_malloc() routine returns a pointer to a block
williamr@4
  1878
** of memory at least N bytes in length, where N is the parameter.
williamr@4
  1879
** If sqlite3_malloc() is unable to obtain sufficient free
williamr@4
  1880
** memory, it returns a NULL pointer.  If the parameter N to
williamr@4
  1881
** sqlite3_malloc() is zero or negative then sqlite3_malloc() returns
williamr@4
  1882
** a NULL pointer.
williamr@4
  1883
**
williamr@4
  1884
** Calling sqlite3_free() with a pointer previously returned
williamr@4
  1885
** by sqlite3_malloc() or sqlite3_realloc() releases that memory so
williamr@4
  1886
** that it might be reused.  The sqlite3_free() routine is
williamr@4
  1887
** a no-op if is called with a NULL pointer.  Passing a NULL pointer
williamr@4
  1888
** to sqlite3_free() is harmless.  After being freed, memory
williamr@4
  1889
** should neither be read nor written.  Even reading previously freed
williamr@4
  1890
** memory might result in a segmentation fault or other severe error.
williamr@4
  1891
** Memory corruption, a segmentation fault, or other severe error
williamr@4
  1892
** might result if sqlite3_free() is called with a non-NULL pointer that
williamr@4
  1893
** was not obtained from sqlite3_malloc() or sqlite3_free().
williamr@4
  1894
**
williamr@4
  1895
** The sqlite3_realloc() interface attempts to resize a
williamr@4
  1896
** prior memory allocation to be at least N bytes, where N is the
williamr@4
  1897
** second parameter.  The memory allocation to be resized is the first
williamr@4
  1898
** parameter.  If the first parameter to sqlite3_realloc()
williamr@4
  1899
** is a NULL pointer then its behavior is identical to calling
williamr@4
  1900
** sqlite3_malloc(N) where N is the second parameter to sqlite3_realloc().
williamr@4
  1901
** If the second parameter to sqlite3_realloc() is zero or
williamr@4
  1902
** negative then the behavior is exactly the same as calling
williamr@4
  1903
** sqlite3_free(P) where P is the first parameter to sqlite3_realloc().
williamr@4
  1904
** sqlite3_realloc() returns a pointer to a memory allocation
williamr@4
  1905
** of at least N bytes in size or NULL if sufficient memory is unavailable.
williamr@4
  1906
** If M is the size of the prior allocation, then min(N,M) bytes
williamr@4
  1907
** of the prior allocation are copied into the beginning of buffer returned
williamr@4
  1908
** by sqlite3_realloc() and the prior allocation is freed.
williamr@4
  1909
** If sqlite3_realloc() returns NULL, then the prior allocation
williamr@4
  1910
** is not freed.
williamr@4
  1911
**
williamr@4
  1912
** The memory returned by sqlite3_malloc() and sqlite3_realloc()
williamr@4
  1913
** is always aligned to at least an 8 byte boundary. {END}
williamr@4
  1914
**
williamr@4
  1915
** The default implementation of the memory allocation subsystem uses
williamr@4
  1916
** the malloc(), realloc() and free() provided by the standard C library.
williamr@4
  1917
** {H17382} However, if SQLite is compiled with the
williamr@4
  1918
** SQLITE_MEMORY_SIZE=<i>NNN</i> C preprocessor macro (where <i>NNN</i>
williamr@4
  1919
** is an integer), then SQLite create a static array of at least
williamr@4
  1920
** <i>NNN</i> bytes in size and uses that array for all of its dynamic
williamr@4
  1921
** memory allocation needs. {END}  Additional memory allocator options
williamr@4
  1922
** may be added in future releases.
williamr@4
  1923
**
williamr@4
  1924
** In SQLite version 3.5.0 and 3.5.1, it was possible to define
williamr@4
  1925
** the SQLITE_OMIT_MEMORY_ALLOCATION which would cause the built-in
williamr@4
  1926
** implementation of these routines to be omitted.  That capability
williamr@4
  1927
** is no longer provided.  Only built-in memory allocators can be used.
williamr@4
  1928
**
williamr@4
  1929
** The Windows OS interface layer calls
williamr@4
  1930
** the system malloc() and free() directly when converting
williamr@4
  1931
** filenames between the UTF-8 encoding used by SQLite
williamr@4
  1932
** and whatever filename encoding is used by the particular Windows
williamr@4
  1933
** installation.  Memory allocation errors are detected, but
williamr@4
  1934
** they are reported back as [SQLITE_CANTOPEN] or
williamr@4
  1935
** [SQLITE_IOERR] rather than [SQLITE_NOMEM].
williamr@4
  1936
**
williamr@4
  1937
** INVARIANTS:
williamr@4
  1938
**
williamr@4
  1939
** {H17303}  The [sqlite3_malloc(N)] interface returns either a pointer to
williamr@4
  1940
**           a newly checked-out block of at least N bytes of memory
williamr@4
  1941
**           that is 8-byte aligned, or it returns NULL if it is unable
williamr@4
  1942
**           to fulfill the request.
williamr@4
  1943
**
williamr@4
  1944
** {H17304}  The [sqlite3_malloc(N)] interface returns a NULL pointer if
williamr@4
  1945
**           N is less than or equal to zero.
williamr@4
  1946
**
williamr@4
  1947
** {H17305}  The [sqlite3_free(P)] interface releases memory previously
williamr@4
  1948
**           returned from [sqlite3_malloc()] or [sqlite3_realloc()],
williamr@4
  1949
**           making it available for reuse.
williamr@4
  1950
**
williamr@4
  1951
** {H17306}  A call to [sqlite3_free(NULL)] is a harmless no-op.
williamr@4
  1952
**
williamr@4
  1953
** {H17310}  A call to [sqlite3_realloc(0,N)] is equivalent to a call
williamr@4
  1954
**           to [sqlite3_malloc(N)].
williamr@4
  1955
**
williamr@4
  1956
** {H17312}  A call to [sqlite3_realloc(P,0)] is equivalent to a call
williamr@4
  1957
**           to [sqlite3_free(P)].
williamr@4
  1958
**
williamr@4
  1959
** {H17315}  The SQLite core uses [sqlite3_malloc()], [sqlite3_realloc()],
williamr@4
  1960
**           and [sqlite3_free()] for all of its memory allocation and
williamr@4
  1961
**           deallocation needs.
williamr@4
  1962
**
williamr@4
  1963
** {H17318}  The [sqlite3_realloc(P,N)] interface returns either a pointer
williamr@4
  1964
**           to a block of checked-out memory of at least N bytes in size
williamr@4
  1965
**           that is 8-byte aligned, or a NULL pointer.
williamr@4
  1966
**
williamr@4
  1967
** {H17321}  When [sqlite3_realloc(P,N)] returns a non-NULL pointer, it first
williamr@4
  1968
**           copies the first K bytes of content from P into the newly
williamr@4
  1969
**           allocated block, where K is the lesser of N and the size of
williamr@4
  1970
**           the buffer P.
williamr@4
  1971
**
williamr@4
  1972
** {H17322}  When [sqlite3_realloc(P,N)] returns a non-NULL pointer, it first
williamr@4
  1973
**           releases the buffer P.
williamr@4
  1974
**
williamr@4
  1975
** {H17323}  When [sqlite3_realloc(P,N)] returns NULL, the buffer P is
williamr@4
  1976
**           not modified or released.
williamr@4
  1977
**
williamr@4
  1978
** ASSUMPTIONS:
williamr@4
  1979
**
williamr@4
  1980
** {A17350}  The pointer arguments to [sqlite3_free()] and [sqlite3_realloc()]
williamr@4
  1981
**           must be either NULL or else pointers obtained from a prior
williamr@4
  1982
**           invocation of [sqlite3_malloc()] or [sqlite3_realloc()] that have
williamr@4
  1983
**           not yet been released.
williamr@4
  1984
**
williamr@4
  1985
** {A17351}  The application must not read or write any part of
williamr@4
  1986
**           a block of memory after it has been released using
williamr@4
  1987
**           [sqlite3_free()] or [sqlite3_realloc()].
williamr@4
  1988
*/
williamr@4
  1989
IMPORT_C void *sqlite3_malloc(int);
williamr@4
  1990
IMPORT_C void *sqlite3_realloc(void*, int);
williamr@4
  1991
IMPORT_C void sqlite3_free(void*);
williamr@4
  1992
williamr@4
  1993
/*
williamr@4
  1994
** CAPI3REF: Memory Allocator Statistics {H17370} <S30210>
williamr@4
  1995
**
williamr@4
  1996
** SQLite provides these two interfaces for reporting on the status
williamr@4
  1997
** of the [sqlite3_malloc()], [sqlite3_free()], and [sqlite3_realloc()]
williamr@4
  1998
** routines, which form the built-in memory allocation subsystem.
williamr@4
  1999
**
williamr@4
  2000
** INVARIANTS:
williamr@4
  2001
**
williamr@4
  2002
** {H17371} The [sqlite3_memory_used()] routine returns the number of bytes
williamr@4
  2003
**          of memory currently outstanding (malloced but not freed).
williamr@4
  2004
**
williamr@4
  2005
** {H17373} The [sqlite3_memory_highwater()] routine returns the maximum
williamr@4
  2006
**          value of [sqlite3_memory_used()] since the high-water mark
williamr@4
  2007
**          was last reset.
williamr@4
  2008
**
williamr@4
  2009
** {H17374} The values returned by [sqlite3_memory_used()] and
williamr@4
  2010
**          [sqlite3_memory_highwater()] include any overhead
williamr@4
  2011
**          added by SQLite in its implementation of [sqlite3_malloc()],
williamr@4
  2012
**          but not overhead added by the any underlying system library
williamr@4
  2013
**          routines that [sqlite3_malloc()] may call.
williamr@4
  2014
**
williamr@4
  2015
** {H17375} The memory high-water mark is reset to the current value of
williamr@4
  2016
**          [sqlite3_memory_used()] if and only if the parameter to
williamr@4
  2017
**          [sqlite3_memory_highwater()] is true.  The value returned
williamr@4
  2018
**          by [sqlite3_memory_highwater(1)] is the high-water mark
williamr@4
  2019
**          prior to the reset.
williamr@4
  2020
*/
williamr@4
  2021
IMPORT_C sqlite3_int64 sqlite3_memory_used(void);
williamr@4
  2022
IMPORT_C sqlite3_int64 sqlite3_memory_highwater(int resetFlag);
williamr@4
  2023
williamr@4
  2024
/*
williamr@4
  2025
** CAPI3REF: Pseudo-Random Number Generator {H17390} <S20000>
williamr@4
  2026
**
williamr@4
  2027
** SQLite contains a high-quality pseudo-random number generator (PRNG) used to
williamr@4
  2028
** select random ROWIDs when inserting new records into a table that
williamr@4
  2029
** already uses the largest possible ROWID.  The PRNG is also used for
williamr@4
  2030
** the build-in random() and randomblob() SQL functions.  This interface allows
williamr@4
  2031
** applications to access the same PRNG for other purposes.
williamr@4
  2032
**
williamr@4
  2033
** A call to this routine stores N bytes of randomness into buffer P.
williamr@4
  2034
**
williamr@4
  2035
** The first time this routine is invoked (either internally or by
williamr@4
  2036
** the application) the PRNG is seeded using randomness obtained
williamr@4
  2037
** from the xRandomness method of the default [sqlite3_vfs] object.
williamr@4
  2038
** On all subsequent invocations, the pseudo-randomness is generated
williamr@4
  2039
** internally and without recourse to the [sqlite3_vfs] xRandomness
williamr@4
  2040
** method.
williamr@4
  2041
**
williamr@4
  2042
** INVARIANTS:
williamr@4
  2043
**
williamr@4
  2044
** {H17392} The [sqlite3_randomness(N,P)] interface writes N bytes of
williamr@4
  2045
**          high-quality pseudo-randomness into buffer P.
williamr@4
  2046
*/
williamr@4
  2047
IMPORT_C void sqlite3_randomness(int N, void *P);
williamr@4
  2048
williamr@4
  2049
/*
williamr@4
  2050
** CAPI3REF: Compile-Time Authorization Callbacks {H12500} <S70100>
williamr@4
  2051
**
williamr@4
  2052
** This routine registers a authorizer callback with a particular
williamr@4
  2053
** [database connection], supplied in the first argument.
williamr@4
  2054
** The authorizer callback is invoked as SQL statements are being compiled
williamr@4
  2055
** by [sqlite3_prepare()] or its variants [sqlite3_prepare_v2()],
williamr@4
  2056
** [sqlite3_prepare16()] and [sqlite3_prepare16_v2()].  At various
williamr@4
  2057
** points during the compilation process, as logic is being created
williamr@4
  2058
** to perform various actions, the authorizer callback is invoked to
williamr@4
  2059
** see if those actions are allowed.  The authorizer callback should
williamr@4
  2060
** return [SQLITE_OK] to allow the action, [SQLITE_IGNORE] to disallow the
williamr@4
  2061
** specific action but allow the SQL statement to continue to be
williamr@4
  2062
** compiled, or [SQLITE_DENY] to cause the entire SQL statement to be
williamr@4
  2063
** rejected with an error.  If the authorizer callback returns
williamr@4
  2064
** any value other than [SQLITE_IGNORE], [SQLITE_OK], or [SQLITE_DENY]
williamr@4
  2065
** then the [sqlite3_prepare_v2()] or equivalent call that triggered
williamr@4
  2066
** the authorizer will fail with an error message.
williamr@4
  2067
**
williamr@4
  2068
** When the callback returns [SQLITE_OK], that means the operation
williamr@4
  2069
** requested is ok.  When the callback returns [SQLITE_DENY], the
williamr@4
  2070
** [sqlite3_prepare_v2()] or equivalent call that triggered the
williamr@4
  2071
** authorizer will fail with an error message explaining that
williamr@4
  2072
** access is denied.  If the authorizer code is [SQLITE_READ]
williamr@4
  2073
** and the callback returns [SQLITE_IGNORE] then the
williamr@4
  2074
** [prepared statement] statement is constructed to substitute
williamr@4
  2075
** a NULL value in place of the table column that would have
williamr@4
  2076
** been read if [SQLITE_OK] had been returned.  The [SQLITE_IGNORE]
williamr@4
  2077
** return can be used to deny an untrusted user access to individual
williamr@4
  2078
** columns of a table.
williamr@4
  2079
**
williamr@4
  2080
** The first parameter to the authorizer callback is a copy of the third
williamr@4
  2081
** parameter to the sqlite3_set_authorizer() interface. The second parameter
williamr@4
  2082
** to the callback is an integer [SQLITE_COPY | action code] that specifies
williamr@4
  2083
** the particular action to be authorized. The third through sixth parameters
williamr@4
  2084
** to the callback are zero-terminated strings that contain additional
williamr@4
  2085
** details about the action to be authorized.
williamr@4
  2086
**
williamr@4
  2087
** An authorizer is used when [sqlite3_prepare | preparing]
williamr@4
  2088
** SQL statements from an untrusted source, to ensure that the SQL statements
williamr@4
  2089
** do not try to access data they are not allowed to see, or that they do not
williamr@4
  2090
** try to execute malicious statements that damage the database.  For
williamr@4
  2091
** example, an application may allow a user to enter arbitrary
williamr@4
  2092
** SQL queries for evaluation by a database.  But the application does
williamr@4
  2093
** not want the user to be able to make arbitrary changes to the
williamr@4
  2094
** database.  An authorizer could then be put in place while the
williamr@4
  2095
** user-entered SQL is being [sqlite3_prepare | prepared] that
williamr@4
  2096
** disallows everything except [SELECT] statements.
williamr@4
  2097
**
williamr@4
  2098
** Applications that need to process SQL from untrusted sources
williamr@4
  2099
** might also consider lowering resource limits using [sqlite3_limit()]
williamr@4
  2100
** and limiting database size using the [max_page_count] [PRAGMA]
williamr@4
  2101
** in addition to using an authorizer.
williamr@4
  2102
**
williamr@4
  2103
** Only a single authorizer can be in place on a database connection
williamr@4
  2104
** at a time.  Each call to sqlite3_set_authorizer overrides the
williamr@4
  2105
** previous call.  Disable the authorizer by installing a NULL callback.
williamr@4
  2106
** The authorizer is disabled by default.
williamr@4
  2107
**
williamr@4
  2108
** The authorizer callback must not do anything that will modify
williamr@4
  2109
** the database connection that invoked the authorizer callback.
williamr@4
  2110
** Note that [sqlite3_prepare_v2()] and [sqlite3_step()] both modify their
williamr@4
  2111
** database connections for the meaning of "modify" in this paragraph.
williamr@4
  2112
**
williamr@4
  2113
** When [sqlite3_prepare_v2()] is used to prepare a statement, the
williamr@4
  2114
** statement might be reprepared during [sqlite3_step()] due to a 
williamr@4
  2115
** schema change.  Hence, the application should ensure that the
williamr@4
  2116
** correct authorizer callback remains in place during the [sqlite3_step()].
williamr@4
  2117
**
williamr@4
  2118
** Note that the authorizer callback is invoked only during
williamr@4
  2119
** [sqlite3_prepare()] or its variants.  Authorization is not
williamr@4
  2120
** performed during statement evaluation in [sqlite3_step()].
williamr@4
  2121
**
williamr@4
  2122
** INVARIANTS:
williamr@4
  2123
**
williamr@4
  2124
** {H12501} The [sqlite3_set_authorizer(D,...)] interface registers a
williamr@4
  2125
**          authorizer callback with database connection D.
williamr@4
  2126
**
williamr@4
  2127
** {H12502} The authorizer callback is invoked as SQL statements are
williamr@4
  2128
**          being parseed and compiled.
williamr@4
  2129
**
williamr@4
  2130
** {H12503} If the authorizer callback returns any value other than
williamr@4
  2131
**          [SQLITE_IGNORE], [SQLITE_OK], or [SQLITE_DENY], then
williamr@4
  2132
**          the application interface call that caused
williamr@4
  2133
**          the authorizer callback to run shall fail with an
williamr@4
  2134
**          [SQLITE_ERROR] error code and an appropriate error message.
williamr@4
  2135
**
williamr@4
  2136
** {H12504} When the authorizer callback returns [SQLITE_OK], the operation
williamr@4
  2137
**          described is processed normally.
williamr@4
  2138
**
williamr@4
  2139
** {H12505} When the authorizer callback returns [SQLITE_DENY], the
williamr@4
  2140
**          application interface call that caused the
williamr@4
  2141
**          authorizer callback to run shall fail
williamr@4
  2142
**          with an [SQLITE_ERROR] error code and an error message
williamr@4
  2143
**          explaining that access is denied.
williamr@4
  2144
**
williamr@4
  2145
** {H12506} If the authorizer code (the 2nd parameter to the authorizer
williamr@4
  2146
**          callback) is [SQLITE_READ] and the authorizer callback returns
williamr@4
  2147
**          [SQLITE_IGNORE], then the prepared statement is constructed to
williamr@4
  2148
**          insert a NULL value in place of the table column that would have
williamr@4
  2149
**          been read if [SQLITE_OK] had been returned.
williamr@4
  2150
**
williamr@4
  2151
** {H12507} If the authorizer code (the 2nd parameter to the authorizer
williamr@4
  2152
**          callback) is anything other than [SQLITE_READ], then
williamr@4
  2153
**          a return of [SQLITE_IGNORE] has the same effect as [SQLITE_DENY].
williamr@4
  2154
**
williamr@4
  2155
** {H12510} The first parameter to the authorizer callback is a copy of
williamr@4
  2156
**          the third parameter to the [sqlite3_set_authorizer()] interface.
williamr@4
  2157
**
williamr@4
  2158
** {H12511} The second parameter to the callback is an integer
williamr@4
  2159
**          [SQLITE_COPY | action code] that specifies the particular action
williamr@4
  2160
**          to be authorized.
williamr@4
  2161
**
williamr@4
  2162
** {H12512} The third through sixth parameters to the callback are
williamr@4
  2163
**          zero-terminated strings that contain
williamr@4
  2164
**          additional details about the action to be authorized.
williamr@4
  2165
**
williamr@4
  2166
** {H12520} Each call to [sqlite3_set_authorizer()] overrides
williamr@4
  2167
**          any previously installed authorizer.
williamr@4
  2168
**
williamr@4
  2169
** {H12521} A NULL authorizer means that no authorization
williamr@4
  2170
**          callback is invoked.
williamr@4
  2171
**
williamr@4
  2172
** {H12522} The default authorizer is NULL.
williamr@4
  2173
*/
williamr@4
  2174
IMPORT_C int sqlite3_set_authorizer(
williamr@4
  2175
  sqlite3*,
williamr@4
  2176
  int (*xAuth)(void*,int,const char*,const char*,const char*,const char*),
williamr@4
  2177
  void *pUserData
williamr@4
  2178
);
williamr@4
  2179
williamr@4
  2180
/*
williamr@4
  2181
** CAPI3REF: Authorizer Return Codes {H12590} <H12500>
williamr@4
  2182
**
williamr@4
  2183
** The [sqlite3_set_authorizer | authorizer callback function] must
williamr@4
  2184
** return either [SQLITE_OK] or one of these two constants in order
williamr@4
  2185
** to signal SQLite whether or not the action is permitted.  See the
williamr@4
  2186
** [sqlite3_set_authorizer | authorizer documentation] for additional
williamr@4
  2187
** information.
williamr@4
  2188
*/
williamr@4
  2189
#define SQLITE_DENY   1   /* Abort the SQL statement with an error */
williamr@4
  2190
#define SQLITE_IGNORE 2   /* Don't allow access, but don't generate an error */
williamr@4
  2191
williamr@4
  2192
/*
williamr@4
  2193
** CAPI3REF: Authorizer Action Codes {H12550} <H12500>
williamr@4
  2194
**
williamr@4
  2195
** The [sqlite3_set_authorizer()] interface registers a callback function
williamr@4
  2196
** that is invoked to authorize certain SQL statement actions.  The
williamr@4
  2197
** second parameter to the callback is an integer code that specifies
williamr@4
  2198
** what action is being authorized.  These are the integer action codes that
williamr@4
  2199
** the authorizer callback may be passed.
williamr@4
  2200
**
williamr@4
  2201
** These action code values signify what kind of operation is to be
williamr@4
  2202
** authorized.  The 3rd and 4th parameters to the authorization
williamr@4
  2203
** callback function will be parameters or NULL depending on which of these
williamr@4
  2204
** codes is used as the second parameter.  The 5th parameter to the
williamr@4
  2205
** authorizer callback is the name of the database ("main", "temp",
williamr@4
  2206
** etc.) if applicable.  The 6th parameter to the authorizer callback
williamr@4
  2207
** is the name of the inner-most trigger or view that is responsible for
williamr@4
  2208
** the access attempt or NULL if this access attempt is directly from
williamr@4
  2209
** top-level SQL code.
williamr@4
  2210
**
williamr@4
  2211
** INVARIANTS:
williamr@4
  2212
**
williamr@4
  2213
** {H12551} The second parameter to an
williamr@4
  2214
**          [sqlite3_set_authorizer | authorizer callback] shall be an integer
williamr@4
  2215
**          [SQLITE_COPY | authorizer code] that specifies what action
williamr@4
  2216
**          is being authorized.
williamr@4
  2217
**
williamr@4
  2218
** {H12552} The 3rd and 4th parameters to the
williamr@4
  2219
**          [sqlite3_set_authorizer | authorization callback]
williamr@4
  2220
**          shall be parameters or NULL depending on which
williamr@4
  2221
**          [SQLITE_COPY | authorizer code] is used as the second parameter.
williamr@4
  2222
**
williamr@4
  2223
** {H12553} The 5th parameter to the
williamr@4
  2224
**          [sqlite3_set_authorizer | authorizer callback] shall be the name
williamr@4
  2225
**          of the database (example: "main", "temp", etc.) if applicable.
williamr@4
  2226
**
williamr@4
  2227
** {H12554} The 6th parameter to the
williamr@4
  2228
**          [sqlite3_set_authorizer | authorizer callback] shall be the name
williamr@4
  2229
**          of the inner-most trigger or view that is responsible for
williamr@4
  2230
**          the access attempt or NULL if this access attempt is directly from
williamr@4
  2231
**          top-level SQL code.
williamr@4
  2232
*/
williamr@4
  2233
/******************************************* 3rd ************ 4th ***********/
williamr@4
  2234
#define SQLITE_CREATE_INDEX          1   /* Index Name      Table Name      */
williamr@4
  2235
#define SQLITE_CREATE_TABLE          2   /* Table Name      NULL            */
williamr@4
  2236
#define SQLITE_CREATE_TEMP_INDEX     3   /* Index Name      Table Name      */
williamr@4
  2237
#define SQLITE_CREATE_TEMP_TABLE     4   /* Table Name      NULL            */
williamr@4
  2238
#define SQLITE_CREATE_TEMP_TRIGGER   5   /* Trigger Name    Table Name      */
williamr@4
  2239
#define SQLITE_CREATE_TEMP_VIEW      6   /* View Name       NULL            */
williamr@4
  2240
#define SQLITE_CREATE_TRIGGER        7   /* Trigger Name    Table Name      */
williamr@4
  2241
#define SQLITE_CREATE_VIEW           8   /* View Name       NULL            */
williamr@4
  2242
#define SQLITE_DELETE                9   /* Table Name      NULL            */
williamr@4
  2243
#define SQLITE_DROP_INDEX           10   /* Index Name      Table Name      */
williamr@4
  2244
#define SQLITE_DROP_TABLE           11   /* Table Name      NULL            */
williamr@4
  2245
#define SQLITE_DROP_TEMP_INDEX      12   /* Index Name      Table Name      */
williamr@4
  2246
#define SQLITE_DROP_TEMP_TABLE      13   /* Table Name      NULL            */
williamr@4
  2247
#define SQLITE_DROP_TEMP_TRIGGER    14   /* Trigger Name    Table Name      */
williamr@4
  2248
#define SQLITE_DROP_TEMP_VIEW       15   /* View Name       NULL            */
williamr@4
  2249
#define SQLITE_DROP_TRIGGER         16   /* Trigger Name    Table Name      */
williamr@4
  2250
#define SQLITE_DROP_VIEW            17   /* View Name       NULL            */
williamr@4
  2251
#define SQLITE_INSERT               18   /* Table Name      NULL            */
williamr@4
  2252
#define SQLITE_PRAGMA               19   /* Pragma Name     1st arg or NULL */
williamr@4
  2253
#define SQLITE_READ                 20   /* Table Name      Column Name     */
williamr@4
  2254
#define SQLITE_SELECT               21   /* NULL            NULL            */
williamr@4
  2255
#define SQLITE_TRANSACTION          22   /* NULL            NULL            */
williamr@4
  2256
#define SQLITE_UPDATE               23   /* Table Name      Column Name     */
williamr@4
  2257
#define SQLITE_ATTACH               24   /* Filename        NULL            */
williamr@4
  2258
#define SQLITE_DETACH               25   /* Database Name   NULL            */
williamr@4
  2259
#define SQLITE_ALTER_TABLE          26   /* Database Name   Table Name      */
williamr@4
  2260
#define SQLITE_REINDEX              27   /* Index Name      NULL            */
williamr@4
  2261
#define SQLITE_ANALYZE              28   /* Table Name      NULL            */
williamr@4
  2262
#define SQLITE_CREATE_VTABLE        29   /* Table Name      Module Name     */
williamr@4
  2263
#define SQLITE_DROP_VTABLE          30   /* Table Name      Module Name     */
williamr@4
  2264
#define SQLITE_FUNCTION             31   /* Function Name   NULL            */
williamr@4
  2265
#define SQLITE_COPY                  0   /* No longer used */
williamr@4
  2266
williamr@4
  2267
/*
williamr@4
  2268
** CAPI3REF: Tracing And Profiling Functions {H12280} <S60400>
williamr@4
  2269
** EXPERIMENTAL
williamr@4
  2270
**
williamr@4
  2271
** These routines register callback functions that can be used for
williamr@4
  2272
** tracing and profiling the execution of SQL statements.
williamr@4
  2273
**
williamr@4
  2274
** The callback function registered by sqlite3_trace() is invoked at
williamr@4
  2275
** various times when an SQL statement is being run by [sqlite3_step()].
williamr@4
  2276
** The callback returns a UTF-8 rendering of the SQL statement text
williamr@4
  2277
** as the statement first begins executing.  Additional callbacks occur
williamr@4
  2278
** as each triggered subprogram is entered.  The callbacks for triggers
williamr@4
  2279
** contain a UTF-8 SQL comment that identifies the trigger.
williamr@4
  2280
**
williamr@4
  2281
** The callback function registered by sqlite3_profile() is invoked
williamr@4
  2282
** as each SQL statement finishes.  The profile callback contains
williamr@4
  2283
** the original statement text and an estimate of wall-clock time
williamr@4
  2284
** of how long that statement took to run.
williamr@4
  2285
**
williamr@4
  2286
** INVARIANTS:
williamr@4
  2287
**
williamr@4
  2288
** {H12281} The callback function registered by [sqlite3_trace()] 
williamr@4
  2289
**          shall be invoked
williamr@4
  2290
**          whenever an SQL statement first begins to execute and
williamr@4
  2291
**          whenever a trigger subprogram first begins to run.
williamr@4
  2292
**
williamr@4
  2293
** {H12282} Each call to [sqlite3_trace()] shall override the previously
williamr@4
  2294
**          registered trace callback.
williamr@4
  2295
**
williamr@4
  2296
** {H12283} A NULL trace callback shall disable tracing.
williamr@4
  2297
**
williamr@4
  2298
** {H12284} The first argument to the trace callback shall be a copy of
williamr@4
  2299
**          the pointer which was the 3rd argument to [sqlite3_trace()].
williamr@4
  2300
**
williamr@4
  2301
** {H12285} The second argument to the trace callback is a
williamr@4
  2302
**          zero-terminated UTF-8 string containing the original text
williamr@4
  2303
**          of the SQL statement as it was passed into [sqlite3_prepare_v2()]
williamr@4
  2304
**          or the equivalent, or an SQL comment indicating the beginning
williamr@4
  2305
**          of a trigger subprogram.
williamr@4
  2306
**
williamr@4
  2307
** {H12287} The callback function registered by [sqlite3_profile()] is invoked
williamr@4
  2308
**          as each SQL statement finishes.
williamr@4
  2309
**
williamr@4
  2310
** {H12288} The first parameter to the profile callback is a copy of
williamr@4
  2311
**          the 3rd parameter to [sqlite3_profile()].
williamr@4
  2312
**
williamr@4
  2313
** {H12289} The second parameter to the profile callback is a
williamr@4
  2314
**          zero-terminated UTF-8 string that contains the complete text of
williamr@4
  2315
**          the SQL statement as it was processed by [sqlite3_prepare_v2()]
williamr@4
  2316
**          or the equivalent.
williamr@4
  2317
**
williamr@4
  2318
** {H12290} The third parameter to the profile callback is an estimate
williamr@4
  2319
**          of the number of nanoseconds of wall-clock time required to
williamr@4
  2320
**          run the SQL statement from start to finish.
williamr@4
  2321
*/
williamr@4
  2322
IMPORT_C void *sqlite3_trace(sqlite3*, void(*xTrace)(void*,const char*), void*);
williamr@4
  2323
IMPORT_C void *sqlite3_profile(sqlite3*,
williamr@4
  2324
   void(*xProfile)(void*,const char*,sqlite3_uint64), void*);
williamr@4
  2325
williamr@4
  2326
/*
williamr@4
  2327
** CAPI3REF: Query Progress Callbacks {H12910} <S60400>
williamr@4
  2328
**
williamr@4
  2329
** This routine configures a callback function - the
williamr@4
  2330
** progress callback - that is invoked periodically during long
williamr@4
  2331
** running calls to [sqlite3_exec()], [sqlite3_step()] and
williamr@4
  2332
** [sqlite3_get_table()].  An example use for this
williamr@4
  2333
** interface is to keep a GUI updated during a large query.
williamr@4
  2334
**
williamr@4
  2335
** If the progress callback returns non-zero, the operation is
williamr@4
  2336
** interrupted.  This feature can be used to implement a
williamr@4
  2337
** "Cancel" button on a GUI progress dialog box.
williamr@4
  2338
**
williamr@4
  2339
** The progress handler must not do anything that will modify
williamr@4
  2340
** the database connection that invoked the progress handler.
williamr@4
  2341
** Note that [sqlite3_prepare_v2()] and [sqlite3_step()] both modify their
williamr@4
  2342
** database connections for the meaning of "modify" in this paragraph.
williamr@4
  2343
**
williamr@4
  2344
** INVARIANTS:
williamr@4
  2345
**
williamr@4
  2346
** {H12911} The callback function registered by sqlite3_progress_handler()
williamr@4
  2347
**          is invoked periodically during long running calls to
williamr@4
  2348
**          [sqlite3_step()].
williamr@4
  2349
**
williamr@4
  2350
** {H12912} The progress callback is invoked once for every N virtual
williamr@4
  2351
**          machine opcodes, where N is the second argument to
williamr@4
  2352
**          the [sqlite3_progress_handler()] call that registered
williamr@4
  2353
**          the callback.  If N is less than 1, sqlite3_progress_handler()
williamr@4
  2354
**          acts as if a NULL progress handler had been specified.
williamr@4
  2355
**
williamr@4
  2356
** {H12913} The progress callback itself is identified by the third
williamr@4
  2357
**          argument to sqlite3_progress_handler().
williamr@4
  2358
**
williamr@4
  2359
** {H12914} The fourth argument to sqlite3_progress_handler() is a
williamr@4
  2360
**          void pointer passed to the progress callback
williamr@4
  2361
**          function each time it is invoked.
williamr@4
  2362
**
williamr@4
  2363
** {H12915} If a call to [sqlite3_step()] results in fewer than N opcodes
williamr@4
  2364
**          being executed, then the progress callback is never invoked.
williamr@4
  2365
**
williamr@4
  2366
** {H12916} Every call to [sqlite3_progress_handler()]
williamr@4
  2367
**          overwrites any previously registered progress handler.
williamr@4
  2368
**
williamr@4
  2369
** {H12917} If the progress handler callback is NULL then no progress
williamr@4
  2370
**          handler is invoked.
williamr@4
  2371
**
williamr@4
  2372
** {H12918} If the progress callback returns a result other than 0, then
williamr@4
  2373
**          the behavior is a if [sqlite3_interrupt()] had been called.
williamr@4
  2374
**          <S30500>
williamr@4
  2375
*/
williamr@4
  2376
IMPORT_C void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
williamr@4
  2377
williamr@4
  2378
/*
williamr@4
  2379
** CAPI3REF: Opening A New Database Connection {H12700} <S40200>
williamr@4
  2380
**
williamr@4
  2381
** These routines open an SQLite database file whose name is given by the
williamr@4
  2382
** filename argument. The filename argument is interpreted as UTF-8 for
williamr@4
  2383
** sqlite3_open() and sqlite3_open_v2() and as UTF-16 in the native byte
williamr@4
  2384
** order for sqlite3_open16(). A [database connection] handle is usually
williamr@4
  2385
** returned in *ppDb, even if an error occurs.  The only exception is that
williamr@4
  2386
** if SQLite is unable to allocate memory to hold the [sqlite3] object,
williamr@4
  2387
** a NULL will be written into *ppDb instead of a pointer to the [sqlite3]
williamr@4
  2388
** object. If the database is opened (and/or created) successfully, then
williamr@4
  2389
** [SQLITE_OK] is returned.  Otherwise an [error code] is returned.  The
williamr@4
  2390
** [sqlite3_errmsg()] or [sqlite3_errmsg16()] routines can be used to obtain
williamr@4
  2391
** an English language description of the error.
williamr@4
  2392
**
williamr@4
  2393
** The default encoding for the database will be UTF-8 if
williamr@4
  2394
** sqlite3_open() or sqlite3_open_v2() is called and
williamr@4
  2395
** UTF-16 in the native byte order if sqlite3_open16() is used.
williamr@4
  2396
**
williamr@4
  2397
** Whether or not an error occurs when it is opened, resources
williamr@4
  2398
** associated with the [database connection] handle should be released by
williamr@4
  2399
** passing it to [sqlite3_close()] when it is no longer required.
williamr@4
  2400
**
williamr@4
  2401
** The sqlite3_open_v2() interface works like sqlite3_open()
williamr@4
  2402
** except that it accepts two additional parameters for additional control
williamr@4
  2403
** over the new database connection.  The flags parameter can take one of
williamr@4
  2404
** the following three values, optionally combined with the 
williamr@4
  2405
** [SQLITE_OPEN_NOMUTEX] or [SQLITE_OPEN_FULLMUTEX] flags:
williamr@4
  2406
**
williamr@4
  2407
** <dl>
williamr@4
  2408
** <dt>[SQLITE_OPEN_READONLY]</dt>
williamr@4
  2409
** <dd>The database is opened in read-only mode.  If the database does not
williamr@4
  2410
** already exist, an error is returned.</dd>
williamr@4
  2411
**
williamr@4
  2412
** <dt>[SQLITE_OPEN_READWRITE]</dt>
williamr@4
  2413
** <dd>The database is opened for reading and writing if possible, or reading
williamr@4
  2414
** only if the file is write protected by the operating system.  In either
williamr@4
  2415
** case the database must already exist, otherwise an error is returned.</dd>
williamr@4
  2416
**
williamr@4
  2417
** <dt>[SQLITE_OPEN_READWRITE] | [SQLITE_OPEN_CREATE]</dt>
williamr@4
  2418
** <dd>The database is opened for reading and writing, and is creates it if
williamr@4
  2419
** it does not already exist. This is the behavior that is always used for
williamr@4
  2420
** sqlite3_open() and sqlite3_open16().</dd>
williamr@4
  2421
** </dl>
williamr@4
  2422
**
williamr@4
  2423
** If the 3rd parameter to sqlite3_open_v2() is not one of the
williamr@4
  2424
** combinations shown above or one of the combinations shown above combined
williamr@4
  2425
** with the [SQLITE_OPEN_NOMUTEX] or [SQLITE_OPEN_FULLMUTEX] flags,
williamr@4
  2426
** then the behavior is undefined.
williamr@4
  2427
**
williamr@4
  2428
** If the [SQLITE_OPEN_NOMUTEX] flag is set, then the database connection
williamr@4
  2429
** opens in the multi-thread [threading mode] as long as the single-thread
williamr@4
  2430
** mode has not been set at compile-time or start-time.  If the
williamr@4
  2431
** [SQLITE_OPEN_FULLMUTEX] flag is set then the database connection opens
williamr@4
  2432
** in the serialized [threading mode] unless single-thread was
williamr@4
  2433
** previously selected at compile-time or start-time.
williamr@4
  2434
**
williamr@4
  2435
** If the filename is ":memory:", then a private, temporary in-memory database
williamr@4
  2436
** is created for the connection.  This in-memory database will vanish when
williamr@4
  2437
** the database connection is closed.  Future versions of SQLite might
williamr@4
  2438
** make use of additional special filenames that begin with the ":" character.
williamr@4
  2439
** It is recommended that when a database filename actually does begin with
williamr@4
  2440
** a ":" character you should prefix the filename with a pathname such as
williamr@4
  2441
** "./" to avoid ambiguity.
williamr@4
  2442
**
williamr@4
  2443
** If the filename is an empty string, then a private, temporary
williamr@4
  2444
** on-disk database will be created.  This private database will be
williamr@4
  2445
** automatically deleted as soon as the database connection is closed.
williamr@4
  2446
**
williamr@4
  2447
** The fourth parameter to sqlite3_open_v2() is the name of the
williamr@4
  2448
** [sqlite3_vfs] object that defines the operating system interface that
williamr@4
  2449
** the new database connection should use.  If the fourth parameter is
williamr@4
  2450
** a NULL pointer then the default [sqlite3_vfs] object is used.
williamr@4
  2451
**
williamr@4
  2452
** <b>Note to Windows users:</b>  The encoding used for the filename argument
williamr@4
  2453
** of sqlite3_open() and sqlite3_open_v2() must be UTF-8, not whatever
williamr@4
  2454
** codepage is currently defined.  Filenames containing international
williamr@4
  2455
** characters must be converted to UTF-8 prior to passing them into
williamr@4
  2456
** sqlite3_open() or sqlite3_open_v2().
williamr@4
  2457
**
williamr@4
  2458
** INVARIANTS:
williamr@4
  2459
**
williamr@4
  2460
** {H12701} The [sqlite3_open()], [sqlite3_open16()], and
williamr@4
  2461
**          [sqlite3_open_v2()] interfaces create a new
williamr@4
  2462
**          [database connection] associated with
williamr@4
  2463
**          the database file given in their first parameter.
williamr@4
  2464
**
williamr@4
  2465
** {H12702} The filename argument is interpreted as UTF-8
williamr@4
  2466
**          for [sqlite3_open()] and [sqlite3_open_v2()] and as UTF-16
williamr@4
  2467
**          in the native byte order for [sqlite3_open16()].
williamr@4
  2468
**
williamr@4
  2469
** {H12703} A successful invocation of [sqlite3_open()], [sqlite3_open16()],
williamr@4
  2470
**          or [sqlite3_open_v2()] writes a pointer to a new
williamr@4
  2471
**          [database connection] into *ppDb.
williamr@4
  2472
**
williamr@4
  2473
** {H12704} The [sqlite3_open()], [sqlite3_open16()], and
williamr@4
  2474
**          [sqlite3_open_v2()] interfaces return [SQLITE_OK] upon success,
williamr@4
  2475
**          or an appropriate [error code] on failure.
williamr@4
  2476
**
williamr@4
  2477
** {H12706} The default text encoding for a new database created using
williamr@4
  2478
**          [sqlite3_open()] or [sqlite3_open_v2()] will be UTF-8.
williamr@4
  2479
**
williamr@4
  2480
** {H12707} The default text encoding for a new database created using
williamr@4
  2481
**          [sqlite3_open16()] will be UTF-16.
williamr@4
  2482
**
williamr@4
  2483
** {H12709} The [sqlite3_open(F,D)] interface is equivalent to
williamr@4
  2484
**          [sqlite3_open_v2(F,D,G,0)] where the G parameter is
williamr@4
  2485
**          [SQLITE_OPEN_READWRITE]|[SQLITE_OPEN_CREATE].
williamr@4
  2486
**
williamr@4
  2487
** {H12711} If the G parameter to [sqlite3_open_v2(F,D,G,V)] contains the
williamr@4
  2488
**          bit value [SQLITE_OPEN_READONLY] then the database is opened
williamr@4
  2489
**          for reading only.
williamr@4
  2490
**
williamr@4
  2491
** {H12712} If the G parameter to [sqlite3_open_v2(F,D,G,V)] contains the
williamr@4
  2492
**          bit value [SQLITE_OPEN_READWRITE] then the database is opened
williamr@4
  2493
**          reading and writing if possible, or for reading only if the
williamr@4
  2494
**          file is write protected by the operating system.
williamr@4
  2495
**
williamr@4
  2496
** {H12713} If the G parameter to [sqlite3_open_v2(F,D,G,V)] omits the
williamr@4
  2497
**          bit value [SQLITE_OPEN_CREATE] and the database does not
williamr@4
  2498
**          previously exist, an error is returned.
williamr@4
  2499
**
williamr@4
  2500
** {H12714} If the G parameter to [sqlite3_open_v2(F,D,G,V)] contains the
williamr@4
  2501
**          bit value [SQLITE_OPEN_CREATE] and the database does not
williamr@4
  2502
**          previously exist, then an attempt is made to create and
williamr@4
  2503
**          initialize the database.
williamr@4
  2504
**
williamr@4
  2505
** {H12717} If the filename argument to [sqlite3_open()], [sqlite3_open16()],
williamr@4
  2506
**          or [sqlite3_open_v2()] is ":memory:", then an private,
williamr@4
  2507
**          ephemeral, in-memory database is created for the connection.
williamr@4
  2508
**          <todo>Is SQLITE_OPEN_CREATE|SQLITE_OPEN_READWRITE required
williamr@4
  2509
**          in sqlite3_open_v2()?</todo>
williamr@4
  2510
**
williamr@4
  2511
** {H12719} If the filename is NULL or an empty string, then a private,
williamr@4
  2512
**          ephemeral on-disk database will be created.
williamr@4
  2513
**          <todo>Is SQLITE_OPEN_CREATE|SQLITE_OPEN_READWRITE required
williamr@4
  2514
**          in sqlite3_open_v2()?</todo>
williamr@4
  2515
**
williamr@4
  2516
** {H12721} The [database connection] created by [sqlite3_open_v2(F,D,G,V)]
williamr@4
  2517
**          will use the [sqlite3_vfs] object identified by the V parameter,
williamr@4
  2518
**          or the default [sqlite3_vfs] object if V is a NULL pointer.
williamr@4
  2519
**
williamr@4
  2520
** {H12723} Two [database connections] will share a common cache if both were
williamr@4
  2521
**          opened with the same VFS while [shared cache mode] was enabled and
williamr@4
  2522
**          if both filenames compare equal using memcmp() after having been
williamr@4
  2523
**          processed by the [sqlite3_vfs | xFullPathname] method of the VFS.
williamr@4
  2524
*/
williamr@4
  2525
IMPORT_C int sqlite3_open(
williamr@4
  2526
  const char *filename,   /* Database filename (UTF-8) */
williamr@4
  2527
  sqlite3 **ppDb          /* OUT: SQLite db handle */
williamr@4
  2528
);
williamr@4
  2529
IMPORT_C int sqlite3_open16(
williamr@4
  2530
  const void *filename,   /* Database filename (UTF-16) */
williamr@4
  2531
  sqlite3 **ppDb          /* OUT: SQLite db handle */
williamr@4
  2532
);
williamr@4
  2533
IMPORT_C int sqlite3_open_v2(
williamr@4
  2534
  const char *filename,   /* Database filename (UTF-8) */
williamr@4
  2535
  sqlite3 **ppDb,         /* OUT: SQLite db handle */
williamr@4
  2536
  int flags,              /* Flags */
williamr@4
  2537
  const char *zVfs        /* Name of VFS module to use */
williamr@4
  2538
);
williamr@4
  2539
williamr@4
  2540
/*
williamr@4
  2541
** CAPI3REF: Error Codes And Messages {H12800} <S60200>
williamr@4
  2542
**
williamr@4
  2543
** The sqlite3_errcode() interface returns the numeric [result code] or
williamr@4
  2544
** [extended result code] for the most recent failed sqlite3_* API call
williamr@4
  2545
** associated with a [database connection]. If a prior API call failed
williamr@4
  2546
** but the most recent API call succeeded, the return value from
williamr@4
  2547
** sqlite3_errcode() is undefined.
williamr@4
  2548
**
williamr@4
  2549
** The sqlite3_errmsg() and sqlite3_errmsg16() return English-language
williamr@4
  2550
** text that describes the error, as either UTF-8 or UTF-16 respectively.
williamr@4
  2551
** Memory to hold the error message string is managed internally.
williamr@4
  2552
** The application does not need to worry about freeing the result.
williamr@4
  2553
** However, the error string might be overwritten or deallocated by
williamr@4
  2554
** subsequent calls to other SQLite interface functions.
williamr@4
  2555
**
williamr@4
  2556
** If an interface fails with SQLITE_MISUSE, that means the interface
williamr@4
  2557
** was invoked incorrectly by the application.  In that case, the
williamr@4
  2558
** error code and message may or may not be set.
williamr@4
  2559
**
williamr@4
  2560
** INVARIANTS:
williamr@4
  2561
**
williamr@4
  2562
** {H12801} The [sqlite3_errcode(D)] interface returns the numeric
williamr@4
  2563
**          [result code] or [extended result code] for the most recently
williamr@4
  2564
**          failed interface call associated with the [database connection] D.
williamr@4
  2565
**
williamr@4
  2566
** {H12803} The [sqlite3_errmsg(D)] and [sqlite3_errmsg16(D)]
williamr@4
  2567
**          interfaces return English-language text that describes
williamr@4
  2568
**          the error in the mostly recently failed interface call,
williamr@4
  2569
**          encoded as either UTF-8 or UTF-16 respectively.
williamr@4
  2570
**
williamr@4
  2571
** {H12807} The strings returned by [sqlite3_errmsg()] and [sqlite3_errmsg16()]
williamr@4
  2572
**          are valid until the next SQLite interface call.
williamr@4
  2573
**
williamr@4
  2574
** {H12808} Calls to API routines that do not return an error code
williamr@4
  2575
**          (example: [sqlite3_data_count()]) do not
williamr@4
  2576
**          change the error code or message returned by
williamr@4
  2577
**          [sqlite3_errcode()], [sqlite3_errmsg()], or [sqlite3_errmsg16()].
williamr@4
  2578
**
williamr@4
  2579
** {H12809} Interfaces that are not associated with a specific
williamr@4
  2580
**          [database connection] (examples:
williamr@4
  2581
**          [sqlite3_mprintf()] or [sqlite3_enable_shared_cache()]
williamr@4
  2582
**          do not change the values returned by
williamr@4
  2583
**          [sqlite3_errcode()], [sqlite3_errmsg()], or [sqlite3_errmsg16()].
williamr@4
  2584
*/
williamr@4
  2585
IMPORT_C int sqlite3_errcode(sqlite3 *db);
williamr@4
  2586
IMPORT_C const char *sqlite3_errmsg(sqlite3*);
williamr@4
  2587
IMPORT_C const void *sqlite3_errmsg16(sqlite3*);
williamr@4
  2588
williamr@4
  2589
/*
williamr@4
  2590
** CAPI3REF: SQL Statement Object {H13000} <H13010>
williamr@4
  2591
** KEYWORDS: {prepared statement} {prepared statements}
williamr@4
  2592
**
williamr@4
  2593
** An instance of this object represents a single SQL statement.
williamr@4
  2594
** This object is variously known as a "prepared statement" or a
williamr@4
  2595
** "compiled SQL statement" or simply as a "statement".
williamr@4
  2596
**
williamr@4
  2597
** The life of a statement object goes something like this:
williamr@4
  2598
**
williamr@4
  2599
** <ol>
williamr@4
  2600
** <li> Create the object using [sqlite3_prepare_v2()] or a related
williamr@4
  2601
**      function.
williamr@4
  2602
** <li> Bind values to [host parameters] using the sqlite3_bind_*()
williamr@4
  2603
**      interfaces.
williamr@4
  2604
** <li> Run the SQL by calling [sqlite3_step()] one or more times.
williamr@4
  2605
** <li> Reset the statement using [sqlite3_reset()] then go back
williamr@4
  2606
**      to step 2.  Do this zero or more times.
williamr@4
  2607
** <li> Destroy the object using [sqlite3_finalize()].
williamr@4
  2608
** </ol>
williamr@4
  2609
**
williamr@4
  2610
** Refer to documentation on individual methods above for additional
williamr@4
  2611
** information.
williamr@4
  2612
*/
williamr@4
  2613
typedef struct sqlite3_stmt sqlite3_stmt;
williamr@4
  2614
williamr@4
  2615
/*
williamr@4
  2616
** CAPI3REF: Run-time Limits {H12760} <S20600>
williamr@4
  2617
**
williamr@4
  2618
** This interface allows the size of various constructs to be limited
williamr@4
  2619
** on a connection by connection basis.  The first parameter is the
williamr@4
  2620
** [database connection] whose limit is to be set or queried.  The
williamr@4
  2621
** second parameter is one of the [limit categories] that define a
williamr@4
  2622
** class of constructs to be size limited.  The third parameter is the
williamr@4
  2623
** new limit for that construct.  The function returns the old limit.
williamr@4
  2624
**
williamr@4
  2625
** If the new limit is a negative number, the limit is unchanged.
williamr@4
  2626
** For the limit category of SQLITE_LIMIT_XYZ there is a hard upper
williamr@4
  2627
** bound set by a compile-time C preprocessor macro named SQLITE_MAX_XYZ.
williamr@4
  2628
** (The "_LIMIT_" in the name is changed to "_MAX_".)
williamr@4
  2629
** Attempts to increase a limit above its hard upper bound are
williamr@4
  2630
** silently truncated to the hard upper limit.
williamr@4
  2631
**
williamr@4
  2632
** Run time limits are intended for use in applications that manage
williamr@4
  2633
** both their own internal database and also databases that are controlled
williamr@4
  2634
** by untrusted external sources.  An example application might be a
williamr@4
  2635
** webbrowser that has its own databases for storing history and
williamr@4
  2636
** separate databases controlled by JavaScript applications downloaded
williamr@4
  2637
** off the Internet.  The internal databases can be given the
williamr@4
  2638
** large, default limits.  Databases managed by external sources can
williamr@4
  2639
** be given much smaller limits designed to prevent a denial of service
williamr@4
  2640
** attack.  Developers might also want to use the [sqlite3_set_authorizer()]
williamr@4
  2641
** interface to further control untrusted SQL.  The size of the database
williamr@4
  2642
** created by an untrusted script can be contained using the
williamr@4
  2643
** [max_page_count] [PRAGMA].
williamr@4
  2644
**
williamr@4
  2645
** New run-time limit categories may be added in future releases.
williamr@4
  2646
**
williamr@4
  2647
** INVARIANTS:
williamr@4
  2648
**
williamr@4
  2649
** {H12762} A successful call to [sqlite3_limit(D,C,V)] where V is
williamr@4
  2650
**          positive changes the limit on the size of construct C in the
williamr@4
  2651
**          [database connection] D to the lesser of V and the hard upper
williamr@4
  2652
**          bound on the size of C that is set at compile-time.
williamr@4
  2653
**
williamr@4
  2654
** {H12766} A successful call to [sqlite3_limit(D,C,V)] where V is negative
williamr@4
  2655
**          leaves the state of the [database connection] D unchanged.
williamr@4
  2656
**
williamr@4
  2657
** {H12769} A successful call to [sqlite3_limit(D,C,V)] returns the
williamr@4
  2658
**          value of the limit on the size of construct C in the
williamr@4
  2659
**          [database connection] D as it was prior to the call.
williamr@4
  2660
*/
williamr@4
  2661
IMPORT_C int sqlite3_limit(sqlite3*, int id, int newVal);
williamr@4
  2662
williamr@4
  2663
/*
williamr@4
  2664
** CAPI3REF: Run-Time Limit Categories {H12790} <H12760>
williamr@4
  2665
** KEYWORDS: {limit category} {limit categories}
williamr@4
  2666
**
williamr@4
  2667
** These constants define various aspects of a [database connection]
williamr@4
  2668
** that can be limited in size by calls to [sqlite3_limit()].
williamr@4
  2669
** The meanings of the various limits are as follows:
williamr@4
  2670
**
williamr@4
  2671
** <dl>
williamr@4
  2672
** <dt>SQLITE_LIMIT_LENGTH</dt>
williamr@4
  2673
** <dd>The maximum size of any string or BLOB or table row.<dd>
williamr@4
  2674
**
williamr@4
  2675
** <dt>SQLITE_LIMIT_SQL_LENGTH</dt>
williamr@4
  2676
** <dd>The maximum length of an SQL statement.</dd>
williamr@4
  2677
**
williamr@4
  2678
** <dt>SQLITE_LIMIT_COLUMN</dt>
williamr@4
  2679
** <dd>The maximum number of columns in a table definition or in the
williamr@4
  2680
** result set of a SELECT or the maximum number of columns in an index
williamr@4
  2681
** or in an ORDER BY or GROUP BY clause.</dd>
williamr@4
  2682
**
williamr@4
  2683
** <dt>SQLITE_LIMIT_EXPR_DEPTH</dt>
williamr@4
  2684
** <dd>The maximum depth of the parse tree on any expression.</dd>
williamr@4
  2685
**
williamr@4
  2686
** <dt>SQLITE_LIMIT_COMPOUND_SELECT</dt>
williamr@4
  2687
** <dd>The maximum number of terms in a compound SELECT statement.</dd>
williamr@4
  2688
**
williamr@4
  2689
** <dt>SQLITE_LIMIT_VDBE_OP</dt>
williamr@4
  2690
** <dd>The maximum number of instructions in a virtual machine program
williamr@4
  2691
** used to implement an SQL statement.</dd>
williamr@4
  2692
**
williamr@4
  2693
** <dt>SQLITE_LIMIT_FUNCTION_ARG</dt>
williamr@4
  2694
** <dd>The maximum number of arguments on a function.</dd>
williamr@4
  2695
**
williamr@4
  2696
** <dt>SQLITE_LIMIT_ATTACHED</dt>
williamr@4
  2697
** <dd>The maximum number of attached databases.</dd>
williamr@4
  2698
**
williamr@4
  2699
** <dt>SQLITE_LIMIT_LIKE_PATTERN_LENGTH</dt>
williamr@4
  2700
** <dd>The maximum length of the pattern argument to the LIKE or
williamr@4
  2701
** GLOB operators.</dd>
williamr@4
  2702
**
williamr@4
  2703
** <dt>SQLITE_LIMIT_VARIABLE_NUMBER</dt>
williamr@4
  2704
** <dd>The maximum number of variables in an SQL statement that can
williamr@4
  2705
** be bound.</dd>
williamr@4
  2706
** </dl>
williamr@4
  2707
*/
williamr@4
  2708
#define SQLITE_LIMIT_LENGTH                    0
williamr@4
  2709
#define SQLITE_LIMIT_SQL_LENGTH                1
williamr@4
  2710
#define SQLITE_LIMIT_COLUMN                    2
williamr@4
  2711
#define SQLITE_LIMIT_EXPR_DEPTH                3
williamr@4
  2712
#define SQLITE_LIMIT_COMPOUND_SELECT           4
williamr@4
  2713
#define SQLITE_LIMIT_VDBE_OP                   5
williamr@4
  2714
#define SQLITE_LIMIT_FUNCTION_ARG              6
williamr@4
  2715
#define SQLITE_LIMIT_ATTACHED                  7
williamr@4
  2716
#define SQLITE_LIMIT_LIKE_PATTERN_LENGTH       8
williamr@4
  2717
#define SQLITE_LIMIT_VARIABLE_NUMBER           9
williamr@4
  2718
williamr@4
  2719
/*
williamr@4
  2720
** CAPI3REF: Compiling An SQL Statement {H13010} <S10000>
williamr@4
  2721
** KEYWORDS: {SQL statement compiler}
williamr@4
  2722
**
williamr@4
  2723
** To execute an SQL query, it must first be compiled into a byte-code
williamr@4
  2724
** program using one of these routines.
williamr@4
  2725
**
williamr@4
  2726
** The first argument, "db", is a [database connection] obtained from a
williamr@4
  2727
** prior call to [sqlite3_open()], [sqlite3_open_v2()] or [sqlite3_open16()].
williamr@4
  2728
**
williamr@4
  2729
** The second argument, "zSql", is the statement to be compiled, encoded
williamr@4
  2730
** as either UTF-8 or UTF-16.  The sqlite3_prepare() and sqlite3_prepare_v2()
williamr@4
  2731
** interfaces use UTF-8, and sqlite3_prepare16() and sqlite3_prepare16_v2()
williamr@4
  2732
** use UTF-16.
williamr@4
  2733
**
williamr@4
  2734
** If the nByte argument is less than zero, then zSql is read up to the
williamr@4
  2735
** first zero terminator. If nByte is non-negative, then it is the maximum
williamr@4
  2736
** number of  bytes read from zSql.  When nByte is non-negative, the
williamr@4
  2737
** zSql string ends at either the first '\000' or '\u0000' character or
williamr@4
  2738
** the nByte-th byte, whichever comes first. If the caller knows
williamr@4
  2739
** that the supplied string is nul-terminated, then there is a small
williamr@4
  2740
** performance advantage to be gained by passing an nByte parameter that
williamr@4
  2741
** is equal to the number of bytes in the input string <i>including</i>
williamr@4
  2742
** the nul-terminator bytes.
williamr@4
  2743
**
williamr@4
  2744
** *pzTail is made to point to the first byte past the end of the
williamr@4
  2745
** first SQL statement in zSql.  These routines only compile the first
williamr@4
  2746
** statement in zSql, so *pzTail is left pointing to what remains
williamr@4
  2747
** uncompiled.
williamr@4
  2748
**
williamr@4
  2749
** *ppStmt is left pointing to a compiled [prepared statement] that can be
williamr@4
  2750
** executed using [sqlite3_step()].  If there is an error, *ppStmt is set
williamr@4
  2751
** to NULL.  If the input text contains no SQL (if the input is an empty
williamr@4
  2752
** string or a comment) then *ppStmt is set to NULL.
williamr@4
  2753
** {A13018} The calling procedure is responsible for deleting the compiled
williamr@4
  2754
** SQL statement using [sqlite3_finalize()] after it has finished with it.
williamr@4
  2755
**
williamr@4
  2756
** On success, [SQLITE_OK] is returned, otherwise an [error code] is returned.
williamr@4
  2757
**
williamr@4
  2758
** The sqlite3_prepare_v2() and sqlite3_prepare16_v2() interfaces are
williamr@4
  2759
** recommended for all new programs. The two older interfaces are retained
williamr@4
  2760
** for backwards compatibility, but their use is discouraged.
williamr@4
  2761
** In the "v2" interfaces, the prepared statement
williamr@4
  2762
** that is returned (the [sqlite3_stmt] object) contains a copy of the
williamr@4
  2763
** original SQL text. This causes the [sqlite3_step()] interface to
williamr@4
  2764
** behave a differently in two ways:
williamr@4
  2765
**
williamr@4
  2766
** <ol>
williamr@4
  2767
** <li>
williamr@4
  2768
** If the database schema changes, instead of returning [SQLITE_SCHEMA] as it
williamr@4
  2769
** always used to do, [sqlite3_step()] will automatically recompile the SQL
williamr@4
  2770
** statement and try to run it again.  If the schema has changed in
williamr@4
  2771
** a way that makes the statement no longer valid, [sqlite3_step()] will still
williamr@4
  2772
** return [SQLITE_SCHEMA].  But unlike the legacy behavior, [SQLITE_SCHEMA] is
williamr@4
  2773
** now a fatal error.  Calling [sqlite3_prepare_v2()] again will not make the
williamr@4
  2774
** error go away.  Note: use [sqlite3_errmsg()] to find the text
williamr@4
  2775
** of the parsing error that results in an [SQLITE_SCHEMA] return.
williamr@4
  2776
** </li>
williamr@4
  2777
**
williamr@4
  2778
** <li>
williamr@4
  2779
** When an error occurs, [sqlite3_step()] will return one of the detailed
williamr@4
  2780
** [error codes] or [extended error codes].  The legacy behavior was that
williamr@4
  2781
** [sqlite3_step()] would only return a generic [SQLITE_ERROR] result code
williamr@4
  2782
** and you would have to make a second call to [sqlite3_reset()] in order
williamr@4
  2783
** to find the underlying cause of the problem. With the "v2" prepare
williamr@4
  2784
** interfaces, the underlying reason for the error is returned immediately.
williamr@4
  2785
** </li>
williamr@4
  2786
** </ol>
williamr@4
  2787
**
williamr@4
  2788
** INVARIANTS:
williamr@4
  2789
**
williamr@4
  2790
** {H13011} The [sqlite3_prepare(db,zSql,...)] and
williamr@4
  2791
**          [sqlite3_prepare_v2(db,zSql,...)] interfaces interpret the
williamr@4
  2792
**          text in their zSql parameter as UTF-8.
williamr@4
  2793
**
williamr@4
  2794
** {H13012} The [sqlite3_prepare16(db,zSql,...)] and
williamr@4
  2795
**          [sqlite3_prepare16_v2(db,zSql,...)] interfaces interpret the
williamr@4
  2796
**          text in their zSql parameter as UTF-16 in the native byte order.
williamr@4
  2797
**
williamr@4
  2798
** {H13013} If the nByte argument to [sqlite3_prepare_v2(db,zSql,nByte,...)]
williamr@4
  2799
**          and its variants is less than zero, the SQL text is
williamr@4
  2800
**          read from zSql is read up to the first zero terminator.
williamr@4
  2801
**
williamr@4
  2802
** {H13014} If the nByte argument to [sqlite3_prepare_v2(db,zSql,nByte,...)]
williamr@4
  2803
**          and its variants is non-negative, then at most nBytes bytes of
williamr@4
  2804
**          SQL text is read from zSql.
williamr@4
  2805
**
williamr@4
  2806
** {H13015} In [sqlite3_prepare_v2(db,zSql,N,P,pzTail)] and its variants
williamr@4
  2807
**          if the zSql input text contains more than one SQL statement
williamr@4
  2808
**          and pzTail is not NULL, then *pzTail is made to point to the
williamr@4
  2809
**          first byte past the end of the first SQL statement in zSql.
williamr@4
  2810
**          <todo>What does *pzTail point to if there is one statement?</todo>
williamr@4
  2811
**
williamr@4
  2812
** {H13016} A successful call to [sqlite3_prepare_v2(db,zSql,N,ppStmt,...)]
williamr@4
  2813
**          or one of its variants writes into *ppStmt a pointer to a new
williamr@4
  2814
**          [prepared statement] or a pointer to NULL if zSql contains
williamr@4
  2815
**          nothing other than whitespace or comments.
williamr@4
  2816
**
williamr@4
  2817
** {H13019} The [sqlite3_prepare_v2()] interface and its variants return
williamr@4
  2818
**          [SQLITE_OK] or an appropriate [error code] upon failure.
williamr@4
  2819
**
williamr@4
  2820
** {H13021} Before [sqlite3_prepare(db,zSql,nByte,ppStmt,pzTail)] or its
williamr@4
  2821
**          variants returns an error (any value other than [SQLITE_OK]),
williamr@4
  2822
**          they first set *ppStmt to NULL.
williamr@4
  2823
*/
williamr@4
  2824
IMPORT_C int sqlite3_prepare(
williamr@4
  2825
  sqlite3 *db,            /* Database handle */
williamr@4
  2826
  const char *zSql,       /* SQL statement, UTF-8 encoded */
williamr@4
  2827
  int nByte,              /* Maximum length of zSql in bytes. */
williamr@4
  2828
  sqlite3_stmt **ppStmt,  /* OUT: Statement handle */
williamr@4
  2829
  const char **pzTail     /* OUT: Pointer to unused portion of zSql */
williamr@4
  2830
);
williamr@4
  2831
IMPORT_C int sqlite3_prepare_v2(
williamr@4
  2832
  sqlite3 *db,            /* Database handle */
williamr@4
  2833
  const char *zSql,       /* SQL statement, UTF-8 encoded */
williamr@4
  2834
  int nByte,              /* Maximum length of zSql in bytes. */
williamr@4
  2835
  sqlite3_stmt **ppStmt,  /* OUT: Statement handle */
williamr@4
  2836
  const char **pzTail     /* OUT: Pointer to unused portion of zSql */
williamr@4
  2837
);
williamr@4
  2838
IMPORT_C int sqlite3_prepare16(
williamr@4
  2839
  sqlite3 *db,            /* Database handle */
williamr@4
  2840
  const void *zSql,       /* SQL statement, UTF-16 encoded */
williamr@4
  2841
  int nByte,              /* Maximum length of zSql in bytes. */
williamr@4
  2842
  sqlite3_stmt **ppStmt,  /* OUT: Statement handle */
williamr@4
  2843
  const void **pzTail     /* OUT: Pointer to unused portion of zSql */
williamr@4
  2844
);
williamr@4
  2845
IMPORT_C int sqlite3_prepare16_v2(
williamr@4
  2846
  sqlite3 *db,            /* Database handle */
williamr@4
  2847
  const void *zSql,       /* SQL statement, UTF-16 encoded */
williamr@4
  2848
  int nByte,              /* Maximum length of zSql in bytes. */
williamr@4
  2849
  sqlite3_stmt **ppStmt,  /* OUT: Statement handle */
williamr@4
  2850
  const void **pzTail     /* OUT: Pointer to unused portion of zSql */
williamr@4
  2851
);
williamr@4
  2852
williamr@4
  2853
/*
williamr@4
  2854
** CAPI3REF: Retrieving Statement SQL {H13100} <H13000>
williamr@4
  2855
**
williamr@4
  2856
** This interface can be used to retrieve a saved copy of the original
williamr@4
  2857
** SQL text used to create a [prepared statement] if that statement was
williamr@4
  2858
** compiled using either [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()].
williamr@4
  2859
**
williamr@4
  2860
** INVARIANTS:
williamr@4
  2861
**
williamr@4
  2862
** {H13101} If the [prepared statement] passed as the argument to
williamr@4
  2863
**          [sqlite3_sql()] was compiled using either [sqlite3_prepare_v2()] or
williamr@4
  2864
**          [sqlite3_prepare16_v2()], then [sqlite3_sql()] returns
williamr@4
  2865
**          a pointer to a zero-terminated string containing a UTF-8 rendering
williamr@4
  2866
**          of the original SQL statement.
williamr@4
  2867
**
williamr@4
  2868
** {H13102} If the [prepared statement] passed as the argument to
williamr@4
  2869
**          [sqlite3_sql()] was compiled using either [sqlite3_prepare()] or
williamr@4
  2870
**          [sqlite3_prepare16()], then [sqlite3_sql()] returns a NULL pointer.
williamr@4
  2871
**
williamr@4
  2872
** {H13103} The string returned by [sqlite3_sql(S)] is valid until the
williamr@4
  2873
**          [prepared statement] S is deleted using [sqlite3_finalize(S)].
williamr@4
  2874
*/
williamr@4
  2875
IMPORT_C const char *sqlite3_sql(sqlite3_stmt *pStmt);
williamr@4
  2876
williamr@4
  2877
/*
williamr@4
  2878
** CAPI3REF: Dynamically Typed Value Object {H15000} <S20200>
williamr@4
  2879
** KEYWORDS: {protected sqlite3_value} {unprotected sqlite3_value}
williamr@4
  2880
**
williamr@4
  2881
** SQLite uses the sqlite3_value object to represent all values
williamr@4
  2882
** that can be stored in a database table. SQLite uses dynamic typing
williamr@4
  2883
** for the values it stores. Values stored in sqlite3_value objects
williamr@4
  2884
** can be integers, floating point values, strings, BLOBs, or NULL.
williamr@4
  2885
**
williamr@4
  2886
** An sqlite3_value object may be either "protected" or "unprotected".
williamr@4
  2887
** Some interfaces require a protected sqlite3_value.  Other interfaces
williamr@4
  2888
** will accept either a protected or an unprotected sqlite3_value.
williamr@4
  2889
** Every interface that accepts sqlite3_value arguments specifies
williamr@4
  2890
** whether or not it requires a protected sqlite3_value.
williamr@4
  2891
**
williamr@4
  2892
** The terms "protected" and "unprotected" refer to whether or not
williamr@4
  2893
** a mutex is held.  A internal mutex is held for a protected
williamr@4
  2894
** sqlite3_value object but no mutex is held for an unprotected
williamr@4
  2895
** sqlite3_value object.  If SQLite is compiled to be single-threaded
williamr@4
  2896
** (with [SQLITE_THREADSAFE=0] and with [sqlite3_threadsafe()] returning 0)
williamr@4
  2897
** or if SQLite is run in one of reduced mutex modes 
williamr@4
  2898
** [SQLITE_CONFIG_SINGLETHREAD] or [SQLITE_CONFIG_MULTITHREAD]
williamr@4
  2899
** then there is no distinction between protected and unprotected
williamr@4
  2900
** sqlite3_value objects and they can be used interchangeably.  However,
williamr@4
  2901
** for maximum code portability it is recommended that applications
williamr@4
  2902
** still make the distinction between between protected and unprotected
williamr@4
  2903
** sqlite3_value objects even when not strictly required.
williamr@4
  2904
**
williamr@4
  2905
** The sqlite3_value objects that are passed as parameters into the
williamr@4
  2906
** implementation of [application-defined SQL functions] are protected.
williamr@4
  2907
** The sqlite3_value object returned by
williamr@4
  2908
** [sqlite3_column_value()] is unprotected.
williamr@4
  2909
** Unprotected sqlite3_value objects may only be used with
williamr@4
  2910
** [sqlite3_result_value()] and [sqlite3_bind_value()].
williamr@4
  2911
** The [sqlite3_value_blob | sqlite3_value_type()] family of
williamr@4
  2912
** interfaces require protected sqlite3_value objects.
williamr@4
  2913
*/
williamr@4
  2914
typedef struct Mem sqlite3_value;
williamr@4
  2915
williamr@4
  2916
/*
williamr@4
  2917
** CAPI3REF: SQL Function Context Object {H16001} <S20200>
williamr@4
  2918
**
williamr@4
  2919
** The context in which an SQL function executes is stored in an
williamr@4
  2920
** sqlite3_context object.  A pointer to an sqlite3_context object
williamr@4
  2921
** is always first parameter to [application-defined SQL functions].
williamr@4
  2922
** The application-defined SQL function implementation will pass this
williamr@4
  2923
** pointer through into calls to [sqlite3_result_int | sqlite3_result()],
williamr@4
  2924
** [sqlite3_aggregate_context()], [sqlite3_user_data()],
williamr@4
  2925
** [sqlite3_context_db_handle()], [sqlite3_get_auxdata()],
williamr@4
  2926
** and/or [sqlite3_set_auxdata()].
williamr@4
  2927
*/
williamr@4
  2928
typedef struct sqlite3_context sqlite3_context;
williamr@4
  2929
williamr@4
  2930
/*
williamr@4
  2931
** CAPI3REF: Binding Values To Prepared Statements {H13500} <S70300>
williamr@4
  2932
** KEYWORDS: {host parameter} {host parameters} {host parameter name}
williamr@4
  2933
** KEYWORDS: {SQL parameter} {SQL parameters} {parameter binding}
williamr@4
  2934
**
williamr@4
  2935
** In the SQL strings input to [sqlite3_prepare_v2()] and its variants,
williamr@4
  2936
** literals may be replaced by a parameter in one of these forms:
williamr@4
  2937
**
williamr@4
  2938
** <ul>
williamr@4
  2939
** <li>  ?
williamr@4
  2940
** <li>  ?NNN
williamr@4
  2941
** <li>  :VVV
williamr@4
  2942
** <li>  @VVV
williamr@4
  2943
** <li>  $VVV
williamr@4
  2944
** </ul>
williamr@4
  2945
**
williamr@4
  2946
** In the parameter forms shown above NNN is an integer literal,
williamr@4
  2947
** and VVV is an alpha-numeric parameter name. The values of these
williamr@4
  2948
** parameters (also called "host parameter names" or "SQL parameters")
williamr@4
  2949
** can be set using the sqlite3_bind_*() routines defined here.
williamr@4
  2950
**
williamr@4
  2951
** The first argument to the sqlite3_bind_*() routines is always
williamr@4
  2952
** a pointer to the [sqlite3_stmt] object returned from
williamr@4
  2953
** [sqlite3_prepare_v2()] or its variants.
williamr@4
  2954
**
williamr@4
  2955
** The second argument is the index of the SQL parameter to be set.
williamr@4
  2956
** The leftmost SQL parameter has an index of 1.  When the same named
williamr@4
  2957
** SQL parameter is used more than once, second and subsequent
williamr@4
  2958
** occurrences have the same index as the first occurrence.
williamr@4
  2959
** The index for named parameters can be looked up using the
williamr@4
  2960
** [sqlite3_bind_parameter_index()] API if desired.  The index
williamr@4
  2961
** for "?NNN" parameters is the value of NNN.
williamr@4
  2962
** The NNN value must be between 1 and the [sqlite3_limit()]
williamr@4
  2963
** parameter [SQLITE_LIMIT_VARIABLE_NUMBER] (default value: 999).
williamr@4
  2964
**
williamr@4
  2965
** The third argument is the value to bind to the parameter.
williamr@4
  2966
**
williamr@4
  2967
** In those routines that have a fourth argument, its value is the
williamr@4
  2968
** number of bytes in the parameter.  To be clear: the value is the
williamr@4
  2969
** number of <u>bytes</u> in the value, not the number of characters.
williamr@4
  2970
** If the fourth parameter is negative, the length of the string is
williamr@4
  2971
** the number of bytes up to the first zero terminator.
williamr@4
  2972
**
williamr@4
  2973
** The fifth argument to sqlite3_bind_blob(), sqlite3_bind_text(), and
williamr@4
  2974
** sqlite3_bind_text16() is a destructor used to dispose of the BLOB or
williamr@4
  2975
** string after SQLite has finished with it. If the fifth argument is
williamr@4
  2976
** the special value [SQLITE_STATIC], then SQLite assumes that the
williamr@4
  2977
** information is in static, unmanaged space and does not need to be freed.
williamr@4
  2978
** If the fifth argument has the value [SQLITE_TRANSIENT], then
williamr@4
  2979
** SQLite makes its own private copy of the data immediately, before
williamr@4
  2980
** the sqlite3_bind_*() routine returns.
williamr@4
  2981
**
williamr@4
  2982
** The sqlite3_bind_zeroblob() routine binds a BLOB of length N that
williamr@4
  2983
** is filled with zeroes.  A zeroblob uses a fixed amount of memory
williamr@4
  2984
** (just an integer to hold its size) while it is being processed.
williamr@4
  2985
** Zeroblobs are intended to serve as placeholders for BLOBs whose
williamr@4
  2986
** content is later written using
williamr@4
  2987
** [sqlite3_blob_open | incremental BLOB I/O] routines.
williamr@4
  2988
** A negative value for the zeroblob results in a zero-length BLOB.
williamr@4
  2989
**
williamr@4
  2990
** The sqlite3_bind_*() routines must be called after
williamr@4
  2991
** [sqlite3_prepare_v2()] (and its variants) or [sqlite3_reset()] and
williamr@4
  2992
** before [sqlite3_step()].
williamr@4
  2993
** Bindings are not cleared by the [sqlite3_reset()] routine.
williamr@4
  2994
** Unbound parameters are interpreted as NULL.
williamr@4
  2995
**
williamr@4
  2996
** These routines return [SQLITE_OK] on success or an error code if
williamr@4
  2997
** anything goes wrong.  [SQLITE_RANGE] is returned if the parameter
williamr@4
  2998
** index is out of range.  [SQLITE_NOMEM] is returned if malloc() fails.
williamr@4
  2999
** [SQLITE_MISUSE] might be returned if these routines are called on a
williamr@4
  3000
** virtual machine that is the wrong state or which has already been finalized.
williamr@4
  3001
** Detection of misuse is unreliable.  Applications should not depend
williamr@4
  3002
** on SQLITE_MISUSE returns.  SQLITE_MISUSE is intended to indicate a
williamr@4
  3003
** a logic error in the application.  Future versions of SQLite might
williamr@4
  3004
** panic rather than return SQLITE_MISUSE.
williamr@4
  3005
**
williamr@4
  3006
** See also: [sqlite3_bind_parameter_count()],
williamr@4
  3007
** [sqlite3_bind_parameter_name()], and [sqlite3_bind_parameter_index()].
williamr@4
  3008
**
williamr@4
  3009
** INVARIANTS:
williamr@4
  3010
**
williamr@4
  3011
** {H13506} The [SQL statement compiler] recognizes tokens of the forms
williamr@4
  3012
**          "?", "?NNN", "$VVV", ":VVV", and "@VVV" as SQL parameters,
williamr@4
  3013
**          where NNN is any sequence of one or more digits
williamr@4
  3014
**          and where VVV is any sequence of one or more alphanumeric
williamr@4
  3015
**          characters or "::" optionally followed by a string containing
williamr@4
  3016
**          no spaces and contained within parentheses.
williamr@4
  3017
**
williamr@4
  3018
** {H13509} The initial value of an SQL parameter is NULL.
williamr@4
  3019
**
williamr@4
  3020
** {H13512} The index of an "?" SQL parameter is one larger than the
williamr@4
  3021
**          largest index of SQL parameter to the left, or 1 if
williamr@4
  3022
**          the "?" is the leftmost SQL parameter.
williamr@4
  3023
**
williamr@4
  3024
** {H13515} The index of an "?NNN" SQL parameter is the integer NNN.
williamr@4
  3025
**
williamr@4
  3026
** {H13518} The index of an ":VVV", "$VVV", or "@VVV" SQL parameter is
williamr@4
  3027
**          the same as the index of leftmost occurrences of the same
williamr@4
  3028
**          parameter, or one more than the largest index over all
williamr@4
  3029
**          parameters to the left if this is the first occurrence
williamr@4
  3030
**          of this parameter, or 1 if this is the leftmost parameter.
williamr@4
  3031
**
williamr@4
  3032
** {H13521} The [SQL statement compiler] fails with an [SQLITE_RANGE]
williamr@4
  3033
**          error if the index of an SQL parameter is less than 1
williamr@4
  3034
**          or greater than the compile-time SQLITE_MAX_VARIABLE_NUMBER
williamr@4
  3035
**          parameter.
williamr@4
  3036
**
williamr@4
  3037
** {H13524} Calls to [sqlite3_bind_text | sqlite3_bind(S,N,V,...)]
williamr@4
  3038
**          associate the value V with all SQL parameters having an
williamr@4
  3039
**          index of N in the [prepared statement] S.
williamr@4
  3040
**
williamr@4
  3041
** {H13527} Calls to [sqlite3_bind_text | sqlite3_bind(S,N,...)]
williamr@4
  3042
**          override prior calls with the same values of S and N.
williamr@4
  3043
**
williamr@4
  3044
** {H13530} Bindings established by [sqlite3_bind_text | sqlite3_bind(S,...)]
williamr@4
  3045
**          persist across calls to [sqlite3_reset(S)].
williamr@4
  3046
**
williamr@4
  3047
** {H13533} In calls to [sqlite3_bind_blob(S,N,V,L,D)],
williamr@4
  3048
**          [sqlite3_bind_text(S,N,V,L,D)], or
williamr@4
  3049
**          [sqlite3_bind_text16(S,N,V,L,D)] SQLite binds the first L
williamr@4
  3050
**          bytes of the BLOB or string pointed to by V, when L
williamr@4
  3051
**          is non-negative.
williamr@4
  3052
**
williamr@4
  3053
** {H13536} In calls to [sqlite3_bind_text(S,N,V,L,D)] or
williamr@4
  3054
**          [sqlite3_bind_text16(S,N,V,L,D)] SQLite binds characters
williamr@4
  3055
**          from V through the first zero character when L is negative.
williamr@4
  3056
**
williamr@4
  3057
** {H13539} In calls to [sqlite3_bind_blob(S,N,V,L,D)],
williamr@4
  3058
**          [sqlite3_bind_text(S,N,V,L,D)], or
williamr@4
  3059
**          [sqlite3_bind_text16(S,N,V,L,D)] when D is the special
williamr@4
  3060
**          constant [SQLITE_STATIC], SQLite assumes that the value V
williamr@4
  3061
**          is held in static unmanaged space that will not change
williamr@4
  3062
**          during the lifetime of the binding.
williamr@4
  3063
**
williamr@4
  3064
** {H13542} In calls to [sqlite3_bind_blob(S,N,V,L,D)],
williamr@4
  3065
**          [sqlite3_bind_text(S,N,V,L,D)], or
williamr@4
  3066
**          [sqlite3_bind_text16(S,N,V,L,D)] when D is the special
williamr@4
  3067
**          constant [SQLITE_TRANSIENT], the routine makes a
williamr@4
  3068
**          private copy of the value V before it returns.
williamr@4
  3069
**
williamr@4
  3070
** {H13545} In calls to [sqlite3_bind_blob(S,N,V,L,D)],
williamr@4
  3071
**          [sqlite3_bind_text(S,N,V,L,D)], or
williamr@4
  3072
**          [sqlite3_bind_text16(S,N,V,L,D)] when D is a pointer to
williamr@4
  3073
**          a function, SQLite invokes that function to destroy the
williamr@4
  3074
**          value V after it has finished using the value V.
williamr@4
  3075
**
williamr@4
  3076
** {H13548} In calls to [sqlite3_bind_zeroblob(S,N,V,L)] the value bound
williamr@4
  3077
**          is a BLOB of L bytes, or a zero-length BLOB if L is negative.
williamr@4
  3078
**
williamr@4
  3079
** {H13551} In calls to [sqlite3_bind_value(S,N,V)] the V argument may
williamr@4
  3080
**          be either a [protected sqlite3_value] object or an
williamr@4
  3081
**          [unprotected sqlite3_value] object.
williamr@4
  3082
*/
williamr@4
  3083
IMPORT_C int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*));
williamr@4
  3084
IMPORT_C int sqlite3_bind_double(sqlite3_stmt*, int, double);
williamr@4
  3085
IMPORT_C int sqlite3_bind_int(sqlite3_stmt*, int, int);
williamr@4
  3086
IMPORT_C int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite3_int64);
williamr@4
  3087
IMPORT_C int sqlite3_bind_null(sqlite3_stmt*, int);
williamr@4
  3088
IMPORT_C int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*));
williamr@4
  3089
IMPORT_C int sqlite3_bind_text16(sqlite3_stmt*, int, const void*, int, void(*)(void*));
williamr@4
  3090
IMPORT_C int sqlite3_bind_value(sqlite3_stmt*, int, const sqlite3_value*);
williamr@4
  3091
IMPORT_C int sqlite3_bind_zeroblob(sqlite3_stmt*, int, int n);
williamr@4
  3092
williamr@4
  3093
/*
williamr@4
  3094
** CAPI3REF: Number Of SQL Parameters {H13600} <S70300>
williamr@4
  3095
**
williamr@4
  3096
** This routine can be used to find the number of [SQL parameters]
williamr@4
  3097
** in a [prepared statement].  SQL parameters are tokens of the
williamr@4
  3098
** form "?", "?NNN", ":AAA", "$AAA", or "@AAA" that serve as
williamr@4
  3099
** placeholders for values that are [sqlite3_bind_blob | bound]
williamr@4
  3100
** to the parameters at a later time.
williamr@4
  3101
**
williamr@4
  3102
** This routine actually returns the index of the largest (rightmost)
williamr@4
  3103
** parameter. For all forms except ?NNN, this will correspond to the
williamr@4
  3104
** number of unique parameters.  If parameters of the ?NNN are used,
williamr@4
  3105
** there may be gaps in the list.
williamr@4
  3106
**
williamr@4
  3107
** See also: [sqlite3_bind_blob|sqlite3_bind()],
williamr@4
  3108
** [sqlite3_bind_parameter_name()], and
williamr@4
  3109
** [sqlite3_bind_parameter_index()].
williamr@4
  3110
**
williamr@4
  3111
** INVARIANTS:
williamr@4
  3112
**
williamr@4
  3113
** {H13601} The [sqlite3_bind_parameter_count(S)] interface returns
williamr@4
  3114
**          the largest index of all SQL parameters in the
williamr@4
  3115
**          [prepared statement] S, or 0 if S contains no SQL parameters.
williamr@4
  3116
*/
williamr@4
  3117
IMPORT_C int sqlite3_bind_parameter_count(sqlite3_stmt*);
williamr@4
  3118
williamr@4
  3119
/*
williamr@4
  3120
** CAPI3REF: Name Of A Host Parameter {H13620} <S70300>
williamr@4
  3121
**
williamr@4
  3122
** This routine returns a pointer to the name of the n-th
williamr@4
  3123
** [SQL parameter] in a [prepared statement].
williamr@4
  3124
** SQL parameters of the form "?NNN" or ":AAA" or "@AAA" or "$AAA"
williamr@4
  3125
** have a name which is the string "?NNN" or ":AAA" or "@AAA" or "$AAA"
williamr@4
  3126
** respectively.
williamr@4
  3127
** In other words, the initial ":" or "$" or "@" or "?"
williamr@4
  3128
** is included as part of the name.
williamr@4
  3129
** Parameters of the form "?" without a following integer have no name
williamr@4
  3130
** and are also referred to as "anonymous parameters".
williamr@4
  3131
**
williamr@4
  3132
** The first host parameter has an index of 1, not 0.
williamr@4
  3133
**
williamr@4
  3134
** If the value n is out of range or if the n-th parameter is
williamr@4
  3135
** nameless, then NULL is returned.  The returned string is
williamr@4
  3136
** always in UTF-8 encoding even if the named parameter was
williamr@4
  3137
** originally specified as UTF-16 in [sqlite3_prepare16()] or
williamr@4
  3138
** [sqlite3_prepare16_v2()].
williamr@4
  3139
**
williamr@4
  3140
** See also: [sqlite3_bind_blob|sqlite3_bind()],
williamr@4
  3141
** [sqlite3_bind_parameter_count()], and
williamr@4
  3142
** [sqlite3_bind_parameter_index()].
williamr@4
  3143
**
williamr@4
  3144
** INVARIANTS:
williamr@4
  3145
**
williamr@4
  3146
** {H13621} The [sqlite3_bind_parameter_name(S,N)] interface returns
williamr@4
  3147
**          a UTF-8 rendering of the name of the SQL parameter in
williamr@4
  3148
**          the [prepared statement] S having index N, or
williamr@4
  3149
**          NULL if there is no SQL parameter with index N or if the
williamr@4
  3150
**          parameter with index N is an anonymous parameter "?".
williamr@4
  3151
*/
williamr@4
  3152
IMPORT_C const char *sqlite3_bind_parameter_name(sqlite3_stmt*, int);
williamr@4
  3153
williamr@4
  3154
/*
williamr@4
  3155
** CAPI3REF: Index Of A Parameter With A Given Name {H13640} <S70300>
williamr@4
  3156
**
williamr@4
  3157
** Return the index of an SQL parameter given its name.  The
williamr@4
  3158
** index value returned is suitable for use as the second
williamr@4
  3159
** parameter to [sqlite3_bind_blob|sqlite3_bind()].  A zero
williamr@4
  3160
** is returned if no matching parameter is found.  The parameter
williamr@4
  3161
** name must be given in UTF-8 even if the original statement
williamr@4
  3162
** was prepared from UTF-16 text using [sqlite3_prepare16_v2()].
williamr@4
  3163
**
williamr@4
  3164
** See also: [sqlite3_bind_blob|sqlite3_bind()],
williamr@4
  3165
** [sqlite3_bind_parameter_count()], and
williamr@4
  3166
** [sqlite3_bind_parameter_index()].
williamr@4
  3167
**
williamr@4
  3168
** INVARIANTS:
williamr@4
  3169
**
williamr@4
  3170
** {H13641} The [sqlite3_bind_parameter_index(S,N)] interface returns
williamr@4
  3171
**          the index of SQL parameter in the [prepared statement]
williamr@4
  3172
**          S whose name matches the UTF-8 string N, or 0 if there is
williamr@4
  3173
**          no match.
williamr@4
  3174
*/
williamr@4
  3175
IMPORT_C int sqlite3_bind_parameter_index(sqlite3_stmt*, const char *zName);
williamr@4
  3176
williamr@4
  3177
/*
williamr@4
  3178
** CAPI3REF: Reset All Bindings On A Prepared Statement {H13660} <S70300>
williamr@4
  3179
**
williamr@4
  3180
** Contrary to the intuition of many, [sqlite3_reset()] does not reset
williamr@4
  3181
** the [sqlite3_bind_blob | bindings] on a [prepared statement].
williamr@4
  3182
** Use this routine to reset all host parameters to NULL.
williamr@4
  3183
**
williamr@4
  3184
** INVARIANTS:
williamr@4
  3185
**
williamr@4
  3186
** {H13661} The [sqlite3_clear_bindings(S)] interface resets all SQL
williamr@4
  3187
**          parameter bindings in the [prepared statement] S back to NULL.
williamr@4
  3188
*/
williamr@4
  3189
IMPORT_C int sqlite3_clear_bindings(sqlite3_stmt*);
williamr@4
  3190
williamr@4
  3191
/*
williamr@4
  3192
** CAPI3REF: Number Of Columns In A Result Set {H13710} <S10700>
williamr@4
  3193
**
williamr@4
  3194
** Return the number of columns in the result set returned by the
williamr@4
  3195
** [prepared statement]. This routine returns 0 if pStmt is an SQL
williamr@4
  3196
** statement that does not return data (for example an [UPDATE]).
williamr@4
  3197
**
williamr@4
  3198
** INVARIANTS:
williamr@4
  3199
**
williamr@4
  3200
** {H13711} The [sqlite3_column_count(S)] interface returns the number of
williamr@4
  3201
**          columns in the result set generated by the [prepared statement] S,
williamr@4
  3202
**          or 0 if S does not generate a result set.
williamr@4
  3203
*/
williamr@4
  3204
IMPORT_C int sqlite3_column_count(sqlite3_stmt *pStmt);
williamr@4
  3205
williamr@4
  3206
/*
williamr@4
  3207
** CAPI3REF: Column Names In A Result Set {H13720} <S10700>
williamr@4
  3208
**
williamr@4
  3209
** These routines return the name assigned to a particular column
williamr@4
  3210
** in the result set of a [SELECT] statement.  The sqlite3_column_name()
williamr@4
  3211
** interface returns a pointer to a zero-terminated UTF-8 string
williamr@4
  3212
** and sqlite3_column_name16() returns a pointer to a zero-terminated
williamr@4
  3213
** UTF-16 string.  The first parameter is the [prepared statement]
williamr@4
  3214
** that implements the [SELECT] statement. The second parameter is the
williamr@4
  3215
** column number.  The leftmost column is number 0.
williamr@4
  3216
**
williamr@4
  3217
** The returned string pointer is valid until either the [prepared statement]
williamr@4
  3218
** is destroyed by [sqlite3_finalize()] or until the next call to
williamr@4
  3219
** sqlite3_column_name() or sqlite3_column_name16() on the same column.
williamr@4
  3220
**
williamr@4
  3221
** If sqlite3_malloc() fails during the processing of either routine
williamr@4
  3222
** (for example during a conversion from UTF-8 to UTF-16) then a
williamr@4
  3223
** NULL pointer is returned.
williamr@4
  3224
**
williamr@4
  3225
** The name of a result column is the value of the "AS" clause for
williamr@4
  3226
** that column, if there is an AS clause.  If there is no AS clause
williamr@4
  3227
** then the name of the column is unspecified and may change from
williamr@4
  3228
** one release of SQLite to the next.
williamr@4
  3229
**
williamr@4
  3230
** INVARIANTS:
williamr@4
  3231
**
williamr@4
  3232
** {H13721} A successful invocation of the [sqlite3_column_name(S,N)]
williamr@4
  3233
**          interface returns the name of the Nth column (where 0 is
williamr@4
  3234
**          the leftmost column) for the result set of the
williamr@4
  3235
**          [prepared statement] S as a zero-terminated UTF-8 string.
williamr@4
  3236
**
williamr@4
  3237
** {H13723} A successful invocation of the [sqlite3_column_name16(S,N)]
williamr@4
  3238
**          interface returns the name of the Nth column (where 0 is
williamr@4
  3239
**          the leftmost column) for the result set of the
williamr@4
  3240
**          [prepared statement] S as a zero-terminated UTF-16 string
williamr@4
  3241
**          in the native byte order.
williamr@4
  3242
**
williamr@4
  3243
** {H13724} The [sqlite3_column_name()] and [sqlite3_column_name16()]
williamr@4
  3244
**          interfaces return a NULL pointer if they are unable to
williamr@4
  3245
**          allocate memory to hold their normal return strings.
williamr@4
  3246
**
williamr@4
  3247
** {H13725} If the N parameter to [sqlite3_column_name(S,N)] or
williamr@4
  3248
**          [sqlite3_column_name16(S,N)] is out of range, then the
williamr@4
  3249
**          interfaces return a NULL pointer.
williamr@4
  3250
**
williamr@4
  3251
** {H13726} The strings returned by [sqlite3_column_name(S,N)] and
williamr@4
  3252
**          [sqlite3_column_name16(S,N)] are valid until the next
williamr@4
  3253
**          call to either routine with the same S and N parameters
williamr@4
  3254
**          or until [sqlite3_finalize(S)] is called.
williamr@4
  3255
**
williamr@4
  3256
** {H13727} When a result column of a [SELECT] statement contains
williamr@4
  3257
**          an AS clause, the name of that column is the identifier
williamr@4
  3258
**          to the right of the AS keyword.
williamr@4
  3259
*/
williamr@4
  3260
IMPORT_C const char *sqlite3_column_name(sqlite3_stmt*, int N);
williamr@4
  3261
IMPORT_C const void *sqlite3_column_name16(sqlite3_stmt*, int N);
williamr@4
  3262
williamr@4
  3263
/*
williamr@4
  3264
** CAPI3REF: Source Of Data In A Query Result {H13740} <S10700>
williamr@4
  3265
**
williamr@4
  3266
** These routines provide a means to determine what column of what
williamr@4
  3267
** table in which database a result of a [SELECT] statement comes from.
williamr@4
  3268
** The name of the database or table or column can be returned as
williamr@4
  3269
** either a UTF-8 or UTF-16 string.  The _database_ routines return
williamr@4
  3270
** the database name, the _table_ routines return the table name, and
williamr@4
  3271
** the origin_ routines return the column name.
williamr@4
  3272
** The returned string is valid until the [prepared statement] is destroyed
williamr@4
  3273
** using [sqlite3_finalize()] or until the same information is requested
williamr@4
  3274
** again in a different encoding.
williamr@4
  3275
**
williamr@4
  3276
** The names returned are the original un-aliased names of the
williamr@4
  3277
** database, table, and column.
williamr@4
  3278
**
williamr@4
  3279
** The first argument to the following calls is a [prepared statement].
williamr@4
  3280
** These functions return information about the Nth column returned by
williamr@4
  3281
** the statement, where N is the second function argument.
williamr@4
  3282
**
williamr@4
  3283
** If the Nth column returned by the statement is an expression or
williamr@4
  3284
** subquery and is not a column value, then all of these functions return
williamr@4
  3285
** NULL.  These routine might also return NULL if a memory allocation error
williamr@4
  3286
** occurs.  Otherwise, they return the name of the attached database, table
williamr@4
  3287
** and column that query result column was extracted from.
williamr@4
  3288
**
williamr@4
  3289
** As with all other SQLite APIs, those postfixed with "16" return
williamr@4
  3290
** UTF-16 encoded strings, the other functions return UTF-8. {END}
williamr@4
  3291
**
williamr@4
  3292
** These APIs are only available if the library was compiled with the
williamr@4
  3293
** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol defined.
williamr@4
  3294
**
williamr@4
  3295
** {A13751}
williamr@4
  3296
** If two or more threads call one or more of these routines against the same
williamr@4
  3297
** prepared statement and column at the same time then the results are
williamr@4
  3298
** undefined.
williamr@4
  3299
**
williamr@4
  3300
** INVARIANTS:
williamr@4
  3301
**
williamr@4
  3302
** {H13741} The [sqlite3_column_database_name(S,N)] interface returns either
williamr@4
  3303
**          the UTF-8 zero-terminated name of the database from which the
williamr@4
  3304
**          Nth result column of the [prepared statement] S is extracted,
williamr@4
  3305
**          or NULL if the Nth column of S is a general expression
williamr@4
  3306
**          or if unable to allocate memory to store the name.
williamr@4
  3307
**
williamr@4
  3308
** {H13742} The [sqlite3_column_database_name16(S,N)] interface returns either
williamr@4
  3309
**          the UTF-16 native byte order zero-terminated name of the database
williamr@4
  3310
**          from which the Nth result column of the [prepared statement] S is
williamr@4
  3311
**          extracted, or NULL if the Nth column of S is a general expression
williamr@4
  3312
**          or if unable to allocate memory to store the name.
williamr@4
  3313
**
williamr@4
  3314
** {H13743} The [sqlite3_column_table_name(S,N)] interface returns either
williamr@4
  3315
**          the UTF-8 zero-terminated name of the table from which the
williamr@4
  3316
**          Nth result column of the [prepared statement] S is extracted,
williamr@4
  3317
**          or NULL if the Nth column of S is a general expression
williamr@4
  3318
**          or if unable to allocate memory to store the name.
williamr@4
  3319
**
williamr@4
  3320
** {H13744} The [sqlite3_column_table_name16(S,N)] interface returns either
williamr@4
  3321
**          the UTF-16 native byte order zero-terminated name of the table
williamr@4
  3322
**          from which the Nth result column of the [prepared statement] S is
williamr@4
  3323
**          extracted, or NULL if the Nth column of S is a general expression
williamr@4
  3324
**          or if unable to allocate memory to store the name.
williamr@4
  3325
**
williamr@4
  3326
** {H13745} The [sqlite3_column_origin_name(S,N)] interface returns either
williamr@4
  3327
**          the UTF-8 zero-terminated name of the table column from which the
williamr@4
  3328
**          Nth result column of the [prepared statement] S is extracted,
williamr@4
  3329
**          or NULL if the Nth column of S is a general expression
williamr@4
  3330
**          or if unable to allocate memory to store the name.
williamr@4
  3331
**
williamr@4
  3332
** {H13746} The [sqlite3_column_origin_name16(S,N)] interface returns either
williamr@4
  3333
**          the UTF-16 native byte order zero-terminated name of the table
williamr@4
  3334
**          column from which the Nth result column of the
williamr@4
  3335
**          [prepared statement] S is extracted, or NULL if the Nth column
williamr@4
  3336
**          of S is a general expression or if unable to allocate memory
williamr@4
  3337
**          to store the name.
williamr@4
  3338
**
williamr@4
  3339
** {H13748} The return values from
williamr@4
  3340
**          [sqlite3_column_database_name | column metadata interfaces]
williamr@4
  3341
**          are valid for the lifetime of the [prepared statement]
williamr@4
  3342
**          or until the encoding is changed by another metadata
williamr@4
  3343
**          interface call for the same prepared statement and column.
williamr@4
  3344
**
williamr@4
  3345
** ASSUMPTIONS:
williamr@4
  3346
**
williamr@4
  3347
** {A13751} If two or more threads call one or more
williamr@4
  3348
**          [sqlite3_column_database_name | column metadata interfaces]
williamr@4
  3349
**          for the same [prepared statement] and result column
williamr@4
  3350
**          at the same time then the results are undefined.
williamr@4
  3351
*/
williamr@4
  3352
IMPORT_C const char *sqlite3_column_database_name(sqlite3_stmt*,int);
williamr@4
  3353
IMPORT_C const void *sqlite3_column_database_name16(sqlite3_stmt*,int);
williamr@4
  3354
IMPORT_C const char *sqlite3_column_table_name(sqlite3_stmt*,int);
williamr@4
  3355
IMPORT_C const void *sqlite3_column_table_name16(sqlite3_stmt*,int);
williamr@4
  3356
IMPORT_C const char *sqlite3_column_origin_name(sqlite3_stmt*,int);
williamr@4
  3357
IMPORT_C const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
williamr@4
  3358
williamr@4
  3359
/*
williamr@4
  3360
** CAPI3REF: Declared Datatype Of A Query Result {H13760} <S10700>
williamr@4
  3361
**
williamr@4
  3362
** The first parameter is a [prepared statement].
williamr@4
  3363
** If this statement is a [SELECT] statement and the Nth column of the
williamr@4
  3364
** returned result set of that [SELECT] is a table column (not an
williamr@4
  3365
** expression or subquery) then the declared type of the table
williamr@4
  3366
** column is returned.  If the Nth column of the result set is an
williamr@4
  3367
** expression or subquery, then a NULL pointer is returned.
williamr@4
  3368
** The returned string is always UTF-8 encoded. {END}
williamr@4
  3369
**
williamr@4
  3370
** For example, given the database schema:
williamr@4
  3371
**
williamr@4
  3372
** CREATE TABLE t1(c1 VARIANT);
williamr@4
  3373
**
williamr@4
  3374
** and the following statement to be compiled:
williamr@4
  3375
**
williamr@4
  3376
** SELECT c1 + 1, c1 FROM t1;
williamr@4
  3377
**
williamr@4
  3378
** this routine would return the string "VARIANT" for the second result
williamr@4
  3379
** column (i==1), and a NULL pointer for the first result column (i==0).
williamr@4
  3380
**
williamr@4
  3381
** SQLite uses dynamic run-time typing.  So just because a column
williamr@4
  3382
** is declared to contain a particular type does not mean that the
williamr@4
  3383
** data stored in that column is of the declared type.  SQLite is
williamr@4
  3384
** strongly typed, but the typing is dynamic not static.  Type
williamr@4
  3385
** is associated with individual values, not with the containers
williamr@4
  3386
** used to hold those values.
williamr@4
  3387
**
williamr@4
  3388
** INVARIANTS:
williamr@4
  3389
**
williamr@4
  3390
** {H13761}  A successful call to [sqlite3_column_decltype(S,N)] returns a
williamr@4
  3391
**           zero-terminated UTF-8 string containing the declared datatype
williamr@4
  3392
**           of the table column that appears as the Nth column (numbered
williamr@4
  3393
**           from 0) of the result set to the [prepared statement] S.
williamr@4
  3394
**
williamr@4
  3395
** {H13762}  A successful call to [sqlite3_column_decltype16(S,N)]
williamr@4
  3396
**           returns a zero-terminated UTF-16 native byte order string
williamr@4
  3397
**           containing the declared datatype of the table column that appears
williamr@4
  3398
**           as the Nth column (numbered from 0) of the result set to the
williamr@4
  3399
**           [prepared statement] S.
williamr@4
  3400
**
williamr@4
  3401
** {H13763}  If N is less than 0 or N is greater than or equal to
williamr@4
  3402
**           the number of columns in the [prepared statement] S,
williamr@4
  3403
**           or if the Nth column of S is an expression or subquery rather
williamr@4
  3404
**           than a table column, or if a memory allocation failure
williamr@4
  3405
**           occurs during encoding conversions, then
williamr@4
  3406
**           calls to [sqlite3_column_decltype(S,N)] or
williamr@4
  3407
**           [sqlite3_column_decltype16(S,N)] return NULL.
williamr@4
  3408
*/
williamr@4
  3409
IMPORT_C const char *sqlite3_column_decltype(sqlite3_stmt*,int);
williamr@4
  3410
IMPORT_C const void *sqlite3_column_decltype16(sqlite3_stmt*,int);
williamr@4
  3411
williamr@4
  3412
/*
williamr@4
  3413
** CAPI3REF: Evaluate An SQL Statement {H13200} <S10000>
williamr@4
  3414
**
williamr@4
  3415
** After a [prepared statement] has been prepared using either
williamr@4
  3416
** [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()] or one of the legacy
williamr@4
  3417
** interfaces [sqlite3_prepare()] or [sqlite3_prepare16()], this function
williamr@4
  3418
** must be called one or more times to evaluate the statement.
williamr@4
  3419
**
williamr@4
  3420
** The details of the behavior of the sqlite3_step() interface depend
williamr@4
  3421
** on whether the statement was prepared using the newer "v2" interface
williamr@4
  3422
** [sqlite3_prepare_v2()] and [sqlite3_prepare16_v2()] or the older legacy
williamr@4
  3423
** interface [sqlite3_prepare()] and [sqlite3_prepare16()].  The use of the
williamr@4
  3424
** new "v2" interface is recommended for new applications but the legacy
williamr@4
  3425
** interface will continue to be supported.
williamr@4
  3426
**
williamr@4
  3427
** In the legacy interface, the return value will be either [SQLITE_BUSY],
williamr@4
  3428
** [SQLITE_DONE], [SQLITE_ROW], [SQLITE_ERROR], or [SQLITE_MISUSE].
williamr@4
  3429
** With the "v2" interface, any of the other [result codes] or
williamr@4
  3430
** [extended result codes] might be returned as well.
williamr@4
  3431
**
williamr@4
  3432
** [SQLITE_BUSY] means that the database engine was unable to acquire the
williamr@4
  3433
** database locks it needs to do its job.  If the statement is a [COMMIT]
williamr@4
  3434
** or occurs outside of an explicit transaction, then you can retry the
williamr@4
  3435
** statement.  If the statement is not a [COMMIT] and occurs within a
williamr@4
  3436
** explicit transaction then you should rollback the transaction before
williamr@4
  3437
** continuing.
williamr@4
  3438
**
williamr@4
  3439
** [SQLITE_DONE] means that the statement has finished executing
williamr@4
  3440
** successfully.  sqlite3_step() should not be called again on this virtual
williamr@4
  3441
** machine without first calling [sqlite3_reset()] to reset the virtual
williamr@4
  3442
** machine back to its initial state.
williamr@4
  3443
**
williamr@4
  3444
** If the SQL statement being executed returns any data, then [SQLITE_ROW]
williamr@4
  3445
** is returned each time a new row of data is ready for processing by the
williamr@4
  3446
** caller. The values may be accessed using the [column access functions].
williamr@4
  3447
** sqlite3_step() is called again to retrieve the next row of data.
williamr@4
  3448
**
williamr@4
  3449
** [SQLITE_ERROR] means that a run-time error (such as a constraint
williamr@4
  3450
** violation) has occurred.  sqlite3_step() should not be called again on
williamr@4
  3451
** the VM. More information may be found by calling [sqlite3_errmsg()].
williamr@4
  3452
** With the legacy interface, a more specific error code (for example,
williamr@4
  3453
** [SQLITE_INTERRUPT], [SQLITE_SCHEMA], [SQLITE_CORRUPT], and so forth)
williamr@4
  3454
** can be obtained by calling [sqlite3_reset()] on the
williamr@4
  3455
** [prepared statement].  In the "v2" interface,
williamr@4
  3456
** the more specific error code is returned directly by sqlite3_step().
williamr@4
  3457
**
williamr@4
  3458
** [SQLITE_MISUSE] means that the this routine was called inappropriately.
williamr@4
  3459
** Perhaps it was called on a [prepared statement] that has
williamr@4
  3460
** already been [sqlite3_finalize | finalized] or on one that had
williamr@4
  3461
** previously returned [SQLITE_ERROR] or [SQLITE_DONE].  Or it could
williamr@4
  3462
** be the case that the same database connection is being used by two or
williamr@4
  3463
** more threads at the same moment in time.
williamr@4
  3464
**
williamr@4
  3465
** <b>Goofy Interface Alert:</b> In the legacy interface, the sqlite3_step()
williamr@4
  3466
** API always returns a generic error code, [SQLITE_ERROR], following any
williamr@4
  3467
** error other than [SQLITE_BUSY] and [SQLITE_MISUSE].  You must call
williamr@4
  3468
** [sqlite3_reset()] or [sqlite3_finalize()] in order to find one of the
williamr@4
  3469
** specific [error codes] that better describes the error.
williamr@4
  3470
** We admit that this is a goofy design.  The problem has been fixed
williamr@4
  3471
** with the "v2" interface.  If you prepare all of your SQL statements
williamr@4
  3472
** using either [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()] instead
williamr@4
  3473
** of the legacy [sqlite3_prepare()] and [sqlite3_prepare16()] interfaces,
williamr@4
  3474
** then the more specific [error codes] are returned directly
williamr@4
  3475
** by sqlite3_step().  The use of the "v2" interface is recommended.
williamr@4
  3476
**
williamr@4
  3477
** INVARIANTS:
williamr@4
  3478
**
williamr@4
  3479
** {H13202}  If the [prepared statement] S is ready to be run, then
williamr@4
  3480
**           [sqlite3_step(S)] advances that prepared statement until
williamr@4
  3481
**           completion or until it is ready to return another row of the
williamr@4
  3482
**           result set, or until an [sqlite3_interrupt | interrupt]
williamr@4
  3483
**           or a run-time error occurs.
williamr@4
  3484
**
williamr@4
  3485
** {H15304}  When a call to [sqlite3_step(S)] causes the [prepared statement]
williamr@4
  3486
**           S to run to completion, the function returns [SQLITE_DONE].
williamr@4
  3487
**
williamr@4
  3488
** {H15306}  When a call to [sqlite3_step(S)] stops because it is ready to
williamr@4
  3489
**           return another row of the result set, it returns [SQLITE_ROW].
williamr@4
  3490
**
williamr@4
  3491
** {H15308}  If a call to [sqlite3_step(S)] encounters an
williamr@4
  3492
**           [sqlite3_interrupt | interrupt] or a run-time error,
williamr@4
  3493
**           it returns an appropriate error code that is not one of
williamr@4
  3494
**           [SQLITE_OK], [SQLITE_ROW], or [SQLITE_DONE].
williamr@4
  3495
**
williamr@4
  3496
** {H15310}  If an [sqlite3_interrupt | interrupt] or a run-time error
williamr@4
  3497
**           occurs during a call to [sqlite3_step(S)]
williamr@4
  3498
**           for a [prepared statement] S created using
williamr@4
  3499
**           legacy interfaces [sqlite3_prepare()] or
williamr@4
  3500
**           [sqlite3_prepare16()], then the function returns either
williamr@4
  3501
**           [SQLITE_ERROR], [SQLITE_BUSY], or [SQLITE_MISUSE].
williamr@4
  3502
*/
williamr@4
  3503
IMPORT_C int sqlite3_step(sqlite3_stmt*);
williamr@4
  3504
williamr@4
  3505
/*
williamr@4
  3506
** CAPI3REF: Number of columns in a result set {H13770} <S10700>
williamr@4
  3507
**
williamr@4
  3508
** Returns the number of values in the current row of the result set.
williamr@4
  3509
**
williamr@4
  3510
** INVARIANTS:
williamr@4
  3511
**
williamr@4
  3512
** {H13771}  After a call to [sqlite3_step(S)] that returns [SQLITE_ROW],
williamr@4
  3513
**           the [sqlite3_data_count(S)] routine will return the same value
williamr@4
  3514
**           as the [sqlite3_column_count(S)] function.
williamr@4
  3515
**
williamr@4
  3516
** {H13772}  After [sqlite3_step(S)] has returned any value other than
williamr@4
  3517
**           [SQLITE_ROW] or before [sqlite3_step(S)] has been called on the
williamr@4
  3518
**           [prepared statement] for the first time since it was
williamr@4
  3519
**           [sqlite3_prepare | prepared] or [sqlite3_reset | reset],
williamr@4
  3520
**           the [sqlite3_data_count(S)] routine returns zero.
williamr@4
  3521
*/
williamr@4
  3522
IMPORT_C int sqlite3_data_count(sqlite3_stmt *pStmt);
williamr@4
  3523
williamr@4
  3524
/*
williamr@4
  3525
** CAPI3REF: Fundamental Datatypes {H10265} <S10110><S10120>
williamr@4
  3526
** KEYWORDS: SQLITE_TEXT
williamr@4
  3527
**
williamr@4
  3528
** {H10266} Every value in SQLite has one of five fundamental datatypes:
williamr@4
  3529
**
williamr@4
  3530
** <ul>
williamr@4
  3531
** <li> 64-bit signed integer
williamr@4
  3532
** <li> 64-bit IEEE floating point number
williamr@4
  3533
** <li> string
williamr@4
  3534
** <li> BLOB
williamr@4
  3535
** <li> NULL
williamr@4
  3536
** </ul> {END}
williamr@4
  3537
**
williamr@4
  3538
** These constants are codes for each of those types.
williamr@4
  3539
**
williamr@4
  3540
** Note that the SQLITE_TEXT constant was also used in SQLite version 2
williamr@4
  3541
** for a completely different meaning.  Software that links against both
williamr@4
  3542
** SQLite version 2 and SQLite version 3 should use SQLITE3_TEXT, not
williamr@4
  3543
** SQLITE_TEXT.
williamr@4
  3544
*/
williamr@4
  3545
#define SQLITE_INTEGER  1
williamr@4
  3546
#define SQLITE_FLOAT    2
williamr@4
  3547
#define SQLITE_BLOB     4
williamr@4
  3548
#define SQLITE_NULL     5
williamr@4
  3549
#ifdef SQLITE_TEXT
williamr@4
  3550
# undef SQLITE_TEXT
williamr@4
  3551
#else
williamr@4
  3552
# define SQLITE_TEXT     3
williamr@4
  3553
#endif
williamr@4
  3554
#define SQLITE3_TEXT     3
williamr@4
  3555
williamr@4
  3556
/*
williamr@4
  3557
** CAPI3REF: Result Values From A Query {H13800} <S10700>
williamr@4
  3558
** KEYWORDS: {column access functions}
williamr@4
  3559
**
williamr@4
  3560
** These routines form the "result set query" interface.
williamr@4
  3561
**
williamr@4
  3562
** These routines return information about a single column of the current
williamr@4
  3563
** result row of a query.  In every case the first argument is a pointer
williamr@4
  3564
** to the [prepared statement] that is being evaluated (the [sqlite3_stmt*]
williamr@4
  3565
** that was returned from [sqlite3_prepare_v2()] or one of its variants)
williamr@4
  3566
** and the second argument is the index of the column for which information
williamr@4
  3567
** should be returned.  The leftmost column of the result set has the index 0.
williamr@4
  3568
**
williamr@4
  3569
** If the SQL statement does not currently point to a valid row, or if the
williamr@4
  3570
** column index is out of range, the result is undefined.
williamr@4
  3571
** These routines may only be called when the most recent call to
williamr@4
  3572
** [sqlite3_step()] has returned [SQLITE_ROW] and neither
williamr@4
  3573
** [sqlite3_reset()] nor [sqlite3_finalize()] have been called subsequently.
williamr@4
  3574
** If any of these routines are called after [sqlite3_reset()] or
williamr@4
  3575
** [sqlite3_finalize()] or after [sqlite3_step()] has returned
williamr@4
  3576
** something other than [SQLITE_ROW], the results are undefined.
williamr@4
  3577
** If [sqlite3_step()] or [sqlite3_reset()] or [sqlite3_finalize()]
williamr@4
  3578
** are called from a different thread while any of these routines
williamr@4
  3579
** are pending, then the results are undefined.
williamr@4
  3580
**
williamr@4
  3581
** The sqlite3_column_type() routine returns the
williamr@4
  3582
** [SQLITE_INTEGER | datatype code] for the initial data type
williamr@4
  3583
** of the result column.  The returned value is one of [SQLITE_INTEGER],
williamr@4
  3584
** [SQLITE_FLOAT], [SQLITE_TEXT], [SQLITE_BLOB], or [SQLITE_NULL].  The value
williamr@4
  3585
** returned by sqlite3_column_type() is only meaningful if no type
williamr@4
  3586
** conversions have occurred as described below.  After a type conversion,
williamr@4
  3587
** the value returned by sqlite3_column_type() is undefined.  Future
williamr@4
  3588
** versions of SQLite may change the behavior of sqlite3_column_type()
williamr@4
  3589
** following a type conversion.
williamr@4
  3590
**
williamr@4
  3591
** If the result is a BLOB or UTF-8 string then the sqlite3_column_bytes()
williamr@4
  3592
** routine returns the number of bytes in that BLOB or string.
williamr@4
  3593
** If the result is a UTF-16 string, then sqlite3_column_bytes() converts
williamr@4
  3594
** the string to UTF-8 and then returns the number of bytes.
williamr@4
  3595
** If the result is a numeric value then sqlite3_column_bytes() uses
williamr@4
  3596
** [sqlite3_snprintf()] to convert that value to a UTF-8 string and returns
williamr@4
  3597
** the number of bytes in that string.
williamr@4
  3598
** The value returned does not include the zero terminator at the end
williamr@4
  3599
** of the string.  For clarity: the value returned is the number of
williamr@4
  3600
** bytes in the string, not the number of characters.
williamr@4
  3601
**
williamr@4
  3602
** Strings returned by sqlite3_column_text() and sqlite3_column_text16(),
williamr@4
  3603
** even empty strings, are always zero terminated.  The return
williamr@4
  3604
** value from sqlite3_column_blob() for a zero-length BLOB is an arbitrary
williamr@4
  3605
** pointer, possibly even a NULL pointer.
williamr@4
  3606
**
williamr@4
  3607
** The sqlite3_column_bytes16() routine is similar to sqlite3_column_bytes()
williamr@4
  3608
** but leaves the result in UTF-16 in native byte order instead of UTF-8.
williamr@4
  3609
** The zero terminator is not included in this count.
williamr@4
  3610
**
williamr@4
  3611
** The object returned by [sqlite3_column_value()] is an
williamr@4
  3612
** [unprotected sqlite3_value] object.  An unprotected sqlite3_value object
williamr@4
  3613
** may only be used with [sqlite3_bind_value()] and [sqlite3_result_value()].
williamr@4
  3614
** If the [unprotected sqlite3_value] object returned by
williamr@4
  3615
** [sqlite3_column_value()] is used in any other way, including calls
williamr@4
  3616
** to routines like [sqlite3_value_int()], [sqlite3_value_text()],
williamr@4
  3617
** or [sqlite3_value_bytes()], then the behavior is undefined.
williamr@4
  3618
**
williamr@4
  3619
** These routines attempt to convert the value where appropriate.  For
williamr@4
  3620
** example, if the internal representation is FLOAT and a text result
williamr@4
  3621
** is requested, [sqlite3_snprintf()] is used internally to perform the
williamr@4
  3622
** conversion automatically.  The following table details the conversions
williamr@4
  3623
** that are applied:
williamr@4
  3624
**
williamr@4
  3625
** <blockquote>
williamr@4
  3626
** <table border="1">
williamr@4
  3627
** <tr><th> Internal<br>Type <th> Requested<br>Type <th>  Conversion
williamr@4
  3628
**
williamr@4
  3629
** <tr><td>  NULL    <td> INTEGER   <td> Result is 0
williamr@4
  3630
** <tr><td>  NULL    <td>  FLOAT    <td> Result is 0.0
williamr@4
  3631
** <tr><td>  NULL    <td>   TEXT    <td> Result is NULL pointer
williamr@4
  3632
** <tr><td>  NULL    <td>   BLOB    <td> Result is NULL pointer
williamr@4
  3633
** <tr><td> INTEGER  <td>  FLOAT    <td> Convert from integer to float
williamr@4
  3634
** <tr><td> INTEGER  <td>   TEXT    <td> ASCII rendering of the integer
williamr@4
  3635
** <tr><td> INTEGER  <td>   BLOB    <td> Same as INTEGER->TEXT
williamr@4
  3636
** <tr><td>  FLOAT   <td> INTEGER   <td> Convert from float to integer
williamr@4
  3637
** <tr><td>  FLOAT   <td>   TEXT    <td> ASCII rendering of the float
williamr@4
  3638
** <tr><td>  FLOAT   <td>   BLOB    <td> Same as FLOAT->TEXT
williamr@4
  3639
** <tr><td>  TEXT    <td> INTEGER   <td> Use atoi()
williamr@4
  3640
** <tr><td>  TEXT    <td>  FLOAT    <td> Use atof()
williamr@4
  3641
** <tr><td>  TEXT    <td>   BLOB    <td> No change
williamr@4
  3642
** <tr><td>  BLOB    <td> INTEGER   <td> Convert to TEXT then use atoi()
williamr@4
  3643
** <tr><td>  BLOB    <td>  FLOAT    <td> Convert to TEXT then use atof()
williamr@4
  3644
** <tr><td>  BLOB    <td>   TEXT    <td> Add a zero terminator if needed
williamr@4
  3645
** </table>
williamr@4
  3646
** </blockquote>
williamr@4
  3647
**
williamr@4
  3648
** The table above makes reference to standard C library functions atoi()
williamr@4
  3649
** and atof().  SQLite does not really use these functions.  It has its
williamr@4
  3650
** own equivalent internal routines.  The atoi() and atof() names are
williamr@4
  3651
** used in the table for brevity and because they are familiar to most
williamr@4
  3652
** C programmers.
williamr@4
  3653
**
williamr@4
  3654
** Note that when type conversions occur, pointers returned by prior
williamr@4
  3655
** calls to sqlite3_column_blob(), sqlite3_column_text(), and/or
williamr@4
  3656
** sqlite3_column_text16() may be invalidated.
williamr@4
  3657
** Type conversions and pointer invalidations might occur
williamr@4
  3658
** in the following cases:
williamr@4
  3659
**
williamr@4
  3660
** <ul>
williamr@4
  3661
** <li> The initial content is a BLOB and sqlite3_column_text() or
williamr@4
  3662
**      sqlite3_column_text16() is called.  A zero-terminator might
williamr@4
  3663
**      need to be added to the string.</li>
williamr@4
  3664
** <li> The initial content is UTF-8 text and sqlite3_column_bytes16() or
williamr@4
  3665
**      sqlite3_column_text16() is called.  The content must be converted
williamr@4
  3666
**      to UTF-16.</li>
williamr@4
  3667
** <li> The initial content is UTF-16 text and sqlite3_column_bytes() or
williamr@4
  3668
**      sqlite3_column_text() is called.  The content must be converted
williamr@4
  3669
**      to UTF-8.</li>
williamr@4
  3670
** </ul>
williamr@4
  3671
**
williamr@4
  3672
** Conversions between UTF-16be and UTF-16le are always done in place and do
williamr@4
  3673
** not invalidate a prior pointer, though of course the content of the buffer
williamr@4
  3674
** that the prior pointer points to will have been modified.  Other kinds
williamr@4
  3675
** of conversion are done in place when it is possible, but sometimes they
williamr@4
  3676
** are not possible and in those cases prior pointers are invalidated.
williamr@4
  3677
**
williamr@4
  3678
** The safest and easiest to remember policy is to invoke these routines
williamr@4
  3679
** in one of the following ways:
williamr@4
  3680
**
williamr@4
  3681
** <ul>
williamr@4
  3682
**  <li>sqlite3_column_text() followed by sqlite3_column_bytes()</li>
williamr@4
  3683
**  <li>sqlite3_column_blob() followed by sqlite3_column_bytes()</li>
williamr@4
  3684
**  <li>sqlite3_column_text16() followed by sqlite3_column_bytes16()</li>
williamr@4
  3685
** </ul>
williamr@4
  3686
**
williamr@4
  3687
** In other words, you should call sqlite3_column_text(),
williamr@4
  3688
** sqlite3_column_blob(), or sqlite3_column_text16() first to force the result
williamr@4
  3689
** into the desired format, then invoke sqlite3_column_bytes() or
williamr@4
  3690
** sqlite3_column_bytes16() to find the size of the result.  Do not mix calls
williamr@4
  3691
** to sqlite3_column_text() or sqlite3_column_blob() with calls to
williamr@4
  3692
** sqlite3_column_bytes16(), and do not mix calls to sqlite3_column_text16()
williamr@4
  3693
** with calls to sqlite3_column_bytes().
williamr@4
  3694
**
williamr@4
  3695
** The pointers returned are valid until a type conversion occurs as
williamr@4
  3696
** described above, or until [sqlite3_step()] or [sqlite3_reset()] or
williamr@4
  3697
** [sqlite3_finalize()] is called.  The memory space used to hold strings
williamr@4
  3698
** and BLOBs is freed automatically.  Do <b>not</b> pass the pointers returned
williamr@4
  3699
** [sqlite3_column_blob()], [sqlite3_column_text()], etc. into
williamr@4
  3700
** [sqlite3_free()].
williamr@4
  3701
**
williamr@4
  3702
** If a memory allocation error occurs during the evaluation of any
williamr@4
  3703
** of these routines, a default value is returned.  The default value
williamr@4
  3704
** is either the integer 0, the floating point number 0.0, or a NULL
williamr@4
  3705
** pointer.  Subsequent calls to [sqlite3_errcode()] will return
williamr@4
  3706
** [SQLITE_NOMEM].
williamr@4
  3707
**
williamr@4
  3708
** INVARIANTS:
williamr@4
  3709
**
williamr@4
  3710
** {H13803} The [sqlite3_column_blob(S,N)] interface converts the
williamr@4
  3711
**          Nth column in the current row of the result set for
williamr@4
  3712
**          the [prepared statement] S into a BLOB and then returns a
williamr@4
  3713
**          pointer to the converted value.
williamr@4
  3714
**
williamr@4
  3715
** {H13806} The [sqlite3_column_bytes(S,N)] interface returns the
williamr@4
  3716
**          number of bytes in the BLOB or string (exclusive of the
williamr@4
  3717
**          zero terminator on the string) that was returned by the
williamr@4
  3718
**          most recent call to [sqlite3_column_blob(S,N)] or
williamr@4
  3719
**          [sqlite3_column_text(S,N)].
williamr@4
  3720
**
williamr@4
  3721
** {H13809} The [sqlite3_column_bytes16(S,N)] interface returns the
williamr@4
  3722
**          number of bytes in the string (exclusive of the
williamr@4
  3723
**          zero terminator on the string) that was returned by the
williamr@4
  3724
**          most recent call to [sqlite3_column_text16(S,N)].
williamr@4
  3725
**
williamr@4
  3726
** {H13812} The [sqlite3_column_double(S,N)] interface converts the
williamr@4
  3727
**          Nth column in the current row of the result set for the
williamr@4
  3728
**          [prepared statement] S into a floating point value and
williamr@4
  3729
**          returns a copy of that value.
williamr@4
  3730
**
williamr@4
  3731
** {H13815} The [sqlite3_column_int(S,N)] interface converts the
williamr@4
  3732
**          Nth column in the current row of the result set for the
williamr@4
  3733
**          [prepared statement] S into a 64-bit signed integer and
williamr@4
  3734
**          returns the lower 32 bits of that integer.
williamr@4
  3735
**
williamr@4
  3736
** {H13818} The [sqlite3_column_int64(S,N)] interface converts the
williamr@4
  3737
**          Nth column in the current row of the result set for the
williamr@4
  3738
**          [prepared statement] S into a 64-bit signed integer and
williamr@4
  3739
**          returns a copy of that integer.
williamr@4
  3740
**
williamr@4
  3741
** {H13821} The [sqlite3_column_text(S,N)] interface converts the
williamr@4
  3742
**          Nth column in the current row of the result set for
williamr@4
  3743
**          the [prepared statement] S into a zero-terminated UTF-8
williamr@4
  3744
**          string and returns a pointer to that string.
williamr@4
  3745
**
williamr@4
  3746
** {H13824} The [sqlite3_column_text16(S,N)] interface converts the
williamr@4
  3747
**          Nth column in the current row of the result set for the
williamr@4
  3748
**          [prepared statement] S into a zero-terminated 2-byte
williamr@4
  3749
**          aligned UTF-16 native byte order string and returns
williamr@4
  3750
**          a pointer to that string.
williamr@4
  3751
**
williamr@4
  3752
** {H13827} The [sqlite3_column_type(S,N)] interface returns
williamr@4
  3753
**          one of [SQLITE_NULL], [SQLITE_INTEGER], [SQLITE_FLOAT],
williamr@4
  3754
**          [SQLITE_TEXT], or [SQLITE_BLOB] as appropriate for
williamr@4
  3755
**          the Nth column in the current row of the result set for
williamr@4
  3756
**          the [prepared statement] S.
williamr@4
  3757
**
williamr@4
  3758
** {H13830} The [sqlite3_column_value(S,N)] interface returns a
williamr@4
  3759
**          pointer to an [unprotected sqlite3_value] object for the
williamr@4
  3760
**          Nth column in the current row of the result set for
williamr@4
  3761
**          the [prepared statement] S.
williamr@4
  3762
*/
williamr@4
  3763
IMPORT_C const void *sqlite3_column_blob(sqlite3_stmt*, int iCol);
williamr@4
  3764
IMPORT_C int sqlite3_column_bytes(sqlite3_stmt*, int iCol);
williamr@4
  3765
IMPORT_C int sqlite3_column_bytes16(sqlite3_stmt*, int iCol);
williamr@4
  3766
IMPORT_C double sqlite3_column_double(sqlite3_stmt*, int iCol);
williamr@4
  3767
IMPORT_C int sqlite3_column_int(sqlite3_stmt*, int iCol);
williamr@4
  3768
IMPORT_C sqlite3_int64 sqlite3_column_int64(sqlite3_stmt*, int iCol);
williamr@4
  3769
IMPORT_C const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);
williamr@4
  3770
IMPORT_C const void *sqlite3_column_text16(sqlite3_stmt*, int iCol);
williamr@4
  3771
IMPORT_C int sqlite3_column_type(sqlite3_stmt*, int iCol);
williamr@4
  3772
IMPORT_C sqlite3_value *sqlite3_column_value(sqlite3_stmt*, int iCol);
williamr@4
  3773
williamr@4
  3774
/*
williamr@4
  3775
** CAPI3REF: Destroy A Prepared Statement Object {H13300} <S70300><S30100>
williamr@4
  3776
**
williamr@4
  3777
** The sqlite3_finalize() function is called to delete a [prepared statement].
williamr@4
  3778
** If the statement was executed successfully or not executed at all, then
williamr@4
  3779
** SQLITE_OK is returned. If execution of the statement failed then an
williamr@4
  3780
** [error code] or [extended error code] is returned.
williamr@4
  3781
**
williamr@4
  3782
** This routine can be called at any point during the execution of the
williamr@4
  3783
** [prepared statement].  If the virtual machine has not
williamr@4
  3784
** completed execution when this routine is called, that is like
williamr@4
  3785
** encountering an error or an [sqlite3_interrupt | interrupt].
williamr@4
  3786
** Incomplete updates may be rolled back and transactions canceled,
williamr@4
  3787
** depending on the circumstances, and the
williamr@4
  3788
** [error code] returned will be [SQLITE_ABORT].
williamr@4
  3789
**
williamr@4
  3790
** INVARIANTS:
williamr@4
  3791
**
williamr@4
  3792
** {H11302} The [sqlite3_finalize(S)] interface destroys the
williamr@4
  3793
**          [prepared statement] S and releases all
williamr@4
  3794
**          memory and file resources held by that object.
williamr@4
  3795
**
williamr@4
  3796
** {H11304} If the most recent call to [sqlite3_step(S)] for the
williamr@4
  3797
**          [prepared statement] S returned an error,
williamr@4
  3798
**          then [sqlite3_finalize(S)] returns that same error.
williamr@4
  3799
*/
williamr@4
  3800
IMPORT_C int sqlite3_finalize(sqlite3_stmt *pStmt);
williamr@4
  3801
williamr@4
  3802
/*
williamr@4
  3803
** CAPI3REF: Reset A Prepared Statement Object {H13330} <S70300>
williamr@4
  3804
**
williamr@4
  3805
** The sqlite3_reset() function is called to reset a [prepared statement]
williamr@4
  3806
** object back to its initial state, ready to be re-executed.
williamr@4
  3807
** Any SQL statement variables that had values bound to them using
williamr@4
  3808
** the [sqlite3_bind_blob | sqlite3_bind_*() API] retain their values.
williamr@4
  3809
** Use [sqlite3_clear_bindings()] to reset the bindings.
williamr@4
  3810
**
williamr@4
  3811
** {H11332} The [sqlite3_reset(S)] interface resets the [prepared statement] S
williamr@4
  3812
**          back to the beginning of its program.
williamr@4
  3813
**
williamr@4
  3814
** {H11334} If the most recent call to [sqlite3_step(S)] for the
williamr@4
  3815
**          [prepared statement] S returned [SQLITE_ROW] or [SQLITE_DONE],
williamr@4
  3816
**          or if [sqlite3_step(S)] has never before been called on S,
williamr@4
  3817
**          then [sqlite3_reset(S)] returns [SQLITE_OK].
williamr@4
  3818
**
williamr@4
  3819
** {H11336} If the most recent call to [sqlite3_step(S)] for the
williamr@4
  3820
**          [prepared statement] S indicated an error, then
williamr@4
  3821
**          [sqlite3_reset(S)] returns an appropriate [error code].
williamr@4
  3822
**
williamr@4
  3823
** {H11338} The [sqlite3_reset(S)] interface does not change the values
williamr@4
  3824
**          of any [sqlite3_bind_blob|bindings] on the [prepared statement] S.
williamr@4
  3825
*/
williamr@4
  3826
IMPORT_C int sqlite3_reset(sqlite3_stmt *pStmt);
williamr@4
  3827
williamr@4
  3828
/*
williamr@4
  3829
** CAPI3REF: Create Or Redefine SQL Functions {H16100} <S20200>
williamr@4
  3830
** KEYWORDS: {function creation routines}
williamr@4
  3831
** KEYWORDS: {application-defined SQL function}
williamr@4
  3832
** KEYWORDS: {application-defined SQL functions}
williamr@4
  3833
**
williamr@4
  3834
** These two functions (collectively known as "function creation routines")
williamr@4
  3835
** are used to add SQL functions or aggregates or to redefine the behavior
williamr@4
  3836
** of existing SQL functions or aggregates.  The only difference between the
williamr@4
  3837
** two is that the second parameter, the name of the (scalar) function or
williamr@4
  3838
** aggregate, is encoded in UTF-8 for sqlite3_create_function() and UTF-16
williamr@4
  3839
** for sqlite3_create_function16().
williamr@4
  3840
**
williamr@4
  3841
** The first parameter is the [database connection] to which the SQL
williamr@4
  3842
** function is to be added.  If a single program uses more than one database
williamr@4
  3843
** connection internally, then SQL functions must be added individually to
williamr@4
  3844
** each database connection.
williamr@4
  3845
**
williamr@4
  3846
** The second parameter is the name of the SQL function to be created or
williamr@4
  3847
** redefined.  The length of the name is limited to 255 bytes, exclusive of
williamr@4
  3848
** the zero-terminator.  Note that the name length limit is in bytes, not
williamr@4
  3849
** characters.  Any attempt to create a function with a longer name
williamr@4
  3850
** will result in [SQLITE_ERROR] being returned.
williamr@4
  3851
**
williamr@4
  3852
** The third parameter (nArg)
williamr@4
  3853
** is the number of arguments that the SQL function or
williamr@4
  3854
** aggregate takes. If this parameter is negative, then the SQL function or
williamr@4
  3855
** aggregate may take any number of arguments.
williamr@4
  3856
**
williamr@4
  3857
** The fourth parameter, eTextRep, specifies what
williamr@4
  3858
** [SQLITE_UTF8 | text encoding] this SQL function prefers for
williamr@4
  3859
** its parameters.  Any SQL function implementation should be able to work
williamr@4
  3860
** work with UTF-8, UTF-16le, or UTF-16be.  But some implementations may be
williamr@4
  3861
** more efficient with one encoding than another.  It is allowed to
williamr@4
  3862
** invoke sqlite3_create_function() or sqlite3_create_function16() multiple
williamr@4
  3863
** times with the same function but with different values of eTextRep.
williamr@4
  3864
** When multiple implementations of the same function are available, SQLite
williamr@4
  3865
** will pick the one that involves the least amount of data conversion.
williamr@4
  3866
** If there is only a single implementation which does not care what text
williamr@4
  3867
** encoding is used, then the fourth argument should be [SQLITE_ANY].
williamr@4
  3868
**
williamr@4
  3869
** The fifth parameter is an arbitrary pointer.  The implementation of the
williamr@4
  3870
** function can gain access to this pointer using [sqlite3_user_data()].
williamr@4
  3871
**
williamr@4
  3872
** The seventh, eighth and ninth parameters, xFunc, xStep and xFinal, are
williamr@4
  3873
** pointers to C-language functions that implement the SQL function or
williamr@4
  3874
** aggregate. A scalar SQL function requires an implementation of the xFunc
williamr@4
  3875
** callback only, NULL pointers should be passed as the xStep and xFinal
williamr@4
  3876
** parameters. An aggregate SQL function requires an implementation of xStep
williamr@4
  3877
** and xFinal and NULL should be passed for xFunc. To delete an existing
williamr@4
  3878
** SQL function or aggregate, pass NULL for all three function callbacks.
williamr@4
  3879
**
williamr@4
  3880
** It is permitted to register multiple implementations of the same
williamr@4
  3881
** functions with the same name but with either differing numbers of
williamr@4
  3882
** arguments or differing preferred text encodings.  SQLite will use
williamr@4
  3883
** the implementation most closely matches the way in which the
williamr@4
  3884
** SQL function is used.  A function implementation with a non-negative
williamr@4
  3885
** nArg parameter is a better match than a function implementation with
williamr@4
  3886
** a negative nArg.  A function where the preferred text encoding
williamr@4
  3887
** matches the database encoding is a better
williamr@4
  3888
** match than a function where the encoding is different.  
williamr@4
  3889
** A function where the encoding difference is between UTF16le and UTF16be
williamr@4
  3890
** is a closer match than a function where the encoding difference is
williamr@4
  3891
** between UTF8 and UTF16.
williamr@4
  3892
**
williamr@4
  3893
** Built-in functions may be overloaded by new application-defined functions.
williamr@4
  3894
** The first application-defined function with a given name overrides all
williamr@4
  3895
** built-in functions in the same [database connection] with the same name.
williamr@4
  3896
** Subsequent application-defined functions of the same name only override 
williamr@4
  3897
** prior application-defined functions that are an exact match for the
williamr@4
  3898
** number of parameters and preferred encoding.
williamr@4
  3899
**
williamr@4
  3900
** An application-defined function is permitted to call other
williamr@4
  3901
** SQLite interfaces.  However, such calls must not
williamr@4
  3902
** close the database connection nor finalize or reset the prepared
williamr@4
  3903
** statement in which the function is running.
williamr@4
  3904
**
williamr@4
  3905
** INVARIANTS:
williamr@4
  3906
**
williamr@4
  3907
** {H16103} The [sqlite3_create_function16(D,X,...)] interface shall behave
williamr@4
  3908
**          as [sqlite3_create_function(D,X,...)] in every way except that it
williamr@4
  3909
**          interprets the X argument as zero-terminated UTF-16
williamr@4
  3910
**          native byte order instead of as zero-terminated UTF-8.
williamr@4
  3911
**
williamr@4
  3912
** {H16106} A successful invocation of the
williamr@4
  3913
**          [sqlite3_create_function(D,X,N,E,...)] interface shall register
williamr@4
  3914
**          or replaces callback functions in the [database connection] D
williamr@4
  3915
**          used to implement the SQL function named X with N parameters
williamr@4
  3916
**          and having a preferred text encoding of E.
williamr@4
  3917
**
williamr@4
  3918
** {H16109} A successful call to [sqlite3_create_function(D,X,N,E,P,F,S,L)]
williamr@4
  3919
**          shall replace the P, F, S, and L values from any prior calls with
williamr@4
  3920
**          the same D, X, N, and E values.
williamr@4
  3921
**
williamr@4
  3922
** {H16112} The [sqlite3_create_function(D,X,...)] interface shall fail
williamr@4
  3923
**          if the SQL function name X is
williamr@4
  3924
**          longer than 255 bytes exclusive of the zero terminator.
williamr@4
  3925
**
williamr@4
  3926
** {H16118} The [sqlite3_create_function(D,X,N,E,P,F,S,L)] interface
williamr@4
  3927
**          shall fail unless either F is NULL and S and L are non-NULL or
williamr@4
  3928
***         F is non-NULL and S and L are NULL.
williamr@4
  3929
**
williamr@4
  3930
** {H16121} The [sqlite3_create_function(D,...)] interface shall fails with an
williamr@4
  3931
**          error code of [SQLITE_BUSY] if there exist [prepared statements]
williamr@4
  3932
**          associated with the [database connection] D.
williamr@4
  3933
**
williamr@4
  3934
** {H16124} The [sqlite3_create_function(D,X,N,...)] interface shall fail with
williamr@4
  3935
**          an error code of [SQLITE_ERROR] if parameter N is less
williamr@4
  3936
**          than -1 or greater than 127.
williamr@4
  3937
**
williamr@4
  3938
** {H16127} When N is non-negative, the [sqlite3_create_function(D,X,N,...)]
williamr@4
  3939
**          interface shall register callbacks to be invoked for the
williamr@4
  3940
**          SQL function
williamr@4
  3941
**          named X when the number of arguments to the SQL function is
williamr@4
  3942
**          exactly N.
williamr@4
  3943
**
williamr@4
  3944
** {H16130} When N is -1, the [sqlite3_create_function(D,X,N,...)]
williamr@4
  3945
**          interface shall register callbacks to be invoked for the SQL
williamr@4
  3946
**          function named X with any number of arguments.
williamr@4
  3947
**
williamr@4
  3948
** {H16133} When calls to [sqlite3_create_function(D,X,N,...)]
williamr@4
  3949
**          specify multiple implementations of the same function X
williamr@4
  3950
**          and when one implementation has N>=0 and the other has N=(-1)
williamr@4
  3951
**          the implementation with a non-zero N shall be preferred.
williamr@4
  3952
**
williamr@4
  3953
** {H16136} When calls to [sqlite3_create_function(D,X,N,E,...)]
williamr@4
  3954
**          specify multiple implementations of the same function X with
williamr@4
  3955
**          the same number of arguments N but with different
williamr@4
  3956
**          encodings E, then the implementation where E matches the
williamr@4
  3957
**          database encoding shall preferred.
williamr@4
  3958
**
williamr@4
  3959
** {H16139} For an aggregate SQL function created using
williamr@4
  3960
**          [sqlite3_create_function(D,X,N,E,P,0,S,L)] the finalizer
williamr@4
  3961
**          function L shall always be invoked exactly once if the
williamr@4
  3962
**          step function S is called one or more times.
williamr@4
  3963
**
williamr@4
  3964
** {H16142} When SQLite invokes either the xFunc or xStep function of
williamr@4
  3965
**          an application-defined SQL function or aggregate created
williamr@4
  3966
**          by [sqlite3_create_function()] or [sqlite3_create_function16()],
williamr@4
  3967
**          then the array of [sqlite3_value] objects passed as the
williamr@4
  3968
**          third parameter shall be [protected sqlite3_value] objects.
williamr@4
  3969
*/
williamr@4
  3970
IMPORT_C int sqlite3_create_function(
williamr@4
  3971
  sqlite3 *db,
williamr@4
  3972
  const char *zFunctionName,
williamr@4
  3973
  int nArg,
williamr@4
  3974
  int eTextRep,
williamr@4
  3975
  void *pApp,
williamr@4
  3976
  void (*xFunc)(sqlite3_context*,int,sqlite3_value**),
williamr@4
  3977
  void (*xStep)(sqlite3_context*,int,sqlite3_value**),
williamr@4
  3978
  void (*xFinal)(sqlite3_context*)
williamr@4
  3979
);
williamr@4
  3980
IMPORT_C int sqlite3_create_function16(
williamr@4
  3981
  sqlite3 *db,
williamr@4
  3982
  const void *zFunctionName,
williamr@4
  3983
  int nArg,
williamr@4
  3984
  int eTextRep,
williamr@4
  3985
  void *pApp,
williamr@4
  3986
  void (*xFunc)(sqlite3_context*,int,sqlite3_value**),
williamr@4
  3987
  void (*xStep)(sqlite3_context*,int,sqlite3_value**),
williamr@4
  3988
  void (*xFinal)(sqlite3_context*)
williamr@4
  3989
);
williamr@4
  3990
williamr@4
  3991
/*
williamr@4
  3992
** CAPI3REF: Text Encodings {H10267} <S50200> <H16100>
williamr@4
  3993
**
williamr@4
  3994
** These constant define integer codes that represent the various
williamr@4
  3995
** text encodings supported by SQLite.
williamr@4
  3996
*/
williamr@4
  3997
#define SQLITE_UTF8           1
williamr@4
  3998
#define SQLITE_UTF16LE        2
williamr@4
  3999
#define SQLITE_UTF16BE        3
williamr@4
  4000
#define SQLITE_UTF16          4    /* Use native byte order */
williamr@4
  4001
#define SQLITE_ANY            5    /* sqlite3_create_function only */
williamr@4
  4002
#define SQLITE_UTF16_ALIGNED  8    /* sqlite3_create_collation only */
williamr@4
  4003
williamr@4
  4004
/*
williamr@4
  4005
** CAPI3REF: Deprecated Functions
williamr@4
  4006
** DEPRECATED
williamr@4
  4007
**
williamr@4
  4008
** These functions are [deprecated].  In order to maintain
williamr@4
  4009
** backwards compatibility with older code, these functions continue 
williamr@4
  4010
** to be supported.  However, new applications should avoid
williamr@4
  4011
** the use of these functions.  To help encourage people to avoid
williamr@4
  4012
** using these functions, we are not going to tell you want they do.
williamr@4
  4013
*/
williamr@4
  4014
IMPORT_C int sqlite3_aggregate_count(sqlite3_context*);
williamr@4
  4015
IMPORT_C int sqlite3_expired(sqlite3_stmt*);
williamr@4
  4016
IMPORT_C int sqlite3_transfer_bindings(sqlite3_stmt*, sqlite3_stmt*);
williamr@4
  4017
IMPORT_C int sqlite3_global_recover(void);
williamr@4
  4018
IMPORT_C void sqlite3_thread_cleanup(void);
williamr@4
  4019
IMPORT_C int sqlite3_memory_alarm(void(*)(void*,sqlite3_int64,int),void*,sqlite3_int64);
williamr@4
  4020
williamr@4
  4021
/*
williamr@4
  4022
** CAPI3REF: Obtaining SQL Function Parameter Values {H15100} <S20200>
williamr@4
  4023
**
williamr@4
  4024
** The C-language implementation of SQL functions and aggregates uses
williamr@4
  4025
** this set of interface routines to access the parameter values on
williamr@4
  4026
** the function or aggregate.
williamr@4
  4027
**
williamr@4
  4028
** The xFunc (for scalar functions) or xStep (for aggregates) parameters
williamr@4
  4029
** to [sqlite3_create_function()] and [sqlite3_create_function16()]
williamr@4
  4030
** define callbacks that implement the SQL functions and aggregates.
williamr@4
  4031
** The 4th parameter to these callbacks is an array of pointers to
williamr@4
  4032
** [protected sqlite3_value] objects.  There is one [sqlite3_value] object for
williamr@4
  4033
** each parameter to the SQL function.  These routines are used to
williamr@4
  4034
** extract values from the [sqlite3_value] objects.
williamr@4
  4035
**
williamr@4
  4036
** These routines work only with [protected sqlite3_value] objects.
williamr@4
  4037
** Any attempt to use these routines on an [unprotected sqlite3_value]
williamr@4
  4038
** object results in undefined behavior.
williamr@4
  4039
**
williamr@4
  4040
** These routines work just like the corresponding [column access functions]
williamr@4
  4041
** except that  these routines take a single [protected sqlite3_value] object
williamr@4
  4042
** pointer instead of a [sqlite3_stmt*] pointer and an integer column number.
williamr@4
  4043
**
williamr@4
  4044
** The sqlite3_value_text16() interface extracts a UTF-16 string
williamr@4
  4045
** in the native byte-order of the host machine.  The
williamr@4
  4046
** sqlite3_value_text16be() and sqlite3_value_text16le() interfaces
williamr@4
  4047
** extract UTF-16 strings as big-endian and little-endian respectively.
williamr@4
  4048
**
williamr@4
  4049
** The sqlite3_value_numeric_type() interface attempts to apply
williamr@4
  4050
** numeric affinity to the value.  This means that an attempt is
williamr@4
  4051
** made to convert the value to an integer or floating point.  If
williamr@4
  4052
** such a conversion is possible without loss of information (in other
williamr@4
  4053
** words, if the value is a string that looks like a number)
williamr@4
  4054
** then the conversion is performed.  Otherwise no conversion occurs.
williamr@4
  4055
** The [SQLITE_INTEGER | datatype] after conversion is returned.
williamr@4
  4056
**
williamr@4
  4057
** Please pay particular attention to the fact that the pointer returned
williamr@4
  4058
** from [sqlite3_value_blob()], [sqlite3_value_text()], or
williamr@4
  4059
** [sqlite3_value_text16()] can be invalidated by a subsequent call to
williamr@4
  4060
** [sqlite3_value_bytes()], [sqlite3_value_bytes16()], [sqlite3_value_text()],
williamr@4
  4061
** or [sqlite3_value_text16()].
williamr@4
  4062
**
williamr@4
  4063
** These routines must be called from the same thread as
williamr@4
  4064
** the SQL function that supplied the [sqlite3_value*] parameters.
williamr@4
  4065
**
williamr@4
  4066
** INVARIANTS:
williamr@4
  4067
**
williamr@4
  4068
** {H15103} The [sqlite3_value_blob(V)] interface converts the
williamr@4
  4069
**          [protected sqlite3_value] object V into a BLOB and then
williamr@4
  4070
**          returns a pointer to the converted value.
williamr@4
  4071
**
williamr@4
  4072
** {H15106} The [sqlite3_value_bytes(V)] interface returns the
williamr@4
  4073
**          number of bytes in the BLOB or string (exclusive of the
williamr@4
  4074
**          zero terminator on the string) that was returned by the
williamr@4
  4075
**          most recent call to [sqlite3_value_blob(V)] or
williamr@4
  4076
**          [sqlite3_value_text(V)].
williamr@4
  4077
**
williamr@4
  4078
** {H15109} The [sqlite3_value_bytes16(V)] interface returns the
williamr@4
  4079
**          number of bytes in the string (exclusive of the
williamr@4
  4080
**          zero terminator on the string) that was returned by the
williamr@4
  4081
**          most recent call to [sqlite3_value_text16(V)],
williamr@4
  4082
**          [sqlite3_value_text16be(V)], or [sqlite3_value_text16le(V)].
williamr@4
  4083
**
williamr@4
  4084
** {H15112} The [sqlite3_value_double(V)] interface converts the
williamr@4
  4085
**          [protected sqlite3_value] object V into a floating point value and
williamr@4
  4086
**          returns a copy of that value.
williamr@4
  4087
**
williamr@4
  4088
** {H15115} The [sqlite3_value_int(V)] interface converts the
williamr@4
  4089
**          [protected sqlite3_value] object V into a 64-bit signed integer and
williamr@4
  4090
**          returns the lower 32 bits of that integer.
williamr@4
  4091
**
williamr@4
  4092
** {H15118} The [sqlite3_value_int64(V)] interface converts the
williamr@4
  4093
**          [protected sqlite3_value] object V into a 64-bit signed integer and
williamr@4
  4094
**          returns a copy of that integer.
williamr@4
  4095
**
williamr@4
  4096
** {H15121} The [sqlite3_value_text(V)] interface converts the
williamr@4
  4097
**          [protected sqlite3_value] object V into a zero-terminated UTF-8
williamr@4
  4098
**          string and returns a pointer to that string.
williamr@4
  4099
**
williamr@4
  4100
** {H15124} The [sqlite3_value_text16(V)] interface converts the
williamr@4
  4101
**          [protected sqlite3_value] object V into a zero-terminated 2-byte
williamr@4
  4102
**          aligned UTF-16 native byte order
williamr@4
  4103
**          string and returns a pointer to that string.
williamr@4
  4104
**
williamr@4
  4105
** {H15127} The [sqlite3_value_text16be(V)] interface converts the
williamr@4
  4106
**          [protected sqlite3_value] object V into a zero-terminated 2-byte
williamr@4
  4107
**          aligned UTF-16 big-endian
williamr@4
  4108
**          string and returns a pointer to that string.
williamr@4
  4109
**
williamr@4
  4110
** {H15130} The [sqlite3_value_text16le(V)] interface converts the
williamr@4
  4111
**          [protected sqlite3_value] object V into a zero-terminated 2-byte
williamr@4
  4112
**          aligned UTF-16 little-endian
williamr@4
  4113
**          string and returns a pointer to that string.
williamr@4
  4114
**
williamr@4
  4115
** {H15133} The [sqlite3_value_type(V)] interface returns
williamr@4
  4116
**          one of [SQLITE_NULL], [SQLITE_INTEGER], [SQLITE_FLOAT],
williamr@4
  4117
**          [SQLITE_TEXT], or [SQLITE_BLOB] as appropriate for
williamr@4
  4118
**          the [sqlite3_value] object V.
williamr@4
  4119
**
williamr@4
  4120
** {H15136} The [sqlite3_value_numeric_type(V)] interface converts
williamr@4
  4121
**          the [protected sqlite3_value] object V into either an integer or
williamr@4
  4122
**          a floating point value if it can do so without loss of
williamr@4
  4123
**          information, and returns one of [SQLITE_NULL],
williamr@4
  4124
**          [SQLITE_INTEGER], [SQLITE_FLOAT], [SQLITE_TEXT], or
williamr@4
  4125
**          [SQLITE_BLOB] as appropriate for the
williamr@4
  4126
**          [protected sqlite3_value] object V after the conversion attempt.
williamr@4
  4127
*/
williamr@4
  4128
IMPORT_C const void *sqlite3_value_blob(sqlite3_value*);
williamr@4
  4129
IMPORT_C int sqlite3_value_bytes(sqlite3_value*);
williamr@4
  4130
IMPORT_C int sqlite3_value_bytes16(sqlite3_value*);
williamr@4
  4131
IMPORT_C double sqlite3_value_double(sqlite3_value*);
williamr@4
  4132
IMPORT_C int sqlite3_value_int(sqlite3_value*);
williamr@4
  4133
IMPORT_C sqlite3_int64 sqlite3_value_int64(sqlite3_value*);
williamr@4
  4134
IMPORT_C const unsigned char *sqlite3_value_text(sqlite3_value*);
williamr@4
  4135
IMPORT_C const void *sqlite3_value_text16(sqlite3_value*);
williamr@4
  4136
IMPORT_C const void *sqlite3_value_text16le(sqlite3_value*);
williamr@4
  4137
IMPORT_C const void *sqlite3_value_text16be(sqlite3_value*);
williamr@4
  4138
IMPORT_C int sqlite3_value_type(sqlite3_value*);
williamr@4
  4139
IMPORT_C int sqlite3_value_numeric_type(sqlite3_value*);
williamr@4
  4140
williamr@4
  4141
/*
williamr@4
  4142
** CAPI3REF: Obtain Aggregate Function Context {H16210} <S20200>
williamr@4
  4143
**
williamr@4
  4144
** The implementation of aggregate SQL functions use this routine to allocate
williamr@4
  4145
** a structure for storing their state.
williamr@4
  4146
**
williamr@4
  4147
** The first time the sqlite3_aggregate_context() routine is called for a
williamr@4
  4148
** particular aggregate, SQLite allocates nBytes of memory, zeroes out that
williamr@4
  4149
** memory, and returns a pointer to it. On second and subsequent calls to
williamr@4
  4150
** sqlite3_aggregate_context() for the same aggregate function index,
williamr@4
  4151
** the same buffer is returned. The implementation of the aggregate can use
williamr@4
  4152
** the returned buffer to accumulate data.
williamr@4
  4153
**
williamr@4
  4154
** SQLite automatically frees the allocated buffer when the aggregate
williamr@4
  4155
** query concludes.
williamr@4
  4156
**
williamr@4
  4157
** The first parameter should be a copy of the
williamr@4
  4158
** [sqlite3_context | SQL function context] that is the first parameter
williamr@4
  4159
** to the callback routine that implements the aggregate function.
williamr@4
  4160
**
williamr@4
  4161
** This routine must be called from the same thread in which
williamr@4
  4162
** the aggregate SQL function is running.
williamr@4
  4163
**
williamr@4
  4164
** INVARIANTS:
williamr@4
  4165
**
williamr@4
  4166
** {H16211} The first invocation of [sqlite3_aggregate_context(C,N)] for
williamr@4
  4167
**          a particular instance of an aggregate function (for a particular
williamr@4
  4168
**          context C) causes SQLite to allocate N bytes of memory,
williamr@4
  4169
**          zero that memory, and return a pointer to the allocated memory.
williamr@4
  4170
**
williamr@4
  4171
** {H16213} If a memory allocation error occurs during
williamr@4
  4172
**          [sqlite3_aggregate_context(C,N)] then the function returns 0.
williamr@4
  4173
**
williamr@4
  4174
** {H16215} Second and subsequent invocations of
williamr@4
  4175
**          [sqlite3_aggregate_context(C,N)] for the same context pointer C
williamr@4
  4176
**          ignore the N parameter and return a pointer to the same
williamr@4
  4177
**          block of memory returned by the first invocation.
williamr@4
  4178
**
williamr@4
  4179
** {H16217} The memory allocated by [sqlite3_aggregate_context(C,N)] is
williamr@4
  4180
**          automatically freed on the next call to [sqlite3_reset()]
williamr@4
  4181
**          or [sqlite3_finalize()] for the [prepared statement] containing
williamr@4
  4182
**          the aggregate function associated with context C.
williamr@4
  4183
*/
williamr@4
  4184
IMPORT_C void *sqlite3_aggregate_context(sqlite3_context*, int nBytes);
williamr@4
  4185
williamr@4
  4186
/*
williamr@4
  4187
** CAPI3REF: User Data For Functions {H16240} <S20200>
williamr@4
  4188
**
williamr@4
  4189
** The sqlite3_user_data() interface returns a copy of
williamr@4
  4190
** the pointer that was the pUserData parameter (the 5th parameter)
williamr@4
  4191
** of the [sqlite3_create_function()]
williamr@4
  4192
** and [sqlite3_create_function16()] routines that originally
williamr@4
  4193
** registered the application defined function. {END}
williamr@4
  4194
**
williamr@4
  4195
** This routine must be called from the same thread in which
williamr@4
  4196
** the application-defined function is running.
williamr@4
  4197
**
williamr@4
  4198
** INVARIANTS:
williamr@4
  4199
**
williamr@4
  4200
** {H16243} The [sqlite3_user_data(C)] interface returns a copy of the
williamr@4
  4201
**          P pointer from the [sqlite3_create_function(D,X,N,E,P,F,S,L)]
williamr@4
  4202
**          or [sqlite3_create_function16(D,X,N,E,P,F,S,L)] call that
williamr@4
  4203
**          registered the SQL function associated with [sqlite3_context] C.
williamr@4
  4204
*/
williamr@4
  4205
IMPORT_C void *sqlite3_user_data(sqlite3_context*);
williamr@4
  4206
williamr@4
  4207
/*
williamr@4
  4208
** CAPI3REF: Database Connection For Functions {H16250} <S60600><S20200>
williamr@4
  4209
**
williamr@4
  4210
** The sqlite3_context_db_handle() interface returns a copy of
williamr@4
  4211
** the pointer to the [database connection] (the 1st parameter)
williamr@4
  4212
** of the [sqlite3_create_function()]
williamr@4
  4213
** and [sqlite3_create_function16()] routines that originally
williamr@4
  4214
** registered the application defined function.
williamr@4
  4215
**
williamr@4
  4216
** INVARIANTS:
williamr@4
  4217
**
williamr@4
  4218
** {H16253} The [sqlite3_context_db_handle(C)] interface returns a copy of the
williamr@4
  4219
**          D pointer from the [sqlite3_create_function(D,X,N,E,P,F,S,L)]
williamr@4
  4220
**          or [sqlite3_create_function16(D,X,N,E,P,F,S,L)] call that
williamr@4
  4221
**          registered the SQL function associated with [sqlite3_context] C.
williamr@4
  4222
*/
williamr@4
  4223
IMPORT_C sqlite3 *sqlite3_context_db_handle(sqlite3_context*);
williamr@4
  4224
williamr@4
  4225
/*
williamr@4
  4226
** CAPI3REF: Function Auxiliary Data {H16270} <S20200>
williamr@4
  4227
**
williamr@4
  4228
** The following two functions may be used by scalar SQL functions to
williamr@4
  4229
** associate metadata with argument values. If the same value is passed to
williamr@4
  4230
** multiple invocations of the same SQL function during query execution, under
williamr@4
  4231
** some circumstances the associated metadata may be preserved. This may
williamr@4
  4232
** be used, for example, to add a regular-expression matching scalar
williamr@4
  4233
** function. The compiled version of the regular expression is stored as
williamr@4
  4234
** metadata associated with the SQL value passed as the regular expression
williamr@4
  4235
** pattern.  The compiled regular expression can be reused on multiple
williamr@4
  4236
** invocations of the same function so that the original pattern string
williamr@4
  4237
** does not need to be recompiled on each invocation.
williamr@4
  4238
**
williamr@4
  4239
** The sqlite3_get_auxdata() interface returns a pointer to the metadata
williamr@4
  4240
** associated by the sqlite3_set_auxdata() function with the Nth argument
williamr@4
  4241
** value to the application-defined function. If no metadata has been ever
williamr@4
  4242
** been set for the Nth argument of the function, or if the corresponding
williamr@4
  4243
** function parameter has changed since the meta-data was set,
williamr@4
  4244
** then sqlite3_get_auxdata() returns a NULL pointer.
williamr@4
  4245
**
williamr@4
  4246
** The sqlite3_set_auxdata() interface saves the metadata
williamr@4
  4247
** pointed to by its 3rd parameter as the metadata for the N-th
williamr@4
  4248
** argument of the application-defined function.  Subsequent
williamr@4
  4249
** calls to sqlite3_get_auxdata() might return this data, if it has
williamr@4
  4250
** not been destroyed.
williamr@4
  4251
** If it is not NULL, SQLite will invoke the destructor
williamr@4
  4252
** function given by the 4th parameter to sqlite3_set_auxdata() on
williamr@4
  4253
** the metadata when the corresponding function parameter changes
williamr@4
  4254
** or when the SQL statement completes, whichever comes first.
williamr@4
  4255
**
williamr@4
  4256
** SQLite is free to call the destructor and drop metadata on any
williamr@4
  4257
** parameter of any function at any time.  The only guarantee is that
williamr@4
  4258
** the destructor will be called before the metadata is dropped.
williamr@4
  4259
**
williamr@4
  4260
** In practice, metadata is preserved between function calls for
williamr@4
  4261
** expressions that are constant at compile time. This includes literal
williamr@4
  4262
** values and SQL variables.
williamr@4
  4263
**
williamr@4
  4264
** These routines must be called from the same thread in which
williamr@4
  4265
** the SQL function is running.
williamr@4
  4266
**
williamr@4
  4267
** INVARIANTS:
williamr@4
  4268
**
williamr@4
  4269
** {H16272} The [sqlite3_get_auxdata(C,N)] interface returns a pointer
williamr@4
  4270
**          to metadata associated with the Nth parameter of the SQL function
williamr@4
  4271
**          whose context is C, or NULL if there is no metadata associated
williamr@4
  4272
**          with that parameter.
williamr@4
  4273
**
williamr@4
  4274
** {H16274} The [sqlite3_set_auxdata(C,N,P,D)] interface assigns a metadata
williamr@4
  4275
**          pointer P to the Nth parameter of the SQL function with context C.
williamr@4
  4276
**
williamr@4
  4277
** {H16276} SQLite will invoke the destructor D with a single argument
williamr@4
  4278
**          which is the metadata pointer P following a call to
williamr@4
  4279
**          [sqlite3_set_auxdata(C,N,P,D)] when SQLite ceases to hold
williamr@4
  4280
**          the metadata.
williamr@4
  4281
**
williamr@4
  4282
** {H16277} SQLite ceases to hold metadata for an SQL function parameter
williamr@4
  4283
**          when the value of that parameter changes.
williamr@4
  4284
**
williamr@4
  4285
** {H16278} When [sqlite3_set_auxdata(C,N,P,D)] is invoked, the destructor
williamr@4
  4286
**          is called for any prior metadata associated with the same function
williamr@4
  4287
**          context C and parameter N.
williamr@4
  4288
**
williamr@4
  4289
** {H16279} SQLite will call destructors for any metadata it is holding
williamr@4
  4290
**          in a particular [prepared statement] S when either
williamr@4
  4291
**          [sqlite3_reset(S)] or [sqlite3_finalize(S)] is called.
williamr@4
  4292
*/
williamr@4
  4293
IMPORT_C void *sqlite3_get_auxdata(sqlite3_context*, int N);
williamr@4
  4294
IMPORT_C void sqlite3_set_auxdata(sqlite3_context*, int N, void*, void (*)(void*));
williamr@4
  4295
williamr@4
  4296
williamr@4
  4297
/*
williamr@4
  4298
** CAPI3REF: Constants Defining Special Destructor Behavior {H10280} <S30100>
williamr@4
  4299
**
williamr@4
  4300
** These are special values for the destructor that is passed in as the
williamr@4
  4301
** final argument to routines like [sqlite3_result_blob()].  If the destructor
williamr@4
  4302
** argument is SQLITE_STATIC, it means that the content pointer is constant
williamr@4
  4303
** and will never change.  It does not need to be destroyed.  The
williamr@4
  4304
** SQLITE_TRANSIENT value means that the content will likely change in
williamr@4
  4305
** the near future and that SQLite should make its own private copy of
williamr@4
  4306
** the content before returning.
williamr@4
  4307
**
williamr@4
  4308
** The typedef is necessary to work around problems in certain
williamr@4
  4309
** C++ compilers.  See ticket #2191.
williamr@4
  4310
*/
williamr@4
  4311
typedef void (*sqlite3_destructor_type)(void*);
williamr@4
  4312
#define SQLITE_STATIC      ((sqlite3_destructor_type)0)
williamr@4
  4313
#define SQLITE_TRANSIENT   ((sqlite3_destructor_type)-1)
williamr@4
  4314
williamr@4
  4315
/*
williamr@4
  4316
** CAPI3REF: Setting The Result Of An SQL Function {H16400} <S20200>
williamr@4
  4317
**
williamr@4
  4318
** These routines are used by the xFunc or xFinal callbacks that
williamr@4
  4319
** implement SQL functions and aggregates.  See
williamr@4
  4320
** [sqlite3_create_function()] and [sqlite3_create_function16()]
williamr@4
  4321
** for additional information.
williamr@4
  4322
**
williamr@4
  4323
** These functions work very much like the [parameter binding] family of
williamr@4
  4324
** functions used to bind values to host parameters in prepared statements.
williamr@4
  4325
** Refer to the [SQL parameter] documentation for additional information.
williamr@4
  4326
**
williamr@4
  4327
** The sqlite3_result_blob() interface sets the result from
williamr@4
  4328
** an application-defined function to be the BLOB whose content is pointed
williamr@4
  4329
** to by the second parameter and which is N bytes long where N is the
williamr@4
  4330
** third parameter.
williamr@4
  4331
**
williamr@4
  4332
** The sqlite3_result_zeroblob() interfaces set the result of
williamr@4
  4333
** the application-defined function to be a BLOB containing all zero
williamr@4
  4334
** bytes and N bytes in size, where N is the value of the 2nd parameter.
williamr@4
  4335
**
williamr@4
  4336
** The sqlite3_result_double() interface sets the result from
williamr@4
  4337
** an application-defined function to be a floating point value specified
williamr@4
  4338
** by its 2nd argument.
williamr@4
  4339
**
williamr@4
  4340
** The sqlite3_result_error() and sqlite3_result_error16() functions
williamr@4
  4341
** cause the implemented SQL function to throw an exception.
williamr@4
  4342
** SQLite uses the string pointed to by the
williamr@4
  4343
** 2nd parameter of sqlite3_result_error() or sqlite3_result_error16()
williamr@4
  4344
** as the text of an error message.  SQLite interprets the error
williamr@4
  4345
** message string from sqlite3_result_error() as UTF-8. SQLite
williamr@4
  4346
** interprets the string from sqlite3_result_error16() as UTF-16 in native
williamr@4
  4347
** byte order.  If the third parameter to sqlite3_result_error()
williamr@4
  4348
** or sqlite3_result_error16() is negative then SQLite takes as the error
williamr@4
  4349
** message all text up through the first zero character.
williamr@4
  4350
** If the third parameter to sqlite3_result_error() or
williamr@4
  4351
** sqlite3_result_error16() is non-negative then SQLite takes that many
williamr@4
  4352
** bytes (not characters) from the 2nd parameter as the error message.
williamr@4
  4353
** The sqlite3_result_error() and sqlite3_result_error16()
williamr@4
  4354
** routines make a private copy of the error message text before
williamr@4
  4355
** they return.  Hence, the calling function can deallocate or
williamr@4
  4356
** modify the text after they return without harm.
williamr@4
  4357
** The sqlite3_result_error_code() function changes the error code
williamr@4
  4358
** returned by SQLite as a result of an error in a function.  By default,
williamr@4
  4359
** the error code is SQLITE_ERROR.  A subsequent call to sqlite3_result_error()
williamr@4
  4360
** or sqlite3_result_error16() resets the error code to SQLITE_ERROR.
williamr@4
  4361
**
williamr@4
  4362
** The sqlite3_result_toobig() interface causes SQLite to throw an error
williamr@4
  4363
** indicating that a string or BLOB is to long to represent.
williamr@4
  4364
**
williamr@4
  4365
** The sqlite3_result_nomem() interface causes SQLite to throw an error
williamr@4
  4366
** indicating that a memory allocation failed.
williamr@4
  4367
**
williamr@4
  4368
** The sqlite3_result_int() interface sets the return value
williamr@4
  4369
** of the application-defined function to be the 32-bit signed integer
williamr@4
  4370
** value given in the 2nd argument.
williamr@4
  4371
** The sqlite3_result_int64() interface sets the return value
williamr@4
  4372
** of the application-defined function to be the 64-bit signed integer
williamr@4
  4373
** value given in the 2nd argument.
williamr@4
  4374
**
williamr@4
  4375
** The sqlite3_result_null() interface sets the return value
williamr@4
  4376
** of the application-defined function to be NULL.
williamr@4
  4377
**
williamr@4
  4378
** The sqlite3_result_text(), sqlite3_result_text16(),
williamr@4
  4379
** sqlite3_result_text16le(), and sqlite3_result_text16be() interfaces
williamr@4
  4380
** set the return value of the application-defined function to be
williamr@4
  4381
** a text string which is represented as UTF-8, UTF-16 native byte order,
williamr@4
  4382
** UTF-16 little endian, or UTF-16 big endian, respectively.
williamr@4
  4383
** SQLite takes the text result from the application from
williamr@4
  4384
** the 2nd parameter of the sqlite3_result_text* interfaces.
williamr@4
  4385
** If the 3rd parameter to the sqlite3_result_text* interfaces
williamr@4
  4386
** is negative, then SQLite takes result text from the 2nd parameter
williamr@4
  4387
** through the first zero character.
williamr@4
  4388
** If the 3rd parameter to the sqlite3_result_text* interfaces
williamr@4
  4389
** is non-negative, then as many bytes (not characters) of the text
williamr@4
  4390
** pointed to by the 2nd parameter are taken as the application-defined
williamr@4
  4391
** function result.
williamr@4
  4392
** If the 4th parameter to the sqlite3_result_text* interfaces
williamr@4
  4393
** or sqlite3_result_blob is a non-NULL pointer, then SQLite calls that
williamr@4
  4394
** function as the destructor on the text or BLOB result when it has
williamr@4
  4395
** finished using that result.
williamr@4
  4396
** If the 4th parameter to the sqlite3_result_text* interfaces or
williamr@4
  4397
** sqlite3_result_blob is the special constant SQLITE_STATIC, then SQLite
williamr@4
  4398
** assumes that the text or BLOB result is in constant space and does not
williamr@4
  4399
** copy the it or call a destructor when it has finished using that result.
williamr@4
  4400
** If the 4th parameter to the sqlite3_result_text* interfaces
williamr@4
  4401
** or sqlite3_result_blob is the special constant SQLITE_TRANSIENT
williamr@4
  4402
** then SQLite makes a copy of the result into space obtained from
williamr@4
  4403
** from [sqlite3_malloc()] before it returns.
williamr@4
  4404
**
williamr@4
  4405
** The sqlite3_result_value() interface sets the result of
williamr@4
  4406
** the application-defined function to be a copy the
williamr@4
  4407
** [unprotected sqlite3_value] object specified by the 2nd parameter.  The
williamr@4
  4408
** sqlite3_result_value() interface makes a copy of the [sqlite3_value]
williamr@4
  4409
** so that the [sqlite3_value] specified in the parameter may change or
williamr@4
  4410
** be deallocated after sqlite3_result_value() returns without harm.
williamr@4
  4411
** A [protected sqlite3_value] object may always be used where an
williamr@4
  4412
** [unprotected sqlite3_value] object is required, so either
williamr@4
  4413
** kind of [sqlite3_value] object can be used with this interface.
williamr@4
  4414
**
williamr@4
  4415
** If these routines are called from within the different thread
williamr@4
  4416
** than the one containing the application-defined function that received
williamr@4
  4417
** the [sqlite3_context] pointer, the results are undefined.
williamr@4
  4418
**
williamr@4
  4419
** INVARIANTS:
williamr@4
  4420
**
williamr@4
  4421
** {H16403} The default return value from any SQL function is NULL.
williamr@4
  4422
**
williamr@4
  4423
** {H16406} The [sqlite3_result_blob(C,V,N,D)] interface changes the
williamr@4
  4424
**          return value of function C to be a BLOB that is N bytes
williamr@4
  4425
**          in length and with content pointed to by V.
williamr@4
  4426
**
williamr@4
  4427
** {H16409} The [sqlite3_result_double(C,V)] interface changes the
williamr@4
  4428
**          return value of function C to be the floating point value V.
williamr@4
  4429
**
williamr@4
  4430
** {H16412} The [sqlite3_result_error(C,V,N)] interface changes the return
williamr@4
  4431
**          value of function C to be an exception with error code
williamr@4
  4432
**          [SQLITE_ERROR] and a UTF-8 error message copied from V up to the
williamr@4
  4433
**          first zero byte or until N bytes are read if N is positive.
williamr@4
  4434
**
williamr@4
  4435
** {H16415} The [sqlite3_result_error16(C,V,N)] interface changes the return
williamr@4
  4436
**          value of function C to be an exception with error code
williamr@4
  4437
**          [SQLITE_ERROR] and a UTF-16 native byte order error message
williamr@4
  4438
**          copied from V up to the first zero terminator or until N bytes
williamr@4
  4439
**          are read if N is positive.
williamr@4
  4440
**
williamr@4
  4441
** {H16418} The [sqlite3_result_error_toobig(C)] interface changes the return
williamr@4
  4442
**          value of the function C to be an exception with error code
williamr@4
  4443
**          [SQLITE_TOOBIG] and an appropriate error message.
williamr@4
  4444
**
williamr@4
  4445
** {H16421} The [sqlite3_result_error_nomem(C)] interface changes the return
williamr@4
  4446
**          value of the function C to be an exception with error code
williamr@4
  4447
**          [SQLITE_NOMEM] and an appropriate error message.
williamr@4
  4448
**
williamr@4
  4449
** {H16424} The [sqlite3_result_error_code(C,E)] interface changes the return
williamr@4
  4450
**          value of the function C to be an exception with error code E.
williamr@4
  4451
**          The error message text is unchanged.
williamr@4
  4452
**
williamr@4
  4453
** {H16427} The [sqlite3_result_int(C,V)] interface changes the
williamr@4
  4454
**          return value of function C to be the 32-bit integer value V.
williamr@4
  4455
**
williamr@4
  4456
** {H16430} The [sqlite3_result_int64(C,V)] interface changes the
williamr@4
  4457
**          return value of function C to be the 64-bit integer value V.
williamr@4
  4458
**
williamr@4
  4459
** {H16433} The [sqlite3_result_null(C)] interface changes the
williamr@4
  4460
**          return value of function C to be NULL.
williamr@4
  4461
**
williamr@4
  4462
** {H16436} The [sqlite3_result_text(C,V,N,D)] interface changes the
williamr@4
  4463
**          return value of function C to be the UTF-8 string
williamr@4
  4464
**          V up to the first zero if N is negative
williamr@4
  4465
**          or the first N bytes of V if N is non-negative.
williamr@4
  4466
**
williamr@4
  4467
** {H16439} The [sqlite3_result_text16(C,V,N,D)] interface changes the
williamr@4
  4468
**          return value of function C to be the UTF-16 native byte order
williamr@4
  4469
**          string V up to the first zero if N is negative
williamr@4
  4470
**          or the first N bytes of V if N is non-negative.
williamr@4
  4471
**
williamr@4
  4472
** {H16442} The [sqlite3_result_text16be(C,V,N,D)] interface changes the
williamr@4
  4473
**          return value of function C to be the UTF-16 big-endian
williamr@4
  4474
**          string V up to the first zero if N is negative
williamr@4
  4475
**          or the first N bytes or V if N is non-negative.
williamr@4
  4476
**
williamr@4
  4477
** {H16445} The [sqlite3_result_text16le(C,V,N,D)] interface changes the
williamr@4
  4478
**          return value of function C to be the UTF-16 little-endian
williamr@4
  4479
**          string V up to the first zero if N is negative
williamr@4
  4480
**          or the first N bytes of V if N is non-negative.
williamr@4
  4481
**
williamr@4
  4482
** {H16448} The [sqlite3_result_value(C,V)] interface changes the
williamr@4
  4483
**          return value of function C to be the [unprotected sqlite3_value]
williamr@4
  4484
**          object V.
williamr@4
  4485
**
williamr@4
  4486
** {H16451} The [sqlite3_result_zeroblob(C,N)] interface changes the
williamr@4
  4487
**          return value of function C to be an N-byte BLOB of all zeros.
williamr@4
  4488
**
williamr@4
  4489
** {H16454} The [sqlite3_result_error()] and [sqlite3_result_error16()]
williamr@4
  4490
**          interfaces make a copy of their error message strings before
williamr@4
  4491
**          returning.
williamr@4
  4492
**
williamr@4
  4493
** {H16457} If the D destructor parameter to [sqlite3_result_blob(C,V,N,D)],
williamr@4
  4494
**          [sqlite3_result_text(C,V,N,D)], [sqlite3_result_text16(C,V,N,D)],
williamr@4
  4495
**          [sqlite3_result_text16be(C,V,N,D)], or
williamr@4
  4496
**          [sqlite3_result_text16le(C,V,N,D)] is the constant [SQLITE_STATIC]
williamr@4
  4497
**          then no destructor is ever called on the pointer V and SQLite
williamr@4
  4498
**          assumes that V is immutable.
williamr@4
  4499
**
williamr@4
  4500
** {H16460} If the D destructor parameter to [sqlite3_result_blob(C,V,N,D)],
williamr@4
  4501
**          [sqlite3_result_text(C,V,N,D)], [sqlite3_result_text16(C,V,N,D)],
williamr@4
  4502
**          [sqlite3_result_text16be(C,V,N,D)], or
williamr@4
  4503
**          [sqlite3_result_text16le(C,V,N,D)] is the constant
williamr@4
  4504
**          [SQLITE_TRANSIENT] then the interfaces makes a copy of the
williamr@4
  4505
**          content of V and retains the copy.
williamr@4
  4506
**
williamr@4
  4507
** {H16463} If the D destructor parameter to [sqlite3_result_blob(C,V,N,D)],
williamr@4
  4508
**          [sqlite3_result_text(C,V,N,D)], [sqlite3_result_text16(C,V,N,D)],
williamr@4
  4509
**          [sqlite3_result_text16be(C,V,N,D)], or
williamr@4
  4510
**          [sqlite3_result_text16le(C,V,N,D)] is some value other than
williamr@4
  4511
**          the constants [SQLITE_STATIC] and [SQLITE_TRANSIENT] then
williamr@4
  4512
**          SQLite will invoke the destructor D with V as its only argument
williamr@4
  4513
**          when it has finished with the V value.
williamr@4
  4514
*/
williamr@4
  4515
IMPORT_C void sqlite3_result_blob(sqlite3_context*, const void*, int, void(*)(void*));
williamr@4
  4516
IMPORT_C void sqlite3_result_double(sqlite3_context*, double);
williamr@4
  4517
IMPORT_C void sqlite3_result_error(sqlite3_context*, const char*, int);
williamr@4
  4518
IMPORT_C void sqlite3_result_error16(sqlite3_context*, const void*, int);
williamr@4
  4519
IMPORT_C void sqlite3_result_error_toobig(sqlite3_context*);
williamr@4
  4520
IMPORT_C void sqlite3_result_error_nomem(sqlite3_context*);
williamr@4
  4521
IMPORT_C void sqlite3_result_error_code(sqlite3_context*, int);
williamr@4
  4522
IMPORT_C void sqlite3_result_int(sqlite3_context*, int);
williamr@4
  4523
IMPORT_C void sqlite3_result_int64(sqlite3_context*, sqlite3_int64);
williamr@4
  4524
IMPORT_C void sqlite3_result_null(sqlite3_context*);
williamr@4
  4525
IMPORT_C void sqlite3_result_text(sqlite3_context*, const char*, int, void(*)(void*));
williamr@4
  4526
IMPORT_C void sqlite3_result_text16(sqlite3_context*, const void*, int, void(*)(void*));
williamr@4
  4527
IMPORT_C void sqlite3_result_text16le(sqlite3_context*, const void*, int,void(*)(void*));
williamr@4
  4528
IMPORT_C void sqlite3_result_text16be(sqlite3_context*, const void*, int,void(*)(void*));
williamr@4
  4529
IMPORT_C void sqlite3_result_value(sqlite3_context*, sqlite3_value*);
williamr@4
  4530
IMPORT_C void sqlite3_result_zeroblob(sqlite3_context*, int n);
williamr@4
  4531
williamr@4
  4532
/*
williamr@4
  4533
** CAPI3REF: Define New Collating Sequences {H16600} <S20300>
williamr@4
  4534
**
williamr@4
  4535
** These functions are used to add new collation sequences to the
williamr@4
  4536
** [database connection] specified as the first argument.
williamr@4
  4537
**
williamr@4
  4538
** The name of the new collation sequence is specified as a UTF-8 string
williamr@4
  4539
** for sqlite3_create_collation() and sqlite3_create_collation_v2()
williamr@4
  4540
** and a UTF-16 string for sqlite3_create_collation16(). In all cases
williamr@4
  4541
** the name is passed as the second function argument.
williamr@4
  4542
**
williamr@4
  4543
** The third argument may be one of the constants [SQLITE_UTF8],
williamr@4
  4544
** [SQLITE_UTF16LE] or [SQLITE_UTF16BE], indicating that the user-supplied
williamr@4
  4545
** routine expects to be passed pointers to strings encoded using UTF-8,
williamr@4
  4546
** UTF-16 little-endian, or UTF-16 big-endian, respectively. The
williamr@4
  4547
** third argument might also be [SQLITE_UTF16_ALIGNED] to indicate that
williamr@4
  4548
** the routine expects pointers to 16-bit word aligned strings
williamr@4
  4549
** of UTF-16 in the native byte order of the host computer.
williamr@4
  4550
**
williamr@4
  4551
** A pointer to the user supplied routine must be passed as the fifth
williamr@4
  4552
** argument.  If it is NULL, this is the same as deleting the collation
williamr@4
  4553
** sequence (so that SQLite cannot call it anymore).
williamr@4
  4554
** Each time the application supplied function is invoked, it is passed
williamr@4
  4555
** as its first parameter a copy of the void* passed as the fourth argument
williamr@4
  4556
** to sqlite3_create_collation() or sqlite3_create_collation16().
williamr@4
  4557
**
williamr@4
  4558
** The remaining arguments to the application-supplied routine are two strings,
williamr@4
  4559
** each represented by a (length, data) pair and encoded in the encoding
williamr@4
  4560
** that was passed as the third argument when the collation sequence was
williamr@4
  4561
** registered. {END}  The application defined collation routine should
williamr@4
  4562
** return negative, zero or positive if the first string is less than,
williamr@4
  4563
** equal to, or greater than the second string. i.e. (STRING1 - STRING2).
williamr@4
  4564
**
williamr@4
  4565
** The sqlite3_create_collation_v2() works like sqlite3_create_collation()
williamr@4
  4566
** except that it takes an extra argument which is a destructor for
williamr@4
  4567
** the collation.  The destructor is called when the collation is
williamr@4
  4568
** destroyed and is passed a copy of the fourth parameter void* pointer
williamr@4
  4569
** of the sqlite3_create_collation_v2().
williamr@4
  4570
** Collations are destroyed when they are overridden by later calls to the
williamr@4
  4571
** collation creation functions or when the [database connection] is closed
williamr@4
  4572
** using [sqlite3_close()].
williamr@4
  4573
**
williamr@4
  4574
** INVARIANTS:
williamr@4
  4575
**
williamr@4
  4576
** {H16603} A successful call to the
williamr@4
  4577
**          [sqlite3_create_collation_v2(B,X,E,P,F,D)] interface
williamr@4
  4578
**          registers function F as the comparison function used to
williamr@4
  4579
**          implement collation X on the [database connection] B for
williamr@4
  4580
**          databases having encoding E.
williamr@4
  4581
**
williamr@4
  4582
** {H16604} SQLite understands the X parameter to
williamr@4
  4583
**          [sqlite3_create_collation_v2(B,X,E,P,F,D)] as a zero-terminated
williamr@4
  4584
**          UTF-8 string in which case is ignored for ASCII characters and
williamr@4
  4585
**          is significant for non-ASCII characters.
williamr@4
  4586
**
williamr@4
  4587
** {H16606} Successive calls to [sqlite3_create_collation_v2(B,X,E,P,F,D)]
williamr@4
  4588
**          with the same values for B, X, and E, override prior values
williamr@4
  4589
**          of P, F, and D.
williamr@4
  4590
**
williamr@4
  4591
** {H16609} If the destructor D in [sqlite3_create_collation_v2(B,X,E,P,F,D)]
williamr@4
  4592
**          is not NULL then it is called with argument P when the
williamr@4
  4593
**          collating function is dropped by SQLite.
williamr@4
  4594
**
williamr@4
  4595
** {H16612} A collating function is dropped when it is overloaded.
williamr@4
  4596
**
williamr@4
  4597
** {H16615} A collating function is dropped when the database connection
williamr@4
  4598
**          is closed using [sqlite3_close()].
williamr@4
  4599
**
williamr@4
  4600
** {H16618} The pointer P in [sqlite3_create_collation_v2(B,X,E,P,F,D)]
williamr@4
  4601
**          is passed through as the first parameter to the comparison
williamr@4
  4602
**          function F for all subsequent invocations of F.
williamr@4
  4603
**
williamr@4
  4604
** {H16621} A call to [sqlite3_create_collation(B,X,E,P,F)] is exactly
williamr@4
  4605
**          the same as a call to [sqlite3_create_collation_v2()] with
williamr@4
  4606
**          the same parameters and a NULL destructor.
williamr@4
  4607
**
williamr@4
  4608
** {H16624} Following a [sqlite3_create_collation_v2(B,X,E,P,F,D)],
williamr@4
  4609
**          SQLite uses the comparison function F for all text comparison
williamr@4
  4610
**          operations on the [database connection] B on text values that
williamr@4
  4611
**          use the collating sequence named X.
williamr@4
  4612
**
williamr@4
  4613
** {H16627} The [sqlite3_create_collation16(B,X,E,P,F)] works the same
williamr@4
  4614
**          as [sqlite3_create_collation(B,X,E,P,F)] except that the
williamr@4
  4615
**          collation name X is understood as UTF-16 in native byte order
williamr@4
  4616
**          instead of UTF-8.
williamr@4
  4617
**
williamr@4
  4618
** {H16630} When multiple comparison functions are available for the same
williamr@4
  4619
**          collating sequence, SQLite chooses the one whose text encoding
williamr@4
  4620
**          requires the least amount of conversion from the default
williamr@4
  4621
**          text encoding of the database.
williamr@4
  4622
*/
williamr@4
  4623
IMPORT_C int sqlite3_create_collation(
williamr@4
  4624
  sqlite3*, 
williamr@4
  4625
  const char *zName, 
williamr@4
  4626
  int eTextRep, 
williamr@4
  4627
  void*,
williamr@4
  4628
  int(*xCompare)(void*,int,const void*,int,const void*)
williamr@4
  4629
);
williamr@4
  4630
IMPORT_C int sqlite3_create_collation_v2(
williamr@4
  4631
  sqlite3*, 
williamr@4
  4632
  const char *zName, 
williamr@4
  4633
  int eTextRep, 
williamr@4
  4634
  void*,
williamr@4
  4635
  int(*xCompare)(void*,int,const void*,int,const void*),
williamr@4
  4636
  void(*xDestroy)(void*)
williamr@4
  4637
);
williamr@4
  4638
IMPORT_C int sqlite3_create_collation16(
williamr@4
  4639
  sqlite3*, 
williamr@4
  4640
  const void *zName,
williamr@4
  4641
  int eTextRep, 
williamr@4
  4642
  void*,
williamr@4
  4643
  int(*xCompare)(void*,int,const void*,int,const void*)
williamr@4
  4644
);
williamr@4
  4645
williamr@4
  4646
/*
williamr@4
  4647
** CAPI3REF: Collation Needed Callbacks {H16700} <S20300>
williamr@4
  4648
**
williamr@4
  4649
** To avoid having to register all collation sequences before a database
williamr@4
  4650
** can be used, a single callback function may be registered with the
williamr@4
  4651
** [database connection] to be called whenever an undefined collation
williamr@4
  4652
** sequence is required.
williamr@4
  4653
**
williamr@4
  4654
** If the function is registered using the sqlite3_collation_needed() API,
williamr@4
  4655
** then it is passed the names of undefined collation sequences as strings
williamr@4
  4656
** encoded in UTF-8. {H16703} If sqlite3_collation_needed16() is used,
williamr@4
  4657
** the names are passed as UTF-16 in machine native byte order.
williamr@4
  4658
** A call to either function replaces any existing callback.
williamr@4
  4659
**
williamr@4
  4660
** When the callback is invoked, the first argument passed is a copy
williamr@4
  4661
** of the second argument to sqlite3_collation_needed() or
williamr@4
  4662
** sqlite3_collation_needed16().  The second argument is the database
williamr@4
  4663
** connection.  The third argument is one of [SQLITE_UTF8], [SQLITE_UTF16BE],
williamr@4
  4664
** or [SQLITE_UTF16LE], indicating the most desirable form of the collation
williamr@4
  4665
** sequence function required.  The fourth parameter is the name of the
williamr@4
  4666
** required collation sequence.
williamr@4
  4667
**
williamr@4
  4668
** The callback function should register the desired collation using
williamr@4
  4669
** [sqlite3_create_collation()], [sqlite3_create_collation16()], or
williamr@4
  4670
** [sqlite3_create_collation_v2()].
williamr@4
  4671
**
williamr@4
  4672
** INVARIANTS:
williamr@4
  4673
**
williamr@4
  4674
** {H16702} A successful call to [sqlite3_collation_needed(D,P,F)]
williamr@4
  4675
**          or [sqlite3_collation_needed16(D,P,F)] causes
williamr@4
  4676
**          the [database connection] D to invoke callback F with first
williamr@4
  4677
**          parameter P whenever it needs a comparison function for a
williamr@4
  4678
**          collating sequence that it does not know about.
williamr@4
  4679
**
williamr@4
  4680
** {H16704} Each successful call to [sqlite3_collation_needed()] or
williamr@4
  4681
**          [sqlite3_collation_needed16()] overrides the callback registered
williamr@4
  4682
**          on the same [database connection] by prior calls to either
williamr@4
  4683
**          interface.
williamr@4
  4684
**
williamr@4
  4685
** {H16706} The name of the requested collating function passed in the
williamr@4
  4686
**          4th parameter to the callback is in UTF-8 if the callback
williamr@4
  4687
**          was registered using [sqlite3_collation_needed()] and
williamr@4
  4688
**          is in UTF-16 native byte order if the callback was
williamr@4
  4689
**          registered using [sqlite3_collation_needed16()].
williamr@4
  4690
*/
williamr@4
  4691
IMPORT_C int sqlite3_collation_needed(
williamr@4
  4692
  sqlite3*, 
williamr@4
  4693
  void*, 
williamr@4
  4694
  void(*)(void*,sqlite3*,int eTextRep,const char*)
williamr@4
  4695
);
williamr@4
  4696
IMPORT_C int sqlite3_collation_needed16(
williamr@4
  4697
  sqlite3*, 
williamr@4
  4698
  void*,
williamr@4
  4699
  void(*)(void*,sqlite3*,int eTextRep,const void*)
williamr@4
  4700
);
williamr@4
  4701
williamr@4
  4702
/*
williamr@4
  4703
** Specify the key for an encrypted database.  This routine should be
williamr@4
  4704
** called right after sqlite3_open().
williamr@4
  4705
**
williamr@4
  4706
** The code to implement this API is not available in the public release
williamr@4
  4707
** of SQLite.
williamr@4
  4708
*/
williamr@4
  4709
IMPORT_C int sqlite3_key(
williamr@4
  4710
  sqlite3 *db,                   /* Database to be rekeyed */
williamr@4
  4711
  const void *pKey, int nKey     /* The key */
williamr@4
  4712
);
williamr@4
  4713
williamr@4
  4714
/*
williamr@4
  4715
** Change the key on an open database.  If the current database is not
williamr@4
  4716
** encrypted, this routine will encrypt it.  If pNew==0 or nNew==0, the
williamr@4
  4717
** database is decrypted.
williamr@4
  4718
**
williamr@4
  4719
** The code to implement this API is not available in the public release
williamr@4
  4720
** of SQLite.
williamr@4
  4721
*/
williamr@4
  4722
IMPORT_C int sqlite3_rekey(
williamr@4
  4723
  sqlite3 *db,                   /* Database to be rekeyed */
williamr@4
  4724
  const void *pKey, int nKey     /* The new key */
williamr@4
  4725
);
williamr@4
  4726
williamr@4
  4727
/*
williamr@4
  4728
** CAPI3REF: Suspend Execution For A Short Time {H10530} <S40410>
williamr@4
  4729
**
williamr@4
  4730
** The sqlite3_sleep() function causes the current thread to suspend execution
williamr@4
  4731
** for at least a number of milliseconds specified in its parameter.
williamr@4
  4732
**
williamr@4
  4733
** If the operating system does not support sleep requests with
williamr@4
  4734
** millisecond time resolution, then the time will be rounded up to
williamr@4
  4735
** the nearest second. The number of milliseconds of sleep actually
williamr@4
  4736
** requested from the operating system is returned.
williamr@4
  4737
**
williamr@4
  4738
** SQLite implements this interface by calling the xSleep()
williamr@4
  4739
** method of the default [sqlite3_vfs] object.
williamr@4
  4740
**
williamr@4
  4741
** INVARIANTS:
williamr@4
  4742
**
williamr@4
  4743
** {H10533} The [sqlite3_sleep(M)] interface invokes the xSleep
williamr@4
  4744
**          method of the default [sqlite3_vfs|VFS] in order to
williamr@4
  4745
**          suspend execution of the current thread for at least
williamr@4
  4746
**          M milliseconds.
williamr@4
  4747
**
williamr@4
  4748
** {H10536} The [sqlite3_sleep(M)] interface returns the number of
williamr@4
  4749
**          milliseconds of sleep actually requested of the operating
williamr@4
  4750
**          system, which might be larger than the parameter M.
williamr@4
  4751
*/
williamr@4
  4752
IMPORT_C int sqlite3_sleep(int);
williamr@4
  4753
williamr@4
  4754
/*
williamr@4
  4755
** CAPI3REF: Name Of The Folder Holding Temporary Files {H10310} <S20000>
williamr@4
  4756
**
williamr@4
  4757
** If this global variable is made to point to a string which is
williamr@4
  4758
** the name of a folder (a.k.a. directory), then all temporary files
williamr@4
  4759
** created by SQLite will be placed in that directory.  If this variable
williamr@4
  4760
** is a NULL pointer, then SQLite performs a search for an appropriate
williamr@4
  4761
** temporary file directory.
williamr@4
  4762
**
williamr@4
  4763
** It is not safe to modify this variable once a [database connection]
williamr@4
  4764
** has been opened.  It is intended that this variable be set once
williamr@4
  4765
** as part of process initialization and before any SQLite interface
williamr@4
  4766
** routines have been call and remain unchanged thereafter.
williamr@4
  4767
*/
williamr@4
  4768
SQLITE_EXTERN char *sqlite3_temp_directory;
williamr@4
  4769
williamr@4
  4770
/*
williamr@4
  4771
** CAPI3REF: Test For Auto-Commit Mode {H12930} <S60200>
williamr@4
  4772
** KEYWORDS: {autocommit mode}
williamr@4
  4773
**
williamr@4
  4774
** The sqlite3_get_autocommit() interface returns non-zero or
williamr@4
  4775
** zero if the given database connection is or is not in autocommit mode,
williamr@4
  4776
** respectively.  Autocommit mode is on by default.
williamr@4
  4777
** Autocommit mode is disabled by a [BEGIN] statement.
williamr@4
  4778
** Autocommit mode is re-enabled by a [COMMIT] or [ROLLBACK].
williamr@4
  4779
**
williamr@4
  4780
** If certain kinds of errors occur on a statement within a multi-statement
williamr@4
  4781
** transaction (errors including [SQLITE_FULL], [SQLITE_IOERR],
williamr@4
  4782
** [SQLITE_NOMEM], [SQLITE_BUSY], and [SQLITE_INTERRUPT]) then the
williamr@4
  4783
** transaction might be rolled back automatically.  The only way to
williamr@4
  4784
** find out whether SQLite automatically rolled back the transaction after
williamr@4
  4785
** an error is to use this function.
williamr@4
  4786
**
williamr@4
  4787
** INVARIANTS:
williamr@4
  4788
**
williamr@4
  4789
** {H12931} The [sqlite3_get_autocommit(D)] interface returns non-zero or
williamr@4
  4790
**          zero if the [database connection] D is or is not in autocommit
williamr@4
  4791
**          mode, respectively.
williamr@4
  4792
**
williamr@4
  4793
** {H12932} Autocommit mode is on by default.
williamr@4
  4794
**
williamr@4
  4795
** {H12933} Autocommit mode is disabled by a successful [BEGIN] statement.
williamr@4
  4796
**
williamr@4
  4797
** {H12934} Autocommit mode is enabled by a successful [COMMIT] or [ROLLBACK]
williamr@4
  4798
**          statement.
williamr@4
  4799
**
williamr@4
  4800
** ASSUMPTIONS:
williamr@4
  4801
**
williamr@4
  4802
** {A12936} If another thread changes the autocommit status of the database
williamr@4
  4803
**          connection while this routine is running, then the return value
williamr@4
  4804
**          is undefined.
williamr@4
  4805
*/
williamr@4
  4806
IMPORT_C int sqlite3_get_autocommit(sqlite3*);
williamr@4
  4807
williamr@4
  4808
/*
williamr@4
  4809
** CAPI3REF: Find The Database Handle Of A Prepared Statement {H13120} <S60600>
williamr@4
  4810
**
williamr@4
  4811
** The sqlite3_db_handle interface returns the [database connection] handle
williamr@4
  4812
** to which a [prepared statement] belongs.  The database handle returned by
williamr@4
  4813
** sqlite3_db_handle is the same database handle that was the first argument
williamr@4
  4814
** to the [sqlite3_prepare_v2()] call (or its variants) that was used to
williamr@4
  4815
** create the statement in the first place.
williamr@4
  4816
**
williamr@4
  4817
** INVARIANTS:
williamr@4
  4818
**
williamr@4
  4819
** {H13123} The [sqlite3_db_handle(S)] interface returns a pointer
williamr@4
  4820
**          to the [database connection] associated with the
williamr@4
  4821
**          [prepared statement] S.
williamr@4
  4822
*/
williamr@4
  4823
IMPORT_C sqlite3 *sqlite3_db_handle(sqlite3_stmt*);
williamr@4
  4824
williamr@4
  4825
/*
williamr@4
  4826
** CAPI3REF: Find the next prepared statement {H13140} <S60600>
williamr@4
  4827
**
williamr@4
  4828
** This interface returns a pointer to the next [prepared statement] after
williamr@4
  4829
** pStmt associated with the [database connection] pDb.  If pStmt is NULL
williamr@4
  4830
** then this interface returns a pointer to the first prepared statement
williamr@4
  4831
** associated with the database connection pDb.  If no prepared statement
williamr@4
  4832
** satisfies the conditions of this routine, it returns NULL.
williamr@4
  4833
**
williamr@4
  4834
** INVARIANTS:
williamr@4
  4835
**
williamr@4
  4836
** {H13143} If D is a [database connection] that holds one or more
williamr@4
  4837
**          unfinalized [prepared statements] and S is a NULL pointer,
williamr@4
  4838
**          then [sqlite3_next_stmt(D, S)] routine shall return a pointer
williamr@4
  4839
**          to one of the prepared statements associated with D.
williamr@4
  4840
**
williamr@4
  4841
** {H13146} If D is a [database connection] that holds no unfinalized
williamr@4
  4842
**          [prepared statements] and S is a NULL pointer, then
williamr@4
  4843
**          [sqlite3_next_stmt(D, S)] routine shall return a NULL pointer.
williamr@4
  4844
**
williamr@4
  4845
** {H13149} If S is a [prepared statement] in the [database connection] D
williamr@4
  4846
**          and S is not the last prepared statement in D, then
williamr@4
  4847
**          [sqlite3_next_stmt(D, S)] routine shall return a pointer
williamr@4
  4848
**          to the next prepared statement in D after S.
williamr@4
  4849
**
williamr@4
  4850
** {H13152} If S is the last [prepared statement] in the
williamr@4
  4851
**          [database connection] D then the [sqlite3_next_stmt(D, S)]
williamr@4
  4852
**          routine shall return a NULL pointer.
williamr@4
  4853
**
williamr@4
  4854
** ASSUMPTIONS:
williamr@4
  4855
**
williamr@4
  4856
** {A13154} The [database connection] pointer D in a call to
williamr@4
  4857
**          [sqlite3_next_stmt(D,S)] must refer to an open database
williamr@4
  4858
**          connection and in particular must not be a NULL pointer.
williamr@4
  4859
*/
williamr@4
  4860
IMPORT_C sqlite3_stmt *sqlite3_next_stmt(sqlite3 *pDb, sqlite3_stmt *pStmt);
williamr@4
  4861
williamr@4
  4862
/*
williamr@4
  4863
** CAPI3REF: Commit And Rollback Notification Callbacks {H12950} <S60400>
williamr@4
  4864
**
williamr@4
  4865
** The sqlite3_commit_hook() interface registers a callback
williamr@4
  4866
** function to be invoked whenever a transaction is committed.
williamr@4
  4867
** Any callback set by a previous call to sqlite3_commit_hook()
williamr@4
  4868
** for the same database connection is overridden.
williamr@4
  4869
** The sqlite3_rollback_hook() interface registers a callback
williamr@4
  4870
** function to be invoked whenever a transaction is committed.
williamr@4
  4871
** Any callback set by a previous call to sqlite3_commit_hook()
williamr@4
  4872
** for the same database connection is overridden.
williamr@4
  4873
** The pArg argument is passed through to the callback.
williamr@4
  4874
** If the callback on a commit hook function returns non-zero,
williamr@4
  4875
** then the commit is converted into a rollback.
williamr@4
  4876
**
williamr@4
  4877
** If another function was previously registered, its
williamr@4
  4878
** pArg value is returned.  Otherwise NULL is returned.
williamr@4
  4879
**
williamr@4
  4880
** The callback implementation must not do anything that will modify
williamr@4
  4881
** the database connection that invoked the callback.  Any actions
williamr@4
  4882
** to modify the database connection must be deferred until after the
williamr@4
  4883
** completion of the [sqlite3_step()] call that triggered the commit
williamr@4
  4884
** or rollback hook in the first place.
williamr@4
  4885
** Note that [sqlite3_prepare_v2()] and [sqlite3_step()] both modify their
williamr@4
  4886
** database connections for the meaning of "modify" in this paragraph.
williamr@4
  4887
**
williamr@4
  4888
** Registering a NULL function disables the callback.
williamr@4
  4889
**
williamr@4
  4890
** For the purposes of this API, a transaction is said to have been
williamr@4
  4891
** rolled back if an explicit "ROLLBACK" statement is executed, or
williamr@4
  4892
** an error or constraint causes an implicit rollback to occur.
williamr@4
  4893
** The rollback callback is not invoked if a transaction is
williamr@4
  4894
** automatically rolled back because the database connection is closed.
williamr@4
  4895
** The rollback callback is not invoked if a transaction is
williamr@4
  4896
** rolled back because a commit callback returned non-zero.
williamr@4
  4897
** <todo> Check on this </todo>
williamr@4
  4898
**
williamr@4
  4899
** INVARIANTS:
williamr@4
  4900
**
williamr@4
  4901
** {H12951} The [sqlite3_commit_hook(D,F,P)] interface registers the
williamr@4
  4902
**          callback function F to be invoked with argument P whenever
williamr@4
  4903
**          a transaction commits on the [database connection] D.
williamr@4
  4904
**
williamr@4
  4905
** {H12952} The [sqlite3_commit_hook(D,F,P)] interface returns the P argument
williamr@4
  4906
**          from the previous call with the same [database connection] D,
williamr@4
  4907
**          or NULL on the first call for a particular database connection D.
williamr@4
  4908
**
williamr@4
  4909
** {H12953} Each call to [sqlite3_commit_hook()] overwrites the callback
williamr@4
  4910
**          registered by prior calls.
williamr@4
  4911
**
williamr@4
  4912
** {H12954} If the F argument to [sqlite3_commit_hook(D,F,P)] is NULL
williamr@4
  4913
**          then the commit hook callback is canceled and no callback
williamr@4
  4914
**          is invoked when a transaction commits.
williamr@4
  4915
**
williamr@4
  4916
** {H12955} If the commit callback returns non-zero then the commit is
williamr@4
  4917
**          converted into a rollback.
williamr@4
  4918
**
williamr@4
  4919
** {H12961} The [sqlite3_rollback_hook(D,F,P)] interface registers the
williamr@4
  4920
**          callback function F to be invoked with argument P whenever
williamr@4
  4921
**          a transaction rolls back on the [database connection] D.
williamr@4
  4922
**
williamr@4
  4923
** {H12962} The [sqlite3_rollback_hook(D,F,P)] interface returns the P
williamr@4
  4924
**          argument from the previous call with the same
williamr@4
  4925
**          [database connection] D, or NULL on the first call
williamr@4
  4926
**          for a particular database connection D.
williamr@4
  4927
**
williamr@4
  4928
** {H12963} Each call to [sqlite3_rollback_hook()] overwrites the callback
williamr@4
  4929
**          registered by prior calls.
williamr@4
  4930
**
williamr@4
  4931
** {H12964} If the F argument to [sqlite3_rollback_hook(D,F,P)] is NULL
williamr@4
  4932
**          then the rollback hook callback is canceled and no callback
williamr@4
  4933
**          is invoked when a transaction rolls back.
williamr@4
  4934
*/
williamr@4
  4935
IMPORT_C void *sqlite3_commit_hook(sqlite3*, int(*)(void*), void*);
williamr@4
  4936
IMPORT_C void *sqlite3_rollback_hook(sqlite3*, void(*)(void *), void*);
williamr@4
  4937
williamr@4
  4938
/*
williamr@4
  4939
** CAPI3REF: Data Change Notification Callbacks {H12970} <S60400>
williamr@4
  4940
**
williamr@4
  4941
** The sqlite3_update_hook() interface registers a callback function
williamr@4
  4942
** with the [database connection] identified by the first argument
williamr@4
  4943
** to be invoked whenever a row is updated, inserted or deleted.
williamr@4
  4944
** Any callback set by a previous call to this function
williamr@4
  4945
** for the same database connection is overridden.
williamr@4
  4946
**
williamr@4
  4947
** The second argument is a pointer to the function to invoke when a
williamr@4
  4948
** row is updated, inserted or deleted.
williamr@4
  4949
** The first argument to the callback is a copy of the third argument
williamr@4
  4950
** to sqlite3_update_hook().
williamr@4
  4951
** The second callback argument is one of [SQLITE_INSERT], [SQLITE_DELETE],
williamr@4
  4952
** or [SQLITE_UPDATE], depending on the operation that caused the callback
williamr@4
  4953
** to be invoked.
williamr@4
  4954
** The third and fourth arguments to the callback contain pointers to the
williamr@4
  4955
** database and table name containing the affected row.
williamr@4
  4956
** The final callback parameter is the rowid of the row. In the case of
williamr@4
  4957
** an update, this is the rowid after the update takes place.
williamr@4
  4958
**
williamr@4
  4959
** The update hook is not invoked when internal system tables are
williamr@4
  4960
** modified (i.e. sqlite_master and sqlite_sequence).
williamr@4
  4961
**
williamr@4
  4962
** The update hook implementation must not do anything that will modify
williamr@4
  4963
** the database connection that invoked the update hook.  Any actions
williamr@4
  4964
** to modify the database connection must be deferred until after the
williamr@4
  4965
** completion of the [sqlite3_step()] call that triggered the update hook.
williamr@4
  4966
** Note that [sqlite3_prepare_v2()] and [sqlite3_step()] both modify their
williamr@4
  4967
** database connections for the meaning of "modify" in this paragraph.
williamr@4
  4968
**
williamr@4
  4969
** If another function was previously registered, its pArg value
williamr@4
  4970
** is returned.  Otherwise NULL is returned.
williamr@4
  4971
**
williamr@4
  4972
** INVARIANTS:
williamr@4
  4973
**
williamr@4
  4974
** {H12971} The [sqlite3_update_hook(D,F,P)] interface causes the callback
williamr@4
  4975
**          function F to be invoked with first parameter P whenever
williamr@4
  4976
**          a table row is modified, inserted, or deleted on
williamr@4
  4977
**          the [database connection] D.
williamr@4
  4978
**
williamr@4
  4979
** {H12973} The [sqlite3_update_hook(D,F,P)] interface returns the value
williamr@4
  4980
**          of P for the previous call on the same [database connection] D,
williamr@4
  4981
**          or NULL for the first call.
williamr@4
  4982
**
williamr@4
  4983
** {H12975} If the update hook callback F in [sqlite3_update_hook(D,F,P)]
williamr@4
  4984
**          is NULL then the no update callbacks are made.
williamr@4
  4985
**
williamr@4
  4986
** {H12977} Each call to [sqlite3_update_hook(D,F,P)] overrides prior calls
williamr@4
  4987
**          to the same interface on the same [database connection] D.
williamr@4
  4988
**
williamr@4
  4989
** {H12979} The update hook callback is not invoked when internal system
williamr@4
  4990
**          tables such as sqlite_master and sqlite_sequence are modified.
williamr@4
  4991
**
williamr@4
  4992
** {H12981} The second parameter to the update callback
williamr@4
  4993
**          is one of [SQLITE_INSERT], [SQLITE_DELETE] or [SQLITE_UPDATE],
williamr@4
  4994
**          depending on the operation that caused the callback to be invoked.
williamr@4
  4995
**
williamr@4
  4996
** {H12983} The third and fourth arguments to the callback contain pointers
williamr@4
  4997
**          to zero-terminated UTF-8 strings which are the names of the
williamr@4
  4998
**          database and table that is being updated.
williamr@4
  4999
williamr@4
  5000
** {H12985} The final callback parameter is the rowid of the row after
williamr@4
  5001
**          the change occurs.
williamr@4
  5002
*/
williamr@4
  5003
IMPORT_C void *sqlite3_update_hook(
williamr@4
  5004
  sqlite3*, 
williamr@4
  5005
  void(*)(void *,int ,char const *,char const *,sqlite3_int64),
williamr@4
  5006
  void*
williamr@4
  5007
);
williamr@4
  5008
williamr@4
  5009
/*
williamr@4
  5010
** CAPI3REF: Enable Or Disable Shared Pager Cache {H10330} <S30900>
williamr@4
  5011
** KEYWORDS: {shared cache} {shared cache mode}
williamr@4
  5012
**
williamr@4
  5013
** This routine enables or disables the sharing of the database cache
williamr@4
  5014
** and schema data structures between [database connection | connections]
williamr@4
  5015
** to the same database. Sharing is enabled if the argument is true
williamr@4
  5016
** and disabled if the argument is false.
williamr@4
  5017
**
williamr@4
  5018
** Cache sharing is enabled and disabled for an entire process. {END}
williamr@4
  5019
** This is a change as of SQLite version 3.5.0. In prior versions of SQLite,
williamr@4
  5020
** sharing was enabled or disabled for each thread separately.
williamr@4
  5021
**
williamr@4
  5022
** The cache sharing mode set by this interface effects all subsequent
williamr@4
  5023
** calls to [sqlite3_open()], [sqlite3_open_v2()], and [sqlite3_open16()].
williamr@4
  5024
** Existing database connections continue use the sharing mode
williamr@4
  5025
** that was in effect at the time they were opened.
williamr@4
  5026
**
williamr@4
  5027
** Virtual tables cannot be used with a shared cache.  When shared
williamr@4
  5028
** cache is enabled, the [sqlite3_create_module()] API used to register
williamr@4
  5029
** virtual tables will always return an error.
williamr@4
  5030
**
williamr@4
  5031
** This routine returns [SQLITE_OK] if shared cache was enabled or disabled
williamr@4
  5032
** successfully.  An [error code] is returned otherwise.
williamr@4
  5033
**
williamr@4
  5034
** Shared cache is disabled by default. But this might change in
williamr@4
  5035
** future releases of SQLite.  Applications that care about shared
williamr@4
  5036
** cache setting should set it explicitly.
williamr@4
  5037
**
williamr@4
  5038
** INVARIANTS:
williamr@4
  5039
**
williamr@4
  5040
** {H10331} A successful invocation of [sqlite3_enable_shared_cache(B)]
williamr@4
  5041
**          will enable or disable shared cache mode for any subsequently
williamr@4
  5042
**          created [database connection] in the same process.
williamr@4
  5043
**
williamr@4
  5044
** {H10336} When shared cache is enabled, the [sqlite3_create_module()]
williamr@4
  5045
**          interface will always return an error.
williamr@4
  5046
**
williamr@4
  5047
** {H10337} The [sqlite3_enable_shared_cache(B)] interface returns
williamr@4
  5048
**          [SQLITE_OK] if shared cache was enabled or disabled successfully.
williamr@4
  5049
**
williamr@4
  5050
** {H10339} Shared cache is disabled by default.
williamr@4
  5051
*/
williamr@4
  5052
IMPORT_C int sqlite3_enable_shared_cache(int);
williamr@4
  5053
williamr@4
  5054
/*
williamr@4
  5055
** CAPI3REF: Attempt To Free Heap Memory {H17340} <S30220>
williamr@4
  5056
**
williamr@4
  5057
** The sqlite3_release_memory() interface attempts to free N bytes
williamr@4
  5058
** of heap memory by deallocating non-essential memory allocations
williamr@4
  5059
** held by the database library. {END}  Memory used to cache database
williamr@4
  5060
** pages to improve performance is an example of non-essential memory.
williamr@4
  5061
** sqlite3_release_memory() returns the number of bytes actually freed,
williamr@4
  5062
** which might be more or less than the amount requested.
williamr@4
  5063
**
williamr@4
  5064
** INVARIANTS:
williamr@4
  5065
**
williamr@4
  5066
** {H17341} The [sqlite3_release_memory(N)] interface attempts to
williamr@4
  5067
**          free N bytes of heap memory by deallocating non-essential
williamr@4
  5068
**          memory allocations held by the database library.
williamr@4
  5069
**
williamr@4
  5070
** {H16342} The [sqlite3_release_memory(N)] returns the number
williamr@4
  5071
**          of bytes actually freed, which might be more or less
williamr@4
  5072
**          than the amount requested.
williamr@4
  5073
*/
williamr@4
  5074
IMPORT_C int sqlite3_release_memory(int);
williamr@4
  5075
williamr@4
  5076
/*
williamr@4
  5077
** CAPI3REF: Impose A Limit On Heap Size {H17350} <S30220>
williamr@4
  5078
**
williamr@4
  5079
** The sqlite3_soft_heap_limit() interface places a "soft" limit
williamr@4
  5080
** on the amount of heap memory that may be allocated by SQLite.
williamr@4
  5081
** If an internal allocation is requested that would exceed the
williamr@4
  5082
** soft heap limit, [sqlite3_release_memory()] is invoked one or
williamr@4
  5083
** more times to free up some space before the allocation is performed.
williamr@4
  5084
**
williamr@4
  5085
** The limit is called "soft", because if [sqlite3_release_memory()]
williamr@4
  5086
** cannot free sufficient memory to prevent the limit from being exceeded,
williamr@4
  5087
** the memory is allocated anyway and the current operation proceeds.
williamr@4
  5088
**
williamr@4
  5089
** A negative or zero value for N means that there is no soft heap limit and
williamr@4
  5090
** [sqlite3_release_memory()] will only be called when memory is exhausted.
williamr@4
  5091
** The default value for the soft heap limit is zero.
williamr@4
  5092
**
williamr@4
  5093
** SQLite makes a best effort to honor the soft heap limit.
williamr@4
  5094
** But if the soft heap limit cannot be honored, execution will
williamr@4
  5095
** continue without error or notification.  This is why the limit is
williamr@4
  5096
** called a "soft" limit.  It is advisory only.
williamr@4
  5097
**
williamr@4
  5098
** Prior to SQLite version 3.5.0, this routine only constrained the memory
williamr@4
  5099
** allocated by a single thread - the same thread in which this routine
williamr@4
  5100
** runs.  Beginning with SQLite version 3.5.0, the soft heap limit is
williamr@4
  5101
** applied to all threads. The value specified for the soft heap limit
williamr@4
  5102
** is an upper bound on the total memory allocation for all threads. In
williamr@4
  5103
** version 3.5.0 there is no mechanism for limiting the heap usage for
williamr@4
  5104
** individual threads.
williamr@4
  5105
**
williamr@4
  5106
** INVARIANTS:
williamr@4
  5107
**
williamr@4
  5108
** {H16351} The [sqlite3_soft_heap_limit(N)] interface places a soft limit
williamr@4
  5109
**          of N bytes on the amount of heap memory that may be allocated
williamr@4
  5110
**          using [sqlite3_malloc()] or [sqlite3_realloc()] at any point
williamr@4
  5111
**          in time.
williamr@4
  5112
**
williamr@4
  5113
** {H16352} If a call to [sqlite3_malloc()] or [sqlite3_realloc()] would
williamr@4
  5114
**          cause the total amount of allocated memory to exceed the
williamr@4
  5115
**          soft heap limit, then [sqlite3_release_memory()] is invoked
williamr@4
  5116
**          in an attempt to reduce the memory usage prior to proceeding
williamr@4
  5117
**          with the memory allocation attempt.
williamr@4
  5118
**
williamr@4
  5119
** {H16353} Calls to [sqlite3_malloc()] or [sqlite3_realloc()] that trigger
williamr@4
  5120
**          attempts to reduce memory usage through the soft heap limit
williamr@4
  5121
**          mechanism continue even if the attempt to reduce memory
williamr@4
  5122
**          usage is unsuccessful.
williamr@4
  5123
**
williamr@4
  5124
** {H16354} A negative or zero value for N in a call to
williamr@4
  5125
**          [sqlite3_soft_heap_limit(N)] means that there is no soft
williamr@4
  5126
**          heap limit and [sqlite3_release_memory()] will only be
williamr@4
  5127
**          called when memory is completely exhausted.
williamr@4
  5128
**
williamr@4
  5129
** {H16355} The default value for the soft heap limit is zero.
williamr@4
  5130
**
williamr@4
  5131
** {H16358} Each call to [sqlite3_soft_heap_limit(N)] overrides the
williamr@4
  5132
**          values set by all prior calls.
williamr@4
  5133
*/
williamr@4
  5134
IMPORT_C void sqlite3_soft_heap_limit(int);
williamr@4
  5135
williamr@4
  5136
/*
williamr@4
  5137
** CAPI3REF: Extract Metadata About A Column Of A Table {H12850} <S60300>
williamr@4
  5138
**
williamr@4
  5139
** This routine returns metadata about a specific column of a specific
williamr@4
  5140
** database table accessible using the [database connection] handle
williamr@4
  5141
** passed as the first function argument.
williamr@4
  5142
**
williamr@4
  5143
** The column is identified by the second, third and fourth parameters to
williamr@4
  5144
** this function. The second parameter is either the name of the database
williamr@4
  5145
** (i.e. "main", "temp" or an attached database) containing the specified
williamr@4
  5146
** table or NULL. If it is NULL, then all attached databases are searched
williamr@4
  5147
** for the table using the same algorithm used by the database engine to
williamr@4
  5148
** resolve unqualified table references.
williamr@4
  5149
**
williamr@4
  5150
** The third and fourth parameters to this function are the table and column
williamr@4
  5151
** name of the desired column, respectively. Neither of these parameters
williamr@4
  5152
** may be NULL.
williamr@4
  5153
**
williamr@4
  5154
** Metadata is returned by writing to the memory locations passed as the 5th
williamr@4
  5155
** and subsequent parameters to this function. Any of these arguments may be
williamr@4
  5156
** NULL, in which case the corresponding element of metadata is omitted.
williamr@4
  5157
**
williamr@4
  5158
** <blockquote>
williamr@4
  5159
** <table border="1">
williamr@4
  5160
** <tr><th> Parameter <th> Output<br>Type <th>  Description
williamr@4
  5161
**
williamr@4
  5162
** <tr><td> 5th <td> const char* <td> Data type
williamr@4
  5163
** <tr><td> 6th <td> const char* <td> Name of default collation sequence
williamr@4
  5164
** <tr><td> 7th <td> int         <td> True if column has a NOT NULL constraint
williamr@4
  5165
** <tr><td> 8th <td> int         <td> True if column is part of the PRIMARY KEY
williamr@4
  5166
** <tr><td> 9th <td> int         <td> True if column is AUTOINCREMENT
williamr@4
  5167
** </table>
williamr@4
  5168
** </blockquote>
williamr@4
  5169
**
williamr@4
  5170
** The memory pointed to by the character pointers returned for the
williamr@4
  5171
** declaration type and collation sequence is valid only until the next
williamr@4
  5172
** call to any SQLite API function.
williamr@4
  5173
**
williamr@4
  5174
** If the specified table is actually a view, an [error code] is returned.
williamr@4
  5175
**
williamr@4
  5176
** If the specified column is "rowid", "oid" or "_rowid_" and an
williamr@4
  5177
** INTEGER PRIMARY KEY column has been explicitly declared, then the output
williamr@4
  5178
** parameters are set for the explicitly declared column. If there is no
williamr@4
  5179
** explicitly declared INTEGER PRIMARY KEY column, then the output
williamr@4
  5180
** parameters are set as follows:
williamr@4
  5181
**
williamr@4
  5182
** <pre>
williamr@4
  5183
**     data type: "INTEGER"
williamr@4
  5184
**     collation sequence: "BINARY"
williamr@4
  5185
**     not null: 0
williamr@4
  5186
**     primary key: 1
williamr@4
  5187
**     auto increment: 0
williamr@4
  5188
** </pre>
williamr@4
  5189
**
williamr@4
  5190
** This function may load one or more schemas from database files. If an
williamr@4
  5191
** error occurs during this process, or if the requested table or column
williamr@4
  5192
** cannot be found, an [error code] is returned and an error message left
williamr@4
  5193
** in the [database connection] (to be retrieved using sqlite3_errmsg()).
williamr@4
  5194
**
williamr@4
  5195
** This API is only available if the library was compiled with the
williamr@4
  5196
** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol defined.
williamr@4
  5197
*/
williamr@4
  5198
IMPORT_C int sqlite3_table_column_metadata(
williamr@4
  5199
  sqlite3 *db,                /* Connection handle */
williamr@4
  5200
  const char *zDbName,        /* Database name or NULL */
williamr@4
  5201
  const char *zTableName,     /* Table name */
williamr@4
  5202
  const char *zColumnName,    /* Column name */
williamr@4
  5203
  char const **pzDataType,    /* OUTPUT: Declared data type */
williamr@4
  5204
  char const **pzCollSeq,     /* OUTPUT: Collation sequence name */
williamr@4
  5205
  int *pNotNull,              /* OUTPUT: True if NOT NULL constraint exists */
williamr@4
  5206
  int *pPrimaryKey,           /* OUTPUT: True if column part of PK */
williamr@4
  5207
  int *pAutoinc               /* OUTPUT: True if column is auto-increment */
williamr@4
  5208
);
williamr@4
  5209
williamr@4
  5210
/*
williamr@4
  5211
** CAPI3REF: Load An Extension {H12600} <S20500>
williamr@4
  5212
**
williamr@4
  5213
** This interface loads an SQLite extension library from the named file.
williamr@4
  5214
**
williamr@4
  5215
** {H12601} The sqlite3_load_extension() interface attempts to load an
williamr@4
  5216
**          SQLite extension library contained in the file zFile.
williamr@4
  5217
**
williamr@4
  5218
** {H12602} The entry point is zProc.
williamr@4
  5219
**
williamr@4
  5220
** {H12603} zProc may be 0, in which case the name of the entry point
williamr@4
  5221
**          defaults to "sqlite3_extension_init".
williamr@4
  5222
**
williamr@4
  5223
** {H12604} The sqlite3_load_extension() interface shall return
williamr@4
  5224
**          [SQLITE_OK] on success and [SQLITE_ERROR] if something goes wrong.
williamr@4
  5225
**
williamr@4
  5226
** {H12605} If an error occurs and pzErrMsg is not 0, then the
williamr@4
  5227
**          [sqlite3_load_extension()] interface shall attempt to
williamr@4
  5228
**          fill *pzErrMsg with error message text stored in memory
williamr@4
  5229
**          obtained from [sqlite3_malloc()]. {END}  The calling function
williamr@4
  5230
**          should free this memory by calling [sqlite3_free()].
williamr@4
  5231
**
williamr@4
  5232
** {H12606} Extension loading must be enabled using
williamr@4
  5233
**          [sqlite3_enable_load_extension()] prior to calling this API,
williamr@4
  5234
**          otherwise an error will be returned.
williamr@4
  5235
*/
williamr@4
  5236
IMPORT_C int sqlite3_load_extension(
williamr@4
  5237
  sqlite3 *db,          /* Load the extension into this database connection */
williamr@4
  5238
  const char *zFile,    /* Name of the shared library containing extension */
williamr@4
  5239
  const char *zProc,    /* Entry point.  Derived from zFile if 0 */
williamr@4
  5240
  char **pzErrMsg       /* Put error message here if not 0 */
williamr@4
  5241
);
williamr@4
  5242
williamr@4
  5243
/*
williamr@4
  5244
** CAPI3REF: Enable Or Disable Extension Loading {H12620} <S20500>
williamr@4
  5245
**
williamr@4
  5246
** So as not to open security holes in older applications that are
williamr@4
  5247
** unprepared to deal with extension loading, and as a means of disabling
williamr@4
  5248
** extension loading while evaluating user-entered SQL, the following API
williamr@4
  5249
** is provided to turn the [sqlite3_load_extension()] mechanism on and off.
williamr@4
  5250
**
williamr@4
  5251
** Extension loading is off by default. See ticket #1863.
williamr@4
  5252
**
williamr@4
  5253
** {H12621} Call the sqlite3_enable_load_extension() routine with onoff==1
williamr@4
  5254
**          to turn extension loading on and call it with onoff==0 to turn
williamr@4
  5255
**          it back off again.
williamr@4
  5256
**
williamr@4
  5257
** {H12622} Extension loading is off by default.
williamr@4
  5258
*/
williamr@4
  5259
IMPORT_C int sqlite3_enable_load_extension(sqlite3 *db, int onoff);
williamr@4
  5260
williamr@4
  5261
/*
williamr@4
  5262
** CAPI3REF: Automatically Load An Extensions {H12640} <S20500>
williamr@4
  5263
**
williamr@4
  5264
** This API can be invoked at program startup in order to register
williamr@4
  5265
** one or more statically linked extensions that will be available
williamr@4
  5266
** to all new [database connections]. {END}
williamr@4
  5267
**
williamr@4
  5268
** This routine stores a pointer to the extension in an array that is
williamr@4
  5269
** obtained from [sqlite3_malloc()].  If you run a memory leak checker
williamr@4
  5270
** on your program and it reports a leak because of this array, invoke
williamr@4
  5271
** [sqlite3_reset_auto_extension()] prior to shutdown to free the memory.
williamr@4
  5272
**
williamr@4
  5273
** {H12641} This function registers an extension entry point that is
williamr@4
  5274
**          automatically invoked whenever a new [database connection]
williamr@4
  5275
**          is opened using [sqlite3_open()], [sqlite3_open16()],
williamr@4
  5276
**          or [sqlite3_open_v2()].
williamr@4
  5277
**
williamr@4
  5278
** {H12642} Duplicate extensions are detected so calling this routine
williamr@4
  5279
**          multiple times with the same extension is harmless.
williamr@4
  5280
**
williamr@4
  5281
** {H12643} This routine stores a pointer to the extension in an array
williamr@4
  5282
**          that is obtained from [sqlite3_malloc()].
williamr@4
  5283
**
williamr@4
  5284
** {H12644} Automatic extensions apply across all threads.
williamr@4
  5285
*/
williamr@4
  5286
IMPORT_C int sqlite3_auto_extension(void *xEntryPoint);
williamr@4
  5287
williamr@4
  5288
/*
williamr@4
  5289
** CAPI3REF: Reset Automatic Extension Loading {H12660} <S20500>
williamr@4
  5290
**
williamr@4
  5291
** This function disables all previously registered automatic
williamr@4
  5292
** extensions. {END}  It undoes the effect of all prior
williamr@4
  5293
** [sqlite3_auto_extension()] calls.
williamr@4
  5294
**
williamr@4
  5295
** {H12661} This function disables all previously registered
williamr@4
  5296
**          automatic extensions.
williamr@4
  5297
**
williamr@4
  5298
** {H12662} This function disables automatic extensions in all threads.
williamr@4
  5299
*/
williamr@4
  5300
IMPORT_C void sqlite3_reset_auto_extension(void);
williamr@4
  5301
williamr@4
  5302
/*
williamr@4
  5303
****** EXPERIMENTAL - subject to change without notice **************
williamr@4
  5304
**
williamr@4
  5305
** The interface to the virtual-table mechanism is currently considered
williamr@4
  5306
** to be experimental.  The interface might change in incompatible ways.
williamr@4
  5307
** If this is a problem for you, do not use the interface at this time.
williamr@4
  5308
**
williamr@4
  5309
** When the virtual-table mechanism stabilizes, we will declare the
williamr@4
  5310
** interface fixed, support it indefinitely, and remove this comment.
williamr@4
  5311
*/
williamr@4
  5312
williamr@4
  5313
/*
williamr@4
  5314
** Structures used by the virtual table interface
williamr@4
  5315
*/
williamr@4
  5316
typedef struct sqlite3_vtab sqlite3_vtab;
williamr@4
  5317
typedef struct sqlite3_index_info sqlite3_index_info;
williamr@4
  5318
typedef struct sqlite3_vtab_cursor sqlite3_vtab_cursor;
williamr@4
  5319
typedef struct sqlite3_module sqlite3_module;
williamr@4
  5320
williamr@4
  5321
/*
williamr@4
  5322
** CAPI3REF: Virtual Table Object {H18000} <S20400>
williamr@4
  5323
** KEYWORDS: sqlite3_module
williamr@4
  5324
** EXPERIMENTAL
williamr@4
  5325
**
williamr@4
  5326
** A module is a class of virtual tables.  Each module is defined
williamr@4
  5327
** by an instance of the following structure.  This structure consists
williamr@4
  5328
** mostly of methods for the module.
williamr@4
  5329
**
williamr@4
  5330
** This interface is experimental and is subject to change or
williamr@4
  5331
** removal in future releases of SQLite.
williamr@4
  5332
*/
williamr@4
  5333
struct sqlite3_module {
williamr@4
  5334
  int iVersion;
williamr@4
  5335
  int (*xCreate)(sqlite3*, void *pAux,
williamr@4
  5336
               int argc, const char *const*argv,
williamr@4
  5337
               sqlite3_vtab **ppVTab, char**);
williamr@4
  5338
  int (*xConnect)(sqlite3*, void *pAux,
williamr@4
  5339
               int argc, const char *const*argv,
williamr@4
  5340
               sqlite3_vtab **ppVTab, char**);
williamr@4
  5341
  int (*xBestIndex)(sqlite3_vtab *pVTab, sqlite3_index_info*);
williamr@4
  5342
  int (*xDisconnect)(sqlite3_vtab *pVTab);
williamr@4
  5343
  int (*xDestroy)(sqlite3_vtab *pVTab);
williamr@4
  5344
  int (*xOpen)(sqlite3_vtab *pVTab, sqlite3_vtab_cursor **ppCursor);
williamr@4
  5345
  int (*xClose)(sqlite3_vtab_cursor*);
williamr@4
  5346
  int (*xFilter)(sqlite3_vtab_cursor*, int idxNum, const char *idxStr,
williamr@4
  5347
                int argc, sqlite3_value **argv);
williamr@4
  5348
  int (*xNext)(sqlite3_vtab_cursor*);
williamr@4
  5349
  int (*xEof)(sqlite3_vtab_cursor*);
williamr@4
  5350
  int (*xColumn)(sqlite3_vtab_cursor*, sqlite3_context*, int);
williamr@4
  5351
  int (*xRowid)(sqlite3_vtab_cursor*, sqlite3_int64 *pRowid);
williamr@4
  5352
  int (*xUpdate)(sqlite3_vtab *, int, sqlite3_value **, sqlite3_int64 *);
williamr@4
  5353
  int (*xBegin)(sqlite3_vtab *pVTab);
williamr@4
  5354
  int (*xSync)(sqlite3_vtab *pVTab);
williamr@4
  5355
  int (*xCommit)(sqlite3_vtab *pVTab);
williamr@4
  5356
  int (*xRollback)(sqlite3_vtab *pVTab);
williamr@4
  5357
  int (*xFindFunction)(sqlite3_vtab *pVtab, int nArg, const char *zName,
williamr@4
  5358
                       void (**pxFunc)(sqlite3_context*,int,sqlite3_value**),
williamr@4
  5359
                       void **ppArg);
williamr@4
  5360
  int (*xRename)(sqlite3_vtab *pVtab, const char *zNew);
williamr@4
  5361
};
williamr@4
  5362
williamr@4
  5363
/*
williamr@4
  5364
** CAPI3REF: Virtual Table Indexing Information {H18100} <S20400>
williamr@4
  5365
** KEYWORDS: sqlite3_index_info
williamr@4
  5366
** EXPERIMENTAL
williamr@4
  5367
**
williamr@4
  5368
** The sqlite3_index_info structure and its substructures is used to
williamr@4
  5369
** pass information into and receive the reply from the xBestIndex
williamr@4
  5370
** method of an sqlite3_module.  The fields under **Inputs** are the
williamr@4
  5371
** inputs to xBestIndex and are read-only.  xBestIndex inserts its
williamr@4
  5372
** results into the **Outputs** fields.
williamr@4
  5373
**
williamr@4
  5374
** The aConstraint[] array records WHERE clause constraints of the form:
williamr@4
  5375
**
williamr@4
  5376
** <pre>column OP expr</pre>
williamr@4
  5377
**
williamr@4
  5378
** where OP is =, &lt;, &lt;=, &gt;, or &gt;=.  The particular operator is
williamr@4
  5379
** stored in aConstraint[].op.  The index of the column is stored in
williamr@4
  5380
** aConstraint[].iColumn.  aConstraint[].usable is TRUE if the
williamr@4
  5381
** expr on the right-hand side can be evaluated (and thus the constraint
williamr@4
  5382
** is usable) and false if it cannot.
williamr@4
  5383
**
williamr@4
  5384
** The optimizer automatically inverts terms of the form "expr OP column"
williamr@4
  5385
** and makes other simplifications to the WHERE clause in an attempt to
williamr@4
  5386
** get as many WHERE clause terms into the form shown above as possible.
williamr@4
  5387
** The aConstraint[] array only reports WHERE clause terms in the correct
williamr@4
  5388
** form that refer to the particular virtual table being queried.
williamr@4
  5389
**
williamr@4
  5390
** Information about the ORDER BY clause is stored in aOrderBy[].
williamr@4
  5391
** Each term of aOrderBy records a column of the ORDER BY clause.
williamr@4
  5392
**
williamr@4
  5393
** The xBestIndex method must fill aConstraintUsage[] with information
williamr@4
  5394
** about what parameters to pass to xFilter.  If argvIndex>0 then
williamr@4
  5395
** the right-hand side of the corresponding aConstraint[] is evaluated
williamr@4
  5396
** and becomes the argvIndex-th entry in argv.  If aConstraintUsage[].omit
williamr@4
  5397
** is true, then the constraint is assumed to be fully handled by the
williamr@4
  5398
** virtual table and is not checked again by SQLite.
williamr@4
  5399
**
williamr@4
  5400
** The idxNum and idxPtr values are recorded and passed into xFilter.
williamr@4
  5401
** sqlite3_free() is used to free idxPtr if needToFreeIdxPtr is true.
williamr@4
  5402
**
williamr@4
  5403
** The orderByConsumed means that output from xFilter will occur in
williamr@4
  5404
** the correct order to satisfy the ORDER BY clause so that no separate
williamr@4
  5405
** sorting step is required.
williamr@4
  5406
**
williamr@4
  5407
** The estimatedCost value is an estimate of the cost of doing the
williamr@4
  5408
** particular lookup.  A full scan of a table with N entries should have
williamr@4
  5409
** a cost of N.  A binary search of a table of N entries should have a
williamr@4
  5410
** cost of approximately log(N).
williamr@4
  5411
**
williamr@4
  5412
** This interface is experimental and is subject to change or
williamr@4
  5413
** removal in future releases of SQLite.
williamr@4
  5414
*/
williamr@4
  5415
struct sqlite3_index_info {
williamr@4
  5416
  /* Inputs */
williamr@4
  5417
  int nConstraint;           /* Number of entries in aConstraint */
williamr@4
  5418
  struct sqlite3_index_constraint {
williamr@4
  5419
     int iColumn;              /* Column on left-hand side of constraint */
williamr@4
  5420
     unsigned char op;         /* Constraint operator */
williamr@4
  5421
     unsigned char usable;     /* True if this constraint is usable */
williamr@4
  5422
     int iTermOffset;          /* Used internally - xBestIndex should ignore */
williamr@4
  5423
  } *aConstraint;            /* Table of WHERE clause constraints */
williamr@4
  5424
  int nOrderBy;              /* Number of terms in the ORDER BY clause */
williamr@4
  5425
  struct sqlite3_index_orderby {
williamr@4
  5426
     int iColumn;              /* Column number */
williamr@4
  5427
     unsigned char desc;       /* True for DESC.  False for ASC. */
williamr@4
  5428
  } *aOrderBy;               /* The ORDER BY clause */
williamr@4
  5429
  /* Outputs */
williamr@4
  5430
  struct sqlite3_index_constraint_usage {
williamr@4
  5431
    int argvIndex;           /* if >0, constraint is part of argv to xFilter */
williamr@4
  5432
    unsigned char omit;      /* Do not code a test for this constraint */
williamr@4
  5433
  } *aConstraintUsage;
williamr@4
  5434
  int idxNum;                /* Number used to identify the index */
williamr@4
  5435
  char *idxStr;              /* String, possibly obtained from sqlite3_malloc */
williamr@4
  5436
  int needToFreeIdxStr;      /* Free idxStr using sqlite3_free() if true */
williamr@4
  5437
  int orderByConsumed;       /* True if output is already ordered */
williamr@4
  5438
  double estimatedCost;      /* Estimated cost of using this index */
williamr@4
  5439
};
williamr@4
  5440
#define SQLITE_INDEX_CONSTRAINT_EQ    2
williamr@4
  5441
#define SQLITE_INDEX_CONSTRAINT_GT    4
williamr@4
  5442
#define SQLITE_INDEX_CONSTRAINT_LE    8
williamr@4
  5443
#define SQLITE_INDEX_CONSTRAINT_LT    16
williamr@4
  5444
#define SQLITE_INDEX_CONSTRAINT_GE    32
williamr@4
  5445
#define SQLITE_INDEX_CONSTRAINT_MATCH 64
williamr@4
  5446
williamr@4
  5447
/*
williamr@4
  5448
** CAPI3REF: Register A Virtual Table Implementation {H18200} <S20400>
williamr@4
  5449
** EXPERIMENTAL
williamr@4
  5450
**
williamr@4
  5451
** This routine is used to register a new module name with a
williamr@4
  5452
** [database connection].  Module names must be registered before
williamr@4
  5453
** creating new virtual tables on the module, or before using
williamr@4
  5454
** preexisting virtual tables of the module.
williamr@4
  5455
**
williamr@4
  5456
** This interface is experimental and is subject to change or
williamr@4
  5457
** removal in future releases of SQLite.
williamr@4
  5458
*/
williamr@4
  5459
IMPORT_C int sqlite3_create_module(
williamr@4
  5460
  sqlite3 *db,               /* SQLite connection to register module with */
williamr@4
  5461
  const char *zName,         /* Name of the module */
williamr@4
  5462
  const sqlite3_module *,    /* Methods for the module */
williamr@4
  5463
  void *                     /* Client data for xCreate/xConnect */
williamr@4
  5464
);
williamr@4
  5465
williamr@4
  5466
/*
williamr@4
  5467
** CAPI3REF: Register A Virtual Table Implementation {H18210} <S20400>
williamr@4
  5468
** EXPERIMENTAL
williamr@4
  5469
**
williamr@4
  5470
** This routine is identical to the [sqlite3_create_module()] method above,
williamr@4
  5471
** except that it allows a destructor function to be specified. It is
williamr@4
  5472
** even more experimental than the rest of the virtual tables API.
williamr@4
  5473
*/
williamr@4
  5474
IMPORT_C int sqlite3_create_module_v2(
williamr@4
  5475
  sqlite3 *db,               /* SQLite connection to register module with */
williamr@4
  5476
  const char *zName,         /* Name of the module */
williamr@4
  5477
  const sqlite3_module *,    /* Methods for the module */
williamr@4
  5478
  void *,                    /* Client data for xCreate/xConnect */
williamr@4
  5479
  void(*xDestroy)(void*)     /* Module destructor function */
williamr@4
  5480
);
williamr@4
  5481
williamr@4
  5482
/*
williamr@4
  5483
** CAPI3REF: Virtual Table Instance Object {H18010} <S20400>
williamr@4
  5484
** KEYWORDS: sqlite3_vtab
williamr@4
  5485
** EXPERIMENTAL
williamr@4
  5486
**
williamr@4
  5487
** Every module implementation uses a subclass of the following structure
williamr@4
  5488
** to describe a particular instance of the module.  Each subclass will
williamr@4
  5489
** be tailored to the specific needs of the module implementation.
williamr@4
  5490
** The purpose of this superclass is to define certain fields that are
williamr@4
  5491
** common to all module implementations.
williamr@4
  5492
**
williamr@4
  5493
** Virtual tables methods can set an error message by assigning a
williamr@4
  5494
** string obtained from [sqlite3_mprintf()] to zErrMsg.  The method should
williamr@4
  5495
** take care that any prior string is freed by a call to [sqlite3_free()]
williamr@4
  5496
** prior to assigning a new string to zErrMsg.  After the error message
williamr@4
  5497
** is delivered up to the client application, the string will be automatically
williamr@4
  5498
** freed by sqlite3_free() and the zErrMsg field will be zeroed.  Note
williamr@4
  5499
** that sqlite3_mprintf() and sqlite3_free() are used on the zErrMsg field
williamr@4
  5500
** since virtual tables are commonly implemented in loadable extensions which
williamr@4
  5501
** do not have access to sqlite3MPrintf() or sqlite3Free().
williamr@4
  5502
**
williamr@4
  5503
** This interface is experimental and is subject to change or
williamr@4
  5504
** removal in future releases of SQLite.
williamr@4
  5505
*/
williamr@4
  5506
struct sqlite3_vtab {
williamr@4
  5507
  const sqlite3_module *pModule;  /* The module for this virtual table */
williamr@4
  5508
  int nRef;                       /* Used internally */
williamr@4
  5509
  char *zErrMsg;                  /* Error message from sqlite3_mprintf() */
williamr@4
  5510
  /* Virtual table implementations will typically add additional fields */
williamr@4
  5511
};
williamr@4
  5512
williamr@4
  5513
/*
williamr@4
  5514
** CAPI3REF: Virtual Table Cursor Object  {H18020} <S20400>
williamr@4
  5515
** KEYWORDS: sqlite3_vtab_cursor
williamr@4
  5516
** EXPERIMENTAL
williamr@4
  5517
**
williamr@4
  5518
** Every module implementation uses a subclass of the following structure
williamr@4
  5519
** to describe cursors that point into the virtual table and are used
williamr@4
  5520
** to loop through the virtual table.  Cursors are created using the
williamr@4
  5521
** xOpen method of the module.  Each module implementation will define
williamr@4
  5522
** the content of a cursor structure to suit its own needs.
williamr@4
  5523
**
williamr@4
  5524
** This superclass exists in order to define fields of the cursor that
williamr@4
  5525
** are common to all implementations.
williamr@4
  5526
**
williamr@4
  5527
** This interface is experimental and is subject to change or
williamr@4
  5528
** removal in future releases of SQLite.
williamr@4
  5529
*/
williamr@4
  5530
struct sqlite3_vtab_cursor {
williamr@4
  5531
  sqlite3_vtab *pVtab;      /* Virtual table of this cursor */
williamr@4
  5532
  /* Virtual table implementations will typically add additional fields */
williamr@4
  5533
};
williamr@4
  5534
williamr@4
  5535
/*
williamr@4
  5536
** CAPI3REF: Declare The Schema Of A Virtual Table {H18280} <S20400>
williamr@4
  5537
** EXPERIMENTAL
williamr@4
  5538
**
williamr@4
  5539
** The xCreate and xConnect methods of a module use the following API
williamr@4
  5540
** to declare the format (the names and datatypes of the columns) of
williamr@4
  5541
** the virtual tables they implement.
williamr@4
  5542
**
williamr@4
  5543
** This interface is experimental and is subject to change or
williamr@4
  5544
** removal in future releases of SQLite.
williamr@4
  5545
*/
williamr@4
  5546
IMPORT_C int sqlite3_declare_vtab(sqlite3*, const char *zCreateTable);
williamr@4
  5547
williamr@4
  5548
/*
williamr@4
  5549
** CAPI3REF: Overload A Function For A Virtual Table {H18300} <S20400>
williamr@4
  5550
** EXPERIMENTAL
williamr@4
  5551
**
williamr@4
  5552
** Virtual tables can provide alternative implementations of functions
williamr@4
  5553
** using the xFindFunction method.  But global versions of those functions
williamr@4
  5554
** must exist in order to be overloaded.
williamr@4
  5555
**
williamr@4
  5556
** This API makes sure a global version of a function with a particular
williamr@4
  5557
** name and number of parameters exists.  If no such function exists
williamr@4
  5558
** before this API is called, a new function is created.  The implementation
williamr@4
  5559
** of the new function always causes an exception to be thrown.  So
williamr@4
  5560
** the new function is not good for anything by itself.  Its only
williamr@4
  5561
** purpose is to be a placeholder function that can be overloaded
williamr@4
  5562
** by virtual tables.
williamr@4
  5563
**
williamr@4
  5564
** This API should be considered part of the virtual table interface,
williamr@4
  5565
** which is experimental and subject to change.
williamr@4
  5566
*/
williamr@4
  5567
IMPORT_C int sqlite3_overload_function(sqlite3*, const char *zFuncName, int nArg);
williamr@4
  5568
williamr@4
  5569
/*
williamr@4
  5570
** The interface to the virtual-table mechanism defined above (back up
williamr@4
  5571
** to a comment remarkably similar to this one) is currently considered
williamr@4
  5572
** to be experimental.  The interface might change in incompatible ways.
williamr@4
  5573
** If this is a problem for you, do not use the interface at this time.
williamr@4
  5574
**
williamr@4
  5575
** When the virtual-table mechanism stabilizes, we will declare the
williamr@4
  5576
** interface fixed, support it indefinitely, and remove this comment.
williamr@4
  5577
**
williamr@4
  5578
****** EXPERIMENTAL - subject to change without notice **************
williamr@4
  5579
*/
williamr@4
  5580
williamr@4
  5581
/*
williamr@4
  5582
** CAPI3REF: A Handle To An Open BLOB {H17800} <S30230>
williamr@4
  5583
** KEYWORDS: {BLOB handle} {BLOB handles}
williamr@4
  5584
**
williamr@4
  5585
** An instance of this object represents an open BLOB on which
williamr@4
  5586
** [sqlite3_blob_open | incremental BLOB I/O] can be performed.
williamr@4
  5587
** Objects of this type are created by [sqlite3_blob_open()]
williamr@4
  5588
** and destroyed by [sqlite3_blob_close()].
williamr@4
  5589
** The [sqlite3_blob_read()] and [sqlite3_blob_write()] interfaces
williamr@4
  5590
** can be used to read or write small subsections of the BLOB.
williamr@4
  5591
** The [sqlite3_blob_bytes()] interface returns the size of the BLOB in bytes.
williamr@4
  5592
*/
williamr@4
  5593
typedef struct sqlite3_blob sqlite3_blob;
williamr@4
  5594
williamr@4
  5595
/*
williamr@4
  5596
** CAPI3REF: Open A BLOB For Incremental I/O {H17810} <S30230>
williamr@4
  5597
**
williamr@4
  5598
** This interfaces opens a [BLOB handle | handle] to the BLOB located
williamr@4
  5599
** in row iRow, column zColumn, table zTable in database zDb;
williamr@4
  5600
** in other words, the same BLOB that would be selected by:
williamr@4
  5601
**
williamr@4
  5602
** <pre>
williamr@4
  5603
**     SELECT zColumn FROM zDb.zTable WHERE rowid = iRow;
williamr@4
  5604
** </pre> {END}
williamr@4
  5605
**
williamr@4
  5606
** If the flags parameter is non-zero, the the BLOB is opened for read
williamr@4
  5607
** and write access. If it is zero, the BLOB is opened for read access.
williamr@4
  5608
**
williamr@4
  5609
** Note that the database name is not the filename that contains
williamr@4
  5610
** the database but rather the symbolic name of the database that
williamr@4
  5611
** is assigned when the database is connected using [ATTACH].
williamr@4
  5612
** For the main database file, the database name is "main".
williamr@4
  5613
** For TEMP tables, the database name is "temp".
williamr@4
  5614
**
williamr@4
  5615
** On success, [SQLITE_OK] is returned and the new [BLOB handle] is written
williamr@4
  5616
** to *ppBlob. Otherwise an [error code] is returned and any value written
williamr@4
  5617
** to *ppBlob should not be used by the caller.
williamr@4
  5618
** This function sets the [database connection] error code and message
williamr@4
  5619
** accessible via [sqlite3_errcode()] and [sqlite3_errmsg()].
williamr@4
  5620
**
williamr@4
  5621
** If the row that a BLOB handle points to is modified by an
williamr@4
  5622
** [UPDATE], [DELETE], or by [ON CONFLICT] side-effects
williamr@4
  5623
** then the BLOB handle is marked as "expired".
williamr@4
  5624
** This is true if any column of the row is changed, even a column
williamr@4
  5625
** other than the one the BLOB handle is open on.
williamr@4
  5626
** Calls to [sqlite3_blob_read()] and [sqlite3_blob_write()] for
williamr@4
  5627
** a expired BLOB handle fail with an return code of [SQLITE_ABORT].
williamr@4
  5628
** Changes written into a BLOB prior to the BLOB expiring are not
williamr@4
  5629
** rollback by the expiration of the BLOB.  Such changes will eventually
williamr@4
  5630
** commit if the transaction continues to completion.
williamr@4
  5631
**
williamr@4
  5632
** INVARIANTS:
williamr@4
  5633
**
williamr@4
  5634
** {H17813} A successful invocation of the [sqlite3_blob_open(D,B,T,C,R,F,P)]
williamr@4
  5635
**          interface shall open an [sqlite3_blob] object P on the BLOB
williamr@4
  5636
**          in column C of the table T in the database B on
williamr@4
  5637
**          the [database connection] D.
williamr@4
  5638
**
williamr@4
  5639
** {H17814} A successful invocation of [sqlite3_blob_open(D,...)] shall start
williamr@4
  5640
**          a new transaction on the [database connection] D if that
williamr@4
  5641
**          connection is not already in a transaction.
williamr@4
  5642
**
williamr@4
  5643
** {H17816} The [sqlite3_blob_open(D,B,T,C,R,F,P)] interface shall open
williamr@4
  5644
**          the BLOB for read and write access if and only if the F
williamr@4
  5645
**          parameter is non-zero.
williamr@4
  5646
**
williamr@4
  5647
** {H17819} The [sqlite3_blob_open()] interface shall return [SQLITE_OK] on
williamr@4
  5648
**          success and an appropriate [error code] on failure.
williamr@4
  5649
**
williamr@4
  5650
** {H17821} If an error occurs during evaluation of [sqlite3_blob_open(D,...)]
williamr@4
  5651
**          then subsequent calls to [sqlite3_errcode(D)],
williamr@4
  5652
**          [sqlite3_errmsg(D)], and [sqlite3_errmsg16(D)] shall return
williamr@4
  5653
**          information appropriate for that error.
williamr@4
  5654
**
williamr@4
  5655
** {H17824} If any column in the row that a [sqlite3_blob] has open is
williamr@4
  5656
**          changed by a separate [UPDATE] or [DELETE] statement or by
williamr@4
  5657
**          an [ON CONFLICT] side effect, then the [sqlite3_blob] shall
williamr@4
  5658
**          be marked as invalid.
williamr@4
  5659
*/
williamr@4
  5660
IMPORT_C int sqlite3_blob_open(
williamr@4
  5661
  sqlite3*,
williamr@4
  5662
  const char *zDb,
williamr@4
  5663
  const char *zTable,
williamr@4
  5664
  const char *zColumn,
williamr@4
  5665
  sqlite3_int64 iRow,
williamr@4
  5666
  int flags,
williamr@4
  5667
  sqlite3_blob **ppBlob
williamr@4
  5668
);
williamr@4
  5669
williamr@4
  5670
/*
williamr@4
  5671
** CAPI3REF: Close A BLOB Handle {H17830} <S30230>
williamr@4
  5672
**
williamr@4
  5673
** Closes an open [BLOB handle].
williamr@4
  5674
**
williamr@4
  5675
** Closing a BLOB shall cause the current transaction to commit
williamr@4
  5676
** if there are no other BLOBs, no pending prepared statements, and the
williamr@4
  5677
** database connection is in [autocommit mode].
williamr@4
  5678
** If any writes were made to the BLOB, they might be held in cache
williamr@4
  5679
** until the close operation if they will fit. {END}
williamr@4
  5680
**
williamr@4
  5681
** Closing the BLOB often forces the changes
williamr@4
  5682
** out to disk and so if any I/O errors occur, they will likely occur
williamr@4
  5683
** at the time when the BLOB is closed.  {H17833} Any errors that occur during
williamr@4
  5684
** closing are reported as a non-zero return value.
williamr@4
  5685
**
williamr@4
  5686
** The BLOB is closed unconditionally.  Even if this routine returns
williamr@4
  5687
** an error code, the BLOB is still closed.
williamr@4
  5688
**
williamr@4
  5689
** INVARIANTS:
williamr@4
  5690
**
williamr@4
  5691
** {H17833} The [sqlite3_blob_close(P)] interface closes an [sqlite3_blob]
williamr@4
  5692
**          object P previously opened using [sqlite3_blob_open()].
williamr@4
  5693
**
williamr@4
  5694
** {H17836} Closing an [sqlite3_blob] object using
williamr@4
  5695
**          [sqlite3_blob_close()] shall cause the current transaction to
williamr@4
  5696
**          commit if there are no other open [sqlite3_blob] objects
williamr@4
  5697
**          or [prepared statements] on the same [database connection] and
williamr@4
  5698
**          the database connection is in [autocommit mode].
williamr@4
  5699
**
williamr@4
  5700
** {H17839} The [sqlite3_blob_close(P)] interfaces shall close the
williamr@4
  5701
**          [sqlite3_blob] object P unconditionally, even if
williamr@4
  5702
**          [sqlite3_blob_close(P)] returns something other than [SQLITE_OK].
williamr@4
  5703
*/
williamr@4
  5704
IMPORT_C int sqlite3_blob_close(sqlite3_blob *);
williamr@4
  5705
williamr@4
  5706
/*
williamr@4
  5707
** CAPI3REF: Return The Size Of An Open BLOB {H17840} <S30230>
williamr@4
  5708
**
williamr@4
  5709
** Returns the size in bytes of the BLOB accessible via the open
williamr@4
  5710
** []BLOB handle] in its only argument.
williamr@4
  5711
**
williamr@4
  5712
** INVARIANTS:
williamr@4
  5713
**
williamr@4
  5714
** {H17843} The [sqlite3_blob_bytes(P)] interface returns the size
williamr@4
  5715
**          in bytes of the BLOB that the [sqlite3_blob] object P
williamr@4
  5716
**          refers to.
williamr@4
  5717
*/
williamr@4
  5718
IMPORT_C int sqlite3_blob_bytes(sqlite3_blob *);
williamr@4
  5719
williamr@4
  5720
/*
williamr@4
  5721
** CAPI3REF: Read Data From A BLOB Incrementally {H17850} <S30230>
williamr@4
  5722
**
williamr@4
  5723
** This function is used to read data from an open [BLOB handle] into a
williamr@4
  5724
** caller-supplied buffer. N bytes of data are copied into buffer Z
williamr@4
  5725
** from the open BLOB, starting at offset iOffset.
williamr@4
  5726
**
williamr@4
  5727
** If offset iOffset is less than N bytes from the end of the BLOB,
williamr@4
  5728
** [SQLITE_ERROR] is returned and no data is read.  If N or iOffset is
williamr@4
  5729
** less than zero, [SQLITE_ERROR] is returned and no data is read.
williamr@4
  5730
**
williamr@4
  5731
** An attempt to read from an expired [BLOB handle] fails with an
williamr@4
  5732
** error code of [SQLITE_ABORT].
williamr@4
  5733
**
williamr@4
  5734
** On success, SQLITE_OK is returned.
williamr@4
  5735
** Otherwise, an [error code] or an [extended error code] is returned.
williamr@4
  5736
**
williamr@4
  5737
** INVARIANTS:
williamr@4
  5738
**
williamr@4
  5739
** {H17853} A successful invocation of [sqlite3_blob_read(P,Z,N,X)] 
williamr@4
  5740
**          shall reads N bytes of data out of the BLOB referenced by
williamr@4
  5741
**          [BLOB handle] P beginning at offset X and store those bytes
williamr@4
  5742
**          into buffer Z.
williamr@4
  5743
**
williamr@4
  5744
** {H17856} In [sqlite3_blob_read(P,Z,N,X)] if the size of the BLOB
williamr@4
  5745
**          is less than N+X bytes, then the function shall leave the
williamr@4
  5746
**          Z buffer unchanged and return [SQLITE_ERROR].
williamr@4
  5747
**
williamr@4
  5748
** {H17859} In [sqlite3_blob_read(P,Z,N,X)] if X or N is less than zero
williamr@4
  5749
**          then the function shall leave the Z buffer unchanged
williamr@4
  5750
**          and return [SQLITE_ERROR].
williamr@4
  5751
**
williamr@4
  5752
** {H17862} The [sqlite3_blob_read(P,Z,N,X)] interface shall return [SQLITE_OK]
williamr@4
  5753
**          if N bytes are successfully read into buffer Z.
williamr@4
  5754
**
williamr@4
  5755
** {H17863} If the [BLOB handle] P is expired and X and N are within bounds
williamr@4
  5756
**          then [sqlite3_blob_read(P,Z,N,X)] shall leave the Z buffer
williamr@4
  5757
**          unchanged and return [SQLITE_ABORT].
williamr@4
  5758
**
williamr@4
  5759
** {H17865} If the requested read could not be completed,
williamr@4
  5760
**          the [sqlite3_blob_read(P,Z,N,X)] interface shall return an
williamr@4
  5761
**          appropriate [error code] or [extended error code].
williamr@4
  5762
**
williamr@4
  5763
** {H17868} If an error occurs during evaluation of [sqlite3_blob_read(P,...)]
williamr@4
  5764
**          then subsequent calls to [sqlite3_errcode(D)],
williamr@4
  5765
**          [sqlite3_errmsg(D)], and [sqlite3_errmsg16(D)] shall return
williamr@4
  5766
**          information appropriate for that error, where D is the
williamr@4
  5767
**          [database connection] that was used to open the [BLOB handle] P.
williamr@4
  5768
*/
williamr@4
  5769
IMPORT_C int sqlite3_blob_read(sqlite3_blob *, void *Z, int N, int iOffset);
williamr@4
  5770
williamr@4
  5771
/*
williamr@4
  5772
** CAPI3REF: Write Data Into A BLOB Incrementally {H17870} <S30230>
williamr@4
  5773
**
williamr@4
  5774
** This function is used to write data into an open [BLOB handle] from a
williamr@4
  5775
** caller-supplied buffer. N bytes of data are copied from the buffer Z
williamr@4
  5776
** into the open BLOB, starting at offset iOffset.
williamr@4
  5777
**
williamr@4
  5778
** If the [BLOB handle] passed as the first argument was not opened for
williamr@4
  5779
** writing (the flags parameter to [sqlite3_blob_open()] was zero),
williamr@4
  5780
** this function returns [SQLITE_READONLY].
williamr@4
  5781
**
williamr@4
  5782
** This function may only modify the contents of the BLOB; it is
williamr@4
  5783
** not possible to increase the size of a BLOB using this API.
williamr@4
  5784
** If offset iOffset is less than N bytes from the end of the BLOB,
williamr@4
  5785
** [SQLITE_ERROR] is returned and no data is written.  If N is
williamr@4
  5786
** less than zero [SQLITE_ERROR] is returned and no data is written.
williamr@4
  5787
**
williamr@4
  5788
** An attempt to write to an expired [BLOB handle] fails with an
williamr@4
  5789
** error code of [SQLITE_ABORT].  Writes to the BLOB that occurred
williamr@4
  5790
** before the [BLOB handle] expired are not rolled back by the
williamr@4
  5791
** expiration of the handle, though of course those changes might
williamr@4
  5792
** have been overwritten by the statement that expired the BLOB handle
williamr@4
  5793
** or by other independent statements.
williamr@4
  5794
**
williamr@4
  5795
** On success, SQLITE_OK is returned.
williamr@4
  5796
** Otherwise, an  [error code] or an [extended error code] is returned.
williamr@4
  5797
**
williamr@4
  5798
** INVARIANTS:
williamr@4
  5799
**
williamr@4
  5800
** {H17873} A successful invocation of [sqlite3_blob_write(P,Z,N,X)]
williamr@4
  5801
**          shall write N bytes of data from buffer Z into the BLOB 
williamr@4
  5802
**          referenced by [BLOB handle] P beginning at offset X into
williamr@4
  5803
**          the BLOB.
williamr@4
  5804
**
williamr@4
  5805
** {H17874} In the absence of other overridding changes, the changes
williamr@4
  5806
**          written to a BLOB by [sqlite3_blob_write()] shall
williamr@4
  5807
**          remain in effect after the associated [BLOB handle] expires.
williamr@4
  5808
**
williamr@4
  5809
** {H17875} If the [BLOB handle] P was opened for reading only then
williamr@4
  5810
**          an invocation of [sqlite3_blob_write(P,Z,N,X)] shall leave
williamr@4
  5811
**          the referenced BLOB unchanged and return [SQLITE_READONLY].
williamr@4
  5812
**
williamr@4
  5813
** {H17876} If the size of the BLOB referenced by [BLOB handle] P is
williamr@4
  5814
**          less than N+X bytes then [sqlite3_blob_write(P,Z,N,X)] shall
williamr@4
  5815
**          leave the BLOB unchanged and return [SQLITE_ERROR].
williamr@4
  5816
**
williamr@4
  5817
** {H17877} If the [BLOB handle] P is expired and X and N are within bounds
williamr@4
  5818
**          then [sqlite3_blob_read(P,Z,N,X)] shall leave the BLOB
williamr@4
  5819
**          unchanged and return [SQLITE_ABORT].
williamr@4
  5820
**
williamr@4
  5821
** {H17879} If X or N are less than zero then [sqlite3_blob_write(P,Z,N,X)]
williamr@4
  5822
**          shall leave the BLOB referenced by [BLOB handle] P unchanged
williamr@4
  5823
**          and return [SQLITE_ERROR].
williamr@4
  5824
**
williamr@4
  5825
** {H17882} The [sqlite3_blob_write(P,Z,N,X)] interface shall return
williamr@4
  5826
**          [SQLITE_OK] if N bytes where successfully written into the BLOB.
williamr@4
  5827
**
williamr@4
  5828
** {H17885} If the requested write could not be completed,
williamr@4
  5829
**          the [sqlite3_blob_write(P,Z,N,X)] interface shall return an
williamr@4
  5830
**          appropriate [error code] or [extended error code].
williamr@4
  5831
**
williamr@4
  5832
** {H17888} If an error occurs during evaluation of [sqlite3_blob_write(D,...)]
williamr@4
  5833
**          then subsequent calls to [sqlite3_errcode(D)],
williamr@4
  5834
**          [sqlite3_errmsg(D)], and [sqlite3_errmsg16(D)] shall return
williamr@4
  5835
**          information appropriate for that error.
williamr@4
  5836
*/
williamr@4
  5837
IMPORT_C int sqlite3_blob_write(sqlite3_blob *, const void *z, int n, int iOffset);
williamr@4
  5838
williamr@4
  5839
/*
williamr@4
  5840
** CAPI3REF: Virtual File System Objects {H11200} <S20100>
williamr@4
  5841
**
williamr@4
  5842
** A virtual filesystem (VFS) is an [sqlite3_vfs] object
williamr@4
  5843
** that SQLite uses to interact
williamr@4
  5844
** with the underlying operating system.  Most SQLite builds come with a
williamr@4
  5845
** single default VFS that is appropriate for the host computer.
williamr@4
  5846
** New VFSes can be registered and existing VFSes can be unregistered.
williamr@4
  5847
** The following interfaces are provided.
williamr@4
  5848
**
williamr@4
  5849
** The sqlite3_vfs_find() interface returns a pointer to a VFS given its name.
williamr@4
  5850
** Names are case sensitive.
williamr@4
  5851
** Names are zero-terminated UTF-8 strings.
williamr@4
  5852
** If there is no match, a NULL pointer is returned.
williamr@4
  5853
** If zVfsName is NULL then the default VFS is returned.
williamr@4
  5854
**
williamr@4
  5855
** New VFSes are registered with sqlite3_vfs_register().
williamr@4
  5856
** Each new VFS becomes the default VFS if the makeDflt flag is set.
williamr@4
  5857
** The same VFS can be registered multiple times without injury.
williamr@4
  5858
** To make an existing VFS into the default VFS, register it again
williamr@4
  5859
** with the makeDflt flag set.  If two different VFSes with the
williamr@4
  5860
** same name are registered, the behavior is undefined.  If a
williamr@4
  5861
** VFS is registered with a name that is NULL or an empty string,
williamr@4
  5862
** then the behavior is undefined.
williamr@4
  5863
**
williamr@4
  5864
** Unregister a VFS with the sqlite3_vfs_unregister() interface.
williamr@4
  5865
** If the default VFS is unregistered, another VFS is chosen as
williamr@4
  5866
** the default.  The choice for the new VFS is arbitrary.
williamr@4
  5867
**
williamr@4
  5868
** INVARIANTS:
williamr@4
  5869
**
williamr@4
  5870
** {H11203} The [sqlite3_vfs_find(N)] interface returns a pointer to the
williamr@4
  5871
**          registered [sqlite3_vfs] object whose name exactly matches
williamr@4
  5872
**          the zero-terminated UTF-8 string N, or it returns NULL if
williamr@4
  5873
**          there is no match.
williamr@4
  5874
**
williamr@4
  5875
** {H11206} If the N parameter to [sqlite3_vfs_find(N)] is NULL then
williamr@4
  5876
**          the function returns a pointer to the default [sqlite3_vfs]
williamr@4
  5877
**          object if there is one, or NULL if there is no default
williamr@4
  5878
**          [sqlite3_vfs] object.
williamr@4
  5879
**
williamr@4
  5880
** {H11209} The [sqlite3_vfs_register(P,F)] interface registers the
williamr@4
  5881
**          well-formed [sqlite3_vfs] object P using the name given
williamr@4
  5882
**          by the zName field of the object.
williamr@4
  5883
**
williamr@4
  5884
** {H11212} Using the [sqlite3_vfs_register(P,F)] interface to register
williamr@4
  5885
**          the same [sqlite3_vfs] object multiple times is a harmless no-op.
williamr@4
  5886
**
williamr@4
  5887
** {H11215} The [sqlite3_vfs_register(P,F)] interface makes the [sqlite3_vfs]
williamr@4
  5888
**          object P the default [sqlite3_vfs] object if F is non-zero.
williamr@4
  5889
**
williamr@4
  5890
** {H11218} The [sqlite3_vfs_unregister(P)] interface unregisters the
williamr@4
  5891
**          [sqlite3_vfs] object P so that it is no longer returned by
williamr@4
  5892
**          subsequent calls to [sqlite3_vfs_find()].
williamr@4
  5893
*/
williamr@4
  5894
IMPORT_C sqlite3_vfs *sqlite3_vfs_find(const char *zVfsName);
williamr@4
  5895
IMPORT_C int sqlite3_vfs_register(sqlite3_vfs*, int makeDflt);
williamr@4
  5896
IMPORT_C int sqlite3_vfs_unregister(sqlite3_vfs*);
williamr@4
  5897
williamr@4
  5898
/*
williamr@4
  5899
** CAPI3REF: Mutexes {H17000} <S20000>
williamr@4
  5900
**
williamr@4
  5901
** The SQLite core uses these routines for thread
williamr@4
  5902
** synchronization. Though they are intended for internal
williamr@4
  5903
** use by SQLite, code that links against SQLite is
williamr@4
  5904
** permitted to use any of these routines.
williamr@4
  5905
**
williamr@4
  5906
** The SQLite source code contains multiple implementations
williamr@4
  5907
** of these mutex routines.  An appropriate implementation
williamr@4
  5908
** is selected automatically at compile-time.  The following
williamr@4
  5909
** implementations are available in the SQLite core:
williamr@4
  5910
**
williamr@4
  5911
** <ul>
williamr@4
  5912
** <li>   SQLITE_MUTEX_OS2
williamr@4
  5913
** <li>   SQLITE_MUTEX_PTHREAD
williamr@4
  5914
** <li>   SQLITE_MUTEX_W32
williamr@4
  5915
** <li>   SQLITE_MUTEX_NOOP
williamr@4
  5916
** </ul>
williamr@4
  5917
**
williamr@4
  5918
** The SQLITE_MUTEX_NOOP implementation is a set of routines
williamr@4
  5919
** that does no real locking and is appropriate for use in
williamr@4
  5920
** a single-threaded application.  The SQLITE_MUTEX_OS2,
williamr@4
  5921
** SQLITE_MUTEX_PTHREAD, and SQLITE_MUTEX_W32 implementations
williamr@4
  5922
** are appropriate for use on OS/2, Unix, and Windows.
williamr@4
  5923
**
williamr@4
  5924
** If SQLite is compiled with the SQLITE_MUTEX_APPDEF preprocessor
williamr@4
  5925
** macro defined (with "-DSQLITE_MUTEX_APPDEF=1"), then no mutex
williamr@4
  5926
** implementation is included with the library. In this case the
williamr@4
  5927
** application must supply a custom mutex implementation using the
williamr@4
  5928
** [SQLITE_CONFIG_MUTEX] option of the sqlite3_config() function
williamr@4
  5929
** before calling sqlite3_initialize() or any other public sqlite3_
williamr@4
  5930
** function that calls sqlite3_initialize().
williamr@4
  5931
**
williamr@4
  5932
** {H17011} The sqlite3_mutex_alloc() routine allocates a new
williamr@4
  5933
** mutex and returns a pointer to it. {H17012} If it returns NULL
williamr@4
  5934
** that means that a mutex could not be allocated. {H17013} SQLite
williamr@4
  5935
** will unwind its stack and return an error. {H17014} The argument
williamr@4
  5936
** to sqlite3_mutex_alloc() is one of these integer constants:
williamr@4
  5937
**
williamr@4
  5938
** <ul>
williamr@4
  5939
** <li>  SQLITE_MUTEX_FAST
williamr@4
  5940
** <li>  SQLITE_MUTEX_RECURSIVE
williamr@4
  5941
** <li>  SQLITE_MUTEX_STATIC_MASTER
williamr@4
  5942
** <li>  SQLITE_MUTEX_STATIC_MEM
williamr@4
  5943
** <li>  SQLITE_MUTEX_STATIC_MEM2
williamr@4
  5944
** <li>  SQLITE_MUTEX_STATIC_PRNG
williamr@4
  5945
** <li>  SQLITE_MUTEX_STATIC_LRU
williamr@4
  5946
** <li>  SQLITE_MUTEX_STATIC_LRU2
williamr@4
  5947
** </ul>
williamr@4
  5948
**
williamr@4
  5949
** {H17015} The first two constants cause sqlite3_mutex_alloc() to create
williamr@4
  5950
** a new mutex.  The new mutex is recursive when SQLITE_MUTEX_RECURSIVE
williamr@4
  5951
** is used but not necessarily so when SQLITE_MUTEX_FAST is used. {END}
williamr@4
  5952
** The mutex implementation does not need to make a distinction
williamr@4
  5953
** between SQLITE_MUTEX_RECURSIVE and SQLITE_MUTEX_FAST if it does
williamr@4
  5954
** not want to.  {H17016} But SQLite will only request a recursive mutex in
williamr@4
  5955
** cases where it really needs one.  {END} If a faster non-recursive mutex
williamr@4
  5956
** implementation is available on the host platform, the mutex subsystem
williamr@4
  5957
** might return such a mutex in response to SQLITE_MUTEX_FAST.
williamr@4
  5958
**
williamr@4
  5959
** {H17017} The other allowed parameters to sqlite3_mutex_alloc() each return
williamr@4
  5960
** a pointer to a static preexisting mutex. {END}  Four static mutexes are
williamr@4
  5961
** used by the current version of SQLite.  Future versions of SQLite
williamr@4
  5962
** may add additional static mutexes.  Static mutexes are for internal
williamr@4
  5963
** use by SQLite only.  Applications that use SQLite mutexes should
williamr@4
  5964
** use only the dynamic mutexes returned by SQLITE_MUTEX_FAST or
williamr@4
  5965
** SQLITE_MUTEX_RECURSIVE.
williamr@4
  5966
**
williamr@4
  5967
** {H17018} Note that if one of the dynamic mutex parameters (SQLITE_MUTEX_FAST
williamr@4
  5968
** or SQLITE_MUTEX_RECURSIVE) is used then sqlite3_mutex_alloc()
williamr@4
  5969
** returns a different mutex on every call.  {H17034} But for the static
williamr@4
  5970
** mutex types, the same mutex is returned on every call that has
williamr@4
  5971
** the same type number.
williamr@4
  5972
**
williamr@4
  5973
** {H17019} The sqlite3_mutex_free() routine deallocates a previously
williamr@4
  5974
** allocated dynamic mutex. {H17020} SQLite is careful to deallocate every
williamr@4
  5975
** dynamic mutex that it allocates. {A17021} The dynamic mutexes must not be in
williamr@4
  5976
** use when they are deallocated. {A17022} Attempting to deallocate a static
williamr@4
  5977
** mutex results in undefined behavior. {H17023} SQLite never deallocates
williamr@4
  5978
** a static mutex. {END}
williamr@4
  5979
**
williamr@4
  5980
** The sqlite3_mutex_enter() and sqlite3_mutex_try() routines attempt
williamr@4
  5981
** to enter a mutex. {H17024} If another thread is already within the mutex,
williamr@4
  5982
** sqlite3_mutex_enter() will block and sqlite3_mutex_try() will return
williamr@4
  5983
** SQLITE_BUSY. {H17025}  The sqlite3_mutex_try() interface returns [SQLITE_OK]
williamr@4
  5984
** upon successful entry.  {H17026} Mutexes created using
williamr@4
  5985
** SQLITE_MUTEX_RECURSIVE can be entered multiple times by the same thread.
williamr@4
  5986
** {H17027} In such cases the,
williamr@4
  5987
** mutex must be exited an equal number of times before another thread
williamr@4
  5988
** can enter.  {A17028} If the same thread tries to enter any other
williamr@4
  5989
** kind of mutex more than once, the behavior is undefined.
williamr@4
  5990
** {H17029} SQLite will never exhibit
williamr@4
  5991
** such behavior in its own use of mutexes.
williamr@4
  5992
**
williamr@4
  5993
** Some systems (for example, Windows 95) do not support the operation
williamr@4
  5994
** implemented by sqlite3_mutex_try().  On those systems, sqlite3_mutex_try()
williamr@4
  5995
** will always return SQLITE_BUSY.  {H17030} The SQLite core only ever uses
williamr@4
  5996
** sqlite3_mutex_try() as an optimization so this is acceptable behavior.
williamr@4
  5997
**
williamr@4
  5998
** {H17031} The sqlite3_mutex_leave() routine exits a mutex that was
williamr@4
  5999
** previously entered by the same thread.  {A17032} The behavior
williamr@4
  6000
** is undefined if the mutex is not currently entered by the
williamr@4
  6001
** calling thread or is not currently allocated.  {H17033} SQLite will
williamr@4
  6002
** never do either. {END}
williamr@4
  6003
**
williamr@4
  6004
** If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or
williamr@4
  6005
** sqlite3_mutex_leave() is a NULL pointer, then all three routines
williamr@4
  6006
** behave as no-ops.
williamr@4
  6007
**
williamr@4
  6008
** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()].
williamr@4
  6009
*/
williamr@4
  6010
IMPORT_C sqlite3_mutex *sqlite3_mutex_alloc(int);
williamr@4
  6011
IMPORT_C void sqlite3_mutex_free(sqlite3_mutex*);
williamr@4
  6012
IMPORT_C void sqlite3_mutex_enter(sqlite3_mutex*);
williamr@4
  6013
IMPORT_C int sqlite3_mutex_try(sqlite3_mutex*);
williamr@4
  6014
IMPORT_C void sqlite3_mutex_leave(sqlite3_mutex*);
williamr@4
  6015
williamr@4
  6016
/*
williamr@4
  6017
** CAPI3REF: Mutex Methods Object {H17120} <S20130>
williamr@4
  6018
** EXPERIMENTAL
williamr@4
  6019
**
williamr@4
  6020
** An instance of this structure defines the low-level routines
williamr@4
  6021
** used to allocate and use mutexes.
williamr@4
  6022
**
williamr@4
  6023
** Usually, the default mutex implementations provided by SQLite are
williamr@4
  6024
** sufficient, however the user has the option of substituting a custom
williamr@4
  6025
** implementation for specialized deployments or systems for which SQLite
williamr@4
  6026
** does not provide a suitable implementation. In this case, the user
williamr@4
  6027
** creates and populates an instance of this structure to pass
williamr@4
  6028
** to sqlite3_config() along with the [SQLITE_CONFIG_MUTEX] option.
williamr@4
  6029
** Additionally, an instance of this structure can be used as an
williamr@4
  6030
** output variable when querying the system for the current mutex
williamr@4
  6031
** implementation, using the [SQLITE_CONFIG_GETMUTEX] option.
williamr@4
  6032
**
williamr@4
  6033
** The xMutexInit method defined by this structure is invoked as
williamr@4
  6034
** part of system initialization by the sqlite3_initialize() function.
williamr@4
  6035
** {H17001} The xMutexInit routine shall be called by SQLite once for each
williamr@4
  6036
** effective call to [sqlite3_initialize()].
williamr@4
  6037
**
williamr@4
  6038
** The xMutexEnd method defined by this structure is invoked as
williamr@4
  6039
** part of system shutdown by the sqlite3_shutdown() function. The
williamr@4
  6040
** implementation of this method is expected to release all outstanding
williamr@4
  6041
** resources obtained by the mutex methods implementation, especially
williamr@4
  6042
** those obtained by the xMutexInit method. {H17003} The xMutexEnd()
williamr@4
  6043
** interface shall be invoked once for each call to [sqlite3_shutdown()].
williamr@4
  6044
**
williamr@4
  6045
** The remaining seven methods defined by this structure (xMutexAlloc,
williamr@4
  6046
** xMutexFree, xMutexEnter, xMutexTry, xMutexLeave, xMutexHeld and
williamr@4
  6047
** xMutexNotheld) implement the following interfaces (respectively):
williamr@4
  6048
**
williamr@4
  6049
** <ul>
williamr@4
  6050
**   <li>  [sqlite3_mutex_alloc()] </li>
williamr@4
  6051
**   <li>  [sqlite3_mutex_free()] </li>
williamr@4
  6052
**   <li>  [sqlite3_mutex_enter()] </li>
williamr@4
  6053
**   <li>  [sqlite3_mutex_try()] </li>
williamr@4
  6054
**   <li>  [sqlite3_mutex_leave()] </li>
williamr@4
  6055
**   <li>  [sqlite3_mutex_held()] </li>
williamr@4
  6056
**   <li>  [sqlite3_mutex_notheld()] </li>
williamr@4
  6057
** </ul>
williamr@4
  6058
**
williamr@4
  6059
** The only difference is that the public sqlite3_XXX functions enumerated
williamr@4
  6060
** above silently ignore any invocations that pass a NULL pointer instead
williamr@4
  6061
** of a valid mutex handle. The implementations of the methods defined
williamr@4
  6062
** by this structure are not required to handle this case, the results
williamr@4
  6063
** of passing a NULL pointer instead of a valid mutex handle are undefined
williamr@4
  6064
** (i.e. it is acceptable to provide an implementation that segfaults if
williamr@4
  6065
** it is passed a NULL pointer).
williamr@4
  6066
*/
williamr@4
  6067
typedef struct sqlite3_mutex_methods sqlite3_mutex_methods;
williamr@4
  6068
struct sqlite3_mutex_methods {
williamr@4
  6069
  int (*xMutexInit)(void);
williamr@4
  6070
  int (*xMutexEnd)(void);
williamr@4
  6071
  sqlite3_mutex *(*xMutexAlloc)(int);
williamr@4
  6072
  void (*xMutexFree)(sqlite3_mutex *);
williamr@4
  6073
  void (*xMutexEnter)(sqlite3_mutex *);
williamr@4
  6074
  int (*xMutexTry)(sqlite3_mutex *);
williamr@4
  6075
  void (*xMutexLeave)(sqlite3_mutex *);
williamr@4
  6076
  int (*xMutexHeld)(sqlite3_mutex *);
williamr@4
  6077
  int (*xMutexNotheld)(sqlite3_mutex *);
williamr@4
  6078
};
williamr@4
  6079
williamr@4
  6080
/*
williamr@4
  6081
** CAPI3REF: Mutex Verification Routines {H17080} <S20130> <S30800>
williamr@4
  6082
**
williamr@4
  6083
** The sqlite3_mutex_held() and sqlite3_mutex_notheld() routines
williamr@4
  6084
** are intended for use inside assert() statements. {H17081} The SQLite core
williamr@4
  6085
** never uses these routines except inside an assert() and applications
williamr@4
  6086
** are advised to follow the lead of the core.  {H17082} The core only
williamr@4
  6087
** provides implementations for these routines when it is compiled
williamr@4
  6088
** with the SQLITE_DEBUG flag.  {A17087} External mutex implementations
williamr@4
  6089
** are only required to provide these routines if SQLITE_DEBUG is
williamr@4
  6090
** defined and if NDEBUG is not defined.
williamr@4
  6091
**
williamr@4
  6092
** {H17083} These routines should return true if the mutex in their argument
williamr@4
  6093
** is held or not held, respectively, by the calling thread.
williamr@4
  6094
**
williamr@4
  6095
** {X17084} The implementation is not required to provided versions of these
williamr@4
  6096
** routines that actually work. If the implementation does not provide working
williamr@4
  6097
** versions of these routines, it should at least provide stubs that always
williamr@4
  6098
** return true so that one does not get spurious assertion failures.
williamr@4
  6099
**
williamr@4
  6100
** {H17085} If the argument to sqlite3_mutex_held() is a NULL pointer then
williamr@4
  6101
** the routine should return 1.  {END} This seems counter-intuitive since
williamr@4
  6102
** clearly the mutex cannot be held if it does not exist.  But the
williamr@4
  6103
** the reason the mutex does not exist is because the build is not
williamr@4
  6104
** using mutexes.  And we do not want the assert() containing the
williamr@4
  6105
** call to sqlite3_mutex_held() to fail, so a non-zero return is
williamr@4
  6106
** the appropriate thing to do.  {H17086} The sqlite3_mutex_notheld()
williamr@4
  6107
** interface should also return 1 when given a NULL pointer.
williamr@4
  6108
*/
williamr@4
  6109
IMPORT_C int sqlite3_mutex_held(sqlite3_mutex*);
williamr@4
  6110
IMPORT_C int sqlite3_mutex_notheld(sqlite3_mutex*);
williamr@4
  6111
williamr@4
  6112
/*
williamr@4
  6113
** CAPI3REF: Mutex Types {H17001} <H17000>
williamr@4
  6114
**
williamr@4
  6115
** The [sqlite3_mutex_alloc()] interface takes a single argument
williamr@4
  6116
** which is one of these integer constants.
williamr@4
  6117
**
williamr@4
  6118
** The set of static mutexes may change from one SQLite release to the
williamr@4
  6119
** next.  Applications that override the built-in mutex logic must be
williamr@4
  6120
** prepared to accommodate additional static mutexes.
williamr@4
  6121
*/
williamr@4
  6122
#define SQLITE_MUTEX_FAST             0
williamr@4
  6123
#define SQLITE_MUTEX_RECURSIVE        1
williamr@4
  6124
#define SQLITE_MUTEX_STATIC_MASTER    2
williamr@4
  6125
#define SQLITE_MUTEX_STATIC_MEM       3  /* sqlite3_malloc() */
williamr@4
  6126
#define SQLITE_MUTEX_STATIC_MEM2      4  /* sqlite3_release_memory() */
williamr@4
  6127
#define SQLITE_MUTEX_STATIC_PRNG      5  /* sqlite3_random() */
williamr@4
  6128
#define SQLITE_MUTEX_STATIC_LRU       6  /* lru page list */
williamr@4
  6129
#define SQLITE_MUTEX_STATIC_LRU2      7  /* lru page list */
williamr@4
  6130
williamr@4
  6131
/*
williamr@4
  6132
** CAPI3REF: Low-Level Control Of Database Files {H11300} <S30800>
williamr@4
  6133
**
williamr@4
  6134
** {H11301} The [sqlite3_file_control()] interface makes a direct call to the
williamr@4
  6135
** xFileControl method for the [sqlite3_io_methods] object associated
williamr@4
  6136
** with a particular database identified by the second argument. {H11302} The
williamr@4
  6137
** name of the database is the name assigned to the database by the
williamr@4
  6138
** <a href="lang_attach.html">ATTACH</a> SQL command that opened the
williamr@4
  6139
** database. {H11303} To control the main database file, use the name "main"
williamr@4
  6140
** or a NULL pointer. {H11304} The third and fourth parameters to this routine
williamr@4
  6141
** are passed directly through to the second and third parameters of
williamr@4
  6142
** the xFileControl method.  {H11305} The return value of the xFileControl
williamr@4
  6143
** method becomes the return value of this routine.
williamr@4
  6144
**
williamr@4
  6145
** {H11306} If the second parameter (zDbName) does not match the name of any
williamr@4
  6146
** open database file, then SQLITE_ERROR is returned. {H11307} This error
williamr@4
  6147
** code is not remembered and will not be recalled by [sqlite3_errcode()]
williamr@4
  6148
** or [sqlite3_errmsg()]. {A11308} The underlying xFileControl method might
williamr@4
  6149
** also return SQLITE_ERROR.  {A11309} There is no way to distinguish between
williamr@4
  6150
** an incorrect zDbName and an SQLITE_ERROR return from the underlying
williamr@4
  6151
** xFileControl method. {END}
williamr@4
  6152
**
williamr@4
  6153
** See also: [SQLITE_FCNTL_LOCKSTATE]
williamr@4
  6154
*/
williamr@4
  6155
IMPORT_C int sqlite3_file_control(sqlite3*, const char *zDbName, int op, void*);
williamr@4
  6156
williamr@4
  6157
/*
williamr@4
  6158
** CAPI3REF: Testing Interface {H11400} <S30800>
williamr@4
  6159
**
williamr@4
  6160
** The sqlite3_test_control() interface is used to read out internal
williamr@4
  6161
** state of SQLite and to inject faults into SQLite for testing
williamr@4
  6162
** purposes.  The first parameter is an operation code that determines
williamr@4
  6163
** the number, meaning, and operation of all subsequent parameters.
williamr@4
  6164
**
williamr@4
  6165
** This interface is not for use by applications.  It exists solely
williamr@4
  6166
** for verifying the correct operation of the SQLite library.  Depending
williamr@4
  6167
** on how the SQLite library is compiled, this interface might not exist.
williamr@4
  6168
**
williamr@4
  6169
** The details of the operation codes, their meanings, the parameters
williamr@4
  6170
** they take, and what they do are all subject to change without notice.
williamr@4
  6171
** Unlike most of the SQLite API, this function is not guaranteed to
williamr@4
  6172
** operate consistently from one release to the next.
williamr@4
  6173
*/
williamr@4
  6174
IMPORT_C int sqlite3_test_control(int op, ...);
williamr@4
  6175
williamr@4
  6176
/*
williamr@4
  6177
** CAPI3REF: Testing Interface Operation Codes {H11410} <H11400>
williamr@4
  6178
**
williamr@4
  6179
** These constants are the valid operation code parameters used
williamr@4
  6180
** as the first argument to [sqlite3_test_control()].
williamr@4
  6181
**
williamr@4
  6182
** These parameters and their meanings are subject to change
williamr@4
  6183
** without notice.  These values are for testing purposes only.
williamr@4
  6184
** Applications should not use any of these parameters or the
williamr@4
  6185
** [sqlite3_test_control()] interface.
williamr@4
  6186
*/
williamr@4
  6187
#define SQLITE_TESTCTRL_PRNG_SAVE                5
williamr@4
  6188
#define SQLITE_TESTCTRL_PRNG_RESTORE             6
williamr@4
  6189
#define SQLITE_TESTCTRL_PRNG_RESET               7
williamr@4
  6190
#define SQLITE_TESTCTRL_BITVEC_TEST              8
williamr@4
  6191
#define SQLITE_TESTCTRL_FAULT_INSTALL            9
williamr@4
  6192
#define SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS     10
williamr@4
  6193
williamr@4
  6194
/*
williamr@4
  6195
** CAPI3REF: SQLite Runtime Status {H17200} <S60200>
williamr@4
  6196
** EXPERIMENTAL
williamr@4
  6197
**
williamr@4
  6198
** This interface is used to retrieve runtime status information
williamr@4
  6199
** about the preformance of SQLite, and optionally to reset various
williamr@4
  6200
** highwater marks.  The first argument is an integer code for
williamr@4
  6201
** the specific parameter to measure.  Recognized integer codes
williamr@4
  6202
** are of the form [SQLITE_STATUS_MEMORY_USED | SQLITE_STATUS_...].
williamr@4
  6203
** The current value of the parameter is returned into *pCurrent.
williamr@4
  6204
** The highest recorded value is returned in *pHighwater.  If the
williamr@4
  6205
** resetFlag is true, then the highest record value is reset after
williamr@4
  6206
** *pHighwater is written. Some parameters do not record the highest
williamr@4
  6207
** value.  For those parameters
williamr@4
  6208
** nothing is written into *pHighwater and the resetFlag is ignored.
williamr@4
  6209
** Other parameters record only the highwater mark and not the current
williamr@4
  6210
** value.  For these latter parameters nothing is written into *pCurrent.
williamr@4
  6211
**
williamr@4
  6212
** This routine returns SQLITE_OK on success and a non-zero
williamr@4
  6213
** [error code] on failure.
williamr@4
  6214
**
williamr@4
  6215
** This routine is threadsafe but is not atomic.  This routine can
williamr@4
  6216
** called while other threads are running the same or different SQLite
williamr@4
  6217
** interfaces.  However the values returned in *pCurrent and
williamr@4
  6218
** *pHighwater reflect the status of SQLite at different points in time
williamr@4
  6219
** and it is possible that another thread might change the parameter
williamr@4
  6220
** in between the times when *pCurrent and *pHighwater are written.
williamr@4
  6221
**
williamr@4
  6222
** See also: [sqlite3_db_status()]
williamr@4
  6223
*/
williamr@4
  6224
IMPORT_C int sqlite3_status(int op, int *pCurrent, int *pHighwater, int resetFlag);
williamr@4
  6225
williamr@4
  6226
/*
williamr@4
  6227
** CAPI3REF: Database Connection Status {H17201} <S60200>
williamr@4
  6228
** EXPERIMENTAL
williamr@4
  6229
**
williamr@4
  6230
** This interface is used to retrieve runtime status information 
williamr@4
  6231
** about a single [database connection].  The first argument is the
williamr@4
  6232
** database connection object to be interrogated.  The second argument
williamr@4
  6233
** is the parameter to interrogate.  Currently, the only allowed value
williamr@4
  6234
** for the second parameter is [SQLITE_DBSTATUS_LOOKASIDE_USED].
williamr@4
  6235
** Additional options will likely appear in future releases of SQLite.
williamr@4
  6236
**
williamr@4
  6237
** The current value of the request parameter is written into *pCur
williamr@4
  6238
** and the highest instantaneous value is written into *pHiwtr.  If
williamr@4
  6239
** the resetFlg is true, then the highest instantaneous value is
williamr@4
  6240
** reset back down to the current value.
williamr@4
  6241
**
williamr@4
  6242
** See also: [sqlite3_status()].
williamr@4
  6243
*/
williamr@4
  6244
IMPORT_C int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int resetFlg);
williamr@4
  6245
williamr@4
  6246
williamr@4
  6247
int sqlite3_wsd_init(int N, int J);
williamr@4
  6248
void *sqlite3_wsd_find(void *K, int L);
williamr@4
  6249
williamr@4
  6250
/*
williamr@4
  6251
** CAPI3REF: Status Parameters {H17250} <H17200>
williamr@4
  6252
** EXPERIMENTAL
williamr@4
  6253
**
williamr@4
  6254
** These integer constants designate various run-time status parameters
williamr@4
  6255
** that can be returned by [sqlite3_status()].
williamr@4
  6256
**
williamr@4
  6257
** <dl>
williamr@4
  6258
** <dt>SQLITE_STATUS_MEMORY_USED</dt>
williamr@4
  6259
** <dd>This parameter is the current amount of memory checked out
williamr@4
  6260
** using [sqlite3_malloc()], either directly or indirectly.  The
williamr@4
  6261
** figure includes calls made to [sqlite3_malloc()] by the application
williamr@4
  6262
** and internal memory usage by the SQLite library.  Scratch memory
williamr@4
  6263
** controlled by [SQLITE_CONFIG_SCRATCH] and auxiliary page-cache
williamr@4
  6264
** memory controlled by [SQLITE_CONFIG_PAGECACHE] is not included in
williamr@4
  6265
** this parameter.  The amount returned is the sum of the allocation
williamr@4
  6266
** sizes as reported by the xSize method in [sqlite3_mem_methods].</dd>
williamr@4
  6267
**
williamr@4
  6268
** <dt>SQLITE_STATUS_MALLOC_SIZE</dt>
williamr@4
  6269
** <dd>This parameter records the largest memory allocation request
williamr@4
  6270
** handed to [sqlite3_malloc()] or [sqlite3_realloc()] (or their
williamr@4
  6271
** internal equivalents).  Only the value returned in the
williamr@4
  6272
** *pHighwater parameter to [sqlite3_status()] is of interest.  
williamr@4
  6273
** The value written into the *pCurrent parameter is undefined.</dd>
williamr@4
  6274
**
williamr@4
  6275
** <dt>SQLITE_STATUS_PAGECACHE_USED</dt>
williamr@4
  6276
** <dd>This parameter returns the number of pages used out of the
williamr@4
  6277
** [pagecache memory allocator] that was configured using 
williamr@4
  6278
** [SQLITE_CONFIG_PAGECACHE].  The
williamr@4
  6279
** value returned is in pages, not in bytes.</dd>
williamr@4
  6280
**
williamr@4
  6281
** <dt>SQLITE_STATUS_PAGECACHE_OVERFLOW</dt>
williamr@4
  6282
** <dd>This parameter returns the number of bytes of page cache
williamr@4
  6283
** allocation which could not be statisfied by the [SQLITE_CONFIG_PAGECACHE]
williamr@4
  6284
** buffer and where forced to overflow to [sqlite3_malloc()].  The
williamr@4
  6285
** returned value includes allocations that overflowed because they
williamr@4
  6286
** where too large (they were larger than the "sz" parameter to
williamr@4
  6287
** [SQLITE_CONFIG_PAGECACHE]) and allocations that overflowed because
williamr@4
  6288
** no space was left in the page cache.</dd>
williamr@4
  6289
**
williamr@4
  6290
** <dt>SQLITE_STATUS_PAGECACHE_SIZE</dt>
williamr@4
  6291
** <dd>This parameter records the largest memory allocation request
williamr@4
  6292
** handed to [pagecache memory allocator].  Only the value returned in the
williamr@4
  6293
** *pHighwater parameter to [sqlite3_status()] is of interest.  
williamr@4
  6294
** The value written into the *pCurrent parameter is undefined.</dd>
williamr@4
  6295
**
williamr@4
  6296
** <dt>SQLITE_STATUS_SCRATCH_USED</dt>
williamr@4
  6297
** <dd>This parameter returns the number of allocations used out of the
williamr@4
  6298
** [scratch memory allocator] configured using
williamr@4
  6299
** [SQLITE_CONFIG_SCRATCH].  The value returned is in allocations, not
williamr@4
  6300
** in bytes.  Since a single thread may only have one scratch allocation
williamr@4
  6301
** outstanding at time, this parameter also reports the number of threads
williamr@4
  6302
** using scratch memory at the same time.</dd>
williamr@4
  6303
**
williamr@4
  6304
** <dt>SQLITE_STATUS_SCRATCH_OVERFLOW</dt>
williamr@4
  6305
** <dd>This parameter returns the number of bytes of scratch memory
williamr@4
  6306
** allocation which could not be statisfied by the [SQLITE_CONFIG_SCRATCH]
williamr@4
  6307
** buffer and where forced to overflow to [sqlite3_malloc()].  The values
williamr@4
  6308
** returned include overflows because the requested allocation was too
williamr@4
  6309
** larger (that is, because the requested allocation was larger than the
williamr@4
  6310
** "sz" parameter to [SQLITE_CONFIG_SCRATCH]) and because no scratch buffer
williamr@4
  6311
** slots were available.
williamr@4
  6312
** </dd>
williamr@4
  6313
**
williamr@4
  6314
** <dt>SQLITE_STATUS_SCRATCH_SIZE</dt>
williamr@4
  6315
** <dd>This parameter records the largest memory allocation request
williamr@4
  6316
** handed to [scratch memory allocator].  Only the value returned in the
williamr@4
  6317
** *pHighwater parameter to [sqlite3_status()] is of interest.  
williamr@4
  6318
** The value written into the *pCurrent parameter is undefined.</dd>
williamr@4
  6319
**
williamr@4
  6320
** <dt>SQLITE_STATUS_PARSER_STACK</dt>
williamr@4
  6321
** <dd>This parameter records the deepest parser stack.  It is only
williamr@4
  6322
** meaningful if SQLite is compiled with [YYTRACKMAXSTACKDEPTH].</dd>
williamr@4
  6323
** </dl>
williamr@4
  6324
**
williamr@4
  6325
** New status parameters may be added from time to time.
williamr@4
  6326
*/
williamr@4
  6327
#define SQLITE_STATUS_MEMORY_USED          0
williamr@4
  6328
#define SQLITE_STATUS_PAGECACHE_USED       1
williamr@4
  6329
#define SQLITE_STATUS_PAGECACHE_OVERFLOW   2
williamr@4
  6330
#define SQLITE_STATUS_SCRATCH_USED         3
williamr@4
  6331
#define SQLITE_STATUS_SCRATCH_OVERFLOW     4
williamr@4
  6332
#define SQLITE_STATUS_MALLOC_SIZE          5
williamr@4
  6333
#define SQLITE_STATUS_PARSER_STACK         6
williamr@4
  6334
#define SQLITE_STATUS_PAGECACHE_SIZE       7
williamr@4
  6335
#define SQLITE_STATUS_SCRATCH_SIZE         8
williamr@4
  6336
williamr@4
  6337
/*
williamr@4
  6338
** CAPI3REF: Status Parameters for database connections {H17275} <H17200>
williamr@4
  6339
** EXPERIMENTAL
williamr@4
  6340
**
williamr@4
  6341
** Status verbs for [sqlite3_db_status()].
williamr@4
  6342
**
williamr@4
  6343
** <dl>
williamr@4
  6344
** <dt>SQLITE_DBSTATUS_LOOKASIDE_USED</dt>
williamr@4
  6345
** <dd>This parameter returns the number of lookaside memory slots currently
williamr@4
  6346
** checked out.</dd>
williamr@4
  6347
** </dl>
williamr@4
  6348
*/
williamr@4
  6349
#define SQLITE_DBSTATUS_LOOKASIDE_USED     0
williamr@4
  6350
williamr@4
  6351
/*
williamr@4
  6352
** Undo the hack that converts floating point types to integer for
williamr@4
  6353
** builds on processors without floating point support.
williamr@4
  6354
*/
williamr@4
  6355
#ifdef SQLITE_OMIT_FLOATING_POINT
williamr@4
  6356
# undef double
williamr@4
  6357
#endif
williamr@4
  6358
williamr@4
  6359
#ifdef __cplusplus
williamr@4
  6360
}  /* End of the 'extern "C"' block */
williamr@4
  6361
#endif
williamr@4
  6362
#endif