amalgalite 0.8.0 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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.421 2008/12/30 06:24:58 danielk1977 Exp $
33
+ ** @(#) $Id: sqlite.h.in,v 1.436 2009/03/20 13:15:30 drh Exp $
34
34
  */
35
35
  #ifndef _SQLITE3_H_
36
36
  #define _SQLITE3_H_
@@ -97,18 +97,10 @@ extern "C" {
97
97
  **
98
98
  ** See also: [sqlite3_libversion()] and [sqlite3_libversion_number()].
99
99
  **
100
- ** INVARIANTS:
101
- **
102
- ** {H10011} The SQLITE_VERSION #define in the sqlite3.h header file shall
103
- ** evaluate to a string literal that is the SQLite version
104
- ** with which the header file is associated.
105
- **
106
- ** {H10014} The SQLITE_VERSION_NUMBER #define shall resolve to an integer
107
- ** with the value (X*1000000 + Y*1000 + Z) where X, Y, and Z
108
- ** are the major version, minor version, and release number.
100
+ ** Requirements: [H10011] [H10014]
109
101
  */
110
- #define SQLITE_VERSION "3.6.10"
111
- #define SQLITE_VERSION_NUMBER 3006010
102
+ #define SQLITE_VERSION "3.6.12"
103
+ #define SQLITE_VERSION_NUMBER 3006012
112
104
 
113
105
  /*
114
106
  ** CAPI3REF: Run-Time Library Version Numbers {H10020} <S60100>
@@ -126,16 +118,7 @@ extern "C" {
126
118
  ** for use in DLLs since DLL users usually do not have direct access to string
127
119
  ** constants within the DLL.
128
120
  **
129
- ** INVARIANTS:
130
- **
131
- ** {H10021} The [sqlite3_libversion_number()] interface shall return
132
- ** an integer equal to [SQLITE_VERSION_NUMBER].
133
- **
134
- ** {H10022} The [sqlite3_version] string constant shall contain
135
- ** the text of the [SQLITE_VERSION] string.
136
- **
137
- ** {H10023} The [sqlite3_libversion()] function shall return
138
- ** a pointer to the [sqlite3_version] string constant.
121
+ ** Requirements: [H10021] [H10022] [H10023]
139
122
  */
140
123
  SQLITE_EXTERN const char sqlite3_version[];
141
124
  const char *sqlite3_libversion(void);
@@ -171,13 +154,7 @@ int sqlite3_libversion_number(void);
171
154
  **
172
155
  ** See the [threading mode] documentation for additional information.
173
156
  **
174
- ** INVARIANTS:
175
- **
176
- ** {H10101} The [sqlite3_threadsafe()] function shall return zero if
177
- ** and only if SQLite was compiled with mutexing code omitted.
178
- **
179
- ** {H10102} The value returned by the [sqlite3_threadsafe()] function
180
- ** shall remain the same across calls to [sqlite3_config()].
157
+ ** Requirements: [H10101] [H10102]
181
158
  */
182
159
  int sqlite3_threadsafe(void);
183
160
 
@@ -207,13 +184,7 @@ typedef struct sqlite3 sqlite3;
207
184
  ** The sqlite_int64 and sqlite_uint64 types are supported for backwards
208
185
  ** compatibility only.
209
186
  **
210
- ** INVARIANTS:
211
- **
212
- ** {H10201} The [sqlite_int64] and [sqlite3_int64] type shall specify
213
- ** a 64-bit signed integer.
214
- **
215
- ** {H10202} The [sqlite_uint64] and [sqlite3_uint64] type shall specify
216
- ** a 64-bit unsigned integer.
187
+ ** Requirements: [H10201] [H10202]
217
188
  */
218
189
  #ifdef SQLITE_INT64_TYPE
219
190
  typedef SQLITE_INT64_TYPE sqlite_int64;
@@ -258,34 +229,13 @@ typedef sqlite_uint64 sqlite3_uint64;
258
229
  ** If [sqlite3_close()] is invoked while a transaction is open,
259
230
  ** the transaction is automatically rolled back.
260
231
  **
261
- ** INVARIANTS:
262
- **
263
- ** {H12011} A successful call to [sqlite3_close(C)] shall destroy the
264
- ** [database connection] object C.
265
- **
266
- ** {H12012} A successful call to [sqlite3_close(C)] shall return SQLITE_OK.
232
+ ** The C parameter to [sqlite3_close(C)] must be either a NULL
233
+ ** pointer or an [sqlite3] object pointer obtained
234
+ ** from [sqlite3_open()], [sqlite3_open16()], or
235
+ ** [sqlite3_open_v2()], and not previously closed.
267
236
  **
268
- ** {H12013} A successful call to [sqlite3_close(C)] shall release all
269
- ** memory and system resources associated with [database connection]
270
- ** C.
271
- **
272
- ** {H12014} A call to [sqlite3_close(C)] on a [database connection] C that
273
- ** has one or more open [prepared statements] shall fail with
274
- ** an [SQLITE_BUSY] error code.
275
- **
276
- ** {H12015} A call to [sqlite3_close(C)] where C is a NULL pointer shall
277
- ** be a harmless no-op returning SQLITE_OK.
278
- **
279
- ** {H12019} When [sqlite3_close(C)] is invoked on a [database connection] C
280
- ** that has a pending transaction, the transaction shall be
281
- ** rolled back.
282
- **
283
- ** ASSUMPTIONS:
284
- **
285
- ** {A12016} The C parameter to [sqlite3_close(C)] must be either a NULL
286
- ** pointer or an [sqlite3] object pointer obtained
287
- ** from [sqlite3_open()], [sqlite3_open16()], or
288
- ** [sqlite3_open_v2()], and not previously closed.
237
+ ** Requirements:
238
+ ** [H12011] [H12012] [H12013] [H12014] [H12015] [H12019]
289
239
  */
290
240
  int sqlite3_close(sqlite3 *);
291
241
 
@@ -323,86 +273,22 @@ typedef int (*sqlite3_callback)(void*,int,char**, char**);
323
273
  ** The sqlite3_exec() routine does nothing to the database that cannot be done
324
274
  ** by [sqlite3_prepare_v2()], [sqlite3_step()], and [sqlite3_finalize()].
325
275
  **
326
- ** INVARIANTS:
327
- **
328
- ** {H12101} A successful invocation of [sqlite3_exec(D,S,C,A,E)]
329
- ** shall sequentially evaluate all of the UTF-8 encoded,
330
- ** semicolon-separated SQL statements in the zero-terminated
331
- ** string S within the context of the [database connection] D.
332
- **
333
- ** {H12102} If the S parameter to [sqlite3_exec(D,S,C,A,E)] is NULL then
334
- ** the actions of the interface shall be the same as if the
335
- ** S parameter were an empty string.
336
- **
337
- ** {H12104} The return value of [sqlite3_exec()] shall be [SQLITE_OK] if all
338
- ** SQL statements run successfully and to completion.
339
- **
340
- ** {H12105} The return value of [sqlite3_exec()] shall be an appropriate
341
- ** non-zero [error code] if any SQL statement fails.
342
- **
343
- ** {H12107} If one or more of the SQL statements handed to [sqlite3_exec()]
344
- ** return results and the 3rd parameter is not NULL, then
345
- ** the callback function specified by the 3rd parameter shall be
346
- ** invoked once for each row of result.
276
+ ** The first parameter to [sqlite3_exec()] must be an valid and open
277
+ ** [database connection].
347
278
  **
348
- ** {H12110} If the callback returns a non-zero value then [sqlite3_exec()]
349
- ** shall abort the SQL statement it is currently evaluating,
350
- ** skip all subsequent SQL statements, and return [SQLITE_ABORT].
279
+ ** The database connection must not be closed while
280
+ ** [sqlite3_exec()] is running.
351
281
  **
352
- ** {H12113} The [sqlite3_exec()] routine shall pass its 4th parameter through
353
- ** as the 1st parameter of the callback.
282
+ ** The calling function should use [sqlite3_free()] to free
283
+ ** the memory that *errmsg is left pointing at once the error
284
+ ** message is no longer needed.
354
285
  **
355
- ** {H12116} The [sqlite3_exec()] routine shall set the 2nd parameter of its
356
- ** callback to be the number of columns in the current row of
357
- ** result.
286
+ ** The SQL statement text in the 2nd parameter to [sqlite3_exec()]
287
+ ** must remain unchanged while [sqlite3_exec()] is running.
358
288
  **
359
- ** {H12119} The [sqlite3_exec()] routine shall set the 3rd parameter of its
360
- ** callback to be an array of pointers to strings holding the
361
- ** values for each column in the current result set row as
362
- ** obtained from [sqlite3_column_text()].
363
- **
364
- ** {H12122} The [sqlite3_exec()] routine shall set the 4th parameter of its
365
- ** callback to be an array of pointers to strings holding the
366
- ** names of result columns as obtained from [sqlite3_column_name()].
367
- **
368
- ** {H12125} If the 3rd parameter to [sqlite3_exec()] is NULL then
369
- ** [sqlite3_exec()] shall silently discard query results.
370
- **
371
- ** {H12131} If an error occurs while parsing or evaluating any of the SQL
372
- ** statements in the S parameter of [sqlite3_exec(D,S,C,A,E)] and if
373
- ** the E parameter is not NULL, then [sqlite3_exec()] shall store
374
- ** in *E an appropriate error message written into memory obtained
375
- ** from [sqlite3_malloc()].
376
- **
377
- ** {H12134} The [sqlite3_exec(D,S,C,A,E)] routine shall set the value of
378
- ** *E to NULL if E is not NULL and there are no errors.
379
- **
380
- ** {H12137} The [sqlite3_exec(D,S,C,A,E)] function shall set the [error code]
381
- ** and message accessible via [sqlite3_errcode()],
382
- ** [sqlite3_extended_errcode()],
383
- ** [sqlite3_errmsg()], and [sqlite3_errmsg16()].
384
- **
385
- ** {H12138} If the S parameter to [sqlite3_exec(D,S,C,A,E)] is NULL or an
386
- ** empty string or contains nothing other than whitespace, comments,
387
- ** and/or semicolons, then results of [sqlite3_errcode()],
388
- ** [sqlite3_extended_errcode()],
389
- ** [sqlite3_errmsg()], and [sqlite3_errmsg16()]
390
- ** shall reset to indicate no errors.
391
- **
392
- ** ASSUMPTIONS:
393
- **
394
- ** {A12141} The first parameter to [sqlite3_exec()] must be an valid and open
395
- ** [database connection].
396
- **
397
- ** {A12142} The database connection must not be closed while
398
- ** [sqlite3_exec()] is running.
399
- **
400
- ** {A12143} The calling function should use [sqlite3_free()] to free
401
- ** the memory that *errmsg is left pointing at once the error
402
- ** message is no longer needed.
403
- **
404
- ** {A12145} The SQL statement text in the 2nd parameter to [sqlite3_exec()]
405
- ** must remain unchanged while [sqlite3_exec()] is running.
289
+ ** Requirements:
290
+ ** [H12101] [H12102] [H12104] [H12105] [H12107] [H12110] [H12113] [H12116]
291
+ ** [H12119] [H12122] [H12125] [H12131] [H12134] [H12137] [H12138]
406
292
  */
407
293
  int sqlite3_exec(
408
294
  sqlite3*, /* An open database */
@@ -478,19 +364,6 @@ int sqlite3_exec(
478
364
  **
479
365
  ** The SQLITE_OK result code will never be extended. It will always
480
366
  ** be exactly zero.
481
- **
482
- ** INVARIANTS:
483
- **
484
- ** {H10223} The symbolic name for an extended result code shall contains
485
- ** a related primary result code as a prefix.
486
- **
487
- ** {H10224} Primary result code names shall contain a single "_" character.
488
- **
489
- ** {H10225} Extended result code names shall contain two or more "_" characters.
490
- **
491
- ** {H10226} The numeric value of an extended result code shall contain the
492
- ** numeric value of its corresponding primary result code in
493
- ** its least significant 8 bits.
494
367
  */
495
368
  #define SQLITE_IOERR_READ (SQLITE_IOERR | (1<<8))
496
369
  #define SQLITE_IOERR_SHORT_READ (SQLITE_IOERR | (2<<8))
@@ -510,6 +383,8 @@ int sqlite3_exec(
510
383
  #define SQLITE_IOERR_CLOSE (SQLITE_IOERR | (16<<8))
511
384
  #define SQLITE_IOERR_DIR_CLOSE (SQLITE_IOERR | (17<<8))
512
385
 
386
+ #define SQLITE_LOCKED_SHAREDCACHE (SQLITE_LOCKED | (1<<8) )
387
+
513
388
  /*
514
389
  ** CAPI3REF: Flags For File Open Operations {H10230} <H11120> <H12700>
515
390
  **
@@ -995,94 +870,10 @@ int sqlite3_os_end(void);
995
870
  ** If the option is unknown or SQLite is unable to set the option
996
871
  ** then this routine returns a non-zero [error code].
997
872
  **
998
- ** INVARIANTS:
999
- **
1000
- ** {H14103} A successful invocation of [sqlite3_config()] shall return
1001
- ** [SQLITE_OK].
1002
- **
1003
- ** {H14106} The [sqlite3_config()] interface shall return [SQLITE_MISUSE]
1004
- ** if it is invoked in between calls to [sqlite3_initialize()] and
1005
- ** [sqlite3_shutdown()].
1006
- **
1007
- ** {H14120} A successful call to [sqlite3_config]([SQLITE_CONFIG_SINGLETHREAD])
1008
- ** shall set the default [threading mode] to Single-thread.
1009
- **
1010
- ** {H14123} A successful call to [sqlite3_config]([SQLITE_CONFIG_MULTITHREAD])
1011
- ** shall set the default [threading mode] to Multi-thread.
1012
- **
1013
- ** {H14126} A successful call to [sqlite3_config]([SQLITE_CONFIG_SERIALIZED])
1014
- ** shall set the default [threading mode] to Serialized.
1015
- **
1016
- ** {H14129} A successful call to [sqlite3_config]([SQLITE_CONFIG_MUTEX],X)
1017
- ** where X is a pointer to an initialized [sqlite3_mutex_methods]
1018
- ** object shall cause all subsequent mutex operations performed
1019
- ** by SQLite to use the mutex methods that were present in X
1020
- ** during the call to [sqlite3_config()].
1021
- **
1022
- ** {H14132} A successful call to [sqlite3_config]([SQLITE_CONFIG_GETMUTEX],X)
1023
- ** where X is a pointer to an [sqlite3_mutex_methods] object
1024
- ** shall overwrite the content of [sqlite3_mutex_methods] object
1025
- ** with the mutex methods currently in use by SQLite.
1026
- **
1027
- ** {H14135} A successful call to [sqlite3_config]([SQLITE_CONFIG_MALLOC],M)
1028
- ** where M is a pointer to an initialized [sqlite3_mem_methods]
1029
- ** object shall cause all subsequent memory allocation operations
1030
- ** performed by SQLite to use the methods that were present in
1031
- ** M during the call to [sqlite3_config()].
1032
- **
1033
- ** {H14138} A successful call to [sqlite3_config]([SQLITE_CONFIG_GETMALLOC],M)
1034
- ** where M is a pointer to an [sqlite3_mem_methods] object shall
1035
- ** overwrite the content of [sqlite3_mem_methods] object with
1036
- ** the memory allocation methods currently in use by
1037
- ** SQLite.
1038
- **
1039
- ** {H14141} A successful call to [sqlite3_config]([SQLITE_CONFIG_MEMSTATUS],1)
1040
- ** shall enable the memory allocation status collection logic.
1041
- **
1042
- ** {H14144} A successful call to [sqlite3_config]([SQLITE_CONFIG_MEMSTATUS],0)
1043
- ** shall disable the memory allocation status collection logic.
1044
- **
1045
- ** {H14147} The memory allocation status collection logic shall be
1046
- ** enabled by default.
1047
- **
1048
- ** {H14150} A successful call to [sqlite3_config]([SQLITE_CONFIG_SCRATCH],S,Z,N)
1049
- ** where Z and N are non-negative integers and
1050
- ** S is a pointer to an aligned memory buffer not less than
1051
- ** Z*N bytes in size shall cause S to be used by the
1052
- ** [scratch memory allocator] for as many as N simulataneous
1053
- ** allocations each of size (Z & ~7).
1054
- **
1055
- ** {H14153} A successful call to [sqlite3_config]([SQLITE_CONFIG_SCRATCH],S,Z,N)
1056
- ** where S is a NULL pointer shall disable the
1057
- ** [scratch memory allocator].
1058
- **
1059
- ** {H14156} A successful call to
1060
- ** [sqlite3_config]([SQLITE_CONFIG_PAGECACHE],S,Z,N)
1061
- ** where Z and N are non-negative integers and
1062
- ** S is a pointer to an aligned memory buffer not less than
1063
- ** Z*N bytes in size shall cause S to be used by the
1064
- ** [pagecache memory allocator] for as many as N simulataneous
1065
- ** allocations each of size (Z & ~7).
1066
- **
1067
- ** {H14159} A successful call to
1068
- ** [sqlite3_config]([SQLITE_CONFIG_PAGECACHE],S,Z,N)
1069
- ** where S is a NULL pointer shall disable the
1070
- ** [pagecache memory allocator].
1071
- **
1072
- ** {H14162} A successful call to [sqlite3_config]([SQLITE_CONFIG_HEAP],H,Z,N)
1073
- ** where Z and N are non-negative integers and
1074
- ** H is a pointer to an aligned memory buffer not less than
1075
- ** Z bytes in size shall enable the [memsys5] memory allocator
1076
- ** and cause it to use buffer S as its memory source and to use
1077
- ** a minimum allocation size of N.
1078
- **
1079
- ** {H14165} A successful call to [sqlite3_config]([SQLITE_CONFIG_HEAP],H,Z,N)
1080
- ** where H is a NULL pointer shall disable the
1081
- ** [memsys5] memory allocator.
1082
- **
1083
- ** {H14168} A successful call to [sqlite3_config]([SQLITE_CONFIG_LOOKASIDE],Z,N)
1084
- ** shall cause the default [lookaside memory allocator] configuration
1085
- ** for new [database connections] to be N slots of Z bytes each.
873
+ ** Requirements:
874
+ ** [H14103] [H14106] [H14120] [H14123] [H14126] [H14129] [H14132] [H14135]
875
+ ** [H14138] [H14141] [H14144] [H14147] [H14150] [H14153] [H14156] [H14159]
876
+ ** [H14162] [H14165] [H14168]
1086
877
  */
1087
878
  SQLITE_EXPERIMENTAL int sqlite3_config(int, ...);
1088
879
 
@@ -1105,37 +896,8 @@ SQLITE_EXPERIMENTAL int sqlite3_config(int, ...);
1105
896
  ** New verbs are likely to be added in future releases of SQLite.
1106
897
  ** Additional arguments depend on the verb.
1107
898
  **
1108
- ** INVARIANTS:
1109
- **
1110
- ** {H14203} A call to [sqlite3_db_config(D,V,...)] shall return [SQLITE_OK]
1111
- ** if and only if the call is successful.
1112
- **
1113
- ** {H14206} If one or more slots of the [lookaside memory allocator] for
1114
- ** [database connection] D are in use, then a call to
1115
- ** [sqlite3_db_config](D,[SQLITE_DBCONFIG_LOOKASIDE],...) shall
1116
- ** fail with an [SQLITE_BUSY] return code.
1117
- **
1118
- ** {H14209} A successful call to
1119
- ** [sqlite3_db_config](D,[SQLITE_DBCONFIG_LOOKASIDE],B,Z,N) where
1120
- ** D is an open [database connection] and Z and N are positive
1121
- ** integers and B is an aligned buffer at least Z*N bytes in size
1122
- ** shall cause the [lookaside memory allocator] for D to use buffer B
1123
- ** with N slots of Z bytes each.
1124
- **
1125
- ** {H14212} A successful call to
1126
- ** [sqlite3_db_config](D,[SQLITE_DBCONFIG_LOOKASIDE],B,Z,N) where
1127
- ** D is an open [database connection] and Z and N are positive
1128
- ** integers and B is NULL pointer shall cause the
1129
- ** [lookaside memory allocator] for D to a obtain Z*N byte buffer
1130
- ** from the primary memory allocator and use that buffer
1131
- ** with N lookaside slots of Z bytes each.
1132
- **
1133
- ** {H14215} A successful call to
1134
- ** [sqlite3_db_config](D,[SQLITE_DBCONFIG_LOOKASIDE],B,Z,N) where
1135
- ** D is an open [database connection] and Z and N are zero shall
1136
- ** disable the [lookaside memory allocator] for D.
1137
- **
1138
- **
899
+ ** Requirements:
900
+ ** [H14203] [H14206] [H14209] [H14212] [H14215]
1139
901
  */
1140
902
  SQLITE_EXPERIMENTAL int sqlite3_db_config(sqlite3*, int op, ...);
1141
903
 
@@ -1395,14 +1157,8 @@ struct sqlite3_mem_methods {
1395
1157
  ** [extended result codes] feature of SQLite. The extended result
1396
1158
  ** codes are disabled by default for historical compatibility considerations.
1397
1159
  **
1398
- ** INVARIANTS:
1399
- **
1400
- ** {H12201} Each new [database connection] shall have the
1401
- ** [extended result codes] feature disabled by default.
1402
- **
1403
- ** {H12202} The [sqlite3_extended_result_codes(D,F)] interface shall enable
1404
- ** [extended result codes] for the [database connection] D
1405
- ** if the F parameter is true, or disable them if F is false.
1160
+ ** Requirements:
1161
+ ** [H12201] [H12202]
1406
1162
  */
1407
1163
  int sqlite3_extended_result_codes(sqlite3*, int onoff);
1408
1164
 
@@ -1439,27 +1195,15 @@ int sqlite3_extended_result_codes(sqlite3*, int onoff);
1439
1195
  ** For the purposes of this routine, an [INSERT] is considered to
1440
1196
  ** be successful even if it is subsequently rolled back.
1441
1197
  **
1442
- ** INVARIANTS:
1443
- **
1444
- ** {H12221} The [sqlite3_last_insert_rowid()] function shall return
1445
- ** the [rowid]
1446
- ** of the most recent successful [INSERT] performed on the same
1447
- ** [database connection] and within the same or higher level
1448
- ** trigger context, or zero if there have been no qualifying
1449
- ** [INSERT] statements.
1450
- **
1451
- ** {H12223} The [sqlite3_last_insert_rowid()] function shall return the
1452
- ** same value when called from the same trigger context
1453
- ** immediately before and after a [ROLLBACK].
1198
+ ** Requirements:
1199
+ ** [H12221] [H12223]
1454
1200
  **
1455
- ** ASSUMPTIONS:
1456
- **
1457
- ** {A12232} If a separate thread performs a new [INSERT] on the same
1458
- ** database connection while the [sqlite3_last_insert_rowid()]
1459
- ** function is running and thus changes the last insert [rowid],
1460
- ** then the value returned by [sqlite3_last_insert_rowid()] is
1461
- ** unpredictable and might not equal either the old or the new
1462
- ** last insert [rowid].
1201
+ ** If a separate thread performs a new [INSERT] on the same
1202
+ ** database connection while the [sqlite3_last_insert_rowid()]
1203
+ ** function is running and thus changes the last insert [rowid],
1204
+ ** then the value returned by [sqlite3_last_insert_rowid()] is
1205
+ ** unpredictable and might not equal either the old or the new
1206
+ ** last insert [rowid].
1463
1207
  */
1464
1208
  sqlite3_int64 sqlite3_last_insert_rowid(sqlite3*);
1465
1209
 
@@ -1514,24 +1258,12 @@ sqlite3_int64 sqlite3_last_insert_rowid(sqlite3*);
1514
1258
  ** [SQLITE_OMIT_TRUNCATE_OPTIMIZATION] compile-time option to disable the
1515
1259
  ** optimization on all queries.
1516
1260
  **
1517
- ** INVARIANTS:
1518
- **
1519
- ** {H12241} The [sqlite3_changes()] function shall return the number of
1520
- ** row changes caused by the most recent INSERT, UPDATE,
1521
- ** or DELETE statement on the same database connection and
1522
- ** within the same or higher trigger context, or zero if there have
1523
- ** not been any qualifying row changes.
1261
+ ** Requirements:
1262
+ ** [H12241] [H12243]
1524
1263
  **
1525
- ** {H12243} Statements of the form "DELETE FROM tablename" with no
1526
- ** WHERE clause shall cause subsequent calls to
1527
- ** [sqlite3_changes()] to return zero, regardless of the
1528
- ** number of rows originally in the table.
1529
- **
1530
- ** ASSUMPTIONS:
1531
- **
1532
- ** {A12252} If a separate thread makes changes on the same database connection
1533
- ** while [sqlite3_changes()] is running then the value returned
1534
- ** is unpredictable and not meaningful.
1264
+ ** If a separate thread makes changes on the same database connection
1265
+ ** while [sqlite3_changes()] is running then the value returned
1266
+ ** is unpredictable and not meaningful.
1535
1267
  */
1536
1268
  int sqlite3_changes(sqlite3*);
1537
1269
 
@@ -1560,22 +1292,12 @@ int sqlite3_changes(sqlite3*);
1560
1292
  **
1561
1293
  ** See also the [sqlite3_changes()] interface.
1562
1294
  **
1563
- ** INVARIANTS:
1564
- **
1565
- ** {H12261} The [sqlite3_total_changes()] returns the total number
1566
- ** of row changes caused by INSERT, UPDATE, and/or DELETE
1567
- ** statements on the same [database connection], in any
1568
- ** trigger context, since the database connection was created.
1569
- **
1570
- ** {H12263} Statements of the form "DELETE FROM tablename" with no
1571
- ** WHERE clause shall not change the value returned
1572
- ** by [sqlite3_total_changes()].
1573
- **
1574
- ** ASSUMPTIONS:
1295
+ ** Requirements:
1296
+ ** [H12261] [H12263]
1575
1297
  **
1576
- ** {A12264} If a separate thread makes changes on the same database connection
1577
- ** while [sqlite3_total_changes()] is running then the value
1578
- ** returned is unpredictable and not meaningful.
1298
+ ** If a separate thread makes changes on the same database connection
1299
+ ** while [sqlite3_total_changes()] is running then the value
1300
+ ** returned is unpredictable and not meaningful.
1579
1301
  */
1580
1302
  int sqlite3_total_changes(sqlite3*);
1581
1303
 
@@ -1605,19 +1327,11 @@ int sqlite3_total_changes(sqlite3*);
1605
1327
  ** A call to sqlite3_interrupt() has no effect on SQL statements
1606
1328
  ** that are started after sqlite3_interrupt() returns.
1607
1329
  **
1608
- ** INVARIANTS:
1330
+ ** Requirements:
1331
+ ** [H12271] [H12272]
1609
1332
  **
1610
- ** {H12271} The [sqlite3_interrupt()] interface will force all running
1611
- ** SQL statements associated with the same database connection
1612
- ** to halt after processing at most one additional row of data.
1613
- **
1614
- ** {H12272} Any SQL statement that is interrupted by [sqlite3_interrupt()]
1615
- ** will return [SQLITE_INTERRUPT].
1616
- **
1617
- ** ASSUMPTIONS:
1618
- **
1619
- ** {A12279} If the database connection closes while [sqlite3_interrupt()]
1620
- ** is running then bad things will likely happen.
1333
+ ** If the database connection closes while [sqlite3_interrupt()]
1334
+ ** is running then bad things will likely happen.
1621
1335
  */
1622
1336
  void sqlite3_interrupt(sqlite3*);
1623
1337
 
@@ -1638,25 +1352,13 @@ void sqlite3_interrupt(sqlite3*);
1638
1352
  ** These routines do not parse the SQL statements thus
1639
1353
  ** will not detect syntactically incorrect SQL.
1640
1354
  **
1641
- ** INVARIANTS:
1642
- **
1643
- ** {H10511} A successful evaluation of [sqlite3_complete()] or
1644
- ** [sqlite3_complete16()] functions shall
1645
- ** return a numeric 1 if and only if the last non-whitespace
1646
- ** token in their input is a semicolon that is not in between
1647
- ** the BEGIN and END of a CREATE TRIGGER statement.
1648
- **
1649
- ** {H10512} If a memory allocation error occurs during an invocation
1650
- ** of [sqlite3_complete()] or [sqlite3_complete16()] then the
1651
- ** routine shall return [SQLITE_NOMEM].
1355
+ ** Requirements: [H10511] [H10512]
1652
1356
  **
1653
- ** ASSUMPTIONS:
1357
+ ** The input to [sqlite3_complete()] must be a zero-terminated
1358
+ ** UTF-8 string.
1654
1359
  **
1655
- ** {A10512} The input to [sqlite3_complete()] must be a zero-terminated
1656
- ** UTF-8 string.
1657
- **
1658
- ** {A10513} The input to [sqlite3_complete16()] must be a zero-terminated
1659
- ** UTF-16 string in native byte order.
1360
+ ** The input to [sqlite3_complete16()] must be a zero-terminated
1361
+ ** UTF-16 string in native byte order.
1660
1362
  */
1661
1363
  int sqlite3_complete(const char *sql);
1662
1364
  int sqlite3_complete16(const void *sql);
@@ -1722,32 +1424,11 @@ int sqlite3_complete16(const void *sql);
1722
1424
  ** database connection that invoked the busy handler. Any such actions
1723
1425
  ** result in undefined behavior.
1724
1426
  **
1725
- ** INVARIANTS:
1726
- **
1727
- ** {H12311} The [sqlite3_busy_handler(D,C,A)] function shall replace
1728
- ** busy callback in the [database connection] D with a new
1729
- ** a new busy handler C and application data pointer A.
1730
- **
1731
- ** {H12312} Newly created [database connections] shall have a busy
1732
- ** handler of NULL.
1733
- **
1734
- ** {H12314} When two or more [database connections] share a
1735
- ** [sqlite3_enable_shared_cache | common cache],
1736
- ** the busy handler for the database connection currently using
1737
- ** the cache shall be invoked when the cache encounters a lock.
1738
- **
1739
- ** {H12316} If a busy handler callback returns zero, then the SQLite interface
1740
- ** that provoked the locking event shall return [SQLITE_BUSY].
1427
+ ** Requirements:
1428
+ ** [H12311] [H12312] [H12314] [H12316] [H12318]
1741
1429
  **
1742
- ** {H12318} SQLite shall invokes the busy handler with two arguments which
1743
- ** are a copy of the pointer supplied by the 3rd parameter to
1744
- ** [sqlite3_busy_handler()] and a count of the number of prior
1745
- ** invocations of the busy handler for the same locking event.
1746
- **
1747
- ** ASSUMPTIONS:
1748
- **
1749
- ** {A12319} A busy handler must not close the database connection
1750
- ** or [prepared statement] that invoked the busy handler.
1430
+ ** A busy handler must not close the database connection
1431
+ ** or [prepared statement] that invoked the busy handler.
1751
1432
  */
1752
1433
  int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*);
1753
1434
 
@@ -1769,21 +1450,8 @@ int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*);
1769
1450
  ** was defined (using [sqlite3_busy_handler()]) prior to calling
1770
1451
  ** this routine, that other busy handler is cleared.
1771
1452
  **
1772
- ** INVARIANTS:
1773
- **
1774
- ** {H12341} The [sqlite3_busy_timeout()] function shall override any prior
1775
- ** [sqlite3_busy_timeout()] or [sqlite3_busy_handler()] setting
1776
- ** on the same [database connection].
1777
- **
1778
- ** {H12343} If the 2nd parameter to [sqlite3_busy_timeout()] is less than
1779
- ** or equal to zero, then the busy handler shall be cleared so that
1780
- ** all subsequent locking events immediately return [SQLITE_BUSY].
1781
- **
1782
- ** {H12344} If the 2nd parameter to [sqlite3_busy_timeout()] is a positive
1783
- ** number N, then a busy handler shall be set that repeatedly calls
1784
- ** the xSleep() method in the [sqlite3_vfs | VFS interface] until
1785
- ** either the lock clears or until the cumulative sleep time
1786
- ** reported back by xSleep() exceeds N milliseconds.
1453
+ ** Requirements:
1454
+ ** [H12341] [H12343] [H12344]
1787
1455
  */
1788
1456
  int sqlite3_busy_timeout(sqlite3*, int ms);
1789
1457
 
@@ -1855,38 +1523,8 @@ int sqlite3_busy_timeout(sqlite3*, int ms);
1855
1523
  ** wrapper layer outside of the internal [sqlite3_exec()] call are not
1856
1524
  ** reflected in subsequent calls to [sqlite3_errcode()] or [sqlite3_errmsg()].
1857
1525
  **
1858
- ** INVARIANTS:
1859
- **
1860
- ** {H12371} If a [sqlite3_get_table()] fails a memory allocation, then
1861
- ** it shall free the result table under construction, abort the
1862
- ** query in process, skip any subsequent queries, set the
1863
- ** *pazResult output pointer to NULL and return [SQLITE_NOMEM].
1864
- **
1865
- ** {H12373} If the pnColumn parameter to [sqlite3_get_table()] is not NULL
1866
- ** then a successful invocation of [sqlite3_get_table()] shall
1867
- ** write the number of columns in the
1868
- ** result set of the query into *pnColumn.
1869
- **
1870
- ** {H12374} If the pnRow parameter to [sqlite3_get_table()] is not NULL
1871
- ** then a successful invocation of [sqlite3_get_table()] shall
1872
- ** writes the number of rows in the
1873
- ** result set of the query into *pnRow.
1874
- **
1875
- ** {H12376} A successful invocation of [sqlite3_get_table()] that computes
1876
- ** N rows of result with C columns per row shall make *pazResult
1877
- ** point to an array of pointers to (N+1)*C strings where the first
1878
- ** C strings are column names as obtained from
1879
- ** [sqlite3_column_name()] and the rest are column result values
1880
- ** obtained from [sqlite3_column_text()].
1881
- **
1882
- ** {H12379} The values in the pazResult array returned by [sqlite3_get_table()]
1883
- ** shall remain valid until cleared by [sqlite3_free_table()].
1884
- **
1885
- ** {H12382} When an error occurs during evaluation of [sqlite3_get_table()]
1886
- ** the function shall set *pazResult to NULL, write an error message
1887
- ** into memory obtained from [sqlite3_malloc()], make
1888
- ** **pzErrmsg point to that error message, and return a
1889
- ** appropriate [error code].
1526
+ ** Requirements:
1527
+ ** [H12371] [H12373] [H12374] [H12376] [H12379] [H12382]
1890
1528
  */
1891
1529
  int sqlite3_get_table(
1892
1530
  sqlite3 *db, /* An open database */
@@ -1990,22 +1628,8 @@ void sqlite3_free_table(char **result);
1990
1628
  ** addition that after the string has been read and copied into
1991
1629
  ** the result, [sqlite3_free()] is called on the input string. {END}
1992
1630
  **
1993
- ** INVARIANTS:
1994
- **
1995
- ** {H17403} The [sqlite3_mprintf()] and [sqlite3_vmprintf()] interfaces
1996
- ** return either pointers to zero-terminated UTF-8 strings held in
1997
- ** memory obtained from [sqlite3_malloc()] or NULL pointers if
1998
- ** a call to [sqlite3_malloc()] fails.
1999
- **
2000
- ** {H17406} The [sqlite3_snprintf()] interface writes a zero-terminated
2001
- ** UTF-8 string into the buffer pointed to by the second parameter
2002
- ** provided that the first parameter is greater than zero.
2003
- **
2004
- ** {H17407} The [sqlite3_snprintf()] interface does not write slots of
2005
- ** its output buffer (the second parameter) outside the range
2006
- ** of 0 through N-1 (where N is the first parameter)
2007
- ** regardless of the length of the string
2008
- ** requested by the format specification.
1631
+ ** Requirements:
1632
+ ** [H17403] [H17406] [H17407]
2009
1633
  */
2010
1634
  char *sqlite3_mprintf(const char*,...);
2011
1635
  char *sqlite3_vmprintf(const char*, va_list);
@@ -2079,57 +1703,18 @@ char *sqlite3_snprintf(int,char*,const char*, ...);
2079
1703
  ** they are reported back as [SQLITE_CANTOPEN] or
2080
1704
  ** [SQLITE_IOERR] rather than [SQLITE_NOMEM].
2081
1705
  **
2082
- ** INVARIANTS:
2083
- **
2084
- ** {H17303} The [sqlite3_malloc(N)] interface returns either a pointer to
2085
- ** a newly checked-out block of at least N bytes of memory
2086
- ** that is 8-byte aligned, or it returns NULL if it is unable
2087
- ** to fulfill the request.
1706
+ ** Requirements:
1707
+ ** [H17303] [H17304] [H17305] [H17306] [H17310] [H17312] [H17315] [H17318]
1708
+ ** [H17321] [H17322] [H17323]
2088
1709
  **
2089
- ** {H17304} The [sqlite3_malloc(N)] interface returns a NULL pointer if
2090
- ** N is less than or equal to zero.
1710
+ ** The pointer arguments to [sqlite3_free()] and [sqlite3_realloc()]
1711
+ ** must be either NULL or else pointers obtained from a prior
1712
+ ** invocation of [sqlite3_malloc()] or [sqlite3_realloc()] that have
1713
+ ** not yet been released.
2091
1714
  **
2092
- ** {H17305} The [sqlite3_free(P)] interface releases memory previously
2093
- ** returned from [sqlite3_malloc()] or [sqlite3_realloc()],
2094
- ** making it available for reuse.
2095
- **
2096
- ** {H17306} A call to [sqlite3_free(NULL)] is a harmless no-op.
2097
- **
2098
- ** {H17310} A call to [sqlite3_realloc(0,N)] is equivalent to a call
2099
- ** to [sqlite3_malloc(N)].
2100
- **
2101
- ** {H17312} A call to [sqlite3_realloc(P,0)] is equivalent to a call
2102
- ** to [sqlite3_free(P)].
2103
- **
2104
- ** {H17315} The SQLite core uses [sqlite3_malloc()], [sqlite3_realloc()],
2105
- ** and [sqlite3_free()] for all of its memory allocation and
2106
- ** deallocation needs.
2107
- **
2108
- ** {H17318} The [sqlite3_realloc(P,N)] interface returns either a pointer
2109
- ** to a block of checked-out memory of at least N bytes in size
2110
- ** that is 8-byte aligned, or a NULL pointer.
2111
- **
2112
- ** {H17321} When [sqlite3_realloc(P,N)] returns a non-NULL pointer, it first
2113
- ** copies the first K bytes of content from P into the newly
2114
- ** allocated block, where K is the lesser of N and the size of
2115
- ** the buffer P.
2116
- **
2117
- ** {H17322} When [sqlite3_realloc(P,N)] returns a non-NULL pointer, it first
2118
- ** releases the buffer P.
2119
- **
2120
- ** {H17323} When [sqlite3_realloc(P,N)] returns NULL, the buffer P is
2121
- ** not modified or released.
2122
- **
2123
- ** ASSUMPTIONS:
2124
- **
2125
- ** {A17350} The pointer arguments to [sqlite3_free()] and [sqlite3_realloc()]
2126
- ** must be either NULL or else pointers obtained from a prior
2127
- ** invocation of [sqlite3_malloc()] or [sqlite3_realloc()] that have
2128
- ** not yet been released.
2129
- **
2130
- ** {A17351} The application must not read or write any part of
2131
- ** a block of memory after it has been released using
2132
- ** [sqlite3_free()] or [sqlite3_realloc()].
1715
+ ** The application must not read or write any part of
1716
+ ** a block of memory after it has been released using
1717
+ ** [sqlite3_free()] or [sqlite3_realloc()].
2133
1718
  */
2134
1719
  void *sqlite3_malloc(int);
2135
1720
  void *sqlite3_realloc(void*, int);
@@ -2142,26 +1727,8 @@ void sqlite3_free(void*);
2142
1727
  ** of the [sqlite3_malloc()], [sqlite3_free()], and [sqlite3_realloc()]
2143
1728
  ** routines, which form the built-in memory allocation subsystem.
2144
1729
  **
2145
- ** INVARIANTS:
2146
- **
2147
- ** {H17371} The [sqlite3_memory_used()] routine returns the number of bytes
2148
- ** of memory currently outstanding (malloced but not freed).
2149
- **
2150
- ** {H17373} The [sqlite3_memory_highwater()] routine returns the maximum
2151
- ** value of [sqlite3_memory_used()] since the high-water mark
2152
- ** was last reset.
2153
- **
2154
- ** {H17374} The values returned by [sqlite3_memory_used()] and
2155
- ** [sqlite3_memory_highwater()] include any overhead
2156
- ** added by SQLite in its implementation of [sqlite3_malloc()],
2157
- ** but not overhead added by the any underlying system library
2158
- ** routines that [sqlite3_malloc()] may call.
2159
- **
2160
- ** {H17375} The memory high-water mark is reset to the current value of
2161
- ** [sqlite3_memory_used()] if and only if the parameter to
2162
- ** [sqlite3_memory_highwater()] is true. The value returned
2163
- ** by [sqlite3_memory_highwater(1)] is the high-water mark
2164
- ** prior to the reset.
1730
+ ** Requirements:
1731
+ ** [H17371] [H17373] [H17374] [H17375]
2165
1732
  */
2166
1733
  sqlite3_int64 sqlite3_memory_used(void);
2167
1734
  sqlite3_int64 sqlite3_memory_highwater(int resetFlag);
@@ -2184,10 +1751,8 @@ sqlite3_int64 sqlite3_memory_highwater(int resetFlag);
2184
1751
  ** internally and without recourse to the [sqlite3_vfs] xRandomness
2185
1752
  ** method.
2186
1753
  **
2187
- ** INVARIANTS:
2188
- **
2189
- ** {H17392} The [sqlite3_randomness(N,P)] interface writes N bytes of
2190
- ** high-quality pseudo-randomness into buffer P.
1754
+ ** Requirements:
1755
+ ** [H17392]
2191
1756
  */
2192
1757
  void sqlite3_randomness(int N, void *P);
2193
1758
 
@@ -2264,57 +1829,9 @@ void sqlite3_randomness(int N, void *P);
2264
1829
  ** [sqlite3_prepare()] or its variants. Authorization is not
2265
1830
  ** performed during statement evaluation in [sqlite3_step()].
2266
1831
  **
2267
- ** INVARIANTS:
2268
- **
2269
- ** {H12501} The [sqlite3_set_authorizer(D,...)] interface registers a
2270
- ** authorizer callback with database connection D.
2271
- **
2272
- ** {H12502} The authorizer callback is invoked as SQL statements are
2273
- ** being parseed and compiled.
2274
- **
2275
- ** {H12503} If the authorizer callback returns any value other than
2276
- ** [SQLITE_IGNORE], [SQLITE_OK], or [SQLITE_DENY], then
2277
- ** the application interface call that caused
2278
- ** the authorizer callback to run shall fail with an
2279
- ** [SQLITE_ERROR] error code and an appropriate error message.
2280
- **
2281
- ** {H12504} When the authorizer callback returns [SQLITE_OK], the operation
2282
- ** described is processed normally.
2283
- **
2284
- ** {H12505} When the authorizer callback returns [SQLITE_DENY], the
2285
- ** application interface call that caused the
2286
- ** authorizer callback to run shall fail
2287
- ** with an [SQLITE_ERROR] error code and an error message
2288
- ** explaining that access is denied.
2289
- **
2290
- ** {H12506} If the authorizer code (the 2nd parameter to the authorizer
2291
- ** callback) is [SQLITE_READ] and the authorizer callback returns
2292
- ** [SQLITE_IGNORE], then the prepared statement is constructed to
2293
- ** insert a NULL value in place of the table column that would have
2294
- ** been read if [SQLITE_OK] had been returned.
2295
- **
2296
- ** {H12507} If the authorizer code (the 2nd parameter to the authorizer
2297
- ** callback) is anything other than [SQLITE_READ], then
2298
- ** a return of [SQLITE_IGNORE] has the same effect as [SQLITE_DENY].
2299
- **
2300
- ** {H12510} The first parameter to the authorizer callback is a copy of
2301
- ** the third parameter to the [sqlite3_set_authorizer()] interface.
2302
- **
2303
- ** {H12511} The second parameter to the callback is an integer
2304
- ** [SQLITE_COPY | action code] that specifies the particular action
2305
- ** to be authorized.
2306
- **
2307
- ** {H12512} The third through sixth parameters to the callback are
2308
- ** zero-terminated strings that contain
2309
- ** additional details about the action to be authorized.
2310
- **
2311
- ** {H12520} Each call to [sqlite3_set_authorizer()] overrides
2312
- ** any previously installed authorizer.
2313
- **
2314
- ** {H12521} A NULL authorizer means that no authorization
2315
- ** callback is invoked.
2316
- **
2317
- ** {H12522} The default authorizer is NULL.
1832
+ ** Requirements:
1833
+ ** [H12501] [H12502] [H12503] [H12504] [H12505] [H12506] [H12507] [H12510]
1834
+ ** [H12511] [H12512] [H12520] [H12521] [H12522]
2318
1835
  */
2319
1836
  int sqlite3_set_authorizer(
2320
1837
  sqlite3*,
@@ -2353,27 +1870,8 @@ int sqlite3_set_authorizer(
2353
1870
  ** the access attempt or NULL if this access attempt is directly from
2354
1871
  ** top-level SQL code.
2355
1872
  **
2356
- ** INVARIANTS:
2357
- **
2358
- ** {H12551} The second parameter to an
2359
- ** [sqlite3_set_authorizer | authorizer callback] shall be an integer
2360
- ** [SQLITE_COPY | authorizer code] that specifies what action
2361
- ** is being authorized.
2362
- **
2363
- ** {H12552} The 3rd and 4th parameters to the
2364
- ** [sqlite3_set_authorizer | authorization callback]
2365
- ** shall be parameters or NULL depending on which
2366
- ** [SQLITE_COPY | authorizer code] is used as the second parameter.
2367
- **
2368
- ** {H12553} The 5th parameter to the
2369
- ** [sqlite3_set_authorizer | authorizer callback] shall be the name
2370
- ** of the database (example: "main", "temp", etc.) if applicable.
2371
- **
2372
- ** {H12554} The 6th parameter to the
2373
- ** [sqlite3_set_authorizer | authorizer callback] shall be the name
2374
- ** of the inner-most trigger or view that is responsible for
2375
- ** the access attempt or NULL if this access attempt is directly from
2376
- ** top-level SQL code.
1873
+ ** Requirements:
1874
+ ** [H12551] [H12552] [H12553] [H12554]
2377
1875
  */
2378
1876
  /******************************************* 3rd ************ 4th ***********/
2379
1877
  #define SQLITE_CREATE_INDEX 1 /* Index Name Table Name */
@@ -2429,41 +1927,9 @@ int sqlite3_set_authorizer(
2429
1927
  ** the original statement text and an estimate of wall-clock time
2430
1928
  ** of how long that statement took to run.
2431
1929
  **
2432
- ** INVARIANTS:
2433
- **
2434
- ** {H12281} The callback function registered by [sqlite3_trace()]
2435
- ** shall be invoked
2436
- ** whenever an SQL statement first begins to execute and
2437
- ** whenever a trigger subprogram first begins to run.
2438
- **
2439
- ** {H12282} Each call to [sqlite3_trace()] shall override the previously
2440
- ** registered trace callback.
2441
- **
2442
- ** {H12283} A NULL trace callback shall disable tracing.
2443
- **
2444
- ** {H12284} The first argument to the trace callback shall be a copy of
2445
- ** the pointer which was the 3rd argument to [sqlite3_trace()].
2446
- **
2447
- ** {H12285} The second argument to the trace callback is a
2448
- ** zero-terminated UTF-8 string containing the original text
2449
- ** of the SQL statement as it was passed into [sqlite3_prepare_v2()]
2450
- ** or the equivalent, or an SQL comment indicating the beginning
2451
- ** of a trigger subprogram.
2452
- **
2453
- ** {H12287} The callback function registered by [sqlite3_profile()] is invoked
2454
- ** as each SQL statement finishes.
2455
- **
2456
- ** {H12288} The first parameter to the profile callback is a copy of
2457
- ** the 3rd parameter to [sqlite3_profile()].
2458
- **
2459
- ** {H12289} The second parameter to the profile callback is a
2460
- ** zero-terminated UTF-8 string that contains the complete text of
2461
- ** the SQL statement as it was processed by [sqlite3_prepare_v2()]
2462
- ** or the equivalent.
2463
- **
2464
- ** {H12290} The third parameter to the profile callback is an estimate
2465
- ** of the number of nanoseconds of wall-clock time required to
2466
- ** run the SQL statement from start to finish.
1930
+ ** Requirements:
1931
+ ** [H12281] [H12282] [H12283] [H12284] [H12285] [H12287] [H12288] [H12289]
1932
+ ** [H12290]
2467
1933
  */
2468
1934
  SQLITE_EXPERIMENTAL void *sqlite3_trace(sqlite3*, void(*xTrace)(void*,const char*), void*);
2469
1935
  SQLITE_EXPERIMENTAL void *sqlite3_profile(sqlite3*,
@@ -2487,37 +1953,9 @@ SQLITE_EXPERIMENTAL void *sqlite3_profile(sqlite3*,
2487
1953
  ** Note that [sqlite3_prepare_v2()] and [sqlite3_step()] both modify their
2488
1954
  ** database connections for the meaning of "modify" in this paragraph.
2489
1955
  **
2490
- ** INVARIANTS:
2491
- **
2492
- ** {H12911} The callback function registered by sqlite3_progress_handler()
2493
- ** is invoked periodically during long running calls to
2494
- ** [sqlite3_step()].
2495
- **
2496
- ** {H12912} The progress callback is invoked once for every N virtual
2497
- ** machine opcodes, where N is the second argument to
2498
- ** the [sqlite3_progress_handler()] call that registered
2499
- ** the callback. If N is less than 1, sqlite3_progress_handler()
2500
- ** acts as if a NULL progress handler had been specified.
2501
- **
2502
- ** {H12913} The progress callback itself is identified by the third
2503
- ** argument to sqlite3_progress_handler().
1956
+ ** Requirements:
1957
+ ** [H12911] [H12912] [H12913] [H12914] [H12915] [H12916] [H12917] [H12918]
2504
1958
  **
2505
- ** {H12914} The fourth argument to sqlite3_progress_handler() is a
2506
- ** void pointer passed to the progress callback
2507
- ** function each time it is invoked.
2508
- **
2509
- ** {H12915} If a call to [sqlite3_step()] results in fewer than N opcodes
2510
- ** being executed, then the progress callback is never invoked.
2511
- **
2512
- ** {H12916} Every call to [sqlite3_progress_handler()]
2513
- ** overwrites any previously registered progress handler.
2514
- **
2515
- ** {H12917} If the progress handler callback is NULL then no progress
2516
- ** handler is invoked.
2517
- **
2518
- ** {H12918} If the progress callback returns a result other than 0, then
2519
- ** the behavior is a if [sqlite3_interrupt()] had been called.
2520
- ** <S30500>
2521
1959
  */
2522
1960
  void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
2523
1961
 
@@ -2601,72 +2039,9 @@ void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
2601
2039
  ** characters must be converted to UTF-8 prior to passing them into
2602
2040
  ** sqlite3_open() or sqlite3_open_v2().
2603
2041
  **
2604
- ** INVARIANTS:
2605
- **
2606
- ** {H12701} The [sqlite3_open()], [sqlite3_open16()], and
2607
- ** [sqlite3_open_v2()] interfaces create a new
2608
- ** [database connection] associated with
2609
- ** the database file given in their first parameter.
2610
- **
2611
- ** {H12702} The filename argument is interpreted as UTF-8
2612
- ** for [sqlite3_open()] and [sqlite3_open_v2()] and as UTF-16
2613
- ** in the native byte order for [sqlite3_open16()].
2614
- **
2615
- ** {H12703} A successful invocation of [sqlite3_open()], [sqlite3_open16()],
2616
- ** or [sqlite3_open_v2()] writes a pointer to a new
2617
- ** [database connection] into *ppDb.
2618
- **
2619
- ** {H12704} The [sqlite3_open()], [sqlite3_open16()], and
2620
- ** [sqlite3_open_v2()] interfaces return [SQLITE_OK] upon success,
2621
- ** or an appropriate [error code] on failure.
2622
- **
2623
- ** {H12706} The default text encoding for a new database created using
2624
- ** [sqlite3_open()] or [sqlite3_open_v2()] will be UTF-8.
2625
- **
2626
- ** {H12707} The default text encoding for a new database created using
2627
- ** [sqlite3_open16()] will be UTF-16.
2628
- **
2629
- ** {H12709} The [sqlite3_open(F,D)] interface is equivalent to
2630
- ** [sqlite3_open_v2(F,D,G,0)] where the G parameter is
2631
- ** [SQLITE_OPEN_READWRITE]|[SQLITE_OPEN_CREATE].
2632
- **
2633
- ** {H12711} If the G parameter to [sqlite3_open_v2(F,D,G,V)] contains the
2634
- ** bit value [SQLITE_OPEN_READONLY] then the database is opened
2635
- ** for reading only.
2636
- **
2637
- ** {H12712} If the G parameter to [sqlite3_open_v2(F,D,G,V)] contains the
2638
- ** bit value [SQLITE_OPEN_READWRITE] then the database is opened
2639
- ** reading and writing if possible, or for reading only if the
2640
- ** file is write protected by the operating system.
2641
- **
2642
- ** {H12713} If the G parameter to [sqlite3_open_v2(F,D,G,V)] omits the
2643
- ** bit value [SQLITE_OPEN_CREATE] and the database does not
2644
- ** previously exist, an error is returned.
2645
- **
2646
- ** {H12714} If the G parameter to [sqlite3_open_v2(F,D,G,V)] contains the
2647
- ** bit value [SQLITE_OPEN_CREATE] and the database does not
2648
- ** previously exist, then an attempt is made to create and
2649
- ** initialize the database.
2650
- **
2651
- ** {H12717} If the filename argument to [sqlite3_open()], [sqlite3_open16()],
2652
- ** or [sqlite3_open_v2()] is ":memory:", then an private,
2653
- ** ephemeral, in-memory database is created for the connection.
2654
- ** <todo>Is SQLITE_OPEN_CREATE|SQLITE_OPEN_READWRITE required
2655
- ** in sqlite3_open_v2()?</todo>
2656
- **
2657
- ** {H12719} If the filename is NULL or an empty string, then a private,
2658
- ** ephemeral on-disk database will be created.
2659
- ** <todo>Is SQLITE_OPEN_CREATE|SQLITE_OPEN_READWRITE required
2660
- ** in sqlite3_open_v2()?</todo>
2661
- **
2662
- ** {H12721} The [database connection] created by [sqlite3_open_v2(F,D,G,V)]
2663
- ** will use the [sqlite3_vfs] object identified by the V parameter,
2664
- ** or the default [sqlite3_vfs] object if V is a NULL pointer.
2665
- **
2666
- ** {H12723} Two [database connections] will share a common cache if both were
2667
- ** opened with the same VFS while [shared cache mode] was enabled and
2668
- ** if both filenames compare equal using memcmp() after having been
2669
- ** processed by the [sqlite3_vfs | xFullPathname] method of the VFS.
2042
+ ** Requirements:
2043
+ ** [H12701] [H12702] [H12703] [H12704] [H12706] [H12707] [H12709] [H12711]
2044
+ ** [H12712] [H12713] [H12714] [H12717] [H12719] [H12721] [H12723]
2670
2045
  */
2671
2046
  int sqlite3_open(
2672
2047
  const char *filename, /* Database filename (UTF-8) */
@@ -2716,36 +2091,8 @@ int sqlite3_open_v2(
2716
2091
  ** was invoked incorrectly by the application. In that case, the
2717
2092
  ** error code and message may or may not be set.
2718
2093
  **
2719
- ** INVARIANTS:
2720
- **
2721
- ** {H12801} The [sqlite3_errcode(D)] interface returns the numeric
2722
- ** [result code] or [extended result code] for the most recently
2723
- ** failed interface call associated with the [database connection] D.
2724
- **
2725
- ** {H12802} The [sqlite3_extended_errcode(D)] interface returns the numeric
2726
- ** [extended result code] for the most recently
2727
- ** failed interface call associated with the [database connection] D.
2728
- **
2729
- ** {H12803} The [sqlite3_errmsg(D)] and [sqlite3_errmsg16(D)]
2730
- ** interfaces return English-language text that describes
2731
- ** the error in the mostly recently failed interface call,
2732
- ** encoded as either UTF-8 or UTF-16 respectively.
2733
- **
2734
- ** {H12807} The strings returned by [sqlite3_errmsg()] and [sqlite3_errmsg16()]
2735
- ** are valid until the next SQLite interface call.
2736
- **
2737
- ** {H12808} Calls to API routines that do not return an error code
2738
- ** (example: [sqlite3_data_count()]) do not
2739
- ** change the error code or message returned by
2740
- ** [sqlite3_errcode()], [sqlite3_extended_errcode()],
2741
- ** [sqlite3_errmsg()], or [sqlite3_errmsg16()].
2742
- **
2743
- ** {H12809} Interfaces that are not associated with a specific
2744
- ** [database connection] (examples:
2745
- ** [sqlite3_mprintf()] or [sqlite3_enable_shared_cache()]
2746
- ** do not change the values returned by
2747
- ** [sqlite3_errcode()], [sqlite3_extended_errcode()],
2748
- ** [sqlite3_errmsg()], or [sqlite3_errmsg16()].
2094
+ ** Requirements:
2095
+ ** [H12801] [H12802] [H12803] [H12807] [H12808] [H12809]
2749
2096
  */
2750
2097
  int sqlite3_errcode(sqlite3 *db);
2751
2098
  int sqlite3_extended_errcode(sqlite3 *db);
@@ -2789,8 +2136,10 @@ typedef struct sqlite3_stmt sqlite3_stmt;
2789
2136
  ** new limit for that construct. The function returns the old limit.
2790
2137
  **
2791
2138
  ** If the new limit is a negative number, the limit is unchanged.
2792
- ** For the limit category of SQLITE_LIMIT_XYZ there is a hard upper
2793
- ** bound set by a compile-time C preprocessor macro named SQLITE_MAX_XYZ.
2139
+ ** For the limit category of SQLITE_LIMIT_XYZ there is a
2140
+ ** [limits | hard upper bound]
2141
+ ** set by a compile-time C preprocessor macro named
2142
+ ** [limits | SQLITE_MAX_XYZ].
2794
2143
  ** (The "_LIMIT_" in the name is changed to "_MAX_".)
2795
2144
  ** Attempts to increase a limit above its hard upper bound are
2796
2145
  ** silently truncated to the hard upper limit.
@@ -2798,7 +2147,7 @@ typedef struct sqlite3_stmt sqlite3_stmt;
2798
2147
  ** Run time limits are intended for use in applications that manage
2799
2148
  ** both their own internal database and also databases that are controlled
2800
2149
  ** by untrusted external sources. An example application might be a
2801
- ** webbrowser that has its own databases for storing history and
2150
+ ** web browser that has its own databases for storing history and
2802
2151
  ** separate databases controlled by JavaScript applications downloaded
2803
2152
  ** off the Internet. The internal databases can be given the
2804
2153
  ** large, default limits. Databases managed by external sources can
@@ -2810,19 +2159,8 @@ typedef struct sqlite3_stmt sqlite3_stmt;
2810
2159
  **
2811
2160
  ** New run-time limit categories may be added in future releases.
2812
2161
  **
2813
- ** INVARIANTS:
2814
- **
2815
- ** {H12762} A successful call to [sqlite3_limit(D,C,V)] where V is
2816
- ** positive changes the limit on the size of construct C in the
2817
- ** [database connection] D to the lesser of V and the hard upper
2818
- ** bound on the size of C that is set at compile-time.
2819
- **
2820
- ** {H12766} A successful call to [sqlite3_limit(D,C,V)] where V is negative
2821
- ** leaves the state of the [database connection] D unchanged.
2822
- **
2823
- ** {H12769} A successful call to [sqlite3_limit(D,C,V)] returns the
2824
- ** value of the limit on the size of construct C in the
2825
- ** [database connection] D as it was prior to the call.
2162
+ ** Requirements:
2163
+ ** [H12762] [H12766] [H12769]
2826
2164
  */
2827
2165
  int sqlite3_limit(sqlite3*, int id, int newVal);
2828
2166
 
@@ -2830,9 +2168,10 @@ int sqlite3_limit(sqlite3*, int id, int newVal);
2830
2168
  ** CAPI3REF: Run-Time Limit Categories {H12790} <H12760>
2831
2169
  ** KEYWORDS: {limit category} {limit categories}
2832
2170
  **
2833
- ** These constants define various aspects of a [database connection]
2834
- ** that can be limited in size by calls to [sqlite3_limit()].
2835
- ** The meanings of the various limits are as follows:
2171
+ ** These constants define various performance limits
2172
+ ** that can be lowered at run-time using [sqlite3_limit()].
2173
+ ** The synopsis of the meanings of the various limits is shown below.
2174
+ ** Additional information is available at [limits | Limits in SQLite].
2836
2175
  **
2837
2176
  ** <dl>
2838
2177
  ** <dt>SQLITE_LIMIT_LENGTH</dt>
@@ -2843,7 +2182,7 @@ int sqlite3_limit(sqlite3*, int id, int newVal);
2843
2182
  **
2844
2183
  ** <dt>SQLITE_LIMIT_COLUMN</dt>
2845
2184
  ** <dd>The maximum number of columns in a table definition or in the
2846
- ** result set of a SELECT or the maximum number of columns in an index
2185
+ ** result set of a [SELECT] or the maximum number of columns in an index
2847
2186
  ** or in an ORDER BY or GROUP BY clause.</dd>
2848
2187
  **
2849
2188
  ** <dt>SQLITE_LIMIT_EXPR_DEPTH</dt>
@@ -2860,11 +2199,11 @@ int sqlite3_limit(sqlite3*, int id, int newVal);
2860
2199
  ** <dd>The maximum number of arguments on a function.</dd>
2861
2200
  **
2862
2201
  ** <dt>SQLITE_LIMIT_ATTACHED</dt>
2863
- ** <dd>The maximum number of attached databases.</dd>
2202
+ ** <dd>The maximum number of [ATTACH | attached databases].</dd>
2864
2203
  **
2865
2204
  ** <dt>SQLITE_LIMIT_LIKE_PATTERN_LENGTH</dt>
2866
- ** <dd>The maximum length of the pattern argument to the LIKE or
2867
- ** GLOB operators.</dd>
2205
+ ** <dd>The maximum length of the pattern argument to the [LIKE] or
2206
+ ** [GLOB] operators.</dd>
2868
2207
  **
2869
2208
  ** <dt>SQLITE_LIMIT_VARIABLE_NUMBER</dt>
2870
2209
  ** <dd>The maximum number of variables in an SQL statement that can
@@ -2951,41 +2290,9 @@ int sqlite3_limit(sqlite3*, int id, int newVal);
2951
2290
  ** </li>
2952
2291
  ** </ol>
2953
2292
  **
2954
- ** INVARIANTS:
2955
- **
2956
- ** {H13011} The [sqlite3_prepare(db,zSql,...)] and
2957
- ** [sqlite3_prepare_v2(db,zSql,...)] interfaces interpret the
2958
- ** text in their zSql parameter as UTF-8.
2959
- **
2960
- ** {H13012} The [sqlite3_prepare16(db,zSql,...)] and
2961
- ** [sqlite3_prepare16_v2(db,zSql,...)] interfaces interpret the
2962
- ** text in their zSql parameter as UTF-16 in the native byte order.
2963
- **
2964
- ** {H13013} If the nByte argument to [sqlite3_prepare_v2(db,zSql,nByte,...)]
2965
- ** and its variants is less than zero, the SQL text is
2966
- ** read from zSql is read up to the first zero terminator.
2967
- **
2968
- ** {H13014} If the nByte argument to [sqlite3_prepare_v2(db,zSql,nByte,...)]
2969
- ** and its variants is non-negative, then at most nBytes bytes of
2970
- ** SQL text is read from zSql.
2971
- **
2972
- ** {H13015} In [sqlite3_prepare_v2(db,zSql,N,P,pzTail)] and its variants
2973
- ** if the zSql input text contains more than one SQL statement
2974
- ** and pzTail is not NULL, then *pzTail is made to point to the
2975
- ** first byte past the end of the first SQL statement in zSql.
2976
- ** <todo>What does *pzTail point to if there is one statement?</todo>
2977
- **
2978
- ** {H13016} A successful call to [sqlite3_prepare_v2(db,zSql,N,ppStmt,...)]
2979
- ** or one of its variants writes into *ppStmt a pointer to a new
2980
- ** [prepared statement] or a pointer to NULL if zSql contains
2981
- ** nothing other than whitespace or comments.
2982
- **
2983
- ** {H13019} The [sqlite3_prepare_v2()] interface and its variants return
2984
- ** [SQLITE_OK] or an appropriate [error code] upon failure.
2293
+ ** Requirements:
2294
+ ** [H13011] [H13012] [H13013] [H13014] [H13015] [H13016] [H13019] [H13021]
2985
2295
  **
2986
- ** {H13021} Before [sqlite3_prepare(db,zSql,nByte,ppStmt,pzTail)] or its
2987
- ** variants returns an error (any value other than [SQLITE_OK]),
2988
- ** they first set *ppStmt to NULL.
2989
2296
  */
2990
2297
  int sqlite3_prepare(
2991
2298
  sqlite3 *db, /* Database handle */
@@ -3023,20 +2330,8 @@ int sqlite3_prepare16_v2(
3023
2330
  ** SQL text used to create a [prepared statement] if that statement was
3024
2331
  ** compiled using either [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()].
3025
2332
  **
3026
- ** INVARIANTS:
3027
- **
3028
- ** {H13101} If the [prepared statement] passed as the argument to
3029
- ** [sqlite3_sql()] was compiled using either [sqlite3_prepare_v2()] or
3030
- ** [sqlite3_prepare16_v2()], then [sqlite3_sql()] returns
3031
- ** a pointer to a zero-terminated string containing a UTF-8 rendering
3032
- ** of the original SQL statement.
3033
- **
3034
- ** {H13102} If the [prepared statement] passed as the argument to
3035
- ** [sqlite3_sql()] was compiled using either [sqlite3_prepare()] or
3036
- ** [sqlite3_prepare16()], then [sqlite3_sql()] returns a NULL pointer.
3037
- **
3038
- ** {H13103} The string returned by [sqlite3_sql(S)] is valid until the
3039
- ** [prepared statement] S is deleted using [sqlite3_finalize(S)].
2333
+ ** Requirements:
2334
+ ** [H13101] [H13102] [H13103]
3040
2335
  */
3041
2336
  const char *sqlite3_sql(sqlite3_stmt *pStmt);
3042
2337
 
@@ -3099,7 +2394,7 @@ typedef struct sqlite3_context sqlite3_context;
3099
2394
  ** KEYWORDS: {SQL parameter} {SQL parameters} {parameter binding}
3100
2395
  **
3101
2396
  ** In the SQL strings input to [sqlite3_prepare_v2()] and its variants,
3102
- ** literals may be replaced by a parameter in one of these forms:
2397
+ ** literals may be replaced by a [parameter] in one of these forms:
3103
2398
  **
3104
2399
  ** <ul>
3105
2400
  ** <li> ?
@@ -3172,79 +2467,10 @@ typedef struct sqlite3_context sqlite3_context;
3172
2467
  ** See also: [sqlite3_bind_parameter_count()],
3173
2468
  ** [sqlite3_bind_parameter_name()], and [sqlite3_bind_parameter_index()].
3174
2469
  **
3175
- ** INVARIANTS:
3176
- **
3177
- ** {H13506} The [SQL statement compiler] recognizes tokens of the forms
3178
- ** "?", "?NNN", "$VVV", ":VVV", and "@VVV" as SQL parameters,
3179
- ** where NNN is any sequence of one or more digits
3180
- ** and where VVV is any sequence of one or more alphanumeric
3181
- ** characters or "::" optionally followed by a string containing
3182
- ** no spaces and contained within parentheses.
3183
- **
3184
- ** {H13509} The initial value of an SQL parameter is NULL.
3185
- **
3186
- ** {H13512} The index of an "?" SQL parameter is one larger than the
3187
- ** largest index of SQL parameter to the left, or 1 if
3188
- ** the "?" is the leftmost SQL parameter.
3189
- **
3190
- ** {H13515} The index of an "?NNN" SQL parameter is the integer NNN.
3191
- **
3192
- ** {H13518} The index of an ":VVV", "$VVV", or "@VVV" SQL parameter is
3193
- ** the same as the index of leftmost occurrences of the same
3194
- ** parameter, or one more than the largest index over all
3195
- ** parameters to the left if this is the first occurrence
3196
- ** of this parameter, or 1 if this is the leftmost parameter.
3197
- **
3198
- ** {H13521} The [SQL statement compiler] fails with an [SQLITE_RANGE]
3199
- ** error if the index of an SQL parameter is less than 1
3200
- ** or greater than the compile-time SQLITE_MAX_VARIABLE_NUMBER
3201
- ** parameter.
3202
- **
3203
- ** {H13524} Calls to [sqlite3_bind_text | sqlite3_bind(S,N,V,...)]
3204
- ** associate the value V with all SQL parameters having an
3205
- ** index of N in the [prepared statement] S.
3206
- **
3207
- ** {H13527} Calls to [sqlite3_bind_text | sqlite3_bind(S,N,...)]
3208
- ** override prior calls with the same values of S and N.
2470
+ ** Requirements:
2471
+ ** [H13506] [H13509] [H13512] [H13515] [H13518] [H13521] [H13524] [H13527]
2472
+ ** [H13530] [H13533] [H13536] [H13539] [H13542] [H13545] [H13548] [H13551]
3209
2473
  **
3210
- ** {H13530} Bindings established by [sqlite3_bind_text | sqlite3_bind(S,...)]
3211
- ** persist across calls to [sqlite3_reset(S)].
3212
- **
3213
- ** {H13533} In calls to [sqlite3_bind_blob(S,N,V,L,D)],
3214
- ** [sqlite3_bind_text(S,N,V,L,D)], or
3215
- ** [sqlite3_bind_text16(S,N,V,L,D)] SQLite binds the first L
3216
- ** bytes of the BLOB or string pointed to by V, when L
3217
- ** is non-negative.
3218
- **
3219
- ** {H13536} In calls to [sqlite3_bind_text(S,N,V,L,D)] or
3220
- ** [sqlite3_bind_text16(S,N,V,L,D)] SQLite binds characters
3221
- ** from V through the first zero character when L is negative.
3222
- **
3223
- ** {H13539} In calls to [sqlite3_bind_blob(S,N,V,L,D)],
3224
- ** [sqlite3_bind_text(S,N,V,L,D)], or
3225
- ** [sqlite3_bind_text16(S,N,V,L,D)] when D is the special
3226
- ** constant [SQLITE_STATIC], SQLite assumes that the value V
3227
- ** is held in static unmanaged space that will not change
3228
- ** during the lifetime of the binding.
3229
- **
3230
- ** {H13542} In calls to [sqlite3_bind_blob(S,N,V,L,D)],
3231
- ** [sqlite3_bind_text(S,N,V,L,D)], or
3232
- ** [sqlite3_bind_text16(S,N,V,L,D)] when D is the special
3233
- ** constant [SQLITE_TRANSIENT], the routine makes a
3234
- ** private copy of the value V before it returns.
3235
- **
3236
- ** {H13545} In calls to [sqlite3_bind_blob(S,N,V,L,D)],
3237
- ** [sqlite3_bind_text(S,N,V,L,D)], or
3238
- ** [sqlite3_bind_text16(S,N,V,L,D)] when D is a pointer to
3239
- ** a function, SQLite invokes that function to destroy the
3240
- ** value V after it has finished using the value V.
3241
- **
3242
- ** {H13548} In calls to [sqlite3_bind_zeroblob(S,N,V,L)] the value bound
3243
- ** is a BLOB of L bytes, or a zero-length BLOB if L is negative.
3244
- **
3245
- ** {H13551} In calls to [sqlite3_bind_value(S,N,V)] the V argument may
3246
- ** be either a [protected sqlite3_value] object or an
3247
- ** [unprotected sqlite3_value] object.
3248
2474
  */
3249
2475
  int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*));
3250
2476
  int sqlite3_bind_double(sqlite3_stmt*, int, double);
@@ -3274,11 +2500,8 @@ int sqlite3_bind_zeroblob(sqlite3_stmt*, int, int n);
3274
2500
  ** [sqlite3_bind_parameter_name()], and
3275
2501
  ** [sqlite3_bind_parameter_index()].
3276
2502
  **
3277
- ** INVARIANTS:
3278
- **
3279
- ** {H13601} The [sqlite3_bind_parameter_count(S)] interface returns
3280
- ** the largest index of all SQL parameters in the
3281
- ** [prepared statement] S, or 0 if S contains no SQL parameters.
2503
+ ** Requirements:
2504
+ ** [H13601]
3282
2505
  */
3283
2506
  int sqlite3_bind_parameter_count(sqlite3_stmt*);
3284
2507
 
@@ -3307,13 +2530,8 @@ int sqlite3_bind_parameter_count(sqlite3_stmt*);
3307
2530
  ** [sqlite3_bind_parameter_count()], and
3308
2531
  ** [sqlite3_bind_parameter_index()].
3309
2532
  **
3310
- ** INVARIANTS:
3311
- **
3312
- ** {H13621} The [sqlite3_bind_parameter_name(S,N)] interface returns
3313
- ** a UTF-8 rendering of the name of the SQL parameter in
3314
- ** the [prepared statement] S having index N, or
3315
- ** NULL if there is no SQL parameter with index N or if the
3316
- ** parameter with index N is an anonymous parameter "?".
2533
+ ** Requirements:
2534
+ ** [H13621]
3317
2535
  */
3318
2536
  const char *sqlite3_bind_parameter_name(sqlite3_stmt*, int);
3319
2537
 
@@ -3331,12 +2549,8 @@ const char *sqlite3_bind_parameter_name(sqlite3_stmt*, int);
3331
2549
  ** [sqlite3_bind_parameter_count()], and
3332
2550
  ** [sqlite3_bind_parameter_index()].
3333
2551
  **
3334
- ** INVARIANTS:
3335
- **
3336
- ** {H13641} The [sqlite3_bind_parameter_index(S,N)] interface returns
3337
- ** the index of SQL parameter in the [prepared statement]
3338
- ** S whose name matches the UTF-8 string N, or 0 if there is
3339
- ** no match.
2552
+ ** Requirements:
2553
+ ** [H13641]
3340
2554
  */
3341
2555
  int sqlite3_bind_parameter_index(sqlite3_stmt*, const char *zName);
3342
2556
 
@@ -3347,10 +2561,8 @@ int sqlite3_bind_parameter_index(sqlite3_stmt*, const char *zName);
3347
2561
  ** the [sqlite3_bind_blob | bindings] on a [prepared statement].
3348
2562
  ** Use this routine to reset all host parameters to NULL.
3349
2563
  **
3350
- ** INVARIANTS:
3351
- **
3352
- ** {H13661} The [sqlite3_clear_bindings(S)] interface resets all SQL
3353
- ** parameter bindings in the [prepared statement] S back to NULL.
2564
+ ** Requirements:
2565
+ ** [H13661]
3354
2566
  */
3355
2567
  int sqlite3_clear_bindings(sqlite3_stmt*);
3356
2568
 
@@ -3361,11 +2573,8 @@ int sqlite3_clear_bindings(sqlite3_stmt*);
3361
2573
  ** [prepared statement]. This routine returns 0 if pStmt is an SQL
3362
2574
  ** statement that does not return data (for example an [UPDATE]).
3363
2575
  **
3364
- ** INVARIANTS:
3365
- **
3366
- ** {H13711} The [sqlite3_column_count(S)] interface returns the number of
3367
- ** columns in the result set generated by the [prepared statement] S,
3368
- ** or 0 if S does not generate a result set.
2576
+ ** Requirements:
2577
+ ** [H13711]
3369
2578
  */
3370
2579
  int sqlite3_column_count(sqlite3_stmt *pStmt);
3371
2580
 
@@ -3393,35 +2602,8 @@ int sqlite3_column_count(sqlite3_stmt *pStmt);
3393
2602
  ** then the name of the column is unspecified and may change from
3394
2603
  ** one release of SQLite to the next.
3395
2604
  **
3396
- ** INVARIANTS:
3397
- **
3398
- ** {H13721} A successful invocation of the [sqlite3_column_name(S,N)]
3399
- ** interface returns the name of the Nth column (where 0 is
3400
- ** the leftmost column) for the result set of the
3401
- ** [prepared statement] S as a zero-terminated UTF-8 string.
3402
- **
3403
- ** {H13723} A successful invocation of the [sqlite3_column_name16(S,N)]
3404
- ** interface returns the name of the Nth column (where 0 is
3405
- ** the leftmost column) for the result set of the
3406
- ** [prepared statement] S as a zero-terminated UTF-16 string
3407
- ** in the native byte order.
3408
- **
3409
- ** {H13724} The [sqlite3_column_name()] and [sqlite3_column_name16()]
3410
- ** interfaces return a NULL pointer if they are unable to
3411
- ** allocate memory to hold their normal return strings.
3412
- **
3413
- ** {H13725} If the N parameter to [sqlite3_column_name(S,N)] or
3414
- ** [sqlite3_column_name16(S,N)] is out of range, then the
3415
- ** interfaces return a NULL pointer.
3416
- **
3417
- ** {H13726} The strings returned by [sqlite3_column_name(S,N)] and
3418
- ** [sqlite3_column_name16(S,N)] are valid until the next
3419
- ** call to either routine with the same S and N parameters
3420
- ** or until [sqlite3_finalize(S)] is called.
3421
- **
3422
- ** {H13727} When a result column of a [SELECT] statement contains
3423
- ** an AS clause, the name of that column is the identifier
3424
- ** to the right of the AS keyword.
2605
+ ** Requirements:
2606
+ ** [H13721] [H13723] [H13724] [H13725] [H13726] [H13727]
3425
2607
  */
3426
2608
  const char *sqlite3_column_name(sqlite3_stmt*, int N);
3427
2609
  const void *sqlite3_column_name16(sqlite3_stmt*, int N);
@@ -3463,57 +2645,13 @@ const void *sqlite3_column_name16(sqlite3_stmt*, int N);
3463
2645
  ** prepared statement and column at the same time then the results are
3464
2646
  ** undefined.
3465
2647
  **
3466
- ** INVARIANTS:
3467
- **
3468
- ** {H13741} The [sqlite3_column_database_name(S,N)] interface returns either
3469
- ** the UTF-8 zero-terminated name of the database from which the
3470
- ** Nth result column of the [prepared statement] S is extracted,
3471
- ** or NULL if the Nth column of S is a general expression
3472
- ** or if unable to allocate memory to store the name.
3473
- **
3474
- ** {H13742} The [sqlite3_column_database_name16(S,N)] interface returns either
3475
- ** the UTF-16 native byte order zero-terminated name of the database
3476
- ** from which the Nth result column of the [prepared statement] S is
3477
- ** extracted, or NULL if the Nth column of S is a general expression
3478
- ** or if unable to allocate memory to store the name.
3479
- **
3480
- ** {H13743} The [sqlite3_column_table_name(S,N)] interface returns either
3481
- ** the UTF-8 zero-terminated name of the table from which the
3482
- ** Nth result column of the [prepared statement] S is extracted,
3483
- ** or NULL if the Nth column of S is a general expression
3484
- ** or if unable to allocate memory to store the name.
3485
- **
3486
- ** {H13744} The [sqlite3_column_table_name16(S,N)] interface returns either
3487
- ** the UTF-16 native byte order zero-terminated name of the table
3488
- ** from which the Nth result column of the [prepared statement] S is
3489
- ** extracted, or NULL if the Nth column of S is a general expression
3490
- ** or if unable to allocate memory to store the name.
3491
- **
3492
- ** {H13745} The [sqlite3_column_origin_name(S,N)] interface returns either
3493
- ** the UTF-8 zero-terminated name of the table column from which the
3494
- ** Nth result column of the [prepared statement] S is extracted,
3495
- ** or NULL if the Nth column of S is a general expression
3496
- ** or if unable to allocate memory to store the name.
3497
- **
3498
- ** {H13746} The [sqlite3_column_origin_name16(S,N)] interface returns either
3499
- ** the UTF-16 native byte order zero-terminated name of the table
3500
- ** column from which the Nth result column of the
3501
- ** [prepared statement] S is extracted, or NULL if the Nth column
3502
- ** of S is a general expression or if unable to allocate memory
3503
- ** to store the name.
3504
- **
3505
- ** {H13748} The return values from
3506
- ** [sqlite3_column_database_name | column metadata interfaces]
3507
- ** are valid for the lifetime of the [prepared statement]
3508
- ** or until the encoding is changed by another metadata
3509
- ** interface call for the same prepared statement and column.
3510
- **
3511
- ** ASSUMPTIONS:
3512
- **
3513
- ** {A13751} If two or more threads call one or more
3514
- ** [sqlite3_column_database_name | column metadata interfaces]
3515
- ** for the same [prepared statement] and result column
3516
- ** at the same time then the results are undefined.
2648
+ ** Requirements:
2649
+ ** [H13741] [H13742] [H13743] [H13744] [H13745] [H13746] [H13748]
2650
+ **
2651
+ ** If two or more threads call one or more
2652
+ ** [sqlite3_column_database_name | column metadata interfaces]
2653
+ ** for the same [prepared statement] and result column
2654
+ ** at the same time then the results are undefined.
3517
2655
  */
3518
2656
  const char *sqlite3_column_database_name(sqlite3_stmt*,int);
3519
2657
  const void *sqlite3_column_database_name16(sqlite3_stmt*,int);
@@ -3551,26 +2689,8 @@ const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
3551
2689
  ** is associated with individual values, not with the containers
3552
2690
  ** used to hold those values.
3553
2691
  **
3554
- ** INVARIANTS:
3555
- **
3556
- ** {H13761} A successful call to [sqlite3_column_decltype(S,N)] returns a
3557
- ** zero-terminated UTF-8 string containing the declared datatype
3558
- ** of the table column that appears as the Nth column (numbered
3559
- ** from 0) of the result set to the [prepared statement] S.
3560
- **
3561
- ** {H13762} A successful call to [sqlite3_column_decltype16(S,N)]
3562
- ** returns a zero-terminated UTF-16 native byte order string
3563
- ** containing the declared datatype of the table column that appears
3564
- ** as the Nth column (numbered from 0) of the result set to the
3565
- ** [prepared statement] S.
3566
- **
3567
- ** {H13763} If N is less than 0 or N is greater than or equal to
3568
- ** the number of columns in the [prepared statement] S,
3569
- ** or if the Nth column of S is an expression or subquery rather
3570
- ** than a table column, or if a memory allocation failure
3571
- ** occurs during encoding conversions, then
3572
- ** calls to [sqlite3_column_decltype(S,N)] or
3573
- ** [sqlite3_column_decltype16(S,N)] return NULL.
2692
+ ** Requirements:
2693
+ ** [H13761] [H13762] [H13763]
3574
2694
  */
3575
2695
  const char *sqlite3_column_decltype(sqlite3_stmt*,int);
3576
2696
  const void *sqlite3_column_decltype16(sqlite3_stmt*,int);
@@ -3640,31 +2760,8 @@ const void *sqlite3_column_decltype16(sqlite3_stmt*,int);
3640
2760
  ** then the more specific [error codes] are returned directly
3641
2761
  ** by sqlite3_step(). The use of the "v2" interface is recommended.
3642
2762
  **
3643
- ** INVARIANTS:
3644
- **
3645
- ** {H13202} If the [prepared statement] S is ready to be run, then
3646
- ** [sqlite3_step(S)] advances that prepared statement until
3647
- ** completion or until it is ready to return another row of the
3648
- ** result set, or until an [sqlite3_interrupt | interrupt]
3649
- ** or a run-time error occurs.
3650
- **
3651
- ** {H15304} When a call to [sqlite3_step(S)] causes the [prepared statement]
3652
- ** S to run to completion, the function returns [SQLITE_DONE].
3653
- **
3654
- ** {H15306} When a call to [sqlite3_step(S)] stops because it is ready to
3655
- ** return another row of the result set, it returns [SQLITE_ROW].
3656
- **
3657
- ** {H15308} If a call to [sqlite3_step(S)] encounters an
3658
- ** [sqlite3_interrupt | interrupt] or a run-time error,
3659
- ** it returns an appropriate error code that is not one of
3660
- ** [SQLITE_OK], [SQLITE_ROW], or [SQLITE_DONE].
3661
- **
3662
- ** {H15310} If an [sqlite3_interrupt | interrupt] or a run-time error
3663
- ** occurs during a call to [sqlite3_step(S)]
3664
- ** for a [prepared statement] S created using
3665
- ** legacy interfaces [sqlite3_prepare()] or
3666
- ** [sqlite3_prepare16()], then the function returns either
3667
- ** [SQLITE_ERROR], [SQLITE_BUSY], or [SQLITE_MISUSE].
2763
+ ** Requirements:
2764
+ ** [H13202] [H15304] [H15306] [H15308] [H15310]
3668
2765
  */
3669
2766
  int sqlite3_step(sqlite3_stmt*);
3670
2767
 
@@ -3673,17 +2770,8 @@ int sqlite3_step(sqlite3_stmt*);
3673
2770
  **
3674
2771
  ** Returns the number of values in the current row of the result set.
3675
2772
  **
3676
- ** INVARIANTS:
3677
- **
3678
- ** {H13771} After a call to [sqlite3_step(S)] that returns [SQLITE_ROW],
3679
- ** the [sqlite3_data_count(S)] routine will return the same value
3680
- ** as the [sqlite3_column_count(S)] function.
3681
- **
3682
- ** {H13772} After [sqlite3_step(S)] has returned any value other than
3683
- ** [SQLITE_ROW] or before [sqlite3_step(S)] has been called on the
3684
- ** [prepared statement] for the first time since it was
3685
- ** [sqlite3_prepare | prepared] or [sqlite3_reset | reset],
3686
- ** the [sqlite3_data_count(S)] routine returns zero.
2773
+ ** Requirements:
2774
+ ** [H13771] [H13772]
3687
2775
  */
3688
2776
  int sqlite3_data_count(sqlite3_stmt *pStmt);
3689
2777
 
@@ -3871,60 +2959,9 @@ int sqlite3_data_count(sqlite3_stmt *pStmt);
3871
2959
  ** pointer. Subsequent calls to [sqlite3_errcode()] will return
3872
2960
  ** [SQLITE_NOMEM].
3873
2961
  **
3874
- ** INVARIANTS:
3875
- **
3876
- ** {H13803} The [sqlite3_column_blob(S,N)] interface converts the
3877
- ** Nth column in the current row of the result set for
3878
- ** the [prepared statement] S into a BLOB and then returns a
3879
- ** pointer to the converted value.
3880
- **
3881
- ** {H13806} The [sqlite3_column_bytes(S,N)] interface returns the
3882
- ** number of bytes in the BLOB or string (exclusive of the
3883
- ** zero terminator on the string) that was returned by the
3884
- ** most recent call to [sqlite3_column_blob(S,N)] or
3885
- ** [sqlite3_column_text(S,N)].
3886
- **
3887
- ** {H13809} The [sqlite3_column_bytes16(S,N)] interface returns the
3888
- ** number of bytes in the string (exclusive of the
3889
- ** zero terminator on the string) that was returned by the
3890
- ** most recent call to [sqlite3_column_text16(S,N)].
3891
- **
3892
- ** {H13812} The [sqlite3_column_double(S,N)] interface converts the
3893
- ** Nth column in the current row of the result set for the
3894
- ** [prepared statement] S into a floating point value and
3895
- ** returns a copy of that value.
3896
- **
3897
- ** {H13815} The [sqlite3_column_int(S,N)] interface converts the
3898
- ** Nth column in the current row of the result set for the
3899
- ** [prepared statement] S into a 64-bit signed integer and
3900
- ** returns the lower 32 bits of that integer.
3901
- **
3902
- ** {H13818} The [sqlite3_column_int64(S,N)] interface converts the
3903
- ** Nth column in the current row of the result set for the
3904
- ** [prepared statement] S into a 64-bit signed integer and
3905
- ** returns a copy of that integer.
3906
- **
3907
- ** {H13821} The [sqlite3_column_text(S,N)] interface converts the
3908
- ** Nth column in the current row of the result set for
3909
- ** the [prepared statement] S into a zero-terminated UTF-8
3910
- ** string and returns a pointer to that string.
3911
- **
3912
- ** {H13824} The [sqlite3_column_text16(S,N)] interface converts the
3913
- ** Nth column in the current row of the result set for the
3914
- ** [prepared statement] S into a zero-terminated 2-byte
3915
- ** aligned UTF-16 native byte order string and returns
3916
- ** a pointer to that string.
3917
- **
3918
- ** {H13827} The [sqlite3_column_type(S,N)] interface returns
3919
- ** one of [SQLITE_NULL], [SQLITE_INTEGER], [SQLITE_FLOAT],
3920
- ** [SQLITE_TEXT], or [SQLITE_BLOB] as appropriate for
3921
- ** the Nth column in the current row of the result set for
3922
- ** the [prepared statement] S.
3923
- **
3924
- ** {H13830} The [sqlite3_column_value(S,N)] interface returns a
3925
- ** pointer to an [unprotected sqlite3_value] object for the
3926
- ** Nth column in the current row of the result set for
3927
- ** the [prepared statement] S.
2962
+ ** Requirements:
2963
+ ** [H13803] [H13806] [H13809] [H13812] [H13815] [H13818] [H13821] [H13824]
2964
+ ** [H13827] [H13830]
3928
2965
  */
3929
2966
  const void *sqlite3_column_blob(sqlite3_stmt*, int iCol);
3930
2967
  int sqlite3_column_bytes(sqlite3_stmt*, int iCol);
@@ -3953,15 +2990,8 @@ sqlite3_value *sqlite3_column_value(sqlite3_stmt*, int iCol);
3953
2990
  ** depending on the circumstances, and the
3954
2991
  ** [error code] returned will be [SQLITE_ABORT].
3955
2992
  **
3956
- ** INVARIANTS:
3957
- **
3958
- ** {H11302} The [sqlite3_finalize(S)] interface destroys the
3959
- ** [prepared statement] S and releases all
3960
- ** memory and file resources held by that object.
3961
- **
3962
- ** {H11304} If the most recent call to [sqlite3_step(S)] for the
3963
- ** [prepared statement] S returned an error,
3964
- ** then [sqlite3_finalize(S)] returns that same error.
2993
+ ** Requirements:
2994
+ ** [H11302] [H11304]
3965
2995
  */
3966
2996
  int sqlite3_finalize(sqlite3_stmt *pStmt);
3967
2997
 
@@ -4068,70 +3098,9 @@ int sqlite3_reset(sqlite3_stmt *pStmt);
4068
3098
  ** close the database connection nor finalize or reset the prepared
4069
3099
  ** statement in which the function is running.
4070
3100
  **
4071
- ** INVARIANTS:
4072
- **
4073
- ** {H16103} The [sqlite3_create_function16(D,X,...)] interface shall behave
4074
- ** as [sqlite3_create_function(D,X,...)] in every way except that it
4075
- ** interprets the X argument as zero-terminated UTF-16
4076
- ** native byte order instead of as zero-terminated UTF-8.
4077
- **
4078
- ** {H16106} A successful invocation of the
4079
- ** [sqlite3_create_function(D,X,N,E,...)] interface shall register
4080
- ** or replaces callback functions in the [database connection] D
4081
- ** used to implement the SQL function named X with N parameters
4082
- ** and having a preferred text encoding of E.
4083
- **
4084
- ** {H16109} A successful call to [sqlite3_create_function(D,X,N,E,P,F,S,L)]
4085
- ** shall replace the P, F, S, and L values from any prior calls with
4086
- ** the same D, X, N, and E values.
4087
- **
4088
- ** {H16112} The [sqlite3_create_function(D,X,...)] interface shall fail
4089
- ** if the SQL function name X is
4090
- ** longer than 255 bytes exclusive of the zero terminator.
4091
- **
4092
- ** {H16118} The [sqlite3_create_function(D,X,N,E,P,F,S,L)] interface
4093
- ** shall fail unless either F is NULL and S and L are non-NULL or
4094
- *** F is non-NULL and S and L are NULL.
4095
- **
4096
- ** {H16121} The [sqlite3_create_function(D,...)] interface shall fails with an
4097
- ** error code of [SQLITE_BUSY] if there exist [prepared statements]
4098
- ** associated with the [database connection] D.
4099
- **
4100
- ** {H16124} The [sqlite3_create_function(D,X,N,...)] interface shall fail with
4101
- ** an error code of [SQLITE_ERROR] if parameter N is less
4102
- ** than -1 or greater than 127.
4103
- **
4104
- ** {H16127} When N is non-negative, the [sqlite3_create_function(D,X,N,...)]
4105
- ** interface shall register callbacks to be invoked for the
4106
- ** SQL function
4107
- ** named X when the number of arguments to the SQL function is
4108
- ** exactly N.
4109
- **
4110
- ** {H16130} When N is -1, the [sqlite3_create_function(D,X,N,...)]
4111
- ** interface shall register callbacks to be invoked for the SQL
4112
- ** function named X with any number of arguments.
4113
- **
4114
- ** {H16133} When calls to [sqlite3_create_function(D,X,N,...)]
4115
- ** specify multiple implementations of the same function X
4116
- ** and when one implementation has N>=0 and the other has N=(-1)
4117
- ** the implementation with a non-zero N shall be preferred.
4118
- **
4119
- ** {H16136} When calls to [sqlite3_create_function(D,X,N,E,...)]
4120
- ** specify multiple implementations of the same function X with
4121
- ** the same number of arguments N but with different
4122
- ** encodings E, then the implementation where E matches the
4123
- ** database encoding shall preferred.
4124
- **
4125
- ** {H16139} For an aggregate SQL function created using
4126
- ** [sqlite3_create_function(D,X,N,E,P,0,S,L)] the finalizer
4127
- ** function L shall always be invoked exactly once if the
4128
- ** step function S is called one or more times.
4129
- **
4130
- ** {H16142} When SQLite invokes either the xFunc or xStep function of
4131
- ** an application-defined SQL function or aggregate created
4132
- ** by [sqlite3_create_function()] or [sqlite3_create_function16()],
4133
- ** then the array of [sqlite3_value] objects passed as the
4134
- ** third parameter shall be [protected sqlite3_value] objects.
3101
+ ** Requirements:
3102
+ ** [H16103] [H16106] [H16109] [H16112] [H16118] [H16121] [H16124] [H16127]
3103
+ ** [H16130] [H16133] [H16136] [H16139] [H16142]
4135
3104
  */
4136
3105
  int sqlite3_create_function(
4137
3106
  sqlite3 *db,
@@ -4231,67 +3200,9 @@ SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int64,int),void
4231
3200
  ** These routines must be called from the same thread as
4232
3201
  ** the SQL function that supplied the [sqlite3_value*] parameters.
4233
3202
  **
4234
- ** INVARIANTS:
4235
- **
4236
- ** {H15103} The [sqlite3_value_blob(V)] interface converts the
4237
- ** [protected sqlite3_value] object V into a BLOB and then
4238
- ** returns a pointer to the converted value.
4239
- **
4240
- ** {H15106} The [sqlite3_value_bytes(V)] interface returns the
4241
- ** number of bytes in the BLOB or string (exclusive of the
4242
- ** zero terminator on the string) that was returned by the
4243
- ** most recent call to [sqlite3_value_blob(V)] or
4244
- ** [sqlite3_value_text(V)].
4245
- **
4246
- ** {H15109} The [sqlite3_value_bytes16(V)] interface returns the
4247
- ** number of bytes in the string (exclusive of the
4248
- ** zero terminator on the string) that was returned by the
4249
- ** most recent call to [sqlite3_value_text16(V)],
4250
- ** [sqlite3_value_text16be(V)], or [sqlite3_value_text16le(V)].
4251
- **
4252
- ** {H15112} The [sqlite3_value_double(V)] interface converts the
4253
- ** [protected sqlite3_value] object V into a floating point value and
4254
- ** returns a copy of that value.
4255
- **
4256
- ** {H15115} The [sqlite3_value_int(V)] interface converts the
4257
- ** [protected sqlite3_value] object V into a 64-bit signed integer and
4258
- ** returns the lower 32 bits of that integer.
4259
- **
4260
- ** {H15118} The [sqlite3_value_int64(V)] interface converts the
4261
- ** [protected sqlite3_value] object V into a 64-bit signed integer and
4262
- ** returns a copy of that integer.
4263
- **
4264
- ** {H15121} The [sqlite3_value_text(V)] interface converts the
4265
- ** [protected sqlite3_value] object V into a zero-terminated UTF-8
4266
- ** string and returns a pointer to that string.
4267
- **
4268
- ** {H15124} The [sqlite3_value_text16(V)] interface converts the
4269
- ** [protected sqlite3_value] object V into a zero-terminated 2-byte
4270
- ** aligned UTF-16 native byte order
4271
- ** string and returns a pointer to that string.
4272
- **
4273
- ** {H15127} The [sqlite3_value_text16be(V)] interface converts the
4274
- ** [protected sqlite3_value] object V into a zero-terminated 2-byte
4275
- ** aligned UTF-16 big-endian
4276
- ** string and returns a pointer to that string.
4277
- **
4278
- ** {H15130} The [sqlite3_value_text16le(V)] interface converts the
4279
- ** [protected sqlite3_value] object V into a zero-terminated 2-byte
4280
- ** aligned UTF-16 little-endian
4281
- ** string and returns a pointer to that string.
4282
- **
4283
- ** {H15133} The [sqlite3_value_type(V)] interface returns
4284
- ** one of [SQLITE_NULL], [SQLITE_INTEGER], [SQLITE_FLOAT],
4285
- ** [SQLITE_TEXT], or [SQLITE_BLOB] as appropriate for
4286
- ** the [sqlite3_value] object V.
4287
- **
4288
- ** {H15136} The [sqlite3_value_numeric_type(V)] interface converts
4289
- ** the [protected sqlite3_value] object V into either an integer or
4290
- ** a floating point value if it can do so without loss of
4291
- ** information, and returns one of [SQLITE_NULL],
4292
- ** [SQLITE_INTEGER], [SQLITE_FLOAT], [SQLITE_TEXT], or
4293
- ** [SQLITE_BLOB] as appropriate for the
4294
- ** [protected sqlite3_value] object V after the conversion attempt.
3203
+ ** Requirements:
3204
+ ** [H15103] [H15106] [H15109] [H15112] [H15115] [H15118] [H15121] [H15124]
3205
+ ** [H15127] [H15130] [H15133] [H15136]
4295
3206
  */
4296
3207
  const void *sqlite3_value_blob(sqlite3_value*);
4297
3208
  int sqlite3_value_bytes(sqlite3_value*);
@@ -4329,25 +3240,8 @@ int sqlite3_value_numeric_type(sqlite3_value*);
4329
3240
  ** This routine must be called from the same thread in which
4330
3241
  ** the aggregate SQL function is running.
4331
3242
  **
4332
- ** INVARIANTS:
4333
- **
4334
- ** {H16211} The first invocation of [sqlite3_aggregate_context(C,N)] for
4335
- ** a particular instance of an aggregate function (for a particular
4336
- ** context C) causes SQLite to allocate N bytes of memory,
4337
- ** zero that memory, and return a pointer to the allocated memory.
4338
- **
4339
- ** {H16213} If a memory allocation error occurs during
4340
- ** [sqlite3_aggregate_context(C,N)] then the function returns 0.
4341
- **
4342
- ** {H16215} Second and subsequent invocations of
4343
- ** [sqlite3_aggregate_context(C,N)] for the same context pointer C
4344
- ** ignore the N parameter and return a pointer to the same
4345
- ** block of memory returned by the first invocation.
4346
- **
4347
- ** {H16217} The memory allocated by [sqlite3_aggregate_context(C,N)] is
4348
- ** automatically freed on the next call to [sqlite3_reset()]
4349
- ** or [sqlite3_finalize()] for the [prepared statement] containing
4350
- ** the aggregate function associated with context C.
3243
+ ** Requirements:
3244
+ ** [H16211] [H16213] [H16215] [H16217]
4351
3245
  */
4352
3246
  void *sqlite3_aggregate_context(sqlite3_context*, int nBytes);
4353
3247
 
@@ -4363,12 +3257,8 @@ void *sqlite3_aggregate_context(sqlite3_context*, int nBytes);
4363
3257
  ** This routine must be called from the same thread in which
4364
3258
  ** the application-defined function is running.
4365
3259
  **
4366
- ** INVARIANTS:
4367
- **
4368
- ** {H16243} The [sqlite3_user_data(C)] interface returns a copy of the
4369
- ** P pointer from the [sqlite3_create_function(D,X,N,E,P,F,S,L)]
4370
- ** or [sqlite3_create_function16(D,X,N,E,P,F,S,L)] call that
4371
- ** registered the SQL function associated with [sqlite3_context] C.
3260
+ ** Requirements:
3261
+ ** [H16243]
4372
3262
  */
4373
3263
  void *sqlite3_user_data(sqlite3_context*);
4374
3264
 
@@ -4381,12 +3271,8 @@ void *sqlite3_user_data(sqlite3_context*);
4381
3271
  ** and [sqlite3_create_function16()] routines that originally
4382
3272
  ** registered the application defined function.
4383
3273
  **
4384
- ** INVARIANTS:
4385
- **
4386
- ** {H16253} The [sqlite3_context_db_handle(C)] interface returns a copy of the
4387
- ** D pointer from the [sqlite3_create_function(D,X,N,E,P,F,S,L)]
4388
- ** or [sqlite3_create_function16(D,X,N,E,P,F,S,L)] call that
4389
- ** registered the SQL function associated with [sqlite3_context] C.
3274
+ ** Requirements:
3275
+ ** [H16253]
4390
3276
  */
4391
3277
  sqlite3 *sqlite3_context_db_handle(sqlite3_context*);
4392
3278
 
@@ -4432,31 +3318,8 @@ sqlite3 *sqlite3_context_db_handle(sqlite3_context*);
4432
3318
  ** These routines must be called from the same thread in which
4433
3319
  ** the SQL function is running.
4434
3320
  **
4435
- ** INVARIANTS:
4436
- **
4437
- ** {H16272} The [sqlite3_get_auxdata(C,N)] interface returns a pointer
4438
- ** to metadata associated with the Nth parameter of the SQL function
4439
- ** whose context is C, or NULL if there is no metadata associated
4440
- ** with that parameter.
4441
- **
4442
- ** {H16274} The [sqlite3_set_auxdata(C,N,P,D)] interface assigns a metadata
4443
- ** pointer P to the Nth parameter of the SQL function with context C.
4444
- **
4445
- ** {H16276} SQLite will invoke the destructor D with a single argument
4446
- ** which is the metadata pointer P following a call to
4447
- ** [sqlite3_set_auxdata(C,N,P,D)] when SQLite ceases to hold
4448
- ** the metadata.
4449
- **
4450
- ** {H16277} SQLite ceases to hold metadata for an SQL function parameter
4451
- ** when the value of that parameter changes.
4452
- **
4453
- ** {H16278} When [sqlite3_set_auxdata(C,N,P,D)] is invoked, the destructor
4454
- ** is called for any prior metadata associated with the same function
4455
- ** context C and parameter N.
4456
- **
4457
- ** {H16279} SQLite will call destructors for any metadata it is holding
4458
- ** in a particular [prepared statement] S when either
4459
- ** [sqlite3_reset(S)] or [sqlite3_finalize(S)] is called.
3321
+ ** Requirements:
3322
+ ** [H16272] [H16274] [H16276] [H16277] [H16278] [H16279]
4460
3323
  */
4461
3324
  void *sqlite3_get_auxdata(sqlite3_context*, int N);
4462
3325
  void sqlite3_set_auxdata(sqlite3_context*, int N, void*, void (*)(void*));
@@ -4584,101 +3447,10 @@ typedef void (*sqlite3_destructor_type)(void*);
4584
3447
  ** than the one containing the application-defined function that received
4585
3448
  ** the [sqlite3_context] pointer, the results are undefined.
4586
3449
  **
4587
- ** INVARIANTS:
4588
- **
4589
- ** {H16403} The default return value from any SQL function is NULL.
4590
- **
4591
- ** {H16406} The [sqlite3_result_blob(C,V,N,D)] interface changes the
4592
- ** return value of function C to be a BLOB that is N bytes
4593
- ** in length and with content pointed to by V.
4594
- **
4595
- ** {H16409} The [sqlite3_result_double(C,V)] interface changes the
4596
- ** return value of function C to be the floating point value V.
4597
- **
4598
- ** {H16412} The [sqlite3_result_error(C,V,N)] interface changes the return
4599
- ** value of function C to be an exception with error code
4600
- ** [SQLITE_ERROR] and a UTF-8 error message copied from V up to the
4601
- ** first zero byte or until N bytes are read if N is positive.
4602
- **
4603
- ** {H16415} The [sqlite3_result_error16(C,V,N)] interface changes the return
4604
- ** value of function C to be an exception with error code
4605
- ** [SQLITE_ERROR] and a UTF-16 native byte order error message
4606
- ** copied from V up to the first zero terminator or until N bytes
4607
- ** are read if N is positive.
4608
- **
4609
- ** {H16418} The [sqlite3_result_error_toobig(C)] interface changes the return
4610
- ** value of the function C to be an exception with error code
4611
- ** [SQLITE_TOOBIG] and an appropriate error message.
4612
- **
4613
- ** {H16421} The [sqlite3_result_error_nomem(C)] interface changes the return
4614
- ** value of the function C to be an exception with error code
4615
- ** [SQLITE_NOMEM] and an appropriate error message.
4616
- **
4617
- ** {H16424} The [sqlite3_result_error_code(C,E)] interface changes the return
4618
- ** value of the function C to be an exception with error code E.
4619
- ** The error message text is unchanged.
4620
- **
4621
- ** {H16427} The [sqlite3_result_int(C,V)] interface changes the
4622
- ** return value of function C to be the 32-bit integer value V.
4623
- **
4624
- ** {H16430} The [sqlite3_result_int64(C,V)] interface changes the
4625
- ** return value of function C to be the 64-bit integer value V.
4626
- **
4627
- ** {H16433} The [sqlite3_result_null(C)] interface changes the
4628
- ** return value of function C to be NULL.
4629
- **
4630
- ** {H16436} The [sqlite3_result_text(C,V,N,D)] interface changes the
4631
- ** return value of function C to be the UTF-8 string
4632
- ** V up to the first zero if N is negative
4633
- ** or the first N bytes of V if N is non-negative.
4634
- **
4635
- ** {H16439} The [sqlite3_result_text16(C,V,N,D)] interface changes the
4636
- ** return value of function C to be the UTF-16 native byte order
4637
- ** string V up to the first zero if N is negative
4638
- ** or the first N bytes of V if N is non-negative.
4639
- **
4640
- ** {H16442} The [sqlite3_result_text16be(C,V,N,D)] interface changes the
4641
- ** return value of function C to be the UTF-16 big-endian
4642
- ** string V up to the first zero if N is negative
4643
- ** or the first N bytes or V if N is non-negative.
4644
- **
4645
- ** {H16445} The [sqlite3_result_text16le(C,V,N,D)] interface changes the
4646
- ** return value of function C to be the UTF-16 little-endian
4647
- ** string V up to the first zero if N is negative
4648
- ** or the first N bytes of V if N is non-negative.
4649
- **
4650
- ** {H16448} The [sqlite3_result_value(C,V)] interface changes the
4651
- ** return value of function C to be the [unprotected sqlite3_value]
4652
- ** object V.
4653
- **
4654
- ** {H16451} The [sqlite3_result_zeroblob(C,N)] interface changes the
4655
- ** return value of function C to be an N-byte BLOB of all zeros.
4656
- **
4657
- ** {H16454} The [sqlite3_result_error()] and [sqlite3_result_error16()]
4658
- ** interfaces make a copy of their error message strings before
4659
- ** returning.
4660
- **
4661
- ** {H16457} If the D destructor parameter to [sqlite3_result_blob(C,V,N,D)],
4662
- ** [sqlite3_result_text(C,V,N,D)], [sqlite3_result_text16(C,V,N,D)],
4663
- ** [sqlite3_result_text16be(C,V,N,D)], or
4664
- ** [sqlite3_result_text16le(C,V,N,D)] is the constant [SQLITE_STATIC]
4665
- ** then no destructor is ever called on the pointer V and SQLite
4666
- ** assumes that V is immutable.
4667
- **
4668
- ** {H16460} If the D destructor parameter to [sqlite3_result_blob(C,V,N,D)],
4669
- ** [sqlite3_result_text(C,V,N,D)], [sqlite3_result_text16(C,V,N,D)],
4670
- ** [sqlite3_result_text16be(C,V,N,D)], or
4671
- ** [sqlite3_result_text16le(C,V,N,D)] is the constant
4672
- ** [SQLITE_TRANSIENT] then the interfaces makes a copy of the
4673
- ** content of V and retains the copy.
4674
- **
4675
- ** {H16463} If the D destructor parameter to [sqlite3_result_blob(C,V,N,D)],
4676
- ** [sqlite3_result_text(C,V,N,D)], [sqlite3_result_text16(C,V,N,D)],
4677
- ** [sqlite3_result_text16be(C,V,N,D)], or
4678
- ** [sqlite3_result_text16le(C,V,N,D)] is some value other than
4679
- ** the constants [SQLITE_STATIC] and [SQLITE_TRANSIENT] then
4680
- ** SQLite will invoke the destructor D with V as its only argument
4681
- ** when it has finished with the V value.
3450
+ ** Requirements:
3451
+ ** [H16403] [H16406] [H16409] [H16412] [H16415] [H16418] [H16421] [H16424]
3452
+ ** [H16427] [H16430] [H16433] [H16436] [H16439] [H16442] [H16445] [H16448]
3453
+ ** [H16451] [H16454] [H16457] [H16460] [H16463]
4682
3454
  */
4683
3455
  void sqlite3_result_blob(sqlite3_context*, const void*, int, void(*)(void*));
4684
3456
  void sqlite3_result_double(sqlite3_context*, double);
@@ -4739,54 +3511,9 @@ void sqlite3_result_zeroblob(sqlite3_context*, int n);
4739
3511
  ** collation creation functions or when the [database connection] is closed
4740
3512
  ** using [sqlite3_close()].
4741
3513
  **
4742
- ** INVARIANTS:
4743
- **
4744
- ** {H16603} A successful call to the
4745
- ** [sqlite3_create_collation_v2(B,X,E,P,F,D)] interface
4746
- ** registers function F as the comparison function used to
4747
- ** implement collation X on the [database connection] B for
4748
- ** databases having encoding E.
4749
- **
4750
- ** {H16604} SQLite understands the X parameter to
4751
- ** [sqlite3_create_collation_v2(B,X,E,P,F,D)] as a zero-terminated
4752
- ** UTF-8 string in which case is ignored for ASCII characters and
4753
- ** is significant for non-ASCII characters.
4754
- **
4755
- ** {H16606} Successive calls to [sqlite3_create_collation_v2(B,X,E,P,F,D)]
4756
- ** with the same values for B, X, and E, override prior values
4757
- ** of P, F, and D.
4758
- **
4759
- ** {H16609} If the destructor D in [sqlite3_create_collation_v2(B,X,E,P,F,D)]
4760
- ** is not NULL then it is called with argument P when the
4761
- ** collating function is dropped by SQLite.
4762
- **
4763
- ** {H16612} A collating function is dropped when it is overloaded.
4764
- **
4765
- ** {H16615} A collating function is dropped when the database connection
4766
- ** is closed using [sqlite3_close()].
4767
- **
4768
- ** {H16618} The pointer P in [sqlite3_create_collation_v2(B,X,E,P,F,D)]
4769
- ** is passed through as the first parameter to the comparison
4770
- ** function F for all subsequent invocations of F.
4771
- **
4772
- ** {H16621} A call to [sqlite3_create_collation(B,X,E,P,F)] is exactly
4773
- ** the same as a call to [sqlite3_create_collation_v2()] with
4774
- ** the same parameters and a NULL destructor.
4775
- **
4776
- ** {H16624} Following a [sqlite3_create_collation_v2(B,X,E,P,F,D)],
4777
- ** SQLite uses the comparison function F for all text comparison
4778
- ** operations on the [database connection] B on text values that
4779
- ** use the collating sequence named X.
4780
- **
4781
- ** {H16627} The [sqlite3_create_collation16(B,X,E,P,F)] works the same
4782
- ** as [sqlite3_create_collation(B,X,E,P,F)] except that the
4783
- ** collation name X is understood as UTF-16 in native byte order
4784
- ** instead of UTF-8.
4785
- **
4786
- ** {H16630} When multiple comparison functions are available for the same
4787
- ** collating sequence, SQLite chooses the one whose text encoding
4788
- ** requires the least amount of conversion from the default
4789
- ** text encoding of the database.
3514
+ ** Requirements:
3515
+ ** [H16603] [H16604] [H16606] [H16609] [H16612] [H16615] [H16618] [H16621]
3516
+ ** [H16624] [H16627] [H16630]
4790
3517
  */
4791
3518
  int sqlite3_create_collation(
4792
3519
  sqlite3*,
@@ -4837,24 +3564,8 @@ int sqlite3_create_collation16(
4837
3564
  ** [sqlite3_create_collation()], [sqlite3_create_collation16()], or
4838
3565
  ** [sqlite3_create_collation_v2()].
4839
3566
  **
4840
- ** INVARIANTS:
4841
- **
4842
- ** {H16702} A successful call to [sqlite3_collation_needed(D,P,F)]
4843
- ** or [sqlite3_collation_needed16(D,P,F)] causes
4844
- ** the [database connection] D to invoke callback F with first
4845
- ** parameter P whenever it needs a comparison function for a
4846
- ** collating sequence that it does not know about.
4847
- **
4848
- ** {H16704} Each successful call to [sqlite3_collation_needed()] or
4849
- ** [sqlite3_collation_needed16()] overrides the callback registered
4850
- ** on the same [database connection] by prior calls to either
4851
- ** interface.
4852
- **
4853
- ** {H16706} The name of the requested collating function passed in the
4854
- ** 4th parameter to the callback is in UTF-8 if the callback
4855
- ** was registered using [sqlite3_collation_needed()] and
4856
- ** is in UTF-16 native byte order if the callback was
4857
- ** registered using [sqlite3_collation_needed16()].
3567
+ ** Requirements:
3568
+ ** [H16702] [H16704] [H16706]
4858
3569
  */
4859
3570
  int sqlite3_collation_needed(
4860
3571
  sqlite3*,
@@ -4906,16 +3617,7 @@ int sqlite3_rekey(
4906
3617
  ** SQLite implements this interface by calling the xSleep()
4907
3618
  ** method of the default [sqlite3_vfs] object.
4908
3619
  **
4909
- ** INVARIANTS:
4910
- **
4911
- ** {H10533} The [sqlite3_sleep(M)] interface invokes the xSleep
4912
- ** method of the default [sqlite3_vfs|VFS] in order to
4913
- ** suspend execution of the current thread for at least
4914
- ** M milliseconds.
4915
- **
4916
- ** {H10536} The [sqlite3_sleep(M)] interface returns the number of
4917
- ** milliseconds of sleep actually requested of the operating
4918
- ** system, which might be larger than the parameter M.
3620
+ ** Requirements: [H10533] [H10536]
4919
3621
  */
4920
3622
  int sqlite3_sleep(int);
4921
3623
 
@@ -4952,24 +3654,11 @@ SQLITE_EXTERN char *sqlite3_temp_directory;
4952
3654
  ** find out whether SQLite automatically rolled back the transaction after
4953
3655
  ** an error is to use this function.
4954
3656
  **
4955
- ** INVARIANTS:
4956
- **
4957
- ** {H12931} The [sqlite3_get_autocommit(D)] interface returns non-zero or
4958
- ** zero if the [database connection] D is or is not in autocommit
4959
- ** mode, respectively.
3657
+ ** If another thread changes the autocommit status of the database
3658
+ ** connection while this routine is running, then the return value
3659
+ ** is undefined.
4960
3660
  **
4961
- ** {H12932} Autocommit mode is on by default.
4962
- **
4963
- ** {H12933} Autocommit mode is disabled by a successful [BEGIN] statement.
4964
- **
4965
- ** {H12934} Autocommit mode is enabled by a successful [COMMIT] or [ROLLBACK]
4966
- ** statement.
4967
- **
4968
- ** ASSUMPTIONS:
4969
- **
4970
- ** {A12936} If another thread changes the autocommit status of the database
4971
- ** connection while this routine is running, then the return value
4972
- ** is undefined.
3661
+ ** Requirements: [H12931] [H12932] [H12933] [H12934]
4973
3662
  */
4974
3663
  int sqlite3_get_autocommit(sqlite3*);
4975
3664
 
@@ -4977,16 +3666,12 @@ int sqlite3_get_autocommit(sqlite3*);
4977
3666
  ** CAPI3REF: Find The Database Handle Of A Prepared Statement {H13120} <S60600>
4978
3667
  **
4979
3668
  ** The sqlite3_db_handle interface returns the [database connection] handle
4980
- ** to which a [prepared statement] belongs. The database handle returned by
4981
- ** sqlite3_db_handle is the same database handle that was the first argument
3669
+ ** to which a [prepared statement] belongs. The [database connection]
3670
+ ** returned by sqlite3_db_handle is the same [database connection] that was the first argument
4982
3671
  ** to the [sqlite3_prepare_v2()] call (or its variants) that was used to
4983
3672
  ** create the statement in the first place.
4984
3673
  **
4985
- ** INVARIANTS:
4986
- **
4987
- ** {H13123} The [sqlite3_db_handle(S)] interface returns a pointer
4988
- ** to the [database connection] associated with the
4989
- ** [prepared statement] S.
3674
+ ** Requirements: [H13123]
4990
3675
  */
4991
3676
  sqlite3 *sqlite3_db_handle(sqlite3_stmt*);
4992
3677
 
@@ -4999,31 +3684,11 @@ sqlite3 *sqlite3_db_handle(sqlite3_stmt*);
4999
3684
  ** associated with the database connection pDb. If no prepared statement
5000
3685
  ** satisfies the conditions of this routine, it returns NULL.
5001
3686
  **
5002
- ** INVARIANTS:
5003
- **
5004
- ** {H13143} If D is a [database connection] that holds one or more
5005
- ** unfinalized [prepared statements] and S is a NULL pointer,
5006
- ** then [sqlite3_next_stmt(D, S)] routine shall return a pointer
5007
- ** to one of the prepared statements associated with D.
5008
- **
5009
- ** {H13146} If D is a [database connection] that holds no unfinalized
5010
- ** [prepared statements] and S is a NULL pointer, then
5011
- ** [sqlite3_next_stmt(D, S)] routine shall return a NULL pointer.
5012
- **
5013
- ** {H13149} If S is a [prepared statement] in the [database connection] D
5014
- ** and S is not the last prepared statement in D, then
5015
- ** [sqlite3_next_stmt(D, S)] routine shall return a pointer
5016
- ** to the next prepared statement in D after S.
5017
- **
5018
- ** {H13152} If S is the last [prepared statement] in the
5019
- ** [database connection] D then the [sqlite3_next_stmt(D, S)]
5020
- ** routine shall return a NULL pointer.
5021
- **
5022
- ** ASSUMPTIONS:
3687
+ ** The [database connection] pointer D in a call to
3688
+ ** [sqlite3_next_stmt(D,S)] must refer to an open database
3689
+ ** connection and in particular must not be a NULL pointer.
5023
3690
  **
5024
- ** {A13154} The [database connection] pointer D in a call to
5025
- ** [sqlite3_next_stmt(D,S)] must refer to an open database
5026
- ** connection and in particular must not be a NULL pointer.
3691
+ ** Requirements: [H13143] [H13146] [H13149] [H13152]
5027
3692
  */
5028
3693
  sqlite3_stmt *sqlite3_next_stmt(sqlite3 *pDb, sqlite3_stmt *pStmt);
5029
3694
 
@@ -5064,41 +3729,9 @@ sqlite3_stmt *sqlite3_next_stmt(sqlite3 *pDb, sqlite3_stmt *pStmt);
5064
3729
  ** rolled back because a commit callback returned non-zero.
5065
3730
  ** <todo> Check on this </todo>
5066
3731
  **
5067
- ** INVARIANTS:
5068
- **
5069
- ** {H12951} The [sqlite3_commit_hook(D,F,P)] interface registers the
5070
- ** callback function F to be invoked with argument P whenever
5071
- ** a transaction commits on the [database connection] D.
5072
- **
5073
- ** {H12952} The [sqlite3_commit_hook(D,F,P)] interface returns the P argument
5074
- ** from the previous call with the same [database connection] D,
5075
- ** or NULL on the first call for a particular database connection D.
5076
- **
5077
- ** {H12953} Each call to [sqlite3_commit_hook()] overwrites the callback
5078
- ** registered by prior calls.
5079
- **
5080
- ** {H12954} If the F argument to [sqlite3_commit_hook(D,F,P)] is NULL
5081
- ** then the commit hook callback is canceled and no callback
5082
- ** is invoked when a transaction commits.
5083
- **
5084
- ** {H12955} If the commit callback returns non-zero then the commit is
5085
- ** converted into a rollback.
5086
- **
5087
- ** {H12961} The [sqlite3_rollback_hook(D,F,P)] interface registers the
5088
- ** callback function F to be invoked with argument P whenever
5089
- ** a transaction rolls back on the [database connection] D.
5090
- **
5091
- ** {H12962} The [sqlite3_rollback_hook(D,F,P)] interface returns the P
5092
- ** argument from the previous call with the same
5093
- ** [database connection] D, or NULL on the first call
5094
- ** for a particular database connection D.
5095
- **
5096
- ** {H12963} Each call to [sqlite3_rollback_hook()] overwrites the callback
5097
- ** registered by prior calls.
5098
- **
5099
- ** {H12964} If the F argument to [sqlite3_rollback_hook(D,F,P)] is NULL
5100
- ** then the rollback hook callback is canceled and no callback
5101
- ** is invoked when a transaction rolls back.
3732
+ ** Requirements:
3733
+ ** [H12951] [H12952] [H12953] [H12954] [H12955]
3734
+ ** [H12961] [H12962] [H12963] [H12964]
5102
3735
  */
5103
3736
  void *sqlite3_commit_hook(sqlite3*, int(*)(void*), void*);
5104
3737
  void *sqlite3_rollback_hook(sqlite3*, void(*)(void *), void*);
@@ -5137,36 +3770,8 @@ void *sqlite3_rollback_hook(sqlite3*, void(*)(void *), void*);
5137
3770
  ** If another function was previously registered, its pArg value
5138
3771
  ** is returned. Otherwise NULL is returned.
5139
3772
  **
5140
- ** INVARIANTS:
5141
- **
5142
- ** {H12971} The [sqlite3_update_hook(D,F,P)] interface causes the callback
5143
- ** function F to be invoked with first parameter P whenever
5144
- ** a table row is modified, inserted, or deleted on
5145
- ** the [database connection] D.
5146
- **
5147
- ** {H12973} The [sqlite3_update_hook(D,F,P)] interface returns the value
5148
- ** of P for the previous call on the same [database connection] D,
5149
- ** or NULL for the first call.
5150
- **
5151
- ** {H12975} If the update hook callback F in [sqlite3_update_hook(D,F,P)]
5152
- ** is NULL then the no update callbacks are made.
5153
- **
5154
- ** {H12977} Each call to [sqlite3_update_hook(D,F,P)] overrides prior calls
5155
- ** to the same interface on the same [database connection] D.
5156
- **
5157
- ** {H12979} The update hook callback is not invoked when internal system
5158
- ** tables such as sqlite_master and sqlite_sequence are modified.
5159
- **
5160
- ** {H12981} The second parameter to the update callback
5161
- ** is one of [SQLITE_INSERT], [SQLITE_DELETE] or [SQLITE_UPDATE],
5162
- ** depending on the operation that caused the callback to be invoked.
5163
- **
5164
- ** {H12983} The third and fourth arguments to the callback contain pointers
5165
- ** to zero-terminated UTF-8 strings which are the names of the
5166
- ** database and table that is being updated.
5167
-
5168
- ** {H12985} The final callback parameter is the [rowid] of the row after
5169
- ** the change occurs.
3773
+ ** Requirements:
3774
+ ** [H12971] [H12973] [H12975] [H12977] [H12979] [H12981] [H12983] [H12986]
5170
3775
  */
5171
3776
  void *sqlite3_update_hook(
5172
3777
  sqlite3*,
@@ -5183,7 +3788,7 @@ void *sqlite3_update_hook(
5183
3788
  ** to the same database. Sharing is enabled if the argument is true
5184
3789
  ** and disabled if the argument is false.
5185
3790
  **
5186
- ** Cache sharing is enabled and disabled for an entire process. {END}
3791
+ ** Cache sharing is enabled and disabled for an entire process.
5187
3792
  ** This is a change as of SQLite version 3.5.0. In prior versions of SQLite,
5188
3793
  ** sharing was enabled or disabled for each thread separately.
5189
3794
  **
@@ -5203,19 +3808,9 @@ void *sqlite3_update_hook(
5203
3808
  ** future releases of SQLite. Applications that care about shared
5204
3809
  ** cache setting should set it explicitly.
5205
3810
  **
5206
- ** INVARIANTS:
5207
- **
5208
- ** {H10331} A successful invocation of [sqlite3_enable_shared_cache(B)]
5209
- ** will enable or disable shared cache mode for any subsequently
5210
- ** created [database connection] in the same process.
5211
- **
5212
- ** {H10336} When shared cache is enabled, the [sqlite3_create_module()]
5213
- ** interface will always return an error.
5214
- **
5215
- ** {H10337} The [sqlite3_enable_shared_cache(B)] interface returns
5216
- ** [SQLITE_OK] if shared cache was enabled or disabled successfully.
3811
+ ** See Also: [SQLite Shared-Cache Mode]
5217
3812
  **
5218
- ** {H10339} Shared cache is disabled by default.
3813
+ ** Requirements: [H10331] [H10336] [H10337] [H10339]
5219
3814
  */
5220
3815
  int sqlite3_enable_shared_cache(int);
5221
3816
 
@@ -5229,15 +3824,7 @@ int sqlite3_enable_shared_cache(int);
5229
3824
  ** sqlite3_release_memory() returns the number of bytes actually freed,
5230
3825
  ** which might be more or less than the amount requested.
5231
3826
  **
5232
- ** INVARIANTS:
5233
- **
5234
- ** {H17341} The [sqlite3_release_memory(N)] interface attempts to
5235
- ** free N bytes of heap memory by deallocating non-essential
5236
- ** memory allocations held by the database library.
5237
- **
5238
- ** {H16342} The [sqlite3_release_memory(N)] returns the number
5239
- ** of bytes actually freed, which might be more or less
5240
- ** than the amount requested.
3827
+ ** Requirements: [H17341] [H17342]
5241
3828
  */
5242
3829
  int sqlite3_release_memory(int);
5243
3830
 
@@ -5271,33 +3858,8 @@ int sqlite3_release_memory(int);
5271
3858
  ** version 3.5.0 there is no mechanism for limiting the heap usage for
5272
3859
  ** individual threads.
5273
3860
  **
5274
- ** INVARIANTS:
5275
- **
5276
- ** {H16351} The [sqlite3_soft_heap_limit(N)] interface places a soft limit
5277
- ** of N bytes on the amount of heap memory that may be allocated
5278
- ** using [sqlite3_malloc()] or [sqlite3_realloc()] at any point
5279
- ** in time.
5280
- **
5281
- ** {H16352} If a call to [sqlite3_malloc()] or [sqlite3_realloc()] would
5282
- ** cause the total amount of allocated memory to exceed the
5283
- ** soft heap limit, then [sqlite3_release_memory()] is invoked
5284
- ** in an attempt to reduce the memory usage prior to proceeding
5285
- ** with the memory allocation attempt.
5286
- **
5287
- ** {H16353} Calls to [sqlite3_malloc()] or [sqlite3_realloc()] that trigger
5288
- ** attempts to reduce memory usage through the soft heap limit
5289
- ** mechanism continue even if the attempt to reduce memory
5290
- ** usage is unsuccessful.
5291
- **
5292
- ** {H16354} A negative or zero value for N in a call to
5293
- ** [sqlite3_soft_heap_limit(N)] means that there is no soft
5294
- ** heap limit and [sqlite3_release_memory()] will only be
5295
- ** called when memory is completely exhausted.
5296
- **
5297
- ** {H16355} The default value for the soft heap limit is zero.
5298
- **
5299
- ** {H16358} Each call to [sqlite3_soft_heap_limit(N)] overrides the
5300
- ** values set by all prior calls.
3861
+ ** Requirements:
3862
+ ** [H16351] [H16352] [H16353] [H16354] [H16355] [H16358]
5301
3863
  */
5302
3864
  void sqlite3_soft_heap_limit(int);
5303
3865
 
@@ -5797,34 +4359,8 @@ typedef struct sqlite3_blob sqlite3_blob;
5797
4359
  ** rollback by the expiration of the BLOB. Such changes will eventually
5798
4360
  ** commit if the transaction continues to completion.
5799
4361
  **
5800
- ** INVARIANTS:
5801
- **
5802
- ** {H17813} A successful invocation of the [sqlite3_blob_open(D,B,T,C,R,F,P)]
5803
- ** interface shall open an [sqlite3_blob] object P on the BLOB
5804
- ** in column C of the table T in the database B on
5805
- ** the [database connection] D.
5806
- **
5807
- ** {H17814} A successful invocation of [sqlite3_blob_open(D,...)] shall start
5808
- ** a new transaction on the [database connection] D if that
5809
- ** connection is not already in a transaction.
5810
- **
5811
- ** {H17816} The [sqlite3_blob_open(D,B,T,C,R,F,P)] interface shall open
5812
- ** the BLOB for read and write access if and only if the F
5813
- ** parameter is non-zero.
5814
- **
5815
- ** {H17819} The [sqlite3_blob_open()] interface shall return [SQLITE_OK] on
5816
- ** success and an appropriate [error code] on failure.
5817
- **
5818
- ** {H17821} If an error occurs during evaluation of [sqlite3_blob_open(D,...)]
5819
- ** then subsequent calls to [sqlite3_errcode(D)],
5820
- ** [sqlite3_extended_errcode()],
5821
- ** [sqlite3_errmsg(D)], and [sqlite3_errmsg16(D)] shall return
5822
- ** information appropriate for that error.
5823
- **
5824
- ** {H17824} If any column in the row that a [sqlite3_blob] has open is
5825
- ** changed by a separate [UPDATE] or [DELETE] statement or by
5826
- ** an [ON CONFLICT] side effect, then the [sqlite3_blob] shall
5827
- ** be marked as invalid.
4362
+ ** Requirements:
4363
+ ** [H17813] [H17814] [H17816] [H17819] [H17821] [H17824]
5828
4364
  */
5829
4365
  int sqlite3_blob_open(
5830
4366
  sqlite3*,
@@ -5855,20 +4391,8 @@ int sqlite3_blob_open(
5855
4391
  ** The BLOB is closed unconditionally. Even if this routine returns
5856
4392
  ** an error code, the BLOB is still closed.
5857
4393
  **
5858
- ** INVARIANTS:
5859
- **
5860
- ** {H17833} The [sqlite3_blob_close(P)] interface closes an [sqlite3_blob]
5861
- ** object P previously opened using [sqlite3_blob_open()].
5862
- **
5863
- ** {H17836} Closing an [sqlite3_blob] object using
5864
- ** [sqlite3_blob_close()] shall cause the current transaction to
5865
- ** commit if there are no other open [sqlite3_blob] objects
5866
- ** or [prepared statements] on the same [database connection] and
5867
- ** the database connection is in [autocommit mode].
5868
- **
5869
- ** {H17839} The [sqlite3_blob_close(P)] interfaces shall close the
5870
- ** [sqlite3_blob] object P unconditionally, even if
5871
- ** [sqlite3_blob_close(P)] returns something other than [SQLITE_OK].
4394
+ ** Requirements:
4395
+ ** [H17833] [H17836] [H17839]
5872
4396
  */
5873
4397
  int sqlite3_blob_close(sqlite3_blob *);
5874
4398
 
@@ -5878,11 +4402,8 @@ int sqlite3_blob_close(sqlite3_blob *);
5878
4402
  ** Returns the size in bytes of the BLOB accessible via the open
5879
4403
  ** []BLOB handle] in its only argument.
5880
4404
  **
5881
- ** INVARIANTS:
5882
- **
5883
- ** {H17843} The [sqlite3_blob_bytes(P)] interface returns the size
5884
- ** in bytes of the BLOB that the [sqlite3_blob] object P
5885
- ** refers to.
4405
+ ** Requirements:
4406
+ ** [H17843]
5886
4407
  */
5887
4408
  int sqlite3_blob_bytes(sqlite3_blob *);
5888
4409
 
@@ -5903,38 +4424,8 @@ int sqlite3_blob_bytes(sqlite3_blob *);
5903
4424
  ** On success, SQLITE_OK is returned.
5904
4425
  ** Otherwise, an [error code] or an [extended error code] is returned.
5905
4426
  **
5906
- ** INVARIANTS:
5907
- **
5908
- ** {H17853} A successful invocation of [sqlite3_blob_read(P,Z,N,X)]
5909
- ** shall reads N bytes of data out of the BLOB referenced by
5910
- ** [BLOB handle] P beginning at offset X and store those bytes
5911
- ** into buffer Z.
5912
- **
5913
- ** {H17856} In [sqlite3_blob_read(P,Z,N,X)] if the size of the BLOB
5914
- ** is less than N+X bytes, then the function shall leave the
5915
- ** Z buffer unchanged and return [SQLITE_ERROR].
5916
- **
5917
- ** {H17859} In [sqlite3_blob_read(P,Z,N,X)] if X or N is less than zero
5918
- ** then the function shall leave the Z buffer unchanged
5919
- ** and return [SQLITE_ERROR].
5920
- **
5921
- ** {H17862} The [sqlite3_blob_read(P,Z,N,X)] interface shall return [SQLITE_OK]
5922
- ** if N bytes are successfully read into buffer Z.
5923
- **
5924
- ** {H17863} If the [BLOB handle] P is expired and X and N are within bounds
5925
- ** then [sqlite3_blob_read(P,Z,N,X)] shall leave the Z buffer
5926
- ** unchanged and return [SQLITE_ABORT].
5927
- **
5928
- ** {H17865} If the requested read could not be completed,
5929
- ** the [sqlite3_blob_read(P,Z,N,X)] interface shall return an
5930
- ** appropriate [error code] or [extended error code].
5931
- **
5932
- ** {H17868} If an error occurs during evaluation of [sqlite3_blob_read(P,...)]
5933
- ** then subsequent calls to [sqlite3_errcode(D)],
5934
- ** [sqlite3_extended_errcode()],
5935
- ** [sqlite3_errmsg(D)], and [sqlite3_errmsg16(D)] shall return
5936
- ** information appropriate for that error, where D is the
5937
- ** [database connection] that was used to open the [BLOB handle] P.
4427
+ ** Requirements:
4428
+ ** [H17853] [H17856] [H17859] [H17862] [H17863] [H17865] [H17868]
5938
4429
  */
5939
4430
  int sqlite3_blob_read(sqlite3_blob *, void *Z, int N, int iOffset);
5940
4431
 
@@ -5965,45 +4456,9 @@ int sqlite3_blob_read(sqlite3_blob *, void *Z, int N, int iOffset);
5965
4456
  ** On success, SQLITE_OK is returned.
5966
4457
  ** Otherwise, an [error code] or an [extended error code] is returned.
5967
4458
  **
5968
- ** INVARIANTS:
5969
- **
5970
- ** {H17873} A successful invocation of [sqlite3_blob_write(P,Z,N,X)]
5971
- ** shall write N bytes of data from buffer Z into the BLOB
5972
- ** referenced by [BLOB handle] P beginning at offset X into
5973
- ** the BLOB.
5974
- **
5975
- ** {H17874} In the absence of other overridding changes, the changes
5976
- ** written to a BLOB by [sqlite3_blob_write()] shall
5977
- ** remain in effect after the associated [BLOB handle] expires.
5978
- **
5979
- ** {H17875} If the [BLOB handle] P was opened for reading only then
5980
- ** an invocation of [sqlite3_blob_write(P,Z,N,X)] shall leave
5981
- ** the referenced BLOB unchanged and return [SQLITE_READONLY].
5982
- **
5983
- ** {H17876} If the size of the BLOB referenced by [BLOB handle] P is
5984
- ** less than N+X bytes then [sqlite3_blob_write(P,Z,N,X)] shall
5985
- ** leave the BLOB unchanged and return [SQLITE_ERROR].
5986
- **
5987
- ** {H17877} If the [BLOB handle] P is expired and X and N are within bounds
5988
- ** then [sqlite3_blob_read(P,Z,N,X)] shall leave the BLOB
5989
- ** unchanged and return [SQLITE_ABORT].
5990
- **
5991
- ** {H17879} If X or N are less than zero then [sqlite3_blob_write(P,Z,N,X)]
5992
- ** shall leave the BLOB referenced by [BLOB handle] P unchanged
5993
- ** and return [SQLITE_ERROR].
5994
- **
5995
- ** {H17882} The [sqlite3_blob_write(P,Z,N,X)] interface shall return
5996
- ** [SQLITE_OK] if N bytes where successfully written into the BLOB.
5997
- **
5998
- ** {H17885} If the requested write could not be completed,
5999
- ** the [sqlite3_blob_write(P,Z,N,X)] interface shall return an
6000
- ** appropriate [error code] or [extended error code].
6001
- **
6002
- ** {H17888} If an error occurs during evaluation of [sqlite3_blob_write(D,...)]
6003
- ** then subsequent calls to [sqlite3_errcode(D)],
6004
- ** [sqlite3_extended_errcode()],
6005
- ** [sqlite3_errmsg(D)], and [sqlite3_errmsg16(D)] shall return
6006
- ** information appropriate for that error.
4459
+ ** Requirements:
4460
+ ** [H17873] [H17874] [H17875] [H17876] [H17877] [H17879] [H17882] [H17885]
4461
+ ** [H17888]
6007
4462
  */
6008
4463
  int sqlite3_blob_write(sqlite3_blob *, const void *z, int n, int iOffset);
6009
4464
 
@@ -6036,31 +4491,8 @@ int sqlite3_blob_write(sqlite3_blob *, const void *z, int n, int iOffset);
6036
4491
  ** If the default VFS is unregistered, another VFS is chosen as
6037
4492
  ** the default. The choice for the new VFS is arbitrary.
6038
4493
  **
6039
- ** INVARIANTS:
6040
- **
6041
- ** {H11203} The [sqlite3_vfs_find(N)] interface returns a pointer to the
6042
- ** registered [sqlite3_vfs] object whose name exactly matches
6043
- ** the zero-terminated UTF-8 string N, or it returns NULL if
6044
- ** there is no match.
6045
- **
6046
- ** {H11206} If the N parameter to [sqlite3_vfs_find(N)] is NULL then
6047
- ** the function returns a pointer to the default [sqlite3_vfs]
6048
- ** object if there is one, or NULL if there is no default
6049
- ** [sqlite3_vfs] object.
6050
- **
6051
- ** {H11209} The [sqlite3_vfs_register(P,F)] interface registers the
6052
- ** well-formed [sqlite3_vfs] object P using the name given
6053
- ** by the zName field of the object.
6054
- **
6055
- ** {H11212} Using the [sqlite3_vfs_register(P,F)] interface to register
6056
- ** the same [sqlite3_vfs] object multiple times is a harmless no-op.
6057
- **
6058
- ** {H11215} The [sqlite3_vfs_register(P,F)] interface makes the [sqlite3_vfs]
6059
- ** object P the default [sqlite3_vfs] object if F is non-zero.
6060
- **
6061
- ** {H11218} The [sqlite3_vfs_unregister(P)] interface unregisters the
6062
- ** [sqlite3_vfs] object P so that it is no longer returned by
6063
- ** subsequent calls to [sqlite3_vfs_find()].
4494
+ ** Requirements:
4495
+ ** [H11203] [H11206] [H11209] [H11212] [H11215] [H11218]
6064
4496
  */
6065
4497
  sqlite3_vfs *sqlite3_vfs_find(const char *zVfsName);
6066
4498
  int sqlite3_vfs_register(sqlite3_vfs*, int makeDflt);
@@ -6294,7 +4726,8 @@ int sqlite3_mutex_notheld(sqlite3_mutex*);
6294
4726
  #define SQLITE_MUTEX_RECURSIVE 1
6295
4727
  #define SQLITE_MUTEX_STATIC_MASTER 2
6296
4728
  #define SQLITE_MUTEX_STATIC_MEM 3 /* sqlite3_malloc() */
6297
- #define SQLITE_MUTEX_STATIC_MEM2 4 /* sqlite3_release_memory() */
4729
+ #define SQLITE_MUTEX_STATIC_MEM2 4 /* NOT USED */
4730
+ #define SQLITE_MUTEX_STATIC_OPEN 4 /* sqlite3BtreeOpen() */
6298
4731
  #define SQLITE_MUTEX_STATIC_PRNG 5 /* sqlite3_random() */
6299
4732
  #define SQLITE_MUTEX_STATIC_LRU 6 /* lru page list */
6300
4733
  #define SQLITE_MUTEX_STATIC_LRU2 7 /* lru page list */
@@ -6372,6 +4805,7 @@ int sqlite3_test_control(int op, ...);
6372
4805
  #define SQLITE_TESTCTRL_BITVEC_TEST 8
6373
4806
  #define SQLITE_TESTCTRL_FAULT_INSTALL 9
6374
4807
  #define SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS 10
4808
+ #define SQLITE_TESTCTRL_PENDING_BYTE 11
6375
4809
 
6376
4810
  /*
6377
4811
  ** CAPI3REF: SQLite Runtime Status {H17200} <S60200>
@@ -6661,17 +5095,17 @@ typedef struct sqlite3_pcache sqlite3_pcache;
6661
5095
  ** in which case SQLite will attempt to unpin one or more
6662
5096
  ** pages before re-requesting the same page, or it can
6663
5097
  ** allocate a new page and return a pointer to it. If a new
6664
- ** page is allocated, then it must be completely zeroed before
6665
- ** it is returned.
5098
+ ** page is allocated, then the first sizeof(void*) bytes of
5099
+ ** it (at least) must be zeroed before it is returned.
6666
5100
  ** <tr><td>2<td>If createFlag is set to 2, then SQLite is not holding any
6667
5101
  ** pinned pages associated with the specific cache passed
6668
5102
  ** as the first argument to xFetch() that can be unpinned. The
6669
5103
  ** cache implementation should attempt to allocate a new
6670
- ** cache entry and return a pointer to it. Again, the new
6671
- ** page should be zeroed before it is returned. If the xFetch()
6672
- ** method returns NULL when createFlag==2, SQLite assumes that
6673
- ** a memory allocation failed and returns SQLITE_NOMEM to the
6674
- ** user.
5104
+ ** cache entry and return a pointer to it. Again, the first
5105
+ ** sizeof(void*) bytes of the page should be zeroed before
5106
+ ** it is returned. If the xFetch() method returns NULL when
5107
+ ** createFlag==2, SQLite assumes that a memory allocation
5108
+ ** failed and returns SQLITE_NOMEM to the user.
6675
5109
  ** </table>
6676
5110
  **
6677
5111
  ** xUnpin() is called by SQLite with a pointer to a currently pinned page
@@ -6722,6 +5156,323 @@ struct sqlite3_pcache_methods {
6722
5156
  void (*xDestroy)(sqlite3_pcache*);
6723
5157
  };
6724
5158
 
5159
+ /*
5160
+ ** CAPI3REF: Online Backup Object
5161
+ ** EXPERIMENTAL
5162
+ **
5163
+ ** The sqlite3_backup object records state information about an ongoing
5164
+ ** online backup operation. The sqlite3_backup object is created by
5165
+ ** a call to [sqlite3_backup_init()] and is destroyed by a call to
5166
+ ** [sqlite3_backup_finish()].
5167
+ **
5168
+ ** See Also: [Using the SQLite Online Backup API]
5169
+ */
5170
+ typedef struct sqlite3_backup sqlite3_backup;
5171
+
5172
+ /*
5173
+ ** CAPI3REF: Online Backup API.
5174
+ ** EXPERIMENTAL
5175
+ **
5176
+ ** This API is used to overwrite the contents of one database with that
5177
+ ** of another. It is useful either for creating backups of databases or
5178
+ ** for copying in-memory databases to or from persistent files.
5179
+ **
5180
+ ** See Also: [Using the SQLite Online Backup API]
5181
+ **
5182
+ ** Exclusive access is required to the destination database for the
5183
+ ** duration of the operation. However the source database is only
5184
+ ** read-locked while it is actually being read, it is not locked
5185
+ ** continuously for the entire operation. Thus, the backup may be
5186
+ ** performed on a live database without preventing other users from
5187
+ ** writing to the database for an extended period of time.
5188
+ **
5189
+ ** To perform a backup operation:
5190
+ ** <ol>
5191
+ ** <li><b>sqlite3_backup_init()</b> is called once to initialize the
5192
+ ** backup,
5193
+ ** <li><b>sqlite3_backup_step()</b> is called one or more times to transfer
5194
+ ** the data between the two databases, and finally
5195
+ ** <li><b>sqlite3_backup_finish()</b> is called to release all resources
5196
+ ** associated with the backup operation.
5197
+ ** </ol>
5198
+ ** There should be exactly one call to sqlite3_backup_finish() for each
5199
+ ** successful call to sqlite3_backup_init().
5200
+ **
5201
+ ** <b>sqlite3_backup_init()</b>
5202
+ **
5203
+ ** The first two arguments passed to [sqlite3_backup_init()] are the database
5204
+ ** handle associated with the destination database and the database name
5205
+ ** used to attach the destination database to the handle. The database name
5206
+ ** is "main" for the main database, "temp" for the temporary database, or
5207
+ ** the name specified as part of the [ATTACH] statement if the destination is
5208
+ ** an attached database. The third and fourth arguments passed to
5209
+ ** sqlite3_backup_init() identify the [database connection]
5210
+ ** and database name used
5211
+ ** to access the source database. The values passed for the source and
5212
+ ** destination [database connection] parameters must not be the same.
5213
+ **
5214
+ ** If an error occurs within sqlite3_backup_init(), then NULL is returned
5215
+ ** and an error code and error message written into the [database connection]
5216
+ ** passed as the first argument. They may be retrieved using the
5217
+ ** [sqlite3_errcode()], [sqlite3_errmsg()], and [sqlite3_errmsg16()] functions.
5218
+ ** Otherwise, if successful, a pointer to an [sqlite3_backup] object is
5219
+ ** returned. This pointer may be used with the sqlite3_backup_step() and
5220
+ ** sqlite3_backup_finish() functions to perform the specified backup
5221
+ ** operation.
5222
+ **
5223
+ ** <b>sqlite3_backup_step()</b>
5224
+ **
5225
+ ** Function [sqlite3_backup_step()] is used to copy up to nPage pages between
5226
+ ** the source and destination databases, where nPage is the value of the
5227
+ ** second parameter passed to sqlite3_backup_step(). If nPage is a negative
5228
+ ** value, all remaining source pages are copied. If the required pages are
5229
+ ** succesfully copied, but there are still more pages to copy before the
5230
+ ** backup is complete, it returns [SQLITE_OK]. If no error occured and there
5231
+ ** are no more pages to copy, then [SQLITE_DONE] is returned. If an error
5232
+ ** occurs, then an SQLite error code is returned. As well as [SQLITE_OK] and
5233
+ ** [SQLITE_DONE], a call to sqlite3_backup_step() may return [SQLITE_READONLY],
5234
+ ** [SQLITE_NOMEM], [SQLITE_BUSY], [SQLITE_LOCKED], or an
5235
+ ** [SQLITE_IOERR_ACCESS | SQLITE_IOERR_XXX] extended error code.
5236
+ **
5237
+ ** As well as the case where the destination database file was opened for
5238
+ ** read-only access, sqlite3_backup_step() may return [SQLITE_READONLY] if
5239
+ ** the destination is an in-memory database with a different page size
5240
+ ** from the source database.
5241
+ **
5242
+ ** If sqlite3_backup_step() cannot obtain a required file-system lock, then
5243
+ ** the [sqlite3_busy_handler | busy-handler function]
5244
+ ** is invoked (if one is specified). If the
5245
+ ** busy-handler returns non-zero before the lock is available, then
5246
+ ** [SQLITE_BUSY] is returned to the caller. In this case the call to
5247
+ ** sqlite3_backup_step() can be retried later. If the source
5248
+ ** [database connection]
5249
+ ** is being used to write to the source database when sqlite3_backup_step()
5250
+ ** is called, then [SQLITE_LOCKED] is returned immediately. Again, in this
5251
+ ** case the call to sqlite3_backup_step() can be retried later on. If
5252
+ ** [SQLITE_IOERR_ACCESS | SQLITE_IOERR_XXX], [SQLITE_NOMEM], or
5253
+ ** [SQLITE_READONLY] is returned, then
5254
+ ** there is no point in retrying the call to sqlite3_backup_step(). These
5255
+ ** errors are considered fatal. At this point the application must accept
5256
+ ** that the backup operation has failed and pass the backup operation handle
5257
+ ** to the sqlite3_backup_finish() to release associated resources.
5258
+ **
5259
+ ** Following the first call to sqlite3_backup_step(), an exclusive lock is
5260
+ ** obtained on the destination file. It is not released until either
5261
+ ** sqlite3_backup_finish() is called or the backup operation is complete
5262
+ ** and sqlite3_backup_step() returns [SQLITE_DONE]. Additionally, each time
5263
+ ** a call to sqlite3_backup_step() is made a [shared lock] is obtained on
5264
+ ** the source database file. This lock is released before the
5265
+ ** sqlite3_backup_step() call returns. Because the source database is not
5266
+ ** locked between calls to sqlite3_backup_step(), it may be modified mid-way
5267
+ ** through the backup procedure. If the source database is modified by an
5268
+ ** external process or via a database connection other than the one being
5269
+ ** used by the backup operation, then the backup will be transparently
5270
+ ** restarted by the next call to sqlite3_backup_step(). If the source
5271
+ ** database is modified by the using the same database connection as is used
5272
+ ** by the backup operation, then the backup database is transparently
5273
+ ** updated at the same time.
5274
+ **
5275
+ ** <b>sqlite3_backup_finish()</b>
5276
+ **
5277
+ ** Once sqlite3_backup_step() has returned [SQLITE_DONE], or when the
5278
+ ** application wishes to abandon the backup operation, the [sqlite3_backup]
5279
+ ** object should be passed to sqlite3_backup_finish(). This releases all
5280
+ ** resources associated with the backup operation. If sqlite3_backup_step()
5281
+ ** has not yet returned [SQLITE_DONE], then any active write-transaction on the
5282
+ ** destination database is rolled back. The [sqlite3_backup] object is invalid
5283
+ ** and may not be used following a call to sqlite3_backup_finish().
5284
+ **
5285
+ ** The value returned by sqlite3_backup_finish is [SQLITE_OK] if no error
5286
+ ** occurred, regardless or whether or not sqlite3_backup_step() was called
5287
+ ** a sufficient number of times to complete the backup operation. Or, if
5288
+ ** an out-of-memory condition or IO error occured during a call to
5289
+ ** sqlite3_backup_step() then [SQLITE_NOMEM] or an
5290
+ ** [SQLITE_IOERR_ACCESS | SQLITE_IOERR_XXX] error code
5291
+ ** is returned. In this case the error code and an error message are
5292
+ ** written to the destination [database connection].
5293
+ **
5294
+ ** A return of [SQLITE_BUSY] or [SQLITE_LOCKED] from sqlite3_backup_step() is
5295
+ ** not a permanent error and does not affect the return value of
5296
+ ** sqlite3_backup_finish().
5297
+ **
5298
+ ** <b>sqlite3_backup_remaining(), sqlite3_backup_pagecount()</b>
5299
+ **
5300
+ ** Each call to sqlite3_backup_step() sets two values stored internally
5301
+ ** by an [sqlite3_backup] object. The number of pages still to be backed
5302
+ ** up, which may be queried by sqlite3_backup_remaining(), and the total
5303
+ ** number of pages in the source database file, which may be queried by
5304
+ ** sqlite3_backup_pagecount().
5305
+ **
5306
+ ** The values returned by these functions are only updated by
5307
+ ** sqlite3_backup_step(). If the source database is modified during a backup
5308
+ ** operation, then the values are not updated to account for any extra
5309
+ ** pages that need to be updated or the size of the source database file
5310
+ ** changing.
5311
+ **
5312
+ ** <b>Concurrent Usage of Database Handles</b>
5313
+ **
5314
+ ** The source [database connection] may be used by the application for other
5315
+ ** purposes while a backup operation is underway or being initialized.
5316
+ ** If SQLite is compiled and configured to support threadsafe database
5317
+ ** connections, then the source database connection may be used concurrently
5318
+ ** from within other threads.
5319
+ **
5320
+ ** However, the application must guarantee that the destination database
5321
+ ** connection handle is not passed to any other API (by any thread) after
5322
+ ** sqlite3_backup_init() is called and before the corresponding call to
5323
+ ** sqlite3_backup_finish(). Unfortunately SQLite does not currently check
5324
+ ** for this, if the application does use the destination [database connection]
5325
+ ** for some other purpose during a backup operation, things may appear to
5326
+ ** work correctly but in fact be subtly malfunctioning. Use of the
5327
+ ** destination database connection while a backup is in progress might
5328
+ ** also cause a mutex deadlock.
5329
+ **
5330
+ ** Furthermore, if running in [shared cache mode], the application must
5331
+ ** guarantee that the shared cache used by the destination database
5332
+ ** is not accessed while the backup is running. In practice this means
5333
+ ** that the application must guarantee that the file-system file being
5334
+ ** backed up to is not accessed by any connection within the process,
5335
+ ** not just the specific connection that was passed to sqlite3_backup_init().
5336
+ **
5337
+ ** The [sqlite3_backup] object itself is partially threadsafe. Multiple
5338
+ ** threads may safely make multiple concurrent calls to sqlite3_backup_step().
5339
+ ** However, the sqlite3_backup_remaining() and sqlite3_backup_pagecount()
5340
+ ** APIs are not strictly speaking threadsafe. If they are invoked at the
5341
+ ** same time as another thread is invoking sqlite3_backup_step() it is
5342
+ ** possible that they return invalid values.
5343
+ */
5344
+ sqlite3_backup *sqlite3_backup_init(
5345
+ sqlite3 *pDest, /* Destination database handle */
5346
+ const char *zDestName, /* Destination database name */
5347
+ sqlite3 *pSource, /* Source database handle */
5348
+ const char *zSourceName /* Source database name */
5349
+ );
5350
+ int sqlite3_backup_step(sqlite3_backup *p, int nPage);
5351
+ int sqlite3_backup_finish(sqlite3_backup *p);
5352
+ int sqlite3_backup_remaining(sqlite3_backup *p);
5353
+ int sqlite3_backup_pagecount(sqlite3_backup *p);
5354
+
5355
+ /*
5356
+ ** CAPI3REF: Unlock Notification
5357
+ ** EXPERIMENTAL
5358
+ **
5359
+ ** When running in shared-cache mode, a database operation may fail with
5360
+ ** an [SQLITE_LOCKED] error if the required locks on the shared-cache or
5361
+ ** individual tables within the shared-cache cannot be obtained. See
5362
+ ** [SQLite Shared-Cache Mode] for a description of shared-cache locking.
5363
+ ** This API may be used to register a callback that SQLite will invoke
5364
+ ** when the connection currently holding the required lock relinquishes it.
5365
+ ** This API is only available if the library was compiled with the
5366
+ ** [SQLITE_ENABLE_UNLOCK_NOTIFY] C-preprocessor symbol defined.
5367
+ **
5368
+ ** See Also: [Using the SQLite Unlock Notification Feature].
5369
+ **
5370
+ ** Shared-cache locks are released when a database connection concludes
5371
+ ** its current transaction, either by committing it or rolling it back.
5372
+ **
5373
+ ** When a connection (known as the blocked connection) fails to obtain a
5374
+ ** shared-cache lock and SQLITE_LOCKED is returned to the caller, the
5375
+ ** identity of the database connection (the blocking connection) that
5376
+ ** has locked the required resource is stored internally. After an
5377
+ ** application receives an SQLITE_LOCKED error, it may call the
5378
+ ** sqlite3_unlock_notify() method with the blocked connection handle as
5379
+ ** the first argument to register for a callback that will be invoked
5380
+ ** when the blocking connections current transaction is concluded. The
5381
+ ** callback is invoked from within the [sqlite3_step] or [sqlite3_close]
5382
+ ** call that concludes the blocking connections transaction.
5383
+ **
5384
+ ** If sqlite3_unlock_notify() is called in a multi-threaded application,
5385
+ ** there is a chance that the blocking connection will have already
5386
+ ** concluded its transaction by the time sqlite3_unlock_notify() is invoked.
5387
+ ** If this happens, then the specified callback is invoked immediately,
5388
+ ** from within the call to sqlite3_unlock_notify().
5389
+ **
5390
+ ** If the blocked connection is attempting to obtain a write-lock on a
5391
+ ** shared-cache table, and more than one other connection currently holds
5392
+ ** a read-lock on the same table, then SQLite arbitrarily selects one of
5393
+ ** the other connections to use as the blocking connection.
5394
+ **
5395
+ ** There may be at most one unlock-notify callback registered by a
5396
+ ** blocked connection. If sqlite3_unlock_notify() is called when the
5397
+ ** blocked connection already has a registered unlock-notify callback,
5398
+ ** then the new callback replaces the old. If sqlite3_unlock_notify() is
5399
+ ** called with a NULL pointer as its second argument, then any existing
5400
+ ** unlock-notify callback is cancelled. The blocked connections
5401
+ ** unlock-notify callback may also be canceled by closing the blocked
5402
+ ** connection using [sqlite3_close()].
5403
+ **
5404
+ ** The unlock-notify callback is not reentrant. If an application invokes
5405
+ ** any sqlite3_xxx API functions from within an unlock-notify callback, a
5406
+ ** crash or deadlock may be the result.
5407
+ **
5408
+ ** Unless deadlock is detected (see below), sqlite3_unlock_notify() always
5409
+ ** returns SQLITE_OK.
5410
+ **
5411
+ ** <b>Callback Invocation Details</b>
5412
+ **
5413
+ ** When an unlock-notify callback is registered, the application provides a
5414
+ ** single void* pointer that is passed to the callback when it is invoked.
5415
+ ** However, the signature of the callback function allows SQLite to pass
5416
+ ** it an array of void* context pointers. The first argument passed to
5417
+ ** an unlock-notify callback is a pointer to an array of void* pointers,
5418
+ ** and the second is the number of entries in the array.
5419
+ **
5420
+ ** When a blocking connections transaction is concluded, there may be
5421
+ ** more than one blocked connection that has registered for an unlock-notify
5422
+ ** callback. If two or more such blocked connections have specified the
5423
+ ** same callback function, then instead of invoking the callback function
5424
+ ** multiple times, it is invoked once with the set of void* context pointers
5425
+ ** specified by the blocked connections bundled together into an array.
5426
+ ** This gives the application an opportunity to prioritize any actions
5427
+ ** related to the set of unblocked database connections.
5428
+ **
5429
+ ** <b>Deadlock Detection</b>
5430
+ **
5431
+ ** Assuming that after registering for an unlock-notify callback a
5432
+ ** database waits for the callback to be issued before taking any further
5433
+ ** action (a reasonable assumption), then using this API may cause the
5434
+ ** application to deadlock. For example, if connection X is waiting for
5435
+ ** connection Y's transaction to be concluded, and similarly connection
5436
+ ** Y is waiting on connection X's transaction, then neither connection
5437
+ ** will proceed and the system may remain deadlocked indefinitely.
5438
+ **
5439
+ ** To avoid this scenario, the sqlite3_unlock_notify() performs deadlock
5440
+ ** detection. If a given call to sqlite3_unlock_notify() would put the
5441
+ ** system in a deadlocked state, then SQLITE_LOCKED is returned and no
5442
+ ** unlock-notify callback is registered. The system is said to be in
5443
+ ** a deadlocked state if connection A has registered for an unlock-notify
5444
+ ** callback on the conclusion of connection B's transaction, and connection
5445
+ ** B has itself registered for an unlock-notify callback when connection
5446
+ ** A's transaction is concluded. Indirect deadlock is also detected, so
5447
+ ** the system is also considered to be deadlocked if connection B has
5448
+ ** registered for an unlock-notify callback on the conclusion of connection
5449
+ ** C's transaction, where connection C is waiting on connection A. Any
5450
+ ** number of levels of indirection are allowed.
5451
+ **
5452
+ ** <b>The "DROP TABLE" Exception</b>
5453
+ **
5454
+ ** When a call to [sqlite3_step()] returns SQLITE_LOCKED, it is almost
5455
+ ** always appropriate to call sqlite3_unlock_notify(). There is however,
5456
+ ** one exception. When executing a "DROP TABLE" or "DROP INDEX" statement,
5457
+ ** SQLite checks if there are any currently executing SELECT statements
5458
+ ** that belong to the same connection. If there are, SQLITE_LOCKED is
5459
+ ** returned. In this case there is no "blocking connection", so invoking
5460
+ ** sqlite3_unlock_notify() results in the unlock-notify callback being
5461
+ ** invoked immediately. If the application then re-attempts the "DROP TABLE"
5462
+ ** or "DROP INDEX" query, an infinite loop might be the result.
5463
+ **
5464
+ ** One way around this problem is to check the extended error code returned
5465
+ ** by an sqlite3_step() call. If there is a blocking connection, then the
5466
+ ** extended error code is set to SQLITE_LOCKED_SHAREDCACHE. Otherwise, in
5467
+ ** the special "DROP TABLE/INDEX" case, the extended error code is just
5468
+ ** SQLITE_LOCKED.
5469
+ */
5470
+ int sqlite3_unlock_notify(
5471
+ sqlite3 *pBlocked, /* Waiting connection */
5472
+ void (*xNotify)(void **apArg, int nArg), /* Callback function to invoke */
5473
+ void *pNotifyArg /* Argument to pass to xNotify */
5474
+ );
5475
+
6725
5476
  /*
6726
5477
  ** Undo the hack that converts floating point types to integer for
6727
5478
  ** builds on processors without floating point support.