extralite-bundle 1.26 → 1.27
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/Gemfile.lock +2 -2
- data/README.md +1 -1
- data/ext/sqlite3/sqlite3.c +7506 -3493
- data/ext/sqlite3/sqlite3.h +304 -130
- data/lib/extralite/version.rb +1 -1
- data/lib/sequel/adapters/extralite.rb +26 -26
- data/test/test_sequel.rb +27 -5
- metadata +2 -2
data/ext/sqlite3/sqlite3.h
CHANGED
@@ -146,9 +146,9 @@ extern "C" {
|
|
146
146
|
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
|
147
147
|
** [sqlite_version()] and [sqlite_source_id()].
|
148
148
|
*/
|
149
|
-
#define SQLITE_VERSION "3.
|
150
|
-
#define SQLITE_VERSION_NUMBER
|
151
|
-
#define SQLITE_SOURCE_ID "
|
149
|
+
#define SQLITE_VERSION "3.42.0"
|
150
|
+
#define SQLITE_VERSION_NUMBER 3042000
|
151
|
+
#define SQLITE_SOURCE_ID "2023-05-16 12:36:15 831d0fb2836b71c9bc51067c49fee4b8f18047814f2ff22d817d25195cf350b0"
|
152
152
|
|
153
153
|
/*
|
154
154
|
** CAPI3REF: Run-Time Library Version Numbers
|
@@ -563,6 +563,7 @@ SQLITE_API int sqlite3_exec(
|
|
563
563
|
#define SQLITE_CONSTRAINT_DATATYPE (SQLITE_CONSTRAINT |(12<<8))
|
564
564
|
#define SQLITE_NOTICE_RECOVER_WAL (SQLITE_NOTICE | (1<<8))
|
565
565
|
#define SQLITE_NOTICE_RECOVER_ROLLBACK (SQLITE_NOTICE | (2<<8))
|
566
|
+
#define SQLITE_NOTICE_RBU (SQLITE_NOTICE | (3<<8))
|
566
567
|
#define SQLITE_WARNING_AUTOINDEX (SQLITE_WARNING | (1<<8))
|
567
568
|
#define SQLITE_AUTH_USER (SQLITE_AUTH | (1<<8))
|
568
569
|
#define SQLITE_OK_LOAD_PERMANENTLY (SQLITE_OK | (1<<8))
|
@@ -1175,7 +1176,6 @@ struct sqlite3_io_methods {
|
|
1175
1176
|
** in wal mode after the client has finished copying pages from the wal
|
1176
1177
|
** file to the database file, but before the *-shm file is updated to
|
1177
1178
|
** record the fact that the pages have been checkpointed.
|
1178
|
-
** </ul>
|
1179
1179
|
**
|
1180
1180
|
** <li>[[SQLITE_FCNTL_EXTERNAL_READER]]
|
1181
1181
|
** The EXPERIMENTAL [SQLITE_FCNTL_EXTERNAL_READER] opcode is used to detect
|
@@ -1188,16 +1188,16 @@ struct sqlite3_io_methods {
|
|
1188
1188
|
** the database is not a wal-mode db, or if there is no such connection in any
|
1189
1189
|
** other process. This opcode cannot be used to detect transactions opened
|
1190
1190
|
** by clients within the current process, only within other processes.
|
1191
|
-
** </ul>
|
1192
1191
|
**
|
1193
1192
|
** <li>[[SQLITE_FCNTL_CKSM_FILE]]
|
1194
|
-
**
|
1193
|
+
** The [SQLITE_FCNTL_CKSM_FILE] opcode is for use interally by the
|
1194
|
+
** [checksum VFS shim] only.
|
1195
1195
|
**
|
1196
1196
|
** <li>[[SQLITE_FCNTL_RESET_CACHE]]
|
1197
1197
|
** If there is currently no transaction open on the database, and the
|
1198
|
-
** database is not a temp db, then
|
1199
|
-
** of the in-memory page cache. If there is an open
|
1200
|
-
** the db is a temp-db,
|
1198
|
+
** database is not a temp db, then the [SQLITE_FCNTL_RESET_CACHE] file-control
|
1199
|
+
** purges the contents of the in-memory page cache. If there is an open
|
1200
|
+
** transaction, or if the db is a temp-db, this opcode is a no-op, not an error.
|
1201
1201
|
** </ul>
|
1202
1202
|
*/
|
1203
1203
|
#define SQLITE_FCNTL_LOCKSTATE 1
|
@@ -1655,20 +1655,23 @@ SQLITE_API int sqlite3_os_end(void);
|
|
1655
1655
|
** must ensure that no other SQLite interfaces are invoked by other
|
1656
1656
|
** threads while sqlite3_config() is running.</b>
|
1657
1657
|
**
|
1658
|
-
** The sqlite3_config() interface
|
1659
|
-
** may only be invoked prior to library initialization using
|
1660
|
-
** [sqlite3_initialize()] or after shutdown by [sqlite3_shutdown()].
|
1661
|
-
** ^If sqlite3_config() is called after [sqlite3_initialize()] and before
|
1662
|
-
** [sqlite3_shutdown()] then it will return SQLITE_MISUSE.
|
1663
|
-
** Note, however, that ^sqlite3_config() can be called as part of the
|
1664
|
-
** implementation of an application-defined [sqlite3_os_init()].
|
1665
|
-
**
|
1666
1658
|
** The first argument to sqlite3_config() is an integer
|
1667
1659
|
** [configuration option] that determines
|
1668
1660
|
** what property of SQLite is to be configured. Subsequent arguments
|
1669
1661
|
** vary depending on the [configuration option]
|
1670
1662
|
** in the first argument.
|
1671
1663
|
**
|
1664
|
+
** For most configuration options, the sqlite3_config() interface
|
1665
|
+
** may only be invoked prior to library initialization using
|
1666
|
+
** [sqlite3_initialize()] or after shutdown by [sqlite3_shutdown()].
|
1667
|
+
** The exceptional configuration options that may be invoked at any time
|
1668
|
+
** are called "anytime configuration options".
|
1669
|
+
** ^If sqlite3_config() is called after [sqlite3_initialize()] and before
|
1670
|
+
** [sqlite3_shutdown()] with a first argument that is not an anytime
|
1671
|
+
** configuration option, then the sqlite3_config() call will return SQLITE_MISUSE.
|
1672
|
+
** Note, however, that ^sqlite3_config() can be called as part of the
|
1673
|
+
** implementation of an application-defined [sqlite3_os_init()].
|
1674
|
+
**
|
1672
1675
|
** ^When a configuration option is set, sqlite3_config() returns [SQLITE_OK].
|
1673
1676
|
** ^If the option is unknown or SQLite is unable to set the option
|
1674
1677
|
** then this routine returns a non-zero [error code].
|
@@ -1776,6 +1779,23 @@ struct sqlite3_mem_methods {
|
|
1776
1779
|
** These constants are the available integer configuration options that
|
1777
1780
|
** can be passed as the first argument to the [sqlite3_config()] interface.
|
1778
1781
|
**
|
1782
|
+
** Most of the configuration options for sqlite3_config()
|
1783
|
+
** will only work if invoked prior to [sqlite3_initialize()] or after
|
1784
|
+
** [sqlite3_shutdown()]. The few exceptions to this rule are called
|
1785
|
+
** "anytime configuration options".
|
1786
|
+
** ^Calling [sqlite3_config()] with a first argument that is not an
|
1787
|
+
** anytime configuration option in between calls to [sqlite3_initialize()] and
|
1788
|
+
** [sqlite3_shutdown()] is a no-op that returns SQLITE_MISUSE.
|
1789
|
+
**
|
1790
|
+
** The set of anytime configuration options can change (by insertions
|
1791
|
+
** and/or deletions) from one release of SQLite to the next.
|
1792
|
+
** As of SQLite version 3.42.0, the complete set of anytime configuration
|
1793
|
+
** options is:
|
1794
|
+
** <ul>
|
1795
|
+
** <li> SQLITE_CONFIG_LOG
|
1796
|
+
** <li> SQLITE_CONFIG_PCACHE_HDRSZ
|
1797
|
+
** </ul>
|
1798
|
+
**
|
1779
1799
|
** New configuration options may be added in future releases of SQLite.
|
1780
1800
|
** Existing configuration options might be discontinued. Applications
|
1781
1801
|
** should check the return code from [sqlite3_config()] to make sure that
|
@@ -2122,28 +2142,28 @@ struct sqlite3_mem_methods {
|
|
2122
2142
|
** compile-time option is not set, then the default maximum is 1073741824.
|
2123
2143
|
** </dl>
|
2124
2144
|
*/
|
2125
|
-
#define SQLITE_CONFIG_SINGLETHREAD
|
2126
|
-
#define SQLITE_CONFIG_MULTITHREAD
|
2127
|
-
#define SQLITE_CONFIG_SERIALIZED
|
2128
|
-
#define SQLITE_CONFIG_MALLOC
|
2129
|
-
#define SQLITE_CONFIG_GETMALLOC
|
2130
|
-
#define SQLITE_CONFIG_SCRATCH
|
2131
|
-
#define SQLITE_CONFIG_PAGECACHE
|
2132
|
-
#define SQLITE_CONFIG_HEAP
|
2133
|
-
#define SQLITE_CONFIG_MEMSTATUS
|
2134
|
-
#define SQLITE_CONFIG_MUTEX
|
2135
|
-
#define SQLITE_CONFIG_GETMUTEX
|
2136
|
-
/* previously SQLITE_CONFIG_CHUNKALLOC
|
2137
|
-
#define SQLITE_CONFIG_LOOKASIDE
|
2138
|
-
#define SQLITE_CONFIG_PCACHE
|
2139
|
-
#define SQLITE_CONFIG_GETPCACHE
|
2140
|
-
#define SQLITE_CONFIG_LOG
|
2141
|
-
#define SQLITE_CONFIG_URI
|
2142
|
-
#define SQLITE_CONFIG_PCACHE2
|
2143
|
-
#define SQLITE_CONFIG_GETPCACHE2
|
2145
|
+
#define SQLITE_CONFIG_SINGLETHREAD 1 /* nil */
|
2146
|
+
#define SQLITE_CONFIG_MULTITHREAD 2 /* nil */
|
2147
|
+
#define SQLITE_CONFIG_SERIALIZED 3 /* nil */
|
2148
|
+
#define SQLITE_CONFIG_MALLOC 4 /* sqlite3_mem_methods* */
|
2149
|
+
#define SQLITE_CONFIG_GETMALLOC 5 /* sqlite3_mem_methods* */
|
2150
|
+
#define SQLITE_CONFIG_SCRATCH 6 /* No longer used */
|
2151
|
+
#define SQLITE_CONFIG_PAGECACHE 7 /* void*, int sz, int N */
|
2152
|
+
#define SQLITE_CONFIG_HEAP 8 /* void*, int nByte, int min */
|
2153
|
+
#define SQLITE_CONFIG_MEMSTATUS 9 /* boolean */
|
2154
|
+
#define SQLITE_CONFIG_MUTEX 10 /* sqlite3_mutex_methods* */
|
2155
|
+
#define SQLITE_CONFIG_GETMUTEX 11 /* sqlite3_mutex_methods* */
|
2156
|
+
/* previously SQLITE_CONFIG_CHUNKALLOC 12 which is now unused. */
|
2157
|
+
#define SQLITE_CONFIG_LOOKASIDE 13 /* int int */
|
2158
|
+
#define SQLITE_CONFIG_PCACHE 14 /* no-op */
|
2159
|
+
#define SQLITE_CONFIG_GETPCACHE 15 /* no-op */
|
2160
|
+
#define SQLITE_CONFIG_LOG 16 /* xFunc, void* */
|
2161
|
+
#define SQLITE_CONFIG_URI 17 /* int */
|
2162
|
+
#define SQLITE_CONFIG_PCACHE2 18 /* sqlite3_pcache_methods2* */
|
2163
|
+
#define SQLITE_CONFIG_GETPCACHE2 19 /* sqlite3_pcache_methods2* */
|
2144
2164
|
#define SQLITE_CONFIG_COVERING_INDEX_SCAN 20 /* int */
|
2145
|
-
#define SQLITE_CONFIG_SQLLOG
|
2146
|
-
#define SQLITE_CONFIG_MMAP_SIZE
|
2165
|
+
#define SQLITE_CONFIG_SQLLOG 21 /* xSqllog, void* */
|
2166
|
+
#define SQLITE_CONFIG_MMAP_SIZE 22 /* sqlite3_int64, sqlite3_int64 */
|
2147
2167
|
#define SQLITE_CONFIG_WIN32_HEAPSIZE 23 /* int nByte */
|
2148
2168
|
#define SQLITE_CONFIG_PCACHE_HDRSZ 24 /* int *psz */
|
2149
2169
|
#define SQLITE_CONFIG_PMASZ 25 /* unsigned int szPma */
|
@@ -2184,7 +2204,7 @@ struct sqlite3_mem_methods {
|
|
2184
2204
|
** configuration for a database connection can only be changed when that
|
2185
2205
|
** connection is not currently using lookaside memory, or in other words
|
2186
2206
|
** when the "current value" returned by
|
2187
|
-
** [sqlite3_db_status](D,[
|
2207
|
+
** [sqlite3_db_status](D,[SQLITE_DBSTATUS_LOOKASIDE_USED],...) is zero.
|
2188
2208
|
** Any attempt to change the lookaside memory configuration when lookaside
|
2189
2209
|
** memory is in use leaves the configuration unchanged and returns
|
2190
2210
|
** [SQLITE_BUSY].)^</dd>
|
@@ -2334,8 +2354,12 @@ struct sqlite3_mem_methods {
|
|
2334
2354
|
** <li> sqlite3_db_config(db, SQLITE_DBCONFIG_RESET_DATABASE, 0, 0);
|
2335
2355
|
** </ol>
|
2336
2356
|
** Because resetting a database is destructive and irreversible, the
|
2337
|
-
** process requires the use of this obscure API and multiple steps to
|
2338
|
-
** ensure that it does not happen by accident.
|
2357
|
+
** process requires the use of this obscure API and multiple steps to
|
2358
|
+
** help ensure that it does not happen by accident. Because this
|
2359
|
+
** feature must be capable of resetting corrupt databases, and
|
2360
|
+
** shutting down virtual tables may require access to that corrupt
|
2361
|
+
** storage, the library must abandon any installed virtual tables
|
2362
|
+
** without calling their xDestroy() methods.
|
2339
2363
|
**
|
2340
2364
|
** [[SQLITE_DBCONFIG_DEFENSIVE]] <dt>SQLITE_DBCONFIG_DEFENSIVE</dt>
|
2341
2365
|
** <dd>The SQLITE_DBCONFIG_DEFENSIVE option activates or deactivates the
|
@@ -2374,7 +2398,7 @@ struct sqlite3_mem_methods {
|
|
2374
2398
|
** </dd>
|
2375
2399
|
**
|
2376
2400
|
** [[SQLITE_DBCONFIG_DQS_DML]]
|
2377
|
-
** <dt>SQLITE_DBCONFIG_DQS_DML</
|
2401
|
+
** <dt>SQLITE_DBCONFIG_DQS_DML</dt>
|
2378
2402
|
** <dd>The SQLITE_DBCONFIG_DQS_DML option activates or deactivates
|
2379
2403
|
** the legacy [double-quoted string literal] misfeature for DML statements
|
2380
2404
|
** only, that is DELETE, INSERT, SELECT, and UPDATE statements. The
|
@@ -2383,7 +2407,7 @@ struct sqlite3_mem_methods {
|
|
2383
2407
|
** </dd>
|
2384
2408
|
**
|
2385
2409
|
** [[SQLITE_DBCONFIG_DQS_DDL]]
|
2386
|
-
** <dt>SQLITE_DBCONFIG_DQS_DDL</
|
2410
|
+
** <dt>SQLITE_DBCONFIG_DQS_DDL</dt>
|
2387
2411
|
** <dd>The SQLITE_DBCONFIG_DQS option activates or deactivates
|
2388
2412
|
** the legacy [double-quoted string literal] misfeature for DDL statements,
|
2389
2413
|
** such as CREATE TABLE and CREATE INDEX. The
|
@@ -2392,7 +2416,7 @@ struct sqlite3_mem_methods {
|
|
2392
2416
|
** </dd>
|
2393
2417
|
**
|
2394
2418
|
** [[SQLITE_DBCONFIG_TRUSTED_SCHEMA]]
|
2395
|
-
** <dt>SQLITE_DBCONFIG_TRUSTED_SCHEMA</
|
2419
|
+
** <dt>SQLITE_DBCONFIG_TRUSTED_SCHEMA</dt>
|
2396
2420
|
** <dd>The SQLITE_DBCONFIG_TRUSTED_SCHEMA option tells SQLite to
|
2397
2421
|
** assume that database schemas are untainted by malicious content.
|
2398
2422
|
** When the SQLITE_DBCONFIG_TRUSTED_SCHEMA option is disabled, SQLite
|
@@ -2412,7 +2436,7 @@ struct sqlite3_mem_methods {
|
|
2412
2436
|
** </dd>
|
2413
2437
|
**
|
2414
2438
|
** [[SQLITE_DBCONFIG_LEGACY_FILE_FORMAT]]
|
2415
|
-
** <dt>SQLITE_DBCONFIG_LEGACY_FILE_FORMAT</
|
2439
|
+
** <dt>SQLITE_DBCONFIG_LEGACY_FILE_FORMAT</dt>
|
2416
2440
|
** <dd>The SQLITE_DBCONFIG_LEGACY_FILE_FORMAT option activates or deactivates
|
2417
2441
|
** the legacy file format flag. When activated, this flag causes all newly
|
2418
2442
|
** created database file to have a schema format version number (the 4-byte
|
@@ -2421,7 +2445,7 @@ struct sqlite3_mem_methods {
|
|
2421
2445
|
** any SQLite version back to 3.0.0 ([dateof:3.0.0]). Without this setting,
|
2422
2446
|
** newly created databases are generally not understandable by SQLite versions
|
2423
2447
|
** prior to 3.3.0 ([dateof:3.3.0]). As these words are written, there
|
2424
|
-
** is now scarcely any need to
|
2448
|
+
** is now scarcely any need to generate database files that are compatible
|
2425
2449
|
** all the way back to version 3.0.0, and so this setting is of little
|
2426
2450
|
** practical use, but is provided so that SQLite can continue to claim the
|
2427
2451
|
** ability to generate new database files that are compatible with version
|
@@ -2432,6 +2456,38 @@ struct sqlite3_mem_methods {
|
|
2432
2456
|
** not considered a bug since SQLite versions 3.3.0 and earlier do not support
|
2433
2457
|
** either generated columns or decending indexes.
|
2434
2458
|
** </dd>
|
2459
|
+
**
|
2460
|
+
** [[SQLITE_DBCONFIG_STMT_SCANSTATUS]]
|
2461
|
+
** <dt>SQLITE_DBCONFIG_STMT_SCANSTATUS</dt>
|
2462
|
+
** <dd>The SQLITE_DBCONFIG_STMT_SCANSTATUS option is only useful in
|
2463
|
+
** SQLITE_ENABLE_STMT_SCANSTATUS builds. In this case, it sets or clears
|
2464
|
+
** a flag that enables collection of the sqlite3_stmt_scanstatus_v2()
|
2465
|
+
** statistics. For statistics to be collected, the flag must be set on
|
2466
|
+
** the database handle both when the SQL statement is prepared and when it
|
2467
|
+
** is stepped. The flag is set (collection of statistics is enabled)
|
2468
|
+
** by default. This option takes two arguments: an integer and a pointer to
|
2469
|
+
** an integer.. The first argument is 1, 0, or -1 to enable, disable, or
|
2470
|
+
** leave unchanged the statement scanstatus option. If the second argument
|
2471
|
+
** is not NULL, then the value of the statement scanstatus setting after
|
2472
|
+
** processing the first argument is written into the integer that the second
|
2473
|
+
** argument points to.
|
2474
|
+
** </dd>
|
2475
|
+
**
|
2476
|
+
** [[SQLITE_DBCONFIG_REVERSE_SCANORDER]]
|
2477
|
+
** <dt>SQLITE_DBCONFIG_REVERSE_SCANORDER</dt>
|
2478
|
+
** <dd>The SQLITE_DBCONFIG_REVERSE_SCANORDER option changes the default order
|
2479
|
+
** in which tables and indexes are scanned so that the scans start at the end
|
2480
|
+
** and work toward the beginning rather than starting at the beginning and
|
2481
|
+
** working toward the end. Setting SQLITE_DBCONFIG_REVERSE_SCANORDER is the
|
2482
|
+
** same as setting [PRAGMA reverse_unordered_selects]. This option takes
|
2483
|
+
** two arguments which are an integer and a pointer to an integer. The first
|
2484
|
+
** argument is 1, 0, or -1 to enable, disable, or leave unchanged the
|
2485
|
+
** reverse scan order flag, respectively. If the second argument is not NULL,
|
2486
|
+
** then 0 or 1 is written into the integer that the second argument points to
|
2487
|
+
** depending on if the reverse scan order flag is set after processing the
|
2488
|
+
** first argument.
|
2489
|
+
** </dd>
|
2490
|
+
**
|
2435
2491
|
** </dl>
|
2436
2492
|
*/
|
2437
2493
|
#define SQLITE_DBCONFIG_MAINDBNAME 1000 /* const char* */
|
@@ -2452,7 +2508,9 @@ struct sqlite3_mem_methods {
|
|
2452
2508
|
#define SQLITE_DBCONFIG_ENABLE_VIEW 1015 /* int int* */
|
2453
2509
|
#define SQLITE_DBCONFIG_LEGACY_FILE_FORMAT 1016 /* int int* */
|
2454
2510
|
#define SQLITE_DBCONFIG_TRUSTED_SCHEMA 1017 /* int int* */
|
2455
|
-
#define
|
2511
|
+
#define SQLITE_DBCONFIG_STMT_SCANSTATUS 1018 /* int int* */
|
2512
|
+
#define SQLITE_DBCONFIG_REVERSE_SCANORDER 1019 /* int int* */
|
2513
|
+
#define SQLITE_DBCONFIG_MAX 1019 /* Largest DBCONFIG */
|
2456
2514
|
|
2457
2515
|
/*
|
2458
2516
|
** CAPI3REF: Enable Or Disable Extended Result Codes
|
@@ -2674,8 +2732,12 @@ SQLITE_API sqlite3_int64 sqlite3_total_changes64(sqlite3*);
|
|
2674
2732
|
** ^A call to sqlite3_interrupt(D) that occurs when there are no running
|
2675
2733
|
** SQL statements is a no-op and has no effect on SQL statements
|
2676
2734
|
** that are started after the sqlite3_interrupt() call returns.
|
2735
|
+
**
|
2736
|
+
** ^The [sqlite3_is_interrupted(D)] interface can be used to determine whether
|
2737
|
+
** or not an interrupt is currently in effect for [database connection] D.
|
2677
2738
|
*/
|
2678
2739
|
SQLITE_API void sqlite3_interrupt(sqlite3*);
|
2740
|
+
SQLITE_API int sqlite3_is_interrupted(sqlite3*);
|
2679
2741
|
|
2680
2742
|
/*
|
2681
2743
|
** CAPI3REF: Determine If An SQL Statement Is Complete
|
@@ -3293,8 +3355,8 @@ SQLITE_API SQLITE_DEPRECATED void *sqlite3_profile(sqlite3*,
|
|
3293
3355
|
** <dd>^An SQLITE_TRACE_PROFILE callback provides approximately the same
|
3294
3356
|
** information as is provided by the [sqlite3_profile()] callback.
|
3295
3357
|
** ^The P argument is a pointer to the [prepared statement] and the
|
3296
|
-
** X argument points to a 64-bit integer which is
|
3297
|
-
** the number of
|
3358
|
+
** X argument points to a 64-bit integer which is approximately
|
3359
|
+
** the number of nanoseconds that the prepared statement took to run.
|
3298
3360
|
** ^The SQLITE_TRACE_PROFILE callback is invoked when the statement finishes.
|
3299
3361
|
**
|
3300
3362
|
** [[SQLITE_TRACE_ROW]] <dt>SQLITE_TRACE_ROW</dt>
|
@@ -3357,7 +3419,7 @@ SQLITE_API int sqlite3_trace_v2(
|
|
3357
3419
|
**
|
3358
3420
|
** ^The sqlite3_progress_handler(D,N,X,P) interface causes the callback
|
3359
3421
|
** function X to be invoked periodically during long running calls to
|
3360
|
-
** [
|
3422
|
+
** [sqlite3_step()] and [sqlite3_prepare()] and similar for
|
3361
3423
|
** database connection D. An example use for this
|
3362
3424
|
** interface is to keep a GUI updated during a large query.
|
3363
3425
|
**
|
@@ -3382,6 +3444,13 @@ SQLITE_API int sqlite3_trace_v2(
|
|
3382
3444
|
** Note that [sqlite3_prepare_v2()] and [sqlite3_step()] both modify their
|
3383
3445
|
** database connections for the meaning of "modify" in this paragraph.
|
3384
3446
|
**
|
3447
|
+
** The progress handler callback would originally only be invoked from the
|
3448
|
+
** bytecode engine. It still might be invoked during [sqlite3_prepare()]
|
3449
|
+
** and similar because those routines might force a reparse of the schema
|
3450
|
+
** which involves running the bytecode engine. However, beginning with
|
3451
|
+
** SQLite version 3.41.0, the progress handler callback might also be
|
3452
|
+
** invoked directly from [sqlite3_prepare()] while analyzing and generating
|
3453
|
+
** code for complex queries.
|
3385
3454
|
*/
|
3386
3455
|
SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
|
3387
3456
|
|
@@ -3418,13 +3487,18 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
|
|
3418
3487
|
**
|
3419
3488
|
** <dl>
|
3420
3489
|
** ^(<dt>[SQLITE_OPEN_READONLY]</dt>
|
3421
|
-
** <dd>The database is opened in read-only mode. If the database does
|
3422
|
-
** already exist, an error is returned.</dd>)^
|
3490
|
+
** <dd>The database is opened in read-only mode. If the database does
|
3491
|
+
** not already exist, an error is returned.</dd>)^
|
3423
3492
|
**
|
3424
3493
|
** ^(<dt>[SQLITE_OPEN_READWRITE]</dt>
|
3425
|
-
** <dd>The database is opened for reading and writing if possible, or
|
3426
|
-
** only if the file is write protected by the operating
|
3427
|
-
** case the database must already exist, otherwise
|
3494
|
+
** <dd>The database is opened for reading and writing if possible, or
|
3495
|
+
** reading only if the file is write protected by the operating
|
3496
|
+
** system. In either case the database must already exist, otherwise
|
3497
|
+
** an error is returned. For historical reasons, if opening in
|
3498
|
+
** read-write mode fails due to OS-level permissions, an attempt is
|
3499
|
+
** made to open it in read-only mode. [sqlite3_db_readonly()] can be
|
3500
|
+
** used to determine whether the database is actually
|
3501
|
+
** read-write.</dd>)^
|
3428
3502
|
**
|
3429
3503
|
** ^(<dt>[SQLITE_OPEN_READWRITE] | [SQLITE_OPEN_CREATE]</dt>
|
3430
3504
|
** <dd>The database is opened for reading and writing, and is created if
|
@@ -5405,10 +5479,21 @@ SQLITE_API int sqlite3_create_window_function(
|
|
5405
5479
|
** from top-level SQL, and cannot be used in VIEWs or TRIGGERs nor in
|
5406
5480
|
** schema structures such as [CHECK constraints], [DEFAULT clauses],
|
5407
5481
|
** [expression indexes], [partial indexes], or [generated columns].
|
5408
|
-
**
|
5409
|
-
**
|
5410
|
-
**
|
5411
|
-
** information.
|
5482
|
+
** <p>
|
5483
|
+
** The SQLITE_DIRECTONLY flag is recommended for any
|
5484
|
+
** [application-defined SQL function]
|
5485
|
+
** that has side-effects or that could potentially leak sensitive information.
|
5486
|
+
** This will prevent attacks in which an application is tricked
|
5487
|
+
** into using a database file that has had its schema surreptiously
|
5488
|
+
** modified to invoke the application-defined function in ways that are
|
5489
|
+
** harmful.
|
5490
|
+
** <p>
|
5491
|
+
** Some people say it is good practice to set SQLITE_DIRECTONLY on all
|
5492
|
+
** [application-defined SQL functions], regardless of whether or not they
|
5493
|
+
** are security sensitive, as doing so prevents those functions from being used
|
5494
|
+
** inside of the database schema, and thus ensures that the database
|
5495
|
+
** can be inspected and modified using generic tools (such as the [CLI])
|
5496
|
+
** that do not have access to the application-defined functions.
|
5412
5497
|
** </dd>
|
5413
5498
|
**
|
5414
5499
|
** [[SQLITE_INNOCUOUS]] <dt>SQLITE_INNOCUOUS</dt><dd>
|
@@ -5549,16 +5634,6 @@ SQLITE_API SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int6
|
|
5549
5634
|
** then the conversion is performed. Otherwise no conversion occurs.
|
5550
5635
|
** The [SQLITE_INTEGER | datatype] after conversion is returned.)^
|
5551
5636
|
**
|
5552
|
-
** ^(The sqlite3_value_encoding(X) interface returns one of [SQLITE_UTF8],
|
5553
|
-
** [SQLITE_UTF16BE], or [SQLITE_UTF16LE] according to the current encoding
|
5554
|
-
** of the value X, assuming that X has type TEXT.)^ If sqlite3_value_type(X)
|
5555
|
-
** returns something other than SQLITE_TEXT, then the return value from
|
5556
|
-
** sqlite3_value_encoding(X) is meaningless. ^Calls to
|
5557
|
-
** sqlite3_value_text(X), sqlite3_value_text16(X), sqlite3_value_text16be(X),
|
5558
|
-
** sqlite3_value_text16le(X), sqlite3_value_bytes(X), or
|
5559
|
-
** sqlite3_value_bytes16(X) might change the encoding of the value X and
|
5560
|
-
** thus change the return from subsequent calls to sqlite3_value_encoding(X).
|
5561
|
-
**
|
5562
5637
|
** ^Within the [xUpdate] method of a [virtual table], the
|
5563
5638
|
** sqlite3_value_nochange(X) interface returns true if and only if
|
5564
5639
|
** the column corresponding to X is unchanged by the UPDATE operation
|
@@ -5623,6 +5698,27 @@ SQLITE_API int sqlite3_value_type(sqlite3_value*);
|
|
5623
5698
|
SQLITE_API int sqlite3_value_numeric_type(sqlite3_value*);
|
5624
5699
|
SQLITE_API int sqlite3_value_nochange(sqlite3_value*);
|
5625
5700
|
SQLITE_API int sqlite3_value_frombind(sqlite3_value*);
|
5701
|
+
|
5702
|
+
/*
|
5703
|
+
** CAPI3REF: Report the internal text encoding state of an sqlite3_value object
|
5704
|
+
** METHOD: sqlite3_value
|
5705
|
+
**
|
5706
|
+
** ^(The sqlite3_value_encoding(X) interface returns one of [SQLITE_UTF8],
|
5707
|
+
** [SQLITE_UTF16BE], or [SQLITE_UTF16LE] according to the current text encoding
|
5708
|
+
** of the value X, assuming that X has type TEXT.)^ If sqlite3_value_type(X)
|
5709
|
+
** returns something other than SQLITE_TEXT, then the return value from
|
5710
|
+
** sqlite3_value_encoding(X) is meaningless. ^Calls to
|
5711
|
+
** [sqlite3_value_text(X)], [sqlite3_value_text16(X)], [sqlite3_value_text16be(X)],
|
5712
|
+
** [sqlite3_value_text16le(X)], [sqlite3_value_bytes(X)], or
|
5713
|
+
** [sqlite3_value_bytes16(X)] might change the encoding of the value X and
|
5714
|
+
** thus change the return from subsequent calls to sqlite3_value_encoding(X).
|
5715
|
+
**
|
5716
|
+
** This routine is intended for used by applications that test and validate
|
5717
|
+
** the SQLite implementation. This routine is inquiring about the opaque
|
5718
|
+
** internal state of an [sqlite3_value] object. Ordinary applications should
|
5719
|
+
** not need to know what the internal state of an sqlite3_value object is and
|
5720
|
+
** hence should not need to use this interface.
|
5721
|
+
*/
|
5626
5722
|
SQLITE_API int sqlite3_value_encoding(sqlite3_value*);
|
5627
5723
|
|
5628
5724
|
/*
|
@@ -6159,6 +6255,13 @@ SQLITE_API void sqlite3_activate_cerod(
|
|
6159
6255
|
** of the default VFS is not implemented correctly, or not implemented at
|
6160
6256
|
** all, then the behavior of sqlite3_sleep() may deviate from the description
|
6161
6257
|
** in the previous paragraphs.
|
6258
|
+
**
|
6259
|
+
** If a negative argument is passed to sqlite3_sleep() the results vary by
|
6260
|
+
** VFS and operating system. Some system treat a negative argument as an
|
6261
|
+
** instruction to sleep forever. Others understand it to mean do not sleep
|
6262
|
+
** at all. ^In SQLite version 3.42.0 and later, a negative
|
6263
|
+
** argument passed into sqlite3_sleep() is changed to zero before it is relayed
|
6264
|
+
** down into the xSleep method of the VFS.
|
6162
6265
|
*/
|
6163
6266
|
SQLITE_API int sqlite3_sleep(int);
|
6164
6267
|
|
@@ -7003,15 +7106,6 @@ SQLITE_API int sqlite3_cancel_auto_extension(void(*xEntryPoint)(void));
|
|
7003
7106
|
*/
|
7004
7107
|
SQLITE_API void sqlite3_reset_auto_extension(void);
|
7005
7108
|
|
7006
|
-
/*
|
7007
|
-
** The interface to the virtual-table mechanism is currently considered
|
7008
|
-
** to be experimental. The interface might change in incompatible ways.
|
7009
|
-
** If this is a problem for you, do not use the interface at this time.
|
7010
|
-
**
|
7011
|
-
** When the virtual-table mechanism stabilizes, we will declare the
|
7012
|
-
** interface fixed, support it indefinitely, and remove this comment.
|
7013
|
-
*/
|
7014
|
-
|
7015
7109
|
/*
|
7016
7110
|
** Structures used by the virtual table interface
|
7017
7111
|
*/
|
@@ -7130,10 +7224,10 @@ struct sqlite3_module {
|
|
7130
7224
|
** when the omit flag is true there is no guarantee that the constraint will
|
7131
7225
|
** not be checked again using byte code.)^
|
7132
7226
|
**
|
7133
|
-
** ^The idxNum and
|
7227
|
+
** ^The idxNum and idxStr values are recorded and passed into the
|
7134
7228
|
** [xFilter] method.
|
7135
|
-
** ^[sqlite3_free()] is used to free
|
7136
|
-
**
|
7229
|
+
** ^[sqlite3_free()] is used to free idxStr if and only if
|
7230
|
+
** needToFreeIdxStr is true.
|
7137
7231
|
**
|
7138
7232
|
** ^The orderByConsumed means that output from [xFilter]/[xNext] will occur in
|
7139
7233
|
** the correct order to satisfy the ORDER BY clause so that no separate
|
@@ -7253,7 +7347,7 @@ struct sqlite3_index_info {
|
|
7253
7347
|
** the [sqlite3_vtab_collation()] interface. For most real-world virtual
|
7254
7348
|
** tables, the collating sequence of constraints does not matter (for example
|
7255
7349
|
** because the constraints are numeric) and so the sqlite3_vtab_collation()
|
7256
|
-
** interface is
|
7350
|
+
** interface is not commonly needed.
|
7257
7351
|
*/
|
7258
7352
|
#define SQLITE_INDEX_CONSTRAINT_EQ 2
|
7259
7353
|
#define SQLITE_INDEX_CONSTRAINT_GT 4
|
@@ -7412,16 +7506,6 @@ SQLITE_API int sqlite3_declare_vtab(sqlite3*, const char *zSQL);
|
|
7412
7506
|
*/
|
7413
7507
|
SQLITE_API int sqlite3_overload_function(sqlite3*, const char *zFuncName, int nArg);
|
7414
7508
|
|
7415
|
-
/*
|
7416
|
-
** The interface to the virtual-table mechanism defined above (back up
|
7417
|
-
** to a comment remarkably similar to this one) is currently considered
|
7418
|
-
** to be experimental. The interface might change in incompatible ways.
|
7419
|
-
** If this is a problem for you, do not use the interface at this time.
|
7420
|
-
**
|
7421
|
-
** When the virtual-table mechanism stabilizes, we will declare the
|
7422
|
-
** interface fixed, support it indefinitely, and remove this comment.
|
7423
|
-
*/
|
7424
|
-
|
7425
7509
|
/*
|
7426
7510
|
** CAPI3REF: A Handle To An Open BLOB
|
7427
7511
|
** KEYWORDS: {BLOB handle} {BLOB handles}
|
@@ -7805,9 +7889,9 @@ SQLITE_API int sqlite3_vfs_unregister(sqlite3_vfs*);
|
|
7805
7889
|
** is undefined if the mutex is not currently entered by the
|
7806
7890
|
** calling thread or is not currently allocated.
|
7807
7891
|
**
|
7808
|
-
** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(),
|
7809
|
-
** sqlite3_mutex_leave() is a NULL pointer,
|
7810
|
-
**
|
7892
|
+
** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(),
|
7893
|
+
** sqlite3_mutex_leave(), or sqlite3_mutex_free() is a NULL pointer,
|
7894
|
+
** then any of the four routines behaves as a no-op.
|
7811
7895
|
**
|
7812
7896
|
** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()].
|
7813
7897
|
*/
|
@@ -9541,18 +9625,28 @@ SQLITE_API int sqlite3_vtab_config(sqlite3*, int op, ...);
|
|
9541
9625
|
** [[SQLITE_VTAB_INNOCUOUS]]<dt>SQLITE_VTAB_INNOCUOUS</dt>
|
9542
9626
|
** <dd>Calls of the form
|
9543
9627
|
** [sqlite3_vtab_config](db,SQLITE_VTAB_INNOCUOUS) from within the
|
9544
|
-
** the [xConnect] or [xCreate] methods of a [virtual table]
|
9628
|
+
** the [xConnect] or [xCreate] methods of a [virtual table] implementation
|
9545
9629
|
** identify that virtual table as being safe to use from within triggers
|
9546
9630
|
** and views. Conceptually, the SQLITE_VTAB_INNOCUOUS tag means that the
|
9547
9631
|
** virtual table can do no serious harm even if it is controlled by a
|
9548
9632
|
** malicious hacker. Developers should avoid setting the SQLITE_VTAB_INNOCUOUS
|
9549
9633
|
** flag unless absolutely necessary.
|
9550
9634
|
** </dd>
|
9635
|
+
**
|
9636
|
+
** [[SQLITE_VTAB_USES_ALL_SCHEMAS]]<dt>SQLITE_VTAB_USES_ALL_SCHEMAS</dt>
|
9637
|
+
** <dd>Calls of the form
|
9638
|
+
** [sqlite3_vtab_config](db,SQLITE_VTAB_USES_ALL_SCHEMA) from within the
|
9639
|
+
** the [xConnect] or [xCreate] methods of a [virtual table] implementation
|
9640
|
+
** instruct the query planner to begin at least a read transaction on
|
9641
|
+
** all schemas ("main", "temp", and any ATTACH-ed databases) whenever the
|
9642
|
+
** virtual table is used.
|
9643
|
+
** </dd>
|
9551
9644
|
** </dl>
|
9552
9645
|
*/
|
9553
9646
|
#define SQLITE_VTAB_CONSTRAINT_SUPPORT 1
|
9554
9647
|
#define SQLITE_VTAB_INNOCUOUS 2
|
9555
9648
|
#define SQLITE_VTAB_DIRECTONLY 3
|
9649
|
+
#define SQLITE_VTAB_USES_ALL_SCHEMAS 4
|
9556
9650
|
|
9557
9651
|
/*
|
9558
9652
|
** CAPI3REF: Determine The Virtual Table Conflict Policy
|
@@ -9625,7 +9719,7 @@ SQLITE_API int sqlite3_vtab_nochange(sqlite3_context*);
|
|
9625
9719
|
** <li><p> Otherwise, "BINARY" is returned.
|
9626
9720
|
** </ol>
|
9627
9721
|
*/
|
9628
|
-
SQLITE_API
|
9722
|
+
SQLITE_API const char *sqlite3_vtab_collation(sqlite3_index_info*,int);
|
9629
9723
|
|
9630
9724
|
/*
|
9631
9725
|
** CAPI3REF: Determine if a virtual table query is DISTINCT
|
@@ -9782,21 +9876,20 @@ SQLITE_API int sqlite3_vtab_in(sqlite3_index_info*, int iCons, int bHandle);
|
|
9782
9876
|
** is undefined and probably harmful.
|
9783
9877
|
**
|
9784
9878
|
** The X parameter in a call to sqlite3_vtab_in_first(X,P) or
|
9785
|
-
** sqlite3_vtab_in_next(X,P)
|
9879
|
+
** sqlite3_vtab_in_next(X,P) should be one of the parameters to the
|
9786
9880
|
** xFilter method which invokes these routines, and specifically
|
9787
9881
|
** a parameter that was previously selected for all-at-once IN constraint
|
9788
9882
|
** processing use the [sqlite3_vtab_in()] interface in the
|
9789
9883
|
** [xBestIndex|xBestIndex method]. ^(If the X parameter is not
|
9790
9884
|
** an xFilter argument that was selected for all-at-once IN constraint
|
9791
|
-
** processing, then these routines return [
|
9792
|
-
** exhibit some other undefined or harmful behavior.
|
9885
|
+
** processing, then these routines return [SQLITE_ERROR].)^
|
9793
9886
|
**
|
9794
9887
|
** ^(Use these routines to access all values on the right-hand side
|
9795
9888
|
** of the IN constraint using code like the following:
|
9796
9889
|
**
|
9797
9890
|
** <blockquote><pre>
|
9798
9891
|
** for(rc=sqlite3_vtab_in_first(pList, &pVal);
|
9799
|
-
** rc==SQLITE_OK && pVal
|
9892
|
+
** rc==SQLITE_OK && pVal;
|
9800
9893
|
** rc=sqlite3_vtab_in_next(pList, &pVal)
|
9801
9894
|
** ){
|
9802
9895
|
** // do something with pVal
|
@@ -9894,6 +9987,10 @@ SQLITE_API int sqlite3_vtab_rhs_value(sqlite3_index_info*, int, sqlite3_value **
|
|
9894
9987
|
** managed by the prepared statement S and will be automatically freed when
|
9895
9988
|
** S is finalized.
|
9896
9989
|
**
|
9990
|
+
** Not all values are available for all query elements. When a value is
|
9991
|
+
** not available, the output variable is set to -1 if the value is numeric,
|
9992
|
+
** or to NULL if it is a string (SQLITE_SCANSTAT_NAME).
|
9993
|
+
**
|
9897
9994
|
** <dl>
|
9898
9995
|
** [[SQLITE_SCANSTAT_NLOOP]] <dt>SQLITE_SCANSTAT_NLOOP</dt>
|
9899
9996
|
** <dd>^The [sqlite3_int64] variable pointed to by the V parameter will be
|
@@ -9921,12 +10018,24 @@ SQLITE_API int sqlite3_vtab_rhs_value(sqlite3_index_info*, int, sqlite3_value **
|
|
9921
10018
|
** to a zero-terminated UTF-8 string containing the [EXPLAIN QUERY PLAN]
|
9922
10019
|
** description for the X-th loop.
|
9923
10020
|
**
|
9924
|
-
** [[SQLITE_SCANSTAT_SELECTID]] <dt>
|
10021
|
+
** [[SQLITE_SCANSTAT_SELECTID]] <dt>SQLITE_SCANSTAT_SELECTID</dt>
|
9925
10022
|
** <dd>^The "int" variable pointed to by the V parameter will be set to the
|
9926
|
-
**
|
9927
|
-
**
|
9928
|
-
**
|
9929
|
-
**
|
10023
|
+
** id for the X-th query plan element. The id value is unique within the
|
10024
|
+
** statement. The select-id is the same value as is output in the first
|
10025
|
+
** column of an [EXPLAIN QUERY PLAN] query.
|
10026
|
+
**
|
10027
|
+
** [[SQLITE_SCANSTAT_PARENTID]] <dt>SQLITE_SCANSTAT_PARENTID</dt>
|
10028
|
+
** <dd>The "int" variable pointed to by the V parameter will be set to the
|
10029
|
+
** the id of the parent of the current query element, if applicable, or
|
10030
|
+
** to zero if the query element has no parent. This is the same value as
|
10031
|
+
** returned in the second column of an [EXPLAIN QUERY PLAN] query.
|
10032
|
+
**
|
10033
|
+
** [[SQLITE_SCANSTAT_NCYCLE]] <dt>SQLITE_SCANSTAT_NCYCLE</dt>
|
10034
|
+
** <dd>The sqlite3_int64 output value is set to the number of cycles,
|
10035
|
+
** according to the processor time-stamp counter, that elapsed while the
|
10036
|
+
** query element was being processed. This value is not available for
|
10037
|
+
** all query elements - if it is unavailable the output variable is
|
10038
|
+
** set to -1.
|
9930
10039
|
** </dl>
|
9931
10040
|
*/
|
9932
10041
|
#define SQLITE_SCANSTAT_NLOOP 0
|
@@ -9935,12 +10044,14 @@ SQLITE_API int sqlite3_vtab_rhs_value(sqlite3_index_info*, int, sqlite3_value **
|
|
9935
10044
|
#define SQLITE_SCANSTAT_NAME 3
|
9936
10045
|
#define SQLITE_SCANSTAT_EXPLAIN 4
|
9937
10046
|
#define SQLITE_SCANSTAT_SELECTID 5
|
10047
|
+
#define SQLITE_SCANSTAT_PARENTID 6
|
10048
|
+
#define SQLITE_SCANSTAT_NCYCLE 7
|
9938
10049
|
|
9939
10050
|
/*
|
9940
10051
|
** CAPI3REF: Prepared Statement Scan Status
|
9941
10052
|
** METHOD: sqlite3_stmt
|
9942
10053
|
**
|
9943
|
-
**
|
10054
|
+
** These interfaces return information about the predicted and measured
|
9944
10055
|
** performance for pStmt. Advanced applications can use this
|
9945
10056
|
** interface to compare the predicted and the measured performance and
|
9946
10057
|
** issue warnings and/or rerun [ANALYZE] if discrepancies are found.
|
@@ -9951,19 +10062,25 @@ SQLITE_API int sqlite3_vtab_rhs_value(sqlite3_index_info*, int, sqlite3_value **
|
|
9951
10062
|
**
|
9952
10063
|
** The "iScanStatusOp" parameter determines which status information to return.
|
9953
10064
|
** The "iScanStatusOp" must be one of the [scanstatus options] or the behavior
|
9954
|
-
** of this interface is undefined.
|
9955
|
-
**
|
9956
|
-
**
|
9957
|
-
**
|
9958
|
-
**
|
9959
|
-
**
|
9960
|
-
**
|
9961
|
-
**
|
9962
|
-
**
|
9963
|
-
**
|
9964
|
-
**
|
9965
|
-
**
|
9966
|
-
**
|
10065
|
+
** of this interface is undefined. ^The requested measurement is written into
|
10066
|
+
** a variable pointed to by the "pOut" parameter.
|
10067
|
+
**
|
10068
|
+
** The "flags" parameter must be passed a mask of flags. At present only
|
10069
|
+
** one flag is defined - SQLITE_SCANSTAT_COMPLEX. If SQLITE_SCANSTAT_COMPLEX
|
10070
|
+
** is specified, then status information is available for all elements
|
10071
|
+
** of a query plan that are reported by "EXPLAIN QUERY PLAN" output. If
|
10072
|
+
** SQLITE_SCANSTAT_COMPLEX is not specified, then only query plan elements
|
10073
|
+
** that correspond to query loops (the "SCAN..." and "SEARCH..." elements of
|
10074
|
+
** the EXPLAIN QUERY PLAN output) are available. Invoking API
|
10075
|
+
** sqlite3_stmt_scanstatus() is equivalent to calling
|
10076
|
+
** sqlite3_stmt_scanstatus_v2() with a zeroed flags parameter.
|
10077
|
+
**
|
10078
|
+
** Parameter "idx" identifies the specific query element to retrieve statistics
|
10079
|
+
** for. Query elements are numbered starting from zero. A value of -1 may be
|
10080
|
+
** to query for statistics regarding the entire query. ^If idx is out of range
|
10081
|
+
** - less than -1 or greater than or equal to the total number of query
|
10082
|
+
** elements used to implement the statement - a non-zero value is returned and
|
10083
|
+
** the variable that pOut points to is unchanged.
|
9967
10084
|
**
|
9968
10085
|
** See also: [sqlite3_stmt_scanstatus_reset()]
|
9969
10086
|
*/
|
@@ -9973,6 +10090,19 @@ SQLITE_API int sqlite3_stmt_scanstatus(
|
|
9973
10090
|
int iScanStatusOp, /* Information desired. SQLITE_SCANSTAT_* */
|
9974
10091
|
void *pOut /* Result written here */
|
9975
10092
|
);
|
10093
|
+
SQLITE_API int sqlite3_stmt_scanstatus_v2(
|
10094
|
+
sqlite3_stmt *pStmt, /* Prepared statement for which info desired */
|
10095
|
+
int idx, /* Index of loop to report on */
|
10096
|
+
int iScanStatusOp, /* Information desired. SQLITE_SCANSTAT_* */
|
10097
|
+
int flags, /* Mask of flags defined below */
|
10098
|
+
void *pOut /* Result written here */
|
10099
|
+
);
|
10100
|
+
|
10101
|
+
/*
|
10102
|
+
** CAPI3REF: Prepared Statement Scan Status
|
10103
|
+
** KEYWORDS: {scan status flags}
|
10104
|
+
*/
|
10105
|
+
#define SQLITE_SCANSTAT_COMPLEX 0x0001
|
9976
10106
|
|
9977
10107
|
/*
|
9978
10108
|
** CAPI3REF: Zero Scan-Status Counters
|
@@ -10063,6 +10193,10 @@ SQLITE_API int sqlite3_db_cacheflush(sqlite3*);
|
|
10063
10193
|
** function is not defined for operations on WITHOUT ROWID tables, or for
|
10064
10194
|
** DELETE operations on rowid tables.
|
10065
10195
|
**
|
10196
|
+
** ^The sqlite3_preupdate_hook(D,C,P) function returns the P argument from
|
10197
|
+
** the previous call on the same [database connection] D, or NULL for
|
10198
|
+
** the first call on D.
|
10199
|
+
**
|
10066
10200
|
** The [sqlite3_preupdate_old()], [sqlite3_preupdate_new()],
|
10067
10201
|
** [sqlite3_preupdate_count()], and [sqlite3_preupdate_depth()] interfaces
|
10068
10202
|
** provide additional information about a preupdate event. These routines
|
@@ -10468,6 +10602,19 @@ SQLITE_API int sqlite3_deserialize(
|
|
10468
10602
|
# undef double
|
10469
10603
|
#endif
|
10470
10604
|
|
10605
|
+
#if defined(__wasi__)
|
10606
|
+
# undef SQLITE_WASI
|
10607
|
+
# define SQLITE_WASI 1
|
10608
|
+
# undef SQLITE_OMIT_WAL
|
10609
|
+
# define SQLITE_OMIT_WAL 1/* because it requires shared memory APIs */
|
10610
|
+
# ifndef SQLITE_OMIT_LOAD_EXTENSION
|
10611
|
+
# define SQLITE_OMIT_LOAD_EXTENSION
|
10612
|
+
# endif
|
10613
|
+
# ifndef SQLITE_THREADSAFE
|
10614
|
+
# define SQLITE_THREADSAFE 0
|
10615
|
+
# endif
|
10616
|
+
#endif
|
10617
|
+
|
10471
10618
|
#ifdef __cplusplus
|
10472
10619
|
} /* End of the 'extern "C"' block */
|
10473
10620
|
#endif
|
@@ -10674,16 +10821,20 @@ SQLITE_API int sqlite3session_create(
|
|
10674
10821
|
SQLITE_API void sqlite3session_delete(sqlite3_session *pSession);
|
10675
10822
|
|
10676
10823
|
/*
|
10677
|
-
**
|
10824
|
+
** CAPI3REF: Configure a Session Object
|
10678
10825
|
** METHOD: sqlite3_session
|
10679
10826
|
**
|
10680
10827
|
** This method is used to configure a session object after it has been
|
10681
|
-
** created. At present the only valid
|
10682
|
-
** [SQLITE_SESSION_OBJCONFIG_SIZE].
|
10828
|
+
** created. At present the only valid values for the second parameter are
|
10829
|
+
** [SQLITE_SESSION_OBJCONFIG_SIZE] and [SQLITE_SESSION_OBJCONFIG_ROWID].
|
10683
10830
|
**
|
10684
|
-
|
10831
|
+
*/
|
10832
|
+
SQLITE_API int sqlite3session_object_config(sqlite3_session*, int op, void *pArg);
|
10833
|
+
|
10834
|
+
/*
|
10835
|
+
** CAPI3REF: Options for sqlite3session_object_config
|
10685
10836
|
**
|
10686
|
-
** The following values may passed as the the
|
10837
|
+
** The following values may passed as the the 2nd parameter to
|
10687
10838
|
** sqlite3session_object_config().
|
10688
10839
|
**
|
10689
10840
|
** <dt>SQLITE_SESSION_OBJCONFIG_SIZE <dd>
|
@@ -10699,12 +10850,21 @@ SQLITE_API void sqlite3session_delete(sqlite3_session *pSession);
|
|
10699
10850
|
**
|
10700
10851
|
** It is an error (SQLITE_MISUSE) to attempt to modify this setting after
|
10701
10852
|
** the first table has been attached to the session object.
|
10853
|
+
**
|
10854
|
+
** <dt>SQLITE_SESSION_OBJCONFIG_ROWID <dd>
|
10855
|
+
** This option is used to set, clear or query the flag that enables
|
10856
|
+
** collection of data for tables with no explicit PRIMARY KEY.
|
10857
|
+
**
|
10858
|
+
** Normally, tables with no explicit PRIMARY KEY are simply ignored
|
10859
|
+
** by the sessions module. However, if this flag is set, it behaves
|
10860
|
+
** as if such tables have a column "_rowid_ INTEGER PRIMARY KEY" inserted
|
10861
|
+
** as their leftmost columns.
|
10862
|
+
**
|
10863
|
+
** It is an error (SQLITE_MISUSE) to attempt to modify this setting after
|
10864
|
+
** the first table has been attached to the session object.
|
10702
10865
|
*/
|
10703
|
-
|
10704
|
-
|
10705
|
-
/*
|
10706
|
-
*/
|
10707
|
-
#define SQLITE_SESSION_OBJCONFIG_SIZE 1
|
10866
|
+
#define SQLITE_SESSION_OBJCONFIG_SIZE 1
|
10867
|
+
#define SQLITE_SESSION_OBJCONFIG_ROWID 2
|
10708
10868
|
|
10709
10869
|
/*
|
10710
10870
|
** CAPI3REF: Enable Or Disable A Session Object
|
@@ -11837,9 +11997,23 @@ SQLITE_API int sqlite3changeset_apply_v2(
|
|
11837
11997
|
** Invert the changeset before applying it. This is equivalent to inverting
|
11838
11998
|
** a changeset using sqlite3changeset_invert() before applying it. It is
|
11839
11999
|
** an error to specify this flag with a patchset.
|
12000
|
+
**
|
12001
|
+
** <dt>SQLITE_CHANGESETAPPLY_IGNORENOOP <dd>
|
12002
|
+
** Do not invoke the conflict handler callback for any changes that
|
12003
|
+
** would not actually modify the database even if they were applied.
|
12004
|
+
** Specifically, this means that the conflict handler is not invoked
|
12005
|
+
** for:
|
12006
|
+
** <ul>
|
12007
|
+
** <li>a delete change if the row being deleted cannot be found,
|
12008
|
+
** <li>an update change if the modified fields are already set to
|
12009
|
+
** their new values in the conflicting row, or
|
12010
|
+
** <li>an insert change if all fields of the conflicting row match
|
12011
|
+
** the row being inserted.
|
12012
|
+
** </ul>
|
11840
12013
|
*/
|
11841
12014
|
#define SQLITE_CHANGESETAPPLY_NOSAVEPOINT 0x0001
|
11842
12015
|
#define SQLITE_CHANGESETAPPLY_INVERT 0x0002
|
12016
|
+
#define SQLITE_CHANGESETAPPLY_IGNORENOOP 0x0004
|
11843
12017
|
|
11844
12018
|
/*
|
11845
12019
|
** CAPI3REF: Constants Passed To The Conflict Handler
|