@@ -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.47.2 "
150
- #define SQLITE_VERSION_NUMBER 3047002
151
- #define SQLITE_SOURCE_ID "2024-12-07 20:39:59 2aabe05e2e8cae4847a802ee2daddc1d7413d8fc560254d93ee3e72c14685b6c "
149
+ #define SQLITE_VERSION "3.49.0 "
150
+ #define SQLITE_VERSION_NUMBER 3049000
151
+ #define SQLITE_SOURCE_ID "2025-02-06 11:55:18 4a7dd425dc2a0e5082a9049c9b4a9d4f199a71583d014c24b4cfe276c5a77cde "
152
152
153
153
/*
154
154
** CAPI3REF: Run-Time Library Version Numbers
@@ -1100,6 +1100,11 @@ struct sqlite3_io_methods {
1100
1100
** pointed to by the pArg argument. This capability is used during testing
1101
1101
** and only needs to be supported when SQLITE_TEST is defined.
1102
1102
**
1103
+ ** <li>[[SQLITE_FCNTL_NULL_IO]]
1104
+ ** The [SQLITE_FCNTL_NULL_IO] opcode sets the low-level file descriptor
1105
+ ** or file handle for the [sqlite3_file] object such that it will no longer
1106
+ ** read or write to the database file.
1107
+ **
1103
1108
** <li>[[SQLITE_FCNTL_WAL_BLOCK]]
1104
1109
** The [SQLITE_FCNTL_WAL_BLOCK] is a signal to the VFS layer that it might
1105
1110
** be advantageous to block on the next WAL lock if the lock is not immediately
@@ -1253,6 +1258,7 @@ struct sqlite3_io_methods {
1253
1258
#define SQLITE_FCNTL_EXTERNAL_READER 40
1254
1259
#define SQLITE_FCNTL_CKSM_FILE 41
1255
1260
#define SQLITE_FCNTL_RESET_CACHE 42
1261
+ #define SQLITE_FCNTL_NULL_IO 43
1256
1262
1257
1263
/* deprecated names */
1258
1264
#define SQLITE_GET_LOCKPROXYFILE SQLITE_FCNTL_GET_LOCKPROXYFILE
@@ -2205,7 +2211,15 @@ struct sqlite3_mem_methods {
2205
2211
** CAPI3REF: Database Connection Configuration Options
2206
2212
**
2207
2213
** These constants are the available integer configuration options that
2208
- ** can be passed as the second argument to the [sqlite3_db_config()] interface.
2214
+ ** can be passed as the second parameter to the [sqlite3_db_config()] interface.
2215
+ **
2216
+ ** The [sqlite3_db_config()] interface is a var-args functions. It takes a
2217
+ ** variable number of parameters, though always at least two. The number of
2218
+ ** parameters passed into sqlite3_db_config() depends on which of these
2219
+ ** constants is given as the second parameter. This documentation page
2220
+ ** refers to parameters beyond the second as "arguments". Thus, when this
2221
+ ** page says "the N-th argument" it means "the N-th parameter past the
2222
+ ** configuration option" or "the (N+2)-th parameter to sqlite3_db_config()".
2209
2223
**
2210
2224
** New configuration options may be added in future releases of SQLite.
2211
2225
** Existing configuration options might be discontinued. Applications
@@ -2217,8 +2231,14 @@ struct sqlite3_mem_methods {
2217
2231
** <dl>
2218
2232
** [[SQLITE_DBCONFIG_LOOKASIDE]]
2219
2233
** <dt>SQLITE_DBCONFIG_LOOKASIDE</dt>
2220
- ** <dd> ^This option takes three additional arguments that determine the
2221
- ** [lookaside memory allocator] configuration for the [database connection].
2234
+ ** <dd> The SQLITE_DBCONFIG_LOOKASIDE option is used to adjust the
2235
+ ** configuration of the lookaside memory allocator within a database
2236
+ ** connection.
2237
+ ** The arguments to the SQLITE_DBCONFIG_LOOKASIDE option are <i>not</i>
2238
+ ** in the [DBCONFIG arguments|usual format].
2239
+ ** The SQLITE_DBCONFIG_LOOKASIDE option takes three arguments, not two,
2240
+ ** so that a call to [sqlite3_db_config()] that uses SQLITE_DBCONFIG_LOOKASIDE
2241
+ ** should have a total of five parameters.
2222
2242
** ^The first argument (the third parameter to [sqlite3_db_config()] is a
2223
2243
** pointer to a memory buffer to use for lookaside memory.
2224
2244
** ^The first argument after the SQLITE_DBCONFIG_LOOKASIDE verb
@@ -2241,7 +2261,8 @@ struct sqlite3_mem_methods {
2241
2261
** [[SQLITE_DBCONFIG_ENABLE_FKEY]]
2242
2262
** <dt>SQLITE_DBCONFIG_ENABLE_FKEY</dt>
2243
2263
** <dd> ^This option is used to enable or disable the enforcement of
2244
- ** [foreign key constraints]. There should be two additional arguments.
2264
+ ** [foreign key constraints]. This is the same setting that is
2265
+ ** enabled or disabled by the [PRAGMA foreign_keys] statement.
2245
2266
** The first argument is an integer which is 0 to disable FK enforcement,
2246
2267
** positive to enable FK enforcement or negative to leave FK enforcement
2247
2268
** unchanged. The second parameter is a pointer to an integer into which
@@ -2263,13 +2284,13 @@ struct sqlite3_mem_methods {
2263
2284
** <p>Originally this option disabled all triggers. ^(However, since
2264
2285
** SQLite version 3.35.0, TEMP triggers are still allowed even if
2265
2286
** this option is off. So, in other words, this option now only disables
2266
- ** triggers in the main database schema or in the schemas of ATTACH-ed
2287
+ ** triggers in the main database schema or in the schemas of [ ATTACH] -ed
2267
2288
** databases.)^ </dd>
2268
2289
**
2269
2290
** [[SQLITE_DBCONFIG_ENABLE_VIEW]]
2270
2291
** <dt>SQLITE_DBCONFIG_ENABLE_VIEW</dt>
2271
2292
** <dd> ^This option is used to enable or disable [CREATE VIEW | views].
2272
- ** There should be two additional arguments.
2293
+ ** There must be two additional arguments.
2273
2294
** The first argument is an integer which is 0 to disable views,
2274
2295
** positive to enable views or negative to leave the setting unchanged.
2275
2296
** The second parameter is a pointer to an integer into which
@@ -2288,7 +2309,7 @@ struct sqlite3_mem_methods {
2288
2309
** <dd> ^This option is used to enable or disable the
2289
2310
** [fts3_tokenizer()] function which is part of the
2290
2311
** [FTS3] full-text search engine extension.
2291
- ** There should be two additional arguments.
2312
+ ** There must be two additional arguments.
2292
2313
** The first argument is an integer which is 0 to disable fts3_tokenizer() or
2293
2314
** positive to enable fts3_tokenizer() or negative to leave the setting
2294
2315
** unchanged.
@@ -2303,7 +2324,7 @@ struct sqlite3_mem_methods {
2303
2324
** interface independently of the [load_extension()] SQL function.
2304
2325
** The [sqlite3_enable_load_extension()] API enables or disables both the
2305
2326
** C-API [sqlite3_load_extension()] and the SQL function [load_extension()].
2306
- ** There should be two additional arguments.
2327
+ ** There must be two additional arguments.
2307
2328
** When the first argument to this interface is 1, then only the C-API is
2308
2329
** enabled and the SQL function remains disabled. If the first argument to
2309
2330
** this interface is 0, then both the C-API and the SQL function are disabled.
@@ -2317,23 +2338,30 @@ struct sqlite3_mem_methods {
2317
2338
**
2318
2339
** [[SQLITE_DBCONFIG_MAINDBNAME]] <dt>SQLITE_DBCONFIG_MAINDBNAME</dt>
2319
2340
** <dd> ^This option is used to change the name of the "main" database
2320
- ** schema. ^The sole argument is a pointer to a constant UTF8 string
2321
- ** which will become the new schema name in place of "main". ^SQLite
2322
- ** does not make a copy of the new main schema name string, so the application
2323
- ** must ensure that the argument passed into this DBCONFIG option is unchanged
2324
- ** until after the database connection closes.
2341
+ ** schema. This option does not follow the
2342
+ ** [DBCONFIG arguments|usual SQLITE_DBCONFIG argument format].
2343
+ ** This option takes exactly one additional argument so that the
2344
+ ** [sqlite3_db_config()] call has a total of three parameters. The
2345
+ ** extra argument must be a pointer to a constant UTF8 string which
2346
+ ** will become the new schema name in place of "main". ^SQLite does
2347
+ ** not make a copy of the new main schema name string, so the application
2348
+ ** must ensure that the argument passed into SQLITE_DBCONFIG MAINDBNAME
2349
+ ** is unchanged until after the database connection closes.
2325
2350
** </dd>
2326
2351
**
2327
2352
** [[SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE]]
2328
2353
** <dt>SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE</dt>
2329
- ** <dd> Usually, when a database in wal mode is closed or detached from a
2330
- ** database handle, SQLite checks if this will mean that there are now no
2331
- ** connections at all to the database. If so, it performs a checkpoint
2332
- ** operation before closing the connection. This option may be used to
2333
- ** override this behavior. The first parameter passed to this operation
2334
- ** is an integer - positive to disable checkpoints-on-close, or zero (the
2335
- ** default) to enable them, and negative to leave the setting unchanged.
2336
- ** The second parameter is a pointer to an integer
2354
+ ** <dd> Usually, when a database in [WAL mode] is closed or detached from a
2355
+ ** database handle, SQLite checks if if there are other connections to the
2356
+ ** same database, and if there are no other database connection (if the
2357
+ ** connection being closed is the last open connection to the database),
2358
+ ** then SQLite performs a [checkpoint] before closing the connection and
2359
+ ** deletes the WAL file. The SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE option can
2360
+ ** be used to override that behavior. The first argument passed to this
2361
+ ** operation (the third parameter to [sqlite3_db_config()]) is an integer
2362
+ ** which is positive to disable checkpoints-on-close, or zero (the default)
2363
+ ** to enable them, and negative to leave the setting unchanged.
2364
+ ** The second argument (the fourth parameter) is a pointer to an integer
2337
2365
** into which is written 0 or 1 to indicate whether checkpoints-on-close
2338
2366
** have been disabled - 0 if they are not disabled, 1 if they are.
2339
2367
** </dd>
@@ -2494,7 +2522,7 @@ struct sqlite3_mem_methods {
2494
2522
** statistics. For statistics to be collected, the flag must be set on
2495
2523
** the database handle both when the SQL statement is prepared and when it
2496
2524
** is stepped. The flag is set (collection of statistics is enabled)
2497
- ** by default. This option takes two arguments: an integer and a pointer to
2525
+ ** by default. <p> This option takes two arguments: an integer and a pointer to
2498
2526
** an integer.. The first argument is 1, 0, or -1 to enable, disable, or
2499
2527
** leave unchanged the statement scanstatus option. If the second argument
2500
2528
** is not NULL, then the value of the statement scanstatus setting after
@@ -2508,7 +2536,7 @@ struct sqlite3_mem_methods {
2508
2536
** in which tables and indexes are scanned so that the scans start at the end
2509
2537
** and work toward the beginning rather than starting at the beginning and
2510
2538
** working toward the end. Setting SQLITE_DBCONFIG_REVERSE_SCANORDER is the
2511
- ** same as setting [PRAGMA reverse_unordered_selects]. This option takes
2539
+ ** same as setting [PRAGMA reverse_unordered_selects]. <p> This option takes
2512
2540
** two arguments which are an integer and a pointer to an integer. The first
2513
2541
** argument is 1, 0, or -1 to enable, disable, or leave unchanged the
2514
2542
** reverse scan order flag, respectively. If the second argument is not NULL,
@@ -2517,7 +2545,76 @@ struct sqlite3_mem_methods {
2517
2545
** first argument.
2518
2546
** </dd>
2519
2547
**
2548
+ ** [[SQLITE_DBCONFIG_ENABLE_ATTACH_CREATE]]
2549
+ ** <dt>SQLITE_DBCONFIG_ENABLE_ATTACH_CREATE</dt>
2550
+ ** <dd>The SQLITE_DBCONFIG_ENABLE_ATTACH_CREATE option enables or disables
2551
+ ** the ability of the [ATTACH DATABASE] SQL command to create a new database
2552
+ ** file if the database filed named in the ATTACH command does not already
2553
+ ** exist. This ability of ATTACH to create a new database is enabled by
2554
+ ** default. Applications can disable or reenable the ability for ATTACH to
2555
+ ** create new database files using this DBCONFIG option.<p>
2556
+ ** This option takes two arguments which are an integer and a pointer
2557
+ ** to an integer. The first argument is 1, 0, or -1 to enable, disable, or
2558
+ ** leave unchanged the attach-create flag, respectively. If the second
2559
+ ** argument is not NULL, then 0 or 1 is written into the integer that the
2560
+ ** second argument points to depending on if the attach-create flag is set
2561
+ ** after processing the first argument.
2562
+ ** </dd>
2563
+ **
2564
+ ** [[SQLITE_DBCONFIG_ENABLE_ATTACH_WRITE]]
2565
+ ** <dt>SQLITE_DBCONFIG_ENABLE_ATTACH_WRITE</dt>
2566
+ ** <dd>The SQLITE_DBCONFIG_ENABLE_ATTACH_WRITE option enables or disables the
2567
+ ** ability of the [ATTACH DATABASE] SQL command to open a database for writing.
2568
+ ** This capability is enabled by default. Applications can disable or
2569
+ ** reenable this capability using the current DBCONFIG option. If the
2570
+ ** the this capability is disabled, the [ATTACH] command will still work,
2571
+ ** but the database will be opened read-only. If this option is disabled,
2572
+ ** then the ability to create a new database using [ATTACH] is also disabled,
2573
+ ** regardless of the value of the [SQLITE_DBCONFIG_ENABLE_ATTACH_CREATE]
2574
+ ** option.<p>
2575
+ ** This option takes two arguments which are an integer and a pointer
2576
+ ** to an integer. The first argument is 1, 0, or -1 to enable, disable, or
2577
+ ** leave unchanged the ability to ATTACH another database for writing,
2578
+ ** respectively. If the second argument is not NULL, then 0 or 1 is written
2579
+ ** into the integer to which the second argument points, depending on whether
2580
+ ** the ability to ATTACH a read/write database is enabled or disabled
2581
+ ** after processing the first argument.
2582
+ ** </dd>
2583
+ **
2584
+ ** [[SQLITE_DBCONFIG_ENABLE_COMMENTS]]
2585
+ ** <dt>SQLITE_DBCONFIG_ENABLE_COMMENTS</dt>
2586
+ ** <dd>The SQLITE_DBCONFIG_ENABLE_COMMENTS option enables or disables the
2587
+ ** ability to include comments in SQL text. Comments are enabled by default.
2588
+ ** An application can disable or reenable comments in SQL text using this
2589
+ ** DBCONFIG option.<p>
2590
+ ** This option takes two arguments which are an integer and a pointer
2591
+ ** to an integer. The first argument is 1, 0, or -1 to enable, disable, or
2592
+ ** leave unchanged the ability to use comments in SQL text,
2593
+ ** respectively. If the second argument is not NULL, then 0 or 1 is written
2594
+ ** into the integer that the second argument points to depending on if
2595
+ ** comments are allowed in SQL text after processing the first argument.
2596
+ ** </dd>
2597
+ **
2520
2598
** </dl>
2599
+ **
2600
+ ** [[DBCONFIG arguments]] <h3>Arguments To SQLITE_DBCONFIG Options</h3>
2601
+ **
2602
+ ** <p>Most of the SQLITE_DBCONFIG options take two arguments, so that the
2603
+ ** overall call to [sqlite3_db_config()] has a total of four parameters.
2604
+ ** The first argument (the third parameter to sqlite3_db_config()) is a integer.
2605
+ ** The second argument is a pointer to an integer. If the first argument is 1,
2606
+ ** then the option becomes enabled. If the first integer argument is 0, then the
2607
+ ** option is disabled. If the first argument is -1, then the option setting
2608
+ ** is unchanged. The second argument, the pointer to an integer, may be NULL.
2609
+ ** If the second argument is not NULL, then a value of 0 or 1 is written into
2610
+ ** the integer to which the second argument points, depending on whether the
2611
+ ** setting is disabled or enabled after applying any changes specified by
2612
+ ** the first argument.
2613
+ **
2614
+ ** <p>While most SQLITE_DBCONFIG options use the argument format
2615
+ ** described in the previous paragraph, the [SQLITE_DBCONFIG_MAINDBNAME]
2616
+ ** and [SQLITE_DBCONFIG_LOOKASIDE] options are different. See the
2617
+ ** documentation of those exceptional options for details.
2521
2618
*/
2522
2619
#define SQLITE_DBCONFIG_MAINDBNAME 1000 /* const char* */
2523
2620
#define SQLITE_DBCONFIG_LOOKASIDE 1001 /* void* int int */
@@ -2539,7 +2636,10 @@ struct sqlite3_mem_methods {
2539
2636
#define SQLITE_DBCONFIG_TRUSTED_SCHEMA 1017 /* int int* */
2540
2637
#define SQLITE_DBCONFIG_STMT_SCANSTATUS 1018 /* int int* */
2541
2638
#define SQLITE_DBCONFIG_REVERSE_SCANORDER 1019 /* int int* */
2542
- #define SQLITE_DBCONFIG_MAX 1019 /* Largest DBCONFIG */
2639
+ #define SQLITE_DBCONFIG_ENABLE_ATTACH_CREATE 1020 /* int int* */
2640
+ #define SQLITE_DBCONFIG_ENABLE_ATTACH_WRITE 1021 /* int int* */
2641
+ #define SQLITE_DBCONFIG_ENABLE_COMMENTS 1022 /* int int* */
2642
+ #define SQLITE_DBCONFIG_MAX 1022 /* Largest DBCONFIG */
2543
2643
2544
2644
/*
2545
2645
** CAPI3REF: Enable Or Disable Extended Result Codes
@@ -2631,10 +2731,14 @@ SQLITE_API void sqlite3_set_last_insert_rowid(sqlite3*,sqlite3_int64);
2631
2731
** deleted by the most recently completed INSERT, UPDATE or DELETE
2632
2732
** statement on the database connection specified by the only parameter.
2633
2733
** The two functions are identical except for the type of the return value
2634
- ** and that if the number of rows modified by the most recent INSERT, UPDATE
2734
+ ** and that if the number of rows modified by the most recent INSERT, UPDATE,
2635
2735
** or DELETE is greater than the maximum value supported by type "int", then
2636
2736
** the return value of sqlite3_changes() is undefined. ^Executing any other
2637
2737
** type of SQL statement does not modify the value returned by these functions.
2738
+ ** For the purposes of this interface, a CREATE TABLE AS SELECT statement
2739
+ ** does not count as an INSERT, UPDATE or DELETE statement and hence the rows
2740
+ ** added to the new table by the CREATE TABLE AS SELECT statement are not
2741
+ ** counted.
2638
2742
**
2639
2743
** ^Only changes made directly by the INSERT, UPDATE or DELETE statement are
2640
2744
** considered - auxiliary changes caused by [CREATE TRIGGER | triggers],
@@ -4194,11 +4298,22 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
4194
4298
** <dd>The SQLITE_PREPARE_NO_VTAB flag causes the SQL compiler
4195
4299
** to return an error (error code SQLITE_ERROR) if the statement uses
4196
4300
** any virtual tables.
4301
+ **
4302
+ ** [[SQLITE_PREPARE_DONT_LOG]] <dt>SQLITE_PREPARE_DONT_LOG</dt>
4303
+ ** <dd>The SQLITE_PREPARE_DONT_LOG flag prevents SQL compiler
4304
+ ** errors from being sent to the error log defined by
4305
+ ** [SQLITE_CONFIG_LOG]. This can be used, for example, to do test
4306
+ ** compiles to see if some SQL syntax is well-formed, without generating
4307
+ ** messages on the global error log when it is not. If the test compile
4308
+ ** fails, the sqlite3_prepare_v3() call returns the same error indications
4309
+ ** with or without this flag; it just omits the call to [sqlite3_log()] that
4310
+ ** logs the error.
4197
4311
** </dl>
4198
4312
*/
4199
4313
#define SQLITE_PREPARE_PERSISTENT 0x01
4200
4314
#define SQLITE_PREPARE_NORMALIZE 0x02
4201
4315
#define SQLITE_PREPARE_NO_VTAB 0x04
4316
+ #define SQLITE_PREPARE_DONT_LOG 0x10
4202
4317
4203
4318
/*
4204
4319
** CAPI3REF: Compiling An SQL Statement
@@ -10727,8 +10842,9 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_recover(sqlite3 *db, const c
10727
10842
/*
10728
10843
** CAPI3REF: Serialize a database
10729
10844
**
10730
- ** The sqlite3_serialize(D,S,P,F) interface returns a pointer to memory
10731
- ** that is a serialization of the S database on [database connection] D.
10845
+ ** The sqlite3_serialize(D,S,P,F) interface returns a pointer to
10846
+ ** memory that is a serialization of the S database on
10847
+ ** [database connection] D. If S is a NULL pointer, the main database is used.
10732
10848
** If P is not a NULL pointer, then the size of the database in bytes
10733
10849
** is written into *P.
10734
10850
**
@@ -10889,7 +11005,7 @@ SQLITE_API int sqlite3_deserialize(
10889
11005
#ifdef __cplusplus
10890
11006
} /* End of the 'extern "C"' block */
10891
11007
#endif
10892
- #endif /* SQLITE3_H */
11008
+ /* #endif for SQLITE3_H will be added by mksqlite3.tcl */
10893
11009
10894
11010
/******** Begin file sqlite3rtree.h *********/
10895
11011
/*
@@ -13140,14 +13256,29 @@ struct Fts5PhraseIter {
13140
13256
** value returned by xInstCount(), SQLITE_RANGE is returned. Otherwise,
13141
13257
** output variable (*ppToken) is set to point to a buffer containing the
13142
13258
** matching document token, and (*pnToken) to the size of that buffer in
13143
- ** bytes. This API is not available if the specified token matches a
13144
- ** prefix query term. In that case both output variables are always set
13145
- ** to 0.
13259
+ ** bytes.
13146
13260
**
13147
13261
** The output text is not a copy of the document text that was tokenized.
13148
13262
** It is the output of the tokenizer module. For tokendata=1 tables, this
13149
13263
** includes any embedded 0x00 and trailing data.
13150
13264
**
13265
+ ** This API may be slow in some cases if the token identified by parameters
13266
+ ** iIdx and iToken matched a prefix token in the query. In most cases, the
13267
+ ** first call to this API for each prefix token in the query is forced
13268
+ ** to scan the portion of the full-text index that matches the prefix
13269
+ ** token to collect the extra data required by this API. If the prefix
13270
+ ** token matches a large number of token instances in the document set,
13271
+ ** this may be a performance problem.
13272
+ **
13273
+ ** If the user knows in advance that a query may use this API for a
13274
+ ** prefix token, FTS5 may be configured to collect all required data as part
13275
+ ** of the initial querying of the full-text index, avoiding the second scan
13276
+ ** entirely. This also causes prefix queries that do not use this API to
13277
+ ** run more slowly and use more memory. FTS5 may be configured in this way
13278
+ ** either on a per-table basis using the [FTS5 insttoken | 'insttoken']
13279
+ ** option, or on a per-query basis using the
13280
+ ** [fts5_insttoken | fts5_insttoken()] user function.
13281
+ **
13151
13282
** This API can be quite slow if used with an FTS5 table created with the
13152
13283
** "detail=none" or "detail=column" option.
13153
13284
**
@@ -13581,3 +13712,4 @@ struct fts5_api {
13581
13712
#endif /* _FTS5_H */
13582
13713
13583
13714
/******** End of fts5.h *********/
13715
+ #endif /* SQLITE3_H */
0 commit comments