cordova-sqlite-evmax-build-free 0.0.11 → 0.1.0

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.
@@ -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://www.fossil-scm.org/">Fossil configuration management
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.43.1"
150
- #define SQLITE_VERSION_NUMBER 3043001
151
- #define SQLITE_SOURCE_ID "2023-09-11 12:01:27 2d3a40c05c49e1a49264912b1a05bc2143ac0e7c3df588276ce80a4cbc9bd1b0"
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 [SQLITE_VERSION]
172
- ** macro. ^The sqlite3_libversion() function returns a pointer to the
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-separate SQL statements passed into its 2nd argument,
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
@@ -420,6 +423,8 @@ typedef int (*sqlite3_callback)(void*,int,char**, char**);
420
423
  ** the 1st parameter to sqlite3_exec() while sqlite3_exec() is running.
421
424
  ** <li> The application must not modify the SQL statement text passed into
422
425
  ** the 2nd parameter of sqlite3_exec() while sqlite3_exec() is running.
426
+ ** <li> The application must not dereference the arrays or string pointers
427
+ ** passed as the 3rd and 4th callback parameters after it returns.
423
428
  ** </ul>
424
429
  */
425
430
  SQLITE_API int sqlite3_exec(
@@ -495,6 +500,9 @@ SQLITE_API int sqlite3_exec(
495
500
  #define SQLITE_ERROR_MISSING_COLLSEQ (SQLITE_ERROR | (1<<8))
496
501
  #define SQLITE_ERROR_RETRY (SQLITE_ERROR | (2<<8))
497
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))
498
506
  #define SQLITE_IOERR_READ (SQLITE_IOERR | (1<<8))
499
507
  #define SQLITE_IOERR_SHORT_READ (SQLITE_IOERR | (2<<8))
500
508
  #define SQLITE_IOERR_WRITE (SQLITE_IOERR | (3<<8))
@@ -529,6 +537,8 @@ SQLITE_API int sqlite3_exec(
529
537
  #define SQLITE_IOERR_DATA (SQLITE_IOERR | (32<<8))
530
538
  #define SQLITE_IOERR_CORRUPTFS (SQLITE_IOERR | (33<<8))
531
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))
532
542
  #define SQLITE_LOCKED_SHAREDCACHE (SQLITE_LOCKED | (1<<8))
533
543
  #define SQLITE_LOCKED_VTAB (SQLITE_LOCKED | (2<<8))
534
544
  #define SQLITE_BUSY_RECOVERY (SQLITE_BUSY | (1<<8))
@@ -587,7 +597,7 @@ SQLITE_API int sqlite3_exec(
587
597
  ** Note in particular that passing the SQLITE_OPEN_EXCLUSIVE flag into
588
598
  ** [sqlite3_open_v2()] does *not* cause the underlying database file
589
599
  ** to be opened using O_EXCL. Passing SQLITE_OPEN_EXCLUSIVE into
590
- ** [sqlite3_open_v2()] has historically be a no-op and might become an
600
+ ** [sqlite3_open_v2()] has historically been a no-op and might become an
591
601
  ** error in future versions of SQLite.
592
602
  */
593
603
  #define SQLITE_OPEN_READONLY 0x00000001 /* Ok for sqlite3_open_v2() */
@@ -650,6 +660,13 @@ SQLITE_API int sqlite3_exec(
650
660
  ** filesystem supports doing multiple write operations atomically when those
651
661
  ** write operations are bracketed by [SQLITE_FCNTL_BEGIN_ATOMIC_WRITE] and
652
662
  ** [SQLITE_FCNTL_COMMIT_ATOMIC_WRITE].
663
+ **
664
+ ** The SQLITE_IOCAP_SUBPAGE_READ property means that it is ok to read
665
+ ** from the database file in amounts that are not a multiple of the
666
+ ** page size and that do not begin at a page boundary. Without this
667
+ ** property, SQLite is careful to only do full-page reads and write
668
+ ** on aligned pages, with the one exception that it will do a sub-page
669
+ ** read of the first page to access the database header.
653
670
  */
654
671
  #define SQLITE_IOCAP_ATOMIC 0x00000001
655
672
  #define SQLITE_IOCAP_ATOMIC512 0x00000002
@@ -666,6 +683,7 @@ SQLITE_API int sqlite3_exec(
666
683
  #define SQLITE_IOCAP_POWERSAFE_OVERWRITE 0x00001000
667
684
  #define SQLITE_IOCAP_IMMUTABLE 0x00002000
668
685
  #define SQLITE_IOCAP_BATCH_ATOMIC 0x00004000
686
+ #define SQLITE_IOCAP_SUBPAGE_READ 0x00008000
669
687
 
670
688
  /*
671
689
  ** CAPI3REF: File Locking Levels
@@ -673,7 +691,7 @@ SQLITE_API int sqlite3_exec(
673
691
  ** SQLite uses one of these integer values as the second
674
692
  ** argument to calls it makes to the xLock() and xUnlock() methods
675
693
  ** of an [sqlite3_io_methods] object. These values are ordered from
676
- ** lest restrictive to most restrictive.
694
+ ** least restrictive to most restrictive.
677
695
  **
678
696
  ** The argument to xLock() is always SHARED or higher. The argument to
679
697
  ** xUnlock is either SHARED or NONE.
@@ -762,16 +780,16 @@ struct sqlite3_file {
762
780
  ** </ul>
763
781
  ** xLock() upgrades the database file lock. In other words, xLock() moves the
764
782
  ** database file lock in the direction NONE toward EXCLUSIVE. The argument to
765
- ** xLock() is always on of SHARED, RESERVED, PENDING, or EXCLUSIVE, never
783
+ ** xLock() is always one of SHARED, RESERVED, PENDING, or EXCLUSIVE, never
766
784
  ** SQLITE_LOCK_NONE. If the database file lock is already at or above the
767
785
  ** requested lock, then the call to xLock() is a no-op.
768
786
  ** xUnlock() downgrades the database file lock to either SHARED or NONE.
769
- * If the lock is already at or below the requested lock state, then the call
787
+ ** If the lock is already at or below the requested lock state, then the call
770
788
  ** to xUnlock() is a no-op.
771
789
  ** The xCheckReservedLock() method checks whether any database connection,
772
790
  ** either in this process or in some other process, is holding a RESERVED,
773
- ** PENDING, or EXCLUSIVE lock on the file. It returns true
774
- ** if such a lock exists and false otherwise.
791
+ ** PENDING, or EXCLUSIVE lock on the file. It returns, via its output
792
+ ** pointer parameter, true if such a lock exists and false otherwise.
775
793
  **
776
794
  ** The xFileControl() method is a generic interface that allows custom
777
795
  ** VFS implementations to directly control an open file using the
@@ -812,6 +830,7 @@ struct sqlite3_file {
812
830
  ** <li> [SQLITE_IOCAP_POWERSAFE_OVERWRITE]
813
831
  ** <li> [SQLITE_IOCAP_IMMUTABLE]
814
832
  ** <li> [SQLITE_IOCAP_BATCH_ATOMIC]
833
+ ** <li> [SQLITE_IOCAP_SUBPAGE_READ]
815
834
  ** </ul>
816
835
  **
817
836
  ** The SQLITE_IOCAP_ATOMIC property means that all writes of
@@ -913,7 +932,7 @@ struct sqlite3_io_methods {
913
932
  ** connection. See also [SQLITE_FCNTL_FILE_POINTER].
914
933
  **
915
934
  ** <li>[[SQLITE_FCNTL_SYNC_OMITTED]]
916
- ** No longer in use.
935
+ ** The SQLITE_FCNTL_SYNC_OMITTED file-control is no longer used.
917
936
  **
918
937
  ** <li>[[SQLITE_FCNTL_SYNC]]
919
938
  ** The [SQLITE_FCNTL_SYNC] opcode is generated internally by SQLite and
@@ -988,7 +1007,7 @@ struct sqlite3_io_methods {
988
1007
  **
989
1008
  ** <li>[[SQLITE_FCNTL_VFSNAME]]
990
1009
  ** ^The [SQLITE_FCNTL_VFSNAME] opcode can be used to obtain the names of
991
- ** all [VFSes] in the VFS stack. The names are of all VFS shims and the
1010
+ ** all [VFSes] in the VFS stack. The names of all VFS shims and the
992
1011
  ** final bottom-level VFS are written into memory obtained from
993
1012
  ** [sqlite3_malloc()] and the result is stored in the char* variable
994
1013
  ** that the fourth parameter of [sqlite3_file_control()] points to.
@@ -1002,7 +1021,7 @@ struct sqlite3_io_methods {
1002
1021
  ** ^The [SQLITE_FCNTL_VFS_POINTER] opcode finds a pointer to the top-level
1003
1022
  ** [VFSes] currently in use. ^(The argument X in
1004
1023
  ** sqlite3_file_control(db,SQLITE_FCNTL_VFS_POINTER,X) must be
1005
- ** of type "[sqlite3_vfs] **". This opcodes will set *X
1024
+ ** of type "[sqlite3_vfs] **". This opcode will set *X
1006
1025
  ** to a pointer to the top-level VFS.)^
1007
1026
  ** ^When there are multiple VFS shims in the stack, this opcode finds the
1008
1027
  ** upper-most shim only.
@@ -1089,6 +1108,11 @@ struct sqlite3_io_methods {
1089
1108
  ** pointed to by the pArg argument. This capability is used during testing
1090
1109
  ** and only needs to be supported when SQLITE_TEST is defined.
1091
1110
  **
1111
+ ** <li>[[SQLITE_FCNTL_NULL_IO]]
1112
+ ** The [SQLITE_FCNTL_NULL_IO] opcode sets the low-level file descriptor
1113
+ ** or file handle for the [sqlite3_file] object such that it will no longer
1114
+ ** read or write to the database file.
1115
+ **
1092
1116
  ** <li>[[SQLITE_FCNTL_WAL_BLOCK]]
1093
1117
  ** The [SQLITE_FCNTL_WAL_BLOCK] is a signal to the VFS layer that it might
1094
1118
  ** be advantageous to block on the next WAL lock if the lock is not immediately
@@ -1147,6 +1171,12 @@ struct sqlite3_io_methods {
1147
1171
  ** the value that M is to be set to. Before returning, the 32-bit signed
1148
1172
  ** integer is overwritten with the previous value of M.
1149
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
+ **
1150
1180
  ** <li>[[SQLITE_FCNTL_DATA_VERSION]]
1151
1181
  ** The [SQLITE_FCNTL_DATA_VERSION] opcode is used to detect changes to
1152
1182
  ** a database file. The argument is a pointer to a 32-bit unsigned integer.
@@ -1181,7 +1211,7 @@ struct sqlite3_io_methods {
1181
1211
  ** <li>[[SQLITE_FCNTL_EXTERNAL_READER]]
1182
1212
  ** The EXPERIMENTAL [SQLITE_FCNTL_EXTERNAL_READER] opcode is used to detect
1183
1213
  ** whether or not there is a database client in another process with a wal-mode
1184
- ** 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
1185
1215
  ** (void*) argument passed with this file-control should be a pointer to a
1186
1216
  ** value of type (int). The integer value is set to 1 if the database is a wal
1187
1217
  ** mode database and there exists at least one client in another process that
@@ -1199,6 +1229,15 @@ struct sqlite3_io_methods {
1199
1229
  ** database is not a temp db, then the [SQLITE_FCNTL_RESET_CACHE] file-control
1200
1230
  ** purges the contents of the in-memory page cache. If there is an open
1201
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.
1202
1241
  ** </ul>
1203
1242
  */
1204
1243
  #define SQLITE_FCNTL_LOCKSTATE 1
@@ -1242,6 +1281,9 @@ struct sqlite3_io_methods {
1242
1281
  #define SQLITE_FCNTL_EXTERNAL_READER 40
1243
1282
  #define SQLITE_FCNTL_CKSM_FILE 41
1244
1283
  #define SQLITE_FCNTL_RESET_CACHE 42
1284
+ #define SQLITE_FCNTL_NULL_IO 43
1285
+ #define SQLITE_FCNTL_BLOCK_ON_CONNECT 44
1286
+ #define SQLITE_FCNTL_FILESTAT 45
1245
1287
 
1246
1288
  /* deprecated names */
1247
1289
  #define SQLITE_GET_LOCKPROXYFILE SQLITE_FCNTL_GET_LOCKPROXYFILE
@@ -1604,7 +1646,7 @@ struct sqlite3_vfs {
1604
1646
  ** SQLite interfaces so that an application usually does not need to
1605
1647
  ** invoke sqlite3_initialize() directly. For example, [sqlite3_open()]
1606
1648
  ** calls sqlite3_initialize() so the SQLite library will be automatically
1607
- ** initialized when [sqlite3_open()] is called if it has not be initialized
1649
+ ** initialized when [sqlite3_open()] is called if it has not been initialized
1608
1650
  ** already. ^However, if SQLite is compiled with the [SQLITE_OMIT_AUTOINIT]
1609
1651
  ** compile-time option, then the automatic calls to sqlite3_initialize()
1610
1652
  ** are omitted and the application must call sqlite3_initialize() directly
@@ -1861,21 +1903,21 @@ struct sqlite3_mem_methods {
1861
1903
  ** The [sqlite3_mem_methods]
1862
1904
  ** structure is filled with the currently defined memory allocation routines.)^
1863
1905
  ** This option can be used to overload the default memory allocation
1864
- ** routines with a wrapper that simulations memory allocation failure or
1906
+ ** routines with a wrapper that simulates memory allocation failure or
1865
1907
  ** tracks memory usage, for example. </dd>
1866
1908
  **
1867
1909
  ** [[SQLITE_CONFIG_SMALL_MALLOC]] <dt>SQLITE_CONFIG_SMALL_MALLOC</dt>
1868
- ** <dd> ^The SQLITE_CONFIG_SMALL_MALLOC option takes single argument of
1910
+ ** <dd> ^The SQLITE_CONFIG_SMALL_MALLOC option takes a single argument of
1869
1911
  ** type int, interpreted as a boolean, which if true provides a hint to
1870
1912
  ** SQLite that it should avoid large memory allocations if possible.
1871
1913
  ** SQLite will run faster if it is free to make large memory allocations,
1872
- ** but some application might prefer to run slower in exchange for
1914
+ ** but some applications might prefer to run slower in exchange for
1873
1915
  ** guarantees about memory fragmentation that are possible if large
1874
1916
  ** allocations are avoided. This hint is normally off.
1875
1917
  ** </dd>
1876
1918
  **
1877
1919
  ** [[SQLITE_CONFIG_MEMSTATUS]] <dt>SQLITE_CONFIG_MEMSTATUS</dt>
1878
- ** <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,
1879
1921
  ** interpreted as a boolean, which enables or disables the collection of
1880
1922
  ** memory allocation statistics. ^(When memory allocation statistics are
1881
1923
  ** disabled, the following SQLite interfaces become non-operational:
@@ -1920,7 +1962,7 @@ struct sqlite3_mem_methods {
1920
1962
  ** ^If pMem is NULL and N is non-zero, then each database connection
1921
1963
  ** does an initial bulk allocation for page cache memory
1922
1964
  ** from [sqlite3_malloc()] sufficient for N cache lines if N is positive or
1923
- ** of -1024*N bytes if N is negative, . ^If additional
1965
+ ** of -1024*N bytes if N is negative. ^If additional
1924
1966
  ** page cache memory is needed beyond what is provided by the initial
1925
1967
  ** allocation, then SQLite goes to [sqlite3_malloc()] separately for each
1926
1968
  ** additional cache line. </dd>
@@ -1949,7 +1991,7 @@ struct sqlite3_mem_methods {
1949
1991
  ** <dd> ^(The SQLITE_CONFIG_MUTEX option takes a single argument which is a
1950
1992
  ** pointer to an instance of the [sqlite3_mutex_methods] structure.
1951
1993
  ** The argument specifies alternative low-level mutex routines to be used
1952
- ** 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
1953
1995
  ** the content of the [sqlite3_mutex_methods] structure before the call to
1954
1996
  ** [sqlite3_config()] returns. ^If SQLite is compiled with
1955
1997
  ** the [SQLITE_THREADSAFE | SQLITE_THREADSAFE=0] compile-time option then
@@ -1972,13 +2014,16 @@ struct sqlite3_mem_methods {
1972
2014
  **
1973
2015
  ** [[SQLITE_CONFIG_LOOKASIDE]] <dt>SQLITE_CONFIG_LOOKASIDE</dt>
1974
2016
  ** <dd> ^(The SQLITE_CONFIG_LOOKASIDE option takes two arguments that determine
1975
- ** the default size of lookaside memory on each [database connection].
2017
+ ** the default size of [lookaside memory] on each [database connection].
1976
2018
  ** The first argument is the
1977
- ** size of each lookaside buffer slot and the second is the number of
1978
- ** slots allocated to each database connection.)^ ^(SQLITE_CONFIG_LOOKASIDE
1979
- ** sets the <i>default</i> lookaside size. The [SQLITE_DBCONFIG_LOOKASIDE]
1980
- ** option to [sqlite3_db_config()] can be used to change the lookaside
1981
- ** configuration on individual connections.)^ </dd>
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>
1982
2027
  **
1983
2028
  ** [[SQLITE_CONFIG_PCACHE2]] <dt>SQLITE_CONFIG_PCACHE2</dt>
1984
2029
  ** <dd> ^(The SQLITE_CONFIG_PCACHE2 option takes a single argument which is
@@ -1988,7 +2033,7 @@ struct sqlite3_mem_methods {
1988
2033
  **
1989
2034
  ** [[SQLITE_CONFIG_GETPCACHE2]] <dt>SQLITE_CONFIG_GETPCACHE2</dt>
1990
2035
  ** <dd> ^(The SQLITE_CONFIG_GETPCACHE2 option takes a single argument which
1991
- ** is a pointer to an [sqlite3_pcache_methods2] object. SQLite copies of
2036
+ ** is a pointer to an [sqlite3_pcache_methods2] object. SQLite copies off
1992
2037
  ** the current page cache implementation into that object.)^ </dd>
1993
2038
  **
1994
2039
  ** [[SQLITE_CONFIG_LOG]] <dt>SQLITE_CONFIG_LOG</dt>
@@ -2005,7 +2050,7 @@ struct sqlite3_mem_methods {
2005
2050
  ** the logger function is a copy of the first parameter to the corresponding
2006
2051
  ** [sqlite3_log()] call and is intended to be a [result code] or an
2007
2052
  ** [extended result code]. ^The third parameter passed to the logger is
2008
- ** log message after formatting via [sqlite3_snprintf()].
2053
+ ** a log message after formatting via [sqlite3_snprintf()].
2009
2054
  ** The SQLite logging interface is not reentrant; the logger function
2010
2055
  ** supplied by the application must not invoke any SQLite interface.
2011
2056
  ** In a multi-threaded application, the application-defined logger
@@ -2127,7 +2172,7 @@ struct sqlite3_mem_methods {
2127
2172
  ** is stored in each sorted record and the required column values loaded
2128
2173
  ** from the database as records are returned in sorted order. The default
2129
2174
  ** value for this option is to never use this optimization. Specifying a
2130
- ** negative value for this option restores the default behaviour.
2175
+ ** negative value for this option restores the default behavior.
2131
2176
  ** This option is only available if SQLite is compiled with the
2132
2177
  ** [SQLITE_ENABLE_SORTER_REFERENCES] compile-time option.
2133
2178
  **
@@ -2141,6 +2186,22 @@ struct sqlite3_mem_methods {
2141
2186
  ** configuration setting is never used, then the default maximum is determined
2142
2187
  ** by the [SQLITE_MEMDB_DEFAULT_MAXSIZE] compile-time option. If that
2143
2188
  ** compile-time option is not set, then the default maximum is 1073741824.
2189
+ **
2190
+ ** [[SQLITE_CONFIG_ROWID_IN_VIEW]]
2191
+ ** <dt>SQLITE_CONFIG_ROWID_IN_VIEW
2192
+ ** <dd>The SQLITE_CONFIG_ROWID_IN_VIEW option enables or disables the ability
2193
+ ** for VIEWs to have a ROWID. The capability can only be enabled if SQLite is
2194
+ ** compiled with -DSQLITE_ALLOW_ROWID_IN_VIEW, in which case the capability
2195
+ ** defaults to on. This configuration option queries the current setting or
2196
+ ** changes the setting to off or on. The argument is a pointer to an integer.
2197
+ ** If that integer initially holds a value of 1, then the ability for VIEWs to
2198
+ ** have ROWIDs is activated. If the integer initially holds zero, then the
2199
+ ** ability is deactivated. Any other initial value for the integer leaves the
2200
+ ** setting unchanged. After changes, if any, the integer is written with
2201
+ ** a 1 or 0, if the ability for VIEWs to have ROWIDs is on or off. If SQLite
2202
+ ** is compiled without -DSQLITE_ALLOW_ROWID_IN_VIEW (which is the usual and
2203
+ ** recommended case) then the integer is always filled with zero, regardless
2204
+ ** if its initial value.
2144
2205
  ** </dl>
2145
2206
  */
2146
2207
  #define SQLITE_CONFIG_SINGLETHREAD 1 /* nil */
@@ -2172,12 +2233,21 @@ struct sqlite3_mem_methods {
2172
2233
  #define SQLITE_CONFIG_SMALL_MALLOC 27 /* boolean */
2173
2234
  #define SQLITE_CONFIG_SORTERREF_SIZE 28 /* int nByte */
2174
2235
  #define SQLITE_CONFIG_MEMDB_MAXSIZE 29 /* sqlite3_int64 */
2236
+ #define SQLITE_CONFIG_ROWID_IN_VIEW 30 /* int* */
2175
2237
 
2176
2238
  /*
2177
2239
  ** CAPI3REF: Database Connection Configuration Options
2178
2240
  **
2179
2241
  ** These constants are the available integer configuration options that
2180
- ** can be passed as the second argument to the [sqlite3_db_config()] interface.
2242
+ ** can be passed as the second parameter to the [sqlite3_db_config()] interface.
2243
+ **
2244
+ ** The [sqlite3_db_config()] interface is a var-args function. It takes a
2245
+ ** variable number of parameters, though always at least two. The number of
2246
+ ** parameters passed into sqlite3_db_config() depends on which of these
2247
+ ** constants is given as the second parameter. This documentation page
2248
+ ** refers to parameters beyond the second as "arguments". Thus, when this
2249
+ ** page says "the N-th argument" it means "the N-th parameter past the
2250
+ ** configuration option" or "the (N+2)-th parameter to sqlite3_db_config()".
2181
2251
  **
2182
2252
  ** New configuration options may be added in future releases of SQLite.
2183
2253
  ** Existing configuration options might be discontinued. Applications
@@ -2189,31 +2259,57 @@ struct sqlite3_mem_methods {
2189
2259
  ** <dl>
2190
2260
  ** [[SQLITE_DBCONFIG_LOOKASIDE]]
2191
2261
  ** <dt>SQLITE_DBCONFIG_LOOKASIDE</dt>
2192
- ** <dd> ^This option takes three additional arguments that determine the
2193
- ** [lookaside memory allocator] configuration for the [database connection].
2194
- ** ^The first argument (the third parameter to [sqlite3_db_config()] is a
2262
+ ** <dd> The SQLITE_DBCONFIG_LOOKASIDE option is used to adjust the
2263
+ ** configuration of the [lookaside memory allocator] within a database
2264
+ ** connection.
2265
+ ** The arguments to the SQLITE_DBCONFIG_LOOKASIDE option are <i>not</i>
2266
+ ** in the [DBCONFIG arguments|usual format].
2267
+ ** The SQLITE_DBCONFIG_LOOKASIDE option takes three arguments, not two,
2268
+ ** so that a call to [sqlite3_db_config()] that uses SQLITE_DBCONFIG_LOOKASIDE
2269
+ ** should have a total of five parameters.
2270
+ ** <ol>
2271
+ ** <li><p>The first argument ("buf") is a
2195
2272
  ** pointer to a memory buffer to use for lookaside memory.
2196
- ** ^The first argument after the SQLITE_DBCONFIG_LOOKASIDE verb
2197
- ** may be NULL in which case SQLite will allocate the
2198
- ** lookaside buffer itself using [sqlite3_malloc()]. ^The second argument is the
2199
- ** size of each lookaside buffer slot. ^The third argument is the number of
2200
- ** slots. The size of the buffer in the first argument must be greater than
2201
- ** or equal to the product of the second and third arguments. The buffer
2202
- ** must be aligned to an 8-byte boundary. ^If the second argument to
2203
- ** SQLITE_DBCONFIG_LOOKASIDE is not a multiple of 8, it is internally
2204
- ** rounded down to the next smaller multiple of 8. ^(The lookaside memory
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
2205
2291
  ** configuration for a database connection can only be changed when that
2206
2292
  ** connection is not currently using lookaside memory, or in other words
2207
- ** when the "current value" returned by
2208
- ** [sqlite3_db_status](D,[SQLITE_DBSTATUS_LOOKASIDE_USED],...) is zero.
2293
+ ** when the value returned by [SQLITE_DBSTATUS_LOOKASIDE_USED] is zero.
2209
2294
  ** Any attempt to change the lookaside memory configuration when lookaside
2210
2295
  ** memory is in use leaves the configuration unchanged and returns
2211
- ** [SQLITE_BUSY].)^</dd>
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>
2212
2307
  **
2213
2308
  ** [[SQLITE_DBCONFIG_ENABLE_FKEY]]
2214
2309
  ** <dt>SQLITE_DBCONFIG_ENABLE_FKEY</dt>
2215
2310
  ** <dd> ^This option is used to enable or disable the enforcement of
2216
- ** [foreign key constraints]. There should be two additional arguments.
2311
+ ** [foreign key constraints]. This is the same setting that is
2312
+ ** enabled or disabled by the [PRAGMA foreign_keys] statement.
2217
2313
  ** The first argument is an integer which is 0 to disable FK enforcement,
2218
2314
  ** positive to enable FK enforcement or negative to leave FK enforcement
2219
2315
  ** unchanged. The second parameter is a pointer to an integer into which
@@ -2235,13 +2331,13 @@ struct sqlite3_mem_methods {
2235
2331
  ** <p>Originally this option disabled all triggers. ^(However, since
2236
2332
  ** SQLite version 3.35.0, TEMP triggers are still allowed even if
2237
2333
  ** this option is off. So, in other words, this option now only disables
2238
- ** triggers in the main database schema or in the schemas of ATTACH-ed
2334
+ ** triggers in the main database schema or in the schemas of [ATTACH]-ed
2239
2335
  ** databases.)^ </dd>
2240
2336
  **
2241
2337
  ** [[SQLITE_DBCONFIG_ENABLE_VIEW]]
2242
2338
  ** <dt>SQLITE_DBCONFIG_ENABLE_VIEW</dt>
2243
2339
  ** <dd> ^This option is used to enable or disable [CREATE VIEW | views].
2244
- ** There should be two additional arguments.
2340
+ ** There must be two additional arguments.
2245
2341
  ** The first argument is an integer which is 0 to disable views,
2246
2342
  ** positive to enable views or negative to leave the setting unchanged.
2247
2343
  ** The second parameter is a pointer to an integer into which
@@ -2257,17 +2353,20 @@ struct sqlite3_mem_methods {
2257
2353
  **
2258
2354
  ** [[SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER]]
2259
2355
  ** <dt>SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER</dt>
2260
- ** <dd> ^This option is used to enable or disable the
2261
- ** [fts3_tokenizer()] function which is part of the
2262
- ** [FTS3] full-text search engine extension.
2263
- ** There should be two additional arguments.
2264
- ** The first argument is an integer which is 0 to disable fts3_tokenizer() or
2265
- ** positive to enable fts3_tokenizer() or negative to leave the setting
2266
- ** unchanged.
2267
- ** The second parameter is a pointer to an integer into which
2268
- ** is written 0 or 1 to indicate whether fts3_tokenizer is disabled or enabled
2269
- ** following this call. The second parameter may be a NULL pointer, in
2270
- ** which case the new setting is not reported back. </dd>
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>
2271
2370
  **
2272
2371
  ** [[SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION]]
2273
2372
  ** <dt>SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION</dt>
@@ -2275,12 +2374,12 @@ struct sqlite3_mem_methods {
2275
2374
  ** interface independently of the [load_extension()] SQL function.
2276
2375
  ** The [sqlite3_enable_load_extension()] API enables or disables both the
2277
2376
  ** C-API [sqlite3_load_extension()] and the SQL function [load_extension()].
2278
- ** There should be two additional arguments.
2377
+ ** There must be two additional arguments.
2279
2378
  ** When the first argument to this interface is 1, then only the C-API is
2280
2379
  ** enabled and the SQL function remains disabled. If the first argument to
2281
2380
  ** this interface is 0, then both the C-API and the SQL function are disabled.
2282
- ** If the first argument is -1, then no changes are made to state of either the
2283
- ** 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.
2284
2383
  ** The second parameter is a pointer to an integer into which
2285
2384
  ** is written 0 or 1 to indicate whether [sqlite3_load_extension()] interface
2286
2385
  ** is disabled or enabled following this call. The second parameter may
@@ -2289,23 +2388,30 @@ struct sqlite3_mem_methods {
2289
2388
  **
2290
2389
  ** [[SQLITE_DBCONFIG_MAINDBNAME]] <dt>SQLITE_DBCONFIG_MAINDBNAME</dt>
2291
2390
  ** <dd> ^This option is used to change the name of the "main" database
2292
- ** schema. ^The sole argument is a pointer to a constant UTF8 string
2293
- ** which will become the new schema name in place of "main". ^SQLite
2294
- ** does not make a copy of the new main schema name string, so the application
2295
- ** must ensure that the argument passed into this DBCONFIG option is unchanged
2296
- ** until after the database connection closes.
2391
+ ** schema. This option does not follow the
2392
+ ** [DBCONFIG arguments|usual SQLITE_DBCONFIG argument format].
2393
+ ** This option takes exactly one additional argument so that the
2394
+ ** [sqlite3_db_config()] call has a total of three parameters. The
2395
+ ** extra argument must be a pointer to a constant UTF8 string which
2396
+ ** will become the new schema name in place of "main". ^SQLite does
2397
+ ** not make a copy of the new main schema name string, so the application
2398
+ ** must ensure that the argument passed into SQLITE_DBCONFIG MAINDBNAME
2399
+ ** is unchanged until after the database connection closes.
2297
2400
  ** </dd>
2298
2401
  **
2299
2402
  ** [[SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE]]
2300
2403
  ** <dt>SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE</dt>
2301
- ** <dd> Usually, when a database in wal mode is closed or detached from a
2302
- ** database handle, SQLite checks if this will mean that there are now no
2303
- ** connections at all to the database. If so, it performs a checkpoint
2304
- ** operation before closing the connection. This option may be used to
2305
- ** override this behaviour. The first parameter passed to this operation
2306
- ** is an integer - positive to disable checkpoints-on-close, or zero (the
2307
- ** default) to enable them, and negative to leave the setting unchanged.
2308
- ** The second parameter is a pointer to an integer
2404
+ ** <dd> Usually, when a database in [WAL mode] is closed or detached from a
2405
+ ** database handle, SQLite checks if if there are other connections to the
2406
+ ** same database, and if there are no other database connection (if the
2407
+ ** connection being closed is the last open connection to the database),
2408
+ ** then SQLite performs a [checkpoint] before closing the connection and
2409
+ ** deletes the WAL file. The SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE option can
2410
+ ** be used to override that behavior. The first argument passed to this
2411
+ ** operation (the third parameter to [sqlite3_db_config()]) is an integer
2412
+ ** which is positive to disable checkpoints-on-close, or zero (the default)
2413
+ ** to enable them, and negative to leave the setting unchanged.
2414
+ ** The second argument (the fourth parameter) is a pointer to an integer
2309
2415
  ** into which is written 0 or 1 to indicate whether checkpoints-on-close
2310
2416
  ** have been disabled - 0 if they are not disabled, 1 if they are.
2311
2417
  ** </dd>
@@ -2391,7 +2497,7 @@ struct sqlite3_mem_methods {
2391
2497
  ** [[SQLITE_DBCONFIG_LEGACY_ALTER_TABLE]]
2392
2498
  ** <dt>SQLITE_DBCONFIG_LEGACY_ALTER_TABLE</dt>
2393
2499
  ** <dd>The SQLITE_DBCONFIG_LEGACY_ALTER_TABLE option activates or deactivates
2394
- ** the legacy behavior of the [ALTER TABLE RENAME] command such it
2500
+ ** the legacy behavior of the [ALTER TABLE RENAME] command such that it
2395
2501
  ** behaves as it did prior to [version 3.24.0] (2018-06-04). See the
2396
2502
  ** "Compatibility Notice" on the [ALTER TABLE RENAME documentation] for
2397
2503
  ** additional information. This feature can also be turned on and off
@@ -2440,7 +2546,7 @@ struct sqlite3_mem_methods {
2440
2546
  ** <dt>SQLITE_DBCONFIG_LEGACY_FILE_FORMAT</dt>
2441
2547
  ** <dd>The SQLITE_DBCONFIG_LEGACY_FILE_FORMAT option activates or deactivates
2442
2548
  ** the legacy file format flag. When activated, this flag causes all newly
2443
- ** created database file to have a schema format version number (the 4-byte
2549
+ ** created database files to have a schema format version number (the 4-byte
2444
2550
  ** integer found at offset 44 into the database header) of 1. This in turn
2445
2551
  ** means that the resulting database file will be readable and writable by
2446
2552
  ** any SQLite version back to 3.0.0 ([dateof:3.0.0]). Without this setting,
@@ -2466,8 +2572,8 @@ struct sqlite3_mem_methods {
2466
2572
  ** statistics. For statistics to be collected, the flag must be set on
2467
2573
  ** the database handle both when the SQL statement is prepared and when it
2468
2574
  ** is stepped. The flag is set (collection of statistics is enabled)
2469
- ** by default. This option takes two arguments: an integer and a pointer to
2470
- ** an integer.. The first argument is 1, 0, or -1 to enable, disable, or
2575
+ ** by default. <p>This option takes two arguments: an integer and a pointer to
2576
+ ** an integer. The first argument is 1, 0, or -1 to enable, disable, or
2471
2577
  ** leave unchanged the statement scanstatus option. If the second argument
2472
2578
  ** is not NULL, then the value of the statement scanstatus setting after
2473
2579
  ** processing the first argument is written into the integer that the second
@@ -2480,7 +2586,7 @@ struct sqlite3_mem_methods {
2480
2586
  ** in which tables and indexes are scanned so that the scans start at the end
2481
2587
  ** and work toward the beginning rather than starting at the beginning and
2482
2588
  ** working toward the end. Setting SQLITE_DBCONFIG_REVERSE_SCANORDER is the
2483
- ** same as setting [PRAGMA reverse_unordered_selects]. This option takes
2589
+ ** same as setting [PRAGMA reverse_unordered_selects]. <p>This option takes
2484
2590
  ** two arguments which are an integer and a pointer to an integer. The first
2485
2591
  ** argument is 1, 0, or -1 to enable, disable, or leave unchanged the
2486
2592
  ** reverse scan order flag, respectively. If the second argument is not NULL,
@@ -2489,7 +2595,76 @@ struct sqlite3_mem_methods {
2489
2595
  ** first argument.
2490
2596
  ** </dd>
2491
2597
  **
2598
+ ** [[SQLITE_DBCONFIG_ENABLE_ATTACH_CREATE]]
2599
+ ** <dt>SQLITE_DBCONFIG_ENABLE_ATTACH_CREATE</dt>
2600
+ ** <dd>The SQLITE_DBCONFIG_ENABLE_ATTACH_CREATE option enables or disables
2601
+ ** the ability of the [ATTACH DATABASE] SQL command to create a new database
2602
+ ** file if the database filed named in the ATTACH command does not already
2603
+ ** exist. This ability of ATTACH to create a new database is enabled by
2604
+ ** default. Applications can disable or reenable the ability for ATTACH to
2605
+ ** create new database files using this DBCONFIG option.<p>
2606
+ ** This option takes two arguments which are an integer and a pointer
2607
+ ** to an integer. The first argument is 1, 0, or -1 to enable, disable, or
2608
+ ** leave unchanged the attach-create flag, respectively. If the second
2609
+ ** argument is not NULL, then 0 or 1 is written into the integer that the
2610
+ ** second argument points to depending on if the attach-create flag is set
2611
+ ** after processing the first argument.
2612
+ ** </dd>
2613
+ **
2614
+ ** [[SQLITE_DBCONFIG_ENABLE_ATTACH_WRITE]]
2615
+ ** <dt>SQLITE_DBCONFIG_ENABLE_ATTACH_WRITE</dt>
2616
+ ** <dd>The SQLITE_DBCONFIG_ENABLE_ATTACH_WRITE option enables or disables the
2617
+ ** ability of the [ATTACH DATABASE] SQL command to open a database for writing.
2618
+ ** This capability is enabled by default. Applications can disable or
2619
+ ** reenable this capability using the current DBCONFIG option. If
2620
+ ** this capability is disabled, the [ATTACH] command will still work,
2621
+ ** but the database will be opened read-only. If this option is disabled,
2622
+ ** then the ability to create a new database using [ATTACH] is also disabled,
2623
+ ** regardless of the value of the [SQLITE_DBCONFIG_ENABLE_ATTACH_CREATE]
2624
+ ** option.<p>
2625
+ ** This option takes two arguments which are an integer and a pointer
2626
+ ** to an integer. The first argument is 1, 0, or -1 to enable, disable, or
2627
+ ** leave unchanged the ability to ATTACH another database for writing,
2628
+ ** respectively. If the second argument is not NULL, then 0 or 1 is written
2629
+ ** into the integer to which the second argument points, depending on whether
2630
+ ** the ability to ATTACH a read/write database is enabled or disabled
2631
+ ** after processing the first argument.
2632
+ ** </dd>
2633
+ **
2634
+ ** [[SQLITE_DBCONFIG_ENABLE_COMMENTS]]
2635
+ ** <dt>SQLITE_DBCONFIG_ENABLE_COMMENTS</dt>
2636
+ ** <dd>The SQLITE_DBCONFIG_ENABLE_COMMENTS option enables or disables the
2637
+ ** ability to include comments in SQL text. Comments are enabled by default.
2638
+ ** An application can disable or reenable comments in SQL text using this
2639
+ ** DBCONFIG option.<p>
2640
+ ** This option takes two arguments which are an integer and a pointer
2641
+ ** to an integer. The first argument is 1, 0, or -1 to enable, disable, or
2642
+ ** leave unchanged the ability to use comments in SQL text,
2643
+ ** respectively. If the second argument is not NULL, then 0 or 1 is written
2644
+ ** into the integer that the second argument points to depending on if
2645
+ ** comments are allowed in SQL text after processing the first argument.
2646
+ ** </dd>
2647
+ **
2492
2648
  ** </dl>
2649
+ **
2650
+ ** [[DBCONFIG arguments]] <h3>Arguments To SQLITE_DBCONFIG Options</h3>
2651
+ **
2652
+ ** <p>Most of the SQLITE_DBCONFIG options take two arguments, so that the
2653
+ ** overall call to [sqlite3_db_config()] has a total of four parameters.
2654
+ ** The first argument (the third parameter to sqlite3_db_config()) is an integer.
2655
+ ** The second argument is a pointer to an integer. If the first argument is 1,
2656
+ ** then the option becomes enabled. If the first integer argument is 0, then the
2657
+ ** option is disabled. If the first argument is -1, then the option setting
2658
+ ** is unchanged. The second argument, the pointer to an integer, may be NULL.
2659
+ ** If the second argument is not NULL, then a value of 0 or 1 is written into
2660
+ ** the integer to which the second argument points, depending on whether the
2661
+ ** setting is disabled or enabled after applying any changes specified by
2662
+ ** the first argument.
2663
+ **
2664
+ ** <p>While most SQLITE_DBCONFIG options use the argument format
2665
+ ** described in the previous paragraph, the [SQLITE_DBCONFIG_MAINDBNAME]
2666
+ ** and [SQLITE_DBCONFIG_LOOKASIDE] options are different. See the
2667
+ ** documentation of those exceptional options for details.
2493
2668
  */
2494
2669
  #define SQLITE_DBCONFIG_MAINDBNAME 1000 /* const char* */
2495
2670
  #define SQLITE_DBCONFIG_LOOKASIDE 1001 /* void* int int */
@@ -2511,7 +2686,10 @@ struct sqlite3_mem_methods {
2511
2686
  #define SQLITE_DBCONFIG_TRUSTED_SCHEMA 1017 /* int int* */
2512
2687
  #define SQLITE_DBCONFIG_STMT_SCANSTATUS 1018 /* int int* */
2513
2688
  #define SQLITE_DBCONFIG_REVERSE_SCANORDER 1019 /* int int* */
2514
- #define SQLITE_DBCONFIG_MAX 1019 /* Largest DBCONFIG */
2689
+ #define SQLITE_DBCONFIG_ENABLE_ATTACH_CREATE 1020 /* int int* */
2690
+ #define SQLITE_DBCONFIG_ENABLE_ATTACH_WRITE 1021 /* int int* */
2691
+ #define SQLITE_DBCONFIG_ENABLE_COMMENTS 1022 /* int int* */
2692
+ #define SQLITE_DBCONFIG_MAX 1022 /* Largest DBCONFIG */
2515
2693
 
2516
2694
  /*
2517
2695
  ** CAPI3REF: Enable Or Disable Extended Result Codes
@@ -2603,10 +2781,14 @@ SQLITE_API void sqlite3_set_last_insert_rowid(sqlite3*,sqlite3_int64);
2603
2781
  ** deleted by the most recently completed INSERT, UPDATE or DELETE
2604
2782
  ** statement on the database connection specified by the only parameter.
2605
2783
  ** The two functions are identical except for the type of the return value
2606
- ** and that if the number of rows modified by the most recent INSERT, UPDATE
2784
+ ** and that if the number of rows modified by the most recent INSERT, UPDATE,
2607
2785
  ** or DELETE is greater than the maximum value supported by type "int", then
2608
2786
  ** the return value of sqlite3_changes() is undefined. ^Executing any other
2609
2787
  ** type of SQL statement does not modify the value returned by these functions.
2788
+ ** For the purposes of this interface, a CREATE TABLE AS SELECT statement
2789
+ ** does not count as an INSERT, UPDATE or DELETE statement and hence the rows
2790
+ ** added to the new table by the CREATE TABLE AS SELECT statement are not
2791
+ ** counted.
2610
2792
  **
2611
2793
  ** ^Only changes made directly by the INSERT, UPDATE or DELETE statement are
2612
2794
  ** considered - auxiliary changes caused by [CREATE TRIGGER | triggers],
@@ -2759,7 +2941,7 @@ SQLITE_API int sqlite3_is_interrupted(sqlite3*);
2759
2941
  ** ^These routines return 0 if the statement is incomplete. ^If a
2760
2942
  ** memory allocation fails, then SQLITE_NOMEM is returned.
2761
2943
  **
2762
- ** ^These routines do not parse the SQL statements thus
2944
+ ** ^These routines do not parse the SQL statements and thus
2763
2945
  ** will not detect syntactically incorrect SQL.
2764
2946
  **
2765
2947
  ** ^(If SQLite has not been initialized using [sqlite3_initialize()] prior
@@ -2861,6 +3043,44 @@ SQLITE_API int sqlite3_busy_handler(sqlite3*,int(*)(void*,int),void*);
2861
3043
  */
2862
3044
  SQLITE_API int sqlite3_busy_timeout(sqlite3*, int ms);
2863
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
+
2864
3084
  /*
2865
3085
  ** CAPI3REF: Convenience Routines For Running Queries
2866
3086
  ** METHOD: sqlite3
@@ -2868,7 +3088,7 @@ SQLITE_API int sqlite3_busy_timeout(sqlite3*, int ms);
2868
3088
  ** This is a legacy interface that is preserved for backwards compatibility.
2869
3089
  ** Use of this interface is not recommended.
2870
3090
  **
2871
- ** 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
2872
3092
  ** [sqlite3_get_table()] interface. A result table records the
2873
3093
  ** complete query results from one or more queries.
2874
3094
  **
@@ -3011,7 +3231,7 @@ SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
3011
3231
  ** ^Calling sqlite3_free() with a pointer previously returned
3012
3232
  ** by sqlite3_malloc() or sqlite3_realloc() releases that memory so
3013
3233
  ** that it might be reused. ^The sqlite3_free() routine is
3014
- ** 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
3015
3235
  ** to sqlite3_free() is harmless. After being freed, memory
3016
3236
  ** should neither be read nor written. Even reading previously freed
3017
3237
  ** memory might result in a segmentation fault or other severe error.
@@ -3029,13 +3249,13 @@ SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
3029
3249
  ** sqlite3_free(X).
3030
3250
  ** ^sqlite3_realloc(X,N) returns a pointer to a memory allocation
3031
3251
  ** of at least N bytes in size or NULL if insufficient memory is available.
3032
- ** ^If M is the size of the prior allocation, then min(N,M) bytes
3033
- ** of the prior allocation are copied into the beginning of buffer returned
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
3034
3254
  ** by sqlite3_realloc(X,N) and the prior allocation is freed.
3035
3255
  ** ^If sqlite3_realloc(X,N) returns NULL and N is positive, then the
3036
3256
  ** prior allocation is not freed.
3037
3257
  **
3038
- ** ^The sqlite3_realloc64(X,N) interfaces works the same as
3258
+ ** ^The sqlite3_realloc64(X,N) interface works the same as
3039
3259
  ** sqlite3_realloc(X,N) except that N is a 64-bit unsigned integer instead
3040
3260
  ** of a 32-bit signed integer.
3041
3261
  **
@@ -3085,7 +3305,7 @@ SQLITE_API sqlite3_uint64 sqlite3_msize(void*);
3085
3305
  ** was last reset. ^The values returned by [sqlite3_memory_used()] and
3086
3306
  ** [sqlite3_memory_highwater()] include any overhead
3087
3307
  ** added by SQLite in its implementation of [sqlite3_malloc()],
3088
- ** but not overhead added by the any underlying system library
3308
+ ** but not overhead added by any underlying system library
3089
3309
  ** routines that [sqlite3_malloc()] may call.
3090
3310
  **
3091
3311
  ** ^The memory high-water mark is reset to the current value of
@@ -3286,8 +3506,8 @@ SQLITE_API int sqlite3_set_authorizer(
3286
3506
  #define SQLITE_RECURSIVE 33 /* NULL NULL */
3287
3507
 
3288
3508
  /*
3289
- ** CAPI3REF: Tracing And Profiling Functions
3290
- ** METHOD: sqlite3
3509
+ ** CAPI3REF: Deprecated Tracing And Profiling Functions
3510
+ ** DEPRECATED
3291
3511
  **
3292
3512
  ** These routines are deprecated. Use the [sqlite3_trace_v2()] interface
3293
3513
  ** instead of the routines described here.
@@ -3537,7 +3757,7 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
3537
3757
  ** there is no harm in trying.)
3538
3758
  **
3539
3759
  ** ^(<dt>[SQLITE_OPEN_SHAREDCACHE]</dt>
3540
- ** <dd>The database is opened [shared cache] enabled, overriding
3760
+ ** <dd>The database is opened with [shared cache] enabled, overriding
3541
3761
  ** the default shared cache setting provided by
3542
3762
  ** [sqlite3_enable_shared_cache()].)^
3543
3763
  ** The [use of shared cache mode is discouraged] and hence shared cache
@@ -3545,14 +3765,14 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
3545
3765
  ** this option is a no-op.
3546
3766
  **
3547
3767
  ** ^(<dt>[SQLITE_OPEN_PRIVATECACHE]</dt>
3548
- ** <dd>The database is opened [shared cache] disabled, overriding
3768
+ ** <dd>The database is opened with [shared cache] disabled, overriding
3549
3769
  ** the default shared cache setting provided by
3550
3770
  ** [sqlite3_enable_shared_cache()].)^
3551
3771
  **
3552
3772
  ** [[OPEN_EXRESCODE]] ^(<dt>[SQLITE_OPEN_EXRESCODE]</dt>
3553
3773
  ** <dd>The database connection comes up in "extended result code mode".
3554
- ** In other words, the database behaves has if
3555
- ** [sqlite3_extended_result_codes(db,1)] where called on the database
3774
+ ** In other words, the database behaves as if
3775
+ ** [sqlite3_extended_result_codes(db,1)] were called on the database
3556
3776
  ** connection as soon as the connection is created. In addition to setting
3557
3777
  ** the extended result code mode, this flag also causes [sqlite3_open_v2()]
3558
3778
  ** to return an extended result code.</dd>
@@ -3880,7 +4100,7 @@ SQLITE_API sqlite3_file *sqlite3_database_file_object(const char*);
3880
4100
  **
3881
4101
  ** The sqlite3_create_filename(D,J,W,N,P) allocates memory to hold a version of
3882
4102
  ** database filename D with corresponding journal file J and WAL file W and
3883
- ** with N URI parameters key/values pairs in the array P. The result from
4103
+ ** an array P of N URI Key/Value pairs. The result from
3884
4104
  ** sqlite3_create_filename(D,J,W,N,P) is a pointer to a database filename that
3885
4105
  ** is safe to pass to routines like:
3886
4106
  ** <ul>
@@ -3954,21 +4174,24 @@ SQLITE_API void sqlite3_free_filename(sqlite3_filename);
3954
4174
  ** </ul>
3955
4175
  **
3956
4176
  ** ^The sqlite3_errmsg() and sqlite3_errmsg16() return English-language
3957
- ** text that describes the error, as either UTF-8 or UTF-16 respectively.
4177
+ ** text that describes the error, as either UTF-8 or UTF-16 respectively,
4178
+ ** or NULL if no error message is available.
4179
+ ** (See how SQLite handles [invalid UTF] for exceptions to this rule.)
3958
4180
  ** ^(Memory to hold the error message string is managed internally.
3959
4181
  ** The application does not need to worry about freeing the result.
3960
4182
  ** However, the error string might be overwritten or deallocated by
3961
4183
  ** subsequent calls to other SQLite interface functions.)^
3962
4184
  **
3963
- ** ^The sqlite3_errstr() interface returns the English-language text
3964
- ** that describes the [result code], as UTF-8.
4185
+ ** ^The sqlite3_errstr(E) interface returns the English-language text
4186
+ ** that describes the [result code] E, as UTF-8, or NULL if E is not a
4187
+ ** result code for which a text error message is available.
3965
4188
  ** ^(Memory to hold the error message string is managed internally
3966
4189
  ** and must not be freed by the application)^.
3967
4190
  **
3968
4191
  ** ^If the most recent error references a specific token in the input
3969
4192
  ** SQL, the sqlite3_error_offset() interface returns the byte offset
3970
4193
  ** of the start of that token. ^The byte offset returned by
3971
- ** sqlite3_error_offset() assumes that the input SQL is UTF8.
4194
+ ** sqlite3_error_offset() assumes that the input SQL is UTF-8.
3972
4195
  ** ^If the most recent error does not reference a specific token in the input
3973
4196
  ** SQL, then the sqlite3_error_offset() function returns -1.
3974
4197
  **
@@ -3993,6 +4216,34 @@ SQLITE_API const void *sqlite3_errmsg16(sqlite3*);
3993
4216
  SQLITE_API const char *sqlite3_errstr(int);
3994
4217
  SQLITE_API int sqlite3_error_offset(sqlite3 *db);
3995
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
+
3996
4247
  /*
3997
4248
  ** CAPI3REF: Prepared Statement Object
3998
4249
  ** KEYWORDS: {prepared statement} {prepared statements}
@@ -4067,8 +4318,8 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
4067
4318
  **
4068
4319
  ** These constants define various performance limits
4069
4320
  ** that can be lowered at run-time using [sqlite3_limit()].
4070
- ** The synopsis of the meanings of the various limits is shown below.
4071
- ** Additional information is available at [limits | Limits in SQLite].
4321
+ ** A concise description of these limits follows, and additional information
4322
+ ** is available at [limits | Limits in SQLite].
4072
4323
  **
4073
4324
  ** <dl>
4074
4325
  ** [[SQLITE_LIMIT_LENGTH]] ^(<dt>SQLITE_LIMIT_LENGTH</dt>
@@ -4133,7 +4384,7 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
4133
4384
  /*
4134
4385
  ** CAPI3REF: Prepare Flags
4135
4386
  **
4136
- ** These constants define various flags that can be passed into
4387
+ ** These constants define various flags that can be passed into the
4137
4388
  ** "prepFlags" parameter of the [sqlite3_prepare_v3()] and
4138
4389
  ** [sqlite3_prepare16_v3()] interfaces.
4139
4390
  **
@@ -4163,11 +4414,22 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
4163
4414
  ** <dd>The SQLITE_PREPARE_NO_VTAB flag causes the SQL compiler
4164
4415
  ** to return an error (error code SQLITE_ERROR) if the statement uses
4165
4416
  ** any virtual tables.
4417
+ **
4418
+ ** [[SQLITE_PREPARE_DONT_LOG]] <dt>SQLITE_PREPARE_DONT_LOG</dt>
4419
+ ** <dd>The SQLITE_PREPARE_DONT_LOG flag prevents SQL compiler
4420
+ ** errors from being sent to the error log defined by
4421
+ ** [SQLITE_CONFIG_LOG]. This can be used, for example, to do test
4422
+ ** compiles to see if some SQL syntax is well-formed, without generating
4423
+ ** messages on the global error log when it is not. If the test compile
4424
+ ** fails, the sqlite3_prepare_v3() call returns the same error indications
4425
+ ** with or without this flag; it just omits the call to [sqlite3_log()] that
4426
+ ** logs the error.
4166
4427
  ** </dl>
4167
4428
  */
4168
4429
  #define SQLITE_PREPARE_PERSISTENT 0x01
4169
4430
  #define SQLITE_PREPARE_NORMALIZE 0x02
4170
4431
  #define SQLITE_PREPARE_NO_VTAB 0x04
4432
+ #define SQLITE_PREPARE_DONT_LOG 0x10
4171
4433
 
4172
4434
  /*
4173
4435
  ** CAPI3REF: Compiling An SQL Statement
@@ -4200,13 +4462,17 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
4200
4462
  ** and sqlite3_prepare16_v3() use UTF-16.
4201
4463
  **
4202
4464
  ** ^If the nByte argument is negative, then zSql is read up to the
4203
- ** first zero terminator. ^If nByte is positive, then it is the
4204
- ** number of bytes read from zSql. ^If nByte is zero, then no prepared
4465
+ ** first zero terminator. ^If nByte is positive, then it is the maximum
4466
+ ** number of bytes read from zSql. When nByte is positive, zSql is read
4467
+ ** up to the first zero terminator or until the nByte bytes have been read,
4468
+ ** whichever comes first. ^If nByte is zero, then no prepared
4205
4469
  ** statement is generated.
4206
4470
  ** If the caller knows that the supplied string is nul-terminated, then
4207
4471
  ** there is a small performance advantage to passing an nByte parameter that
4208
4472
  ** is the number of bytes in the input string <i>including</i>
4209
4473
  ** the nul-terminator.
4474
+ ** Note that nByte measures the length of the input in bytes, not
4475
+ ** characters, even for the UTF-16 interfaces.
4210
4476
  **
4211
4477
  ** ^If pzTail is not NULL then *pzTail is made to point to the first byte
4212
4478
  ** past the end of the first SQL statement in zSql. These routines only
@@ -4339,7 +4605,7 @@ SQLITE_API int sqlite3_prepare16_v3(
4339
4605
  **
4340
4606
  ** ^The sqlite3_expanded_sql() interface returns NULL if insufficient memory
4341
4607
  ** is available to hold the result, or if the result would exceed the
4342
- ** the maximum string length determined by the [SQLITE_LIMIT_LENGTH].
4608
+ ** maximum string length determined by the [SQLITE_LIMIT_LENGTH].
4343
4609
  **
4344
4610
  ** ^The [SQLITE_TRACE_SIZE_LIMIT] compile-time option limits the size of
4345
4611
  ** bound parameter expansions. ^The [SQLITE_OMIT_TRACE] compile-time
@@ -4527,7 +4793,7 @@ typedef struct sqlite3_value sqlite3_value;
4527
4793
  **
4528
4794
  ** The context in which an SQL function executes is stored in an
4529
4795
  ** sqlite3_context object. ^A pointer to an sqlite3_context object
4530
- ** is always first parameter to [application-defined SQL functions].
4796
+ ** is always the first parameter to [application-defined SQL functions].
4531
4797
  ** The application-defined SQL function implementation will pass this
4532
4798
  ** pointer through into calls to [sqlite3_result_int | sqlite3_result()],
4533
4799
  ** [sqlite3_aggregate_context()], [sqlite3_user_data()],
@@ -4543,7 +4809,7 @@ typedef struct sqlite3_context sqlite3_context;
4543
4809
  ** METHOD: sqlite3_stmt
4544
4810
  **
4545
4811
  ** ^(In the SQL statement text input to [sqlite3_prepare_v2()] and its variants,
4546
- ** 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
4547
4813
  ** templates:
4548
4814
  **
4549
4815
  ** <ul>
@@ -4588,7 +4854,7 @@ typedef struct sqlite3_context sqlite3_context;
4588
4854
  **
4589
4855
  ** [[byte-order determination rules]] ^The byte-order of
4590
4856
  ** UTF16 input text is determined by the byte-order mark (BOM, U+FEFF)
4591
- ** 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
4592
4858
  ** the byte order is the native byte order of the host
4593
4859
  ** machine for sqlite3_bind_text16() or the byte order specified in
4594
4860
  ** the 6th parameter for sqlite3_bind_text64().)^
@@ -4608,7 +4874,7 @@ typedef struct sqlite3_context sqlite3_context;
4608
4874
  ** or sqlite3_bind_text16() or sqlite3_bind_text64() then
4609
4875
  ** that parameter must be the byte offset
4610
4876
  ** where the NUL terminator would occur assuming the string were NUL
4611
- ** terminated. If any NUL characters occurs at byte offsets less than
4877
+ ** terminated. If any NUL characters occur at byte offsets less than
4612
4878
  ** the value of the fourth parameter then the resulting string value will
4613
4879
  ** contain embedded NULs. The result of expressions involving strings
4614
4880
  ** with embedded NULs is undefined.
@@ -4651,9 +4917,11 @@ typedef struct sqlite3_context sqlite3_context;
4651
4917
  ** associated with the pointer P of type T. ^D is either a NULL pointer or
4652
4918
  ** a pointer to a destructor function for P. ^SQLite will invoke the
4653
4919
  ** destructor D with a single argument of P when it is finished using
4654
- ** P. The T parameter should be a static string, preferably a string
4655
- ** literal. The sqlite3_bind_pointer() routine is part of the
4656
- ** [pointer passing interface] added for SQLite 3.20.0.
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.
4657
4925
  **
4658
4926
  ** ^If any of the sqlite3_bind_*() routines are called with a NULL pointer
4659
4927
  ** for the [prepared statement] or with a prepared statement for which
@@ -4820,7 +5088,7 @@ SQLITE_API const void *sqlite3_column_name16(sqlite3_stmt*, int N);
4820
5088
  ** METHOD: sqlite3_stmt
4821
5089
  **
4822
5090
  ** ^These routines provide a means to determine the database, table, and
4823
- ** 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
4824
5092
  ** [SELECT] statement.
4825
5093
  ** ^The name of the database or table or column can be returned as
4826
5094
  ** either a UTF-8 or UTF-16 string. ^The _database_ routines return
@@ -4958,7 +5226,7 @@ SQLITE_API const void *sqlite3_column_decltype16(sqlite3_stmt*,int);
4958
5226
  ** other than [SQLITE_ROW] before any subsequent invocation of
4959
5227
  ** sqlite3_step(). Failure to reset the prepared statement using
4960
5228
  ** [sqlite3_reset()] would result in an [SQLITE_MISUSE] return from
4961
- ** 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]),
4962
5230
  ** sqlite3_step() began
4963
5231
  ** calling [sqlite3_reset()] automatically in this circumstance rather
4964
5232
  ** than returning [SQLITE_MISUSE]. This is not considered a compatibility
@@ -5264,7 +5532,7 @@ SQLITE_API int sqlite3_column_type(sqlite3_stmt*, int iCol);
5264
5532
  **
5265
5533
  ** ^The sqlite3_finalize() function is called to delete a [prepared statement].
5266
5534
  ** ^If the most recent evaluation of the statement encountered no errors
5267
- ** or if the statement is never been evaluated, then sqlite3_finalize() returns
5535
+ ** or if the statement has never been evaluated, then sqlite3_finalize() returns
5268
5536
  ** SQLITE_OK. ^If the most recent evaluation of statement S failed, then
5269
5537
  ** sqlite3_finalize(S) returns the appropriate [error code] or
5270
5538
  ** [extended error code].
@@ -5325,6 +5593,7 @@ SQLITE_API int sqlite3_finalize(sqlite3_stmt *pStmt);
5325
5593
  */
5326
5594
  SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt);
5327
5595
 
5596
+
5328
5597
  /*
5329
5598
  ** CAPI3REF: Create Or Redefine SQL Functions
5330
5599
  ** KEYWORDS: {function creation routines}
@@ -5388,8 +5657,8 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt);
5388
5657
  **
5389
5658
  ** For best security, the [SQLITE_DIRECTONLY] flag is recommended for
5390
5659
  ** all application-defined SQL functions that do not need to be
5391
- ** used inside of triggers, view, CHECK constraints, or other elements of
5392
- ** the database schema. This flags is especially recommended for SQL
5660
+ ** used inside of triggers, views, CHECK constraints, or other elements of
5661
+ ** the database schema. This flag is especially recommended for SQL
5393
5662
  ** functions that have side effects or reveal internal application state.
5394
5663
  ** Without this flag, an attacker might be able to modify the schema of
5395
5664
  ** a database file to include invocations of the function with parameters
@@ -5420,7 +5689,7 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt);
5420
5689
  ** [user-defined window functions|available here].
5421
5690
  **
5422
5691
  ** ^(If the final parameter to sqlite3_create_function_v2() or
5423
- ** 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
5424
5693
  ** the application data pointer. The destructor is invoked when the function
5425
5694
  ** is deleted, either by being overloaded or when the database connection
5426
5695
  ** closes.)^ ^The destructor is also invoked if the call to
@@ -5495,7 +5764,7 @@ SQLITE_API int sqlite3_create_window_function(
5495
5764
  /*
5496
5765
  ** CAPI3REF: Text Encodings
5497
5766
  **
5498
- ** These constant define integer codes that represent the various
5767
+ ** These constants define integer codes that represent the various
5499
5768
  ** text encodings supported by SQLite.
5500
5769
  */
5501
5770
  #define SQLITE_UTF8 1 /* IMP: R-37514-35566 */
@@ -5571,13 +5840,36 @@ SQLITE_API int sqlite3_create_window_function(
5571
5840
  ** </dd>
5572
5841
  **
5573
5842
  ** [[SQLITE_SUBTYPE]] <dt>SQLITE_SUBTYPE</dt><dd>
5574
- ** The SQLITE_SUBTYPE flag indicates to SQLite that a function may call
5843
+ ** The SQLITE_SUBTYPE flag indicates to SQLite that a function might call
5575
5844
  ** [sqlite3_value_subtype()] to inspect the sub-types of its arguments.
5576
- ** Specifying this flag makes no difference for scalar or aggregate user
5577
- ** functions. However, if it is not specified for a user-defined window
5578
- ** function, then any sub-types belonging to arguments passed to the window
5579
- ** function may be discarded before the window function is called (i.e.
5580
- ** sqlite3_value_subtype() will always return 0).
5845
+ ** This flag instructs SQLite to omit some corner-case optimizations that
5846
+ ** might disrupt the operation of the [sqlite3_value_subtype()] function,
5847
+ ** causing it to return zero rather than the correct subtype().
5848
+ ** All SQL functions that invoke [sqlite3_value_subtype()] should have this
5849
+ ** property. If the SQLITE_SUBTYPE property is omitted, then the return
5850
+ ** value from [sqlite3_value_subtype()] might sometimes be zero even though
5851
+ ** a non-zero subtype was specified by the function argument expression.
5852
+ **
5853
+ ** [[SQLITE_RESULT_SUBTYPE]] <dt>SQLITE_RESULT_SUBTYPE</dt><dd>
5854
+ ** The SQLITE_RESULT_SUBTYPE flag indicates to SQLite that a function might call
5855
+ ** [sqlite3_result_subtype()] to cause a sub-type to be associated with its
5856
+ ** result.
5857
+ ** Every function that invokes [sqlite3_result_subtype()] should have this
5858
+ ** property. If it does not, then the call to [sqlite3_result_subtype()]
5859
+ ** might become a no-op if the function is used as a term in an
5860
+ ** [expression index]. On the other hand, SQL functions that never invoke
5861
+ ** [sqlite3_result_subtype()] should avoid setting this property, as the
5862
+ ** purpose of this property is to disable certain optimizations that are
5863
+ ** incompatible with subtypes.
5864
+ **
5865
+ ** [[SQLITE_SELFORDER1]] <dt>SQLITE_SELFORDER1</dt><dd>
5866
+ ** The SQLITE_SELFORDER1 flag indicates that the function is an aggregate
5867
+ ** that internally orders the values provided to the first argument. The
5868
+ ** ordered-set aggregate SQL notation with a single ORDER BY term can be
5869
+ ** used to invoke this function. If the ordered-set aggregate notation is
5870
+ ** used on a function that lacks this flag, then an error is raised. Note
5871
+ ** that the ordered-set aggregate syntax is only available if SQLite is
5872
+ ** built using the -DSQLITE_ENABLE_ORDERED_SET_AGGREGATES compile-time option.
5581
5873
  ** </dd>
5582
5874
  ** </dl>
5583
5875
  */
@@ -5585,6 +5877,8 @@ SQLITE_API int sqlite3_create_window_function(
5585
5877
  #define SQLITE_DIRECTONLY 0x000080000
5586
5878
  #define SQLITE_SUBTYPE 0x000100000
5587
5879
  #define SQLITE_INNOCUOUS 0x000200000
5880
+ #define SQLITE_RESULT_SUBTYPE 0x001000000
5881
+ #define SQLITE_SELFORDER1 0x002000000
5588
5882
 
5589
5883
  /*
5590
5884
  ** CAPI3REF: Deprecated Functions
@@ -5689,7 +5983,7 @@ SQLITE_API SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int6
5689
5983
  ** sqlite3_value_nochange(X) interface returns true if and only if
5690
5984
  ** the column corresponding to X is unchanged by the UPDATE operation
5691
5985
  ** that the xUpdate method call was invoked to implement and if
5692
- ** and the prior [xColumn] method call that was invoked to extracted
5986
+ ** the prior [xColumn] method call that was invoked to extract
5693
5987
  ** the value for that column returned without setting a result (probably
5694
5988
  ** because it queried [sqlite3_vtab_nochange()] and found that the column
5695
5989
  ** was unchanging). ^Within an [xUpdate] method, any value for which
@@ -5781,6 +6075,12 @@ SQLITE_API int sqlite3_value_encoding(sqlite3_value*);
5781
6075
  ** information can be used to pass a limited amount of context from
5782
6076
  ** one SQL function to another. Use the [sqlite3_result_subtype()]
5783
6077
  ** routine to set the subtype for the return value of an SQL function.
6078
+ **
6079
+ ** Every [application-defined SQL function] that invokes this interface
6080
+ ** should include the [SQLITE_SUBTYPE] property in the text
6081
+ ** encoding argument when the function is [sqlite3_create_function|registered].
6082
+ ** If the [SQLITE_SUBTYPE] property is omitted, then sqlite3_value_subtype()
6083
+ ** might return zero instead of the upstream subtype in some corner cases.
5784
6084
  */
5785
6085
  SQLITE_API unsigned int sqlite3_value_subtype(sqlite3_value*);
5786
6086
 
@@ -5789,7 +6089,7 @@ SQLITE_API unsigned int sqlite3_value_subtype(sqlite3_value*);
5789
6089
  ** METHOD: sqlite3_value
5790
6090
  **
5791
6091
  ** ^The sqlite3_value_dup(V) interface makes a copy of the [sqlite3_value]
5792
- ** object D and returns a pointer to that copy. ^The [sqlite3_value] returned
6092
+ ** object V and returns a pointer to that copy. ^The [sqlite3_value] returned
5793
6093
  ** is a [protected sqlite3_value] object even if the input is not.
5794
6094
  ** ^The sqlite3_value_dup(V) interface returns NULL if V is NULL or if a
5795
6095
  ** memory allocation fails. ^If V is a [pointer value], then the result
@@ -5827,7 +6127,7 @@ SQLITE_API void sqlite3_value_free(sqlite3_value*);
5827
6127
  ** allocation error occurs.
5828
6128
  **
5829
6129
  ** ^(The amount of space allocated by sqlite3_aggregate_context(C,N) is
5830
- ** determined by the N parameter on first successful call. Changing the
6130
+ ** determined by the N parameter on the first successful call. Changing the
5831
6131
  ** value of N in any subsequent call to sqlite3_aggregate_context() within
5832
6132
  ** the same aggregate function instance will not resize the memory
5833
6133
  ** allocation.)^ Within the xFinal callback, it is customary to set
@@ -5879,48 +6179,56 @@ SQLITE_API sqlite3 *sqlite3_context_db_handle(sqlite3_context*);
5879
6179
  ** METHOD: sqlite3_context
5880
6180
  **
5881
6181
  ** These functions may be used by (non-aggregate) SQL functions to
5882
- ** associate metadata with argument values. If the same value is passed to
5883
- ** multiple invocations of the same SQL function during query execution, under
5884
- ** some circumstances the associated metadata may be preserved. An example
5885
- ** of where this might be useful is in a regular-expression matching
5886
- ** function. The compiled version of the regular expression can be stored as
5887
- ** metadata associated with the pattern string.
6182
+ ** associate auxiliary data with argument values. If the same argument
6183
+ ** value is passed to multiple invocations of the same SQL function during
6184
+ ** query execution, under some circumstances the associated auxiliary data
6185
+ ** might be preserved. An example of where this might be useful is in a
6186
+ ** regular-expression matching function. The compiled version of the regular
6187
+ ** expression can be stored as auxiliary data associated with the pattern string.
5888
6188
  ** Then as long as the pattern string remains the same,
5889
6189
  ** the compiled regular expression can be reused on multiple
5890
6190
  ** invocations of the same function.
5891
6191
  **
5892
- ** ^The sqlite3_get_auxdata(C,N) interface returns a pointer to the metadata
6192
+ ** ^The sqlite3_get_auxdata(C,N) interface returns a pointer to the auxiliary data
5893
6193
  ** associated by the sqlite3_set_auxdata(C,N,P,X) function with the Nth argument
5894
6194
  ** value to the application-defined function. ^N is zero for the left-most
5895
- ** function argument. ^If there is no metadata
6195
+ ** function argument. ^If there is no auxiliary data
5896
6196
  ** associated with the function argument, the sqlite3_get_auxdata(C,N) interface
5897
6197
  ** returns a NULL pointer.
5898
6198
  **
5899
- ** ^The sqlite3_set_auxdata(C,N,P,X) interface saves P as metadata for the N-th
5900
- ** argument of the application-defined function. ^Subsequent
6199
+ ** ^The sqlite3_set_auxdata(C,N,P,X) interface saves P as auxiliary data for the
6200
+ ** N-th argument of the application-defined function. ^Subsequent
5901
6201
  ** calls to sqlite3_get_auxdata(C,N) return P from the most recent
5902
- ** sqlite3_set_auxdata(C,N,P,X) call if the metadata is still valid or
5903
- ** NULL if the metadata has been discarded.
6202
+ ** sqlite3_set_auxdata(C,N,P,X) call if the auxiliary data is still valid or
6203
+ ** NULL if the auxiliary data has been discarded.
5904
6204
  ** ^After each call to sqlite3_set_auxdata(C,N,P,X) where X is not NULL,
5905
6205
  ** SQLite will invoke the destructor function X with parameter P exactly
5906
- ** once, when the metadata is discarded.
5907
- ** SQLite is free to discard the metadata at any time, including: <ul>
6206
+ ** once, when the auxiliary data is discarded.
6207
+ ** SQLite is free to discard the auxiliary data at any time, including: <ul>
5908
6208
  ** <li> ^(when the corresponding function parameter changes)^, or
5909
6209
  ** <li> ^(when [sqlite3_reset()] or [sqlite3_finalize()] is called for the
5910
6210
  ** SQL statement)^, or
5911
6211
  ** <li> ^(when sqlite3_set_auxdata() is invoked again on the same
5912
6212
  ** parameter)^, or
5913
6213
  ** <li> ^(during the original sqlite3_set_auxdata() call when a memory
5914
- ** allocation error occurs.)^ </ul>
6214
+ ** allocation error occurs.)^
6215
+ ** <li> ^(during the original sqlite3_set_auxdata() call if the function
6216
+ ** is evaluated during query planning instead of during query execution,
6217
+ ** as sometimes happens with [SQLITE_ENABLE_STAT4].)^ </ul>
5915
6218
  **
5916
- ** Note the last bullet in particular. The destructor X in
6219
+ ** Note the last two bullets in particular. The destructor X in
5917
6220
  ** sqlite3_set_auxdata(C,N,P,X) might be called immediately, before the
5918
6221
  ** sqlite3_set_auxdata() interface even returns. Hence sqlite3_set_auxdata()
5919
6222
  ** should be called near the end of the function implementation and the
5920
6223
  ** function implementation should not make any use of P after
5921
- ** sqlite3_set_auxdata() has been called.
5922
- **
5923
- ** ^(In practice, metadata is preserved between function calls for
6224
+ ** sqlite3_set_auxdata() has been called. Furthermore, a call to
6225
+ ** sqlite3_get_auxdata() that occurs immediately after a corresponding call
6226
+ ** to sqlite3_set_auxdata() might still return NULL if an out-of-memory
6227
+ ** condition occurred during the sqlite3_set_auxdata() call or if the
6228
+ ** function is being evaluated during query planning rather than during
6229
+ ** query execution.
6230
+ **
6231
+ ** ^(In practice, auxiliary data is preserved between function calls for
5924
6232
  ** function parameters that are compile-time constants, including literal
5925
6233
  ** values and [parameters] and expressions composed from the same.)^
5926
6234
  **
@@ -5930,10 +6238,68 @@ SQLITE_API sqlite3 *sqlite3_context_db_handle(sqlite3_context*);
5930
6238
  **
5931
6239
  ** These routines must be called from the same thread in which
5932
6240
  ** the SQL function is running.
6241
+ **
6242
+ ** See also: [sqlite3_get_clientdata()] and [sqlite3_set_clientdata()].
5933
6243
  */
5934
6244
  SQLITE_API void *sqlite3_get_auxdata(sqlite3_context*, int N);
5935
6245
  SQLITE_API void sqlite3_set_auxdata(sqlite3_context*, int N, void*, void (*)(void*));
5936
6246
 
6247
+ /*
6248
+ ** CAPI3REF: Database Connection Client Data
6249
+ ** METHOD: sqlite3
6250
+ **
6251
+ ** These functions are used to associate one or more named pointers
6252
+ ** with a [database connection].
6253
+ ** A call to sqlite3_set_clientdata(D,N,P,X) causes the pointer P
6254
+ ** to be attached to [database connection] D using name N. Subsequent
6255
+ ** calls to sqlite3_get_clientdata(D,N) will return a copy of pointer P
6256
+ ** or a NULL pointer if there were no prior calls to
6257
+ ** sqlite3_set_clientdata() with the same values of D and N.
6258
+ ** Names are compared using strcmp() and are thus case sensitive.
6259
+ ** It returns 0 on success and SQLITE_NOMEM on allocation failure.
6260
+ **
6261
+ ** If P and X are both non-NULL, then the destructor X is invoked with
6262
+ ** argument P on the first of the following occurrences:
6263
+ ** <ul>
6264
+ ** <li> An out-of-memory error occurs during the call to
6265
+ ** sqlite3_set_clientdata() which attempts to register pointer P.
6266
+ ** <li> A subsequent call to sqlite3_set_clientdata(D,N,P,X) is made
6267
+ ** with the same D and N parameters.
6268
+ ** <li> The database connection closes. SQLite does not make any guarantees
6269
+ ** about the order in which destructors are called, only that all
6270
+ ** destructors will be called exactly once at some point during the
6271
+ ** database connection closing process.
6272
+ ** </ul>
6273
+ **
6274
+ ** SQLite does not do anything with client data other than invoke
6275
+ ** destructors on the client data at the appropriate time. The intended
6276
+ ** use for client data is to provide a mechanism for wrapper libraries
6277
+ ** to store additional information about an SQLite database connection.
6278
+ **
6279
+ ** There is no limit (other than available memory) on the number of different
6280
+ ** client data pointers (with different names) that can be attached to a
6281
+ ** single database connection. However, the implementation is optimized
6282
+ ** for the case of having only one or two different client data names.
6283
+ ** Applications and wrapper libraries are discouraged from using more than
6284
+ ** one client data name each.
6285
+ **
6286
+ ** There is no way to enumerate the client data pointers
6287
+ ** associated with a database connection. The N parameter can be thought
6288
+ ** of as a secret key such that only code that knows the secret key is able
6289
+ ** to access the associated data.
6290
+ **
6291
+ ** Security Warning: These interfaces should not be exposed in scripting
6292
+ ** languages or in other circumstances where it might be possible for an
6293
+ ** attacker to invoke them. Any agent that can invoke these interfaces
6294
+ ** can probably also take control of the process.
6295
+ **
6296
+ ** Database connection client data is only available for SQLite
6297
+ ** version 3.44.0 ([dateof:3.44.0]) and later.
6298
+ **
6299
+ ** See also: [sqlite3_set_auxdata()] and [sqlite3_get_auxdata()].
6300
+ */
6301
+ SQLITE_API void *sqlite3_get_clientdata(sqlite3*,const char*);
6302
+ SQLITE_API int sqlite3_set_clientdata(sqlite3*, const char*, void*, void(*)(void*));
5937
6303
 
5938
6304
  /*
5939
6305
  ** CAPI3REF: Constants Defining Special Destructor Behavior
@@ -6038,7 +6404,7 @@ typedef void (*sqlite3_destructor_type)(void*);
6038
6404
  ** pointed to by the 2nd parameter are taken as the application-defined
6039
6405
  ** function result. If the 3rd parameter is non-negative, then it
6040
6406
  ** must be the byte offset into the string where the NUL terminator would
6041
- ** appear if the string where NUL terminated. If any NUL characters occur
6407
+ ** appear if the string were NUL terminated. If any NUL characters occur
6042
6408
  ** in the string at a byte offset that is less than the value of the 3rd
6043
6409
  ** parameter, then the resulting string will contain embedded NULs and the
6044
6410
  ** result of expressions operating on strings with embedded NULs is undefined.
@@ -6096,7 +6462,7 @@ typedef void (*sqlite3_destructor_type)(void*);
6096
6462
  ** string and preferably a string literal. The sqlite3_result_pointer()
6097
6463
  ** routine is part of the [pointer passing interface] added for SQLite 3.20.0.
6098
6464
  **
6099
- ** If these routines are called from within the different thread
6465
+ ** If these routines are called from within a different thread
6100
6466
  ** than the one containing the application-defined function that received
6101
6467
  ** the [sqlite3_context] pointer, the results are undefined.
6102
6468
  */
@@ -6135,6 +6501,20 @@ SQLITE_API int sqlite3_result_zeroblob64(sqlite3_context*, sqlite3_uint64 n);
6135
6501
  ** higher order bits are discarded.
6136
6502
  ** The number of subtype bytes preserved by SQLite might increase
6137
6503
  ** in future releases of SQLite.
6504
+ **
6505
+ ** Every [application-defined SQL function] that invokes this interface
6506
+ ** should include the [SQLITE_RESULT_SUBTYPE] property in its
6507
+ ** text encoding argument when the SQL function is
6508
+ ** [sqlite3_create_function|registered]. If the [SQLITE_RESULT_SUBTYPE]
6509
+ ** property is omitted from the function that invokes sqlite3_result_subtype(),
6510
+ ** then in some cases the sqlite3_result_subtype() might fail to set
6511
+ ** the result subtype.
6512
+ **
6513
+ ** If SQLite is compiled with -DSQLITE_STRICT_SUBTYPE=1, then any
6514
+ ** SQL function that invokes the sqlite3_result_subtype() interface
6515
+ ** and that does not have the SQLITE_RESULT_SUBTYPE property will raise
6516
+ ** an error. Future versions of SQLite might enable -DSQLITE_STRICT_SUBTYPE=1
6517
+ ** by default.
6138
6518
  */
6139
6519
  SQLITE_API void sqlite3_result_subtype(sqlite3_context*,unsigned int);
6140
6520
 
@@ -6488,7 +6868,7 @@ SQLITE_API sqlite3 *sqlite3_db_handle(sqlite3_stmt*);
6488
6868
  ** METHOD: sqlite3
6489
6869
  **
6490
6870
  ** ^The sqlite3_db_name(D,N) interface returns a pointer to the schema name
6491
- ** for the N-th database on database connection D, or a NULL pointer of N is
6871
+ ** for the N-th database on database connection D, or a NULL pointer if N is
6492
6872
  ** out of range. An N value of 0 means the main database file. An N of 1 is
6493
6873
  ** the "temp" schema. Larger values of N correspond to various ATTACH-ed
6494
6874
  ** databases.
@@ -6566,7 +6946,7 @@ SQLITE_API int sqlite3_db_readonly(sqlite3 *db, const char *zDbName);
6566
6946
  SQLITE_API int sqlite3_txn_state(sqlite3*,const char *zSchema);
6567
6947
 
6568
6948
  /*
6569
- ** CAPI3REF: Allowed return values from [sqlite3_txn_state()]
6949
+ ** CAPI3REF: Allowed return values from sqlite3_txn_state()
6570
6950
  ** KEYWORDS: {transaction state}
6571
6951
  **
6572
6952
  ** These constants define the current transaction state of a database file.
@@ -6583,7 +6963,7 @@ SQLITE_API int sqlite3_txn_state(sqlite3*,const char *zSchema);
6583
6963
  ** <dd>The SQLITE_TXN_READ state means that the database is currently
6584
6964
  ** in a read transaction. Content has been read from the database file
6585
6965
  ** but nothing in the database file has changed. The transaction state
6586
- ** 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
6587
6967
  ** no other conflicting concurrent write transactions. The transaction
6588
6968
  ** state will revert to SQLITE_TXN_NONE following a [ROLLBACK] or
6589
6969
  ** [COMMIT].</dd>
@@ -6592,7 +6972,7 @@ SQLITE_API int sqlite3_txn_state(sqlite3*,const char *zSchema);
6592
6972
  ** <dd>The SQLITE_TXN_WRITE state means that the database is currently
6593
6973
  ** in a write transaction. Content has been written to the database file
6594
6974
  ** but has not yet committed. The transaction state will change to
6595
- ** to SQLITE_TXN_NONE at the next [ROLLBACK] or [COMMIT].</dd>
6975
+ ** SQLITE_TXN_NONE at the next [ROLLBACK] or [COMMIT].</dd>
6596
6976
  */
6597
6977
  #define SQLITE_TXN_NONE 0
6598
6978
  #define SQLITE_TXN_READ 1
@@ -6698,7 +7078,7 @@ SQLITE_API void *sqlite3_rollback_hook(sqlite3*, void(*)(void *), void*);
6698
7078
  ** ^Each call to the sqlite3_autovacuum_pages() interface overrides all
6699
7079
  ** previous invocations for that database connection. ^If the callback
6700
7080
  ** argument (C) to sqlite3_autovacuum_pages(D,C,P,X) is a NULL pointer,
6701
- ** then the autovacuum steps callback is cancelled. The return value
7081
+ ** then the autovacuum steps callback is canceled. The return value
6702
7082
  ** from sqlite3_autovacuum_pages() is normally SQLITE_OK, but might
6703
7083
  ** be some other error code if something goes wrong. The current
6704
7084
  ** implementation will only return SQLITE_OK or SQLITE_MISUSE, but other
@@ -6743,6 +7123,8 @@ SQLITE_API int sqlite3_autovacuum_pages(
6743
7123
  **
6744
7124
  ** ^The second argument is a pointer to the function to invoke when a
6745
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.
6746
7128
  ** ^The first argument to the callback is a copy of the third argument
6747
7129
  ** to sqlite3_update_hook().
6748
7130
  ** ^The second callback argument is one of [SQLITE_INSERT], [SQLITE_DELETE],
@@ -6764,6 +7146,12 @@ SQLITE_API int sqlite3_autovacuum_pages(
6764
7146
  ** The exceptions defined in this paragraph might change in a future
6765
7147
  ** release of SQLite.
6766
7148
  **
7149
+ ** Whether the update hook is invoked before or after the
7150
+ ** corresponding change is currently unspecified and may differ
7151
+ ** depending on the type of change. Do not rely on the order of the
7152
+ ** hook call with regards to the final result of the operation which
7153
+ ** triggers the hook.
7154
+ **
6767
7155
  ** The update hook implementation must not do anything that will modify
6768
7156
  ** the database connection that invoked the update hook. Any actions
6769
7157
  ** to modify the database connection must be deferred until after the
@@ -6865,7 +7253,7 @@ SQLITE_API int sqlite3_db_release_memory(sqlite3*);
6865
7253
  ** CAPI3REF: Impose A Limit On Heap Size
6866
7254
  **
6867
7255
  ** These interfaces impose limits on the amount of heap memory that will be
6868
- ** by all database connections within a single process.
7256
+ ** used by all database connections within a single process.
6869
7257
  **
6870
7258
  ** ^The sqlite3_soft_heap_limit64() interface sets and/or queries the
6871
7259
  ** soft limit on the amount of heap memory that may be allocated by SQLite.
@@ -6923,7 +7311,7 @@ SQLITE_API int sqlite3_db_release_memory(sqlite3*);
6923
7311
  ** </ul>)^
6924
7312
  **
6925
7313
  ** The circumstances under which SQLite will enforce the heap limits may
6926
- ** changes in future releases of SQLite.
7314
+ ** change in future releases of SQLite.
6927
7315
  */
6928
7316
  SQLITE_API sqlite3_int64 sqlite3_soft_heap_limit64(sqlite3_int64 N);
6929
7317
  SQLITE_API sqlite3_int64 sqlite3_hard_heap_limit64(sqlite3_int64 N);
@@ -7038,8 +7426,8 @@ SQLITE_API int sqlite3_table_column_metadata(
7038
7426
  ** ^The entry point is zProc.
7039
7427
  ** ^(zProc may be 0, in which case SQLite will try to come up with an
7040
7428
  ** entry point name on its own. It first tries "sqlite3_extension_init".
7041
- ** If that does not work, it constructs a name "sqlite3_X_init" where the
7042
- ** X is consists of the lower-case equivalent of all ASCII alphabetic
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
7043
7431
  ** characters in the filename from the last "/" to the first following
7044
7432
  ** "." and omitting any initial "lib".)^
7045
7433
  ** ^The sqlite3_load_extension() interface returns
@@ -7110,7 +7498,7 @@ SQLITE_API int sqlite3_enable_load_extension(sqlite3 *db, int onoff);
7110
7498
  ** ^(Even though the function prototype shows that xEntryPoint() takes
7111
7499
  ** no arguments and returns void, SQLite invokes xEntryPoint() with three
7112
7500
  ** arguments and expects an integer result as if the signature of the
7113
- ** entry point where as follows:
7501
+ ** entry point were as follows:
7114
7502
  **
7115
7503
  ** <blockquote><pre>
7116
7504
  ** &nbsp; int xEntryPoint(
@@ -7217,6 +7605,10 @@ struct sqlite3_module {
7217
7605
  /* The methods above are in versions 1 and 2 of the sqlite_module object.
7218
7606
  ** Those below are for version 3 and greater. */
7219
7607
  int (*xShadowName)(const char*);
7608
+ /* The methods above are in versions 1 through 3 of the sqlite_module object.
7609
+ ** Those below are for version 4 and greater. */
7610
+ int (*xIntegrity)(sqlite3_vtab *pVTab, const char *zSchema,
7611
+ const char *zTabName, int mFlags, char **pzErr);
7220
7612
  };
7221
7613
 
7222
7614
  /*
@@ -7270,7 +7662,7 @@ struct sqlite3_module {
7270
7662
  ** virtual table and might not be checked again by the byte code.)^ ^(The
7271
7663
  ** aConstraintUsage[].omit flag is an optimization hint. When the omit flag
7272
7664
  ** is left in its default setting of false, the constraint will always be
7273
- ** checked separately in byte code. If the omit flag is change to true, then
7665
+ ** checked separately in byte code. If the omit flag is changed to true, then
7274
7666
  ** the constraint may or may not be checked in byte code. In other words,
7275
7667
  ** when the omit flag is true there is no guarantee that the constraint will
7276
7668
  ** not be checked again using byte code.)^
@@ -7294,9 +7686,11 @@ struct sqlite3_module {
7294
7686
  ** will be returned by the strategy.
7295
7687
  **
7296
7688
  ** The xBestIndex method may optionally populate the idxFlags field with a
7297
- ** mask of SQLITE_INDEX_SCAN_* flags. Currently there is only one such flag -
7298
- ** SQLITE_INDEX_SCAN_UNIQUE. If the xBestIndex method sets this flag, SQLite
7299
- ** assumes that the strategy may visit at most one row.
7689
+ ** mask of SQLITE_INDEX_SCAN_* flags. One such flag is
7690
+ ** [SQLITE_INDEX_SCAN_HEX], which if set causes the [EXPLAIN QUERY PLAN]
7691
+ ** output to show the idxNum as hex instead of as decimal. Another flag is
7692
+ ** SQLITE_INDEX_SCAN_UNIQUE, which if set indicates that the query plan will
7693
+ ** return at most one row.
7300
7694
  **
7301
7695
  ** Additionally, if xBestIndex sets the SQLITE_INDEX_SCAN_UNIQUE flag, then
7302
7696
  ** SQLite also assumes that if a call to the xUpdate() method is made as
@@ -7360,7 +7754,9 @@ struct sqlite3_index_info {
7360
7754
  ** [sqlite3_index_info].idxFlags field to some combination of
7361
7755
  ** these bits.
7362
7756
  */
7363
- #define SQLITE_INDEX_SCAN_UNIQUE 1 /* Scan visits at most 1 row */
7757
+ #define SQLITE_INDEX_SCAN_UNIQUE 0x00000001 /* Scan visits at most 1 row */
7758
+ #define SQLITE_INDEX_SCAN_HEX 0x00000002 /* Display idxNum as hex */
7759
+ /* in EXPLAIN QUERY PLAN */
7364
7760
 
7365
7761
  /*
7366
7762
  ** CAPI3REF: Virtual Table Constraint Operator Codes
@@ -7433,7 +7829,7 @@ struct sqlite3_index_info {
7433
7829
  ** the implementation of the [virtual table module]. ^The fourth
7434
7830
  ** parameter is an arbitrary client data pointer that is passed through
7435
7831
  ** into the [xCreate] and [xConnect] methods of the virtual table module
7436
- ** when a new virtual table is be being created or reinitialized.
7832
+ ** when a new virtual table is being created or reinitialized.
7437
7833
  **
7438
7834
  ** ^The sqlite3_create_module_v2() interface has a fifth parameter which
7439
7835
  ** is a pointer to a destructor for the pClientData. ^SQLite will
@@ -7598,7 +7994,7 @@ typedef struct sqlite3_blob sqlite3_blob;
7598
7994
  ** in *ppBlob. Otherwise an [error code] is returned and, unless the error
7599
7995
  ** code is SQLITE_MISUSE, *ppBlob is set to NULL.)^ ^This means that, provided
7600
7996
  ** the API is not misused, it is always safe to call [sqlite3_blob_close()]
7601
- ** on *ppBlob after this function it returns.
7997
+ ** on *ppBlob after this function returns.
7602
7998
  **
7603
7999
  ** This function fails with SQLITE_ERROR if any of the following are true:
7604
8000
  ** <ul>
@@ -7704,7 +8100,7 @@ SQLITE_API int sqlite3_blob_reopen(sqlite3_blob *, sqlite3_int64);
7704
8100
  ** code is returned and the transaction rolled back.
7705
8101
  **
7706
8102
  ** Calling this function with an argument that is not a NULL pointer or an
7707
- ** open blob handle results in undefined behaviour. ^Calling this routine
8103
+ ** open blob handle results in undefined behavior. ^Calling this routine
7708
8104
  ** with a null pointer (such as would be returned by a failed call to
7709
8105
  ** [sqlite3_blob_open()]) is a harmless no-op. ^Otherwise, if this function
7710
8106
  ** is passed a valid open blob handle, the values returned by the
@@ -7718,7 +8114,7 @@ SQLITE_API int sqlite3_blob_close(sqlite3_blob *);
7718
8114
  **
7719
8115
  ** ^Returns the size in bytes of the BLOB accessible via the
7720
8116
  ** successfully opened [BLOB handle] in its only argument. ^The
7721
- ** incremental blob I/O routines can only read or overwriting existing
8117
+ ** incremental blob I/O routines can only read or overwrite existing
7722
8118
  ** blob content; they cannot change the size of a blob.
7723
8119
  **
7724
8120
  ** This routine only works on a [BLOB handle] which has been created
@@ -7868,7 +8264,7 @@ SQLITE_API int sqlite3_vfs_unregister(sqlite3_vfs*);
7868
8264
  ** ^The sqlite3_mutex_alloc() routine allocates a new
7869
8265
  ** mutex and returns a pointer to it. ^The sqlite3_mutex_alloc()
7870
8266
  ** routine returns NULL if it is unable to allocate the requested
7871
- ** mutex. The argument to sqlite3_mutex_alloc() must one of these
8267
+ ** mutex. The argument to sqlite3_mutex_alloc() must be one of these
7872
8268
  ** integer constants:
7873
8269
  **
7874
8270
  ** <ul>
@@ -7931,9 +8327,11 @@ SQLITE_API int sqlite3_vfs_unregister(sqlite3_vfs*);
7931
8327
  **
7932
8328
  ** ^(Some systems (for example, Windows 95) do not support the operation
7933
8329
  ** implemented by sqlite3_mutex_try(). On those systems, sqlite3_mutex_try()
7934
- ** will always return SQLITE_BUSY. The SQLite core only ever uses
7935
- ** sqlite3_mutex_try() as an optimization so this is acceptable
7936
- ** behavior.)^
8330
+ ** will always return SQLITE_BUSY. In most cases the SQLite core only uses
8331
+ ** sqlite3_mutex_try() as an optimization, so this is acceptable
8332
+ ** behavior. The exceptions are unix builds that set the
8333
+ ** SQLITE_ENABLE_SETLK_TIMEOUT build option. In that case a working
8334
+ ** sqlite3_mutex_try() is required.)^
7937
8335
  **
7938
8336
  ** ^The sqlite3_mutex_leave() routine exits a mutex that was
7939
8337
  ** previously entered by the same thread. The behavior
@@ -8099,7 +8497,7 @@ SQLITE_API int sqlite3_mutex_notheld(sqlite3_mutex*);
8099
8497
  ** CAPI3REF: Retrieve the mutex for a database connection
8100
8498
  ** METHOD: sqlite3
8101
8499
  **
8102
- ** ^This interface returns a pointer the [sqlite3_mutex] object that
8500
+ ** ^This interface returns a pointer to the [sqlite3_mutex] object that
8103
8501
  ** serializes access to the [database connection] given in the argument
8104
8502
  ** when the [threading mode] is Serialized.
8105
8503
  ** ^If the [threading mode] is Single-thread or Multi-thread then this
@@ -8184,6 +8582,7 @@ SQLITE_API int sqlite3_test_control(int op, ...);
8184
8582
  #define SQLITE_TESTCTRL_PRNG_SAVE 5
8185
8583
  #define SQLITE_TESTCTRL_PRNG_RESTORE 6
8186
8584
  #define SQLITE_TESTCTRL_PRNG_RESET 7 /* NOT USED */
8585
+ #define SQLITE_TESTCTRL_FK_NO_ACTION 7
8187
8586
  #define SQLITE_TESTCTRL_BITVEC_TEST 8
8188
8587
  #define SQLITE_TESTCTRL_FAULT_INSTALL 9
8189
8588
  #define SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS 10
@@ -8191,8 +8590,10 @@ SQLITE_API int sqlite3_test_control(int op, ...);
8191
8590
  #define SQLITE_TESTCTRL_ASSERT 12
8192
8591
  #define SQLITE_TESTCTRL_ALWAYS 13
8193
8592
  #define SQLITE_TESTCTRL_RESERVE 14 /* NOT USED */
8593
+ #define SQLITE_TESTCTRL_JSON_SELFCHECK 14
8194
8594
  #define SQLITE_TESTCTRL_OPTIMIZATIONS 15
8195
8595
  #define SQLITE_TESTCTRL_ISKEYWORD 16 /* NOT USED */
8596
+ #define SQLITE_TESTCTRL_GETOPT 16
8196
8597
  #define SQLITE_TESTCTRL_SCRATCHMALLOC 17 /* NOT USED */
8197
8598
  #define SQLITE_TESTCTRL_INTERNAL_FUNCTIONS 17
8198
8599
  #define SQLITE_TESTCTRL_LOCALTIME_FAULT 18
@@ -8212,21 +8613,21 @@ SQLITE_API int sqlite3_test_control(int op, ...);
8212
8613
  #define SQLITE_TESTCTRL_TRACEFLAGS 31
8213
8614
  #define SQLITE_TESTCTRL_TUNE 32
8214
8615
  #define SQLITE_TESTCTRL_LOGEST 33
8215
- #define SQLITE_TESTCTRL_USELONGDOUBLE 34
8616
+ #define SQLITE_TESTCTRL_USELONGDOUBLE 34 /* NOT USED */
8216
8617
  #define SQLITE_TESTCTRL_LAST 34 /* Largest TESTCTRL */
8217
8618
 
8218
8619
  /*
8219
8620
  ** CAPI3REF: SQL Keyword Checking
8220
8621
  **
8221
8622
  ** These routines provide access to the set of SQL language keywords
8222
- ** recognized by SQLite. Applications can uses these routines to determine
8623
+ ** recognized by SQLite. Applications can use these routines to determine
8223
8624
  ** whether or not a specific identifier needs to be escaped (for example,
8224
8625
  ** by enclosing in double-quotes) so as not to confuse the parser.
8225
8626
  **
8226
8627
  ** The sqlite3_keyword_count() interface returns the number of distinct
8227
8628
  ** keywords understood by SQLite.
8228
8629
  **
8229
- ** The sqlite3_keyword_name(N,Z,L) interface finds the N-th keyword and
8630
+ ** The sqlite3_keyword_name(N,Z,L) interface finds the 0-based N-th keyword and
8230
8631
  ** makes *Z point to that keyword expressed as UTF8 and writes the number
8231
8632
  ** of bytes in the keyword into *L. The string that *Z points to is not
8232
8633
  ** zero-terminated. The sqlite3_keyword_name(N,Z,L) routine returns
@@ -8387,7 +8788,7 @@ SQLITE_API void sqlite3_str_reset(sqlite3_str*);
8387
8788
  ** content of the dynamic string under construction in X. The value
8388
8789
  ** returned by [sqlite3_str_value(X)] is managed by the sqlite3_str object X
8389
8790
  ** and might be freed or altered by any subsequent method on the same
8390
- ** [sqlite3_str] object. Applications must not used the pointer returned
8791
+ ** [sqlite3_str] object. Applications must not use the pointer returned by
8391
8792
  ** [sqlite3_str_value(X)] after any subsequent method call on the same
8392
8793
  ** object. ^Applications may change the content of the string returned
8393
8794
  ** by [sqlite3_str_value(X)] as long as they do not write into any bytes
@@ -8473,7 +8874,7 @@ SQLITE_API int sqlite3_status64(
8473
8874
  ** allocation which could not be satisfied by the [SQLITE_CONFIG_PAGECACHE]
8474
8875
  ** buffer and where forced to overflow to [sqlite3_malloc()]. The
8475
8876
  ** returned value includes allocations that overflowed because they
8476
- ** where too large (they were larger than the "sz" parameter to
8877
+ ** were too large (they were larger than the "sz" parameter to
8477
8878
  ** [SQLITE_CONFIG_PAGECACHE]) and allocations that overflowed because
8478
8879
  ** no space was left in the page cache.</dd>)^
8479
8880
  **
@@ -8532,9 +8933,18 @@ SQLITE_API int sqlite3_status64(
8532
8933
  ** ^The sqlite3_db_status() routine returns SQLITE_OK on success and a
8533
8934
  ** non-zero [error code] on failure.
8534
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
+ **
8535
8944
  ** See also: [sqlite3_status()] and [sqlite3_stmt_status()].
8536
8945
  */
8537
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);
8538
8948
 
8539
8949
  /*
8540
8950
  ** CAPI3REF: Status Parameters for database connections
@@ -8557,28 +8967,29 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r
8557
8967
  ** [[SQLITE_DBSTATUS_LOOKASIDE_HIT]] ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_HIT</dt>
8558
8968
  ** <dd>This parameter returns the number of malloc attempts that were
8559
8969
  ** satisfied using lookaside memory. Only the high-water value is meaningful;
8560
- ** the current value is always zero.)^
8970
+ ** the current value is always zero.</dd>)^
8561
8971
  **
8562
8972
  ** [[SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE]]
8563
8973
  ** ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE</dt>
8564
- ** <dd>This parameter returns the number malloc attempts that might have
8974
+ ** <dd>This parameter returns the number of malloc attempts that might have
8565
8975
  ** been satisfied using lookaside memory but failed due to the amount of
8566
8976
  ** memory requested being larger than the lookaside slot size.
8567
8977
  ** Only the high-water value is meaningful;
8568
- ** the current value is always zero.)^
8978
+ ** the current value is always zero.</dd>)^
8569
8979
  **
8570
8980
  ** [[SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL]]
8571
8981
  ** ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL</dt>
8572
- ** <dd>This parameter returns the number malloc attempts that might have
8982
+ ** <dd>This parameter returns the number of malloc attempts that might have
8573
8983
  ** been satisfied using lookaside memory but failed due to all lookaside
8574
8984
  ** memory already being in use.
8575
8985
  ** Only the high-water value is meaningful;
8576
- ** the current value is always zero.)^
8986
+ ** the current value is always zero.</dd>)^
8577
8987
  **
8578
8988
  ** [[SQLITE_DBSTATUS_CACHE_USED]] ^(<dt>SQLITE_DBSTATUS_CACHE_USED</dt>
8579
8989
  ** <dd>This parameter returns the approximate number of bytes of heap
8580
8990
  ** memory used by all pager caches associated with the database connection.)^
8581
8991
  ** ^The highwater mark associated with SQLITE_DBSTATUS_CACHE_USED is always 0.
8992
+ ** </dd>
8582
8993
  **
8583
8994
  ** [[SQLITE_DBSTATUS_CACHE_USED_SHARED]]
8584
8995
  ** ^(<dt>SQLITE_DBSTATUS_CACHE_USED_SHARED</dt>
@@ -8587,10 +8998,10 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r
8587
8998
  ** memory used by that pager cache is divided evenly between the attached
8588
8999
  ** connections.)^ In other words, if none of the pager caches associated
8589
9000
  ** with the database connection are shared, this request returns the same
8590
- ** value as DBSTATUS_CACHE_USED. Or, if one or more or the pager caches are
9001
+ ** value as DBSTATUS_CACHE_USED. Or, if one or more of the pager caches are
8591
9002
  ** shared, the value returned by this call will be smaller than that returned
8592
9003
  ** by DBSTATUS_CACHE_USED. ^The highwater mark associated with
8593
- ** SQLITE_DBSTATUS_CACHE_USED_SHARED is always 0.
9004
+ ** SQLITE_DBSTATUS_CACHE_USED_SHARED is always 0.</dd>
8594
9005
  **
8595
9006
  ** [[SQLITE_DBSTATUS_SCHEMA_USED]] ^(<dt>SQLITE_DBSTATUS_SCHEMA_USED</dt>
8596
9007
  ** <dd>This parameter returns the approximate number of bytes of heap
@@ -8600,6 +9011,7 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r
8600
9011
  ** schema memory is shared with other database connections due to
8601
9012
  ** [shared cache mode] being enabled.
8602
9013
  ** ^The highwater mark associated with SQLITE_DBSTATUS_SCHEMA_USED is always 0.
9014
+ ** </dd>
8603
9015
  **
8604
9016
  ** [[SQLITE_DBSTATUS_STMT_USED]] ^(<dt>SQLITE_DBSTATUS_STMT_USED</dt>
8605
9017
  ** <dd>This parameter returns the approximate number of bytes of heap
@@ -8629,6 +9041,10 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r
8629
9041
  ** If an IO or other error occurs while writing a page to disk, the effect
8630
9042
  ** on subsequent SQLITE_DBSTATUS_CACHE_WRITE requests is undefined.)^ ^The
8631
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.)^
8632
9048
  ** </dd>
8633
9049
  **
8634
9050
  ** [[SQLITE_DBSTATUS_CACHE_SPILL]] ^(<dt>SQLITE_DBSTATUS_CACHE_SPILL</dt>
@@ -8636,7 +9052,7 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r
8636
9052
  ** been written to disk in the middle of a transaction due to the page
8637
9053
  ** cache overflowing. Transactions are more efficient if they are written
8638
9054
  ** to disk all at once. When pages spill mid-transaction, that introduces
8639
- ** additional overhead. This parameter can be used help identify
9055
+ ** additional overhead. This parameter can be used to help identify
8640
9056
  ** inefficiencies that can be resolved by increasing the cache size.
8641
9057
  ** </dd>
8642
9058
  **
@@ -8644,6 +9060,18 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r
8644
9060
  ** <dd>This parameter returns zero for the current value if and only if
8645
9061
  ** all foreign key constraints (deferred or immediate) have been
8646
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.)^
8647
9075
  ** </dd>
8648
9076
  ** </dl>
8649
9077
  */
@@ -8660,7 +9088,8 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r
8660
9088
  #define SQLITE_DBSTATUS_DEFERRED_FKS 10
8661
9089
  #define SQLITE_DBSTATUS_CACHE_USED_SHARED 11
8662
9090
  #define SQLITE_DBSTATUS_CACHE_SPILL 12
8663
- #define SQLITE_DBSTATUS_MAX 12 /* Largest defined DBSTATUS */
9091
+ #define SQLITE_DBSTATUS_TEMPBUF_SPILL 13
9092
+ #define SQLITE_DBSTATUS_MAX 13 /* Largest defined DBSTATUS */
8664
9093
 
8665
9094
 
8666
9095
  /*
@@ -8707,13 +9136,13 @@ SQLITE_API int sqlite3_stmt_status(sqlite3_stmt*, int op,int resetFlg);
8707
9136
  ** [[SQLITE_STMTSTATUS_SORT]] <dt>SQLITE_STMTSTATUS_SORT</dt>
8708
9137
  ** <dd>^This is the number of sort operations that have occurred.
8709
9138
  ** A non-zero value in this counter may indicate an opportunity to
8710
- ** improvement performance through careful use of indices.</dd>
9139
+ ** improve performance through careful use of indices.</dd>
8711
9140
  **
8712
9141
  ** [[SQLITE_STMTSTATUS_AUTOINDEX]] <dt>SQLITE_STMTSTATUS_AUTOINDEX</dt>
8713
9142
  ** <dd>^This is the number of rows inserted into transient indices that
8714
9143
  ** were created automatically in order to help joins run faster.
8715
9144
  ** A non-zero value in this counter may indicate an opportunity to
8716
- ** improvement performance by adding permanent indices that do not
9145
+ ** improve performance by adding permanent indices that do not
8717
9146
  ** need to be reinitialized each time the statement is run.</dd>
8718
9147
  **
8719
9148
  ** [[SQLITE_STMTSTATUS_VM_STEP]] <dt>SQLITE_STMTSTATUS_VM_STEP</dt>
@@ -8722,19 +9151,19 @@ SQLITE_API int sqlite3_stmt_status(sqlite3_stmt*, int op,int resetFlg);
8722
9151
  ** to 2147483647. The number of virtual machine operations can be
8723
9152
  ** used as a proxy for the total work done by the prepared statement.
8724
9153
  ** If the number of virtual machine operations exceeds 2147483647
8725
- ** then the value returned by this statement status code is undefined.
9154
+ ** then the value returned by this statement status code is undefined.</dd>
8726
9155
  **
8727
9156
  ** [[SQLITE_STMTSTATUS_REPREPARE]] <dt>SQLITE_STMTSTATUS_REPREPARE</dt>
8728
9157
  ** <dd>^This is the number of times that the prepare statement has been
8729
9158
  ** automatically regenerated due to schema changes or changes to
8730
- ** [bound parameters] that might affect the query plan.
9159
+ ** [bound parameters] that might affect the query plan.</dd>
8731
9160
  **
8732
9161
  ** [[SQLITE_STMTSTATUS_RUN]] <dt>SQLITE_STMTSTATUS_RUN</dt>
8733
9162
  ** <dd>^This is the number of times that the prepared statement has
8734
9163
  ** been run. A single "run" for the purposes of this counter is one
8735
9164
  ** or more calls to [sqlite3_step()] followed by a call to [sqlite3_reset()].
8736
9165
  ** The counter is incremented on the first [sqlite3_step()] call of each
8737
- ** cycle.
9166
+ ** cycle.</dd>
8738
9167
  **
8739
9168
  ** [[SQLITE_STMTSTATUS_FILTER_MISS]]
8740
9169
  ** [[SQLITE_STMTSTATUS_FILTER HIT]]
@@ -8744,7 +9173,7 @@ SQLITE_API int sqlite3_stmt_status(sqlite3_stmt*, int op,int resetFlg);
8744
9173
  ** step was bypassed because a Bloom filter returned not-found. The
8745
9174
  ** corresponding SQLITE_STMTSTATUS_FILTER_MISS value is the number of
8746
9175
  ** times that the Bloom filter returned a find, and thus the join step
8747
- ** had to be processed as normal.
9176
+ ** had to be processed as normal.</dd>
8748
9177
  **
8749
9178
  ** [[SQLITE_STMTSTATUS_MEMUSED]] <dt>SQLITE_STMTSTATUS_MEMUSED</dt>
8750
9179
  ** <dd>^This is the approximate number of bytes of heap memory
@@ -8849,9 +9278,9 @@ struct sqlite3_pcache_page {
8849
9278
  ** SQLite will typically create one cache instance for each open database file,
8850
9279
  ** though this is not guaranteed. ^The
8851
9280
  ** first parameter, szPage, is the size in bytes of the pages that must
8852
- ** 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
8853
9282
  ** second parameter szExtra is a number of bytes of extra storage
8854
- ** associated with each page cache entry. ^The szExtra parameter will
9283
+ ** associated with each page cache entry. ^The szExtra parameter will be
8855
9284
  ** a number less than 250. SQLite will use the
8856
9285
  ** extra szExtra bytes on each page to store metadata about the underlying
8857
9286
  ** database page on disk. The value passed into szExtra depends
@@ -8859,17 +9288,17 @@ struct sqlite3_pcache_page {
8859
9288
  ** ^The third argument to xCreate(), bPurgeable, is true if the cache being
8860
9289
  ** created will be used to cache database pages of a file stored on disk, or
8861
9290
  ** false if it is used for an in-memory database. The cache implementation
8862
- ** does not have to do anything special based with the value of bPurgeable;
9291
+ ** does not have to do anything special based upon the value of bPurgeable;
8863
9292
  ** it is purely advisory. ^On a cache where bPurgeable is false, SQLite will
8864
9293
  ** never invoke xUnpin() except to deliberately delete a page.
8865
9294
  ** ^In other words, calls to xUnpin() on a cache with bPurgeable set to
8866
9295
  ** false will always have the "discard" flag set to true.
8867
- ** ^Hence, a cache created with bPurgeable false will
9296
+ ** ^Hence, a cache created with bPurgeable set to false will
8868
9297
  ** never contain any unpinned pages.
8869
9298
  **
8870
9299
  ** [[the xCachesize() page cache method]]
8871
9300
  ** ^(The xCachesize() method may be called at any time by SQLite to set the
8872
- ** suggested maximum cache-size (number of pages stored by) the cache
9301
+ ** suggested maximum cache-size (number of pages stored) for the cache
8873
9302
  ** instance passed as the first argument. This is the value configured using
8874
9303
  ** the SQLite "[PRAGMA cache_size]" command.)^ As with the bPurgeable
8875
9304
  ** parameter, the implementation is not required to do anything with this
@@ -8896,12 +9325,12 @@ struct sqlite3_pcache_page {
8896
9325
  ** implementation must return a pointer to the page buffer with its content
8897
9326
  ** intact. If the requested page is not already in the cache, then the
8898
9327
  ** cache implementation should use the value of the createFlag
8899
- ** parameter to help it determined what action to take:
9328
+ ** parameter to help it determine what action to take:
8900
9329
  **
8901
9330
  ** <table border=1 width=85% align=center>
8902
9331
  ** <tr><th> createFlag <th> Behavior when page is not already in cache
8903
9332
  ** <tr><td> 0 <td> Do not allocate a new page. Return NULL.
8904
- ** <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.
8905
9334
  ** Otherwise return NULL.
8906
9335
  ** <tr><td> 2 <td> Make every effort to allocate a new page. Only return
8907
9336
  ** NULL if allocating a new page is effectively impossible.
@@ -8918,7 +9347,7 @@ struct sqlite3_pcache_page {
8918
9347
  ** as its second argument. If the third parameter, discard, is non-zero,
8919
9348
  ** then the page must be evicted from the cache.
8920
9349
  ** ^If the discard parameter is
8921
- ** 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
8922
9351
  ** page cache implementation. ^The page cache implementation
8923
9352
  ** may choose to evict unpinned pages at any time.
8924
9353
  **
@@ -8936,7 +9365,7 @@ struct sqlite3_pcache_page {
8936
9365
  ** When SQLite calls the xTruncate() method, the cache must discard all
8937
9366
  ** existing cache entries with page numbers (keys) greater than or equal
8938
9367
  ** to the value of the iLimit parameter passed to xTruncate(). If any
8939
- ** of these pages are pinned, they are implicitly unpinned, meaning that
9368
+ ** of these pages are pinned, they become implicitly unpinned, meaning that
8940
9369
  ** they can be safely discarded.
8941
9370
  **
8942
9371
  ** [[the xDestroy() page cache method]]
@@ -9116,7 +9545,7 @@ typedef struct sqlite3_backup sqlite3_backup;
9116
9545
  ** external process or via a database connection other than the one being
9117
9546
  ** used by the backup operation, then the backup will be automatically
9118
9547
  ** restarted by the next call to sqlite3_backup_step(). ^If the source
9119
- ** database is modified by the using the same database connection as is used
9548
+ ** database is modified by using the same database connection as is used
9120
9549
  ** by the backup operation, then the backup database is automatically
9121
9550
  ** updated at the same time.
9122
9551
  **
@@ -9133,7 +9562,7 @@ typedef struct sqlite3_backup sqlite3_backup;
9133
9562
  ** and may not be used following a call to sqlite3_backup_finish().
9134
9563
  **
9135
9564
  ** ^The value returned by sqlite3_backup_finish is [SQLITE_OK] if no
9136
- ** sqlite3_backup_step() errors occurred, regardless or whether or not
9565
+ ** sqlite3_backup_step() errors occurred, regardless of whether or not
9137
9566
  ** sqlite3_backup_step() completed.
9138
9567
  ** ^If an out-of-memory condition or IO error occurred during any prior
9139
9568
  ** sqlite3_backup_step() call on the same [sqlite3_backup] object, then
@@ -9188,6 +9617,16 @@ typedef struct sqlite3_backup sqlite3_backup;
9188
9617
  ** APIs are not strictly speaking threadsafe. If they are invoked at the
9189
9618
  ** same time as another thread is invoking sqlite3_backup_step() it is
9190
9619
  ** possible that they return invalid values.
9620
+ **
9621
+ ** <b>Alternatives To Using The Backup API</b>
9622
+ **
9623
+ ** Other techniques for safely creating a consistent backup of an SQLite
9624
+ ** database include:
9625
+ **
9626
+ ** <ul>
9627
+ ** <li> The [VACUUM INTO] command.
9628
+ ** <li> The [sqlite3_rsync] utility program.
9629
+ ** </ul>
9191
9630
  */
9192
9631
  SQLITE_API sqlite3_backup *sqlite3_backup_init(
9193
9632
  sqlite3 *pDest, /* Destination database handle */
@@ -9225,7 +9664,7 @@ SQLITE_API int sqlite3_backup_pagecount(sqlite3_backup *p);
9225
9664
  ** application receives an SQLITE_LOCKED error, it may call the
9226
9665
  ** sqlite3_unlock_notify() method with the blocked connection handle as
9227
9666
  ** the first argument to register for a callback that will be invoked
9228
- ** when the blocking connections current transaction is concluded. ^The
9667
+ ** when the blocking connection's current transaction is concluded. ^The
9229
9668
  ** callback is invoked from within the [sqlite3_step] or [sqlite3_close]
9230
9669
  ** call that concludes the blocking connection's transaction.
9231
9670
  **
@@ -9245,8 +9684,8 @@ SQLITE_API int sqlite3_backup_pagecount(sqlite3_backup *p);
9245
9684
  ** blocked connection already has a registered unlock-notify callback,
9246
9685
  ** then the new callback replaces the old.)^ ^If sqlite3_unlock_notify() is
9247
9686
  ** called with a NULL pointer as its second argument, then any existing
9248
- ** unlock-notify callback is cancelled. ^The blocked connections
9249
- ** unlock-notify callback may also be cancelled by closing the blocked
9687
+ ** unlock-notify callback is canceled. ^The blocked connection's
9688
+ ** unlock-notify callback may also be canceled by closing the blocked
9250
9689
  ** connection using [sqlite3_close()].
9251
9690
  **
9252
9691
  ** The unlock-notify callback is not reentrant. If an application invokes
@@ -9415,7 +9854,7 @@ SQLITE_API void sqlite3_log(int iErrCode, const char *zFormat, ...);
9415
9854
  ** is the number of pages currently in the write-ahead log file,
9416
9855
  ** including those that were just committed.
9417
9856
  **
9418
- ** The callback function should normally return [SQLITE_OK]. ^If an error
9857
+ ** ^The callback function should normally return [SQLITE_OK]. ^If an error
9419
9858
  ** code is returned, that error will propagate back up through the
9420
9859
  ** SQLite code base to cause the statement that provoked the callback
9421
9860
  ** to report an error, though the commit will have still occurred. If the
@@ -9423,13 +9862,26 @@ SQLITE_API void sqlite3_log(int iErrCode, const char *zFormat, ...);
9423
9862
  ** that does not correspond to any valid SQLite error code, the results
9424
9863
  ** are undefined.
9425
9864
  **
9426
- ** A single database handle may have at most a single write-ahead log callback
9427
- ** registered at one time. ^Calling [sqlite3_wal_hook()] replaces any
9428
- ** previously registered write-ahead log callback. ^The return value is
9429
- ** a copy of the third parameter from the previous call, if any, or 0.
9430
- ** ^Note that the [sqlite3_wal_autocheckpoint()] interface and the
9431
- ** [wal_autocheckpoint pragma] both invoke [sqlite3_wal_hook()] and will
9432
- ** overwrite any prior [sqlite3_wal_hook()] settings.
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].
9433
9885
  */
9434
9886
  SQLITE_API void *sqlite3_wal_hook(
9435
9887
  sqlite3*,
@@ -9446,7 +9898,7 @@ SQLITE_API void *sqlite3_wal_hook(
9446
9898
  ** to automatically [checkpoint]
9447
9899
  ** after committing a transaction if there are N or
9448
9900
  ** more frames in the [write-ahead log] file. ^Passing zero or
9449
- ** a negative value as the nFrame parameter disables automatic
9901
+ ** a negative value as the N parameter disables automatic
9450
9902
  ** checkpoints entirely.
9451
9903
  **
9452
9904
  ** ^The callback registered by this function replaces any existing callback
@@ -9462,9 +9914,10 @@ SQLITE_API void *sqlite3_wal_hook(
9462
9914
  **
9463
9915
  ** ^Every new [database connection] defaults to having the auto-checkpoint
9464
9916
  ** enabled with a threshold of 1000 or [SQLITE_DEFAULT_WAL_AUTOCHECKPOINT]
9465
- ** pages. The use of this interface
9466
- ** is only necessary if the default setting is found to be suboptimal
9467
- ** for a particular application.
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.
9468
9921
  */
9469
9922
  SQLITE_API int sqlite3_wal_autocheckpoint(sqlite3 *db, int N);
9470
9923
 
@@ -9529,6 +9982,11 @@ SQLITE_API int sqlite3_wal_checkpoint(sqlite3 *db, const char *zDb);
9529
9982
  ** ^This mode works the same way as SQLITE_CHECKPOINT_RESTART with the
9530
9983
  ** addition that it also truncates the log file to zero bytes just prior
9531
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.
9532
9990
  ** </dl>
9533
9991
  **
9534
9992
  ** ^If pnLog is not NULL, then *pnLog is set to the total number of frames in
@@ -9599,6 +10057,7 @@ SQLITE_API int sqlite3_wal_checkpoint_v2(
9599
10057
  ** See the [sqlite3_wal_checkpoint_v2()] documentation for details on the
9600
10058
  ** meaning of each of these checkpoint modes.
9601
10059
  */
10060
+ #define SQLITE_CHECKPOINT_NOOP -1 /* Do no work at all */
9602
10061
  #define SQLITE_CHECKPOINT_PASSIVE 0 /* Do as much as possible w/o blocking */
9603
10062
  #define SQLITE_CHECKPOINT_FULL 1 /* Wait for writers, then checkpoint */
9604
10063
  #define SQLITE_CHECKPOINT_RESTART 2 /* Like FULL but wait for readers */
@@ -9643,7 +10102,7 @@ SQLITE_API int sqlite3_vtab_config(sqlite3*, int op, ...);
9643
10102
  ** support constraints. In this configuration (which is the default) if
9644
10103
  ** a call to the [xUpdate] method returns [SQLITE_CONSTRAINT], then the entire
9645
10104
  ** statement is rolled back as if [ON CONFLICT | OR ABORT] had been
9646
- ** specified as part of the users SQL statement, regardless of the actual
10105
+ ** specified as part of the user's SQL statement, regardless of the actual
9647
10106
  ** ON CONFLICT mode specified.
9648
10107
  **
9649
10108
  ** If X is non-zero, then the virtual table implementation guarantees
@@ -9677,7 +10136,7 @@ SQLITE_API int sqlite3_vtab_config(sqlite3*, int op, ...);
9677
10136
  ** [[SQLITE_VTAB_INNOCUOUS]]<dt>SQLITE_VTAB_INNOCUOUS</dt>
9678
10137
  ** <dd>Calls of the form
9679
10138
  ** [sqlite3_vtab_config](db,SQLITE_VTAB_INNOCUOUS) from within the
9680
- ** the [xConnect] or [xCreate] methods of a [virtual table] implementation
10139
+ ** [xConnect] or [xCreate] methods of a [virtual table] implementation
9681
10140
  ** identify that virtual table as being safe to use from within triggers
9682
10141
  ** and views. Conceptually, the SQLITE_VTAB_INNOCUOUS tag means that the
9683
10142
  ** virtual table can do no serious harm even if it is controlled by a
@@ -9805,26 +10264,47 @@ SQLITE_API const char *sqlite3_vtab_collation(sqlite3_index_info*,int);
9805
10264
  ** <li value="2"><p>
9806
10265
  ** ^(If the sqlite3_vtab_distinct() interface returns 2, that means
9807
10266
  ** that the query planner does not need the rows returned in any particular
9808
- ** order, as long as rows with the same values in all "aOrderBy" columns
9809
- ** are adjacent.)^ ^(Furthermore, only a single row for each particular
9810
- ** combination of values in the columns identified by the "aOrderBy" field
9811
- ** needs to be returned.)^ ^It is always ok for two or more rows with the same
9812
- ** values in all "aOrderBy" columns to be returned, as long as all such rows
9813
- ** are adjacent. ^The virtual table may, if it chooses, omit extra rows
9814
- ** that have the same value for all columns identified by "aOrderBy".
9815
- ** ^However omitting the extra rows is optional.
10267
+ ** order, as long as rows with the same values in all columns identified
10268
+ ** by "aOrderBy" are adjacent.)^ ^(Furthermore, when two or more rows
10269
+ ** contain the same values for all columns identified by "colUsed", all but
10270
+ ** one such row may optionally be omitted from the result.)^
10271
+ ** The virtual table is not required to omit rows that are duplicates
10272
+ ** over the "colUsed" columns, but if the virtual table can do that without
10273
+ ** too much extra effort, it could potentially help the query to run faster.
9816
10274
  ** This mode is used for a DISTINCT query.
9817
10275
  ** <li value="3"><p>
9818
- ** ^(If the sqlite3_vtab_distinct() interface returns 3, that means
9819
- ** that the query planner needs only distinct rows but it does need the
9820
- ** rows to be sorted.)^ ^The virtual table implementation is free to omit
9821
- ** rows that are identical in all aOrderBy columns, if it wants to, but
9822
- ** it is not required to omit any rows. This mode is used for queries
10276
+ ** ^(If the sqlite3_vtab_distinct() interface returns 3, that means the
10277
+ ** virtual table must return rows in the order defined by "aOrderBy" as
10278
+ ** if the sqlite3_vtab_distinct() interface had returned 0. However if
10279
+ ** two or more rows in the result have the same values for all columns
10280
+ ** identified by "colUsed", then all but one such row may optionally be
10281
+ ** omitted.)^ Like when the return value is 2, the virtual table
10282
+ ** is not required to omit rows that are duplicates over the "colUsed"
10283
+ ** columns, but if the virtual table can do that without
10284
+ ** too much extra effort, it could potentially help the query to run faster.
10285
+ ** This mode is used for queries
9823
10286
  ** that have both DISTINCT and ORDER BY clauses.
9824
10287
  ** </ol>
9825
10288
  **
10289
+ ** <p>The following table summarizes the conditions under which the
10290
+ ** virtual table is allowed to set the "orderByConsumed" flag based on
10291
+ ** the value returned by sqlite3_vtab_distinct(). This table is a
10292
+ ** restatement of the previous four paragraphs:
10293
+ **
10294
+ ** <table border=1 cellspacing=0 cellpadding=10 width="90%">
10295
+ ** <tr>
10296
+ ** <td valign="top">sqlite3_vtab_distinct() return value
10297
+ ** <td valign="top">Rows are returned in aOrderBy order
10298
+ ** <td valign="top">Rows with the same value in all aOrderBy columns are adjacent
10299
+ ** <td valign="top">Duplicates over all colUsed columns may be omitted
10300
+ ** <tr><td>0<td>yes<td>yes<td>no
10301
+ ** <tr><td>1<td>no<td>yes<td>no
10302
+ ** <tr><td>2<td>no<td>yes<td>yes
10303
+ ** <tr><td>3<td>yes<td>yes<td>yes
10304
+ ** </table>
10305
+ **
9826
10306
  ** ^For the purposes of comparing virtual table output values to see if the
9827
- ** 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
9828
10308
  ** to be the same. In other words, the comparison operator is "IS"
9829
10309
  ** (or "IS NOT DISTINCT FROM") and not "==".
9830
10310
  **
@@ -9834,7 +10314,7 @@ SQLITE_API const char *sqlite3_vtab_collation(sqlite3_index_info*,int);
9834
10314
  **
9835
10315
  ** ^A virtual table implementation is always free to return rows in any order
9836
10316
  ** it wants, as long as the "orderByConsumed" flag is not set. ^When the
9837
- ** the "orderByConsumed" flag is unset, the query planner will add extra
10317
+ ** "orderByConsumed" flag is unset, the query planner will add extra
9838
10318
  ** [bytecode] to ensure that the final results returned by the SQL query are
9839
10319
  ** ordered correctly. The use of the "orderByConsumed" flag and the
9840
10320
  ** sqlite3_vtab_distinct() interface is merely an optimization. ^Careful
@@ -9931,7 +10411,7 @@ SQLITE_API int sqlite3_vtab_in(sqlite3_index_info*, int iCons, int bHandle);
9931
10411
  ** sqlite3_vtab_in_next(X,P) should be one of the parameters to the
9932
10412
  ** xFilter method which invokes these routines, and specifically
9933
10413
  ** a parameter that was previously selected for all-at-once IN constraint
9934
- ** processing use the [sqlite3_vtab_in()] interface in the
10414
+ ** processing using the [sqlite3_vtab_in()] interface in the
9935
10415
  ** [xBestIndex|xBestIndex method]. ^(If the X parameter is not
9936
10416
  ** an xFilter argument that was selected for all-at-once IN constraint
9937
10417
  ** processing, then these routines return [SQLITE_ERROR].)^
@@ -9946,7 +10426,7 @@ SQLITE_API int sqlite3_vtab_in(sqlite3_index_info*, int iCons, int bHandle);
9946
10426
  ** &nbsp; ){
9947
10427
  ** &nbsp; // do something with pVal
9948
10428
  ** &nbsp; }
9949
- ** &nbsp; if( rc!=SQLITE_OK ){
10429
+ ** &nbsp; if( rc!=SQLITE_DONE ){
9950
10430
  ** &nbsp; // an error has occurred
9951
10431
  ** &nbsp; }
9952
10432
  ** </pre></blockquote>)^
@@ -9986,7 +10466,7 @@ SQLITE_API int sqlite3_vtab_in_next(sqlite3_value *pVal, sqlite3_value **ppOut);
9986
10466
  ** and only if *V is set to a value. ^The sqlite3_vtab_rhs_value(P,J,V)
9987
10467
  ** inteface returns SQLITE_NOTFOUND if the right-hand side of the J-th
9988
10468
  ** constraint is not available. ^The sqlite3_vtab_rhs_value() interface
9989
- ** can return an result code other than SQLITE_OK or SQLITE_NOTFOUND if
10469
+ ** can return a result code other than SQLITE_OK or SQLITE_NOTFOUND if
9990
10470
  ** something goes wrong.
9991
10471
  **
9992
10472
  ** The sqlite3_vtab_rhs_value() interface is usually only successful if
@@ -10014,8 +10494,8 @@ SQLITE_API int sqlite3_vtab_rhs_value(sqlite3_index_info*, int, sqlite3_value **
10014
10494
  ** KEYWORDS: {conflict resolution mode}
10015
10495
  **
10016
10496
  ** These constants are returned by [sqlite3_vtab_on_conflict()] to
10017
- ** inform a [virtual table] implementation what the [ON CONFLICT] mode
10018
- ** is for the SQL statement being evaluated.
10497
+ ** inform a [virtual table] implementation of the [ON CONFLICT] mode
10498
+ ** for the SQL statement being evaluated.
10019
10499
  **
10020
10500
  ** Note that the [SQLITE_IGNORE] constant is also used as a potential
10021
10501
  ** return value from the [sqlite3_set_authorizer()] callback and that
@@ -10055,39 +10535,39 @@ SQLITE_API int sqlite3_vtab_rhs_value(sqlite3_index_info*, int, sqlite3_value **
10055
10535
  ** [[SQLITE_SCANSTAT_EST]] <dt>SQLITE_SCANSTAT_EST</dt>
10056
10536
  ** <dd>^The "double" variable pointed to by the V parameter will be set to the
10057
10537
  ** query planner's estimate for the average number of rows output from each
10058
- ** iteration of the X-th loop. If the query planner's estimates was accurate,
10538
+ ** iteration of the X-th loop. If the query planner's estimate was accurate,
10059
10539
  ** then this value will approximate the quotient NVISIT/NLOOP and the
10060
10540
  ** product of this value for all prior loops with the same SELECTID will
10061
- ** be the NLOOP value for the current loop.
10541
+ ** be the NLOOP value for the current loop.</dd>
10062
10542
  **
10063
10543
  ** [[SQLITE_SCANSTAT_NAME]] <dt>SQLITE_SCANSTAT_NAME</dt>
10064
10544
  ** <dd>^The "const char *" variable pointed to by the V parameter will be set
10065
10545
  ** to a zero-terminated UTF-8 string containing the name of the index or table
10066
- ** used for the X-th loop.
10546
+ ** used for the X-th loop.</dd>
10067
10547
  **
10068
10548
  ** [[SQLITE_SCANSTAT_EXPLAIN]] <dt>SQLITE_SCANSTAT_EXPLAIN</dt>
10069
10549
  ** <dd>^The "const char *" variable pointed to by the V parameter will be set
10070
10550
  ** to a zero-terminated UTF-8 string containing the [EXPLAIN QUERY PLAN]
10071
- ** description for the X-th loop.
10551
+ ** description for the X-th loop.</dd>
10072
10552
  **
10073
10553
  ** [[SQLITE_SCANSTAT_SELECTID]] <dt>SQLITE_SCANSTAT_SELECTID</dt>
10074
10554
  ** <dd>^The "int" variable pointed to by the V parameter will be set to the
10075
10555
  ** id for the X-th query plan element. The id value is unique within the
10076
10556
  ** statement. The select-id is the same value as is output in the first
10077
- ** column of an [EXPLAIN QUERY PLAN] query.
10557
+ ** column of an [EXPLAIN QUERY PLAN] query.</dd>
10078
10558
  **
10079
10559
  ** [[SQLITE_SCANSTAT_PARENTID]] <dt>SQLITE_SCANSTAT_PARENTID</dt>
10080
10560
  ** <dd>The "int" variable pointed to by the V parameter will be set to the
10081
- ** the id of the parent of the current query element, if applicable, or
10561
+ ** id of the parent of the current query element, if applicable, or
10082
10562
  ** to zero if the query element has no parent. This is the same value as
10083
- ** returned in the second column of an [EXPLAIN QUERY PLAN] query.
10563
+ ** returned in the second column of an [EXPLAIN QUERY PLAN] query.</dd>
10084
10564
  **
10085
10565
  ** [[SQLITE_SCANSTAT_NCYCLE]] <dt>SQLITE_SCANSTAT_NCYCLE</dt>
10086
10566
  ** <dd>The sqlite3_int64 output value is set to the number of cycles,
10087
10567
  ** according to the processor time-stamp counter, that elapsed while the
10088
10568
  ** query element was being processed. This value is not available for
10089
10569
  ** all query elements - if it is unavailable the output variable is
10090
- ** set to -1.
10570
+ ** set to -1.</dd>
10091
10571
  ** </dl>
10092
10572
  */
10093
10573
  #define SQLITE_SCANSTAT_NLOOP 0
@@ -10128,8 +10608,8 @@ SQLITE_API int sqlite3_vtab_rhs_value(sqlite3_index_info*, int, sqlite3_value **
10128
10608
  ** sqlite3_stmt_scanstatus_v2() with a zeroed flags parameter.
10129
10609
  **
10130
10610
  ** Parameter "idx" identifies the specific query element to retrieve statistics
10131
- ** for. Query elements are numbered starting from zero. A value of -1 may be
10132
- ** to query for statistics regarding the entire query. ^If idx is out of range
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
10133
10613
  ** - less than -1 or greater than or equal to the total number of query
10134
10614
  ** elements used to implement the statement - a non-zero value is returned and
10135
10615
  ** the variable that pOut points to is unchanged.
@@ -10172,7 +10652,7 @@ SQLITE_API void sqlite3_stmt_scanstatus_reset(sqlite3_stmt*);
10172
10652
  ** METHOD: sqlite3
10173
10653
  **
10174
10654
  ** ^If a write-transaction is open on [database connection] D when the
10175
- ** [sqlite3_db_cacheflush(D)] interface invoked, any dirty
10655
+ ** [sqlite3_db_cacheflush(D)] interface is invoked, any dirty
10176
10656
  ** pages in the pager-cache that are not currently in use are written out
10177
10657
  ** to disk. A dirty page may be in use if a database cursor created by an
10178
10658
  ** active SQL statement is reading from it, or if it is page 1 of a database
@@ -10286,8 +10766,8 @@ SQLITE_API int sqlite3_db_cacheflush(sqlite3*);
10286
10766
  ** triggers; and so forth.
10287
10767
  **
10288
10768
  ** When the [sqlite3_blob_write()] API is used to update a blob column,
10289
- ** the pre-update hook is invoked with SQLITE_DELETE. This is because the
10290
- ** in this case the new values are not available. In this case, when a
10769
+ ** the pre-update hook is invoked with SQLITE_DELETE, because
10770
+ ** the new values are not yet available. In this case, when a
10291
10771
  ** callback made with op==SQLITE_DELETE is actually a write using the
10292
10772
  ** sqlite3_blob_write() API, the [sqlite3_preupdate_blobwrite()] returns
10293
10773
  ** the index of the column being written. In other cases, where the
@@ -10366,6 +10846,14 @@ typedef struct sqlite3_snapshot {
10366
10846
  ** If there is not already a read-transaction open on schema S when
10367
10847
  ** this function is called, one is opened automatically.
10368
10848
  **
10849
+ ** If a read-transaction is opened by this function, then it is guaranteed
10850
+ ** that the returned snapshot object may not be invalidated by a database
10851
+ ** writer or checkpointer until after the read-transaction is closed. This
10852
+ ** is not guaranteed if a read-transaction is already open when this
10853
+ ** function is called. In that case, any subsequent write or checkpoint
10854
+ ** operation on the database may invalidate the returned snapshot handle,
10855
+ ** even while the read-transaction remains open.
10856
+ **
10369
10857
  ** The following must be true for this function to succeed. If any of
10370
10858
  ** the following statements are false when sqlite3_snapshot_get() is
10371
10859
  ** called, SQLITE_ERROR is returned. The final value of *P is undefined
@@ -10397,7 +10885,7 @@ typedef struct sqlite3_snapshot {
10397
10885
  ** The [sqlite3_snapshot_get()] interface is only available when the
10398
10886
  ** [SQLITE_ENABLE_SNAPSHOT] compile-time option is used.
10399
10887
  */
10400
- SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_get(
10888
+ SQLITE_API int sqlite3_snapshot_get(
10401
10889
  sqlite3 *db,
10402
10890
  const char *zSchema,
10403
10891
  sqlite3_snapshot **ppSnapshot
@@ -10446,7 +10934,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_get(
10446
10934
  ** The [sqlite3_snapshot_open()] interface is only available when the
10447
10935
  ** [SQLITE_ENABLE_SNAPSHOT] compile-time option is used.
10448
10936
  */
10449
- SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_open(
10937
+ SQLITE_API int sqlite3_snapshot_open(
10450
10938
  sqlite3 *db,
10451
10939
  const char *zSchema,
10452
10940
  sqlite3_snapshot *pSnapshot
@@ -10463,7 +10951,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_open(
10463
10951
  ** The [sqlite3_snapshot_free()] interface is only available when the
10464
10952
  ** [SQLITE_ENABLE_SNAPSHOT] compile-time option is used.
10465
10953
  */
10466
- SQLITE_API SQLITE_EXPERIMENTAL void sqlite3_snapshot_free(sqlite3_snapshot*);
10954
+ SQLITE_API void sqlite3_snapshot_free(sqlite3_snapshot*);
10467
10955
 
10468
10956
  /*
10469
10957
  ** CAPI3REF: Compare the ages of two snapshot handles.
@@ -10490,7 +10978,7 @@ SQLITE_API SQLITE_EXPERIMENTAL void sqlite3_snapshot_free(sqlite3_snapshot*);
10490
10978
  ** This interface is only available if SQLite is compiled with the
10491
10979
  ** [SQLITE_ENABLE_SNAPSHOT] option.
10492
10980
  */
10493
- SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_cmp(
10981
+ SQLITE_API int sqlite3_snapshot_cmp(
10494
10982
  sqlite3_snapshot *p1,
10495
10983
  sqlite3_snapshot *p2
10496
10984
  );
@@ -10518,20 +11006,21 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_cmp(
10518
11006
  ** This interface is only available if SQLite is compiled with the
10519
11007
  ** [SQLITE_ENABLE_SNAPSHOT] option.
10520
11008
  */
10521
- SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_recover(sqlite3 *db, const char *zDb);
11009
+ SQLITE_API int sqlite3_snapshot_recover(sqlite3 *db, const char *zDb);
10522
11010
 
10523
11011
  /*
10524
11012
  ** CAPI3REF: Serialize a database
10525
11013
  **
10526
- ** The sqlite3_serialize(D,S,P,F) interface returns a pointer to memory
10527
- ** that is a serialization of the S database on [database connection] D.
11014
+ ** The sqlite3_serialize(D,S,P,F) interface returns a pointer to
11015
+ ** memory that is a serialization of the S database on
11016
+ ** [database connection] D. If S is a NULL pointer, the main database is used.
10528
11017
  ** If P is not a NULL pointer, then the size of the database in bytes
10529
11018
  ** is written into *P.
10530
11019
  **
10531
11020
  ** For an ordinary on-disk database file, the serialization is just a
10532
11021
  ** copy of the disk file. For an in-memory database or a "TEMP" database,
10533
11022
  ** the serialization is the same sequence of bytes which would be written
10534
- ** to disk if that database where backed up to disk.
11023
+ ** to disk if that database were backed up to disk.
10535
11024
  **
10536
11025
  ** The usual case is that sqlite3_serialize() copies the serialization of
10537
11026
  ** the database into memory obtained from [sqlite3_malloc64()] and returns
@@ -10540,7 +11029,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_recover(sqlite3 *db, const c
10540
11029
  ** contains the SQLITE_SERIALIZE_NOCOPY bit, then no memory allocations
10541
11030
  ** are made, and the sqlite3_serialize() function will return a pointer
10542
11031
  ** to the contiguous memory representation of the database that SQLite
10543
- ** is currently using for that database, or NULL if the no such contiguous
11032
+ ** is currently using for that database, or NULL if no such contiguous
10544
11033
  ** memory representation of the database exists. A contiguous memory
10545
11034
  ** representation of the database will usually only exist if there has
10546
11035
  ** been a prior call to [sqlite3_deserialize(D,S,...)] with the same
@@ -10549,6 +11038,13 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_recover(sqlite3 *db, const c
10549
11038
  ** SQLITE_SERIALIZE_NOCOPY bit is set but no contiguous copy
10550
11039
  ** of the database exists.
10551
11040
  **
11041
+ ** After the call, if the SQLITE_SERIALIZE_NOCOPY bit had been set,
11042
+ ** the returned buffer content will remain accessible and unchanged
11043
+ ** until either the next write operation on the connection or when
11044
+ ** the connection is closed, and applications must not modify the
11045
+ ** buffer. If the bit had been clear, the returned buffer will not
11046
+ ** be accessed by SQLite after the call.
11047
+ **
10552
11048
  ** A call to sqlite3_serialize(D,S,P,F) might return NULL even if the
10553
11049
  ** SQLITE_SERIALIZE_NOCOPY bit is omitted from argument F if a memory
10554
11050
  ** allocation error occurs.
@@ -10584,12 +11080,13 @@ SQLITE_API unsigned char *sqlite3_serialize(
10584
11080
  **
10585
11081
  ** The sqlite3_deserialize(D,S,P,N,M,F) interface causes the
10586
11082
  ** [database connection] D to disconnect from database S and then
10587
- ** reopen S as an in-memory database based on the serialization contained
10588
- ** in P. The serialized database P is N bytes in size. M is the size of
10589
- ** the buffer P, which might be larger than N. If M is larger than N, and
10590
- ** the SQLITE_DESERIALIZE_READONLY bit is not set in F, then SQLite is
10591
- ** permitted to add content to the in-memory database as long as the total
10592
- ** size does not exceed M bytes.
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.
10593
11090
  **
10594
11091
  ** If the SQLITE_DESERIALIZE_FREEONCLOSE bit is set in F, then SQLite will
10595
11092
  ** invoke sqlite3_free() on the serialization buffer when the database
@@ -10597,14 +11094,24 @@ SQLITE_API unsigned char *sqlite3_serialize(
10597
11094
  ** SQLite will try to increase the buffer size using sqlite3_realloc64()
10598
11095
  ** if writes on the database cause it to grow larger than M bytes.
10599
11096
  **
11097
+ ** Applications must not modify the buffer P or invalidate it before
11098
+ ** the database connection D is closed.
11099
+ **
10600
11100
  ** The sqlite3_deserialize() interface will fail with SQLITE_BUSY if the
10601
11101
  ** database is currently in a read transaction or is involved in a backup
10602
11102
  ** operation.
10603
11103
  **
10604
- ** It is not possible to deserialized into the TEMP database. If the
11104
+ ** It is not possible to deserialize into the TEMP database. If the
10605
11105
  ** S argument to sqlite3_deserialize(D,S,P,N,M,F) is "temp" then the
10606
11106
  ** function returns SQLITE_ERROR.
10607
11107
  **
11108
+ ** The deserialized database should not be in [WAL mode]. If the database
11109
+ ** is in WAL mode, then any attempt to use the database file will result
11110
+ ** in an [SQLITE_CANTOPEN] error. The application can set the
11111
+ ** [file format version numbers] (bytes 18 and 19) of the input database P
11112
+ ** to 0x01 prior to invoking sqlite3_deserialize(D,S,P,N,M,F) to force the
11113
+ ** database file into rollback mode and work around this limitation.
11114
+ **
10608
11115
  ** If sqlite3_deserialize(D,S,P,N,M,F) fails for any reason and if the
10609
11116
  ** SQLITE_DESERIALIZE_FREEONCLOSE bit is set in argument F, then
10610
11117
  ** [sqlite3_free()] is invoked on argument P prior to returning.
@@ -10616,7 +11123,7 @@ SQLITE_API int sqlite3_deserialize(
10616
11123
  sqlite3 *db, /* The database connection */
10617
11124
  const char *zSchema, /* Which DB to reopen with the deserialization */
10618
11125
  unsigned char *pData, /* The serialized database content */
10619
- sqlite3_int64 szDb, /* Number bytes in the deserialization */
11126
+ sqlite3_int64 szDb, /* Number of bytes in the deserialization */
10620
11127
  sqlite3_int64 szBuf, /* Total size of buffer pData[] */
10621
11128
  unsigned mFlags /* Zero or more SQLITE_DESERIALIZE_* flags */
10622
11129
  );
@@ -10624,7 +11131,7 @@ SQLITE_API int sqlite3_deserialize(
10624
11131
  /*
10625
11132
  ** CAPI3REF: Flags for sqlite3_deserialize()
10626
11133
  **
10627
- ** 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
10628
11135
  ** the [sqlite3_deserialize(D,S,P,N,M,F)] interface.
10629
11136
  **
10630
11137
  ** The SQLITE_DESERIALIZE_FREEONCLOSE means that the database serialization
@@ -10646,6 +11153,54 @@ SQLITE_API int sqlite3_deserialize(
10646
11153
  #define SQLITE_DESERIALIZE_RESIZEABLE 2 /* Resize using sqlite3_realloc64() */
10647
11154
  #define SQLITE_DESERIALIZE_READONLY 4 /* Database is read-only */
10648
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
+
10649
11204
  /*
10650
11205
  ** Undo the hack that converts floating point types to integer for
10651
11206
  ** builds on processors without floating point support.
@@ -10657,8 +11212,6 @@ SQLITE_API int sqlite3_deserialize(
10657
11212
  #if defined(__wasi__)
10658
11213
  # undef SQLITE_WASI
10659
11214
  # define SQLITE_WASI 1
10660
- # undef SQLITE_OMIT_WAL
10661
- # define SQLITE_OMIT_WAL 1/* because it requires shared memory APIs */
10662
11215
  # ifndef SQLITE_OMIT_LOAD_EXTENSION
10663
11216
  # define SQLITE_OMIT_LOAD_EXTENSION
10664
11217
  # endif
@@ -10670,7 +11223,7 @@ SQLITE_API int sqlite3_deserialize(
10670
11223
  #ifdef __cplusplus
10671
11224
  } /* End of the 'extern "C"' block */
10672
11225
  #endif
10673
- #endif /* SQLITE3_H */
11226
+ /* #endif for SQLITE3_H will be added by mksqlite3.tcl */
10674
11227
 
10675
11228
  /******** Begin file sqlite3rtree.h *********/
10676
11229
  /*
@@ -11151,9 +11704,10 @@ SQLITE_API void sqlite3session_table_filter(
11151
11704
  ** is inserted while a session object is enabled, then later deleted while
11152
11705
  ** the same session object is disabled, no INSERT record will appear in the
11153
11706
  ** changeset, even though the delete took place while the session was disabled.
11154
- ** Or, if one field of a row is updated while a session is disabled, and
11155
- ** another field of the same row is updated while the session is enabled, the
11156
- ** resulting changeset will contain an UPDATE change that updates both fields.
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.
11157
11711
  */
11158
11712
  SQLITE_API int sqlite3session_changeset(
11159
11713
  sqlite3_session *pSession, /* Session object */
@@ -11225,8 +11779,9 @@ SQLITE_API sqlite3_int64 sqlite3session_changeset_size(sqlite3_session *pSession
11225
11779
  ** database zFrom the contents of the two compatible tables would be
11226
11780
  ** identical.
11227
11781
  **
11228
- ** It an error if database zFrom does not exist or does not contain the
11229
- ** required compatible table.
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.
11230
11785
  **
11231
11786
  ** If the operation is successful, SQLITE_OK is returned. Otherwise, an SQLite
11232
11787
  ** error code. In this case, if argument pzErrMsg is not NULL, *pzErrMsg
@@ -11361,7 +11916,7 @@ SQLITE_API int sqlite3changeset_start_v2(
11361
11916
  ** The following flags may passed via the 4th parameter to
11362
11917
  ** [sqlite3changeset_start_v2] and [sqlite3changeset_start_v2_strm]:
11363
11918
  **
11364
- ** <dt>SQLITE_CHANGESETAPPLY_INVERT <dd>
11919
+ ** <dt>SQLITE_CHANGESETSTART_INVERT <dd>
11365
11920
  ** Invert the changeset while iterating through it. This is equivalent to
11366
11921
  ** inverting a changeset using sqlite3changeset_invert() before applying it.
11367
11922
  ** It is an error to specify this flag with a patchset.
@@ -11676,7 +12231,6 @@ SQLITE_API int sqlite3changeset_concat(
11676
12231
  void **ppOut /* OUT: Buffer containing output changeset */
11677
12232
  );
11678
12233
 
11679
-
11680
12234
  /*
11681
12235
  ** CAPI3REF: Changegroup Handle
11682
12236
  **
@@ -11723,6 +12277,38 @@ typedef struct sqlite3_changegroup sqlite3_changegroup;
11723
12277
  */
11724
12278
  SQLITE_API int sqlite3changegroup_new(sqlite3_changegroup **pp);
11725
12279
 
12280
+ /*
12281
+ ** CAPI3REF: Add a Schema to a Changegroup
12282
+ ** METHOD: sqlite3_changegroup_schema
12283
+ **
12284
+ ** This method may be used to optionally enforce the rule that the changesets
12285
+ ** added to the changegroup handle must match the schema of database zDb
12286
+ ** ("main", "temp", or the name of an attached database). If
12287
+ ** sqlite3changegroup_add() is called to add a changeset that is not compatible
12288
+ ** with the configured schema, SQLITE_SCHEMA is returned and the changegroup
12289
+ ** object is left in an undefined state.
12290
+ **
12291
+ ** A changeset schema is considered compatible with the database schema in
12292
+ ** the same way as for sqlite3changeset_apply(). Specifically, for each
12293
+ ** table in the changeset, there exists a database table with:
12294
+ **
12295
+ ** <ul>
12296
+ ** <li> The name identified by the changeset, and
12297
+ ** <li> at least as many columns as recorded in the changeset, and
12298
+ ** <li> the primary key columns in the same position as recorded in
12299
+ ** the changeset.
12300
+ ** </ul>
12301
+ **
12302
+ ** The output of the changegroup object always has the same schema as the
12303
+ ** database nominated using this function. In cases where changesets passed
12304
+ ** to sqlite3changegroup_add() have fewer columns than the corresponding table
12305
+ ** in the database schema, these are filled in using the default column
12306
+ ** values from the database schema. This makes it possible to combined
12307
+ ** changesets that have different numbers of columns for a single table
12308
+ ** within a changegroup, provided that they are otherwise compatible.
12309
+ */
12310
+ SQLITE_API int sqlite3changegroup_schema(sqlite3_changegroup*, sqlite3*, const char *zDb);
12311
+
11726
12312
  /*
11727
12313
  ** CAPI3REF: Add A Changeset To A Changegroup
11728
12314
  ** METHOD: sqlite3_changegroup
@@ -11791,16 +12377,45 @@ SQLITE_API int sqlite3changegroup_new(sqlite3_changegroup **pp);
11791
12377
  ** If the new changeset contains changes to a table that is already present
11792
12378
  ** in the changegroup, then the number of columns and the position of the
11793
12379
  ** primary key columns for the table must be consistent. If this is not the
11794
- ** case, this function fails with SQLITE_SCHEMA. If the input changeset
11795
- ** appears to be corrupt and the corruption is detected, SQLITE_CORRUPT is
11796
- ** returned. Or, if an out-of-memory condition occurs during processing, this
11797
- ** function returns SQLITE_NOMEM. In all cases, if an error occurs the state
11798
- ** of the final contents of the changegroup is undefined.
12380
+ ** case, this function fails with SQLITE_SCHEMA. Except, if the changegroup
12381
+ ** object has been configured with a database schema using the
12382
+ ** sqlite3changegroup_schema() API, then it is possible to combine changesets
12383
+ ** with different numbers of columns for a single table, provided that
12384
+ ** they are otherwise compatible.
11799
12385
  **
11800
- ** If no error occurs, SQLITE_OK is returned.
12386
+ ** If the input changeset appears to be corrupt and the corruption is
12387
+ ** detected, SQLITE_CORRUPT is returned. Or, if an out-of-memory condition
12388
+ ** occurs during processing, this function returns SQLITE_NOMEM.
12389
+ **
12390
+ ** In all cases, if an error occurs the state of the final contents of the
12391
+ ** changegroup is undefined. If no error occurs, SQLITE_OK is returned.
11801
12392
  */
11802
12393
  SQLITE_API int sqlite3changegroup_add(sqlite3_changegroup*, int nData, void *pData);
11803
12394
 
12395
+ /*
12396
+ ** CAPI3REF: Add A Single Change To A Changegroup
12397
+ ** METHOD: sqlite3_changegroup
12398
+ **
12399
+ ** This function adds the single change currently indicated by the iterator
12400
+ ** passed as the second argument to the changegroup object. The rules for
12401
+ ** adding the change are just as described for [sqlite3changegroup_add()].
12402
+ **
12403
+ ** If the change is successfully added to the changegroup, SQLITE_OK is
12404
+ ** returned. Otherwise, an SQLite error code is returned.
12405
+ **
12406
+ ** The iterator must point to a valid entry when this function is called.
12407
+ ** If it does not, SQLITE_ERROR is returned and no change is added to the
12408
+ ** changegroup. Additionally, the iterator must not have been opened with
12409
+ ** the SQLITE_CHANGESETAPPLY_INVERT flag. In this case SQLITE_ERROR is also
12410
+ ** returned.
12411
+ */
12412
+ SQLITE_API int sqlite3changegroup_add_change(
12413
+ sqlite3_changegroup*,
12414
+ sqlite3_changeset_iter*
12415
+ );
12416
+
12417
+
12418
+
11804
12419
  /*
11805
12420
  ** CAPI3REF: Obtain A Composite Changeset From A Changegroup
11806
12421
  ** METHOD: sqlite3_changegroup
@@ -11845,14 +12460,32 @@ SQLITE_API void sqlite3changegroup_delete(sqlite3_changegroup*);
11845
12460
  ** update the "main" database attached to handle db with the changes found in
11846
12461
  ** the changeset passed via the second and third arguments.
11847
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
+ **
11848
12472
  ** The fourth argument (xFilter) passed to these functions is the "filter
11849
- ** callback". If it is not NULL, then for each table affected by at least one
11850
- ** change in the changeset, the filter callback is invoked with
11851
- ** the table name as the second argument, and a copy of the context pointer
11852
- ** passed as the sixth argument as the first. If the "filter callback"
11853
- ** returns zero, then no attempt is made to apply any changes to the table.
11854
- ** Otherwise, if the return value is non-zero or the xFilter argument to
11855
- ** is NULL, all changes related to the table are attempted.
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.
11856
12489
  **
11857
12490
  ** For each table that is not excluded by the filter callback, this function
11858
12491
  ** tests that the target database contains a compatible table. A table is
@@ -11873,11 +12506,11 @@ SQLITE_API void sqlite3changegroup_delete(sqlite3_changegroup*);
11873
12506
  ** one such warning is issued for each table in the changeset.
11874
12507
  **
11875
12508
  ** For each change for which there is a compatible table, an attempt is made
11876
- ** to modify the table contents according to the UPDATE, INSERT or DELETE
11877
- ** change. If a change cannot be applied cleanly, the conflict handler
11878
- ** function passed as the fifth argument to sqlite3changeset_apply() may be
11879
- ** invoked. A description of exactly when the conflict handler is invoked for
11880
- ** 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.
11881
12514
  **
11882
12515
  ** Unlike the xFilter argument, xConflict may not be passed NULL. The results
11883
12516
  ** of passing anything other than a valid function pointer as the xConflict
@@ -11973,12 +12606,6 @@ SQLITE_API void sqlite3changegroup_delete(sqlite3_changegroup*);
11973
12606
  ** This can be used to further customize the application's conflict
11974
12607
  ** resolution strategy.
11975
12608
  **
11976
- ** All changes made by these functions are enclosed in a savepoint transaction.
11977
- ** If any other error (aside from a constraint failure when attempting to
11978
- ** write to the target database) occurs, then the savepoint transaction is
11979
- ** rolled back, restoring the target database to its original state, and an
11980
- ** SQLite error code returned.
11981
- **
11982
12609
  ** If the output parameters (ppRebase) and (pnRebase) are non-NULL and
11983
12610
  ** the input is a changeset (not a patchset), then sqlite3changeset_apply_v2()
11984
12611
  ** may set (*ppRebase) to point to a "rebase" that may be used with the
@@ -12028,6 +12655,23 @@ SQLITE_API int sqlite3changeset_apply_v2(
12028
12655
  void **ppRebase, int *pnRebase, /* OUT: Rebase data */
12029
12656
  int flags /* SESSION_CHANGESETAPPLY_* flags */
12030
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
+ );
12031
12675
 
12032
12676
  /*
12033
12677
  ** CAPI3REF: Flags for sqlite3changeset_apply_v2
@@ -12062,10 +12706,17 @@ SQLITE_API int sqlite3changeset_apply_v2(
12062
12706
  ** <li>an insert change if all fields of the conflicting row match
12063
12707
  ** the row being inserted.
12064
12708
  ** </ul>
12709
+ **
12710
+ ** <dt>SQLITE_CHANGESETAPPLY_FKNOACTION <dd>
12711
+ ** If this flag it set, then all foreign key constraints in the target
12712
+ ** database behave as if they were declared with "ON UPDATE NO ACTION ON
12713
+ ** DELETE NO ACTION", even if they are actually CASCADE, RESTRICT, SET NULL
12714
+ ** or SET DEFAULT.
12065
12715
  */
12066
12716
  #define SQLITE_CHANGESETAPPLY_NOSAVEPOINT 0x0001
12067
12717
  #define SQLITE_CHANGESETAPPLY_INVERT 0x0002
12068
12718
  #define SQLITE_CHANGESETAPPLY_IGNORENOOP 0x0004
12719
+ #define SQLITE_CHANGESETAPPLY_FKNOACTION 0x0008
12069
12720
 
12070
12721
  /*
12071
12722
  ** CAPI3REF: Constants Passed To The Conflict Handler
@@ -12440,6 +13091,23 @@ SQLITE_API int sqlite3changeset_apply_v2_strm(
12440
13091
  void **ppRebase, int *pnRebase,
12441
13092
  int flags
12442
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
+ );
12443
13111
  SQLITE_API int sqlite3changeset_concat_strm(
12444
13112
  int (*xInputA)(void *pIn, void *pData, int *pnData),
12445
13113
  void *pInA,
@@ -12598,8 +13266,8 @@ struct Fts5PhraseIter {
12598
13266
  ** EXTENSION API FUNCTIONS
12599
13267
  **
12600
13268
  ** xUserData(pFts):
12601
- ** Return a copy of the context pointer the extension function was
12602
- ** registered with.
13269
+ ** Return a copy of the pUserData pointer passed to the xCreateFunction()
13270
+ ** API when the extension function was registered.
12603
13271
  **
12604
13272
  ** xColumnTotalSize(pFts, iCol, pnToken):
12605
13273
  ** If parameter iCol is less than zero, set output variable *pnToken
@@ -12631,8 +13299,11 @@ struct Fts5PhraseIter {
12631
13299
  ** created with the "columnsize=0" option.
12632
13300
  **
12633
13301
  ** xColumnText:
12634
- ** This function attempts to retrieve the text of column iCol of the
12635
- ** current document. If successful, (*pz) is set to point to a buffer
13302
+ ** If parameter iCol is less than zero, or greater than or equal to the
13303
+ ** number of columns in the table, SQLITE_RANGE is returned.
13304
+ **
13305
+ ** Otherwise, this function attempts to retrieve the text of column iCol of
13306
+ ** the current document. If successful, (*pz) is set to point to a buffer
12636
13307
  ** containing the text in utf-8 encoding, (*pn) is set to the size in bytes
12637
13308
  ** (not characters) of the buffer and SQLITE_OK is returned. Otherwise,
12638
13309
  ** if an error occurs, an SQLite error code is returned and the final values
@@ -12642,8 +13313,10 @@ struct Fts5PhraseIter {
12642
13313
  ** Returns the number of phrases in the current query expression.
12643
13314
  **
12644
13315
  ** xPhraseSize:
12645
- ** Returns the number of tokens in phrase iPhrase of the query. Phrases
12646
- ** are numbered starting from zero.
13316
+ ** If parameter iCol is less than zero, or greater than or equal to the
13317
+ ** number of phrases in the current query, as returned by xPhraseCount,
13318
+ ** 0 is returned. Otherwise, this function returns the number of tokens in
13319
+ ** phrase iPhrase of the query. Phrases are numbered starting from zero.
12647
13320
  **
12648
13321
  ** xInstCount:
12649
13322
  ** Set *pnInst to the total number of occurrences of all phrases within
@@ -12659,12 +13332,13 @@ struct Fts5PhraseIter {
12659
13332
  ** Query for the details of phrase match iIdx within the current row.
12660
13333
  ** Phrase matches are numbered starting from zero, so the iIdx argument
12661
13334
  ** should be greater than or equal to zero and smaller than the value
12662
- ** output by xInstCount().
13335
+ ** output by xInstCount(). If iIdx is less than zero or greater than
13336
+ ** or equal to the value returned by xInstCount(), SQLITE_RANGE is returned.
12663
13337
  **
12664
- ** Usually, output parameter *piPhrase is set to the phrase number, *piCol
13338
+ ** Otherwise, output parameter *piPhrase is set to the phrase number, *piCol
12665
13339
  ** to the column in which it occurs and *piOff the token offset of the
12666
- ** first token of the phrase. Returns SQLITE_OK if successful, or an error
12667
- ** code (i.e. SQLITE_NOMEM) if an error occurs.
13340
+ ** first token of the phrase. SQLITE_OK is returned if successful, or an
13341
+ ** error code (i.e. SQLITE_NOMEM) if an error occurs.
12668
13342
  **
12669
13343
  ** This API can be quite slow if used with an FTS5 table created with the
12670
13344
  ** "detail=none" or "detail=column" option.
@@ -12690,6 +13364,10 @@ struct Fts5PhraseIter {
12690
13364
  ** Invoking Api.xUserData() returns a copy of the pointer passed as
12691
13365
  ** the third argument to pUserData.
12692
13366
  **
13367
+ ** If parameter iPhrase is less than zero, or greater than or equal to
13368
+ ** the number of phrases in the query, as returned by xPhraseCount(),
13369
+ ** this function returns SQLITE_RANGE.
13370
+ **
12693
13371
  ** If the callback function returns any value other than SQLITE_OK, the
12694
13372
  ** query is abandoned and the xQueryPhrase function returns immediately.
12695
13373
  ** If the returned value is SQLITE_DONE, xQueryPhrase returns SQLITE_OK.
@@ -12771,6 +13449,10 @@ struct Fts5PhraseIter {
12771
13449
  ** (i.e. if it is a contentless table), then this API always iterates
12772
13450
  ** through an empty set (all calls to xPhraseFirst() set iCol to -1).
12773
13451
  **
13452
+ ** In all cases, matches are visited in (column ASC, offset ASC) order.
13453
+ ** i.e. all those in column 0, sorted by offset, followed by those in
13454
+ ** column 1, etc.
13455
+ **
12774
13456
  ** xPhraseNext()
12775
13457
  ** See xPhraseFirst above.
12776
13458
  **
@@ -12804,9 +13486,80 @@ struct Fts5PhraseIter {
12804
13486
  **
12805
13487
  ** xPhraseNextColumn()
12806
13488
  ** See xPhraseFirstColumn above.
13489
+ **
13490
+ ** xQueryToken(pFts5, iPhrase, iToken, ppToken, pnToken)
13491
+ ** This is used to access token iToken of phrase iPhrase of the current
13492
+ ** query. Before returning, output parameter *ppToken is set to point
13493
+ ** to a buffer containing the requested token, and *pnToken to the
13494
+ ** size of this buffer in bytes.
13495
+ **
13496
+ ** If iPhrase or iToken are less than zero, or if iPhrase is greater than
13497
+ ** or equal to the number of phrases in the query as reported by
13498
+ ** xPhraseCount(), or if iToken is equal to or greater than the number of
13499
+ ** tokens in the phrase, SQLITE_RANGE is returned and *ppToken and *pnToken
13500
+ are both zeroed.
13501
+ **
13502
+ ** The output text is not a copy of the query text that specified the
13503
+ ** token. It is the output of the tokenizer module. For tokendata=1
13504
+ ** tables, this includes any embedded 0x00 and trailing data.
13505
+ **
13506
+ ** xInstToken(pFts5, iIdx, iToken, ppToken, pnToken)
13507
+ ** This is used to access token iToken of phrase hit iIdx within the
13508
+ ** current row. If iIdx is less than zero or greater than or equal to the
13509
+ ** value returned by xInstCount(), SQLITE_RANGE is returned. Otherwise,
13510
+ ** output variable (*ppToken) is set to point to a buffer containing the
13511
+ ** matching document token, and (*pnToken) to the size of that buffer in
13512
+ ** bytes.
13513
+ **
13514
+ ** The output text is not a copy of the document text that was tokenized.
13515
+ ** It is the output of the tokenizer module. For tokendata=1 tables, this
13516
+ ** includes any embedded 0x00 and trailing data.
13517
+ **
13518
+ ** This API may be slow in some cases if the token identified by parameters
13519
+ ** iIdx and iToken matched a prefix token in the query. In most cases, the
13520
+ ** first call to this API for each prefix token in the query is forced
13521
+ ** to scan the portion of the full-text index that matches the prefix
13522
+ ** token to collect the extra data required by this API. If the prefix
13523
+ ** token matches a large number of token instances in the document set,
13524
+ ** this may be a performance problem.
13525
+ **
13526
+ ** If the user knows in advance that a query may use this API for a
13527
+ ** prefix token, FTS5 may be configured to collect all required data as part
13528
+ ** of the initial querying of the full-text index, avoiding the second scan
13529
+ ** entirely. This also causes prefix queries that do not use this API to
13530
+ ** run more slowly and use more memory. FTS5 may be configured in this way
13531
+ ** either on a per-table basis using the [FTS5 insttoken | 'insttoken']
13532
+ ** option, or on a per-query basis using the
13533
+ ** [fts5_insttoken | fts5_insttoken()] user function.
13534
+ **
13535
+ ** This API can be quite slow if used with an FTS5 table created with the
13536
+ ** "detail=none" or "detail=column" option.
13537
+ **
13538
+ ** xColumnLocale(pFts5, iIdx, pzLocale, pnLocale)
13539
+ ** If parameter iCol is less than zero, or greater than or equal to the
13540
+ ** number of columns in the table, SQLITE_RANGE is returned.
13541
+ **
13542
+ ** Otherwise, this function attempts to retrieve the locale associated
13543
+ ** with column iCol of the current row. Usually, there is no associated
13544
+ ** locale, and output parameters (*pzLocale) and (*pnLocale) are set
13545
+ ** to NULL and 0, respectively. However, if the fts5_locale() function
13546
+ ** was used to associate a locale with the value when it was inserted
13547
+ ** into the fts5 table, then (*pzLocale) is set to point to a nul-terminated
13548
+ ** buffer containing the name of the locale in utf-8 encoding. (*pnLocale)
13549
+ ** is set to the size in bytes of the buffer, not including the
13550
+ ** nul-terminator.
13551
+ **
13552
+ ** If successful, SQLITE_OK is returned. Or, if an error occurs, an
13553
+ ** SQLite error code is returned. The final value of the output parameters
13554
+ ** is undefined in this case.
13555
+ **
13556
+ ** xTokenize_v2:
13557
+ ** Tokenize text using the tokenizer belonging to the FTS5 table. This
13558
+ ** API is the same as the xTokenize() API, except that it allows a tokenizer
13559
+ ** locale to be specified.
12807
13560
  */
12808
13561
  struct Fts5ExtensionApi {
12809
- int iVersion; /* Currently always set to 2 */
13562
+ int iVersion; /* Currently always set to 4 */
12810
13563
 
12811
13564
  void *(*xUserData)(Fts5Context*);
12812
13565
 
@@ -12841,6 +13594,22 @@ struct Fts5ExtensionApi {
12841
13594
 
12842
13595
  int (*xPhraseFirstColumn)(Fts5Context*, int iPhrase, Fts5PhraseIter*, int*);
12843
13596
  void (*xPhraseNextColumn)(Fts5Context*, Fts5PhraseIter*, int *piCol);
13597
+
13598
+ /* Below this point are iVersion>=3 only */
13599
+ int (*xQueryToken)(Fts5Context*,
13600
+ int iPhrase, int iToken,
13601
+ const char **ppToken, int *pnToken
13602
+ );
13603
+ int (*xInstToken)(Fts5Context*, int iIdx, int iToken, const char**, int*);
13604
+
13605
+ /* Below this point are iVersion>=4 only */
13606
+ int (*xColumnLocale)(Fts5Context*, int iCol, const char **pz, int *pn);
13607
+ int (*xTokenize_v2)(Fts5Context*,
13608
+ const char *pText, int nText, /* Text to tokenize */
13609
+ const char *pLocale, int nLocale, /* Locale to pass to tokenizer */
13610
+ void *pCtx, /* Context passed to xToken() */
13611
+ int (*xToken)(void*, int, const char*, int, int, int) /* Callback */
13612
+ );
12844
13613
  };
12845
13614
 
12846
13615
  /*
@@ -12861,7 +13630,7 @@ struct Fts5ExtensionApi {
12861
13630
  ** A tokenizer instance is required to actually tokenize text.
12862
13631
  **
12863
13632
  ** The first argument passed to this function is a copy of the (void*)
12864
- ** pointer provided by the application when the fts5_tokenizer object
13633
+ ** pointer provided by the application when the fts5_tokenizer_v2 object
12865
13634
  ** was registered with FTS5 (the third argument to xCreateTokenizer()).
12866
13635
  ** The second and third arguments are an array of nul-terminated strings
12867
13636
  ** containing the tokenizer arguments, if any, specified following the
@@ -12885,7 +13654,7 @@ struct Fts5ExtensionApi {
12885
13654
  ** argument passed to this function is a pointer to an Fts5Tokenizer object
12886
13655
  ** returned by an earlier call to xCreate().
12887
13656
  **
12888
- ** The second argument indicates the reason that FTS5 is requesting
13657
+ ** The third argument indicates the reason that FTS5 is requesting
12889
13658
  ** tokenization of the supplied text. This is always one of the following
12890
13659
  ** four values:
12891
13660
  **
@@ -12909,6 +13678,13 @@ struct Fts5ExtensionApi {
12909
13678
  ** on a columnsize=0 database.
12910
13679
  ** </ul>
12911
13680
  **
13681
+ ** The sixth and seventh arguments passed to xTokenize() - pLocale and
13682
+ ** nLocale - are a pointer to a buffer containing the locale to use for
13683
+ ** tokenization (e.g. "en_US") and its size in bytes, respectively. The
13684
+ ** pLocale buffer is not nul-terminated. pLocale may be passed NULL (in
13685
+ ** which case nLocale is always 0) to indicate that the tokenizer should
13686
+ ** use its default locale.
13687
+ **
12912
13688
  ** For each token in the input string, the supplied callback xToken() must
12913
13689
  ** be invoked. The first argument to it should be a copy of the pointer
12914
13690
  ** passed as the second argument to xTokenize(). The third and fourth
@@ -12932,6 +13708,30 @@ struct Fts5ExtensionApi {
12932
13708
  ** may abandon the tokenization and return any error code other than
12933
13709
  ** SQLITE_OK or SQLITE_DONE.
12934
13710
  **
13711
+ ** If the tokenizer is registered using an fts5_tokenizer_v2 object,
13712
+ ** then the xTokenize() method has two additional arguments - pLocale
13713
+ ** and nLocale. These specify the locale that the tokenizer should use
13714
+ ** for the current request. If pLocale and nLocale are both 0, then the
13715
+ ** tokenizer should use its default locale. Otherwise, pLocale points to
13716
+ ** an nLocale byte buffer containing the name of the locale to use as utf-8
13717
+ ** text. pLocale is not nul-terminated.
13718
+ **
13719
+ ** FTS5_TOKENIZER
13720
+ **
13721
+ ** There is also an fts5_tokenizer object. This is an older, deprecated,
13722
+ ** version of fts5_tokenizer_v2. It is similar except that:
13723
+ **
13724
+ ** <ul>
13725
+ ** <li> There is no "iVersion" field, and
13726
+ ** <li> The xTokenize() method does not take a locale argument.
13727
+ ** </ul>
13728
+ **
13729
+ ** Legacy fts5_tokenizer tokenizers must be registered using the
13730
+ ** legacy xCreateTokenizer() function, instead of xCreateTokenizer_v2().
13731
+ **
13732
+ ** Tokenizer implementations registered using either API may be retrieved
13733
+ ** using both xFindTokenizer() and xFindTokenizer_v2().
13734
+ **
12935
13735
  ** SYNONYM SUPPORT
12936
13736
  **
12937
13737
  ** Custom tokenizers may also support synonyms. Consider a case in which a
@@ -13040,6 +13840,33 @@ struct Fts5ExtensionApi {
13040
13840
  ** inefficient.
13041
13841
  */
13042
13842
  typedef struct Fts5Tokenizer Fts5Tokenizer;
13843
+ typedef struct fts5_tokenizer_v2 fts5_tokenizer_v2;
13844
+ struct fts5_tokenizer_v2 {
13845
+ int iVersion; /* Currently always 2 */
13846
+
13847
+ int (*xCreate)(void*, const char **azArg, int nArg, Fts5Tokenizer **ppOut);
13848
+ void (*xDelete)(Fts5Tokenizer*);
13849
+ int (*xTokenize)(Fts5Tokenizer*,
13850
+ void *pCtx,
13851
+ int flags, /* Mask of FTS5_TOKENIZE_* flags */
13852
+ const char *pText, int nText,
13853
+ const char *pLocale, int nLocale,
13854
+ int (*xToken)(
13855
+ void *pCtx, /* Copy of 2nd argument to xTokenize() */
13856
+ int tflags, /* Mask of FTS5_TOKEN_* flags */
13857
+ const char *pToken, /* Pointer to buffer containing token */
13858
+ int nToken, /* Size of token in bytes */
13859
+ int iStart, /* Byte offset of token within input text */
13860
+ int iEnd /* Byte offset of end of token within input text */
13861
+ )
13862
+ );
13863
+ };
13864
+
13865
+ /*
13866
+ ** New code should use the fts5_tokenizer_v2 type to define tokenizer
13867
+ ** implementations. The following type is included for legacy applications
13868
+ ** that still use it.
13869
+ */
13043
13870
  typedef struct fts5_tokenizer fts5_tokenizer;
13044
13871
  struct fts5_tokenizer {
13045
13872
  int (*xCreate)(void*, const char **azArg, int nArg, Fts5Tokenizer **ppOut);
@@ -13059,6 +13886,7 @@ struct fts5_tokenizer {
13059
13886
  );
13060
13887
  };
13061
13888
 
13889
+
13062
13890
  /* Flags that may be passed as the third argument to xTokenize() */
13063
13891
  #define FTS5_TOKENIZE_QUERY 0x0001
13064
13892
  #define FTS5_TOKENIZE_PREFIX 0x0002
@@ -13078,7 +13906,7 @@ struct fts5_tokenizer {
13078
13906
  */
13079
13907
  typedef struct fts5_api fts5_api;
13080
13908
  struct fts5_api {
13081
- int iVersion; /* Currently always set to 2 */
13909
+ int iVersion; /* Currently always set to 3 */
13082
13910
 
13083
13911
  /* Create a new tokenizer */
13084
13912
  int (*xCreateTokenizer)(
@@ -13105,6 +13933,25 @@ struct fts5_api {
13105
13933
  fts5_extension_function xFunction,
13106
13934
  void (*xDestroy)(void*)
13107
13935
  );
13936
+
13937
+ /* APIs below this point are only available if iVersion>=3 */
13938
+
13939
+ /* Create a new tokenizer */
13940
+ int (*xCreateTokenizer_v2)(
13941
+ fts5_api *pApi,
13942
+ const char *zName,
13943
+ void *pUserData,
13944
+ fts5_tokenizer_v2 *pTokenizer,
13945
+ void (*xDestroy)(void*)
13946
+ );
13947
+
13948
+ /* Find an existing tokenizer */
13949
+ int (*xFindTokenizer_v2)(
13950
+ fts5_api *pApi,
13951
+ const char *zName,
13952
+ void **ppUserData,
13953
+ fts5_tokenizer_v2 **ppTokenizer
13954
+ );
13108
13955
  };
13109
13956
 
13110
13957
  /*
@@ -13118,3 +13965,4 @@ struct fts5_api {
13118
13965
  #endif /* _FTS5_H */
13119
13966
 
13120
13967
  /******** End of fts5.h *********/
13968
+ #endif /* SQLITE3_H */