Mercurial > mercurial > hgweb_searcher03.cgi
comparison include/sqlite3.h @ 21:a2ad87cad48b
Enhanced the convenience of Cache dialog.
author | pyon@macmini |
---|---|
date | Wed, 17 Dec 2014 00:52:43 +0900 |
parents | 0c0701a935f8 |
children |
comparison
equal
deleted
inserted
replaced
20:226774bf49fc | 21:a2ad87cad48b |
---|---|
105 ** | 105 ** |
106 ** See also: [sqlite3_libversion()], | 106 ** See also: [sqlite3_libversion()], |
107 ** [sqlite3_libversion_number()], [sqlite3_sourceid()], | 107 ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
108 ** [sqlite_version()] and [sqlite_source_id()]. | 108 ** [sqlite_version()] and [sqlite_source_id()]. |
109 */ | 109 */ |
110 #define SQLITE_VERSION "3.7.16" | 110 #define SQLITE_VERSION "3.8.5" |
111 #define SQLITE_VERSION_NUMBER 3007016 | 111 #define SQLITE_VERSION_NUMBER 3008005 |
112 #define SQLITE_SOURCE_ID "2013-03-18 11:39:23 66d5f2b76750f3520eb7a495f6247206758f5b90" | 112 #define SQLITE_SOURCE_ID "2014-06-04 14:06:34 b1ed4f2a34ba66c29b130f8d13e9092758019212" |
113 | 113 |
114 /* | 114 /* |
115 ** CAPI3REF: Run-Time Library Version Numbers | 115 ** CAPI3REF: Run-Time Library Version Numbers |
116 ** KEYWORDS: sqlite3_version, sqlite3_sourceid | 116 ** KEYWORDS: sqlite3_version, sqlite3_sourceid |
117 ** | 117 ** |
368 ** Restrictions: | 368 ** Restrictions: |
369 ** | 369 ** |
370 ** <ul> | 370 ** <ul> |
371 ** <li> The application must insure that the 1st parameter to sqlite3_exec() | 371 ** <li> The application must insure that the 1st parameter to sqlite3_exec() |
372 ** is a valid and open [database connection]. | 372 ** is a valid and open [database connection]. |
373 ** <li> The application must not close [database connection] specified by | 373 ** <li> The application must not close the [database connection] specified by |
374 ** the 1st parameter to sqlite3_exec() while sqlite3_exec() is running. | 374 ** the 1st parameter to sqlite3_exec() while sqlite3_exec() is running. |
375 ** <li> The application must not modify the SQL statement text passed into | 375 ** <li> The application must not modify the SQL statement text passed into |
376 ** the 2nd parameter of sqlite3_exec() while sqlite3_exec() is running. | 376 ** the 2nd parameter of sqlite3_exec() while sqlite3_exec() is running. |
377 ** </ul> | 377 ** </ul> |
378 */ | 378 */ |
423 #define SQLITE_NOLFS 22 /* Uses OS features not supported on host */ | 423 #define SQLITE_NOLFS 22 /* Uses OS features not supported on host */ |
424 #define SQLITE_AUTH 23 /* Authorization denied */ | 424 #define SQLITE_AUTH 23 /* Authorization denied */ |
425 #define SQLITE_FORMAT 24 /* Auxiliary database format error */ | 425 #define SQLITE_FORMAT 24 /* Auxiliary database format error */ |
426 #define SQLITE_RANGE 25 /* 2nd parameter to sqlite3_bind out of range */ | 426 #define SQLITE_RANGE 25 /* 2nd parameter to sqlite3_bind out of range */ |
427 #define SQLITE_NOTADB 26 /* File opened that is not a database file */ | 427 #define SQLITE_NOTADB 26 /* File opened that is not a database file */ |
428 #define SQLITE_NOTICE 27 /* Notifications from sqlite3_log() */ | |
429 #define SQLITE_WARNING 28 /* Warnings from sqlite3_log() */ | |
428 #define SQLITE_ROW 100 /* sqlite3_step() has another row ready */ | 430 #define SQLITE_ROW 100 /* sqlite3_step() has another row ready */ |
429 #define SQLITE_DONE 101 /* sqlite3_step() has finished executing */ | 431 #define SQLITE_DONE 101 /* sqlite3_step() has finished executing */ |
430 /* end-of-error-codes */ | 432 /* end-of-error-codes */ |
431 | 433 |
432 /* | 434 /* |
443 ** about errors. The extended result codes are enabled or disabled | 445 ** about errors. The extended result codes are enabled or disabled |
444 ** on a per database connection basis using the | 446 ** on a per database connection basis using the |
445 ** [sqlite3_extended_result_codes()] API. | 447 ** [sqlite3_extended_result_codes()] API. |
446 ** | 448 ** |
447 ** Some of the available extended result codes are listed here. | 449 ** Some of the available extended result codes are listed here. |
448 ** One may expect the number of extended result codes will be expand | 450 ** One may expect the number of extended result codes will increase |
449 ** over time. Software that uses extended result codes should expect | 451 ** over time. Software that uses extended result codes should expect |
450 ** to see new result codes in future releases of SQLite. | 452 ** to see new result codes in future releases of SQLite. |
451 ** | 453 ** |
452 ** The SQLITE_OK result code will never be extended. It will always | 454 ** The SQLITE_OK result code will never be extended. It will always |
453 ** be exactly zero. | 455 ** be exactly zero. |
473 #define SQLITE_IOERR_SHMSIZE (SQLITE_IOERR | (19<<8)) | 475 #define SQLITE_IOERR_SHMSIZE (SQLITE_IOERR | (19<<8)) |
474 #define SQLITE_IOERR_SHMLOCK (SQLITE_IOERR | (20<<8)) | 476 #define SQLITE_IOERR_SHMLOCK (SQLITE_IOERR | (20<<8)) |
475 #define SQLITE_IOERR_SHMMAP (SQLITE_IOERR | (21<<8)) | 477 #define SQLITE_IOERR_SHMMAP (SQLITE_IOERR | (21<<8)) |
476 #define SQLITE_IOERR_SEEK (SQLITE_IOERR | (22<<8)) | 478 #define SQLITE_IOERR_SEEK (SQLITE_IOERR | (22<<8)) |
477 #define SQLITE_IOERR_DELETE_NOENT (SQLITE_IOERR | (23<<8)) | 479 #define SQLITE_IOERR_DELETE_NOENT (SQLITE_IOERR | (23<<8)) |
480 #define SQLITE_IOERR_MMAP (SQLITE_IOERR | (24<<8)) | |
481 #define SQLITE_IOERR_GETTEMPPATH (SQLITE_IOERR | (25<<8)) | |
482 #define SQLITE_IOERR_CONVPATH (SQLITE_IOERR | (26<<8)) | |
478 #define SQLITE_LOCKED_SHAREDCACHE (SQLITE_LOCKED | (1<<8)) | 483 #define SQLITE_LOCKED_SHAREDCACHE (SQLITE_LOCKED | (1<<8)) |
479 #define SQLITE_BUSY_RECOVERY (SQLITE_BUSY | (1<<8)) | 484 #define SQLITE_BUSY_RECOVERY (SQLITE_BUSY | (1<<8)) |
485 #define SQLITE_BUSY_SNAPSHOT (SQLITE_BUSY | (2<<8)) | |
480 #define SQLITE_CANTOPEN_NOTEMPDIR (SQLITE_CANTOPEN | (1<<8)) | 486 #define SQLITE_CANTOPEN_NOTEMPDIR (SQLITE_CANTOPEN | (1<<8)) |
481 #define SQLITE_CANTOPEN_ISDIR (SQLITE_CANTOPEN | (2<<8)) | 487 #define SQLITE_CANTOPEN_ISDIR (SQLITE_CANTOPEN | (2<<8)) |
482 #define SQLITE_CANTOPEN_FULLPATH (SQLITE_CANTOPEN | (3<<8)) | 488 #define SQLITE_CANTOPEN_FULLPATH (SQLITE_CANTOPEN | (3<<8)) |
489 #define SQLITE_CANTOPEN_CONVPATH (SQLITE_CANTOPEN | (4<<8)) | |
483 #define SQLITE_CORRUPT_VTAB (SQLITE_CORRUPT | (1<<8)) | 490 #define SQLITE_CORRUPT_VTAB (SQLITE_CORRUPT | (1<<8)) |
484 #define SQLITE_READONLY_RECOVERY (SQLITE_READONLY | (1<<8)) | 491 #define SQLITE_READONLY_RECOVERY (SQLITE_READONLY | (1<<8)) |
485 #define SQLITE_READONLY_CANTLOCK (SQLITE_READONLY | (2<<8)) | 492 #define SQLITE_READONLY_CANTLOCK (SQLITE_READONLY | (2<<8)) |
486 #define SQLITE_READONLY_ROLLBACK (SQLITE_READONLY | (3<<8)) | 493 #define SQLITE_READONLY_ROLLBACK (SQLITE_READONLY | (3<<8)) |
494 #define SQLITE_READONLY_DBMOVED (SQLITE_READONLY | (4<<8)) | |
487 #define SQLITE_ABORT_ROLLBACK (SQLITE_ABORT | (2<<8)) | 495 #define SQLITE_ABORT_ROLLBACK (SQLITE_ABORT | (2<<8)) |
488 #define SQLITE_CONSTRAINT_CHECK (SQLITE_CONSTRAINT | (1<<8)) | 496 #define SQLITE_CONSTRAINT_CHECK (SQLITE_CONSTRAINT | (1<<8)) |
489 #define SQLITE_CONSTRAINT_COMMITHOOK (SQLITE_CONSTRAINT | (2<<8)) | 497 #define SQLITE_CONSTRAINT_COMMITHOOK (SQLITE_CONSTRAINT | (2<<8)) |
490 #define SQLITE_CONSTRAINT_FOREIGNKEY (SQLITE_CONSTRAINT | (3<<8)) | 498 #define SQLITE_CONSTRAINT_FOREIGNKEY (SQLITE_CONSTRAINT | (3<<8)) |
491 #define SQLITE_CONSTRAINT_FUNCTION (SQLITE_CONSTRAINT | (4<<8)) | 499 #define SQLITE_CONSTRAINT_FUNCTION (SQLITE_CONSTRAINT | (4<<8)) |
492 #define SQLITE_CONSTRAINT_NOTNULL (SQLITE_CONSTRAINT | (5<<8)) | 500 #define SQLITE_CONSTRAINT_NOTNULL (SQLITE_CONSTRAINT | (5<<8)) |
493 #define SQLITE_CONSTRAINT_PRIMARYKEY (SQLITE_CONSTRAINT | (6<<8)) | 501 #define SQLITE_CONSTRAINT_PRIMARYKEY (SQLITE_CONSTRAINT | (6<<8)) |
494 #define SQLITE_CONSTRAINT_TRIGGER (SQLITE_CONSTRAINT | (7<<8)) | 502 #define SQLITE_CONSTRAINT_TRIGGER (SQLITE_CONSTRAINT | (7<<8)) |
495 #define SQLITE_CONSTRAINT_UNIQUE (SQLITE_CONSTRAINT | (8<<8)) | 503 #define SQLITE_CONSTRAINT_UNIQUE (SQLITE_CONSTRAINT | (8<<8)) |
496 #define SQLITE_CONSTRAINT_VTAB (SQLITE_CONSTRAINT | (9<<8)) | 504 #define SQLITE_CONSTRAINT_VTAB (SQLITE_CONSTRAINT | (9<<8)) |
505 #define SQLITE_CONSTRAINT_ROWID (SQLITE_CONSTRAINT |(10<<8)) | |
506 #define SQLITE_NOTICE_RECOVER_WAL (SQLITE_NOTICE | (1<<8)) | |
507 #define SQLITE_NOTICE_RECOVER_ROLLBACK (SQLITE_NOTICE | (2<<8)) | |
508 #define SQLITE_WARNING_AUTOINDEX (SQLITE_WARNING | (1<<8)) | |
497 | 509 |
498 /* | 510 /* |
499 ** CAPI3REF: Flags For File Open Operations | 511 ** CAPI3REF: Flags For File Open Operations |
500 ** | 512 ** |
501 ** These bit values are intended for use in the | 513 ** These bit values are intended for use in the |
545 ** information is written to disk in the same order as calls | 557 ** information is written to disk in the same order as calls |
546 ** to xWrite(). The SQLITE_IOCAP_POWERSAFE_OVERWRITE property means that | 558 ** to xWrite(). The SQLITE_IOCAP_POWERSAFE_OVERWRITE property means that |
547 ** after reboot following a crash or power loss, the only bytes in a | 559 ** after reboot following a crash or power loss, the only bytes in a |
548 ** file that were written at the application level might have changed | 560 ** file that were written at the application level might have changed |
549 ** and that adjacent bytes, even bytes within the same sector are | 561 ** and that adjacent bytes, even bytes within the same sector are |
550 ** guaranteed to be unchanged. | 562 ** guaranteed to be unchanged. The SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN |
563 ** flag indicate that a file cannot be deleted when open. The | |
564 ** SQLITE_IOCAP_IMMUTABLE flag indicates that the file is on | |
565 ** read-only media and cannot be changed even by processes with | |
566 ** elevated privileges. | |
551 */ | 567 */ |
552 #define SQLITE_IOCAP_ATOMIC 0x00000001 | 568 #define SQLITE_IOCAP_ATOMIC 0x00000001 |
553 #define SQLITE_IOCAP_ATOMIC512 0x00000002 | 569 #define SQLITE_IOCAP_ATOMIC512 0x00000002 |
554 #define SQLITE_IOCAP_ATOMIC1K 0x00000004 | 570 #define SQLITE_IOCAP_ATOMIC1K 0x00000004 |
555 #define SQLITE_IOCAP_ATOMIC2K 0x00000008 | 571 #define SQLITE_IOCAP_ATOMIC2K 0x00000008 |
560 #define SQLITE_IOCAP_ATOMIC64K 0x00000100 | 576 #define SQLITE_IOCAP_ATOMIC64K 0x00000100 |
561 #define SQLITE_IOCAP_SAFE_APPEND 0x00000200 | 577 #define SQLITE_IOCAP_SAFE_APPEND 0x00000200 |
562 #define SQLITE_IOCAP_SEQUENTIAL 0x00000400 | 578 #define SQLITE_IOCAP_SEQUENTIAL 0x00000400 |
563 #define SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN 0x00000800 | 579 #define SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN 0x00000800 |
564 #define SQLITE_IOCAP_POWERSAFE_OVERWRITE 0x00001000 | 580 #define SQLITE_IOCAP_POWERSAFE_OVERWRITE 0x00001000 |
581 #define SQLITE_IOCAP_IMMUTABLE 0x00002000 | |
565 | 582 |
566 /* | 583 /* |
567 ** CAPI3REF: File Locking Levels | 584 ** CAPI3REF: File Locking Levels |
568 ** | 585 ** |
569 ** SQLite uses one of these integer values as the second | 586 ** SQLite uses one of these integer values as the second |
731 int (*xShmMap)(sqlite3_file*, int iPg, int pgsz, int, void volatile**); | 748 int (*xShmMap)(sqlite3_file*, int iPg, int pgsz, int, void volatile**); |
732 int (*xShmLock)(sqlite3_file*, int offset, int n, int flags); | 749 int (*xShmLock)(sqlite3_file*, int offset, int n, int flags); |
733 void (*xShmBarrier)(sqlite3_file*); | 750 void (*xShmBarrier)(sqlite3_file*); |
734 int (*xShmUnmap)(sqlite3_file*, int deleteFlag); | 751 int (*xShmUnmap)(sqlite3_file*, int deleteFlag); |
735 /* Methods above are valid for version 2 */ | 752 /* Methods above are valid for version 2 */ |
753 int (*xFetch)(sqlite3_file*, sqlite3_int64 iOfst, int iAmt, void **pp); | |
754 int (*xUnfetch)(sqlite3_file*, sqlite3_int64 iOfst, void *p); | |
755 /* Methods above are valid for version 3 */ | |
736 /* Additional methods may be added in future releases */ | 756 /* Additional methods may be added in future releases */ |
737 }; | 757 }; |
738 | 758 |
739 /* | 759 /* |
740 ** CAPI3REF: Standard File Control Opcodes | 760 ** CAPI3REF: Standard File Control Opcodes |
773 ** to the [sqlite3_file] object associated with a particular database | 793 ** to the [sqlite3_file] object associated with a particular database |
774 ** connection. See the [sqlite3_file_control()] documentation for | 794 ** connection. See the [sqlite3_file_control()] documentation for |
775 ** additional information. | 795 ** additional information. |
776 ** | 796 ** |
777 ** <li>[[SQLITE_FCNTL_SYNC_OMITTED]] | 797 ** <li>[[SQLITE_FCNTL_SYNC_OMITTED]] |
778 ** ^(The [SQLITE_FCNTL_SYNC_OMITTED] opcode is generated internally by | 798 ** No longer in use. |
779 ** SQLite and sent to all VFSes in place of a call to the xSync method | 799 ** |
780 ** when the database connection has [PRAGMA synchronous] set to OFF.)^ | 800 ** <li>[[SQLITE_FCNTL_SYNC]] |
781 ** Some specialized VFSes need this signal in order to operate correctly | 801 ** The [SQLITE_FCNTL_SYNC] opcode is generated internally by SQLite and |
782 ** when [PRAGMA synchronous | PRAGMA synchronous=OFF] is set, but most | 802 ** sent to the VFS immediately before the xSync method is invoked on a |
783 ** VFSes do not need this signal and should silently ignore this opcode. | 803 ** database file descriptor. Or, if the xSync method is not invoked |
784 ** Applications should not call [sqlite3_file_control()] with this | 804 ** because the user has configured SQLite with |
785 ** opcode as doing so may disrupt the operation of the specialized VFSes | 805 ** [PRAGMA synchronous | PRAGMA synchronous=OFF] it is invoked in place |
786 ** that do require it. | 806 ** of the xSync method. In most cases, the pointer argument passed with |
807 ** this file-control is NULL. However, if the database file is being synced | |
808 ** as part of a multi-database commit, the argument points to a nul-terminated | |
809 ** string containing the transactions master-journal file name. VFSes that | |
810 ** do not need this signal should silently ignore this opcode. Applications | |
811 ** should not call [sqlite3_file_control()] with this opcode as doing so may | |
812 ** disrupt the operation of the specialized VFSes that do require it. | |
813 ** | |
814 ** <li>[[SQLITE_FCNTL_COMMIT_PHASETWO]] | |
815 ** The [SQLITE_FCNTL_COMMIT_PHASETWO] opcode is generated internally by SQLite | |
816 ** and sent to the VFS after a transaction has been committed immediately | |
817 ** but before the database is unlocked. VFSes that do not need this signal | |
818 ** should silently ignore this opcode. Applications should not call | |
819 ** [sqlite3_file_control()] with this opcode as doing so may disrupt the | |
820 ** operation of the specialized VFSes that do require it. | |
787 ** | 821 ** |
788 ** <li>[[SQLITE_FCNTL_WIN32_AV_RETRY]] | 822 ** <li>[[SQLITE_FCNTL_WIN32_AV_RETRY]] |
789 ** ^The [SQLITE_FCNTL_WIN32_AV_RETRY] opcode is used to configure automatic | 823 ** ^The [SQLITE_FCNTL_WIN32_AV_RETRY] opcode is used to configure automatic |
790 ** retry counts and intervals for certain disk I/O operations for the | 824 ** retry counts and intervals for certain disk I/O operations for the |
791 ** windows [VFS] in order to provide robustness in the presence of | 825 ** windows [VFS] in order to provide robustness in the presence of |
867 ** compilation of the PRAGMA fails with an error. ^The [SQLITE_FCNTL_PRAGMA] | 901 ** compilation of the PRAGMA fails with an error. ^The [SQLITE_FCNTL_PRAGMA] |
868 ** file control occurs at the beginning of pragma statement analysis and so | 902 ** file control occurs at the beginning of pragma statement analysis and so |
869 ** it is able to override built-in [PRAGMA] statements. | 903 ** it is able to override built-in [PRAGMA] statements. |
870 ** | 904 ** |
871 ** <li>[[SQLITE_FCNTL_BUSYHANDLER]] | 905 ** <li>[[SQLITE_FCNTL_BUSYHANDLER]] |
872 ** ^This file-control may be invoked by SQLite on the database file handle | 906 ** ^The [SQLITE_FCNTL_BUSYHANDLER] |
907 ** file-control may be invoked by SQLite on the database file handle | |
873 ** shortly after it is opened in order to provide a custom VFS with access | 908 ** shortly after it is opened in order to provide a custom VFS with access |
874 ** to the connections busy-handler callback. The argument is of type (void **) | 909 ** to the connections busy-handler callback. The argument is of type (void **) |
875 ** - an array of two (void *) values. The first (void *) actually points | 910 ** - an array of two (void *) values. The first (void *) actually points |
876 ** to a function of type (int (*)(void *)). In order to invoke the connections | 911 ** to a function of type (int (*)(void *)). In order to invoke the connections |
877 ** busy-handler, this function should be invoked with the second (void *) in | 912 ** busy-handler, this function should be invoked with the second (void *) in |
878 ** the array as the only argument. If it returns non-zero, then the operation | 913 ** the array as the only argument. If it returns non-zero, then the operation |
879 ** should be retried. If it returns zero, the custom VFS should abandon the | 914 ** should be retried. If it returns zero, the custom VFS should abandon the |
880 ** current operation. | 915 ** current operation. |
881 ** | 916 ** |
882 ** <li>[[SQLITE_FCNTL_TEMPFILENAME]] | 917 ** <li>[[SQLITE_FCNTL_TEMPFILENAME]] |
883 ** ^Application can invoke this file-control to have SQLite generate a | 918 ** ^Application can invoke the [SQLITE_FCNTL_TEMPFILENAME] file-control |
919 ** to have SQLite generate a | |
884 ** temporary filename using the same algorithm that is followed to generate | 920 ** temporary filename using the same algorithm that is followed to generate |
885 ** temporary filenames for TEMP tables and other internal uses. The | 921 ** temporary filenames for TEMP tables and other internal uses. The |
886 ** argument should be a char** which will be filled with the filename | 922 ** argument should be a char** which will be filled with the filename |
887 ** written into memory obtained from [sqlite3_malloc()]. The caller should | 923 ** written into memory obtained from [sqlite3_malloc()]. The caller should |
888 ** invoke [sqlite3_free()] on the result to avoid a memory leak. | 924 ** invoke [sqlite3_free()] on the result to avoid a memory leak. |
925 ** | |
926 ** <li>[[SQLITE_FCNTL_MMAP_SIZE]] | |
927 ** The [SQLITE_FCNTL_MMAP_SIZE] file control is used to query or set the | |
928 ** maximum number of bytes that will be used for memory-mapped I/O. | |
929 ** The argument is a pointer to a value of type sqlite3_int64 that | |
930 ** is an advisory maximum number of bytes in the file to memory map. The | |
931 ** pointer is overwritten with the old value. The limit is not changed if | |
932 ** the value originally pointed to is negative, and so the current limit | |
933 ** can be queried by passing in a pointer to a negative number. This | |
934 ** file-control is used internally to implement [PRAGMA mmap_size]. | |
935 ** | |
936 ** <li>[[SQLITE_FCNTL_TRACE]] | |
937 ** The [SQLITE_FCNTL_TRACE] file control provides advisory information | |
938 ** to the VFS about what the higher layers of the SQLite stack are doing. | |
939 ** This file control is used by some VFS activity tracing [shims]. | |
940 ** The argument is a zero-terminated string. Higher layers in the | |
941 ** SQLite stack may generate instances of this file control if | |
942 ** the [SQLITE_USE_FCNTL_TRACE] compile-time option is enabled. | |
943 ** | |
944 ** <li>[[SQLITE_FCNTL_HAS_MOVED]] | |
945 ** The [SQLITE_FCNTL_HAS_MOVED] file control interprets its argument as a | |
946 ** pointer to an integer and it writes a boolean into that integer depending | |
947 ** on whether or not the file has been renamed, moved, or deleted since it | |
948 ** was first opened. | |
949 ** | |
950 ** <li>[[SQLITE_FCNTL_WIN32_SET_HANDLE]] | |
951 ** The [SQLITE_FCNTL_WIN32_SET_HANDLE] opcode is used for debugging. This | |
952 ** opcode causes the xFileControl method to swap the file handle with the one | |
953 ** pointed to by the pArg argument. This capability is used during testing | |
954 ** and only needs to be supported when SQLITE_TEST is defined. | |
889 ** | 955 ** |
890 ** </ul> | 956 ** </ul> |
891 */ | 957 */ |
892 #define SQLITE_FCNTL_LOCKSTATE 1 | 958 #define SQLITE_FCNTL_LOCKSTATE 1 |
893 #define SQLITE_GET_LOCKPROXYFILE 2 | 959 #define SQLITE_GET_LOCKPROXYFILE 2 |
903 #define SQLITE_FCNTL_VFSNAME 12 | 969 #define SQLITE_FCNTL_VFSNAME 12 |
904 #define SQLITE_FCNTL_POWERSAFE_OVERWRITE 13 | 970 #define SQLITE_FCNTL_POWERSAFE_OVERWRITE 13 |
905 #define SQLITE_FCNTL_PRAGMA 14 | 971 #define SQLITE_FCNTL_PRAGMA 14 |
906 #define SQLITE_FCNTL_BUSYHANDLER 15 | 972 #define SQLITE_FCNTL_BUSYHANDLER 15 |
907 #define SQLITE_FCNTL_TEMPFILENAME 16 | 973 #define SQLITE_FCNTL_TEMPFILENAME 16 |
974 #define SQLITE_FCNTL_MMAP_SIZE 18 | |
975 #define SQLITE_FCNTL_TRACE 19 | |
976 #define SQLITE_FCNTL_HAS_MOVED 20 | |
977 #define SQLITE_FCNTL_SYNC 21 | |
978 #define SQLITE_FCNTL_COMMIT_PHASETWO 22 | |
979 #define SQLITE_FCNTL_WIN32_SET_HANDLE 23 | |
908 | 980 |
909 /* | 981 /* |
910 ** CAPI3REF: Mutex Handle | 982 ** CAPI3REF: Mutex Handle |
911 ** | 983 ** |
912 ** The mutex module within SQLite defines [sqlite3_mutex] to be an | 984 ** The mutex module within SQLite defines [sqlite3_mutex] to be an |
1347 ** of 8. Some allocators round up to a larger multiple or to a power of 2. | 1419 ** of 8. Some allocators round up to a larger multiple or to a power of 2. |
1348 ** Every memory allocation request coming in through [sqlite3_malloc()] | 1420 ** Every memory allocation request coming in through [sqlite3_malloc()] |
1349 ** or [sqlite3_realloc()] first calls xRoundup. If xRoundup returns 0, | 1421 ** or [sqlite3_realloc()] first calls xRoundup. If xRoundup returns 0, |
1350 ** that causes the corresponding memory allocation to fail. | 1422 ** that causes the corresponding memory allocation to fail. |
1351 ** | 1423 ** |
1352 ** The xInit method initializes the memory allocator. (For example, | 1424 ** The xInit method initializes the memory allocator. For example, |
1353 ** it might allocate any require mutexes or initialize internal data | 1425 ** it might allocate any require mutexes or initialize internal data |
1354 ** structures. The xShutdown method is invoked (indirectly) by | 1426 ** structures. The xShutdown method is invoked (indirectly) by |
1355 ** [sqlite3_shutdown()] and should deallocate any resources acquired | 1427 ** [sqlite3_shutdown()] and should deallocate any resources acquired |
1356 ** by xInit. The pAppData pointer is used as the only parameter to | 1428 ** by xInit. The pAppData pointer is used as the only parameter to |
1357 ** xInit and xShutdown. | 1429 ** xInit and xShutdown. |
1569 ** <dd> ^(This option takes a single argument which is a pointer to an | 1641 ** <dd> ^(This option takes a single argument which is a pointer to an |
1570 ** [sqlite3_pcache_methods2] object. SQLite copies of the current | 1642 ** [sqlite3_pcache_methods2] object. SQLite copies of the current |
1571 ** page cache implementation into that object.)^ </dd> | 1643 ** page cache implementation into that object.)^ </dd> |
1572 ** | 1644 ** |
1573 ** [[SQLITE_CONFIG_LOG]] <dt>SQLITE_CONFIG_LOG</dt> | 1645 ** [[SQLITE_CONFIG_LOG]] <dt>SQLITE_CONFIG_LOG</dt> |
1574 ** <dd> ^The SQLITE_CONFIG_LOG option takes two arguments: a pointer to a | 1646 ** <dd> The SQLITE_CONFIG_LOG option is used to configure the SQLite |
1647 ** global [error log]. | |
1648 ** (^The SQLITE_CONFIG_LOG option takes two arguments: a pointer to a | |
1575 ** function with a call signature of void(*)(void*,int,const char*), | 1649 ** function with a call signature of void(*)(void*,int,const char*), |
1576 ** and a pointer to void. ^If the function pointer is not NULL, it is | 1650 ** and a pointer to void. ^If the function pointer is not NULL, it is |
1577 ** invoked by [sqlite3_log()] to process each logging event. ^If the | 1651 ** invoked by [sqlite3_log()] to process each logging event. ^If the |
1578 ** function pointer is NULL, the [sqlite3_log()] interface becomes a no-op. | 1652 ** function pointer is NULL, the [sqlite3_log()] interface becomes a no-op. |
1579 ** ^The void pointer that is the second argument to SQLITE_CONFIG_LOG is | 1653 ** ^The void pointer that is the second argument to SQLITE_CONFIG_LOG is |
1587 ** supplied by the application must not invoke any SQLite interface. | 1661 ** supplied by the application must not invoke any SQLite interface. |
1588 ** In a multi-threaded application, the application-defined logger | 1662 ** In a multi-threaded application, the application-defined logger |
1589 ** function must be threadsafe. </dd> | 1663 ** function must be threadsafe. </dd> |
1590 ** | 1664 ** |
1591 ** [[SQLITE_CONFIG_URI]] <dt>SQLITE_CONFIG_URI | 1665 ** [[SQLITE_CONFIG_URI]] <dt>SQLITE_CONFIG_URI |
1592 ** <dd> This option takes a single argument of type int. If non-zero, then | 1666 ** <dd>^(This option takes a single argument of type int. If non-zero, then |
1593 ** URI handling is globally enabled. If the parameter is zero, then URI handling | 1667 ** URI handling is globally enabled. If the parameter is zero, then URI handling |
1594 ** is globally disabled. If URI handling is globally enabled, all filenames | 1668 ** is globally disabled.)^ ^If URI handling is globally enabled, all filenames |
1595 ** passed to [sqlite3_open()], [sqlite3_open_v2()], [sqlite3_open16()] or | 1669 ** passed to [sqlite3_open()], [sqlite3_open_v2()], [sqlite3_open16()] or |
1596 ** specified as part of [ATTACH] commands are interpreted as URIs, regardless | 1670 ** specified as part of [ATTACH] commands are interpreted as URIs, regardless |
1597 ** of whether or not the [SQLITE_OPEN_URI] flag is set when the database | 1671 ** of whether or not the [SQLITE_OPEN_URI] flag is set when the database |
1598 ** connection is opened. If it is globally disabled, filenames are | 1672 ** connection is opened. ^If it is globally disabled, filenames are |
1599 ** only interpreted as URIs if the SQLITE_OPEN_URI flag is set when the | 1673 ** only interpreted as URIs if the SQLITE_OPEN_URI flag is set when the |
1600 ** database connection is opened. By default, URI handling is globally | 1674 ** database connection is opened. ^(By default, URI handling is globally |
1601 ** disabled. The default value may be changed by compiling with the | 1675 ** disabled. The default value may be changed by compiling with the |
1602 ** [SQLITE_USE_URI] symbol defined. | 1676 ** [SQLITE_USE_URI] symbol defined.)^ |
1603 ** | 1677 ** |
1604 ** [[SQLITE_CONFIG_COVERING_INDEX_SCAN]] <dt>SQLITE_CONFIG_COVERING_INDEX_SCAN | 1678 ** [[SQLITE_CONFIG_COVERING_INDEX_SCAN]] <dt>SQLITE_CONFIG_COVERING_INDEX_SCAN |
1605 ** <dd> This option takes a single integer argument which is interpreted as | 1679 ** <dd>^This option takes a single integer argument which is interpreted as |
1606 ** a boolean in order to enable or disable the use of covering indices for | 1680 ** a boolean in order to enable or disable the use of covering indices for |
1607 ** full table scans in the query optimizer. The default setting is determined | 1681 ** full table scans in the query optimizer. ^The default setting is determined |
1608 ** by the [SQLITE_ALLOW_COVERING_INDEX_SCAN] compile-time option, or is "on" | 1682 ** by the [SQLITE_ALLOW_COVERING_INDEX_SCAN] compile-time option, or is "on" |
1609 ** if that compile-time option is omitted. | 1683 ** if that compile-time option is omitted. |
1610 ** The ability to disable the use of covering indices for full table scans | 1684 ** The ability to disable the use of covering indices for full table scans |
1611 ** is because some incorrectly coded legacy applications might malfunction | 1685 ** is because some incorrectly coded legacy applications might malfunction |
1612 ** malfunction when the optimization is enabled. Providing the ability to | 1686 ** when the optimization is enabled. Providing the ability to |
1613 ** disable the optimization allows the older, buggy application code to work | 1687 ** disable the optimization allows the older, buggy application code to work |
1614 ** without change even with newer versions of SQLite. | 1688 ** without change even with newer versions of SQLite. |
1615 ** | 1689 ** |
1616 ** [[SQLITE_CONFIG_PCACHE]] [[SQLITE_CONFIG_GETPCACHE]] | 1690 ** [[SQLITE_CONFIG_PCACHE]] [[SQLITE_CONFIG_GETPCACHE]] |
1617 ** <dt>SQLITE_CONFIG_PCACHE and SQLITE_CONFIG_GETPCACHE | 1691 ** <dt>SQLITE_CONFIG_PCACHE and SQLITE_CONFIG_GETPCACHE |
1618 ** <dd> These options are obsolete and should not be used by new code. | 1692 ** <dd> These options are obsolete and should not be used by new code. |
1619 ** They are retained for backwards compatibility but are now no-ops. | 1693 ** They are retained for backwards compatibility but are now no-ops. |
1620 ** </dl> | 1694 ** </dd> |
1621 ** | 1695 ** |
1622 ** [[SQLITE_CONFIG_SQLLOG]] | 1696 ** [[SQLITE_CONFIG_SQLLOG]] |
1623 ** <dt>SQLITE_CONFIG_SQLLOG | 1697 ** <dt>SQLITE_CONFIG_SQLLOG |
1624 ** <dd>This option is only available if sqlite is compiled with the | 1698 ** <dd>This option is only available if sqlite is compiled with the |
1625 ** SQLITE_ENABLE_SQLLOG pre-processor macro defined. The first argument should | 1699 ** [SQLITE_ENABLE_SQLLOG] pre-processor macro defined. The first argument should |
1626 ** be a pointer to a function of type void(*)(void*,sqlite3*,const char*, int). | 1700 ** be a pointer to a function of type void(*)(void*,sqlite3*,const char*, int). |
1627 ** The second should be of type (void*). The callback is invoked by the library | 1701 ** The second should be of type (void*). The callback is invoked by the library |
1628 ** in three separate circumstances, identified by the value passed as the | 1702 ** in three separate circumstances, identified by the value passed as the |
1629 ** fourth parameter. If the fourth parameter is 0, then the database connection | 1703 ** fourth parameter. If the fourth parameter is 0, then the database connection |
1630 ** passed as the second argument has just been opened. The third argument | 1704 ** passed as the second argument has just been opened. The third argument |
1631 ** points to a buffer containing the name of the main database file. If the | 1705 ** points to a buffer containing the name of the main database file. If the |
1632 ** fourth parameter is 1, then the SQL statement that the third parameter | 1706 ** fourth parameter is 1, then the SQL statement that the third parameter |
1633 ** points to has just been executed. Or, if the fourth parameter is 2, then | 1707 ** points to has just been executed. Or, if the fourth parameter is 2, then |
1634 ** the connection being passed as the second parameter is being closed. The | 1708 ** the connection being passed as the second parameter is being closed. The |
1635 ** third parameter is passed NULL In this case. | 1709 ** third parameter is passed NULL In this case. An example of using this |
1710 ** configuration option can be seen in the "test_sqllog.c" source file in | |
1711 ** the canonical SQLite source tree.</dd> | |
1712 ** | |
1713 ** [[SQLITE_CONFIG_MMAP_SIZE]] | |
1714 ** <dt>SQLITE_CONFIG_MMAP_SIZE | |
1715 ** <dd>^SQLITE_CONFIG_MMAP_SIZE takes two 64-bit integer (sqlite3_int64) values | |
1716 ** that are the default mmap size limit (the default setting for | |
1717 ** [PRAGMA mmap_size]) and the maximum allowed mmap size limit. | |
1718 ** ^The default setting can be overridden by each database connection using | |
1719 ** either the [PRAGMA mmap_size] command, or by using the | |
1720 ** [SQLITE_FCNTL_MMAP_SIZE] file control. ^(The maximum allowed mmap size | |
1721 ** cannot be changed at run-time. Nor may the maximum allowed mmap size | |
1722 ** exceed the compile-time maximum mmap size set by the | |
1723 ** [SQLITE_MAX_MMAP_SIZE] compile-time option.)^ | |
1724 ** ^If either argument to this option is negative, then that argument is | |
1725 ** changed to its compile-time default. | |
1726 ** | |
1727 ** [[SQLITE_CONFIG_WIN32_HEAPSIZE]] | |
1728 ** <dt>SQLITE_CONFIG_WIN32_HEAPSIZE | |
1729 ** <dd>^This option is only available if SQLite is compiled for Windows | |
1730 ** with the [SQLITE_WIN32_MALLOC] pre-processor macro defined. | |
1731 ** SQLITE_CONFIG_WIN32_HEAPSIZE takes a 32-bit unsigned integer value | |
1732 ** that specifies the maximum size of the created heap. | |
1636 ** </dl> | 1733 ** </dl> |
1637 */ | 1734 */ |
1638 #define SQLITE_CONFIG_SINGLETHREAD 1 /* nil */ | 1735 #define SQLITE_CONFIG_SINGLETHREAD 1 /* nil */ |
1639 #define SQLITE_CONFIG_MULTITHREAD 2 /* nil */ | 1736 #define SQLITE_CONFIG_MULTITHREAD 2 /* nil */ |
1640 #define SQLITE_CONFIG_SERIALIZED 3 /* nil */ | 1737 #define SQLITE_CONFIG_SERIALIZED 3 /* nil */ |
1654 #define SQLITE_CONFIG_URI 17 /* int */ | 1751 #define SQLITE_CONFIG_URI 17 /* int */ |
1655 #define SQLITE_CONFIG_PCACHE2 18 /* sqlite3_pcache_methods2* */ | 1752 #define SQLITE_CONFIG_PCACHE2 18 /* sqlite3_pcache_methods2* */ |
1656 #define SQLITE_CONFIG_GETPCACHE2 19 /* sqlite3_pcache_methods2* */ | 1753 #define SQLITE_CONFIG_GETPCACHE2 19 /* sqlite3_pcache_methods2* */ |
1657 #define SQLITE_CONFIG_COVERING_INDEX_SCAN 20 /* int */ | 1754 #define SQLITE_CONFIG_COVERING_INDEX_SCAN 20 /* int */ |
1658 #define SQLITE_CONFIG_SQLLOG 21 /* xSqllog, void* */ | 1755 #define SQLITE_CONFIG_SQLLOG 21 /* xSqllog, void* */ |
1756 #define SQLITE_CONFIG_MMAP_SIZE 22 /* sqlite3_int64, sqlite3_int64 */ | |
1757 #define SQLITE_CONFIG_WIN32_HEAPSIZE 23 /* int nByte */ | |
1659 | 1758 |
1660 /* | 1759 /* |
1661 ** CAPI3REF: Database Connection Configuration Options | 1760 ** CAPI3REF: Database Connection Configuration Options |
1662 ** | 1761 ** |
1663 ** These constants are the available integer configuration options that | 1762 ** These constants are the available integer configuration options that |
1730 SQLITE_API int sqlite3_extended_result_codes(sqlite3*, int onoff); | 1829 SQLITE_API int sqlite3_extended_result_codes(sqlite3*, int onoff); |
1731 | 1830 |
1732 /* | 1831 /* |
1733 ** CAPI3REF: Last Insert Rowid | 1832 ** CAPI3REF: Last Insert Rowid |
1734 ** | 1833 ** |
1735 ** ^Each entry in an SQLite table has a unique 64-bit signed | 1834 ** ^Each entry in most SQLite tables (except for [WITHOUT ROWID] tables) |
1835 ** has a unique 64-bit signed | |
1736 ** integer key called the [ROWID | "rowid"]. ^The rowid is always available | 1836 ** integer key called the [ROWID | "rowid"]. ^The rowid is always available |
1737 ** as an undeclared column named ROWID, OID, or _ROWID_ as long as those | 1837 ** as an undeclared column named ROWID, OID, or _ROWID_ as long as those |
1738 ** names are not also used by explicitly declared columns. ^If | 1838 ** names are not also used by explicitly declared columns. ^If |
1739 ** the table has a column of type [INTEGER PRIMARY KEY] then that column | 1839 ** the table has a column of type [INTEGER PRIMARY KEY] then that column |
1740 ** is another alias for the rowid. | 1840 ** is another alias for the rowid. |
1741 ** | 1841 ** |
1742 ** ^This routine returns the [rowid] of the most recent | 1842 ** ^The sqlite3_last_insert_rowid(D) interface returns the [rowid] of the |
1743 ** successful [INSERT] into the database from the [database connection] | 1843 ** most recent successful [INSERT] into a rowid table or [virtual table] |
1744 ** in the first argument. ^As of SQLite version 3.7.7, this routines | 1844 ** on database connection D. |
1745 ** records the last insert rowid of both ordinary tables and [virtual tables]. | 1845 ** ^Inserts into [WITHOUT ROWID] tables are not recorded. |
1746 ** ^If no successful [INSERT]s | 1846 ** ^If no successful [INSERT]s into rowid tables |
1747 ** have ever occurred on that database connection, zero is returned. | 1847 ** have ever occurred on the database connection D, |
1848 ** then sqlite3_last_insert_rowid(D) returns zero. | |
1748 ** | 1849 ** |
1749 ** ^(If an [INSERT] occurs within a trigger or within a [virtual table] | 1850 ** ^(If an [INSERT] occurs within a trigger or within a [virtual table] |
1750 ** method, then this routine will return the [rowid] of the inserted | 1851 ** method, then this routine will return the [rowid] of the inserted |
1751 ** row as long as the trigger or virtual table method is running. | 1852 ** row as long as the trigger or virtual table method is running. |
1752 ** But once the trigger or virtual table method ends, the value returned | 1853 ** But once the trigger or virtual table method ends, the value returned |
2308 ** already uses the largest possible [ROWID]. The PRNG is also used for | 2409 ** already uses the largest possible [ROWID]. The PRNG is also used for |
2309 ** the build-in random() and randomblob() SQL functions. This interface allows | 2410 ** the build-in random() and randomblob() SQL functions. This interface allows |
2310 ** applications to access the same PRNG for other purposes. | 2411 ** applications to access the same PRNG for other purposes. |
2311 ** | 2412 ** |
2312 ** ^A call to this routine stores N bytes of randomness into buffer P. | 2413 ** ^A call to this routine stores N bytes of randomness into buffer P. |
2313 ** | 2414 ** ^If N is less than one, then P can be a NULL pointer. |
2314 ** ^The first time this routine is invoked (either internally or by | 2415 ** |
2315 ** the application) the PRNG is seeded using randomness obtained | 2416 ** ^If this routine has not been previously called or if the previous |
2316 ** from the xRandomness method of the default [sqlite3_vfs] object. | 2417 ** call had N less than one, then the PRNG is seeded using randomness |
2317 ** ^On all subsequent invocations, the pseudo-randomness is generated | 2418 ** obtained from the xRandomness method of the default [sqlite3_vfs] object. |
2419 ** ^If the previous call to this routine had an N of 1 or more then | |
2420 ** the pseudo-randomness is generated | |
2318 ** internally and without recourse to the [sqlite3_vfs] xRandomness | 2421 ** internally and without recourse to the [sqlite3_vfs] xRandomness |
2319 ** method. | 2422 ** method. |
2320 */ | 2423 */ |
2321 SQLITE_API void sqlite3_randomness(int N, void *P); | 2424 SQLITE_API void sqlite3_randomness(int N, void *P); |
2322 | 2425 |
2472 #define SQLITE_CREATE_VTABLE 29 /* Table Name Module Name */ | 2575 #define SQLITE_CREATE_VTABLE 29 /* Table Name Module Name */ |
2473 #define SQLITE_DROP_VTABLE 30 /* Table Name Module Name */ | 2576 #define SQLITE_DROP_VTABLE 30 /* Table Name Module Name */ |
2474 #define SQLITE_FUNCTION 31 /* NULL Function Name */ | 2577 #define SQLITE_FUNCTION 31 /* NULL Function Name */ |
2475 #define SQLITE_SAVEPOINT 32 /* Operation Savepoint Name */ | 2578 #define SQLITE_SAVEPOINT 32 /* Operation Savepoint Name */ |
2476 #define SQLITE_COPY 0 /* No longer used */ | 2579 #define SQLITE_COPY 0 /* No longer used */ |
2580 #define SQLITE_RECURSIVE 33 /* NULL NULL */ | |
2477 | 2581 |
2478 /* | 2582 /* |
2479 ** CAPI3REF: Tracing And Profiling Functions | 2583 ** CAPI3REF: Tracing And Profiling Functions |
2480 ** | 2584 ** |
2481 ** These routines register callback functions that can be used for | 2585 ** These routines register callback functions that can be used for |
2486 ** ^The sqlite3_trace() callback is invoked with a UTF-8 rendering of the | 2590 ** ^The sqlite3_trace() callback is invoked with a UTF-8 rendering of the |
2487 ** SQL statement text as the statement first begins executing. | 2591 ** SQL statement text as the statement first begins executing. |
2488 ** ^(Additional sqlite3_trace() callbacks might occur | 2592 ** ^(Additional sqlite3_trace() callbacks might occur |
2489 ** as each triggered subprogram is entered. The callbacks for triggers | 2593 ** as each triggered subprogram is entered. The callbacks for triggers |
2490 ** contain a UTF-8 SQL comment that identifies the trigger.)^ | 2594 ** contain a UTF-8 SQL comment that identifies the trigger.)^ |
2595 ** | |
2596 ** The [SQLITE_TRACE_SIZE_LIMIT] compile-time option can be used to limit | |
2597 ** the length of [bound parameter] expansion in the output of sqlite3_trace(). | |
2491 ** | 2598 ** |
2492 ** ^The callback function registered by sqlite3_profile() is invoked | 2599 ** ^The callback function registered by sqlite3_profile() is invoked |
2493 ** as each SQL statement finishes. ^The profile callback contains | 2600 ** as each SQL statement finishes. ^The profile callback contains |
2494 ** the original statement text and an estimate of wall-clock time | 2601 ** the original statement text and an estimate of wall-clock time |
2495 ** of how long that statement took to run. ^The profile callback | 2602 ** of how long that statement took to run. ^The profile callback |
2512 ** [sqlite3_exec()], [sqlite3_step()] and [sqlite3_get_table()] for | 2619 ** [sqlite3_exec()], [sqlite3_step()] and [sqlite3_get_table()] for |
2513 ** database connection D. An example use for this | 2620 ** database connection D. An example use for this |
2514 ** interface is to keep a GUI updated during a large query. | 2621 ** interface is to keep a GUI updated during a large query. |
2515 ** | 2622 ** |
2516 ** ^The parameter P is passed through as the only parameter to the | 2623 ** ^The parameter P is passed through as the only parameter to the |
2517 ** callback function X. ^The parameter N is the number of | 2624 ** callback function X. ^The parameter N is the approximate number of |
2518 ** [virtual machine instructions] that are evaluated between successive | 2625 ** [virtual machine instructions] that are evaluated between successive |
2519 ** invocations of the callback X. | 2626 ** invocations of the callback X. ^If N is less than one then the progress |
2627 ** handler is disabled. | |
2520 ** | 2628 ** |
2521 ** ^Only a single progress handler may be defined at one time per | 2629 ** ^Only a single progress handler may be defined at one time per |
2522 ** [database connection]; setting a new progress handler cancels the | 2630 ** [database connection]; setting a new progress handler cancels the |
2523 ** old one. ^Setting parameter X to NULL disables the progress handler. | 2631 ** old one. ^Setting parameter X to NULL disables the progress handler. |
2524 ** ^The progress handler is also disabled by setting N to a value less | 2632 ** ^The progress handler is also disabled by setting N to a value less |
2678 ** "private". ^Setting it to "shared" is equivalent to setting the | 2786 ** "private". ^Setting it to "shared" is equivalent to setting the |
2679 ** SQLITE_OPEN_SHAREDCACHE bit in the flags argument passed to | 2787 ** SQLITE_OPEN_SHAREDCACHE bit in the flags argument passed to |
2680 ** sqlite3_open_v2(). ^Setting the cache parameter to "private" is | 2788 ** sqlite3_open_v2(). ^Setting the cache parameter to "private" is |
2681 ** equivalent to setting the SQLITE_OPEN_PRIVATECACHE bit. | 2789 ** equivalent to setting the SQLITE_OPEN_PRIVATECACHE bit. |
2682 ** ^If sqlite3_open_v2() is used and the "cache" parameter is present in | 2790 ** ^If sqlite3_open_v2() is used and the "cache" parameter is present in |
2683 ** a URI filename, its value overrides any behaviour requested by setting | 2791 ** a URI filename, its value overrides any behavior requested by setting |
2684 ** SQLITE_OPEN_PRIVATECACHE or SQLITE_OPEN_SHAREDCACHE flag. | 2792 ** SQLITE_OPEN_PRIVATECACHE or SQLITE_OPEN_SHAREDCACHE flag. |
2793 ** | |
2794 ** <li> <b>psow</b>: ^The psow parameter may be "true" (or "on" or "yes" or | |
2795 ** "1") or "false" (or "off" or "no" or "0") to indicate that the | |
2796 ** [powersafe overwrite] property does or does not apply to the | |
2797 ** storage media on which the database file resides. ^The psow query | |
2798 ** parameter only works for the built-in unix and Windows VFSes. | |
2799 ** | |
2800 ** <li> <b>nolock</b>: ^The nolock parameter is a boolean query parameter | |
2801 ** which if set disables file locking in rollback journal modes. This | |
2802 ** is useful for accessing a database on a filesystem that does not | |
2803 ** support locking. Caution: Database corruption might result if two | |
2804 ** or more processes write to the same database and any one of those | |
2805 ** processes uses nolock=1. | |
2806 ** | |
2807 ** <li> <b>immutable</b>: ^The immutable parameter is a boolean query | |
2808 ** parameter that indicates that the database file is stored on | |
2809 ** read-only media. ^When immutable is set, SQLite assumes that the | |
2810 ** database file cannot be changed, even by a process with higher | |
2811 ** privilege, and so the database is opened read-only and all locking | |
2812 ** and change detection is disabled. Caution: Setting the immutable | |
2813 ** property on a database file that does in fact change can result | |
2814 ** in incorrect query results and/or [SQLITE_CORRUPT] errors. | |
2815 ** See also: [SQLITE_IOCAP_IMMUTABLE]. | |
2816 ** | |
2685 ** </ul> | 2817 ** </ul> |
2686 ** | 2818 ** |
2687 ** ^Specifying an unknown parameter in the query component of a URI is not an | 2819 ** ^Specifying an unknown parameter in the query component of a URI is not an |
2688 ** error. Future versions of SQLite might understand additional query | 2820 ** error. Future versions of SQLite might understand additional query |
2689 ** parameters. See "[query parameters with special meaning to SQLite]" for | 2821 ** parameters. See "[query parameters with special meaning to SQLite]" for |
2709 ** in URI filenames. | 2841 ** in URI filenames. |
2710 ** <tr><td> file:data.db?mode=ro&cache=private <td> | 2842 ** <tr><td> file:data.db?mode=ro&cache=private <td> |
2711 ** Open file "data.db" in the current directory for read-only access. | 2843 ** Open file "data.db" in the current directory for read-only access. |
2712 ** Regardless of whether or not shared-cache mode is enabled by | 2844 ** Regardless of whether or not shared-cache mode is enabled by |
2713 ** default, use a private cache. | 2845 ** default, use a private cache. |
2714 ** <tr><td> file:/home/fred/data.db?vfs=unix-nolock <td> | 2846 ** <tr><td> file:/home/fred/data.db?vfs=unix-dotfile <td> |
2715 ** Open file "/home/fred/data.db". Use the special VFS "unix-nolock". | 2847 ** Open file "/home/fred/data.db". Use the special VFS "unix-dotfile" |
2848 ** that uses dot-files in place of posix advisory locking. | |
2716 ** <tr><td> file:data.db?mode=readonly <td> | 2849 ** <tr><td> file:data.db?mode=readonly <td> |
2717 ** An error. "readonly" is not a valid option for the "mode" parameter. | 2850 ** An error. "readonly" is not a valid option for the "mode" parameter. |
2718 ** </table> | 2851 ** </table> |
2719 ** | 2852 ** |
2720 ** ^URI hexadecimal escape sequences (%HH) are supported within the path and | 2853 ** ^URI hexadecimal escape sequences (%HH) are supported within the path and |
3025 ** | 3158 ** |
3026 ** <ol> | 3159 ** <ol> |
3027 ** <li> | 3160 ** <li> |
3028 ** ^If the database schema changes, instead of returning [SQLITE_SCHEMA] as it | 3161 ** ^If the database schema changes, instead of returning [SQLITE_SCHEMA] as it |
3029 ** always used to do, [sqlite3_step()] will automatically recompile the SQL | 3162 ** always used to do, [sqlite3_step()] will automatically recompile the SQL |
3030 ** statement and try to run it again. | 3163 ** statement and try to run it again. As many as [SQLITE_MAX_SCHEMA_RETRY] |
3164 ** retries will occur before sqlite3_step() gives up and returns an error. | |
3031 ** </li> | 3165 ** </li> |
3032 ** | 3166 ** |
3033 ** <li> | 3167 ** <li> |
3034 ** ^When an error occurs, [sqlite3_step()] will return one of the detailed | 3168 ** ^When an error occurs, [sqlite3_step()] will return one of the detailed |
3035 ** [error codes] or [extended error codes]. ^The legacy behavior was that | 3169 ** [error codes] or [extended error codes]. ^The legacy behavior was that |
3047 ** to the [sqlite3_bind_text | bindings] of that [parameter]. | 3181 ** to the [sqlite3_bind_text | bindings] of that [parameter]. |
3048 ** ^The specific value of WHERE-clause [parameter] might influence the | 3182 ** ^The specific value of WHERE-clause [parameter] might influence the |
3049 ** choice of query plan if the parameter is the left-hand side of a [LIKE] | 3183 ** choice of query plan if the parameter is the left-hand side of a [LIKE] |
3050 ** or [GLOB] operator or if the parameter is compared to an indexed column | 3184 ** or [GLOB] operator or if the parameter is compared to an indexed column |
3051 ** and the [SQLITE_ENABLE_STAT3] compile-time option is enabled. | 3185 ** and the [SQLITE_ENABLE_STAT3] compile-time option is enabled. |
3052 ** the | |
3053 ** </li> | 3186 ** </li> |
3054 ** </ol> | 3187 ** </ol> |
3055 */ | 3188 */ |
3056 SQLITE_API int sqlite3_prepare( | 3189 SQLITE_API int sqlite3_prepare( |
3057 sqlite3 *db, /* Database handle */ | 3190 sqlite3 *db, /* Database handle */ |
3229 ** for "?NNN" parameters is the value of NNN. | 3362 ** for "?NNN" parameters is the value of NNN. |
3230 ** ^The NNN value must be between 1 and the [sqlite3_limit()] | 3363 ** ^The NNN value must be between 1 and the [sqlite3_limit()] |
3231 ** parameter [SQLITE_LIMIT_VARIABLE_NUMBER] (default value: 999). | 3364 ** parameter [SQLITE_LIMIT_VARIABLE_NUMBER] (default value: 999). |
3232 ** | 3365 ** |
3233 ** ^The third argument is the value to bind to the parameter. | 3366 ** ^The third argument is the value to bind to the parameter. |
3367 ** ^If the third parameter to sqlite3_bind_text() or sqlite3_bind_text16() | |
3368 ** or sqlite3_bind_blob() is a NULL pointer then the fourth parameter | |
3369 ** is ignored and the end result is the same as sqlite3_bind_null(). | |
3234 ** | 3370 ** |
3235 ** ^(In those routines that have a fourth argument, its value is the | 3371 ** ^(In those routines that have a fourth argument, its value is the |
3236 ** number of bytes in the parameter. To be clear: the value is the | 3372 ** number of bytes in the parameter. To be clear: the value is the |
3237 ** number of <u>bytes</u> in the value, not the number of characters.)^ | 3373 ** number of <u>bytes</u> in the value, not the number of characters.)^ |
3238 ** ^If the fourth parameter to sqlite3_bind_text() or sqlite3_bind_text16() | 3374 ** ^If the fourth parameter to sqlite3_bind_text() or sqlite3_bind_text16() |
3706 ** <table border="1"> | 3842 ** <table border="1"> |
3707 ** <tr><th> Internal<br>Type <th> Requested<br>Type <th> Conversion | 3843 ** <tr><th> Internal<br>Type <th> Requested<br>Type <th> Conversion |
3708 ** | 3844 ** |
3709 ** <tr><td> NULL <td> INTEGER <td> Result is 0 | 3845 ** <tr><td> NULL <td> INTEGER <td> Result is 0 |
3710 ** <tr><td> NULL <td> FLOAT <td> Result is 0.0 | 3846 ** <tr><td> NULL <td> FLOAT <td> Result is 0.0 |
3711 ** <tr><td> NULL <td> TEXT <td> Result is NULL pointer | 3847 ** <tr><td> NULL <td> TEXT <td> Result is a NULL pointer |
3712 ** <tr><td> NULL <td> BLOB <td> Result is NULL pointer | 3848 ** <tr><td> NULL <td> BLOB <td> Result is a NULL pointer |
3713 ** <tr><td> INTEGER <td> FLOAT <td> Convert from integer to float | 3849 ** <tr><td> INTEGER <td> FLOAT <td> Convert from integer to float |
3714 ** <tr><td> INTEGER <td> TEXT <td> ASCII rendering of the integer | 3850 ** <tr><td> INTEGER <td> TEXT <td> ASCII rendering of the integer |
3715 ** <tr><td> INTEGER <td> BLOB <td> Same as INTEGER->TEXT | 3851 ** <tr><td> INTEGER <td> BLOB <td> Same as INTEGER->TEXT |
3716 ** <tr><td> FLOAT <td> INTEGER <td> Convert from float to integer | 3852 ** <tr><td> FLOAT <td> INTEGER <td> [CAST] to INTEGER |
3717 ** <tr><td> FLOAT <td> TEXT <td> ASCII rendering of the float | 3853 ** <tr><td> FLOAT <td> TEXT <td> ASCII rendering of the float |
3718 ** <tr><td> FLOAT <td> BLOB <td> Same as FLOAT->TEXT | 3854 ** <tr><td> FLOAT <td> BLOB <td> [CAST] to BLOB |
3719 ** <tr><td> TEXT <td> INTEGER <td> Use atoi() | 3855 ** <tr><td> TEXT <td> INTEGER <td> [CAST] to INTEGER |
3720 ** <tr><td> TEXT <td> FLOAT <td> Use atof() | 3856 ** <tr><td> TEXT <td> FLOAT <td> [CAST] to REAL |
3721 ** <tr><td> TEXT <td> BLOB <td> No change | 3857 ** <tr><td> TEXT <td> BLOB <td> No change |
3722 ** <tr><td> BLOB <td> INTEGER <td> Convert to TEXT then use atoi() | 3858 ** <tr><td> BLOB <td> INTEGER <td> [CAST] to INTEGER |
3723 ** <tr><td> BLOB <td> FLOAT <td> Convert to TEXT then use atof() | 3859 ** <tr><td> BLOB <td> FLOAT <td> [CAST] to REAL |
3724 ** <tr><td> BLOB <td> TEXT <td> Add a zero terminator if needed | 3860 ** <tr><td> BLOB <td> TEXT <td> Add a zero terminator if needed |
3725 ** </table> | 3861 ** </table> |
3726 ** </blockquote>)^ | 3862 ** </blockquote>)^ |
3727 ** | 3863 ** |
3728 ** The table above makes reference to standard C library functions atoi() | 3864 ** The table above makes reference to standard C library functions atoi() |
3774 ** | 3910 ** |
3775 ** ^The pointers returned are valid until a type conversion occurs as | 3911 ** ^The pointers returned are valid until a type conversion occurs as |
3776 ** described above, or until [sqlite3_step()] or [sqlite3_reset()] or | 3912 ** described above, or until [sqlite3_step()] or [sqlite3_reset()] or |
3777 ** [sqlite3_finalize()] is called. ^The memory space used to hold strings | 3913 ** [sqlite3_finalize()] is called. ^The memory space used to hold strings |
3778 ** and BLOBs is freed automatically. Do <b>not</b> pass the pointers returned | 3914 ** and BLOBs is freed automatically. Do <b>not</b> pass the pointers returned |
3779 ** [sqlite3_column_blob()], [sqlite3_column_text()], etc. into | 3915 ** from [sqlite3_column_blob()], [sqlite3_column_text()], etc. into |
3780 ** [sqlite3_free()]. | 3916 ** [sqlite3_free()]. |
3781 ** | 3917 ** |
3782 ** ^(If a memory allocation error occurs during the evaluation of any | 3918 ** ^(If a memory allocation error occurs during the evaluation of any |
3783 ** of these routines, a default value is returned. The default value | 3919 ** of these routines, a default value is returned. The default value |
3784 ** is either the integer 0, the floating point number 0.0, or a NULL | 3920 ** is either the integer 0, the floating point number 0.0, or a NULL |
3883 ** parameter is less than -1 or greater than 127 then the behavior is | 4019 ** parameter is less than -1 or greater than 127 then the behavior is |
3884 ** undefined. | 4020 ** undefined. |
3885 ** | 4021 ** |
3886 ** ^The fourth parameter, eTextRep, specifies what | 4022 ** ^The fourth parameter, eTextRep, specifies what |
3887 ** [SQLITE_UTF8 | text encoding] this SQL function prefers for | 4023 ** [SQLITE_UTF8 | text encoding] this SQL function prefers for |
3888 ** its parameters. Every SQL function implementation must be able to work | 4024 ** its parameters. The application should set this parameter to |
3889 ** with UTF-8, UTF-16le, or UTF-16be. But some implementations may be | 4025 ** [SQLITE_UTF16LE] if the function implementation invokes |
3890 ** more efficient with one encoding than another. ^An application may | 4026 ** [sqlite3_value_text16le()] on an input, or [SQLITE_UTF16BE] if the |
3891 ** invoke sqlite3_create_function() or sqlite3_create_function16() multiple | 4027 ** implementation invokes [sqlite3_value_text16be()] on an input, or |
3892 ** times with the same function but with different values of eTextRep. | 4028 ** [SQLITE_UTF16] if [sqlite3_value_text16()] is used, or [SQLITE_UTF8] |
4029 ** otherwise. ^The same SQL function may be registered multiple times using | |
4030 ** different preferred text encodings, with different implementations for | |
4031 ** each encoding. | |
3893 ** ^When multiple implementations of the same function are available, SQLite | 4032 ** ^When multiple implementations of the same function are available, SQLite |
3894 ** will pick the one that involves the least amount of data conversion. | 4033 ** will pick the one that involves the least amount of data conversion. |
3895 ** If there is only a single implementation which does not care what text | 4034 ** |
3896 ** encoding is used, then the fourth argument should be [SQLITE_ANY]. | 4035 ** ^The fourth parameter may optionally be ORed with [SQLITE_DETERMINISTIC] |
4036 ** to signal that the function will always return the same result given | |
4037 ** the same inputs within a single SQL statement. Most SQL functions are | |
4038 ** deterministic. The built-in [random()] SQL function is an example of a | |
4039 ** function that is not deterministic. The SQLite query planner is able to | |
4040 ** perform additional optimizations on deterministic functions, so use | |
4041 ** of the [SQLITE_DETERMINISTIC] flag is recommended where possible. | |
3897 ** | 4042 ** |
3898 ** ^(The fifth parameter is an arbitrary pointer. The implementation of the | 4043 ** ^(The fifth parameter is an arbitrary pointer. The implementation of the |
3899 ** function can gain access to this pointer using [sqlite3_user_data()].)^ | 4044 ** function can gain access to this pointer using [sqlite3_user_data()].)^ |
3900 ** | 4045 ** |
3901 ** ^The sixth, seventh and eighth parameters, xFunc, xStep and xFinal, are | 4046 ** ^The sixth, seventh and eighth parameters, xFunc, xStep and xFinal, are |
3977 */ | 4122 */ |
3978 #define SQLITE_UTF8 1 | 4123 #define SQLITE_UTF8 1 |
3979 #define SQLITE_UTF16LE 2 | 4124 #define SQLITE_UTF16LE 2 |
3980 #define SQLITE_UTF16BE 3 | 4125 #define SQLITE_UTF16BE 3 |
3981 #define SQLITE_UTF16 4 /* Use native byte order */ | 4126 #define SQLITE_UTF16 4 /* Use native byte order */ |
3982 #define SQLITE_ANY 5 /* sqlite3_create_function only */ | 4127 #define SQLITE_ANY 5 /* Deprecated */ |
3983 #define SQLITE_UTF16_ALIGNED 8 /* sqlite3_create_collation only */ | 4128 #define SQLITE_UTF16_ALIGNED 8 /* sqlite3_create_collation only */ |
4129 | |
4130 /* | |
4131 ** CAPI3REF: Function Flags | |
4132 ** | |
4133 ** These constants may be ORed together with the | |
4134 ** [SQLITE_UTF8 | preferred text encoding] as the fourth argument | |
4135 ** to [sqlite3_create_function()], [sqlite3_create_function16()], or | |
4136 ** [sqlite3_create_function_v2()]. | |
4137 */ | |
4138 #define SQLITE_DETERMINISTIC 0x800 | |
3984 | 4139 |
3985 /* | 4140 /* |
3986 ** CAPI3REF: Deprecated Functions | 4141 ** CAPI3REF: Deprecated Functions |
3987 ** DEPRECATED | 4142 ** DEPRECATED |
3988 ** | 4143 ** |
3996 SQLITE_API SQLITE_DEPRECATED int sqlite3_aggregate_count(sqlite3_context*); | 4151 SQLITE_API SQLITE_DEPRECATED int sqlite3_aggregate_count(sqlite3_context*); |
3997 SQLITE_API SQLITE_DEPRECATED int sqlite3_expired(sqlite3_stmt*); | 4152 SQLITE_API SQLITE_DEPRECATED int sqlite3_expired(sqlite3_stmt*); |
3998 SQLITE_API SQLITE_DEPRECATED int sqlite3_transfer_bindings(sqlite3_stmt*, sqlite3_stmt*); | 4153 SQLITE_API SQLITE_DEPRECATED int sqlite3_transfer_bindings(sqlite3_stmt*, sqlite3_stmt*); |
3999 SQLITE_API SQLITE_DEPRECATED int sqlite3_global_recover(void); | 4154 SQLITE_API SQLITE_DEPRECATED int sqlite3_global_recover(void); |
4000 SQLITE_API SQLITE_DEPRECATED void sqlite3_thread_cleanup(void); | 4155 SQLITE_API SQLITE_DEPRECATED void sqlite3_thread_cleanup(void); |
4001 SQLITE_API SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int64,int),void*,sqlite3_int64); | 4156 SQLITE_API SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int64,int), |
4157 void*,sqlite3_int64); | |
4002 #endif | 4158 #endif |
4003 | 4159 |
4004 /* | 4160 /* |
4005 ** CAPI3REF: Obtaining SQL Function Parameter Values | 4161 ** CAPI3REF: Obtaining SQL Function Parameter Values |
4006 ** | 4162 ** |
4076 ** an aggregate query, the xStep() callback of the aggregate function | 4232 ** an aggregate query, the xStep() callback of the aggregate function |
4077 ** implementation is never called and xFinal() is called exactly once. | 4233 ** implementation is never called and xFinal() is called exactly once. |
4078 ** In those cases, sqlite3_aggregate_context() might be called for the | 4234 ** In those cases, sqlite3_aggregate_context() might be called for the |
4079 ** first time from within xFinal().)^ | 4235 ** first time from within xFinal().)^ |
4080 ** | 4236 ** |
4081 ** ^The sqlite3_aggregate_context(C,N) routine returns a NULL pointer if N is | 4237 ** ^The sqlite3_aggregate_context(C,N) routine returns a NULL pointer |
4082 ** less than or equal to zero or if a memory allocate error occurs. | 4238 ** when first called if N is less than or equal to zero or if a memory |
4239 ** allocate error occurs. | |
4083 ** | 4240 ** |
4084 ** ^(The amount of space allocated by sqlite3_aggregate_context(C,N) is | 4241 ** ^(The amount of space allocated by sqlite3_aggregate_context(C,N) is |
4085 ** determined by the N parameter on first successful call. Changing the | 4242 ** determined by the N parameter on first successful call. Changing the |
4086 ** value of N in subsequent call to sqlite3_aggregate_context() within | 4243 ** value of N in subsequent call to sqlite3_aggregate_context() within |
4087 ** the same aggregate function instance will not resize the memory | 4244 ** the same aggregate function instance will not resize the memory |
4088 ** allocation.)^ | 4245 ** allocation.)^ Within the xFinal callback, it is customary to set |
4246 ** N=0 in calls to sqlite3_aggregate_context(C,N) so that no | |
4247 ** pointless memory allocations occur. | |
4089 ** | 4248 ** |
4090 ** ^SQLite automatically frees the memory allocated by | 4249 ** ^SQLite automatically frees the memory allocated by |
4091 ** sqlite3_aggregate_context() when the aggregate query concludes. | 4250 ** sqlite3_aggregate_context() when the aggregate query concludes. |
4092 ** | 4251 ** |
4093 ** The first parameter must be a copy of the | 4252 ** The first parameter must be a copy of the |
4126 SQLITE_API sqlite3 *sqlite3_context_db_handle(sqlite3_context*); | 4285 SQLITE_API sqlite3 *sqlite3_context_db_handle(sqlite3_context*); |
4127 | 4286 |
4128 /* | 4287 /* |
4129 ** CAPI3REF: Function Auxiliary Data | 4288 ** CAPI3REF: Function Auxiliary Data |
4130 ** | 4289 ** |
4131 ** The following two functions may be used by scalar SQL functions to | 4290 ** These functions may be used by (non-aggregate) SQL functions to |
4132 ** associate metadata with argument values. If the same value is passed to | 4291 ** associate metadata with argument values. If the same value is passed to |
4133 ** multiple invocations of the same SQL function during query execution, under | 4292 ** multiple invocations of the same SQL function during query execution, under |
4134 ** some circumstances the associated metadata may be preserved. This may | 4293 ** some circumstances the associated metadata may be preserved. An example |
4135 ** be used, for example, to add a regular-expression matching scalar | 4294 ** of where this might be useful is in a regular-expression matching |
4136 ** function. The compiled version of the regular expression is stored as | 4295 ** function. The compiled version of the regular expression can be stored as |
4137 ** metadata associated with the SQL value passed as the regular expression | 4296 ** metadata associated with the pattern string. |
4138 ** pattern. The compiled regular expression can be reused on multiple | 4297 ** Then as long as the pattern string remains the same, |
4139 ** invocations of the same function so that the original pattern string | 4298 ** the compiled regular expression can be reused on multiple |
4140 ** does not need to be recompiled on each invocation. | 4299 ** invocations of the same function. |
4141 ** | 4300 ** |
4142 ** ^The sqlite3_get_auxdata() interface returns a pointer to the metadata | 4301 ** ^The sqlite3_get_auxdata() interface returns a pointer to the metadata |
4143 ** associated by the sqlite3_set_auxdata() function with the Nth argument | 4302 ** associated by the sqlite3_set_auxdata() function with the Nth argument |
4144 ** value to the application-defined function. ^If no metadata has been ever | 4303 ** value to the application-defined function. ^If there is no metadata |
4145 ** been set for the Nth argument of the function, or if the corresponding | 4304 ** associated with the function argument, this sqlite3_get_auxdata() interface |
4146 ** function parameter has changed since the meta-data was set, | 4305 ** returns a NULL pointer. |
4147 ** then sqlite3_get_auxdata() returns a NULL pointer. | 4306 ** |
4148 ** | 4307 ** ^The sqlite3_set_auxdata(C,N,P,X) interface saves P as metadata for the N-th |
4149 ** ^The sqlite3_set_auxdata() interface saves the metadata | 4308 ** argument of the application-defined function. ^Subsequent |
4150 ** pointed to by its 3rd parameter as the metadata for the N-th | 4309 ** calls to sqlite3_get_auxdata(C,N) return P from the most recent |
4151 ** argument of the application-defined function. Subsequent | 4310 ** sqlite3_set_auxdata(C,N,P,X) call if the metadata is still valid or |
4152 ** calls to sqlite3_get_auxdata() might return this data, if it has | 4311 ** NULL if the metadata has been discarded. |
4153 ** not been destroyed. | 4312 ** ^After each call to sqlite3_set_auxdata(C,N,P,X) where X is not NULL, |
4154 ** ^If it is not NULL, SQLite will invoke the destructor | 4313 ** SQLite will invoke the destructor function X with parameter P exactly |
4155 ** function given by the 4th parameter to sqlite3_set_auxdata() on | 4314 ** once, when the metadata is discarded. |
4156 ** the metadata when the corresponding function parameter changes | 4315 ** SQLite is free to discard the metadata at any time, including: <ul> |
4157 ** or when the SQL statement completes, whichever comes first. | 4316 ** <li> when the corresponding function parameter changes, or |
4158 ** | 4317 ** <li> when [sqlite3_reset()] or [sqlite3_finalize()] is called for the |
4159 ** SQLite is free to call the destructor and drop metadata on any | 4318 ** SQL statement, or |
4160 ** parameter of any function at any time. ^The only guarantee is that | 4319 ** <li> when sqlite3_set_auxdata() is invoked again on the same parameter, or |
4161 ** the destructor will be called before the metadata is dropped. | 4320 ** <li> during the original sqlite3_set_auxdata() call when a memory |
4321 ** allocation error occurs. </ul>)^ | |
4322 ** | |
4323 ** Note the last bullet in particular. The destructor X in | |
4324 ** sqlite3_set_auxdata(C,N,P,X) might be called immediately, before the | |
4325 ** sqlite3_set_auxdata() interface even returns. Hence sqlite3_set_auxdata() | |
4326 ** should be called near the end of the function implementation and the | |
4327 ** function implementation should not make any use of P after | |
4328 ** sqlite3_set_auxdata() has been called. | |
4162 ** | 4329 ** |
4163 ** ^(In practice, metadata is preserved between function calls for | 4330 ** ^(In practice, metadata is preserved between function calls for |
4164 ** expressions that are constant at compile time. This includes literal | 4331 ** function parameters that are compile-time constants, including literal |
4165 ** values and [parameters].)^ | 4332 ** values and [parameters] and expressions composed from the same.)^ |
4166 ** | 4333 ** |
4167 ** These routines must be called from the same thread in which | 4334 ** These routines must be called from the same thread in which |
4168 ** the SQL function is running. | 4335 ** the SQL function is running. |
4169 */ | 4336 */ |
4170 SQLITE_API void *sqlite3_get_auxdata(sqlite3_context*, int N); | 4337 SQLITE_API void *sqlite3_get_auxdata(sqlite3_context*, int N); |
4181 ** SQLITE_TRANSIENT value means that the content will likely change in | 4348 ** SQLITE_TRANSIENT value means that the content will likely change in |
4182 ** the near future and that SQLite should make its own private copy of | 4349 ** the near future and that SQLite should make its own private copy of |
4183 ** the content before returning. | 4350 ** the content before returning. |
4184 ** | 4351 ** |
4185 ** The typedef is necessary to work around problems in certain | 4352 ** The typedef is necessary to work around problems in certain |
4186 ** C++ compilers. See ticket #2191. | 4353 ** C++ compilers. |
4187 */ | 4354 */ |
4188 typedef void (*sqlite3_destructor_type)(void*); | 4355 typedef void (*sqlite3_destructor_type)(void*); |
4189 #define SQLITE_STATIC ((sqlite3_destructor_type)0) | 4356 #define SQLITE_STATIC ((sqlite3_destructor_type)0) |
4190 #define SQLITE_TRANSIENT ((sqlite3_destructor_type)-1) | 4357 #define SQLITE_TRANSIENT ((sqlite3_destructor_type)-1) |
4191 | 4358 |
4465 */ | 4632 */ |
4466 SQLITE_API int sqlite3_key( | 4633 SQLITE_API int sqlite3_key( |
4467 sqlite3 *db, /* Database to be rekeyed */ | 4634 sqlite3 *db, /* Database to be rekeyed */ |
4468 const void *pKey, int nKey /* The key */ | 4635 const void *pKey, int nKey /* The key */ |
4469 ); | 4636 ); |
4637 SQLITE_API int sqlite3_key_v2( | |
4638 sqlite3 *db, /* Database to be rekeyed */ | |
4639 const char *zDbName, /* Name of the database */ | |
4640 const void *pKey, int nKey /* The key */ | |
4641 ); | |
4470 | 4642 |
4471 /* | 4643 /* |
4472 ** Change the key on an open database. If the current database is not | 4644 ** Change the key on an open database. If the current database is not |
4473 ** encrypted, this routine will encrypt it. If pNew==0 or nNew==0, the | 4645 ** encrypted, this routine will encrypt it. If pNew==0 or nNew==0, the |
4474 ** database is decrypted. | 4646 ** database is decrypted. |
4476 ** The code to implement this API is not available in the public release | 4648 ** The code to implement this API is not available in the public release |
4477 ** of SQLite. | 4649 ** of SQLite. |
4478 */ | 4650 */ |
4479 SQLITE_API int sqlite3_rekey( | 4651 SQLITE_API int sqlite3_rekey( |
4480 sqlite3 *db, /* Database to be rekeyed */ | 4652 sqlite3 *db, /* Database to be rekeyed */ |
4653 const void *pKey, int nKey /* The new key */ | |
4654 ); | |
4655 SQLITE_API int sqlite3_rekey_v2( | |
4656 sqlite3 *db, /* Database to be rekeyed */ | |
4657 const char *zDbName, /* Name of the database */ | |
4481 const void *pKey, int nKey /* The new key */ | 4658 const void *pKey, int nKey /* The new key */ |
4482 ); | 4659 ); |
4483 | 4660 |
4484 /* | 4661 /* |
4485 ** Specify the activation key for a SEE database. Unless | 4662 ** Specify the activation key for a SEE database. Unless |
4729 /* | 4906 /* |
4730 ** CAPI3REF: Data Change Notification Callbacks | 4907 ** CAPI3REF: Data Change Notification Callbacks |
4731 ** | 4908 ** |
4732 ** ^The sqlite3_update_hook() interface registers a callback function | 4909 ** ^The sqlite3_update_hook() interface registers a callback function |
4733 ** with the [database connection] identified by the first argument | 4910 ** with the [database connection] identified by the first argument |
4734 ** to be invoked whenever a row is updated, inserted or deleted. | 4911 ** to be invoked whenever a row is updated, inserted or deleted in |
4912 ** a rowid table. | |
4735 ** ^Any callback set by a previous call to this function | 4913 ** ^Any callback set by a previous call to this function |
4736 ** for the same database connection is overridden. | 4914 ** for the same database connection is overridden. |
4737 ** | 4915 ** |
4738 ** ^The second argument is a pointer to the function to invoke when a | 4916 ** ^The second argument is a pointer to the function to invoke when a |
4739 ** row is updated, inserted or deleted. | 4917 ** row is updated, inserted or deleted in a rowid table. |
4740 ** ^The first argument to the callback is a copy of the third argument | 4918 ** ^The first argument to the callback is a copy of the third argument |
4741 ** to sqlite3_update_hook(). | 4919 ** to sqlite3_update_hook(). |
4742 ** ^The second callback argument is one of [SQLITE_INSERT], [SQLITE_DELETE], | 4920 ** ^The second callback argument is one of [SQLITE_INSERT], [SQLITE_DELETE], |
4743 ** or [SQLITE_UPDATE], depending on the operation that caused the callback | 4921 ** or [SQLITE_UPDATE], depending on the operation that caused the callback |
4744 ** to be invoked. | 4922 ** to be invoked. |
4747 ** ^The final callback parameter is the [rowid] of the row. | 4925 ** ^The final callback parameter is the [rowid] of the row. |
4748 ** ^In the case of an update, this is the [rowid] after the update takes place. | 4926 ** ^In the case of an update, this is the [rowid] after the update takes place. |
4749 ** | 4927 ** |
4750 ** ^(The update hook is not invoked when internal system tables are | 4928 ** ^(The update hook is not invoked when internal system tables are |
4751 ** modified (i.e. sqlite_master and sqlite_sequence).)^ | 4929 ** modified (i.e. sqlite_master and sqlite_sequence).)^ |
4930 ** ^The update hook is not invoked when [WITHOUT ROWID] tables are modified. | |
4752 ** | 4931 ** |
4753 ** ^In the current implementation, the update hook | 4932 ** ^In the current implementation, the update hook |
4754 ** is not invoked when duplication rows are deleted because of an | 4933 ** is not invoked when duplication rows are deleted because of an |
4755 ** [ON CONFLICT | ON CONFLICT REPLACE] clause. ^Nor is the update hook | 4934 ** [ON CONFLICT | ON CONFLICT REPLACE] clause. ^Nor is the update hook |
4756 ** invoked when rows are deleted using the [truncate optimization]. | 4935 ** invoked when rows are deleted using the [truncate optimization]. |
4828 /* | 5007 /* |
4829 ** CAPI3REF: Free Memory Used By A Database Connection | 5008 ** CAPI3REF: Free Memory Used By A Database Connection |
4830 ** | 5009 ** |
4831 ** ^The sqlite3_db_release_memory(D) interface attempts to free as much heap | 5010 ** ^The sqlite3_db_release_memory(D) interface attempts to free as much heap |
4832 ** memory as possible from database connection D. Unlike the | 5011 ** memory as possible from database connection D. Unlike the |
4833 ** [sqlite3_release_memory()] interface, this interface is effect even | 5012 ** [sqlite3_release_memory()] interface, this interface is in effect even |
4834 ** when then [SQLITE_ENABLE_MEMORY_MANAGEMENT] compile-time option is | 5013 ** when the [SQLITE_ENABLE_MEMORY_MANAGEMENT] compile-time option is |
4835 ** omitted. | 5014 ** omitted. |
4836 ** | 5015 ** |
4837 ** See also: [sqlite3_release_memory()] | 5016 ** See also: [sqlite3_release_memory()] |
4838 */ | 5017 */ |
4839 SQLITE_API int sqlite3_db_release_memory(sqlite3*); | 5018 SQLITE_API int sqlite3_db_release_memory(sqlite3*); |
4980 ** CAPI3REF: Load An Extension | 5159 ** CAPI3REF: Load An Extension |
4981 ** | 5160 ** |
4982 ** ^This interface loads an SQLite extension library from the named file. | 5161 ** ^This interface loads an SQLite extension library from the named file. |
4983 ** | 5162 ** |
4984 ** ^The sqlite3_load_extension() interface attempts to load an | 5163 ** ^The sqlite3_load_extension() interface attempts to load an |
4985 ** SQLite extension library contained in the file zFile. | 5164 ** [SQLite extension] library contained in the file zFile. If |
5165 ** the file cannot be loaded directly, attempts are made to load | |
5166 ** with various operating-system specific extensions added. | |
5167 ** So for example, if "samplelib" cannot be loaded, then names like | |
5168 ** "samplelib.so" or "samplelib.dylib" or "samplelib.dll" might | |
5169 ** be tried also. | |
4986 ** | 5170 ** |
4987 ** ^The entry point is zProc. | 5171 ** ^The entry point is zProc. |
4988 ** ^zProc may be 0, in which case the name of the entry point | 5172 ** ^(zProc may be 0, in which case SQLite will try to come up with an |
4989 ** defaults to "sqlite3_extension_init". | 5173 ** entry point name on its own. It first tries "sqlite3_extension_init". |
5174 ** If that does not work, it constructs a name "sqlite3_X_init" where the | |
5175 ** X is consists of the lower-case equivalent of all ASCII alphabetic | |
5176 ** characters in the filename from the last "/" to the first following | |
5177 ** "." and omitting any initial "lib".)^ | |
4990 ** ^The sqlite3_load_extension() interface returns | 5178 ** ^The sqlite3_load_extension() interface returns |
4991 ** [SQLITE_OK] on success and [SQLITE_ERROR] if something goes wrong. | 5179 ** [SQLITE_OK] on success and [SQLITE_ERROR] if something goes wrong. |
4992 ** ^If an error occurs and pzErrMsg is not 0, then the | 5180 ** ^If an error occurs and pzErrMsg is not 0, then the |
4993 ** [sqlite3_load_extension()] interface shall attempt to | 5181 ** [sqlite3_load_extension()] interface shall attempt to |
4994 ** fill *pzErrMsg with error message text stored in memory | 5182 ** fill *pzErrMsg with error message text stored in memory |
5010 | 5198 |
5011 /* | 5199 /* |
5012 ** CAPI3REF: Enable Or Disable Extension Loading | 5200 ** CAPI3REF: Enable Or Disable Extension Loading |
5013 ** | 5201 ** |
5014 ** ^So as not to open security holes in older applications that are | 5202 ** ^So as not to open security holes in older applications that are |
5015 ** unprepared to deal with extension loading, and as a means of disabling | 5203 ** unprepared to deal with [extension loading], and as a means of disabling |
5016 ** extension loading while evaluating user-entered SQL, the following API | 5204 ** [extension loading] while evaluating user-entered SQL, the following API |
5017 ** is provided to turn the [sqlite3_load_extension()] mechanism on and off. | 5205 ** is provided to turn the [sqlite3_load_extension()] mechanism on and off. |
5018 ** | 5206 ** |
5019 ** ^Extension loading is off by default. See ticket #1863. | 5207 ** ^Extension loading is off by default. |
5020 ** ^Call the sqlite3_enable_load_extension() routine with onoff==1 | 5208 ** ^Call the sqlite3_enable_load_extension() routine with onoff==1 |
5021 ** to turn extension loading on and call it with onoff==0 to turn | 5209 ** to turn extension loading on and call it with onoff==0 to turn |
5022 ** it back off again. | 5210 ** it back off again. |
5023 */ | 5211 */ |
5024 SQLITE_API int sqlite3_enable_load_extension(sqlite3 *db, int onoff); | 5212 SQLITE_API int sqlite3_enable_load_extension(sqlite3 *db, int onoff); |
5026 /* | 5214 /* |
5027 ** CAPI3REF: Automatically Load Statically Linked Extensions | 5215 ** CAPI3REF: Automatically Load Statically Linked Extensions |
5028 ** | 5216 ** |
5029 ** ^This interface causes the xEntryPoint() function to be invoked for | 5217 ** ^This interface causes the xEntryPoint() function to be invoked for |
5030 ** each new [database connection] that is created. The idea here is that | 5218 ** each new [database connection] that is created. The idea here is that |
5031 ** xEntryPoint() is the entry point for a statically linked SQLite extension | 5219 ** xEntryPoint() is the entry point for a statically linked [SQLite extension] |
5032 ** that is to be automatically loaded into all new database connections. | 5220 ** that is to be automatically loaded into all new database connections. |
5033 ** | 5221 ** |
5034 ** ^(Even though the function prototype shows that xEntryPoint() takes | 5222 ** ^(Even though the function prototype shows that xEntryPoint() takes |
5035 ** no arguments and returns void, SQLite invokes xEntryPoint() with three | 5223 ** no arguments and returns void, SQLite invokes xEntryPoint() with three |
5036 ** arguments and expects and integer result as if the signature of the | 5224 ** arguments and expects and integer result as if the signature of the |
5054 ** | 5242 ** |
5055 ** ^Calling sqlite3_auto_extension(X) with an entry point X that is already | 5243 ** ^Calling sqlite3_auto_extension(X) with an entry point X that is already |
5056 ** on the list of automatic extensions is a harmless no-op. ^No entry point | 5244 ** on the list of automatic extensions is a harmless no-op. ^No entry point |
5057 ** will be called more than once for each database connection that is opened. | 5245 ** will be called more than once for each database connection that is opened. |
5058 ** | 5246 ** |
5059 ** See also: [sqlite3_reset_auto_extension()]. | 5247 ** See also: [sqlite3_reset_auto_extension()] |
5248 ** and [sqlite3_cancel_auto_extension()] | |
5060 */ | 5249 */ |
5061 SQLITE_API int sqlite3_auto_extension(void (*xEntryPoint)(void)); | 5250 SQLITE_API int sqlite3_auto_extension(void (*xEntryPoint)(void)); |
5251 | |
5252 /* | |
5253 ** CAPI3REF: Cancel Automatic Extension Loading | |
5254 ** | |
5255 ** ^The [sqlite3_cancel_auto_extension(X)] interface unregisters the | |
5256 ** initialization routine X that was registered using a prior call to | |
5257 ** [sqlite3_auto_extension(X)]. ^The [sqlite3_cancel_auto_extension(X)] | |
5258 ** routine returns 1 if initialization routine X was successfully | |
5259 ** unregistered and it returns 0 if X was not on the list of initialization | |
5260 ** routines. | |
5261 */ | |
5262 SQLITE_API int sqlite3_cancel_auto_extension(void (*xEntryPoint)(void)); | |
5062 | 5263 |
5063 /* | 5264 /* |
5064 ** CAPI3REF: Reset Automatic Extension Loading | 5265 ** CAPI3REF: Reset Automatic Extension Loading |
5065 ** | 5266 ** |
5066 ** ^This interface disables all automatic extensions previously | 5267 ** ^This interface disables all automatic extensions previously |
5182 ** | 5383 ** |
5183 ** ^The orderByConsumed means that output from [xFilter]/[xNext] will occur in | 5384 ** ^The orderByConsumed means that output from [xFilter]/[xNext] will occur in |
5184 ** the correct order to satisfy the ORDER BY clause so that no separate | 5385 ** the correct order to satisfy the ORDER BY clause so that no separate |
5185 ** sorting step is required. | 5386 ** sorting step is required. |
5186 ** | 5387 ** |
5187 ** ^The estimatedCost value is an estimate of the cost of doing the | 5388 ** ^The estimatedCost value is an estimate of the cost of a particular |
5188 ** particular lookup. A full scan of a table with N entries should have | 5389 ** strategy. A cost of N indicates that the cost of the strategy is similar |
5189 ** a cost of N. A binary search of a table of N entries should have a | 5390 ** to a linear scan of an SQLite table with N rows. A cost of log(N) |
5190 ** cost of approximately log(N). | 5391 ** indicates that the expense of the operation is similar to that of a |
5392 ** binary search on a unique indexed field of an SQLite table with N rows. | |
5393 ** | |
5394 ** ^The estimatedRows value is an estimate of the number of rows that | |
5395 ** will be returned by the strategy. | |
5396 ** | |
5397 ** IMPORTANT: The estimatedRows field was added to the sqlite3_index_info | |
5398 ** structure for SQLite version 3.8.2. If a virtual table extension is | |
5399 ** used with an SQLite version earlier than 3.8.2, the results of attempting | |
5400 ** to read or write the estimatedRows field are undefined (but are likely | |
5401 ** to included crashing the application). The estimatedRows field should | |
5402 ** therefore only be used if [sqlite3_libversion_number()] returns a | |
5403 ** value greater than or equal to 3008002. | |
5191 */ | 5404 */ |
5192 struct sqlite3_index_info { | 5405 struct sqlite3_index_info { |
5193 /* Inputs */ | 5406 /* Inputs */ |
5194 int nConstraint; /* Number of entries in aConstraint */ | 5407 int nConstraint; /* Number of entries in aConstraint */ |
5195 struct sqlite3_index_constraint { | 5408 struct sqlite3_index_constraint { |
5210 } *aConstraintUsage; | 5423 } *aConstraintUsage; |
5211 int idxNum; /* Number used to identify the index */ | 5424 int idxNum; /* Number used to identify the index */ |
5212 char *idxStr; /* String, possibly obtained from sqlite3_malloc */ | 5425 char *idxStr; /* String, possibly obtained from sqlite3_malloc */ |
5213 int needToFreeIdxStr; /* Free idxStr using sqlite3_free() if true */ | 5426 int needToFreeIdxStr; /* Free idxStr using sqlite3_free() if true */ |
5214 int orderByConsumed; /* True if output is already ordered */ | 5427 int orderByConsumed; /* True if output is already ordered */ |
5215 double estimatedCost; /* Estimated cost of using this index */ | 5428 double estimatedCost; /* Estimated cost of using this index */ |
5429 /* Fields below are only available in SQLite 3.8.2 and later */ | |
5430 sqlite3_int64 estimatedRows; /* Estimated number of rows returned */ | |
5216 }; | 5431 }; |
5217 | 5432 |
5218 /* | 5433 /* |
5219 ** CAPI3REF: Virtual Table Constraint Operator Codes | 5434 ** CAPI3REF: Virtual Table Constraint Operator Codes |
5220 ** | 5435 ** |
5413 ** | 5628 ** |
5414 ** ^Use the [sqlite3_blob_bytes()] interface to determine the size of | 5629 ** ^Use the [sqlite3_blob_bytes()] interface to determine the size of |
5415 ** the opened blob. ^The size of a blob may not be changed by this | 5630 ** the opened blob. ^The size of a blob may not be changed by this |
5416 ** interface. Use the [UPDATE] SQL command to change the size of a | 5631 ** interface. Use the [UPDATE] SQL command to change the size of a |
5417 ** blob. | 5632 ** blob. |
5633 ** | |
5634 ** ^The [sqlite3_blob_open()] interface will fail for a [WITHOUT ROWID] | |
5635 ** table. Incremental BLOB I/O is not possible on [WITHOUT ROWID] tables. | |
5418 ** | 5636 ** |
5419 ** ^The [sqlite3_bind_zeroblob()] and [sqlite3_result_zeroblob()] interfaces | 5637 ** ^The [sqlite3_bind_zeroblob()] and [sqlite3_result_zeroblob()] interfaces |
5420 ** and the built-in [zeroblob] SQL function can be used, if desired, | 5638 ** and the built-in [zeroblob] SQL function can be used, if desired, |
5421 ** to create an empty, zero-filled blob in which to read or write using | 5639 ** to create an empty, zero-filled blob in which to read or write using |
5422 ** this interface. | 5640 ** this interface. |
5937 #define SQLITE_TESTCTRL_OPTIMIZATIONS 15 | 6155 #define SQLITE_TESTCTRL_OPTIMIZATIONS 15 |
5938 #define SQLITE_TESTCTRL_ISKEYWORD 16 | 6156 #define SQLITE_TESTCTRL_ISKEYWORD 16 |
5939 #define SQLITE_TESTCTRL_SCRATCHMALLOC 17 | 6157 #define SQLITE_TESTCTRL_SCRATCHMALLOC 17 |
5940 #define SQLITE_TESTCTRL_LOCALTIME_FAULT 18 | 6158 #define SQLITE_TESTCTRL_LOCALTIME_FAULT 18 |
5941 #define SQLITE_TESTCTRL_EXPLAIN_STMT 19 | 6159 #define SQLITE_TESTCTRL_EXPLAIN_STMT 19 |
5942 #define SQLITE_TESTCTRL_LAST 19 | 6160 #define SQLITE_TESTCTRL_NEVER_CORRUPT 20 |
6161 #define SQLITE_TESTCTRL_VDBE_COVERAGE 21 | |
6162 #define SQLITE_TESTCTRL_BYTEORDER 22 | |
6163 #define SQLITE_TESTCTRL_LAST 22 | |
5943 | 6164 |
5944 /* | 6165 /* |
5945 ** CAPI3REF: SQLite Runtime Status | 6166 ** CAPI3REF: SQLite Runtime Status |
5946 ** | 6167 ** |
5947 ** ^This interface is used to retrieve runtime status information | 6168 ** ^This interface is used to retrieve runtime status information |
6170 ** transaction rollback or database recovery operations are not included. | 6391 ** transaction rollback or database recovery operations are not included. |
6171 ** If an IO or other error occurs while writing a page to disk, the effect | 6392 ** If an IO or other error occurs while writing a page to disk, the effect |
6172 ** on subsequent SQLITE_DBSTATUS_CACHE_WRITE requests is undefined.)^ ^The | 6393 ** on subsequent SQLITE_DBSTATUS_CACHE_WRITE requests is undefined.)^ ^The |
6173 ** highwater mark associated with SQLITE_DBSTATUS_CACHE_WRITE is always 0. | 6394 ** highwater mark associated with SQLITE_DBSTATUS_CACHE_WRITE is always 0. |
6174 ** </dd> | 6395 ** </dd> |
6396 ** | |
6397 ** [[SQLITE_DBSTATUS_DEFERRED_FKS]] ^(<dt>SQLITE_DBSTATUS_DEFERRED_FKS</dt> | |
6398 ** <dd>This parameter returns zero for the current value if and only if | |
6399 ** all foreign key constraints (deferred or immediate) have been | |
6400 ** resolved.)^ ^The highwater mark is always 0. | |
6401 ** </dd> | |
6175 ** </dl> | 6402 ** </dl> |
6176 */ | 6403 */ |
6177 #define SQLITE_DBSTATUS_LOOKASIDE_USED 0 | 6404 #define SQLITE_DBSTATUS_LOOKASIDE_USED 0 |
6178 #define SQLITE_DBSTATUS_CACHE_USED 1 | 6405 #define SQLITE_DBSTATUS_CACHE_USED 1 |
6179 #define SQLITE_DBSTATUS_SCHEMA_USED 2 | 6406 #define SQLITE_DBSTATUS_SCHEMA_USED 2 |
6182 #define SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE 5 | 6409 #define SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE 5 |
6183 #define SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL 6 | 6410 #define SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL 6 |
6184 #define SQLITE_DBSTATUS_CACHE_HIT 7 | 6411 #define SQLITE_DBSTATUS_CACHE_HIT 7 |
6185 #define SQLITE_DBSTATUS_CACHE_MISS 8 | 6412 #define SQLITE_DBSTATUS_CACHE_MISS 8 |
6186 #define SQLITE_DBSTATUS_CACHE_WRITE 9 | 6413 #define SQLITE_DBSTATUS_CACHE_WRITE 9 |
6187 #define SQLITE_DBSTATUS_MAX 9 /* Largest defined DBSTATUS */ | 6414 #define SQLITE_DBSTATUS_DEFERRED_FKS 10 |
6415 #define SQLITE_DBSTATUS_MAX 10 /* Largest defined DBSTATUS */ | |
6188 | 6416 |
6189 | 6417 |
6190 /* | 6418 /* |
6191 ** CAPI3REF: Prepared Statement Status | 6419 ** CAPI3REF: Prepared Statement Status |
6192 ** | 6420 ** |
6236 ** <dd>^This is the number of rows inserted into transient indices that | 6464 ** <dd>^This is the number of rows inserted into transient indices that |
6237 ** were created automatically in order to help joins run faster. | 6465 ** were created automatically in order to help joins run faster. |
6238 ** A non-zero value in this counter may indicate an opportunity to | 6466 ** A non-zero value in this counter may indicate an opportunity to |
6239 ** improvement performance by adding permanent indices that do not | 6467 ** improvement performance by adding permanent indices that do not |
6240 ** need to be reinitialized each time the statement is run.</dd> | 6468 ** need to be reinitialized each time the statement is run.</dd> |
6469 ** | |
6470 ** [[SQLITE_STMTSTATUS_VM_STEP]] <dt>SQLITE_STMTSTATUS_VM_STEP</dt> | |
6471 ** <dd>^This is the number of virtual machine operations executed | |
6472 ** by the prepared statement if that number is less than or equal | |
6473 ** to 2147483647. The number of virtual machine operations can be | |
6474 ** used as a proxy for the total work done by the prepared statement. | |
6475 ** If the number of virtual machine operations exceeds 2147483647 | |
6476 ** then the value returned by this statement status code is undefined. | |
6477 ** </dd> | |
6241 ** </dl> | 6478 ** </dl> |
6242 */ | 6479 */ |
6243 #define SQLITE_STMTSTATUS_FULLSCAN_STEP 1 | 6480 #define SQLITE_STMTSTATUS_FULLSCAN_STEP 1 |
6244 #define SQLITE_STMTSTATUS_SORT 2 | 6481 #define SQLITE_STMTSTATUS_SORT 2 |
6245 #define SQLITE_STMTSTATUS_AUTOINDEX 3 | 6482 #define SQLITE_STMTSTATUS_AUTOINDEX 3 |
6483 #define SQLITE_STMTSTATUS_VM_STEP 4 | |
6246 | 6484 |
6247 /* | 6485 /* |
6248 ** CAPI3REF: Custom Page Cache Object | 6486 ** CAPI3REF: Custom Page Cache Object |
6249 ** | 6487 ** |
6250 ** The sqlite3_pcache type is opaque. It is implemented by | 6488 ** The sqlite3_pcache type is opaque. It is implemented by |
6377 ** intact. If the requested page is not already in the cache, then the | 6615 ** intact. If the requested page is not already in the cache, then the |
6378 ** cache implementation should use the value of the createFlag | 6616 ** cache implementation should use the value of the createFlag |
6379 ** parameter to help it determined what action to take: | 6617 ** parameter to help it determined what action to take: |
6380 ** | 6618 ** |
6381 ** <table border=1 width=85% align=center> | 6619 ** <table border=1 width=85% align=center> |
6382 ** <tr><th> createFlag <th> Behaviour when page is not already in cache | 6620 ** <tr><th> createFlag <th> Behavior when page is not already in cache |
6383 ** <tr><td> 0 <td> Do not allocate a new page. Return NULL. | 6621 ** <tr><td> 0 <td> Do not allocate a new page. Return NULL. |
6384 ** <tr><td> 1 <td> Allocate a new page if it easy and convenient to do so. | 6622 ** <tr><td> 1 <td> Allocate a new page if it easy and convenient to do so. |
6385 ** Otherwise return NULL. | 6623 ** Otherwise return NULL. |
6386 ** <tr><td> 2 <td> Make every effort to allocate a new page. Only return | 6624 ** <tr><td> 2 <td> Make every effort to allocate a new page. Only return |
6387 ** NULL if allocating a new page is effectively impossible. | 6625 ** NULL if allocating a new page is effectively impossible. |
6807 */ | 7045 */ |
6808 SQLITE_API int sqlite3_stricmp(const char *, const char *); | 7046 SQLITE_API int sqlite3_stricmp(const char *, const char *); |
6809 SQLITE_API int sqlite3_strnicmp(const char *, const char *, int); | 7047 SQLITE_API int sqlite3_strnicmp(const char *, const char *, int); |
6810 | 7048 |
6811 /* | 7049 /* |
7050 ** CAPI3REF: String Globbing | |
7051 * | |
7052 ** ^The [sqlite3_strglob(P,X)] interface returns zero if string X matches | |
7053 ** the glob pattern P, and it returns non-zero if string X does not match | |
7054 ** the glob pattern P. ^The definition of glob pattern matching used in | |
7055 ** [sqlite3_strglob(P,X)] is the same as for the "X GLOB P" operator in the | |
7056 ** SQL dialect used by SQLite. ^The sqlite3_strglob(P,X) function is case | |
7057 ** sensitive. | |
7058 ** | |
7059 ** Note that this routine returns zero on a match and non-zero if the strings | |
7060 ** do not match, the same as [sqlite3_stricmp()] and [sqlite3_strnicmp()]. | |
7061 */ | |
7062 SQLITE_API int sqlite3_strglob(const char *zGlob, const char *zStr); | |
7063 | |
7064 /* | |
6812 ** CAPI3REF: Error Logging Interface | 7065 ** CAPI3REF: Error Logging Interface |
6813 ** | 7066 ** |
6814 ** ^The [sqlite3_log()] interface writes a message into the error log | 7067 ** ^The [sqlite3_log()] interface writes a message into the [error log] |
6815 ** established by the [SQLITE_CONFIG_LOG] option to [sqlite3_config()]. | 7068 ** established by the [SQLITE_CONFIG_LOG] option to [sqlite3_config()]. |
6816 ** ^If logging is enabled, the zFormat string and subsequent arguments are | 7069 ** ^If logging is enabled, the zFormat string and subsequent arguments are |
6817 ** used with [sqlite3_snprintf()] to generate the final output string. | 7070 ** used with [sqlite3_snprintf()] to generate the final output string. |
6818 ** | 7071 ** |
6819 ** The sqlite3_log() interface is intended for use by extensions such as | 7072 ** The sqlite3_log() interface is intended for use by extensions such as |
7104 #endif | 7357 #endif |
7105 | 7358 |
7106 #ifdef __cplusplus | 7359 #ifdef __cplusplus |
7107 } /* End of the 'extern "C"' block */ | 7360 } /* End of the 'extern "C"' block */ |
7108 #endif | 7361 #endif |
7109 #endif | 7362 #endif /* _SQLITE3_H_ */ |
7110 | 7363 |
7111 /* | 7364 /* |
7112 ** 2010 August 30 | 7365 ** 2010 August 30 |
7113 ** | 7366 ** |
7114 ** The author disclaims copyright to this source code. In place of | 7367 ** The author disclaims copyright to this source code. In place of |
7128 #ifdef __cplusplus | 7381 #ifdef __cplusplus |
7129 extern "C" { | 7382 extern "C" { |
7130 #endif | 7383 #endif |
7131 | 7384 |
7132 typedef struct sqlite3_rtree_geometry sqlite3_rtree_geometry; | 7385 typedef struct sqlite3_rtree_geometry sqlite3_rtree_geometry; |
7386 typedef struct sqlite3_rtree_query_info sqlite3_rtree_query_info; | |
7387 | |
7388 /* The double-precision datatype used by RTree depends on the | |
7389 ** SQLITE_RTREE_INT_ONLY compile-time option. | |
7390 */ | |
7391 #ifdef SQLITE_RTREE_INT_ONLY | |
7392 typedef sqlite3_int64 sqlite3_rtree_dbl; | |
7393 #else | |
7394 typedef double sqlite3_rtree_dbl; | |
7395 #endif | |
7133 | 7396 |
7134 /* | 7397 /* |
7135 ** Register a geometry callback named zGeom that can be used as part of an | 7398 ** Register a geometry callback named zGeom that can be used as part of an |
7136 ** R-Tree geometry query as follows: | 7399 ** R-Tree geometry query as follows: |
7137 ** | 7400 ** |
7138 ** SELECT ... FROM <rtree> WHERE <rtree col> MATCH $zGeom(... params ...) | 7401 ** SELECT ... FROM <rtree> WHERE <rtree col> MATCH $zGeom(... params ...) |
7139 */ | 7402 */ |
7140 SQLITE_API int sqlite3_rtree_geometry_callback( | 7403 SQLITE_API int sqlite3_rtree_geometry_callback( |
7141 sqlite3 *db, | 7404 sqlite3 *db, |
7142 const char *zGeom, | 7405 const char *zGeom, |
7143 #ifdef SQLITE_RTREE_INT_ONLY | 7406 int (*xGeom)(sqlite3_rtree_geometry*, int, sqlite3_rtree_dbl*,int*), |
7144 int (*xGeom)(sqlite3_rtree_geometry*, int n, sqlite3_int64 *a, int *pRes), | |
7145 #else | |
7146 int (*xGeom)(sqlite3_rtree_geometry*, int n, double *a, int *pRes), | |
7147 #endif | |
7148 void *pContext | 7407 void *pContext |
7149 ); | 7408 ); |
7150 | 7409 |
7151 | 7410 |
7152 /* | 7411 /* |
7154 ** argument to callbacks registered using rtree_geometry_callback(). | 7413 ** argument to callbacks registered using rtree_geometry_callback(). |
7155 */ | 7414 */ |
7156 struct sqlite3_rtree_geometry { | 7415 struct sqlite3_rtree_geometry { |
7157 void *pContext; /* Copy of pContext passed to s_r_g_c() */ | 7416 void *pContext; /* Copy of pContext passed to s_r_g_c() */ |
7158 int nParam; /* Size of array aParam[] */ | 7417 int nParam; /* Size of array aParam[] */ |
7159 double *aParam; /* Parameters passed to SQL geom function */ | 7418 sqlite3_rtree_dbl *aParam; /* Parameters passed to SQL geom function */ |
7160 void *pUser; /* Callback implementation user data */ | 7419 void *pUser; /* Callback implementation user data */ |
7161 void (*xDelUser)(void *); /* Called by SQLite to clean up pUser */ | 7420 void (*xDelUser)(void *); /* Called by SQLite to clean up pUser */ |
7162 }; | 7421 }; |
7163 | 7422 |
7423 /* | |
7424 ** Register a 2nd-generation geometry callback named zScore that can be | |
7425 ** used as part of an R-Tree geometry query as follows: | |
7426 ** | |
7427 ** SELECT ... FROM <rtree> WHERE <rtree col> MATCH $zQueryFunc(... params ...) | |
7428 */ | |
7429 SQLITE_API int sqlite3_rtree_query_callback( | |
7430 sqlite3 *db, | |
7431 const char *zQueryFunc, | |
7432 int (*xQueryFunc)(sqlite3_rtree_query_info*), | |
7433 void *pContext, | |
7434 void (*xDestructor)(void*) | |
7435 ); | |
7436 | |
7437 | |
7438 /* | |
7439 ** A pointer to a structure of the following type is passed as the | |
7440 ** argument to scored geometry callback registered using | |
7441 ** sqlite3_rtree_query_callback(). | |
7442 ** | |
7443 ** Note that the first 5 fields of this structure are identical to | |
7444 ** sqlite3_rtree_geometry. This structure is a subclass of | |
7445 ** sqlite3_rtree_geometry. | |
7446 */ | |
7447 struct sqlite3_rtree_query_info { | |
7448 void *pContext; /* pContext from when function registered */ | |
7449 int nParam; /* Number of function parameters */ | |
7450 sqlite3_rtree_dbl *aParam; /* value of function parameters */ | |
7451 void *pUser; /* callback can use this, if desired */ | |
7452 void (*xDelUser)(void*); /* function to free pUser */ | |
7453 sqlite3_rtree_dbl *aCoord; /* Coordinates of node or entry to check */ | |
7454 unsigned int *anQueue; /* Number of pending entries in the queue */ | |
7455 int nCoord; /* Number of coordinates */ | |
7456 int iLevel; /* Level of current node or entry */ | |
7457 int mxLevel; /* The largest iLevel value in the tree */ | |
7458 sqlite3_int64 iRowid; /* Rowid for current entry */ | |
7459 sqlite3_rtree_dbl rParentScore; /* Score of parent node */ | |
7460 int eParentWithin; /* Visibility of parent node */ | |
7461 int eWithin; /* OUT: Visiblity */ | |
7462 sqlite3_rtree_dbl rScore; /* OUT: Write the score here */ | |
7463 }; | |
7464 | |
7465 /* | |
7466 ** Allowed values for sqlite3_rtree_query.eWithin and .eParentWithin. | |
7467 */ | |
7468 #define NOT_WITHIN 0 /* Object completely outside of query region */ | |
7469 #define PARTLY_WITHIN 1 /* Object partially overlaps query region */ | |
7470 #define FULLY_WITHIN 2 /* Object fully contained within query region */ | |
7471 | |
7164 | 7472 |
7165 #ifdef __cplusplus | 7473 #ifdef __cplusplus |
7166 } /* end of the 'extern "C"' block */ | 7474 } /* end of the 'extern "C"' block */ |
7167 #endif | 7475 #endif |
7168 | 7476 |