amalgalite 1.6.1-x86-mingw32 → 1.6.3-x86-mingw32

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.
@@ -108,7 +108,7 @@ extern "C" {
108
108
  ** be held constant and Z will be incremented or else Y will be incremented
109
109
  ** and Z will be reset to zero.
110
110
  **
111
- ** Since [version 3.6.18] ([dateof:3.6.18]),
111
+ ** Since [version 3.6.18] ([dateof:3.6.18]),
112
112
  ** SQLite source code has been stored in the
113
113
  ** <a href="http://www.fossil-scm.org/">Fossil configuration management
114
114
  ** system</a>. ^The SQLITE_SOURCE_ID macro evaluates to
@@ -123,9 +123,9 @@ extern "C" {
123
123
  ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
124
124
  ** [sqlite_version()] and [sqlite_source_id()].
125
125
  */
126
- #define SQLITE_VERSION "3.21.0"
127
- #define SQLITE_VERSION_NUMBER 3021000
128
- #define SQLITE_SOURCE_ID "2017-10-24 18:55:49 1a584e499906b5c87ec7d43d4abce641fdf017c42125b083109bc77c4de48827"
126
+ #define SQLITE_VERSION "3.26.0"
127
+ #define SQLITE_VERSION_NUMBER 3026000
128
+ #define SQLITE_SOURCE_ID "2018-12-01 12:34:55 bf8c1b2b7a5960c282e543b9c293686dccff272512d08865f4600fb58238b4f9"
129
129
 
130
130
  /*
131
131
  ** CAPI3REF: Run-Time Library Version Numbers
@@ -151,7 +151,7 @@ extern "C" {
151
151
  ** function is provided for use in DLLs since DLL users usually do not have
152
152
  ** direct access to string constants within the DLL. ^The
153
153
  ** sqlite3_libversion_number() function returns an integer equal to
154
- ** [SQLITE_VERSION_NUMBER]. ^(The sqlite3_sourceid() function returns
154
+ ** [SQLITE_VERSION_NUMBER]. ^(The sqlite3_sourceid() function returns
155
155
  ** a pointer to a string constant whose value is the same as the
156
156
  ** [SQLITE_SOURCE_ID] C preprocessor macro. Except if SQLite is built
157
157
  ** using an edited copy of [the amalgamation], then the last four characters
@@ -265,7 +265,7 @@ typedef struct sqlite3 sqlite3;
265
265
  typedef SQLITE_INT64_TYPE sqlite_int64;
266
266
  # ifdef SQLITE_UINT64_TYPE
267
267
  typedef SQLITE_UINT64_TYPE sqlite_uint64;
268
- # else
268
+ # else
269
269
  typedef unsigned SQLITE_INT64_TYPE sqlite_uint64;
270
270
  # endif
271
271
  #elif defined(_MSC_VER) || defined(__BORLANDC__)
@@ -470,6 +470,9 @@ SQLITE_API int sqlite3_exec(
470
470
  ** the most recent error can be obtained using
471
471
  ** [sqlite3_extended_errcode()].
472
472
  */
473
+ #define SQLITE_ERROR_MISSING_COLLSEQ (SQLITE_ERROR | (1<<8))
474
+ #define SQLITE_ERROR_RETRY (SQLITE_ERROR | (2<<8))
475
+ #define SQLITE_ERROR_SNAPSHOT (SQLITE_ERROR | (3<<8))
473
476
  #define SQLITE_IOERR_READ (SQLITE_IOERR | (1<<8))
474
477
  #define SQLITE_IOERR_SHORT_READ (SQLITE_IOERR | (2<<8))
475
478
  #define SQLITE_IOERR_WRITE (SQLITE_IOERR | (3<<8))
@@ -502,17 +505,22 @@ SQLITE_API int sqlite3_exec(
502
505
  #define SQLITE_IOERR_COMMIT_ATOMIC (SQLITE_IOERR | (30<<8))
503
506
  #define SQLITE_IOERR_ROLLBACK_ATOMIC (SQLITE_IOERR | (31<<8))
504
507
  #define SQLITE_LOCKED_SHAREDCACHE (SQLITE_LOCKED | (1<<8))
508
+ #define SQLITE_LOCKED_VTAB (SQLITE_LOCKED | (2<<8))
505
509
  #define SQLITE_BUSY_RECOVERY (SQLITE_BUSY | (1<<8))
506
510
  #define SQLITE_BUSY_SNAPSHOT (SQLITE_BUSY | (2<<8))
507
511
  #define SQLITE_CANTOPEN_NOTEMPDIR (SQLITE_CANTOPEN | (1<<8))
508
512
  #define SQLITE_CANTOPEN_ISDIR (SQLITE_CANTOPEN | (2<<8))
509
513
  #define SQLITE_CANTOPEN_FULLPATH (SQLITE_CANTOPEN | (3<<8))
510
514
  #define SQLITE_CANTOPEN_CONVPATH (SQLITE_CANTOPEN | (4<<8))
515
+ #define SQLITE_CANTOPEN_DIRTYWAL (SQLITE_CANTOPEN | (5<<8)) /* Not Used */
511
516
  #define SQLITE_CORRUPT_VTAB (SQLITE_CORRUPT | (1<<8))
517
+ #define SQLITE_CORRUPT_SEQUENCE (SQLITE_CORRUPT | (2<<8))
512
518
  #define SQLITE_READONLY_RECOVERY (SQLITE_READONLY | (1<<8))
513
519
  #define SQLITE_READONLY_CANTLOCK (SQLITE_READONLY | (2<<8))
514
520
  #define SQLITE_READONLY_ROLLBACK (SQLITE_READONLY | (3<<8))
515
521
  #define SQLITE_READONLY_DBMOVED (SQLITE_READONLY | (4<<8))
522
+ #define SQLITE_READONLY_CANTINIT (SQLITE_READONLY | (5<<8))
523
+ #define SQLITE_READONLY_DIRECTORY (SQLITE_READONLY | (6<<8))
516
524
  #define SQLITE_ABORT_ROLLBACK (SQLITE_ABORT | (2<<8))
517
525
  #define SQLITE_CONSTRAINT_CHECK (SQLITE_CONSTRAINT | (1<<8))
518
526
  #define SQLITE_CONSTRAINT_COMMITHOOK (SQLITE_CONSTRAINT | (2<<8))
@@ -880,7 +888,8 @@ struct sqlite3_io_methods {
880
888
  ** <li>[[SQLITE_FCNTL_PERSIST_WAL]]
881
889
  ** ^The [SQLITE_FCNTL_PERSIST_WAL] opcode is used to set or query the
882
890
  ** persistent [WAL | Write Ahead Log] setting. By default, the auxiliary
883
- ** write ahead log and shared memory files used for transaction control
891
+ ** write ahead log ([WAL file]) and shared memory
892
+ ** files used for transaction control
884
893
  ** are automatically deleted when the latest connection to the database
885
894
  ** closes. Setting persistent WAL mode causes those files to persist after
886
895
  ** close. Persisting the files is useful when other processes that do not
@@ -1042,7 +1051,7 @@ struct sqlite3_io_methods {
1042
1051
  **
1043
1052
  ** <li>[[SQLITE_FCNTL_COMMIT_ATOMIC_WRITE]]
1044
1053
  ** The [SQLITE_FCNTL_COMMIT_ATOMIC_WRITE] opcode causes all write
1045
- ** operations since the previous successful call to
1054
+ ** operations since the previous successful call to
1046
1055
  ** [SQLITE_FCNTL_BEGIN_ATOMIC_WRITE] to be performed atomically.
1047
1056
  ** This file control returns [SQLITE_OK] if and only if the writes were
1048
1057
  ** all performed successfully and have been committed to persistent storage.
@@ -1054,12 +1063,38 @@ struct sqlite3_io_methods {
1054
1063
  **
1055
1064
  ** <li>[[SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE]]
1056
1065
  ** The [SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE] opcode causes all write
1057
- ** operations since the previous successful call to
1066
+ ** operations since the previous successful call to
1058
1067
  ** [SQLITE_FCNTL_BEGIN_ATOMIC_WRITE] to be rolled back.
1059
1068
  ** ^This file control takes the file descriptor out of batch write mode
1060
1069
  ** so that all subsequent write operations are independent.
1061
1070
  ** ^SQLite will never invoke SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE without
1062
1071
  ** a prior successful call to [SQLITE_FCNTL_BEGIN_ATOMIC_WRITE].
1072
+ **
1073
+ ** <li>[[SQLITE_FCNTL_LOCK_TIMEOUT]]
1074
+ ** The [SQLITE_FCNTL_LOCK_TIMEOUT] opcode causes attempts to obtain
1075
+ ** a file lock using the xLock or xShmLock methods of the VFS to wait
1076
+ ** for up to M milliseconds before failing, where M is the single
1077
+ ** unsigned integer parameter.
1078
+ **
1079
+ ** <li>[[SQLITE_FCNTL_DATA_VERSION]]
1080
+ ** The [SQLITE_FCNTL_DATA_VERSION] opcode is used to detect changes to
1081
+ ** a database file. The argument is a pointer to a 32-bit unsigned integer.
1082
+ ** The "data version" for the pager is written into the pointer. The
1083
+ ** "data version" changes whenever any change occurs to the corresponding
1084
+ ** database file, either through SQL statements on the same database
1085
+ ** connection or through transactions committed by separate database
1086
+ ** connections possibly in other processes. The [sqlite3_total_changes()]
1087
+ ** interface can be used to find if any database on the connection has changed,
1088
+ ** but that interface responds to changes on TEMP as well as MAIN and does
1089
+ ** not provide a mechanism to detect changes to MAIN only. Also, the
1090
+ ** [sqlite3_total_changes()] interface responds to internal changes only and
1091
+ ** omits changes made by other database connections. The
1092
+ ** [PRAGMA data_version] command provide a mechanism to detect changes to
1093
+ ** a single attached database that occur due to other database connections,
1094
+ ** but omits changes implemented by the database connection on which it is
1095
+ ** called. This file control is the only mechanism to detect changes that
1096
+ ** happen either internally or externally and that are associated with
1097
+ ** a particular attached database.
1063
1098
  ** </ul>
1064
1099
  */
1065
1100
  #define SQLITE_FCNTL_LOCKSTATE 1
@@ -1094,6 +1129,8 @@ struct sqlite3_io_methods {
1094
1129
  #define SQLITE_FCNTL_BEGIN_ATOMIC_WRITE 31
1095
1130
  #define SQLITE_FCNTL_COMMIT_ATOMIC_WRITE 32
1096
1131
  #define SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE 33
1132
+ #define SQLITE_FCNTL_LOCK_TIMEOUT 34
1133
+ #define SQLITE_FCNTL_DATA_VERSION 35
1097
1134
 
1098
1135
  /* deprecated names */
1099
1136
  #define SQLITE_GET_LOCKPROXYFILE SQLITE_FCNTL_GET_LOCKPROXYFILE
@@ -1131,12 +1168,18 @@ typedef struct sqlite3_api_routines sqlite3_api_routines;
1131
1168
  ** in the name of the object stands for "virtual file system". See
1132
1169
  ** the [VFS | VFS documentation] for further information.
1133
1170
  **
1134
- ** The value of the iVersion field is initially 1 but may be larger in
1135
- ** future versions of SQLite. Additional fields may be appended to this
1136
- ** object when the iVersion value is increased. Note that the structure
1137
- ** of the sqlite3_vfs object changes in the transaction between
1138
- ** SQLite version 3.5.9 and 3.6.0 and yet the iVersion field was not
1139
- ** modified.
1171
+ ** The VFS interface is sometimes extended by adding new methods onto
1172
+ ** the end. Each time such an extension occurs, the iVersion field
1173
+ ** is incremented. The iVersion value started out as 1 in
1174
+ ** SQLite [version 3.5.0] on [dateof:3.5.0], then increased to 2
1175
+ ** with SQLite [version 3.7.0] on [dateof:3.7.0], and then increased
1176
+ ** to 3 with SQLite [version 3.7.6] on [dateof:3.7.6]. Additional fields
1177
+ ** may be appended to the sqlite3_vfs object and the iVersion value
1178
+ ** may increase again in future versions of SQLite.
1179
+ ** Note that the structure
1180
+ ** of the sqlite3_vfs object changes in the transition from
1181
+ ** SQLite [version 3.5.9] to [version 3.6.0] on [dateof:3.6.0]
1182
+ ** and yet the iVersion field was not modified.
1140
1183
  **
1141
1184
  ** The szOsFile field is the size of the subclassed [sqlite3_file]
1142
1185
  ** structure used by this VFS. mxPathname is the maximum length of
@@ -1903,7 +1946,7 @@ struct sqlite3_mem_methods {
1903
1946
  ** [[SQLITE_CONFIG_STMTJRNL_SPILL]]
1904
1947
  ** <dt>SQLITE_CONFIG_STMTJRNL_SPILL
1905
1948
  ** <dd>^The SQLITE_CONFIG_STMTJRNL_SPILL option takes a single parameter which
1906
- ** becomes the [statement journal] spill-to-disk threshold.
1949
+ ** becomes the [statement journal] spill-to-disk threshold.
1907
1950
  ** [Statement journals] are held in memory until their size (in bytes)
1908
1951
  ** exceeds this threshold, at which point they are written to disk.
1909
1952
  ** Or if the threshold is -1, statement journals are always held
@@ -1913,6 +1956,22 @@ struct sqlite3_mem_methods {
1913
1956
  ** I/O required to support statement rollback.
1914
1957
  ** The default value for this setting is controlled by the
1915
1958
  ** [SQLITE_STMTJRNL_SPILL] compile-time option.
1959
+ **
1960
+ ** [[SQLITE_CONFIG_SORTERREF_SIZE]]
1961
+ ** <dt>SQLITE_CONFIG_SORTERREF_SIZE
1962
+ ** <dd>The SQLITE_CONFIG_SORTERREF_SIZE option accepts a single parameter
1963
+ ** of type (int) - the new value of the sorter-reference size threshold.
1964
+ ** Usually, when SQLite uses an external sort to order records according
1965
+ ** to an ORDER BY clause, all fields required by the caller are present in the
1966
+ ** sorted records. However, if SQLite determines based on the declared type
1967
+ ** of a table column that its values are likely to be very large - larger
1968
+ ** than the configured sorter-reference size threshold - then a reference
1969
+ ** is stored in each sorted record and the required column values loaded
1970
+ ** from the database as records are returned in sorted order. The default
1971
+ ** value for this option is to never use this optimization. Specifying a
1972
+ ** negative value for this option restores the default behaviour.
1973
+ ** This option is only available if SQLite is compiled with the
1974
+ ** [SQLITE_ENABLE_SORTER_REFERENCES] compile-time option.
1916
1975
  ** </dl>
1917
1976
  */
1918
1977
  #define SQLITE_CONFIG_SINGLETHREAD 1 /* nil */
@@ -1942,6 +2001,7 @@ struct sqlite3_mem_methods {
1942
2001
  #define SQLITE_CONFIG_PMASZ 25 /* unsigned int szPma */
1943
2002
  #define SQLITE_CONFIG_STMTJRNL_SPILL 26 /* int nByte */
1944
2003
  #define SQLITE_CONFIG_SMALL_MALLOC 27 /* boolean */
2004
+ #define SQLITE_CONFIG_SORTERREF_SIZE 28 /* int nByte */
1945
2005
 
1946
2006
  /*
1947
2007
  ** CAPI3REF: Database Connection Configuration Options
@@ -1957,6 +2017,7 @@ struct sqlite3_mem_methods {
1957
2017
  ** is invoked.
1958
2018
  **
1959
2019
  ** <dl>
2020
+ ** [[SQLITE_DBCONFIG_LOOKASIDE]]
1960
2021
  ** <dt>SQLITE_DBCONFIG_LOOKASIDE</dt>
1961
2022
  ** <dd> ^This option takes three additional arguments that determine the
1962
2023
  ** [lookaside memory allocator] configuration for the [database connection].
@@ -1979,6 +2040,7 @@ struct sqlite3_mem_methods {
1979
2040
  ** memory is in use leaves the configuration unchanged and returns
1980
2041
  ** [SQLITE_BUSY].)^</dd>
1981
2042
  **
2043
+ ** [[SQLITE_DBCONFIG_ENABLE_FKEY]]
1982
2044
  ** <dt>SQLITE_DBCONFIG_ENABLE_FKEY</dt>
1983
2045
  ** <dd> ^This option is used to enable or disable the enforcement of
1984
2046
  ** [foreign key constraints]. There should be two additional arguments.
@@ -1989,6 +2051,7 @@ struct sqlite3_mem_methods {
1989
2051
  ** following this call. The second parameter may be a NULL pointer, in
1990
2052
  ** which case the FK enforcement setting is not reported back. </dd>
1991
2053
  **
2054
+ ** [[SQLITE_DBCONFIG_ENABLE_TRIGGER]]
1992
2055
  ** <dt>SQLITE_DBCONFIG_ENABLE_TRIGGER</dt>
1993
2056
  ** <dd> ^This option is used to enable or disable [CREATE TRIGGER | triggers].
1994
2057
  ** There should be two additional arguments.
@@ -1999,6 +2062,7 @@ struct sqlite3_mem_methods {
1999
2062
  ** following this call. The second parameter may be a NULL pointer, in
2000
2063
  ** which case the trigger setting is not reported back. </dd>
2001
2064
  **
2065
+ ** [[SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER]]
2002
2066
  ** <dt>SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER</dt>
2003
2067
  ** <dd> ^This option is used to enable or disable the two-argument
2004
2068
  ** version of the [fts3_tokenizer()] function which is part of the
@@ -2012,6 +2076,7 @@ struct sqlite3_mem_methods {
2012
2076
  ** following this call. The second parameter may be a NULL pointer, in
2013
2077
  ** which case the new setting is not reported back. </dd>
2014
2078
  **
2079
+ ** [[SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION]]
2015
2080
  ** <dt>SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION</dt>
2016
2081
  ** <dd> ^This option is used to enable or disable the [sqlite3_load_extension()]
2017
2082
  ** interface independently of the [load_extension()] SQL function.
@@ -2029,7 +2094,7 @@ struct sqlite3_mem_methods {
2029
2094
  ** be a NULL pointer, in which case the new setting is not reported back.
2030
2095
  ** </dd>
2031
2096
  **
2032
- ** <dt>SQLITE_DBCONFIG_MAINDBNAME</dt>
2097
+ ** [[SQLITE_DBCONFIG_MAINDBNAME]] <dt>SQLITE_DBCONFIG_MAINDBNAME</dt>
2033
2098
  ** <dd> ^This option is used to change the name of the "main" database
2034
2099
  ** schema. ^The sole argument is a pointer to a constant UTF8 string
2035
2100
  ** which will become the new schema name in place of "main". ^SQLite
@@ -2038,19 +2103,21 @@ struct sqlite3_mem_methods {
2038
2103
  ** until after the database connection closes.
2039
2104
  ** </dd>
2040
2105
  **
2106
+ ** [[SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE]]
2041
2107
  ** <dt>SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE</dt>
2042
- ** <dd> Usually, when a database in wal mode is closed or detached from a
2043
- ** database handle, SQLite checks if this will mean that there are now no
2044
- ** connections at all to the database. If so, it performs a checkpoint
2108
+ ** <dd> Usually, when a database in wal mode is closed or detached from a
2109
+ ** database handle, SQLite checks if this will mean that there are now no
2110
+ ** connections at all to the database. If so, it performs a checkpoint
2045
2111
  ** operation before closing the connection. This option may be used to
2046
2112
  ** override this behaviour. The first parameter passed to this operation
2047
- ** is an integer - non-zero to disable checkpoints-on-close, or zero (the
2048
- ** default) to enable them. The second parameter is a pointer to an integer
2113
+ ** is an integer - positive to disable checkpoints-on-close, or zero (the
2114
+ ** default) to enable them, and negative to leave the setting unchanged.
2115
+ ** The second parameter is a pointer to an integer
2049
2116
  ** into which is written 0 or 1 to indicate whether checkpoints-on-close
2050
2117
  ** have been disabled - 0 if they are not disabled, 1 if they are.
2051
2118
  ** </dd>
2052
2119
  **
2053
- ** <dt>SQLITE_DBCONFIG_ENABLE_QPSG</dt>
2120
+ ** [[SQLITE_DBCONFIG_ENABLE_QPSG]] <dt>SQLITE_DBCONFIG_ENABLE_QPSG</dt>
2054
2121
  ** <dd>^(The SQLITE_DBCONFIG_ENABLE_QPSG option activates or deactivates
2055
2122
  ** the [query planner stability guarantee] (QPSG). When the QPSG is active,
2056
2123
  ** a single SQL query statement will always use the same algorithm regardless
@@ -2059,8 +2126,57 @@ struct sqlite3_mem_methods {
2059
2126
  ** slower. But the QPSG has the advantage of more predictable behavior. With
2060
2127
  ** the QPSG active, SQLite will always use the same query plan in the field as
2061
2128
  ** was used during testing in the lab.
2129
+ ** The first argument to this setting is an integer which is 0 to disable
2130
+ ** the QPSG, positive to enable QPSG, or negative to leave the setting
2131
+ ** unchanged. The second parameter is a pointer to an integer into which
2132
+ ** is written 0 or 1 to indicate whether the QPSG is disabled or enabled
2133
+ ** following this call.
2062
2134
  ** </dd>
2063
2135
  **
2136
+ ** [[SQLITE_DBCONFIG_TRIGGER_EQP]] <dt>SQLITE_DBCONFIG_TRIGGER_EQP</dt>
2137
+ ** <dd> By default, the output of EXPLAIN QUERY PLAN commands does not
2138
+ ** include output for any operations performed by trigger programs. This
2139
+ ** option is used to set or clear (the default) a flag that governs this
2140
+ ** behavior. The first parameter passed to this operation is an integer -
2141
+ ** positive to enable output for trigger programs, or zero to disable it,
2142
+ ** or negative to leave the setting unchanged.
2143
+ ** The second parameter is a pointer to an integer into which is written
2144
+ ** 0 or 1 to indicate whether output-for-triggers has been disabled - 0 if
2145
+ ** it is not disabled, 1 if it is.
2146
+ ** </dd>
2147
+ **
2148
+ ** [[SQLITE_DBCONFIG_RESET_DATABASE]] <dt>SQLITE_DBCONFIG_RESET_DATABASE</dt>
2149
+ ** <dd> Set the SQLITE_DBCONFIG_RESET_DATABASE flag and then run
2150
+ ** [VACUUM] in order to reset a database back to an empty database
2151
+ ** with no schema and no content. The following process works even for
2152
+ ** a badly corrupted database file:
2153
+ ** <ol>
2154
+ ** <li> If the database connection is newly opened, make sure it has read the
2155
+ ** database schema by preparing then discarding some query against the
2156
+ ** database, or calling sqlite3_table_column_metadata(), ignoring any
2157
+ ** errors. This step is only necessary if the application desires to keep
2158
+ ** the database in WAL mode after the reset if it was in WAL mode before
2159
+ ** the reset.
2160
+ ** <li> sqlite3_db_config(db, SQLITE_DBCONFIG_RESET_DATABASE, 1, 0);
2161
+ ** <li> [sqlite3_exec](db, "[VACUUM]", 0, 0, 0);
2162
+ ** <li> sqlite3_db_config(db, SQLITE_DBCONFIG_RESET_DATABASE, 0, 0);
2163
+ ** </ol>
2164
+ ** Because resetting a database is destructive and irreversible, the
2165
+ ** process requires the use of this obscure API and multiple steps to help
2166
+ ** ensure that it does not happen by accident.
2167
+ **
2168
+ ** [[SQLITE_DBCONFIG_DEFENSIVE]] <dt>SQLITE_DBCONFIG_DEFENSIVE</dt>
2169
+ ** <dd>The SQLITE_DBCONFIG_DEFENSIVE option activates or deactivates the
2170
+ ** "defensive" flag for a database connection. When the defensive
2171
+ ** flag is enabled, language features that allow ordinary SQL to
2172
+ ** deliberately corrupt the database file are disabled. The disabled
2173
+ ** features include but are not limited to the following:
2174
+ ** <ul>
2175
+ ** <li> The [PRAGMA writable_schema=ON] statement.
2176
+ ** <li> Writes to the [sqlite_dbpage] virtual table.
2177
+ ** <li> Direct writes to [shadow tables].
2178
+ ** </ul>
2179
+ ** </dd>
2064
2180
  ** </dl>
2065
2181
  */
2066
2182
  #define SQLITE_DBCONFIG_MAINDBNAME 1000 /* const char* */
@@ -2071,7 +2187,10 @@ struct sqlite3_mem_methods {
2071
2187
  #define SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION 1005 /* int int* */
2072
2188
  #define SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE 1006 /* int int* */
2073
2189
  #define SQLITE_DBCONFIG_ENABLE_QPSG 1007 /* int int* */
2074
-
2190
+ #define SQLITE_DBCONFIG_TRIGGER_EQP 1008 /* int int* */
2191
+ #define SQLITE_DBCONFIG_RESET_DATABASE 1009 /* int int* */
2192
+ #define SQLITE_DBCONFIG_DEFENSIVE 1010 /* int int* */
2193
+ #define SQLITE_DBCONFIG_MAX 1010 /* Largest DBCONFIG */
2075
2194
 
2076
2195
  /*
2077
2196
  ** CAPI3REF: Enable Or Disable Extended Result Codes
@@ -2098,8 +2217,8 @@ SQLITE_API int sqlite3_extended_result_codes(sqlite3*, int onoff);
2098
2217
  ** ^The sqlite3_last_insert_rowid(D) interface usually returns the [rowid] of
2099
2218
  ** the most recent successful [INSERT] into a rowid table or [virtual table]
2100
2219
  ** on database connection D. ^Inserts into [WITHOUT ROWID] tables are not
2101
- ** recorded. ^If no successful [INSERT]s into rowid tables have ever occurred
2102
- ** on the database connection D, then sqlite3_last_insert_rowid(D) returns
2220
+ ** recorded. ^If no successful [INSERT]s into rowid tables have ever occurred
2221
+ ** on the database connection D, then sqlite3_last_insert_rowid(D) returns
2103
2222
  ** zero.
2104
2223
  **
2105
2224
  ** As well as being set automatically as rows are inserted into database
@@ -2109,15 +2228,15 @@ SQLITE_API int sqlite3_extended_result_codes(sqlite3*, int onoff);
2109
2228
  ** Some virtual table implementations may INSERT rows into rowid tables as
2110
2229
  ** part of committing a transaction (e.g. to flush data accumulated in memory
2111
2230
  ** to disk). In this case subsequent calls to this function return the rowid
2112
- ** associated with these internal INSERT operations, which leads to
2231
+ ** associated with these internal INSERT operations, which leads to
2113
2232
  ** unintuitive results. Virtual table implementations that do write to rowid
2114
- ** tables in this way can avoid this problem by restoring the original
2115
- ** rowid value using [sqlite3_set_last_insert_rowid()] before returning
2233
+ ** tables in this way can avoid this problem by restoring the original
2234
+ ** rowid value using [sqlite3_set_last_insert_rowid()] before returning
2116
2235
  ** control to the user.
2117
2236
  **
2118
- ** ^(If an [INSERT] occurs within a trigger then this routine will
2119
- ** return the [rowid] of the inserted row as long as the trigger is
2120
- ** running. Once the trigger program ends, the value returned
2237
+ ** ^(If an [INSERT] occurs within a trigger then this routine will
2238
+ ** return the [rowid] of the inserted row as long as the trigger is
2239
+ ** running. Once the trigger program ends, the value returned
2121
2240
  ** by this routine reverts to what it was before the trigger was fired.)^
2122
2241
  **
2123
2242
  ** ^An [INSERT] that fails due to a constraint violation is not a
@@ -2150,7 +2269,7 @@ SQLITE_API sqlite3_int64 sqlite3_last_insert_rowid(sqlite3*);
2150
2269
  ** METHOD: sqlite3
2151
2270
  **
2152
2271
  ** The sqlite3_set_last_insert_rowid(D, R) method allows the application to
2153
- ** set the value returned by calling sqlite3_last_insert_rowid(D) to R
2272
+ ** set the value returned by calling sqlite3_last_insert_rowid(D) to R
2154
2273
  ** without inserting a row into the database.
2155
2274
  */
2156
2275
  SQLITE_API void sqlite3_set_last_insert_rowid(sqlite3*,sqlite3_int64);
@@ -2199,12 +2318,17 @@ SQLITE_API void sqlite3_set_last_insert_rowid(sqlite3*,sqlite3_int64);
2199
2318
  ** program, the value returned reflects the number of rows modified by the
2200
2319
  ** previous INSERT, UPDATE or DELETE statement within the same trigger.
2201
2320
  **
2202
- ** See also the [sqlite3_total_changes()] interface, the
2203
- ** [count_changes pragma], and the [changes() SQL function].
2204
- **
2205
2321
  ** If a separate thread makes changes on the same database connection
2206
2322
  ** while [sqlite3_changes()] is running then the value returned
2207
2323
  ** is unpredictable and not meaningful.
2324
+ **
2325
+ ** See also:
2326
+ ** <ul>
2327
+ ** <li> the [sqlite3_total_changes()] interface
2328
+ ** <li> the [count_changes pragma]
2329
+ ** <li> the [changes() SQL function]
2330
+ ** <li> the [data_version pragma]
2331
+ ** </ul>
2208
2332
  */
2209
2333
  SQLITE_API int sqlite3_changes(sqlite3*);
2210
2334
 
@@ -2222,13 +2346,26 @@ SQLITE_API int sqlite3_changes(sqlite3*);
2222
2346
  ** count, but those made as part of REPLACE constraint resolution are
2223
2347
  ** not. ^Changes to a view that are intercepted by INSTEAD OF triggers
2224
2348
  ** are not counted.
2225
- **
2226
- ** See also the [sqlite3_changes()] interface, the
2227
- ** [count_changes pragma], and the [total_changes() SQL function].
2228
2349
  **
2350
+ ** This the [sqlite3_total_changes(D)] interface only reports the number
2351
+ ** of rows that changed due to SQL statement run against database
2352
+ ** connection D. Any changes by other database connections are ignored.
2353
+ ** To detect changes against a database file from other database
2354
+ ** connections use the [PRAGMA data_version] command or the
2355
+ ** [SQLITE_FCNTL_DATA_VERSION] [file control].
2356
+ **
2229
2357
  ** If a separate thread makes changes on the same database connection
2230
2358
  ** while [sqlite3_total_changes()] is running then the value
2231
2359
  ** returned is unpredictable and not meaningful.
2360
+ **
2361
+ ** See also:
2362
+ ** <ul>
2363
+ ** <li> the [sqlite3_changes()] interface
2364
+ ** <li> the [count_changes pragma]
2365
+ ** <li> the [changes() SQL function]
2366
+ ** <li> the [data_version pragma]
2367
+ ** <li> the [SQLITE_FCNTL_DATA_VERSION] [file control]
2368
+ ** </ul>
2232
2369
  */
2233
2370
  SQLITE_API int sqlite3_total_changes(sqlite3*);
2234
2371
 
@@ -2477,16 +2614,16 @@ SQLITE_API void sqlite3_free_table(char **result);
2477
2614
  **
2478
2615
  ** These routines are work-alikes of the "printf()" family of functions
2479
2616
  ** from the standard C library.
2480
- ** These routines understand most of the common K&R formatting options,
2481
- ** plus some additional non-standard formats, detailed below.
2482
- ** Note that some of the more obscure formatting options from recent
2483
- ** C-library standards are omitted from this implementation.
2617
+ ** These routines understand most of the common formatting options from
2618
+ ** the standard library printf()
2619
+ ** plus some additional non-standard formats ([%q], [%Q], [%w], and [%z]).
2620
+ ** See the [built-in printf()] documentation for details.
2484
2621
  **
2485
2622
  ** ^The sqlite3_mprintf() and sqlite3_vmprintf() routines write their
2486
- ** results into memory obtained from [sqlite3_malloc()].
2623
+ ** results into memory obtained from [sqlite3_malloc64()].
2487
2624
  ** The strings returned by these two routines should be
2488
2625
  ** released by [sqlite3_free()]. ^Both routines return a
2489
- ** NULL pointer if [sqlite3_malloc()] is unable to allocate enough
2626
+ ** NULL pointer if [sqlite3_malloc64()] is unable to allocate enough
2490
2627
  ** memory to hold the resulting string.
2491
2628
  **
2492
2629
  ** ^(The sqlite3_snprintf() routine is similar to "snprintf()" from
@@ -2510,71 +2647,7 @@ SQLITE_API void sqlite3_free_table(char **result);
2510
2647
  **
2511
2648
  ** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf().
2512
2649
  **
2513
- ** These routines all implement some additional formatting
2514
- ** options that are useful for constructing SQL statements.
2515
- ** All of the usual printf() formatting options apply. In addition, there
2516
- ** is are "%q", "%Q", "%w" and "%z" options.
2517
- **
2518
- ** ^(The %q option works like %s in that it substitutes a nul-terminated
2519
- ** string from the argument list. But %q also doubles every '\'' character.
2520
- ** %q is designed for use inside a string literal.)^ By doubling each '\''
2521
- ** character it escapes that character and allows it to be inserted into
2522
- ** the string.
2523
- **
2524
- ** For example, assume the string variable zText contains text as follows:
2525
- **
2526
- ** <blockquote><pre>
2527
- ** char *zText = "It's a happy day!";
2528
- ** </pre></blockquote>
2529
- **
2530
- ** One can use this text in an SQL statement as follows:
2531
- **
2532
- ** <blockquote><pre>
2533
- ** char *zSQL = sqlite3_mprintf("INSERT INTO table VALUES('%q')", zText);
2534
- ** sqlite3_exec(db, zSQL, 0, 0, 0);
2535
- ** sqlite3_free(zSQL);
2536
- ** </pre></blockquote>
2537
- **
2538
- ** Because the %q format string is used, the '\'' character in zText
2539
- ** is escaped and the SQL generated is as follows:
2540
- **
2541
- ** <blockquote><pre>
2542
- ** INSERT INTO table1 VALUES('It''s a happy day!')
2543
- ** </pre></blockquote>
2544
- **
2545
- ** This is correct. Had we used %s instead of %q, the generated SQL
2546
- ** would have looked like this:
2547
- **
2548
- ** <blockquote><pre>
2549
- ** INSERT INTO table1 VALUES('It's a happy day!');
2550
- ** </pre></blockquote>
2551
- **
2552
- ** This second example is an SQL syntax error. As a general rule you should
2553
- ** always use %q instead of %s when inserting text into a string literal.
2554
- **
2555
- ** ^(The %Q option works like %q except it also adds single quotes around
2556
- ** the outside of the total string. Additionally, if the parameter in the
2557
- ** argument list is a NULL pointer, %Q substitutes the text "NULL" (without
2558
- ** single quotes).)^ So, for example, one could say:
2559
- **
2560
- ** <blockquote><pre>
2561
- ** char *zSQL = sqlite3_mprintf("INSERT INTO table VALUES(%Q)", zText);
2562
- ** sqlite3_exec(db, zSQL, 0, 0, 0);
2563
- ** sqlite3_free(zSQL);
2564
- ** </pre></blockquote>
2565
- **
2566
- ** The code above will render a correct SQL statement in the zSQL
2567
- ** variable even if the zText variable is a NULL pointer.
2568
- **
2569
- ** ^(The "%w" formatting option is like "%q" except that it expects to
2570
- ** be contained within double-quotes instead of single quotes, and it
2571
- ** escapes the double-quote character instead of the single-quote
2572
- ** character.)^ The "%w" formatting option is intended for safely inserting
2573
- ** table and column names into a constructed SQL statement.
2574
- **
2575
- ** ^(The "%z" formatting option works like "%s" but with the
2576
- ** addition that after the string has been read and copied into
2577
- ** the result, [sqlite3_free()] is called on the input string.)^
2650
+ ** See also: [built-in printf()], [printf() SQL function]
2578
2651
  */
2579
2652
  SQLITE_API char *sqlite3_mprintf(const char*,...);
2580
2653
  SQLITE_API char *sqlite3_vmprintf(const char*, va_list);
@@ -2932,8 +3005,8 @@ SQLITE_API SQLITE_DEPRECATED void *sqlite3_profile(sqlite3*,
2932
3005
  ** KEYWORDS: SQLITE_TRACE
2933
3006
  **
2934
3007
  ** These constants identify classes of events that can be monitored
2935
- ** using the [sqlite3_trace_v2()] tracing logic. The third argument
2936
- ** to [sqlite3_trace_v2()] is an OR-ed combination of one or more of
3008
+ ** using the [sqlite3_trace_v2()] tracing logic. The M argument
3009
+ ** to [sqlite3_trace_v2(D,M,X,P)] is an OR-ed combination of one or more of
2937
3010
  ** the following constants. ^The first argument to the trace callback
2938
3011
  ** is one of the following constants.
2939
3012
  **
@@ -2952,7 +3025,7 @@ SQLITE_API SQLITE_DEPRECATED void *sqlite3_profile(sqlite3*,
2952
3025
  ** execution of the prepared statement, such as at the start of each
2953
3026
  ** trigger subprogram. ^The P argument is a pointer to the
2954
3027
  ** [prepared statement]. ^The X argument is a pointer to a string which
2955
- ** is the unexpanded SQL text of the prepared statement or an SQL comment
3028
+ ** is the unexpanded SQL text of the prepared statement or an SQL comment
2956
3029
  ** that indicates the invocation of a trigger. ^The callback can compute
2957
3030
  ** the same text that would have been returned by the legacy [sqlite3_trace()]
2958
3031
  ** interface by using the X argument when X begins with "--" and invoking
@@ -2968,7 +3041,7 @@ SQLITE_API SQLITE_DEPRECATED void *sqlite3_profile(sqlite3*,
2968
3041
  **
2969
3042
  ** [[SQLITE_TRACE_ROW]] <dt>SQLITE_TRACE_ROW</dt>
2970
3043
  ** <dd>^An SQLITE_TRACE_ROW callback is invoked whenever a prepared
2971
- ** statement generates a single row of result.
3044
+ ** statement generates a single row of result.
2972
3045
  ** ^The P argument is a pointer to the [prepared statement] and the
2973
3046
  ** X argument is unused.
2974
3047
  **
@@ -2995,10 +3068,10 @@ SQLITE_API SQLITE_DEPRECATED void *sqlite3_profile(sqlite3*,
2995
3068
  ** M argument should be the bitwise OR-ed combination of
2996
3069
  ** zero or more [SQLITE_TRACE] constants.
2997
3070
  **
2998
- ** ^Each call to either sqlite3_trace() or sqlite3_trace_v2() overrides
3071
+ ** ^Each call to either sqlite3_trace() or sqlite3_trace_v2() overrides
2999
3072
  ** (cancels) any prior calls to sqlite3_trace() or sqlite3_trace_v2().
3000
3073
  **
3001
- ** ^The X callback is invoked whenever any of the events identified by
3074
+ ** ^The X callback is invoked whenever any of the events identified by
3002
3075
  ** mask M occur. ^The integer return value from the callback is currently
3003
3076
  ** ignored, though this may change in future releases. Callback
3004
3077
  ** implementations should return zero to ensure future compatibility.
@@ -3348,13 +3421,24 @@ SQLITE_API sqlite3_int64 sqlite3_uri_int64(const char*, const char*, sqlite3_int
3348
3421
  ** [database connection] D failed, then the sqlite3_errcode(D) interface
3349
3422
  ** returns the numeric [result code] or [extended result code] for that
3350
3423
  ** API call.
3351
- ** If the most recent API call was successful,
3352
- ** then the return value from sqlite3_errcode() is undefined.
3353
3424
  ** ^The sqlite3_extended_errcode()
3354
3425
  ** interface is the same except that it always returns the
3355
3426
  ** [extended result code] even when extended result codes are
3356
3427
  ** disabled.
3357
3428
  **
3429
+ ** The values returned by sqlite3_errcode() and/or
3430
+ ** sqlite3_extended_errcode() might change with each API call.
3431
+ ** Except, there are some interfaces that are guaranteed to never
3432
+ ** change the value of the error code. The error-code preserving
3433
+ ** interfaces are:
3434
+ **
3435
+ ** <ul>
3436
+ ** <li> sqlite3_errcode()
3437
+ ** <li> sqlite3_extended_errcode()
3438
+ ** <li> sqlite3_errmsg()
3439
+ ** <li> sqlite3_errmsg16()
3440
+ ** </ul>
3441
+ **
3358
3442
  ** ^The sqlite3_errmsg() and sqlite3_errmsg16() return English-language
3359
3443
  ** text that describes the error, as either UTF-8 or UTF-16 respectively.
3360
3444
  ** ^(Memory to hold the error message string is managed internally.
@@ -3538,15 +3622,25 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
3538
3622
  ** <dd>The SQLITE_PREPARE_PERSISTENT flag is a hint to the query planner
3539
3623
  ** that the prepared statement will be retained for a long time and
3540
3624
  ** probably reused many times.)^ ^Without this flag, [sqlite3_prepare_v3()]
3541
- ** and [sqlite3_prepare16_v3()] assume that the prepared statement will
3625
+ ** and [sqlite3_prepare16_v3()] assume that the prepared statement will
3542
3626
  ** be used just once or at most a few times and then destroyed using
3543
3627
  ** [sqlite3_finalize()] relatively soon. The current implementation acts
3544
3628
  ** on this hint by avoiding the use of [lookaside memory] so as not to
3545
3629
  ** deplete the limited store of lookaside memory. Future versions of
3546
3630
  ** SQLite may act on this hint differently.
3631
+ **
3632
+ ** [[SQLITE_PREPARE_NORMALIZE]] ^(<dt>SQLITE_PREPARE_NORMALIZE</dt>
3633
+ ** <dd>The SQLITE_PREPARE_NORMALIZE flag indicates that a normalized
3634
+ ** representation of the SQL statement should be calculated and then
3635
+ ** associated with the prepared statement, which can be obtained via
3636
+ ** the [sqlite3_normalized_sql()] interface.)^ The semantics used to
3637
+ ** normalize a SQL statement are unspecified and subject to change.
3638
+ ** At a minimum, literal values will be replaced with suitable
3639
+ ** placeholders.
3547
3640
  ** </dl>
3548
3641
  */
3549
3642
  #define SQLITE_PREPARE_PERSISTENT 0x01
3643
+ #define SQLITE_PREPARE_NORMALIZE 0x02
3550
3644
 
3551
3645
  /*
3552
3646
  ** CAPI3REF: Compiling An SQL Statement
@@ -3640,13 +3734,13 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
3640
3734
  ** or [GLOB] operator or if the parameter is compared to an indexed column
3641
3735
  ** and the [SQLITE_ENABLE_STAT3] compile-time option is enabled.
3642
3736
  ** </li>
3737
+ ** </ol>
3643
3738
  **
3644
3739
  ** <p>^sqlite3_prepare_v3() differs from sqlite3_prepare_v2() only in having
3645
3740
  ** the extra prepFlags parameter, which is a bit array consisting of zero or
3646
3741
  ** more of the [SQLITE_PREPARE_PERSISTENT|SQLITE_PREPARE_*] flags. ^The
3647
3742
  ** sqlite3_prepare_v2() interface works exactly the same as
3648
3743
  ** sqlite3_prepare_v3() with a zero prepFlags parameter.
3649
- ** </ol>
3650
3744
  */
3651
3745
  SQLITE_API int sqlite3_prepare(
3652
3746
  sqlite3 *db, /* Database handle */
@@ -3704,6 +3798,11 @@ SQLITE_API int sqlite3_prepare16_v3(
3704
3798
  ** ^The sqlite3_expanded_sql(P) interface returns a pointer to a UTF-8
3705
3799
  ** string containing the SQL text of prepared statement P with
3706
3800
  ** [bound parameters] expanded.
3801
+ ** ^The sqlite3_normalized_sql(P) interface returns a pointer to a UTF-8
3802
+ ** string containing the normalized SQL text of prepared statement P. The
3803
+ ** semantics used to normalize a SQL statement are unspecified and subject
3804
+ ** to change. At a minimum, literal values will be replaced with suitable
3805
+ ** placeholders.
3707
3806
  **
3708
3807
  ** ^(For example, if a prepared statement is created using the SQL
3709
3808
  ** text "SELECT $abc,:xyz" and if parameter $abc is bound to integer 2345
@@ -3719,14 +3818,16 @@ SQLITE_API int sqlite3_prepare16_v3(
3719
3818
  ** bound parameter expansions. ^The [SQLITE_OMIT_TRACE] compile-time
3720
3819
  ** option causes sqlite3_expanded_sql() to always return NULL.
3721
3820
  **
3722
- ** ^The string returned by sqlite3_sql(P) is managed by SQLite and is
3723
- ** automatically freed when the prepared statement is finalized.
3821
+ ** ^The strings returned by sqlite3_sql(P) and sqlite3_normalized_sql(P)
3822
+ ** are managed by SQLite and are automatically freed when the prepared
3823
+ ** statement is finalized.
3724
3824
  ** ^The string returned by sqlite3_expanded_sql(P), on the other hand,
3725
3825
  ** is obtained from [sqlite3_malloc()] and must be free by the application
3726
3826
  ** by passing it to [sqlite3_free()].
3727
3827
  */
3728
3828
  SQLITE_API const char *sqlite3_sql(sqlite3_stmt *pStmt);
3729
3829
  SQLITE_API char *sqlite3_expanded_sql(sqlite3_stmt *pStmt);
3830
+ SQLITE_API const char *sqlite3_normalized_sql(sqlite3_stmt *pStmt);
3730
3831
 
3731
3832
  /*
3732
3833
  ** CAPI3REF: Determine If An SQL Statement Writes The Database
@@ -4055,7 +4156,7 @@ SQLITE_API int sqlite3_clear_bindings(sqlite3_stmt*);
4055
4156
  ** METHOD: sqlite3_stmt
4056
4157
  **
4057
4158
  ** ^Return the number of columns in the result set returned by the
4058
- ** [prepared statement]. ^If this routine returns 0, that means the
4159
+ ** [prepared statement]. ^If this routine returns 0, that means the
4059
4160
  ** [prepared statement] returns no data (for example an [UPDATE]).
4060
4161
  ** ^However, just because this routine returns a positive number does not
4061
4162
  ** mean that one or more rows of data will be returned. ^A SELECT statement
@@ -4332,7 +4433,7 @@ SQLITE_API int sqlite3_data_count(sqlite3_stmt *pStmt);
4332
4433
  ** <tr><td><b>sqlite3_column_int64</b><td>&rarr;<td>64-bit INTEGER result
4333
4434
  ** <tr><td><b>sqlite3_column_text</b><td>&rarr;<td>UTF-8 TEXT result
4334
4435
  ** <tr><td><b>sqlite3_column_text16</b><td>&rarr;<td>UTF-16 TEXT result
4335
- ** <tr><td><b>sqlite3_column_value</b><td>&rarr;<td>The result as an
4436
+ ** <tr><td><b>sqlite3_column_value</b><td>&rarr;<td>The result as an
4336
4437
  ** [sqlite3_value|unprotected sqlite3_value] object.
4337
4438
  ** <tr><td>&nbsp;<td>&nbsp;<td>&nbsp;
4338
4439
  ** <tr><td><b>sqlite3_column_bytes</b><td>&rarr;<td>Size of a BLOB
@@ -4380,7 +4481,7 @@ SQLITE_API int sqlite3_data_count(sqlite3_stmt *pStmt);
4380
4481
  ** The return value of sqlite3_column_type() can be used to decide which
4381
4482
  ** of the first six interface should be used to extract the column value.
4382
4483
  ** The value returned by sqlite3_column_type() is only meaningful if no
4383
- ** automatic type conversions have occurred for the value in question.
4484
+ ** automatic type conversions have occurred for the value in question.
4384
4485
  ** After a type conversion, the result of calling sqlite3_column_type()
4385
4486
  ** is undefined, though harmless. Future
4386
4487
  ** versions of SQLite may change the behavior of sqlite3_column_type()
@@ -4427,7 +4528,7 @@ SQLITE_API int sqlite3_data_count(sqlite3_stmt *pStmt);
4427
4528
  ** to routines like [sqlite3_value_int()], [sqlite3_value_text()],
4428
4529
  ** or [sqlite3_value_bytes()], the behavior is not threadsafe.
4429
4530
  ** Hence, the sqlite3_column_value() interface
4430
- ** is normally only useful within the implementation of
4531
+ ** is normally only useful within the implementation of
4431
4532
  ** [application-defined SQL functions] or [virtual tables], not within
4432
4533
  ** top-level application code.
4433
4534
  **
@@ -4508,11 +4609,25 @@ SQLITE_API int sqlite3_data_count(sqlite3_stmt *pStmt);
4508
4609
  ** from [sqlite3_column_blob()], [sqlite3_column_text()], etc. into
4509
4610
  ** [sqlite3_free()].
4510
4611
  **
4511
- ** ^(If a memory allocation error occurs during the evaluation of any
4512
- ** of these routines, a default value is returned. The default value
4513
- ** is either the integer 0, the floating point number 0.0, or a NULL
4514
- ** pointer. Subsequent calls to [sqlite3_errcode()] will return
4515
- ** [SQLITE_NOMEM].)^
4612
+ ** As long as the input parameters are correct, these routines will only
4613
+ ** fail if an out-of-memory error occurs during a format conversion.
4614
+ ** Only the following subset of interfaces are subject to out-of-memory
4615
+ ** errors:
4616
+ **
4617
+ ** <ul>
4618
+ ** <li> sqlite3_column_blob()
4619
+ ** <li> sqlite3_column_text()
4620
+ ** <li> sqlite3_column_text16()
4621
+ ** <li> sqlite3_column_bytes()
4622
+ ** <li> sqlite3_column_bytes16()
4623
+ ** </ul>
4624
+ **
4625
+ ** If an out-of-memory error occurs, then the return value from these
4626
+ ** routines is the same as if the column had contained an SQL NULL value.
4627
+ ** Valid SQL NULL returns can be distinguished from out-of-memory errors
4628
+ ** by invoking the [sqlite3_errcode()] immediately after the suspect
4629
+ ** return value is obtained and before any
4630
+ ** other SQLite interface is called on the same [database connection].
4516
4631
  */
4517
4632
  SQLITE_API const void *sqlite3_column_blob(sqlite3_stmt*, int iCol);
4518
4633
  SQLITE_API double sqlite3_column_double(sqlite3_stmt*, int iCol);
@@ -4589,11 +4704,13 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt);
4589
4704
  **
4590
4705
  ** ^These functions (collectively known as "function creation routines")
4591
4706
  ** are used to add SQL functions or aggregates or to redefine the behavior
4592
- ** of existing SQL functions or aggregates. The only differences between
4593
- ** these routines are the text encoding expected for
4594
- ** the second parameter (the name of the function being created)
4595
- ** and the presence or absence of a destructor callback for
4596
- ** the application data pointer.
4707
+ ** of existing SQL functions or aggregates. The only differences between
4708
+ ** the three "sqlite3_create_function*" routines are the text encoding
4709
+ ** expected for the second parameter (the name of the function being
4710
+ ** created) and the presence or absence of a destructor callback for
4711
+ ** the application data pointer. Function sqlite3_create_window_function()
4712
+ ** is similar, but allows the user to supply the extra callback functions
4713
+ ** needed by [aggregate window functions].
4597
4714
  **
4598
4715
  ** ^The first parameter is the [database connection] to which the SQL
4599
4716
  ** function is to be added. ^If an application uses more than one database
@@ -4639,7 +4756,8 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt);
4639
4756
  ** ^(The fifth parameter is an arbitrary pointer. The implementation of the
4640
4757
  ** function can gain access to this pointer using [sqlite3_user_data()].)^
4641
4758
  **
4642
- ** ^The sixth, seventh and eighth parameters, xFunc, xStep and xFinal, are
4759
+ ** ^The sixth, seventh and eighth parameters passed to the three
4760
+ ** "sqlite3_create_function*" functions, xFunc, xStep and xFinal, are
4643
4761
  ** pointers to C-language functions that implement the SQL function or
4644
4762
  ** aggregate. ^A scalar SQL function requires an implementation of the xFunc
4645
4763
  ** callback only; NULL pointers must be passed as the xStep and xFinal
@@ -4648,15 +4766,24 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt);
4648
4766
  ** SQL function or aggregate, pass NULL pointers for all three function
4649
4767
  ** callbacks.
4650
4768
  **
4651
- ** ^(If the ninth parameter to sqlite3_create_function_v2() is not NULL,
4652
- ** then it is destructor for the application data pointer.
4653
- ** The destructor is invoked when the function is deleted, either by being
4654
- ** overloaded or when the database connection closes.)^
4655
- ** ^The destructor is also invoked if the call to
4656
- ** sqlite3_create_function_v2() fails.
4657
- ** ^When the destructor callback of the tenth parameter is invoked, it
4658
- ** is passed a single argument which is a copy of the application data
4659
- ** pointer which was the fifth parameter to sqlite3_create_function_v2().
4769
+ ** ^The sixth, seventh, eighth and ninth parameters (xStep, xFinal, xValue
4770
+ ** and xInverse) passed to sqlite3_create_window_function are pointers to
4771
+ ** C-language callbacks that implement the new function. xStep and xFinal
4772
+ ** must both be non-NULL. xValue and xInverse may either both be NULL, in
4773
+ ** which case a regular aggregate function is created, or must both be
4774
+ ** non-NULL, in which case the new function may be used as either an aggregate
4775
+ ** or aggregate window function. More details regarding the implementation
4776
+ ** of aggregate window functions are
4777
+ ** [user-defined window functions|available here].
4778
+ **
4779
+ ** ^(If the final parameter to sqlite3_create_function_v2() or
4780
+ ** sqlite3_create_window_function() is not NULL, then it is destructor for
4781
+ ** the application data pointer. The destructor is invoked when the function
4782
+ ** is deleted, either by being overloaded or when the database connection
4783
+ ** closes.)^ ^The destructor is also invoked if the call to
4784
+ ** sqlite3_create_function_v2() fails. ^When the destructor callback is
4785
+ ** invoked, it is passed a single argument which is a copy of the application
4786
+ ** data pointer which was the fifth parameter to sqlite3_create_function_v2().
4660
4787
  **
4661
4788
  ** ^It is permitted to register multiple implementations of the same
4662
4789
  ** functions with the same name but with either differing numbers of
@@ -4709,6 +4836,18 @@ SQLITE_API int sqlite3_create_function_v2(
4709
4836
  void (*xFinal)(sqlite3_context*),
4710
4837
  void(*xDestroy)(void*)
4711
4838
  );
4839
+ SQLITE_API int sqlite3_create_window_function(
4840
+ sqlite3 *db,
4841
+ const char *zFunctionName,
4842
+ int nArg,
4843
+ int eTextRep,
4844
+ void *pApp,
4845
+ void (*xStep)(sqlite3_context*,int,sqlite3_value**),
4846
+ void (*xFinal)(sqlite3_context*),
4847
+ void (*xValue)(sqlite3_context*),
4848
+ void (*xInverse)(sqlite3_context*,int,sqlite3_value**),
4849
+ void(*xDestroy)(void*)
4850
+ );
4712
4851
 
4713
4852
  /*
4714
4853
  ** CAPI3REF: Text Encodings
@@ -4779,6 +4918,9 @@ SQLITE_API SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int6
4779
4918
  ** datatype of the value
4780
4919
  ** <tr><td><b>sqlite3_value_numeric_type&nbsp;&nbsp;</b>
4781
4920
  ** <td>&rarr;&nbsp;&nbsp;<td>Best numeric datatype of the value
4921
+ ** <tr><td><b>sqlite3_value_nochange&nbsp;&nbsp;</b>
4922
+ ** <td>&rarr;&nbsp;&nbsp;<td>True if the column is unchanged in an UPDATE
4923
+ ** against a virtual table.
4782
4924
  ** </table></blockquote>
4783
4925
  **
4784
4926
  ** <b>Details:</b>
@@ -4801,11 +4943,11 @@ SQLITE_API SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int6
4801
4943
  ** sqlite3_value_text16be() and sqlite3_value_text16le() interfaces
4802
4944
  ** extract UTF-16 strings as big-endian and little-endian respectively.
4803
4945
  **
4804
- ** ^If [sqlite3_value] object V was initialized
4946
+ ** ^If [sqlite3_value] object V was initialized
4805
4947
  ** using [sqlite3_bind_pointer(S,I,P,X,D)] or [sqlite3_result_pointer(C,P,X,D)]
4806
4948
  ** and if X and Y are strings that compare equal according to strcmp(X,Y),
4807
4949
  ** then sqlite3_value_pointer(V,Y) will return the pointer P. ^Otherwise,
4808
- ** sqlite3_value_pointer(V,Y) returns a NULL. The sqlite3_bind_pointer()
4950
+ ** sqlite3_value_pointer(V,Y) returns a NULL. The sqlite3_bind_pointer()
4809
4951
  ** routine is part of the [pointer passing interface] added for SQLite 3.20.0.
4810
4952
  **
4811
4953
  ** ^(The sqlite3_value_type(V) interface returns the
@@ -4827,6 +4969,19 @@ SQLITE_API SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int6
4827
4969
  ** then the conversion is performed. Otherwise no conversion occurs.
4828
4970
  ** The [SQLITE_INTEGER | datatype] after conversion is returned.)^
4829
4971
  **
4972
+ ** ^Within the [xUpdate] method of a [virtual table], the
4973
+ ** sqlite3_value_nochange(X) interface returns true if and only if
4974
+ ** the column corresponding to X is unchanged by the UPDATE operation
4975
+ ** that the xUpdate method call was invoked to implement and if
4976
+ ** and the prior [xColumn] method call that was invoked to extracted
4977
+ ** the value for that column returned without setting a result (probably
4978
+ ** because it queried [sqlite3_vtab_nochange()] and found that the column
4979
+ ** was unchanging). ^Within an [xUpdate] method, any value for which
4980
+ ** sqlite3_value_nochange(X) is true will in all other respects appear
4981
+ ** to be a NULL value. If sqlite3_value_nochange(X) is invoked anywhere other
4982
+ ** than within an [xUpdate] method call for an UPDATE statement, then
4983
+ ** the return value is arbitrary and meaningless.
4984
+ **
4830
4985
  ** Please pay particular attention to the fact that the pointer returned
4831
4986
  ** from [sqlite3_value_blob()], [sqlite3_value_text()], or
4832
4987
  ** [sqlite3_value_text16()] can be invalidated by a subsequent call to
@@ -4835,6 +4990,28 @@ SQLITE_API SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int6
4835
4990
  **
4836
4991
  ** These routines must be called from the same thread as
4837
4992
  ** the SQL function that supplied the [sqlite3_value*] parameters.
4993
+ **
4994
+ ** As long as the input parameter is correct, these routines can only
4995
+ ** fail if an out-of-memory error occurs during a format conversion.
4996
+ ** Only the following subset of interfaces are subject to out-of-memory
4997
+ ** errors:
4998
+ **
4999
+ ** <ul>
5000
+ ** <li> sqlite3_value_blob()
5001
+ ** <li> sqlite3_value_text()
5002
+ ** <li> sqlite3_value_text16()
5003
+ ** <li> sqlite3_value_text16le()
5004
+ ** <li> sqlite3_value_text16be()
5005
+ ** <li> sqlite3_value_bytes()
5006
+ ** <li> sqlite3_value_bytes16()
5007
+ ** </ul>
5008
+ **
5009
+ ** If an out-of-memory error occurs, then the return value from these
5010
+ ** routines is the same as if the column had contained an SQL NULL value.
5011
+ ** Valid SQL NULL returns can be distinguished from out-of-memory errors
5012
+ ** by invoking the [sqlite3_errcode()] immediately after the suspect
5013
+ ** return value is obtained and before any
5014
+ ** other SQLite interface is called on the same [database connection].
4838
5015
  */
4839
5016
  SQLITE_API const void *sqlite3_value_blob(sqlite3_value*);
4840
5017
  SQLITE_API double sqlite3_value_double(sqlite3_value*);
@@ -4849,6 +5026,7 @@ SQLITE_API int sqlite3_value_bytes(sqlite3_value*);
4849
5026
  SQLITE_API int sqlite3_value_bytes16(sqlite3_value*);
4850
5027
  SQLITE_API int sqlite3_value_type(sqlite3_value*);
4851
5028
  SQLITE_API int sqlite3_value_numeric_type(sqlite3_value*);
5029
+ SQLITE_API int sqlite3_value_nochange(sqlite3_value*);
4852
5030
 
4853
5031
  /*
4854
5032
  ** CAPI3REF: Finding The Subtype Of SQL Values
@@ -4987,7 +5165,7 @@ SQLITE_API sqlite3 *sqlite3_context_db_handle(sqlite3_context*);
4987
5165
  ** SQL statement)^, or
4988
5166
  ** <li> ^(when sqlite3_set_auxdata() is invoked again on the same
4989
5167
  ** parameter)^, or
4990
- ** <li> ^(during the original sqlite3_set_auxdata() call when a memory
5168
+ ** <li> ^(during the original sqlite3_set_auxdata() call when a memory
4991
5169
  ** allocation error occurs.)^ </ul>
4992
5170
  **
4993
5171
  ** Note the last bullet in particular. The destructor X in
@@ -5143,7 +5321,7 @@ typedef void (*sqlite3_destructor_type)(void*);
5143
5321
  **
5144
5322
  ** ^The sqlite3_result_pointer(C,P,T,D) interface sets the result to an
5145
5323
  ** SQL NULL value, just like [sqlite3_result_null(C)], except that it
5146
- ** also associates the host-language pointer P or type T with that
5324
+ ** also associates the host-language pointer P or type T with that
5147
5325
  ** NULL value such that the pointer can be retrieved within an
5148
5326
  ** [application-defined SQL function] using [sqlite3_value_pointer()].
5149
5327
  ** ^If the D parameter is not NULL, then it is a pointer to a destructor
@@ -5504,6 +5682,41 @@ SQLITE_API SQLITE_EXTERN char *sqlite3_temp_directory;
5504
5682
  */
5505
5683
  SQLITE_API SQLITE_EXTERN char *sqlite3_data_directory;
5506
5684
 
5685
+ /*
5686
+ ** CAPI3REF: Win32 Specific Interface
5687
+ **
5688
+ ** These interfaces are available only on Windows. The
5689
+ ** [sqlite3_win32_set_directory] interface is used to set the value associated
5690
+ ** with the [sqlite3_temp_directory] or [sqlite3_data_directory] variable, to
5691
+ ** zValue, depending on the value of the type parameter. The zValue parameter
5692
+ ** should be NULL to cause the previous value to be freed via [sqlite3_free];
5693
+ ** a non-NULL value will be copied into memory obtained from [sqlite3_malloc]
5694
+ ** prior to being used. The [sqlite3_win32_set_directory] interface returns
5695
+ ** [SQLITE_OK] to indicate success, [SQLITE_ERROR] if the type is unsupported,
5696
+ ** or [SQLITE_NOMEM] if memory could not be allocated. The value of the
5697
+ ** [sqlite3_data_directory] variable is intended to act as a replacement for
5698
+ ** the current directory on the sub-platforms of Win32 where that concept is
5699
+ ** not present, e.g. WinRT and UWP. The [sqlite3_win32_set_directory8] and
5700
+ ** [sqlite3_win32_set_directory16] interfaces behave exactly the same as the
5701
+ ** sqlite3_win32_set_directory interface except the string parameter must be
5702
+ ** UTF-8 or UTF-16, respectively.
5703
+ */
5704
+ SQLITE_API int sqlite3_win32_set_directory(
5705
+ unsigned long type, /* Identifier for directory being set or reset */
5706
+ void *zValue /* New value for directory being set or reset */
5707
+ );
5708
+ SQLITE_API int sqlite3_win32_set_directory8(unsigned long type, const char *zValue);
5709
+ SQLITE_API int sqlite3_win32_set_directory16(unsigned long type, const void *zValue);
5710
+
5711
+ /*
5712
+ ** CAPI3REF: Win32 Directory Types
5713
+ **
5714
+ ** These macros are only available on Windows. They define the allowed values
5715
+ ** for the type argument to the [sqlite3_win32_set_directory] interface.
5716
+ */
5717
+ #define SQLITE_WIN32_DATA_DIRECTORY_TYPE 1
5718
+ #define SQLITE_WIN32_TEMP_DIRECTORY_TYPE 2
5719
+
5507
5720
  /*
5508
5721
  ** CAPI3REF: Test For Auto-Commit Mode
5509
5722
  ** KEYWORDS: {autocommit mode}
@@ -5698,7 +5911,7 @@ SQLITE_API void *sqlite3_update_hook(
5698
5911
  ** and disabled if the argument is false.)^
5699
5912
  **
5700
5913
  ** ^Cache sharing is enabled and disabled for an entire process.
5701
- ** This is a change as of SQLite [version 3.5.0] ([dateof:3.5.0]).
5914
+ ** This is a change as of SQLite [version 3.5.0] ([dateof:3.5.0]).
5702
5915
  ** In prior versions of SQLite,
5703
5916
  ** sharing was enabled or disabled for each thread separately.
5704
5917
  **
@@ -5793,7 +6006,7 @@ SQLITE_API int sqlite3_db_release_memory(sqlite3*);
5793
6006
  ** from the heap.
5794
6007
  ** </ul>)^
5795
6008
  **
5796
- ** Beginning with SQLite [version 3.7.3] ([dateof:3.7.3]),
6009
+ ** Beginning with SQLite [version 3.7.3] ([dateof:3.7.3]),
5797
6010
  ** the soft heap limit is enforced
5798
6011
  ** regardless of whether or not the [SQLITE_ENABLE_MEMORY_MANAGEMENT]
5799
6012
  ** compile-time option is invoked. With [SQLITE_ENABLE_MEMORY_MANAGEMENT],
@@ -5937,7 +6150,7 @@ SQLITE_API int sqlite3_table_column_metadata(
5937
6150
  ** prior to calling this API,
5938
6151
  ** otherwise an error will be returned.
5939
6152
  **
5940
- ** <b>Security warning:</b> It is recommended that the
6153
+ ** <b>Security warning:</b> It is recommended that the
5941
6154
  ** [SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION] method be used to enable only this
5942
6155
  ** interface. The use of the [sqlite3_enable_load_extension()] interface
5943
6156
  ** should be avoided. This will keep the SQL function [load_extension()]
@@ -6104,6 +6317,9 @@ struct sqlite3_module {
6104
6317
  int (*xSavepoint)(sqlite3_vtab *pVTab, int);
6105
6318
  int (*xRelease)(sqlite3_vtab *pVTab, int);
6106
6319
  int (*xRollbackTo)(sqlite3_vtab *pVTab, int);
6320
+ /* The methods above are in versions 1 and 2 of the sqlite_module object.
6321
+ ** Those below are for version 3 and greater. */
6322
+ int (*xShadowName)(const char*);
6107
6323
  };
6108
6324
 
6109
6325
  /*
@@ -6146,7 +6362,7 @@ struct sqlite3_module {
6146
6362
  ** required by SQLite. If the table has at least 64 columns and any column
6147
6363
  ** to the right of the first 63 is required, then bit 63 of colUsed is also
6148
6364
  ** set. In other words, column iCol may be required if the expression
6149
- ** (colUsed & ((sqlite3_uint64)1 << (iCol>=63 ? 63 : iCol))) evaluates to
6365
+ ** (colUsed & ((sqlite3_uint64)1 << (iCol>=63 ? 63 : iCol))) evaluates to
6150
6366
  ** non-zero.
6151
6367
  **
6152
6368
  ** The [xBestIndex] method must fill aConstraintUsage[] with information
@@ -6190,14 +6406,14 @@ struct sqlite3_module {
6190
6406
  ** the xUpdate method are automatically rolled back by SQLite.
6191
6407
  **
6192
6408
  ** IMPORTANT: The estimatedRows field was added to the sqlite3_index_info
6193
- ** structure for SQLite [version 3.8.2] ([dateof:3.8.2]).
6409
+ ** structure for SQLite [version 3.8.2] ([dateof:3.8.2]).
6194
6410
  ** If a virtual table extension is
6195
6411
  ** used with an SQLite version earlier than 3.8.2, the results of attempting
6196
6412
  ** to read or write the estimatedRows field are undefined (but are likely
6197
6413
  ** to included crashing the application). The estimatedRows field should
6198
6414
  ** therefore only be used if [sqlite3_libversion_number()] returns a
6199
6415
  ** value greater than or equal to 3008002. Similarly, the idxFlags field
6200
- ** was added for [version 3.9.0] ([dateof:3.9.0]).
6416
+ ** was added for [version 3.9.0] ([dateof:3.9.0]).
6201
6417
  ** It may therefore only be used if
6202
6418
  ** sqlite3_libversion_number() returns a value greater than or equal to
6203
6419
  ** 3009000.
@@ -6236,6 +6452,10 @@ struct sqlite3_index_info {
6236
6452
 
6237
6453
  /*
6238
6454
  ** CAPI3REF: Virtual Table Scan Flags
6455
+ **
6456
+ ** Virtual table implementations are allowed to set the
6457
+ ** [sqlite3_index_info].idxFlags field to some combination of
6458
+ ** these bits.
6239
6459
  */
6240
6460
  #define SQLITE_INDEX_SCAN_UNIQUE 1 /* Scan visits at most 1 row */
6241
6461
 
@@ -6261,6 +6481,7 @@ struct sqlite3_index_info {
6261
6481
  #define SQLITE_INDEX_CONSTRAINT_ISNOTNULL 70
6262
6482
  #define SQLITE_INDEX_CONSTRAINT_ISNULL 71
6263
6483
  #define SQLITE_INDEX_CONSTRAINT_IS 72
6484
+ #define SQLITE_INDEX_CONSTRAINT_FUNCTION 150
6264
6485
 
6265
6486
  /*
6266
6487
  ** CAPI3REF: Register A Virtual Table Implementation
@@ -6937,6 +7158,7 @@ SQLITE_API sqlite3_mutex *sqlite3_db_mutex(sqlite3*);
6937
7158
  /*
6938
7159
  ** CAPI3REF: Low-Level Control Of Database Files
6939
7160
  ** METHOD: sqlite3
7161
+ ** KEYWORDS: {file control}
6940
7162
  **
6941
7163
  ** ^The [sqlite3_file_control()] interface makes a direct call to the
6942
7164
  ** xFileControl method for the [sqlite3_io_methods] object associated
@@ -6951,11 +7173,18 @@ SQLITE_API sqlite3_mutex *sqlite3_db_mutex(sqlite3*);
6951
7173
  ** the xFileControl method. ^The return value of the xFileControl
6952
7174
  ** method becomes the return value of this routine.
6953
7175
  **
6954
- ** ^The SQLITE_FCNTL_FILE_POINTER value for the op parameter causes
7176
+ ** A few opcodes for [sqlite3_file_control()] are handled directly
7177
+ ** by the SQLite core and never invoke the
7178
+ ** sqlite3_io_methods.xFileControl method.
7179
+ ** ^The [SQLITE_FCNTL_FILE_POINTER] value for the op parameter causes
6955
7180
  ** a pointer to the underlying [sqlite3_file] object to be written into
6956
- ** the space pointed to by the 4th parameter. ^The SQLITE_FCNTL_FILE_POINTER
6957
- ** case is a short-circuit path which does not actually invoke the
6958
- ** underlying sqlite3_io_methods.xFileControl method.
7181
+ ** the space pointed to by the 4th parameter. The
7182
+ ** [SQLITE_FCNTL_JOURNAL_POINTER] works similarly except that it returns
7183
+ ** the [sqlite3_file] object associated with the journal file instead of
7184
+ ** the main database. The [SQLITE_FCNTL_VFS_POINTER] opcode returns
7185
+ ** a pointer to the underlying [sqlite3_vfs] object for the file.
7186
+ ** The [SQLITE_FCNTL_DATA_VERSION] returns the data version counter
7187
+ ** from the pager.
6959
7188
  **
6960
7189
  ** ^If the second parameter (zDbName) does not match the name of any
6961
7190
  ** open database file, then SQLITE_ERROR is returned. ^This error
@@ -6965,7 +7194,7 @@ SQLITE_API sqlite3_mutex *sqlite3_db_mutex(sqlite3*);
6965
7194
  ** an incorrect zDbName and an SQLITE_ERROR return from the underlying
6966
7195
  ** xFileControl method.
6967
7196
  **
6968
- ** See also: [SQLITE_FCNTL_LOCKSTATE]
7197
+ ** See also: [file control opcodes]
6969
7198
  */
6970
7199
  SQLITE_API int sqlite3_file_control(sqlite3*, const char *zDbName, int op, void*);
6971
7200
 
@@ -7011,8 +7240,9 @@ SQLITE_API int sqlite3_test_control(int op, ...);
7011
7240
  #define SQLITE_TESTCTRL_ALWAYS 13
7012
7241
  #define SQLITE_TESTCTRL_RESERVE 14
7013
7242
  #define SQLITE_TESTCTRL_OPTIMIZATIONS 15
7014
- #define SQLITE_TESTCTRL_ISKEYWORD 16
7243
+ #define SQLITE_TESTCTRL_ISKEYWORD 16 /* NOT USED */
7015
7244
  #define SQLITE_TESTCTRL_SCRATCHMALLOC 17 /* NOT USED */
7245
+ #define SQLITE_TESTCTRL_INTERNAL_FUNCTIONS 17
7016
7246
  #define SQLITE_TESTCTRL_LOCALTIME_FAULT 18
7017
7247
  #define SQLITE_TESTCTRL_EXPLAIN_STMT 19 /* NOT USED */
7018
7248
  #define SQLITE_TESTCTRL_ONCE_RESET_THRESHOLD 19
@@ -7022,7 +7252,191 @@ SQLITE_API int sqlite3_test_control(int op, ...);
7022
7252
  #define SQLITE_TESTCTRL_ISINIT 23
7023
7253
  #define SQLITE_TESTCTRL_SORTER_MMAP 24
7024
7254
  #define SQLITE_TESTCTRL_IMPOSTER 25
7025
- #define SQLITE_TESTCTRL_LAST 25
7255
+ #define SQLITE_TESTCTRL_PARSER_COVERAGE 26
7256
+ #define SQLITE_TESTCTRL_LAST 26 /* Largest TESTCTRL */
7257
+
7258
+ /*
7259
+ ** CAPI3REF: SQL Keyword Checking
7260
+ **
7261
+ ** These routines provide access to the set of SQL language keywords
7262
+ ** recognized by SQLite. Applications can uses these routines to determine
7263
+ ** whether or not a specific identifier needs to be escaped (for example,
7264
+ ** by enclosing in double-quotes) so as not to confuse the parser.
7265
+ **
7266
+ ** The sqlite3_keyword_count() interface returns the number of distinct
7267
+ ** keywords understood by SQLite.
7268
+ **
7269
+ ** The sqlite3_keyword_name(N,Z,L) interface finds the N-th keyword and
7270
+ ** makes *Z point to that keyword expressed as UTF8 and writes the number
7271
+ ** of bytes in the keyword into *L. The string that *Z points to is not
7272
+ ** zero-terminated. The sqlite3_keyword_name(N,Z,L) routine returns
7273
+ ** SQLITE_OK if N is within bounds and SQLITE_ERROR if not. If either Z
7274
+ ** or L are NULL or invalid pointers then calls to
7275
+ ** sqlite3_keyword_name(N,Z,L) result in undefined behavior.
7276
+ **
7277
+ ** The sqlite3_keyword_check(Z,L) interface checks to see whether or not
7278
+ ** the L-byte UTF8 identifier that Z points to is a keyword, returning non-zero
7279
+ ** if it is and zero if not.
7280
+ **
7281
+ ** The parser used by SQLite is forgiving. It is often possible to use
7282
+ ** a keyword as an identifier as long as such use does not result in a
7283
+ ** parsing ambiguity. For example, the statement
7284
+ ** "CREATE TABLE BEGIN(REPLACE,PRAGMA,END);" is accepted by SQLite, and
7285
+ ** creates a new table named "BEGIN" with three columns named
7286
+ ** "REPLACE", "PRAGMA", and "END". Nevertheless, best practice is to avoid
7287
+ ** using keywords as identifiers. Common techniques used to avoid keyword
7288
+ ** name collisions include:
7289
+ ** <ul>
7290
+ ** <li> Put all identifier names inside double-quotes. This is the official
7291
+ ** SQL way to escape identifier names.
7292
+ ** <li> Put identifier names inside &#91;...&#93;. This is not standard SQL,
7293
+ ** but it is what SQL Server does and so lots of programmers use this
7294
+ ** technique.
7295
+ ** <li> Begin every identifier with the letter "Z" as no SQL keywords start
7296
+ ** with "Z".
7297
+ ** <li> Include a digit somewhere in every identifier name.
7298
+ ** </ul>
7299
+ **
7300
+ ** Note that the number of keywords understood by SQLite can depend on
7301
+ ** compile-time options. For example, "VACUUM" is not a keyword if
7302
+ ** SQLite is compiled with the [-DSQLITE_OMIT_VACUUM] option. Also,
7303
+ ** new keywords may be added to future releases of SQLite.
7304
+ */
7305
+ SQLITE_API int sqlite3_keyword_count(void);
7306
+ SQLITE_API int sqlite3_keyword_name(int,const char**,int*);
7307
+ SQLITE_API int sqlite3_keyword_check(const char*,int);
7308
+
7309
+ /*
7310
+ ** CAPI3REF: Dynamic String Object
7311
+ ** KEYWORDS: {dynamic string}
7312
+ **
7313
+ ** An instance of the sqlite3_str object contains a dynamically-sized
7314
+ ** string under construction.
7315
+ **
7316
+ ** The lifecycle of an sqlite3_str object is as follows:
7317
+ ** <ol>
7318
+ ** <li> ^The sqlite3_str object is created using [sqlite3_str_new()].
7319
+ ** <li> ^Text is appended to the sqlite3_str object using various
7320
+ ** methods, such as [sqlite3_str_appendf()].
7321
+ ** <li> ^The sqlite3_str object is destroyed and the string it created
7322
+ ** is returned using the [sqlite3_str_finish()] interface.
7323
+ ** </ol>
7324
+ */
7325
+ typedef struct sqlite3_str sqlite3_str;
7326
+
7327
+ /*
7328
+ ** CAPI3REF: Create A New Dynamic String Object
7329
+ ** CONSTRUCTOR: sqlite3_str
7330
+ **
7331
+ ** ^The [sqlite3_str_new(D)] interface allocates and initializes
7332
+ ** a new [sqlite3_str] object. To avoid memory leaks, the object returned by
7333
+ ** [sqlite3_str_new()] must be freed by a subsequent call to
7334
+ ** [sqlite3_str_finish(X)].
7335
+ **
7336
+ ** ^The [sqlite3_str_new(D)] interface always returns a pointer to a
7337
+ ** valid [sqlite3_str] object, though in the event of an out-of-memory
7338
+ ** error the returned object might be a special singleton that will
7339
+ ** silently reject new text, always return SQLITE_NOMEM from
7340
+ ** [sqlite3_str_errcode()], always return 0 for
7341
+ ** [sqlite3_str_length()], and always return NULL from
7342
+ ** [sqlite3_str_finish(X)]. It is always safe to use the value
7343
+ ** returned by [sqlite3_str_new(D)] as the sqlite3_str parameter
7344
+ ** to any of the other [sqlite3_str] methods.
7345
+ **
7346
+ ** The D parameter to [sqlite3_str_new(D)] may be NULL. If the
7347
+ ** D parameter in [sqlite3_str_new(D)] is not NULL, then the maximum
7348
+ ** length of the string contained in the [sqlite3_str] object will be
7349
+ ** the value set for [sqlite3_limit](D,[SQLITE_LIMIT_LENGTH]) instead
7350
+ ** of [SQLITE_MAX_LENGTH].
7351
+ */
7352
+ SQLITE_API sqlite3_str *sqlite3_str_new(sqlite3*);
7353
+
7354
+ /*
7355
+ ** CAPI3REF: Finalize A Dynamic String
7356
+ ** DESTRUCTOR: sqlite3_str
7357
+ **
7358
+ ** ^The [sqlite3_str_finish(X)] interface destroys the sqlite3_str object X
7359
+ ** and returns a pointer to a memory buffer obtained from [sqlite3_malloc64()]
7360
+ ** that contains the constructed string. The calling application should
7361
+ ** pass the returned value to [sqlite3_free()] to avoid a memory leak.
7362
+ ** ^The [sqlite3_str_finish(X)] interface may return a NULL pointer if any
7363
+ ** errors were encountered during construction of the string. ^The
7364
+ ** [sqlite3_str_finish(X)] interface will also return a NULL pointer if the
7365
+ ** string in [sqlite3_str] object X is zero bytes long.
7366
+ */
7367
+ SQLITE_API char *sqlite3_str_finish(sqlite3_str*);
7368
+
7369
+ /*
7370
+ ** CAPI3REF: Add Content To A Dynamic String
7371
+ ** METHOD: sqlite3_str
7372
+ **
7373
+ ** These interfaces add content to an sqlite3_str object previously obtained
7374
+ ** from [sqlite3_str_new()].
7375
+ **
7376
+ ** ^The [sqlite3_str_appendf(X,F,...)] and
7377
+ ** [sqlite3_str_vappendf(X,F,V)] interfaces uses the [built-in printf]
7378
+ ** functionality of SQLite to append formatted text onto the end of
7379
+ ** [sqlite3_str] object X.
7380
+ **
7381
+ ** ^The [sqlite3_str_append(X,S,N)] method appends exactly N bytes from string S
7382
+ ** onto the end of the [sqlite3_str] object X. N must be non-negative.
7383
+ ** S must contain at least N non-zero bytes of content. To append a
7384
+ ** zero-terminated string in its entirety, use the [sqlite3_str_appendall()]
7385
+ ** method instead.
7386
+ **
7387
+ ** ^The [sqlite3_str_appendall(X,S)] method appends the complete content of
7388
+ ** zero-terminated string S onto the end of [sqlite3_str] object X.
7389
+ **
7390
+ ** ^The [sqlite3_str_appendchar(X,N,C)] method appends N copies of the
7391
+ ** single-byte character C onto the end of [sqlite3_str] object X.
7392
+ ** ^This method can be used, for example, to add whitespace indentation.
7393
+ **
7394
+ ** ^The [sqlite3_str_reset(X)] method resets the string under construction
7395
+ ** inside [sqlite3_str] object X back to zero bytes in length.
7396
+ **
7397
+ ** These methods do not return a result code. ^If an error occurs, that fact
7398
+ ** is recorded in the [sqlite3_str] object and can be recovered by a
7399
+ ** subsequent call to [sqlite3_str_errcode(X)].
7400
+ */
7401
+ SQLITE_API void sqlite3_str_appendf(sqlite3_str*, const char *zFormat, ...);
7402
+ SQLITE_API void sqlite3_str_vappendf(sqlite3_str*, const char *zFormat, va_list);
7403
+ SQLITE_API void sqlite3_str_append(sqlite3_str*, const char *zIn, int N);
7404
+ SQLITE_API void sqlite3_str_appendall(sqlite3_str*, const char *zIn);
7405
+ SQLITE_API void sqlite3_str_appendchar(sqlite3_str*, int N, char C);
7406
+ SQLITE_API void sqlite3_str_reset(sqlite3_str*);
7407
+
7408
+ /*
7409
+ ** CAPI3REF: Status Of A Dynamic String
7410
+ ** METHOD: sqlite3_str
7411
+ **
7412
+ ** These interfaces return the current status of an [sqlite3_str] object.
7413
+ **
7414
+ ** ^If any prior errors have occurred while constructing the dynamic string
7415
+ ** in sqlite3_str X, then the [sqlite3_str_errcode(X)] method will return
7416
+ ** an appropriate error code. ^The [sqlite3_str_errcode(X)] method returns
7417
+ ** [SQLITE_NOMEM] following any out-of-memory error, or
7418
+ ** [SQLITE_TOOBIG] if the size of the dynamic string exceeds
7419
+ ** [SQLITE_MAX_LENGTH], or [SQLITE_OK] if there have been no errors.
7420
+ **
7421
+ ** ^The [sqlite3_str_length(X)] method returns the current length, in bytes,
7422
+ ** of the dynamic string under construction in [sqlite3_str] object X.
7423
+ ** ^The length returned by [sqlite3_str_length(X)] does not include the
7424
+ ** zero-termination byte.
7425
+ **
7426
+ ** ^The [sqlite3_str_value(X)] method returns a pointer to the current
7427
+ ** content of the dynamic string under construction in X. The value
7428
+ ** returned by [sqlite3_str_value(X)] is managed by the sqlite3_str object X
7429
+ ** and might be freed or altered by any subsequent method on the same
7430
+ ** [sqlite3_str] object. Applications must not used the pointer returned
7431
+ ** [sqlite3_str_value(X)] after any subsequent method call on the same
7432
+ ** object. ^Applications may change the content of the string returned
7433
+ ** by [sqlite3_str_value(X)] as long as they do not write into any bytes
7434
+ ** outside the range of 0 to [sqlite3_str_length(X)] and do not read or
7435
+ ** write any byte after any subsequent sqlite3_str method call.
7436
+ */
7437
+ SQLITE_API int sqlite3_str_errcode(sqlite3_str*);
7438
+ SQLITE_API int sqlite3_str_length(sqlite3_str*);
7439
+ SQLITE_API char *sqlite3_str_value(sqlite3_str*);
7026
7440
 
7027
7441
  /*
7028
7442
  ** CAPI3REF: SQLite Runtime Status
@@ -7106,7 +7520,7 @@ SQLITE_API int sqlite3_status64(
7106
7520
  ** [[SQLITE_STATUS_PAGECACHE_SIZE]] ^(<dt>SQLITE_STATUS_PAGECACHE_SIZE</dt>
7107
7521
  ** <dd>This parameter records the largest memory allocation request
7108
7522
  ** handed to [pagecache memory allocator]. Only the value returned in the
7109
- ** *pHighwater parameter to [sqlite3_status()] is of interest.
7523
+ ** *pHighwater parameter to [sqlite3_status()] is of interest.
7110
7524
  ** The value written into the *pCurrent parameter is undefined.</dd>)^
7111
7525
  **
7112
7526
  ** [[SQLITE_STATUS_SCRATCH_USED]] <dt>SQLITE_STATUS_SCRATCH_USED</dt>
@@ -7119,7 +7533,7 @@ SQLITE_API int sqlite3_status64(
7119
7533
  ** <dd>No longer used.</dd>
7120
7534
  **
7121
7535
  ** [[SQLITE_STATUS_PARSER_STACK]] ^(<dt>SQLITE_STATUS_PARSER_STACK</dt>
7122
- ** <dd>The *pHighwater parameter records the deepest parser stack.
7536
+ ** <dd>The *pHighwater parameter records the deepest parser stack.
7123
7537
  ** The *pCurrent value is undefined. The *pHighwater value is only
7124
7538
  ** meaningful if SQLite is compiled with [YYTRACKMAXSTACKDEPTH].</dd>)^
7125
7539
  ** </dl>
@@ -7206,7 +7620,7 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r
7206
7620
  ** memory used by all pager caches associated with the database connection.)^
7207
7621
  ** ^The highwater mark associated with SQLITE_DBSTATUS_CACHE_USED is always 0.
7208
7622
  **
7209
- ** [[SQLITE_DBSTATUS_CACHE_USED_SHARED]]
7623
+ ** [[SQLITE_DBSTATUS_CACHE_USED_SHARED]]
7210
7624
  ** ^(<dt>SQLITE_DBSTATUS_CACHE_USED_SHARED</dt>
7211
7625
  ** <dd>This parameter is similar to DBSTATUS_CACHE_USED, except that if a
7212
7626
  ** pager cache is shared between two or more connections the bytes of heap
@@ -7257,6 +7671,15 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r
7257
7671
  ** highwater mark associated with SQLITE_DBSTATUS_CACHE_WRITE is always 0.
7258
7672
  ** </dd>
7259
7673
  **
7674
+ ** [[SQLITE_DBSTATUS_CACHE_SPILL]] ^(<dt>SQLITE_DBSTATUS_CACHE_SPILL</dt>
7675
+ ** <dd>This parameter returns the number of dirty cache entries that have
7676
+ ** been written to disk in the middle of a transaction due to the page
7677
+ ** cache overflowing. Transactions are more efficient if they are written
7678
+ ** to disk all at once. When pages spill mid-transaction, that introduces
7679
+ ** additional overhead. This parameter can be used help identify
7680
+ ** inefficiencies that can be resolve by increasing the cache size.
7681
+ ** </dd>
7682
+ **
7260
7683
  ** [[SQLITE_DBSTATUS_DEFERRED_FKS]] ^(<dt>SQLITE_DBSTATUS_DEFERRED_FKS</dt>
7261
7684
  ** <dd>This parameter returns zero for the current value if and only if
7262
7685
  ** all foreign key constraints (deferred or immediate) have been
@@ -7276,7 +7699,8 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r
7276
7699
  #define SQLITE_DBSTATUS_CACHE_WRITE 9
7277
7700
  #define SQLITE_DBSTATUS_DEFERRED_FKS 10
7278
7701
  #define SQLITE_DBSTATUS_CACHE_USED_SHARED 11
7279
- #define SQLITE_DBSTATUS_MAX 11 /* Largest defined DBSTATUS */
7702
+ #define SQLITE_DBSTATUS_CACHE_SPILL 12
7703
+ #define SQLITE_DBSTATUS_MAX 12 /* Largest defined DBSTATUS */
7280
7704
 
7281
7705
 
7282
7706
  /*
@@ -7342,7 +7766,7 @@ SQLITE_API int sqlite3_stmt_status(sqlite3_stmt*, int op,int resetFlg);
7342
7766
  **
7343
7767
  ** [[SQLITE_STMTSTATUS_REPREPARE]] <dt>SQLITE_STMTSTATUS_REPREPARE</dt>
7344
7768
  ** <dd>^This is the number of times that the prepare statement has been
7345
- ** automatically regenerated due to schema changes or change to
7769
+ ** automatically regenerated due to schema changes or change to
7346
7770
  ** [bound parameters] that might affect the query plan.
7347
7771
  **
7348
7772
  ** [[SQLITE_STMTSTATUS_RUN]] <dt>SQLITE_STMTSTATUS_RUN</dt>
@@ -7651,7 +8075,7 @@ typedef struct sqlite3_backup sqlite3_backup;
7651
8075
  ** must be different or else sqlite3_backup_init(D,N,S,M) will fail with
7652
8076
  ** an error.
7653
8077
  **
7654
- ** ^A call to sqlite3_backup_init() will fail, returning NULL, if
8078
+ ** ^A call to sqlite3_backup_init() will fail, returning NULL, if
7655
8079
  ** there is already a read or read-write transaction open on the
7656
8080
  ** destination database.
7657
8081
  **
@@ -8231,6 +8655,7 @@ SQLITE_API int sqlite3_vtab_config(sqlite3*, int op, ...);
8231
8655
  ** can use to customize and optimize their behavior.
8232
8656
  **
8233
8657
  ** <dl>
8658
+ ** [[SQLITE_VTAB_CONSTRAINT_SUPPORT]]
8234
8659
  ** <dt>SQLITE_VTAB_CONSTRAINT_SUPPORT
8235
8660
  ** <dd>Calls of the form
8236
8661
  ** [sqlite3_vtab_config](db,SQLITE_VTAB_CONSTRAINT_SUPPORT,X) are supported,
@@ -8276,6 +8701,40 @@ SQLITE_API int sqlite3_vtab_config(sqlite3*, int op, ...);
8276
8701
  */
8277
8702
  SQLITE_API int sqlite3_vtab_on_conflict(sqlite3 *);
8278
8703
 
8704
+ /*
8705
+ ** CAPI3REF: Determine If Virtual Table Column Access Is For UPDATE
8706
+ **
8707
+ ** If the sqlite3_vtab_nochange(X) routine is called within the [xColumn]
8708
+ ** method of a [virtual table], then it returns true if and only if the
8709
+ ** column is being fetched as part of an UPDATE operation during which the
8710
+ ** column value will not change. Applications might use this to substitute
8711
+ ** a return value that is less expensive to compute and that the corresponding
8712
+ ** [xUpdate] method understands as a "no-change" value.
8713
+ **
8714
+ ** If the [xColumn] method calls sqlite3_vtab_nochange() and finds that
8715
+ ** the column is not changed by the UPDATE statement, then the xColumn
8716
+ ** method can optionally return without setting a result, without calling
8717
+ ** any of the [sqlite3_result_int|sqlite3_result_xxxxx() interfaces].
8718
+ ** In that case, [sqlite3_value_nochange(X)] will return true for the
8719
+ ** same column in the [xUpdate] method.
8720
+ */
8721
+ SQLITE_API int sqlite3_vtab_nochange(sqlite3_context*);
8722
+
8723
+ /*
8724
+ ** CAPI3REF: Determine The Collation For a Virtual Table Constraint
8725
+ **
8726
+ ** This function may only be called from within a call to the [xBestIndex]
8727
+ ** method of a [virtual table].
8728
+ **
8729
+ ** The first argument must be the sqlite3_index_info object that is the
8730
+ ** first parameter to the xBestIndex() method. The second argument must be
8731
+ ** an index into the aConstraint[] array belonging to the sqlite3_index_info
8732
+ ** structure passed to xBestIndex. This function returns a pointer to a buffer
8733
+ ** containing the name of the collation sequence for the corresponding
8734
+ ** constraint.
8735
+ */
8736
+ SQLITE_API SQLITE_EXPERIMENTAL const char *sqlite3_vtab_collation(sqlite3_index_info*,int);
8737
+
8279
8738
  /*
8280
8739
  ** CAPI3REF: Conflict resolution modes
8281
8740
  ** KEYWORDS: {conflict resolution mode}
@@ -8402,15 +8861,15 @@ SQLITE_API void sqlite3_stmt_scanstatus_reset(sqlite3_stmt*);
8402
8861
  **
8403
8862
  ** ^If a write-transaction is open on [database connection] D when the
8404
8863
  ** [sqlite3_db_cacheflush(D)] interface invoked, any dirty
8405
- ** pages in the pager-cache that are not currently in use are written out
8864
+ ** pages in the pager-cache that are not currently in use are written out
8406
8865
  ** to disk. A dirty page may be in use if a database cursor created by an
8407
8866
  ** active SQL statement is reading from it, or if it is page 1 of a database
8408
8867
  ** file (page 1 is always "in use"). ^The [sqlite3_db_cacheflush(D)]
8409
8868
  ** interface flushes caches for all schemas - "main", "temp", and
8410
8869
  ** any [attached] databases.
8411
8870
  **
8412
- ** ^If this function needs to obtain extra database locks before dirty pages
8413
- ** can be flushed to disk, it does so. ^If those locks cannot be obtained
8871
+ ** ^If this function needs to obtain extra database locks before dirty pages
8872
+ ** can be flushed to disk, it does so. ^If those locks cannot be obtained
8414
8873
  ** immediately and there is a busy-handler callback configured, it is invoked
8415
8874
  ** in the usual manner. ^If the required lock still cannot be obtained, then
8416
8875
  ** the database is skipped and an attempt made to flush any dirty pages
@@ -8457,16 +8916,16 @@ SQLITE_API int sqlite3_db_cacheflush(sqlite3*);
8457
8916
  ** kind of update operation that is about to occur.
8458
8917
  ** ^(The fourth parameter to the preupdate callback is the name of the
8459
8918
  ** database within the database connection that is being modified. This
8460
- ** will be "main" for the main database or "temp" for TEMP tables or
8919
+ ** will be "main" for the main database or "temp" for TEMP tables or
8461
8920
  ** the name given after the AS keyword in the [ATTACH] statement for attached
8462
8921
  ** databases.)^
8463
8922
  ** ^The fifth parameter to the preupdate callback is the name of the
8464
8923
  ** table that is being modified.
8465
8924
  **
8466
8925
  ** For an UPDATE or DELETE operation on a [rowid table], the sixth
8467
- ** parameter passed to the preupdate callback is the initial [rowid] of the
8926
+ ** parameter passed to the preupdate callback is the initial [rowid] of the
8468
8927
  ** row being modified or deleted. For an INSERT operation on a rowid table,
8469
- ** or any operation on a WITHOUT ROWID table, the value of the sixth
8928
+ ** or any operation on a WITHOUT ROWID table, the value of the sixth
8470
8929
  ** parameter is undefined. For an INSERT or UPDATE on a rowid table the
8471
8930
  ** seventh parameter is the final rowid value of the row being inserted
8472
8931
  ** or updated. The value of the seventh parameter passed to the callback
@@ -8505,7 +8964,7 @@ SQLITE_API int sqlite3_db_cacheflush(sqlite3*);
8505
8964
  **
8506
8965
  ** ^The [sqlite3_preupdate_depth(D)] interface returns 0 if the preupdate
8507
8966
  ** callback was invoked as a result of a direct insert, update, or delete
8508
- ** operation; or 1 for inserts, updates, or deletes invoked by top-level
8967
+ ** operation; or 1 for inserts, updates, or deletes invoked by top-level
8509
8968
  ** triggers; or 2 for changes resulting from triggers called by top-level
8510
8969
  ** triggers; and so forth.
8511
8970
  **
@@ -8539,14 +8998,13 @@ SQLITE_API int sqlite3_preupdate_new(sqlite3 *, int, sqlite3_value **);
8539
8998
  ** The return value is OS-dependent. For example, on unix systems, after
8540
8999
  ** [sqlite3_open_v2()] returns [SQLITE_CANTOPEN], this interface could be
8541
9000
  ** called to get back the underlying "errno" that caused the problem, such
8542
- ** as ENOSPC, EAUTH, EISDIR, and so forth.
9001
+ ** as ENOSPC, EAUTH, EISDIR, and so forth.
8543
9002
  */
8544
9003
  SQLITE_API int sqlite3_system_errno(sqlite3*);
8545
9004
 
8546
9005
  /*
8547
9006
  ** CAPI3REF: Database Snapshot
8548
9007
  ** KEYWORDS: {snapshot} {sqlite3_snapshot}
8549
- ** EXPERIMENTAL
8550
9008
  **
8551
9009
  ** An instance of the snapshot object records the state of a [WAL mode]
8552
9010
  ** database for some specific point in history.
@@ -8563,11 +9021,6 @@ SQLITE_API int sqlite3_system_errno(sqlite3*);
8563
9021
  ** version of the database file so that it is possible to later open a new read
8564
9022
  ** transaction that sees that historical version of the database rather than
8565
9023
  ** the most recent version.
8566
- **
8567
- ** The constructor for this object is [sqlite3_snapshot_get()]. The
8568
- ** [sqlite3_snapshot_open()] method causes a fresh read transaction to refer
8569
- ** to an historical snapshot (if possible). The destructor for
8570
- ** sqlite3_snapshot objects is [sqlite3_snapshot_free()].
8571
9024
  */
8572
9025
  typedef struct sqlite3_snapshot {
8573
9026
  unsigned char hidden[48];
@@ -8575,7 +9028,7 @@ typedef struct sqlite3_snapshot {
8575
9028
 
8576
9029
  /*
8577
9030
  ** CAPI3REF: Record A Database Snapshot
8578
- ** EXPERIMENTAL
9031
+ ** CONSTRUCTOR: sqlite3_snapshot
8579
9032
  **
8580
9033
  ** ^The [sqlite3_snapshot_get(D,S,P)] interface attempts to make a
8581
9034
  ** new [sqlite3_snapshot] object that records the current state of
@@ -8583,15 +9036,15 @@ typedef struct sqlite3_snapshot {
8583
9036
  ** [sqlite3_snapshot_get(D,S,P)] interface writes a pointer to the newly
8584
9037
  ** created [sqlite3_snapshot] object into *P and returns SQLITE_OK.
8585
9038
  ** If there is not already a read-transaction open on schema S when
8586
- ** this function is called, one is opened automatically.
9039
+ ** this function is called, one is opened automatically.
8587
9040
  **
8588
9041
  ** The following must be true for this function to succeed. If any of
8589
9042
  ** the following statements are false when sqlite3_snapshot_get() is
8590
9043
  ** called, SQLITE_ERROR is returned. The final value of *P is undefined
8591
- ** in this case.
9044
+ ** in this case.
8592
9045
  **
8593
9046
  ** <ul>
8594
- ** <li> The database handle must be in [autocommit mode].
9047
+ ** <li> The database handle must not be in [autocommit mode].
8595
9048
  **
8596
9049
  ** <li> Schema S of [database connection] D must be a [WAL mode] database.
8597
9050
  **
@@ -8600,13 +9053,13 @@ typedef struct sqlite3_snapshot {
8600
9053
  **
8601
9054
  ** <li> One or more transactions must have been written to the current wal
8602
9055
  ** file since it was created on disk (by any connection). This means
8603
- ** that a snapshot cannot be taken on a wal mode database with no wal
9056
+ ** that a snapshot cannot be taken on a wal mode database with no wal
8604
9057
  ** file immediately after it is first opened. At least one transaction
8605
9058
  ** must be written to it first.
8606
9059
  ** </ul>
8607
9060
  **
8608
9061
  ** This function may also return SQLITE_NOMEM. If it is called with the
8609
- ** database handle in autocommit mode but fails for some other reason,
9062
+ ** database handle in autocommit mode but fails for some other reason,
8610
9063
  ** whether or not a read transaction is opened on schema S is undefined.
8611
9064
  **
8612
9065
  ** The [sqlite3_snapshot] object returned from a successful call to
@@ -8614,7 +9067,7 @@ typedef struct sqlite3_snapshot {
8614
9067
  ** to avoid a memory leak.
8615
9068
  **
8616
9069
  ** The [sqlite3_snapshot_get()] interface is only available when the
8617
- ** SQLITE_ENABLE_SNAPSHOT compile-time option is used.
9070
+ ** [SQLITE_ENABLE_SNAPSHOT] compile-time option is used.
8618
9071
  */
8619
9072
  SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_get(
8620
9073
  sqlite3 *db,
@@ -8624,35 +9077,46 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_get(
8624
9077
 
8625
9078
  /*
8626
9079
  ** CAPI3REF: Start a read transaction on an historical snapshot
8627
- ** EXPERIMENTAL
9080
+ ** METHOD: sqlite3_snapshot
9081
+ **
9082
+ ** ^The [sqlite3_snapshot_open(D,S,P)] interface either starts a new read
9083
+ ** transaction or upgrades an existing one for schema S of
9084
+ ** [database connection] D such that the read transaction refers to
9085
+ ** historical [snapshot] P, rather than the most recent change to the
9086
+ ** database. ^The [sqlite3_snapshot_open()] interface returns SQLITE_OK
9087
+ ** on success or an appropriate [error code] if it fails.
9088
+ **
9089
+ ** ^In order to succeed, the database connection must not be in
9090
+ ** [autocommit mode] when [sqlite3_snapshot_open(D,S,P)] is called. If there
9091
+ ** is already a read transaction open on schema S, then the database handle
9092
+ ** must have no active statements (SELECT statements that have been passed
9093
+ ** to sqlite3_step() but not sqlite3_reset() or sqlite3_finalize()).
9094
+ ** SQLITE_ERROR is returned if either of these conditions is violated, or
9095
+ ** if schema S does not exist, or if the snapshot object is invalid.
9096
+ **
9097
+ ** ^A call to sqlite3_snapshot_open() will fail to open if the specified
9098
+ ** snapshot has been overwritten by a [checkpoint]. In this case
9099
+ ** SQLITE_ERROR_SNAPSHOT is returned.
9100
+ **
9101
+ ** If there is already a read transaction open when this function is
9102
+ ** invoked, then the same read transaction remains open (on the same
9103
+ ** database snapshot) if SQLITE_ERROR, SQLITE_BUSY or SQLITE_ERROR_SNAPSHOT
9104
+ ** is returned. If another error code - for example SQLITE_PROTOCOL or an
9105
+ ** SQLITE_IOERR error code - is returned, then the final state of the
9106
+ ** read transaction is undefined. If SQLITE_OK is returned, then the
9107
+ ** read transaction is now open on database snapshot P.
8628
9108
  **
8629
- ** ^The [sqlite3_snapshot_open(D,S,P)] interface starts a
8630
- ** read transaction for schema S of
8631
- ** [database connection] D such that the read transaction
8632
- ** refers to historical [snapshot] P, rather than the most
8633
- ** recent change to the database.
8634
- ** ^The [sqlite3_snapshot_open()] interface returns SQLITE_OK on success
8635
- ** or an appropriate [error code] if it fails.
8636
- **
8637
- ** ^In order to succeed, a call to [sqlite3_snapshot_open(D,S,P)] must be
8638
- ** the first operation following the [BEGIN] that takes the schema S
8639
- ** out of [autocommit mode].
8640
- ** ^In other words, schema S must not currently be in
8641
- ** a transaction for [sqlite3_snapshot_open(D,S,P)] to work, but the
8642
- ** database connection D must be out of [autocommit mode].
8643
- ** ^A [snapshot] will fail to open if it has been overwritten by a
8644
- ** [checkpoint].
8645
9109
  ** ^(A call to [sqlite3_snapshot_open(D,S,P)] will fail if the
8646
9110
  ** database connection D does not know that the database file for
8647
9111
  ** schema S is in [WAL mode]. A database connection might not know
8648
9112
  ** that the database file is in [WAL mode] if there has been no prior
8649
- ** I/O on that database connection, or if the database entered [WAL mode]
9113
+ ** I/O on that database connection, or if the database entered [WAL mode]
8650
9114
  ** after the most recent I/O on the database connection.)^
8651
9115
  ** (Hint: Run "[PRAGMA application_id]" against a newly opened
8652
9116
  ** database connection in order to make it ready to use snapshots.)
8653
9117
  **
8654
9118
  ** The [sqlite3_snapshot_open()] interface is only available when the
8655
- ** SQLITE_ENABLE_SNAPSHOT compile-time option is used.
9119
+ ** [SQLITE_ENABLE_SNAPSHOT] compile-time option is used.
8656
9120
  */
8657
9121
  SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_open(
8658
9122
  sqlite3 *db,
@@ -8662,38 +9126,41 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_open(
8662
9126
 
8663
9127
  /*
8664
9128
  ** CAPI3REF: Destroy a snapshot
8665
- ** EXPERIMENTAL
9129
+ ** DESTRUCTOR: sqlite3_snapshot
8666
9130
  **
8667
9131
  ** ^The [sqlite3_snapshot_free(P)] interface destroys [sqlite3_snapshot] P.
8668
9132
  ** The application must eventually free every [sqlite3_snapshot] object
8669
9133
  ** using this routine to avoid a memory leak.
8670
9134
  **
8671
9135
  ** The [sqlite3_snapshot_free()] interface is only available when the
8672
- ** SQLITE_ENABLE_SNAPSHOT compile-time option is used.
9136
+ ** [SQLITE_ENABLE_SNAPSHOT] compile-time option is used.
8673
9137
  */
8674
9138
  SQLITE_API SQLITE_EXPERIMENTAL void sqlite3_snapshot_free(sqlite3_snapshot*);
8675
9139
 
8676
9140
  /*
8677
9141
  ** CAPI3REF: Compare the ages of two snapshot handles.
8678
- ** EXPERIMENTAL
9142
+ ** METHOD: sqlite3_snapshot
8679
9143
  **
8680
9144
  ** The sqlite3_snapshot_cmp(P1, P2) interface is used to compare the ages
8681
- ** of two valid snapshot handles.
9145
+ ** of two valid snapshot handles.
8682
9146
  **
8683
- ** If the two snapshot handles are not associated with the same database
8684
- ** file, the result of the comparison is undefined.
9147
+ ** If the two snapshot handles are not associated with the same database
9148
+ ** file, the result of the comparison is undefined.
8685
9149
  **
8686
9150
  ** Additionally, the result of the comparison is only valid if both of the
8687
9151
  ** snapshot handles were obtained by calling sqlite3_snapshot_get() since the
8688
9152
  ** last time the wal file was deleted. The wal file is deleted when the
8689
9153
  ** database is changed back to rollback mode or when the number of database
8690
- ** clients drops to zero. If either snapshot handle was obtained before the
8691
- ** wal file was last deleted, the value returned by this function
9154
+ ** clients drops to zero. If either snapshot handle was obtained before the
9155
+ ** wal file was last deleted, the value returned by this function
8692
9156
  ** is undefined.
8693
9157
  **
8694
9158
  ** Otherwise, this API returns a negative value if P1 refers to an older
8695
9159
  ** snapshot than P2, zero if the two handles refer to the same database
8696
9160
  ** snapshot, and a positive value if P1 is a newer snapshot than P2.
9161
+ **
9162
+ ** This interface is only available if SQLite is compiled with the
9163
+ ** [SQLITE_ENABLE_SNAPSHOT] option.
8697
9164
  */
8698
9165
  SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_cmp(
8699
9166
  sqlite3_snapshot *p1,
@@ -8702,26 +9169,151 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_cmp(
8702
9169
 
8703
9170
  /*
8704
9171
  ** CAPI3REF: Recover snapshots from a wal file
8705
- ** EXPERIMENTAL
9172
+ ** METHOD: sqlite3_snapshot
8706
9173
  **
8707
- ** If all connections disconnect from a database file but do not perform
8708
- ** a checkpoint, the existing wal file is opened along with the database
8709
- ** file the next time the database is opened. At this point it is only
8710
- ** possible to successfully call sqlite3_snapshot_open() to open the most
8711
- ** recent snapshot of the database (the one at the head of the wal file),
8712
- ** even though the wal file may contain other valid snapshots for which
8713
- ** clients have sqlite3_snapshot handles.
9174
+ ** If a [WAL file] remains on disk after all database connections close
9175
+ ** (either through the use of the [SQLITE_FCNTL_PERSIST_WAL] [file control]
9176
+ ** or because the last process to have the database opened exited without
9177
+ ** calling [sqlite3_close()]) and a new connection is subsequently opened
9178
+ ** on that database and [WAL file], the [sqlite3_snapshot_open()] interface
9179
+ ** will only be able to open the last transaction added to the WAL file
9180
+ ** even though the WAL file contains other valid transactions.
8714
9181
  **
8715
- ** This function attempts to scan the wal file associated with database zDb
9182
+ ** This function attempts to scan the WAL file associated with database zDb
8716
9183
  ** of database handle db and make all valid snapshots available to
8717
9184
  ** sqlite3_snapshot_open(). It is an error if there is already a read
8718
- ** transaction open on the database, or if the database is not a wal mode
9185
+ ** transaction open on the database, or if the database is not a WAL mode
8719
9186
  ** database.
8720
9187
  **
8721
9188
  ** SQLITE_OK is returned if successful, or an SQLite error code otherwise.
9189
+ **
9190
+ ** This interface is only available if SQLite is compiled with the
9191
+ ** [SQLITE_ENABLE_SNAPSHOT] option.
8722
9192
  */
8723
9193
  SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_recover(sqlite3 *db, const char *zDb);
8724
9194
 
9195
+ /*
9196
+ ** CAPI3REF: Serialize a database
9197
+ **
9198
+ ** The sqlite3_serialize(D,S,P,F) interface returns a pointer to memory
9199
+ ** that is a serialization of the S database on [database connection] D.
9200
+ ** If P is not a NULL pointer, then the size of the database in bytes
9201
+ ** is written into *P.
9202
+ **
9203
+ ** For an ordinary on-disk database file, the serialization is just a
9204
+ ** copy of the disk file. For an in-memory database or a "TEMP" database,
9205
+ ** the serialization is the same sequence of bytes which would be written
9206
+ ** to disk if that database where backed up to disk.
9207
+ **
9208
+ ** The usual case is that sqlite3_serialize() copies the serialization of
9209
+ ** the database into memory obtained from [sqlite3_malloc64()] and returns
9210
+ ** a pointer to that memory. The caller is responsible for freeing the
9211
+ ** returned value to avoid a memory leak. However, if the F argument
9212
+ ** contains the SQLITE_SERIALIZE_NOCOPY bit, then no memory allocations
9213
+ ** are made, and the sqlite3_serialize() function will return a pointer
9214
+ ** to the contiguous memory representation of the database that SQLite
9215
+ ** is currently using for that database, or NULL if the no such contiguous
9216
+ ** memory representation of the database exists. A contiguous memory
9217
+ ** representation of the database will usually only exist if there has
9218
+ ** been a prior call to [sqlite3_deserialize(D,S,...)] with the same
9219
+ ** values of D and S.
9220
+ ** The size of the database is written into *P even if the
9221
+ ** SQLITE_SERIALIZE_NOCOPY bit is set but no contiguous copy
9222
+ ** of the database exists.
9223
+ **
9224
+ ** A call to sqlite3_serialize(D,S,P,F) might return NULL even if the
9225
+ ** SQLITE_SERIALIZE_NOCOPY bit is omitted from argument F if a memory
9226
+ ** allocation error occurs.
9227
+ **
9228
+ ** This interface is only available if SQLite is compiled with the
9229
+ ** [SQLITE_ENABLE_DESERIALIZE] option.
9230
+ */
9231
+ SQLITE_API unsigned char *sqlite3_serialize(
9232
+ sqlite3 *db, /* The database connection */
9233
+ const char *zSchema, /* Which DB to serialize. ex: "main", "temp", ... */
9234
+ sqlite3_int64 *piSize, /* Write size of the DB here, if not NULL */
9235
+ unsigned int mFlags /* Zero or more SQLITE_SERIALIZE_* flags */
9236
+ );
9237
+
9238
+ /*
9239
+ ** CAPI3REF: Flags for sqlite3_serialize
9240
+ **
9241
+ ** Zero or more of the following constants can be OR-ed together for
9242
+ ** the F argument to [sqlite3_serialize(D,S,P,F)].
9243
+ **
9244
+ ** SQLITE_SERIALIZE_NOCOPY means that [sqlite3_serialize()] will return
9245
+ ** a pointer to contiguous in-memory database that it is currently using,
9246
+ ** without making a copy of the database. If SQLite is not currently using
9247
+ ** a contiguous in-memory database, then this option causes
9248
+ ** [sqlite3_serialize()] to return a NULL pointer. SQLite will only be
9249
+ ** using a contiguous in-memory database if it has been initialized by a
9250
+ ** prior call to [sqlite3_deserialize()].
9251
+ */
9252
+ #define SQLITE_SERIALIZE_NOCOPY 0x001 /* Do no memory allocations */
9253
+
9254
+ /*
9255
+ ** CAPI3REF: Deserialize a database
9256
+ **
9257
+ ** The sqlite3_deserialize(D,S,P,N,M,F) interface causes the
9258
+ ** [database connection] D to disconnect from database S and then
9259
+ ** reopen S as an in-memory database based on the serialization contained
9260
+ ** in P. The serialized database P is N bytes in size. M is the size of
9261
+ ** the buffer P, which might be larger than N. If M is larger than N, and
9262
+ ** the SQLITE_DESERIALIZE_READONLY bit is not set in F, then SQLite is
9263
+ ** permitted to add content to the in-memory database as long as the total
9264
+ ** size does not exceed M bytes.
9265
+ **
9266
+ ** If the SQLITE_DESERIALIZE_FREEONCLOSE bit is set in F, then SQLite will
9267
+ ** invoke sqlite3_free() on the serialization buffer when the database
9268
+ ** connection closes. If the SQLITE_DESERIALIZE_RESIZEABLE bit is set, then
9269
+ ** SQLite will try to increase the buffer size using sqlite3_realloc64()
9270
+ ** if writes on the database cause it to grow larger than M bytes.
9271
+ **
9272
+ ** The sqlite3_deserialize() interface will fail with SQLITE_BUSY if the
9273
+ ** database is currently in a read transaction or is involved in a backup
9274
+ ** operation.
9275
+ **
9276
+ ** If sqlite3_deserialize(D,S,P,N,M,F) fails for any reason and if the
9277
+ ** SQLITE_DESERIALIZE_FREEONCLOSE bit is set in argument F, then
9278
+ ** [sqlite3_free()] is invoked on argument P prior to returning.
9279
+ **
9280
+ ** This interface is only available if SQLite is compiled with the
9281
+ ** [SQLITE_ENABLE_DESERIALIZE] option.
9282
+ */
9283
+ SQLITE_API int sqlite3_deserialize(
9284
+ sqlite3 *db, /* The database connection */
9285
+ const char *zSchema, /* Which DB to reopen with the deserialization */
9286
+ unsigned char *pData, /* The serialized database content */
9287
+ sqlite3_int64 szDb, /* Number bytes in the deserialization */
9288
+ sqlite3_int64 szBuf, /* Total size of buffer pData[] */
9289
+ unsigned mFlags /* Zero or more SQLITE_DESERIALIZE_* flags */
9290
+ );
9291
+
9292
+ /*
9293
+ ** CAPI3REF: Flags for sqlite3_deserialize()
9294
+ **
9295
+ ** The following are allowed values for 6th argument (the F argument) to
9296
+ ** the [sqlite3_deserialize(D,S,P,N,M,F)] interface.
9297
+ **
9298
+ ** The SQLITE_DESERIALIZE_FREEONCLOSE means that the database serialization
9299
+ ** in the P argument is held in memory obtained from [sqlite3_malloc64()]
9300
+ ** and that SQLite should take ownership of this memory and automatically
9301
+ ** free it when it has finished using it. Without this flag, the caller
9302
+ ** is responsible for freeing any dynamically allocated memory.
9303
+ **
9304
+ ** The SQLITE_DESERIALIZE_RESIZEABLE flag means that SQLite is allowed to
9305
+ ** grow the size of the database using calls to [sqlite3_realloc64()]. This
9306
+ ** flag should only be used if SQLITE_DESERIALIZE_FREEONCLOSE is also used.
9307
+ ** Without this flag, the deserialized database cannot increase in size beyond
9308
+ ** the number of bytes specified by the M parameter.
9309
+ **
9310
+ ** The SQLITE_DESERIALIZE_READONLY flag means that the deserialized database
9311
+ ** should be treated as read-only.
9312
+ */
9313
+ #define SQLITE_DESERIALIZE_FREEONCLOSE 1 /* Call sqlite3_free() on close */
9314
+ #define SQLITE_DESERIALIZE_RESIZEABLE 2 /* Resize using sqlite3_realloc64() */
9315
+ #define SQLITE_DESERIALIZE_READONLY 4 /* Database is read-only */
9316
+
8725
9317
  /*
8726
9318
  ** Undo the hack that converts floating point types to integer for
8727
9319
  ** builds on processors without floating point support.
@@ -8833,7 +9425,7 @@ struct sqlite3_rtree_query_info {
8833
9425
  sqlite3_int64 iRowid; /* Rowid for current entry */
8834
9426
  sqlite3_rtree_dbl rParentScore; /* Score of parent node */
8835
9427
  int eParentWithin; /* Visibility of parent node */
8836
- int eWithin; /* OUT: Visiblity */
9428
+ int eWithin; /* OUT: Visibility */
8837
9429
  sqlite3_rtree_dbl rScore; /* OUT: Write the score here */
8838
9430
  /* The following fields are only available in 3.8.11 and later */
8839
9431
  sqlite3_value **apSqlParam; /* Original SQL values of parameters */
@@ -8869,16 +9461,23 @@ extern "C" {
8869
9461
 
8870
9462
  /*
8871
9463
  ** CAPI3REF: Session Object Handle
9464
+ **
9465
+ ** An instance of this object is a [session] that can be used to
9466
+ ** record changes to a database.
8872
9467
  */
8873
9468
  typedef struct sqlite3_session sqlite3_session;
8874
9469
 
8875
9470
  /*
8876
9471
  ** CAPI3REF: Changeset Iterator Handle
9472
+ **
9473
+ ** An instance of this object acts as a cursor for iterating
9474
+ ** over the elements of a [changeset] or [patchset].
8877
9475
  */
8878
9476
  typedef struct sqlite3_changeset_iter sqlite3_changeset_iter;
8879
9477
 
8880
9478
  /*
8881
9479
  ** CAPI3REF: Create A New Session Object
9480
+ ** CONSTRUCTOR: sqlite3_session
8882
9481
  **
8883
9482
  ** Create a new session object attached to database handle db. If successful,
8884
9483
  ** a pointer to the new object is written to *ppSession and SQLITE_OK is
@@ -8899,7 +9498,7 @@ typedef struct sqlite3_changeset_iter sqlite3_changeset_iter;
8899
9498
  ** is not possible for an application to register a pre-update hook on a
8900
9499
  ** database handle that has one or more session objects attached. Nor is
8901
9500
  ** it possible to create a session object attached to a database handle for
8902
- ** which a pre-update hook is already defined. The results of attempting
9501
+ ** which a pre-update hook is already defined. The results of attempting
8903
9502
  ** either of these things are undefined.
8904
9503
  **
8905
9504
  ** The session object will be used to create changesets for tables in
@@ -8915,14 +9514,15 @@ SQLITE_API int sqlite3session_create(
8915
9514
 
8916
9515
  /*
8917
9516
  ** CAPI3REF: Delete A Session Object
9517
+ ** DESTRUCTOR: sqlite3_session
8918
9518
  **
8919
- ** Delete a session object previously allocated using
9519
+ ** Delete a session object previously allocated using
8920
9520
  ** [sqlite3session_create()]. Once a session object has been deleted, the
8921
9521
  ** results of attempting to use pSession with any other session module
8922
9522
  ** function are undefined.
8923
9523
  **
8924
9524
  ** Session objects must be deleted before the database handle to which they
8925
- ** are attached is closed. Refer to the documentation for
9525
+ ** are attached is closed. Refer to the documentation for
8926
9526
  ** [sqlite3session_create()] for details.
8927
9527
  */
8928
9528
  SQLITE_API void sqlite3session_delete(sqlite3_session *pSession);
@@ -8930,6 +9530,7 @@ SQLITE_API void sqlite3session_delete(sqlite3_session *pSession);
8930
9530
 
8931
9531
  /*
8932
9532
  ** CAPI3REF: Enable Or Disable A Session Object
9533
+ ** METHOD: sqlite3_session
8933
9534
  **
8934
9535
  ** Enable or disable the recording of changes by a session object. When
8935
9536
  ** enabled, a session object records changes made to the database. When
@@ -8939,16 +9540,17 @@ SQLITE_API void sqlite3session_delete(sqlite3_session *pSession);
8939
9540
  ** the eventual changesets.
8940
9541
  **
8941
9542
  ** Passing zero to this function disables the session. Passing a value
8942
- ** greater than zero enables it. Passing a value less than zero is a
9543
+ ** greater than zero enables it. Passing a value less than zero is a
8943
9544
  ** no-op, and may be used to query the current state of the session.
8944
9545
  **
8945
- ** The return value indicates the final state of the session object: 0 if
9546
+ ** The return value indicates the final state of the session object: 0 if
8946
9547
  ** the session is disabled, or 1 if it is enabled.
8947
9548
  */
8948
9549
  SQLITE_API int sqlite3session_enable(sqlite3_session *pSession, int bEnable);
8949
9550
 
8950
9551
  /*
8951
9552
  ** CAPI3REF: Set Or Clear the Indirect Change Flag
9553
+ ** METHOD: sqlite3_session
8952
9554
  **
8953
9555
  ** Each change recorded by a session object is marked as either direct or
8954
9556
  ** indirect. A change is marked as indirect if either:
@@ -8956,7 +9558,7 @@ SQLITE_API int sqlite3session_enable(sqlite3_session *pSession, int bEnable);
8956
9558
  ** <ul>
8957
9559
  ** <li> The session object "indirect" flag is set when the change is
8958
9560
  ** made, or
8959
- ** <li> The change is made by an SQL trigger or foreign key action
9561
+ ** <li> The change is made by an SQL trigger or foreign key action
8960
9562
  ** instead of directly as a result of a users SQL statement.
8961
9563
  ** </ul>
8962
9564
  **
@@ -8968,32 +9570,33 @@ SQLITE_API int sqlite3session_enable(sqlite3_session *pSession, int bEnable);
8968
9570
  ** flag. If the second argument passed to this function is zero, then the
8969
9571
  ** indirect flag is cleared. If it is greater than zero, the indirect flag
8970
9572
  ** is set. Passing a value less than zero does not modify the current value
8971
- ** of the indirect flag, and may be used to query the current state of the
9573
+ ** of the indirect flag, and may be used to query the current state of the
8972
9574
  ** indirect flag for the specified session object.
8973
9575
  **
8974
- ** The return value indicates the final state of the indirect flag: 0 if
9576
+ ** The return value indicates the final state of the indirect flag: 0 if
8975
9577
  ** it is clear, or 1 if it is set.
8976
9578
  */
8977
9579
  SQLITE_API int sqlite3session_indirect(sqlite3_session *pSession, int bIndirect);
8978
9580
 
8979
9581
  /*
8980
9582
  ** CAPI3REF: Attach A Table To A Session Object
9583
+ ** METHOD: sqlite3_session
8981
9584
  **
8982
9585
  ** If argument zTab is not NULL, then it is the name of a table to attach
8983
- ** to the session object passed as the first argument. All subsequent changes
8984
- ** made to the table while the session object is enabled will be recorded. See
9586
+ ** to the session object passed as the first argument. All subsequent changes
9587
+ ** made to the table while the session object is enabled will be recorded. See
8985
9588
  ** documentation for [sqlite3session_changeset()] for further details.
8986
9589
  **
8987
9590
  ** Or, if argument zTab is NULL, then changes are recorded for all tables
8988
- ** in the database. If additional tables are added to the database (by
8989
- ** executing "CREATE TABLE" statements) after this call is made, changes for
9591
+ ** in the database. If additional tables are added to the database (by
9592
+ ** executing "CREATE TABLE" statements) after this call is made, changes for
8990
9593
  ** the new tables are also recorded.
8991
9594
  **
8992
9595
  ** Changes can only be recorded for tables that have a PRIMARY KEY explicitly
8993
- ** defined as part of their CREATE TABLE statement. It does not matter if the
9596
+ ** defined as part of their CREATE TABLE statement. It does not matter if the
8994
9597
  ** PRIMARY KEY is an "INTEGER PRIMARY KEY" (rowid alias) or not. The PRIMARY
8995
9598
  ** KEY may consist of a single column, or may be a composite key.
8996
- **
9599
+ **
8997
9600
  ** It is not an error if the named table does not exist in the database. Nor
8998
9601
  ** is it an error if the named table does not have a PRIMARY KEY. However,
8999
9602
  ** no changes will be recorded in either of these scenarios.
@@ -9001,8 +9604,37 @@ SQLITE_API int sqlite3session_indirect(sqlite3_session *pSession, int bIndirect)
9001
9604
  ** Changes are not recorded for individual rows that have NULL values stored
9002
9605
  ** in one or more of their PRIMARY KEY columns.
9003
9606
  **
9004
- ** SQLITE_OK is returned if the call completes without error. Or, if an error
9607
+ ** SQLITE_OK is returned if the call completes without error. Or, if an error
9005
9608
  ** occurs, an SQLite error code (e.g. SQLITE_NOMEM) is returned.
9609
+ **
9610
+ ** <h3>Special sqlite_stat1 Handling</h3>
9611
+ **
9612
+ ** As of SQLite version 3.22.0, the "sqlite_stat1" table is an exception to
9613
+ ** some of the rules above. In SQLite, the schema of sqlite_stat1 is:
9614
+ ** <pre>
9615
+ ** &nbsp; CREATE TABLE sqlite_stat1(tbl,idx,stat)
9616
+ ** </pre>
9617
+ **
9618
+ ** Even though sqlite_stat1 does not have a PRIMARY KEY, changes are
9619
+ ** recorded for it as if the PRIMARY KEY is (tbl,idx). Additionally, changes
9620
+ ** are recorded for rows for which (idx IS NULL) is true. However, for such
9621
+ ** rows a zero-length blob (SQL value X'') is stored in the changeset or
9622
+ ** patchset instead of a NULL value. This allows such changesets to be
9623
+ ** manipulated by legacy implementations of sqlite3changeset_invert(),
9624
+ ** concat() and similar.
9625
+ **
9626
+ ** The sqlite3changeset_apply() function automatically converts the
9627
+ ** zero-length blob back to a NULL value when updating the sqlite_stat1
9628
+ ** table. However, if the application calls sqlite3changeset_new(),
9629
+ ** sqlite3changeset_old() or sqlite3changeset_conflict on a changeset
9630
+ ** iterator directly (including on a changeset iterator passed to a
9631
+ ** conflict-handler callback) then the X'' value is returned. The application
9632
+ ** must translate X'' to NULL itself if required.
9633
+ **
9634
+ ** Legacy (older than 3.22.0) versions of the sessions module cannot capture
9635
+ ** changes made to the sqlite_stat1 table. Legacy versions of the
9636
+ ** sqlite3changeset_apply() function silently ignore any modifications to the
9637
+ ** sqlite_stat1 table that are part of a changeset or patchset.
9006
9638
  */
9007
9639
  SQLITE_API int sqlite3session_attach(
9008
9640
  sqlite3_session *pSession, /* Session object */
@@ -9011,11 +9643,12 @@ SQLITE_API int sqlite3session_attach(
9011
9643
 
9012
9644
  /*
9013
9645
  ** CAPI3REF: Set a table filter on a Session Object.
9646
+ ** METHOD: sqlite3_session
9014
9647
  **
9015
- ** The second argument (xFilter) is the "filter callback". For changes to rows
9648
+ ** The second argument (xFilter) is the "filter callback". For changes to rows
9016
9649
  ** in tables that are not attached to the Session object, the filter is called
9017
- ** to determine whether changes to the table's rows should be tracked or not.
9018
- ** If xFilter returns 0, changes is not tracked. Note that once a table is
9650
+ ** to determine whether changes to the table's rows should be tracked or not.
9651
+ ** If xFilter returns 0, changes is not tracked. Note that once a table is
9019
9652
  ** attached, xFilter will not be called again.
9020
9653
  */
9021
9654
  SQLITE_API void sqlite3session_table_filter(
@@ -9029,10 +9662,11 @@ SQLITE_API void sqlite3session_table_filter(
9029
9662
 
9030
9663
  /*
9031
9664
  ** CAPI3REF: Generate A Changeset From A Session Object
9665
+ ** METHOD: sqlite3_session
9032
9666
  **
9033
- ** Obtain a changeset containing changes to the tables attached to the
9034
- ** session object passed as the first argument. If successful,
9035
- ** set *ppChangeset to point to a buffer containing the changeset
9667
+ ** Obtain a changeset containing changes to the tables attached to the
9668
+ ** session object passed as the first argument. If successful,
9669
+ ** set *ppChangeset to point to a buffer containing the changeset
9036
9670
  ** and *pnChangeset to the size of the changeset in bytes before returning
9037
9671
  ** SQLITE_OK. If an error occurs, set both *ppChangeset and *pnChangeset to
9038
9672
  ** zero and return an SQLite error code.
@@ -9047,7 +9681,7 @@ SQLITE_API void sqlite3session_table_filter(
9047
9681
  ** modifies the values of primary key columns. If such a change is made, it
9048
9682
  ** is represented in a changeset as a DELETE followed by an INSERT.
9049
9683
  **
9050
- ** Changes are not recorded for rows that have NULL values stored in one or
9684
+ ** Changes are not recorded for rows that have NULL values stored in one or
9051
9685
  ** more of their PRIMARY KEY columns. If such a row is inserted or deleted,
9052
9686
  ** no corresponding change is present in the changesets returned by this
9053
9687
  ** function. If an existing row with one or more NULL values stored in
@@ -9100,14 +9734,14 @@ SQLITE_API void sqlite3session_table_filter(
9100
9734
  ** <ul>
9101
9735
  ** <li> For each record generated by an insert, the database is queried
9102
9736
  ** for a row with a matching primary key. If one is found, an INSERT
9103
- ** change is added to the changeset. If no such row is found, no change
9737
+ ** change is added to the changeset. If no such row is found, no change
9104
9738
  ** is added to the changeset.
9105
9739
  **
9106
- ** <li> For each record generated by an update or delete, the database is
9740
+ ** <li> For each record generated by an update or delete, the database is
9107
9741
  ** queried for a row with a matching primary key. If such a row is
9108
9742
  ** found and one or more of the non-primary key fields have been
9109
- ** modified from their original values, an UPDATE change is added to
9110
- ** the changeset. Or, if no such row is found in the table, a DELETE
9743
+ ** modified from their original values, an UPDATE change is added to
9744
+ ** the changeset. Or, if no such row is found in the table, a DELETE
9111
9745
  ** change is added to the changeset. If there is a row with a matching
9112
9746
  ** primary key in the database, but all fields contain their original
9113
9747
  ** values, no change is added to the changeset.
@@ -9115,7 +9749,7 @@ SQLITE_API void sqlite3session_table_filter(
9115
9749
  **
9116
9750
  ** This means, amongst other things, that if a row is inserted and then later
9117
9751
  ** deleted while a session object is active, neither the insert nor the delete
9118
- ** will be present in the changeset. Or if a row is deleted and then later a
9752
+ ** will be present in the changeset. Or if a row is deleted and then later a
9119
9753
  ** row with the same primary key values inserted while a session object is
9120
9754
  ** active, the resulting changeset will contain an UPDATE change instead of
9121
9755
  ** a DELETE and an INSERT.
@@ -9124,10 +9758,10 @@ SQLITE_API void sqlite3session_table_filter(
9124
9758
  ** it does not accumulate records when rows are inserted, updated or deleted.
9125
9759
  ** This may appear to have some counter-intuitive effects if a single row
9126
9760
  ** is written to more than once during a session. For example, if a row
9127
- ** is inserted while a session object is enabled, then later deleted while
9761
+ ** is inserted while a session object is enabled, then later deleted while
9128
9762
  ** the same session object is disabled, no INSERT record will appear in the
9129
9763
  ** changeset, even though the delete took place while the session was disabled.
9130
- ** Or, if one field of a row is updated while a session is disabled, and
9764
+ ** Or, if one field of a row is updated while a session is disabled, and
9131
9765
  ** another field of the same row is updated while the session is enabled, the
9132
9766
  ** resulting changeset will contain an UPDATE change that updates both fields.
9133
9767
  */
@@ -9139,6 +9773,7 @@ SQLITE_API int sqlite3session_changeset(
9139
9773
 
9140
9774
  /*
9141
9775
  ** CAPI3REF: Load The Difference Between Tables Into A Session
9776
+ ** METHOD: sqlite3_session
9142
9777
  **
9143
9778
  ** If it is not already attached to the session object passed as the first
9144
9779
  ** argument, this function attaches table zTbl in the same manner as the
@@ -9147,7 +9782,7 @@ SQLITE_API int sqlite3session_changeset(
9147
9782
  ** an error).
9148
9783
  **
9149
9784
  ** Argument zFromDb must be the name of a database ("main", "temp" etc.)
9150
- ** attached to the same database handle as the session object that contains
9785
+ ** attached to the same database handle as the session object that contains
9151
9786
  ** a table compatible with the table attached to the session by this function.
9152
9787
  ** A table is considered compatible if it:
9153
9788
  **
@@ -9163,25 +9798,25 @@ SQLITE_API int sqlite3session_changeset(
9163
9798
  ** APIs, tables without PRIMARY KEYs are simply ignored.
9164
9799
  **
9165
9800
  ** This function adds a set of changes to the session object that could be
9166
- ** used to update the table in database zFrom (call this the "from-table")
9167
- ** so that its content is the same as the table attached to the session
9801
+ ** used to update the table in database zFrom (call this the "from-table")
9802
+ ** so that its content is the same as the table attached to the session
9168
9803
  ** object (call this the "to-table"). Specifically:
9169
9804
  **
9170
9805
  ** <ul>
9171
- ** <li> For each row (primary key) that exists in the to-table but not in
9806
+ ** <li> For each row (primary key) that exists in the to-table but not in
9172
9807
  ** the from-table, an INSERT record is added to the session object.
9173
9808
  **
9174
- ** <li> For each row (primary key) that exists in the to-table but not in
9809
+ ** <li> For each row (primary key) that exists in the to-table but not in
9175
9810
  ** the from-table, a DELETE record is added to the session object.
9176
9811
  **
9177
- ** <li> For each row (primary key) that exists in both tables, but features
9812
+ ** <li> For each row (primary key) that exists in both tables, but features
9178
9813
  ** different non-PK values in each, an UPDATE record is added to the
9179
- ** session.
9814
+ ** session.
9180
9815
  ** </ul>
9181
9816
  **
9182
9817
  ** To clarify, if this function is called and then a changeset constructed
9183
- ** using [sqlite3session_changeset()], then after applying that changeset to
9184
- ** database zFrom the contents of the two compatible tables would be
9818
+ ** using [sqlite3session_changeset()], then after applying that changeset to
9819
+ ** database zFrom the contents of the two compatible tables would be
9185
9820
  ** identical.
9186
9821
  **
9187
9822
  ** It an error if database zFrom does not exist or does not contain the
@@ -9189,7 +9824,7 @@ SQLITE_API int sqlite3session_changeset(
9189
9824
  **
9190
9825
  ** If the operation successful, SQLITE_OK is returned. Otherwise, an SQLite
9191
9826
  ** error code. In this case, if argument pzErrMsg is not NULL, *pzErrMsg
9192
- ** may be set to point to a buffer containing an English language error
9827
+ ** may be set to point to a buffer containing an English language error
9193
9828
  ** message. It is the responsibility of the caller to free this buffer using
9194
9829
  ** sqlite3_free().
9195
9830
  */
@@ -9203,23 +9838,24 @@ SQLITE_API int sqlite3session_diff(
9203
9838
 
9204
9839
  /*
9205
9840
  ** CAPI3REF: Generate A Patchset From A Session Object
9841
+ ** METHOD: sqlite3_session
9206
9842
  **
9207
9843
  ** The differences between a patchset and a changeset are that:
9208
9844
  **
9209
9845
  ** <ul>
9210
- ** <li> DELETE records consist of the primary key fields only. The
9846
+ ** <li> DELETE records consist of the primary key fields only. The
9211
9847
  ** original values of other fields are omitted.
9212
- ** <li> The original values of any modified fields are omitted from
9848
+ ** <li> The original values of any modified fields are omitted from
9213
9849
  ** UPDATE records.
9214
9850
  ** </ul>
9215
9851
  **
9216
- ** A patchset blob may be used with up to date versions of all
9217
- ** sqlite3changeset_xxx API functions except for sqlite3changeset_invert(),
9852
+ ** A patchset blob may be used with up to date versions of all
9853
+ ** sqlite3changeset_xxx API functions except for sqlite3changeset_invert(),
9218
9854
  ** which returns SQLITE_CORRUPT if it is passed a patchset. Similarly,
9219
9855
  ** attempting to use a patchset blob with old versions of the
9220
- ** sqlite3changeset_xxx APIs also provokes an SQLITE_CORRUPT error.
9856
+ ** sqlite3changeset_xxx APIs also provokes an SQLITE_CORRUPT error.
9221
9857
  **
9222
- ** Because the non-primary key "old.*" fields are omitted, no
9858
+ ** Because the non-primary key "old.*" fields are omitted, no
9223
9859
  ** SQLITE_CHANGESET_DATA conflicts can be detected or reported if a patchset
9224
9860
  ** is passed to the sqlite3changeset_apply() API. Other conflict types work
9225
9861
  ** in the same way as for changesets.
@@ -9238,29 +9874,30 @@ SQLITE_API int sqlite3session_patchset(
9238
9874
  /*
9239
9875
  ** CAPI3REF: Test if a changeset has recorded any changes.
9240
9876
  **
9241
- ** Return non-zero if no changes to attached tables have been recorded by
9242
- ** the session object passed as the first argument. Otherwise, if one or
9877
+ ** Return non-zero if no changes to attached tables have been recorded by
9878
+ ** the session object passed as the first argument. Otherwise, if one or
9243
9879
  ** more changes have been recorded, return zero.
9244
9880
  **
9245
9881
  ** Even if this function returns zero, it is possible that calling
9246
9882
  ** [sqlite3session_changeset()] on the session handle may still return a
9247
- ** changeset that contains no changes. This can happen when a row in
9248
- ** an attached table is modified and then later on the original values
9883
+ ** changeset that contains no changes. This can happen when a row in
9884
+ ** an attached table is modified and then later on the original values
9249
9885
  ** are restored. However, if this function returns non-zero, then it is
9250
- ** guaranteed that a call to sqlite3session_changeset() will return a
9886
+ ** guaranteed that a call to sqlite3session_changeset() will return a
9251
9887
  ** changeset containing zero changes.
9252
9888
  */
9253
9889
  SQLITE_API int sqlite3session_isempty(sqlite3_session *pSession);
9254
9890
 
9255
9891
  /*
9256
- ** CAPI3REF: Create An Iterator To Traverse A Changeset
9892
+ ** CAPI3REF: Create An Iterator To Traverse A Changeset
9893
+ ** CONSTRUCTOR: sqlite3_changeset_iter
9257
9894
  **
9258
9895
  ** Create an iterator used to iterate through the contents of a changeset.
9259
9896
  ** If successful, *pp is set to point to the iterator handle and SQLITE_OK
9260
9897
  ** is returned. Otherwise, if an error occurs, *pp is set to zero and an
9261
9898
  ** SQLite error code is returned.
9262
9899
  **
9263
- ** The following functions can be used to advance and query a changeset
9900
+ ** The following functions can be used to advance and query a changeset
9264
9901
  ** iterator created by this function:
9265
9902
  **
9266
9903
  ** <ul>
@@ -9277,23 +9914,50 @@ SQLITE_API int sqlite3session_isempty(sqlite3_session *pSession);
9277
9914
  **
9278
9915
  ** Assuming the changeset blob was created by one of the
9279
9916
  ** [sqlite3session_changeset()], [sqlite3changeset_concat()] or
9280
- ** [sqlite3changeset_invert()] functions, all changes within the changeset
9281
- ** that apply to a single table are grouped together. This means that when
9282
- ** an application iterates through a changeset using an iterator created by
9283
- ** this function, all changes that relate to a single table are visited
9284
- ** consecutively. There is no chance that the iterator will visit a change
9285
- ** the applies to table X, then one for table Y, and then later on visit
9917
+ ** [sqlite3changeset_invert()] functions, all changes within the changeset
9918
+ ** that apply to a single table are grouped together. This means that when
9919
+ ** an application iterates through a changeset using an iterator created by
9920
+ ** this function, all changes that relate to a single table are visited
9921
+ ** consecutively. There is no chance that the iterator will visit a change
9922
+ ** the applies to table X, then one for table Y, and then later on visit
9286
9923
  ** another change for table X.
9924
+ **
9925
+ ** The behavior of sqlite3changeset_start_v2() and its streaming equivalent
9926
+ ** may be modified by passing a combination of
9927
+ ** [SQLITE_CHANGESETSTART_INVERT | supported flags] as the 4th parameter.
9928
+ **
9929
+ ** Note that the sqlite3changeset_start_v2() API is still <b>experimental</b>
9930
+ ** and therefore subject to change.
9287
9931
  */
9288
9932
  SQLITE_API int sqlite3changeset_start(
9289
9933
  sqlite3_changeset_iter **pp, /* OUT: New changeset iterator handle */
9290
9934
  int nChangeset, /* Size of changeset blob in bytes */
9291
9935
  void *pChangeset /* Pointer to blob containing changeset */
9292
9936
  );
9937
+ SQLITE_API int sqlite3changeset_start_v2(
9938
+ sqlite3_changeset_iter **pp, /* OUT: New changeset iterator handle */
9939
+ int nChangeset, /* Size of changeset blob in bytes */
9940
+ void *pChangeset, /* Pointer to blob containing changeset */
9941
+ int flags /* SESSION_CHANGESETSTART_* flags */
9942
+ );
9943
+
9944
+ /*
9945
+ ** CAPI3REF: Flags for sqlite3changeset_start_v2
9946
+ **
9947
+ ** The following flags may passed via the 4th parameter to
9948
+ ** [sqlite3changeset_start_v2] and [sqlite3changeset_start_v2_strm]:
9949
+ **
9950
+ ** <dt>SQLITE_CHANGESETAPPLY_INVERT <dd>
9951
+ ** Invert the changeset while iterating through it. This is equivalent to
9952
+ ** inverting a changeset using sqlite3changeset_invert() before applying it.
9953
+ ** It is an error to specify this flag with a patchset.
9954
+ */
9955
+ #define SQLITE_CHANGESETSTART_INVERT 0x0002
9293
9956
 
9294
9957
 
9295
9958
  /*
9296
9959
  ** CAPI3REF: Advance A Changeset Iterator
9960
+ ** METHOD: sqlite3_changeset_iter
9297
9961
  **
9298
9962
  ** This function may only be used with iterators created by function
9299
9963
  ** [sqlite3changeset_start()]. If it is called on an iterator passed to
@@ -9306,18 +9970,19 @@ SQLITE_API int sqlite3changeset_start(
9306
9970
  ** point to the first change in the changeset. Each subsequent call advances
9307
9971
  ** the iterator to point to the next change in the changeset (if any). If
9308
9972
  ** no error occurs and the iterator points to a valid change after a call
9309
- ** to sqlite3changeset_next() has advanced it, SQLITE_ROW is returned.
9973
+ ** to sqlite3changeset_next() has advanced it, SQLITE_ROW is returned.
9310
9974
  ** Otherwise, if all changes in the changeset have already been visited,
9311
9975
  ** SQLITE_DONE is returned.
9312
9976
  **
9313
- ** If an error occurs, an SQLite error code is returned. Possible error
9314
- ** codes include SQLITE_CORRUPT (if the changeset buffer is corrupt) or
9977
+ ** If an error occurs, an SQLite error code is returned. Possible error
9978
+ ** codes include SQLITE_CORRUPT (if the changeset buffer is corrupt) or
9315
9979
  ** SQLITE_NOMEM.
9316
9980
  */
9317
9981
  SQLITE_API int sqlite3changeset_next(sqlite3_changeset_iter *pIter);
9318
9982
 
9319
9983
  /*
9320
9984
  ** CAPI3REF: Obtain The Current Operation From A Changeset Iterator
9985
+ ** METHOD: sqlite3_changeset_iter
9321
9986
  **
9322
9987
  ** The pIter argument passed to this function may either be an iterator
9323
9988
  ** passed to a conflict-handler by [sqlite3changeset_apply()], or an iterator
@@ -9328,14 +9993,14 @@ SQLITE_API int sqlite3changeset_next(sqlite3_changeset_iter *pIter);
9328
9993
  ** If argument pzTab is not NULL, then *pzTab is set to point to a
9329
9994
  ** nul-terminated utf-8 encoded string containing the name of the table
9330
9995
  ** affected by the current change. The buffer remains valid until either
9331
- ** sqlite3changeset_next() is called on the iterator or until the
9332
- ** conflict-handler function returns. If pnCol is not NULL, then *pnCol is
9996
+ ** sqlite3changeset_next() is called on the iterator or until the
9997
+ ** conflict-handler function returns. If pnCol is not NULL, then *pnCol is
9333
9998
  ** set to the number of columns in the table affected by the change. If
9334
9999
  ** pbIncorrect is not NULL, then *pbIndirect is set to true (1) if the change
9335
10000
  ** is an indirect change, or false (0) otherwise. See the documentation for
9336
10001
  ** [sqlite3session_indirect()] for a description of direct and indirect
9337
- ** changes. Finally, if pOp is not NULL, then *pOp is set to one of
9338
- ** [SQLITE_INSERT], [SQLITE_DELETE] or [SQLITE_UPDATE], depending on the
10002
+ ** changes. Finally, if pOp is not NULL, then *pOp is set to one of
10003
+ ** [SQLITE_INSERT], [SQLITE_DELETE] or [SQLITE_UPDATE], depending on the
9339
10004
  ** type of change that the iterator currently points to.
9340
10005
  **
9341
10006
  ** If no error occurs, SQLITE_OK is returned. If an error does occur, an
@@ -9352,6 +10017,7 @@ SQLITE_API int sqlite3changeset_op(
9352
10017
 
9353
10018
  /*
9354
10019
  ** CAPI3REF: Obtain The Primary Key Definition Of A Table
10020
+ ** METHOD: sqlite3_changeset_iter
9355
10021
  **
9356
10022
  ** For each modified table, a changeset includes the following:
9357
10023
  **
@@ -9383,11 +10049,12 @@ SQLITE_API int sqlite3changeset_pk(
9383
10049
 
9384
10050
  /*
9385
10051
  ** CAPI3REF: Obtain old.* Values From A Changeset Iterator
10052
+ ** METHOD: sqlite3_changeset_iter
9386
10053
  **
9387
10054
  ** The pIter argument passed to this function may either be an iterator
9388
10055
  ** passed to a conflict-handler by [sqlite3changeset_apply()], or an iterator
9389
10056
  ** created by [sqlite3changeset_start()]. In the latter case, the most recent
9390
- ** call to [sqlite3changeset_next()] must have returned SQLITE_ROW.
10057
+ ** call to [sqlite3changeset_next()] must have returned SQLITE_ROW.
9391
10058
  ** Furthermore, it may only be called if the type of change that the iterator
9392
10059
  ** currently points to is either [SQLITE_DELETE] or [SQLITE_UPDATE]. Otherwise,
9393
10060
  ** this function returns [SQLITE_MISUSE] and sets *ppValue to NULL.
@@ -9397,9 +10064,9 @@ SQLITE_API int sqlite3changeset_pk(
9397
10064
  ** [SQLITE_RANGE] is returned and *ppValue is set to NULL.
9398
10065
  **
9399
10066
  ** If successful, this function sets *ppValue to point to a protected
9400
- ** sqlite3_value object containing the iVal'th value from the vector of
10067
+ ** sqlite3_value object containing the iVal'th value from the vector of
9401
10068
  ** original row values stored as part of the UPDATE or DELETE change and
9402
- ** returns SQLITE_OK. The name of the function comes from the fact that this
10069
+ ** returns SQLITE_OK. The name of the function comes from the fact that this
9403
10070
  ** is similar to the "old.*" columns available to update or delete triggers.
9404
10071
  **
9405
10072
  ** If some other error occurs (e.g. an OOM condition), an SQLite error code
@@ -9413,11 +10080,12 @@ SQLITE_API int sqlite3changeset_old(
9413
10080
 
9414
10081
  /*
9415
10082
  ** CAPI3REF: Obtain new.* Values From A Changeset Iterator
10083
+ ** METHOD: sqlite3_changeset_iter
9416
10084
  **
9417
10085
  ** The pIter argument passed to this function may either be an iterator
9418
10086
  ** passed to a conflict-handler by [sqlite3changeset_apply()], or an iterator
9419
10087
  ** created by [sqlite3changeset_start()]. In the latter case, the most recent
9420
- ** call to [sqlite3changeset_next()] must have returned SQLITE_ROW.
10088
+ ** call to [sqlite3changeset_next()] must have returned SQLITE_ROW.
9421
10089
  ** Furthermore, it may only be called if the type of change that the iterator
9422
10090
  ** currently points to is either [SQLITE_UPDATE] or [SQLITE_INSERT]. Otherwise,
9423
10091
  ** this function returns [SQLITE_MISUSE] and sets *ppValue to NULL.
@@ -9427,12 +10095,12 @@ SQLITE_API int sqlite3changeset_old(
9427
10095
  ** [SQLITE_RANGE] is returned and *ppValue is set to NULL.
9428
10096
  **
9429
10097
  ** If successful, this function sets *ppValue to point to a protected
9430
- ** sqlite3_value object containing the iVal'th value from the vector of
10098
+ ** sqlite3_value object containing the iVal'th value from the vector of
9431
10099
  ** new row values stored as part of the UPDATE or INSERT change and
9432
10100
  ** returns SQLITE_OK. If the change is an UPDATE and does not include
9433
- ** a new value for the requested column, *ppValue is set to NULL and
9434
- ** SQLITE_OK returned. The name of the function comes from the fact that
9435
- ** this is similar to the "new.*" columns available to update or delete
10101
+ ** a new value for the requested column, *ppValue is set to NULL and
10102
+ ** SQLITE_OK returned. The name of the function comes from the fact that
10103
+ ** this is similar to the "new.*" columns available to update or delete
9436
10104
  ** triggers.
9437
10105
  **
9438
10106
  ** If some other error occurs (e.g. an OOM condition), an SQLite error code
@@ -9446,6 +10114,7 @@ SQLITE_API int sqlite3changeset_new(
9446
10114
 
9447
10115
  /*
9448
10116
  ** CAPI3REF: Obtain Conflicting Row Values From A Changeset Iterator
10117
+ ** METHOD: sqlite3_changeset_iter
9449
10118
  **
9450
10119
  ** This function should only be used with iterator objects passed to a
9451
10120
  ** conflict-handler callback by [sqlite3changeset_apply()] with either
@@ -9458,7 +10127,7 @@ SQLITE_API int sqlite3changeset_new(
9458
10127
  ** [SQLITE_RANGE] is returned and *ppValue is set to NULL.
9459
10128
  **
9460
10129
  ** If successful, this function sets *ppValue to point to a protected
9461
- ** sqlite3_value object containing the iVal'th value from the
10130
+ ** sqlite3_value object containing the iVal'th value from the
9462
10131
  ** "conflicting row" associated with the current conflict-handler callback
9463
10132
  ** and returns SQLITE_OK.
9464
10133
  **
@@ -9473,6 +10142,7 @@ SQLITE_API int sqlite3changeset_conflict(
9473
10142
 
9474
10143
  /*
9475
10144
  ** CAPI3REF: Determine The Number Of Foreign Key Constraint Violations
10145
+ ** METHOD: sqlite3_changeset_iter
9476
10146
  **
9477
10147
  ** This function may only be called with an iterator passed to an
9478
10148
  ** SQLITE_CHANGESET_FOREIGN_KEY conflict handler callback. In this case
@@ -9489,6 +10159,7 @@ SQLITE_API int sqlite3changeset_fk_conflicts(
9489
10159
 
9490
10160
  /*
9491
10161
  ** CAPI3REF: Finalize A Changeset Iterator
10162
+ ** METHOD: sqlite3_changeset_iter
9492
10163
  **
9493
10164
  ** This function is used to finalize an iterator allocated with
9494
10165
  ** [sqlite3changeset_start()].
@@ -9500,19 +10171,21 @@ SQLITE_API int sqlite3changeset_fk_conflicts(
9500
10171
  ** call has no effect.
9501
10172
  **
9502
10173
  ** If an error was encountered within a call to an sqlite3changeset_xxx()
9503
- ** function (for example an [SQLITE_CORRUPT] in [sqlite3changeset_next()] or an
10174
+ ** function (for example an [SQLITE_CORRUPT] in [sqlite3changeset_next()] or an
9504
10175
  ** [SQLITE_NOMEM] in [sqlite3changeset_new()]) then an error code corresponding
9505
10176
  ** to that error is returned by this function. Otherwise, SQLITE_OK is
9506
10177
  ** returned. This is to allow the following pattern (pseudo-code):
9507
10178
  **
10179
+ ** <pre>
9508
10180
  ** sqlite3changeset_start();
9509
10181
  ** while( SQLITE_ROW==sqlite3changeset_next() ){
9510
10182
  ** // Do something with change.
9511
10183
  ** }
9512
10184
  ** rc = sqlite3changeset_finalize();
9513
10185
  ** if( rc!=SQLITE_OK ){
9514
- ** // An error has occurred
10186
+ ** // An error has occurred
9515
10187
  ** }
10188
+ ** </pre>
9516
10189
  */
9517
10190
  SQLITE_API int sqlite3changeset_finalize(sqlite3_changeset_iter *pIter);
9518
10191
 
@@ -9538,7 +10211,7 @@ SQLITE_API int sqlite3changeset_finalize(sqlite3_changeset_iter *pIter);
9538
10211
  ** zeroed and an SQLite error code returned.
9539
10212
  **
9540
10213
  ** It is the responsibility of the caller to eventually call sqlite3_free()
9541
- ** on the *ppOut pointer to free the buffer allocation following a successful
10214
+ ** on the *ppOut pointer to free the buffer allocation following a successful
9542
10215
  ** call to this function.
9543
10216
  **
9544
10217
  ** WARNING/TODO: This function currently assumes that the input is a valid
@@ -9552,14 +10225,15 @@ SQLITE_API int sqlite3changeset_invert(
9552
10225
  /*
9553
10226
  ** CAPI3REF: Concatenate Two Changeset Objects
9554
10227
  **
9555
- ** This function is used to concatenate two changesets, A and B, into a
10228
+ ** This function is used to concatenate two changesets, A and B, into a
9556
10229
  ** single changeset. The result is a changeset equivalent to applying
9557
- ** changeset A followed by changeset B.
10230
+ ** changeset A followed by changeset B.
9558
10231
  **
9559
- ** This function combines the two input changesets using an
10232
+ ** This function combines the two input changesets using an
9560
10233
  ** sqlite3_changegroup object. Calling it produces similar results as the
9561
10234
  ** following code fragment:
9562
10235
  **
10236
+ ** <pre>
9563
10237
  ** sqlite3_changegroup *pGrp;
9564
10238
  ** rc = sqlite3_changegroup_new(&pGrp);
9565
10239
  ** if( rc==SQLITE_OK ) rc = sqlite3changegroup_add(pGrp, nA, pA);
@@ -9570,6 +10244,7 @@ SQLITE_API int sqlite3changeset_invert(
9570
10244
  ** *ppOut = 0;
9571
10245
  ** *pnOut = 0;
9572
10246
  ** }
10247
+ ** </pre>
9573
10248
  **
9574
10249
  ** Refer to the sqlite3_changegroup documentation below for details.
9575
10250
  */
@@ -9585,11 +10260,15 @@ SQLITE_API int sqlite3changeset_concat(
9585
10260
 
9586
10261
  /*
9587
10262
  ** CAPI3REF: Changegroup Handle
10263
+ **
10264
+ ** A changegroup is an object used to combine two or more
10265
+ ** [changesets] or [patchsets]
9588
10266
  */
9589
10267
  typedef struct sqlite3_changegroup sqlite3_changegroup;
9590
10268
 
9591
10269
  /*
9592
10270
  ** CAPI3REF: Create A New Changegroup Object
10271
+ ** CONSTRUCTOR: sqlite3_changegroup
9593
10272
  **
9594
10273
  ** An sqlite3_changegroup object is used to combine two or more changesets
9595
10274
  ** (or patchsets) into a single changeset (or patchset). A single changegroup
@@ -9598,7 +10277,7 @@ typedef struct sqlite3_changegroup sqlite3_changegroup;
9598
10277
  **
9599
10278
  ** If successful, this function returns SQLITE_OK and populates (*pp) with
9600
10279
  ** a pointer to a new sqlite3_changegroup object before returning. The caller
9601
- ** should eventually free the returned object using a call to
10280
+ ** should eventually free the returned object using a call to
9602
10281
  ** sqlite3changegroup_delete(). If an error occurs, an SQLite error code
9603
10282
  ** (i.e. SQLITE_NOMEM) is returned and *pp is set to NULL.
9604
10283
  **
@@ -9610,7 +10289,7 @@ typedef struct sqlite3_changegroup sqlite3_changegroup;
9610
10289
  ** <li> Zero or more changesets (or patchsets) are added to the object
9611
10290
  ** by calling sqlite3changegroup_add().
9612
10291
  **
9613
- ** <li> The result of combining all input changesets together is obtained
10292
+ ** <li> The result of combining all input changesets together is obtained
9614
10293
  ** by the application via a call to sqlite3changegroup_output().
9615
10294
  **
9616
10295
  ** <li> The object is deleted using a call to sqlite3changegroup_delete().
@@ -9619,7 +10298,7 @@ typedef struct sqlite3_changegroup sqlite3_changegroup;
9619
10298
  ** Any number of calls to add() and output() may be made between the calls to
9620
10299
  ** new() and delete(), and in any order.
9621
10300
  **
9622
- ** As well as the regular sqlite3changegroup_add() and
10301
+ ** As well as the regular sqlite3changegroup_add() and
9623
10302
  ** sqlite3changegroup_output() functions, also available are the streaming
9624
10303
  ** versions sqlite3changegroup_add_strm() and sqlite3changegroup_output_strm().
9625
10304
  */
@@ -9627,9 +10306,10 @@ SQLITE_API int sqlite3changegroup_new(sqlite3_changegroup **pp);
9627
10306
 
9628
10307
  /*
9629
10308
  ** CAPI3REF: Add A Changeset To A Changegroup
10309
+ ** METHOD: sqlite3_changegroup
9630
10310
  **
9631
10311
  ** Add all changes within the changeset (or patchset) in buffer pData (size
9632
- ** nData bytes) to the changegroup.
10312
+ ** nData bytes) to the changegroup.
9633
10313
  **
9634
10314
  ** If the buffer contains a patchset, then all prior calls to this function
9635
10315
  ** on the same changegroup object must also have specified patchsets. Or, if
@@ -9656,7 +10336,7 @@ SQLITE_API int sqlite3changegroup_new(sqlite3_changegroup **pp);
9656
10336
  ** changeset was recorded immediately after the changesets already
9657
10337
  ** added to the changegroup.
9658
10338
  ** <tr><td>INSERT <td>UPDATE <td>
9659
- ** The INSERT change remains in the changegroup. The values in the
10339
+ ** The INSERT change remains in the changegroup. The values in the
9660
10340
  ** INSERT change are modified as if the row was inserted by the
9661
10341
  ** existing change and then updated according to the new change.
9662
10342
  ** <tr><td>INSERT <td>DELETE <td>
@@ -9667,17 +10347,17 @@ SQLITE_API int sqlite3changegroup_new(sqlite3_changegroup **pp);
9667
10347
  ** changeset was recorded immediately after the changesets already
9668
10348
  ** added to the changegroup.
9669
10349
  ** <tr><td>UPDATE <td>UPDATE <td>
9670
- ** The existing UPDATE remains within the changegroup. It is amended
9671
- ** so that the accompanying values are as if the row was updated once
10350
+ ** The existing UPDATE remains within the changegroup. It is amended
10351
+ ** so that the accompanying values are as if the row was updated once
9672
10352
  ** by the existing change and then again by the new change.
9673
10353
  ** <tr><td>UPDATE <td>DELETE <td>
9674
10354
  ** The existing UPDATE is replaced by the new DELETE within the
9675
10355
  ** changegroup.
9676
10356
  ** <tr><td>DELETE <td>INSERT <td>
9677
10357
  ** If one or more of the column values in the row inserted by the
9678
- ** new change differ from those in the row deleted by the existing
10358
+ ** new change differ from those in the row deleted by the existing
9679
10359
  ** change, the existing DELETE is replaced by an UPDATE within the
9680
- ** changegroup. Otherwise, if the inserted row is exactly the same
10360
+ ** changegroup. Otherwise, if the inserted row is exactly the same
9681
10361
  ** as the deleted row, the existing DELETE is simply discarded.
9682
10362
  ** <tr><td>DELETE <td>UPDATE <td>
9683
10363
  ** The new change is ignored. This case does not occur if the new
@@ -9704,6 +10384,7 @@ SQLITE_API int sqlite3changegroup_add(sqlite3_changegroup*, int nData, void *pDa
9704
10384
 
9705
10385
  /*
9706
10386
  ** CAPI3REF: Obtain A Composite Changeset From A Changegroup
10387
+ ** METHOD: sqlite3_changegroup
9707
10388
  **
9708
10389
  ** Obtain a buffer containing a changeset (or patchset) representing the
9709
10390
  ** current contents of the changegroup. If the inputs to the changegroup
@@ -9721,7 +10402,7 @@ SQLITE_API int sqlite3changegroup_add(sqlite3_changegroup*, int nData, void *pDa
9721
10402
  **
9722
10403
  ** If an error occurs, an SQLite error code is returned and the output
9723
10404
  ** variables (*pnData) and (*ppData) are set to 0. Otherwise, SQLITE_OK
9724
- ** is returned and the output variables are set to the size of and a
10405
+ ** is returned and the output variables are set to the size of and a
9725
10406
  ** pointer to the output buffer, respectively. In this case it is the
9726
10407
  ** responsibility of the caller to eventually free the buffer using a
9727
10408
  ** call to sqlite3_free().
@@ -9734,36 +10415,36 @@ SQLITE_API int sqlite3changegroup_output(
9734
10415
 
9735
10416
  /*
9736
10417
  ** CAPI3REF: Delete A Changegroup Object
10418
+ ** DESTRUCTOR: sqlite3_changegroup
9737
10419
  */
9738
10420
  SQLITE_API void sqlite3changegroup_delete(sqlite3_changegroup*);
9739
10421
 
9740
10422
  /*
9741
10423
  ** CAPI3REF: Apply A Changeset To A Database
9742
10424
  **
9743
- ** Apply a changeset to a database. This function attempts to update the
9744
- ** "main" database attached to handle db with the changes found in the
9745
- ** changeset passed via the second and third arguments.
10425
+ ** Apply a changeset or patchset to a database. These functions attempt to
10426
+ ** update the "main" database attached to handle db with the changes found in
10427
+ ** the changeset passed via the second and third arguments.
9746
10428
  **
9747
- ** The fourth argument (xFilter) passed to this function is the "filter
10429
+ ** The fourth argument (xFilter) passed to these functions is the "filter
9748
10430
  ** callback". If it is not NULL, then for each table affected by at least one
9749
10431
  ** change in the changeset, the filter callback is invoked with
9750
10432
  ** the table name as the second argument, and a copy of the context pointer
9751
- ** passed as the sixth argument to this function as the first. If the "filter
9752
- ** callback" returns zero, then no attempt is made to apply any changes to
9753
- ** the table. Otherwise, if the return value is non-zero or the xFilter
9754
- ** argument to this function is NULL, all changes related to the table are
9755
- ** attempted.
9756
- **
9757
- ** For each table that is not excluded by the filter callback, this function
9758
- ** tests that the target database contains a compatible table. A table is
10433
+ ** passed as the sixth argument as the first. If the "filter callback"
10434
+ ** returns zero, then no attempt is made to apply any changes to the table.
10435
+ ** Otherwise, if the return value is non-zero or the xFilter argument to
10436
+ ** is NULL, all changes related to the table are attempted.
10437
+ **
10438
+ ** For each table that is not excluded by the filter callback, this function
10439
+ ** tests that the target database contains a compatible table. A table is
9759
10440
  ** considered compatible if all of the following are true:
9760
10441
  **
9761
10442
  ** <ul>
9762
- ** <li> The table has the same name as the name recorded in the
10443
+ ** <li> The table has the same name as the name recorded in the
9763
10444
  ** changeset, and
9764
- ** <li> The table has at least as many columns as recorded in the
10445
+ ** <li> The table has at least as many columns as recorded in the
9765
10446
  ** changeset, and
9766
- ** <li> The table has primary key columns in the same position as
10447
+ ** <li> The table has primary key columns in the same position as
9767
10448
  ** recorded in the changeset.
9768
10449
  ** </ul>
9769
10450
  **
@@ -9772,11 +10453,11 @@ SQLITE_API void sqlite3changegroup_delete(sqlite3_changegroup*);
9772
10453
  ** via the sqlite3_log() mechanism with the error code SQLITE_SCHEMA. At most
9773
10454
  ** one such warning is issued for each table in the changeset.
9774
10455
  **
9775
- ** For each change for which there is a compatible table, an attempt is made
9776
- ** to modify the table contents according to the UPDATE, INSERT or DELETE
9777
- ** change. If a change cannot be applied cleanly, the conflict handler
9778
- ** function passed as the fifth argument to sqlite3changeset_apply() may be
9779
- ** invoked. A description of exactly when the conflict handler is invoked for
10456
+ ** For each change for which there is a compatible table, an attempt is made
10457
+ ** to modify the table contents according to the UPDATE, INSERT or DELETE
10458
+ ** change. If a change cannot be applied cleanly, the conflict handler
10459
+ ** function passed as the fifth argument to sqlite3changeset_apply() may be
10460
+ ** invoked. A description of exactly when the conflict handler is invoked for
9780
10461
  ** each type of change is below.
9781
10462
  **
9782
10463
  ** Unlike the xFilter argument, xConflict may not be passed NULL. The results
@@ -9784,23 +10465,23 @@ SQLITE_API void sqlite3changegroup_delete(sqlite3_changegroup*);
9784
10465
  ** argument are undefined.
9785
10466
  **
9786
10467
  ** Each time the conflict handler function is invoked, it must return one
9787
- ** of [SQLITE_CHANGESET_OMIT], [SQLITE_CHANGESET_ABORT] or
10468
+ ** of [SQLITE_CHANGESET_OMIT], [SQLITE_CHANGESET_ABORT] or
9788
10469
  ** [SQLITE_CHANGESET_REPLACE]. SQLITE_CHANGESET_REPLACE may only be returned
9789
10470
  ** if the second argument passed to the conflict handler is either
9790
10471
  ** SQLITE_CHANGESET_DATA or SQLITE_CHANGESET_CONFLICT. If the conflict-handler
9791
10472
  ** returns an illegal value, any changes already made are rolled back and
9792
- ** the call to sqlite3changeset_apply() returns SQLITE_MISUSE. Different
10473
+ ** the call to sqlite3changeset_apply() returns SQLITE_MISUSE. Different
9793
10474
  ** actions are taken by sqlite3changeset_apply() depending on the value
9794
10475
  ** returned by each invocation of the conflict-handler function. Refer to
9795
- ** the documentation for the three
10476
+ ** the documentation for the three
9796
10477
  ** [SQLITE_CHANGESET_OMIT|available return values] for details.
9797
10478
  **
9798
10479
  ** <dl>
9799
10480
  ** <dt>DELETE Changes<dd>
9800
- ** For each DELETE change, this function checks if the target database
9801
- ** contains a row with the same primary key value (or values) as the
9802
- ** original row values stored in the changeset. If it does, and the values
9803
- ** stored in all non-primary key columns also match the values stored in
10481
+ ** For each DELETE change, the function checks if the target database
10482
+ ** contains a row with the same primary key value (or values) as the
10483
+ ** original row values stored in the changeset. If it does, and the values
10484
+ ** stored in all non-primary key columns also match the values stored in
9804
10485
  ** the changeset the row is deleted from the target database.
9805
10486
  **
9806
10487
  ** If a row with matching primary key values is found, but one or more of
@@ -9829,22 +10510,22 @@ SQLITE_API void sqlite3changegroup_delete(sqlite3_changegroup*);
9829
10510
  ** database table, the trailing fields are populated with their default
9830
10511
  ** values.
9831
10512
  **
9832
- ** If the attempt to insert the row fails because the database already
10513
+ ** If the attempt to insert the row fails because the database already
9833
10514
  ** contains a row with the same primary key values, the conflict handler
9834
- ** function is invoked with the second argument set to
10515
+ ** function is invoked with the second argument set to
9835
10516
  ** [SQLITE_CHANGESET_CONFLICT].
9836
10517
  **
9837
10518
  ** If the attempt to insert the row fails because of some other constraint
9838
- ** violation (e.g. NOT NULL or UNIQUE), the conflict handler function is
10519
+ ** violation (e.g. NOT NULL or UNIQUE), the conflict handler function is
9839
10520
  ** invoked with the second argument set to [SQLITE_CHANGESET_CONSTRAINT].
9840
- ** This includes the case where the INSERT operation is re-attempted because
9841
- ** an earlier call to the conflict handler function returned
10521
+ ** This includes the case where the INSERT operation is re-attempted because
10522
+ ** an earlier call to the conflict handler function returned
9842
10523
  ** [SQLITE_CHANGESET_REPLACE].
9843
10524
  **
9844
10525
  ** <dt>UPDATE Changes<dd>
9845
- ** For each UPDATE change, this function checks if the target database
9846
- ** contains a row with the same primary key value (or values) as the
9847
- ** original row values stored in the changeset. If it does, and the values
10526
+ ** For each UPDATE change, the function checks if the target database
10527
+ ** contains a row with the same primary key value (or values) as the
10528
+ ** original row values stored in the changeset. If it does, and the values
9848
10529
  ** stored in all modified non-primary key columns also match the values
9849
10530
  ** stored in the changeset the row is updated within the target database.
9850
10531
  **
@@ -9860,12 +10541,12 @@ SQLITE_API void sqlite3changegroup_delete(sqlite3_changegroup*);
9860
10541
  ** the conflict-handler function is invoked with [SQLITE_CHANGESET_NOTFOUND]
9861
10542
  ** passed as the second argument.
9862
10543
  **
9863
- ** If the UPDATE operation is attempted, but SQLite returns
9864
- ** SQLITE_CONSTRAINT, the conflict-handler function is invoked with
10544
+ ** If the UPDATE operation is attempted, but SQLite returns
10545
+ ** SQLITE_CONSTRAINT, the conflict-handler function is invoked with
9865
10546
  ** [SQLITE_CHANGESET_CONSTRAINT] passed as the second argument.
9866
- ** This includes the case where the UPDATE operation is attempted after
10547
+ ** This includes the case where the UPDATE operation is attempted after
9867
10548
  ** an earlier call to the conflict handler function returned
9868
- ** [SQLITE_CHANGESET_REPLACE].
10549
+ ** [SQLITE_CHANGESET_REPLACE].
9869
10550
  ** </dl>
9870
10551
  **
9871
10552
  ** It is safe to execute SQL statements, including those that write to the
@@ -9873,11 +10554,28 @@ SQLITE_API void sqlite3changegroup_delete(sqlite3_changegroup*);
9873
10554
  ** This can be used to further customize the applications conflict
9874
10555
  ** resolution strategy.
9875
10556
  **
9876
- ** All changes made by this function are enclosed in a savepoint transaction.
10557
+ ** All changes made by these functions are enclosed in a savepoint transaction.
9877
10558
  ** If any other error (aside from a constraint failure when attempting to
9878
10559
  ** write to the target database) occurs, then the savepoint transaction is
9879
- ** rolled back, restoring the target database to its original state, and an
10560
+ ** rolled back, restoring the target database to its original state, and an
9880
10561
  ** SQLite error code returned.
10562
+ **
10563
+ ** If the output parameters (ppRebase) and (pnRebase) are non-NULL and
10564
+ ** the input is a changeset (not a patchset), then sqlite3changeset_apply_v2()
10565
+ ** may set (*ppRebase) to point to a "rebase" that may be used with the
10566
+ ** sqlite3_rebaser APIs buffer before returning. In this case (*pnRebase)
10567
+ ** is set to the size of the buffer in bytes. It is the responsibility of the
10568
+ ** caller to eventually free any such buffer using sqlite3_free(). The buffer
10569
+ ** is only allocated and populated if one or more conflicts were encountered
10570
+ ** while applying the patchset. See comments surrounding the sqlite3_rebaser
10571
+ ** APIs for further details.
10572
+ **
10573
+ ** The behavior of sqlite3changeset_apply_v2() and its streaming equivalent
10574
+ ** may be modified by passing a combination of
10575
+ ** [SQLITE_CHANGESETAPPLY_NOSAVEPOINT | supported flags] as the 9th parameter.
10576
+ **
10577
+ ** Note that the sqlite3changeset_apply_v2() API is still <b>experimental</b>
10578
+ ** and therefore subject to change.
9881
10579
  */
9882
10580
  SQLITE_API int sqlite3changeset_apply(
9883
10581
  sqlite3 *db, /* Apply change to "main" db of this handle */
@@ -9894,8 +10592,49 @@ SQLITE_API int sqlite3changeset_apply(
9894
10592
  ),
9895
10593
  void *pCtx /* First argument passed to xConflict */
9896
10594
  );
10595
+ SQLITE_API int sqlite3changeset_apply_v2(
10596
+ sqlite3 *db, /* Apply change to "main" db of this handle */
10597
+ int nChangeset, /* Size of changeset in bytes */
10598
+ void *pChangeset, /* Changeset blob */
10599
+ int(*xFilter)(
10600
+ void *pCtx, /* Copy of sixth arg to _apply() */
10601
+ const char *zTab /* Table name */
10602
+ ),
10603
+ int(*xConflict)(
10604
+ void *pCtx, /* Copy of sixth arg to _apply() */
10605
+ int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */
10606
+ sqlite3_changeset_iter *p /* Handle describing change and conflict */
10607
+ ),
10608
+ void *pCtx, /* First argument passed to xConflict */
10609
+ void **ppRebase, int *pnRebase, /* OUT: Rebase data */
10610
+ int flags /* SESSION_CHANGESETAPPLY_* flags */
10611
+ );
9897
10612
 
9898
10613
  /*
10614
+ ** CAPI3REF: Flags for sqlite3changeset_apply_v2
10615
+ **
10616
+ ** The following flags may passed via the 9th parameter to
10617
+ ** [sqlite3changeset_apply_v2] and [sqlite3changeset_apply_v2_strm]:
10618
+ **
10619
+ ** <dl>
10620
+ ** <dt>SQLITE_CHANGESETAPPLY_NOSAVEPOINT <dd>
10621
+ ** Usually, the sessions module encloses all operations performed by
10622
+ ** a single call to apply_v2() or apply_v2_strm() in a [SAVEPOINT]. The
10623
+ ** SAVEPOINT is committed if the changeset or patchset is successfully
10624
+ ** applied, or rolled back if an error occurs. Specifying this flag
10625
+ ** causes the sessions module to omit this savepoint. In this case, if the
10626
+ ** caller has an open transaction or savepoint when apply_v2() is called,
10627
+ ** it may revert the partially applied changeset by rolling it back.
10628
+ **
10629
+ ** <dt>SQLITE_CHANGESETAPPLY_INVERT <dd>
10630
+ ** Invert the changeset before applying it. This is equivalent to inverting
10631
+ ** a changeset using sqlite3changeset_invert() before applying it. It is
10632
+ ** an error to specify this flag with a patchset.
10633
+ */
10634
+ #define SQLITE_CHANGESETAPPLY_NOSAVEPOINT 0x0001
10635
+ #define SQLITE_CHANGESETAPPLY_INVERT 0x0002
10636
+
10637
+ /*
9899
10638
  ** CAPI3REF: Constants Passed To The Conflict Handler
9900
10639
  **
9901
10640
  ** Values that may be passed as the second argument to a conflict-handler.
@@ -9904,32 +10643,32 @@ SQLITE_API int sqlite3changeset_apply(
9904
10643
  ** <dt>SQLITE_CHANGESET_DATA<dd>
9905
10644
  ** The conflict handler is invoked with CHANGESET_DATA as the second argument
9906
10645
  ** when processing a DELETE or UPDATE change if a row with the required
9907
- ** PRIMARY KEY fields is present in the database, but one or more other
9908
- ** (non primary-key) fields modified by the update do not contain the
10646
+ ** PRIMARY KEY fields is present in the database, but one or more other
10647
+ ** (non primary-key) fields modified by the update do not contain the
9909
10648
  ** expected "before" values.
9910
- **
10649
+ **
9911
10650
  ** The conflicting row, in this case, is the database row with the matching
9912
10651
  ** primary key.
9913
- **
10652
+ **
9914
10653
  ** <dt>SQLITE_CHANGESET_NOTFOUND<dd>
9915
10654
  ** The conflict handler is invoked with CHANGESET_NOTFOUND as the second
9916
10655
  ** argument when processing a DELETE or UPDATE change if a row with the
9917
10656
  ** required PRIMARY KEY fields is not present in the database.
9918
- **
10657
+ **
9919
10658
  ** There is no conflicting row in this case. The results of invoking the
9920
10659
  ** sqlite3changeset_conflict() API are undefined.
9921
- **
10660
+ **
9922
10661
  ** <dt>SQLITE_CHANGESET_CONFLICT<dd>
9923
10662
  ** CHANGESET_CONFLICT is passed as the second argument to the conflict
9924
- ** handler while processing an INSERT change if the operation would result
10663
+ ** handler while processing an INSERT change if the operation would result
9925
10664
  ** in duplicate primary key values.
9926
- **
10665
+ **
9927
10666
  ** The conflicting row in this case is the database row with the matching
9928
10667
  ** primary key.
9929
10668
  **
9930
10669
  ** <dt>SQLITE_CHANGESET_FOREIGN_KEY<dd>
9931
10670
  ** If foreign key handling is enabled, and applying a changeset leaves the
9932
- ** database in a state containing foreign key violations, the conflict
10671
+ ** database in a state containing foreign key violations, the conflict
9933
10672
  ** handler is invoked with CHANGESET_FOREIGN_KEY as the second argument
9934
10673
  ** exactly once before the changeset is committed. If the conflict handler
9935
10674
  ** returns CHANGESET_OMIT, the changes, including those that caused the
@@ -9939,12 +10678,12 @@ SQLITE_API int sqlite3changeset_apply(
9939
10678
  ** No current or conflicting row information is provided. The only function
9940
10679
  ** it is possible to call on the supplied sqlite3_changeset_iter handle
9941
10680
  ** is sqlite3changeset_fk_conflicts().
9942
- **
10681
+ **
9943
10682
  ** <dt>SQLITE_CHANGESET_CONSTRAINT<dd>
9944
- ** If any other constraint violation occurs while applying a change (i.e.
9945
- ** a UNIQUE, CHECK or NOT NULL constraint), the conflict handler is
10683
+ ** If any other constraint violation occurs while applying a change (i.e.
10684
+ ** a UNIQUE, CHECK or NOT NULL constraint), the conflict handler is
9946
10685
  ** invoked with CHANGESET_CONSTRAINT as the second argument.
9947
- **
10686
+ **
9948
10687
  ** There is no conflicting row in this case. The results of invoking the
9949
10688
  ** sqlite3changeset_conflict() API are undefined.
9950
10689
  **
@@ -9956,7 +10695,7 @@ SQLITE_API int sqlite3changeset_apply(
9956
10695
  #define SQLITE_CHANGESET_CONSTRAINT 4
9957
10696
  #define SQLITE_CHANGESET_FOREIGN_KEY 5
9958
10697
 
9959
- /*
10698
+ /*
9960
10699
  ** CAPI3REF: Constants Returned By The Conflict Handler
9961
10700
  **
9962
10701
  ** A conflict handler callback must return one of the following three values.
@@ -9964,13 +10703,13 @@ SQLITE_API int sqlite3changeset_apply(
9964
10703
  ** <dl>
9965
10704
  ** <dt>SQLITE_CHANGESET_OMIT<dd>
9966
10705
  ** If a conflict handler returns this value no special action is taken. The
9967
- ** change that caused the conflict is not applied. The session module
10706
+ ** change that caused the conflict is not applied. The session module
9968
10707
  ** continues to the next change in the changeset.
9969
10708
  **
9970
10709
  ** <dt>SQLITE_CHANGESET_REPLACE<dd>
9971
10710
  ** This value may only be returned if the second argument to the conflict
9972
10711
  ** handler was SQLITE_CHANGESET_DATA or SQLITE_CHANGESET_CONFLICT. If this
9973
- ** is not the case, any changes applied so far are rolled back and the
10712
+ ** is not the case, any changes applied so far are rolled back and the
9974
10713
  ** call to sqlite3changeset_apply() returns SQLITE_MISUSE.
9975
10714
  **
9976
10715
  ** If CHANGESET_REPLACE is returned by an SQLITE_CHANGESET_DATA conflict
@@ -9983,7 +10722,7 @@ SQLITE_API int sqlite3changeset_apply(
9983
10722
  ** the original row is restored to the database before continuing.
9984
10723
  **
9985
10724
  ** <dt>SQLITE_CHANGESET_ABORT<dd>
9986
- ** If this value is returned, any changes applied so far are rolled back
10725
+ ** If this value is returned, any changes applied so far are rolled back
9987
10726
  ** and the call to sqlite3changeset_apply() returns SQLITE_ABORT.
9988
10727
  ** </dl>
9989
10728
  */
@@ -9991,27 +10730,183 @@ SQLITE_API int sqlite3changeset_apply(
9991
10730
  #define SQLITE_CHANGESET_REPLACE 1
9992
10731
  #define SQLITE_CHANGESET_ABORT 2
9993
10732
 
10733
+ /*
10734
+ ** CAPI3REF: Rebasing changesets
10735
+ ** EXPERIMENTAL
10736
+ **
10737
+ ** Suppose there is a site hosting a database in state S0. And that
10738
+ ** modifications are made that move that database to state S1 and a
10739
+ ** changeset recorded (the "local" changeset). Then, a changeset based
10740
+ ** on S0 is received from another site (the "remote" changeset) and
10741
+ ** applied to the database. The database is then in state
10742
+ ** (S1+"remote"), where the exact state depends on any conflict
10743
+ ** resolution decisions (OMIT or REPLACE) made while applying "remote".
10744
+ ** Rebasing a changeset is to update it to take those conflict
10745
+ ** resolution decisions into account, so that the same conflicts
10746
+ ** do not have to be resolved elsewhere in the network.
10747
+ **
10748
+ ** For example, if both the local and remote changesets contain an
10749
+ ** INSERT of the same key on "CREATE TABLE t1(a PRIMARY KEY, b)":
10750
+ **
10751
+ ** local: INSERT INTO t1 VALUES(1, 'v1');
10752
+ ** remote: INSERT INTO t1 VALUES(1, 'v2');
10753
+ **
10754
+ ** and the conflict resolution is REPLACE, then the INSERT change is
10755
+ ** removed from the local changeset (it was overridden). Or, if the
10756
+ ** conflict resolution was "OMIT", then the local changeset is modified
10757
+ ** to instead contain:
10758
+ **
10759
+ ** UPDATE t1 SET b = 'v2' WHERE a=1;
10760
+ **
10761
+ ** Changes within the local changeset are rebased as follows:
10762
+ **
10763
+ ** <dl>
10764
+ ** <dt>Local INSERT<dd>
10765
+ ** This may only conflict with a remote INSERT. If the conflict
10766
+ ** resolution was OMIT, then add an UPDATE change to the rebased
10767
+ ** changeset. Or, if the conflict resolution was REPLACE, add
10768
+ ** nothing to the rebased changeset.
10769
+ **
10770
+ ** <dt>Local DELETE<dd>
10771
+ ** This may conflict with a remote UPDATE or DELETE. In both cases the
10772
+ ** only possible resolution is OMIT. If the remote operation was a
10773
+ ** DELETE, then add no change to the rebased changeset. If the remote
10774
+ ** operation was an UPDATE, then the old.* fields of change are updated
10775
+ ** to reflect the new.* values in the UPDATE.
10776
+ **
10777
+ ** <dt>Local UPDATE<dd>
10778
+ ** This may conflict with a remote UPDATE or DELETE. If it conflicts
10779
+ ** with a DELETE, and the conflict resolution was OMIT, then the update
10780
+ ** is changed into an INSERT. Any undefined values in the new.* record
10781
+ ** from the update change are filled in using the old.* values from
10782
+ ** the conflicting DELETE. Or, if the conflict resolution was REPLACE,
10783
+ ** the UPDATE change is simply omitted from the rebased changeset.
10784
+ **
10785
+ ** If conflict is with a remote UPDATE and the resolution is OMIT, then
10786
+ ** the old.* values are rebased using the new.* values in the remote
10787
+ ** change. Or, if the resolution is REPLACE, then the change is copied
10788
+ ** into the rebased changeset with updates to columns also updated by
10789
+ ** the conflicting remote UPDATE removed. If this means no columns would
10790
+ ** be updated, the change is omitted.
10791
+ ** </dl>
10792
+ **
10793
+ ** A local change may be rebased against multiple remote changes
10794
+ ** simultaneously. If a single key is modified by multiple remote
10795
+ ** changesets, they are combined as follows before the local changeset
10796
+ ** is rebased:
10797
+ **
10798
+ ** <ul>
10799
+ ** <li> If there has been one or more REPLACE resolutions on a
10800
+ ** key, it is rebased according to a REPLACE.
10801
+ **
10802
+ ** <li> If there have been no REPLACE resolutions on a key, then
10803
+ ** the local changeset is rebased according to the most recent
10804
+ ** of the OMIT resolutions.
10805
+ ** </ul>
10806
+ **
10807
+ ** Note that conflict resolutions from multiple remote changesets are
10808
+ ** combined on a per-field basis, not per-row. This means that in the
10809
+ ** case of multiple remote UPDATE operations, some fields of a single
10810
+ ** local change may be rebased for REPLACE while others are rebased for
10811
+ ** OMIT.
10812
+ **
10813
+ ** In order to rebase a local changeset, the remote changeset must first
10814
+ ** be applied to the local database using sqlite3changeset_apply_v2() and
10815
+ ** the buffer of rebase information captured. Then:
10816
+ **
10817
+ ** <ol>
10818
+ ** <li> An sqlite3_rebaser object is created by calling
10819
+ ** sqlite3rebaser_create().
10820
+ ** <li> The new object is configured with the rebase buffer obtained from
10821
+ ** sqlite3changeset_apply_v2() by calling sqlite3rebaser_configure().
10822
+ ** If the local changeset is to be rebased against multiple remote
10823
+ ** changesets, then sqlite3rebaser_configure() should be called
10824
+ ** multiple times, in the same order that the multiple
10825
+ ** sqlite3changeset_apply_v2() calls were made.
10826
+ ** <li> Each local changeset is rebased by calling sqlite3rebaser_rebase().
10827
+ ** <li> The sqlite3_rebaser object is deleted by calling
10828
+ ** sqlite3rebaser_delete().
10829
+ ** </ol>
10830
+ */
10831
+ typedef struct sqlite3_rebaser sqlite3_rebaser;
10832
+
10833
+ /*
10834
+ ** CAPI3REF: Create a changeset rebaser object.
10835
+ ** EXPERIMENTAL
10836
+ **
10837
+ ** Allocate a new changeset rebaser object. If successful, set (*ppNew) to
10838
+ ** point to the new object and return SQLITE_OK. Otherwise, if an error
10839
+ ** occurs, return an SQLite error code (e.g. SQLITE_NOMEM) and set (*ppNew)
10840
+ ** to NULL.
10841
+ */
10842
+ SQLITE_API int sqlite3rebaser_create(sqlite3_rebaser **ppNew);
10843
+
10844
+ /*
10845
+ ** CAPI3REF: Configure a changeset rebaser object.
10846
+ ** EXPERIMENTAL
10847
+ **
10848
+ ** Configure the changeset rebaser object to rebase changesets according
10849
+ ** to the conflict resolutions described by buffer pRebase (size nRebase
10850
+ ** bytes), which must have been obtained from a previous call to
10851
+ ** sqlite3changeset_apply_v2().
10852
+ */
10853
+ SQLITE_API int sqlite3rebaser_configure(
10854
+ sqlite3_rebaser*,
10855
+ int nRebase, const void *pRebase
10856
+ );
10857
+
10858
+ /*
10859
+ ** CAPI3REF: Rebase a changeset
10860
+ ** EXPERIMENTAL
10861
+ **
10862
+ ** Argument pIn must point to a buffer containing a changeset nIn bytes
10863
+ ** in size. This function allocates and populates a buffer with a copy
10864
+ ** of the changeset rebased rebased according to the configuration of the
10865
+ ** rebaser object passed as the first argument. If successful, (*ppOut)
10866
+ ** is set to point to the new buffer containing the rebased changset and
10867
+ ** (*pnOut) to its size in bytes and SQLITE_OK returned. It is the
10868
+ ** responsibility of the caller to eventually free the new buffer using
10869
+ ** sqlite3_free(). Otherwise, if an error occurs, (*ppOut) and (*pnOut)
10870
+ ** are set to zero and an SQLite error code returned.
10871
+ */
10872
+ SQLITE_API int sqlite3rebaser_rebase(
10873
+ sqlite3_rebaser*,
10874
+ int nIn, const void *pIn,
10875
+ int *pnOut, void **ppOut
10876
+ );
10877
+
10878
+ /*
10879
+ ** CAPI3REF: Delete a changeset rebaser object.
10880
+ ** EXPERIMENTAL
10881
+ **
10882
+ ** Delete the changeset rebaser object and all associated resources. There
10883
+ ** should be one call to this function for each successful invocation
10884
+ ** of sqlite3rebaser_create().
10885
+ */
10886
+ SQLITE_API void sqlite3rebaser_delete(sqlite3_rebaser *p);
10887
+
9994
10888
  /*
9995
10889
  ** CAPI3REF: Streaming Versions of API functions.
9996
10890
  **
9997
- ** The six streaming API xxx_strm() functions serve similar purposes to the
10891
+ ** The six streaming API xxx_strm() functions serve similar purposes to the
9998
10892
  ** corresponding non-streaming API functions:
9999
10893
  **
10000
10894
  ** <table border=1 style="margin-left:8ex;margin-right:8ex">
10001
10895
  ** <tr><th>Streaming function<th>Non-streaming equivalent</th>
10002
- ** <tr><td>sqlite3changeset_apply_strm<td>[sqlite3changeset_apply]
10003
- ** <tr><td>sqlite3changeset_concat_strm<td>[sqlite3changeset_concat]
10004
- ** <tr><td>sqlite3changeset_invert_strm<td>[sqlite3changeset_invert]
10005
- ** <tr><td>sqlite3changeset_start_strm<td>[sqlite3changeset_start]
10006
- ** <tr><td>sqlite3session_changeset_strm<td>[sqlite3session_changeset]
10007
- ** <tr><td>sqlite3session_patchset_strm<td>[sqlite3session_patchset]
10896
+ ** <tr><td>sqlite3changeset_apply_strm<td>[sqlite3changeset_apply]
10897
+ ** <tr><td>sqlite3changeset_apply_strm_v2<td>[sqlite3changeset_apply_v2]
10898
+ ** <tr><td>sqlite3changeset_concat_strm<td>[sqlite3changeset_concat]
10899
+ ** <tr><td>sqlite3changeset_invert_strm<td>[sqlite3changeset_invert]
10900
+ ** <tr><td>sqlite3changeset_start_strm<td>[sqlite3changeset_start]
10901
+ ** <tr><td>sqlite3session_changeset_strm<td>[sqlite3session_changeset]
10902
+ ** <tr><td>sqlite3session_patchset_strm<td>[sqlite3session_patchset]
10008
10903
  ** </table>
10009
10904
  **
10010
10905
  ** Non-streaming functions that accept changesets (or patchsets) as input
10011
- ** require that the entire changeset be stored in a single buffer in memory.
10012
- ** Similarly, those that return a changeset or patchset do so by returning
10013
- ** a pointer to a single large buffer allocated using sqlite3_malloc().
10014
- ** Normally this is convenient. However, if an application running in a
10906
+ ** require that the entire changeset be stored in a single buffer in memory.
10907
+ ** Similarly, those that return a changeset or patchset do so by returning
10908
+ ** a pointer to a single large buffer allocated using sqlite3_malloc().
10909
+ ** Normally this is convenient. However, if an application running in a
10015
10910
  ** low-memory environment is required to handle very large changesets, the
10016
10911
  ** large contiguous memory allocations required can become onerous.
10017
10912
  **
@@ -10033,12 +10928,12 @@ SQLITE_API int sqlite3changeset_apply(
10033
10928
  ** </pre>
10034
10929
  **
10035
10930
  ** Each time the xInput callback is invoked by the sessions module, the first
10036
- ** argument passed is a copy of the supplied pIn context pointer. The second
10037
- ** argument, pData, points to a buffer (*pnData) bytes in size. Assuming no
10038
- ** error occurs the xInput method should copy up to (*pnData) bytes of data
10039
- ** into the buffer and set (*pnData) to the actual number of bytes copied
10040
- ** before returning SQLITE_OK. If the input is completely exhausted, (*pnData)
10041
- ** should be set to zero to indicate this. Or, if an error occurs, an SQLite
10931
+ ** argument passed is a copy of the supplied pIn context pointer. The second
10932
+ ** argument, pData, points to a buffer (*pnData) bytes in size. Assuming no
10933
+ ** error occurs the xInput method should copy up to (*pnData) bytes of data
10934
+ ** into the buffer and set (*pnData) to the actual number of bytes copied
10935
+ ** before returning SQLITE_OK. If the input is completely exhausted, (*pnData)
10936
+ ** should be set to zero to indicate this. Or, if an error occurs, an SQLite
10042
10937
  ** error code should be returned. In all cases, if an xInput callback returns
10043
10938
  ** an error, all processing is abandoned and the streaming API function
10044
10939
  ** returns a copy of the error code to the caller.
@@ -10046,7 +10941,7 @@ SQLITE_API int sqlite3changeset_apply(
10046
10941
  ** In the case of sqlite3changeset_start_strm(), the xInput callback may be
10047
10942
  ** invoked by the sessions module at any point during the lifetime of the
10048
10943
  ** iterator. If such an xInput callback returns an error, the iterator enters
10049
- ** an error state, whereby all subsequent calls to iterator functions
10944
+ ** an error state, whereby all subsequent calls to iterator functions
10050
10945
  ** immediately fail with the same error code as returned by xInput.
10051
10946
  **
10052
10947
  ** Similarly, streaming API functions that return changesets (or patchsets)
@@ -10076,7 +10971,7 @@ SQLITE_API int sqlite3changeset_apply(
10076
10971
  ** is immediately abandoned and the streaming API function returns a copy
10077
10972
  ** of the xOutput error code to the application.
10078
10973
  **
10079
- ** The sessions module never invokes an xOutput callback with the third
10974
+ ** The sessions module never invokes an xOutput callback with the third
10080
10975
  ** parameter set to a value less than or equal to zero. Other than this,
10081
10976
  ** no guarantees are made as to the size of the chunks of data returned.
10082
10977
  */
@@ -10095,6 +10990,23 @@ SQLITE_API int sqlite3changeset_apply_strm(
10095
10990
  ),
10096
10991
  void *pCtx /* First argument passed to xConflict */
10097
10992
  );
10993
+ SQLITE_API int sqlite3changeset_apply_v2_strm(
10994
+ sqlite3 *db, /* Apply change to "main" db of this handle */
10995
+ int (*xInput)(void *pIn, void *pData, int *pnData), /* Input function */
10996
+ void *pIn, /* First arg for xInput */
10997
+ int(*xFilter)(
10998
+ void *pCtx, /* Copy of sixth arg to _apply() */
10999
+ const char *zTab /* Table name */
11000
+ ),
11001
+ int(*xConflict)(
11002
+ void *pCtx, /* Copy of sixth arg to _apply() */
11003
+ int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */
11004
+ sqlite3_changeset_iter *p /* Handle describing change and conflict */
11005
+ ),
11006
+ void *pCtx, /* First argument passed to xConflict */
11007
+ void **ppRebase, int *pnRebase,
11008
+ int flags
11009
+ );
10098
11010
  SQLITE_API int sqlite3changeset_concat_strm(
10099
11011
  int (*xInputA)(void *pIn, void *pData, int *pnData),
10100
11012
  void *pInA,
@@ -10114,6 +11026,12 @@ SQLITE_API int sqlite3changeset_start_strm(
10114
11026
  int (*xInput)(void *pIn, void *pData, int *pnData),
10115
11027
  void *pIn
10116
11028
  );
11029
+ SQLITE_API int sqlite3changeset_start_v2_strm(
11030
+ sqlite3_changeset_iter **pp,
11031
+ int (*xInput)(void *pIn, void *pData, int *pnData),
11032
+ void *pIn,
11033
+ int flags
11034
+ );
10117
11035
  SQLITE_API int sqlite3session_changeset_strm(
10118
11036
  sqlite3_session *pSession,
10119
11037
  int (*xOutput)(void *pOut, const void *pData, int nData),
@@ -10124,15 +11042,61 @@ SQLITE_API int sqlite3session_patchset_strm(
10124
11042
  int (*xOutput)(void *pOut, const void *pData, int nData),
10125
11043
  void *pOut
10126
11044
  );
10127
- SQLITE_API int sqlite3changegroup_add_strm(sqlite3_changegroup*,
11045
+ SQLITE_API int sqlite3changegroup_add_strm(sqlite3_changegroup*,
10128
11046
  int (*xInput)(void *pIn, void *pData, int *pnData),
10129
11047
  void *pIn
10130
11048
  );
10131
11049
  SQLITE_API int sqlite3changegroup_output_strm(sqlite3_changegroup*,
10132
- int (*xOutput)(void *pOut, const void *pData, int nData),
11050
+ int (*xOutput)(void *pOut, const void *pData, int nData),
10133
11051
  void *pOut
10134
11052
  );
11053
+ SQLITE_API int sqlite3rebaser_rebase_strm(
11054
+ sqlite3_rebaser *pRebaser,
11055
+ int (*xInput)(void *pIn, void *pData, int *pnData),
11056
+ void *pIn,
11057
+ int (*xOutput)(void *pOut, const void *pData, int nData),
11058
+ void *pOut
11059
+ );
11060
+
11061
+ /*
11062
+ ** CAPI3REF: Configure global parameters
11063
+ **
11064
+ ** The sqlite3session_config() interface is used to make global configuration
11065
+ ** changes to the sessions module in order to tune it to the specific needs
11066
+ ** of the application.
11067
+ **
11068
+ ** The sqlite3session_config() interface is not threadsafe. If it is invoked
11069
+ ** while any other thread is inside any other sessions method then the
11070
+ ** results are undefined. Furthermore, if it is invoked after any sessions
11071
+ ** related objects have been created, the results are also undefined.
11072
+ **
11073
+ ** The first argument to the sqlite3session_config() function must be one
11074
+ ** of the SQLITE_SESSION_CONFIG_XXX constants defined below. The
11075
+ ** interpretation of the (void*) value passed as the second parameter and
11076
+ ** the effect of calling this function depends on the value of the first
11077
+ ** parameter.
11078
+ **
11079
+ ** <dl>
11080
+ ** <dt>SQLITE_SESSION_CONFIG_STRMSIZE<dd>
11081
+ ** By default, the sessions module streaming interfaces attempt to input
11082
+ ** and output data in approximately 1 KiB chunks. This operand may be used
11083
+ ** to set and query the value of this configuration setting. The pointer
11084
+ ** passed as the second argument must point to a value of type (int).
11085
+ ** If this value is greater than 0, it is used as the new streaming data
11086
+ ** chunk size for both input and output. Before returning, the (int) value
11087
+ ** pointed to by pArg is set to the final value of the streaming interface
11088
+ ** chunk size.
11089
+ ** </dl>
11090
+ **
11091
+ ** This function returns SQLITE_OK if successful, or an SQLite error code
11092
+ ** otherwise.
11093
+ */
11094
+ SQLITE_API int sqlite3session_config(int op, void *pArg);
10135
11095
 
11096
+ /*
11097
+ ** CAPI3REF: Values for sqlite3session_config().
11098
+ */
11099
+ #define SQLITE_SESSION_CONFIG_STRMSIZE 1
10136
11100
 
10137
11101
  /*
10138
11102
  ** Make sure we can call this stuff from C++.
@@ -10254,8 +11218,8 @@ struct Fts5PhraseIter {
10254
11218
  ** an error code (i.e. SQLITE_NOMEM) if an error occurs.
10255
11219
  **
10256
11220
  ** This API can be quite slow if used with an FTS5 table created with the
10257
- ** "detail=none" or "detail=column" option. If the FTS5 table is created
10258
- ** with either "detail=none" or "detail=column" and "content=" option
11221
+ ** "detail=none" or "detail=column" option. If the FTS5 table is created
11222
+ ** with either "detail=none" or "detail=column" and "content=" option
10259
11223
  ** (i.e. if it is a contentless table), then this API always returns 0.
10260
11224
  **
10261
11225
  ** xInst:
@@ -10274,7 +11238,7 @@ struct Fts5PhraseIter {
10274
11238
  ** if an error occurs.
10275
11239
  **
10276
11240
  ** This API can be quite slow if used with an FTS5 table created with the
10277
- ** "detail=none" or "detail=column" option.
11241
+ ** "detail=none" or "detail=column" option.
10278
11242
  **
10279
11243
  ** xRowid:
10280
11244
  ** Returns the rowid of the current row.
@@ -10290,11 +11254,11 @@ struct Fts5PhraseIter {
10290
11254
  **
10291
11255
  ** with $p set to a phrase equivalent to the phrase iPhrase of the
10292
11256
  ** current query is executed. Any column filter that applies to
10293
- ** phrase iPhrase of the current query is included in $p. For each
10294
- ** row visited, the callback function passed as the fourth argument
10295
- ** is invoked. The context and API objects passed to the callback
11257
+ ** phrase iPhrase of the current query is included in $p. For each
11258
+ ** row visited, the callback function passed as the fourth argument
11259
+ ** is invoked. The context and API objects passed to the callback
10296
11260
  ** function may be used to access the properties of each matched row.
10297
- ** Invoking Api.xUserData() returns a copy of the pointer passed as
11261
+ ** Invoking Api.xUserData() returns a copy of the pointer passed as
10298
11262
  ** the third argument to pUserData.
10299
11263
  **
10300
11264
  ** If the callback function returns any value other than SQLITE_OK, the
@@ -10373,8 +11337,8 @@ struct Fts5PhraseIter {
10373
11337
  ** xPhraseFirstColumn() and xPhraseNextColumn() as illustrated below).
10374
11338
  **
10375
11339
  ** This API can be quite slow if used with an FTS5 table created with the
10376
- ** "detail=none" or "detail=column" option. If the FTS5 table is created
10377
- ** with either "detail=none" or "detail=column" and "content=" option
11340
+ ** "detail=none" or "detail=column" option. If the FTS5 table is created
11341
+ ** with either "detail=none" or "detail=column" and "content=" option
10378
11342
  ** (i.e. if it is a contentless table), then this API always iterates
10379
11343
  ** through an empty set (all calls to xPhraseFirst() set iCol to -1).
10380
11344
  **
@@ -10398,16 +11362,16 @@ struct Fts5PhraseIter {
10398
11362
  ** }
10399
11363
  **
10400
11364
  ** This API can be quite slow if used with an FTS5 table created with the
10401
- ** "detail=none" option. If the FTS5 table is created with either
10402
- ** "detail=none" "content=" option (i.e. if it is a contentless table),
10403
- ** then this API always iterates through an empty set (all calls to
11365
+ ** "detail=none" option. If the FTS5 table is created with either
11366
+ ** "detail=none" "content=" option (i.e. if it is a contentless table),
11367
+ ** then this API always iterates through an empty set (all calls to
10404
11368
  ** xPhraseFirstColumn() set iCol to -1).
10405
11369
  **
10406
11370
  ** The information accessed using this API and its companion
10407
11371
  ** xPhraseFirstColumn() may also be obtained using xPhraseFirst/xPhraseNext
10408
11372
  ** (or xInst/xInstCount). The chief advantage of this API is that it is
10409
11373
  ** significantly more efficient than those alternatives when used with
10410
- ** "detail=column" tables.
11374
+ ** "detail=column" tables.
10411
11375
  **
10412
11376
  ** xPhraseNextColumn()
10413
11377
  ** See xPhraseFirstColumn above.
@@ -10590,7 +11554,7 @@ struct Fts5ExtensionApi {
10590
11554
  ** This way, even if the tokenizer does not provide synonyms
10591
11555
  ** when tokenizing query text (it should not - to do would be
10592
11556
  ** inefficient), it doesn't matter if the user queries for
10593
- ** 'first + place' or '1st + place', as there are entires in the
11557
+ ** 'first + place' or '1st + place', as there are entries in the
10594
11558
  ** FTS index corresponding to both forms of the first token.
10595
11559
  ** </ol>
10596
11560
  **
@@ -10618,7 +11582,7 @@ struct Fts5ExtensionApi {
10618
11582
  ** extra data to the FTS index or require FTS5 to query for multiple terms,
10619
11583
  ** so it is efficient in terms of disk space and query speed. However, it
10620
11584
  ** does not support prefix queries very well. If, as suggested above, the
10621
- ** token "first" is subsituted for "1st" by the tokenizer, then the query:
11585
+ ** token "first" is substituted for "1st" by the tokenizer, then the query:
10622
11586
  **
10623
11587
  ** <codeblock>
10624
11588
  ** ... MATCH '1s*'</codeblock>