amalgalite 1.1.2-x86-mswin32 → 1.3.0-x86-mswin32
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CONTRIBUTING.md +49 -0
- data/{HISTORY.rdoc → HISTORY.md} +96 -73
- data/LICENSE +2 -2
- data/Manifest.txt +104 -0
- data/README.md +73 -0
- data/Rakefile +25 -0
- data/TODO.md +50 -0
- data/ext/amalgalite/{amalgalite3.c → c/amalgalite.c} +12 -12
- data/ext/amalgalite/{amalgalite3.h → c/amalgalite.h} +5 -5
- data/ext/amalgalite/{amalgalite3_blob.c → c/amalgalite_blob.c} +2 -2
- data/ext/amalgalite/{amalgalite3_constants.c → c/amalgalite_constants.c} +2 -2
- data/ext/amalgalite/{amalgalite3_database.c → c/amalgalite_database.c} +49 -21
- data/ext/amalgalite/{amalgalite3_requires_bootstrap.c → c/amalgalite_requires_bootstrap.c} +131 -58
- data/ext/amalgalite/{amalgalite3_statement.c → c/amalgalite_statement.c} +2 -2
- data/ext/amalgalite/{extconf.rb → c/extconf.rb} +4 -4
- data/ext/amalgalite/{gen_constants.rb → c/gen_constants.rb} +3 -3
- data/ext/amalgalite/c/notes.txt +134 -0
- data/ext/amalgalite/{sqlite3.c → c/sqlite3.c} +94602 -80497
- data/ext/amalgalite/{sqlite3.h → c/sqlite3.h} +1047 -216
- data/ext/amalgalite/{sqlite3_options.h → c/sqlite3_options.h} +0 -0
- data/ext/amalgalite/{sqlite3ext.h → c/sqlite3ext.h} +40 -13
- data/lib/amalgalite.rb +13 -6
- data/lib/amalgalite/1.8/amalgalite.so +0 -0
- data/lib/amalgalite/1.9/amalgalite.so +0 -0
- data/lib/amalgalite/2.0/amalgalite.so +0 -0
- data/lib/amalgalite/column.rb +7 -5
- data/lib/amalgalite/database.rb +18 -10
- data/lib/amalgalite/packer.rb +5 -2
- data/lib/amalgalite/requires.rb +47 -16
- data/lib/amalgalite/schema.rb +63 -36
- data/lib/amalgalite/sqlite3/version.rb +0 -1
- data/lib/amalgalite/statement.rb +7 -5
- data/lib/amalgalite/table.rb +9 -8
- data/lib/amalgalite/type_maps/default_map.rb +0 -1
- data/lib/amalgalite/type_maps/storage_map.rb +0 -2
- data/lib/amalgalite/type_maps/text_map.rb +0 -1
- data/lib/amalgalite/version.rb +3 -32
- data/spec/aggregate_spec.rb +1 -1
- data/spec/amalgalite_spec.rb +1 -1
- data/spec/blob_spec.rb +1 -1
- data/spec/boolean_spec.rb +2 -1
- data/spec/busy_handler.rb +1 -1
- data/spec/database_spec.rb +16 -11
- data/spec/default_map_spec.rb +1 -1
- data/spec/function_spec.rb +1 -1
- data/spec/integeration_spec.rb +2 -1
- data/spec/packer_spec.rb +4 -4
- data/spec/paths_spec.rb +1 -1
- data/spec/progress_handler_spec.rb +4 -5
- data/spec/requires_spec.rb +36 -2
- data/spec/rtree_spec.rb +6 -5
- data/spec/schema_spec.rb +28 -20
- data/spec/spec_helper.rb +2 -7
- data/spec/sqlite3/constants_spec.rb +1 -1
- data/spec/sqlite3/database_status_spec.rb +4 -4
- data/spec/sqlite3/status_spec.rb +5 -5
- data/spec/sqlite3/version_spec.rb +7 -7
- data/spec/sqlite3_spec.rb +3 -3
- data/spec/statement_spec.rb +3 -4
- data/spec/storage_map_spec.rb +1 -1
- data/spec/tap_spec.rb +4 -4
- data/spec/text_map_spec.rb +1 -1
- data/spec/type_map_spec.rb +1 -1
- data/spec/version_spec.rb +2 -9
- data/tasks/custom.rake +99 -0
- data/tasks/default.rake +277 -0
- data/tasks/extension.rake +28 -202
- data/tasks/this.rb +209 -0
- metadata +102 -191
- data/README.rdoc +0 -54
- data/gemspec.rb +0 -63
- data/lib/amalgalite/1.8/amalgalite3.so +0 -0
- data/lib/amalgalite/1.9/amalgalite3.so +0 -0
- data/tasks/announce.rake +0 -44
- data/tasks/config.rb +0 -107
- data/tasks/distribution.rake +0 -77
- data/tasks/documentation.rake +0 -36
- data/tasks/rspec.rake +0 -30
- data/tasks/utils.rb +0 -80
@@ -107,9 +107,9 @@ extern "C" {
|
|
107
107
|
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
|
108
108
|
** [sqlite_version()] and [sqlite_source_id()].
|
109
109
|
*/
|
110
|
-
#define SQLITE_VERSION "3.7.
|
111
|
-
#define SQLITE_VERSION_NUMBER
|
112
|
-
#define SQLITE_SOURCE_ID "
|
110
|
+
#define SQLITE_VERSION "3.7.15.2"
|
111
|
+
#define SQLITE_VERSION_NUMBER 3007015
|
112
|
+
#define SQLITE_SOURCE_ID "2013-01-09 11:53:05 c0e09560d26f0a6456be9dd3447f5311eb4f238f"
|
113
113
|
|
114
114
|
/*
|
115
115
|
** CAPI3REF: Run-Time Library Version Numbers
|
@@ -177,7 +177,7 @@ SQLITE_API const char *sqlite3_compileoption_get(int N);
|
|
177
177
|
** CAPI3REF: Test To See If The Library Is Threadsafe
|
178
178
|
**
|
179
179
|
** ^The sqlite3_threadsafe() function returns zero if and only if
|
180
|
-
** SQLite was compiled mutexing code omitted due to the
|
180
|
+
** SQLite was compiled with mutexing code omitted due to the
|
181
181
|
** [SQLITE_THREADSAFE] compile-time option being set to 0.
|
182
182
|
**
|
183
183
|
** SQLite can be compiled with or without mutexes. When
|
@@ -219,7 +219,8 @@ SQLITE_API int sqlite3_threadsafe(void);
|
|
219
219
|
** the opaque structure named "sqlite3". It is useful to think of an sqlite3
|
220
220
|
** pointer as an object. The [sqlite3_open()], [sqlite3_open16()], and
|
221
221
|
** [sqlite3_open_v2()] interfaces are its constructors, and [sqlite3_close()]
|
222
|
-
**
|
222
|
+
** and [sqlite3_close_v2()] are its destructors. There are many other
|
223
|
+
** interfaces (such as
|
223
224
|
** [sqlite3_prepare_v2()], [sqlite3_create_function()], and
|
224
225
|
** [sqlite3_busy_timeout()] to name but three) that are methods on an
|
225
226
|
** sqlite3 object.
|
@@ -266,28 +267,46 @@ typedef sqlite_uint64 sqlite3_uint64;
|
|
266
267
|
/*
|
267
268
|
** CAPI3REF: Closing A Database Connection
|
268
269
|
**
|
269
|
-
** ^The sqlite3_close()
|
270
|
-
**
|
271
|
-
**
|
272
|
-
**
|
273
|
-
**
|
274
|
-
**
|
275
|
-
** the
|
270
|
+
** ^The sqlite3_close() and sqlite3_close_v2() routines are destructors
|
271
|
+
** for the [sqlite3] object.
|
272
|
+
** ^Calls to sqlite3_close() and sqlite3_close_v2() return SQLITE_OK if
|
273
|
+
** the [sqlite3] object is successfully destroyed and all associated
|
274
|
+
** resources are deallocated.
|
275
|
+
**
|
276
|
+
** ^If the database connection is associated with unfinalized prepared
|
277
|
+
** statements or unfinished sqlite3_backup objects then sqlite3_close()
|
278
|
+
** will leave the database connection open and return [SQLITE_BUSY].
|
279
|
+
** ^If sqlite3_close_v2() is called with unfinalized prepared statements
|
280
|
+
** and unfinished sqlite3_backups, then the database connection becomes
|
281
|
+
** an unusable "zombie" which will automatically be deallocated when the
|
282
|
+
** last prepared statement is finalized or the last sqlite3_backup is
|
283
|
+
** finished. The sqlite3_close_v2() interface is intended for use with
|
284
|
+
** host languages that are garbage collected, and where the order in which
|
285
|
+
** destructors are called is arbitrary.
|
286
|
+
**
|
287
|
+
** Applications should [sqlite3_finalize | finalize] all [prepared statements],
|
288
|
+
** [sqlite3_blob_close | close] all [BLOB handles], and
|
289
|
+
** [sqlite3_backup_finish | finish] all [sqlite3_backup] objects associated
|
290
|
+
** with the [sqlite3] object prior to attempting to close the object. ^If
|
276
291
|
** sqlite3_close() is called on a [database connection] that still has
|
277
|
-
** outstanding [prepared statements]
|
278
|
-
**
|
292
|
+
** outstanding [prepared statements], [BLOB handles], and/or
|
293
|
+
** [sqlite3_backup] objects then it returns SQLITE_OK but the deallocation
|
294
|
+
** of resources is deferred until all [prepared statements], [BLOB handles],
|
295
|
+
** and [sqlite3_backup] objects are also destroyed.
|
279
296
|
**
|
280
|
-
** ^If [
|
297
|
+
** ^If an [sqlite3] object is destroyed while a transaction is open,
|
281
298
|
** the transaction is automatically rolled back.
|
282
299
|
**
|
283
|
-
** The C parameter to [sqlite3_close(C)]
|
300
|
+
** The C parameter to [sqlite3_close(C)] and [sqlite3_close_v2(C)]
|
301
|
+
** must be either a NULL
|
284
302
|
** pointer or an [sqlite3] object pointer obtained
|
285
303
|
** from [sqlite3_open()], [sqlite3_open16()], or
|
286
304
|
** [sqlite3_open_v2()], and not previously closed.
|
287
|
-
** ^Calling sqlite3_close() with a NULL pointer
|
288
|
-
** harmless no-op.
|
305
|
+
** ^Calling sqlite3_close() or sqlite3_close_v2() with a NULL pointer
|
306
|
+
** argument is a harmless no-op.
|
289
307
|
*/
|
290
|
-
SQLITE_API int sqlite3_close(sqlite3
|
308
|
+
SQLITE_API int sqlite3_close(sqlite3*);
|
309
|
+
SQLITE_API int sqlite3_close_v2(sqlite3*);
|
291
310
|
|
292
311
|
/*
|
293
312
|
** The type for a callback function.
|
@@ -310,7 +329,7 @@ typedef int (*sqlite3_callback)(void*,int,char**, char**);
|
|
310
329
|
** argument. ^If the callback function of the 3rd argument to
|
311
330
|
** sqlite3_exec() is not NULL, then it is invoked for each result row
|
312
331
|
** coming out of the evaluated SQL statements. ^The 4th argument to
|
313
|
-
**
|
332
|
+
** sqlite3_exec() is relayed through to the 1st argument of each
|
314
333
|
** callback invocation. ^If the callback pointer to sqlite3_exec()
|
315
334
|
** is NULL, then no callback is ever invoked and result rows are
|
316
335
|
** ignored.
|
@@ -371,11 +390,12 @@ SQLITE_API int sqlite3_exec(
|
|
371
390
|
** KEYWORDS: {result code} {result codes}
|
372
391
|
**
|
373
392
|
** Many SQLite functions return an integer result code from the set shown
|
374
|
-
** here in order to
|
393
|
+
** here in order to indicate success or failure.
|
375
394
|
**
|
376
395
|
** New error codes may be added in future versions of SQLite.
|
377
396
|
**
|
378
|
-
** See also: [SQLITE_IOERR_READ | extended result codes]
|
397
|
+
** See also: [SQLITE_IOERR_READ | extended result codes],
|
398
|
+
** [sqlite3_vtab_on_conflict()] [SQLITE_ROLLBACK | result codes].
|
379
399
|
*/
|
380
400
|
#define SQLITE_OK 0 /* Successful result */
|
381
401
|
/* beginning-of-error-codes */
|
@@ -452,17 +472,25 @@ SQLITE_API int sqlite3_exec(
|
|
452
472
|
#define SQLITE_IOERR_SHMOPEN (SQLITE_IOERR | (18<<8))
|
453
473
|
#define SQLITE_IOERR_SHMSIZE (SQLITE_IOERR | (19<<8))
|
454
474
|
#define SQLITE_IOERR_SHMLOCK (SQLITE_IOERR | (20<<8))
|
475
|
+
#define SQLITE_IOERR_SHMMAP (SQLITE_IOERR | (21<<8))
|
476
|
+
#define SQLITE_IOERR_SEEK (SQLITE_IOERR | (22<<8))
|
477
|
+
#define SQLITE_IOERR_DELETE_NOENT (SQLITE_IOERR | (23<<8))
|
455
478
|
#define SQLITE_LOCKED_SHAREDCACHE (SQLITE_LOCKED | (1<<8))
|
456
479
|
#define SQLITE_BUSY_RECOVERY (SQLITE_BUSY | (1<<8))
|
457
480
|
#define SQLITE_CANTOPEN_NOTEMPDIR (SQLITE_CANTOPEN | (1<<8))
|
481
|
+
#define SQLITE_CANTOPEN_ISDIR (SQLITE_CANTOPEN | (2<<8))
|
482
|
+
#define SQLITE_CANTOPEN_FULLPATH (SQLITE_CANTOPEN | (3<<8))
|
483
|
+
#define SQLITE_CORRUPT_VTAB (SQLITE_CORRUPT | (1<<8))
|
484
|
+
#define SQLITE_READONLY_RECOVERY (SQLITE_READONLY | (1<<8))
|
485
|
+
#define SQLITE_READONLY_CANTLOCK (SQLITE_READONLY | (2<<8))
|
486
|
+
#define SQLITE_ABORT_ROLLBACK (SQLITE_ABORT | (2<<8))
|
458
487
|
|
459
488
|
/*
|
460
489
|
** CAPI3REF: Flags For File Open Operations
|
461
490
|
**
|
462
491
|
** These bit values are intended for use in the
|
463
492
|
** 3rd parameter to the [sqlite3_open_v2()] interface and
|
464
|
-
** in the 4th parameter to the xOpen method
|
465
|
-
** [sqlite3_vfs] object.
|
493
|
+
** in the 4th parameter to the [sqlite3_vfs.xOpen] method.
|
466
494
|
*/
|
467
495
|
#define SQLITE_OPEN_READONLY 0x00000001 /* Ok for sqlite3_open_v2() */
|
468
496
|
#define SQLITE_OPEN_READWRITE 0x00000002 /* Ok for sqlite3_open_v2() */
|
@@ -470,6 +498,8 @@ SQLITE_API int sqlite3_exec(
|
|
470
498
|
#define SQLITE_OPEN_DELETEONCLOSE 0x00000008 /* VFS only */
|
471
499
|
#define SQLITE_OPEN_EXCLUSIVE 0x00000010 /* VFS only */
|
472
500
|
#define SQLITE_OPEN_AUTOPROXY 0x00000020 /* VFS only */
|
501
|
+
#define SQLITE_OPEN_URI 0x00000040 /* Ok for sqlite3_open_v2() */
|
502
|
+
#define SQLITE_OPEN_MEMORY 0x00000080 /* Ok for sqlite3_open_v2() */
|
473
503
|
#define SQLITE_OPEN_MAIN_DB 0x00000100 /* VFS only */
|
474
504
|
#define SQLITE_OPEN_TEMP_DB 0x00000200 /* VFS only */
|
475
505
|
#define SQLITE_OPEN_TRANSIENT_DB 0x00000400 /* VFS only */
|
@@ -483,11 +513,13 @@ SQLITE_API int sqlite3_exec(
|
|
483
513
|
#define SQLITE_OPEN_PRIVATECACHE 0x00040000 /* Ok for sqlite3_open_v2() */
|
484
514
|
#define SQLITE_OPEN_WAL 0x00080000 /* VFS only */
|
485
515
|
|
516
|
+
/* Reserved: 0x00F00000 */
|
517
|
+
|
486
518
|
/*
|
487
519
|
** CAPI3REF: Device Characteristics
|
488
520
|
**
|
489
521
|
** The xDeviceCharacteristics method of the [sqlite3_io_methods]
|
490
|
-
** object returns an integer which is a vector of
|
522
|
+
** object returns an integer which is a vector of these
|
491
523
|
** bit values expressing I/O characteristics of the mass storage
|
492
524
|
** device that holds the file that the [sqlite3_io_methods]
|
493
525
|
** refers to.
|
@@ -501,7 +533,11 @@ SQLITE_API int sqlite3_exec(
|
|
501
533
|
** first then the size of the file is extended, never the other
|
502
534
|
** way around. The SQLITE_IOCAP_SEQUENTIAL property means that
|
503
535
|
** information is written to disk in the same order as calls
|
504
|
-
** to xWrite().
|
536
|
+
** to xWrite(). The SQLITE_IOCAP_POWERSAFE_OVERWRITE property means that
|
537
|
+
** after reboot following a crash or power loss, the only bytes in a
|
538
|
+
** file that were written at the application level might have changed
|
539
|
+
** and that adjacent bytes, even bytes within the same sector are
|
540
|
+
** guaranteed to be unchanged.
|
505
541
|
*/
|
506
542
|
#define SQLITE_IOCAP_ATOMIC 0x00000001
|
507
543
|
#define SQLITE_IOCAP_ATOMIC512 0x00000002
|
@@ -515,6 +551,7 @@ SQLITE_API int sqlite3_exec(
|
|
515
551
|
#define SQLITE_IOCAP_SAFE_APPEND 0x00000200
|
516
552
|
#define SQLITE_IOCAP_SEQUENTIAL 0x00000400
|
517
553
|
#define SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN 0x00000800
|
554
|
+
#define SQLITE_IOCAP_POWERSAFE_OVERWRITE 0x00001000
|
518
555
|
|
519
556
|
/*
|
520
557
|
** CAPI3REF: File Locking Levels
|
@@ -578,17 +615,18 @@ struct sqlite3_file {
|
|
578
615
|
/*
|
579
616
|
** CAPI3REF: OS Interface File Virtual Methods Object
|
580
617
|
**
|
581
|
-
** Every file opened by the [sqlite3_vfs]
|
618
|
+
** Every file opened by the [sqlite3_vfs.xOpen] method populates an
|
582
619
|
** [sqlite3_file] object (or, more commonly, a subclass of the
|
583
620
|
** [sqlite3_file] object) with a pointer to an instance of this object.
|
584
621
|
** This object defines the methods used to perform various operations
|
585
622
|
** against the open file represented by the [sqlite3_file] object.
|
586
623
|
**
|
587
|
-
** If the xOpen method sets the sqlite3_file.pMethods element
|
624
|
+
** If the [sqlite3_vfs.xOpen] method sets the sqlite3_file.pMethods element
|
588
625
|
** to a non-NULL pointer, then the sqlite3_io_methods.xClose method
|
589
|
-
** may be invoked even if the xOpen reported that it failed. The
|
590
|
-
** only way to prevent a call to xClose following a failed xOpen
|
591
|
-
** is for the xOpen to set the sqlite3_file.pMethods element
|
626
|
+
** may be invoked even if the [sqlite3_vfs.xOpen] reported that it failed. The
|
627
|
+
** only way to prevent a call to xClose following a failed [sqlite3_vfs.xOpen]
|
628
|
+
** is for the [sqlite3_vfs.xOpen] to set the sqlite3_file.pMethods element
|
629
|
+
** to NULL.
|
592
630
|
**
|
593
631
|
** The flags argument to xSync may be one of [SQLITE_SYNC_NORMAL] or
|
594
632
|
** [SQLITE_SYNC_FULL]. The first choice is the normal fsync().
|
@@ -702,7 +740,8 @@ struct sqlite3_io_methods {
|
|
702
740
|
** into an integer that the pArg argument points to. This capability
|
703
741
|
** is used during testing and only needs to be supported when SQLITE_TEST
|
704
742
|
** is defined.
|
705
|
-
**
|
743
|
+
** <ul>
|
744
|
+
** <li>[[SQLITE_FCNTL_SIZE_HINT]]
|
706
745
|
** The [SQLITE_FCNTL_SIZE_HINT] opcode is used by SQLite to give the VFS
|
707
746
|
** layer a hint of how large the database file will grow to be during the
|
708
747
|
** current transaction. This hint is not guaranteed to be accurate but it
|
@@ -710,6 +749,7 @@ struct sqlite3_io_methods {
|
|
710
749
|
** file space based on this hint in order to help writes to the database
|
711
750
|
** file run faster.
|
712
751
|
**
|
752
|
+
** <li>[[SQLITE_FCNTL_CHUNK_SIZE]]
|
713
753
|
** The [SQLITE_FCNTL_CHUNK_SIZE] opcode is used to request that the VFS
|
714
754
|
** extends and truncates the database file in chunks of a size specified
|
715
755
|
** by the user. The fourth argument to [sqlite3_file_control()] should
|
@@ -718,11 +758,13 @@ struct sqlite3_io_methods {
|
|
718
758
|
** chunks (say 1MB at a time), may reduce file-system fragmentation and
|
719
759
|
** improve performance on some systems.
|
720
760
|
**
|
761
|
+
** <li>[[SQLITE_FCNTL_FILE_POINTER]]
|
721
762
|
** The [SQLITE_FCNTL_FILE_POINTER] opcode is used to obtain a pointer
|
722
763
|
** to the [sqlite3_file] object associated with a particular database
|
723
764
|
** connection. See the [sqlite3_file_control()] documentation for
|
724
765
|
** additional information.
|
725
766
|
**
|
767
|
+
** <li>[[SQLITE_FCNTL_SYNC_OMITTED]]
|
726
768
|
** ^(The [SQLITE_FCNTL_SYNC_OMITTED] opcode is generated internally by
|
727
769
|
** SQLite and sent to all VFSes in place of a call to the xSync method
|
728
770
|
** when the database connection has [PRAGMA synchronous] set to OFF.)^
|
@@ -730,18 +772,129 @@ struct sqlite3_io_methods {
|
|
730
772
|
** when [PRAGMA synchronous | PRAGMA synchronous=OFF] is set, but most
|
731
773
|
** VFSes do not need this signal and should silently ignore this opcode.
|
732
774
|
** Applications should not call [sqlite3_file_control()] with this
|
733
|
-
** opcode as doing so may disrupt the operation of the
|
775
|
+
** opcode as doing so may disrupt the operation of the specialized VFSes
|
734
776
|
** that do require it.
|
777
|
+
**
|
778
|
+
** <li>[[SQLITE_FCNTL_WIN32_AV_RETRY]]
|
779
|
+
** ^The [SQLITE_FCNTL_WIN32_AV_RETRY] opcode is used to configure automatic
|
780
|
+
** retry counts and intervals for certain disk I/O operations for the
|
781
|
+
** windows [VFS] in order to provide robustness in the presence of
|
782
|
+
** anti-virus programs. By default, the windows VFS will retry file read,
|
783
|
+
** file write, and file delete operations up to 10 times, with a delay
|
784
|
+
** of 25 milliseconds before the first retry and with the delay increasing
|
785
|
+
** by an additional 25 milliseconds with each subsequent retry. This
|
786
|
+
** opcode allows these two values (10 retries and 25 milliseconds of delay)
|
787
|
+
** to be adjusted. The values are changed for all database connections
|
788
|
+
** within the same process. The argument is a pointer to an array of two
|
789
|
+
** integers where the first integer i the new retry count and the second
|
790
|
+
** integer is the delay. If either integer is negative, then the setting
|
791
|
+
** is not changed but instead the prior value of that setting is written
|
792
|
+
** into the array entry, allowing the current retry settings to be
|
793
|
+
** interrogated. The zDbName parameter is ignored.
|
794
|
+
**
|
795
|
+
** <li>[[SQLITE_FCNTL_PERSIST_WAL]]
|
796
|
+
** ^The [SQLITE_FCNTL_PERSIST_WAL] opcode is used to set or query the
|
797
|
+
** persistent [WAL | Write Ahead Log] setting. By default, the auxiliary
|
798
|
+
** write ahead log and shared memory files used for transaction control
|
799
|
+
** are automatically deleted when the latest connection to the database
|
800
|
+
** closes. Setting persistent WAL mode causes those files to persist after
|
801
|
+
** close. Persisting the files is useful when other processes that do not
|
802
|
+
** have write permission on the directory containing the database file want
|
803
|
+
** to read the database file, as the WAL and shared memory files must exist
|
804
|
+
** in order for the database to be readable. The fourth parameter to
|
805
|
+
** [sqlite3_file_control()] for this opcode should be a pointer to an integer.
|
806
|
+
** That integer is 0 to disable persistent WAL mode or 1 to enable persistent
|
807
|
+
** WAL mode. If the integer is -1, then it is overwritten with the current
|
808
|
+
** WAL persistence setting.
|
809
|
+
**
|
810
|
+
** <li>[[SQLITE_FCNTL_POWERSAFE_OVERWRITE]]
|
811
|
+
** ^The [SQLITE_FCNTL_POWERSAFE_OVERWRITE] opcode is used to set or query the
|
812
|
+
** persistent "powersafe-overwrite" or "PSOW" setting. The PSOW setting
|
813
|
+
** determines the [SQLITE_IOCAP_POWERSAFE_OVERWRITE] bit of the
|
814
|
+
** xDeviceCharacteristics methods. The fourth parameter to
|
815
|
+
** [sqlite3_file_control()] for this opcode should be a pointer to an integer.
|
816
|
+
** That integer is 0 to disable zero-damage mode or 1 to enable zero-damage
|
817
|
+
** mode. If the integer is -1, then it is overwritten with the current
|
818
|
+
** zero-damage mode setting.
|
819
|
+
**
|
820
|
+
** <li>[[SQLITE_FCNTL_OVERWRITE]]
|
821
|
+
** ^The [SQLITE_FCNTL_OVERWRITE] opcode is invoked by SQLite after opening
|
822
|
+
** a write transaction to indicate that, unless it is rolled back for some
|
823
|
+
** reason, the entire database file will be overwritten by the current
|
824
|
+
** transaction. This is used by VACUUM operations.
|
825
|
+
**
|
826
|
+
** <li>[[SQLITE_FCNTL_VFSNAME]]
|
827
|
+
** ^The [SQLITE_FCNTL_VFSNAME] opcode can be used to obtain the names of
|
828
|
+
** all [VFSes] in the VFS stack. The names are of all VFS shims and the
|
829
|
+
** final bottom-level VFS are written into memory obtained from
|
830
|
+
** [sqlite3_malloc()] and the result is stored in the char* variable
|
831
|
+
** that the fourth parameter of [sqlite3_file_control()] points to.
|
832
|
+
** The caller is responsible for freeing the memory when done. As with
|
833
|
+
** all file-control actions, there is no guarantee that this will actually
|
834
|
+
** do anything. Callers should initialize the char* variable to a NULL
|
835
|
+
** pointer in case this file-control is not implemented. This file-control
|
836
|
+
** is intended for diagnostic use only.
|
837
|
+
**
|
838
|
+
** <li>[[SQLITE_FCNTL_PRAGMA]]
|
839
|
+
** ^Whenever a [PRAGMA] statement is parsed, an [SQLITE_FCNTL_PRAGMA]
|
840
|
+
** file control is sent to the open [sqlite3_file] object corresponding
|
841
|
+
** to the database file to which the pragma statement refers. ^The argument
|
842
|
+
** to the [SQLITE_FCNTL_PRAGMA] file control is an array of
|
843
|
+
** pointers to strings (char**) in which the second element of the array
|
844
|
+
** is the name of the pragma and the third element is the argument to the
|
845
|
+
** pragma or NULL if the pragma has no argument. ^The handler for an
|
846
|
+
** [SQLITE_FCNTL_PRAGMA] file control can optionally make the first element
|
847
|
+
** of the char** argument point to a string obtained from [sqlite3_mprintf()]
|
848
|
+
** or the equivalent and that string will become the result of the pragma or
|
849
|
+
** the error message if the pragma fails. ^If the
|
850
|
+
** [SQLITE_FCNTL_PRAGMA] file control returns [SQLITE_NOTFOUND], then normal
|
851
|
+
** [PRAGMA] processing continues. ^If the [SQLITE_FCNTL_PRAGMA]
|
852
|
+
** file control returns [SQLITE_OK], then the parser assumes that the
|
853
|
+
** VFS has handled the PRAGMA itself and the parser generates a no-op
|
854
|
+
** prepared statement. ^If the [SQLITE_FCNTL_PRAGMA] file control returns
|
855
|
+
** any result code other than [SQLITE_OK] or [SQLITE_NOTFOUND], that means
|
856
|
+
** that the VFS encountered an error while handling the [PRAGMA] and the
|
857
|
+
** compilation of the PRAGMA fails with an error. ^The [SQLITE_FCNTL_PRAGMA]
|
858
|
+
** file control occurs at the beginning of pragma statement analysis and so
|
859
|
+
** it is able to override built-in [PRAGMA] statements.
|
860
|
+
**
|
861
|
+
** <li>[[SQLITE_FCNTL_BUSYHANDLER]]
|
862
|
+
** ^This file-control may be invoked by SQLite on the database file handle
|
863
|
+
** shortly after it is opened in order to provide a custom VFS with access
|
864
|
+
** to the connections busy-handler callback. The argument is of type (void **)
|
865
|
+
** - an array of two (void *) values. The first (void *) actually points
|
866
|
+
** to a function of type (int (*)(void *)). In order to invoke the connections
|
867
|
+
** busy-handler, this function should be invoked with the second (void *) in
|
868
|
+
** the array as the only argument. If it returns non-zero, then the operation
|
869
|
+
** should be retried. If it returns zero, the custom VFS should abandon the
|
870
|
+
** current operation.
|
871
|
+
**
|
872
|
+
** <li>[[SQLITE_FCNTL_TEMPFILENAME]]
|
873
|
+
** ^Application can invoke this file-control to have SQLite generate a
|
874
|
+
** temporary filename using the same algorithm that is followed to generate
|
875
|
+
** temporary filenames for TEMP tables and other internal uses. The
|
876
|
+
** argument should be a char** which will be filled with the filename
|
877
|
+
** written into memory obtained from [sqlite3_malloc()]. The caller should
|
878
|
+
** invoke [sqlite3_free()] on the result to avoid a memory leak.
|
879
|
+
**
|
880
|
+
** </ul>
|
735
881
|
*/
|
736
|
-
#define SQLITE_FCNTL_LOCKSTATE
|
737
|
-
#define SQLITE_GET_LOCKPROXYFILE
|
738
|
-
#define SQLITE_SET_LOCKPROXYFILE
|
739
|
-
#define SQLITE_LAST_ERRNO
|
740
|
-
#define SQLITE_FCNTL_SIZE_HINT
|
741
|
-
#define SQLITE_FCNTL_CHUNK_SIZE
|
742
|
-
#define SQLITE_FCNTL_FILE_POINTER
|
743
|
-
#define SQLITE_FCNTL_SYNC_OMITTED
|
744
|
-
|
882
|
+
#define SQLITE_FCNTL_LOCKSTATE 1
|
883
|
+
#define SQLITE_GET_LOCKPROXYFILE 2
|
884
|
+
#define SQLITE_SET_LOCKPROXYFILE 3
|
885
|
+
#define SQLITE_LAST_ERRNO 4
|
886
|
+
#define SQLITE_FCNTL_SIZE_HINT 5
|
887
|
+
#define SQLITE_FCNTL_CHUNK_SIZE 6
|
888
|
+
#define SQLITE_FCNTL_FILE_POINTER 7
|
889
|
+
#define SQLITE_FCNTL_SYNC_OMITTED 8
|
890
|
+
#define SQLITE_FCNTL_WIN32_AV_RETRY 9
|
891
|
+
#define SQLITE_FCNTL_PERSIST_WAL 10
|
892
|
+
#define SQLITE_FCNTL_OVERWRITE 11
|
893
|
+
#define SQLITE_FCNTL_VFSNAME 12
|
894
|
+
#define SQLITE_FCNTL_POWERSAFE_OVERWRITE 13
|
895
|
+
#define SQLITE_FCNTL_PRAGMA 14
|
896
|
+
#define SQLITE_FCNTL_BUSYHANDLER 15
|
897
|
+
#define SQLITE_FCNTL_TEMPFILENAME 16
|
745
898
|
|
746
899
|
/*
|
747
900
|
** CAPI3REF: Mutex Handle
|
@@ -760,7 +913,8 @@ typedef struct sqlite3_mutex sqlite3_mutex;
|
|
760
913
|
**
|
761
914
|
** An instance of the sqlite3_vfs object defines the interface between
|
762
915
|
** the SQLite core and the underlying operating system. The "vfs"
|
763
|
-
** in the name of the object stands for "virtual file system".
|
916
|
+
** in the name of the object stands for "virtual file system". See
|
917
|
+
** the [VFS | VFS documentation] for further information.
|
764
918
|
**
|
765
919
|
** The value of the iVersion field is initially 1 but may be larger in
|
766
920
|
** future versions of SQLite. Additional fields may be appended to this
|
@@ -789,12 +943,13 @@ typedef struct sqlite3_mutex sqlite3_mutex;
|
|
789
943
|
** The zName field holds the name of the VFS module. The name must
|
790
944
|
** be unique across all VFS modules.
|
791
945
|
**
|
946
|
+
** [[sqlite3_vfs.xOpen]]
|
792
947
|
** ^SQLite guarantees that the zFilename parameter to xOpen
|
793
948
|
** is either a NULL pointer or string obtained
|
794
949
|
** from xFullPathname() with an optional suffix added.
|
795
950
|
** ^If a suffix is added to the zFilename parameter, it will
|
796
951
|
** consist of a single "-" character followed by no more than
|
797
|
-
**
|
952
|
+
** 11 alphanumeric and/or "-" characters.
|
798
953
|
** ^SQLite further guarantees that
|
799
954
|
** the string will be valid and unchanged until xClose() is
|
800
955
|
** called. Because of the previous sentence,
|
@@ -866,6 +1021,7 @@ typedef struct sqlite3_mutex sqlite3_mutex;
|
|
866
1021
|
** element will be valid after xOpen returns regardless of the success
|
867
1022
|
** or failure of the xOpen call.
|
868
1023
|
**
|
1024
|
+
** [[sqlite3_vfs.xAccess]]
|
869
1025
|
** ^The flags argument to xAccess() may be [SQLITE_ACCESS_EXISTS]
|
870
1026
|
** to test for the existence of a file, or [SQLITE_ACCESS_READWRITE] to
|
871
1027
|
** test whether a file is readable and writable, or [SQLITE_ACCESS_READ]
|
@@ -890,16 +1046,29 @@ typedef struct sqlite3_mutex sqlite3_mutex;
|
|
890
1046
|
** method returns a Julian Day Number for the current date and time as
|
891
1047
|
** a floating point value.
|
892
1048
|
** ^The xCurrentTimeInt64() method returns, as an integer, the Julian
|
893
|
-
** Day Number
|
1049
|
+
** Day Number multiplied by 86400000 (the number of milliseconds in
|
894
1050
|
** a 24-hour day).
|
895
1051
|
** ^SQLite will use the xCurrentTimeInt64() method to get the current
|
896
1052
|
** date and time if that method is available (if iVersion is 2 or
|
897
1053
|
** greater and the function pointer is not NULL) and will fall back
|
898
1054
|
** to xCurrentTime() if xCurrentTimeInt64() is unavailable.
|
1055
|
+
**
|
1056
|
+
** ^The xSetSystemCall(), xGetSystemCall(), and xNestSystemCall() interfaces
|
1057
|
+
** are not used by the SQLite core. These optional interfaces are provided
|
1058
|
+
** by some VFSes to facilitate testing of the VFS code. By overriding
|
1059
|
+
** system calls with functions under its control, a test program can
|
1060
|
+
** simulate faults and error conditions that would otherwise be difficult
|
1061
|
+
** or impossible to induce. The set of system calls that can be overridden
|
1062
|
+
** varies from one VFS to another, and from one version of the same VFS to the
|
1063
|
+
** next. Applications that use these interfaces must be prepared for any
|
1064
|
+
** or all of these interfaces to be NULL or for their behavior to change
|
1065
|
+
** from one release to the next. Applications must not attempt to access
|
1066
|
+
** any of these methods if the iVersion of the VFS is less than 3.
|
899
1067
|
*/
|
900
1068
|
typedef struct sqlite3_vfs sqlite3_vfs;
|
1069
|
+
typedef void (*sqlite3_syscall_ptr)(void);
|
901
1070
|
struct sqlite3_vfs {
|
902
|
-
int iVersion; /* Structure version number (currently
|
1071
|
+
int iVersion; /* Structure version number (currently 3) */
|
903
1072
|
int szOsFile; /* Size of subclassed sqlite3_file */
|
904
1073
|
int mxPathname; /* Maximum file pathname length */
|
905
1074
|
sqlite3_vfs *pNext; /* Next registered VFS */
|
@@ -925,6 +1094,13 @@ struct sqlite3_vfs {
|
|
925
1094
|
int (*xCurrentTimeInt64)(sqlite3_vfs*, sqlite3_int64*);
|
926
1095
|
/*
|
927
1096
|
** The methods above are in versions 1 and 2 of the sqlite_vfs object.
|
1097
|
+
** Those below are for version 3 and greater.
|
1098
|
+
*/
|
1099
|
+
int (*xSetSystemCall)(sqlite3_vfs*, const char *zName, sqlite3_syscall_ptr);
|
1100
|
+
sqlite3_syscall_ptr (*xGetSystemCall)(sqlite3_vfs*, const char *zName);
|
1101
|
+
const char *(*xNextSystemCall)(sqlite3_vfs*, const char *zName);
|
1102
|
+
/*
|
1103
|
+
** The methods above are in versions 1 through 3 of the sqlite_vfs object.
|
928
1104
|
** New fields may be appended in figure versions. The iVersion
|
929
1105
|
** value will increment whenever this happens.
|
930
1106
|
*/
|
@@ -1092,9 +1268,9 @@ SQLITE_API int sqlite3_os_end(void);
|
|
1092
1268
|
** implementation of an application-defined [sqlite3_os_init()].
|
1093
1269
|
**
|
1094
1270
|
** The first argument to sqlite3_config() is an integer
|
1095
|
-
** [
|
1271
|
+
** [configuration option] that determines
|
1096
1272
|
** what property of SQLite is to be configured. Subsequent arguments
|
1097
|
-
** vary depending on the [
|
1273
|
+
** vary depending on the [configuration option]
|
1098
1274
|
** in the first argument.
|
1099
1275
|
**
|
1100
1276
|
** ^When a configuration option is set, sqlite3_config() returns [SQLITE_OK].
|
@@ -1109,17 +1285,12 @@ SQLITE_API int sqlite3_config(int, ...);
|
|
1109
1285
|
** The sqlite3_db_config() interface is used to make configuration
|
1110
1286
|
** changes to a [database connection]. The interface is similar to
|
1111
1287
|
** [sqlite3_config()] except that the changes apply to a single
|
1112
|
-
** [database connection] (specified in the first argument).
|
1113
|
-
** sqlite3_db_config() interface should only be used immediately after
|
1114
|
-
** the database connection is created using [sqlite3_open()],
|
1115
|
-
** [sqlite3_open16()], or [sqlite3_open_v2()].
|
1288
|
+
** [database connection] (specified in the first argument).
|
1116
1289
|
**
|
1117
1290
|
** The second argument to sqlite3_db_config(D,V,...) is the
|
1118
|
-
** configuration verb - an integer code
|
1119
|
-
** aspect of the [database connection] is being configured.
|
1120
|
-
**
|
1121
|
-
** New verbs are likely to be added in future releases of SQLite.
|
1122
|
-
** Additional arguments depend on the verb.
|
1291
|
+
** [SQLITE_DBCONFIG_LOOKASIDE | configuration verb] - an integer code
|
1292
|
+
** that indicates what aspect of the [database connection] is being configured.
|
1293
|
+
** Subsequent arguments vary depending on the configuration verb.
|
1123
1294
|
**
|
1124
1295
|
** ^Calls to sqlite3_db_config() return SQLITE_OK if and only if
|
1125
1296
|
** the call is considered successful.
|
@@ -1151,16 +1322,10 @@ SQLITE_API int sqlite3_db_config(sqlite3*, int op, ...);
|
|
1151
1322
|
** order to verify that SQLite recovers gracefully from such
|
1152
1323
|
** conditions.
|
1153
1324
|
**
|
1154
|
-
** The xMalloc and xFree methods must work like the
|
1155
|
-
** malloc() and free() functions from the standard C library.
|
1156
|
-
**
|
1157
|
-
** with the exception that if the second argument to xRealloc is zero,
|
1158
|
-
** xRealloc must be a no-op - it must not perform any allocation or
|
1159
|
-
** deallocation. ^SQLite guarantees that the second argument to
|
1325
|
+
** The xMalloc, xRealloc, and xFree methods must work like the
|
1326
|
+
** malloc(), realloc() and free() functions from the standard C library.
|
1327
|
+
** ^SQLite guarantees that the second argument to
|
1160
1328
|
** xRealloc is always a value returned by a prior call to xRoundup.
|
1161
|
-
** And so in cases where xRoundup always returns a positive number,
|
1162
|
-
** xRealloc can perform exactly as the standard library realloc() and
|
1163
|
-
** still be in compliance with this specification.
|
1164
1329
|
**
|
1165
1330
|
** xSize should return the allocated size of a memory allocation
|
1166
1331
|
** previously obtained from xMalloc or xRealloc. The allocated size
|
@@ -1209,6 +1374,7 @@ struct sqlite3_mem_methods {
|
|
1209
1374
|
|
1210
1375
|
/*
|
1211
1376
|
** CAPI3REF: Configuration Options
|
1377
|
+
** KEYWORDS: {configuration option}
|
1212
1378
|
**
|
1213
1379
|
** These constants are the available integer configuration options that
|
1214
1380
|
** can be passed as the first argument to the [sqlite3_config()] interface.
|
@@ -1221,7 +1387,7 @@ struct sqlite3_mem_methods {
|
|
1221
1387
|
** is invoked.
|
1222
1388
|
**
|
1223
1389
|
** <dl>
|
1224
|
-
** <dt>SQLITE_CONFIG_SINGLETHREAD</dt>
|
1390
|
+
** [[SQLITE_CONFIG_SINGLETHREAD]] <dt>SQLITE_CONFIG_SINGLETHREAD</dt>
|
1225
1391
|
** <dd>There are no arguments to this option. ^This option sets the
|
1226
1392
|
** [threading mode] to Single-thread. In other words, it disables
|
1227
1393
|
** all mutexing and puts SQLite into a mode where it can only be used
|
@@ -1232,7 +1398,7 @@ struct sqlite3_mem_methods {
|
|
1232
1398
|
** [SQLITE_ERROR] if called with the SQLITE_CONFIG_SINGLETHREAD
|
1233
1399
|
** configuration option.</dd>
|
1234
1400
|
**
|
1235
|
-
** <dt>SQLITE_CONFIG_MULTITHREAD</dt>
|
1401
|
+
** [[SQLITE_CONFIG_MULTITHREAD]] <dt>SQLITE_CONFIG_MULTITHREAD</dt>
|
1236
1402
|
** <dd>There are no arguments to this option. ^This option sets the
|
1237
1403
|
** [threading mode] to Multi-thread. In other words, it disables
|
1238
1404
|
** mutexing on [database connection] and [prepared statement] objects.
|
@@ -1246,7 +1412,7 @@ struct sqlite3_mem_methods {
|
|
1246
1412
|
** [sqlite3_config()] will return [SQLITE_ERROR] if called with the
|
1247
1413
|
** SQLITE_CONFIG_MULTITHREAD configuration option.</dd>
|
1248
1414
|
**
|
1249
|
-
** <dt>SQLITE_CONFIG_SERIALIZED</dt>
|
1415
|
+
** [[SQLITE_CONFIG_SERIALIZED]] <dt>SQLITE_CONFIG_SERIALIZED</dt>
|
1250
1416
|
** <dd>There are no arguments to this option. ^This option sets the
|
1251
1417
|
** [threading mode] to Serialized. In other words, this option enables
|
1252
1418
|
** all mutexes including the recursive
|
@@ -1262,7 +1428,7 @@ struct sqlite3_mem_methods {
|
|
1262
1428
|
** [sqlite3_config()] will return [SQLITE_ERROR] if called with the
|
1263
1429
|
** SQLITE_CONFIG_SERIALIZED configuration option.</dd>
|
1264
1430
|
**
|
1265
|
-
** <dt>SQLITE_CONFIG_MALLOC</dt>
|
1431
|
+
** [[SQLITE_CONFIG_MALLOC]] <dt>SQLITE_CONFIG_MALLOC</dt>
|
1266
1432
|
** <dd> ^(This option takes a single argument which is a pointer to an
|
1267
1433
|
** instance of the [sqlite3_mem_methods] structure. The argument specifies
|
1268
1434
|
** alternative low-level memory allocation routines to be used in place of
|
@@ -1270,7 +1436,7 @@ struct sqlite3_mem_methods {
|
|
1270
1436
|
** its own private copy of the content of the [sqlite3_mem_methods] structure
|
1271
1437
|
** before the [sqlite3_config()] call returns.</dd>
|
1272
1438
|
**
|
1273
|
-
** <dt>SQLITE_CONFIG_GETMALLOC</dt>
|
1439
|
+
** [[SQLITE_CONFIG_GETMALLOC]] <dt>SQLITE_CONFIG_GETMALLOC</dt>
|
1274
1440
|
** <dd> ^(This option takes a single argument which is a pointer to an
|
1275
1441
|
** instance of the [sqlite3_mem_methods] structure. The [sqlite3_mem_methods]
|
1276
1442
|
** structure is filled with the currently defined memory allocation routines.)^
|
@@ -1278,7 +1444,7 @@ struct sqlite3_mem_methods {
|
|
1278
1444
|
** routines with a wrapper that simulations memory allocation failure or
|
1279
1445
|
** tracks memory usage, for example. </dd>
|
1280
1446
|
**
|
1281
|
-
** <dt>SQLITE_CONFIG_MEMSTATUS</dt>
|
1447
|
+
** [[SQLITE_CONFIG_MEMSTATUS]] <dt>SQLITE_CONFIG_MEMSTATUS</dt>
|
1282
1448
|
** <dd> ^This option takes single argument of type int, interpreted as a
|
1283
1449
|
** boolean, which enables or disables the collection of memory allocation
|
1284
1450
|
** statistics. ^(When memory allocation statistics are disabled, the
|
@@ -1294,10 +1460,10 @@ struct sqlite3_mem_methods {
|
|
1294
1460
|
** allocation statistics are disabled by default.
|
1295
1461
|
** </dd>
|
1296
1462
|
**
|
1297
|
-
** <dt>SQLITE_CONFIG_SCRATCH</dt>
|
1463
|
+
** [[SQLITE_CONFIG_SCRATCH]] <dt>SQLITE_CONFIG_SCRATCH</dt>
|
1298
1464
|
** <dd> ^This option specifies a static memory buffer that SQLite can use for
|
1299
1465
|
** scratch memory. There are three arguments: A pointer an 8-byte
|
1300
|
-
** aligned memory buffer from which the
|
1466
|
+
** aligned memory buffer from which the scratch allocations will be
|
1301
1467
|
** drawn, the size of each scratch allocation (sz),
|
1302
1468
|
** and the maximum number of scratch allocations (N). The sz
|
1303
1469
|
** argument must be a multiple of 16.
|
@@ -1310,11 +1476,11 @@ struct sqlite3_mem_methods {
|
|
1310
1476
|
** scratch memory beyond what is provided by this configuration option, then
|
1311
1477
|
** [sqlite3_malloc()] will be used to obtain the memory needed.</dd>
|
1312
1478
|
**
|
1313
|
-
** <dt>SQLITE_CONFIG_PAGECACHE</dt>
|
1479
|
+
** [[SQLITE_CONFIG_PAGECACHE]] <dt>SQLITE_CONFIG_PAGECACHE</dt>
|
1314
1480
|
** <dd> ^This option specifies a static memory buffer that SQLite can use for
|
1315
|
-
** the database page cache with the default page cache
|
1481
|
+
** the database page cache with the default page cache implementation.
|
1316
1482
|
** This configuration should not be used if an application-define page
|
1317
|
-
** cache implementation is loaded using the
|
1483
|
+
** cache implementation is loaded using the SQLITE_CONFIG_PCACHE2 option.
|
1318
1484
|
** There are three arguments to this option: A pointer to 8-byte aligned
|
1319
1485
|
** memory, the size of each page buffer (sz), and the number of pages (N).
|
1320
1486
|
** The sz argument should be the size of the largest database page
|
@@ -1331,7 +1497,7 @@ struct sqlite3_mem_methods {
|
|
1331
1497
|
** be aligned to an 8-byte boundary or subsequent behavior of SQLite
|
1332
1498
|
** will be undefined.</dd>
|
1333
1499
|
**
|
1334
|
-
** <dt>SQLITE_CONFIG_HEAP</dt>
|
1500
|
+
** [[SQLITE_CONFIG_HEAP]] <dt>SQLITE_CONFIG_HEAP</dt>
|
1335
1501
|
** <dd> ^This option specifies a static memory buffer that SQLite will use
|
1336
1502
|
** for all of its dynamic memory allocation needs beyond those provided
|
1337
1503
|
** for by [SQLITE_CONFIG_SCRATCH] and [SQLITE_CONFIG_PAGECACHE].
|
@@ -1344,9 +1510,11 @@ struct sqlite3_mem_methods {
|
|
1344
1510
|
** [SQLITE_ENABLE_MEMSYS5] are defined, then the alternative memory
|
1345
1511
|
** allocator is engaged to handle all of SQLites memory allocation needs.
|
1346
1512
|
** The first pointer (the memory pointer) must be aligned to an 8-byte
|
1347
|
-
** boundary or subsequent behavior of SQLite will be undefined
|
1513
|
+
** boundary or subsequent behavior of SQLite will be undefined.
|
1514
|
+
** The minimum allocation size is capped at 2**12. Reasonable values
|
1515
|
+
** for the minimum allocation size are 2**5 through 2**8.</dd>
|
1348
1516
|
**
|
1349
|
-
** <dt>SQLITE_CONFIG_MUTEX</dt>
|
1517
|
+
** [[SQLITE_CONFIG_MUTEX]] <dt>SQLITE_CONFIG_MUTEX</dt>
|
1350
1518
|
** <dd> ^(This option takes a single argument which is a pointer to an
|
1351
1519
|
** instance of the [sqlite3_mutex_methods] structure. The argument specifies
|
1352
1520
|
** alternative low-level mutex routines to be used in place
|
@@ -1358,7 +1526,7 @@ struct sqlite3_mem_methods {
|
|
1358
1526
|
** [sqlite3_config()] with the SQLITE_CONFIG_MUTEX configuration option will
|
1359
1527
|
** return [SQLITE_ERROR].</dd>
|
1360
1528
|
**
|
1361
|
-
** <dt>SQLITE_CONFIG_GETMUTEX</dt>
|
1529
|
+
** [[SQLITE_CONFIG_GETMUTEX]] <dt>SQLITE_CONFIG_GETMUTEX</dt>
|
1362
1530
|
** <dd> ^(This option takes a single argument which is a pointer to an
|
1363
1531
|
** instance of the [sqlite3_mutex_methods] structure. The
|
1364
1532
|
** [sqlite3_mutex_methods]
|
@@ -1371,7 +1539,7 @@ struct sqlite3_mem_methods {
|
|
1371
1539
|
** [sqlite3_config()] with the SQLITE_CONFIG_GETMUTEX configuration option will
|
1372
1540
|
** return [SQLITE_ERROR].</dd>
|
1373
1541
|
**
|
1374
|
-
** <dt>SQLITE_CONFIG_LOOKASIDE</dt>
|
1542
|
+
** [[SQLITE_CONFIG_LOOKASIDE]] <dt>SQLITE_CONFIG_LOOKASIDE</dt>
|
1375
1543
|
** <dd> ^(This option takes two arguments that determine the default
|
1376
1544
|
** memory allocation for the lookaside memory allocator on each
|
1377
1545
|
** [database connection]. The first argument is the
|
@@ -1381,18 +1549,18 @@ struct sqlite3_mem_methods {
|
|
1381
1549
|
** verb to [sqlite3_db_config()] can be used to change the lookaside
|
1382
1550
|
** configuration on individual connections.)^ </dd>
|
1383
1551
|
**
|
1384
|
-
** <dt>
|
1552
|
+
** [[SQLITE_CONFIG_PCACHE2]] <dt>SQLITE_CONFIG_PCACHE2</dt>
|
1385
1553
|
** <dd> ^(This option takes a single argument which is a pointer to
|
1386
|
-
** an [
|
1554
|
+
** an [sqlite3_pcache_methods2] object. This object specifies the interface
|
1387
1555
|
** to a custom page cache implementation.)^ ^SQLite makes a copy of the
|
1388
1556
|
** object and uses it for page cache memory allocations.</dd>
|
1389
1557
|
**
|
1390
|
-
** <dt>
|
1558
|
+
** [[SQLITE_CONFIG_GETPCACHE2]] <dt>SQLITE_CONFIG_GETPCACHE2</dt>
|
1391
1559
|
** <dd> ^(This option takes a single argument which is a pointer to an
|
1392
|
-
** [
|
1560
|
+
** [sqlite3_pcache_methods2] object. SQLite copies of the current
|
1393
1561
|
** page cache implementation into that object.)^ </dd>
|
1394
1562
|
**
|
1395
|
-
** <dt>SQLITE_CONFIG_LOG</dt>
|
1563
|
+
** [[SQLITE_CONFIG_LOG]] <dt>SQLITE_CONFIG_LOG</dt>
|
1396
1564
|
** <dd> ^The SQLITE_CONFIG_LOG option takes two arguments: a pointer to a
|
1397
1565
|
** function with a call signature of void(*)(void*,int,const char*),
|
1398
1566
|
** and a pointer to void. ^If the function pointer is not NULL, it is
|
@@ -1410,6 +1578,51 @@ struct sqlite3_mem_methods {
|
|
1410
1578
|
** In a multi-threaded application, the application-defined logger
|
1411
1579
|
** function must be threadsafe. </dd>
|
1412
1580
|
**
|
1581
|
+
** [[SQLITE_CONFIG_URI]] <dt>SQLITE_CONFIG_URI
|
1582
|
+
** <dd> This option takes a single argument of type int. If non-zero, then
|
1583
|
+
** URI handling is globally enabled. If the parameter is zero, then URI handling
|
1584
|
+
** is globally disabled. If URI handling is globally enabled, all filenames
|
1585
|
+
** passed to [sqlite3_open()], [sqlite3_open_v2()], [sqlite3_open16()] or
|
1586
|
+
** specified as part of [ATTACH] commands are interpreted as URIs, regardless
|
1587
|
+
** of whether or not the [SQLITE_OPEN_URI] flag is set when the database
|
1588
|
+
** connection is opened. If it is globally disabled, filenames are
|
1589
|
+
** only interpreted as URIs if the SQLITE_OPEN_URI flag is set when the
|
1590
|
+
** database connection is opened. By default, URI handling is globally
|
1591
|
+
** disabled. The default value may be changed by compiling with the
|
1592
|
+
** [SQLITE_USE_URI] symbol defined.
|
1593
|
+
**
|
1594
|
+
** [[SQLITE_CONFIG_COVERING_INDEX_SCAN]] <dt>SQLITE_CONFIG_COVERING_INDEX_SCAN
|
1595
|
+
** <dd> This option takes a single integer argument which is interpreted as
|
1596
|
+
** a boolean in order to enable or disable the use of covering indices for
|
1597
|
+
** full table scans in the query optimizer. The default setting is determined
|
1598
|
+
** by the [SQLITE_ALLOW_COVERING_INDEX_SCAN] compile-time option, or is "on"
|
1599
|
+
** if that compile-time option is omitted.
|
1600
|
+
** The ability to disable the use of covering indices for full table scans
|
1601
|
+
** is because some incorrectly coded legacy applications might malfunction
|
1602
|
+
** malfunction when the optimization is enabled. Providing the ability to
|
1603
|
+
** disable the optimization allows the older, buggy application code to work
|
1604
|
+
** without change even with newer versions of SQLite.
|
1605
|
+
**
|
1606
|
+
** [[SQLITE_CONFIG_PCACHE]] [[SQLITE_CONFIG_GETPCACHE]]
|
1607
|
+
** <dt>SQLITE_CONFIG_PCACHE and SQLITE_CONFIG_GETPCACHE
|
1608
|
+
** <dd> These options are obsolete and should not be used by new code.
|
1609
|
+
** They are retained for backwards compatibility but are now no-ops.
|
1610
|
+
** </dl>
|
1611
|
+
**
|
1612
|
+
** [[SQLITE_CONFIG_SQLLOG]]
|
1613
|
+
** <dt>SQLITE_CONFIG_SQLLOG
|
1614
|
+
** <dd>This option is only available if sqlite is compiled with the
|
1615
|
+
** SQLITE_ENABLE_SQLLOG pre-processor macro defined. The first argument should
|
1616
|
+
** be a pointer to a function of type void(*)(void*,sqlite3*,const char*, int).
|
1617
|
+
** The second should be of type (void*). The callback is invoked by the library
|
1618
|
+
** in three separate circumstances, identified by the value passed as the
|
1619
|
+
** fourth parameter. If the fourth parameter is 0, then the database connection
|
1620
|
+
** passed as the second argument has just been opened. The third argument
|
1621
|
+
** points to a buffer containing the name of the main database file. If the
|
1622
|
+
** fourth parameter is 1, then the SQL statement that the third parameter
|
1623
|
+
** points to has just been executed. Or, if the fourth parameter is 2, then
|
1624
|
+
** the connection being passed as the second parameter is being closed. The
|
1625
|
+
** third parameter is passed NULL In this case.
|
1413
1626
|
** </dl>
|
1414
1627
|
*/
|
1415
1628
|
#define SQLITE_CONFIG_SINGLETHREAD 1 /* nil */
|
@@ -1425,9 +1638,14 @@ struct sqlite3_mem_methods {
|
|
1425
1638
|
#define SQLITE_CONFIG_GETMUTEX 11 /* sqlite3_mutex_methods* */
|
1426
1639
|
/* previously SQLITE_CONFIG_CHUNKALLOC 12 which is now unused. */
|
1427
1640
|
#define SQLITE_CONFIG_LOOKASIDE 13 /* int int */
|
1428
|
-
#define SQLITE_CONFIG_PCACHE 14 /*
|
1429
|
-
#define SQLITE_CONFIG_GETPCACHE 15 /*
|
1641
|
+
#define SQLITE_CONFIG_PCACHE 14 /* no-op */
|
1642
|
+
#define SQLITE_CONFIG_GETPCACHE 15 /* no-op */
|
1430
1643
|
#define SQLITE_CONFIG_LOG 16 /* xFunc, void* */
|
1644
|
+
#define SQLITE_CONFIG_URI 17 /* int */
|
1645
|
+
#define SQLITE_CONFIG_PCACHE2 18 /* sqlite3_pcache_methods2* */
|
1646
|
+
#define SQLITE_CONFIG_GETPCACHE2 19 /* sqlite3_pcache_methods2* */
|
1647
|
+
#define SQLITE_CONFIG_COVERING_INDEX_SCAN 20 /* int */
|
1648
|
+
#define SQLITE_CONFIG_SQLLOG 21 /* xSqllog, void* */
|
1431
1649
|
|
1432
1650
|
/*
|
1433
1651
|
** CAPI3REF: Database Connection Configuration Options
|
@@ -1447,7 +1665,7 @@ struct sqlite3_mem_methods {
|
|
1447
1665
|
** <dd> ^This option takes three additional arguments that determine the
|
1448
1666
|
** [lookaside memory allocator] configuration for the [database connection].
|
1449
1667
|
** ^The first argument (the third parameter to [sqlite3_db_config()] is a
|
1450
|
-
** pointer to
|
1668
|
+
** pointer to a memory buffer to use for lookaside memory.
|
1451
1669
|
** ^The first argument after the SQLITE_DBCONFIG_LOOKASIDE verb
|
1452
1670
|
** may be NULL in which case SQLite will allocate the
|
1453
1671
|
** lookaside buffer itself using [sqlite3_malloc()]. ^The second argument is the
|
@@ -1465,9 +1683,31 @@ struct sqlite3_mem_methods {
|
|
1465
1683
|
** memory is in use leaves the configuration unchanged and returns
|
1466
1684
|
** [SQLITE_BUSY].)^</dd>
|
1467
1685
|
**
|
1686
|
+
** <dt>SQLITE_DBCONFIG_ENABLE_FKEY</dt>
|
1687
|
+
** <dd> ^This option is used to enable or disable the enforcement of
|
1688
|
+
** [foreign key constraints]. There should be two additional arguments.
|
1689
|
+
** The first argument is an integer which is 0 to disable FK enforcement,
|
1690
|
+
** positive to enable FK enforcement or negative to leave FK enforcement
|
1691
|
+
** unchanged. The second parameter is a pointer to an integer into which
|
1692
|
+
** is written 0 or 1 to indicate whether FK enforcement is off or on
|
1693
|
+
** following this call. The second parameter may be a NULL pointer, in
|
1694
|
+
** which case the FK enforcement setting is not reported back. </dd>
|
1695
|
+
**
|
1696
|
+
** <dt>SQLITE_DBCONFIG_ENABLE_TRIGGER</dt>
|
1697
|
+
** <dd> ^This option is used to enable or disable [CREATE TRIGGER | triggers].
|
1698
|
+
** There should be two additional arguments.
|
1699
|
+
** The first argument is an integer which is 0 to disable triggers,
|
1700
|
+
** positive to enable triggers or negative to leave the setting unchanged.
|
1701
|
+
** The second parameter is a pointer to an integer into which
|
1702
|
+
** is written 0 or 1 to indicate whether triggers are disabled or enabled
|
1703
|
+
** following this call. The second parameter may be a NULL pointer, in
|
1704
|
+
** which case the trigger setting is not reported back. </dd>
|
1705
|
+
**
|
1468
1706
|
** </dl>
|
1469
1707
|
*/
|
1470
|
-
#define SQLITE_DBCONFIG_LOOKASIDE
|
1708
|
+
#define SQLITE_DBCONFIG_LOOKASIDE 1001 /* void* int int */
|
1709
|
+
#define SQLITE_DBCONFIG_ENABLE_FKEY 1002 /* int int* */
|
1710
|
+
#define SQLITE_DBCONFIG_ENABLE_TRIGGER 1003 /* int int* */
|
1471
1711
|
|
1472
1712
|
|
1473
1713
|
/*
|
@@ -1491,13 +1731,17 @@ SQLITE_API int sqlite3_extended_result_codes(sqlite3*, int onoff);
|
|
1491
1731
|
**
|
1492
1732
|
** ^This routine returns the [rowid] of the most recent
|
1493
1733
|
** successful [INSERT] into the database from the [database connection]
|
1494
|
-
** in the first argument. ^
|
1734
|
+
** in the first argument. ^As of SQLite version 3.7.7, this routines
|
1735
|
+
** records the last insert rowid of both ordinary tables and [virtual tables].
|
1736
|
+
** ^If no successful [INSERT]s
|
1495
1737
|
** have ever occurred on that database connection, zero is returned.
|
1496
1738
|
**
|
1497
|
-
** ^(If an [INSERT] occurs within a trigger
|
1498
|
-
**
|
1499
|
-
**
|
1500
|
-
**
|
1739
|
+
** ^(If an [INSERT] occurs within a trigger or within a [virtual table]
|
1740
|
+
** method, then this routine will return the [rowid] of the inserted
|
1741
|
+
** row as long as the trigger or virtual table method is running.
|
1742
|
+
** But once the trigger or virtual table method ends, the value returned
|
1743
|
+
** by this routine reverts to what it was before the trigger or virtual
|
1744
|
+
** table method began.)^
|
1501
1745
|
**
|
1502
1746
|
** ^An [INSERT] that fails due to a constraint violation is not a
|
1503
1747
|
** successful [INSERT] and does not change the value returned by this
|
@@ -1886,7 +2130,7 @@ SQLITE_API void sqlite3_free_table(char **result);
|
|
1886
2130
|
** All of the usual printf() formatting options apply. In addition, there
|
1887
2131
|
** is are "%q", "%Q", and "%z" options.
|
1888
2132
|
**
|
1889
|
-
** ^(The %q option works like %s in that it substitutes a
|
2133
|
+
** ^(The %q option works like %s in that it substitutes a nul-terminated
|
1890
2134
|
** string from the argument list. But %q also doubles every '\'' character.
|
1891
2135
|
** %q is designed for use inside a string literal.)^ By doubling each '\''
|
1892
2136
|
** character it escapes that character and allows it to be inserted into
|
@@ -1999,12 +2243,12 @@ SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
|
|
1999
2243
|
** implementation of these routines to be omitted. That capability
|
2000
2244
|
** is no longer provided. Only built-in memory allocators can be used.
|
2001
2245
|
**
|
2002
|
-
**
|
2246
|
+
** Prior to SQLite version 3.7.10, the Windows OS interface layer called
|
2003
2247
|
** the system malloc() and free() directly when converting
|
2004
2248
|
** filenames between the UTF-8 encoding used by SQLite
|
2005
2249
|
** and whatever filename encoding is used by the particular Windows
|
2006
|
-
** installation. Memory allocation errors
|
2007
|
-
** they
|
2250
|
+
** installation. Memory allocation errors were detected, but
|
2251
|
+
** they were reported back as [SQLITE_CANTOPEN] or
|
2008
2252
|
** [SQLITE_IOERR] rather than [SQLITE_NOMEM].
|
2009
2253
|
**
|
2010
2254
|
** The pointer arguments to [sqlite3_free()] and [sqlite3_realloc()]
|
@@ -2069,7 +2313,7 @@ SQLITE_API void sqlite3_randomness(int N, void *P);
|
|
2069
2313
|
/*
|
2070
2314
|
** CAPI3REF: Compile-Time Authorization Callbacks
|
2071
2315
|
**
|
2072
|
-
** ^This routine registers
|
2316
|
+
** ^This routine registers an authorizer callback with a particular
|
2073
2317
|
** [database connection], supplied in the first argument.
|
2074
2318
|
** ^The authorizer callback is invoked as SQL statements are being compiled
|
2075
2319
|
** by [sqlite3_prepare()] or its variants [sqlite3_prepare_v2()],
|
@@ -2160,6 +2404,9 @@ SQLITE_API int sqlite3_set_authorizer(
|
|
2160
2404
|
** to signal SQLite whether or not the action is permitted. See the
|
2161
2405
|
** [sqlite3_set_authorizer | authorizer documentation] for additional
|
2162
2406
|
** information.
|
2407
|
+
**
|
2408
|
+
** Note that SQLITE_IGNORE is also used as a [SQLITE_ROLLBACK | return code]
|
2409
|
+
** from the [sqlite3_vtab_on_conflict()] interface.
|
2163
2410
|
*/
|
2164
2411
|
#define SQLITE_DENY 1 /* Abort the SQL statement with an error */
|
2165
2412
|
#define SQLITE_IGNORE 2 /* Don't allow access, but don't generate an error */
|
@@ -2282,7 +2529,7 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
|
|
2282
2529
|
/*
|
2283
2530
|
** CAPI3REF: Opening A New Database Connection
|
2284
2531
|
**
|
2285
|
-
** ^These routines open an SQLite database file
|
2532
|
+
** ^These routines open an SQLite database file as specified by the
|
2286
2533
|
** filename argument. ^The filename argument is interpreted as UTF-8 for
|
2287
2534
|
** sqlite3_open() and sqlite3_open_v2() and as UTF-16 in the native byte
|
2288
2535
|
** order for sqlite3_open16(). ^(A [database connection] handle is usually
|
@@ -2309,7 +2556,7 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
|
|
2309
2556
|
** sqlite3_open_v2() can take one of
|
2310
2557
|
** the following three values, optionally combined with the
|
2311
2558
|
** [SQLITE_OPEN_NOMUTEX], [SQLITE_OPEN_FULLMUTEX], [SQLITE_OPEN_SHAREDCACHE],
|
2312
|
-
** and/or [
|
2559
|
+
** [SQLITE_OPEN_PRIVATECACHE], and/or [SQLITE_OPEN_URI] flags:)^
|
2313
2560
|
**
|
2314
2561
|
** <dl>
|
2315
2562
|
** ^(<dt>[SQLITE_OPEN_READONLY]</dt>
|
@@ -2328,9 +2575,8 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
|
|
2328
2575
|
** </dl>
|
2329
2576
|
**
|
2330
2577
|
** If the 3rd parameter to sqlite3_open_v2() is not one of the
|
2331
|
-
** combinations shown above
|
2332
|
-
**
|
2333
|
-
** [SQLITE_OPEN_SHAREDCACHE] and/or [SQLITE_OPEN_PRIVATECACHE] flags,
|
2578
|
+
** combinations shown above optionally combined with other
|
2579
|
+
** [SQLITE_OPEN_READONLY | SQLITE_OPEN_* bits]
|
2334
2580
|
** then the behavior is undefined.
|
2335
2581
|
**
|
2336
2582
|
** ^If the [SQLITE_OPEN_NOMUTEX] flag is set, then the database connection
|
@@ -2345,6 +2591,11 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
|
|
2345
2591
|
** [SQLITE_OPEN_PRIVATECACHE] flag causes the database connection to not
|
2346
2592
|
** participate in [shared cache mode] even if it is enabled.
|
2347
2593
|
**
|
2594
|
+
** ^The fourth parameter to sqlite3_open_v2() is the name of the
|
2595
|
+
** [sqlite3_vfs] object that defines the operating system interface that
|
2596
|
+
** the new database connection should use. ^If the fourth parameter is
|
2597
|
+
** a NULL pointer then the default [sqlite3_vfs] object is used.
|
2598
|
+
**
|
2348
2599
|
** ^If the filename is ":memory:", then a private, temporary in-memory database
|
2349
2600
|
** is created for the connection. ^This in-memory database will vanish when
|
2350
2601
|
** the database connection is closed. Future versions of SQLite might
|
@@ -2357,16 +2608,125 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
|
|
2357
2608
|
** on-disk database will be created. ^This private database will be
|
2358
2609
|
** automatically deleted as soon as the database connection is closed.
|
2359
2610
|
**
|
2360
|
-
**
|
2361
|
-
**
|
2362
|
-
**
|
2363
|
-
**
|
2611
|
+
** [[URI filenames in sqlite3_open()]] <h3>URI Filenames</h3>
|
2612
|
+
**
|
2613
|
+
** ^If [URI filename] interpretation is enabled, and the filename argument
|
2614
|
+
** begins with "file:", then the filename is interpreted as a URI. ^URI
|
2615
|
+
** filename interpretation is enabled if the [SQLITE_OPEN_URI] flag is
|
2616
|
+
** set in the fourth argument to sqlite3_open_v2(), or if it has
|
2617
|
+
** been enabled globally using the [SQLITE_CONFIG_URI] option with the
|
2618
|
+
** [sqlite3_config()] method or by the [SQLITE_USE_URI] compile-time option.
|
2619
|
+
** As of SQLite version 3.7.7, URI filename interpretation is turned off
|
2620
|
+
** by default, but future releases of SQLite might enable URI filename
|
2621
|
+
** interpretation by default. See "[URI filenames]" for additional
|
2622
|
+
** information.
|
2623
|
+
**
|
2624
|
+
** URI filenames are parsed according to RFC 3986. ^If the URI contains an
|
2625
|
+
** authority, then it must be either an empty string or the string
|
2626
|
+
** "localhost". ^If the authority is not an empty string or "localhost", an
|
2627
|
+
** error is returned to the caller. ^The fragment component of a URI, if
|
2628
|
+
** present, is ignored.
|
2629
|
+
**
|
2630
|
+
** ^SQLite uses the path component of the URI as the name of the disk file
|
2631
|
+
** which contains the database. ^If the path begins with a '/' character,
|
2632
|
+
** then it is interpreted as an absolute path. ^If the path does not begin
|
2633
|
+
** with a '/' (meaning that the authority section is omitted from the URI)
|
2634
|
+
** then the path is interpreted as a relative path.
|
2635
|
+
** ^On windows, the first component of an absolute path
|
2636
|
+
** is a drive specification (e.g. "C:").
|
2637
|
+
**
|
2638
|
+
** [[core URI query parameters]]
|
2639
|
+
** The query component of a URI may contain parameters that are interpreted
|
2640
|
+
** either by SQLite itself, or by a [VFS | custom VFS implementation].
|
2641
|
+
** SQLite interprets the following three query parameters:
|
2642
|
+
**
|
2643
|
+
** <ul>
|
2644
|
+
** <li> <b>vfs</b>: ^The "vfs" parameter may be used to specify the name of
|
2645
|
+
** a VFS object that provides the operating system interface that should
|
2646
|
+
** be used to access the database file on disk. ^If this option is set to
|
2647
|
+
** an empty string the default VFS object is used. ^Specifying an unknown
|
2648
|
+
** VFS is an error. ^If sqlite3_open_v2() is used and the vfs option is
|
2649
|
+
** present, then the VFS specified by the option takes precedence over
|
2650
|
+
** the value passed as the fourth parameter to sqlite3_open_v2().
|
2651
|
+
**
|
2652
|
+
** <li> <b>mode</b>: ^(The mode parameter may be set to either "ro", "rw",
|
2653
|
+
** "rwc", or "memory". Attempting to set it to any other value is
|
2654
|
+
** an error)^.
|
2655
|
+
** ^If "ro" is specified, then the database is opened for read-only
|
2656
|
+
** access, just as if the [SQLITE_OPEN_READONLY] flag had been set in the
|
2657
|
+
** third argument to sqlite3_open_v2(). ^If the mode option is set to
|
2658
|
+
** "rw", then the database is opened for read-write (but not create)
|
2659
|
+
** access, as if SQLITE_OPEN_READWRITE (but not SQLITE_OPEN_CREATE) had
|
2660
|
+
** been set. ^Value "rwc" is equivalent to setting both
|
2661
|
+
** SQLITE_OPEN_READWRITE and SQLITE_OPEN_CREATE. ^If the mode option is
|
2662
|
+
** set to "memory" then a pure [in-memory database] that never reads
|
2663
|
+
** or writes from disk is used. ^It is an error to specify a value for
|
2664
|
+
** the mode parameter that is less restrictive than that specified by
|
2665
|
+
** the flags passed in the third parameter to sqlite3_open_v2().
|
2666
|
+
**
|
2667
|
+
** <li> <b>cache</b>: ^The cache parameter may be set to either "shared" or
|
2668
|
+
** "private". ^Setting it to "shared" is equivalent to setting the
|
2669
|
+
** SQLITE_OPEN_SHAREDCACHE bit in the flags argument passed to
|
2670
|
+
** sqlite3_open_v2(). ^Setting the cache parameter to "private" is
|
2671
|
+
** equivalent to setting the SQLITE_OPEN_PRIVATECACHE bit.
|
2672
|
+
** ^If sqlite3_open_v2() is used and the "cache" parameter is present in
|
2673
|
+
** a URI filename, its value overrides any behaviour requested by setting
|
2674
|
+
** SQLITE_OPEN_PRIVATECACHE or SQLITE_OPEN_SHAREDCACHE flag.
|
2675
|
+
** </ul>
|
2676
|
+
**
|
2677
|
+
** ^Specifying an unknown parameter in the query component of a URI is not an
|
2678
|
+
** error. Future versions of SQLite might understand additional query
|
2679
|
+
** parameters. See "[query parameters with special meaning to SQLite]" for
|
2680
|
+
** additional information.
|
2681
|
+
**
|
2682
|
+
** [[URI filename examples]] <h3>URI filename examples</h3>
|
2683
|
+
**
|
2684
|
+
** <table border="1" align=center cellpadding=5>
|
2685
|
+
** <tr><th> URI filenames <th> Results
|
2686
|
+
** <tr><td> file:data.db <td>
|
2687
|
+
** Open the file "data.db" in the current directory.
|
2688
|
+
** <tr><td> file:/home/fred/data.db<br>
|
2689
|
+
** file:///home/fred/data.db <br>
|
2690
|
+
** file://localhost/home/fred/data.db <br> <td>
|
2691
|
+
** Open the database file "/home/fred/data.db".
|
2692
|
+
** <tr><td> file://darkstar/home/fred/data.db <td>
|
2693
|
+
** An error. "darkstar" is not a recognized authority.
|
2694
|
+
** <tr><td style="white-space:nowrap">
|
2695
|
+
** file:///C:/Documents%20and%20Settings/fred/Desktop/data.db
|
2696
|
+
** <td> Windows only: Open the file "data.db" on fred's desktop on drive
|
2697
|
+
** C:. Note that the %20 escaping in this example is not strictly
|
2698
|
+
** necessary - space characters can be used literally
|
2699
|
+
** in URI filenames.
|
2700
|
+
** <tr><td> file:data.db?mode=ro&cache=private <td>
|
2701
|
+
** Open file "data.db" in the current directory for read-only access.
|
2702
|
+
** Regardless of whether or not shared-cache mode is enabled by
|
2703
|
+
** default, use a private cache.
|
2704
|
+
** <tr><td> file:/home/fred/data.db?vfs=unix-nolock <td>
|
2705
|
+
** Open file "/home/fred/data.db". Use the special VFS "unix-nolock".
|
2706
|
+
** <tr><td> file:data.db?mode=readonly <td>
|
2707
|
+
** An error. "readonly" is not a valid option for the "mode" parameter.
|
2708
|
+
** </table>
|
2709
|
+
**
|
2710
|
+
** ^URI hexadecimal escape sequences (%HH) are supported within the path and
|
2711
|
+
** query components of a URI. A hexadecimal escape sequence consists of a
|
2712
|
+
** percent sign - "%" - followed by exactly two hexadecimal digits
|
2713
|
+
** specifying an octet value. ^Before the path or query components of a
|
2714
|
+
** URI filename are interpreted, they are encoded using UTF-8 and all
|
2715
|
+
** hexadecimal escape sequences replaced by a single byte containing the
|
2716
|
+
** corresponding octet. If this process generates an invalid UTF-8 encoding,
|
2717
|
+
** the results are undefined.
|
2364
2718
|
**
|
2365
2719
|
** <b>Note to Windows users:</b> The encoding used for the filename argument
|
2366
2720
|
** of sqlite3_open() and sqlite3_open_v2() must be UTF-8, not whatever
|
2367
2721
|
** codepage is currently defined. Filenames containing international
|
2368
2722
|
** characters must be converted to UTF-8 prior to passing them into
|
2369
2723
|
** sqlite3_open() or sqlite3_open_v2().
|
2724
|
+
**
|
2725
|
+
** <b>Note to Windows Runtime users:</b> The temporary directory must be set
|
2726
|
+
** prior to calling sqlite3_open() or sqlite3_open_v2(). Otherwise, various
|
2727
|
+
** features that require the use of temporary files may fail.
|
2728
|
+
**
|
2729
|
+
** See also: [sqlite3_temp_directory]
|
2370
2730
|
*/
|
2371
2731
|
SQLITE_API int sqlite3_open(
|
2372
2732
|
const char *filename, /* Database filename (UTF-8) */
|
@@ -2383,6 +2743,50 @@ SQLITE_API int sqlite3_open_v2(
|
|
2383
2743
|
const char *zVfs /* Name of VFS module to use */
|
2384
2744
|
);
|
2385
2745
|
|
2746
|
+
/*
|
2747
|
+
** CAPI3REF: Obtain Values For URI Parameters
|
2748
|
+
**
|
2749
|
+
** These are utility routines, useful to VFS implementations, that check
|
2750
|
+
** to see if a database file was a URI that contained a specific query
|
2751
|
+
** parameter, and if so obtains the value of that query parameter.
|
2752
|
+
**
|
2753
|
+
** If F is the database filename pointer passed into the xOpen() method of
|
2754
|
+
** a VFS implementation when the flags parameter to xOpen() has one or
|
2755
|
+
** more of the [SQLITE_OPEN_URI] or [SQLITE_OPEN_MAIN_DB] bits set and
|
2756
|
+
** P is the name of the query parameter, then
|
2757
|
+
** sqlite3_uri_parameter(F,P) returns the value of the P
|
2758
|
+
** parameter if it exists or a NULL pointer if P does not appear as a
|
2759
|
+
** query parameter on F. If P is a query parameter of F
|
2760
|
+
** has no explicit value, then sqlite3_uri_parameter(F,P) returns
|
2761
|
+
** a pointer to an empty string.
|
2762
|
+
**
|
2763
|
+
** The sqlite3_uri_boolean(F,P,B) routine assumes that P is a boolean
|
2764
|
+
** parameter and returns true (1) or false (0) according to the value
|
2765
|
+
** of P. The sqlite3_uri_boolean(F,P,B) routine returns true (1) if the
|
2766
|
+
** value of query parameter P is one of "yes", "true", or "on" in any
|
2767
|
+
** case or if the value begins with a non-zero number. The
|
2768
|
+
** sqlite3_uri_boolean(F,P,B) routines returns false (0) if the value of
|
2769
|
+
** query parameter P is one of "no", "false", or "off" in any case or
|
2770
|
+
** if the value begins with a numeric zero. If P is not a query
|
2771
|
+
** parameter on F or if the value of P is does not match any of the
|
2772
|
+
** above, then sqlite3_uri_boolean(F,P,B) returns (B!=0).
|
2773
|
+
**
|
2774
|
+
** The sqlite3_uri_int64(F,P,D) routine converts the value of P into a
|
2775
|
+
** 64-bit signed integer and returns that integer, or D if P does not
|
2776
|
+
** exist. If the value of P is something other than an integer, then
|
2777
|
+
** zero is returned.
|
2778
|
+
**
|
2779
|
+
** If F is a NULL pointer, then sqlite3_uri_parameter(F,P) returns NULL and
|
2780
|
+
** sqlite3_uri_boolean(F,P,B) returns B. If F is not a NULL pointer and
|
2781
|
+
** is not a database file pathname pointer that SQLite passed into the xOpen
|
2782
|
+
** VFS method, then the behavior of this routine is undefined and probably
|
2783
|
+
** undesirable.
|
2784
|
+
*/
|
2785
|
+
SQLITE_API const char *sqlite3_uri_parameter(const char *zFilename, const char *zParam);
|
2786
|
+
SQLITE_API int sqlite3_uri_boolean(const char *zFile, const char *zParam, int bDefault);
|
2787
|
+
SQLITE_API sqlite3_int64 sqlite3_uri_int64(const char*, const char*, sqlite3_int64);
|
2788
|
+
|
2789
|
+
|
2386
2790
|
/*
|
2387
2791
|
** CAPI3REF: Error Codes And Messages
|
2388
2792
|
**
|
@@ -2402,6 +2806,11 @@ SQLITE_API int sqlite3_open_v2(
|
|
2402
2806
|
** However, the error string might be overwritten or deallocated by
|
2403
2807
|
** subsequent calls to other SQLite interface functions.)^
|
2404
2808
|
**
|
2809
|
+
** ^The sqlite3_errstr() interface returns the English-language text
|
2810
|
+
** that describes the [result code], as UTF-8.
|
2811
|
+
** ^(Memory to hold the error message string is managed internally
|
2812
|
+
** and must not be freed by the application)^.
|
2813
|
+
**
|
2405
2814
|
** When the serialized [threading mode] is in use, it might be the
|
2406
2815
|
** case that a second error occurs on a separate thread in between
|
2407
2816
|
** the time of the first error and the call to these interfaces.
|
@@ -2420,6 +2829,7 @@ SQLITE_API int sqlite3_errcode(sqlite3 *db);
|
|
2420
2829
|
SQLITE_API int sqlite3_extended_errcode(sqlite3 *db);
|
2421
2830
|
SQLITE_API const char *sqlite3_errmsg(sqlite3*);
|
2422
2831
|
SQLITE_API const void *sqlite3_errmsg16(sqlite3*);
|
2832
|
+
SQLITE_API const char *sqlite3_errstr(int);
|
2423
2833
|
|
2424
2834
|
/*
|
2425
2835
|
** CAPI3REF: SQL Statement Object
|
@@ -2498,43 +2908,45 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
|
|
2498
2908
|
** Additional information is available at [limits | Limits in SQLite].
|
2499
2909
|
**
|
2500
2910
|
** <dl>
|
2501
|
-
** ^(<dt>SQLITE_LIMIT_LENGTH</dt>
|
2911
|
+
** [[SQLITE_LIMIT_LENGTH]] ^(<dt>SQLITE_LIMIT_LENGTH</dt>
|
2502
2912
|
** <dd>The maximum size of any string or BLOB or table row, in bytes.<dd>)^
|
2503
2913
|
**
|
2504
|
-
** ^(<dt>SQLITE_LIMIT_SQL_LENGTH</dt>
|
2914
|
+
** [[SQLITE_LIMIT_SQL_LENGTH]] ^(<dt>SQLITE_LIMIT_SQL_LENGTH</dt>
|
2505
2915
|
** <dd>The maximum length of an SQL statement, in bytes.</dd>)^
|
2506
2916
|
**
|
2507
|
-
** ^(<dt>SQLITE_LIMIT_COLUMN</dt>
|
2917
|
+
** [[SQLITE_LIMIT_COLUMN]] ^(<dt>SQLITE_LIMIT_COLUMN</dt>
|
2508
2918
|
** <dd>The maximum number of columns in a table definition or in the
|
2509
2919
|
** result set of a [SELECT] or the maximum number of columns in an index
|
2510
2920
|
** or in an ORDER BY or GROUP BY clause.</dd>)^
|
2511
2921
|
**
|
2512
|
-
** ^(<dt>SQLITE_LIMIT_EXPR_DEPTH</dt>
|
2922
|
+
** [[SQLITE_LIMIT_EXPR_DEPTH]] ^(<dt>SQLITE_LIMIT_EXPR_DEPTH</dt>
|
2513
2923
|
** <dd>The maximum depth of the parse tree on any expression.</dd>)^
|
2514
2924
|
**
|
2515
|
-
** ^(<dt>SQLITE_LIMIT_COMPOUND_SELECT</dt>
|
2925
|
+
** [[SQLITE_LIMIT_COMPOUND_SELECT]] ^(<dt>SQLITE_LIMIT_COMPOUND_SELECT</dt>
|
2516
2926
|
** <dd>The maximum number of terms in a compound SELECT statement.</dd>)^
|
2517
2927
|
**
|
2518
|
-
** ^(<dt>SQLITE_LIMIT_VDBE_OP</dt>
|
2928
|
+
** [[SQLITE_LIMIT_VDBE_OP]] ^(<dt>SQLITE_LIMIT_VDBE_OP</dt>
|
2519
2929
|
** <dd>The maximum number of instructions in a virtual machine program
|
2520
2930
|
** used to implement an SQL statement. This limit is not currently
|
2521
2931
|
** enforced, though that might be added in some future release of
|
2522
2932
|
** SQLite.</dd>)^
|
2523
2933
|
**
|
2524
|
-
** ^(<dt>SQLITE_LIMIT_FUNCTION_ARG</dt>
|
2934
|
+
** [[SQLITE_LIMIT_FUNCTION_ARG]] ^(<dt>SQLITE_LIMIT_FUNCTION_ARG</dt>
|
2525
2935
|
** <dd>The maximum number of arguments on a function.</dd>)^
|
2526
2936
|
**
|
2527
|
-
** ^(<dt>SQLITE_LIMIT_ATTACHED</dt>
|
2937
|
+
** [[SQLITE_LIMIT_ATTACHED]] ^(<dt>SQLITE_LIMIT_ATTACHED</dt>
|
2528
2938
|
** <dd>The maximum number of [ATTACH | attached databases].)^</dd>
|
2529
2939
|
**
|
2940
|
+
** [[SQLITE_LIMIT_LIKE_PATTERN_LENGTH]]
|
2530
2941
|
** ^(<dt>SQLITE_LIMIT_LIKE_PATTERN_LENGTH</dt>
|
2531
2942
|
** <dd>The maximum length of the pattern argument to the [LIKE] or
|
2532
2943
|
** [GLOB] operators.</dd>)^
|
2533
2944
|
**
|
2945
|
+
** [[SQLITE_LIMIT_VARIABLE_NUMBER]]
|
2534
2946
|
** ^(<dt>SQLITE_LIMIT_VARIABLE_NUMBER</dt>
|
2535
2947
|
** <dd>The maximum index number of any [parameter] in an SQL statement.)^
|
2536
2948
|
**
|
2537
|
-
** ^(<dt>SQLITE_LIMIT_TRIGGER_DEPTH</dt>
|
2949
|
+
** [[SQLITE_LIMIT_TRIGGER_DEPTH]] ^(<dt>SQLITE_LIMIT_TRIGGER_DEPTH</dt>
|
2538
2950
|
** <dd>The maximum depth of recursion for triggers.</dd>)^
|
2539
2951
|
** </dl>
|
2540
2952
|
*/
|
@@ -2574,7 +2986,8 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
|
|
2574
2986
|
** that the supplied string is nul-terminated, then there is a small
|
2575
2987
|
** performance advantage to be gained by passing an nByte parameter that
|
2576
2988
|
** is equal to the number of bytes in the input string <i>including</i>
|
2577
|
-
** the nul-terminator bytes
|
2989
|
+
** the nul-terminator bytes as this saves SQLite from having to
|
2990
|
+
** make a copy of the input string.
|
2578
2991
|
**
|
2579
2992
|
** ^If pzTail is not NULL then *pzTail is made to point to the first byte
|
2580
2993
|
** past the end of the first SQL statement in zSql. These routines only
|
@@ -2625,7 +3038,7 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
|
|
2625
3038
|
** ^The specific value of WHERE-clause [parameter] might influence the
|
2626
3039
|
** choice of query plan if the parameter is the left-hand side of a [LIKE]
|
2627
3040
|
** or [GLOB] operator or if the parameter is compared to an indexed column
|
2628
|
-
** and the [
|
3041
|
+
** and the [SQLITE_ENABLE_STAT3] compile-time option is enabled.
|
2629
3042
|
** the
|
2630
3043
|
** </li>
|
2631
3044
|
** </ol>
|
@@ -2671,7 +3084,7 @@ SQLITE_API const char *sqlite3_sql(sqlite3_stmt *pStmt);
|
|
2671
3084
|
/*
|
2672
3085
|
** CAPI3REF: Determine If An SQL Statement Writes The Database
|
2673
3086
|
**
|
2674
|
-
** ^The sqlite3_stmt_readonly(X) interface returns true (non-zero) if
|
3087
|
+
** ^The sqlite3_stmt_readonly(X) interface returns true (non-zero) if
|
2675
3088
|
** and only if the [prepared statement] X makes no direct changes to
|
2676
3089
|
** the content of the database file.
|
2677
3090
|
**
|
@@ -2699,6 +3112,25 @@ SQLITE_API const char *sqlite3_sql(sqlite3_stmt *pStmt);
|
|
2699
3112
|
*/
|
2700
3113
|
SQLITE_API int sqlite3_stmt_readonly(sqlite3_stmt *pStmt);
|
2701
3114
|
|
3115
|
+
/*
|
3116
|
+
** CAPI3REF: Determine If A Prepared Statement Has Been Reset
|
3117
|
+
**
|
3118
|
+
** ^The sqlite3_stmt_busy(S) interface returns true (non-zero) if the
|
3119
|
+
** [prepared statement] S has been stepped at least once using
|
3120
|
+
** [sqlite3_step(S)] but has not run to completion and/or has not
|
3121
|
+
** been reset using [sqlite3_reset(S)]. ^The sqlite3_stmt_busy(S)
|
3122
|
+
** interface returns false if S is a NULL pointer. If S is not a
|
3123
|
+
** NULL pointer and is not a pointer to a valid [prepared statement]
|
3124
|
+
** object, then the behavior is undefined and probably undesirable.
|
3125
|
+
**
|
3126
|
+
** This interface can be used in combination [sqlite3_next_stmt()]
|
3127
|
+
** to locate all prepared statements associated with a database
|
3128
|
+
** connection that are in need of being reset. This can be used,
|
3129
|
+
** for example, in diagnostic routines to search for prepared
|
3130
|
+
** statements that are holding a transaction open.
|
3131
|
+
*/
|
3132
|
+
SQLITE_API int sqlite3_stmt_busy(sqlite3_stmt*);
|
3133
|
+
|
2702
3134
|
/*
|
2703
3135
|
** CAPI3REF: Dynamically Typed Value Object
|
2704
3136
|
** KEYWORDS: {protected sqlite3_value} {unprotected sqlite3_value}
|
@@ -2715,7 +3147,7 @@ SQLITE_API int sqlite3_stmt_readonly(sqlite3_stmt *pStmt);
|
|
2715
3147
|
** whether or not it requires a protected sqlite3_value.
|
2716
3148
|
**
|
2717
3149
|
** The terms "protected" and "unprotected" refer to whether or not
|
2718
|
-
** a mutex is held.
|
3150
|
+
** a mutex is held. An internal mutex is held for a protected
|
2719
3151
|
** sqlite3_value object but no mutex is held for an unprotected
|
2720
3152
|
** sqlite3_value object. If SQLite is compiled to be single-threaded
|
2721
3153
|
** (with [SQLITE_THREADSAFE=0] and with [sqlite3_threadsafe()] returning 0)
|
@@ -2793,8 +3225,18 @@ typedef struct sqlite3_context sqlite3_context;
|
|
2793
3225
|
** ^(In those routines that have a fourth argument, its value is the
|
2794
3226
|
** number of bytes in the parameter. To be clear: the value is the
|
2795
3227
|
** number of <u>bytes</u> in the value, not the number of characters.)^
|
2796
|
-
** ^If the fourth parameter
|
3228
|
+
** ^If the fourth parameter to sqlite3_bind_text() or sqlite3_bind_text16()
|
3229
|
+
** is negative, then the length of the string is
|
2797
3230
|
** the number of bytes up to the first zero terminator.
|
3231
|
+
** If the fourth parameter to sqlite3_bind_blob() is negative, then
|
3232
|
+
** the behavior is undefined.
|
3233
|
+
** If a non-negative fourth parameter is provided to sqlite3_bind_text()
|
3234
|
+
** or sqlite3_bind_text16() then that parameter must be the byte offset
|
3235
|
+
** where the NUL terminator would occur assuming the string were NUL
|
3236
|
+
** terminated. If any NUL characters occur at byte offsets less than
|
3237
|
+
** the value of the fourth parameter then the resulting string value will
|
3238
|
+
** contain embedded NULs. The result of expressions involving strings
|
3239
|
+
** with embedded NULs is undefined.
|
2798
3240
|
**
|
2799
3241
|
** ^The fifth argument to sqlite3_bind_blob(), sqlite3_bind_text(), and
|
2800
3242
|
** sqlite3_bind_text16() is a destructor used to dispose of the BLOB or
|
@@ -2939,7 +3381,9 @@ SQLITE_API int sqlite3_column_count(sqlite3_stmt *pStmt);
|
|
2939
3381
|
** column number. ^The leftmost column is number 0.
|
2940
3382
|
**
|
2941
3383
|
** ^The returned string pointer is valid until either the [prepared statement]
|
2942
|
-
** is destroyed by [sqlite3_finalize()] or until the
|
3384
|
+
** is destroyed by [sqlite3_finalize()] or until the statement is automatically
|
3385
|
+
** reprepared by the first call to [sqlite3_step()] for a particular run
|
3386
|
+
** or until the next call to
|
2943
3387
|
** sqlite3_column_name() or sqlite3_column_name16() on the same column.
|
2944
3388
|
**
|
2945
3389
|
** ^If sqlite3_malloc() fails during the processing of either routine
|
@@ -2965,7 +3409,9 @@ SQLITE_API const void *sqlite3_column_name16(sqlite3_stmt*, int N);
|
|
2965
3409
|
** the database name, the _table_ routines return the table name, and
|
2966
3410
|
** the origin_ routines return the column name.
|
2967
3411
|
** ^The returned string is valid until the [prepared statement] is destroyed
|
2968
|
-
** using [sqlite3_finalize()] or until the
|
3412
|
+
** using [sqlite3_finalize()] or until the statement is automatically
|
3413
|
+
** reprepared by the first call to [sqlite3_step()] for a particular run
|
3414
|
+
** or until the same information is requested
|
2969
3415
|
** again in a different encoding.
|
2970
3416
|
**
|
2971
3417
|
** ^The names returned are the original un-aliased names of the
|
@@ -3059,7 +3505,7 @@ SQLITE_API const void *sqlite3_column_decltype16(sqlite3_stmt*,int);
|
|
3059
3505
|
** ^[SQLITE_BUSY] means that the database engine was unable to acquire the
|
3060
3506
|
** database locks it needs to do its job. ^If the statement is a [COMMIT]
|
3061
3507
|
** or occurs outside of an explicit transaction, then you can retry the
|
3062
|
-
** statement. If the statement is not a [COMMIT] and occurs within
|
3508
|
+
** statement. If the statement is not a [COMMIT] and occurs within an
|
3063
3509
|
** explicit transaction then you should rollback the transaction before
|
3064
3510
|
** continuing.
|
3065
3511
|
**
|
@@ -3124,6 +3570,12 @@ SQLITE_API int sqlite3_step(sqlite3_stmt*);
|
|
3124
3570
|
** (via calls to the [sqlite3_column_int | sqlite3_column_*()] of
|
3125
3571
|
** interfaces) then sqlite3_data_count(P) returns 0.
|
3126
3572
|
** ^The sqlite3_data_count(P) routine also returns 0 if P is a NULL pointer.
|
3573
|
+
** ^The sqlite3_data_count(P) routine returns 0 if the previous call to
|
3574
|
+
** [sqlite3_step](P) returned [SQLITE_DONE]. ^The sqlite3_data_count(P)
|
3575
|
+
** will return non-zero if previous call to [sqlite3_step](P) returned
|
3576
|
+
** [SQLITE_ROW], except in the case of the [PRAGMA incremental_vacuum]
|
3577
|
+
** where it always returns zero since each step of that multi-step
|
3578
|
+
** pragma returns 0 columns of data.
|
3127
3579
|
**
|
3128
3580
|
** See also: [sqlite3_column_count()]
|
3129
3581
|
*/
|
@@ -3223,7 +3675,7 @@ SQLITE_API int sqlite3_data_count(sqlite3_stmt *pStmt);
|
|
3223
3675
|
** bytes in the string, not the number of characters.
|
3224
3676
|
**
|
3225
3677
|
** ^Strings returned by sqlite3_column_text() and sqlite3_column_text16(),
|
3226
|
-
** even empty strings, are always zero
|
3678
|
+
** even empty strings, are always zero-terminated. ^The return
|
3227
3679
|
** value from sqlite3_column_blob() for a zero-length BLOB is a NULL pointer.
|
3228
3680
|
**
|
3229
3681
|
** ^The object returned by [sqlite3_column_value()] is an
|
@@ -3338,7 +3790,7 @@ SQLITE_API sqlite3_value *sqlite3_column_value(sqlite3_stmt*, int iCol);
|
|
3338
3790
|
** CAPI3REF: Destroy A Prepared Statement Object
|
3339
3791
|
**
|
3340
3792
|
** ^The sqlite3_finalize() function is called to delete a [prepared statement].
|
3341
|
-
** ^If the most recent evaluation of the statement encountered no errors
|
3793
|
+
** ^If the most recent evaluation of the statement encountered no errors
|
3342
3794
|
** or if the statement is never been evaluated, then sqlite3_finalize() returns
|
3343
3795
|
** SQLITE_OK. ^If the most recent evaluation of statement S failed, then
|
3344
3796
|
** sqlite3_finalize(S) returns the appropriate [error code] or
|
@@ -3397,7 +3849,7 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt);
|
|
3397
3849
|
** are used to add SQL functions or aggregates or to redefine the behavior
|
3398
3850
|
** of existing SQL functions or aggregates. The only differences between
|
3399
3851
|
** these routines are the text encoding expected for
|
3400
|
-
** the
|
3852
|
+
** the second parameter (the name of the function being created)
|
3401
3853
|
** and the presence or absence of a destructor callback for
|
3402
3854
|
** the application data pointer.
|
3403
3855
|
**
|
@@ -3442,7 +3894,7 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt);
|
|
3442
3894
|
** callback only; NULL pointers must be passed as the xStep and xFinal
|
3443
3895
|
** parameters. ^An aggregate SQL function requires an implementation of xStep
|
3444
3896
|
** and xFinal and NULL pointer must be passed for xFunc. ^To delete an existing
|
3445
|
-
** SQL function or aggregate, pass NULL
|
3897
|
+
** SQL function or aggregate, pass NULL pointers for all three function
|
3446
3898
|
** callbacks.
|
3447
3899
|
**
|
3448
3900
|
** ^(If the ninth parameter to sqlite3_create_function_v2() is not NULL,
|
@@ -3774,11 +4226,11 @@ typedef void (*sqlite3_destructor_type)(void*);
|
|
3774
4226
|
** the error code is SQLITE_ERROR. ^A subsequent call to sqlite3_result_error()
|
3775
4227
|
** or sqlite3_result_error16() resets the error code to SQLITE_ERROR.
|
3776
4228
|
**
|
3777
|
-
** ^The
|
3778
|
-
** indicating that a string or BLOB is too long to represent.
|
4229
|
+
** ^The sqlite3_result_error_toobig() interface causes SQLite to throw an
|
4230
|
+
** error indicating that a string or BLOB is too long to represent.
|
3779
4231
|
**
|
3780
|
-
** ^The
|
3781
|
-
** indicating that a memory allocation failed.
|
4232
|
+
** ^The sqlite3_result_error_nomem() interface causes SQLite to throw an
|
4233
|
+
** error indicating that a memory allocation failed.
|
3782
4234
|
**
|
3783
4235
|
** ^The sqlite3_result_int() interface sets the return value
|
3784
4236
|
** of the application-defined function to be the 32-bit signed integer
|
@@ -3803,7 +4255,12 @@ typedef void (*sqlite3_destructor_type)(void*);
|
|
3803
4255
|
** ^If the 3rd parameter to the sqlite3_result_text* interfaces
|
3804
4256
|
** is non-negative, then as many bytes (not characters) of the text
|
3805
4257
|
** pointed to by the 2nd parameter are taken as the application-defined
|
3806
|
-
** function result.
|
4258
|
+
** function result. If the 3rd parameter is non-negative, then it
|
4259
|
+
** must be the byte offset into the string where the NUL terminator would
|
4260
|
+
** appear if the string where NUL terminated. If any NUL characters occur
|
4261
|
+
** in the string at a byte offset that is less than the value of the 3rd
|
4262
|
+
** parameter, then the resulting string will contain embedded NULs and the
|
4263
|
+
** result of expressions operating on strings with embedded NULs is undefined.
|
3807
4264
|
** ^If the 4th parameter to the sqlite3_result_text* interfaces
|
3808
4265
|
** or sqlite3_result_blob is a non-NULL pointer, then SQLite calls that
|
3809
4266
|
** function as the destructor on the text or BLOB result when it has
|
@@ -3876,7 +4333,7 @@ SQLITE_API void sqlite3_result_zeroblob(sqlite3_context*, int n);
|
|
3876
4333
|
** ^The [SQLITE_UTF16_ALIGNED] value for eTextRep forces strings to begin
|
3877
4334
|
** on an even byte address.
|
3878
4335
|
**
|
3879
|
-
** ^The fourth argument, pArg, is
|
4336
|
+
** ^The fourth argument, pArg, is an application data pointer that is passed
|
3880
4337
|
** through as the first argument to the collating function callback.
|
3881
4338
|
**
|
3882
4339
|
** ^The fifth argument, xCallback, is a pointer to the collating function.
|
@@ -3892,7 +4349,7 @@ SQLITE_API void sqlite3_result_zeroblob(sqlite3_context*, int n);
|
|
3892
4349
|
** by the eTextRep argument. The collating function must return an
|
3893
4350
|
** integer that is negative, zero, or positive
|
3894
4351
|
** if the first string is less than, equal to, or greater than the second,
|
3895
|
-
** respectively. A collating function must
|
4352
|
+
** respectively. A collating function must always return the same answer
|
3896
4353
|
** given the same inputs. If two or more collating functions are registered
|
3897
4354
|
** to the same collation name (using different eTextRep values) then all
|
3898
4355
|
** must give an equivalent answer when invoked with equivalent strings.
|
@@ -4080,9 +4537,61 @@ SQLITE_API int sqlite3_sleep(int);
|
|
4080
4537
|
** Hence, if this variable is modified directly, either it should be
|
4081
4538
|
** made NULL or made to point to memory obtained from [sqlite3_malloc]
|
4082
4539
|
** or else the use of the [temp_store_directory pragma] should be avoided.
|
4540
|
+
**
|
4541
|
+
** <b>Note to Windows Runtime users:</b> The temporary directory must be set
|
4542
|
+
** prior to calling [sqlite3_open] or [sqlite3_open_v2]. Otherwise, various
|
4543
|
+
** features that require the use of temporary files may fail. Here is an
|
4544
|
+
** example of how to do this using C++ with the Windows Runtime:
|
4545
|
+
**
|
4546
|
+
** <blockquote><pre>
|
4547
|
+
** LPCWSTR zPath = Windows::Storage::ApplicationData::Current->
|
4548
|
+
** TemporaryFolder->Path->Data();
|
4549
|
+
** char zPathBuf[MAX_PATH + 1];
|
4550
|
+
** memset(zPathBuf, 0, sizeof(zPathBuf));
|
4551
|
+
** WideCharToMultiByte(CP_UTF8, 0, zPath, -1, zPathBuf, sizeof(zPathBuf),
|
4552
|
+
** NULL, NULL);
|
4553
|
+
** sqlite3_temp_directory = sqlite3_mprintf("%s", zPathBuf);
|
4554
|
+
** </pre></blockquote>
|
4083
4555
|
*/
|
4084
4556
|
SQLITE_API SQLITE_EXTERN char *sqlite3_temp_directory;
|
4085
4557
|
|
4558
|
+
/*
|
4559
|
+
** CAPI3REF: Name Of The Folder Holding Database Files
|
4560
|
+
**
|
4561
|
+
** ^(If this global variable is made to point to a string which is
|
4562
|
+
** the name of a folder (a.k.a. directory), then all database files
|
4563
|
+
** specified with a relative pathname and created or accessed by
|
4564
|
+
** SQLite when using a built-in windows [sqlite3_vfs | VFS] will be assumed
|
4565
|
+
** to be relative to that directory.)^ ^If this variable is a NULL
|
4566
|
+
** pointer, then SQLite assumes that all database files specified
|
4567
|
+
** with a relative pathname are relative to the current directory
|
4568
|
+
** for the process. Only the windows VFS makes use of this global
|
4569
|
+
** variable; it is ignored by the unix VFS.
|
4570
|
+
**
|
4571
|
+
** Changing the value of this variable while a database connection is
|
4572
|
+
** open can result in a corrupt database.
|
4573
|
+
**
|
4574
|
+
** It is not safe to read or modify this variable in more than one
|
4575
|
+
** thread at a time. It is not safe to read or modify this variable
|
4576
|
+
** if a [database connection] is being used at the same time in a separate
|
4577
|
+
** thread.
|
4578
|
+
** It is intended that this variable be set once
|
4579
|
+
** as part of process initialization and before any SQLite interface
|
4580
|
+
** routines have been called and that this variable remain unchanged
|
4581
|
+
** thereafter.
|
4582
|
+
**
|
4583
|
+
** ^The [data_store_directory pragma] may modify this variable and cause
|
4584
|
+
** it to point to memory obtained from [sqlite3_malloc]. ^Furthermore,
|
4585
|
+
** the [data_store_directory pragma] always assumes that any string
|
4586
|
+
** that this variable points to is held in memory obtained from
|
4587
|
+
** [sqlite3_malloc] and the pragma may attempt to free that memory
|
4588
|
+
** using [sqlite3_free].
|
4589
|
+
** Hence, if this variable is modified directly, either it should be
|
4590
|
+
** made NULL or made to point to memory obtained from [sqlite3_malloc]
|
4591
|
+
** or else the use of the [data_store_directory pragma] should be avoided.
|
4592
|
+
*/
|
4593
|
+
SQLITE_API SQLITE_EXTERN char *sqlite3_data_directory;
|
4594
|
+
|
4086
4595
|
/*
|
4087
4596
|
** CAPI3REF: Test For Auto-Commit Mode
|
4088
4597
|
** KEYWORDS: {autocommit mode}
|
@@ -4118,6 +4627,31 @@ SQLITE_API int sqlite3_get_autocommit(sqlite3*);
|
|
4118
4627
|
*/
|
4119
4628
|
SQLITE_API sqlite3 *sqlite3_db_handle(sqlite3_stmt*);
|
4120
4629
|
|
4630
|
+
/*
|
4631
|
+
** CAPI3REF: Return The Filename For A Database Connection
|
4632
|
+
**
|
4633
|
+
** ^The sqlite3_db_filename(D,N) interface returns a pointer to a filename
|
4634
|
+
** associated with database N of connection D. ^The main database file
|
4635
|
+
** has the name "main". If there is no attached database N on the database
|
4636
|
+
** connection D, or if database N is a temporary or in-memory database, then
|
4637
|
+
** a NULL pointer is returned.
|
4638
|
+
**
|
4639
|
+
** ^The filename returned by this function is the output of the
|
4640
|
+
** xFullPathname method of the [VFS]. ^In other words, the filename
|
4641
|
+
** will be an absolute pathname, even if the filename used
|
4642
|
+
** to open the database originally was a URI or relative pathname.
|
4643
|
+
*/
|
4644
|
+
SQLITE_API const char *sqlite3_db_filename(sqlite3 *db, const char *zDbName);
|
4645
|
+
|
4646
|
+
/*
|
4647
|
+
** CAPI3REF: Determine if a database is read-only
|
4648
|
+
**
|
4649
|
+
** ^The sqlite3_db_readonly(D,N) interface returns 1 if the database N
|
4650
|
+
** of connection D is read-only, 0 if it is read/write, or -1 if N is not
|
4651
|
+
** the name of a database on connection D.
|
4652
|
+
*/
|
4653
|
+
SQLITE_API int sqlite3_db_readonly(sqlite3 *db, const char *zDbName);
|
4654
|
+
|
4121
4655
|
/*
|
4122
4656
|
** CAPI3REF: Find the next prepared statement
|
4123
4657
|
**
|
@@ -4153,13 +4687,15 @@ SQLITE_API sqlite3_stmt *sqlite3_next_stmt(sqlite3 *pDb, sqlite3_stmt *pStmt);
|
|
4153
4687
|
** on the same [database connection] D, or NULL for
|
4154
4688
|
** the first call for each function on D.
|
4155
4689
|
**
|
4690
|
+
** The commit and rollback hook callbacks are not reentrant.
|
4156
4691
|
** The callback implementation must not do anything that will modify
|
4157
4692
|
** the database connection that invoked the callback. Any actions
|
4158
4693
|
** to modify the database connection must be deferred until after the
|
4159
4694
|
** completion of the [sqlite3_step()] call that triggered the commit
|
4160
4695
|
** or rollback hook in the first place.
|
4161
|
-
** Note that
|
4162
|
-
**
|
4696
|
+
** Note that running any other SQL statements, including SELECT statements,
|
4697
|
+
** or merely calling [sqlite3_prepare_v2()] and [sqlite3_step()] will modify
|
4698
|
+
** the database connections for the meaning of "modify" in this paragraph.
|
4163
4699
|
**
|
4164
4700
|
** ^Registering a NULL function disables the callback.
|
4165
4701
|
**
|
@@ -4234,7 +4770,6 @@ SQLITE_API void *sqlite3_update_hook(
|
|
4234
4770
|
|
4235
4771
|
/*
|
4236
4772
|
** CAPI3REF: Enable Or Disable Shared Pager Cache
|
4237
|
-
** KEYWORDS: {shared cache}
|
4238
4773
|
**
|
4239
4774
|
** ^(This routine enables or disables the sharing of the database cache
|
4240
4775
|
** and schema data structures between [database connection | connections]
|
@@ -4257,6 +4792,9 @@ SQLITE_API void *sqlite3_update_hook(
|
|
4257
4792
|
** future releases of SQLite. Applications that care about shared
|
4258
4793
|
** cache setting should set it explicitly.
|
4259
4794
|
**
|
4795
|
+
** This interface is threadsafe on processors where writing a
|
4796
|
+
** 32-bit integer is atomic.
|
4797
|
+
**
|
4260
4798
|
** See Also: [SQLite Shared-Cache Mode]
|
4261
4799
|
*/
|
4262
4800
|
SQLITE_API int sqlite3_enable_shared_cache(int);
|
@@ -4272,9 +4810,24 @@ SQLITE_API int sqlite3_enable_shared_cache(int);
|
|
4272
4810
|
** which might be more or less than the amount requested.
|
4273
4811
|
** ^The sqlite3_release_memory() routine is a no-op returning zero
|
4274
4812
|
** if SQLite is not compiled with [SQLITE_ENABLE_MEMORY_MANAGEMENT].
|
4813
|
+
**
|
4814
|
+
** See also: [sqlite3_db_release_memory()]
|
4275
4815
|
*/
|
4276
4816
|
SQLITE_API int sqlite3_release_memory(int);
|
4277
4817
|
|
4818
|
+
/*
|
4819
|
+
** CAPI3REF: Free Memory Used By A Database Connection
|
4820
|
+
**
|
4821
|
+
** ^The sqlite3_db_release_memory(D) interface attempts to free as much heap
|
4822
|
+
** memory as possible from database connection D. Unlike the
|
4823
|
+
** [sqlite3_release_memory()] interface, this interface is effect even
|
4824
|
+
** when then [SQLITE_ENABLE_MEMORY_MANAGEMENT] compile-time option is
|
4825
|
+
** omitted.
|
4826
|
+
**
|
4827
|
+
** See also: [sqlite3_release_memory()]
|
4828
|
+
*/
|
4829
|
+
SQLITE_API int sqlite3_db_release_memory(sqlite3*);
|
4830
|
+
|
4278
4831
|
/*
|
4279
4832
|
** CAPI3REF: Impose A Limit On Heap Size
|
4280
4833
|
**
|
@@ -4289,7 +4842,8 @@ SQLITE_API int sqlite3_release_memory(int);
|
|
4289
4842
|
** is advisory only.
|
4290
4843
|
**
|
4291
4844
|
** ^The return value from sqlite3_soft_heap_limit64() is the size of
|
4292
|
-
** the soft heap limit prior to the call
|
4845
|
+
** the soft heap limit prior to the call, or negative in the case of an
|
4846
|
+
** error. ^If the argument N is negative
|
4293
4847
|
** then no change is made to the soft heap limit. Hence, the current
|
4294
4848
|
** size of the soft heap limit can be determined by invoking
|
4295
4849
|
** sqlite3_soft_heap_limit64() with a negative argument.
|
@@ -4304,8 +4858,8 @@ SQLITE_API int sqlite3_release_memory(int);
|
|
4304
4858
|
** <li> Memory accounting is disabled using a combination of the
|
4305
4859
|
** [sqlite3_config]([SQLITE_CONFIG_MEMSTATUS],...) start-time option and
|
4306
4860
|
** the [SQLITE_DEFAULT_MEMSTATUS] compile-time option.
|
4307
|
-
** <li> An alternative page cache implementation is
|
4308
|
-
** [sqlite3_config]([
|
4861
|
+
** <li> An alternative page cache implementation is specified using
|
4862
|
+
** [sqlite3_config]([SQLITE_CONFIG_PCACHE2],...).
|
4309
4863
|
** <li> The page cache allocates from its own memory pool supplied
|
4310
4864
|
** by [sqlite3_config]([SQLITE_CONFIG_PAGECACHE],...) rather than
|
4311
4865
|
** from the heap.
|
@@ -4525,7 +5079,7 @@ typedef struct sqlite3_module sqlite3_module;
|
|
4525
5079
|
** CAPI3REF: Virtual Table Object
|
4526
5080
|
** KEYWORDS: sqlite3_module {virtual table module}
|
4527
5081
|
**
|
4528
|
-
** This structure, sometimes called a
|
5082
|
+
** This structure, sometimes called a "virtual table module",
|
4529
5083
|
** defines the implementation of a [virtual tables].
|
4530
5084
|
** This structure consists mostly of methods for the module.
|
4531
5085
|
**
|
@@ -4565,6 +5119,11 @@ struct sqlite3_module {
|
|
4565
5119
|
void (**pxFunc)(sqlite3_context*,int,sqlite3_value**),
|
4566
5120
|
void **ppArg);
|
4567
5121
|
int (*xRename)(sqlite3_vtab *pVtab, const char *zNew);
|
5122
|
+
/* The methods above are in version 1 of the sqlite_module object. Those
|
5123
|
+
** below are for version 2 and greater. */
|
5124
|
+
int (*xSavepoint)(sqlite3_vtab *pVTab, int);
|
5125
|
+
int (*xRelease)(sqlite3_vtab *pVTab, int);
|
5126
|
+
int (*xRollbackTo)(sqlite3_vtab *pVTab, int);
|
4568
5127
|
};
|
4569
5128
|
|
4570
5129
|
/*
|
@@ -4837,7 +5396,7 @@ typedef struct sqlite3_blob sqlite3_blob;
|
|
4837
5396
|
** This is true if any column of the row is changed, even a column
|
4838
5397
|
** other than the one the BLOB handle is open on.)^
|
4839
5398
|
** ^Calls to [sqlite3_blob_read()] and [sqlite3_blob_write()] for
|
4840
|
-
**
|
5399
|
+
** an expired BLOB handle fail with a return code of [SQLITE_ABORT].
|
4841
5400
|
** ^(Changes written into a BLOB prior to the BLOB expiring are not
|
4842
5401
|
** rolled back by the expiration of the BLOB. Such changes will eventually
|
4843
5402
|
** commit if the transaction continues to completion.)^
|
@@ -5041,17 +5600,16 @@ SQLITE_API int sqlite3_vfs_unregister(sqlite3_vfs*);
|
|
5041
5600
|
** implementations are available in the SQLite core:
|
5042
5601
|
**
|
5043
5602
|
** <ul>
|
5044
|
-
** <li>
|
5045
|
-
** <li> SQLITE_MUTEX_PTHREAD
|
5603
|
+
** <li> SQLITE_MUTEX_PTHREADS
|
5046
5604
|
** <li> SQLITE_MUTEX_W32
|
5047
5605
|
** <li> SQLITE_MUTEX_NOOP
|
5048
5606
|
** </ul>)^
|
5049
5607
|
**
|
5050
5608
|
** ^The SQLITE_MUTEX_NOOP implementation is a set of routines
|
5051
5609
|
** that does no real locking and is appropriate for use in
|
5052
|
-
** a single-threaded application. ^The
|
5053
|
-
**
|
5054
|
-
**
|
5610
|
+
** a single-threaded application. ^The SQLITE_MUTEX_PTHREADS and
|
5611
|
+
** SQLITE_MUTEX_W32 implementations are appropriate for use on Unix
|
5612
|
+
** and Windows.
|
5055
5613
|
**
|
5056
5614
|
** ^(If SQLite is compiled with the SQLITE_MUTEX_APPDEF preprocessor
|
5057
5615
|
** macro defined (with "-DSQLITE_MUTEX_APPDEF=1"), then no mutex
|
@@ -5240,14 +5798,14 @@ struct sqlite3_mutex_methods {
|
|
5240
5798
|
** ^These routines should return true if the mutex in their argument
|
5241
5799
|
** is held or not held, respectively, by the calling thread.
|
5242
5800
|
**
|
5243
|
-
** ^The implementation is not required to
|
5801
|
+
** ^The implementation is not required to provide versions of these
|
5244
5802
|
** routines that actually work. If the implementation does not provide working
|
5245
5803
|
** versions of these routines, it should at least provide stubs that always
|
5246
5804
|
** return true so that one does not get spurious assertion failures.
|
5247
5805
|
**
|
5248
5806
|
** ^If the argument to sqlite3_mutex_held() is a NULL pointer then
|
5249
5807
|
** the routine should return 1. This seems counter-intuitive since
|
5250
|
-
** clearly the mutex cannot be held if it does not exist. But
|
5808
|
+
** clearly the mutex cannot be held if it does not exist. But
|
5251
5809
|
** the reason the mutex does not exist is because the build is not
|
5252
5810
|
** using mutexes. And we do not want the assert() containing the
|
5253
5811
|
** call to sqlite3_mutex_held() to fail, so a non-zero return is
|
@@ -5368,9 +5926,10 @@ SQLITE_API int sqlite3_test_control(int op, ...);
|
|
5368
5926
|
#define SQLITE_TESTCTRL_RESERVE 14
|
5369
5927
|
#define SQLITE_TESTCTRL_OPTIMIZATIONS 15
|
5370
5928
|
#define SQLITE_TESTCTRL_ISKEYWORD 16
|
5371
|
-
#define
|
5372
|
-
#define
|
5373
|
-
#define
|
5929
|
+
#define SQLITE_TESTCTRL_SCRATCHMALLOC 17
|
5930
|
+
#define SQLITE_TESTCTRL_LOCALTIME_FAULT 18
|
5931
|
+
#define SQLITE_TESTCTRL_EXPLAIN_STMT 19
|
5932
|
+
#define SQLITE_TESTCTRL_LAST 19
|
5374
5933
|
|
5375
5934
|
/*
|
5376
5935
|
** CAPI3REF: SQLite Runtime Status
|
@@ -5379,7 +5938,7 @@ SQLITE_API int sqlite3_test_control(int op, ...);
|
|
5379
5938
|
** about the performance of SQLite, and optionally to reset various
|
5380
5939
|
** highwater marks. ^The first argument is an integer code for
|
5381
5940
|
** the specific parameter to measure. ^(Recognized integer codes
|
5382
|
-
** are of the form [
|
5941
|
+
** are of the form [status parameters | SQLITE_STATUS_...].)^
|
5383
5942
|
** ^The current value of the parameter is returned into *pCurrent.
|
5384
5943
|
** ^The highest recorded value is returned in *pHighwater. ^If the
|
5385
5944
|
** resetFlag is true, then the highest record value is reset after
|
@@ -5406,12 +5965,13 @@ SQLITE_API int sqlite3_status(int op, int *pCurrent, int *pHighwater, int resetF
|
|
5406
5965
|
|
5407
5966
|
/*
|
5408
5967
|
** CAPI3REF: Status Parameters
|
5968
|
+
** KEYWORDS: {status parameters}
|
5409
5969
|
**
|
5410
5970
|
** These integer constants designate various run-time status parameters
|
5411
5971
|
** that can be returned by [sqlite3_status()].
|
5412
5972
|
**
|
5413
5973
|
** <dl>
|
5414
|
-
** ^(<dt>SQLITE_STATUS_MEMORY_USED</dt>
|
5974
|
+
** [[SQLITE_STATUS_MEMORY_USED]] ^(<dt>SQLITE_STATUS_MEMORY_USED</dt>
|
5415
5975
|
** <dd>This parameter is the current amount of memory checked out
|
5416
5976
|
** using [sqlite3_malloc()], either directly or indirectly. The
|
5417
5977
|
** figure includes calls made to [sqlite3_malloc()] by the application
|
@@ -5421,23 +5981,24 @@ SQLITE_API int sqlite3_status(int op, int *pCurrent, int *pHighwater, int resetF
|
|
5421
5981
|
** this parameter. The amount returned is the sum of the allocation
|
5422
5982
|
** sizes as reported by the xSize method in [sqlite3_mem_methods].</dd>)^
|
5423
5983
|
**
|
5424
|
-
** ^(<dt>SQLITE_STATUS_MALLOC_SIZE</dt>
|
5984
|
+
** [[SQLITE_STATUS_MALLOC_SIZE]] ^(<dt>SQLITE_STATUS_MALLOC_SIZE</dt>
|
5425
5985
|
** <dd>This parameter records the largest memory allocation request
|
5426
5986
|
** handed to [sqlite3_malloc()] or [sqlite3_realloc()] (or their
|
5427
5987
|
** internal equivalents). Only the value returned in the
|
5428
5988
|
** *pHighwater parameter to [sqlite3_status()] is of interest.
|
5429
5989
|
** The value written into the *pCurrent parameter is undefined.</dd>)^
|
5430
5990
|
**
|
5431
|
-
** ^(<dt>SQLITE_STATUS_MALLOC_COUNT</dt>
|
5991
|
+
** [[SQLITE_STATUS_MALLOC_COUNT]] ^(<dt>SQLITE_STATUS_MALLOC_COUNT</dt>
|
5432
5992
|
** <dd>This parameter records the number of separate memory allocations
|
5433
5993
|
** currently checked out.</dd>)^
|
5434
5994
|
**
|
5435
|
-
** ^(<dt>SQLITE_STATUS_PAGECACHE_USED</dt>
|
5995
|
+
** [[SQLITE_STATUS_PAGECACHE_USED]] ^(<dt>SQLITE_STATUS_PAGECACHE_USED</dt>
|
5436
5996
|
** <dd>This parameter returns the number of pages used out of the
|
5437
5997
|
** [pagecache memory allocator] that was configured using
|
5438
5998
|
** [SQLITE_CONFIG_PAGECACHE]. The
|
5439
5999
|
** value returned is in pages, not in bytes.</dd>)^
|
5440
6000
|
**
|
6001
|
+
** [[SQLITE_STATUS_PAGECACHE_OVERFLOW]]
|
5441
6002
|
** ^(<dt>SQLITE_STATUS_PAGECACHE_OVERFLOW</dt>
|
5442
6003
|
** <dd>This parameter returns the number of bytes of page cache
|
5443
6004
|
** allocation which could not be satisfied by the [SQLITE_CONFIG_PAGECACHE]
|
@@ -5447,13 +6008,13 @@ SQLITE_API int sqlite3_status(int op, int *pCurrent, int *pHighwater, int resetF
|
|
5447
6008
|
** [SQLITE_CONFIG_PAGECACHE]) and allocations that overflowed because
|
5448
6009
|
** no space was left in the page cache.</dd>)^
|
5449
6010
|
**
|
5450
|
-
** ^(<dt>SQLITE_STATUS_PAGECACHE_SIZE</dt>
|
6011
|
+
** [[SQLITE_STATUS_PAGECACHE_SIZE]] ^(<dt>SQLITE_STATUS_PAGECACHE_SIZE</dt>
|
5451
6012
|
** <dd>This parameter records the largest memory allocation request
|
5452
6013
|
** handed to [pagecache memory allocator]. Only the value returned in the
|
5453
6014
|
** *pHighwater parameter to [sqlite3_status()] is of interest.
|
5454
6015
|
** The value written into the *pCurrent parameter is undefined.</dd>)^
|
5455
6016
|
**
|
5456
|
-
** ^(<dt>SQLITE_STATUS_SCRATCH_USED</dt>
|
6017
|
+
** [[SQLITE_STATUS_SCRATCH_USED]] ^(<dt>SQLITE_STATUS_SCRATCH_USED</dt>
|
5457
6018
|
** <dd>This parameter returns the number of allocations used out of the
|
5458
6019
|
** [scratch memory allocator] configured using
|
5459
6020
|
** [SQLITE_CONFIG_SCRATCH]. The value returned is in allocations, not
|
@@ -5461,7 +6022,7 @@ SQLITE_API int sqlite3_status(int op, int *pCurrent, int *pHighwater, int resetF
|
|
5461
6022
|
** outstanding at time, this parameter also reports the number of threads
|
5462
6023
|
** using scratch memory at the same time.</dd>)^
|
5463
6024
|
**
|
5464
|
-
** ^(<dt>SQLITE_STATUS_SCRATCH_OVERFLOW</dt>
|
6025
|
+
** [[SQLITE_STATUS_SCRATCH_OVERFLOW]] ^(<dt>SQLITE_STATUS_SCRATCH_OVERFLOW</dt>
|
5465
6026
|
** <dd>This parameter returns the number of bytes of scratch memory
|
5466
6027
|
** allocation which could not be satisfied by the [SQLITE_CONFIG_SCRATCH]
|
5467
6028
|
** buffer and where forced to overflow to [sqlite3_malloc()]. The values
|
@@ -5471,13 +6032,13 @@ SQLITE_API int sqlite3_status(int op, int *pCurrent, int *pHighwater, int resetF
|
|
5471
6032
|
** slots were available.
|
5472
6033
|
** </dd>)^
|
5473
6034
|
**
|
5474
|
-
** ^(<dt>SQLITE_STATUS_SCRATCH_SIZE</dt>
|
6035
|
+
** [[SQLITE_STATUS_SCRATCH_SIZE]] ^(<dt>SQLITE_STATUS_SCRATCH_SIZE</dt>
|
5475
6036
|
** <dd>This parameter records the largest memory allocation request
|
5476
6037
|
** handed to [scratch memory allocator]. Only the value returned in the
|
5477
6038
|
** *pHighwater parameter to [sqlite3_status()] is of interest.
|
5478
6039
|
** The value written into the *pCurrent parameter is undefined.</dd>)^
|
5479
6040
|
**
|
5480
|
-
** ^(<dt>SQLITE_STATUS_PARSER_STACK</dt>
|
6041
|
+
** [[SQLITE_STATUS_PARSER_STACK]] ^(<dt>SQLITE_STATUS_PARSER_STACK</dt>
|
5481
6042
|
** <dd>This parameter records the deepest parser stack. It is only
|
5482
6043
|
** meaningful if SQLite is compiled with [YYTRACKMAXSTACKDEPTH].</dd>)^
|
5483
6044
|
** </dl>
|
@@ -5502,9 +6063,9 @@ SQLITE_API int sqlite3_status(int op, int *pCurrent, int *pHighwater, int resetF
|
|
5502
6063
|
** about a single [database connection]. ^The first argument is the
|
5503
6064
|
** database connection object to be interrogated. ^The second argument
|
5504
6065
|
** is an integer constant, taken from the set of
|
5505
|
-
** [
|
6066
|
+
** [SQLITE_DBSTATUS options], that
|
5506
6067
|
** determines the parameter to interrogate. The set of
|
5507
|
-
** [
|
6068
|
+
** [SQLITE_DBSTATUS options] is likely
|
5508
6069
|
** to grow in future releases of SQLite.
|
5509
6070
|
**
|
5510
6071
|
** ^The current value of the requested parameter is written into *pCur
|
@@ -5521,6 +6082,7 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r
|
|
5521
6082
|
|
5522
6083
|
/*
|
5523
6084
|
** CAPI3REF: Status Parameters for database connections
|
6085
|
+
** KEYWORDS: {SQLITE_DBSTATUS options}
|
5524
6086
|
**
|
5525
6087
|
** These constants are the available integer "verbs" that can be passed as
|
5526
6088
|
** the second argument to the [sqlite3_db_status()] interface.
|
@@ -5532,38 +6094,37 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r
|
|
5532
6094
|
** if a discontinued or unsupported verb is invoked.
|
5533
6095
|
**
|
5534
6096
|
** <dl>
|
5535
|
-
** ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_USED</dt>
|
6097
|
+
** [[SQLITE_DBSTATUS_LOOKASIDE_USED]] ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_USED</dt>
|
5536
6098
|
** <dd>This parameter returns the number of lookaside memory slots currently
|
5537
6099
|
** checked out.</dd>)^
|
5538
6100
|
**
|
5539
|
-
** ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_HIT</dt>
|
6101
|
+
** [[SQLITE_DBSTATUS_LOOKASIDE_HIT]] ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_HIT</dt>
|
5540
6102
|
** <dd>This parameter returns the number malloc attempts that were
|
5541
6103
|
** satisfied using lookaside memory. Only the high-water value is meaningful;
|
5542
|
-
** the current value is always zero.
|
5543
|
-
** checked out.</dd>)^
|
6104
|
+
** the current value is always zero.)^
|
5544
6105
|
**
|
6106
|
+
** [[SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE]]
|
5545
6107
|
** ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE</dt>
|
5546
6108
|
** <dd>This parameter returns the number malloc attempts that might have
|
5547
6109
|
** been satisfied using lookaside memory but failed due to the amount of
|
5548
6110
|
** memory requested being larger than the lookaside slot size.
|
5549
6111
|
** Only the high-water value is meaningful;
|
5550
|
-
** the current value is always zero.
|
5551
|
-
** checked out.</dd>)^
|
6112
|
+
** the current value is always zero.)^
|
5552
6113
|
**
|
6114
|
+
** [[SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL]]
|
5553
6115
|
** ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL</dt>
|
5554
6116
|
** <dd>This parameter returns the number malloc attempts that might have
|
5555
6117
|
** been satisfied using lookaside memory but failed due to all lookaside
|
5556
6118
|
** memory already being in use.
|
5557
6119
|
** Only the high-water value is meaningful;
|
5558
|
-
** the current value is always zero.
|
5559
|
-
** checked out.</dd>)^
|
6120
|
+
** the current value is always zero.)^
|
5560
6121
|
**
|
5561
|
-
** ^(<dt>SQLITE_DBSTATUS_CACHE_USED</dt>
|
6122
|
+
** [[SQLITE_DBSTATUS_CACHE_USED]] ^(<dt>SQLITE_DBSTATUS_CACHE_USED</dt>
|
5562
6123
|
** <dd>This parameter returns the approximate number of of bytes of heap
|
5563
6124
|
** memory used by all pager caches associated with the database connection.)^
|
5564
6125
|
** ^The highwater mark associated with SQLITE_DBSTATUS_CACHE_USED is always 0.
|
5565
6126
|
**
|
5566
|
-
** ^(<dt>SQLITE_DBSTATUS_SCHEMA_USED</dt>
|
6127
|
+
** [[SQLITE_DBSTATUS_SCHEMA_USED]] ^(<dt>SQLITE_DBSTATUS_SCHEMA_USED</dt>
|
5567
6128
|
** <dd>This parameter returns the approximate number of of bytes of heap
|
5568
6129
|
** memory used to store the schema for all databases associated
|
5569
6130
|
** with the connection - main, temp, and any [ATTACH]-ed databases.)^
|
@@ -5572,12 +6133,35 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r
|
|
5572
6133
|
** [shared cache mode] being enabled.
|
5573
6134
|
** ^The highwater mark associated with SQLITE_DBSTATUS_SCHEMA_USED is always 0.
|
5574
6135
|
**
|
5575
|
-
** ^(<dt>SQLITE_DBSTATUS_STMT_USED</dt>
|
6136
|
+
** [[SQLITE_DBSTATUS_STMT_USED]] ^(<dt>SQLITE_DBSTATUS_STMT_USED</dt>
|
5576
6137
|
** <dd>This parameter returns the approximate number of of bytes of heap
|
5577
6138
|
** and lookaside memory used by all prepared statements associated with
|
5578
6139
|
** the database connection.)^
|
5579
6140
|
** ^The highwater mark associated with SQLITE_DBSTATUS_STMT_USED is always 0.
|
5580
6141
|
** </dd>
|
6142
|
+
**
|
6143
|
+
** [[SQLITE_DBSTATUS_CACHE_HIT]] ^(<dt>SQLITE_DBSTATUS_CACHE_HIT</dt>
|
6144
|
+
** <dd>This parameter returns the number of pager cache hits that have
|
6145
|
+
** occurred.)^ ^The highwater mark associated with SQLITE_DBSTATUS_CACHE_HIT
|
6146
|
+
** is always 0.
|
6147
|
+
** </dd>
|
6148
|
+
**
|
6149
|
+
** [[SQLITE_DBSTATUS_CACHE_MISS]] ^(<dt>SQLITE_DBSTATUS_CACHE_MISS</dt>
|
6150
|
+
** <dd>This parameter returns the number of pager cache misses that have
|
6151
|
+
** occurred.)^ ^The highwater mark associated with SQLITE_DBSTATUS_CACHE_MISS
|
6152
|
+
** is always 0.
|
6153
|
+
** </dd>
|
6154
|
+
**
|
6155
|
+
** [[SQLITE_DBSTATUS_CACHE_WRITE]] ^(<dt>SQLITE_DBSTATUS_CACHE_WRITE</dt>
|
6156
|
+
** <dd>This parameter returns the number of dirty cache entries that have
|
6157
|
+
** been written to disk. Specifically, the number of pages written to the
|
6158
|
+
** wal file in wal mode databases, or the number of pages written to the
|
6159
|
+
** database file in rollback mode databases. Any pages written as part of
|
6160
|
+
** transaction rollback or database recovery operations are not included.
|
6161
|
+
** If an IO or other error occurs while writing a page to disk, the effect
|
6162
|
+
** on subsequent SQLITE_DBSTATUS_CACHE_WRITE requests is undefined.)^ ^The
|
6163
|
+
** highwater mark associated with SQLITE_DBSTATUS_CACHE_WRITE is always 0.
|
6164
|
+
** </dd>
|
5581
6165
|
** </dl>
|
5582
6166
|
*/
|
5583
6167
|
#define SQLITE_DBSTATUS_LOOKASIDE_USED 0
|
@@ -5587,14 +6171,17 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r
|
|
5587
6171
|
#define SQLITE_DBSTATUS_LOOKASIDE_HIT 4
|
5588
6172
|
#define SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE 5
|
5589
6173
|
#define SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL 6
|
5590
|
-
#define
|
6174
|
+
#define SQLITE_DBSTATUS_CACHE_HIT 7
|
6175
|
+
#define SQLITE_DBSTATUS_CACHE_MISS 8
|
6176
|
+
#define SQLITE_DBSTATUS_CACHE_WRITE 9
|
6177
|
+
#define SQLITE_DBSTATUS_MAX 9 /* Largest defined DBSTATUS */
|
5591
6178
|
|
5592
6179
|
|
5593
6180
|
/*
|
5594
6181
|
** CAPI3REF: Prepared Statement Status
|
5595
6182
|
**
|
5596
6183
|
** ^(Each prepared statement maintains various
|
5597
|
-
** [
|
6184
|
+
** [SQLITE_STMTSTATUS counters] that measure the number
|
5598
6185
|
** of times it has performed specific operations.)^ These counters can
|
5599
6186
|
** be used to monitor the performance characteristics of the prepared
|
5600
6187
|
** statements. For example, if the number of table steps greatly exceeds
|
@@ -5605,7 +6192,7 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r
|
|
5605
6192
|
** ^(This interface is used to retrieve and reset counter values from
|
5606
6193
|
** a [prepared statement]. The first argument is the prepared statement
|
5607
6194
|
** object to be interrogated. The second argument
|
5608
|
-
** is an integer code for a specific [
|
6195
|
+
** is an integer code for a specific [SQLITE_STMTSTATUS counter]
|
5609
6196
|
** to be interrogated.)^
|
5610
6197
|
** ^The current value of the requested counter is returned.
|
5611
6198
|
** ^If the resetFlg is true, then the counter is reset to zero after this
|
@@ -5617,30 +6204,30 @@ SQLITE_API int sqlite3_stmt_status(sqlite3_stmt*, int op,int resetFlg);
|
|
5617
6204
|
|
5618
6205
|
/*
|
5619
6206
|
** CAPI3REF: Status Parameters for prepared statements
|
6207
|
+
** KEYWORDS: {SQLITE_STMTSTATUS counter} {SQLITE_STMTSTATUS counters}
|
5620
6208
|
**
|
5621
6209
|
** These preprocessor macros define integer codes that name counter
|
5622
6210
|
** values associated with the [sqlite3_stmt_status()] interface.
|
5623
6211
|
** The meanings of the various counters are as follows:
|
5624
6212
|
**
|
5625
6213
|
** <dl>
|
5626
|
-
** <dt>SQLITE_STMTSTATUS_FULLSCAN_STEP</dt>
|
6214
|
+
** [[SQLITE_STMTSTATUS_FULLSCAN_STEP]] <dt>SQLITE_STMTSTATUS_FULLSCAN_STEP</dt>
|
5627
6215
|
** <dd>^This is the number of times that SQLite has stepped forward in
|
5628
6216
|
** a table as part of a full table scan. Large numbers for this counter
|
5629
6217
|
** may indicate opportunities for performance improvement through
|
5630
6218
|
** careful use of indices.</dd>
|
5631
6219
|
**
|
5632
|
-
** <dt>SQLITE_STMTSTATUS_SORT</dt>
|
6220
|
+
** [[SQLITE_STMTSTATUS_SORT]] <dt>SQLITE_STMTSTATUS_SORT</dt>
|
5633
6221
|
** <dd>^This is the number of sort operations that have occurred.
|
5634
6222
|
** A non-zero value in this counter may indicate an opportunity to
|
5635
6223
|
** improvement performance through careful use of indices.</dd>
|
5636
6224
|
**
|
5637
|
-
** <dt>SQLITE_STMTSTATUS_AUTOINDEX</dt>
|
6225
|
+
** [[SQLITE_STMTSTATUS_AUTOINDEX]] <dt>SQLITE_STMTSTATUS_AUTOINDEX</dt>
|
5638
6226
|
** <dd>^This is the number of rows inserted into transient indices that
|
5639
6227
|
** were created automatically in order to help joins run faster.
|
5640
6228
|
** A non-zero value in this counter may indicate an opportunity to
|
5641
6229
|
** improvement performance by adding permanent indices that do not
|
5642
6230
|
** need to be reinitialized each time the statement is run.</dd>
|
5643
|
-
**
|
5644
6231
|
** </dl>
|
5645
6232
|
*/
|
5646
6233
|
#define SQLITE_STMTSTATUS_FULLSCAN_STEP 1
|
@@ -5656,17 +6243,33 @@ SQLITE_API int sqlite3_stmt_status(sqlite3_stmt*, int op,int resetFlg);
|
|
5656
6243
|
** sqlite3_pcache object except by holding and passing pointers
|
5657
6244
|
** to the object.
|
5658
6245
|
**
|
5659
|
-
** See [
|
6246
|
+
** See [sqlite3_pcache_methods2] for additional information.
|
5660
6247
|
*/
|
5661
6248
|
typedef struct sqlite3_pcache sqlite3_pcache;
|
5662
6249
|
|
6250
|
+
/*
|
6251
|
+
** CAPI3REF: Custom Page Cache Object
|
6252
|
+
**
|
6253
|
+
** The sqlite3_pcache_page object represents a single page in the
|
6254
|
+
** page cache. The page cache will allocate instances of this
|
6255
|
+
** object. Various methods of the page cache use pointers to instances
|
6256
|
+
** of this object as parameters or as their return value.
|
6257
|
+
**
|
6258
|
+
** See [sqlite3_pcache_methods2] for additional information.
|
6259
|
+
*/
|
6260
|
+
typedef struct sqlite3_pcache_page sqlite3_pcache_page;
|
6261
|
+
struct sqlite3_pcache_page {
|
6262
|
+
void *pBuf; /* The content of the page */
|
6263
|
+
void *pExtra; /* Extra information associated with the page */
|
6264
|
+
};
|
6265
|
+
|
5663
6266
|
/*
|
5664
6267
|
** CAPI3REF: Application Defined Page Cache.
|
5665
6268
|
** KEYWORDS: {page cache}
|
5666
6269
|
**
|
5667
|
-
** ^(The [sqlite3_config]([
|
6270
|
+
** ^(The [sqlite3_config]([SQLITE_CONFIG_PCACHE2], ...) interface can
|
5668
6271
|
** register an alternative page cache implementation by passing in an
|
5669
|
-
** instance of the
|
6272
|
+
** instance of the sqlite3_pcache_methods2 structure.)^
|
5670
6273
|
** In many applications, most of the heap memory allocated by
|
5671
6274
|
** SQLite is used for the page cache.
|
5672
6275
|
** By implementing a
|
@@ -5680,21 +6283,23 @@ typedef struct sqlite3_pcache sqlite3_pcache;
|
|
5680
6283
|
** extreme measure that is only needed by the most demanding applications.
|
5681
6284
|
** The built-in page cache is recommended for most uses.
|
5682
6285
|
**
|
5683
|
-
** ^(The contents of the
|
6286
|
+
** ^(The contents of the sqlite3_pcache_methods2 structure are copied to an
|
5684
6287
|
** internal buffer by SQLite within the call to [sqlite3_config]. Hence
|
5685
6288
|
** the application may discard the parameter after the call to
|
5686
6289
|
** [sqlite3_config()] returns.)^
|
5687
6290
|
**
|
6291
|
+
** [[the xInit() page cache method]]
|
5688
6292
|
** ^(The xInit() method is called once for each effective
|
5689
6293
|
** call to [sqlite3_initialize()])^
|
5690
6294
|
** (usually only once during the lifetime of the process). ^(The xInit()
|
5691
|
-
** method is passed a copy of the
|
6295
|
+
** method is passed a copy of the sqlite3_pcache_methods2.pArg value.)^
|
5692
6296
|
** The intent of the xInit() method is to set up global data structures
|
5693
6297
|
** required by the custom page cache implementation.
|
5694
6298
|
** ^(If the xInit() method is NULL, then the
|
5695
6299
|
** built-in default page cache is used instead of the application defined
|
5696
6300
|
** page cache.)^
|
5697
6301
|
**
|
6302
|
+
** [[the xShutdown() page cache method]]
|
5698
6303
|
** ^The xShutdown() method is called by [sqlite3_shutdown()].
|
5699
6304
|
** It can be used to clean up
|
5700
6305
|
** any outstanding resources before process shutdown, if required.
|
@@ -5709,21 +6314,20 @@ typedef struct sqlite3_pcache sqlite3_pcache;
|
|
5709
6314
|
** ^SQLite will never invoke xInit() more than once without an intervening
|
5710
6315
|
** call to xShutdown().
|
5711
6316
|
**
|
6317
|
+
** [[the xCreate() page cache methods]]
|
5712
6318
|
** ^SQLite invokes the xCreate() method to construct a new cache instance.
|
5713
6319
|
** SQLite will typically create one cache instance for each open database file,
|
5714
6320
|
** though this is not guaranteed. ^The
|
5715
6321
|
** first parameter, szPage, is the size in bytes of the pages that must
|
5716
|
-
** be allocated by the cache. ^szPage will
|
5717
|
-
**
|
5718
|
-
**
|
5719
|
-
**
|
5720
|
-
**
|
6322
|
+
** be allocated by the cache. ^szPage will always a power of two. ^The
|
6323
|
+
** second parameter szExtra is a number of bytes of extra storage
|
6324
|
+
** associated with each page cache entry. ^The szExtra parameter will
|
6325
|
+
** a number less than 250. SQLite will use the
|
6326
|
+
** extra szExtra bytes on each page to store metadata about the underlying
|
6327
|
+
** database page on disk. The value passed into szExtra depends
|
5721
6328
|
** on the SQLite version, the target platform, and how SQLite was compiled.
|
5722
|
-
** ^
|
5723
|
-
**
|
5724
|
-
** ZIPVFS extension.)^ ^The second argument to
|
5725
|
-
** xCreate(), bPurgeable, is true if the cache being created will
|
5726
|
-
** be used to cache database pages of a file stored on disk, or
|
6329
|
+
** ^The third argument to xCreate(), bPurgeable, is true if the cache being
|
6330
|
+
** created will be used to cache database pages of a file stored on disk, or
|
5727
6331
|
** false if it is used for an in-memory database. The cache implementation
|
5728
6332
|
** does not have to do anything special based with the value of bPurgeable;
|
5729
6333
|
** it is purely advisory. ^On a cache where bPurgeable is false, SQLite will
|
@@ -5733,6 +6337,7 @@ typedef struct sqlite3_pcache sqlite3_pcache;
|
|
5733
6337
|
** ^Hence, a cache created with bPurgeable false will
|
5734
6338
|
** never contain any unpinned pages.
|
5735
6339
|
**
|
6340
|
+
** [[the xCachesize() page cache method]]
|
5736
6341
|
** ^(The xCachesize() method may be called at any time by SQLite to set the
|
5737
6342
|
** suggested maximum cache-size (number of pages stored by) the cache
|
5738
6343
|
** instance passed as the first argument. This is the value configured using
|
@@ -5740,15 +6345,22 @@ typedef struct sqlite3_pcache sqlite3_pcache;
|
|
5740
6345
|
** parameter, the implementation is not required to do anything with this
|
5741
6346
|
** value; it is advisory only.
|
5742
6347
|
**
|
6348
|
+
** [[the xPagecount() page cache methods]]
|
5743
6349
|
** The xPagecount() method must return the number of pages currently
|
5744
6350
|
** stored in the cache, both pinned and unpinned.
|
5745
6351
|
**
|
6352
|
+
** [[the xFetch() page cache methods]]
|
5746
6353
|
** The xFetch() method locates a page in the cache and returns a pointer to
|
5747
|
-
**
|
5748
|
-
**
|
5749
|
-
**
|
5750
|
-
**
|
5751
|
-
**
|
6354
|
+
** an sqlite3_pcache_page object associated with that page, or a NULL pointer.
|
6355
|
+
** The pBuf element of the returned sqlite3_pcache_page object will be a
|
6356
|
+
** pointer to a buffer of szPage bytes used to store the content of a
|
6357
|
+
** single database page. The pExtra element of sqlite3_pcache_page will be
|
6358
|
+
** a pointer to the szExtra bytes of extra storage that SQLite has requested
|
6359
|
+
** for each entry in the page cache.
|
6360
|
+
**
|
6361
|
+
** The page to be fetched is determined by the key. ^The minimum key value
|
6362
|
+
** is 1. After it has been retrieved using xFetch, the page is considered
|
6363
|
+
** to be "pinned".
|
5752
6364
|
**
|
5753
6365
|
** If the requested page is already in the page cache, then the page cache
|
5754
6366
|
** implementation must return a pointer to the page buffer with its content
|
@@ -5771,6 +6383,7 @@ typedef struct sqlite3_pcache sqlite3_pcache;
|
|
5771
6383
|
** attempt to unpin one or more cache pages by spilling the content of
|
5772
6384
|
** pinned pages to disk and synching the operating system disk cache.
|
5773
6385
|
**
|
6386
|
+
** [[the xUnpin() page cache method]]
|
5774
6387
|
** ^xUnpin() is called by SQLite with a pointer to a currently pinned page
|
5775
6388
|
** as its second argument. If the third parameter, discard, is non-zero,
|
5776
6389
|
** then the page must be evicted from the cache.
|
@@ -5783,6 +6396,7 @@ typedef struct sqlite3_pcache sqlite3_pcache;
|
|
5783
6396
|
** call to xUnpin() unpins the page regardless of the number of prior calls
|
5784
6397
|
** to xFetch().
|
5785
6398
|
**
|
6399
|
+
** [[the xRekey() page cache methods]]
|
5786
6400
|
** The xRekey() method is used to change the key value associated with the
|
5787
6401
|
** page passed as the second argument. If the cache
|
5788
6402
|
** previously contains an entry associated with newKey, it must be
|
@@ -5795,11 +6409,41 @@ typedef struct sqlite3_pcache sqlite3_pcache;
|
|
5795
6409
|
** of these pages are pinned, they are implicitly unpinned, meaning that
|
5796
6410
|
** they can be safely discarded.
|
5797
6411
|
**
|
6412
|
+
** [[the xDestroy() page cache method]]
|
5798
6413
|
** ^The xDestroy() method is used to delete a cache allocated by xCreate().
|
5799
6414
|
** All resources associated with the specified cache should be freed. ^After
|
5800
6415
|
** calling the xDestroy() method, SQLite considers the [sqlite3_pcache*]
|
5801
|
-
** handle invalid, and will not use it with any other
|
6416
|
+
** handle invalid, and will not use it with any other sqlite3_pcache_methods2
|
5802
6417
|
** functions.
|
6418
|
+
**
|
6419
|
+
** [[the xShrink() page cache method]]
|
6420
|
+
** ^SQLite invokes the xShrink() method when it wants the page cache to
|
6421
|
+
** free up as much of heap memory as possible. The page cache implementation
|
6422
|
+
** is not obligated to free any memory, but well-behaved implementations should
|
6423
|
+
** do their best.
|
6424
|
+
*/
|
6425
|
+
typedef struct sqlite3_pcache_methods2 sqlite3_pcache_methods2;
|
6426
|
+
struct sqlite3_pcache_methods2 {
|
6427
|
+
int iVersion;
|
6428
|
+
void *pArg;
|
6429
|
+
int (*xInit)(void*);
|
6430
|
+
void (*xShutdown)(void*);
|
6431
|
+
sqlite3_pcache *(*xCreate)(int szPage, int szExtra, int bPurgeable);
|
6432
|
+
void (*xCachesize)(sqlite3_pcache*, int nCachesize);
|
6433
|
+
int (*xPagecount)(sqlite3_pcache*);
|
6434
|
+
sqlite3_pcache_page *(*xFetch)(sqlite3_pcache*, unsigned key, int createFlag);
|
6435
|
+
void (*xUnpin)(sqlite3_pcache*, sqlite3_pcache_page*, int discard);
|
6436
|
+
void (*xRekey)(sqlite3_pcache*, sqlite3_pcache_page*,
|
6437
|
+
unsigned oldKey, unsigned newKey);
|
6438
|
+
void (*xTruncate)(sqlite3_pcache*, unsigned iLimit);
|
6439
|
+
void (*xDestroy)(sqlite3_pcache*);
|
6440
|
+
void (*xShrink)(sqlite3_pcache*);
|
6441
|
+
};
|
6442
|
+
|
6443
|
+
/*
|
6444
|
+
** This is the obsolete pcache_methods object that has now been replaced
|
6445
|
+
** by sqlite3_pcache_methods2. This object is not used by SQLite. It is
|
6446
|
+
** retained in the header file for backwards compatibility only.
|
5803
6447
|
*/
|
5804
6448
|
typedef struct sqlite3_pcache_methods sqlite3_pcache_methods;
|
5805
6449
|
struct sqlite3_pcache_methods {
|
@@ -5816,6 +6460,7 @@ struct sqlite3_pcache_methods {
|
|
5816
6460
|
void (*xDestroy)(sqlite3_pcache*);
|
5817
6461
|
};
|
5818
6462
|
|
6463
|
+
|
5819
6464
|
/*
|
5820
6465
|
** CAPI3REF: Online Backup Object
|
5821
6466
|
**
|
@@ -5857,7 +6502,7 @@ typedef struct sqlite3_backup sqlite3_backup;
|
|
5857
6502
|
** There should be exactly one call to sqlite3_backup_finish() for each
|
5858
6503
|
** successful call to sqlite3_backup_init().
|
5859
6504
|
**
|
5860
|
-
** <b>sqlite3_backup_init()</b>
|
6505
|
+
** [[sqlite3_backup_init()]] <b>sqlite3_backup_init()</b>
|
5861
6506
|
**
|
5862
6507
|
** ^The D and N arguments to sqlite3_backup_init(D,N,S,M) are the
|
5863
6508
|
** [database connection] associated with the destination database
|
@@ -5884,7 +6529,7 @@ typedef struct sqlite3_backup sqlite3_backup;
|
|
5884
6529
|
** sqlite3_backup_finish() functions to perform the specified backup
|
5885
6530
|
** operation.
|
5886
6531
|
**
|
5887
|
-
** <b>sqlite3_backup_step()</b>
|
6532
|
+
** [[sqlite3_backup_step()]] <b>sqlite3_backup_step()</b>
|
5888
6533
|
**
|
5889
6534
|
** ^Function sqlite3_backup_step(B,N) will copy up to N pages between
|
5890
6535
|
** the source and destination databases specified by [sqlite3_backup] object B.
|
@@ -5941,7 +6586,7 @@ typedef struct sqlite3_backup sqlite3_backup;
|
|
5941
6586
|
** by the backup operation, then the backup database is automatically
|
5942
6587
|
** updated at the same time.
|
5943
6588
|
**
|
5944
|
-
** <b>sqlite3_backup_finish()</b>
|
6589
|
+
** [[sqlite3_backup_finish()]] <b>sqlite3_backup_finish()</b>
|
5945
6590
|
**
|
5946
6591
|
** When sqlite3_backup_step() has returned [SQLITE_DONE], or when the
|
5947
6592
|
** application wishes to abandon the backup operation, the application
|
@@ -5964,7 +6609,8 @@ typedef struct sqlite3_backup sqlite3_backup;
|
|
5964
6609
|
** is not a permanent error and does not affect the return value of
|
5965
6610
|
** sqlite3_backup_finish().
|
5966
6611
|
**
|
5967
|
-
**
|
6612
|
+
** [[sqlite3_backup__remaining()]] [[sqlite3_backup_pagecount()]]
|
6613
|
+
** <b>sqlite3_backup_remaining() and sqlite3_backup_pagecount()</b>
|
5968
6614
|
**
|
5969
6615
|
** ^Each call to sqlite3_backup_step() sets two values inside
|
5970
6616
|
** the [sqlite3_backup] object: the number of pages still to be backed
|
@@ -6144,11 +6790,12 @@ SQLITE_API int sqlite3_unlock_notify(
|
|
6144
6790
|
/*
|
6145
6791
|
** CAPI3REF: String Comparison
|
6146
6792
|
**
|
6147
|
-
** ^The [sqlite3_strnicmp()]
|
6148
|
-
** compare the contents of two buffers containing UTF-8
|
6149
|
-
** case-independent fashion, using the same definition of case
|
6150
|
-
** that SQLite uses internally when comparing identifiers.
|
6793
|
+
** ^The [sqlite3_stricmp()] and [sqlite3_strnicmp()] APIs allow applications
|
6794
|
+
** and extensions to compare the contents of two buffers containing UTF-8
|
6795
|
+
** strings in a case-independent fashion, using the same definition of "case
|
6796
|
+
** independence" that SQLite uses internally when comparing identifiers.
|
6151
6797
|
*/
|
6798
|
+
SQLITE_API int sqlite3_stricmp(const char *, const char *);
|
6152
6799
|
SQLITE_API int sqlite3_strnicmp(const char *, const char *, int);
|
6153
6800
|
|
6154
6801
|
/*
|
@@ -6255,9 +6902,189 @@ SQLITE_API int sqlite3_wal_autocheckpoint(sqlite3 *db, int N);
|
|
6255
6902
|
** from SQL. ^The [sqlite3_wal_autocheckpoint()] interface and the
|
6256
6903
|
** [wal_autocheckpoint pragma] can be used to cause this interface to be
|
6257
6904
|
** run whenever the WAL reaches a certain size threshold.
|
6905
|
+
**
|
6906
|
+
** See also: [sqlite3_wal_checkpoint_v2()]
|
6258
6907
|
*/
|
6259
6908
|
SQLITE_API int sqlite3_wal_checkpoint(sqlite3 *db, const char *zDb);
|
6260
6909
|
|
6910
|
+
/*
|
6911
|
+
** CAPI3REF: Checkpoint a database
|
6912
|
+
**
|
6913
|
+
** Run a checkpoint operation on WAL database zDb attached to database
|
6914
|
+
** handle db. The specific operation is determined by the value of the
|
6915
|
+
** eMode parameter:
|
6916
|
+
**
|
6917
|
+
** <dl>
|
6918
|
+
** <dt>SQLITE_CHECKPOINT_PASSIVE<dd>
|
6919
|
+
** Checkpoint as many frames as possible without waiting for any database
|
6920
|
+
** readers or writers to finish. Sync the db file if all frames in the log
|
6921
|
+
** are checkpointed. This mode is the same as calling
|
6922
|
+
** sqlite3_wal_checkpoint(). The busy-handler callback is never invoked.
|
6923
|
+
**
|
6924
|
+
** <dt>SQLITE_CHECKPOINT_FULL<dd>
|
6925
|
+
** This mode blocks (calls the busy-handler callback) until there is no
|
6926
|
+
** database writer and all readers are reading from the most recent database
|
6927
|
+
** snapshot. It then checkpoints all frames in the log file and syncs the
|
6928
|
+
** database file. This call blocks database writers while it is running,
|
6929
|
+
** but not database readers.
|
6930
|
+
**
|
6931
|
+
** <dt>SQLITE_CHECKPOINT_RESTART<dd>
|
6932
|
+
** This mode works the same way as SQLITE_CHECKPOINT_FULL, except after
|
6933
|
+
** checkpointing the log file it blocks (calls the busy-handler callback)
|
6934
|
+
** until all readers are reading from the database file only. This ensures
|
6935
|
+
** that the next client to write to the database file restarts the log file
|
6936
|
+
** from the beginning. This call blocks database writers while it is running,
|
6937
|
+
** but not database readers.
|
6938
|
+
** </dl>
|
6939
|
+
**
|
6940
|
+
** If pnLog is not NULL, then *pnLog is set to the total number of frames in
|
6941
|
+
** the log file before returning. If pnCkpt is not NULL, then *pnCkpt is set to
|
6942
|
+
** the total number of checkpointed frames (including any that were already
|
6943
|
+
** checkpointed when this function is called). *pnLog and *pnCkpt may be
|
6944
|
+
** populated even if sqlite3_wal_checkpoint_v2() returns other than SQLITE_OK.
|
6945
|
+
** If no values are available because of an error, they are both set to -1
|
6946
|
+
** before returning to communicate this to the caller.
|
6947
|
+
**
|
6948
|
+
** All calls obtain an exclusive "checkpoint" lock on the database file. If
|
6949
|
+
** any other process is running a checkpoint operation at the same time, the
|
6950
|
+
** lock cannot be obtained and SQLITE_BUSY is returned. Even if there is a
|
6951
|
+
** busy-handler configured, it will not be invoked in this case.
|
6952
|
+
**
|
6953
|
+
** The SQLITE_CHECKPOINT_FULL and RESTART modes also obtain the exclusive
|
6954
|
+
** "writer" lock on the database file. If the writer lock cannot be obtained
|
6955
|
+
** immediately, and a busy-handler is configured, it is invoked and the writer
|
6956
|
+
** lock retried until either the busy-handler returns 0 or the lock is
|
6957
|
+
** successfully obtained. The busy-handler is also invoked while waiting for
|
6958
|
+
** database readers as described above. If the busy-handler returns 0 before
|
6959
|
+
** the writer lock is obtained or while waiting for database readers, the
|
6960
|
+
** checkpoint operation proceeds from that point in the same way as
|
6961
|
+
** SQLITE_CHECKPOINT_PASSIVE - checkpointing as many frames as possible
|
6962
|
+
** without blocking any further. SQLITE_BUSY is returned in this case.
|
6963
|
+
**
|
6964
|
+
** If parameter zDb is NULL or points to a zero length string, then the
|
6965
|
+
** specified operation is attempted on all WAL databases. In this case the
|
6966
|
+
** values written to output parameters *pnLog and *pnCkpt are undefined. If
|
6967
|
+
** an SQLITE_BUSY error is encountered when processing one or more of the
|
6968
|
+
** attached WAL databases, the operation is still attempted on any remaining
|
6969
|
+
** attached databases and SQLITE_BUSY is returned to the caller. If any other
|
6970
|
+
** error occurs while processing an attached database, processing is abandoned
|
6971
|
+
** and the error code returned to the caller immediately. If no error
|
6972
|
+
** (SQLITE_BUSY or otherwise) is encountered while processing the attached
|
6973
|
+
** databases, SQLITE_OK is returned.
|
6974
|
+
**
|
6975
|
+
** If database zDb is the name of an attached database that is not in WAL
|
6976
|
+
** mode, SQLITE_OK is returned and both *pnLog and *pnCkpt set to -1. If
|
6977
|
+
** zDb is not NULL (or a zero length string) and is not the name of any
|
6978
|
+
** attached database, SQLITE_ERROR is returned to the caller.
|
6979
|
+
*/
|
6980
|
+
SQLITE_API int sqlite3_wal_checkpoint_v2(
|
6981
|
+
sqlite3 *db, /* Database handle */
|
6982
|
+
const char *zDb, /* Name of attached database (or NULL) */
|
6983
|
+
int eMode, /* SQLITE_CHECKPOINT_* value */
|
6984
|
+
int *pnLog, /* OUT: Size of WAL log in frames */
|
6985
|
+
int *pnCkpt /* OUT: Total number of frames checkpointed */
|
6986
|
+
);
|
6987
|
+
|
6988
|
+
/*
|
6989
|
+
** CAPI3REF: Checkpoint operation parameters
|
6990
|
+
**
|
6991
|
+
** These constants can be used as the 3rd parameter to
|
6992
|
+
** [sqlite3_wal_checkpoint_v2()]. See the [sqlite3_wal_checkpoint_v2()]
|
6993
|
+
** documentation for additional information about the meaning and use of
|
6994
|
+
** each of these values.
|
6995
|
+
*/
|
6996
|
+
#define SQLITE_CHECKPOINT_PASSIVE 0
|
6997
|
+
#define SQLITE_CHECKPOINT_FULL 1
|
6998
|
+
#define SQLITE_CHECKPOINT_RESTART 2
|
6999
|
+
|
7000
|
+
/*
|
7001
|
+
** CAPI3REF: Virtual Table Interface Configuration
|
7002
|
+
**
|
7003
|
+
** This function may be called by either the [xConnect] or [xCreate] method
|
7004
|
+
** of a [virtual table] implementation to configure
|
7005
|
+
** various facets of the virtual table interface.
|
7006
|
+
**
|
7007
|
+
** If this interface is invoked outside the context of an xConnect or
|
7008
|
+
** xCreate virtual table method then the behavior is undefined.
|
7009
|
+
**
|
7010
|
+
** At present, there is only one option that may be configured using
|
7011
|
+
** this function. (See [SQLITE_VTAB_CONSTRAINT_SUPPORT].) Further options
|
7012
|
+
** may be added in the future.
|
7013
|
+
*/
|
7014
|
+
SQLITE_API int sqlite3_vtab_config(sqlite3*, int op, ...);
|
7015
|
+
|
7016
|
+
/*
|
7017
|
+
** CAPI3REF: Virtual Table Configuration Options
|
7018
|
+
**
|
7019
|
+
** These macros define the various options to the
|
7020
|
+
** [sqlite3_vtab_config()] interface that [virtual table] implementations
|
7021
|
+
** can use to customize and optimize their behavior.
|
7022
|
+
**
|
7023
|
+
** <dl>
|
7024
|
+
** <dt>SQLITE_VTAB_CONSTRAINT_SUPPORT
|
7025
|
+
** <dd>Calls of the form
|
7026
|
+
** [sqlite3_vtab_config](db,SQLITE_VTAB_CONSTRAINT_SUPPORT,X) are supported,
|
7027
|
+
** where X is an integer. If X is zero, then the [virtual table] whose
|
7028
|
+
** [xCreate] or [xConnect] method invoked [sqlite3_vtab_config()] does not
|
7029
|
+
** support constraints. In this configuration (which is the default) if
|
7030
|
+
** a call to the [xUpdate] method returns [SQLITE_CONSTRAINT], then the entire
|
7031
|
+
** statement is rolled back as if [ON CONFLICT | OR ABORT] had been
|
7032
|
+
** specified as part of the users SQL statement, regardless of the actual
|
7033
|
+
** ON CONFLICT mode specified.
|
7034
|
+
**
|
7035
|
+
** If X is non-zero, then the virtual table implementation guarantees
|
7036
|
+
** that if [xUpdate] returns [SQLITE_CONSTRAINT], it will do so before
|
7037
|
+
** any modifications to internal or persistent data structures have been made.
|
7038
|
+
** If the [ON CONFLICT] mode is ABORT, FAIL, IGNORE or ROLLBACK, SQLite
|
7039
|
+
** is able to roll back a statement or database transaction, and abandon
|
7040
|
+
** or continue processing the current SQL statement as appropriate.
|
7041
|
+
** If the ON CONFLICT mode is REPLACE and the [xUpdate] method returns
|
7042
|
+
** [SQLITE_CONSTRAINT], SQLite handles this as if the ON CONFLICT mode
|
7043
|
+
** had been ABORT.
|
7044
|
+
**
|
7045
|
+
** Virtual table implementations that are required to handle OR REPLACE
|
7046
|
+
** must do so within the [xUpdate] method. If a call to the
|
7047
|
+
** [sqlite3_vtab_on_conflict()] function indicates that the current ON
|
7048
|
+
** CONFLICT policy is REPLACE, the virtual table implementation should
|
7049
|
+
** silently replace the appropriate rows within the xUpdate callback and
|
7050
|
+
** return SQLITE_OK. Or, if this is not possible, it may return
|
7051
|
+
** SQLITE_CONSTRAINT, in which case SQLite falls back to OR ABORT
|
7052
|
+
** constraint handling.
|
7053
|
+
** </dl>
|
7054
|
+
*/
|
7055
|
+
#define SQLITE_VTAB_CONSTRAINT_SUPPORT 1
|
7056
|
+
|
7057
|
+
/*
|
7058
|
+
** CAPI3REF: Determine The Virtual Table Conflict Policy
|
7059
|
+
**
|
7060
|
+
** This function may only be called from within a call to the [xUpdate] method
|
7061
|
+
** of a [virtual table] implementation for an INSERT or UPDATE operation. ^The
|
7062
|
+
** value returned is one of [SQLITE_ROLLBACK], [SQLITE_IGNORE], [SQLITE_FAIL],
|
7063
|
+
** [SQLITE_ABORT], or [SQLITE_REPLACE], according to the [ON CONFLICT] mode
|
7064
|
+
** of the SQL statement that triggered the call to the [xUpdate] method of the
|
7065
|
+
** [virtual table].
|
7066
|
+
*/
|
7067
|
+
SQLITE_API int sqlite3_vtab_on_conflict(sqlite3 *);
|
7068
|
+
|
7069
|
+
/*
|
7070
|
+
** CAPI3REF: Conflict resolution modes
|
7071
|
+
**
|
7072
|
+
** These constants are returned by [sqlite3_vtab_on_conflict()] to
|
7073
|
+
** inform a [virtual table] implementation what the [ON CONFLICT] mode
|
7074
|
+
** is for the SQL statement being evaluated.
|
7075
|
+
**
|
7076
|
+
** Note that the [SQLITE_IGNORE] constant is also used as a potential
|
7077
|
+
** return value from the [sqlite3_set_authorizer()] callback and that
|
7078
|
+
** [SQLITE_ABORT] is also a [result code].
|
7079
|
+
*/
|
7080
|
+
#define SQLITE_ROLLBACK 1
|
7081
|
+
/* #define SQLITE_IGNORE 2 // Also used by sqlite3_authorizer() callback */
|
7082
|
+
#define SQLITE_FAIL 3
|
7083
|
+
/* #define SQLITE_ABORT 4 // Also an error code */
|
7084
|
+
#define SQLITE_REPLACE 5
|
7085
|
+
|
7086
|
+
|
7087
|
+
|
6261
7088
|
/*
|
6262
7089
|
** Undo the hack that converts floating point types to integer for
|
6263
7090
|
** builds on processors without floating point support.
|
@@ -6303,7 +7130,11 @@ typedef struct sqlite3_rtree_geometry sqlite3_rtree_geometry;
|
|
6303
7130
|
SQLITE_API int sqlite3_rtree_geometry_callback(
|
6304
7131
|
sqlite3 *db,
|
6305
7132
|
const char *zGeom,
|
6306
|
-
|
7133
|
+
#ifdef SQLITE_RTREE_INT_ONLY
|
7134
|
+
int (*xGeom)(sqlite3_rtree_geometry*, int n, sqlite3_int64 *a, int *pRes),
|
7135
|
+
#else
|
7136
|
+
int (*xGeom)(sqlite3_rtree_geometry*, int n, double *a, int *pRes),
|
7137
|
+
#endif
|
6307
7138
|
void *pContext
|
6308
7139
|
);
|
6309
7140
|
|