extralite-bundle 1.26 → 2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +14 -0
- data/Gemfile.lock +2 -2
- data/LICENSE +1 -1
- data/README.md +41 -15
- data/TODO.md +5 -0
- data/ext/extralite/common.c +75 -58
- data/ext/extralite/database.c +21 -12
- data/ext/extralite/extconf.rb +16 -16
- data/ext/extralite/extralite.h +61 -16
- data/ext/extralite/extralite_ext.c +4 -2
- data/ext/extralite/iterator.c +180 -0
- data/ext/extralite/query.c +479 -0
- data/ext/sqlite3/sqlite3.c +7506 -3493
- data/ext/sqlite3/sqlite3.h +304 -130
- data/lib/extralite/sqlite3_constants.rb +1 -1
- data/lib/extralite/version.rb +1 -1
- data/lib/sequel/adapters/extralite.rb +84 -86
- data/test/perf_prepared.rb +2 -2
- data/test/test_database.rb +9 -9
- data/test/test_extralite.rb +1 -1
- data/test/test_iterator.rb +99 -0
- data/test/test_query.rb +502 -0
- data/test/test_sequel.rb +46 -5
- metadata +6 -4
- data/ext/extralite/prepared_statement.c +0 -333
- data/test/test_prepared_statement.rb +0 -225
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
|