amalgalite 1.9.1-x64-mingw32 → 1.9.4-x64-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.
- checksums.yaml +4 -4
- data/HISTORY.md +9 -0
- data/ext/amalgalite/c/sqlite3.c +16397 -5973
- data/ext/amalgalite/c/sqlite3.h +508 -123
- data/ext/amalgalite/c/sqlite3ext.h +10 -0
- data/lib/amalgalite/2.4/amalgalite.so +0 -0
- data/lib/amalgalite/2.5/amalgalite.so +0 -0
- data/lib/amalgalite/2.6/amalgalite.so +0 -0
- data/lib/amalgalite/2.7/amalgalite.so +0 -0
- data/lib/amalgalite/3.0/amalgalite.so +0 -0
- data/lib/amalgalite/version.rb +1 -1
- data/spec/sqlite3/version_spec.rb +7 -7
- data/tasks/default.rake +1 -1
- metadata +2 -2
data/ext/amalgalite/c/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.45.1"
|
150
|
+
#define SQLITE_VERSION_NUMBER 3045001
|
151
|
+
#define SQLITE_SOURCE_ID "2024-01-30 16:01:20 e876e51a0ed5c5b3126f52e532044363a014bc594cfefa87ffb5b82257cc467a"
|
152
152
|
|
153
153
|
/*
|
154
154
|
** CAPI3REF: Run-Time Library Version Numbers
|
@@ -528,6 +528,7 @@ SQLITE_API int sqlite3_exec(
|
|
528
528
|
#define SQLITE_IOERR_ROLLBACK_ATOMIC (SQLITE_IOERR | (31<<8))
|
529
529
|
#define SQLITE_IOERR_DATA (SQLITE_IOERR | (32<<8))
|
530
530
|
#define SQLITE_IOERR_CORRUPTFS (SQLITE_IOERR | (33<<8))
|
531
|
+
#define SQLITE_IOERR_IN_PAGE (SQLITE_IOERR | (34<<8))
|
531
532
|
#define SQLITE_LOCKED_SHAREDCACHE (SQLITE_LOCKED | (1<<8))
|
532
533
|
#define SQLITE_LOCKED_VTAB (SQLITE_LOCKED | (2<<8))
|
533
534
|
#define SQLITE_BUSY_RECOVERY (SQLITE_BUSY | (1<<8))
|
@@ -1190,7 +1191,7 @@ struct sqlite3_io_methods {
|
|
1190
1191
|
** by clients within the current process, only within other processes.
|
1191
1192
|
**
|
1192
1193
|
** <li>[[SQLITE_FCNTL_CKSM_FILE]]
|
1193
|
-
** The [SQLITE_FCNTL_CKSM_FILE] opcode is for use
|
1194
|
+
** The [SQLITE_FCNTL_CKSM_FILE] opcode is for use internally by the
|
1194
1195
|
** [checksum VFS shim] only.
|
1195
1196
|
**
|
1196
1197
|
** <li>[[SQLITE_FCNTL_RESET_CACHE]]
|
@@ -1655,20 +1656,23 @@ SQLITE_API int sqlite3_os_end(void);
|
|
1655
1656
|
** must ensure that no other SQLite interfaces are invoked by other
|
1656
1657
|
** threads while sqlite3_config() is running.</b>
|
1657
1658
|
**
|
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
1659
|
** The first argument to sqlite3_config() is an integer
|
1667
1660
|
** [configuration option] that determines
|
1668
1661
|
** what property of SQLite is to be configured. Subsequent arguments
|
1669
1662
|
** vary depending on the [configuration option]
|
1670
1663
|
** in the first argument.
|
1671
1664
|
**
|
1665
|
+
** For most configuration options, the sqlite3_config() interface
|
1666
|
+
** may only be invoked prior to library initialization using
|
1667
|
+
** [sqlite3_initialize()] or after shutdown by [sqlite3_shutdown()].
|
1668
|
+
** The exceptional configuration options that may be invoked at any time
|
1669
|
+
** are called "anytime configuration options".
|
1670
|
+
** ^If sqlite3_config() is called after [sqlite3_initialize()] and before
|
1671
|
+
** [sqlite3_shutdown()] with a first argument that is not an anytime
|
1672
|
+
** configuration option, then the sqlite3_config() call will return SQLITE_MISUSE.
|
1673
|
+
** Note, however, that ^sqlite3_config() can be called as part of the
|
1674
|
+
** implementation of an application-defined [sqlite3_os_init()].
|
1675
|
+
**
|
1672
1676
|
** ^When a configuration option is set, sqlite3_config() returns [SQLITE_OK].
|
1673
1677
|
** ^If the option is unknown or SQLite is unable to set the option
|
1674
1678
|
** then this routine returns a non-zero [error code].
|
@@ -1776,6 +1780,23 @@ struct sqlite3_mem_methods {
|
|
1776
1780
|
** These constants are the available integer configuration options that
|
1777
1781
|
** can be passed as the first argument to the [sqlite3_config()] interface.
|
1778
1782
|
**
|
1783
|
+
** Most of the configuration options for sqlite3_config()
|
1784
|
+
** will only work if invoked prior to [sqlite3_initialize()] or after
|
1785
|
+
** [sqlite3_shutdown()]. The few exceptions to this rule are called
|
1786
|
+
** "anytime configuration options".
|
1787
|
+
** ^Calling [sqlite3_config()] with a first argument that is not an
|
1788
|
+
** anytime configuration option in between calls to [sqlite3_initialize()] and
|
1789
|
+
** [sqlite3_shutdown()] is a no-op that returns SQLITE_MISUSE.
|
1790
|
+
**
|
1791
|
+
** The set of anytime configuration options can change (by insertions
|
1792
|
+
** and/or deletions) from one release of SQLite to the next.
|
1793
|
+
** As of SQLite version 3.42.0, the complete set of anytime configuration
|
1794
|
+
** options is:
|
1795
|
+
** <ul>
|
1796
|
+
** <li> SQLITE_CONFIG_LOG
|
1797
|
+
** <li> SQLITE_CONFIG_PCACHE_HDRSZ
|
1798
|
+
** </ul>
|
1799
|
+
**
|
1779
1800
|
** New configuration options may be added in future releases of SQLite.
|
1780
1801
|
** Existing configuration options might be discontinued. Applications
|
1781
1802
|
** should check the return code from [sqlite3_config()] to make sure that
|
@@ -2106,7 +2127,7 @@ struct sqlite3_mem_methods {
|
|
2106
2127
|
** is stored in each sorted record and the required column values loaded
|
2107
2128
|
** from the database as records are returned in sorted order. The default
|
2108
2129
|
** value for this option is to never use this optimization. Specifying a
|
2109
|
-
** negative value for this option restores the default
|
2130
|
+
** negative value for this option restores the default behavior.
|
2110
2131
|
** This option is only available if SQLite is compiled with the
|
2111
2132
|
** [SQLITE_ENABLE_SORTER_REFERENCES] compile-time option.
|
2112
2133
|
**
|
@@ -2122,28 +2143,28 @@ struct sqlite3_mem_methods {
|
|
2122
2143
|
** compile-time option is not set, then the default maximum is 1073741824.
|
2123
2144
|
** </dl>
|
2124
2145
|
*/
|
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
|
2146
|
+
#define SQLITE_CONFIG_SINGLETHREAD 1 /* nil */
|
2147
|
+
#define SQLITE_CONFIG_MULTITHREAD 2 /* nil */
|
2148
|
+
#define SQLITE_CONFIG_SERIALIZED 3 /* nil */
|
2149
|
+
#define SQLITE_CONFIG_MALLOC 4 /* sqlite3_mem_methods* */
|
2150
|
+
#define SQLITE_CONFIG_GETMALLOC 5 /* sqlite3_mem_methods* */
|
2151
|
+
#define SQLITE_CONFIG_SCRATCH 6 /* No longer used */
|
2152
|
+
#define SQLITE_CONFIG_PAGECACHE 7 /* void*, int sz, int N */
|
2153
|
+
#define SQLITE_CONFIG_HEAP 8 /* void*, int nByte, int min */
|
2154
|
+
#define SQLITE_CONFIG_MEMSTATUS 9 /* boolean */
|
2155
|
+
#define SQLITE_CONFIG_MUTEX 10 /* sqlite3_mutex_methods* */
|
2156
|
+
#define SQLITE_CONFIG_GETMUTEX 11 /* sqlite3_mutex_methods* */
|
2157
|
+
/* previously SQLITE_CONFIG_CHUNKALLOC 12 which is now unused. */
|
2158
|
+
#define SQLITE_CONFIG_LOOKASIDE 13 /* int int */
|
2159
|
+
#define SQLITE_CONFIG_PCACHE 14 /* no-op */
|
2160
|
+
#define SQLITE_CONFIG_GETPCACHE 15 /* no-op */
|
2161
|
+
#define SQLITE_CONFIG_LOG 16 /* xFunc, void* */
|
2162
|
+
#define SQLITE_CONFIG_URI 17 /* int */
|
2163
|
+
#define SQLITE_CONFIG_PCACHE2 18 /* sqlite3_pcache_methods2* */
|
2164
|
+
#define SQLITE_CONFIG_GETPCACHE2 19 /* sqlite3_pcache_methods2* */
|
2144
2165
|
#define SQLITE_CONFIG_COVERING_INDEX_SCAN 20 /* int */
|
2145
|
-
#define SQLITE_CONFIG_SQLLOG
|
2146
|
-
#define SQLITE_CONFIG_MMAP_SIZE
|
2166
|
+
#define SQLITE_CONFIG_SQLLOG 21 /* xSqllog, void* */
|
2167
|
+
#define SQLITE_CONFIG_MMAP_SIZE 22 /* sqlite3_int64, sqlite3_int64 */
|
2147
2168
|
#define SQLITE_CONFIG_WIN32_HEAPSIZE 23 /* int nByte */
|
2148
2169
|
#define SQLITE_CONFIG_PCACHE_HDRSZ 24 /* int *psz */
|
2149
2170
|
#define SQLITE_CONFIG_PMASZ 25 /* unsigned int szPma */
|
@@ -2281,7 +2302,7 @@ struct sqlite3_mem_methods {
|
|
2281
2302
|
** database handle, SQLite checks if this will mean that there are now no
|
2282
2303
|
** connections at all to the database. If so, it performs a checkpoint
|
2283
2304
|
** operation before closing the connection. This option may be used to
|
2284
|
-
** override this
|
2305
|
+
** override this behavior. The first parameter passed to this operation
|
2285
2306
|
** is an integer - positive to disable checkpoints-on-close, or zero (the
|
2286
2307
|
** default) to enable them, and negative to leave the setting unchanged.
|
2287
2308
|
** The second parameter is a pointer to an integer
|
@@ -2378,7 +2399,7 @@ struct sqlite3_mem_methods {
|
|
2378
2399
|
** </dd>
|
2379
2400
|
**
|
2380
2401
|
** [[SQLITE_DBCONFIG_DQS_DML]]
|
2381
|
-
** <dt>SQLITE_DBCONFIG_DQS_DML</
|
2402
|
+
** <dt>SQLITE_DBCONFIG_DQS_DML</dt>
|
2382
2403
|
** <dd>The SQLITE_DBCONFIG_DQS_DML option activates or deactivates
|
2383
2404
|
** the legacy [double-quoted string literal] misfeature for DML statements
|
2384
2405
|
** only, that is DELETE, INSERT, SELECT, and UPDATE statements. The
|
@@ -2387,7 +2408,7 @@ struct sqlite3_mem_methods {
|
|
2387
2408
|
** </dd>
|
2388
2409
|
**
|
2389
2410
|
** [[SQLITE_DBCONFIG_DQS_DDL]]
|
2390
|
-
** <dt>SQLITE_DBCONFIG_DQS_DDL</
|
2411
|
+
** <dt>SQLITE_DBCONFIG_DQS_DDL</dt>
|
2391
2412
|
** <dd>The SQLITE_DBCONFIG_DQS option activates or deactivates
|
2392
2413
|
** the legacy [double-quoted string literal] misfeature for DDL statements,
|
2393
2414
|
** such as CREATE TABLE and CREATE INDEX. The
|
@@ -2396,7 +2417,7 @@ struct sqlite3_mem_methods {
|
|
2396
2417
|
** </dd>
|
2397
2418
|
**
|
2398
2419
|
** [[SQLITE_DBCONFIG_TRUSTED_SCHEMA]]
|
2399
|
-
** <dt>SQLITE_DBCONFIG_TRUSTED_SCHEMA</
|
2420
|
+
** <dt>SQLITE_DBCONFIG_TRUSTED_SCHEMA</dt>
|
2400
2421
|
** <dd>The SQLITE_DBCONFIG_TRUSTED_SCHEMA option tells SQLite to
|
2401
2422
|
** assume that database schemas are untainted by malicious content.
|
2402
2423
|
** When the SQLITE_DBCONFIG_TRUSTED_SCHEMA option is disabled, SQLite
|
@@ -2416,7 +2437,7 @@ struct sqlite3_mem_methods {
|
|
2416
2437
|
** </dd>
|
2417
2438
|
**
|
2418
2439
|
** [[SQLITE_DBCONFIG_LEGACY_FILE_FORMAT]]
|
2419
|
-
** <dt>SQLITE_DBCONFIG_LEGACY_FILE_FORMAT</
|
2440
|
+
** <dt>SQLITE_DBCONFIG_LEGACY_FILE_FORMAT</dt>
|
2420
2441
|
** <dd>The SQLITE_DBCONFIG_LEGACY_FILE_FORMAT option activates or deactivates
|
2421
2442
|
** the legacy file format flag. When activated, this flag causes all newly
|
2422
2443
|
** created database file to have a schema format version number (the 4-byte
|
@@ -2425,7 +2446,7 @@ struct sqlite3_mem_methods {
|
|
2425
2446
|
** any SQLite version back to 3.0.0 ([dateof:3.0.0]). Without this setting,
|
2426
2447
|
** newly created databases are generally not understandable by SQLite versions
|
2427
2448
|
** prior to 3.3.0 ([dateof:3.3.0]). As these words are written, there
|
2428
|
-
** is now scarcely any need to
|
2449
|
+
** is now scarcely any need to generate database files that are compatible
|
2429
2450
|
** all the way back to version 3.0.0, and so this setting is of little
|
2430
2451
|
** practical use, but is provided so that SQLite can continue to claim the
|
2431
2452
|
** ability to generate new database files that are compatible with version
|
@@ -2434,8 +2455,40 @@ struct sqlite3_mem_methods {
|
|
2434
2455
|
** the [VACUUM] command will fail with an obscure error when attempting to
|
2435
2456
|
** process a table with generated columns and a descending index. This is
|
2436
2457
|
** not considered a bug since SQLite versions 3.3.0 and earlier do not support
|
2437
|
-
** either generated columns or
|
2458
|
+
** either generated columns or descending indexes.
|
2459
|
+
** </dd>
|
2460
|
+
**
|
2461
|
+
** [[SQLITE_DBCONFIG_STMT_SCANSTATUS]]
|
2462
|
+
** <dt>SQLITE_DBCONFIG_STMT_SCANSTATUS</dt>
|
2463
|
+
** <dd>The SQLITE_DBCONFIG_STMT_SCANSTATUS option is only useful in
|
2464
|
+
** SQLITE_ENABLE_STMT_SCANSTATUS builds. In this case, it sets or clears
|
2465
|
+
** a flag that enables collection of the sqlite3_stmt_scanstatus_v2()
|
2466
|
+
** statistics. For statistics to be collected, the flag must be set on
|
2467
|
+
** the database handle both when the SQL statement is prepared and when it
|
2468
|
+
** is stepped. The flag is set (collection of statistics is enabled)
|
2469
|
+
** by default. This option takes two arguments: an integer and a pointer to
|
2470
|
+
** an integer.. The first argument is 1, 0, or -1 to enable, disable, or
|
2471
|
+
** leave unchanged the statement scanstatus option. If the second argument
|
2472
|
+
** is not NULL, then the value of the statement scanstatus setting after
|
2473
|
+
** processing the first argument is written into the integer that the second
|
2474
|
+
** argument points to.
|
2475
|
+
** </dd>
|
2476
|
+
**
|
2477
|
+
** [[SQLITE_DBCONFIG_REVERSE_SCANORDER]]
|
2478
|
+
** <dt>SQLITE_DBCONFIG_REVERSE_SCANORDER</dt>
|
2479
|
+
** <dd>The SQLITE_DBCONFIG_REVERSE_SCANORDER option changes the default order
|
2480
|
+
** in which tables and indexes are scanned so that the scans start at the end
|
2481
|
+
** and work toward the beginning rather than starting at the beginning and
|
2482
|
+
** working toward the end. Setting SQLITE_DBCONFIG_REVERSE_SCANORDER is the
|
2483
|
+
** same as setting [PRAGMA reverse_unordered_selects]. This option takes
|
2484
|
+
** two arguments which are an integer and a pointer to an integer. The first
|
2485
|
+
** argument is 1, 0, or -1 to enable, disable, or leave unchanged the
|
2486
|
+
** reverse scan order flag, respectively. If the second argument is not NULL,
|
2487
|
+
** then 0 or 1 is written into the integer that the second argument points to
|
2488
|
+
** depending on if the reverse scan order flag is set after processing the
|
2489
|
+
** first argument.
|
2438
2490
|
** </dd>
|
2491
|
+
**
|
2439
2492
|
** </dl>
|
2440
2493
|
*/
|
2441
2494
|
#define SQLITE_DBCONFIG_MAINDBNAME 1000 /* const char* */
|
@@ -2456,7 +2509,9 @@ struct sqlite3_mem_methods {
|
|
2456
2509
|
#define SQLITE_DBCONFIG_ENABLE_VIEW 1015 /* int int* */
|
2457
2510
|
#define SQLITE_DBCONFIG_LEGACY_FILE_FORMAT 1016 /* int int* */
|
2458
2511
|
#define SQLITE_DBCONFIG_TRUSTED_SCHEMA 1017 /* int int* */
|
2459
|
-
#define
|
2512
|
+
#define SQLITE_DBCONFIG_STMT_SCANSTATUS 1018 /* int int* */
|
2513
|
+
#define SQLITE_DBCONFIG_REVERSE_SCANORDER 1019 /* int int* */
|
2514
|
+
#define SQLITE_DBCONFIG_MAX 1019 /* Largest DBCONFIG */
|
2460
2515
|
|
2461
2516
|
/*
|
2462
2517
|
** CAPI3REF: Enable Or Disable Extended Result Codes
|
@@ -2681,6 +2736,7 @@ SQLITE_API sqlite3_int64 sqlite3_total_changes64(sqlite3*);
|
|
2681
2736
|
**
|
2682
2737
|
** ^The [sqlite3_is_interrupted(D)] interface can be used to determine whether
|
2683
2738
|
** or not an interrupt is currently in effect for [database connection] D.
|
2739
|
+
** It returns 1 if an interrupt is currently in effect, or 0 otherwise.
|
2684
2740
|
*/
|
2685
2741
|
SQLITE_API void sqlite3_interrupt(sqlite3*);
|
2686
2742
|
SQLITE_API int sqlite3_is_interrupted(sqlite3*);
|
@@ -3334,8 +3390,10 @@ SQLITE_API SQLITE_DEPRECATED void *sqlite3_profile(sqlite3*,
|
|
3334
3390
|
** M argument should be the bitwise OR-ed combination of
|
3335
3391
|
** zero or more [SQLITE_TRACE] constants.
|
3336
3392
|
**
|
3337
|
-
** ^Each call to either sqlite3_trace() or sqlite3_trace_v2()
|
3338
|
-
** (cancels)
|
3393
|
+
** ^Each call to either sqlite3_trace(D,X,P) or sqlite3_trace_v2(D,M,X,P)
|
3394
|
+
** overrides (cancels) all prior calls to sqlite3_trace(D,X,P) or
|
3395
|
+
** sqlite3_trace_v2(D,M,X,P) for the [database connection] D. Each
|
3396
|
+
** database connection may have at most one trace callback.
|
3339
3397
|
**
|
3340
3398
|
** ^The X callback is invoked whenever any of the events identified by
|
3341
3399
|
** mask M occur. ^The integer return value from the callback is currently
|
@@ -3704,7 +3762,7 @@ SQLITE_API int sqlite3_open_v2(
|
|
3704
3762
|
** as F) must be one of:
|
3705
3763
|
** <ul>
|
3706
3764
|
** <li> A database filename pointer created by the SQLite core and
|
3707
|
-
** passed into the xOpen() method of a VFS
|
3765
|
+
** passed into the xOpen() method of a VFS implementation, or
|
3708
3766
|
** <li> A filename obtained from [sqlite3_db_filename()], or
|
3709
3767
|
** <li> A new filename constructed using [sqlite3_create_filename()].
|
3710
3768
|
** </ul>
|
@@ -3817,7 +3875,7 @@ SQLITE_API sqlite3_file *sqlite3_database_file_object(const char*);
|
|
3817
3875
|
/*
|
3818
3876
|
** CAPI3REF: Create and Destroy VFS Filenames
|
3819
3877
|
**
|
3820
|
-
** These
|
3878
|
+
** These interfaces are provided for use by [VFS shim] implementations and
|
3821
3879
|
** are not useful outside of that context.
|
3822
3880
|
**
|
3823
3881
|
** The sqlite3_create_filename(D,J,W,N,P) allocates memory to hold a version of
|
@@ -3896,14 +3954,17 @@ SQLITE_API void sqlite3_free_filename(sqlite3_filename);
|
|
3896
3954
|
** </ul>
|
3897
3955
|
**
|
3898
3956
|
** ^The sqlite3_errmsg() and sqlite3_errmsg16() return English-language
|
3899
|
-
** text that describes the error, as either UTF-8 or UTF-16 respectively
|
3957
|
+
** text that describes the error, as either UTF-8 or UTF-16 respectively,
|
3958
|
+
** or NULL if no error message is available.
|
3959
|
+
** (See how SQLite handles [invalid UTF] for exceptions to this rule.)
|
3900
3960
|
** ^(Memory to hold the error message string is managed internally.
|
3901
3961
|
** The application does not need to worry about freeing the result.
|
3902
3962
|
** However, the error string might be overwritten or deallocated by
|
3903
3963
|
** subsequent calls to other SQLite interface functions.)^
|
3904
3964
|
**
|
3905
|
-
** ^The sqlite3_errstr() interface returns the English-language text
|
3906
|
-
** that describes the [result code], as UTF-8
|
3965
|
+
** ^The sqlite3_errstr(E) interface returns the English-language text
|
3966
|
+
** that describes the [result code] E, as UTF-8, or NULL if E is not an
|
3967
|
+
** result code for which a text error message is available.
|
3907
3968
|
** ^(Memory to hold the error message string is managed internally
|
3908
3969
|
** and must not be freed by the application)^.
|
3909
3970
|
**
|
@@ -4364,6 +4425,41 @@ SQLITE_API int sqlite3_stmt_readonly(sqlite3_stmt *pStmt);
|
|
4364
4425
|
*/
|
4365
4426
|
SQLITE_API int sqlite3_stmt_isexplain(sqlite3_stmt *pStmt);
|
4366
4427
|
|
4428
|
+
/*
|
4429
|
+
** CAPI3REF: Change The EXPLAIN Setting For A Prepared Statement
|
4430
|
+
** METHOD: sqlite3_stmt
|
4431
|
+
**
|
4432
|
+
** The sqlite3_stmt_explain(S,E) interface changes the EXPLAIN
|
4433
|
+
** setting for [prepared statement] S. If E is zero, then S becomes
|
4434
|
+
** a normal prepared statement. If E is 1, then S behaves as if
|
4435
|
+
** its SQL text began with "[EXPLAIN]". If E is 2, then S behaves as if
|
4436
|
+
** its SQL text began with "[EXPLAIN QUERY PLAN]".
|
4437
|
+
**
|
4438
|
+
** Calling sqlite3_stmt_explain(S,E) might cause S to be reprepared.
|
4439
|
+
** SQLite tries to avoid a reprepare, but a reprepare might be necessary
|
4440
|
+
** on the first transition into EXPLAIN or EXPLAIN QUERY PLAN mode.
|
4441
|
+
**
|
4442
|
+
** Because of the potential need to reprepare, a call to
|
4443
|
+
** sqlite3_stmt_explain(S,E) will fail with SQLITE_ERROR if S cannot be
|
4444
|
+
** reprepared because it was created using [sqlite3_prepare()] instead of
|
4445
|
+
** the newer [sqlite3_prepare_v2()] or [sqlite3_prepare_v3()] interfaces and
|
4446
|
+
** hence has no saved SQL text with which to reprepare.
|
4447
|
+
**
|
4448
|
+
** Changing the explain setting for a prepared statement does not change
|
4449
|
+
** the original SQL text for the statement. Hence, if the SQL text originally
|
4450
|
+
** began with EXPLAIN or EXPLAIN QUERY PLAN, but sqlite3_stmt_explain(S,0)
|
4451
|
+
** is called to convert the statement into an ordinary statement, the EXPLAIN
|
4452
|
+
** or EXPLAIN QUERY PLAN keywords will still appear in the sqlite3_sql(S)
|
4453
|
+
** output, even though the statement now acts like a normal SQL statement.
|
4454
|
+
**
|
4455
|
+
** This routine returns SQLITE_OK if the explain mode is successfully
|
4456
|
+
** changed, or an error code if the explain mode could not be changed.
|
4457
|
+
** The explain mode cannot be changed while a statement is active.
|
4458
|
+
** Hence, it is good practice to call [sqlite3_reset(S)]
|
4459
|
+
** immediately prior to calling sqlite3_stmt_explain(S,E).
|
4460
|
+
*/
|
4461
|
+
SQLITE_API int sqlite3_stmt_explain(sqlite3_stmt *pStmt, int eMode);
|
4462
|
+
|
4367
4463
|
/*
|
4368
4464
|
** CAPI3REF: Determine If A Prepared Statement Has Been Reset
|
4369
4465
|
** METHOD: sqlite3_stmt
|
@@ -4527,7 +4623,7 @@ typedef struct sqlite3_context sqlite3_context;
|
|
4527
4623
|
** with it may be passed. ^It is called to dispose of the BLOB or string even
|
4528
4624
|
** if the call to the bind API fails, except the destructor is not called if
|
4529
4625
|
** the third parameter is a NULL pointer or the fourth parameter is negative.
|
4530
|
-
** ^ (2) The special constant, [SQLITE_STATIC], may be
|
4626
|
+
** ^ (2) The special constant, [SQLITE_STATIC], may be passed to indicate that
|
4531
4627
|
** the application remains responsible for disposing of the object. ^In this
|
4532
4628
|
** case, the object and the provided pointer to it must remain valid until
|
4533
4629
|
** either the prepared statement is finalized or the same SQL parameter is
|
@@ -5206,20 +5302,33 @@ SQLITE_API int sqlite3_finalize(sqlite3_stmt *pStmt);
|
|
5206
5302
|
** ^The [sqlite3_reset(S)] interface resets the [prepared statement] S
|
5207
5303
|
** back to the beginning of its program.
|
5208
5304
|
**
|
5209
|
-
** ^
|
5210
|
-
**
|
5211
|
-
**
|
5212
|
-
**
|
5305
|
+
** ^The return code from [sqlite3_reset(S)] indicates whether or not
|
5306
|
+
** the previous evaluation of prepared statement S completed successfully.
|
5307
|
+
** ^If [sqlite3_step(S)] has never before been called on S or if
|
5308
|
+
** [sqlite3_step(S)] has not been called since the previous call
|
5309
|
+
** to [sqlite3_reset(S)], then [sqlite3_reset(S)] will return
|
5310
|
+
** [SQLITE_OK].
|
5213
5311
|
**
|
5214
5312
|
** ^If the most recent call to [sqlite3_step(S)] for the
|
5215
5313
|
** [prepared statement] S indicated an error, then
|
5216
5314
|
** [sqlite3_reset(S)] returns an appropriate [error code].
|
5315
|
+
** ^The [sqlite3_reset(S)] interface might also return an [error code]
|
5316
|
+
** if there were no prior errors but the process of resetting
|
5317
|
+
** the prepared statement caused a new error. ^For example, if an
|
5318
|
+
** [INSERT] statement with a [RETURNING] clause is only stepped one time,
|
5319
|
+
** that one call to [sqlite3_step(S)] might return SQLITE_ROW but
|
5320
|
+
** the overall statement might still fail and the [sqlite3_reset(S)] call
|
5321
|
+
** might return SQLITE_BUSY if locking constraints prevent the
|
5322
|
+
** database change from committing. Therefore, it is important that
|
5323
|
+
** applications check the return code from [sqlite3_reset(S)] even if
|
5324
|
+
** no prior call to [sqlite3_step(S)] indicated a problem.
|
5217
5325
|
**
|
5218
5326
|
** ^The [sqlite3_reset(S)] interface does not change the values
|
5219
5327
|
** of any [sqlite3_bind_blob|bindings] on the [prepared statement] S.
|
5220
5328
|
*/
|
5221
5329
|
SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt);
|
5222
5330
|
|
5331
|
+
|
5223
5332
|
/*
|
5224
5333
|
** CAPI3REF: Create Or Redefine SQL Functions
|
5225
5334
|
** KEYWORDS: {function creation routines}
|
@@ -5430,7 +5539,7 @@ SQLITE_API int sqlite3_create_window_function(
|
|
5430
5539
|
** [application-defined SQL function]
|
5431
5540
|
** that has side-effects or that could potentially leak sensitive information.
|
5432
5541
|
** This will prevent attacks in which an application is tricked
|
5433
|
-
** into using a database file that has had its schema
|
5542
|
+
** into using a database file that has had its schema surreptitiously
|
5434
5543
|
** modified to invoke the application-defined function in ways that are
|
5435
5544
|
** harmful.
|
5436
5545
|
** <p>
|
@@ -5466,13 +5575,27 @@ SQLITE_API int sqlite3_create_window_function(
|
|
5466
5575
|
** </dd>
|
5467
5576
|
**
|
5468
5577
|
** [[SQLITE_SUBTYPE]] <dt>SQLITE_SUBTYPE</dt><dd>
|
5469
|
-
** The SQLITE_SUBTYPE flag indicates to SQLite that a function
|
5578
|
+
** The SQLITE_SUBTYPE flag indicates to SQLite that a function might call
|
5470
5579
|
** [sqlite3_value_subtype()] to inspect the sub-types of its arguments.
|
5471
|
-
**
|
5472
|
-
**
|
5473
|
-
**
|
5474
|
-
**
|
5475
|
-
**
|
5580
|
+
** This flag instructs SQLite to omit some corner-case optimizations that
|
5581
|
+
** might disrupt the operation of the [sqlite3_value_subtype()] function,
|
5582
|
+
** causing it to return zero rather than the correct subtype().
|
5583
|
+
** SQL functions that invokes [sqlite3_value_subtype()] should have this
|
5584
|
+
** property. If the SQLITE_SUBTYPE property is omitted, then the return
|
5585
|
+
** value from [sqlite3_value_subtype()] might sometimes be zero even though
|
5586
|
+
** a non-zero subtype was specified by the function argument expression.
|
5587
|
+
**
|
5588
|
+
** [[SQLITE_RESULT_SUBTYPE]] <dt>SQLITE_RESULT_SUBTYPE</dt><dd>
|
5589
|
+
** The SQLITE_RESULT_SUBTYPE flag indicates to SQLite that a function might call
|
5590
|
+
** [sqlite3_result_subtype()] to cause a sub-type to be associated with its
|
5591
|
+
** result.
|
5592
|
+
** Every function that invokes [sqlite3_result_subtype()] should have this
|
5593
|
+
** property. If it does not, then the call to [sqlite3_result_subtype()]
|
5594
|
+
** might become a no-op if the function is used as term in an
|
5595
|
+
** [expression index]. On the other hand, SQL functions that never invoke
|
5596
|
+
** [sqlite3_result_subtype()] should avoid setting this property, as the
|
5597
|
+
** purpose of this property is to disable certain optimizations that are
|
5598
|
+
** incompatible with subtypes.
|
5476
5599
|
** </dd>
|
5477
5600
|
** </dl>
|
5478
5601
|
*/
|
@@ -5480,6 +5603,7 @@ SQLITE_API int sqlite3_create_window_function(
|
|
5480
5603
|
#define SQLITE_DIRECTONLY 0x000080000
|
5481
5604
|
#define SQLITE_SUBTYPE 0x000100000
|
5482
5605
|
#define SQLITE_INNOCUOUS 0x000200000
|
5606
|
+
#define SQLITE_RESULT_SUBTYPE 0x001000000
|
5483
5607
|
|
5484
5608
|
/*
|
5485
5609
|
** CAPI3REF: Deprecated Functions
|
@@ -5676,6 +5800,12 @@ SQLITE_API int sqlite3_value_encoding(sqlite3_value*);
|
|
5676
5800
|
** information can be used to pass a limited amount of context from
|
5677
5801
|
** one SQL function to another. Use the [sqlite3_result_subtype()]
|
5678
5802
|
** routine to set the subtype for the return value of an SQL function.
|
5803
|
+
**
|
5804
|
+
** Every [application-defined SQL function] that invoke this interface
|
5805
|
+
** should include the [SQLITE_SUBTYPE] property in the text
|
5806
|
+
** encoding argument when the function is [sqlite3_create_function|registered].
|
5807
|
+
** If the [SQLITE_SUBTYPE] property is omitted, then sqlite3_value_subtype()
|
5808
|
+
** might return zero instead of the upstream subtype in some corner cases.
|
5679
5809
|
*/
|
5680
5810
|
SQLITE_API unsigned int sqlite3_value_subtype(sqlite3_value*);
|
5681
5811
|
|
@@ -5774,48 +5904,56 @@ SQLITE_API sqlite3 *sqlite3_context_db_handle(sqlite3_context*);
|
|
5774
5904
|
** METHOD: sqlite3_context
|
5775
5905
|
**
|
5776
5906
|
** These functions may be used by (non-aggregate) SQL functions to
|
5777
|
-
** associate
|
5778
|
-
** multiple invocations of the same SQL function during
|
5779
|
-
** some circumstances the associated
|
5780
|
-
** of where this might be useful is in a
|
5781
|
-
** function. The compiled version of the regular
|
5782
|
-
**
|
5907
|
+
** associate auxiliary data with argument values. If the same argument
|
5908
|
+
** value is passed to multiple invocations of the same SQL function during
|
5909
|
+
** query execution, under some circumstances the associated auxiliary data
|
5910
|
+
** might be preserved. An example of where this might be useful is in a
|
5911
|
+
** regular-expression matching function. The compiled version of the regular
|
5912
|
+
** expression can be stored as auxiliary data associated with the pattern string.
|
5783
5913
|
** Then as long as the pattern string remains the same,
|
5784
5914
|
** the compiled regular expression can be reused on multiple
|
5785
5915
|
** invocations of the same function.
|
5786
5916
|
**
|
5787
|
-
** ^The sqlite3_get_auxdata(C,N) interface returns a pointer to the
|
5917
|
+
** ^The sqlite3_get_auxdata(C,N) interface returns a pointer to the auxiliary data
|
5788
5918
|
** associated by the sqlite3_set_auxdata(C,N,P,X) function with the Nth argument
|
5789
5919
|
** value to the application-defined function. ^N is zero for the left-most
|
5790
|
-
** function argument. ^If there is no
|
5920
|
+
** function argument. ^If there is no auxiliary data
|
5791
5921
|
** associated with the function argument, the sqlite3_get_auxdata(C,N) interface
|
5792
5922
|
** returns a NULL pointer.
|
5793
5923
|
**
|
5794
|
-
** ^The sqlite3_set_auxdata(C,N,P,X) interface saves P as
|
5795
|
-
** argument of the application-defined function. ^Subsequent
|
5924
|
+
** ^The sqlite3_set_auxdata(C,N,P,X) interface saves P as auxiliary data for the
|
5925
|
+
** N-th argument of the application-defined function. ^Subsequent
|
5796
5926
|
** calls to sqlite3_get_auxdata(C,N) return P from the most recent
|
5797
|
-
** sqlite3_set_auxdata(C,N,P,X) call if the
|
5798
|
-
** NULL if the
|
5927
|
+
** sqlite3_set_auxdata(C,N,P,X) call if the auxiliary data is still valid or
|
5928
|
+
** NULL if the auxiliary data has been discarded.
|
5799
5929
|
** ^After each call to sqlite3_set_auxdata(C,N,P,X) where X is not NULL,
|
5800
5930
|
** SQLite will invoke the destructor function X with parameter P exactly
|
5801
|
-
** once, when the
|
5802
|
-
** SQLite is free to discard the
|
5931
|
+
** once, when the auxiliary data is discarded.
|
5932
|
+
** SQLite is free to discard the auxiliary data at any time, including: <ul>
|
5803
5933
|
** <li> ^(when the corresponding function parameter changes)^, or
|
5804
5934
|
** <li> ^(when [sqlite3_reset()] or [sqlite3_finalize()] is called for the
|
5805
5935
|
** SQL statement)^, or
|
5806
5936
|
** <li> ^(when sqlite3_set_auxdata() is invoked again on the same
|
5807
5937
|
** parameter)^, or
|
5808
5938
|
** <li> ^(during the original sqlite3_set_auxdata() call when a memory
|
5809
|
-
** allocation error occurs.)^
|
5939
|
+
** allocation error occurs.)^
|
5940
|
+
** <li> ^(during the original sqlite3_set_auxdata() call if the function
|
5941
|
+
** is evaluated during query planning instead of during query execution,
|
5942
|
+
** as sometimes happens with [SQLITE_ENABLE_STAT4].)^ </ul>
|
5810
5943
|
**
|
5811
|
-
** Note the last
|
5944
|
+
** Note the last two bullets in particular. The destructor X in
|
5812
5945
|
** sqlite3_set_auxdata(C,N,P,X) might be called immediately, before the
|
5813
5946
|
** sqlite3_set_auxdata() interface even returns. Hence sqlite3_set_auxdata()
|
5814
5947
|
** should be called near the end of the function implementation and the
|
5815
5948
|
** function implementation should not make any use of P after
|
5816
|
-
** sqlite3_set_auxdata() has been called.
|
5817
|
-
**
|
5818
|
-
**
|
5949
|
+
** sqlite3_set_auxdata() has been called. Furthermore, a call to
|
5950
|
+
** sqlite3_get_auxdata() that occurs immediately after a corresponding call
|
5951
|
+
** to sqlite3_set_auxdata() might still return NULL if an out-of-memory
|
5952
|
+
** condition occurred during the sqlite3_set_auxdata() call or if the
|
5953
|
+
** function is being evaluated during query planning rather than during
|
5954
|
+
** query execution.
|
5955
|
+
**
|
5956
|
+
** ^(In practice, auxiliary data is preserved between function calls for
|
5819
5957
|
** function parameters that are compile-time constants, including literal
|
5820
5958
|
** values and [parameters] and expressions composed from the same.)^
|
5821
5959
|
**
|
@@ -5825,10 +5963,67 @@ SQLITE_API sqlite3 *sqlite3_context_db_handle(sqlite3_context*);
|
|
5825
5963
|
**
|
5826
5964
|
** These routines must be called from the same thread in which
|
5827
5965
|
** the SQL function is running.
|
5966
|
+
**
|
5967
|
+
** See also: [sqlite3_get_clientdata()] and [sqlite3_set_clientdata()].
|
5828
5968
|
*/
|
5829
5969
|
SQLITE_API void *sqlite3_get_auxdata(sqlite3_context*, int N);
|
5830
5970
|
SQLITE_API void sqlite3_set_auxdata(sqlite3_context*, int N, void*, void (*)(void*));
|
5831
5971
|
|
5972
|
+
/*
|
5973
|
+
** CAPI3REF: Database Connection Client Data
|
5974
|
+
** METHOD: sqlite3
|
5975
|
+
**
|
5976
|
+
** These functions are used to associate one or more named pointers
|
5977
|
+
** with a [database connection].
|
5978
|
+
** A call to sqlite3_set_clientdata(D,N,P,X) causes the pointer P
|
5979
|
+
** to be attached to [database connection] D using name N. Subsequent
|
5980
|
+
** calls to sqlite3_get_clientdata(D,N) will return a copy of pointer P
|
5981
|
+
** or a NULL pointer if there were no prior calls to
|
5982
|
+
** sqlite3_set_clientdata() with the same values of D and N.
|
5983
|
+
** Names are compared using strcmp() and are thus case sensitive.
|
5984
|
+
**
|
5985
|
+
** If P and X are both non-NULL, then the destructor X is invoked with
|
5986
|
+
** argument P on the first of the following occurrences:
|
5987
|
+
** <ul>
|
5988
|
+
** <li> An out-of-memory error occurs during the call to
|
5989
|
+
** sqlite3_set_clientdata() which attempts to register pointer P.
|
5990
|
+
** <li> A subsequent call to sqlite3_set_clientdata(D,N,P,X) is made
|
5991
|
+
** with the same D and N parameters.
|
5992
|
+
** <li> The database connection closes. SQLite does not make any guarantees
|
5993
|
+
** about the order in which destructors are called, only that all
|
5994
|
+
** destructors will be called exactly once at some point during the
|
5995
|
+
** database connection closing process.
|
5996
|
+
** </ul>
|
5997
|
+
**
|
5998
|
+
** SQLite does not do anything with client data other than invoke
|
5999
|
+
** destructors on the client data at the appropriate time. The intended
|
6000
|
+
** use for client data is to provide a mechanism for wrapper libraries
|
6001
|
+
** to store additional information about an SQLite database connection.
|
6002
|
+
**
|
6003
|
+
** There is no limit (other than available memory) on the number of different
|
6004
|
+
** client data pointers (with different names) that can be attached to a
|
6005
|
+
** single database connection. However, the implementation is optimized
|
6006
|
+
** for the case of having only one or two different client data names.
|
6007
|
+
** Applications and wrapper libraries are discouraged from using more than
|
6008
|
+
** one client data name each.
|
6009
|
+
**
|
6010
|
+
** There is no way to enumerate the client data pointers
|
6011
|
+
** associated with a database connection. The N parameter can be thought
|
6012
|
+
** of as a secret key such that only code that knows the secret key is able
|
6013
|
+
** to access the associated data.
|
6014
|
+
**
|
6015
|
+
** Security Warning: These interfaces should not be exposed in scripting
|
6016
|
+
** languages or in other circumstances where it might be possible for an
|
6017
|
+
** an attacker to invoke them. Any agent that can invoke these interfaces
|
6018
|
+
** can probably also take control of the process.
|
6019
|
+
**
|
6020
|
+
** Database connection client data is only available for SQLite
|
6021
|
+
** version 3.44.0 ([dateof:3.44.0]) and later.
|
6022
|
+
**
|
6023
|
+
** See also: [sqlite3_set_auxdata()] and [sqlite3_get_auxdata()].
|
6024
|
+
*/
|
6025
|
+
SQLITE_API void *sqlite3_get_clientdata(sqlite3*,const char*);
|
6026
|
+
SQLITE_API int sqlite3_set_clientdata(sqlite3*, const char*, void*, void(*)(void*));
|
5832
6027
|
|
5833
6028
|
/*
|
5834
6029
|
** CAPI3REF: Constants Defining Special Destructor Behavior
|
@@ -6030,6 +6225,20 @@ SQLITE_API int sqlite3_result_zeroblob64(sqlite3_context*, sqlite3_uint64 n);
|
|
6030
6225
|
** higher order bits are discarded.
|
6031
6226
|
** The number of subtype bytes preserved by SQLite might increase
|
6032
6227
|
** in future releases of SQLite.
|
6228
|
+
**
|
6229
|
+
** Every [application-defined SQL function] that invokes this interface
|
6230
|
+
** should include the [SQLITE_RESULT_SUBTYPE] property in its
|
6231
|
+
** text encoding argument when the SQL function is
|
6232
|
+
** [sqlite3_create_function|registered]. If the [SQLITE_RESULT_SUBTYPE]
|
6233
|
+
** property is omitted from the function that invokes sqlite3_result_subtype(),
|
6234
|
+
** then in some cases the sqlite3_result_subtype() might fail to set
|
6235
|
+
** the result subtype.
|
6236
|
+
**
|
6237
|
+
** If SQLite is compiled with -DSQLITE_STRICT_SUBTYPE=1, then any
|
6238
|
+
** SQL function that invokes the sqlite3_result_subtype() interface
|
6239
|
+
** and that does not have the SQLITE_RESULT_SUBTYPE property will raise
|
6240
|
+
** an error. Future versions of SQLite might enable -DSQLITE_STRICT_SUBTYPE=1
|
6241
|
+
** by default.
|
6033
6242
|
*/
|
6034
6243
|
SQLITE_API void sqlite3_result_subtype(sqlite3_context*,unsigned int);
|
6035
6244
|
|
@@ -6201,6 +6410,13 @@ SQLITE_API void sqlite3_activate_cerod(
|
|
6201
6410
|
** of the default VFS is not implemented correctly, or not implemented at
|
6202
6411
|
** all, then the behavior of sqlite3_sleep() may deviate from the description
|
6203
6412
|
** in the previous paragraphs.
|
6413
|
+
**
|
6414
|
+
** If a negative argument is passed to sqlite3_sleep() the results vary by
|
6415
|
+
** VFS and operating system. Some system treat a negative argument as an
|
6416
|
+
** instruction to sleep forever. Others understand it to mean do not sleep
|
6417
|
+
** at all. ^In SQLite version 3.42.0 and later, a negative
|
6418
|
+
** argument passed into sqlite3_sleep() is changed to zero before it is relayed
|
6419
|
+
** down into the xSleep method of the VFS.
|
6204
6420
|
*/
|
6205
6421
|
SQLITE_API int sqlite3_sleep(int);
|
6206
6422
|
|
@@ -6454,7 +6670,7 @@ SQLITE_API int sqlite3_db_readonly(sqlite3 *db, const char *zDbName);
|
|
6454
6670
|
SQLITE_API int sqlite3_txn_state(sqlite3*,const char *zSchema);
|
6455
6671
|
|
6456
6672
|
/*
|
6457
|
-
** CAPI3REF: Allowed return values from
|
6673
|
+
** CAPI3REF: Allowed return values from sqlite3_txn_state()
|
6458
6674
|
** KEYWORDS: {transaction state}
|
6459
6675
|
**
|
6460
6676
|
** These constants define the current transaction state of a database file.
|
@@ -6586,7 +6802,7 @@ SQLITE_API void *sqlite3_rollback_hook(sqlite3*, void(*)(void *), void*);
|
|
6586
6802
|
** ^Each call to the sqlite3_autovacuum_pages() interface overrides all
|
6587
6803
|
** previous invocations for that database connection. ^If the callback
|
6588
6804
|
** argument (C) to sqlite3_autovacuum_pages(D,C,P,X) is a NULL pointer,
|
6589
|
-
** then the autovacuum steps callback is
|
6805
|
+
** then the autovacuum steps callback is canceled. The return value
|
6590
6806
|
** from sqlite3_autovacuum_pages() is normally SQLITE_OK, but might
|
6591
6807
|
** be some other error code if something goes wrong. The current
|
6592
6808
|
** implementation will only return SQLITE_OK or SQLITE_MISUSE, but other
|
@@ -7105,6 +7321,10 @@ struct sqlite3_module {
|
|
7105
7321
|
/* The methods above are in versions 1 and 2 of the sqlite_module object.
|
7106
7322
|
** Those below are for version 3 and greater. */
|
7107
7323
|
int (*xShadowName)(const char*);
|
7324
|
+
/* The methods above are in versions 1 through 3 of the sqlite_module object.
|
7325
|
+
** Those below are for version 4 and greater. */
|
7326
|
+
int (*xIntegrity)(sqlite3_vtab *pVTab, const char *zSchema,
|
7327
|
+
const char *zTabName, int mFlags, char **pzErr);
|
7108
7328
|
};
|
7109
7329
|
|
7110
7330
|
/*
|
@@ -7592,7 +7812,7 @@ SQLITE_API int sqlite3_blob_reopen(sqlite3_blob *, sqlite3_int64);
|
|
7592
7812
|
** code is returned and the transaction rolled back.
|
7593
7813
|
**
|
7594
7814
|
** Calling this function with an argument that is not a NULL pointer or an
|
7595
|
-
** open blob handle results in undefined
|
7815
|
+
** open blob handle results in undefined behavior. ^Calling this routine
|
7596
7816
|
** with a null pointer (such as would be returned by a failed call to
|
7597
7817
|
** [sqlite3_blob_open()]) is a harmless no-op. ^Otherwise, if this function
|
7598
7818
|
** is passed a valid open blob handle, the values returned by the
|
@@ -7819,18 +8039,20 @@ SQLITE_API int sqlite3_vfs_unregister(sqlite3_vfs*);
|
|
7819
8039
|
**
|
7820
8040
|
** ^(Some systems (for example, Windows 95) do not support the operation
|
7821
8041
|
** implemented by sqlite3_mutex_try(). On those systems, sqlite3_mutex_try()
|
7822
|
-
** will always return SQLITE_BUSY.
|
7823
|
-
** sqlite3_mutex_try() as an optimization so this is acceptable
|
7824
|
-
** behavior.
|
8042
|
+
** will always return SQLITE_BUSY. In most cases the SQLite core only uses
|
8043
|
+
** sqlite3_mutex_try() as an optimization, so this is acceptable
|
8044
|
+
** behavior. The exceptions are unix builds that set the
|
8045
|
+
** SQLITE_ENABLE_SETLK_TIMEOUT build option. In that case a working
|
8046
|
+
** sqlite3_mutex_try() is required.)^
|
7825
8047
|
**
|
7826
8048
|
** ^The sqlite3_mutex_leave() routine exits a mutex that was
|
7827
8049
|
** previously entered by the same thread. The behavior
|
7828
8050
|
** is undefined if the mutex is not currently entered by the
|
7829
8051
|
** calling thread or is not currently allocated.
|
7830
8052
|
**
|
7831
|
-
** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(),
|
7832
|
-
** sqlite3_mutex_leave() is a NULL pointer,
|
7833
|
-
**
|
8053
|
+
** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(),
|
8054
|
+
** sqlite3_mutex_leave(), or sqlite3_mutex_free() is a NULL pointer,
|
8055
|
+
** then any of the four routines behaves as a no-op.
|
7834
8056
|
**
|
7835
8057
|
** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()].
|
7836
8058
|
*/
|
@@ -8072,6 +8294,7 @@ SQLITE_API int sqlite3_test_control(int op, ...);
|
|
8072
8294
|
#define SQLITE_TESTCTRL_PRNG_SAVE 5
|
8073
8295
|
#define SQLITE_TESTCTRL_PRNG_RESTORE 6
|
8074
8296
|
#define SQLITE_TESTCTRL_PRNG_RESET 7 /* NOT USED */
|
8297
|
+
#define SQLITE_TESTCTRL_FK_NO_ACTION 7
|
8075
8298
|
#define SQLITE_TESTCTRL_BITVEC_TEST 8
|
8076
8299
|
#define SQLITE_TESTCTRL_FAULT_INSTALL 9
|
8077
8300
|
#define SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS 10
|
@@ -8079,6 +8302,7 @@ SQLITE_API int sqlite3_test_control(int op, ...);
|
|
8079
8302
|
#define SQLITE_TESTCTRL_ASSERT 12
|
8080
8303
|
#define SQLITE_TESTCTRL_ALWAYS 13
|
8081
8304
|
#define SQLITE_TESTCTRL_RESERVE 14 /* NOT USED */
|
8305
|
+
#define SQLITE_TESTCTRL_JSON_SELFCHECK 14
|
8082
8306
|
#define SQLITE_TESTCTRL_OPTIMIZATIONS 15
|
8083
8307
|
#define SQLITE_TESTCTRL_ISKEYWORD 16 /* NOT USED */
|
8084
8308
|
#define SQLITE_TESTCTRL_SCRATCHMALLOC 17 /* NOT USED */
|
@@ -8100,7 +8324,8 @@ SQLITE_API int sqlite3_test_control(int op, ...);
|
|
8100
8324
|
#define SQLITE_TESTCTRL_TRACEFLAGS 31
|
8101
8325
|
#define SQLITE_TESTCTRL_TUNE 32
|
8102
8326
|
#define SQLITE_TESTCTRL_LOGEST 33
|
8103
|
-
#define
|
8327
|
+
#define SQLITE_TESTCTRL_USELONGDOUBLE 34
|
8328
|
+
#define SQLITE_TESTCTRL_LAST 34 /* Largest TESTCTRL */
|
8104
8329
|
|
8105
8330
|
/*
|
8106
8331
|
** CAPI3REF: SQL Keyword Checking
|
@@ -9556,7 +9781,7 @@ SQLITE_API int sqlite3_vtab_config(sqlite3*, int op, ...);
|
|
9556
9781
|
** [[SQLITE_VTAB_DIRECTONLY]]<dt>SQLITE_VTAB_DIRECTONLY</dt>
|
9557
9782
|
** <dd>Calls of the form
|
9558
9783
|
** [sqlite3_vtab_config](db,SQLITE_VTAB_DIRECTONLY) from within the
|
9559
|
-
** the [xConnect] or [xCreate] methods of a [virtual table]
|
9784
|
+
** the [xConnect] or [xCreate] methods of a [virtual table] implementation
|
9560
9785
|
** prohibits that virtual table from being used from within triggers and
|
9561
9786
|
** views.
|
9562
9787
|
** </dd>
|
@@ -9564,18 +9789,28 @@ SQLITE_API int sqlite3_vtab_config(sqlite3*, int op, ...);
|
|
9564
9789
|
** [[SQLITE_VTAB_INNOCUOUS]]<dt>SQLITE_VTAB_INNOCUOUS</dt>
|
9565
9790
|
** <dd>Calls of the form
|
9566
9791
|
** [sqlite3_vtab_config](db,SQLITE_VTAB_INNOCUOUS) from within the
|
9567
|
-
** the [xConnect] or [xCreate] methods of a [virtual table]
|
9792
|
+
** the [xConnect] or [xCreate] methods of a [virtual table] implementation
|
9568
9793
|
** identify that virtual table as being safe to use from within triggers
|
9569
9794
|
** and views. Conceptually, the SQLITE_VTAB_INNOCUOUS tag means that the
|
9570
9795
|
** virtual table can do no serious harm even if it is controlled by a
|
9571
9796
|
** malicious hacker. Developers should avoid setting the SQLITE_VTAB_INNOCUOUS
|
9572
9797
|
** flag unless absolutely necessary.
|
9573
9798
|
** </dd>
|
9799
|
+
**
|
9800
|
+
** [[SQLITE_VTAB_USES_ALL_SCHEMAS]]<dt>SQLITE_VTAB_USES_ALL_SCHEMAS</dt>
|
9801
|
+
** <dd>Calls of the form
|
9802
|
+
** [sqlite3_vtab_config](db,SQLITE_VTAB_USES_ALL_SCHEMA) from within the
|
9803
|
+
** the [xConnect] or [xCreate] methods of a [virtual table] implementation
|
9804
|
+
** instruct the query planner to begin at least a read transaction on
|
9805
|
+
** all schemas ("main", "temp", and any ATTACH-ed databases) whenever the
|
9806
|
+
** virtual table is used.
|
9807
|
+
** </dd>
|
9574
9808
|
** </dl>
|
9575
9809
|
*/
|
9576
9810
|
#define SQLITE_VTAB_CONSTRAINT_SUPPORT 1
|
9577
9811
|
#define SQLITE_VTAB_INNOCUOUS 2
|
9578
9812
|
#define SQLITE_VTAB_DIRECTONLY 3
|
9813
|
+
#define SQLITE_VTAB_USES_ALL_SCHEMAS 4
|
9579
9814
|
|
9580
9815
|
/*
|
9581
9816
|
** CAPI3REF: Determine The Virtual Table Conflict Policy
|
@@ -9736,7 +9971,7 @@ SQLITE_API int sqlite3_vtab_distinct(sqlite3_index_info*);
|
|
9736
9971
|
** communicated to the xBestIndex method as a
|
9737
9972
|
** [SQLITE_INDEX_CONSTRAINT_EQ] constraint.)^ If xBestIndex wants to use
|
9738
9973
|
** this constraint, it must set the corresponding
|
9739
|
-
** aConstraintUsage[].argvIndex to a
|
9974
|
+
** aConstraintUsage[].argvIndex to a positive integer. ^(Then, under
|
9740
9975
|
** the usual mode of handling IN operators, SQLite generates [bytecode]
|
9741
9976
|
** that invokes the [xFilter|xFilter() method] once for each value
|
9742
9977
|
** on the right-hand side of the IN operator.)^ Thus the virtual table
|
@@ -10165,7 +10400,7 @@ SQLITE_API int sqlite3_db_cacheflush(sqlite3*);
|
|
10165
10400
|
** When the [sqlite3_blob_write()] API is used to update a blob column,
|
10166
10401
|
** the pre-update hook is invoked with SQLITE_DELETE. This is because the
|
10167
10402
|
** in this case the new values are not available. In this case, when a
|
10168
|
-
** callback made with op==SQLITE_DELETE is
|
10403
|
+
** callback made with op==SQLITE_DELETE is actually a write using the
|
10169
10404
|
** sqlite3_blob_write() API, the [sqlite3_preupdate_blobwrite()] returns
|
10170
10405
|
** the index of the column being written. In other cases, where the
|
10171
10406
|
** pre-update hook is being invoked for some other reason, including a
|
@@ -10426,6 +10661,13 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_recover(sqlite3 *db, const c
|
|
10426
10661
|
** SQLITE_SERIALIZE_NOCOPY bit is set but no contiguous copy
|
10427
10662
|
** of the database exists.
|
10428
10663
|
**
|
10664
|
+
** After the call, if the SQLITE_SERIALIZE_NOCOPY bit had been set,
|
10665
|
+
** the returned buffer content will remain accessible and unchanged
|
10666
|
+
** until either the next write operation on the connection or when
|
10667
|
+
** the connection is closed, and applications must not modify the
|
10668
|
+
** buffer. If the bit had been clear, the returned buffer will not
|
10669
|
+
** be accessed by SQLite after the call.
|
10670
|
+
**
|
10429
10671
|
** A call to sqlite3_serialize(D,S,P,F) might return NULL even if the
|
10430
10672
|
** SQLITE_SERIALIZE_NOCOPY bit is omitted from argument F if a memory
|
10431
10673
|
** allocation error occurs.
|
@@ -10474,6 +10716,9 @@ SQLITE_API unsigned char *sqlite3_serialize(
|
|
10474
10716
|
** SQLite will try to increase the buffer size using sqlite3_realloc64()
|
10475
10717
|
** if writes on the database cause it to grow larger than M bytes.
|
10476
10718
|
**
|
10719
|
+
** Applications must not modify the buffer P or invalidate it before
|
10720
|
+
** the database connection D is closed.
|
10721
|
+
**
|
10477
10722
|
** The sqlite3_deserialize() interface will fail with SQLITE_BUSY if the
|
10478
10723
|
** database is currently in a read transaction or is involved in a backup
|
10479
10724
|
** operation.
|
@@ -10482,6 +10727,13 @@ SQLITE_API unsigned char *sqlite3_serialize(
|
|
10482
10727
|
** S argument to sqlite3_deserialize(D,S,P,N,M,F) is "temp" then the
|
10483
10728
|
** function returns SQLITE_ERROR.
|
10484
10729
|
**
|
10730
|
+
** The deserialized database should not be in [WAL mode]. If the database
|
10731
|
+
** is in WAL mode, then any attempt to use the database file will result
|
10732
|
+
** in an [SQLITE_CANTOPEN] error. The application can set the
|
10733
|
+
** [file format version numbers] (bytes 18 and 19) of the input database P
|
10734
|
+
** to 0x01 prior to invoking sqlite3_deserialize(D,S,P,N,M,F) to force the
|
10735
|
+
** database file into rollback mode and work around this limitation.
|
10736
|
+
**
|
10485
10737
|
** If sqlite3_deserialize(D,S,P,N,M,F) fails for any reason and if the
|
10486
10738
|
** SQLITE_DESERIALIZE_FREEONCLOSE bit is set in argument F, then
|
10487
10739
|
** [sqlite3_free()] is invoked on argument P prior to returning.
|
@@ -10750,16 +11002,20 @@ SQLITE_API int sqlite3session_create(
|
|
10750
11002
|
SQLITE_API void sqlite3session_delete(sqlite3_session *pSession);
|
10751
11003
|
|
10752
11004
|
/*
|
10753
|
-
**
|
11005
|
+
** CAPI3REF: Configure a Session Object
|
10754
11006
|
** METHOD: sqlite3_session
|
10755
11007
|
**
|
10756
11008
|
** This method is used to configure a session object after it has been
|
10757
|
-
** created. At present the only valid
|
10758
|
-
** [SQLITE_SESSION_OBJCONFIG_SIZE].
|
11009
|
+
** created. At present the only valid values for the second parameter are
|
11010
|
+
** [SQLITE_SESSION_OBJCONFIG_SIZE] and [SQLITE_SESSION_OBJCONFIG_ROWID].
|
10759
11011
|
**
|
10760
|
-
|
11012
|
+
*/
|
11013
|
+
SQLITE_API int sqlite3session_object_config(sqlite3_session*, int op, void *pArg);
|
11014
|
+
|
11015
|
+
/*
|
11016
|
+
** CAPI3REF: Options for sqlite3session_object_config
|
10761
11017
|
**
|
10762
|
-
** The following values may passed as the the
|
11018
|
+
** The following values may passed as the the 2nd parameter to
|
10763
11019
|
** sqlite3session_object_config().
|
10764
11020
|
**
|
10765
11021
|
** <dt>SQLITE_SESSION_OBJCONFIG_SIZE <dd>
|
@@ -10775,12 +11031,21 @@ SQLITE_API void sqlite3session_delete(sqlite3_session *pSession);
|
|
10775
11031
|
**
|
10776
11032
|
** It is an error (SQLITE_MISUSE) to attempt to modify this setting after
|
10777
11033
|
** the first table has been attached to the session object.
|
11034
|
+
**
|
11035
|
+
** <dt>SQLITE_SESSION_OBJCONFIG_ROWID <dd>
|
11036
|
+
** This option is used to set, clear or query the flag that enables
|
11037
|
+
** collection of data for tables with no explicit PRIMARY KEY.
|
11038
|
+
**
|
11039
|
+
** Normally, tables with no explicit PRIMARY KEY are simply ignored
|
11040
|
+
** by the sessions module. However, if this flag is set, it behaves
|
11041
|
+
** as if such tables have a column "_rowid_ INTEGER PRIMARY KEY" inserted
|
11042
|
+
** as their leftmost columns.
|
11043
|
+
**
|
11044
|
+
** It is an error (SQLITE_MISUSE) to attempt to modify this setting after
|
11045
|
+
** the first table has been attached to the session object.
|
10778
11046
|
*/
|
10779
|
-
|
10780
|
-
|
10781
|
-
/*
|
10782
|
-
*/
|
10783
|
-
#define SQLITE_SESSION_OBJCONFIG_SIZE 1
|
11047
|
+
#define SQLITE_SESSION_OBJCONFIG_SIZE 1
|
11048
|
+
#define SQLITE_SESSION_OBJCONFIG_ROWID 2
|
10784
11049
|
|
10785
11050
|
/*
|
10786
11051
|
** CAPI3REF: Enable Or Disable A Session Object
|
@@ -11541,6 +11806,18 @@ SQLITE_API int sqlite3changeset_concat(
|
|
11541
11806
|
);
|
11542
11807
|
|
11543
11808
|
|
11809
|
+
/*
|
11810
|
+
** CAPI3REF: Upgrade the Schema of a Changeset/Patchset
|
11811
|
+
*/
|
11812
|
+
SQLITE_API int sqlite3changeset_upgrade(
|
11813
|
+
sqlite3 *db,
|
11814
|
+
const char *zDb,
|
11815
|
+
int nIn, const void *pIn, /* Input changeset */
|
11816
|
+
int *pnOut, void **ppOut /* OUT: Inverse of input */
|
11817
|
+
);
|
11818
|
+
|
11819
|
+
|
11820
|
+
|
11544
11821
|
/*
|
11545
11822
|
** CAPI3REF: Changegroup Handle
|
11546
11823
|
**
|
@@ -11587,6 +11864,38 @@ typedef struct sqlite3_changegroup sqlite3_changegroup;
|
|
11587
11864
|
*/
|
11588
11865
|
SQLITE_API int sqlite3changegroup_new(sqlite3_changegroup **pp);
|
11589
11866
|
|
11867
|
+
/*
|
11868
|
+
** CAPI3REF: Add a Schema to a Changegroup
|
11869
|
+
** METHOD: sqlite3_changegroup_schema
|
11870
|
+
**
|
11871
|
+
** This method may be used to optionally enforce the rule that the changesets
|
11872
|
+
** added to the changegroup handle must match the schema of database zDb
|
11873
|
+
** ("main", "temp", or the name of an attached database). If
|
11874
|
+
** sqlite3changegroup_add() is called to add a changeset that is not compatible
|
11875
|
+
** with the configured schema, SQLITE_SCHEMA is returned and the changegroup
|
11876
|
+
** object is left in an undefined state.
|
11877
|
+
**
|
11878
|
+
** A changeset schema is considered compatible with the database schema in
|
11879
|
+
** the same way as for sqlite3changeset_apply(). Specifically, for each
|
11880
|
+
** table in the changeset, there exists a database table with:
|
11881
|
+
**
|
11882
|
+
** <ul>
|
11883
|
+
** <li> The name identified by the changeset, and
|
11884
|
+
** <li> at least as many columns as recorded in the changeset, and
|
11885
|
+
** <li> the primary key columns in the same position as recorded in
|
11886
|
+
** the changeset.
|
11887
|
+
** </ul>
|
11888
|
+
**
|
11889
|
+
** The output of the changegroup object always has the same schema as the
|
11890
|
+
** database nominated using this function. In cases where changesets passed
|
11891
|
+
** to sqlite3changegroup_add() have fewer columns than the corresponding table
|
11892
|
+
** in the database schema, these are filled in using the default column
|
11893
|
+
** values from the database schema. This makes it possible to combined
|
11894
|
+
** changesets that have different numbers of columns for a single table
|
11895
|
+
** within a changegroup, provided that they are otherwise compatible.
|
11896
|
+
*/
|
11897
|
+
SQLITE_API int sqlite3changegroup_schema(sqlite3_changegroup*, sqlite3*, const char *zDb);
|
11898
|
+
|
11590
11899
|
/*
|
11591
11900
|
** CAPI3REF: Add A Changeset To A Changegroup
|
11592
11901
|
** METHOD: sqlite3_changegroup
|
@@ -11655,13 +11964,18 @@ SQLITE_API int sqlite3changegroup_new(sqlite3_changegroup **pp);
|
|
11655
11964
|
** If the new changeset contains changes to a table that is already present
|
11656
11965
|
** in the changegroup, then the number of columns and the position of the
|
11657
11966
|
** primary key columns for the table must be consistent. If this is not the
|
11658
|
-
** case, this function fails with SQLITE_SCHEMA.
|
11659
|
-
**
|
11660
|
-
**
|
11661
|
-
**
|
11662
|
-
**
|
11967
|
+
** case, this function fails with SQLITE_SCHEMA. Except, if the changegroup
|
11968
|
+
** object has been configured with a database schema using the
|
11969
|
+
** sqlite3changegroup_schema() API, then it is possible to combine changesets
|
11970
|
+
** with different numbers of columns for a single table, provided that
|
11971
|
+
** they are otherwise compatible.
|
11972
|
+
**
|
11973
|
+
** If the input changeset appears to be corrupt and the corruption is
|
11974
|
+
** detected, SQLITE_CORRUPT is returned. Or, if an out-of-memory condition
|
11975
|
+
** occurs during processing, this function returns SQLITE_NOMEM.
|
11663
11976
|
**
|
11664
|
-
**
|
11977
|
+
** In all cases, if an error occurs the state of the final contents of the
|
11978
|
+
** changegroup is undefined. If no error occurs, SQLITE_OK is returned.
|
11665
11979
|
*/
|
11666
11980
|
SQLITE_API int sqlite3changegroup_add(sqlite3_changegroup*, int nData, void *pData);
|
11667
11981
|
|
@@ -11913,9 +12227,30 @@ SQLITE_API int sqlite3changeset_apply_v2(
|
|
11913
12227
|
** Invert the changeset before applying it. This is equivalent to inverting
|
11914
12228
|
** a changeset using sqlite3changeset_invert() before applying it. It is
|
11915
12229
|
** an error to specify this flag with a patchset.
|
12230
|
+
**
|
12231
|
+
** <dt>SQLITE_CHANGESETAPPLY_IGNORENOOP <dd>
|
12232
|
+
** Do not invoke the conflict handler callback for any changes that
|
12233
|
+
** would not actually modify the database even if they were applied.
|
12234
|
+
** Specifically, this means that the conflict handler is not invoked
|
12235
|
+
** for:
|
12236
|
+
** <ul>
|
12237
|
+
** <li>a delete change if the row being deleted cannot be found,
|
12238
|
+
** <li>an update change if the modified fields are already set to
|
12239
|
+
** their new values in the conflicting row, or
|
12240
|
+
** <li>an insert change if all fields of the conflicting row match
|
12241
|
+
** the row being inserted.
|
12242
|
+
** </ul>
|
12243
|
+
**
|
12244
|
+
** <dt>SQLITE_CHANGESETAPPLY_FKNOACTION <dd>
|
12245
|
+
** If this flag it set, then all foreign key constraints in the target
|
12246
|
+
** database behave as if they were declared with "ON UPDATE NO ACTION ON
|
12247
|
+
** DELETE NO ACTION", even if they are actually CASCADE, RESTRICT, SET NULL
|
12248
|
+
** or SET DEFAULT.
|
11916
12249
|
*/
|
11917
12250
|
#define SQLITE_CHANGESETAPPLY_NOSAVEPOINT 0x0001
|
11918
12251
|
#define SQLITE_CHANGESETAPPLY_INVERT 0x0002
|
12252
|
+
#define SQLITE_CHANGESETAPPLY_IGNORENOOP 0x0004
|
12253
|
+
#define SQLITE_CHANGESETAPPLY_FKNOACTION 0x0008
|
11919
12254
|
|
11920
12255
|
/*
|
11921
12256
|
** CAPI3REF: Constants Passed To The Conflict Handler
|
@@ -12481,8 +12816,11 @@ struct Fts5PhraseIter {
|
|
12481
12816
|
** created with the "columnsize=0" option.
|
12482
12817
|
**
|
12483
12818
|
** xColumnText:
|
12484
|
-
**
|
12485
|
-
**
|
12819
|
+
** If parameter iCol is less than zero, or greater than or equal to the
|
12820
|
+
** number of columns in the table, SQLITE_RANGE is returned.
|
12821
|
+
**
|
12822
|
+
** Otherwise, this function attempts to retrieve the text of column iCol of
|
12823
|
+
** the current document. If successful, (*pz) is set to point to a buffer
|
12486
12824
|
** containing the text in utf-8 encoding, (*pn) is set to the size in bytes
|
12487
12825
|
** (not characters) of the buffer and SQLITE_OK is returned. Otherwise,
|
12488
12826
|
** if an error occurs, an SQLite error code is returned and the final values
|
@@ -12492,8 +12830,10 @@ struct Fts5PhraseIter {
|
|
12492
12830
|
** Returns the number of phrases in the current query expression.
|
12493
12831
|
**
|
12494
12832
|
** xPhraseSize:
|
12495
|
-
**
|
12496
|
-
**
|
12833
|
+
** If parameter iCol is less than zero, or greater than or equal to the
|
12834
|
+
** number of phrases in the current query, as returned by xPhraseCount,
|
12835
|
+
** 0 is returned. Otherwise, this function returns the number of tokens in
|
12836
|
+
** phrase iPhrase of the query. Phrases are numbered starting from zero.
|
12497
12837
|
**
|
12498
12838
|
** xInstCount:
|
12499
12839
|
** Set *pnInst to the total number of occurrences of all phrases within
|
@@ -12509,12 +12849,13 @@ struct Fts5PhraseIter {
|
|
12509
12849
|
** Query for the details of phrase match iIdx within the current row.
|
12510
12850
|
** Phrase matches are numbered starting from zero, so the iIdx argument
|
12511
12851
|
** should be greater than or equal to zero and smaller than the value
|
12512
|
-
** output by xInstCount().
|
12852
|
+
** output by xInstCount(). If iIdx is less than zero or greater than
|
12853
|
+
** or equal to the value returned by xInstCount(), SQLITE_RANGE is returned.
|
12513
12854
|
**
|
12514
|
-
**
|
12855
|
+
** Otherwise, output parameter *piPhrase is set to the phrase number, *piCol
|
12515
12856
|
** to the column in which it occurs and *piOff the token offset of the
|
12516
|
-
** first token of the phrase.
|
12517
|
-
** code (i.e. SQLITE_NOMEM) if an error occurs.
|
12857
|
+
** first token of the phrase. SQLITE_OK is returned if successful, or an
|
12858
|
+
** error code (i.e. SQLITE_NOMEM) if an error occurs.
|
12518
12859
|
**
|
12519
12860
|
** This API can be quite slow if used with an FTS5 table created with the
|
12520
12861
|
** "detail=none" or "detail=column" option.
|
@@ -12540,6 +12881,10 @@ struct Fts5PhraseIter {
|
|
12540
12881
|
** Invoking Api.xUserData() returns a copy of the pointer passed as
|
12541
12882
|
** the third argument to pUserData.
|
12542
12883
|
**
|
12884
|
+
** If parameter iPhrase is less than zero, or greater than or equal to
|
12885
|
+
** the number of phrases in the query, as returned by xPhraseCount(),
|
12886
|
+
** this function returns SQLITE_RANGE.
|
12887
|
+
**
|
12543
12888
|
** If the callback function returns any value other than SQLITE_OK, the
|
12544
12889
|
** query is abandoned and the xQueryPhrase function returns immediately.
|
12545
12890
|
** If the returned value is SQLITE_DONE, xQueryPhrase returns SQLITE_OK.
|
@@ -12654,6 +12999,39 @@ struct Fts5PhraseIter {
|
|
12654
12999
|
**
|
12655
13000
|
** xPhraseNextColumn()
|
12656
13001
|
** See xPhraseFirstColumn above.
|
13002
|
+
**
|
13003
|
+
** xQueryToken(pFts5, iPhrase, iToken, ppToken, pnToken)
|
13004
|
+
** This is used to access token iToken of phrase iPhrase of the current
|
13005
|
+
** query. Before returning, output parameter *ppToken is set to point
|
13006
|
+
** to a buffer containing the requested token, and *pnToken to the
|
13007
|
+
** size of this buffer in bytes.
|
13008
|
+
**
|
13009
|
+
** If iPhrase or iToken are less than zero, or if iPhrase is greater than
|
13010
|
+
** or equal to the number of phrases in the query as reported by
|
13011
|
+
** xPhraseCount(), or if iToken is equal to or greater than the number of
|
13012
|
+
** tokens in the phrase, SQLITE_RANGE is returned and *ppToken and *pnToken
|
13013
|
+
are both zeroed.
|
13014
|
+
**
|
13015
|
+
** The output text is not a copy of the query text that specified the
|
13016
|
+
** token. It is the output of the tokenizer module. For tokendata=1
|
13017
|
+
** tables, this includes any embedded 0x00 and trailing data.
|
13018
|
+
**
|
13019
|
+
** xInstToken(pFts5, iIdx, iToken, ppToken, pnToken)
|
13020
|
+
** This is used to access token iToken of phrase hit iIdx within the
|
13021
|
+
** current row. If iIdx is less than zero or greater than or equal to the
|
13022
|
+
** value returned by xInstCount(), SQLITE_RANGE is returned. Otherwise,
|
13023
|
+
** output variable (*ppToken) is set to point to a buffer containing the
|
13024
|
+
** matching document token, and (*pnToken) to the size of that buffer in
|
13025
|
+
** bytes. This API is not available if the specified token matches a
|
13026
|
+
** prefix query term. In that case both output variables are always set
|
13027
|
+
** to 0.
|
13028
|
+
**
|
13029
|
+
** The output text is not a copy of the document text that was tokenized.
|
13030
|
+
** It is the output of the tokenizer module. For tokendata=1 tables, this
|
13031
|
+
** includes any embedded 0x00 and trailing data.
|
13032
|
+
**
|
13033
|
+
** This API can be quite slow if used with an FTS5 table created with the
|
13034
|
+
** "detail=none" or "detail=column" option.
|
12657
13035
|
*/
|
12658
13036
|
struct Fts5ExtensionApi {
|
12659
13037
|
int iVersion; /* Currently always set to 3 */
|
@@ -12691,6 +13069,13 @@ struct Fts5ExtensionApi {
|
|
12691
13069
|
|
12692
13070
|
int (*xPhraseFirstColumn)(Fts5Context*, int iPhrase, Fts5PhraseIter*, int*);
|
12693
13071
|
void (*xPhraseNextColumn)(Fts5Context*, Fts5PhraseIter*, int *piCol);
|
13072
|
+
|
13073
|
+
/* Below this point are iVersion>=3 only */
|
13074
|
+
int (*xQueryToken)(Fts5Context*,
|
13075
|
+
int iPhrase, int iToken,
|
13076
|
+
const char **ppToken, int *pnToken
|
13077
|
+
);
|
13078
|
+
int (*xInstToken)(Fts5Context*, int iIdx, int iToken, const char**, int*);
|
12694
13079
|
};
|
12695
13080
|
|
12696
13081
|
/*
|
@@ -12885,8 +13270,8 @@ struct Fts5ExtensionApi {
|
|
12885
13270
|
** as separate queries of the FTS index are required for each synonym.
|
12886
13271
|
**
|
12887
13272
|
** When using methods (2) or (3), it is important that the tokenizer only
|
12888
|
-
** provide synonyms when tokenizing document text (method (
|
12889
|
-
** text (method (
|
13273
|
+
** provide synonyms when tokenizing document text (method (3)) or query
|
13274
|
+
** text (method (2)), not both. Doing so will not cause any errors, but is
|
12890
13275
|
** inefficient.
|
12891
13276
|
*/
|
12892
13277
|
typedef struct Fts5Tokenizer Fts5Tokenizer;
|
@@ -12934,7 +13319,7 @@ struct fts5_api {
|
|
12934
13319
|
int (*xCreateTokenizer)(
|
12935
13320
|
fts5_api *pApi,
|
12936
13321
|
const char *zName,
|
12937
|
-
void *
|
13322
|
+
void *pUserData,
|
12938
13323
|
fts5_tokenizer *pTokenizer,
|
12939
13324
|
void (*xDestroy)(void*)
|
12940
13325
|
);
|
@@ -12943,7 +13328,7 @@ struct fts5_api {
|
|
12943
13328
|
int (*xFindTokenizer)(
|
12944
13329
|
fts5_api *pApi,
|
12945
13330
|
const char *zName,
|
12946
|
-
void **
|
13331
|
+
void **ppUserData,
|
12947
13332
|
fts5_tokenizer *pTokenizer
|
12948
13333
|
);
|
12949
13334
|
|
@@ -12951,7 +13336,7 @@ struct fts5_api {
|
|
12951
13336
|
int (*xCreateFunction)(
|
12952
13337
|
fts5_api *pApi,
|
12953
13338
|
const char *zName,
|
12954
|
-
void *
|
13339
|
+
void *pUserData,
|
12955
13340
|
fts5_extension_function xFunction,
|
12956
13341
|
void (*xDestroy)(void*)
|
12957
13342
|
);
|