webengine/webkitutils/SqliteSymbian/sqlite3.h
changeset 0 dd21522fd290
equal deleted inserted replaced
-1:000000000000 0:dd21522fd290
       
     1 /*
       
     2 ** 2001 September 15
       
     3 **
       
     4 ** The author disclaims copyright to this source code.  In place of
       
     5 ** a legal notice, here is a blessing:
       
     6 **
       
     7 **    May you do good and not evil.
       
     8 **    May you find forgiveness for yourself and forgive others.
       
     9 **    May you share freely, never taking more than you give.
       
    10 **
       
    11 *************************************************************************
       
    12 ** This header file defines the interface that the SQLite library
       
    13 ** presents to client programs.
       
    14 **
       
    15 ** @(#) $Id: sqlite.h.in,v 1.189 2006/08/24 14:59:46 drh Exp $
       
    16 */
       
    17 #ifndef _SQLITE3_H_
       
    18 #define _SQLITE3_H_
       
    19 #include <stdarg.h>     /* Needed for the definition of va_list */
       
    20 
       
    21 /*
       
    22 ** Make sure we can call this stuff from C++.
       
    23 */
       
    24 #ifdef __cplusplus
       
    25 extern "C" {
       
    26 #endif
       
    27 
       
    28 /*
       
    29 ** The version of the SQLite library.
       
    30 */
       
    31 #ifdef SQLITE_VERSION
       
    32 # undef SQLITE_VERSION
       
    33 #endif
       
    34 #define SQLITE_VERSION         "3.3.7"
       
    35 
       
    36 /*
       
    37 ** The format of the version string is "X.Y.Z<trailing string>", where
       
    38 ** X is the major version number, Y is the minor version number and Z
       
    39 ** is the release number. The trailing string is often "alpha" or "beta".
       
    40 ** For example "3.1.1beta".
       
    41 **
       
    42 ** The SQLITE_VERSION_NUMBER is an integer with the value 
       
    43 ** (X*100000 + Y*1000 + Z). For example, for version "3.1.1beta", 
       
    44 ** SQLITE_VERSION_NUMBER is set to 3001001. To detect if they are using 
       
    45 ** version 3.1.1 or greater at compile time, programs may use the test 
       
    46 ** (SQLITE_VERSION_NUMBER>=3001001).
       
    47 */
       
    48 #ifdef SQLITE_VERSION_NUMBER
       
    49 # undef SQLITE_VERSION_NUMBER
       
    50 #endif
       
    51 #define SQLITE_VERSION_NUMBER 3003007
       
    52 
       
    53 /*
       
    54 ** The version string is also compiled into the library so that a program
       
    55 ** can check to make sure that the lib*.a file and the *.h file are from
       
    56 ** the same version.  The sqlite3_libversion() function returns a pointer
       
    57 ** to the sqlite3_version variable - useful in DLLs which cannot access
       
    58 ** global variables.
       
    59 */
       
    60 extern const char sqlite3_version[];
       
    61 const char *sqlite3_libversion(void);
       
    62 
       
    63 /*
       
    64 ** Return the value of the SQLITE_VERSION_NUMBER macro when the
       
    65 ** library was compiled.
       
    66 */
       
    67 int sqlite3_libversion_number(void);
       
    68 
       
    69 /*
       
    70 ** Each open sqlite database is represented by an instance of the
       
    71 ** following opaque structure.
       
    72 */
       
    73 typedef struct sqlite3 sqlite3;
       
    74 
       
    75 
       
    76 /*
       
    77 ** Some compilers do not support the "long long" datatype.  So we have
       
    78 ** to do a typedef that for 64-bit integers that depends on what compiler
       
    79 ** is being used.
       
    80 */
       
    81 #ifdef SQLITE_INT64_TYPE
       
    82   typedef SQLITE_INT64_TYPE sqlite_int64;
       
    83   typedef unsigned SQLITE_INT64_TYPE sqlite_uint64;
       
    84 #elif defined(_MSC_VER) || defined(__BORLANDC__)
       
    85   typedef __int64 sqlite_int64;
       
    86   typedef unsigned __int64 sqlite_uint64;
       
    87 #else
       
    88   typedef long long int sqlite_int64;
       
    89   typedef unsigned long long int sqlite_uint64;
       
    90 #endif
       
    91 
       
    92 /*
       
    93 ** If compiling for a processor that lacks floating point support,
       
    94 ** substitute integer for floating-point
       
    95 */
       
    96 #ifdef SQLITE_OMIT_FLOATING_POINT
       
    97 # define double sqlite_int64
       
    98 #endif
       
    99 
       
   100 /*
       
   101 ** A function to close the database.
       
   102 **
       
   103 ** Call this function with a pointer to a structure that was previously
       
   104 ** returned from sqlite3_open() and the corresponding database will by closed.
       
   105 **
       
   106 ** All SQL statements prepared using sqlite3_prepare() or
       
   107 ** sqlite3_prepare16() must be deallocated using sqlite3_finalize() before
       
   108 ** this routine is called. Otherwise, SQLITE_BUSY is returned and the
       
   109 ** database connection remains open.
       
   110 */
       
   111 IMPORT_C int sqlite3_close(sqlite3 *);
       
   112 
       
   113 /*
       
   114 ** The type for a callback function.
       
   115 */
       
   116 typedef int (*sqlite3_callback)(void*,int,char**, char**);
       
   117 
       
   118 /*
       
   119 ** A function to executes one or more statements of SQL.
       
   120 **
       
   121 ** If one or more of the SQL statements are queries, then
       
   122 ** the callback function specified by the 3rd parameter is
       
   123 ** invoked once for each row of the query result.  This callback
       
   124 ** should normally return 0.  If the callback returns a non-zero
       
   125 ** value then the query is aborted, all subsequent SQL statements
       
   126 ** are skipped and the sqlite3_exec() function returns the SQLITE_ABORT.
       
   127 **
       
   128 ** The 4th parameter is an arbitrary pointer that is passed
       
   129 ** to the callback function as its first parameter.
       
   130 **
       
   131 ** The 2nd parameter to the callback function is the number of
       
   132 ** columns in the query result.  The 3rd parameter to the callback
       
   133 ** is an array of strings holding the values for each column.
       
   134 ** The 4th parameter to the callback is an array of strings holding
       
   135 ** the names of each column.
       
   136 **
       
   137 ** The callback function may be NULL, even for queries.  A NULL
       
   138 ** callback is not an error.  It just means that no callback
       
   139 ** will be invoked.
       
   140 **
       
   141 ** If an error occurs while parsing or evaluating the SQL (but
       
   142 ** not while executing the callback) then an appropriate error
       
   143 ** message is written into memory obtained from malloc() and
       
   144 ** *errmsg is made to point to that message.  The calling function
       
   145 ** is responsible for freeing the memory that holds the error
       
   146 ** message.   Use sqlite3_free() for this.  If errmsg==NULL,
       
   147 ** then no error message is ever written.
       
   148 **
       
   149 ** The return value is is SQLITE_OK if there are no errors and
       
   150 ** some other return code if there is an error.  The particular
       
   151 ** return value depends on the type of error. 
       
   152 **
       
   153 ** If the query could not be executed because a database file is
       
   154 ** locked or busy, then this function returns SQLITE_BUSY.  (This
       
   155 ** behavior can be modified somewhat using the sqlite3_busy_handler()
       
   156 ** and sqlite3_busy_timeout() functions below.)
       
   157 */
       
   158 int sqlite3_exec(
       
   159   sqlite3*,                     /* An open database */
       
   160   const char *sql,              /* SQL to be executed */
       
   161   sqlite3_callback,             /* Callback function */
       
   162   void *,                       /* 1st argument to callback function */
       
   163   char **errmsg                 /* Error msg written here */
       
   164 );
       
   165 
       
   166 /*
       
   167 ** Return values for sqlite3_exec() and sqlite3_step()
       
   168 */
       
   169 #define SQLITE_OK           0   /* Successful result */
       
   170 /* beginning-of-error-codes */
       
   171 #define SQLITE_ERROR        1   /* SQL error or missing database */
       
   172 #define SQLITE_INTERNAL     2   /* NOT USED. Internal logic error in SQLite */
       
   173 #define SQLITE_PERM         3   /* Access permission denied */
       
   174 #define SQLITE_ABORT        4   /* Callback routine requested an abort */
       
   175 #define SQLITE_BUSY         5   /* The database file is locked */
       
   176 #define SQLITE_LOCKED       6   /* A table in the database is locked */
       
   177 #define SQLITE_NOMEM        7   /* A malloc() failed */
       
   178 #define SQLITE_READONLY     8   /* Attempt to write a readonly database */
       
   179 #define SQLITE_INTERRUPT    9   /* Operation terminated by sqlite3_interrupt()*/
       
   180 #define SQLITE_IOERR       10   /* Some kind of disk I/O error occurred */
       
   181 #define SQLITE_CORRUPT     11   /* The database disk image is malformed */
       
   182 #define SQLITE_NOTFOUND    12   /* NOT USED. Table or record not found */
       
   183 #define SQLITE_FULL        13   /* Insertion failed because database is full */
       
   184 #define SQLITE_CANTOPEN    14   /* Unable to open the database file */
       
   185 #define SQLITE_PROTOCOL    15   /* Database lock protocol error */
       
   186 #define SQLITE_EMPTY       16   /* Database is empty */
       
   187 #define SQLITE_SCHEMA      17   /* The database schema changed */
       
   188 #define SQLITE_TOOBIG      18   /* NOT USED. Too much data for one row */
       
   189 #define SQLITE_CONSTRAINT  19   /* Abort due to contraint violation */
       
   190 #define SQLITE_MISMATCH    20   /* Data type mismatch */
       
   191 #define SQLITE_MISUSE      21   /* Library used incorrectly */
       
   192 #define SQLITE_NOLFS       22   /* Uses OS features not supported on host */
       
   193 #define SQLITE_AUTH        23   /* Authorization denied */
       
   194 #define SQLITE_FORMAT      24   /* Auxiliary database format error */
       
   195 #define SQLITE_RANGE       25   /* 2nd parameter to sqlite3_bind out of range */
       
   196 #define SQLITE_NOTADB      26   /* File opened that is not a database file */
       
   197 #define SQLITE_ROW         100  /* sqlite3_step() has another row ready */
       
   198 #define SQLITE_DONE        101  /* sqlite3_step() has finished executing */
       
   199 /* end-of-error-codes */
       
   200 
       
   201 /*
       
   202 ** Each entry in an SQLite table has a unique integer key.  (The key is
       
   203 ** the value of the INTEGER PRIMARY KEY column if there is such a column,
       
   204 ** otherwise the key is generated at random.  The unique key is always
       
   205 ** available as the ROWID, OID, or _ROWID_ column.)  The following routine
       
   206 ** returns the integer key of the most recent insert in the database.
       
   207 **
       
   208 ** This function is similar to the mysql_insert_id() function from MySQL.
       
   209 */
       
   210 IMPORT_C sqlite_int64 sqlite3_last_insert_rowid(sqlite3*);
       
   211 
       
   212 /*
       
   213 ** This function returns the number of database rows that were changed
       
   214 ** (or inserted or deleted) by the most recent called sqlite3_exec().
       
   215 **
       
   216 ** All changes are counted, even if they were later undone by a
       
   217 ** ROLLBACK or ABORT.  Except, changes associated with creating and
       
   218 ** dropping tables are not counted.
       
   219 **
       
   220 ** If a callback invokes sqlite3_exec() recursively, then the changes
       
   221 ** in the inner, recursive call are counted together with the changes
       
   222 ** in the outer call.
       
   223 **
       
   224 ** SQLite implements the command "DELETE FROM table" without a WHERE clause
       
   225 ** by dropping and recreating the table.  (This is much faster than going
       
   226 ** through and deleting individual elements form the table.)  Because of
       
   227 ** this optimization, the change count for "DELETE FROM table" will be
       
   228 ** zero regardless of the number of elements that were originally in the
       
   229 ** table. To get an accurate count of the number of rows deleted, use
       
   230 ** "DELETE FROM table WHERE 1" instead.
       
   231 */
       
   232 IMPORT_C int sqlite3_changes(sqlite3*);
       
   233 
       
   234 /*
       
   235 ** This function returns the number of database rows that have been
       
   236 ** modified by INSERT, UPDATE or DELETE statements since the database handle
       
   237 ** was opened. This includes UPDATE, INSERT and DELETE statements executed
       
   238 ** as part of trigger programs. All changes are counted as soon as the
       
   239 ** statement that makes them is completed (when the statement handle is
       
   240 ** passed to sqlite3_reset() or sqlite_finalise()).
       
   241 **
       
   242 ** SQLite implements the command "DELETE FROM table" without a WHERE clause
       
   243 ** by dropping and recreating the table.  (This is much faster than going
       
   244 ** through and deleting individual elements form the table.)  Because of
       
   245 ** this optimization, the change count for "DELETE FROM table" will be
       
   246 ** zero regardless of the number of elements that were originally in the
       
   247 ** table. To get an accurate count of the number of rows deleted, use
       
   248 ** "DELETE FROM table WHERE 1" instead.
       
   249 */
       
   250 int sqlite3_total_changes(sqlite3*);
       
   251 
       
   252 /* This function causes any pending database operation to abort and
       
   253 ** return at its earliest opportunity.  This routine is typically
       
   254 ** called in response to a user action such as pressing "Cancel"
       
   255 ** or Ctrl-C where the user wants a long query operation to halt
       
   256 ** immediately.
       
   257 */
       
   258 void sqlite3_interrupt(sqlite3*);
       
   259 
       
   260 
       
   261 /* These functions return true if the given input string comprises
       
   262 ** one or more complete SQL statements. For the sqlite3_complete() call,
       
   263 ** the parameter must be a nul-terminated UTF-8 string. For
       
   264 ** sqlite3_complete16(), a nul-terminated machine byte order UTF-16 string
       
   265 ** is required.
       
   266 **
       
   267 ** The algorithm is simple.  If the last token other than spaces
       
   268 ** and comments is a semicolon, then return true.  otherwise return
       
   269 ** false.
       
   270 */
       
   271 int sqlite3_complete(const char *sql);
       
   272 int sqlite3_complete16(const void *sql);
       
   273 
       
   274 /*
       
   275 ** This routine identifies a callback function that is invoked
       
   276 ** whenever an attempt is made to open a database table that is
       
   277 ** currently locked by another process or thread.  If the busy callback
       
   278 ** is NULL, then sqlite3_exec() returns SQLITE_BUSY immediately if
       
   279 ** it finds a locked table.  If the busy callback is not NULL, then
       
   280 ** sqlite3_exec() invokes the callback with three arguments.  The
       
   281 ** second argument is the name of the locked table and the third
       
   282 ** argument is the number of times the table has been busy.  If the
       
   283 ** busy callback returns 0, then sqlite3_exec() immediately returns
       
   284 ** SQLITE_BUSY.  If the callback returns non-zero, then sqlite3_exec()
       
   285 ** tries to open the table again and the cycle repeats.
       
   286 **
       
   287 ** The default busy callback is NULL.
       
   288 **
       
   289 ** Sqlite is re-entrant, so the busy handler may start a new query. 
       
   290 ** (It is not clear why anyone would every want to do this, but it
       
   291 ** is allowed, in theory.)  But the busy handler may not close the
       
   292 ** database.  Closing the database from a busy handler will delete 
       
   293 ** data structures out from under the executing query and will 
       
   294 ** probably result in a coredump.
       
   295 */
       
   296 IMPORT_C int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*);
       
   297 
       
   298 /*
       
   299 ** This routine sets a busy handler that sleeps for a while when a
       
   300 ** table is locked.  The handler will sleep multiple times until 
       
   301 ** at least "ms" milleseconds of sleeping have been done.  After
       
   302 ** "ms" milleseconds of sleeping, the handler returns 0 which
       
   303 ** causes sqlite3_exec() to return SQLITE_BUSY.
       
   304 **
       
   305 ** Calling this routine with an argument less than or equal to zero
       
   306 ** turns off all busy handlers.
       
   307 */
       
   308 IMPORT_C int sqlite3_busy_timeout(sqlite3*, int ms);
       
   309 
       
   310 /*
       
   311 ** This next routine is really just a wrapper around sqlite3_exec().
       
   312 ** Instead of invoking a user-supplied callback for each row of the
       
   313 ** result, this routine remembers each row of the result in memory
       
   314 ** obtained from malloc(), then returns all of the result after the
       
   315 ** query has finished. 
       
   316 **
       
   317 ** As an example, suppose the query result where this table:
       
   318 **
       
   319 **        Name        | Age
       
   320 **        -----------------------
       
   321 **        Alice       | 43
       
   322 **        Bob         | 28
       
   323 **        Cindy       | 21
       
   324 **
       
   325 ** If the 3rd argument were &azResult then after the function returns
       
   326 ** azResult will contain the following data:
       
   327 **
       
   328 **        azResult[0] = "Name";
       
   329 **        azResult[1] = "Age";
       
   330 **        azResult[2] = "Alice";
       
   331 **        azResult[3] = "43";
       
   332 **        azResult[4] = "Bob";
       
   333 **        azResult[5] = "28";
       
   334 **        azResult[6] = "Cindy";
       
   335 **        azResult[7] = "21";
       
   336 **
       
   337 ** Notice that there is an extra row of data containing the column
       
   338 ** headers.  But the *nrow return value is still 3.  *ncolumn is
       
   339 ** set to 2.  In general, the number of values inserted into azResult
       
   340 ** will be ((*nrow) + 1)*(*ncolumn).
       
   341 **
       
   342 ** After the calling function has finished using the result, it should 
       
   343 ** pass the result data pointer to sqlite3_free_table() in order to 
       
   344 ** release the memory that was malloc-ed.  Because of the way the 
       
   345 ** malloc() happens, the calling function must not try to call 
       
   346 ** free() directly.  Only sqlite3_free_table() is able to release 
       
   347 ** the memory properly and safely.
       
   348 **
       
   349 ** The return value of this routine is the same as from sqlite3_exec().
       
   350 */
       
   351 int sqlite3_get_table(
       
   352   sqlite3*,               /* An open database */
       
   353   const char *sql,       /* SQL to be executed */
       
   354   char ***resultp,       /* Result written to a char *[]  that this points to */
       
   355   int *nrow,             /* Number of result rows written here */
       
   356   int *ncolumn,          /* Number of result columns written here */
       
   357   char **errmsg          /* Error msg written here */
       
   358 );
       
   359 
       
   360 /*
       
   361 ** Call this routine to free the memory that sqlite3_get_table() allocated.
       
   362 */
       
   363 void sqlite3_free_table(char **result);
       
   364 
       
   365 /*
       
   366 ** The following routines are variants of the "sprintf()" from the
       
   367 ** standard C library.  The resulting string is written into memory
       
   368 ** obtained from malloc() so that there is never a possiblity of buffer
       
   369 ** overflow.  These routines also implement some additional formatting
       
   370 ** options that are useful for constructing SQL statements.
       
   371 **
       
   372 ** The strings returned by these routines should be freed by calling
       
   373 ** sqlite3_free().
       
   374 **
       
   375 ** All of the usual printf formatting options apply.  In addition, there
       
   376 ** is a "%q" option.  %q works like %s in that it substitutes a null-terminated
       
   377 ** string from the argument list.  But %q also doubles every '\'' character.
       
   378 ** %q is designed for use inside a string literal.  By doubling each '\''
       
   379 ** character it escapes that character and allows it to be inserted into
       
   380 ** the string.
       
   381 **
       
   382 ** For example, so some string variable contains text as follows:
       
   383 **
       
   384 **      char *zText = "It's a happy day!";
       
   385 **
       
   386 ** We can use this text in an SQL statement as follows:
       
   387 **
       
   388 **      char *z = sqlite3_mprintf("INSERT INTO TABLES('%q')", zText);
       
   389 **      sqlite3_exec(db, z, callback1, 0, 0);
       
   390 **      sqlite3_free(z);
       
   391 **
       
   392 ** Because the %q format string is used, the '\'' character in zText
       
   393 ** is escaped and the SQL generated is as follows:
       
   394 **
       
   395 **      INSERT INTO table1 VALUES('It''s a happy day!')
       
   396 **
       
   397 ** This is correct.  Had we used %s instead of %q, the generated SQL
       
   398 ** would have looked like this:
       
   399 **
       
   400 **      INSERT INTO table1 VALUES('It's a happy day!');
       
   401 **
       
   402 ** This second example is an SQL syntax error.  As a general rule you
       
   403 ** should always use %q instead of %s when inserting text into a string 
       
   404 ** literal.
       
   405 */
       
   406 char *sqlite3_mprintf(const char*,...);
       
   407 char *sqlite3_vmprintf(const char*, va_list);
       
   408 char *sqlite3_snprintf(int,char*,const char*, ...);
       
   409 
       
   410 /*
       
   411 ** SQLite uses its own memory allocator.  On many installations, this
       
   412 ** memory allocator is identical to the standard malloc()/realloc()/free()
       
   413 ** and can be used interchangable.  On others, the implementations are
       
   414 ** different.  For maximum portability, it is best not to mix calls
       
   415 ** to the standard malloc/realloc/free with the sqlite versions.
       
   416 */
       
   417 void *sqlite3_malloc(int);
       
   418 void *sqlite3_realloc(void*, int);
       
   419 void sqlite3_free(void*);
       
   420 
       
   421 #ifndef SQLITE_OMIT_AUTHORIZATION
       
   422 /*
       
   423 ** This routine registers a callback with the SQLite library.  The
       
   424 ** callback is invoked (at compile-time, not at run-time) for each
       
   425 ** attempt to access a column of a table in the database.  The callback
       
   426 ** returns SQLITE_OK if access is allowed, SQLITE_DENY if the entire
       
   427 ** SQL statement should be aborted with an error and SQLITE_IGNORE
       
   428 ** if the column should be treated as a NULL value.
       
   429 */
       
   430 int sqlite3_set_authorizer(
       
   431   sqlite3*,
       
   432   int (*xAuth)(void*,int,const char*,const char*,const char*,const char*),
       
   433   void *pUserData
       
   434 );
       
   435 #endif
       
   436 
       
   437 /*
       
   438 ** The second parameter to the access authorization function above will
       
   439 ** be one of the values below.  These values signify what kind of operation
       
   440 ** is to be authorized.  The 3rd and 4th parameters to the authorization
       
   441 ** function will be parameters or NULL depending on which of the following
       
   442 ** codes is used as the second parameter.  The 5th parameter is the name
       
   443 ** of the database ("main", "temp", etc.) if applicable.  The 6th parameter
       
   444 ** is the name of the inner-most trigger or view that is responsible for
       
   445 ** the access attempt or NULL if this access attempt is directly from 
       
   446 ** input SQL code.
       
   447 **
       
   448 **                                          Arg-3           Arg-4
       
   449 */
       
   450 #define SQLITE_COPY                  0   /* Table Name      File Name       */
       
   451 #define SQLITE_CREATE_INDEX          1   /* Index Name      Table Name      */
       
   452 #define SQLITE_CREATE_TABLE          2   /* Table Name      NULL            */
       
   453 #define SQLITE_CREATE_TEMP_INDEX     3   /* Index Name      Table Name      */
       
   454 #define SQLITE_CREATE_TEMP_TABLE     4   /* Table Name      NULL            */
       
   455 #define SQLITE_CREATE_TEMP_TRIGGER   5   /* Trigger Name    Table Name      */
       
   456 #define SQLITE_CREATE_TEMP_VIEW      6   /* View Name       NULL            */
       
   457 #define SQLITE_CREATE_TRIGGER        7   /* Trigger Name    Table Name      */
       
   458 #define SQLITE_CREATE_VIEW           8   /* View Name       NULL            */
       
   459 #define SQLITE_DELETE                9   /* Table Name      NULL            */
       
   460 #define SQLITE_DROP_INDEX           10   /* Index Name      Table Name      */
       
   461 #define SQLITE_DROP_TABLE           11   /* Table Name      NULL            */
       
   462 #define SQLITE_DROP_TEMP_INDEX      12   /* Index Name      Table Name      */
       
   463 #define SQLITE_DROP_TEMP_TABLE      13   /* Table Name      NULL            */
       
   464 #define SQLITE_DROP_TEMP_TRIGGER    14   /* Trigger Name    Table Name      */
       
   465 #define SQLITE_DROP_TEMP_VIEW       15   /* View Name       NULL            */
       
   466 #define SQLITE_DROP_TRIGGER         16   /* Trigger Name    Table Name      */
       
   467 #define SQLITE_DROP_VIEW            17   /* View Name       NULL            */
       
   468 #define SQLITE_INSERT               18   /* Table Name      NULL            */
       
   469 #define SQLITE_PRAGMA               19   /* Pragma Name     1st arg or NULL */
       
   470 #define SQLITE_READ                 20   /* Table Name      Column Name     */
       
   471 #define SQLITE_SELECT               21   /* NULL            NULL            */
       
   472 #define SQLITE_TRANSACTION          22   /* NULL            NULL            */
       
   473 #define SQLITE_UPDATE               23   /* Table Name      Column Name     */
       
   474 #define SQLITE_ATTACH               24   /* Filename        NULL            */
       
   475 #define SQLITE_DETACH               25   /* Database Name   NULL            */
       
   476 #define SQLITE_ALTER_TABLE          26   /* Database Name   Table Name      */
       
   477 #define SQLITE_REINDEX              27   /* Index Name      NULL            */
       
   478 #define SQLITE_ANALYZE              28   /* Table Name      NULL            */
       
   479 #define SQLITE_CREATE_VTABLE        29   /* Table Name      Module Name     */
       
   480 #define SQLITE_DROP_VTABLE          30   /* Table Name      Module Name     */
       
   481 #define SQLITE_FUNCTION             31   /* Function Name   NULL            */
       
   482 
       
   483 /*
       
   484 ** The return value of the authorization function should be one of the
       
   485 ** following constants:
       
   486 */
       
   487 /* #define SQLITE_OK  0   // Allow access (This is actually defined above) */
       
   488 #define SQLITE_DENY   1   /* Abort the SQL statement with an error */
       
   489 #define SQLITE_IGNORE 2   /* Don't allow access, but don't generate an error */
       
   490 
       
   491 /*
       
   492 ** Register a function for tracing SQL command evaluation.  The function
       
   493 ** registered by sqlite3_trace() is invoked at the first sqlite3_step()
       
   494 ** for the evaluation of an SQL statement.  The function registered by
       
   495 ** sqlite3_profile() runs at the end of each SQL statement and includes
       
   496 ** information on how long that statement ran.
       
   497 **
       
   498 ** The sqlite3_profile() API is currently considered experimental and
       
   499 ** is subject to change.
       
   500 */
       
   501 void *sqlite3_trace(sqlite3*, void(*xTrace)(void*,const char*), void*);
       
   502 void *sqlite3_profile(sqlite3*,
       
   503    void(*xProfile)(void*,const char*,sqlite_uint64), void*);
       
   504 
       
   505 /*
       
   506 ** This routine configures a callback function - the progress callback - that
       
   507 ** is invoked periodically during long running calls to sqlite3_exec(),
       
   508 ** sqlite3_step() and sqlite3_get_table(). An example use for this API is to 
       
   509 ** keep a GUI updated during a large query.
       
   510 **
       
   511 ** The progress callback is invoked once for every N virtual machine opcodes,
       
   512 ** where N is the second argument to this function. The progress callback
       
   513 ** itself is identified by the third argument to this function. The fourth
       
   514 ** argument to this function is a void pointer passed to the progress callback
       
   515 ** function each time it is invoked.
       
   516 **
       
   517 ** If a call to sqlite3_exec(), sqlite3_step() or sqlite3_get_table() results 
       
   518 ** in less than N opcodes being executed, then the progress callback is not
       
   519 ** invoked.
       
   520 ** 
       
   521 ** To remove the progress callback altogether, pass NULL as the third
       
   522 ** argument to this function.
       
   523 **
       
   524 ** If the progress callback returns a result other than 0, then the current 
       
   525 ** query is immediately terminated and any database changes rolled back. If the
       
   526 ** query was part of a larger transaction, then the transaction is not rolled
       
   527 ** back and remains active. The sqlite3_exec() call returns SQLITE_ABORT. 
       
   528 **
       
   529 ******* THIS IS AN EXPERIMENTAL API AND IS SUBJECT TO CHANGE ******
       
   530 */
       
   531 void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
       
   532 
       
   533 /*
       
   534 ** Register a callback function to be invoked whenever a new transaction
       
   535 ** is committed.  The pArg argument is passed through to the callback.
       
   536 ** callback.  If the callback function returns non-zero, then the commit
       
   537 ** is converted into a rollback.
       
   538 **
       
   539 ** If another function was previously registered, its pArg value is returned.
       
   540 ** Otherwise NULL is returned.
       
   541 **
       
   542 ** Registering a NULL function disables the callback.
       
   543 **
       
   544 ******* THIS IS AN EXPERIMENTAL API AND IS SUBJECT TO CHANGE ******
       
   545 */
       
   546 void *sqlite3_commit_hook(sqlite3*, int(*)(void*), void*);
       
   547 
       
   548 /*
       
   549 ** Open the sqlite database file "filename".  The "filename" is UTF-8
       
   550 ** encoded for sqlite3_open() and UTF-16 encoded in the native byte order
       
   551 ** for sqlite3_open16().  An sqlite3* handle is returned in *ppDb, even
       
   552 ** if an error occurs. If the database is opened (or created) successfully,
       
   553 ** then SQLITE_OK is returned. Otherwise an error code is returned. The
       
   554 ** sqlite3_errmsg() or sqlite3_errmsg16()  routines can be used to obtain
       
   555 ** an English language description of the error.
       
   556 **
       
   557 ** If the database file does not exist, then a new database is created.
       
   558 ** The encoding for the database is UTF-8 if sqlite3_open() is called and
       
   559 ** UTF-16 if sqlite3_open16 is used.
       
   560 **
       
   561 ** Whether or not an error occurs when it is opened, resources associated
       
   562 ** with the sqlite3* handle should be released by passing it to
       
   563 ** sqlite3_close() when it is no longer required.
       
   564 */
       
   565 int sqlite3_open(
       
   566   const char *filename,   /* Database filename (UTF-8) */
       
   567   sqlite3 **ppDb          /* OUT: SQLite db handle */
       
   568 );
       
   569 IMPORT_C int sqlite3_open16(
       
   570   const void *filename,   /* Database filename (UTF-16) */
       
   571   sqlite3 **ppDb          /* OUT: SQLite db handle */
       
   572 );
       
   573 
       
   574 /*
       
   575 ** Return the error code for the most recent sqlite3_* API call associated
       
   576 ** with sqlite3 handle 'db'. SQLITE_OK is returned if the most recent 
       
   577 ** API call was successful.
       
   578 **
       
   579 ** Calls to many sqlite3_* functions set the error code and string returned
       
   580 ** by sqlite3_errcode(), sqlite3_errmsg() and sqlite3_errmsg16()
       
   581 ** (overwriting the previous values). Note that calls to sqlite3_errcode(),
       
   582 ** sqlite3_errmsg() and sqlite3_errmsg16() themselves do not affect the
       
   583 ** results of future invocations.
       
   584 **
       
   585 ** Assuming no other intervening sqlite3_* API calls are made, the error
       
   586 ** code returned by this function is associated with the same error as
       
   587 ** the strings  returned by sqlite3_errmsg() and sqlite3_errmsg16().
       
   588 */
       
   589 IMPORT_C int sqlite3_errcode(sqlite3 *db);
       
   590 
       
   591 /*
       
   592 ** Return a pointer to a UTF-8 encoded string describing in english the
       
   593 ** error condition for the most recent sqlite3_* API call. The returned
       
   594 ** string is always terminated by an 0x00 byte.
       
   595 **
       
   596 ** The string "not an error" is returned when the most recent API call was
       
   597 ** successful.
       
   598 */
       
   599 IMPORT_C const char *sqlite3_errmsg(sqlite3*);
       
   600 
       
   601 /*
       
   602 ** Return a pointer to a UTF-16 native byte order encoded string describing
       
   603 ** in english the error condition for the most recent sqlite3_* API call.
       
   604 ** The returned string is always terminated by a pair of 0x00 bytes.
       
   605 **
       
   606 ** The string "not an error" is returned when the most recent API call was
       
   607 ** successful.
       
   608 */
       
   609 const void *sqlite3_errmsg16(sqlite3*);
       
   610 
       
   611 /*
       
   612 ** An instance of the following opaque structure is used to represent
       
   613 ** a compiled SQL statment.
       
   614 */
       
   615 typedef struct sqlite3_stmt sqlite3_stmt;
       
   616 
       
   617 /*
       
   618 ** To execute an SQL query, it must first be compiled into a byte-code
       
   619 ** program using one of the following routines. The only difference between
       
   620 ** them is that the second argument, specifying the SQL statement to
       
   621 ** compile, is assumed to be encoded in UTF-8 for the sqlite3_prepare()
       
   622 ** function and UTF-16 for sqlite3_prepare16().
       
   623 **
       
   624 ** The first parameter "db" is an SQLite database handle. The second
       
   625 ** parameter "zSql" is the statement to be compiled, encoded as either
       
   626 ** UTF-8 or UTF-16 (see above). If the next parameter, "nBytes", is less
       
   627 ** than zero, then zSql is read up to the first nul terminator.  If
       
   628 ** "nBytes" is not less than zero, then it is the length of the string zSql
       
   629 ** in bytes (not characters).
       
   630 **
       
   631 ** *pzTail is made to point to the first byte past the end of the first
       
   632 ** SQL statement in zSql.  This routine only compiles the first statement
       
   633 ** in zSql, so *pzTail is left pointing to what remains uncompiled.
       
   634 **
       
   635 ** *ppStmt is left pointing to a compiled SQL statement that can be
       
   636 ** executed using sqlite3_step().  Or if there is an error, *ppStmt may be
       
   637 ** set to NULL.  If the input text contained no SQL (if the input is and
       
   638 ** empty string or a comment) then *ppStmt is set to NULL.
       
   639 **
       
   640 ** On success, SQLITE_OK is returned.  Otherwise an error code is returned.
       
   641 */
       
   642 int sqlite3_prepare(
       
   643   sqlite3 *db,            /* Database handle */
       
   644   const char *zSql,       /* SQL statement, UTF-8 encoded */
       
   645   int nBytes,             /* Length of zSql in bytes. */
       
   646   sqlite3_stmt **ppStmt,  /* OUT: Statement handle */
       
   647   const char **pzTail     /* OUT: Pointer to unused portion of zSql */
       
   648 );
       
   649 IMPORT_C int sqlite3_prepare16(
       
   650   sqlite3 *db,            /* Database handle */
       
   651   const void *zSql,       /* SQL statement, UTF-16 encoded */
       
   652   int nBytes,             /* Length of zSql in bytes. */
       
   653   sqlite3_stmt **ppStmt,  /* OUT: Statement handle */
       
   654   const void **pzTail     /* OUT: Pointer to unused portion of zSql */
       
   655 );
       
   656 
       
   657 /*
       
   658 ** Pointers to the following two opaque structures are used to communicate
       
   659 ** with the implementations of user-defined functions.
       
   660 */
       
   661 typedef struct sqlite3_context sqlite3_context;
       
   662 typedef struct Mem sqlite3_value;
       
   663 
       
   664 /*
       
   665 ** In the SQL strings input to sqlite3_prepare() and sqlite3_prepare16(),
       
   666 ** one or more literals can be replace by parameters "?" or ":AAA" or
       
   667 ** "$VVV" where AAA is an identifer and VVV is a variable name according
       
   668 ** to the syntax rules of the TCL programming language.
       
   669 ** The value of these parameters (also called "host parameter names") can
       
   670 ** be set using the routines listed below.
       
   671 **
       
   672 ** In every case, the first parameter is a pointer to the sqlite3_stmt
       
   673 ** structure returned from sqlite3_prepare().  The second parameter is the
       
   674 ** index of the parameter.  The first parameter as an index of 1.  For
       
   675 ** named parameters (":AAA" or "$VVV") you can use 
       
   676 ** sqlite3_bind_parameter_index() to get the correct index value given
       
   677 ** the parameters name.  If the same named parameter occurs more than
       
   678 ** once, it is assigned the same index each time.
       
   679 **
       
   680 ** The fifth parameter to sqlite3_bind_blob(), sqlite3_bind_text(), and
       
   681 ** sqlite3_bind_text16() is a destructor used to dispose of the BLOB or
       
   682 ** text after SQLite has finished with it.  If the fifth argument is the
       
   683 ** special value SQLITE_STATIC, then the library assumes that the information
       
   684 ** is in static, unmanaged space and does not need to be freed.  If the
       
   685 ** fifth argument has the value SQLITE_TRANSIENT, then SQLite makes its
       
   686 ** own private copy of the data.
       
   687 **
       
   688 ** The sqlite3_bind_* routine must be called before sqlite3_step() after
       
   689 ** an sqlite3_prepare() or sqlite3_reset().  Unbound parameterss are
       
   690 ** interpreted as NULL.
       
   691 */
       
   692 IMPORT_C int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*));
       
   693 int sqlite3_bind_double(sqlite3_stmt*, int, double);
       
   694 int sqlite3_bind_int(sqlite3_stmt*, int, int);
       
   695 IMPORT_C int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite_int64);
       
   696 IMPORT_C int sqlite3_bind_null(sqlite3_stmt*, int);
       
   697 IMPORT_C int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*));
       
   698 IMPORT_C int sqlite3_bind_text16(sqlite3_stmt*, int, const void*, int, void(*)(void*));
       
   699 int sqlite3_bind_value(sqlite3_stmt*, int, const sqlite3_value*);
       
   700 
       
   701 /*
       
   702 ** Return the number of parameters in a compiled SQL statement.  This
       
   703 ** routine was added to support DBD::SQLite.
       
   704 */
       
   705 int sqlite3_bind_parameter_count(sqlite3_stmt*);
       
   706 
       
   707 /*
       
   708 ** Return the name of the i-th parameter.  Ordinary parameters "?" are
       
   709 ** nameless and a NULL is returned.  For parameters of the form :AAA or
       
   710 ** $VVV the complete text of the parameter name is returned, including
       
   711 ** the initial ":" or "$".  NULL is returned if the index is out of range.
       
   712 */
       
   713 const char *sqlite3_bind_parameter_name(sqlite3_stmt*, int);
       
   714 
       
   715 /*
       
   716 ** Return the index of a parameter with the given name.  The name
       
   717 ** must match exactly.  If no parameter with the given name is found,
       
   718 ** return 0.
       
   719 */
       
   720 int sqlite3_bind_parameter_index(sqlite3_stmt*, const char *zName);
       
   721 
       
   722 /*
       
   723 ** Set all the parameters in the compiled SQL statement to NULL.
       
   724 */
       
   725 int sqlite3_clear_bindings(sqlite3_stmt*);
       
   726 
       
   727 /*
       
   728 ** Return the number of columns in the result set returned by the compiled
       
   729 ** SQL statement. This routine returns 0 if pStmt is an SQL statement
       
   730 ** that does not return data (for example an UPDATE).
       
   731 */
       
   732 int sqlite3_column_count(sqlite3_stmt *pStmt);
       
   733 
       
   734 /*
       
   735 ** The first parameter is a compiled SQL statement. This function returns
       
   736 ** the column heading for the Nth column of that statement, where N is the
       
   737 ** second function parameter.  The string returned is UTF-8 for
       
   738 ** sqlite3_column_name() and UTF-16 for sqlite3_column_name16().
       
   739 */
       
   740 IMPORT_C const char *sqlite3_column_name(sqlite3_stmt*,int);
       
   741 IMPORT_C const void *sqlite3_column_name16(sqlite3_stmt*,int);
       
   742 
       
   743 /*
       
   744 ** The first parameter to the following calls is a compiled SQL statement.
       
   745 ** These functions return information about the Nth column returned by 
       
   746 ** the statement, where N is the second function argument.
       
   747 **
       
   748 ** If the Nth column returned by the statement is not a column value,
       
   749 ** then all of the functions return NULL. Otherwise, the return the 
       
   750 ** name of the attached database, table and column that the expression
       
   751 ** extracts a value from.
       
   752 **
       
   753 ** As with all other SQLite APIs, those postfixed with "16" return UTF-16
       
   754 ** encoded strings, the other functions return UTF-8. The memory containing
       
   755 ** the returned strings is valid until the statement handle is finalized().
       
   756 **
       
   757 ** These APIs are only available if the library was compiled with the 
       
   758 ** SQLITE_ENABLE_COLUMN_METADATA preprocessor symbol defined.
       
   759 */
       
   760 const char *sqlite3_column_database_name(sqlite3_stmt*,int);
       
   761 const void *sqlite3_column_database_name16(sqlite3_stmt*,int);
       
   762 const char *sqlite3_column_table_name(sqlite3_stmt*,int);
       
   763 const void *sqlite3_column_table_name16(sqlite3_stmt*,int);
       
   764 const char *sqlite3_column_origin_name(sqlite3_stmt*,int);
       
   765 const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
       
   766 
       
   767 /*
       
   768 ** The first parameter is a compiled SQL statement. If this statement
       
   769 ** is a SELECT statement, the Nth column of the returned result set 
       
   770 ** of the SELECT is a table column then the declared type of the table
       
   771 ** column is returned. If the Nth column of the result set is not at table
       
   772 ** column, then a NULL pointer is returned. The returned string is always
       
   773 ** UTF-8 encoded. For example, in the database schema:
       
   774 **
       
   775 ** CREATE TABLE t1(c1 VARIANT);
       
   776 **
       
   777 ** And the following statement compiled:
       
   778 **
       
   779 ** SELECT c1 + 1, c1 FROM t1;
       
   780 **
       
   781 ** Then this routine would return the string "VARIANT" for the second
       
   782 ** result column (i==1), and a NULL pointer for the first result column
       
   783 ** (i==0).
       
   784 */
       
   785 const char *sqlite3_column_decltype(sqlite3_stmt *, int i);
       
   786 
       
   787 /*
       
   788 ** The first parameter is a compiled SQL statement. If this statement
       
   789 ** is a SELECT statement, the Nth column of the returned result set 
       
   790 ** of the SELECT is a table column then the declared type of the table
       
   791 ** column is returned. If the Nth column of the result set is not at table
       
   792 ** column, then a NULL pointer is returned. The returned string is always
       
   793 ** UTF-16 encoded. For example, in the database schema:
       
   794 **
       
   795 ** CREATE TABLE t1(c1 INTEGER);
       
   796 **
       
   797 ** And the following statement compiled:
       
   798 **
       
   799 ** SELECT c1 + 1, c1 FROM t1;
       
   800 **
       
   801 ** Then this routine would return the string "INTEGER" for the second
       
   802 ** result column (i==1), and a NULL pointer for the first result column
       
   803 ** (i==0).
       
   804 */
       
   805 const void *sqlite3_column_decltype16(sqlite3_stmt*,int);
       
   806 
       
   807 /* 
       
   808 ** After an SQL query has been compiled with a call to either
       
   809 ** sqlite3_prepare() or sqlite3_prepare16(), then this function must be
       
   810 ** called one or more times to execute the statement.
       
   811 **
       
   812 ** The return value will be either SQLITE_BUSY, SQLITE_DONE, 
       
   813 ** SQLITE_ROW, SQLITE_ERROR, or SQLITE_MISUSE.
       
   814 **
       
   815 ** SQLITE_BUSY means that the database engine attempted to open
       
   816 ** a locked database and there is no busy callback registered.
       
   817 ** Call sqlite3_step() again to retry the open.
       
   818 **
       
   819 ** SQLITE_DONE means that the statement has finished executing
       
   820 ** successfully.  sqlite3_step() should not be called again on this virtual
       
   821 ** machine.
       
   822 **
       
   823 ** If the SQL statement being executed returns any data, then 
       
   824 ** SQLITE_ROW is returned each time a new row of data is ready
       
   825 ** for processing by the caller. The values may be accessed using
       
   826 ** the sqlite3_column_*() functions described below. sqlite3_step()
       
   827 ** is called again to retrieve the next row of data.
       
   828 ** 
       
   829 ** SQLITE_ERROR means that a run-time error (such as a constraint
       
   830 ** violation) has occurred.  sqlite3_step() should not be called again on
       
   831 ** the VM. More information may be found by calling sqlite3_errmsg().
       
   832 **
       
   833 ** SQLITE_MISUSE means that the this routine was called inappropriately.
       
   834 ** Perhaps it was called on a virtual machine that had already been
       
   835 ** finalized or on one that had previously returned SQLITE_ERROR or
       
   836 ** SQLITE_DONE.  Or it could be the case the the same database connection
       
   837 ** is being used simulataneously by two or more threads.
       
   838 */
       
   839 IMPORT_C int sqlite3_step(sqlite3_stmt*);
       
   840 
       
   841 /*
       
   842 ** Return the number of values in the current row of the result set.
       
   843 **
       
   844 ** After a call to sqlite3_step() that returns SQLITE_ROW, this routine
       
   845 ** will return the same value as the sqlite3_column_count() function.
       
   846 ** After sqlite3_step() has returned an SQLITE_DONE, SQLITE_BUSY or
       
   847 ** error code, or before sqlite3_step() has been called on a 
       
   848 ** compiled SQL statement, this routine returns zero.
       
   849 */
       
   850 IMPORT_C int sqlite3_data_count(sqlite3_stmt *pStmt);
       
   851 
       
   852 /*
       
   853 ** Values are stored in the database in one of the following fundamental
       
   854 ** types.
       
   855 */
       
   856 #define SQLITE_INTEGER  1
       
   857 #define SQLITE_FLOAT    2
       
   858 /* #define SQLITE_TEXT  3  // See below */
       
   859 #define SQLITE_BLOB     4
       
   860 #define SQLITE_NULL     5
       
   861 
       
   862 /*
       
   863 ** SQLite version 2 defines SQLITE_TEXT differently.  To allow both
       
   864 ** version 2 and version 3 to be included, undefine them both if a
       
   865 ** conflict is seen.  Define SQLITE3_TEXT to be the version 3 value.
       
   866 */
       
   867 #ifdef SQLITE_TEXT
       
   868 # undef SQLITE_TEXT
       
   869 #else
       
   870 # define SQLITE_TEXT     3
       
   871 #endif
       
   872 #define SQLITE3_TEXT     3
       
   873 
       
   874 /*
       
   875 ** The next group of routines returns information about the information
       
   876 ** in a single column of the current result row of a query.  In every
       
   877 ** case the first parameter is a pointer to the SQL statement that is being
       
   878 ** executed (the sqlite_stmt* that was returned from sqlite3_prepare()) and
       
   879 ** the second argument is the index of the column for which information 
       
   880 ** should be returned.  iCol is zero-indexed.  The left-most column as an
       
   881 ** index of 0.
       
   882 **
       
   883 ** If the SQL statement is not currently point to a valid row, or if the
       
   884 ** the colulmn index is out of range, the result is undefined.
       
   885 **
       
   886 ** These routines attempt to convert the value where appropriate.  For
       
   887 ** example, if the internal representation is FLOAT and a text result
       
   888 ** is requested, sprintf() is used internally to do the conversion
       
   889 ** automatically.  The following table details the conversions that
       
   890 ** are applied:
       
   891 **
       
   892 **    Internal Type    Requested Type     Conversion
       
   893 **    -------------    --------------    --------------------------
       
   894 **       NULL             INTEGER         Result is 0
       
   895 **       NULL             FLOAT           Result is 0.0
       
   896 **       NULL             TEXT            Result is an empty string
       
   897 **       NULL             BLOB            Result is a zero-length BLOB
       
   898 **       INTEGER          FLOAT           Convert from integer to float
       
   899 **       INTEGER          TEXT            ASCII rendering of the integer
       
   900 **       INTEGER          BLOB            Same as for INTEGER->TEXT
       
   901 **       FLOAT            INTEGER         Convert from float to integer
       
   902 **       FLOAT            TEXT            ASCII rendering of the float
       
   903 **       FLOAT            BLOB            Same as FLOAT->TEXT
       
   904 **       TEXT             INTEGER         Use atoi()
       
   905 **       TEXT             FLOAT           Use atof()
       
   906 **       TEXT             BLOB            No change
       
   907 **       BLOB             INTEGER         Convert to TEXT then use atoi()
       
   908 **       BLOB             FLOAT           Convert to TEXT then use atof()
       
   909 **       BLOB             TEXT            Add a \000 terminator if needed
       
   910 **
       
   911 ** The following access routines are provided:
       
   912 **
       
   913 ** _type()     Return the datatype of the result.  This is one of
       
   914 **             SQLITE_INTEGER, SQLITE_FLOAT, SQLITE_TEXT, SQLITE_BLOB,
       
   915 **             or SQLITE_NULL.
       
   916 ** _blob()     Return the value of a BLOB.
       
   917 ** _bytes()    Return the number of bytes in a BLOB value or the number
       
   918 **             of bytes in a TEXT value represented as UTF-8.  The \000
       
   919 **             terminator is included in the byte count for TEXT values.
       
   920 ** _bytes16()  Return the number of bytes in a BLOB value or the number
       
   921 **             of bytes in a TEXT value represented as UTF-16.  The \u0000
       
   922 **             terminator is included in the byte count for TEXT values.
       
   923 ** _double()   Return a FLOAT value.
       
   924 ** _int()      Return an INTEGER value in the host computer's native
       
   925 **             integer representation.  This might be either a 32- or 64-bit
       
   926 **             integer depending on the host.
       
   927 ** _int64()    Return an INTEGER value as a 64-bit signed integer.
       
   928 ** _text()     Return the value as UTF-8 text.
       
   929 ** _text16()   Return the value as UTF-16 text.
       
   930 */
       
   931 IMPORT_C const void *sqlite3_column_blob(sqlite3_stmt*, int iCol);
       
   932 IMPORT_C int sqlite3_column_bytes(sqlite3_stmt*, int iCol);
       
   933 int sqlite3_column_bytes16(sqlite3_stmt*, int iCol);
       
   934 IMPORT_C double sqlite3_column_double(sqlite3_stmt*, int iCol);
       
   935 IMPORT_C int sqlite3_column_int(sqlite3_stmt*, int iCol);
       
   936 IMPORT_C sqlite_int64 sqlite3_column_int64(sqlite3_stmt*, int iCol);
       
   937 IMPORT_C const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);
       
   938 IMPORT_C const void *sqlite3_column_text16(sqlite3_stmt*, int iCol);
       
   939 int sqlite3_column_type(sqlite3_stmt*, int iCol);
       
   940 int sqlite3_column_numeric_type(sqlite3_stmt*, int iCol);
       
   941 sqlite3_value *sqlite3_column_value(sqlite3_stmt*, int iCol);
       
   942 
       
   943 /*
       
   944 ** The sqlite3_finalize() function is called to delete a compiled
       
   945 ** SQL statement obtained by a previous call to sqlite3_prepare()
       
   946 ** or sqlite3_prepare16(). If the statement was executed successfully, or
       
   947 ** not executed at all, then SQLITE_OK is returned. If execution of the
       
   948 ** statement failed then an error code is returned. 
       
   949 **
       
   950 ** This routine can be called at any point during the execution of the
       
   951 ** virtual machine.  If the virtual machine has not completed execution
       
   952 ** when this routine is called, that is like encountering an error or
       
   953 ** an interrupt.  (See sqlite3_interrupt().)  Incomplete updates may be
       
   954 ** rolled back and transactions cancelled,  depending on the circumstances,
       
   955 ** and the result code returned will be SQLITE_ABORT.
       
   956 */
       
   957 IMPORT_C int sqlite3_finalize(sqlite3_stmt *pStmt);
       
   958 
       
   959 /*
       
   960 ** The sqlite3_reset() function is called to reset a compiled SQL
       
   961 ** statement obtained by a previous call to sqlite3_prepare() or
       
   962 ** sqlite3_prepare16() back to it's initial state, ready to be re-executed.
       
   963 ** Any SQL statement variables that had values bound to them using
       
   964 ** the sqlite3_bind_*() API retain their values.
       
   965 */
       
   966 IMPORT_C int sqlite3_reset(sqlite3_stmt *pStmt);
       
   967 
       
   968 /*
       
   969 ** The following two functions are used to add user functions or aggregates
       
   970 ** implemented in C to the SQL langauge interpreted by SQLite. The
       
   971 ** difference only between the two is that the second parameter, the
       
   972 ** name of the (scalar) function or aggregate, is encoded in UTF-8 for
       
   973 ** sqlite3_create_function() and UTF-16 for sqlite3_create_function16().
       
   974 **
       
   975 ** The first argument is the database handle that the new function or
       
   976 ** aggregate is to be added to. If a single program uses more than one
       
   977 ** database handle internally, then user functions or aggregates must 
       
   978 ** be added individually to each database handle with which they will be
       
   979 ** used.
       
   980 **
       
   981 ** The third parameter is the number of arguments that the function or
       
   982 ** aggregate takes. If this parameter is negative, then the function or
       
   983 ** aggregate may take any number of arguments.
       
   984 **
       
   985 ** The fourth parameter is one of SQLITE_UTF* values defined below,
       
   986 ** indicating the encoding that the function is most likely to handle
       
   987 ** values in.  This does not change the behaviour of the programming
       
   988 ** interface. However, if two versions of the same function are registered
       
   989 ** with different encoding values, SQLite invokes the version likely to
       
   990 ** minimize conversions between text encodings.
       
   991 **
       
   992 ** The seventh, eighth and ninth parameters, xFunc, xStep and xFinal, are
       
   993 ** pointers to user implemented C functions that implement the user
       
   994 ** function or aggregate. A scalar function requires an implementation of
       
   995 ** the xFunc callback only, NULL pointers should be passed as the xStep
       
   996 ** and xFinal parameters. An aggregate function requires an implementation
       
   997 ** of xStep and xFinal, but NULL should be passed for xFunc. To delete an
       
   998 ** existing user function or aggregate, pass NULL for all three function
       
   999 ** callback. Specifying an inconstent set of callback values, such as an
       
  1000 ** xFunc and an xFinal, or an xStep but no xFinal, SQLITE_ERROR is
       
  1001 ** returned.
       
  1002 */
       
  1003 int sqlite3_create_function(
       
  1004   sqlite3 *,
       
  1005   const char *zFunctionName,
       
  1006   int nArg,
       
  1007   int eTextRep,
       
  1008   void*,
       
  1009   void (*xFunc)(sqlite3_context*,int,sqlite3_value**),
       
  1010   void (*xStep)(sqlite3_context*,int,sqlite3_value**),
       
  1011   void (*xFinal)(sqlite3_context*)
       
  1012 );
       
  1013 int sqlite3_create_function16(
       
  1014   sqlite3*,
       
  1015   const void *zFunctionName,
       
  1016   int nArg,
       
  1017   int eTextRep,
       
  1018   void*,
       
  1019   void (*xFunc)(sqlite3_context*,int,sqlite3_value**),
       
  1020   void (*xStep)(sqlite3_context*,int,sqlite3_value**),
       
  1021   void (*xFinal)(sqlite3_context*)
       
  1022 );
       
  1023 
       
  1024 /*
       
  1025 ** This function is deprecated.  Do not use it.  It continues to exist
       
  1026 ** so as not to break legacy code.  But new code should avoid using it.
       
  1027 */
       
  1028 int sqlite3_aggregate_count(sqlite3_context*);
       
  1029 
       
  1030 /*
       
  1031 ** The next group of routines returns information about parameters to
       
  1032 ** a user-defined function.  Function implementations use these routines
       
  1033 ** to access their parameters.  These routines are the same as the
       
  1034 ** sqlite3_column_* routines except that these routines take a single
       
  1035 ** sqlite3_value* pointer instead of an sqlite3_stmt* and an integer
       
  1036 ** column number.
       
  1037 */
       
  1038 const void *sqlite3_value_blob(sqlite3_value*);
       
  1039 int sqlite3_value_bytes(sqlite3_value*);
       
  1040 int sqlite3_value_bytes16(sqlite3_value*);
       
  1041 double sqlite3_value_double(sqlite3_value*);
       
  1042 int sqlite3_value_int(sqlite3_value*);
       
  1043 sqlite_int64 sqlite3_value_int64(sqlite3_value*);
       
  1044 const unsigned char *sqlite3_value_text(sqlite3_value*);
       
  1045 const void *sqlite3_value_text16(sqlite3_value*);
       
  1046 const void *sqlite3_value_text16le(sqlite3_value*);
       
  1047 const void *sqlite3_value_text16be(sqlite3_value*);
       
  1048 int sqlite3_value_type(sqlite3_value*);
       
  1049 int sqlite3_value_numeric_type(sqlite3_value*);
       
  1050 
       
  1051 /*
       
  1052 ** Aggregate functions use the following routine to allocate
       
  1053 ** a structure for storing their state.  The first time this routine
       
  1054 ** is called for a particular aggregate, a new structure of size nBytes
       
  1055 ** is allocated, zeroed, and returned.  On subsequent calls (for the
       
  1056 ** same aggregate instance) the same buffer is returned.  The implementation
       
  1057 ** of the aggregate can use the returned buffer to accumulate data.
       
  1058 **
       
  1059 ** The buffer allocated is freed automatically by SQLite.
       
  1060 */
       
  1061 void *sqlite3_aggregate_context(sqlite3_context*, int nBytes);
       
  1062 
       
  1063 /*
       
  1064 ** The pUserData parameter to the sqlite3_create_function()
       
  1065 ** routine used to register user functions is available to
       
  1066 ** the implementation of the function using this call.
       
  1067 */
       
  1068 void *sqlite3_user_data(sqlite3_context*);
       
  1069 
       
  1070 /*
       
  1071 ** The following two functions may be used by scalar user functions to
       
  1072 ** associate meta-data with argument values. If the same value is passed to
       
  1073 ** multiple invocations of the user-function during query execution, under
       
  1074 ** some circumstances the associated meta-data may be preserved. This may
       
  1075 ** be used, for example, to add a regular-expression matching scalar
       
  1076 ** function. The compiled version of the regular expression is stored as
       
  1077 ** meta-data associated with the SQL value passed as the regular expression
       
  1078 ** pattern.
       
  1079 **
       
  1080 ** Calling sqlite3_get_auxdata() returns a pointer to the meta data
       
  1081 ** associated with the Nth argument value to the current user function
       
  1082 ** call, where N is the second parameter. If no meta-data has been set for
       
  1083 ** that value, then a NULL pointer is returned.
       
  1084 **
       
  1085 ** The sqlite3_set_auxdata() is used to associate meta data with a user
       
  1086 ** function argument. The third parameter is a pointer to the meta data
       
  1087 ** to be associated with the Nth user function argument value. The fourth
       
  1088 ** parameter specifies a 'delete function' that will be called on the meta
       
  1089 ** data pointer to release it when it is no longer required. If the delete
       
  1090 ** function pointer is NULL, it is not invoked.
       
  1091 **
       
  1092 ** In practice, meta-data is preserved between function calls for
       
  1093 ** expressions that are constant at compile time. This includes literal
       
  1094 ** values and SQL variables.
       
  1095 */
       
  1096 void *sqlite3_get_auxdata(sqlite3_context*, int);
       
  1097 void sqlite3_set_auxdata(sqlite3_context*, int, void*, void (*)(void*));
       
  1098 
       
  1099 
       
  1100 /*
       
  1101 ** These are special value for the destructor that is passed in as the
       
  1102 ** final argument to routines like sqlite3_result_blob().  If the destructor
       
  1103 ** argument is SQLITE_STATIC, it means that the content pointer is constant
       
  1104 ** and will never change.  It does not need to be destroyed.  The 
       
  1105 ** SQLITE_TRANSIENT value means that the content will likely change in
       
  1106 ** the near future and that SQLite should make its own private copy of
       
  1107 ** the content before returning.
       
  1108 */
       
  1109 #define SQLITE_STATIC      ((void(*)(void *))0)
       
  1110 #define SQLITE_TRANSIENT   ((void(*)(void *))-1)
       
  1111 
       
  1112 /*
       
  1113 ** User-defined functions invoke the following routines in order to
       
  1114 ** set their return value.
       
  1115 */
       
  1116 void sqlite3_result_blob(sqlite3_context*, const void*, int, void(*)(void*));
       
  1117 void sqlite3_result_double(sqlite3_context*, double);
       
  1118 void sqlite3_result_error(sqlite3_context*, const char*, int);
       
  1119 void sqlite3_result_error16(sqlite3_context*, const void*, int);
       
  1120 void sqlite3_result_int(sqlite3_context*, int);
       
  1121 void sqlite3_result_int64(sqlite3_context*, sqlite_int64);
       
  1122 void sqlite3_result_null(sqlite3_context*);
       
  1123 void sqlite3_result_text(sqlite3_context*, const char*, int, void(*)(void*));
       
  1124 void sqlite3_result_text16(sqlite3_context*, const void*, int, void(*)(void*));
       
  1125 void sqlite3_result_text16le(sqlite3_context*, const void*, int,void(*)(void*));
       
  1126 void sqlite3_result_text16be(sqlite3_context*, const void*, int,void(*)(void*));
       
  1127 void sqlite3_result_value(sqlite3_context*, sqlite3_value*);
       
  1128 
       
  1129 /*
       
  1130 ** These are the allowed values for the eTextRep argument to
       
  1131 ** sqlite3_create_collation and sqlite3_create_function.
       
  1132 */
       
  1133 #define SQLITE_UTF8           1
       
  1134 #define SQLITE_UTF16LE        2
       
  1135 #define SQLITE_UTF16BE        3
       
  1136 #define SQLITE_UTF16          4    /* Use native byte order */
       
  1137 #define SQLITE_ANY            5    /* sqlite3_create_function only */
       
  1138 #define SQLITE_UTF16_ALIGNED  8    /* sqlite3_create_collation only */
       
  1139 
       
  1140 /*
       
  1141 ** These two functions are used to add new collation sequences to the
       
  1142 ** sqlite3 handle specified as the first argument. 
       
  1143 **
       
  1144 ** The name of the new collation sequence is specified as a UTF-8 string
       
  1145 ** for sqlite3_create_collation() and a UTF-16 string for
       
  1146 ** sqlite3_create_collation16(). In both cases the name is passed as the
       
  1147 ** second function argument.
       
  1148 **
       
  1149 ** The third argument must be one of the constants SQLITE_UTF8,
       
  1150 ** SQLITE_UTF16LE or SQLITE_UTF16BE, indicating that the user-supplied
       
  1151 ** routine expects to be passed pointers to strings encoded using UTF-8,
       
  1152 ** UTF-16 little-endian or UTF-16 big-endian respectively.
       
  1153 **
       
  1154 ** A pointer to the user supplied routine must be passed as the fifth
       
  1155 ** argument. If it is NULL, this is the same as deleting the collation
       
  1156 ** sequence (so that SQLite cannot call it anymore). Each time the user
       
  1157 ** supplied function is invoked, it is passed a copy of the void* passed as
       
  1158 ** the fourth argument to sqlite3_create_collation() or
       
  1159 ** sqlite3_create_collation16() as its first parameter.
       
  1160 **
       
  1161 ** The remaining arguments to the user-supplied routine are two strings,
       
  1162 ** each represented by a [length, data] pair and encoded in the encoding
       
  1163 ** that was passed as the third argument when the collation sequence was
       
  1164 ** registered. The user routine should return negative, zero or positive if
       
  1165 ** the first string is less than, equal to, or greater than the second
       
  1166 ** string. i.e. (STRING1 - STRING2).
       
  1167 */
       
  1168 int sqlite3_create_collation(
       
  1169   sqlite3*, 
       
  1170   const char *zName, 
       
  1171   int eTextRep, 
       
  1172   void*,
       
  1173   int(*xCompare)(void*,int,const void*,int,const void*)
       
  1174 );
       
  1175 int sqlite3_create_collation16(
       
  1176   sqlite3*, 
       
  1177   const char *zName, 
       
  1178   int eTextRep, 
       
  1179   void*,
       
  1180   int(*xCompare)(void*,int,const void*,int,const void*)
       
  1181 );
       
  1182 
       
  1183 /*
       
  1184 ** To avoid having to register all collation sequences before a database
       
  1185 ** can be used, a single callback function may be registered with the
       
  1186 ** database handle to be called whenever an undefined collation sequence is
       
  1187 ** required.
       
  1188 **
       
  1189 ** If the function is registered using the sqlite3_collation_needed() API,
       
  1190 ** then it is passed the names of undefined collation sequences as strings
       
  1191 ** encoded in UTF-8. If sqlite3_collation_needed16() is used, the names
       
  1192 ** are passed as UTF-16 in machine native byte order. A call to either
       
  1193 ** function replaces any existing callback.
       
  1194 **
       
  1195 ** When the user-function is invoked, the first argument passed is a copy
       
  1196 ** of the second argument to sqlite3_collation_needed() or
       
  1197 ** sqlite3_collation_needed16(). The second argument is the database
       
  1198 ** handle. The third argument is one of SQLITE_UTF8, SQLITE_UTF16BE or
       
  1199 ** SQLITE_UTF16LE, indicating the most desirable form of the collation
       
  1200 ** sequence function required. The fourth parameter is the name of the
       
  1201 ** required collation sequence.
       
  1202 **
       
  1203 ** The collation sequence is returned to SQLite by a collation-needed
       
  1204 ** callback using the sqlite3_create_collation() or
       
  1205 ** sqlite3_create_collation16() APIs, described above.
       
  1206 */
       
  1207 int sqlite3_collation_needed(
       
  1208   sqlite3*, 
       
  1209   void*, 
       
  1210   void(*)(void*,sqlite3*,int eTextRep,const char*)
       
  1211 );
       
  1212 int sqlite3_collation_needed16(
       
  1213   sqlite3*, 
       
  1214   void*,
       
  1215   void(*)(void*,sqlite3*,int eTextRep,const void*)
       
  1216 );
       
  1217 
       
  1218 /*
       
  1219 ** Specify the key for an encrypted database.  This routine should be
       
  1220 ** called right after sqlite3_open().
       
  1221 **
       
  1222 ** The code to implement this API is not available in the public release
       
  1223 ** of SQLite.
       
  1224 */
       
  1225 int sqlite3_key(
       
  1226   sqlite3 *db,                   /* Database to be rekeyed */
       
  1227   const void *pKey, int nKey     /* The key */
       
  1228 );
       
  1229 
       
  1230 /*
       
  1231 ** Change the key on an open database.  If the current database is not
       
  1232 ** encrypted, this routine will encrypt it.  If pNew==0 or nNew==0, the
       
  1233 ** database is decrypted.
       
  1234 **
       
  1235 ** The code to implement this API is not available in the public release
       
  1236 ** of SQLite.
       
  1237 */
       
  1238 int sqlite3_rekey(
       
  1239   sqlite3 *db,                   /* Database to be rekeyed */
       
  1240   const void *pKey, int nKey     /* The new key */
       
  1241 );
       
  1242 
       
  1243 /*
       
  1244 ** Sleep for a little while. The second parameter is the number of
       
  1245 ** miliseconds to sleep for. 
       
  1246 **
       
  1247 ** If the operating system does not support sleep requests with 
       
  1248 ** milisecond time resolution, then the time will be rounded up to 
       
  1249 ** the nearest second. The number of miliseconds of sleep actually 
       
  1250 ** requested from the operating system is returned.
       
  1251 */
       
  1252 int sqlite3_sleep(int);
       
  1253 
       
  1254 /*
       
  1255 ** Return TRUE (non-zero) if the statement supplied as an argument needs
       
  1256 ** to be recompiled.  A statement needs to be recompiled whenever the
       
  1257 ** execution environment changes in a way that would alter the program
       
  1258 ** that sqlite3_prepare() generates.  For example, if new functions or
       
  1259 ** collating sequences are registered or if an authorizer function is
       
  1260 ** added or changed.
       
  1261 **
       
  1262 */
       
  1263 IMPORT_C int sqlite3_expired(sqlite3_stmt*);
       
  1264 
       
  1265 /*
       
  1266 ** Move all bindings from the first prepared statement over to the second.
       
  1267 ** This routine is useful, for example, if the first prepared statement
       
  1268 ** fails with an SQLITE_SCHEMA error.  The same SQL can be prepared into
       
  1269 ** the second prepared statement then all of the bindings transfered over
       
  1270 ** to the second statement before the first statement is finalized.
       
  1271 */
       
  1272 int sqlite3_transfer_bindings(sqlite3_stmt*, sqlite3_stmt*);
       
  1273 
       
  1274 /*
       
  1275 ** If the following global variable is made to point to a
       
  1276 ** string which is the name of a directory, then all temporary files
       
  1277 ** created by SQLite will be placed in that directory.  If this variable
       
  1278 ** is NULL pointer, then SQLite does a search for an appropriate temporary
       
  1279 ** file directory.
       
  1280 **
       
  1281 ** Once sqlite3_open() has been called, changing this variable will invalidate
       
  1282 ** the current temporary database, if any.
       
  1283 */
       
  1284 extern char *sqlite3_temp_directory;
       
  1285 
       
  1286 /*
       
  1287 ** This function is called to recover from a malloc() failure that occured
       
  1288 ** within the SQLite library. Normally, after a single malloc() fails the 
       
  1289 ** library refuses to function (all major calls return SQLITE_NOMEM).
       
  1290 ** This function restores the library state so that it can be used again.
       
  1291 **
       
  1292 ** All existing statements (sqlite3_stmt pointers) must be finalized or
       
  1293 ** reset before this call is made. Otherwise, SQLITE_BUSY is returned.
       
  1294 ** If any in-memory databases are in use, either as a main or TEMP
       
  1295 ** database, SQLITE_ERROR is returned. In either of these cases, the 
       
  1296 ** library is not reset and remains unusable.
       
  1297 **
       
  1298 ** This function is *not* threadsafe. Calling this from within a threaded
       
  1299 ** application when threads other than the caller have used SQLite is
       
  1300 ** dangerous and will almost certainly result in malfunctions.
       
  1301 **
       
  1302 ** This functionality can be omitted from a build by defining the 
       
  1303 ** SQLITE_OMIT_GLOBALRECOVER at compile time.
       
  1304 */
       
  1305 int sqlite3_global_recover(void);
       
  1306 
       
  1307 /*
       
  1308 ** Test to see whether or not the database connection is in autocommit
       
  1309 ** mode.  Return TRUE if it is and FALSE if not.  Autocommit mode is on
       
  1310 ** by default.  Autocommit is disabled by a BEGIN statement and reenabled
       
  1311 ** by the next COMMIT or ROLLBACK.
       
  1312 */
       
  1313 int sqlite3_get_autocommit(sqlite3*);
       
  1314 
       
  1315 /*
       
  1316 ** Return the sqlite3* database handle to which the prepared statement given
       
  1317 ** in the argument belongs.  This is the same database handle that was
       
  1318 ** the first argument to the sqlite3_prepare() that was used to create
       
  1319 ** the statement in the first place.
       
  1320 */
       
  1321 sqlite3 *sqlite3_db_handle(sqlite3_stmt*);
       
  1322 
       
  1323 /*
       
  1324 ** Register a callback function with the database connection identified by the 
       
  1325 ** first argument to be invoked whenever a row is updated, inserted or deleted.
       
  1326 ** Any callback set by a previous call to this function for the same 
       
  1327 ** database connection is overridden.
       
  1328 **
       
  1329 ** The second argument is a pointer to the function to invoke when a 
       
  1330 ** row is updated, inserted or deleted. The first argument to the callback is
       
  1331 ** a copy of the third argument to sqlite3_update_hook. The second callback 
       
  1332 ** argument is one of SQLITE_INSERT, SQLITE_DELETE or SQLITE_UPDATE, depending
       
  1333 ** on the operation that caused the callback to be invoked. The third and 
       
  1334 ** fourth arguments to the callback contain pointers to the database and 
       
  1335 ** table name containing the affected row. The final callback parameter is 
       
  1336 ** the rowid of the row. In the case of an update, this is the rowid after 
       
  1337 ** the update takes place.
       
  1338 **
       
  1339 ** The update hook is not invoked when internal system tables are
       
  1340 ** modified (i.e. sqlite_master and sqlite_sequence).
       
  1341 **
       
  1342 ** If another function was previously registered, its pArg value is returned.
       
  1343 ** Otherwise NULL is returned.
       
  1344 */
       
  1345 void *sqlite3_update_hook(
       
  1346   sqlite3*, 
       
  1347   void(*)(void *,int ,char const *,char const *,sqlite_int64),
       
  1348   void*
       
  1349 );
       
  1350 
       
  1351 /*
       
  1352 ** Register a callback to be invoked whenever a transaction is rolled
       
  1353 ** back. 
       
  1354 **
       
  1355 ** The new callback function overrides any existing rollback-hook
       
  1356 ** callback. If there was an existing callback, then it's pArg value 
       
  1357 ** (the third argument to sqlite3_rollback_hook() when it was registered) 
       
  1358 ** is returned. Otherwise, NULL is returned.
       
  1359 **
       
  1360 ** For the purposes of this API, a transaction is said to have been 
       
  1361 ** rolled back if an explicit "ROLLBACK" statement is executed, or
       
  1362 ** an error or constraint causes an implicit rollback to occur. The 
       
  1363 ** callback is not invoked if a transaction is automatically rolled
       
  1364 ** back because the database connection is closed.
       
  1365 */
       
  1366 void *sqlite3_rollback_hook(sqlite3*, void(*)(void *), void*);
       
  1367 
       
  1368 /*
       
  1369 ** This function is only available if the library is compiled without
       
  1370 ** the SQLITE_OMIT_SHARED_CACHE macro defined. It is used to enable or
       
  1371 ** disable (if the argument is true or false, respectively) the 
       
  1372 ** "shared pager" feature.
       
  1373 */
       
  1374 int sqlite3_enable_shared_cache(int);
       
  1375 
       
  1376 /*
       
  1377 ** Attempt to free N bytes of heap memory by deallocating non-essential
       
  1378 ** memory allocations held by the database library (example: memory 
       
  1379 ** used to cache database pages to improve performance).
       
  1380 **
       
  1381 ** This function is not a part of standard builds.  It is only created
       
  1382 ** if SQLite is compiled with the SQLITE_ENABLE_MEMORY_MANAGEMENT macro.
       
  1383 */
       
  1384 int sqlite3_release_memory(int);
       
  1385 
       
  1386 /*
       
  1387 ** Place a "soft" limit on the amount of heap memory that may be allocated by
       
  1388 ** SQLite within the current thread. If an internal allocation is requested 
       
  1389 ** that would exceed the specified limit, sqlite3_release_memory() is invoked
       
  1390 ** one or more times to free up some space before the allocation is made.
       
  1391 **
       
  1392 ** The limit is called "soft", because if sqlite3_release_memory() cannot free
       
  1393 ** sufficient memory to prevent the limit from being exceeded, the memory is
       
  1394 ** allocated anyway and the current operation proceeds.
       
  1395 **
       
  1396 ** This function is only available if the library was compiled with the 
       
  1397 ** SQLITE_ENABLE_MEMORY_MANAGEMENT option set.
       
  1398 ** memory-management has been enabled.
       
  1399 */
       
  1400 void sqlite3_soft_heap_limit(int);
       
  1401 
       
  1402 /*
       
  1403 ** This routine makes sure that all thread-local storage has been
       
  1404 ** deallocated for the current thread.
       
  1405 **
       
  1406 ** This routine is not technically necessary.  All thread-local storage
       
  1407 ** will be automatically deallocated once memory-management and
       
  1408 ** shared-cache are disabled and the soft heap limit has been set
       
  1409 ** to zero.  This routine is provided as a convenience for users who
       
  1410 ** want to make absolutely sure they have not forgotten something
       
  1411 ** prior to killing off a thread.
       
  1412 */
       
  1413 void sqlite3_thread_cleanup(void);
       
  1414 
       
  1415 /*
       
  1416 ** Return meta information about a specific column of a specific database
       
  1417 ** table accessible using the connection handle passed as the first function 
       
  1418 ** argument.
       
  1419 **
       
  1420 ** The column is identified by the second, third and fourth parameters to 
       
  1421 ** this function. The second parameter is either the name of the database
       
  1422 ** (i.e. "main", "temp" or an attached database) containing the specified
       
  1423 ** table or NULL. If it is NULL, then all attached databases are searched
       
  1424 ** for the table using the same algorithm as the database engine uses to 
       
  1425 ** resolve unqualified table references.
       
  1426 **
       
  1427 ** The third and fourth parameters to this function are the table and column 
       
  1428 ** name of the desired column, respectively. Neither of these parameters 
       
  1429 ** may be NULL.
       
  1430 **
       
  1431 ** Meta information is returned by writing to the memory locations passed as
       
  1432 ** the 5th and subsequent parameters to this function. Any of these 
       
  1433 ** arguments may be NULL, in which case the corresponding element of meta 
       
  1434 ** information is ommitted.
       
  1435 **
       
  1436 ** Parameter     Output Type      Description
       
  1437 ** -----------------------------------
       
  1438 **
       
  1439 **   5th         const char*      Data type
       
  1440 **   6th         const char*      Name of the default collation sequence 
       
  1441 **   7th         int              True if the column has a NOT NULL constraint
       
  1442 **   8th         int              True if the column is part of the PRIMARY KEY
       
  1443 **   9th         int              True if the column is AUTOINCREMENT
       
  1444 **
       
  1445 **
       
  1446 ** The memory pointed to by the character pointers returned for the 
       
  1447 ** declaration type and collation sequence is valid only until the next 
       
  1448 ** call to any sqlite API function.
       
  1449 **
       
  1450 ** If the specified table is actually a view, then an error is returned.
       
  1451 **
       
  1452 ** If the specified column is "rowid", "oid" or "_rowid_" and an 
       
  1453 ** INTEGER PRIMARY KEY column has been explicitly declared, then the output 
       
  1454 ** parameters are set for the explicitly declared column. If there is no
       
  1455 ** explicitly declared IPK column, then the output parameters are set as 
       
  1456 ** follows:
       
  1457 **
       
  1458 **     data type: "INTEGER"
       
  1459 **     collation sequence: "BINARY"
       
  1460 **     not null: 0
       
  1461 **     primary key: 1
       
  1462 **     auto increment: 0
       
  1463 **
       
  1464 ** This function may load one or more schemas from database files. If an
       
  1465 ** error occurs during this process, or if the requested table or column
       
  1466 ** cannot be found, an SQLITE error code is returned and an error message
       
  1467 ** left in the database handle (to be retrieved using sqlite3_errmsg()).
       
  1468 **
       
  1469 ** This API is only available if the library was compiled with the
       
  1470 ** SQLITE_ENABLE_COLUMN_METADATA preprocessor symbol defined.
       
  1471 */
       
  1472 int sqlite3_table_column_metadata(
       
  1473   sqlite3 *db,                /* Connection handle */
       
  1474   const char *zDbName,        /* Database name or NULL */
       
  1475   const char *zTableName,     /* Table name */
       
  1476   const char *zColumnName,    /* Column name */
       
  1477   char const **pzDataType,    /* OUTPUT: Declared data type */
       
  1478   char const **pzCollSeq,     /* OUTPUT: Collation sequence name */
       
  1479   int *pNotNull,              /* OUTPUT: True if NOT NULL constraint exists */
       
  1480   int *pPrimaryKey,           /* OUTPUT: True if column part of PK */
       
  1481   int *pAutoinc               /* OUTPUT: True if colums is auto-increment */
       
  1482 );
       
  1483 
       
  1484 /*
       
  1485 ****** EXPERIMENTAL - subject to change without notice **************
       
  1486 **
       
  1487 ** Attempt to load an SQLite extension library contained in the file
       
  1488 ** zFile.  The entry point is zProc.  zProc may be 0 in which case the
       
  1489 ** name of the entry point defaults to "sqlite3_extension_init".
       
  1490 **
       
  1491 ** Return SQLITE_OK on success and SQLITE_ERROR if something goes wrong.
       
  1492 **
       
  1493 ** If an error occurs and pzErrMsg is not 0, then fill *pzErrMsg with 
       
  1494 ** error message text.  The calling function should free this memory
       
  1495 ** by calling sqlite3_free().
       
  1496 **
       
  1497 ** Extension loading must be enabled using sqlite3_enable_load_extension()
       
  1498 ** prior to calling this API or an error will be returned.
       
  1499 **
       
  1500 ****** EXPERIMENTAL - subject to change without notice **************
       
  1501 */
       
  1502 int sqlite3_load_extension(
       
  1503   sqlite3 *db,          /* Load the extension into this database connection */
       
  1504   const char *zFile,    /* Name of the shared library containing extension */
       
  1505   const char *zProc,    /* Entry point.  Derived from zFile if 0 */
       
  1506   char **pzErrMsg       /* Put error message here if not 0 */
       
  1507 );
       
  1508 
       
  1509 /*
       
  1510 ** So as not to open security holes in older applications that are
       
  1511 ** unprepared to deal with extension load, and as a means of disabling
       
  1512 ** extension loading while executing user-entered SQL, the following
       
  1513 ** API is provided to turn the extension loading mechanism on and
       
  1514 ** off.  It is off by default.  See ticket #1863.
       
  1515 **
       
  1516 ** Call this routine with onoff==1 to turn extension loading on
       
  1517 ** and call it with onoff==0 to turn it back off again.
       
  1518 */
       
  1519 int sqlite3_enable_load_extension(sqlite3 *db, int onoff);
       
  1520 
       
  1521 /*
       
  1522 ****** EXPERIMENTAL - subject to change without notice **************
       
  1523 **
       
  1524 ** Register an extension entry point that is automatically invoked
       
  1525 ** whenever a new database connection is opened.
       
  1526 **
       
  1527 ** This API can be invoked at program startup in order to register
       
  1528 ** one or more statically linked extensions that will be available
       
  1529 ** to all new database connections.
       
  1530 **
       
  1531 ** Duplicate extensions are detected so calling this routine multiple
       
  1532 ** times with the same extension is harmless.
       
  1533 **
       
  1534 ** This routine stores a pointer to the extension in an array
       
  1535 ** that is obtained from malloc().  If you run a memory leak
       
  1536 ** checker on your program and it reports a leak because of this
       
  1537 ** array, then invoke sqlite3_automatic_extension_reset() prior
       
  1538 ** to shutdown to free the memory.
       
  1539 **
       
  1540 ** Automatic extensions apply across all threads.
       
  1541 */
       
  1542 int sqlite3_auto_extension(void *xEntryPoint);
       
  1543 
       
  1544 
       
  1545 /*
       
  1546 ****** EXPERIMENTAL - subject to change without notice **************
       
  1547 **
       
  1548 ** Disable all previously registered automatic extensions.  This
       
  1549 ** routine undoes the effect of all prior sqlite3_automatic_extension()
       
  1550 ** calls.
       
  1551 **
       
  1552 ** This call disabled automatic extensions in all threads.
       
  1553 */
       
  1554 void sqlite3_reset_auto_extension(void);
       
  1555 
       
  1556 
       
  1557 /*
       
  1558 ****** EXPERIMENTAL - subject to change without notice **************
       
  1559 **
       
  1560 ** The interface to the virtual-table mechanism is currently considered
       
  1561 ** to be experimental.  The interface might change in incompatible ways.
       
  1562 ** If this is a problem for you, do not use the interface at this time.
       
  1563 **
       
  1564 ** When the virtual-table mechanism stablizes, we will declare the
       
  1565 ** interface fixed, support it indefinitely, and remove this comment.
       
  1566 */
       
  1567 
       
  1568 /*
       
  1569 ** Structures used by the virtual table interface
       
  1570 */
       
  1571 typedef struct sqlite3_vtab sqlite3_vtab;
       
  1572 typedef struct sqlite3_index_info sqlite3_index_info;
       
  1573 typedef struct sqlite3_vtab_cursor sqlite3_vtab_cursor;
       
  1574 typedef struct sqlite3_module sqlite3_module;
       
  1575 
       
  1576 /*
       
  1577 ** A module is a class of virtual tables.  Each module is defined
       
  1578 ** by an instance of the following structure.  This structure consists
       
  1579 ** mostly of methods for the module.
       
  1580 */
       
  1581 struct sqlite3_module {
       
  1582   int iVersion;
       
  1583   int (*xCreate)(sqlite3*, void *pAux,
       
  1584                int argc, char **argv,
       
  1585                sqlite3_vtab **ppVTab);
       
  1586   int (*xConnect)(sqlite3*, void *pAux,
       
  1587                int argc, char **argv,
       
  1588                sqlite3_vtab **ppVTab);
       
  1589   int (*xBestIndex)(sqlite3_vtab *pVTab, sqlite3_index_info*);
       
  1590   int (*xDisconnect)(sqlite3_vtab *pVTab);
       
  1591   int (*xDestroy)(sqlite3_vtab *pVTab);
       
  1592   int (*xOpen)(sqlite3_vtab *pVTab, sqlite3_vtab_cursor **ppCursor);
       
  1593   int (*xClose)(sqlite3_vtab_cursor*);
       
  1594   int (*xFilter)(sqlite3_vtab_cursor*, int idxNum, const char *idxStr,
       
  1595                 int argc, sqlite3_value **argv);
       
  1596   int (*xNext)(sqlite3_vtab_cursor*);
       
  1597   int (*xEof)(sqlite3_vtab_cursor*);
       
  1598   int (*xColumn)(sqlite3_vtab_cursor*, sqlite3_context*, int);
       
  1599   int (*xRowid)(sqlite3_vtab_cursor*, sqlite_int64 *pRowid);
       
  1600   int (*xUpdate)(sqlite3_vtab *, int, sqlite3_value **, sqlite_int64 *);
       
  1601   int (*xBegin)(sqlite3_vtab *pVTab);
       
  1602   int (*xSync)(sqlite3_vtab *pVTab);
       
  1603   int (*xCommit)(sqlite3_vtab *pVTab);
       
  1604   int (*xRollback)(sqlite3_vtab *pVTab);
       
  1605   int (*xFindFunction)(sqlite3_vtab *pVtab, int nArg, const char *zName,
       
  1606                        void (**pxFunc)(sqlite3_context*,int,sqlite3_value**),
       
  1607                        void **ppArg);
       
  1608 };
       
  1609 
       
  1610 /*
       
  1611 ** The sqlite3_index_info structure and its substructures is used to
       
  1612 ** pass information into and receive the reply from the xBestIndex
       
  1613 ** method of an sqlite3_module.  The fields under **Inputs** are the
       
  1614 ** inputs to xBestIndex and are read-only.  xBestIndex inserts its
       
  1615 ** results into the **Outputs** fields.
       
  1616 **
       
  1617 ** The aConstraint[] array records WHERE clause constraints of the
       
  1618 ** form:
       
  1619 **
       
  1620 **         column OP expr
       
  1621 **
       
  1622 ** Where OP is =, <, <=, >, or >=.  The particular operator is stored
       
  1623 ** in aConstraint[].op.  The index of the column is stored in 
       
  1624 ** aConstraint[].iColumn.  aConstraint[].usable is TRUE if the
       
  1625 ** expr on the right-hand side can be evaluated (and thus the constraint
       
  1626 ** is usable) and false if it cannot.
       
  1627 **
       
  1628 ** The optimizer automatically inverts terms of the form "expr OP column"
       
  1629 ** and makes other simplificatinos to the WHERE clause in an attempt to
       
  1630 ** get as many WHERE clause terms into the form shown above as possible.
       
  1631 ** The aConstraint[] array only reports WHERE clause terms in the correct
       
  1632 ** form that refer to the particular virtual table being queried.
       
  1633 **
       
  1634 ** Information about the ORDER BY clause is stored in aOrderBy[].
       
  1635 ** Each term of aOrderBy records a column of the ORDER BY clause.
       
  1636 **
       
  1637 ** The xBestIndex method must fill aConstraintUsage[] with information
       
  1638 ** about what parameters to pass to xFilter.  If argvIndex>0 then
       
  1639 ** the right-hand side of the corresponding aConstraint[] is evaluated
       
  1640 ** and becomes the argvIndex-th entry in argv.  If aConstraintUsage[].omit
       
  1641 ** is true, then the constraint is assumed to be fully handled by the
       
  1642 ** virtual table and is not checked again by SQLite.
       
  1643 **
       
  1644 ** The idxNum and idxPtr values are recorded and passed into xFilter.
       
  1645 ** sqlite3_free() is used to free idxPtr if needToFreeIdxPtr is true.
       
  1646 **
       
  1647 ** The orderByConsumed means that output from xFilter will occur in
       
  1648 ** the correct order to satisfy the ORDER BY clause so that no separate
       
  1649 ** sorting step is required.
       
  1650 **
       
  1651 ** The estimatedCost value is an estimate of the cost of doing the
       
  1652 ** particular lookup.  A full scan of a table with N entries should have
       
  1653 ** a cost of N.  A binary search of a table of N entries should have a
       
  1654 ** cost of approximately log(N).
       
  1655 */
       
  1656 struct sqlite3_index_info {
       
  1657   /* Inputs */
       
  1658   const int nConstraint;     /* Number of entries in aConstraint */
       
  1659   const struct sqlite3_index_constraint {
       
  1660      int iColumn;              /* Column on left-hand side of constraint */
       
  1661      unsigned char op;         /* Constraint operator */
       
  1662      unsigned char usable;     /* True if this constraint is usable */
       
  1663      int iTermOffset;          /* Used internally - xBestIndex should ignore */
       
  1664   } *const aConstraint;      /* Table of WHERE clause constraints */
       
  1665   const int nOrderBy;        /* Number of terms in the ORDER BY clause */
       
  1666   const struct sqlite3_index_orderby {
       
  1667      int iColumn;              /* Column number */
       
  1668      unsigned char desc;       /* True for DESC.  False for ASC. */
       
  1669   } *const aOrderBy;         /* The ORDER BY clause */
       
  1670 
       
  1671   /* Outputs */
       
  1672   struct sqlite3_index_constraint_usage {
       
  1673     int argvIndex;           /* if >0, constraint is part of argv to xFilter */
       
  1674     unsigned char omit;      /* Do not code a test for this constraint */
       
  1675   } *const aConstraintUsage;
       
  1676   int idxNum;                /* Number used to identify the index */
       
  1677   char *idxStr;              /* String, possibly obtained from sqlite3_malloc */
       
  1678   int needToFreeIdxStr;      /* Free idxStr using sqlite3_free() if true */
       
  1679   int orderByConsumed;       /* True if output is already ordered */
       
  1680   double estimatedCost;      /* Estimated cost of using this index */
       
  1681 };
       
  1682 #define SQLITE_INDEX_CONSTRAINT_EQ    2
       
  1683 #define SQLITE_INDEX_CONSTRAINT_GT    4
       
  1684 #define SQLITE_INDEX_CONSTRAINT_LE    8
       
  1685 #define SQLITE_INDEX_CONSTRAINT_LT    16
       
  1686 #define SQLITE_INDEX_CONSTRAINT_GE    32
       
  1687 #define SQLITE_INDEX_CONSTRAINT_MATCH 64
       
  1688 
       
  1689 /*
       
  1690 ** This routine is used to register a new module name with an SQLite
       
  1691 ** connection.  Module names must be registered before creating new
       
  1692 ** virtual tables on the module, or before using preexisting virtual
       
  1693 ** tables of the module.
       
  1694 */
       
  1695 int sqlite3_create_module(
       
  1696   sqlite3 *db,               /* SQLite connection to register module with */
       
  1697   const char *zName,         /* Name of the module */
       
  1698   const sqlite3_module *,    /* Methods for the module */
       
  1699   void *                     /* Client data for xCreate/xConnect */
       
  1700 );
       
  1701 
       
  1702 /*
       
  1703 ** Every module implementation uses a subclass of the following structure
       
  1704 ** to describe a particular instance of the module.  Each subclass will
       
  1705 ** be taylored to the specific needs of the module implementation.   The
       
  1706 ** purpose of this superclass is to define certain fields that are common
       
  1707 ** to all module implementations.
       
  1708 */
       
  1709 struct sqlite3_vtab {
       
  1710   const sqlite3_module *pModule;  /* The module for this virtual table */
       
  1711   int nRef;                       /* Used internally */
       
  1712   /* Virtual table implementations will typically add additional fields */
       
  1713 };
       
  1714 
       
  1715 /* Every module implementation uses a subclass of the following structure
       
  1716 ** to describe cursors that point into the virtual table and are used
       
  1717 ** to loop through the virtual table.  Cursors are created using the
       
  1718 ** xOpen method of the module.  Each module implementation will define
       
  1719 ** the content of a cursor structure to suit its own needs.
       
  1720 **
       
  1721 ** This superclass exists in order to define fields of the cursor that
       
  1722 ** are common to all implementations.
       
  1723 */
       
  1724 struct sqlite3_vtab_cursor {
       
  1725   sqlite3_vtab *pVtab;      /* Virtual table of this cursor */
       
  1726   /* Virtual table implementations will typically add additional fields */
       
  1727 };
       
  1728 
       
  1729 /*
       
  1730 ** The xCreate and xConnect methods of a module use the following API
       
  1731 ** to declare the format (the names and datatypes of the columns) of
       
  1732 ** the virtual tables they implement.
       
  1733 */
       
  1734 int sqlite3_declare_vtab(sqlite3*, const char *zCreateTable);
       
  1735 
       
  1736 /*
       
  1737 ** The interface to the virtual-table mechanism defined above (back up
       
  1738 ** to a comment remarkably similar to this one) is currently considered
       
  1739 ** to be experimental.  The interface might change in incompatible ways.
       
  1740 ** If this is a problem for you, do not use the interface at this time.
       
  1741 **
       
  1742 ** When the virtual-table mechanism stablizes, we will declare the
       
  1743 ** interface fixed, support it indefinitely, and remove this comment.
       
  1744 **
       
  1745 ****** EXPERIMENTAL - subject to change without notice **************
       
  1746 */
       
  1747 
       
  1748 /*
       
  1749 ** Undo the hack that converts floating point types to integer for
       
  1750 ** builds on processors without floating point support.
       
  1751 */
       
  1752 #ifdef SQLITE_OMIT_FLOATING_POINT
       
  1753 # undef double
       
  1754 #endif
       
  1755 
       
  1756 #ifdef __cplusplus
       
  1757 }  /* End of the 'extern "C"' block */
       
  1758 #endif
       
  1759 #endif