diff options
| author | Hans-Christoph Steiner <hans@eds.org> | 2013-08-13 15:43:01 -0400 | 
|---|---|---|
| committer | Hans-Christoph Steiner <hans@eds.org> | 2013-08-13 15:43:01 -0400 | 
| commit | 4228998fd796fa2f9e84fb73632e0a07cc7cd188 (patch) | |
| tree | 15b2336f351468fedd0c39e9de4ad905a686f3b0 /src/sqlite.h.in | |
| parent | bdee7cf7d974b2f70d5934786c5666006e7360be (diff) | |
| parent | 08119c361d1181b3e8f1abb429236e488a664753 (diff) | |
Merge tag 'upstream/2.2.1'
Upstream version 2.2.1
# gpg: Signature made Tue 13 Aug 2013 03:42:56 PM EDT using RSA key ID 374BBE81
# gpg: Good signature from "Hans-Christoph Steiner <hans@at.or.at>"
# gpg:                 aka "[jpeg image of size 5408]"
# gpg:                 aka "Hans-Christoph Steiner <hs420@nyu.edu>"
# gpg:                 aka "Hans-Christoph Steiner <hans@eds.org>"
# gpg:                 aka "Hans-Christoph Steiner <hans@guardianproject.info>"
# gpg:                 aka "Hans-Christoph Steiner <hansi@nyu.edu>"
# gpg:                 aka "Hans-Christoph Steiner <hans@guardianproject.info>"
Diffstat (limited to 'src/sqlite.h.in')
| -rw-r--r-- | src/sqlite.h.in | 186 | 
1 files changed, 167 insertions, 19 deletions
| diff --git a/src/sqlite.h.in b/src/sqlite.h.in index 9a31e22..6608823 100644 --- a/src/sqlite.h.in +++ b/src/sqlite.h.in @@ -283,7 +283,7 @@ typedef sqlite_uint64 sqlite3_uint64;  ** [sqlite3_blob_close | close] all [BLOB handles], and   ** [sqlite3_backup_finish | finish] all [sqlite3_backup] objects associated  ** with the [sqlite3] object prior to attempting to close the object.  ^If -** sqlite3_close() is called on a [database connection] that still has +** sqlite3_close_v2() is called on a [database connection] that still has  ** outstanding [prepared statements], [BLOB handles], and/or  ** [sqlite3_backup] objects then it returns SQLITE_OK but the deallocation  ** of resources is deferred until all [prepared statements], [BLOB handles], @@ -420,6 +420,8 @@ int sqlite3_exec(  #define SQLITE_FORMAT      24   /* Auxiliary database format error */  #define SQLITE_RANGE       25   /* 2nd parameter to sqlite3_bind out of range */  #define SQLITE_NOTADB      26   /* File opened that is not a database file */ +#define SQLITE_NOTICE      27   /* Notifications from sqlite3_log() */ +#define SQLITE_WARNING     28   /* Warnings from sqlite3_log() */  #define SQLITE_ROW         100  /* sqlite3_step() has another row ready */  #define SQLITE_DONE        101  /* sqlite3_step() has finished executing */  /* end-of-error-codes */ @@ -469,14 +471,29 @@ int sqlite3_exec(  #define SQLITE_IOERR_SHMLOCK           (SQLITE_IOERR | (20<<8))  #define SQLITE_IOERR_SHMMAP            (SQLITE_IOERR | (21<<8))  #define SQLITE_IOERR_SEEK              (SQLITE_IOERR | (22<<8)) +#define SQLITE_IOERR_DELETE_NOENT      (SQLITE_IOERR | (23<<8)) +#define SQLITE_IOERR_MMAP              (SQLITE_IOERR | (24<<8))  #define SQLITE_LOCKED_SHAREDCACHE      (SQLITE_LOCKED |  (1<<8))  #define SQLITE_BUSY_RECOVERY           (SQLITE_BUSY   |  (1<<8))  #define SQLITE_CANTOPEN_NOTEMPDIR      (SQLITE_CANTOPEN | (1<<8))  #define SQLITE_CANTOPEN_ISDIR          (SQLITE_CANTOPEN | (2<<8)) +#define SQLITE_CANTOPEN_FULLPATH       (SQLITE_CANTOPEN | (3<<8))  #define SQLITE_CORRUPT_VTAB            (SQLITE_CORRUPT | (1<<8))  #define SQLITE_READONLY_RECOVERY       (SQLITE_READONLY | (1<<8))  #define SQLITE_READONLY_CANTLOCK       (SQLITE_READONLY | (2<<8)) +#define SQLITE_READONLY_ROLLBACK       (SQLITE_READONLY | (3<<8))  #define SQLITE_ABORT_ROLLBACK          (SQLITE_ABORT | (2<<8)) +#define SQLITE_CONSTRAINT_CHECK        (SQLITE_CONSTRAINT | (1<<8)) +#define SQLITE_CONSTRAINT_COMMITHOOK   (SQLITE_CONSTRAINT | (2<<8)) +#define SQLITE_CONSTRAINT_FOREIGNKEY   (SQLITE_CONSTRAINT | (3<<8)) +#define SQLITE_CONSTRAINT_FUNCTION     (SQLITE_CONSTRAINT | (4<<8)) +#define SQLITE_CONSTRAINT_NOTNULL      (SQLITE_CONSTRAINT | (5<<8)) +#define SQLITE_CONSTRAINT_PRIMARYKEY   (SQLITE_CONSTRAINT | (6<<8)) +#define SQLITE_CONSTRAINT_TRIGGER      (SQLITE_CONSTRAINT | (7<<8)) +#define SQLITE_CONSTRAINT_UNIQUE       (SQLITE_CONSTRAINT | (8<<8)) +#define SQLITE_CONSTRAINT_VTAB         (SQLITE_CONSTRAINT | (9<<8)) +#define SQLITE_NOTICE_RECOVER_WAL      (SQLITE_NOTICE | (1<<8)) +#define SQLITE_NOTICE_RECOVER_ROLLBACK (SQLITE_NOTICE | (2<<8))  /*  ** CAPI3REF: Flags For File Open Operations @@ -716,6 +733,9 @@ struct sqlite3_io_methods {    void (*xShmBarrier)(sqlite3_file*);    int (*xShmUnmap)(sqlite3_file*, int deleteFlag);    /* Methods above are valid for version 2 */ +  int (*xFetch)(sqlite3_file*, sqlite3_int64 iOfst, int iAmt, void **pp); +  int (*xUnfetch)(sqlite3_file*, sqlite3_int64 iOfst, void *p); +  /* Methods above are valid for version 3 */    /* Additional methods may be added in future releases */  }; @@ -850,6 +870,38 @@ struct sqlite3_io_methods {  ** compilation of the PRAGMA fails with an error.  ^The [SQLITE_FCNTL_PRAGMA]  ** file control occurs at the beginning of pragma statement analysis and so  ** it is able to override built-in [PRAGMA] statements. +** +** <li>[[SQLITE_FCNTL_BUSYHANDLER]] +** ^The [SQLITE_FCNTL_BUSYHANDLER] +** file-control may be invoked by SQLite on the database file handle +** shortly after it is opened in order to provide a custom VFS with access +** to the connections busy-handler callback. The argument is of type (void **) +** - an array of two (void *) values. The first (void *) actually points +** to a function of type (int (*)(void *)). In order to invoke the connections +** busy-handler, this function should be invoked with the second (void *) in +** the array as the only argument. If it returns non-zero, then the operation +** should be retried. If it returns zero, the custom VFS should abandon the +** current operation. +** +** <li>[[SQLITE_FCNTL_TEMPFILENAME]] +** ^Application can invoke the [SQLITE_FCNTL_TEMPFILENAME] file-control +** to have SQLite generate a +** temporary filename using the same algorithm that is followed to generate +** temporary filenames for TEMP tables and other internal uses.  The +** argument should be a char** which will be filled with the filename +** written into memory obtained from [sqlite3_malloc()].  The caller should +** invoke [sqlite3_free()] on the result to avoid a memory leak. +** +** <li>[[SQLITE_FCNTL_MMAP_SIZE]] +** The [SQLITE_FCNTL_MMAP_SIZE] file control is used to query or set the +** maximum number of bytes that will be used for memory-mapped I/O. +** The argument is a pointer to a value of type sqlite3_int64 that +** is an advisory maximum number of bytes in the file to memory map.  The +** pointer is overwritten with the old value.  The limit is not changed if +** the value originally pointed to is negative, and so the current limit  +** can be queried by passing in a pointer to a negative number.  This +** file-control is used internally to implement [PRAGMA mmap_size]. +**  ** </ul>  */  #define SQLITE_FCNTL_LOCKSTATE               1 @@ -866,6 +918,9 @@ struct sqlite3_io_methods {  #define SQLITE_FCNTL_VFSNAME                12  #define SQLITE_FCNTL_POWERSAFE_OVERWRITE    13  #define SQLITE_FCNTL_PRAGMA                 14 +#define SQLITE_FCNTL_BUSYHANDLER            15 +#define SQLITE_FCNTL_TEMPFILENAME           16 +#define SQLITE_FCNTL_MMAP_SIZE              18  /*  ** CAPI3REF: Mutex Handle @@ -1532,7 +1587,9 @@ struct sqlite3_mem_methods {  ** page cache implementation into that object.)^ </dd>  **  ** [[SQLITE_CONFIG_LOG]] <dt>SQLITE_CONFIG_LOG</dt> -** <dd> ^The SQLITE_CONFIG_LOG option takes two arguments: a pointer to a +** <dd> The SQLITE_CONFIG_LOG option is used to configure the SQLite +** global [error log]. +** (^The SQLITE_CONFIG_LOG option takes two arguments: a pointer to a  ** function with a call signature of void(*)(void*,int,const char*),   ** and a pointer to void. ^If the function pointer is not NULL, it is  ** invoked by [sqlite3_log()] to process each logging event.  ^If the @@ -1562,10 +1619,54 @@ struct sqlite3_mem_methods {  ** disabled. The default value may be changed by compiling with the  ** [SQLITE_USE_URI] symbol defined.  ** +** [[SQLITE_CONFIG_COVERING_INDEX_SCAN]] <dt>SQLITE_CONFIG_COVERING_INDEX_SCAN +** <dd> This option takes a single integer argument which is interpreted as +** a boolean in order to enable or disable the use of covering indices for +** full table scans in the query optimizer.  The default setting is determined +** by the [SQLITE_ALLOW_COVERING_INDEX_SCAN] compile-time option, or is "on" +** if that compile-time option is omitted. +** The ability to disable the use of covering indices for full table scans +** is because some incorrectly coded legacy applications might malfunction +** malfunction when the optimization is enabled.  Providing the ability to +** disable the optimization allows the older, buggy application code to work +** without change even with newer versions of SQLite. +**  ** [[SQLITE_CONFIG_PCACHE]] [[SQLITE_CONFIG_GETPCACHE]]  ** <dt>SQLITE_CONFIG_PCACHE and SQLITE_CONFIG_GETPCACHE  ** <dd> These options are obsolete and should not be used by new code.  ** They are retained for backwards compatibility but are now no-ops. +** </dd> +** +** [[SQLITE_CONFIG_SQLLOG]] +** <dt>SQLITE_CONFIG_SQLLOG +** <dd>This option is only available if sqlite is compiled with the +** [SQLITE_ENABLE_SQLLOG] pre-processor macro defined. The first argument should +** be a pointer to a function of type void(*)(void*,sqlite3*,const char*, int). +** The second should be of type (void*). The callback is invoked by the library +** in three separate circumstances, identified by the value passed as the +** fourth parameter. If the fourth parameter is 0, then the database connection +** passed as the second argument has just been opened. The third argument +** points to a buffer containing the name of the main database file. If the +** fourth parameter is 1, then the SQL statement that the third parameter +** points to has just been executed. Or, if the fourth parameter is 2, then +** the connection being passed as the second parameter is being closed. The +** third parameter is passed NULL In this case.  An example of using this +** configuration option can be seen in the "test_sqllog.c" source file in +** the canonical SQLite source tree.</dd> +** +** [[SQLITE_CONFIG_MMAP_SIZE]] +** <dt>SQLITE_CONFIG_MMAP_SIZE +** <dd>SQLITE_CONFIG_MMAP_SIZE takes two 64-bit integer (sqlite3_int64) values +** that are the default mmap size limit (the default setting for +** [PRAGMA mmap_size]) and the maximum allowed mmap size limit. +** The default setting can be overridden by each database connection using +** either the [PRAGMA mmap_size] command, or by using the +** [SQLITE_FCNTL_MMAP_SIZE] file control.  The maximum allowed mmap size +** cannot be changed at run-time.  Nor may the maximum allowed mmap size +** exceed the compile-time maximum mmap size set by the +** [SQLITE_MAX_MMAP_SIZE] compile-time option.   +** If either argument to this option is negative, then that argument is +** changed to its compile-time default.  ** </dl>  */  #define SQLITE_CONFIG_SINGLETHREAD  1  /* nil */ @@ -1587,6 +1688,9 @@ struct sqlite3_mem_methods {  #define SQLITE_CONFIG_URI          17  /* int */  #define SQLITE_CONFIG_PCACHE2      18  /* sqlite3_pcache_methods2* */  #define SQLITE_CONFIG_GETPCACHE2   19  /* sqlite3_pcache_methods2* */ +#define SQLITE_CONFIG_COVERING_INDEX_SCAN 20  /* int */ +#define SQLITE_CONFIG_SQLLOG       21  /* xSqllog, void* */ +#define SQLITE_CONFIG_MMAP_SIZE    22  /* sqlite3_int64, sqlite3_int64 */  /*  ** CAPI3REF: Database Connection Configuration Options @@ -2420,6 +2524,9 @@ int sqlite3_set_authorizer(  ** as each triggered subprogram is entered.  The callbacks for triggers  ** contain a UTF-8 SQL comment that identifies the trigger.)^  ** +** The [SQLITE_TRACE_SIZE_LIMIT] compile-time option can be used to limit +** the length of [bound parameter] expansion in the output of sqlite3_trace(). +**  ** ^The callback function registered by sqlite3_profile() is invoked  ** as each SQL statement finishes.  ^The profile callback contains  ** the original statement text and an estimate of wall-clock time @@ -2595,7 +2702,7 @@ void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);  **     an error)^.   **     ^If "ro" is specified, then the database is opened for read-only   **     access, just as if the [SQLITE_OPEN_READONLY] flag had been set in the  -**     third argument to sqlite3_prepare_v2(). ^If the mode option is set to  +**     third argument to sqlite3_open_v2(). ^If the mode option is set to   **     "rw", then the database is opened for read-write (but not create)   **     access, as if SQLITE_OPEN_READWRITE (but not SQLITE_OPEN_CREATE) had   **     been set. ^Value "rwc" is equivalent to setting both  @@ -2611,7 +2718,7 @@ void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);  **     sqlite3_open_v2(). ^Setting the cache parameter to "private" is   **     equivalent to setting the SQLITE_OPEN_PRIVATECACHE bit.  **     ^If sqlite3_open_v2() is used and the "cache" parameter is present in -**     a URI filename, its value overrides any behaviour requested by setting +**     a URI filename, its value overrides any behavior requested by setting  **     SQLITE_OPEN_PRIVATECACHE or SQLITE_OPEN_SHAREDCACHE flag.  ** </ul>  ** @@ -2747,6 +2854,11 @@ sqlite3_int64 sqlite3_uri_int64(const char*, const char*, sqlite3_int64);  ** However, the error string might be overwritten or deallocated by  ** subsequent calls to other SQLite interface functions.)^  ** +** ^The sqlite3_errstr() interface returns the English-language text +** that describes the [result code], as UTF-8. +** ^(Memory to hold the error message string is managed internally +** and must not be freed by the application)^. +**  ** When the serialized [threading mode] is in use, it might be the  ** case that a second error occurs on a separate thread in between  ** the time of the first error and the call to these interfaces. @@ -2765,6 +2877,7 @@ int sqlite3_errcode(sqlite3 *db);  int sqlite3_extended_errcode(sqlite3 *db);  const char *sqlite3_errmsg(sqlite3*);  const void *sqlite3_errmsg16(sqlite3*); +const char *sqlite3_errstr(int);  /*  ** CAPI3REF: SQL Statement Object @@ -2952,7 +3065,8 @@ int sqlite3_limit(sqlite3*, int id, int newVal);  ** <li>  ** ^If the database schema changes, instead of returning [SQLITE_SCHEMA] as it  ** always used to do, [sqlite3_step()] will automatically recompile the SQL -** statement and try to run it again. +** statement and try to run it again. As many as [SQLITE_MAX_SCHEMA_RETRY] +** retries will occur before sqlite3_step() gives up and returns an error.  ** </li>  **  ** <li> @@ -3156,6 +3270,9 @@ typedef struct sqlite3_context sqlite3_context;  ** parameter [SQLITE_LIMIT_VARIABLE_NUMBER] (default value: 999).  **  ** ^The third argument is the value to bind to the parameter. +** ^If the third parameter to sqlite3_bind_text() or sqlite3_bind_text16() +** or sqlite3_bind_blob() is a NULL pointer then the fourth parameter +** is ignored and the end result is the same as sqlite3_bind_null().  **  ** ^(In those routines that have a fourth argument, its value is the  ** number of bytes in the parameter.  To be clear: the value is the @@ -3923,7 +4040,8 @@ SQLITE_DEPRECATED int sqlite3_expired(sqlite3_stmt*);  SQLITE_DEPRECATED int sqlite3_transfer_bindings(sqlite3_stmt*, sqlite3_stmt*);  SQLITE_DEPRECATED int sqlite3_global_recover(void);  SQLITE_DEPRECATED void sqlite3_thread_cleanup(void); -SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int64,int),void*,sqlite3_int64); +SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int64,int), +                      void*,sqlite3_int64);  #endif  /* @@ -4003,14 +4121,17 @@ int sqlite3_value_numeric_type(sqlite3_value*);  ** In those cases, sqlite3_aggregate_context() might be called for the  ** first time from within xFinal().)^  ** -** ^The sqlite3_aggregate_context(C,N) routine returns a NULL pointer if N is -** less than or equal to zero or if a memory allocate error occurs. +** ^The sqlite3_aggregate_context(C,N) routine returns a NULL pointer  +** when first called if N is less than or equal to zero or if a memory +** allocate error occurs.  **  ** ^(The amount of space allocated by sqlite3_aggregate_context(C,N) is  ** determined by the N parameter on first successful call.  Changing the  ** value of N in subsequent call to sqlite3_aggregate_context() within  ** the same aggregate function instance will not resize the memory -** allocation.)^ +** allocation.)^  Within the xFinal callback, it is customary to set +** N=0 in calls to sqlite3_aggregate_context(C,N) so that no  +** pointless memory allocations occur.  **  ** ^SQLite automatically frees the memory allocated by   ** sqlite3_aggregate_context() when the aggregate query concludes. @@ -4108,7 +4229,7 @@ void sqlite3_set_auxdata(sqlite3_context*, int N, void*, void (*)(void*));  ** the content before returning.  **  ** The typedef is necessary to work around problems in certain -** C++ compilers.  See ticket #2191. +** C++ compilers.  */  typedef void (*sqlite3_destructor_type)(void*);  #define SQLITE_STATIC      ((sqlite3_destructor_type)0) @@ -4727,6 +4848,9 @@ void *sqlite3_update_hook(  ** future releases of SQLite.  Applications that care about shared  ** cache setting should set it explicitly.  ** +** This interface is threadsafe on processors where writing a +** 32-bit integer is atomic. +**  ** See Also:  [SQLite Shared-Cache Mode]  */  int sqlite3_enable_shared_cache(int); @@ -4904,11 +5028,20 @@ int sqlite3_table_column_metadata(  ** ^This interface loads an SQLite extension library from the named file.  **  ** ^The sqlite3_load_extension() interface attempts to load an -** SQLite extension library contained in the file zFile. +** [SQLite extension] library contained in the file zFile.  If +** the file cannot be loaded directly, attempts are made to load +** with various operating-system specific extensions added. +** So for example, if "samplelib" cannot be loaded, then names like +** "samplelib.so" or "samplelib.dylib" or "samplelib.dll" might +** be tried also.  **  ** ^The entry point is zProc. -** ^zProc may be 0, in which case the name of the entry point -** defaults to "sqlite3_extension_init". +** ^(zProc may be 0, in which case SQLite will try to come up with an +** entry point name on its own.  It first tries "sqlite3_extension_init". +** If that does not work, it constructs a name "sqlite3_X_init" where the +** X is consists of the lower-case equivalent of all ASCII alphabetic +** characters in the filename from the last "/" to the first following +** "." and omitting any initial "lib".)^  ** ^The sqlite3_load_extension() interface returns  ** [SQLITE_OK] on success and [SQLITE_ERROR] if something goes wrong.  ** ^If an error occurs and pzErrMsg is not 0, then the @@ -4934,11 +5067,11 @@ int sqlite3_load_extension(  ** CAPI3REF: Enable Or Disable Extension Loading  **  ** ^So as not to open security holes in older applications that are -** unprepared to deal with extension loading, and as a means of disabling -** extension loading while evaluating user-entered SQL, the following API +** unprepared to deal with [extension loading], and as a means of disabling +** [extension loading] while evaluating user-entered SQL, the following API  ** is provided to turn the [sqlite3_load_extension()] mechanism on and off.  ** -** ^Extension loading is off by default. See ticket #1863. +** ^Extension loading is off by default.  ** ^Call the sqlite3_enable_load_extension() routine with onoff==1  ** to turn extension loading on and call it with onoff==0 to turn  ** it back off again. @@ -4950,7 +5083,7 @@ int sqlite3_enable_load_extension(sqlite3 *db, int onoff);  **  ** ^This interface causes the xEntryPoint() function to be invoked for  ** each new [database connection] that is created.  The idea here is that -** xEntryPoint() is the entry point for a statically linked SQLite extension +** xEntryPoint() is the entry point for a statically linked [SQLite extension]  ** that is to be automatically loaded into all new database connections.  **  ** ^(Even though the function prototype shows that xEntryPoint() takes @@ -6301,7 +6434,7 @@ struct sqlite3_pcache_page {  ** parameter to help it determined what action to take:  **  ** <table border=1 width=85% align=center> -** <tr><th> createFlag <th> Behaviour when page is not already in cache +** <tr><th> createFlag <th> Behavior when page is not already in cache  ** <tr><td> 0 <td> Do not allocate a new page.  Return NULL.  ** <tr><td> 1 <td> Allocate a new page if it easy and convenient to do so.  **                 Otherwise return NULL. @@ -6731,9 +6864,24 @@ int sqlite3_stricmp(const char *, const char *);  int sqlite3_strnicmp(const char *, const char *, int);  /* +** CAPI3REF: String Globbing +* +** ^The [sqlite3_strglob(P,X)] interface returns zero if string X matches +** the glob pattern P, and it returns non-zero if string X does not match +** the glob pattern P.  ^The definition of glob pattern matching used in +** [sqlite3_strglob(P,X)] is the same as for the "X GLOB P" operator in the +** SQL dialect used by SQLite.  ^The sqlite3_strglob(P,X) function is case +** sensitive. +** +** Note that this routine returns zero on a match and non-zero if the strings +** do not match, the same as [sqlite3_stricmp()] and [sqlite3_strnicmp()]. +*/ +int sqlite3_strglob(const char *zGlob, const char *zStr); + +/*  ** CAPI3REF: Error Logging Interface  ** -** ^The [sqlite3_log()] interface writes a message into the error log +** ^The [sqlite3_log()] interface writes a message into the [error log]  ** established by the [SQLITE_CONFIG_LOG] option to [sqlite3_config()].  ** ^If logging is enabled, the zFormat string and subsequent arguments are  ** used with [sqlite3_snprintf()] to generate the final output string. | 
