amalgalite 0.4.2-x86-mswin32-60 → 0.5.0-x86-mswin32-60

Sign up to get free protection for your applications and to get access to all the features.
data/ext/sqlite3.h CHANGED
@@ -30,7 +30,7 @@
30
30
  ** the version number) and changes its name to "sqlite3.h" as
31
31
  ** part of the build process.
32
32
  **
33
- ** @(#) $Id: sqlite.h.in,v 1.398 2008/09/10 13:09:24 drh Exp $
33
+ ** @(#) $Id: sqlite.h.in,v 1.412 2008/11/10 23:54:06 drh Exp $
34
34
  */
35
35
  #ifndef _SQLITE3_H_
36
36
  #define _SQLITE3_H_
@@ -52,29 +52,20 @@ extern "C" {
52
52
  #endif
53
53
 
54
54
  /*
55
- ** Add the ability to mark interfaces as deprecated.
55
+ ** These no-op macros are used in front of interfaces to mark those
56
+ ** interfaces as either deprecated or experimental. New applications
57
+ ** should not use deprecated intrfaces - they are support for backwards
58
+ ** compatibility only. Application writers should be aware that
59
+ ** experimental interfaces are subject to change in point releases.
60
+ **
61
+ ** These macros used to resolve to various kinds of compiler magic that
62
+ ** would generate warning messages when they were used. But that
63
+ ** compiler magic ended up generating such a flurry of bug reports
64
+ ** that we have taken it all out and gone back to using simple
65
+ ** noop macros.
56
66
  */
57
- #if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))
58
- /* GCC added the deprecated attribute in version 3.1 */
59
- #define SQLITE_DEPRECATED __attribute__ ((deprecated))
60
- #elif defined(_MSC_VER) && (_MSC_VER>1200)
61
- #define SQLITE_DEPRECATED __declspec(deprecated)
62
- #else
63
- #define SQLITE_DEPRECATED
64
- #endif
65
-
66
- /*
67
- ** Add the ability to mark interfaces as experimental.
68
- */
69
- #if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
70
- /* I can confirm that it does not work on version 4.1.0... */
71
- /* First appears in GCC docs for version 4.3.0 */
72
- #define SQLITE_EXPERIMENTAL __attribute__ ((warning ("is experimental")))
73
- #elif defined(_MSC_VER) && (_MSC_VER>1200)
74
- #define SQLITE_EXPERIMENTAL __declspec(deprecated("was declared experimental"))
75
- #else
76
- #define SQLITE_EXPERIMENTAL
77
- #endif
67
+ #define SQLITE_DEPRECATED
68
+ #define SQLITE_EXPERIMENTAL
78
69
 
79
70
  /*
80
71
  ** Ensure these symbols were not defined by some previous header file.
@@ -116,8 +107,8 @@ extern "C" {
116
107
  ** with the value (X*1000000 + Y*1000 + Z) where X, Y, and Z
117
108
  ** are the major version, minor version, and release number.
118
109
  */
119
- #define SQLITE_VERSION "3.6.3"
120
- #define SQLITE_VERSION_NUMBER 3006003
110
+ #define SQLITE_VERSION "3.6.5"
111
+ #define SQLITE_VERSION_NUMBER 3006005
121
112
 
122
113
  /*
123
114
  ** CAPI3REF: Run-Time Library Version Numbers {H10020} <S60100>
@@ -182,16 +173,11 @@ int sqlite3_libversion_number(void);
182
173
  **
183
174
  ** INVARIANTS:
184
175
  **
185
- ** {H10101} The [sqlite3_threadsafe()] function shall return nonzero if
186
- ** and only if
187
- ** SQLite was compiled with the its mutexes enabled by default.
176
+ ** {H10101} The [sqlite3_threadsafe()] function shall return zero if
177
+ ** and only if SQLite was compiled with mutexing code omitted.
188
178
  **
189
179
  ** {H10102} The value returned by the [sqlite3_threadsafe()] function
190
- ** shall not change when mutex setting are modified at
191
- ** runtime using the [sqlite3_config()] interface and
192
- ** especially the [SQLITE_CONFIG_SINGLETHREAD],
193
- ** [SQLITE_CONFIG_MULTITHREAD], [SQLITE_CONFIG_SERIALIZED],
194
- ** and [SQLITE_CONFIG_MUTEX] verbs.
180
+ ** shall remain the same across calls to [sqlite3_config()].
195
181
  */
196
182
  int sqlite3_threadsafe(void);
197
183
 
@@ -288,7 +274,7 @@ typedef sqlite_uint64 sqlite3_uint64;
288
274
  ** an [SQLITE_BUSY] error code.
289
275
  **
290
276
  ** {H12015} A call to [sqlite3_close(C)] where C is a NULL pointer shall
291
- ** return SQLITE_OK.
277
+ ** be a harmless no-op returning SQLITE_OK.
292
278
  **
293
279
  ** {H12019} When [sqlite3_close(C)] is invoked on a [database connection] C
294
280
  ** that has a pending transaction, the transaction shall be
@@ -392,12 +378,14 @@ typedef int (*sqlite3_callback)(void*,int,char**, char**);
392
378
  ** *E to NULL if E is not NULL and there are no errors.
393
379
  **
394
380
  ** {H12137} The [sqlite3_exec(D,S,C,A,E)] function shall set the [error code]
395
- ** and message accessible via [sqlite3_errcode()],
381
+ ** and message accessible via [sqlite3_errcode()],
382
+ ** [sqlite3_extended_errcode()],
396
383
  ** [sqlite3_errmsg()], and [sqlite3_errmsg16()].
397
384
  **
398
385
  ** {H12138} If the S parameter to [sqlite3_exec(D,S,C,A,E)] is NULL or an
399
386
  ** empty string or contains nothing other than whitespace, comments,
400
387
  ** and/or semicolons, then results of [sqlite3_errcode()],
388
+ ** [sqlite3_extended_errcode()],
401
389
  ** [sqlite3_errmsg()], and [sqlite3_errmsg16()]
402
390
  ** shall reset to indicate no errors.
403
391
  **
@@ -599,7 +587,7 @@ int sqlite3_exec(
599
587
  ** sync operation only needs to flush data to mass storage. Inode
600
588
  ** information need not be flushed. The SQLITE_SYNC_NORMAL flag means
601
589
  ** to use normal fsync() semantics. The SQLITE_SYNC_FULL flag means
602
- ** to use Mac OS-X style fullsync instead of fsync().
590
+ ** to use Mac OS X style fullsync instead of fsync().
603
591
  */
604
592
  #define SQLITE_SYNC_NORMAL 0x00002
605
593
  #define SQLITE_SYNC_FULL 0x00003
@@ -631,7 +619,7 @@ struct sqlite3_file {
631
619
  **
632
620
  ** The flags argument to xSync may be one of [SQLITE_SYNC_NORMAL] or
633
621
  ** [SQLITE_SYNC_FULL]. The first choice is the normal fsync().
634
- ** The second choice is a Mac OS-X style fullsync. The [SQLITE_SYNC_DATAONLY]
622
+ ** The second choice is a Mac OS X style fullsync. The [SQLITE_SYNC_DATAONLY]
635
623
  ** flag may be ORed in to indicate that only the data of the file
636
624
  ** and not its inode needs to be synced.
637
625
  **
@@ -694,6 +682,12 @@ struct sqlite3_file {
694
682
  ** way around. The SQLITE_IOCAP_SEQUENTIAL property means that
695
683
  ** information is written to disk in the same order as calls
696
684
  ** to xWrite().
685
+ **
686
+ ** If xRead() returns SQLITE_IOERR_SHORT_READ it must also fill
687
+ ** in the unread portions of the buffer with zeros. A VFS that
688
+ ** fails to zero-fill short reads might seem to work. However,
689
+ ** failure to zero-fill short reads will eventually lead to
690
+ ** database corruption.
697
691
  */
698
692
  typedef struct sqlite3_io_methods sqlite3_io_methods;
699
693
  struct sqlite3_io_methods {
@@ -920,24 +914,24 @@ struct sqlite3_vfs {
920
914
  ** sqlite3_os_init(). Similarly, sqlite3_shutdown()
921
915
  ** shall invoke sqlite3_os_end().
922
916
  **
923
- ** The sqlite3_initialize() routine returns SQLITE_OK on success.
917
+ ** The sqlite3_initialize() routine returns [SQLITE_OK] on success.
924
918
  ** If for some reason, sqlite3_initialize() is unable to initialize
925
919
  ** the library (perhaps it is unable to allocate a needed resource such
926
- ** as a mutex) it returns an [error code] other than SQLITE_OK.
920
+ ** as a mutex) it returns an [error code] other than [SQLITE_OK].
927
921
  **
928
922
  ** The sqlite3_initialize() routine is called internally by many other
929
923
  ** SQLite interfaces so that an application usually does not need to
930
924
  ** invoke sqlite3_initialize() directly. For example, [sqlite3_open()]
931
925
  ** calls sqlite3_initialize() so the SQLite library will be automatically
932
926
  ** initialized when [sqlite3_open()] is called if it has not be initialized
933
- ** already. However, if SQLite is compiled with the SQLITE_OMIT_AUTOINIT
927
+ ** already. However, if SQLite is compiled with the [SQLITE_OMIT_AUTOINIT]
934
928
  ** compile-time option, then the automatic calls to sqlite3_initialize()
935
929
  ** are omitted and the application must call sqlite3_initialize() directly
936
930
  ** prior to using any other SQLite interface. For maximum portability,
937
931
  ** it is recommended that applications always invoke sqlite3_initialize()
938
932
  ** directly prior to using any other SQLite interface. Future releases
939
933
  ** of SQLite may require this. In other words, the behavior exhibited
940
- ** when SQLite is compiled with SQLITE_OMIT_AUTOINIT might become the
934
+ ** when SQLite is compiled with [SQLITE_OMIT_AUTOINIT] might become the
941
935
  ** default behavior in some future release of SQLite.
942
936
  **
943
937
  ** The sqlite3_os_init() routine does operating-system specific
@@ -955,11 +949,11 @@ struct sqlite3_vfs {
955
949
  ** sqlite3_os_end() is called by sqlite3_shutdown(). Appropriate
956
950
  ** implementations for sqlite3_os_init() and sqlite3_os_end()
957
951
  ** are built into SQLite when it is compiled for unix, windows, or os/2.
958
- ** When built for other platforms (using the SQLITE_OS_OTHER=1 compile-time
952
+ ** When built for other platforms (using the [SQLITE_OS_OTHER=1] compile-time
959
953
  ** option) the application must supply a suitable implementation for
960
954
  ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied
961
955
  ** implementation of sqlite3_os_init() or sqlite3_os_end()
962
- ** must return SQLITE_OK on success and some other [error code] upon
956
+ ** must return [SQLITE_OK] on success and some other [error code] upon
963
957
  ** failure.
964
958
  */
965
959
  int sqlite3_initialize(void);
@@ -968,7 +962,7 @@ int sqlite3_os_init(void);
968
962
  int sqlite3_os_end(void);
969
963
 
970
964
  /*
971
- ** CAPI3REF: Configuring The SQLite Library {H10145} <S20000><S30200>
965
+ ** CAPI3REF: Configuring The SQLite Library {H14100} <S20000><S30200>
972
966
  ** EXPERIMENTAL
973
967
  **
974
968
  ** The sqlite3_config() interface is used to make global configuration
@@ -991,14 +985,103 @@ int sqlite3_os_end(void);
991
985
  ** vary depending on the [SQLITE_CONFIG_SINGLETHREAD | configuration option]
992
986
  ** in the first argument.
993
987
  **
994
- ** When a configuration option is set, sqlite3_config() returns SQLITE_OK.
988
+ ** When a configuration option is set, sqlite3_config() returns [SQLITE_OK].
995
989
  ** If the option is unknown or SQLite is unable to set the option
996
990
  ** then this routine returns a non-zero [error code].
991
+ **
992
+ ** INVARIANTS:
993
+ **
994
+ ** {H14103} A successful invocation of [sqlite3_config()] shall return
995
+ ** [SQLITE_OK].
996
+ **
997
+ ** {H14106} The [sqlite3_config()] interface shall return [SQLITE_MISUSE]
998
+ ** if it is invoked in between calls to [sqlite3_initialize()] and
999
+ ** [sqlite3_shutdown()].
1000
+ **
1001
+ ** {H14120} A successful call to [sqlite3_config]([SQLITE_CONFIG_SINGLETHREAD])
1002
+ ** shall set the default [threading mode] to Single-thread.
1003
+ **
1004
+ ** {H14123} A successful call to [sqlite3_config]([SQLITE_CONFIG_MULTITHREAD])
1005
+ ** shall set the default [threading mode] to Multi-thread.
1006
+ **
1007
+ ** {H14126} A successful call to [sqlite3_config]([SQLITE_CONFIG_SERIALIZED])
1008
+ ** shall set the default [threading mode] to Serialized.
1009
+ **
1010
+ ** {H14129} A successful call to [sqlite3_config]([SQLITE_CONFIG_MUTEX],X)
1011
+ ** where X is a pointer to an initialized [sqlite3_mutex_methods]
1012
+ ** object shall cause all subsequent mutex operations performed
1013
+ ** by SQLite to use the mutex methods that were present in X
1014
+ ** during the call to [sqlite3_config()].
1015
+ **
1016
+ ** {H14132} A successful call to [sqlite3_config]([SQLITE_CONFIG_GETMUTEX],X)
1017
+ ** where X is a pointer to an [sqlite3_mutex_methods] object
1018
+ ** shall overwrite the content of [sqlite3_mutex_methods] object
1019
+ ** with the mutex methods currently in use by SQLite.
1020
+ **
1021
+ ** {H14135} A successful call to [sqlite3_config]([SQLITE_CONFIG_MALLOC],M)
1022
+ ** where M is a pointer to an initialized [sqlite3_mem_methods]
1023
+ ** object shall cause all subsequent memory allocation operations
1024
+ ** performed by SQLite to use the methods that were present in
1025
+ ** M during the call to [sqlite3_config()].
1026
+ **
1027
+ ** {H14138} A successful call to [sqlite3_config]([SQLITE_CONFIG_GETMALLOC],M)
1028
+ ** where M is a pointer to an [sqlite3_mem_methods] object shall
1029
+ ** overwrite the content of [sqlite3_mem_methods] object with
1030
+ ** the memory allocation methods currently in use by
1031
+ ** SQLite.
1032
+ **
1033
+ ** {H14141} A successful call to [sqlite3_config]([SQLITE_CONFIG_MEMSTATUS],1)
1034
+ ** shall enable the memory allocation status collection logic.
1035
+ **
1036
+ ** {H14144} A successful call to [sqlite3_config]([SQLITE_CONFIG_MEMSTATUS],0)
1037
+ ** shall disable the memory allocation status collection logic.
1038
+ **
1039
+ ** {H14147} The memory allocation status collection logic shall be
1040
+ ** enabled by default.
1041
+ **
1042
+ ** {H14150} A successful call to [sqlite3_config]([SQLITE_CONFIG_SCRATCH],S,Z,N)
1043
+ ** where Z and N are non-negative integers and
1044
+ ** S is a pointer to an aligned memory buffer not less than
1045
+ ** Z*N bytes in size shall cause S to be used by the
1046
+ ** [scratch memory allocator] for as many as N simulataneous
1047
+ ** allocations each of size Z.
1048
+ **
1049
+ ** {H14153} A successful call to [sqlite3_config]([SQLITE_CONFIG_SCRATCH],S,Z,N)
1050
+ ** where S is a NULL pointer shall disable the
1051
+ ** [scratch memory allocator].
1052
+ **
1053
+ ** {H14156} A successful call to
1054
+ ** [sqlite3_config]([SQLITE_CONFIG_PAGECACHE],S,Z,N)
1055
+ ** where Z and N are non-negative integers and
1056
+ ** S is a pointer to an aligned memory buffer not less than
1057
+ ** Z*N bytes in size shall cause S to be used by the
1058
+ ** [pagecache memory allocator] for as many as N simulataneous
1059
+ ** allocations each of size Z.
1060
+ **
1061
+ ** {H14159} A successful call to
1062
+ ** [sqlite3_config]([SQLITE_CONFIG_PAGECACHE],S,Z,N)
1063
+ ** where S is a NULL pointer shall disable the
1064
+ ** [pagecache memory allocator].
1065
+ **
1066
+ ** {H14162} A successful call to [sqlite3_config]([SQLITE_CONFIG_HEAP],H,Z,N)
1067
+ ** where Z and N are non-negative integers and
1068
+ ** H is a pointer to an aligned memory buffer not less than
1069
+ ** Z bytes in size shall enable the [memsys5] memory allocator
1070
+ ** and cause it to use buffer S as its memory source and to use
1071
+ ** a minimum allocation size of N.
1072
+ **
1073
+ ** {H14165} A successful call to [sqlite3_config]([SQLITE_CONFIG_HEAP],H,Z,N)
1074
+ ** where H is a NULL pointer shall disable the
1075
+ ** [memsys5] memory allocator.
1076
+ **
1077
+ ** {H14168} A successful call to [sqlite3_config]([SQLITE_CONFIG_LOOKASIDE],Z,N)
1078
+ ** shall cause the default [lookaside memory allocator] configuration
1079
+ ** for new [database connections] to be N slots of Z bytes each.
997
1080
  */
998
1081
  SQLITE_EXPERIMENTAL int sqlite3_config(int, ...);
999
1082
 
1000
1083
  /*
1001
- ** CAPI3REF: Configure database connections {H10180} <S20000>
1084
+ ** CAPI3REF: Configure database connections {H14200} <S20000>
1002
1085
  ** EXPERIMENTAL
1003
1086
  **
1004
1087
  ** The sqlite3_db_config() interface is used to make configuration
@@ -1015,6 +1098,38 @@ SQLITE_EXPERIMENTAL int sqlite3_config(int, ...);
1015
1098
  ** The only choice for this value is [SQLITE_DBCONFIG_LOOKASIDE].
1016
1099
  ** New verbs are likely to be added in future releases of SQLite.
1017
1100
  ** Additional arguments depend on the verb.
1101
+ **
1102
+ ** INVARIANTS:
1103
+ **
1104
+ ** {H14203} A call to [sqlite3_db_config(D,V,...)] shall return [SQLITE_OK]
1105
+ ** if and only if the call is successful.
1106
+ **
1107
+ ** {H14206} If one or more slots of the [lookaside memory allocator] for
1108
+ ** [database connection] D are in use, then a call to
1109
+ ** [sqlite3_db_config](D,[SQLITE_DBCONFIG_LOOKASIDE],...) shall
1110
+ ** fail with an [SQLITE_BUSY] return code.
1111
+ **
1112
+ ** {H14209} A successful call to
1113
+ ** [sqlite3_db_config](D,[SQLITE_DBCONFIG_LOOKASIDE],B,Z,N) where
1114
+ ** D is an open [database connection] and Z and N are positive
1115
+ ** integers and B is an aligned buffer at least Z*N bytes in size
1116
+ ** shall cause the [lookaside memory allocator] for D to use buffer B
1117
+ ** with N slots of Z bytes each.
1118
+ **
1119
+ ** {H14212} A successful call to
1120
+ ** [sqlite3_db_config](D,[SQLITE_DBCONFIG_LOOKASIDE],B,Z,N) where
1121
+ ** D is an open [database connection] and Z and N are positive
1122
+ ** integers and B is NULL pointer shall cause the
1123
+ ** [lookaside memory allocator] for D to a obtain Z*N byte buffer
1124
+ ** from the primary memory allocator and use that buffer
1125
+ ** with N lookaside slots of Z bytes each.
1126
+ **
1127
+ ** {H14215} A successful call to
1128
+ ** [sqlite3_db_config](D,[SQLITE_DBCONFIG_LOOKASIDE],B,Z,N) where
1129
+ ** D is an open [database connection] and Z and N are zero shall
1130
+ ** disable the [lookaside memory allocator] for D.
1131
+ **
1132
+ **
1018
1133
  */
1019
1134
  SQLITE_EXPERIMENTAL int sqlite3_db_config(sqlite3*, int op, ...);
1020
1135
 
@@ -1217,7 +1332,7 @@ struct sqlite3_mem_methods {
1217
1332
  #define SQLITE_CONFIG_MEMSTATUS 9 /* boolean */
1218
1333
  #define SQLITE_CONFIG_MUTEX 10 /* sqlite3_mutex_methods* */
1219
1334
  #define SQLITE_CONFIG_GETMUTEX 11 /* sqlite3_mutex_methods* */
1220
- #define SQLITE_CONFIG_CHUNKALLOC 12 /* int threshold */
1335
+ /* previously SQLITE_CONFIG_CHUNKALLOC 12 which is now unused. */
1221
1336
  #define SQLITE_CONFIG_LOOKASIDE 13 /* int int */
1222
1337
 
1223
1338
  /*
@@ -1280,17 +1395,17 @@ int sqlite3_extended_result_codes(sqlite3*, int onoff);
1280
1395
  ** is another alias for the rowid.
1281
1396
  **
1282
1397
  ** This routine returns the rowid of the most recent
1283
- ** successful INSERT into the database from the [database connection]
1284
- ** in the first argument. If no successful INSERTs
1398
+ ** successful [INSERT] into the database from the [database connection]
1399
+ ** in the first argument. If no successful [INSERT]s
1285
1400
  ** have ever occurred on that database connection, zero is returned.
1286
1401
  **
1287
- ** If an INSERT occurs within a trigger, then the rowid of the inserted
1402
+ ** If an [INSERT] occurs within a trigger, then the rowid of the inserted
1288
1403
  ** row is returned by this routine as long as the trigger is running.
1289
1404
  ** But once the trigger terminates, the value returned by this routine
1290
1405
  ** reverts to the last value inserted before the trigger fired.
1291
1406
  **
1292
- ** An INSERT that fails due to a constraint violation is not a
1293
- ** successful INSERT and does not change the value returned by this
1407
+ ** An [INSERT] that fails due to a constraint violation is not a
1408
+ ** successful [INSERT] and does not change the value returned by this
1294
1409
  ** routine. Thus INSERT OR FAIL, INSERT OR IGNORE, INSERT OR ROLLBACK,
1295
1410
  ** and INSERT OR ABORT make no changes to the return value of this
1296
1411
  ** routine when their insertion fails. When INSERT OR REPLACE
@@ -1299,23 +1414,24 @@ int sqlite3_extended_result_codes(sqlite3*, int onoff);
1299
1414
  ** the constraint problem so INSERT OR REPLACE will always change
1300
1415
  ** the return value of this interface.
1301
1416
  **
1302
- ** For the purposes of this routine, an INSERT is considered to
1417
+ ** For the purposes of this routine, an [INSERT] is considered to
1303
1418
  ** be successful even if it is subsequently rolled back.
1304
1419
  **
1305
1420
  ** INVARIANTS:
1306
1421
  **
1307
- ** {H12221} The [sqlite3_last_insert_rowid()] function returns the rowid
1308
- ** of the most recent successful INSERT performed on the same
1422
+ ** {H12221} The [sqlite3_last_insert_rowid()] function shall return the rowid
1423
+ ** of the most recent successful [INSERT] performed on the same
1309
1424
  ** [database connection] and within the same or higher level
1310
- ** trigger context, or zero if there have been no qualifying inserts.
1425
+ ** trigger context, or zero if there have been no qualifying
1426
+ ** [INSERT] statements.
1311
1427
  **
1312
- ** {H12223} The [sqlite3_last_insert_rowid()] function returns the
1428
+ ** {H12223} The [sqlite3_last_insert_rowid()] function shall return the
1313
1429
  ** same value when called from the same trigger context
1314
- ** immediately before and after a ROLLBACK.
1430
+ ** immediately before and after a [ROLLBACK].
1315
1431
  **
1316
1432
  ** ASSUMPTIONS:
1317
1433
  **
1318
- ** {A12232} If a separate thread performs a new INSERT on the same
1434
+ ** {A12232} If a separate thread performs a new [INSERT] on the same
1319
1435
  ** database connection while the [sqlite3_last_insert_rowid()]
1320
1436
  ** function is running and thus changes the last insert rowid,
1321
1437
  ** then the value returned by [sqlite3_last_insert_rowid()] is
@@ -1330,8 +1446,8 @@ sqlite3_int64 sqlite3_last_insert_rowid(sqlite3*);
1330
1446
  ** This function returns the number of database rows that were changed
1331
1447
  ** or inserted or deleted by the most recently completed SQL statement
1332
1448
  ** on the [database connection] specified by the first parameter.
1333
- ** Only changes that are directly specified by the INSERT, UPDATE,
1334
- ** or DELETE statement are counted. Auxiliary changes caused by
1449
+ ** Only changes that are directly specified by the [INSERT], [UPDATE],
1450
+ ** or [DELETE] statement are counted. Auxiliary changes caused by
1335
1451
  ** triggers are not counted. Use the [sqlite3_total_changes()] function
1336
1452
  ** to find the total number of changes including changes caused by triggers.
1337
1453
  **
@@ -1365,13 +1481,15 @@ sqlite3_int64 sqlite3_last_insert_rowid(sqlite3*);
1365
1481
  ** caused by subtriggers since those have their own context.
1366
1482
  **
1367
1483
  ** SQLite implements the command "DELETE FROM table" without a WHERE clause
1368
- ** by dropping and recreating the table. (This is much faster than going
1369
- ** through and deleting individual elements from the table.) Because of this
1484
+ ** by dropping and recreating the table. Doing so is much faster than going
1485
+ ** through and deleting individual elements from the table. Because of this
1370
1486
  ** optimization, the deletions in "DELETE FROM table" are not row changes and
1371
1487
  ** will not be counted by the sqlite3_changes() or [sqlite3_total_changes()]
1372
1488
  ** functions, regardless of the number of elements that were originally
1373
1489
  ** in the table. To get an accurate count of the number of rows deleted, use
1374
- ** "DELETE FROM table WHERE 1" instead.
1490
+ ** "DELETE FROM table WHERE 1" instead. Or recompile using the
1491
+ ** [SQLITE_OMIT_TRUNCATE_OPTIMIZATION] compile-time option to disable the
1492
+ ** optimization on all queries.
1375
1493
  **
1376
1494
  ** INVARIANTS:
1377
1495
  **
@@ -1413,7 +1531,9 @@ int sqlite3_changes(sqlite3*);
1413
1531
  ** will not be counted by the sqlite3_changes() or [sqlite3_total_changes()]
1414
1532
  ** functions, regardless of the number of elements that were originally
1415
1533
  ** in the table. To get an accurate count of the number of rows deleted, use
1416
- ** "DELETE FROM table WHERE 1" instead.
1534
+ ** "DELETE FROM table WHERE 1" instead. Or recompile using the
1535
+ ** [SQLITE_OMIT_TRUNCATE_OPTIMIZATION] compile-time option to disable the
1536
+ ** optimization on all queries.
1417
1537
  **
1418
1538
  ** See also the [sqlite3_changes()] interface.
1419
1539
  **
@@ -1892,7 +2012,7 @@ char *sqlite3_snprintf(int,char*,const char*, ...);
1892
2012
  ** memory might result in a segmentation fault or other severe error.
1893
2013
  ** Memory corruption, a segmentation fault, or other severe error
1894
2014
  ** might result if sqlite3_free() is called with a non-NULL pointer that
1895
- ** was not obtained from sqlite3_malloc() or sqlite3_free().
2015
+ ** was not obtained from sqlite3_malloc() or sqlite3_realloc().
1896
2016
  **
1897
2017
  ** The sqlite3_realloc() interface attempts to resize a
1898
2018
  ** prior memory allocation to be at least N bytes, where N is the
@@ -2263,7 +2383,7 @@ int sqlite3_set_authorizer(
2263
2383
  #define SQLITE_ANALYZE 28 /* Table Name NULL */
2264
2384
  #define SQLITE_CREATE_VTABLE 29 /* Table Name Module Name */
2265
2385
  #define SQLITE_DROP_VTABLE 30 /* Table Name Module Name */
2266
- #define SQLITE_FUNCTION 31 /* Function Name NULL */
2386
+ #define SQLITE_FUNCTION 31 /* NULL Function Name */
2267
2387
  #define SQLITE_COPY 0 /* No longer used */
2268
2388
 
2269
2389
  /*
@@ -2546,7 +2666,10 @@ int sqlite3_open_v2(
2546
2666
  ** [extended result code] for the most recent failed sqlite3_* API call
2547
2667
  ** associated with a [database connection]. If a prior API call failed
2548
2668
  ** but the most recent API call succeeded, the return value from
2549
- ** sqlite3_errcode() is undefined.
2669
+ ** sqlite3_errcode() is undefined. The sqlite3_extended_errcode()
2670
+ ** interface is the same except that it always returns the
2671
+ ** [extended result code] even when extended result codes are
2672
+ ** disabled.
2550
2673
  **
2551
2674
  ** The sqlite3_errmsg() and sqlite3_errmsg16() return English-language
2552
2675
  ** text that describes the error, as either UTF-8 or UTF-16 respectively.
@@ -2555,6 +2678,16 @@ int sqlite3_open_v2(
2555
2678
  ** However, the error string might be overwritten or deallocated by
2556
2679
  ** subsequent calls to other SQLite interface functions.
2557
2680
  **
2681
+ ** When the serialized [threading mode] is in use, it might be the
2682
+ ** case that a second error occurs on a separate thread in between
2683
+ ** the time of the first error and the call to these interfaces.
2684
+ ** When that happens, the second error will be reported since these
2685
+ ** interfaces always report the most recent result. To avoid
2686
+ ** this, each thread can obtain exclusive use of the [database connection] D
2687
+ ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning
2688
+ ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after
2689
+ ** all calls to the interfaces listed here are completed.
2690
+ **
2558
2691
  ** If an interface fails with SQLITE_MISUSE, that means the interface
2559
2692
  ** was invoked incorrectly by the application. In that case, the
2560
2693
  ** error code and message may or may not be set.
@@ -2565,6 +2698,10 @@ int sqlite3_open_v2(
2565
2698
  ** [result code] or [extended result code] for the most recently
2566
2699
  ** failed interface call associated with the [database connection] D.
2567
2700
  **
2701
+ ** {H12802} The [sqlite3_extended_errcode(D)] interface returns the numeric
2702
+ ** [extended result code] for the most recently
2703
+ ** failed interface call associated with the [database connection] D.
2704
+ **
2568
2705
  ** {H12803} The [sqlite3_errmsg(D)] and [sqlite3_errmsg16(D)]
2569
2706
  ** interfaces return English-language text that describes
2570
2707
  ** the error in the mostly recently failed interface call,
@@ -2576,15 +2713,18 @@ int sqlite3_open_v2(
2576
2713
  ** {H12808} Calls to API routines that do not return an error code
2577
2714
  ** (example: [sqlite3_data_count()]) do not
2578
2715
  ** change the error code or message returned by
2579
- ** [sqlite3_errcode()], [sqlite3_errmsg()], or [sqlite3_errmsg16()].
2716
+ ** [sqlite3_errcode()], [sqlite3_extended_errcode()],
2717
+ ** [sqlite3_errmsg()], or [sqlite3_errmsg16()].
2580
2718
  **
2581
2719
  ** {H12809} Interfaces that are not associated with a specific
2582
2720
  ** [database connection] (examples:
2583
2721
  ** [sqlite3_mprintf()] or [sqlite3_enable_shared_cache()]
2584
2722
  ** do not change the values returned by
2585
- ** [sqlite3_errcode()], [sqlite3_errmsg()], or [sqlite3_errmsg16()].
2723
+ ** [sqlite3_errcode()], [sqlite3_extended_errcode()],
2724
+ ** [sqlite3_errmsg()], or [sqlite3_errmsg16()].
2586
2725
  */
2587
2726
  int sqlite3_errcode(sqlite3 *db);
2727
+ int sqlite3_extended_errcode(sqlite3 *db);
2588
2728
  const char *sqlite3_errmsg(sqlite3*);
2589
2729
  const void *sqlite3_errmsg16(sqlite3*);
2590
2730
 
@@ -2853,7 +2993,7 @@ int sqlite3_prepare16_v2(
2853
2993
  );
2854
2994
 
2855
2995
  /*
2856
- ** CAPIREF: Retrieving Statement SQL {H13100} <H13000>
2996
+ ** CAPI3REF: Retrieving Statement SQL {H13100} <H13000>
2857
2997
  **
2858
2998
  ** This interface can be used to retrieve a saved copy of the original
2859
2999
  ** SQL text used to create a [prepared statement] if that statement was
@@ -4011,14 +4151,16 @@ int sqlite3_create_function16(
4011
4151
  ** backwards compatibility with older code, these functions continue
4012
4152
  ** to be supported. However, new applications should avoid
4013
4153
  ** the use of these functions. To help encourage people to avoid
4014
- ** using these functions, we are not going to tell you want they do.
4154
+ ** using these functions, we are not going to tell you what they do.
4015
4155
  */
4156
+ #ifndef SQLITE_OMIT_DEPRECATED
4016
4157
  SQLITE_DEPRECATED int sqlite3_aggregate_count(sqlite3_context*);
4017
4158
  SQLITE_DEPRECATED int sqlite3_expired(sqlite3_stmt*);
4018
4159
  SQLITE_DEPRECATED int sqlite3_transfer_bindings(sqlite3_stmt*, sqlite3_stmt*);
4019
4160
  SQLITE_DEPRECATED int sqlite3_global_recover(void);
4020
4161
  SQLITE_DEPRECATED void sqlite3_thread_cleanup(void);
4021
4162
  SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int64,int),void*,sqlite3_int64);
4163
+ #endif
4022
4164
 
4023
4165
  /*
4024
4166
  ** CAPI3REF: Obtaining SQL Function Parameter Values {H15100} <S20200>
@@ -5651,6 +5793,7 @@ typedef struct sqlite3_blob sqlite3_blob;
5651
5793
  **
5652
5794
  ** {H17821} If an error occurs during evaluation of [sqlite3_blob_open(D,...)]
5653
5795
  ** then subsequent calls to [sqlite3_errcode(D)],
5796
+ ** [sqlite3_extended_errcode()],
5654
5797
  ** [sqlite3_errmsg(D)], and [sqlite3_errmsg16(D)] shall return
5655
5798
  ** information appropriate for that error.
5656
5799
  **
@@ -5764,6 +5907,7 @@ int sqlite3_blob_bytes(sqlite3_blob *);
5764
5907
  **
5765
5908
  ** {H17868} If an error occurs during evaluation of [sqlite3_blob_read(P,...)]
5766
5909
  ** then subsequent calls to [sqlite3_errcode(D)],
5910
+ ** [sqlite3_extended_errcode()],
5767
5911
  ** [sqlite3_errmsg(D)], and [sqlite3_errmsg16(D)] shall return
5768
5912
  ** information appropriate for that error, where D is the
5769
5913
  ** [database connection] that was used to open the [BLOB handle] P.
@@ -5833,6 +5977,7 @@ int sqlite3_blob_read(sqlite3_blob *, void *Z, int N, int iOffset);
5833
5977
  **
5834
5978
  ** {H17888} If an error occurs during evaluation of [sqlite3_blob_write(D,...)]
5835
5979
  ** then subsequent calls to [sqlite3_errcode(D)],
5980
+ ** [sqlite3_extended_errcode()],
5836
5981
  ** [sqlite3_errmsg(D)], and [sqlite3_errmsg16(D)] shall return
5837
5982
  ** information appropriate for that error.
5838
5983
  */
@@ -6130,6 +6275,17 @@ int sqlite3_mutex_notheld(sqlite3_mutex*);
6130
6275
  #define SQLITE_MUTEX_STATIC_LRU 6 /* lru page list */
6131
6276
  #define SQLITE_MUTEX_STATIC_LRU2 7 /* lru page list */
6132
6277
 
6278
+ /*
6279
+ ** CAPI3REF: Retrieve the mutex for a database connection {H17002} <H17000>
6280
+ **
6281
+ ** This interface returns a pointer the [sqlite3_mutex] object that
6282
+ ** serializes access to the [database connection] given in the argument
6283
+ ** when the [threading mode] is Serialized.
6284
+ ** If the [threading mode] is Single-thread or Multi-thread then this
6285
+ ** routine returns a NULL pointer.
6286
+ */
6287
+ sqlite3_mutex *sqlite3_db_mutex(sqlite3*);
6288
+
6133
6289
  /*
6134
6290
  ** CAPI3REF: Low-Level Control Of Database Files {H11300} <S30800>
6135
6291
  **
@@ -6225,29 +6381,6 @@ int sqlite3_test_control(int op, ...);
6225
6381
  */
6226
6382
  SQLITE_EXPERIMENTAL int sqlite3_status(int op, int *pCurrent, int *pHighwater, int resetFlag);
6227
6383
 
6228
- /*
6229
- ** CAPI3REF: Database Connection Status {H17201} <S60200>
6230
- ** EXPERIMENTAL
6231
- **
6232
- ** This interface is used to retrieve runtime status information
6233
- ** about a single [database connection]. The first argument is the
6234
- ** database connection object to be interrogated. The second argument
6235
- ** is the parameter to interrogate. Currently, the only allowed value
6236
- ** for the second parameter is [SQLITE_DBSTATUS_LOOKASIDE_USED].
6237
- ** Additional options will likely appear in future releases of SQLite.
6238
- **
6239
- ** The current value of the request parameter is written into *pCur
6240
- ** and the highest instantaneous value is written into *pHiwtr. If
6241
- ** the resetFlg is true, then the highest instantaneous value is
6242
- ** reset back down to the current value.
6243
- **
6244
- ** See also: [sqlite3_status()].
6245
- */
6246
- SQLITE_EXPERIMENTAL int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int resetFlg);
6247
-
6248
-
6249
- int sqlite3_wsd_init(int N, int J);
6250
- void *sqlite3_wsd_find(void *K, int L);
6251
6384
 
6252
6385
  /*
6253
6386
  ** CAPI3REF: Status Parameters {H17250} <H17200>
@@ -6337,7 +6470,27 @@ void *sqlite3_wsd_find(void *K, int L);
6337
6470
  #define SQLITE_STATUS_SCRATCH_SIZE 8
6338
6471
 
6339
6472
  /*
6340
- ** CAPI3REF: Status Parameters for database connections {H17275} <H17200>
6473
+ ** CAPI3REF: Database Connection Status {H17500} <S60200>
6474
+ ** EXPERIMENTAL
6475
+ **
6476
+ ** This interface is used to retrieve runtime status information
6477
+ ** about a single [database connection]. The first argument is the
6478
+ ** database connection object to be interrogated. The second argument
6479
+ ** is the parameter to interrogate. Currently, the only allowed value
6480
+ ** for the second parameter is [SQLITE_DBSTATUS_LOOKASIDE_USED].
6481
+ ** Additional options will likely appear in future releases of SQLite.
6482
+ **
6483
+ ** The current value of the requested parameter is written into *pCur
6484
+ ** and the highest instantaneous value is written into *pHiwtr. If
6485
+ ** the resetFlg is true, then the highest instantaneous value is
6486
+ ** reset back down to the current value.
6487
+ **
6488
+ ** See also: [sqlite3_status()] and [sqlite3_stmt_status()].
6489
+ */
6490
+ SQLITE_EXPERIMENTAL int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int resetFlg);
6491
+
6492
+ /*
6493
+ ** CAPI3REF: Status Parameters for database connections {H17520} <H17500>
6341
6494
  ** EXPERIMENTAL
6342
6495
  **
6343
6496
  ** Status verbs for [sqlite3_db_status()].
@@ -6350,6 +6503,58 @@ void *sqlite3_wsd_find(void *K, int L);
6350
6503
  */
6351
6504
  #define SQLITE_DBSTATUS_LOOKASIDE_USED 0
6352
6505
 
6506
+
6507
+ /*
6508
+ ** CAPI3REF: Prepared Statement Status {H17550} <S60200>
6509
+ ** EXPERIMENTAL
6510
+ **
6511
+ ** Each prepared statement maintains various
6512
+ ** [SQLITE_STMTSTATUS_SORT | counters] that measure the number
6513
+ ** of times it has performed specific operations. These counters can
6514
+ ** be used to monitor the performance characteristics of the prepared
6515
+ ** statements. For example, if the number of table steps greatly exceeds
6516
+ ** the number of table searches or result rows, that would tend to indicate
6517
+ ** that the prepared statement is using a full table scan rather than
6518
+ ** an index.
6519
+ **
6520
+ ** This interface is used to retrieve and reset counter values from
6521
+ ** a [prepared statement]. The first argument is the prepared statement
6522
+ ** object to be interrogated. The second argument
6523
+ ** is an integer code for a specific [SQLITE_STMTSTATUS_SORT | counter]
6524
+ ** to be interrogated.
6525
+ ** The current value of the requested counter is returned.
6526
+ ** If the resetFlg is true, then the counter is reset to zero after this
6527
+ ** interface call returns.
6528
+ **
6529
+ ** See also: [sqlite3_status()] and [sqlite3_db_status()].
6530
+ */
6531
+ SQLITE_EXPERIMENTAL int sqlite3_stmt_status(sqlite3_stmt*, int op,int resetFlg);
6532
+
6533
+ /*
6534
+ ** CAPI3REF: Status Parameters for prepared statements {H17570} <H17550>
6535
+ ** EXPERIMENTAL
6536
+ **
6537
+ ** These preprocessor macros define integer codes that name counter
6538
+ ** values associated with the [sqlite3_stmt_status()] interface.
6539
+ ** The meanings of the various counters are as follows:
6540
+ **
6541
+ ** <dl>
6542
+ ** <dt>SQLITE_STMTSTATUS_FULLSCAN_STEP</dt>
6543
+ ** <dd>This is the number of times that SQLite has stepped forward in
6544
+ ** a table as part of a full table scan. Large numbers for this counter
6545
+ ** may indicate opportunities for performance improvement through
6546
+ ** careful use of indices.</dd>
6547
+ **
6548
+ ** <dt>SQLITE_STMTSTATUS_SORT</dt>
6549
+ ** <dd>This is the number of sort operations that have occurred.
6550
+ ** A non-zero value in this counter may indicate an opportunity to
6551
+ ** improvement performance through careful use of indices.</dd>
6552
+ **
6553
+ ** </dl>
6554
+ */
6555
+ #define SQLITE_STMTSTATUS_FULLSCAN_STEP 1
6556
+ #define SQLITE_STMTSTATUS_SORT 2
6557
+
6353
6558
  /*
6354
6559
  ** Undo the hack that converts floating point types to integer for
6355
6560
  ** builds on processors without floating point support.