1
0
Fork 0
mirror of https://github.com/DBD-SQLite/DBD-SQLite synced 2025-06-07 22:28:47 -04:00

DBD-SQLite: updated bundled library to 3.6.15

This commit is contained in:
Kenichi Ishigaki 2009-06-15 15:04:36 +00:00
parent 5679b6ca33
commit 573c7c234e
2 changed files with 5506 additions and 4083 deletions

9405
sqlite3.c

File diff suppressed because it is too large Load diff

184
sqlite3.h
View file

@ -30,7 +30,7 @@
** the version number) and changes its name to "sqlite3.h" as ** the version number) and changes its name to "sqlite3.h" as
** part of the build process. ** part of the build process.
** **
** @(#) $Id: sqlite.h.in,v 1.447 2009/04/30 15:59:56 drh Exp $ ** @(#) $Id: sqlite.h.in,v 1.457 2009/06/09 19:53:58 drh Exp $
*/ */
#ifndef _SQLITE3_H_ #ifndef _SQLITE3_H_
#define _SQLITE3_H_ #define _SQLITE3_H_
@ -99,8 +99,8 @@ extern "C" {
** **
** Requirements: [H10011] [H10014] ** Requirements: [H10011] [H10014]
*/ */
#define SQLITE_VERSION "3.6.14.2" #define SQLITE_VERSION "3.6.15"
#define SQLITE_VERSION_NUMBER 3006014 #define SQLITE_VERSION_NUMBER 3006015
/* /*
** CAPI3REF: Run-Time Library Version Numbers {H10020} <S60100> ** CAPI3REF: Run-Time Library Version Numbers {H10020} <S60100>
@ -392,20 +392,20 @@ int sqlite3_exec(
** in the 4th parameter to the xOpen method of the ** in the 4th parameter to the xOpen method of the
** [sqlite3_vfs] object. ** [sqlite3_vfs] object.
*/ */
#define SQLITE_OPEN_READONLY 0x00000001 #define SQLITE_OPEN_READONLY 0x00000001 /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_READWRITE 0x00000002 #define SQLITE_OPEN_READWRITE 0x00000002 /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_CREATE 0x00000004 #define SQLITE_OPEN_CREATE 0x00000004 /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_DELETEONCLOSE 0x00000008 #define SQLITE_OPEN_DELETEONCLOSE 0x00000008 /* VFS only */
#define SQLITE_OPEN_EXCLUSIVE 0x00000010 #define SQLITE_OPEN_EXCLUSIVE 0x00000010 /* VFS only */
#define SQLITE_OPEN_MAIN_DB 0x00000100 #define SQLITE_OPEN_MAIN_DB 0x00000100 /* VFS only */
#define SQLITE_OPEN_TEMP_DB 0x00000200 #define SQLITE_OPEN_TEMP_DB 0x00000200 /* VFS only */
#define SQLITE_OPEN_TRANSIENT_DB 0x00000400 #define SQLITE_OPEN_TRANSIENT_DB 0x00000400 /* VFS only */
#define SQLITE_OPEN_MAIN_JOURNAL 0x00000800 #define SQLITE_OPEN_MAIN_JOURNAL 0x00000800 /* VFS only */
#define SQLITE_OPEN_TEMP_JOURNAL 0x00001000 #define SQLITE_OPEN_TEMP_JOURNAL 0x00001000 /* VFS only */
#define SQLITE_OPEN_SUBJOURNAL 0x00002000 #define SQLITE_OPEN_SUBJOURNAL 0x00002000 /* VFS only */
#define SQLITE_OPEN_MASTER_JOURNAL 0x00004000 #define SQLITE_OPEN_MASTER_JOURNAL 0x00004000 /* VFS only */
#define SQLITE_OPEN_NOMUTEX 0x00008000 #define SQLITE_OPEN_NOMUTEX 0x00008000 /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_FULLMUTEX 0x00010000 #define SQLITE_OPEN_FULLMUTEX 0x00010000 /* Ok for sqlite3_open_v2() */
/* /*
** CAPI3REF: Device Characteristics {H10240} <H11120> ** CAPI3REF: Device Characteristics {H10240} <H11120>
@ -702,9 +702,14 @@ typedef struct sqlite3_mutex sqlite3_mutex;
** deleted when it is closed. The [SQLITE_OPEN_DELETEONCLOSE] ** deleted when it is closed. The [SQLITE_OPEN_DELETEONCLOSE]
** will be set for TEMP databases, journals and for subjournals. ** will be set for TEMP databases, journals and for subjournals.
** **
** The [SQLITE_OPEN_EXCLUSIVE] flag means the file should be opened ** The [SQLITE_OPEN_EXCLUSIVE] flag is always used in conjunction
** for exclusive access. This flag is set for all files except ** with the [SQLITE_OPEN_CREATE] flag, which are both directly
** for the main database file. ** analogous to the O_EXCL and O_CREAT flags of the POSIX open()
** API. The SQLITE_OPEN_EXCLUSIVE flag, when paired with the
** SQLITE_OPEN_CREATE, is used to indicate that file should always
** be created, and that it is an error if it already exists.
** It is <i>not</i> used to indicate the file should be opened
** for exclusive access.
** **
** At least szOsFile bytes of memory are allocated by SQLite ** At least szOsFile bytes of memory are allocated by SQLite
** to hold the [sqlite3_file] structure passed as the third ** to hold the [sqlite3_file] structure passed as the third
@ -1031,12 +1036,14 @@ struct sqlite3_mem_methods {
** **
** <dt>SQLITE_CONFIG_SCRATCH</dt> ** <dt>SQLITE_CONFIG_SCRATCH</dt>
** <dd>This option specifies a static memory buffer that SQLite can use for ** <dd>This option specifies a static memory buffer that SQLite can use for
** scratch memory. There are three arguments: A pointer to the memory, the ** scratch memory. There are three arguments: A pointer an 8-byte
** size of each scratch buffer (sz), and the number of buffers (N). The sz ** aligned memory buffer from which the scrach allocations will be
** drawn, the size of each scratch allocation (sz),
** and the maximum number of scratch allocations (N). The sz
** argument must be a multiple of 16. The sz parameter should be a few bytes ** argument must be a multiple of 16. The sz parameter should be a few bytes
** larger than the actual scratch space required due internal overhead. ** larger than the actual scratch space required due to internal overhead.
** The first ** The first argument should pointer to an 8-byte aligned buffer
** argument should point to an allocation of at least sz*N bytes of memory. ** of at least sz*N bytes of memory.
** SQLite will use no more than one scratch buffer at once per thread, so ** SQLite will use no more than one scratch buffer at once per thread, so
** N should be set to the expected maximum number of threads. The sz ** N should be set to the expected maximum number of threads. The sz
** parameter should be 6 times the size of the largest database page size. ** parameter should be 6 times the size of the largest database page size.
@ -1050,29 +1057,37 @@ struct sqlite3_mem_methods {
** the database page cache with the default page cache implemenation. ** the database page cache with the default page cache implemenation.
** This configuration should not be used if an application-define page ** This configuration should not be used if an application-define page
** cache implementation is loaded using the SQLITE_CONFIG_PCACHE option. ** cache implementation is loaded using the SQLITE_CONFIG_PCACHE option.
** There are three arguments to this option: A pointer to the ** There are three arguments to this option: A pointer to 8-byte aligned
** memory, the size of each page buffer (sz), and the number of pages (N). ** memory, the size of each page buffer (sz), and the number of pages (N).
** The sz argument must be a power of two between 512 and 32768. The first ** The sz argument should be the size of the largest database page
** (a power of two between 512 and 32768) plus a little extra for each
** page header. The page header size is 20 to 40 bytes depending on
** the host architecture. It is harmless, apart from the wasted memory,
** to make sz a little too large. The first
** argument should point to an allocation of at least sz*N bytes of memory. ** argument should point to an allocation of at least sz*N bytes of memory.
** SQLite will use the memory provided by the first argument to satisfy its ** SQLite will use the memory provided by the first argument to satisfy its
** memory needs for the first N pages that it adds to cache. If additional ** memory needs for the first N pages that it adds to cache. If additional
** page cache memory is needed beyond what is provided by this option, then ** page cache memory is needed beyond what is provided by this option, then
** SQLite goes to [sqlite3_malloc()] for the additional storage space. ** SQLite goes to [sqlite3_malloc()] for the additional storage space.
** The implementation might use one or more of the N buffers to hold ** The implementation might use one or more of the N buffers to hold
** memory accounting information. </dd> ** memory accounting information. The pointer in the first argument must
** be aligned to an 8-byte boundary or subsequent behavior of SQLite
** will be undefined.</dd>
** **
** <dt>SQLITE_CONFIG_HEAP</dt> ** <dt>SQLITE_CONFIG_HEAP</dt>
** <dd>This option specifies a static memory buffer that SQLite will use ** <dd>This option specifies a static memory buffer that SQLite will use
** for all of its dynamic memory allocation needs beyond those provided ** for all of its dynamic memory allocation needs beyond those provided
** for by [SQLITE_CONFIG_SCRATCH] and [SQLITE_CONFIG_PAGECACHE]. ** for by [SQLITE_CONFIG_SCRATCH] and [SQLITE_CONFIG_PAGECACHE].
** There are three arguments: A pointer to the memory, the number of ** There are three arguments: An 8-byte aligned pointer to the memory,
** bytes in the memory buffer, and the minimum allocation size. If ** the number of bytes in the memory buffer, and the minimum allocation size.
** the first pointer (the memory pointer) is NULL, then SQLite reverts ** If the first pointer (the memory pointer) is NULL, then SQLite reverts
** to using its default memory allocator (the system malloc() implementation), ** to using its default memory allocator (the system malloc() implementation),
** undoing any prior invocation of [SQLITE_CONFIG_MALLOC]. If the ** undoing any prior invocation of [SQLITE_CONFIG_MALLOC]. If the
** memory pointer is not NULL and either [SQLITE_ENABLE_MEMSYS3] or ** memory pointer is not NULL and either [SQLITE_ENABLE_MEMSYS3] or
** [SQLITE_ENABLE_MEMSYS5] are defined, then the alternative memory ** [SQLITE_ENABLE_MEMSYS5] are defined, then the alternative memory
** allocator is engaged to handle all of SQLites memory allocation needs.</dd> ** allocator is engaged to handle all of SQLites memory allocation needs.
** The first pointer (the memory pointer) must be aligned to an 8-byte
** boundary or subsequent behavior of SQLite will be undefined.</dd>
** **
** <dt>SQLITE_CONFIG_MUTEX</dt> ** <dt>SQLITE_CONFIG_MUTEX</dt>
** <dd>This option takes a single argument which is a pointer to an ** <dd>This option takes a single argument which is a pointer to an
@ -1143,9 +1158,9 @@ struct sqlite3_mem_methods {
** <dd>This option takes three additional arguments that determine the ** <dd>This option takes three additional arguments that determine the
** [lookaside memory allocator] configuration for the [database connection]. ** [lookaside memory allocator] configuration for the [database connection].
** The first argument (the third parameter to [sqlite3_db_config()] is a ** The first argument (the third parameter to [sqlite3_db_config()] is a
** pointer to a memory buffer to use for lookaside memory. The first ** pointer to an 8-byte aligned memory buffer to use for lookaside memory.
** argument may be NULL in which case SQLite will allocate the lookaside ** The first argument may be NULL in which case SQLite will allocate the
** buffer itself using [sqlite3_malloc()]. The second argument is the ** lookaside buffer itself using [sqlite3_malloc()]. The second argument is the
** size of each lookaside buffer slot and the third argument is the number of ** size of each lookaside buffer slot and the third argument is the number of
** slots. The size of the buffer in the first argument must be greater than ** slots. The size of the buffer in the first argument must be greater than
** or equal to the product of the second and third arguments.</dd> ** or equal to the product of the second and third arguments.</dd>
@ -1277,9 +1292,9 @@ int sqlite3_changes(sqlite3*);
** [CREATE TRIGGER | trigger] contexts. However, ** [CREATE TRIGGER | trigger] contexts. However,
** the count does not include changes used to implement [REPLACE] constraints, ** the count does not include changes used to implement [REPLACE] constraints,
** do rollbacks or ABORT processing, or [DROP TABLE] processing. The ** do rollbacks or ABORT processing, or [DROP TABLE] processing. The
** count does not rows of views that fire an [INSTEAD OF trigger], though if ** count does not include rows of views that fire an [INSTEAD OF trigger],
** the INSTEAD OF trigger makes changes of its own, those changes are ** though if the INSTEAD OF trigger makes changes of its own, those changes
** counted. ** are counted.
** The changes are counted as soon as the statement that makes them is ** The changes are counted as soon as the statement that makes them is
** completed (when the statement handle is passed to [sqlite3_reset()] or ** completed (when the statement handle is passed to [sqlite3_reset()] or
** [sqlite3_finalize()]). ** [sqlite3_finalize()]).
@ -3069,8 +3084,11 @@ int sqlite3_reset(sqlite3_stmt *pStmt);
** **
** The third parameter (nArg) ** The third parameter (nArg)
** is the number of arguments that the SQL function or ** is the number of arguments that the SQL function or
** aggregate takes. If this parameter is negative, then the SQL function or ** aggregate takes. If this parameter is -1, then the SQL function or
** aggregate may take any number of arguments. ** aggregate may take any number of arguments between 0 and the limit
** set by [sqlite3_limit]([SQLITE_LIMIT_FUNCTION_ARG]). If the third
** parameter is less than -1 or greater than 127 then the behavior is
** undefined.
** **
** The fourth parameter, eTextRep, specifies what ** The fourth parameter, eTextRep, specifies what
** [SQLITE_UTF8 | text encoding] this SQL function prefers for ** [SQLITE_UTF8 | text encoding] this SQL function prefers for
@ -3121,7 +3139,7 @@ int sqlite3_reset(sqlite3_stmt *pStmt);
** statement in which the function is running. ** statement in which the function is running.
** **
** Requirements: ** Requirements:
** [H16103] [H16106] [H16109] [H16112] [H16118] [H16121] [H16124] [H16127] ** [H16103] [H16106] [H16109] [H16112] [H16118] [H16121] [H16127]
** [H16130] [H16133] [H16136] [H16139] [H16142] ** [H16130] [H16133] [H16136] [H16139] [H16142]
*/ */
int sqlite3_create_function( int sqlite3_create_function(
@ -3736,11 +3754,11 @@ sqlite3_stmt *sqlite3_next_stmt(sqlite3 *pDb, sqlite3_stmt *pStmt);
** CAPI3REF: Commit And Rollback Notification Callbacks {H12950} <S60400> ** CAPI3REF: Commit And Rollback Notification Callbacks {H12950} <S60400>
** **
** The sqlite3_commit_hook() interface registers a callback ** The sqlite3_commit_hook() interface registers a callback
** function to be invoked whenever a transaction is committed. ** function to be invoked whenever a transaction is [COMMIT | committed].
** Any callback set by a previous call to sqlite3_commit_hook() ** Any callback set by a previous call to sqlite3_commit_hook()
** for the same database connection is overridden. ** for the same database connection is overridden.
** The sqlite3_rollback_hook() interface registers a callback ** The sqlite3_rollback_hook() interface registers a callback
** function to be invoked whenever a transaction is committed. ** function to be invoked whenever a transaction is [ROLLBACK | rolled back].
** Any callback set by a previous call to sqlite3_commit_hook() ** Any callback set by a previous call to sqlite3_commit_hook()
** for the same database connection is overridden. ** for the same database connection is overridden.
** The pArg argument is passed through to the callback. ** The pArg argument is passed through to the callback.
@ -3760,6 +3778,12 @@ sqlite3_stmt *sqlite3_next_stmt(sqlite3 *pDb, sqlite3_stmt *pStmt);
** **
** Registering a NULL function disables the callback. ** Registering a NULL function disables the callback.
** **
** When the commit hook callback routine returns zero, the [COMMIT]
** operation is allowed to continue normally. If the commit hook
** returns non-zero, then the [COMMIT] is converted into a [ROLLBACK].
** The rollback hook is invoked on a rollback that results from a commit
** hook returning non-zero, just as it would be with any other rollback.
**
** For the purposes of this API, a transaction is said to have been ** For the purposes of this API, a transaction is said to have been
** rolled back if an explicit "ROLLBACK" statement is executed, or ** rolled back if an explicit "ROLLBACK" statement is executed, or
** an error or constraint causes an implicit rollback to occur. ** an error or constraint causes an implicit rollback to occur.
@ -3769,6 +3793,8 @@ sqlite3_stmt *sqlite3_next_stmt(sqlite3 *pDb, sqlite3_stmt *pStmt);
** rolled back because a commit callback returned non-zero. ** rolled back because a commit callback returned non-zero.
** <todo> Check on this </todo> ** <todo> Check on this </todo>
** **
** See also the [sqlite3_update_hook()] interface.
**
** Requirements: ** Requirements:
** [H12951] [H12952] [H12953] [H12954] [H12955] ** [H12951] [H12952] [H12953] [H12954] [H12955]
** [H12961] [H12962] [H12963] [H12964] ** [H12961] [H12962] [H12963] [H12964]
@ -3800,6 +3826,13 @@ void *sqlite3_rollback_hook(sqlite3*, void(*)(void *), void*);
** The update hook is not invoked when internal system tables are ** The update hook is not invoked when internal system tables are
** modified (i.e. sqlite_master and sqlite_sequence). ** modified (i.e. sqlite_master and sqlite_sequence).
** **
** In the current implementation, the update hook
** is not invoked when duplication rows are deleted because of an
** [ON CONFLICT | ON CONFLICT REPLACE] clause. Nor is the update hook
** invoked when rows are deleted using the [truncate optimization].
** The exceptions defined in this paragraph might change in a future
** release of SQLite.
**
** The update hook implementation must not do anything that will modify ** The update hook implementation must not do anything that will modify
** the database connection that invoked the update hook. Any actions ** the database connection that invoked the update hook. Any actions
** to modify the database connection must be deferred until after the ** to modify the database connection must be deferred until after the
@ -3810,6 +3843,9 @@ void *sqlite3_rollback_hook(sqlite3*, void(*)(void *), void*);
** If another function was previously registered, its pArg value ** If another function was previously registered, its pArg value
** is returned. Otherwise NULL is returned. ** is returned. Otherwise NULL is returned.
** **
** See also the [sqlite3_commit_hook()] and [sqlite3_rollback_hook()]
** interfaces.
**
** Requirements: ** Requirements:
** [H12971] [H12973] [H12975] [H12977] [H12979] [H12981] [H12983] [H12986] ** [H12971] [H12973] [H12975] [H12977] [H12979] [H12981] [H12983] [H12986]
*/ */
@ -4379,7 +4415,7 @@ typedef struct sqlite3_blob sqlite3_blob;
** SELECT zColumn FROM zDb.zTable WHERE [rowid] = iRow; ** SELECT zColumn FROM zDb.zTable WHERE [rowid] = iRow;
** </pre> {END} ** </pre> {END}
** **
** If the flags parameter is non-zero, the the BLOB is opened for read ** If the flags parameter is non-zero, then the BLOB is opened for read
** and write access. If it is zero, the BLOB is opened for read access. ** and write access. If it is zero, the BLOB is opened for read access.
** **
** Note that the database name is not the filename that contains ** Note that the database name is not the filename that contains
@ -4389,10 +4425,13 @@ typedef struct sqlite3_blob sqlite3_blob;
** For TEMP tables, the database name is "temp". ** For TEMP tables, the database name is "temp".
** **
** On success, [SQLITE_OK] is returned and the new [BLOB handle] is written ** On success, [SQLITE_OK] is returned and the new [BLOB handle] is written
** to *ppBlob. Otherwise an [error code] is returned and any value written ** to *ppBlob. Otherwise an [error code] is returned and *ppBlob is set
** to *ppBlob should not be used by the caller. ** to be a null pointer.
** This function sets the [database connection] error code and message ** This function sets the [database connection] error code and message
** accessible via [sqlite3_errcode()] and [sqlite3_errmsg()]. ** accessible via [sqlite3_errcode()] and [sqlite3_errmsg()] and related
** functions. Note that the *ppBlob variable is always initialized in a
** way that makes it safe to invoke [sqlite3_blob_close()] on *ppBlob
** regardless of the success or failure of this routine.
** **
** If the row that a BLOB handle points to is modified by an ** If the row that a BLOB handle points to is modified by an
** [UPDATE], [DELETE], or by [ON CONFLICT] side-effects ** [UPDATE], [DELETE], or by [ON CONFLICT] side-effects
@ -4405,6 +4444,19 @@ typedef struct sqlite3_blob sqlite3_blob;
** rollback by the expiration of the BLOB. Such changes will eventually ** rollback by the expiration of the BLOB. Such changes will eventually
** commit if the transaction continues to completion. ** commit if the transaction continues to completion.
** **
** Use the [sqlite3_blob_bytes()] interface to determine the size of
** the opened blob. The size of a blob may not be changed by this
** underface. Use the [UPDATE] SQL command to change the size of a
** blob.
**
** The [sqlite3_bind_zeroblob()] and [sqlite3_result_zeroblob()] interfaces
** and the built-in [zeroblob] SQL function can be used, if desired,
** to create an empty, zero-filled blob in which to read or write using
** this interface.
**
** To avoid a resource leak, every open [BLOB handle] should eventually
** be released by a call to [sqlite3_blob_close()].
**
** Requirements: ** Requirements:
** [H17813] [H17814] [H17816] [H17819] [H17821] [H17824] ** [H17813] [H17814] [H17816] [H17819] [H17821] [H17824]
*/ */
@ -4427,16 +4479,19 @@ int sqlite3_blob_open(
** if there are no other BLOBs, no pending prepared statements, and the ** if there are no other BLOBs, no pending prepared statements, and the
** database connection is in [autocommit mode]. ** database connection is in [autocommit mode].
** If any writes were made to the BLOB, they might be held in cache ** If any writes were made to the BLOB, they might be held in cache
** until the close operation if they will fit. {END} ** until the close operation if they will fit.
** **
** Closing the BLOB often forces the changes ** Closing the BLOB often forces the changes
** out to disk and so if any I/O errors occur, they will likely occur ** out to disk and so if any I/O errors occur, they will likely occur
** at the time when the BLOB is closed. {H17833} Any errors that occur during ** at the time when the BLOB is closed. Any errors that occur during
** closing are reported as a non-zero return value. ** closing are reported as a non-zero return value.
** **
** The BLOB is closed unconditionally. Even if this routine returns ** The BLOB is closed unconditionally. Even if this routine returns
** an error code, the BLOB is still closed. ** an error code, the BLOB is still closed.
** **
** Calling this routine with a null pointer (which as would be returned
** by failed call to [sqlite3_blob_open()]) is a harmless no-op.
**
** Requirements: ** Requirements:
** [H17833] [H17836] [H17839] ** [H17833] [H17836] [H17839]
*/ */
@ -4445,8 +4500,15 @@ int sqlite3_blob_close(sqlite3_blob *);
/* /*
** CAPI3REF: Return The Size Of An Open BLOB {H17840} <S30230> ** CAPI3REF: Return The Size Of An Open BLOB {H17840} <S30230>
** **
** Returns the size in bytes of the BLOB accessible via the open ** Returns the size in bytes of the BLOB accessible via the
** []BLOB handle] in its only argument. ** successfully opened [BLOB handle] in its only argument. The
** incremental blob I/O routines can only read or overwriting existing
** blob content; they cannot change the size of a blob.
**
** This routine only works on a [BLOB handle] which has been created
** by a prior successful call to [sqlite3_blob_open()] and which has not
** been closed by [sqlite3_blob_close()]. Passing any other pointer in
** to this routine results in undefined and probably undesirable behavior.
** **
** Requirements: ** Requirements:
** [H17843] ** [H17843]
@ -4463,6 +4525,8 @@ int sqlite3_blob_bytes(sqlite3_blob *);
** If offset iOffset is less than N bytes from the end of the BLOB, ** If offset iOffset is less than N bytes from the end of the BLOB,
** [SQLITE_ERROR] is returned and no data is read. If N or iOffset is ** [SQLITE_ERROR] is returned and no data is read. If N or iOffset is
** less than zero, [SQLITE_ERROR] is returned and no data is read. ** less than zero, [SQLITE_ERROR] is returned and no data is read.
** The size of the blob (and hence the maximum value of N+iOffset)
** can be determined using the [sqlite3_blob_bytes()] interface.
** **
** An attempt to read from an expired [BLOB handle] fails with an ** An attempt to read from an expired [BLOB handle] fails with an
** error code of [SQLITE_ABORT]. ** error code of [SQLITE_ABORT].
@ -4470,6 +4534,13 @@ int sqlite3_blob_bytes(sqlite3_blob *);
** On success, SQLITE_OK is returned. ** On success, SQLITE_OK is returned.
** Otherwise, an [error code] or an [extended error code] is returned. ** Otherwise, an [error code] or an [extended error code] is returned.
** **
** This routine only works on a [BLOB handle] which has been created
** by a prior successful call to [sqlite3_blob_open()] and which has not
** been closed by [sqlite3_blob_close()]. Passing any other pointer in
** to this routine results in undefined and probably undesirable behavior.
**
** See also: [sqlite3_blob_write()].
**
** Requirements: ** Requirements:
** [H17853] [H17856] [H17859] [H17862] [H17863] [H17865] [H17868] ** [H17853] [H17856] [H17859] [H17862] [H17863] [H17865] [H17868]
*/ */
@ -4491,6 +4562,8 @@ int sqlite3_blob_read(sqlite3_blob *, void *Z, int N, int iOffset);
** If offset iOffset is less than N bytes from the end of the BLOB, ** If offset iOffset is less than N bytes from the end of the BLOB,
** [SQLITE_ERROR] is returned and no data is written. If N is ** [SQLITE_ERROR] is returned and no data is written. If N is
** less than zero [SQLITE_ERROR] is returned and no data is written. ** less than zero [SQLITE_ERROR] is returned and no data is written.
** The size of the BLOB (and hence the maximum value of N+iOffset)
** can be determined using the [sqlite3_blob_bytes()] interface.
** **
** An attempt to write to an expired [BLOB handle] fails with an ** An attempt to write to an expired [BLOB handle] fails with an
** error code of [SQLITE_ABORT]. Writes to the BLOB that occurred ** error code of [SQLITE_ABORT]. Writes to the BLOB that occurred
@ -4502,6 +4575,13 @@ int sqlite3_blob_read(sqlite3_blob *, void *Z, int N, int iOffset);
** On success, SQLITE_OK is returned. ** On success, SQLITE_OK is returned.
** Otherwise, an [error code] or an [extended error code] is returned. ** Otherwise, an [error code] or an [extended error code] is returned.
** **
** This routine only works on a [BLOB handle] which has been created
** by a prior successful call to [sqlite3_blob_open()] and which has not
** been closed by [sqlite3_blob_close()]. Passing any other pointer in
** to this routine results in undefined and probably undesirable behavior.
**
** See also: [sqlite3_blob_read()].
**
** Requirements: ** Requirements:
** [H17873] [H17874] [H17875] [H17876] [H17877] [H17879] [H17882] [H17885] ** [H17873] [H17874] [H17875] [H17876] [H17877] [H17879] [H17882] [H17885]
** [H17888] ** [H17888]
@ -4852,6 +4932,8 @@ int sqlite3_test_control(int op, ...);
#define SQLITE_TESTCTRL_FAULT_INSTALL 9 #define SQLITE_TESTCTRL_FAULT_INSTALL 9
#define SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS 10 #define SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS 10
#define SQLITE_TESTCTRL_PENDING_BYTE 11 #define SQLITE_TESTCTRL_PENDING_BYTE 11
#define SQLITE_TESTCTRL_ASSERT 12
#define SQLITE_TESTCTRL_ALWAYS 13
/* /*
** CAPI3REF: SQLite Runtime Status {H17200} <S60200> ** CAPI3REF: SQLite Runtime Status {H17200} <S60200>