extralite-bundle 2.12 → 2.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/README.md +1 -1
- data/ext/extralite/database.c +11 -12
- data/ext/sqlite3/sqlite3.c +7255 -2755
- data/ext/sqlite3/sqlite3.h +488 -235
- data/gemspec.rb +4 -4
- data/lib/extralite/version.rb +1 -1
- metadata +11 -11
data/ext/sqlite3/sqlite3.h
CHANGED
|
@@ -133,7 +133,7 @@ extern "C" {
|
|
|
133
133
|
**
|
|
134
134
|
** Since [version 3.6.18] ([dateof:3.6.18]),
|
|
135
135
|
** SQLite source code has been stored in the
|
|
136
|
-
** <a href="http://
|
|
136
|
+
** <a href="http://fossil-scm.org/">Fossil configuration management
|
|
137
137
|
** system</a>. ^The SQLITE_SOURCE_ID macro evaluates to
|
|
138
138
|
** a string which identifies a particular check-in of SQLite
|
|
139
139
|
** within its configuration management system. ^The SQLITE_SOURCE_ID
|
|
@@ -146,9 +146,12 @@ extern "C" {
|
|
|
146
146
|
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
|
|
147
147
|
** [sqlite_version()] and [sqlite_source_id()].
|
|
148
148
|
*/
|
|
149
|
-
#define SQLITE_VERSION "3.
|
|
150
|
-
#define SQLITE_VERSION_NUMBER
|
|
151
|
-
#define SQLITE_SOURCE_ID "
|
|
149
|
+
#define SQLITE_VERSION "3.51.2"
|
|
150
|
+
#define SQLITE_VERSION_NUMBER 3051002
|
|
151
|
+
#define SQLITE_SOURCE_ID "2026-01-09 17:27:48 b270f8339eb13b504d0b2ba154ebca966b7dde08e40c3ed7d559749818cb2075"
|
|
152
|
+
#define SQLITE_SCM_BRANCH "branch-3.51"
|
|
153
|
+
#define SQLITE_SCM_TAGS "release version-3.51.2"
|
|
154
|
+
#define SQLITE_SCM_DATETIME "2026-01-09T17:27:48.405Z"
|
|
152
155
|
|
|
153
156
|
/*
|
|
154
157
|
** CAPI3REF: Run-Time Library Version Numbers
|
|
@@ -168,9 +171,9 @@ extern "C" {
|
|
|
168
171
|
** assert( strcmp(sqlite3_libversion(),SQLITE_VERSION)==0 );
|
|
169
172
|
** </pre></blockquote>)^
|
|
170
173
|
**
|
|
171
|
-
** ^The sqlite3_version[] string constant contains the text of
|
|
172
|
-
** macro. ^The sqlite3_libversion() function returns a
|
|
173
|
-
** to the sqlite3_version[] string constant. The sqlite3_libversion()
|
|
174
|
+
** ^The sqlite3_version[] string constant contains the text of the
|
|
175
|
+
** [SQLITE_VERSION] macro. ^The sqlite3_libversion() function returns a
|
|
176
|
+
** pointer to the sqlite3_version[] string constant. The sqlite3_libversion()
|
|
174
177
|
** function is provided for use in DLLs since DLL users usually do not have
|
|
175
178
|
** direct access to string constants within the DLL. ^The
|
|
176
179
|
** sqlite3_libversion_number() function returns an integer equal to
|
|
@@ -370,7 +373,7 @@ typedef int (*sqlite3_callback)(void*,int,char**, char**);
|
|
|
370
373
|
** without having to use a lot of C code.
|
|
371
374
|
**
|
|
372
375
|
** ^The sqlite3_exec() interface runs zero or more UTF-8 encoded,
|
|
373
|
-
** semicolon-
|
|
376
|
+
** semicolon-separated SQL statements passed into its 2nd argument,
|
|
374
377
|
** in the context of the [database connection] passed in as its 1st
|
|
375
378
|
** argument. ^If the callback function of the 3rd argument to
|
|
376
379
|
** sqlite3_exec() is not NULL, then it is invoked for each result row
|
|
@@ -403,7 +406,7 @@ typedef int (*sqlite3_callback)(void*,int,char**, char**);
|
|
|
403
406
|
** result row is NULL then the corresponding string pointer for the
|
|
404
407
|
** sqlite3_exec() callback is a NULL pointer. ^The 4th argument to the
|
|
405
408
|
** sqlite3_exec() callback is an array of pointers to strings where each
|
|
406
|
-
** entry represents the name of corresponding result column as obtained
|
|
409
|
+
** entry represents the name of a corresponding result column as obtained
|
|
407
410
|
** from [sqlite3_column_name()].
|
|
408
411
|
**
|
|
409
412
|
** ^If the 2nd parameter to sqlite3_exec() is a NULL pointer, a pointer
|
|
@@ -497,6 +500,9 @@ SQLITE_API int sqlite3_exec(
|
|
|
497
500
|
#define SQLITE_ERROR_MISSING_COLLSEQ (SQLITE_ERROR | (1<<8))
|
|
498
501
|
#define SQLITE_ERROR_RETRY (SQLITE_ERROR | (2<<8))
|
|
499
502
|
#define SQLITE_ERROR_SNAPSHOT (SQLITE_ERROR | (3<<8))
|
|
503
|
+
#define SQLITE_ERROR_RESERVESIZE (SQLITE_ERROR | (4<<8))
|
|
504
|
+
#define SQLITE_ERROR_KEY (SQLITE_ERROR | (5<<8))
|
|
505
|
+
#define SQLITE_ERROR_UNABLE (SQLITE_ERROR | (6<<8))
|
|
500
506
|
#define SQLITE_IOERR_READ (SQLITE_IOERR | (1<<8))
|
|
501
507
|
#define SQLITE_IOERR_SHORT_READ (SQLITE_IOERR | (2<<8))
|
|
502
508
|
#define SQLITE_IOERR_WRITE (SQLITE_IOERR | (3<<8))
|
|
@@ -531,6 +537,8 @@ SQLITE_API int sqlite3_exec(
|
|
|
531
537
|
#define SQLITE_IOERR_DATA (SQLITE_IOERR | (32<<8))
|
|
532
538
|
#define SQLITE_IOERR_CORRUPTFS (SQLITE_IOERR | (33<<8))
|
|
533
539
|
#define SQLITE_IOERR_IN_PAGE (SQLITE_IOERR | (34<<8))
|
|
540
|
+
#define SQLITE_IOERR_BADKEY (SQLITE_IOERR | (35<<8))
|
|
541
|
+
#define SQLITE_IOERR_CODEC (SQLITE_IOERR | (36<<8))
|
|
534
542
|
#define SQLITE_LOCKED_SHAREDCACHE (SQLITE_LOCKED | (1<<8))
|
|
535
543
|
#define SQLITE_LOCKED_VTAB (SQLITE_LOCKED | (2<<8))
|
|
536
544
|
#define SQLITE_BUSY_RECOVERY (SQLITE_BUSY | (1<<8))
|
|
@@ -589,7 +597,7 @@ SQLITE_API int sqlite3_exec(
|
|
|
589
597
|
** Note in particular that passing the SQLITE_OPEN_EXCLUSIVE flag into
|
|
590
598
|
** [sqlite3_open_v2()] does *not* cause the underlying database file
|
|
591
599
|
** to be opened using O_EXCL. Passing SQLITE_OPEN_EXCLUSIVE into
|
|
592
|
-
** [sqlite3_open_v2()] has historically
|
|
600
|
+
** [sqlite3_open_v2()] has historically been a no-op and might become an
|
|
593
601
|
** error in future versions of SQLite.
|
|
594
602
|
*/
|
|
595
603
|
#define SQLITE_OPEN_READONLY 0x00000001 /* Ok for sqlite3_open_v2() */
|
|
@@ -683,7 +691,7 @@ SQLITE_API int sqlite3_exec(
|
|
|
683
691
|
** SQLite uses one of these integer values as the second
|
|
684
692
|
** argument to calls it makes to the xLock() and xUnlock() methods
|
|
685
693
|
** of an [sqlite3_io_methods] object. These values are ordered from
|
|
686
|
-
**
|
|
694
|
+
** least restrictive to most restrictive.
|
|
687
695
|
**
|
|
688
696
|
** The argument to xLock() is always SHARED or higher. The argument to
|
|
689
697
|
** xUnlock is either SHARED or NONE.
|
|
@@ -924,7 +932,7 @@ struct sqlite3_io_methods {
|
|
|
924
932
|
** connection. See also [SQLITE_FCNTL_FILE_POINTER].
|
|
925
933
|
**
|
|
926
934
|
** <li>[[SQLITE_FCNTL_SYNC_OMITTED]]
|
|
927
|
-
**
|
|
935
|
+
** The SQLITE_FCNTL_SYNC_OMITTED file-control is no longer used.
|
|
928
936
|
**
|
|
929
937
|
** <li>[[SQLITE_FCNTL_SYNC]]
|
|
930
938
|
** The [SQLITE_FCNTL_SYNC] opcode is generated internally by SQLite and
|
|
@@ -999,7 +1007,7 @@ struct sqlite3_io_methods {
|
|
|
999
1007
|
**
|
|
1000
1008
|
** <li>[[SQLITE_FCNTL_VFSNAME]]
|
|
1001
1009
|
** ^The [SQLITE_FCNTL_VFSNAME] opcode can be used to obtain the names of
|
|
1002
|
-
** all [VFSes] in the VFS stack. The names
|
|
1010
|
+
** all [VFSes] in the VFS stack. The names of all VFS shims and the
|
|
1003
1011
|
** final bottom-level VFS are written into memory obtained from
|
|
1004
1012
|
** [sqlite3_malloc()] and the result is stored in the char* variable
|
|
1005
1013
|
** that the fourth parameter of [sqlite3_file_control()] points to.
|
|
@@ -1013,7 +1021,7 @@ struct sqlite3_io_methods {
|
|
|
1013
1021
|
** ^The [SQLITE_FCNTL_VFS_POINTER] opcode finds a pointer to the top-level
|
|
1014
1022
|
** [VFSes] currently in use. ^(The argument X in
|
|
1015
1023
|
** sqlite3_file_control(db,SQLITE_FCNTL_VFS_POINTER,X) must be
|
|
1016
|
-
** of type "[sqlite3_vfs] **". This
|
|
1024
|
+
** of type "[sqlite3_vfs] **". This opcode will set *X
|
|
1017
1025
|
** to a pointer to the top-level VFS.)^
|
|
1018
1026
|
** ^When there are multiple VFS shims in the stack, this opcode finds the
|
|
1019
1027
|
** upper-most shim only.
|
|
@@ -1163,6 +1171,12 @@ struct sqlite3_io_methods {
|
|
|
1163
1171
|
** the value that M is to be set to. Before returning, the 32-bit signed
|
|
1164
1172
|
** integer is overwritten with the previous value of M.
|
|
1165
1173
|
**
|
|
1174
|
+
** <li>[[SQLITE_FCNTL_BLOCK_ON_CONNECT]]
|
|
1175
|
+
** The [SQLITE_FCNTL_BLOCK_ON_CONNECT] opcode is used to configure the
|
|
1176
|
+
** VFS to block when taking a SHARED lock to connect to a wal mode database.
|
|
1177
|
+
** This is used to implement the functionality associated with
|
|
1178
|
+
** SQLITE_SETLK_BLOCK_ON_CONNECT.
|
|
1179
|
+
**
|
|
1166
1180
|
** <li>[[SQLITE_FCNTL_DATA_VERSION]]
|
|
1167
1181
|
** The [SQLITE_FCNTL_DATA_VERSION] opcode is used to detect changes to
|
|
1168
1182
|
** a database file. The argument is a pointer to a 32-bit unsigned integer.
|
|
@@ -1197,7 +1211,7 @@ struct sqlite3_io_methods {
|
|
|
1197
1211
|
** <li>[[SQLITE_FCNTL_EXTERNAL_READER]]
|
|
1198
1212
|
** The EXPERIMENTAL [SQLITE_FCNTL_EXTERNAL_READER] opcode is used to detect
|
|
1199
1213
|
** whether or not there is a database client in another process with a wal-mode
|
|
1200
|
-
** transaction open on the database or not. It is only available on unix.The
|
|
1214
|
+
** transaction open on the database or not. It is only available on unix. The
|
|
1201
1215
|
** (void*) argument passed with this file-control should be a pointer to a
|
|
1202
1216
|
** value of type (int). The integer value is set to 1 if the database is a wal
|
|
1203
1217
|
** mode database and there exists at least one client in another process that
|
|
@@ -1215,6 +1229,15 @@ struct sqlite3_io_methods {
|
|
|
1215
1229
|
** database is not a temp db, then the [SQLITE_FCNTL_RESET_CACHE] file-control
|
|
1216
1230
|
** purges the contents of the in-memory page cache. If there is an open
|
|
1217
1231
|
** transaction, or if the db is a temp-db, this opcode is a no-op, not an error.
|
|
1232
|
+
**
|
|
1233
|
+
** <li>[[SQLITE_FCNTL_FILESTAT]]
|
|
1234
|
+
** The [SQLITE_FCNTL_FILESTAT] opcode returns low-level diagnostic information
|
|
1235
|
+
** about the [sqlite3_file] objects used access the database and journal files
|
|
1236
|
+
** for the given schema. The fourth parameter to [sqlite3_file_control()]
|
|
1237
|
+
** should be an initialized [sqlite3_str] pointer. JSON text describing
|
|
1238
|
+
** various aspects of the sqlite3_file object is appended to the sqlite3_str.
|
|
1239
|
+
** The SQLITE_FCNTL_FILESTAT opcode is usually a no-op, unless compile-time
|
|
1240
|
+
** options are used to enable it.
|
|
1218
1241
|
** </ul>
|
|
1219
1242
|
*/
|
|
1220
1243
|
#define SQLITE_FCNTL_LOCKSTATE 1
|
|
@@ -1259,6 +1282,8 @@ struct sqlite3_io_methods {
|
|
|
1259
1282
|
#define SQLITE_FCNTL_CKSM_FILE 41
|
|
1260
1283
|
#define SQLITE_FCNTL_RESET_CACHE 42
|
|
1261
1284
|
#define SQLITE_FCNTL_NULL_IO 43
|
|
1285
|
+
#define SQLITE_FCNTL_BLOCK_ON_CONNECT 44
|
|
1286
|
+
#define SQLITE_FCNTL_FILESTAT 45
|
|
1262
1287
|
|
|
1263
1288
|
/* deprecated names */
|
|
1264
1289
|
#define SQLITE_GET_LOCKPROXYFILE SQLITE_FCNTL_GET_LOCKPROXYFILE
|
|
@@ -1621,7 +1646,7 @@ struct sqlite3_vfs {
|
|
|
1621
1646
|
** SQLite interfaces so that an application usually does not need to
|
|
1622
1647
|
** invoke sqlite3_initialize() directly. For example, [sqlite3_open()]
|
|
1623
1648
|
** calls sqlite3_initialize() so the SQLite library will be automatically
|
|
1624
|
-
** initialized when [sqlite3_open()] is called if it has not
|
|
1649
|
+
** initialized when [sqlite3_open()] is called if it has not been initialized
|
|
1625
1650
|
** already. ^However, if SQLite is compiled with the [SQLITE_OMIT_AUTOINIT]
|
|
1626
1651
|
** compile-time option, then the automatic calls to sqlite3_initialize()
|
|
1627
1652
|
** are omitted and the application must call sqlite3_initialize() directly
|
|
@@ -1878,21 +1903,21 @@ struct sqlite3_mem_methods {
|
|
|
1878
1903
|
** The [sqlite3_mem_methods]
|
|
1879
1904
|
** structure is filled with the currently defined memory allocation routines.)^
|
|
1880
1905
|
** This option can be used to overload the default memory allocation
|
|
1881
|
-
** routines with a wrapper that
|
|
1906
|
+
** routines with a wrapper that simulates memory allocation failure or
|
|
1882
1907
|
** tracks memory usage, for example. </dd>
|
|
1883
1908
|
**
|
|
1884
1909
|
** [[SQLITE_CONFIG_SMALL_MALLOC]] <dt>SQLITE_CONFIG_SMALL_MALLOC</dt>
|
|
1885
|
-
** <dd> ^The SQLITE_CONFIG_SMALL_MALLOC option takes single argument of
|
|
1910
|
+
** <dd> ^The SQLITE_CONFIG_SMALL_MALLOC option takes a single argument of
|
|
1886
1911
|
** type int, interpreted as a boolean, which if true provides a hint to
|
|
1887
1912
|
** SQLite that it should avoid large memory allocations if possible.
|
|
1888
1913
|
** SQLite will run faster if it is free to make large memory allocations,
|
|
1889
|
-
** but some
|
|
1914
|
+
** but some applications might prefer to run slower in exchange for
|
|
1890
1915
|
** guarantees about memory fragmentation that are possible if large
|
|
1891
1916
|
** allocations are avoided. This hint is normally off.
|
|
1892
1917
|
** </dd>
|
|
1893
1918
|
**
|
|
1894
1919
|
** [[SQLITE_CONFIG_MEMSTATUS]] <dt>SQLITE_CONFIG_MEMSTATUS</dt>
|
|
1895
|
-
** <dd> ^The SQLITE_CONFIG_MEMSTATUS option takes single argument of type int,
|
|
1920
|
+
** <dd> ^The SQLITE_CONFIG_MEMSTATUS option takes a single argument of type int,
|
|
1896
1921
|
** interpreted as a boolean, which enables or disables the collection of
|
|
1897
1922
|
** memory allocation statistics. ^(When memory allocation statistics are
|
|
1898
1923
|
** disabled, the following SQLite interfaces become non-operational:
|
|
@@ -1937,7 +1962,7 @@ struct sqlite3_mem_methods {
|
|
|
1937
1962
|
** ^If pMem is NULL and N is non-zero, then each database connection
|
|
1938
1963
|
** does an initial bulk allocation for page cache memory
|
|
1939
1964
|
** from [sqlite3_malloc()] sufficient for N cache lines if N is positive or
|
|
1940
|
-
** of -1024*N bytes if N is negative
|
|
1965
|
+
** of -1024*N bytes if N is negative. ^If additional
|
|
1941
1966
|
** page cache memory is needed beyond what is provided by the initial
|
|
1942
1967
|
** allocation, then SQLite goes to [sqlite3_malloc()] separately for each
|
|
1943
1968
|
** additional cache line. </dd>
|
|
@@ -1966,7 +1991,7 @@ struct sqlite3_mem_methods {
|
|
|
1966
1991
|
** <dd> ^(The SQLITE_CONFIG_MUTEX option takes a single argument which is a
|
|
1967
1992
|
** pointer to an instance of the [sqlite3_mutex_methods] structure.
|
|
1968
1993
|
** The argument specifies alternative low-level mutex routines to be used
|
|
1969
|
-
** in place the mutex routines built into SQLite.)^ ^SQLite makes a copy of
|
|
1994
|
+
** in place of the mutex routines built into SQLite.)^ ^SQLite makes a copy of
|
|
1970
1995
|
** the content of the [sqlite3_mutex_methods] structure before the call to
|
|
1971
1996
|
** [sqlite3_config()] returns. ^If SQLite is compiled with
|
|
1972
1997
|
** the [SQLITE_THREADSAFE | SQLITE_THREADSAFE=0] compile-time option then
|
|
@@ -1989,13 +2014,16 @@ struct sqlite3_mem_methods {
|
|
|
1989
2014
|
**
|
|
1990
2015
|
** [[SQLITE_CONFIG_LOOKASIDE]] <dt>SQLITE_CONFIG_LOOKASIDE</dt>
|
|
1991
2016
|
** <dd> ^(The SQLITE_CONFIG_LOOKASIDE option takes two arguments that determine
|
|
1992
|
-
** the default size of lookaside memory on each [database connection].
|
|
2017
|
+
** the default size of [lookaside memory] on each [database connection].
|
|
1993
2018
|
** The first argument is the
|
|
1994
|
-
** size of each lookaside buffer slot and the second is the number of
|
|
1995
|
-
** slots allocated to each database connection.)^
|
|
1996
|
-
** sets the <i>default</i> lookaside size.
|
|
1997
|
-
** option to [sqlite3_db_config()] can
|
|
1998
|
-
** configuration on individual connections.)^
|
|
2019
|
+
** size of each lookaside buffer slot ("sz") and the second is the number of
|
|
2020
|
+
** slots allocated to each database connection ("cnt").)^
|
|
2021
|
+
** ^(SQLITE_CONFIG_LOOKASIDE sets the <i>default</i> lookaside size.
|
|
2022
|
+
** The [SQLITE_DBCONFIG_LOOKASIDE] option to [sqlite3_db_config()] can
|
|
2023
|
+
** be used to change the lookaside configuration on individual connections.)^
|
|
2024
|
+
** The [-DSQLITE_DEFAULT_LOOKASIDE] option can be used to change the
|
|
2025
|
+
** default lookaside configuration at compile-time.
|
|
2026
|
+
** </dd>
|
|
1999
2027
|
**
|
|
2000
2028
|
** [[SQLITE_CONFIG_PCACHE2]] <dt>SQLITE_CONFIG_PCACHE2</dt>
|
|
2001
2029
|
** <dd> ^(The SQLITE_CONFIG_PCACHE2 option takes a single argument which is
|
|
@@ -2005,7 +2033,7 @@ struct sqlite3_mem_methods {
|
|
|
2005
2033
|
**
|
|
2006
2034
|
** [[SQLITE_CONFIG_GETPCACHE2]] <dt>SQLITE_CONFIG_GETPCACHE2</dt>
|
|
2007
2035
|
** <dd> ^(The SQLITE_CONFIG_GETPCACHE2 option takes a single argument which
|
|
2008
|
-
** is a pointer to an [sqlite3_pcache_methods2] object. SQLite copies
|
|
2036
|
+
** is a pointer to an [sqlite3_pcache_methods2] object. SQLite copies off
|
|
2009
2037
|
** the current page cache implementation into that object.)^ </dd>
|
|
2010
2038
|
**
|
|
2011
2039
|
** [[SQLITE_CONFIG_LOG]] <dt>SQLITE_CONFIG_LOG</dt>
|
|
@@ -2022,7 +2050,7 @@ struct sqlite3_mem_methods {
|
|
|
2022
2050
|
** the logger function is a copy of the first parameter to the corresponding
|
|
2023
2051
|
** [sqlite3_log()] call and is intended to be a [result code] or an
|
|
2024
2052
|
** [extended result code]. ^The third parameter passed to the logger is
|
|
2025
|
-
** log message after formatting via [sqlite3_snprintf()].
|
|
2053
|
+
** a log message after formatting via [sqlite3_snprintf()].
|
|
2026
2054
|
** The SQLite logging interface is not reentrant; the logger function
|
|
2027
2055
|
** supplied by the application must not invoke any SQLite interface.
|
|
2028
2056
|
** In a multi-threaded application, the application-defined logger
|
|
@@ -2213,7 +2241,7 @@ struct sqlite3_mem_methods {
|
|
|
2213
2241
|
** These constants are the available integer configuration options that
|
|
2214
2242
|
** can be passed as the second parameter to the [sqlite3_db_config()] interface.
|
|
2215
2243
|
**
|
|
2216
|
-
** The [sqlite3_db_config()] interface is a var-args
|
|
2244
|
+
** The [sqlite3_db_config()] interface is a var-args function. It takes a
|
|
2217
2245
|
** variable number of parameters, though always at least two. The number of
|
|
2218
2246
|
** parameters passed into sqlite3_db_config() depends on which of these
|
|
2219
2247
|
** constants is given as the second parameter. This documentation page
|
|
@@ -2232,31 +2260,50 @@ struct sqlite3_mem_methods {
|
|
|
2232
2260
|
** [[SQLITE_DBCONFIG_LOOKASIDE]]
|
|
2233
2261
|
** <dt>SQLITE_DBCONFIG_LOOKASIDE</dt>
|
|
2234
2262
|
** <dd> The SQLITE_DBCONFIG_LOOKASIDE option is used to adjust the
|
|
2235
|
-
** configuration of the lookaside memory allocator within a database
|
|
2263
|
+
** configuration of the [lookaside memory allocator] within a database
|
|
2236
2264
|
** connection.
|
|
2237
2265
|
** The arguments to the SQLITE_DBCONFIG_LOOKASIDE option are <i>not</i>
|
|
2238
2266
|
** in the [DBCONFIG arguments|usual format].
|
|
2239
2267
|
** The SQLITE_DBCONFIG_LOOKASIDE option takes three arguments, not two,
|
|
2240
2268
|
** so that a call to [sqlite3_db_config()] that uses SQLITE_DBCONFIG_LOOKASIDE
|
|
2241
2269
|
** should have a total of five parameters.
|
|
2242
|
-
**
|
|
2270
|
+
** <ol>
|
|
2271
|
+
** <li><p>The first argument ("buf") is a
|
|
2243
2272
|
** pointer to a memory buffer to use for lookaside memory.
|
|
2244
|
-
**
|
|
2245
|
-
**
|
|
2246
|
-
**
|
|
2247
|
-
** size of each lookaside buffer slot.
|
|
2248
|
-
**
|
|
2249
|
-
**
|
|
2250
|
-
**
|
|
2251
|
-
**
|
|
2252
|
-
**
|
|
2273
|
+
** The first argument may be NULL in which case SQLite will allocate the
|
|
2274
|
+
** lookaside buffer itself using [sqlite3_malloc()].
|
|
2275
|
+
** <li><P>The second argument ("sz") is the
|
|
2276
|
+
** size of each lookaside buffer slot. Lookaside is disabled if "sz"
|
|
2277
|
+
** is less than 8. The "sz" argument should be a multiple of 8 less than
|
|
2278
|
+
** 65536. If "sz" does not meet this constraint, it is reduced in size until
|
|
2279
|
+
** it does.
|
|
2280
|
+
** <li><p>The third argument ("cnt") is the number of slots. Lookaside is disabled
|
|
2281
|
+
** if "cnt"is less than 1. The "cnt" value will be reduced, if necessary, so
|
|
2282
|
+
** that the product of "sz" and "cnt" does not exceed 2,147,418,112. The "cnt"
|
|
2283
|
+
** parameter is usually chosen so that the product of "sz" and "cnt" is less
|
|
2284
|
+
** than 1,000,000.
|
|
2285
|
+
** </ol>
|
|
2286
|
+
** <p>If the "buf" argument is not NULL, then it must
|
|
2287
|
+
** point to a memory buffer with a size that is greater than
|
|
2288
|
+
** or equal to the product of "sz" and "cnt".
|
|
2289
|
+
** The buffer must be aligned to an 8-byte boundary.
|
|
2290
|
+
** The lookaside memory
|
|
2253
2291
|
** configuration for a database connection can only be changed when that
|
|
2254
2292
|
** connection is not currently using lookaside memory, or in other words
|
|
2255
|
-
** when the
|
|
2256
|
-
** [sqlite3_db_status](D,[SQLITE_DBSTATUS_LOOKASIDE_USED],...) is zero.
|
|
2293
|
+
** when the value returned by [SQLITE_DBSTATUS_LOOKASIDE_USED] is zero.
|
|
2257
2294
|
** Any attempt to change the lookaside memory configuration when lookaside
|
|
2258
2295
|
** memory is in use leaves the configuration unchanged and returns
|
|
2259
|
-
** [SQLITE_BUSY].
|
|
2296
|
+
** [SQLITE_BUSY].
|
|
2297
|
+
** If the "buf" argument is NULL and an attempt
|
|
2298
|
+
** to allocate memory based on "sz" and "cnt" fails, then
|
|
2299
|
+
** lookaside is silently disabled.
|
|
2300
|
+
** <p>
|
|
2301
|
+
** The [SQLITE_CONFIG_LOOKASIDE] configuration option can be used to set the
|
|
2302
|
+
** default lookaside configuration at initialization. The
|
|
2303
|
+
** [-DSQLITE_DEFAULT_LOOKASIDE] option can be used to set the default lookaside
|
|
2304
|
+
** configuration at compile-time. Typical values for lookaside are 1200 for
|
|
2305
|
+
** "sz" and 40 to 100 for "cnt".
|
|
2306
|
+
** </dd>
|
|
2260
2307
|
**
|
|
2261
2308
|
** [[SQLITE_DBCONFIG_ENABLE_FKEY]]
|
|
2262
2309
|
** <dt>SQLITE_DBCONFIG_ENABLE_FKEY</dt>
|
|
@@ -2306,17 +2353,20 @@ struct sqlite3_mem_methods {
|
|
|
2306
2353
|
**
|
|
2307
2354
|
** [[SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER]]
|
|
2308
2355
|
** <dt>SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER</dt>
|
|
2309
|
-
** <dd> ^This option is used to enable or disable the
|
|
2310
|
-
** [fts3_tokenizer()] function
|
|
2311
|
-
**
|
|
2312
|
-
** There must be two additional arguments.
|
|
2313
|
-
**
|
|
2314
|
-
**
|
|
2315
|
-
**
|
|
2316
|
-
**
|
|
2317
|
-
**
|
|
2318
|
-
**
|
|
2319
|
-
**
|
|
2356
|
+
** <dd> ^This option is used to enable or disable using the
|
|
2357
|
+
** [fts3_tokenizer()] function - part of the [FTS3] full-text search engine
|
|
2358
|
+
** extension - without using bound parameters as the parameters. Doing so
|
|
2359
|
+
** is disabled by default. There must be two additional arguments. The first
|
|
2360
|
+
** argument is an integer. If it is passed 0, then using fts3_tokenizer()
|
|
2361
|
+
** without bound parameters is disabled. If it is passed a positive value,
|
|
2362
|
+
** then calling fts3_tokenizer without bound parameters is enabled. If it
|
|
2363
|
+
** is passed a negative value, this setting is not modified - this can be
|
|
2364
|
+
** used to query for the current setting. The second parameter is a pointer
|
|
2365
|
+
** to an integer into which is written 0 or 1 to indicate the current value
|
|
2366
|
+
** of this setting (after it is modified, if applicable). The second
|
|
2367
|
+
** parameter may be a NULL pointer, in which case the value of the setting
|
|
2368
|
+
** is not reported back. Refer to [FTS3] documentation for further details.
|
|
2369
|
+
** </dd>
|
|
2320
2370
|
**
|
|
2321
2371
|
** [[SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION]]
|
|
2322
2372
|
** <dt>SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION</dt>
|
|
@@ -2328,8 +2378,8 @@ struct sqlite3_mem_methods {
|
|
|
2328
2378
|
** When the first argument to this interface is 1, then only the C-API is
|
|
2329
2379
|
** enabled and the SQL function remains disabled. If the first argument to
|
|
2330
2380
|
** this interface is 0, then both the C-API and the SQL function are disabled.
|
|
2331
|
-
** If the first argument is -1, then no changes are made to state of either
|
|
2332
|
-
** C-API or the SQL function.
|
|
2381
|
+
** If the first argument is -1, then no changes are made to the state of either
|
|
2382
|
+
** the C-API or the SQL function.
|
|
2333
2383
|
** The second parameter is a pointer to an integer into which
|
|
2334
2384
|
** is written 0 or 1 to indicate whether [sqlite3_load_extension()] interface
|
|
2335
2385
|
** is disabled or enabled following this call. The second parameter may
|
|
@@ -2447,7 +2497,7 @@ struct sqlite3_mem_methods {
|
|
|
2447
2497
|
** [[SQLITE_DBCONFIG_LEGACY_ALTER_TABLE]]
|
|
2448
2498
|
** <dt>SQLITE_DBCONFIG_LEGACY_ALTER_TABLE</dt>
|
|
2449
2499
|
** <dd>The SQLITE_DBCONFIG_LEGACY_ALTER_TABLE option activates or deactivates
|
|
2450
|
-
** the legacy behavior of the [ALTER TABLE RENAME] command such it
|
|
2500
|
+
** the legacy behavior of the [ALTER TABLE RENAME] command such that it
|
|
2451
2501
|
** behaves as it did prior to [version 3.24.0] (2018-06-04). See the
|
|
2452
2502
|
** "Compatibility Notice" on the [ALTER TABLE RENAME documentation] for
|
|
2453
2503
|
** additional information. This feature can also be turned on and off
|
|
@@ -2496,7 +2546,7 @@ struct sqlite3_mem_methods {
|
|
|
2496
2546
|
** <dt>SQLITE_DBCONFIG_LEGACY_FILE_FORMAT</dt>
|
|
2497
2547
|
** <dd>The SQLITE_DBCONFIG_LEGACY_FILE_FORMAT option activates or deactivates
|
|
2498
2548
|
** the legacy file format flag. When activated, this flag causes all newly
|
|
2499
|
-
** created database
|
|
2549
|
+
** created database files to have a schema format version number (the 4-byte
|
|
2500
2550
|
** integer found at offset 44 into the database header) of 1. This in turn
|
|
2501
2551
|
** means that the resulting database file will be readable and writable by
|
|
2502
2552
|
** any SQLite version back to 3.0.0 ([dateof:3.0.0]). Without this setting,
|
|
@@ -2523,7 +2573,7 @@ struct sqlite3_mem_methods {
|
|
|
2523
2573
|
** the database handle both when the SQL statement is prepared and when it
|
|
2524
2574
|
** is stepped. The flag is set (collection of statistics is enabled)
|
|
2525
2575
|
** by default. <p>This option takes two arguments: an integer and a pointer to
|
|
2526
|
-
** an integer
|
|
2576
|
+
** an integer. The first argument is 1, 0, or -1 to enable, disable, or
|
|
2527
2577
|
** leave unchanged the statement scanstatus option. If the second argument
|
|
2528
2578
|
** is not NULL, then the value of the statement scanstatus setting after
|
|
2529
2579
|
** processing the first argument is written into the integer that the second
|
|
@@ -2566,8 +2616,8 @@ struct sqlite3_mem_methods {
|
|
|
2566
2616
|
** <dd>The SQLITE_DBCONFIG_ENABLE_ATTACH_WRITE option enables or disables the
|
|
2567
2617
|
** ability of the [ATTACH DATABASE] SQL command to open a database for writing.
|
|
2568
2618
|
** This capability is enabled by default. Applications can disable or
|
|
2569
|
-
** reenable this capability using the current DBCONFIG option. If
|
|
2570
|
-
**
|
|
2619
|
+
** reenable this capability using the current DBCONFIG option. If
|
|
2620
|
+
** this capability is disabled, the [ATTACH] command will still work,
|
|
2571
2621
|
** but the database will be opened read-only. If this option is disabled,
|
|
2572
2622
|
** then the ability to create a new database using [ATTACH] is also disabled,
|
|
2573
2623
|
** regardless of the value of the [SQLITE_DBCONFIG_ENABLE_ATTACH_CREATE]
|
|
@@ -2601,7 +2651,7 @@ struct sqlite3_mem_methods {
|
|
|
2601
2651
|
**
|
|
2602
2652
|
** <p>Most of the SQLITE_DBCONFIG options take two arguments, so that the
|
|
2603
2653
|
** overall call to [sqlite3_db_config()] has a total of four parameters.
|
|
2604
|
-
** The first argument (the third parameter to sqlite3_db_config()) is
|
|
2654
|
+
** The first argument (the third parameter to sqlite3_db_config()) is an integer.
|
|
2605
2655
|
** The second argument is a pointer to an integer. If the first argument is 1,
|
|
2606
2656
|
** then the option becomes enabled. If the first integer argument is 0, then the
|
|
2607
2657
|
** option is disabled. If the first argument is -1, then the option setting
|
|
@@ -2891,7 +2941,7 @@ SQLITE_API int sqlite3_is_interrupted(sqlite3*);
|
|
|
2891
2941
|
** ^These routines return 0 if the statement is incomplete. ^If a
|
|
2892
2942
|
** memory allocation fails, then SQLITE_NOMEM is returned.
|
|
2893
2943
|
**
|
|
2894
|
-
** ^These routines do not parse the SQL statements thus
|
|
2944
|
+
** ^These routines do not parse the SQL statements and thus
|
|
2895
2945
|
** will not detect syntactically incorrect SQL.
|
|
2896
2946
|
**
|
|
2897
2947
|
** ^(If SQLite has not been initialized using [sqlite3_initialize()] prior
|
|
@@ -2993,6 +3043,44 @@ SQLITE_API int sqlite3_busy_handler(sqlite3*,int(*)(void*,int),void*);
|
|
|
2993
3043
|
*/
|
|
2994
3044
|
SQLITE_API int sqlite3_busy_timeout(sqlite3*, int ms);
|
|
2995
3045
|
|
|
3046
|
+
/*
|
|
3047
|
+
** CAPI3REF: Set the Setlk Timeout
|
|
3048
|
+
** METHOD: sqlite3
|
|
3049
|
+
**
|
|
3050
|
+
** This routine is only useful in SQLITE_ENABLE_SETLK_TIMEOUT builds. If
|
|
3051
|
+
** the VFS supports blocking locks, it sets the timeout in ms used by
|
|
3052
|
+
** eligible locks taken on wal mode databases by the specified database
|
|
3053
|
+
** handle. In non-SQLITE_ENABLE_SETLK_TIMEOUT builds, or if the VFS does
|
|
3054
|
+
** not support blocking locks, this function is a no-op.
|
|
3055
|
+
**
|
|
3056
|
+
** Passing 0 to this function disables blocking locks altogether. Passing
|
|
3057
|
+
** -1 to this function requests that the VFS blocks for a long time -
|
|
3058
|
+
** indefinitely if possible. The results of passing any other negative value
|
|
3059
|
+
** are undefined.
|
|
3060
|
+
**
|
|
3061
|
+
** Internally, each SQLite database handle stores two timeout values - the
|
|
3062
|
+
** busy-timeout (used for rollback mode databases, or if the VFS does not
|
|
3063
|
+
** support blocking locks) and the setlk-timeout (used for blocking locks
|
|
3064
|
+
** on wal-mode databases). The sqlite3_busy_timeout() method sets both
|
|
3065
|
+
** values, this function sets only the setlk-timeout value. Therefore,
|
|
3066
|
+
** to configure separate busy-timeout and setlk-timeout values for a single
|
|
3067
|
+
** database handle, call sqlite3_busy_timeout() followed by this function.
|
|
3068
|
+
**
|
|
3069
|
+
** Whenever the number of connections to a wal mode database falls from
|
|
3070
|
+
** 1 to 0, the last connection takes an exclusive lock on the database,
|
|
3071
|
+
** then checkpoints and deletes the wal file. While it is doing this, any
|
|
3072
|
+
** new connection that tries to read from the database fails with an
|
|
3073
|
+
** SQLITE_BUSY error. Or, if the SQLITE_SETLK_BLOCK_ON_CONNECT flag is
|
|
3074
|
+
** passed to this API, the new connection blocks until the exclusive lock
|
|
3075
|
+
** has been released.
|
|
3076
|
+
*/
|
|
3077
|
+
SQLITE_API int sqlite3_setlk_timeout(sqlite3*, int ms, int flags);
|
|
3078
|
+
|
|
3079
|
+
/*
|
|
3080
|
+
** CAPI3REF: Flags for sqlite3_setlk_timeout()
|
|
3081
|
+
*/
|
|
3082
|
+
#define SQLITE_SETLK_BLOCK_ON_CONNECT 0x01
|
|
3083
|
+
|
|
2996
3084
|
/*
|
|
2997
3085
|
** CAPI3REF: Convenience Routines For Running Queries
|
|
2998
3086
|
** METHOD: sqlite3
|
|
@@ -3000,7 +3088,7 @@ SQLITE_API int sqlite3_busy_timeout(sqlite3*, int ms);
|
|
|
3000
3088
|
** This is a legacy interface that is preserved for backwards compatibility.
|
|
3001
3089
|
** Use of this interface is not recommended.
|
|
3002
3090
|
**
|
|
3003
|
-
** Definition: A <b>result table</b> is memory data structure created by the
|
|
3091
|
+
** Definition: A <b>result table</b> is a memory data structure created by the
|
|
3004
3092
|
** [sqlite3_get_table()] interface. A result table records the
|
|
3005
3093
|
** complete query results from one or more queries.
|
|
3006
3094
|
**
|
|
@@ -3143,7 +3231,7 @@ SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
|
|
|
3143
3231
|
** ^Calling sqlite3_free() with a pointer previously returned
|
|
3144
3232
|
** by sqlite3_malloc() or sqlite3_realloc() releases that memory so
|
|
3145
3233
|
** that it might be reused. ^The sqlite3_free() routine is
|
|
3146
|
-
** a no-op if is called with a NULL pointer. Passing a NULL pointer
|
|
3234
|
+
** a no-op if it is called with a NULL pointer. Passing a NULL pointer
|
|
3147
3235
|
** to sqlite3_free() is harmless. After being freed, memory
|
|
3148
3236
|
** should neither be read nor written. Even reading previously freed
|
|
3149
3237
|
** memory might result in a segmentation fault or other severe error.
|
|
@@ -3161,13 +3249,13 @@ SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
|
|
|
3161
3249
|
** sqlite3_free(X).
|
|
3162
3250
|
** ^sqlite3_realloc(X,N) returns a pointer to a memory allocation
|
|
3163
3251
|
** of at least N bytes in size or NULL if insufficient memory is available.
|
|
3164
|
-
** ^If M is the size of the prior allocation, then min(N,M) bytes
|
|
3165
|
-
**
|
|
3252
|
+
** ^If M is the size of the prior allocation, then min(N,M) bytes of the
|
|
3253
|
+
** prior allocation are copied into the beginning of the buffer returned
|
|
3166
3254
|
** by sqlite3_realloc(X,N) and the prior allocation is freed.
|
|
3167
3255
|
** ^If sqlite3_realloc(X,N) returns NULL and N is positive, then the
|
|
3168
3256
|
** prior allocation is not freed.
|
|
3169
3257
|
**
|
|
3170
|
-
** ^The sqlite3_realloc64(X,N)
|
|
3258
|
+
** ^The sqlite3_realloc64(X,N) interface works the same as
|
|
3171
3259
|
** sqlite3_realloc(X,N) except that N is a 64-bit unsigned integer instead
|
|
3172
3260
|
** of a 32-bit signed integer.
|
|
3173
3261
|
**
|
|
@@ -3217,7 +3305,7 @@ SQLITE_API sqlite3_uint64 sqlite3_msize(void*);
|
|
|
3217
3305
|
** was last reset. ^The values returned by [sqlite3_memory_used()] and
|
|
3218
3306
|
** [sqlite3_memory_highwater()] include any overhead
|
|
3219
3307
|
** added by SQLite in its implementation of [sqlite3_malloc()],
|
|
3220
|
-
** but not overhead added by
|
|
3308
|
+
** but not overhead added by any underlying system library
|
|
3221
3309
|
** routines that [sqlite3_malloc()] may call.
|
|
3222
3310
|
**
|
|
3223
3311
|
** ^The memory high-water mark is reset to the current value of
|
|
@@ -3669,7 +3757,7 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
|
|
|
3669
3757
|
** there is no harm in trying.)
|
|
3670
3758
|
**
|
|
3671
3759
|
** ^(<dt>[SQLITE_OPEN_SHAREDCACHE]</dt>
|
|
3672
|
-
** <dd>The database is opened [shared cache] enabled, overriding
|
|
3760
|
+
** <dd>The database is opened with [shared cache] enabled, overriding
|
|
3673
3761
|
** the default shared cache setting provided by
|
|
3674
3762
|
** [sqlite3_enable_shared_cache()].)^
|
|
3675
3763
|
** The [use of shared cache mode is discouraged] and hence shared cache
|
|
@@ -3677,7 +3765,7 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
|
|
|
3677
3765
|
** this option is a no-op.
|
|
3678
3766
|
**
|
|
3679
3767
|
** ^(<dt>[SQLITE_OPEN_PRIVATECACHE]</dt>
|
|
3680
|
-
** <dd>The database is opened [shared cache] disabled, overriding
|
|
3768
|
+
** <dd>The database is opened with [shared cache] disabled, overriding
|
|
3681
3769
|
** the default shared cache setting provided by
|
|
3682
3770
|
** [sqlite3_enable_shared_cache()].)^
|
|
3683
3771
|
**
|
|
@@ -4012,7 +4100,7 @@ SQLITE_API sqlite3_file *sqlite3_database_file_object(const char*);
|
|
|
4012
4100
|
**
|
|
4013
4101
|
** The sqlite3_create_filename(D,J,W,N,P) allocates memory to hold a version of
|
|
4014
4102
|
** database filename D with corresponding journal file J and WAL file W and
|
|
4015
|
-
**
|
|
4103
|
+
** an array P of N URI Key/Value pairs. The result from
|
|
4016
4104
|
** sqlite3_create_filename(D,J,W,N,P) is a pointer to a database filename that
|
|
4017
4105
|
** is safe to pass to routines like:
|
|
4018
4106
|
** <ul>
|
|
@@ -4095,7 +4183,7 @@ SQLITE_API void sqlite3_free_filename(sqlite3_filename);
|
|
|
4095
4183
|
** subsequent calls to other SQLite interface functions.)^
|
|
4096
4184
|
**
|
|
4097
4185
|
** ^The sqlite3_errstr(E) interface returns the English-language text
|
|
4098
|
-
** that describes the [result code] E, as UTF-8, or NULL if E is not
|
|
4186
|
+
** that describes the [result code] E, as UTF-8, or NULL if E is not a
|
|
4099
4187
|
** result code for which a text error message is available.
|
|
4100
4188
|
** ^(Memory to hold the error message string is managed internally
|
|
4101
4189
|
** and must not be freed by the application)^.
|
|
@@ -4103,7 +4191,7 @@ SQLITE_API void sqlite3_free_filename(sqlite3_filename);
|
|
|
4103
4191
|
** ^If the most recent error references a specific token in the input
|
|
4104
4192
|
** SQL, the sqlite3_error_offset() interface returns the byte offset
|
|
4105
4193
|
** of the start of that token. ^The byte offset returned by
|
|
4106
|
-
** sqlite3_error_offset() assumes that the input SQL is
|
|
4194
|
+
** sqlite3_error_offset() assumes that the input SQL is UTF-8.
|
|
4107
4195
|
** ^If the most recent error does not reference a specific token in the input
|
|
4108
4196
|
** SQL, then the sqlite3_error_offset() function returns -1.
|
|
4109
4197
|
**
|
|
@@ -4128,6 +4216,34 @@ SQLITE_API const void *sqlite3_errmsg16(sqlite3*);
|
|
|
4128
4216
|
SQLITE_API const char *sqlite3_errstr(int);
|
|
4129
4217
|
SQLITE_API int sqlite3_error_offset(sqlite3 *db);
|
|
4130
4218
|
|
|
4219
|
+
/*
|
|
4220
|
+
** CAPI3REF: Set Error Codes And Message
|
|
4221
|
+
** METHOD: sqlite3
|
|
4222
|
+
**
|
|
4223
|
+
** Set the error code of the database handle passed as the first argument
|
|
4224
|
+
** to errcode, and the error message to a copy of nul-terminated string
|
|
4225
|
+
** zErrMsg. If zErrMsg is passed NULL, then the error message is set to
|
|
4226
|
+
** the default message associated with the supplied error code. Subsequent
|
|
4227
|
+
** calls to [sqlite3_errcode()] and [sqlite3_errmsg()] and similar will
|
|
4228
|
+
** return the values set by this routine in place of what was previously
|
|
4229
|
+
** set by SQLite itself.
|
|
4230
|
+
**
|
|
4231
|
+
** This function returns SQLITE_OK if the error code and error message are
|
|
4232
|
+
** successfully set, SQLITE_NOMEM if an OOM occurs, and SQLITE_MISUSE if
|
|
4233
|
+
** the database handle is NULL or invalid.
|
|
4234
|
+
**
|
|
4235
|
+
** The error code and message set by this routine remains in effect until
|
|
4236
|
+
** they are changed, either by another call to this routine or until they are
|
|
4237
|
+
** changed to by SQLite itself to reflect the result of some subsquent
|
|
4238
|
+
** API call.
|
|
4239
|
+
**
|
|
4240
|
+
** This function is intended for use by SQLite extensions or wrappers. The
|
|
4241
|
+
** idea is that an extension or wrapper can use this routine to set error
|
|
4242
|
+
** messages and error codes and thus behave more like a core SQLite
|
|
4243
|
+
** feature from the point of view of an application.
|
|
4244
|
+
*/
|
|
4245
|
+
SQLITE_API int sqlite3_set_errmsg(sqlite3 *db, int errcode, const char *zErrMsg);
|
|
4246
|
+
|
|
4131
4247
|
/*
|
|
4132
4248
|
** CAPI3REF: Prepared Statement Object
|
|
4133
4249
|
** KEYWORDS: {prepared statement} {prepared statements}
|
|
@@ -4202,8 +4318,8 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
|
|
|
4202
4318
|
**
|
|
4203
4319
|
** These constants define various performance limits
|
|
4204
4320
|
** that can be lowered at run-time using [sqlite3_limit()].
|
|
4205
|
-
**
|
|
4206
|
-
**
|
|
4321
|
+
** A concise description of these limits follows, and additional information
|
|
4322
|
+
** is available at [limits | Limits in SQLite].
|
|
4207
4323
|
**
|
|
4208
4324
|
** <dl>
|
|
4209
4325
|
** [[SQLITE_LIMIT_LENGTH]] ^(<dt>SQLITE_LIMIT_LENGTH</dt>
|
|
@@ -4268,7 +4384,7 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
|
|
|
4268
4384
|
/*
|
|
4269
4385
|
** CAPI3REF: Prepare Flags
|
|
4270
4386
|
**
|
|
4271
|
-
** These constants define various flags that can be passed into
|
|
4387
|
+
** These constants define various flags that can be passed into the
|
|
4272
4388
|
** "prepFlags" parameter of the [sqlite3_prepare_v3()] and
|
|
4273
4389
|
** [sqlite3_prepare16_v3()] interfaces.
|
|
4274
4390
|
**
|
|
@@ -4355,7 +4471,7 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
|
|
|
4355
4471
|
** there is a small performance advantage to passing an nByte parameter that
|
|
4356
4472
|
** is the number of bytes in the input string <i>including</i>
|
|
4357
4473
|
** the nul-terminator.
|
|
4358
|
-
** Note that nByte
|
|
4474
|
+
** Note that nByte measures the length of the input in bytes, not
|
|
4359
4475
|
** characters, even for the UTF-16 interfaces.
|
|
4360
4476
|
**
|
|
4361
4477
|
** ^If pzTail is not NULL then *pzTail is made to point to the first byte
|
|
@@ -4489,7 +4605,7 @@ SQLITE_API int sqlite3_prepare16_v3(
|
|
|
4489
4605
|
**
|
|
4490
4606
|
** ^The sqlite3_expanded_sql() interface returns NULL if insufficient memory
|
|
4491
4607
|
** is available to hold the result, or if the result would exceed the
|
|
4492
|
-
**
|
|
4608
|
+
** maximum string length determined by the [SQLITE_LIMIT_LENGTH].
|
|
4493
4609
|
**
|
|
4494
4610
|
** ^The [SQLITE_TRACE_SIZE_LIMIT] compile-time option limits the size of
|
|
4495
4611
|
** bound parameter expansions. ^The [SQLITE_OMIT_TRACE] compile-time
|
|
@@ -4677,7 +4793,7 @@ typedef struct sqlite3_value sqlite3_value;
|
|
|
4677
4793
|
**
|
|
4678
4794
|
** The context in which an SQL function executes is stored in an
|
|
4679
4795
|
** sqlite3_context object. ^A pointer to an sqlite3_context object
|
|
4680
|
-
** is always first parameter to [application-defined SQL functions].
|
|
4796
|
+
** is always the first parameter to [application-defined SQL functions].
|
|
4681
4797
|
** The application-defined SQL function implementation will pass this
|
|
4682
4798
|
** pointer through into calls to [sqlite3_result_int | sqlite3_result()],
|
|
4683
4799
|
** [sqlite3_aggregate_context()], [sqlite3_user_data()],
|
|
@@ -4693,7 +4809,7 @@ typedef struct sqlite3_context sqlite3_context;
|
|
|
4693
4809
|
** METHOD: sqlite3_stmt
|
|
4694
4810
|
**
|
|
4695
4811
|
** ^(In the SQL statement text input to [sqlite3_prepare_v2()] and its variants,
|
|
4696
|
-
** literals may be replaced by a [parameter] that matches one of following
|
|
4812
|
+
** literals may be replaced by a [parameter] that matches one of the following
|
|
4697
4813
|
** templates:
|
|
4698
4814
|
**
|
|
4699
4815
|
** <ul>
|
|
@@ -4738,7 +4854,7 @@ typedef struct sqlite3_context sqlite3_context;
|
|
|
4738
4854
|
**
|
|
4739
4855
|
** [[byte-order determination rules]] ^The byte-order of
|
|
4740
4856
|
** UTF16 input text is determined by the byte-order mark (BOM, U+FEFF)
|
|
4741
|
-
** found in first character, which is removed, or in the absence of a BOM
|
|
4857
|
+
** found in the first character, which is removed, or in the absence of a BOM
|
|
4742
4858
|
** the byte order is the native byte order of the host
|
|
4743
4859
|
** machine for sqlite3_bind_text16() or the byte order specified in
|
|
4744
4860
|
** the 6th parameter for sqlite3_bind_text64().)^
|
|
@@ -4758,7 +4874,7 @@ typedef struct sqlite3_context sqlite3_context;
|
|
|
4758
4874
|
** or sqlite3_bind_text16() or sqlite3_bind_text64() then
|
|
4759
4875
|
** that parameter must be the byte offset
|
|
4760
4876
|
** where the NUL terminator would occur assuming the string were NUL
|
|
4761
|
-
** terminated. If any NUL characters
|
|
4877
|
+
** terminated. If any NUL characters occur at byte offsets less than
|
|
4762
4878
|
** the value of the fourth parameter then the resulting string value will
|
|
4763
4879
|
** contain embedded NULs. The result of expressions involving strings
|
|
4764
4880
|
** with embedded NULs is undefined.
|
|
@@ -4801,9 +4917,11 @@ typedef struct sqlite3_context sqlite3_context;
|
|
|
4801
4917
|
** associated with the pointer P of type T. ^D is either a NULL pointer or
|
|
4802
4918
|
** a pointer to a destructor function for P. ^SQLite will invoke the
|
|
4803
4919
|
** destructor D with a single argument of P when it is finished using
|
|
4804
|
-
** P
|
|
4805
|
-
**
|
|
4806
|
-
**
|
|
4920
|
+
** P, even if the call to sqlite3_bind_pointer() fails. Due to a
|
|
4921
|
+
** historical design quirk, results are undefined if D is
|
|
4922
|
+
** SQLITE_TRANSIENT. The T parameter should be a static string,
|
|
4923
|
+
** preferably a string literal. The sqlite3_bind_pointer() routine is
|
|
4924
|
+
** part of the [pointer passing interface] added for SQLite 3.20.0.
|
|
4807
4925
|
**
|
|
4808
4926
|
** ^If any of the sqlite3_bind_*() routines are called with a NULL pointer
|
|
4809
4927
|
** for the [prepared statement] or with a prepared statement for which
|
|
@@ -4970,7 +5088,7 @@ SQLITE_API const void *sqlite3_column_name16(sqlite3_stmt*, int N);
|
|
|
4970
5088
|
** METHOD: sqlite3_stmt
|
|
4971
5089
|
**
|
|
4972
5090
|
** ^These routines provide a means to determine the database, table, and
|
|
4973
|
-
** table column that is the origin of a particular result column in
|
|
5091
|
+
** table column that is the origin of a particular result column in a
|
|
4974
5092
|
** [SELECT] statement.
|
|
4975
5093
|
** ^The name of the database or table or column can be returned as
|
|
4976
5094
|
** either a UTF-8 or UTF-16 string. ^The _database_ routines return
|
|
@@ -5108,7 +5226,7 @@ SQLITE_API const void *sqlite3_column_decltype16(sqlite3_stmt*,int);
|
|
|
5108
5226
|
** other than [SQLITE_ROW] before any subsequent invocation of
|
|
5109
5227
|
** sqlite3_step(). Failure to reset the prepared statement using
|
|
5110
5228
|
** [sqlite3_reset()] would result in an [SQLITE_MISUSE] return from
|
|
5111
|
-
** sqlite3_step(). But after [version 3.6.23.1] ([dateof:3.6.23.1],
|
|
5229
|
+
** sqlite3_step(). But after [version 3.6.23.1] ([dateof:3.6.23.1]),
|
|
5112
5230
|
** sqlite3_step() began
|
|
5113
5231
|
** calling [sqlite3_reset()] automatically in this circumstance rather
|
|
5114
5232
|
** than returning [SQLITE_MISUSE]. This is not considered a compatibility
|
|
@@ -5414,7 +5532,7 @@ SQLITE_API int sqlite3_column_type(sqlite3_stmt*, int iCol);
|
|
|
5414
5532
|
**
|
|
5415
5533
|
** ^The sqlite3_finalize() function is called to delete a [prepared statement].
|
|
5416
5534
|
** ^If the most recent evaluation of the statement encountered no errors
|
|
5417
|
-
** or if the statement
|
|
5535
|
+
** or if the statement has never been evaluated, then sqlite3_finalize() returns
|
|
5418
5536
|
** SQLITE_OK. ^If the most recent evaluation of statement S failed, then
|
|
5419
5537
|
** sqlite3_finalize(S) returns the appropriate [error code] or
|
|
5420
5538
|
** [extended error code].
|
|
@@ -5539,8 +5657,8 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt);
|
|
|
5539
5657
|
**
|
|
5540
5658
|
** For best security, the [SQLITE_DIRECTONLY] flag is recommended for
|
|
5541
5659
|
** all application-defined SQL functions that do not need to be
|
|
5542
|
-
** used inside of triggers,
|
|
5543
|
-
** the database schema. This
|
|
5660
|
+
** used inside of triggers, views, CHECK constraints, or other elements of
|
|
5661
|
+
** the database schema. This flag is especially recommended for SQL
|
|
5544
5662
|
** functions that have side effects or reveal internal application state.
|
|
5545
5663
|
** Without this flag, an attacker might be able to modify the schema of
|
|
5546
5664
|
** a database file to include invocations of the function with parameters
|
|
@@ -5571,7 +5689,7 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt);
|
|
|
5571
5689
|
** [user-defined window functions|available here].
|
|
5572
5690
|
**
|
|
5573
5691
|
** ^(If the final parameter to sqlite3_create_function_v2() or
|
|
5574
|
-
** sqlite3_create_window_function() is not NULL, then it is destructor for
|
|
5692
|
+
** sqlite3_create_window_function() is not NULL, then it is the destructor for
|
|
5575
5693
|
** the application data pointer. The destructor is invoked when the function
|
|
5576
5694
|
** is deleted, either by being overloaded or when the database connection
|
|
5577
5695
|
** closes.)^ ^The destructor is also invoked if the call to
|
|
@@ -5646,7 +5764,7 @@ SQLITE_API int sqlite3_create_window_function(
|
|
|
5646
5764
|
/*
|
|
5647
5765
|
** CAPI3REF: Text Encodings
|
|
5648
5766
|
**
|
|
5649
|
-
** These
|
|
5767
|
+
** These constants define integer codes that represent the various
|
|
5650
5768
|
** text encodings supported by SQLite.
|
|
5651
5769
|
*/
|
|
5652
5770
|
#define SQLITE_UTF8 1 /* IMP: R-37514-35566 */
|
|
@@ -5738,7 +5856,7 @@ SQLITE_API int sqlite3_create_window_function(
|
|
|
5738
5856
|
** result.
|
|
5739
5857
|
** Every function that invokes [sqlite3_result_subtype()] should have this
|
|
5740
5858
|
** property. If it does not, then the call to [sqlite3_result_subtype()]
|
|
5741
|
-
** might become a no-op if the function is used as term in an
|
|
5859
|
+
** might become a no-op if the function is used as a term in an
|
|
5742
5860
|
** [expression index]. On the other hand, SQL functions that never invoke
|
|
5743
5861
|
** [sqlite3_result_subtype()] should avoid setting this property, as the
|
|
5744
5862
|
** purpose of this property is to disable certain optimizations that are
|
|
@@ -5865,7 +5983,7 @@ SQLITE_API SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int6
|
|
|
5865
5983
|
** sqlite3_value_nochange(X) interface returns true if and only if
|
|
5866
5984
|
** the column corresponding to X is unchanged by the UPDATE operation
|
|
5867
5985
|
** that the xUpdate method call was invoked to implement and if
|
|
5868
|
-
**
|
|
5986
|
+
** the prior [xColumn] method call that was invoked to extract
|
|
5869
5987
|
** the value for that column returned without setting a result (probably
|
|
5870
5988
|
** because it queried [sqlite3_vtab_nochange()] and found that the column
|
|
5871
5989
|
** was unchanging). ^Within an [xUpdate] method, any value for which
|
|
@@ -5971,7 +6089,7 @@ SQLITE_API unsigned int sqlite3_value_subtype(sqlite3_value*);
|
|
|
5971
6089
|
** METHOD: sqlite3_value
|
|
5972
6090
|
**
|
|
5973
6091
|
** ^The sqlite3_value_dup(V) interface makes a copy of the [sqlite3_value]
|
|
5974
|
-
** object
|
|
6092
|
+
** object V and returns a pointer to that copy. ^The [sqlite3_value] returned
|
|
5975
6093
|
** is a [protected sqlite3_value] object even if the input is not.
|
|
5976
6094
|
** ^The sqlite3_value_dup(V) interface returns NULL if V is NULL or if a
|
|
5977
6095
|
** memory allocation fails. ^If V is a [pointer value], then the result
|
|
@@ -6009,7 +6127,7 @@ SQLITE_API void sqlite3_value_free(sqlite3_value*);
|
|
|
6009
6127
|
** allocation error occurs.
|
|
6010
6128
|
**
|
|
6011
6129
|
** ^(The amount of space allocated by sqlite3_aggregate_context(C,N) is
|
|
6012
|
-
** determined by the N parameter on first successful call. Changing the
|
|
6130
|
+
** determined by the N parameter on the first successful call. Changing the
|
|
6013
6131
|
** value of N in any subsequent call to sqlite3_aggregate_context() within
|
|
6014
6132
|
** the same aggregate function instance will not resize the memory
|
|
6015
6133
|
** allocation.)^ Within the xFinal callback, it is customary to set
|
|
@@ -6138,6 +6256,7 @@ SQLITE_API void sqlite3_set_auxdata(sqlite3_context*, int N, void*, void (*)(voi
|
|
|
6138
6256
|
** or a NULL pointer if there were no prior calls to
|
|
6139
6257
|
** sqlite3_set_clientdata() with the same values of D and N.
|
|
6140
6258
|
** Names are compared using strcmp() and are thus case sensitive.
|
|
6259
|
+
** It returns 0 on success and SQLITE_NOMEM on allocation failure.
|
|
6141
6260
|
**
|
|
6142
6261
|
** If P and X are both non-NULL, then the destructor X is invoked with
|
|
6143
6262
|
** argument P on the first of the following occurrences:
|
|
@@ -6171,7 +6290,7 @@ SQLITE_API void sqlite3_set_auxdata(sqlite3_context*, int N, void*, void (*)(voi
|
|
|
6171
6290
|
**
|
|
6172
6291
|
** Security Warning: These interfaces should not be exposed in scripting
|
|
6173
6292
|
** languages or in other circumstances where it might be possible for an
|
|
6174
|
-
**
|
|
6293
|
+
** attacker to invoke them. Any agent that can invoke these interfaces
|
|
6175
6294
|
** can probably also take control of the process.
|
|
6176
6295
|
**
|
|
6177
6296
|
** Database connection client data is only available for SQLite
|
|
@@ -6285,7 +6404,7 @@ typedef void (*sqlite3_destructor_type)(void*);
|
|
|
6285
6404
|
** pointed to by the 2nd parameter are taken as the application-defined
|
|
6286
6405
|
** function result. If the 3rd parameter is non-negative, then it
|
|
6287
6406
|
** must be the byte offset into the string where the NUL terminator would
|
|
6288
|
-
** appear if the string
|
|
6407
|
+
** appear if the string were NUL terminated. If any NUL characters occur
|
|
6289
6408
|
** in the string at a byte offset that is less than the value of the 3rd
|
|
6290
6409
|
** parameter, then the resulting string will contain embedded NULs and the
|
|
6291
6410
|
** result of expressions operating on strings with embedded NULs is undefined.
|
|
@@ -6343,7 +6462,7 @@ typedef void (*sqlite3_destructor_type)(void*);
|
|
|
6343
6462
|
** string and preferably a string literal. The sqlite3_result_pointer()
|
|
6344
6463
|
** routine is part of the [pointer passing interface] added for SQLite 3.20.0.
|
|
6345
6464
|
**
|
|
6346
|
-
** If these routines are called from within
|
|
6465
|
+
** If these routines are called from within a different thread
|
|
6347
6466
|
** than the one containing the application-defined function that received
|
|
6348
6467
|
** the [sqlite3_context] pointer, the results are undefined.
|
|
6349
6468
|
*/
|
|
@@ -6749,7 +6868,7 @@ SQLITE_API sqlite3 *sqlite3_db_handle(sqlite3_stmt*);
|
|
|
6749
6868
|
** METHOD: sqlite3
|
|
6750
6869
|
**
|
|
6751
6870
|
** ^The sqlite3_db_name(D,N) interface returns a pointer to the schema name
|
|
6752
|
-
** for the N-th database on database connection D, or a NULL pointer
|
|
6871
|
+
** for the N-th database on database connection D, or a NULL pointer if N is
|
|
6753
6872
|
** out of range. An N value of 0 means the main database file. An N of 1 is
|
|
6754
6873
|
** the "temp" schema. Larger values of N correspond to various ATTACH-ed
|
|
6755
6874
|
** databases.
|
|
@@ -6844,7 +6963,7 @@ SQLITE_API int sqlite3_txn_state(sqlite3*,const char *zSchema);
|
|
|
6844
6963
|
** <dd>The SQLITE_TXN_READ state means that the database is currently
|
|
6845
6964
|
** in a read transaction. Content has been read from the database file
|
|
6846
6965
|
** but nothing in the database file has changed. The transaction state
|
|
6847
|
-
** will advanced to SQLITE_TXN_WRITE if any changes occur and there are
|
|
6966
|
+
** will be advanced to SQLITE_TXN_WRITE if any changes occur and there are
|
|
6848
6967
|
** no other conflicting concurrent write transactions. The transaction
|
|
6849
6968
|
** state will revert to SQLITE_TXN_NONE following a [ROLLBACK] or
|
|
6850
6969
|
** [COMMIT].</dd>
|
|
@@ -6853,7 +6972,7 @@ SQLITE_API int sqlite3_txn_state(sqlite3*,const char *zSchema);
|
|
|
6853
6972
|
** <dd>The SQLITE_TXN_WRITE state means that the database is currently
|
|
6854
6973
|
** in a write transaction. Content has been written to the database file
|
|
6855
6974
|
** but has not yet committed. The transaction state will change to
|
|
6856
|
-
**
|
|
6975
|
+
** SQLITE_TXN_NONE at the next [ROLLBACK] or [COMMIT].</dd>
|
|
6857
6976
|
*/
|
|
6858
6977
|
#define SQLITE_TXN_NONE 0
|
|
6859
6978
|
#define SQLITE_TXN_READ 1
|
|
@@ -7004,6 +7123,8 @@ SQLITE_API int sqlite3_autovacuum_pages(
|
|
|
7004
7123
|
**
|
|
7005
7124
|
** ^The second argument is a pointer to the function to invoke when a
|
|
7006
7125
|
** row is updated, inserted or deleted in a rowid table.
|
|
7126
|
+
** ^The update hook is disabled by invoking sqlite3_update_hook()
|
|
7127
|
+
** with a NULL pointer as the second parameter.
|
|
7007
7128
|
** ^The first argument to the callback is a copy of the third argument
|
|
7008
7129
|
** to sqlite3_update_hook().
|
|
7009
7130
|
** ^The second callback argument is one of [SQLITE_INSERT], [SQLITE_DELETE],
|
|
@@ -7132,7 +7253,7 @@ SQLITE_API int sqlite3_db_release_memory(sqlite3*);
|
|
|
7132
7253
|
** CAPI3REF: Impose A Limit On Heap Size
|
|
7133
7254
|
**
|
|
7134
7255
|
** These interfaces impose limits on the amount of heap memory that will be
|
|
7135
|
-
** by all database connections within a single process.
|
|
7256
|
+
** used by all database connections within a single process.
|
|
7136
7257
|
**
|
|
7137
7258
|
** ^The sqlite3_soft_heap_limit64() interface sets and/or queries the
|
|
7138
7259
|
** soft limit on the amount of heap memory that may be allocated by SQLite.
|
|
@@ -7190,7 +7311,7 @@ SQLITE_API int sqlite3_db_release_memory(sqlite3*);
|
|
|
7190
7311
|
** </ul>)^
|
|
7191
7312
|
**
|
|
7192
7313
|
** The circumstances under which SQLite will enforce the heap limits may
|
|
7193
|
-
**
|
|
7314
|
+
** change in future releases of SQLite.
|
|
7194
7315
|
*/
|
|
7195
7316
|
SQLITE_API sqlite3_int64 sqlite3_soft_heap_limit64(sqlite3_int64 N);
|
|
7196
7317
|
SQLITE_API sqlite3_int64 sqlite3_hard_heap_limit64(sqlite3_int64 N);
|
|
@@ -7305,8 +7426,8 @@ SQLITE_API int sqlite3_table_column_metadata(
|
|
|
7305
7426
|
** ^The entry point is zProc.
|
|
7306
7427
|
** ^(zProc may be 0, in which case SQLite will try to come up with an
|
|
7307
7428
|
** entry point name on its own. It first tries "sqlite3_extension_init".
|
|
7308
|
-
** If that does not work, it constructs a name "sqlite3_X_init" where
|
|
7309
|
-
** X
|
|
7429
|
+
** If that does not work, it constructs a name "sqlite3_X_init" where
|
|
7430
|
+
** X consists of the lower-case equivalent of all ASCII alphabetic
|
|
7310
7431
|
** characters in the filename from the last "/" to the first following
|
|
7311
7432
|
** "." and omitting any initial "lib".)^
|
|
7312
7433
|
** ^The sqlite3_load_extension() interface returns
|
|
@@ -7377,7 +7498,7 @@ SQLITE_API int sqlite3_enable_load_extension(sqlite3 *db, int onoff);
|
|
|
7377
7498
|
** ^(Even though the function prototype shows that xEntryPoint() takes
|
|
7378
7499
|
** no arguments and returns void, SQLite invokes xEntryPoint() with three
|
|
7379
7500
|
** arguments and expects an integer result as if the signature of the
|
|
7380
|
-
** entry point
|
|
7501
|
+
** entry point were as follows:
|
|
7381
7502
|
**
|
|
7382
7503
|
** <blockquote><pre>
|
|
7383
7504
|
** int xEntryPoint(
|
|
@@ -7541,7 +7662,7 @@ struct sqlite3_module {
|
|
|
7541
7662
|
** virtual table and might not be checked again by the byte code.)^ ^(The
|
|
7542
7663
|
** aConstraintUsage[].omit flag is an optimization hint. When the omit flag
|
|
7543
7664
|
** is left in its default setting of false, the constraint will always be
|
|
7544
|
-
** checked separately in byte code. If the omit flag is
|
|
7665
|
+
** checked separately in byte code. If the omit flag is changed to true, then
|
|
7545
7666
|
** the constraint may or may not be checked in byte code. In other words,
|
|
7546
7667
|
** when the omit flag is true there is no guarantee that the constraint will
|
|
7547
7668
|
** not be checked again using byte code.)^
|
|
@@ -7567,7 +7688,7 @@ struct sqlite3_module {
|
|
|
7567
7688
|
** The xBestIndex method may optionally populate the idxFlags field with a
|
|
7568
7689
|
** mask of SQLITE_INDEX_SCAN_* flags. One such flag is
|
|
7569
7690
|
** [SQLITE_INDEX_SCAN_HEX], which if set causes the [EXPLAIN QUERY PLAN]
|
|
7570
|
-
** output to show the idxNum
|
|
7691
|
+
** output to show the idxNum as hex instead of as decimal. Another flag is
|
|
7571
7692
|
** SQLITE_INDEX_SCAN_UNIQUE, which if set indicates that the query plan will
|
|
7572
7693
|
** return at most one row.
|
|
7573
7694
|
**
|
|
@@ -7708,7 +7829,7 @@ struct sqlite3_index_info {
|
|
|
7708
7829
|
** the implementation of the [virtual table module]. ^The fourth
|
|
7709
7830
|
** parameter is an arbitrary client data pointer that is passed through
|
|
7710
7831
|
** into the [xCreate] and [xConnect] methods of the virtual table module
|
|
7711
|
-
** when a new virtual table is
|
|
7832
|
+
** when a new virtual table is being created or reinitialized.
|
|
7712
7833
|
**
|
|
7713
7834
|
** ^The sqlite3_create_module_v2() interface has a fifth parameter which
|
|
7714
7835
|
** is a pointer to a destructor for the pClientData. ^SQLite will
|
|
@@ -7873,7 +7994,7 @@ typedef struct sqlite3_blob sqlite3_blob;
|
|
|
7873
7994
|
** in *ppBlob. Otherwise an [error code] is returned and, unless the error
|
|
7874
7995
|
** code is SQLITE_MISUSE, *ppBlob is set to NULL.)^ ^This means that, provided
|
|
7875
7996
|
** the API is not misused, it is always safe to call [sqlite3_blob_close()]
|
|
7876
|
-
** on *ppBlob after this function
|
|
7997
|
+
** on *ppBlob after this function returns.
|
|
7877
7998
|
**
|
|
7878
7999
|
** This function fails with SQLITE_ERROR if any of the following are true:
|
|
7879
8000
|
** <ul>
|
|
@@ -7993,7 +8114,7 @@ SQLITE_API int sqlite3_blob_close(sqlite3_blob *);
|
|
|
7993
8114
|
**
|
|
7994
8115
|
** ^Returns the size in bytes of the BLOB accessible via the
|
|
7995
8116
|
** successfully opened [BLOB handle] in its only argument. ^The
|
|
7996
|
-
** incremental blob I/O routines can only read or
|
|
8117
|
+
** incremental blob I/O routines can only read or overwrite existing
|
|
7997
8118
|
** blob content; they cannot change the size of a blob.
|
|
7998
8119
|
**
|
|
7999
8120
|
** This routine only works on a [BLOB handle] which has been created
|
|
@@ -8143,7 +8264,7 @@ SQLITE_API int sqlite3_vfs_unregister(sqlite3_vfs*);
|
|
|
8143
8264
|
** ^The sqlite3_mutex_alloc() routine allocates a new
|
|
8144
8265
|
** mutex and returns a pointer to it. ^The sqlite3_mutex_alloc()
|
|
8145
8266
|
** routine returns NULL if it is unable to allocate the requested
|
|
8146
|
-
** mutex. The argument to sqlite3_mutex_alloc() must one of these
|
|
8267
|
+
** mutex. The argument to sqlite3_mutex_alloc() must be one of these
|
|
8147
8268
|
** integer constants:
|
|
8148
8269
|
**
|
|
8149
8270
|
** <ul>
|
|
@@ -8376,7 +8497,7 @@ SQLITE_API int sqlite3_mutex_notheld(sqlite3_mutex*);
|
|
|
8376
8497
|
** CAPI3REF: Retrieve the mutex for a database connection
|
|
8377
8498
|
** METHOD: sqlite3
|
|
8378
8499
|
**
|
|
8379
|
-
** ^This interface returns a pointer the [sqlite3_mutex] object that
|
|
8500
|
+
** ^This interface returns a pointer to the [sqlite3_mutex] object that
|
|
8380
8501
|
** serializes access to the [database connection] given in the argument
|
|
8381
8502
|
** when the [threading mode] is Serialized.
|
|
8382
8503
|
** ^If the [threading mode] is Single-thread or Multi-thread then this
|
|
@@ -8499,7 +8620,7 @@ SQLITE_API int sqlite3_test_control(int op, ...);
|
|
|
8499
8620
|
** CAPI3REF: SQL Keyword Checking
|
|
8500
8621
|
**
|
|
8501
8622
|
** These routines provide access to the set of SQL language keywords
|
|
8502
|
-
** recognized by SQLite. Applications can
|
|
8623
|
+
** recognized by SQLite. Applications can use these routines to determine
|
|
8503
8624
|
** whether or not a specific identifier needs to be escaped (for example,
|
|
8504
8625
|
** by enclosing in double-quotes) so as not to confuse the parser.
|
|
8505
8626
|
**
|
|
@@ -8667,7 +8788,7 @@ SQLITE_API void sqlite3_str_reset(sqlite3_str*);
|
|
|
8667
8788
|
** content of the dynamic string under construction in X. The value
|
|
8668
8789
|
** returned by [sqlite3_str_value(X)] is managed by the sqlite3_str object X
|
|
8669
8790
|
** and might be freed or altered by any subsequent method on the same
|
|
8670
|
-
** [sqlite3_str] object. Applications must not
|
|
8791
|
+
** [sqlite3_str] object. Applications must not use the pointer returned by
|
|
8671
8792
|
** [sqlite3_str_value(X)] after any subsequent method call on the same
|
|
8672
8793
|
** object. ^Applications may change the content of the string returned
|
|
8673
8794
|
** by [sqlite3_str_value(X)] as long as they do not write into any bytes
|
|
@@ -8753,7 +8874,7 @@ SQLITE_API int sqlite3_status64(
|
|
|
8753
8874
|
** allocation which could not be satisfied by the [SQLITE_CONFIG_PAGECACHE]
|
|
8754
8875
|
** buffer and where forced to overflow to [sqlite3_malloc()]. The
|
|
8755
8876
|
** returned value includes allocations that overflowed because they
|
|
8756
|
-
**
|
|
8877
|
+
** were too large (they were larger than the "sz" parameter to
|
|
8757
8878
|
** [SQLITE_CONFIG_PAGECACHE]) and allocations that overflowed because
|
|
8758
8879
|
** no space was left in the page cache.</dd>)^
|
|
8759
8880
|
**
|
|
@@ -8812,9 +8933,18 @@ SQLITE_API int sqlite3_status64(
|
|
|
8812
8933
|
** ^The sqlite3_db_status() routine returns SQLITE_OK on success and a
|
|
8813
8934
|
** non-zero [error code] on failure.
|
|
8814
8935
|
**
|
|
8936
|
+
** ^The sqlite3_db_status64(D,O,C,H,R) routine works exactly the same
|
|
8937
|
+
** way as sqlite3_db_status(D,O,C,H,R) routine except that the C and H
|
|
8938
|
+
** parameters are pointer to 64-bit integers (type: sqlite3_int64) instead
|
|
8939
|
+
** of pointers to 32-bit integers, which allows larger status values
|
|
8940
|
+
** to be returned. If a status value exceeds 2,147,483,647 then
|
|
8941
|
+
** sqlite3_db_status() will truncate the value whereas sqlite3_db_status64()
|
|
8942
|
+
** will return the full value.
|
|
8943
|
+
**
|
|
8815
8944
|
** See also: [sqlite3_status()] and [sqlite3_stmt_status()].
|
|
8816
8945
|
*/
|
|
8817
8946
|
SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int resetFlg);
|
|
8947
|
+
SQLITE_API int sqlite3_db_status64(sqlite3*,int,sqlite3_int64*,sqlite3_int64*,int);
|
|
8818
8948
|
|
|
8819
8949
|
/*
|
|
8820
8950
|
** CAPI3REF: Status Parameters for database connections
|
|
@@ -8837,28 +8967,29 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r
|
|
|
8837
8967
|
** [[SQLITE_DBSTATUS_LOOKASIDE_HIT]] ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_HIT</dt>
|
|
8838
8968
|
** <dd>This parameter returns the number of malloc attempts that were
|
|
8839
8969
|
** satisfied using lookaside memory. Only the high-water value is meaningful;
|
|
8840
|
-
** the current value is always zero
|
|
8970
|
+
** the current value is always zero.</dd>)^
|
|
8841
8971
|
**
|
|
8842
8972
|
** [[SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE]]
|
|
8843
8973
|
** ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE</dt>
|
|
8844
|
-
** <dd>This parameter returns the number malloc attempts that might have
|
|
8974
|
+
** <dd>This parameter returns the number of malloc attempts that might have
|
|
8845
8975
|
** been satisfied using lookaside memory but failed due to the amount of
|
|
8846
8976
|
** memory requested being larger than the lookaside slot size.
|
|
8847
8977
|
** Only the high-water value is meaningful;
|
|
8848
|
-
** the current value is always zero
|
|
8978
|
+
** the current value is always zero.</dd>)^
|
|
8849
8979
|
**
|
|
8850
8980
|
** [[SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL]]
|
|
8851
8981
|
** ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL</dt>
|
|
8852
|
-
** <dd>This parameter returns the number malloc attempts that might have
|
|
8982
|
+
** <dd>This parameter returns the number of malloc attempts that might have
|
|
8853
8983
|
** been satisfied using lookaside memory but failed due to all lookaside
|
|
8854
8984
|
** memory already being in use.
|
|
8855
8985
|
** Only the high-water value is meaningful;
|
|
8856
|
-
** the current value is always zero
|
|
8986
|
+
** the current value is always zero.</dd>)^
|
|
8857
8987
|
**
|
|
8858
8988
|
** [[SQLITE_DBSTATUS_CACHE_USED]] ^(<dt>SQLITE_DBSTATUS_CACHE_USED</dt>
|
|
8859
8989
|
** <dd>This parameter returns the approximate number of bytes of heap
|
|
8860
8990
|
** memory used by all pager caches associated with the database connection.)^
|
|
8861
8991
|
** ^The highwater mark associated with SQLITE_DBSTATUS_CACHE_USED is always 0.
|
|
8992
|
+
** </dd>
|
|
8862
8993
|
**
|
|
8863
8994
|
** [[SQLITE_DBSTATUS_CACHE_USED_SHARED]]
|
|
8864
8995
|
** ^(<dt>SQLITE_DBSTATUS_CACHE_USED_SHARED</dt>
|
|
@@ -8867,10 +8998,10 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r
|
|
|
8867
8998
|
** memory used by that pager cache is divided evenly between the attached
|
|
8868
8999
|
** connections.)^ In other words, if none of the pager caches associated
|
|
8869
9000
|
** with the database connection are shared, this request returns the same
|
|
8870
|
-
** value as DBSTATUS_CACHE_USED. Or, if one or more
|
|
9001
|
+
** value as DBSTATUS_CACHE_USED. Or, if one or more of the pager caches are
|
|
8871
9002
|
** shared, the value returned by this call will be smaller than that returned
|
|
8872
9003
|
** by DBSTATUS_CACHE_USED. ^The highwater mark associated with
|
|
8873
|
-
** SQLITE_DBSTATUS_CACHE_USED_SHARED is always 0
|
|
9004
|
+
** SQLITE_DBSTATUS_CACHE_USED_SHARED is always 0.</dd>
|
|
8874
9005
|
**
|
|
8875
9006
|
** [[SQLITE_DBSTATUS_SCHEMA_USED]] ^(<dt>SQLITE_DBSTATUS_SCHEMA_USED</dt>
|
|
8876
9007
|
** <dd>This parameter returns the approximate number of bytes of heap
|
|
@@ -8880,6 +9011,7 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r
|
|
|
8880
9011
|
** schema memory is shared with other database connections due to
|
|
8881
9012
|
** [shared cache mode] being enabled.
|
|
8882
9013
|
** ^The highwater mark associated with SQLITE_DBSTATUS_SCHEMA_USED is always 0.
|
|
9014
|
+
** </dd>
|
|
8883
9015
|
**
|
|
8884
9016
|
** [[SQLITE_DBSTATUS_STMT_USED]] ^(<dt>SQLITE_DBSTATUS_STMT_USED</dt>
|
|
8885
9017
|
** <dd>This parameter returns the approximate number of bytes of heap
|
|
@@ -8909,6 +9041,10 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r
|
|
|
8909
9041
|
** If an IO or other error occurs while writing a page to disk, the effect
|
|
8910
9042
|
** on subsequent SQLITE_DBSTATUS_CACHE_WRITE requests is undefined.)^ ^The
|
|
8911
9043
|
** highwater mark associated with SQLITE_DBSTATUS_CACHE_WRITE is always 0.
|
|
9044
|
+
** <p>
|
|
9045
|
+
** ^(There is overlap between the quantities measured by this parameter
|
|
9046
|
+
** (SQLITE_DBSTATUS_CACHE_WRITE) and SQLITE_DBSTATUS_TEMPBUF_SPILL.
|
|
9047
|
+
** Resetting one will reduce the other.)^
|
|
8912
9048
|
** </dd>
|
|
8913
9049
|
**
|
|
8914
9050
|
** [[SQLITE_DBSTATUS_CACHE_SPILL]] ^(<dt>SQLITE_DBSTATUS_CACHE_SPILL</dt>
|
|
@@ -8916,7 +9052,7 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r
|
|
|
8916
9052
|
** been written to disk in the middle of a transaction due to the page
|
|
8917
9053
|
** cache overflowing. Transactions are more efficient if they are written
|
|
8918
9054
|
** to disk all at once. When pages spill mid-transaction, that introduces
|
|
8919
|
-
** additional overhead. This parameter can be used help identify
|
|
9055
|
+
** additional overhead. This parameter can be used to help identify
|
|
8920
9056
|
** inefficiencies that can be resolved by increasing the cache size.
|
|
8921
9057
|
** </dd>
|
|
8922
9058
|
**
|
|
@@ -8924,6 +9060,18 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r
|
|
|
8924
9060
|
** <dd>This parameter returns zero for the current value if and only if
|
|
8925
9061
|
** all foreign key constraints (deferred or immediate) have been
|
|
8926
9062
|
** resolved.)^ ^The highwater mark is always 0.
|
|
9063
|
+
**
|
|
9064
|
+
** [[SQLITE_DBSTATUS_TEMPBUF_SPILL] ^(<dt>SQLITE_DBSTATUS_TEMPBUF_SPILL</dt>
|
|
9065
|
+
** <dd>^(This parameter returns the number of bytes written to temporary
|
|
9066
|
+
** files on disk that could have been kept in memory had sufficient memory
|
|
9067
|
+
** been available. This value includes writes to intermediate tables that
|
|
9068
|
+
** are part of complex queries, external sorts that spill to disk, and
|
|
9069
|
+
** writes to TEMP tables.)^
|
|
9070
|
+
** ^The highwater mark is always 0.
|
|
9071
|
+
** <p>
|
|
9072
|
+
** ^(There is overlap between the quantities measured by this parameter
|
|
9073
|
+
** (SQLITE_DBSTATUS_TEMPBUF_SPILL) and SQLITE_DBSTATUS_CACHE_WRITE.
|
|
9074
|
+
** Resetting one will reduce the other.)^
|
|
8927
9075
|
** </dd>
|
|
8928
9076
|
** </dl>
|
|
8929
9077
|
*/
|
|
@@ -8940,7 +9088,8 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r
|
|
|
8940
9088
|
#define SQLITE_DBSTATUS_DEFERRED_FKS 10
|
|
8941
9089
|
#define SQLITE_DBSTATUS_CACHE_USED_SHARED 11
|
|
8942
9090
|
#define SQLITE_DBSTATUS_CACHE_SPILL 12
|
|
8943
|
-
#define
|
|
9091
|
+
#define SQLITE_DBSTATUS_TEMPBUF_SPILL 13
|
|
9092
|
+
#define SQLITE_DBSTATUS_MAX 13 /* Largest defined DBSTATUS */
|
|
8944
9093
|
|
|
8945
9094
|
|
|
8946
9095
|
/*
|
|
@@ -8987,13 +9136,13 @@ SQLITE_API int sqlite3_stmt_status(sqlite3_stmt*, int op,int resetFlg);
|
|
|
8987
9136
|
** [[SQLITE_STMTSTATUS_SORT]] <dt>SQLITE_STMTSTATUS_SORT</dt>
|
|
8988
9137
|
** <dd>^This is the number of sort operations that have occurred.
|
|
8989
9138
|
** A non-zero value in this counter may indicate an opportunity to
|
|
8990
|
-
**
|
|
9139
|
+
** improve performance through careful use of indices.</dd>
|
|
8991
9140
|
**
|
|
8992
9141
|
** [[SQLITE_STMTSTATUS_AUTOINDEX]] <dt>SQLITE_STMTSTATUS_AUTOINDEX</dt>
|
|
8993
9142
|
** <dd>^This is the number of rows inserted into transient indices that
|
|
8994
9143
|
** were created automatically in order to help joins run faster.
|
|
8995
9144
|
** A non-zero value in this counter may indicate an opportunity to
|
|
8996
|
-
**
|
|
9145
|
+
** improve performance by adding permanent indices that do not
|
|
8997
9146
|
** need to be reinitialized each time the statement is run.</dd>
|
|
8998
9147
|
**
|
|
8999
9148
|
** [[SQLITE_STMTSTATUS_VM_STEP]] <dt>SQLITE_STMTSTATUS_VM_STEP</dt>
|
|
@@ -9002,19 +9151,19 @@ SQLITE_API int sqlite3_stmt_status(sqlite3_stmt*, int op,int resetFlg);
|
|
|
9002
9151
|
** to 2147483647. The number of virtual machine operations can be
|
|
9003
9152
|
** used as a proxy for the total work done by the prepared statement.
|
|
9004
9153
|
** If the number of virtual machine operations exceeds 2147483647
|
|
9005
|
-
** then the value returned by this statement status code is undefined
|
|
9154
|
+
** then the value returned by this statement status code is undefined.</dd>
|
|
9006
9155
|
**
|
|
9007
9156
|
** [[SQLITE_STMTSTATUS_REPREPARE]] <dt>SQLITE_STMTSTATUS_REPREPARE</dt>
|
|
9008
9157
|
** <dd>^This is the number of times that the prepare statement has been
|
|
9009
9158
|
** automatically regenerated due to schema changes or changes to
|
|
9010
|
-
** [bound parameters] that might affect the query plan
|
|
9159
|
+
** [bound parameters] that might affect the query plan.</dd>
|
|
9011
9160
|
**
|
|
9012
9161
|
** [[SQLITE_STMTSTATUS_RUN]] <dt>SQLITE_STMTSTATUS_RUN</dt>
|
|
9013
9162
|
** <dd>^This is the number of times that the prepared statement has
|
|
9014
9163
|
** been run. A single "run" for the purposes of this counter is one
|
|
9015
9164
|
** or more calls to [sqlite3_step()] followed by a call to [sqlite3_reset()].
|
|
9016
9165
|
** The counter is incremented on the first [sqlite3_step()] call of each
|
|
9017
|
-
** cycle
|
|
9166
|
+
** cycle.</dd>
|
|
9018
9167
|
**
|
|
9019
9168
|
** [[SQLITE_STMTSTATUS_FILTER_MISS]]
|
|
9020
9169
|
** [[SQLITE_STMTSTATUS_FILTER HIT]]
|
|
@@ -9024,7 +9173,7 @@ SQLITE_API int sqlite3_stmt_status(sqlite3_stmt*, int op,int resetFlg);
|
|
|
9024
9173
|
** step was bypassed because a Bloom filter returned not-found. The
|
|
9025
9174
|
** corresponding SQLITE_STMTSTATUS_FILTER_MISS value is the number of
|
|
9026
9175
|
** times that the Bloom filter returned a find, and thus the join step
|
|
9027
|
-
** had to be processed as normal
|
|
9176
|
+
** had to be processed as normal.</dd>
|
|
9028
9177
|
**
|
|
9029
9178
|
** [[SQLITE_STMTSTATUS_MEMUSED]] <dt>SQLITE_STMTSTATUS_MEMUSED</dt>
|
|
9030
9179
|
** <dd>^This is the approximate number of bytes of heap memory
|
|
@@ -9129,9 +9278,9 @@ struct sqlite3_pcache_page {
|
|
|
9129
9278
|
** SQLite will typically create one cache instance for each open database file,
|
|
9130
9279
|
** though this is not guaranteed. ^The
|
|
9131
9280
|
** first parameter, szPage, is the size in bytes of the pages that must
|
|
9132
|
-
** be allocated by the cache. ^szPage will always a power of two. ^The
|
|
9281
|
+
** be allocated by the cache. ^szPage will always be a power of two. ^The
|
|
9133
9282
|
** second parameter szExtra is a number of bytes of extra storage
|
|
9134
|
-
** associated with each page cache entry. ^The szExtra parameter will
|
|
9283
|
+
** associated with each page cache entry. ^The szExtra parameter will be
|
|
9135
9284
|
** a number less than 250. SQLite will use the
|
|
9136
9285
|
** extra szExtra bytes on each page to store metadata about the underlying
|
|
9137
9286
|
** database page on disk. The value passed into szExtra depends
|
|
@@ -9139,17 +9288,17 @@ struct sqlite3_pcache_page {
|
|
|
9139
9288
|
** ^The third argument to xCreate(), bPurgeable, is true if the cache being
|
|
9140
9289
|
** created will be used to cache database pages of a file stored on disk, or
|
|
9141
9290
|
** false if it is used for an in-memory database. The cache implementation
|
|
9142
|
-
** does not have to do anything special based
|
|
9291
|
+
** does not have to do anything special based upon the value of bPurgeable;
|
|
9143
9292
|
** it is purely advisory. ^On a cache where bPurgeable is false, SQLite will
|
|
9144
9293
|
** never invoke xUnpin() except to deliberately delete a page.
|
|
9145
9294
|
** ^In other words, calls to xUnpin() on a cache with bPurgeable set to
|
|
9146
9295
|
** false will always have the "discard" flag set to true.
|
|
9147
|
-
** ^Hence, a cache created with bPurgeable false will
|
|
9296
|
+
** ^Hence, a cache created with bPurgeable set to false will
|
|
9148
9297
|
** never contain any unpinned pages.
|
|
9149
9298
|
**
|
|
9150
9299
|
** [[the xCachesize() page cache method]]
|
|
9151
9300
|
** ^(The xCachesize() method may be called at any time by SQLite to set the
|
|
9152
|
-
** suggested maximum cache-size (number of pages stored
|
|
9301
|
+
** suggested maximum cache-size (number of pages stored) for the cache
|
|
9153
9302
|
** instance passed as the first argument. This is the value configured using
|
|
9154
9303
|
** the SQLite "[PRAGMA cache_size]" command.)^ As with the bPurgeable
|
|
9155
9304
|
** parameter, the implementation is not required to do anything with this
|
|
@@ -9176,12 +9325,12 @@ struct sqlite3_pcache_page {
|
|
|
9176
9325
|
** implementation must return a pointer to the page buffer with its content
|
|
9177
9326
|
** intact. If the requested page is not already in the cache, then the
|
|
9178
9327
|
** cache implementation should use the value of the createFlag
|
|
9179
|
-
** parameter to help it
|
|
9328
|
+
** parameter to help it determine what action to take:
|
|
9180
9329
|
**
|
|
9181
9330
|
** <table border=1 width=85% align=center>
|
|
9182
9331
|
** <tr><th> createFlag <th> Behavior when page is not already in cache
|
|
9183
9332
|
** <tr><td> 0 <td> Do not allocate a new page. Return NULL.
|
|
9184
|
-
** <tr><td> 1 <td> Allocate a new page if it easy and convenient to do so.
|
|
9333
|
+
** <tr><td> 1 <td> Allocate a new page if it is easy and convenient to do so.
|
|
9185
9334
|
** Otherwise return NULL.
|
|
9186
9335
|
** <tr><td> 2 <td> Make every effort to allocate a new page. Only return
|
|
9187
9336
|
** NULL if allocating a new page is effectively impossible.
|
|
@@ -9198,7 +9347,7 @@ struct sqlite3_pcache_page {
|
|
|
9198
9347
|
** as its second argument. If the third parameter, discard, is non-zero,
|
|
9199
9348
|
** then the page must be evicted from the cache.
|
|
9200
9349
|
** ^If the discard parameter is
|
|
9201
|
-
** zero, then the page may be discarded or retained at the discretion of
|
|
9350
|
+
** zero, then the page may be discarded or retained at the discretion of the
|
|
9202
9351
|
** page cache implementation. ^The page cache implementation
|
|
9203
9352
|
** may choose to evict unpinned pages at any time.
|
|
9204
9353
|
**
|
|
@@ -9216,7 +9365,7 @@ struct sqlite3_pcache_page {
|
|
|
9216
9365
|
** When SQLite calls the xTruncate() method, the cache must discard all
|
|
9217
9366
|
** existing cache entries with page numbers (keys) greater than or equal
|
|
9218
9367
|
** to the value of the iLimit parameter passed to xTruncate(). If any
|
|
9219
|
-
** of these pages are pinned, they
|
|
9368
|
+
** of these pages are pinned, they become implicitly unpinned, meaning that
|
|
9220
9369
|
** they can be safely discarded.
|
|
9221
9370
|
**
|
|
9222
9371
|
** [[the xDestroy() page cache method]]
|
|
@@ -9396,7 +9545,7 @@ typedef struct sqlite3_backup sqlite3_backup;
|
|
|
9396
9545
|
** external process or via a database connection other than the one being
|
|
9397
9546
|
** used by the backup operation, then the backup will be automatically
|
|
9398
9547
|
** restarted by the next call to sqlite3_backup_step(). ^If the source
|
|
9399
|
-
** database is modified by
|
|
9548
|
+
** database is modified by using the same database connection as is used
|
|
9400
9549
|
** by the backup operation, then the backup database is automatically
|
|
9401
9550
|
** updated at the same time.
|
|
9402
9551
|
**
|
|
@@ -9413,7 +9562,7 @@ typedef struct sqlite3_backup sqlite3_backup;
|
|
|
9413
9562
|
** and may not be used following a call to sqlite3_backup_finish().
|
|
9414
9563
|
**
|
|
9415
9564
|
** ^The value returned by sqlite3_backup_finish is [SQLITE_OK] if no
|
|
9416
|
-
** sqlite3_backup_step() errors occurred, regardless
|
|
9565
|
+
** sqlite3_backup_step() errors occurred, regardless of whether or not
|
|
9417
9566
|
** sqlite3_backup_step() completed.
|
|
9418
9567
|
** ^If an out-of-memory condition or IO error occurred during any prior
|
|
9419
9568
|
** sqlite3_backup_step() call on the same [sqlite3_backup] object, then
|
|
@@ -9515,7 +9664,7 @@ SQLITE_API int sqlite3_backup_pagecount(sqlite3_backup *p);
|
|
|
9515
9664
|
** application receives an SQLITE_LOCKED error, it may call the
|
|
9516
9665
|
** sqlite3_unlock_notify() method with the blocked connection handle as
|
|
9517
9666
|
** the first argument to register for a callback that will be invoked
|
|
9518
|
-
** when the blocking
|
|
9667
|
+
** when the blocking connection's current transaction is concluded. ^The
|
|
9519
9668
|
** callback is invoked from within the [sqlite3_step] or [sqlite3_close]
|
|
9520
9669
|
** call that concludes the blocking connection's transaction.
|
|
9521
9670
|
**
|
|
@@ -9535,7 +9684,7 @@ SQLITE_API int sqlite3_backup_pagecount(sqlite3_backup *p);
|
|
|
9535
9684
|
** blocked connection already has a registered unlock-notify callback,
|
|
9536
9685
|
** then the new callback replaces the old.)^ ^If sqlite3_unlock_notify() is
|
|
9537
9686
|
** called with a NULL pointer as its second argument, then any existing
|
|
9538
|
-
** unlock-notify callback is canceled. ^The blocked
|
|
9687
|
+
** unlock-notify callback is canceled. ^The blocked connection's
|
|
9539
9688
|
** unlock-notify callback may also be canceled by closing the blocked
|
|
9540
9689
|
** connection using [sqlite3_close()].
|
|
9541
9690
|
**
|
|
@@ -9705,7 +9854,7 @@ SQLITE_API void sqlite3_log(int iErrCode, const char *zFormat, ...);
|
|
|
9705
9854
|
** is the number of pages currently in the write-ahead log file,
|
|
9706
9855
|
** including those that were just committed.
|
|
9707
9856
|
**
|
|
9708
|
-
** The callback function should normally return [SQLITE_OK]. ^If an error
|
|
9857
|
+
** ^The callback function should normally return [SQLITE_OK]. ^If an error
|
|
9709
9858
|
** code is returned, that error will propagate back up through the
|
|
9710
9859
|
** SQLite code base to cause the statement that provoked the callback
|
|
9711
9860
|
** to report an error, though the commit will have still occurred. If the
|
|
@@ -9713,13 +9862,26 @@ SQLITE_API void sqlite3_log(int iErrCode, const char *zFormat, ...);
|
|
|
9713
9862
|
** that does not correspond to any valid SQLite error code, the results
|
|
9714
9863
|
** are undefined.
|
|
9715
9864
|
**
|
|
9716
|
-
** A single database handle may have at most a single write-ahead log
|
|
9717
|
-
** registered at one time. ^Calling [sqlite3_wal_hook()]
|
|
9718
|
-
** previously registered write-ahead
|
|
9719
|
-
**
|
|
9720
|
-
**
|
|
9721
|
-
**
|
|
9722
|
-
**
|
|
9865
|
+
** ^A single database handle may have at most a single write-ahead log
|
|
9866
|
+
** callback registered at one time. ^Calling [sqlite3_wal_hook()]
|
|
9867
|
+
** replaces the default behavior or previously registered write-ahead
|
|
9868
|
+
** log callback.
|
|
9869
|
+
**
|
|
9870
|
+
** ^The return value is a copy of the third parameter from the
|
|
9871
|
+
** previous call, if any, or 0.
|
|
9872
|
+
**
|
|
9873
|
+
** ^The [sqlite3_wal_autocheckpoint()] interface and the
|
|
9874
|
+
** [wal_autocheckpoint pragma] both invoke [sqlite3_wal_hook()] and
|
|
9875
|
+
** will overwrite any prior [sqlite3_wal_hook()] settings.
|
|
9876
|
+
**
|
|
9877
|
+
** ^If a write-ahead log callback is set using this function then
|
|
9878
|
+
** [sqlite3_wal_checkpoint_v2()] or [PRAGMA wal_checkpoint]
|
|
9879
|
+
** should be invoked periodically to keep the write-ahead log file
|
|
9880
|
+
** from growing without bound.
|
|
9881
|
+
**
|
|
9882
|
+
** ^Passing a NULL pointer for the callback disables automatic
|
|
9883
|
+
** checkpointing entirely. To re-enable the default behavior, call
|
|
9884
|
+
** sqlite3_wal_autocheckpoint(db,1000) or use [PRAGMA wal_checkpoint].
|
|
9723
9885
|
*/
|
|
9724
9886
|
SQLITE_API void *sqlite3_wal_hook(
|
|
9725
9887
|
sqlite3*,
|
|
@@ -9736,7 +9898,7 @@ SQLITE_API void *sqlite3_wal_hook(
|
|
|
9736
9898
|
** to automatically [checkpoint]
|
|
9737
9899
|
** after committing a transaction if there are N or
|
|
9738
9900
|
** more frames in the [write-ahead log] file. ^Passing zero or
|
|
9739
|
-
** a negative value as the
|
|
9901
|
+
** a negative value as the N parameter disables automatic
|
|
9740
9902
|
** checkpoints entirely.
|
|
9741
9903
|
**
|
|
9742
9904
|
** ^The callback registered by this function replaces any existing callback
|
|
@@ -9752,9 +9914,10 @@ SQLITE_API void *sqlite3_wal_hook(
|
|
|
9752
9914
|
**
|
|
9753
9915
|
** ^Every new [database connection] defaults to having the auto-checkpoint
|
|
9754
9916
|
** enabled with a threshold of 1000 or [SQLITE_DEFAULT_WAL_AUTOCHECKPOINT]
|
|
9755
|
-
** pages.
|
|
9756
|
-
**
|
|
9757
|
-
**
|
|
9917
|
+
** pages.
|
|
9918
|
+
**
|
|
9919
|
+
** ^The use of this interface is only necessary if the default setting
|
|
9920
|
+
** is found to be suboptimal for a particular application.
|
|
9758
9921
|
*/
|
|
9759
9922
|
SQLITE_API int sqlite3_wal_autocheckpoint(sqlite3 *db, int N);
|
|
9760
9923
|
|
|
@@ -9819,6 +9982,11 @@ SQLITE_API int sqlite3_wal_checkpoint(sqlite3 *db, const char *zDb);
|
|
|
9819
9982
|
** ^This mode works the same way as SQLITE_CHECKPOINT_RESTART with the
|
|
9820
9983
|
** addition that it also truncates the log file to zero bytes just prior
|
|
9821
9984
|
** to a successful return.
|
|
9985
|
+
**
|
|
9986
|
+
** <dt>SQLITE_CHECKPOINT_NOOP<dd>
|
|
9987
|
+
** ^This mode always checkpoints zero frames. The only reason to invoke
|
|
9988
|
+
** a NOOP checkpoint is to access the values returned by
|
|
9989
|
+
** sqlite3_wal_checkpoint_v2() via output parameters *pnLog and *pnCkpt.
|
|
9822
9990
|
** </dl>
|
|
9823
9991
|
**
|
|
9824
9992
|
** ^If pnLog is not NULL, then *pnLog is set to the total number of frames in
|
|
@@ -9889,6 +10057,7 @@ SQLITE_API int sqlite3_wal_checkpoint_v2(
|
|
|
9889
10057
|
** See the [sqlite3_wal_checkpoint_v2()] documentation for details on the
|
|
9890
10058
|
** meaning of each of these checkpoint modes.
|
|
9891
10059
|
*/
|
|
10060
|
+
#define SQLITE_CHECKPOINT_NOOP -1 /* Do no work at all */
|
|
9892
10061
|
#define SQLITE_CHECKPOINT_PASSIVE 0 /* Do as much as possible w/o blocking */
|
|
9893
10062
|
#define SQLITE_CHECKPOINT_FULL 1 /* Wait for writers, then checkpoint */
|
|
9894
10063
|
#define SQLITE_CHECKPOINT_RESTART 2 /* Like FULL but wait for readers */
|
|
@@ -9933,7 +10102,7 @@ SQLITE_API int sqlite3_vtab_config(sqlite3*, int op, ...);
|
|
|
9933
10102
|
** support constraints. In this configuration (which is the default) if
|
|
9934
10103
|
** a call to the [xUpdate] method returns [SQLITE_CONSTRAINT], then the entire
|
|
9935
10104
|
** statement is rolled back as if [ON CONFLICT | OR ABORT] had been
|
|
9936
|
-
** specified as part of the
|
|
10105
|
+
** specified as part of the user's SQL statement, regardless of the actual
|
|
9937
10106
|
** ON CONFLICT mode specified.
|
|
9938
10107
|
**
|
|
9939
10108
|
** If X is non-zero, then the virtual table implementation guarantees
|
|
@@ -9967,7 +10136,7 @@ SQLITE_API int sqlite3_vtab_config(sqlite3*, int op, ...);
|
|
|
9967
10136
|
** [[SQLITE_VTAB_INNOCUOUS]]<dt>SQLITE_VTAB_INNOCUOUS</dt>
|
|
9968
10137
|
** <dd>Calls of the form
|
|
9969
10138
|
** [sqlite3_vtab_config](db,SQLITE_VTAB_INNOCUOUS) from within the
|
|
9970
|
-
**
|
|
10139
|
+
** [xConnect] or [xCreate] methods of a [virtual table] implementation
|
|
9971
10140
|
** identify that virtual table as being safe to use from within triggers
|
|
9972
10141
|
** and views. Conceptually, the SQLITE_VTAB_INNOCUOUS tag means that the
|
|
9973
10142
|
** virtual table can do no serious harm even if it is controlled by a
|
|
@@ -10135,7 +10304,7 @@ SQLITE_API const char *sqlite3_vtab_collation(sqlite3_index_info*,int);
|
|
|
10135
10304
|
** </table>
|
|
10136
10305
|
**
|
|
10137
10306
|
** ^For the purposes of comparing virtual table output values to see if the
|
|
10138
|
-
** values are same value for sorting purposes, two NULL values are considered
|
|
10307
|
+
** values are the same value for sorting purposes, two NULL values are considered
|
|
10139
10308
|
** to be the same. In other words, the comparison operator is "IS"
|
|
10140
10309
|
** (or "IS NOT DISTINCT FROM") and not "==".
|
|
10141
10310
|
**
|
|
@@ -10145,7 +10314,7 @@ SQLITE_API const char *sqlite3_vtab_collation(sqlite3_index_info*,int);
|
|
|
10145
10314
|
**
|
|
10146
10315
|
** ^A virtual table implementation is always free to return rows in any order
|
|
10147
10316
|
** it wants, as long as the "orderByConsumed" flag is not set. ^When the
|
|
10148
|
-
**
|
|
10317
|
+
** "orderByConsumed" flag is unset, the query planner will add extra
|
|
10149
10318
|
** [bytecode] to ensure that the final results returned by the SQL query are
|
|
10150
10319
|
** ordered correctly. The use of the "orderByConsumed" flag and the
|
|
10151
10320
|
** sqlite3_vtab_distinct() interface is merely an optimization. ^Careful
|
|
@@ -10242,7 +10411,7 @@ SQLITE_API int sqlite3_vtab_in(sqlite3_index_info*, int iCons, int bHandle);
|
|
|
10242
10411
|
** sqlite3_vtab_in_next(X,P) should be one of the parameters to the
|
|
10243
10412
|
** xFilter method which invokes these routines, and specifically
|
|
10244
10413
|
** a parameter that was previously selected for all-at-once IN constraint
|
|
10245
|
-
** processing
|
|
10414
|
+
** processing using the [sqlite3_vtab_in()] interface in the
|
|
10246
10415
|
** [xBestIndex|xBestIndex method]. ^(If the X parameter is not
|
|
10247
10416
|
** an xFilter argument that was selected for all-at-once IN constraint
|
|
10248
10417
|
** processing, then these routines return [SQLITE_ERROR].)^
|
|
@@ -10257,7 +10426,7 @@ SQLITE_API int sqlite3_vtab_in(sqlite3_index_info*, int iCons, int bHandle);
|
|
|
10257
10426
|
** ){
|
|
10258
10427
|
** // do something with pVal
|
|
10259
10428
|
** }
|
|
10260
|
-
** if( rc!=
|
|
10429
|
+
** if( rc!=SQLITE_DONE ){
|
|
10261
10430
|
** // an error has occurred
|
|
10262
10431
|
** }
|
|
10263
10432
|
** </pre></blockquote>)^
|
|
@@ -10297,7 +10466,7 @@ SQLITE_API int sqlite3_vtab_in_next(sqlite3_value *pVal, sqlite3_value **ppOut);
|
|
|
10297
10466
|
** and only if *V is set to a value. ^The sqlite3_vtab_rhs_value(P,J,V)
|
|
10298
10467
|
** inteface returns SQLITE_NOTFOUND if the right-hand side of the J-th
|
|
10299
10468
|
** constraint is not available. ^The sqlite3_vtab_rhs_value() interface
|
|
10300
|
-
** can return
|
|
10469
|
+
** can return a result code other than SQLITE_OK or SQLITE_NOTFOUND if
|
|
10301
10470
|
** something goes wrong.
|
|
10302
10471
|
**
|
|
10303
10472
|
** The sqlite3_vtab_rhs_value() interface is usually only successful if
|
|
@@ -10325,8 +10494,8 @@ SQLITE_API int sqlite3_vtab_rhs_value(sqlite3_index_info*, int, sqlite3_value **
|
|
|
10325
10494
|
** KEYWORDS: {conflict resolution mode}
|
|
10326
10495
|
**
|
|
10327
10496
|
** These constants are returned by [sqlite3_vtab_on_conflict()] to
|
|
10328
|
-
** inform a [virtual table] implementation
|
|
10329
|
-
**
|
|
10497
|
+
** inform a [virtual table] implementation of the [ON CONFLICT] mode
|
|
10498
|
+
** for the SQL statement being evaluated.
|
|
10330
10499
|
**
|
|
10331
10500
|
** Note that the [SQLITE_IGNORE] constant is also used as a potential
|
|
10332
10501
|
** return value from the [sqlite3_set_authorizer()] callback and that
|
|
@@ -10366,39 +10535,39 @@ SQLITE_API int sqlite3_vtab_rhs_value(sqlite3_index_info*, int, sqlite3_value **
|
|
|
10366
10535
|
** [[SQLITE_SCANSTAT_EST]] <dt>SQLITE_SCANSTAT_EST</dt>
|
|
10367
10536
|
** <dd>^The "double" variable pointed to by the V parameter will be set to the
|
|
10368
10537
|
** query planner's estimate for the average number of rows output from each
|
|
10369
|
-
** iteration of the X-th loop. If the query planner's
|
|
10538
|
+
** iteration of the X-th loop. If the query planner's estimate was accurate,
|
|
10370
10539
|
** then this value will approximate the quotient NVISIT/NLOOP and the
|
|
10371
10540
|
** product of this value for all prior loops with the same SELECTID will
|
|
10372
|
-
** be the NLOOP value for the current loop
|
|
10541
|
+
** be the NLOOP value for the current loop.</dd>
|
|
10373
10542
|
**
|
|
10374
10543
|
** [[SQLITE_SCANSTAT_NAME]] <dt>SQLITE_SCANSTAT_NAME</dt>
|
|
10375
10544
|
** <dd>^The "const char *" variable pointed to by the V parameter will be set
|
|
10376
10545
|
** to a zero-terminated UTF-8 string containing the name of the index or table
|
|
10377
|
-
** used for the X-th loop
|
|
10546
|
+
** used for the X-th loop.</dd>
|
|
10378
10547
|
**
|
|
10379
10548
|
** [[SQLITE_SCANSTAT_EXPLAIN]] <dt>SQLITE_SCANSTAT_EXPLAIN</dt>
|
|
10380
10549
|
** <dd>^The "const char *" variable pointed to by the V parameter will be set
|
|
10381
10550
|
** to a zero-terminated UTF-8 string containing the [EXPLAIN QUERY PLAN]
|
|
10382
|
-
** description for the X-th loop
|
|
10551
|
+
** description for the X-th loop.</dd>
|
|
10383
10552
|
**
|
|
10384
10553
|
** [[SQLITE_SCANSTAT_SELECTID]] <dt>SQLITE_SCANSTAT_SELECTID</dt>
|
|
10385
10554
|
** <dd>^The "int" variable pointed to by the V parameter will be set to the
|
|
10386
10555
|
** id for the X-th query plan element. The id value is unique within the
|
|
10387
10556
|
** statement. The select-id is the same value as is output in the first
|
|
10388
|
-
** column of an [EXPLAIN QUERY PLAN] query
|
|
10557
|
+
** column of an [EXPLAIN QUERY PLAN] query.</dd>
|
|
10389
10558
|
**
|
|
10390
10559
|
** [[SQLITE_SCANSTAT_PARENTID]] <dt>SQLITE_SCANSTAT_PARENTID</dt>
|
|
10391
10560
|
** <dd>The "int" variable pointed to by the V parameter will be set to the
|
|
10392
|
-
**
|
|
10561
|
+
** id of the parent of the current query element, if applicable, or
|
|
10393
10562
|
** to zero if the query element has no parent. This is the same value as
|
|
10394
|
-
** returned in the second column of an [EXPLAIN QUERY PLAN] query
|
|
10563
|
+
** returned in the second column of an [EXPLAIN QUERY PLAN] query.</dd>
|
|
10395
10564
|
**
|
|
10396
10565
|
** [[SQLITE_SCANSTAT_NCYCLE]] <dt>SQLITE_SCANSTAT_NCYCLE</dt>
|
|
10397
10566
|
** <dd>The sqlite3_int64 output value is set to the number of cycles,
|
|
10398
10567
|
** according to the processor time-stamp counter, that elapsed while the
|
|
10399
10568
|
** query element was being processed. This value is not available for
|
|
10400
10569
|
** all query elements - if it is unavailable the output variable is
|
|
10401
|
-
** set to -1
|
|
10570
|
+
** set to -1.</dd>
|
|
10402
10571
|
** </dl>
|
|
10403
10572
|
*/
|
|
10404
10573
|
#define SQLITE_SCANSTAT_NLOOP 0
|
|
@@ -10439,8 +10608,8 @@ SQLITE_API int sqlite3_vtab_rhs_value(sqlite3_index_info*, int, sqlite3_value **
|
|
|
10439
10608
|
** sqlite3_stmt_scanstatus_v2() with a zeroed flags parameter.
|
|
10440
10609
|
**
|
|
10441
10610
|
** Parameter "idx" identifies the specific query element to retrieve statistics
|
|
10442
|
-
** for. Query elements are numbered starting from zero. A value of -1 may
|
|
10443
|
-
**
|
|
10611
|
+
** for. Query elements are numbered starting from zero. A value of -1 may
|
|
10612
|
+
** retrieve statistics for the entire query. ^If idx is out of range
|
|
10444
10613
|
** - less than -1 or greater than or equal to the total number of query
|
|
10445
10614
|
** elements used to implement the statement - a non-zero value is returned and
|
|
10446
10615
|
** the variable that pOut points to is unchanged.
|
|
@@ -10483,7 +10652,7 @@ SQLITE_API void sqlite3_stmt_scanstatus_reset(sqlite3_stmt*);
|
|
|
10483
10652
|
** METHOD: sqlite3
|
|
10484
10653
|
**
|
|
10485
10654
|
** ^If a write-transaction is open on [database connection] D when the
|
|
10486
|
-
** [sqlite3_db_cacheflush(D)] interface invoked, any dirty
|
|
10655
|
+
** [sqlite3_db_cacheflush(D)] interface is invoked, any dirty
|
|
10487
10656
|
** pages in the pager-cache that are not currently in use are written out
|
|
10488
10657
|
** to disk. A dirty page may be in use if a database cursor created by an
|
|
10489
10658
|
** active SQL statement is reading from it, or if it is page 1 of a database
|
|
@@ -10597,8 +10766,8 @@ SQLITE_API int sqlite3_db_cacheflush(sqlite3*);
|
|
|
10597
10766
|
** triggers; and so forth.
|
|
10598
10767
|
**
|
|
10599
10768
|
** When the [sqlite3_blob_write()] API is used to update a blob column,
|
|
10600
|
-
** the pre-update hook is invoked with SQLITE_DELETE
|
|
10601
|
-
**
|
|
10769
|
+
** the pre-update hook is invoked with SQLITE_DELETE, because
|
|
10770
|
+
** the new values are not yet available. In this case, when a
|
|
10602
10771
|
** callback made with op==SQLITE_DELETE is actually a write using the
|
|
10603
10772
|
** sqlite3_blob_write() API, the [sqlite3_preupdate_blobwrite()] returns
|
|
10604
10773
|
** the index of the column being written. In other cases, where the
|
|
@@ -10716,7 +10885,7 @@ typedef struct sqlite3_snapshot {
|
|
|
10716
10885
|
** The [sqlite3_snapshot_get()] interface is only available when the
|
|
10717
10886
|
** [SQLITE_ENABLE_SNAPSHOT] compile-time option is used.
|
|
10718
10887
|
*/
|
|
10719
|
-
SQLITE_API
|
|
10888
|
+
SQLITE_API int sqlite3_snapshot_get(
|
|
10720
10889
|
sqlite3 *db,
|
|
10721
10890
|
const char *zSchema,
|
|
10722
10891
|
sqlite3_snapshot **ppSnapshot
|
|
@@ -10765,7 +10934,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_get(
|
|
|
10765
10934
|
** The [sqlite3_snapshot_open()] interface is only available when the
|
|
10766
10935
|
** [SQLITE_ENABLE_SNAPSHOT] compile-time option is used.
|
|
10767
10936
|
*/
|
|
10768
|
-
SQLITE_API
|
|
10937
|
+
SQLITE_API int sqlite3_snapshot_open(
|
|
10769
10938
|
sqlite3 *db,
|
|
10770
10939
|
const char *zSchema,
|
|
10771
10940
|
sqlite3_snapshot *pSnapshot
|
|
@@ -10782,7 +10951,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_open(
|
|
|
10782
10951
|
** The [sqlite3_snapshot_free()] interface is only available when the
|
|
10783
10952
|
** [SQLITE_ENABLE_SNAPSHOT] compile-time option is used.
|
|
10784
10953
|
*/
|
|
10785
|
-
SQLITE_API
|
|
10954
|
+
SQLITE_API void sqlite3_snapshot_free(sqlite3_snapshot*);
|
|
10786
10955
|
|
|
10787
10956
|
/*
|
|
10788
10957
|
** CAPI3REF: Compare the ages of two snapshot handles.
|
|
@@ -10809,7 +10978,7 @@ SQLITE_API SQLITE_EXPERIMENTAL void sqlite3_snapshot_free(sqlite3_snapshot*);
|
|
|
10809
10978
|
** This interface is only available if SQLite is compiled with the
|
|
10810
10979
|
** [SQLITE_ENABLE_SNAPSHOT] option.
|
|
10811
10980
|
*/
|
|
10812
|
-
SQLITE_API
|
|
10981
|
+
SQLITE_API int sqlite3_snapshot_cmp(
|
|
10813
10982
|
sqlite3_snapshot *p1,
|
|
10814
10983
|
sqlite3_snapshot *p2
|
|
10815
10984
|
);
|
|
@@ -10837,7 +11006,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_cmp(
|
|
|
10837
11006
|
** This interface is only available if SQLite is compiled with the
|
|
10838
11007
|
** [SQLITE_ENABLE_SNAPSHOT] option.
|
|
10839
11008
|
*/
|
|
10840
|
-
SQLITE_API
|
|
11009
|
+
SQLITE_API int sqlite3_snapshot_recover(sqlite3 *db, const char *zDb);
|
|
10841
11010
|
|
|
10842
11011
|
/*
|
|
10843
11012
|
** CAPI3REF: Serialize a database
|
|
@@ -10851,7 +11020,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_recover(sqlite3 *db, const c
|
|
|
10851
11020
|
** For an ordinary on-disk database file, the serialization is just a
|
|
10852
11021
|
** copy of the disk file. For an in-memory database or a "TEMP" database,
|
|
10853
11022
|
** the serialization is the same sequence of bytes which would be written
|
|
10854
|
-
** to disk if that database
|
|
11023
|
+
** to disk if that database were backed up to disk.
|
|
10855
11024
|
**
|
|
10856
11025
|
** The usual case is that sqlite3_serialize() copies the serialization of
|
|
10857
11026
|
** the database into memory obtained from [sqlite3_malloc64()] and returns
|
|
@@ -10860,7 +11029,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_recover(sqlite3 *db, const c
|
|
|
10860
11029
|
** contains the SQLITE_SERIALIZE_NOCOPY bit, then no memory allocations
|
|
10861
11030
|
** are made, and the sqlite3_serialize() function will return a pointer
|
|
10862
11031
|
** to the contiguous memory representation of the database that SQLite
|
|
10863
|
-
** is currently using for that database, or NULL if
|
|
11032
|
+
** is currently using for that database, or NULL if no such contiguous
|
|
10864
11033
|
** memory representation of the database exists. A contiguous memory
|
|
10865
11034
|
** representation of the database will usually only exist if there has
|
|
10866
11035
|
** been a prior call to [sqlite3_deserialize(D,S,...)] with the same
|
|
@@ -10911,12 +11080,13 @@ SQLITE_API unsigned char *sqlite3_serialize(
|
|
|
10911
11080
|
**
|
|
10912
11081
|
** The sqlite3_deserialize(D,S,P,N,M,F) interface causes the
|
|
10913
11082
|
** [database connection] D to disconnect from database S and then
|
|
10914
|
-
** reopen S as an in-memory database based on the serialization
|
|
10915
|
-
** in P.
|
|
10916
|
-
**
|
|
10917
|
-
** the
|
|
10918
|
-
**
|
|
10919
|
-
**
|
|
11083
|
+
** reopen S as an in-memory database based on the serialization
|
|
11084
|
+
** contained in P. If S is a NULL pointer, the main database is
|
|
11085
|
+
** used. The serialized database P is N bytes in size. M is the size
|
|
11086
|
+
** of the buffer P, which might be larger than N. If M is larger than
|
|
11087
|
+
** N, and the SQLITE_DESERIALIZE_READONLY bit is not set in F, then
|
|
11088
|
+
** SQLite is permitted to add content to the in-memory database as
|
|
11089
|
+
** long as the total size does not exceed M bytes.
|
|
10920
11090
|
**
|
|
10921
11091
|
** If the SQLITE_DESERIALIZE_FREEONCLOSE bit is set in F, then SQLite will
|
|
10922
11092
|
** invoke sqlite3_free() on the serialization buffer when the database
|
|
@@ -10931,7 +11101,7 @@ SQLITE_API unsigned char *sqlite3_serialize(
|
|
|
10931
11101
|
** database is currently in a read transaction or is involved in a backup
|
|
10932
11102
|
** operation.
|
|
10933
11103
|
**
|
|
10934
|
-
** It is not possible to
|
|
11104
|
+
** It is not possible to deserialize into the TEMP database. If the
|
|
10935
11105
|
** S argument to sqlite3_deserialize(D,S,P,N,M,F) is "temp" then the
|
|
10936
11106
|
** function returns SQLITE_ERROR.
|
|
10937
11107
|
**
|
|
@@ -10953,7 +11123,7 @@ SQLITE_API int sqlite3_deserialize(
|
|
|
10953
11123
|
sqlite3 *db, /* The database connection */
|
|
10954
11124
|
const char *zSchema, /* Which DB to reopen with the deserialization */
|
|
10955
11125
|
unsigned char *pData, /* The serialized database content */
|
|
10956
|
-
sqlite3_int64 szDb, /* Number bytes in the deserialization */
|
|
11126
|
+
sqlite3_int64 szDb, /* Number of bytes in the deserialization */
|
|
10957
11127
|
sqlite3_int64 szBuf, /* Total size of buffer pData[] */
|
|
10958
11128
|
unsigned mFlags /* Zero or more SQLITE_DESERIALIZE_* flags */
|
|
10959
11129
|
);
|
|
@@ -10961,7 +11131,7 @@ SQLITE_API int sqlite3_deserialize(
|
|
|
10961
11131
|
/*
|
|
10962
11132
|
** CAPI3REF: Flags for sqlite3_deserialize()
|
|
10963
11133
|
**
|
|
10964
|
-
** The following are allowed values for 6th argument (the F argument) to
|
|
11134
|
+
** The following are allowed values for the 6th argument (the F argument) to
|
|
10965
11135
|
** the [sqlite3_deserialize(D,S,P,N,M,F)] interface.
|
|
10966
11136
|
**
|
|
10967
11137
|
** The SQLITE_DESERIALIZE_FREEONCLOSE means that the database serialization
|
|
@@ -10983,6 +11153,54 @@ SQLITE_API int sqlite3_deserialize(
|
|
|
10983
11153
|
#define SQLITE_DESERIALIZE_RESIZEABLE 2 /* Resize using sqlite3_realloc64() */
|
|
10984
11154
|
#define SQLITE_DESERIALIZE_READONLY 4 /* Database is read-only */
|
|
10985
11155
|
|
|
11156
|
+
/*
|
|
11157
|
+
** CAPI3REF: Bind array values to the CARRAY table-valued function
|
|
11158
|
+
**
|
|
11159
|
+
** The sqlite3_carray_bind(S,I,P,N,F,X) interface binds an array value to
|
|
11160
|
+
** one of the first argument of the [carray() table-valued function]. The
|
|
11161
|
+
** S parameter is a pointer to the [prepared statement] that uses the carray()
|
|
11162
|
+
** functions. I is the parameter index to be bound. P is a pointer to the
|
|
11163
|
+
** array to be bound, and N is the number of eements in the array. The
|
|
11164
|
+
** F argument is one of constants [SQLITE_CARRAY_INT32], [SQLITE_CARRAY_INT64],
|
|
11165
|
+
** [SQLITE_CARRAY_DOUBLE], [SQLITE_CARRAY_TEXT], or [SQLITE_CARRAY_BLOB] to
|
|
11166
|
+
** indicate the datatype of the array being bound. The X argument is not a
|
|
11167
|
+
** NULL pointer, then SQLite will invoke the function X on the P parameter
|
|
11168
|
+
** after it has finished using P, even if the call to
|
|
11169
|
+
** sqlite3_carray_bind() fails. The special-case finalizer
|
|
11170
|
+
** SQLITE_TRANSIENT has no effect here.
|
|
11171
|
+
*/
|
|
11172
|
+
SQLITE_API int sqlite3_carray_bind(
|
|
11173
|
+
sqlite3_stmt *pStmt, /* Statement to be bound */
|
|
11174
|
+
int i, /* Parameter index */
|
|
11175
|
+
void *aData, /* Pointer to array data */
|
|
11176
|
+
int nData, /* Number of data elements */
|
|
11177
|
+
int mFlags, /* CARRAY flags */
|
|
11178
|
+
void (*xDel)(void*) /* Destructor for aData */
|
|
11179
|
+
);
|
|
11180
|
+
|
|
11181
|
+
/*
|
|
11182
|
+
** CAPI3REF: Datatypes for the CARRAY table-valued function
|
|
11183
|
+
**
|
|
11184
|
+
** The fifth argument to the [sqlite3_carray_bind()] interface musts be
|
|
11185
|
+
** one of the following constants, to specify the datatype of the array
|
|
11186
|
+
** that is being bound into the [carray table-valued function].
|
|
11187
|
+
*/
|
|
11188
|
+
#define SQLITE_CARRAY_INT32 0 /* Data is 32-bit signed integers */
|
|
11189
|
+
#define SQLITE_CARRAY_INT64 1 /* Data is 64-bit signed integers */
|
|
11190
|
+
#define SQLITE_CARRAY_DOUBLE 2 /* Data is doubles */
|
|
11191
|
+
#define SQLITE_CARRAY_TEXT 3 /* Data is char* */
|
|
11192
|
+
#define SQLITE_CARRAY_BLOB 4 /* Data is struct iovec */
|
|
11193
|
+
|
|
11194
|
+
/*
|
|
11195
|
+
** Versions of the above #defines that omit the initial SQLITE_, for
|
|
11196
|
+
** legacy compatibility.
|
|
11197
|
+
*/
|
|
11198
|
+
#define CARRAY_INT32 0 /* Data is 32-bit signed integers */
|
|
11199
|
+
#define CARRAY_INT64 1 /* Data is 64-bit signed integers */
|
|
11200
|
+
#define CARRAY_DOUBLE 2 /* Data is doubles */
|
|
11201
|
+
#define CARRAY_TEXT 3 /* Data is char* */
|
|
11202
|
+
#define CARRAY_BLOB 4 /* Data is struct iovec */
|
|
11203
|
+
|
|
10986
11204
|
/*
|
|
10987
11205
|
** Undo the hack that converts floating point types to integer for
|
|
10988
11206
|
** builds on processors without floating point support.
|
|
@@ -11486,9 +11704,10 @@ SQLITE_API void sqlite3session_table_filter(
|
|
|
11486
11704
|
** is inserted while a session object is enabled, then later deleted while
|
|
11487
11705
|
** the same session object is disabled, no INSERT record will appear in the
|
|
11488
11706
|
** changeset, even though the delete took place while the session was disabled.
|
|
11489
|
-
** Or, if one field of a row is updated while a session is
|
|
11490
|
-
** another field of the same row is updated while the session is
|
|
11491
|
-
** resulting changeset will contain an UPDATE change that updates both
|
|
11707
|
+
** Or, if one field of a row is updated while a session is enabled, and
|
|
11708
|
+
** then another field of the same row is updated while the session is disabled,
|
|
11709
|
+
** the resulting changeset will contain an UPDATE change that updates both
|
|
11710
|
+
** fields.
|
|
11492
11711
|
*/
|
|
11493
11712
|
SQLITE_API int sqlite3session_changeset(
|
|
11494
11713
|
sqlite3_session *pSession, /* Session object */
|
|
@@ -11560,8 +11779,9 @@ SQLITE_API sqlite3_int64 sqlite3session_changeset_size(sqlite3_session *pSession
|
|
|
11560
11779
|
** database zFrom the contents of the two compatible tables would be
|
|
11561
11780
|
** identical.
|
|
11562
11781
|
**
|
|
11563
|
-
**
|
|
11564
|
-
**
|
|
11782
|
+
** Unless the call to this function is a no-op as described above, it is an
|
|
11783
|
+
** error if database zFrom does not exist or does not contain the required
|
|
11784
|
+
** compatible table.
|
|
11565
11785
|
**
|
|
11566
11786
|
** If the operation is successful, SQLITE_OK is returned. Otherwise, an SQLite
|
|
11567
11787
|
** error code. In this case, if argument pzErrMsg is not NULL, *pzErrMsg
|
|
@@ -11696,7 +11916,7 @@ SQLITE_API int sqlite3changeset_start_v2(
|
|
|
11696
11916
|
** The following flags may passed via the 4th parameter to
|
|
11697
11917
|
** [sqlite3changeset_start_v2] and [sqlite3changeset_start_v2_strm]:
|
|
11698
11918
|
**
|
|
11699
|
-
** <dt>
|
|
11919
|
+
** <dt>SQLITE_CHANGESETSTART_INVERT <dd>
|
|
11700
11920
|
** Invert the changeset while iterating through it. This is equivalent to
|
|
11701
11921
|
** inverting a changeset using sqlite3changeset_invert() before applying it.
|
|
11702
11922
|
** It is an error to specify this flag with a patchset.
|
|
@@ -12011,19 +12231,6 @@ SQLITE_API int sqlite3changeset_concat(
|
|
|
12011
12231
|
void **ppOut /* OUT: Buffer containing output changeset */
|
|
12012
12232
|
);
|
|
12013
12233
|
|
|
12014
|
-
|
|
12015
|
-
/*
|
|
12016
|
-
** CAPI3REF: Upgrade the Schema of a Changeset/Patchset
|
|
12017
|
-
*/
|
|
12018
|
-
SQLITE_API int sqlite3changeset_upgrade(
|
|
12019
|
-
sqlite3 *db,
|
|
12020
|
-
const char *zDb,
|
|
12021
|
-
int nIn, const void *pIn, /* Input changeset */
|
|
12022
|
-
int *pnOut, void **ppOut /* OUT: Inverse of input */
|
|
12023
|
-
);
|
|
12024
|
-
|
|
12025
|
-
|
|
12026
|
-
|
|
12027
12234
|
/*
|
|
12028
12235
|
** CAPI3REF: Changegroup Handle
|
|
12029
12236
|
**
|
|
@@ -12253,14 +12460,32 @@ SQLITE_API void sqlite3changegroup_delete(sqlite3_changegroup*);
|
|
|
12253
12460
|
** update the "main" database attached to handle db with the changes found in
|
|
12254
12461
|
** the changeset passed via the second and third arguments.
|
|
12255
12462
|
**
|
|
12463
|
+
** All changes made by these functions are enclosed in a savepoint transaction.
|
|
12464
|
+
** If any other error (aside from a constraint failure when attempting to
|
|
12465
|
+
** write to the target database) occurs, then the savepoint transaction is
|
|
12466
|
+
** rolled back, restoring the target database to its original state, and an
|
|
12467
|
+
** SQLite error code returned. Additionally, starting with version 3.51.0,
|
|
12468
|
+
** an error code and error message that may be accessed using the
|
|
12469
|
+
** [sqlite3_errcode()] and [sqlite3_errmsg()] APIs are left in the database
|
|
12470
|
+
** handle.
|
|
12471
|
+
**
|
|
12256
12472
|
** The fourth argument (xFilter) passed to these functions is the "filter
|
|
12257
|
-
** callback".
|
|
12258
|
-
**
|
|
12259
|
-
**
|
|
12260
|
-
**
|
|
12261
|
-
**
|
|
12262
|
-
**
|
|
12263
|
-
**
|
|
12473
|
+
** callback". This may be passed NULL, in which case all changes in the
|
|
12474
|
+
** changeset are applied to the database. For sqlite3changeset_apply() and
|
|
12475
|
+
** sqlite3_changeset_apply_v2(), if it is not NULL, then it is invoked once
|
|
12476
|
+
** for each table affected by at least one change in the changeset. In this
|
|
12477
|
+
** case the table name is passed as the second argument, and a copy of
|
|
12478
|
+
** the context pointer passed as the sixth argument to apply() or apply_v2()
|
|
12479
|
+
** as the first. If the "filter callback" returns zero, then no attempt is
|
|
12480
|
+
** made to apply any changes to the table. Otherwise, if the return value is
|
|
12481
|
+
** non-zero, all changes related to the table are attempted.
|
|
12482
|
+
**
|
|
12483
|
+
** For sqlite3_changeset_apply_v3(), the xFilter callback is invoked once
|
|
12484
|
+
** per change. The second argument in this case is an sqlite3_changeset_iter
|
|
12485
|
+
** that may be queried using the usual APIs for the details of the current
|
|
12486
|
+
** change. If the "filter callback" returns zero in this case, then no attempt
|
|
12487
|
+
** is made to apply the current change. If it returns non-zero, the change
|
|
12488
|
+
** is applied.
|
|
12264
12489
|
**
|
|
12265
12490
|
** For each table that is not excluded by the filter callback, this function
|
|
12266
12491
|
** tests that the target database contains a compatible table. A table is
|
|
@@ -12281,11 +12506,11 @@ SQLITE_API void sqlite3changegroup_delete(sqlite3_changegroup*);
|
|
|
12281
12506
|
** one such warning is issued for each table in the changeset.
|
|
12282
12507
|
**
|
|
12283
12508
|
** For each change for which there is a compatible table, an attempt is made
|
|
12284
|
-
** to modify the table contents according to
|
|
12285
|
-
** change. If a change cannot be
|
|
12286
|
-
** function passed as the fifth argument
|
|
12287
|
-
** invoked. A description of exactly when
|
|
12288
|
-
** each type of change is below.
|
|
12509
|
+
** to modify the table contents according to each UPDATE, INSERT or DELETE
|
|
12510
|
+
** change that is not excluded by a filter callback. If a change cannot be
|
|
12511
|
+
** applied cleanly, the conflict handler function passed as the fifth argument
|
|
12512
|
+
** to sqlite3changeset_apply() may be invoked. A description of exactly when
|
|
12513
|
+
** the conflict handler is invoked for each type of change is below.
|
|
12289
12514
|
**
|
|
12290
12515
|
** Unlike the xFilter argument, xConflict may not be passed NULL. The results
|
|
12291
12516
|
** of passing anything other than a valid function pointer as the xConflict
|
|
@@ -12381,12 +12606,6 @@ SQLITE_API void sqlite3changegroup_delete(sqlite3_changegroup*);
|
|
|
12381
12606
|
** This can be used to further customize the application's conflict
|
|
12382
12607
|
** resolution strategy.
|
|
12383
12608
|
**
|
|
12384
|
-
** All changes made by these functions are enclosed in a savepoint transaction.
|
|
12385
|
-
** If any other error (aside from a constraint failure when attempting to
|
|
12386
|
-
** write to the target database) occurs, then the savepoint transaction is
|
|
12387
|
-
** rolled back, restoring the target database to its original state, and an
|
|
12388
|
-
** SQLite error code returned.
|
|
12389
|
-
**
|
|
12390
12609
|
** If the output parameters (ppRebase) and (pnRebase) are non-NULL and
|
|
12391
12610
|
** the input is a changeset (not a patchset), then sqlite3changeset_apply_v2()
|
|
12392
12611
|
** may set (*ppRebase) to point to a "rebase" that may be used with the
|
|
@@ -12436,6 +12655,23 @@ SQLITE_API int sqlite3changeset_apply_v2(
|
|
|
12436
12655
|
void **ppRebase, int *pnRebase, /* OUT: Rebase data */
|
|
12437
12656
|
int flags /* SESSION_CHANGESETAPPLY_* flags */
|
|
12438
12657
|
);
|
|
12658
|
+
SQLITE_API int sqlite3changeset_apply_v3(
|
|
12659
|
+
sqlite3 *db, /* Apply change to "main" db of this handle */
|
|
12660
|
+
int nChangeset, /* Size of changeset in bytes */
|
|
12661
|
+
void *pChangeset, /* Changeset blob */
|
|
12662
|
+
int(*xFilter)(
|
|
12663
|
+
void *pCtx, /* Copy of sixth arg to _apply() */
|
|
12664
|
+
sqlite3_changeset_iter *p /* Handle describing change */
|
|
12665
|
+
),
|
|
12666
|
+
int(*xConflict)(
|
|
12667
|
+
void *pCtx, /* Copy of sixth arg to _apply() */
|
|
12668
|
+
int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */
|
|
12669
|
+
sqlite3_changeset_iter *p /* Handle describing change and conflict */
|
|
12670
|
+
),
|
|
12671
|
+
void *pCtx, /* First argument passed to xConflict */
|
|
12672
|
+
void **ppRebase, int *pnRebase, /* OUT: Rebase data */
|
|
12673
|
+
int flags /* SESSION_CHANGESETAPPLY_* flags */
|
|
12674
|
+
);
|
|
12439
12675
|
|
|
12440
12676
|
/*
|
|
12441
12677
|
** CAPI3REF: Flags for sqlite3changeset_apply_v2
|
|
@@ -12855,6 +13091,23 @@ SQLITE_API int sqlite3changeset_apply_v2_strm(
|
|
|
12855
13091
|
void **ppRebase, int *pnRebase,
|
|
12856
13092
|
int flags
|
|
12857
13093
|
);
|
|
13094
|
+
SQLITE_API int sqlite3changeset_apply_v3_strm(
|
|
13095
|
+
sqlite3 *db, /* Apply change to "main" db of this handle */
|
|
13096
|
+
int (*xInput)(void *pIn, void *pData, int *pnData), /* Input function */
|
|
13097
|
+
void *pIn, /* First arg for xInput */
|
|
13098
|
+
int(*xFilter)(
|
|
13099
|
+
void *pCtx, /* Copy of sixth arg to _apply() */
|
|
13100
|
+
sqlite3_changeset_iter *p
|
|
13101
|
+
),
|
|
13102
|
+
int(*xConflict)(
|
|
13103
|
+
void *pCtx, /* Copy of sixth arg to _apply() */
|
|
13104
|
+
int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */
|
|
13105
|
+
sqlite3_changeset_iter *p /* Handle describing change and conflict */
|
|
13106
|
+
),
|
|
13107
|
+
void *pCtx, /* First argument passed to xConflict */
|
|
13108
|
+
void **ppRebase, int *pnRebase,
|
|
13109
|
+
int flags
|
|
13110
|
+
);
|
|
12858
13111
|
SQLITE_API int sqlite3changeset_concat_strm(
|
|
12859
13112
|
int (*xInputA)(void *pIn, void *pData, int *pnData),
|
|
12860
13113
|
void *pInA,
|