Sqlite3 3.50.2
Light weight SQL DB
Loading...
Searching...
No Matches
sqlite3.h File Reference
#include <stdarg.h>
Include dependency graph for sqlite3.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  sqlite3_file
struct  sqlite3_io_methods
struct  sqlite3_vfs
struct  sqlite3_mem_methods
struct  sqlite3_module
struct  sqlite3_index_info
struct  sqlite3_index_info::sqlite3_index_constraint
struct  sqlite3_index_info::sqlite3_index_orderby
struct  sqlite3_index_info::sqlite3_index_constraint_usage
struct  sqlite3_vtab
struct  sqlite3_vtab_cursor
struct  sqlite3_mutex_methods
struct  sqlite3_pcache_page
struct  sqlite3_pcache_methods2
struct  sqlite3_pcache_methods
struct  sqlite3_snapshot
struct  sqlite3_rtree_geometry
struct  sqlite3_rtree_query_info
struct  Fts5PhraseIter
struct  Fts5ExtensionApi
struct  fts5_tokenizer_v2
struct  fts5_tokenizer
struct  fts5_api

Macros

#define SQLITE_EXTERN   extern
#define SQLITE_API
#define SQLITE_CDECL
#define SQLITE_APICALL
#define SQLITE_STDCALL   SQLITE_APICALL
#define SQLITE_CALLBACK
#define SQLITE_SYSAPI
#define SQLITE_DEPRECATED
#define SQLITE_EXPERIMENTAL
#define SQLITE_VERSION   "3.50.2"
#define SQLITE_VERSION_NUMBER   3050002
#define SQLITE_SOURCE_ID   "2025-06-28 14:00:48 2af157d77fb1304a74176eaee7fbc7c7e932d946bf25325e9c26c91db19e3079"
#define SQLITE_OK   0 /* Successful result */
#define SQLITE_ERROR   1 /* Generic error */
#define SQLITE_INTERNAL   2 /* Internal logic error in SQLite */
#define SQLITE_PERM   3 /* Access permission denied */
#define SQLITE_ABORT   4 /* Callback routine requested an abort */
#define SQLITE_BUSY   5 /* The database file is locked */
#define SQLITE_LOCKED   6 /* A table in the database is locked */
#define SQLITE_NOMEM   7 /* A malloc() failed */
#define SQLITE_READONLY   8 /* Attempt to write a readonly database */
#define SQLITE_INTERRUPT   9 /* Operation terminated by sqlite3_interrupt()*/
#define SQLITE_IOERR   10 /* Some kind of disk I/O error occurred */
#define SQLITE_CORRUPT   11 /* The database disk image is malformed */
#define SQLITE_NOTFOUND   12 /* Unknown opcode in sqlite3_file_control() */
#define SQLITE_FULL   13 /* Insertion failed because database is full */
#define SQLITE_CANTOPEN   14 /* Unable to open the database file */
#define SQLITE_PROTOCOL   15 /* Database lock protocol error */
#define SQLITE_EMPTY   16 /* Internal use only */
#define SQLITE_SCHEMA   17 /* The database schema changed */
#define SQLITE_TOOBIG   18 /* String or BLOB exceeds size limit */
#define SQLITE_CONSTRAINT   19 /* Abort due to constraint violation */
#define SQLITE_MISMATCH   20 /* Data type mismatch */
#define SQLITE_MISUSE   21 /* Library used incorrectly */
#define SQLITE_NOLFS   22 /* Uses OS features not supported on host */
#define SQLITE_AUTH   23 /* Authorization denied */
#define SQLITE_FORMAT   24 /* Not used */
#define SQLITE_RANGE   25 /* 2nd parameter to sqlite3_bind out of range */
#define SQLITE_NOTADB   26 /* File opened that is not a database file */
#define SQLITE_NOTICE   27 /* Notifications from sqlite3_log() */
#define SQLITE_WARNING   28 /* Warnings from sqlite3_log() */
#define SQLITE_ROW   100 /* sqlite3_step() has another row ready */
#define SQLITE_DONE   101 /* sqlite3_step() has finished executing */
#define SQLITE_ERROR_MISSING_COLLSEQ   (SQLITE_ERROR | (1<<8))
#define SQLITE_ERROR_RETRY   (SQLITE_ERROR | (2<<8))
#define SQLITE_ERROR_SNAPSHOT   (SQLITE_ERROR | (3<<8))
#define SQLITE_IOERR_READ   (SQLITE_IOERR | (1<<8))
#define SQLITE_IOERR_SHORT_READ   (SQLITE_IOERR | (2<<8))
#define SQLITE_IOERR_WRITE   (SQLITE_IOERR | (3<<8))
#define SQLITE_IOERR_FSYNC   (SQLITE_IOERR | (4<<8))
#define SQLITE_IOERR_DIR_FSYNC   (SQLITE_IOERR | (5<<8))
#define SQLITE_IOERR_TRUNCATE   (SQLITE_IOERR | (6<<8))
#define SQLITE_IOERR_FSTAT   (SQLITE_IOERR | (7<<8))
#define SQLITE_IOERR_UNLOCK   (SQLITE_IOERR | (8<<8))
#define SQLITE_IOERR_RDLOCK   (SQLITE_IOERR | (9<<8))
#define SQLITE_IOERR_DELETE   (SQLITE_IOERR | (10<<8))
#define SQLITE_IOERR_BLOCKED   (SQLITE_IOERR | (11<<8))
#define SQLITE_IOERR_NOMEM   (SQLITE_IOERR | (12<<8))
#define SQLITE_IOERR_ACCESS   (SQLITE_IOERR | (13<<8))
#define SQLITE_IOERR_CHECKRESERVEDLOCK   (SQLITE_IOERR | (14<<8))
#define SQLITE_IOERR_LOCK   (SQLITE_IOERR | (15<<8))
#define SQLITE_IOERR_CLOSE   (SQLITE_IOERR | (16<<8))
#define SQLITE_IOERR_DIR_CLOSE   (SQLITE_IOERR | (17<<8))
#define SQLITE_IOERR_SHMOPEN   (SQLITE_IOERR | (18<<8))
#define SQLITE_IOERR_SHMSIZE   (SQLITE_IOERR | (19<<8))
#define SQLITE_IOERR_SHMLOCK   (SQLITE_IOERR | (20<<8))
#define SQLITE_IOERR_SHMMAP   (SQLITE_IOERR | (21<<8))
#define SQLITE_IOERR_SEEK   (SQLITE_IOERR | (22<<8))
#define SQLITE_IOERR_DELETE_NOENT   (SQLITE_IOERR | (23<<8))
#define SQLITE_IOERR_MMAP   (SQLITE_IOERR | (24<<8))
#define SQLITE_IOERR_GETTEMPPATH   (SQLITE_IOERR | (25<<8))
#define SQLITE_IOERR_CONVPATH   (SQLITE_IOERR | (26<<8))
#define SQLITE_IOERR_VNODE   (SQLITE_IOERR | (27<<8))
#define SQLITE_IOERR_AUTH   (SQLITE_IOERR | (28<<8))
#define SQLITE_IOERR_BEGIN_ATOMIC   (SQLITE_IOERR | (29<<8))
#define SQLITE_IOERR_COMMIT_ATOMIC   (SQLITE_IOERR | (30<<8))
#define SQLITE_IOERR_ROLLBACK_ATOMIC   (SQLITE_IOERR | (31<<8))
#define SQLITE_IOERR_DATA   (SQLITE_IOERR | (32<<8))
#define SQLITE_IOERR_CORRUPTFS   (SQLITE_IOERR | (33<<8))
#define SQLITE_IOERR_IN_PAGE   (SQLITE_IOERR | (34<<8))
#define SQLITE_LOCKED_SHAREDCACHE   (SQLITE_LOCKED | (1<<8))
#define SQLITE_LOCKED_VTAB   (SQLITE_LOCKED | (2<<8))
#define SQLITE_BUSY_RECOVERY   (SQLITE_BUSY | (1<<8))
#define SQLITE_BUSY_SNAPSHOT   (SQLITE_BUSY | (2<<8))
#define SQLITE_BUSY_TIMEOUT   (SQLITE_BUSY | (3<<8))
#define SQLITE_CANTOPEN_NOTEMPDIR   (SQLITE_CANTOPEN | (1<<8))
#define SQLITE_CANTOPEN_ISDIR   (SQLITE_CANTOPEN | (2<<8))
#define SQLITE_CANTOPEN_FULLPATH   (SQLITE_CANTOPEN | (3<<8))
#define SQLITE_CANTOPEN_CONVPATH   (SQLITE_CANTOPEN | (4<<8))
#define SQLITE_CANTOPEN_DIRTYWAL   (SQLITE_CANTOPEN | (5<<8)) /* Not Used */
#define SQLITE_CANTOPEN_SYMLINK   (SQLITE_CANTOPEN | (6<<8))
#define SQLITE_CORRUPT_VTAB   (SQLITE_CORRUPT | (1<<8))
#define SQLITE_CORRUPT_SEQUENCE   (SQLITE_CORRUPT | (2<<8))
#define SQLITE_CORRUPT_INDEX   (SQLITE_CORRUPT | (3<<8))
#define SQLITE_READONLY_RECOVERY   (SQLITE_READONLY | (1<<8))
#define SQLITE_READONLY_CANTLOCK   (SQLITE_READONLY | (2<<8))
#define SQLITE_READONLY_ROLLBACK   (SQLITE_READONLY | (3<<8))
#define SQLITE_READONLY_DBMOVED   (SQLITE_READONLY | (4<<8))
#define SQLITE_READONLY_CANTINIT   (SQLITE_READONLY | (5<<8))
#define SQLITE_READONLY_DIRECTORY   (SQLITE_READONLY | (6<<8))
#define SQLITE_ABORT_ROLLBACK   (SQLITE_ABORT | (2<<8))
#define SQLITE_CONSTRAINT_CHECK   (SQLITE_CONSTRAINT | (1<<8))
#define SQLITE_CONSTRAINT_COMMITHOOK   (SQLITE_CONSTRAINT | (2<<8))
#define SQLITE_CONSTRAINT_FOREIGNKEY   (SQLITE_CONSTRAINT | (3<<8))
#define SQLITE_CONSTRAINT_FUNCTION   (SQLITE_CONSTRAINT | (4<<8))
#define SQLITE_CONSTRAINT_NOTNULL   (SQLITE_CONSTRAINT | (5<<8))
#define SQLITE_CONSTRAINT_PRIMARYKEY   (SQLITE_CONSTRAINT | (6<<8))
#define SQLITE_CONSTRAINT_TRIGGER   (SQLITE_CONSTRAINT | (7<<8))
#define SQLITE_CONSTRAINT_UNIQUE   (SQLITE_CONSTRAINT | (8<<8))
#define SQLITE_CONSTRAINT_VTAB   (SQLITE_CONSTRAINT | (9<<8))
#define SQLITE_CONSTRAINT_ROWID   (SQLITE_CONSTRAINT |(10<<8))
#define SQLITE_CONSTRAINT_PINNED   (SQLITE_CONSTRAINT |(11<<8))
#define SQLITE_CONSTRAINT_DATATYPE   (SQLITE_CONSTRAINT |(12<<8))
#define SQLITE_NOTICE_RECOVER_WAL   (SQLITE_NOTICE | (1<<8))
#define SQLITE_NOTICE_RECOVER_ROLLBACK   (SQLITE_NOTICE | (2<<8))
#define SQLITE_NOTICE_RBU   (SQLITE_NOTICE | (3<<8))
#define SQLITE_WARNING_AUTOINDEX   (SQLITE_WARNING | (1<<8))
#define SQLITE_AUTH_USER   (SQLITE_AUTH | (1<<8))
#define SQLITE_OK_LOAD_PERMANENTLY   (SQLITE_OK | (1<<8))
#define SQLITE_OK_SYMLINK   (SQLITE_OK | (2<<8)) /* internal use only */
#define SQLITE_OPEN_READONLY   0x00000001 /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_READWRITE   0x00000002 /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_CREATE   0x00000004 /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_DELETEONCLOSE   0x00000008 /* VFS only */
#define SQLITE_OPEN_EXCLUSIVE   0x00000010 /* VFS only */
#define SQLITE_OPEN_AUTOPROXY   0x00000020 /* VFS only */
#define SQLITE_OPEN_URI   0x00000040 /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_MEMORY   0x00000080 /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_MAIN_DB   0x00000100 /* VFS only */
#define SQLITE_OPEN_TEMP_DB   0x00000200 /* VFS only */
#define SQLITE_OPEN_TRANSIENT_DB   0x00000400 /* VFS only */
#define SQLITE_OPEN_MAIN_JOURNAL   0x00000800 /* VFS only */
#define SQLITE_OPEN_TEMP_JOURNAL   0x00001000 /* VFS only */
#define SQLITE_OPEN_SUBJOURNAL   0x00002000 /* VFS only */
#define SQLITE_OPEN_SUPER_JOURNAL   0x00004000 /* VFS only */
#define SQLITE_OPEN_NOMUTEX   0x00008000 /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_FULLMUTEX   0x00010000 /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_SHAREDCACHE   0x00020000 /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_PRIVATECACHE   0x00040000 /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_WAL   0x00080000 /* VFS only */
#define SQLITE_OPEN_NOFOLLOW   0x01000000 /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_EXRESCODE   0x02000000 /* Extended result codes */
#define SQLITE_OPEN_MASTER_JOURNAL   0x00004000 /* VFS only */
#define SQLITE_IOCAP_ATOMIC   0x00000001
#define SQLITE_IOCAP_ATOMIC512   0x00000002
#define SQLITE_IOCAP_ATOMIC1K   0x00000004
#define SQLITE_IOCAP_ATOMIC2K   0x00000008
#define SQLITE_IOCAP_ATOMIC4K   0x00000010
#define SQLITE_IOCAP_ATOMIC8K   0x00000020
#define SQLITE_IOCAP_ATOMIC16K   0x00000040
#define SQLITE_IOCAP_ATOMIC32K   0x00000080
#define SQLITE_IOCAP_ATOMIC64K   0x00000100
#define SQLITE_IOCAP_SAFE_APPEND   0x00000200
#define SQLITE_IOCAP_SEQUENTIAL   0x00000400
#define SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN   0x00000800
#define SQLITE_IOCAP_POWERSAFE_OVERWRITE   0x00001000
#define SQLITE_IOCAP_IMMUTABLE   0x00002000
#define SQLITE_IOCAP_BATCH_ATOMIC   0x00004000
#define SQLITE_IOCAP_SUBPAGE_READ   0x00008000
#define SQLITE_LOCK_NONE   0 /* xUnlock() only */
#define SQLITE_LOCK_SHARED   1 /* xLock() or xUnlock() */
#define SQLITE_LOCK_RESERVED   2 /* xLock() only */
#define SQLITE_LOCK_PENDING   3 /* xLock() only */
#define SQLITE_LOCK_EXCLUSIVE   4 /* xLock() only */
#define SQLITE_SYNC_NORMAL   0x00002
#define SQLITE_SYNC_FULL   0x00003
#define SQLITE_SYNC_DATAONLY   0x00010
#define SQLITE_FCNTL_LOCKSTATE   1
#define SQLITE_FCNTL_GET_LOCKPROXYFILE   2
#define SQLITE_FCNTL_SET_LOCKPROXYFILE   3
#define SQLITE_FCNTL_LAST_ERRNO   4
#define SQLITE_FCNTL_SIZE_HINT   5
#define SQLITE_FCNTL_CHUNK_SIZE   6
#define SQLITE_FCNTL_FILE_POINTER   7
#define SQLITE_FCNTL_SYNC_OMITTED   8
#define SQLITE_FCNTL_WIN32_AV_RETRY   9
#define SQLITE_FCNTL_PERSIST_WAL   10
#define SQLITE_FCNTL_OVERWRITE   11
#define SQLITE_FCNTL_VFSNAME   12
#define SQLITE_FCNTL_POWERSAFE_OVERWRITE   13
#define SQLITE_FCNTL_PRAGMA   14
#define SQLITE_FCNTL_BUSYHANDLER   15
#define SQLITE_FCNTL_TEMPFILENAME   16
#define SQLITE_FCNTL_MMAP_SIZE   18
#define SQLITE_FCNTL_TRACE   19
#define SQLITE_FCNTL_HAS_MOVED   20
#define SQLITE_FCNTL_SYNC   21
#define SQLITE_FCNTL_COMMIT_PHASETWO   22
#define SQLITE_FCNTL_WIN32_SET_HANDLE   23
#define SQLITE_FCNTL_WAL_BLOCK   24
#define SQLITE_FCNTL_ZIPVFS   25
#define SQLITE_FCNTL_RBU   26
#define SQLITE_FCNTL_VFS_POINTER   27
#define SQLITE_FCNTL_JOURNAL_POINTER   28
#define SQLITE_FCNTL_WIN32_GET_HANDLE   29
#define SQLITE_FCNTL_PDB   30
#define SQLITE_FCNTL_BEGIN_ATOMIC_WRITE   31
#define SQLITE_FCNTL_COMMIT_ATOMIC_WRITE   32
#define SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE   33
#define SQLITE_FCNTL_LOCK_TIMEOUT   34
#define SQLITE_FCNTL_DATA_VERSION   35
#define SQLITE_FCNTL_SIZE_LIMIT   36
#define SQLITE_FCNTL_CKPT_DONE   37
#define SQLITE_FCNTL_RESERVE_BYTES   38
#define SQLITE_FCNTL_CKPT_START   39
#define SQLITE_FCNTL_EXTERNAL_READER   40
#define SQLITE_FCNTL_CKSM_FILE   41
#define SQLITE_FCNTL_RESET_CACHE   42
#define SQLITE_FCNTL_NULL_IO   43
#define SQLITE_FCNTL_BLOCK_ON_CONNECT   44
#define SQLITE_GET_LOCKPROXYFILE   SQLITE_FCNTL_GET_LOCKPROXYFILE
#define SQLITE_SET_LOCKPROXYFILE   SQLITE_FCNTL_SET_LOCKPROXYFILE
#define SQLITE_LAST_ERRNO   SQLITE_FCNTL_LAST_ERRNO
#define SQLITE_ACCESS_EXISTS   0
#define SQLITE_ACCESS_READWRITE   1 /* Used by PRAGMA temp_store_directory */
#define SQLITE_ACCESS_READ   2 /* Unused */
#define SQLITE_SHM_UNLOCK   1
#define SQLITE_SHM_LOCK   2
#define SQLITE_SHM_SHARED   4
#define SQLITE_SHM_EXCLUSIVE   8
#define SQLITE_SHM_NLOCK   8
#define SQLITE_CONFIG_SINGLETHREAD   1 /* nil */
#define SQLITE_CONFIG_MULTITHREAD   2 /* nil */
#define SQLITE_CONFIG_SERIALIZED   3 /* nil */
#define SQLITE_CONFIG_MALLOC   4 /* sqlite3_mem_methods* */
#define SQLITE_CONFIG_GETMALLOC   5 /* sqlite3_mem_methods* */
#define SQLITE_CONFIG_SCRATCH   6 /* No longer used */
#define SQLITE_CONFIG_PAGECACHE   7 /* void*, int sz, int N */
#define SQLITE_CONFIG_HEAP   8 /* void*, int nByte, int min */
#define SQLITE_CONFIG_MEMSTATUS   9 /* boolean */
#define SQLITE_CONFIG_MUTEX   10 /* sqlite3_mutex_methods* */
#define SQLITE_CONFIG_GETMUTEX   11 /* sqlite3_mutex_methods* */
#define SQLITE_CONFIG_LOOKASIDE   13 /* int int */
#define SQLITE_CONFIG_PCACHE   14 /* no-op */
#define SQLITE_CONFIG_GETPCACHE   15 /* no-op */
#define SQLITE_CONFIG_LOG   16 /* xFunc, void* */
#define SQLITE_CONFIG_URI   17 /* int */
#define SQLITE_CONFIG_PCACHE2   18 /* sqlite3_pcache_methods2* */
#define SQLITE_CONFIG_GETPCACHE2   19 /* sqlite3_pcache_methods2* */
#define SQLITE_CONFIG_COVERING_INDEX_SCAN   20 /* int */
#define SQLITE_CONFIG_SQLLOG   21 /* xSqllog, void* */
#define SQLITE_CONFIG_MMAP_SIZE   22 /* sqlite3_int64, sqlite3_int64 */
#define SQLITE_CONFIG_WIN32_HEAPSIZE   23 /* int nByte */
#define SQLITE_CONFIG_PCACHE_HDRSZ   24 /* int *psz */
#define SQLITE_CONFIG_PMASZ   25 /* unsigned int szPma */
#define SQLITE_CONFIG_STMTJRNL_SPILL   26 /* int nByte */
#define SQLITE_CONFIG_SMALL_MALLOC   27 /* boolean */
#define SQLITE_CONFIG_SORTERREF_SIZE   28 /* int nByte */
#define SQLITE_CONFIG_MEMDB_MAXSIZE   29 /* sqlite3_int64 */
#define SQLITE_CONFIG_ROWID_IN_VIEW   30 /* int* */
#define SQLITE_DBCONFIG_MAINDBNAME   1000 /* const char* */
#define SQLITE_DBCONFIG_LOOKASIDE   1001 /* void* int int */
#define SQLITE_DBCONFIG_ENABLE_FKEY   1002 /* int int* */
#define SQLITE_DBCONFIG_ENABLE_TRIGGER   1003 /* int int* */
#define SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER   1004 /* int int* */
#define SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION   1005 /* int int* */
#define SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE   1006 /* int int* */
#define SQLITE_DBCONFIG_ENABLE_QPSG   1007 /* int int* */
#define SQLITE_DBCONFIG_TRIGGER_EQP   1008 /* int int* */
#define SQLITE_DBCONFIG_RESET_DATABASE   1009 /* int int* */
#define SQLITE_DBCONFIG_DEFENSIVE   1010 /* int int* */
#define SQLITE_DBCONFIG_WRITABLE_SCHEMA   1011 /* int int* */
#define SQLITE_DBCONFIG_LEGACY_ALTER_TABLE   1012 /* int int* */
#define SQLITE_DBCONFIG_DQS_DML   1013 /* int int* */
#define SQLITE_DBCONFIG_DQS_DDL   1014 /* int int* */
#define SQLITE_DBCONFIG_ENABLE_VIEW   1015 /* int int* */
#define SQLITE_DBCONFIG_LEGACY_FILE_FORMAT   1016 /* int int* */
#define SQLITE_DBCONFIG_TRUSTED_SCHEMA   1017 /* int int* */
#define SQLITE_DBCONFIG_STMT_SCANSTATUS   1018 /* int int* */
#define SQLITE_DBCONFIG_REVERSE_SCANORDER   1019 /* int int* */
#define SQLITE_DBCONFIG_ENABLE_ATTACH_CREATE   1020 /* int int* */
#define SQLITE_DBCONFIG_ENABLE_ATTACH_WRITE   1021 /* int int* */
#define SQLITE_DBCONFIG_ENABLE_COMMENTS   1022 /* int int* */
#define SQLITE_DBCONFIG_MAX   1022 /* Largest DBCONFIG */
#define SQLITE_SETLK_BLOCK_ON_CONNECT   0x01
#define SQLITE_DENY   1 /* Abort the SQL statement with an error */
#define SQLITE_IGNORE   2 /* Don't allow access, but don't generate an error */
#define SQLITE_CREATE_INDEX   1 /* Index Name Table Name */
#define SQLITE_CREATE_TABLE   2 /* Table Name NULL */
#define SQLITE_CREATE_TEMP_INDEX   3 /* Index Name Table Name */
#define SQLITE_CREATE_TEMP_TABLE   4 /* Table Name NULL */
#define SQLITE_CREATE_TEMP_TRIGGER   5 /* Trigger Name Table Name */
#define SQLITE_CREATE_TEMP_VIEW   6 /* View Name NULL */
#define SQLITE_CREATE_TRIGGER   7 /* Trigger Name Table Name */
#define SQLITE_CREATE_VIEW   8 /* View Name NULL */
#define SQLITE_DELETE   9 /* Table Name NULL */
#define SQLITE_DROP_INDEX   10 /* Index Name Table Name */
#define SQLITE_DROP_TABLE   11 /* Table Name NULL */
#define SQLITE_DROP_TEMP_INDEX   12 /* Index Name Table Name */
#define SQLITE_DROP_TEMP_TABLE   13 /* Table Name NULL */
#define SQLITE_DROP_TEMP_TRIGGER   14 /* Trigger Name Table Name */
#define SQLITE_DROP_TEMP_VIEW   15 /* View Name NULL */
#define SQLITE_DROP_TRIGGER   16 /* Trigger Name Table Name */
#define SQLITE_DROP_VIEW   17 /* View Name NULL */
#define SQLITE_INSERT   18 /* Table Name NULL */
#define SQLITE_PRAGMA   19 /* Pragma Name 1st arg or NULL */
#define SQLITE_READ   20 /* Table Name Column Name */
#define SQLITE_SELECT   21 /* NULL NULL */
#define SQLITE_TRANSACTION   22 /* Operation NULL */
#define SQLITE_UPDATE   23 /* Table Name Column Name */
#define SQLITE_ATTACH   24 /* Filename NULL */
#define SQLITE_DETACH   25 /* Database Name NULL */
#define SQLITE_ALTER_TABLE   26 /* Database Name Table Name */
#define SQLITE_REINDEX   27 /* Index Name NULL */
#define SQLITE_ANALYZE   28 /* Table Name NULL */
#define SQLITE_CREATE_VTABLE   29 /* Table Name Module Name */
#define SQLITE_DROP_VTABLE   30 /* Table Name Module Name */
#define SQLITE_FUNCTION   31 /* NULL Function Name */
#define SQLITE_SAVEPOINT   32 /* Operation Savepoint Name */
#define SQLITE_COPY   0 /* No longer used */
#define SQLITE_RECURSIVE   33 /* NULL NULL */
#define SQLITE_TRACE_STMT   0x01
#define SQLITE_TRACE_PROFILE   0x02
#define SQLITE_TRACE_ROW   0x04
#define SQLITE_TRACE_CLOSE   0x08
#define SQLITE_LIMIT_LENGTH   0
#define SQLITE_LIMIT_SQL_LENGTH   1
#define SQLITE_LIMIT_COLUMN   2
#define SQLITE_LIMIT_EXPR_DEPTH   3
#define SQLITE_LIMIT_COMPOUND_SELECT   4
#define SQLITE_LIMIT_VDBE_OP   5
#define SQLITE_LIMIT_FUNCTION_ARG   6
#define SQLITE_LIMIT_ATTACHED   7
#define SQLITE_LIMIT_LIKE_PATTERN_LENGTH   8
#define SQLITE_LIMIT_VARIABLE_NUMBER   9
#define SQLITE_LIMIT_TRIGGER_DEPTH   10
#define SQLITE_LIMIT_WORKER_THREADS   11
#define SQLITE_PREPARE_PERSISTENT   0x01
#define SQLITE_PREPARE_NORMALIZE   0x02
#define SQLITE_PREPARE_NO_VTAB   0x04
#define SQLITE_PREPARE_DONT_LOG   0x10
#define SQLITE_INTEGER   1
#define SQLITE_FLOAT   2
#define SQLITE_BLOB   4
#define SQLITE_NULL   5
#define SQLITE_TEXT   3
#define SQLITE3_TEXT   3
#define SQLITE_UTF8   1 /* IMP: R-37514-35566 */
#define SQLITE_UTF16LE   2 /* IMP: R-03371-37637 */
#define SQLITE_UTF16BE   3 /* IMP: R-51971-34154 */
#define SQLITE_UTF16   4 /* Use native byte order */
#define SQLITE_ANY   5 /* Deprecated */
#define SQLITE_UTF16_ALIGNED   8 /* sqlite3_create_collation only */
#define SQLITE_DETERMINISTIC   0x000000800
#define SQLITE_DIRECTONLY   0x000080000
#define SQLITE_SUBTYPE   0x000100000
#define SQLITE_INNOCUOUS   0x000200000
#define SQLITE_RESULT_SUBTYPE   0x001000000
#define SQLITE_SELFORDER1   0x002000000
#define SQLITE_STATIC   ((sqlite3_destructor_type)0)
#define SQLITE_TRANSIENT   ((sqlite3_destructor_type)-1)
#define SQLITE_WIN32_DATA_DIRECTORY_TYPE   1
#define SQLITE_WIN32_TEMP_DIRECTORY_TYPE   2
#define SQLITE_TXN_NONE   0
#define SQLITE_TXN_READ   1
#define SQLITE_TXN_WRITE   2
#define SQLITE_INDEX_SCAN_UNIQUE   0x00000001 /* Scan visits at most 1 row */
#define SQLITE_INDEX_SCAN_HEX   0x00000002 /* Display idxNum as hex */
#define SQLITE_INDEX_CONSTRAINT_EQ   2
#define SQLITE_INDEX_CONSTRAINT_GT   4
#define SQLITE_INDEX_CONSTRAINT_LE   8
#define SQLITE_INDEX_CONSTRAINT_LT   16
#define SQLITE_INDEX_CONSTRAINT_GE   32
#define SQLITE_INDEX_CONSTRAINT_MATCH   64
#define SQLITE_INDEX_CONSTRAINT_LIKE   65
#define SQLITE_INDEX_CONSTRAINT_GLOB   66
#define SQLITE_INDEX_CONSTRAINT_REGEXP   67
#define SQLITE_INDEX_CONSTRAINT_NE   68
#define SQLITE_INDEX_CONSTRAINT_ISNOT   69
#define SQLITE_INDEX_CONSTRAINT_ISNOTNULL   70
#define SQLITE_INDEX_CONSTRAINT_ISNULL   71
#define SQLITE_INDEX_CONSTRAINT_IS   72
#define SQLITE_INDEX_CONSTRAINT_LIMIT   73
#define SQLITE_INDEX_CONSTRAINT_OFFSET   74
#define SQLITE_INDEX_CONSTRAINT_FUNCTION   150
#define SQLITE_MUTEX_FAST   0
#define SQLITE_MUTEX_RECURSIVE   1
#define SQLITE_MUTEX_STATIC_MAIN   2
#define SQLITE_MUTEX_STATIC_MEM   3 /* sqlite3_malloc() */
#define SQLITE_MUTEX_STATIC_MEM2   4 /* NOT USED */
#define SQLITE_MUTEX_STATIC_OPEN   4 /* sqlite3BtreeOpen() */
#define SQLITE_MUTEX_STATIC_PRNG   5 /* sqlite3_randomness() */
#define SQLITE_MUTEX_STATIC_LRU   6 /* lru page list */
#define SQLITE_MUTEX_STATIC_LRU2   7 /* NOT USED */
#define SQLITE_MUTEX_STATIC_PMEM   7 /* sqlite3PageMalloc() */
#define SQLITE_MUTEX_STATIC_APP1   8 /* For use by application */
#define SQLITE_MUTEX_STATIC_APP2   9 /* For use by application */
#define SQLITE_MUTEX_STATIC_APP3   10 /* For use by application */
#define SQLITE_MUTEX_STATIC_VFS1   11 /* For use by built-in VFS */
#define SQLITE_MUTEX_STATIC_VFS2   12 /* For use by extension VFS */
#define SQLITE_MUTEX_STATIC_VFS3   13 /* For use by application VFS */
#define SQLITE_MUTEX_STATIC_MASTER   2
#define SQLITE_TESTCTRL_FIRST   5
#define SQLITE_TESTCTRL_PRNG_SAVE   5
#define SQLITE_TESTCTRL_PRNG_RESTORE   6
#define SQLITE_TESTCTRL_PRNG_RESET   7 /* NOT USED */
#define SQLITE_TESTCTRL_FK_NO_ACTION   7
#define SQLITE_TESTCTRL_BITVEC_TEST   8
#define SQLITE_TESTCTRL_FAULT_INSTALL   9
#define SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS   10
#define SQLITE_TESTCTRL_PENDING_BYTE   11
#define SQLITE_TESTCTRL_ASSERT   12
#define SQLITE_TESTCTRL_ALWAYS   13
#define SQLITE_TESTCTRL_RESERVE   14 /* NOT USED */
#define SQLITE_TESTCTRL_JSON_SELFCHECK   14
#define SQLITE_TESTCTRL_OPTIMIZATIONS   15
#define SQLITE_TESTCTRL_ISKEYWORD   16 /* NOT USED */
#define SQLITE_TESTCTRL_GETOPT   16
#define SQLITE_TESTCTRL_SCRATCHMALLOC   17 /* NOT USED */
#define SQLITE_TESTCTRL_INTERNAL_FUNCTIONS   17
#define SQLITE_TESTCTRL_LOCALTIME_FAULT   18
#define SQLITE_TESTCTRL_EXPLAIN_STMT   19 /* NOT USED */
#define SQLITE_TESTCTRL_ONCE_RESET_THRESHOLD   19
#define SQLITE_TESTCTRL_NEVER_CORRUPT   20
#define SQLITE_TESTCTRL_VDBE_COVERAGE   21
#define SQLITE_TESTCTRL_BYTEORDER   22
#define SQLITE_TESTCTRL_ISINIT   23
#define SQLITE_TESTCTRL_SORTER_MMAP   24
#define SQLITE_TESTCTRL_IMPOSTER   25
#define SQLITE_TESTCTRL_PARSER_COVERAGE   26
#define SQLITE_TESTCTRL_RESULT_INTREAL   27
#define SQLITE_TESTCTRL_PRNG_SEED   28
#define SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS   29
#define SQLITE_TESTCTRL_SEEK_COUNT   30
#define SQLITE_TESTCTRL_TRACEFLAGS   31
#define SQLITE_TESTCTRL_TUNE   32
#define SQLITE_TESTCTRL_LOGEST   33
#define SQLITE_TESTCTRL_USELONGDOUBLE   34 /* NOT USED */
#define SQLITE_TESTCTRL_LAST   34 /* Largest TESTCTRL */
#define SQLITE_STATUS_MEMORY_USED   0
#define SQLITE_STATUS_PAGECACHE_USED   1
#define SQLITE_STATUS_PAGECACHE_OVERFLOW   2
#define SQLITE_STATUS_SCRATCH_USED   3 /* NOT USED */
#define SQLITE_STATUS_SCRATCH_OVERFLOW   4 /* NOT USED */
#define SQLITE_STATUS_MALLOC_SIZE   5
#define SQLITE_STATUS_PARSER_STACK   6
#define SQLITE_STATUS_PAGECACHE_SIZE   7
#define SQLITE_STATUS_SCRATCH_SIZE   8 /* NOT USED */
#define SQLITE_STATUS_MALLOC_COUNT   9
#define SQLITE_DBSTATUS_LOOKASIDE_USED   0
#define SQLITE_DBSTATUS_CACHE_USED   1
#define SQLITE_DBSTATUS_SCHEMA_USED   2
#define SQLITE_DBSTATUS_STMT_USED   3
#define SQLITE_DBSTATUS_LOOKASIDE_HIT   4
#define SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE   5
#define SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL   6
#define SQLITE_DBSTATUS_CACHE_HIT   7
#define SQLITE_DBSTATUS_CACHE_MISS   8
#define SQLITE_DBSTATUS_CACHE_WRITE   9
#define SQLITE_DBSTATUS_DEFERRED_FKS   10
#define SQLITE_DBSTATUS_CACHE_USED_SHARED   11
#define SQLITE_DBSTATUS_CACHE_SPILL   12
#define SQLITE_DBSTATUS_MAX   12 /* Largest defined DBSTATUS */
#define SQLITE_STMTSTATUS_FULLSCAN_STEP   1
#define SQLITE_STMTSTATUS_SORT   2
#define SQLITE_STMTSTATUS_AUTOINDEX   3
#define SQLITE_STMTSTATUS_VM_STEP   4
#define SQLITE_STMTSTATUS_REPREPARE   5
#define SQLITE_STMTSTATUS_RUN   6
#define SQLITE_STMTSTATUS_FILTER_MISS   7
#define SQLITE_STMTSTATUS_FILTER_HIT   8
#define SQLITE_STMTSTATUS_MEMUSED   99
#define SQLITE_CHECKPOINT_PASSIVE   0 /* Do as much as possible w/o blocking */
#define SQLITE_CHECKPOINT_FULL   1 /* Wait for writers, then checkpoint */
#define SQLITE_CHECKPOINT_RESTART   2 /* Like FULL but wait for readers */
#define SQLITE_CHECKPOINT_TRUNCATE   3 /* Like RESTART but also truncate WAL */
#define SQLITE_VTAB_CONSTRAINT_SUPPORT   1
#define SQLITE_VTAB_INNOCUOUS   2
#define SQLITE_VTAB_DIRECTONLY   3
#define SQLITE_VTAB_USES_ALL_SCHEMAS   4
#define SQLITE_ROLLBACK   1
#define SQLITE_FAIL   3
#define SQLITE_REPLACE   5
#define SQLITE_SCANSTAT_NLOOP   0
#define SQLITE_SCANSTAT_NVISIT   1
#define SQLITE_SCANSTAT_EST   2
#define SQLITE_SCANSTAT_NAME   3
#define SQLITE_SCANSTAT_EXPLAIN   4
#define SQLITE_SCANSTAT_SELECTID   5
#define SQLITE_SCANSTAT_PARENTID   6
#define SQLITE_SCANSTAT_NCYCLE   7
#define SQLITE_SCANSTAT_COMPLEX   0x0001
#define SQLITE_SERIALIZE_NOCOPY   0x001 /* Do no memory allocations */
#define SQLITE_DESERIALIZE_FREEONCLOSE   1 /* Call sqlite3_free() on close */
#define SQLITE_DESERIALIZE_RESIZEABLE   2 /* Resize using sqlite3_realloc64() */
#define SQLITE_DESERIALIZE_READONLY   4 /* Database is read-only */
#define _SQLITE3RTREE_H_
#define NOT_WITHIN   0 /* Object completely outside of query region */
#define PARTLY_WITHIN   1 /* Object partially overlaps query region */
#define FULLY_WITHIN   2 /* Object fully contained within query region */
#define _FTS5_H
#define FTS5_TOKENIZE_QUERY   0x0001
#define FTS5_TOKENIZE_PREFIX   0x0002
#define FTS5_TOKENIZE_DOCUMENT   0x0004
#define FTS5_TOKENIZE_AUX   0x0008
#define FTS5_TOKEN_COLOCATED   0x0001 /* Same position as prev. token */

Typedefs

typedef int(* sqlite3_callback) (void *, int, char **, char **)
typedef const char * sqlite3_filename
typedef void(* sqlite3_syscall_ptr) (void)
typedef void(* sqlite3_destructor_type) (void *)
typedef struct sqlite3_snapshot sqlite3_snapshot
typedef void(* fts5_extension_function) (const Fts5ExtensionApi *pApi, Fts5Context *pFts, sqlite3_context *pCtx, int nVal, sqlite3_value **apVal)

Functions

const char * sqlite3_libversion (void)
const char * sqlite3_sourceid (void)
int sqlite3_libversion_number (void)
int sqlite3_compileoption_used (const char *zOptName)
const char * sqlite3_compileoption_get (int N)
int sqlite3_threadsafe (void)
int sqlite3_close (sqlite3 *)
int sqlite3_close_v2 (sqlite3 *)
int sqlite3_exec (sqlite3 *, const char *sql, int(*callback)(void *, int, char **, char **), void *, char **errmsg)
int sqlite3_initialize (void)
int sqlite3_shutdown (void)
int sqlite3_os_init (void)
int sqlite3_os_end (void)
int sqlite3_config (int,...)
int sqlite3_db_config (sqlite3 *, int op,...)
int sqlite3_extended_result_codes (sqlite3 *, int onoff)
sqlite3_int64 sqlite3_last_insert_rowid (sqlite3 *)
void sqlite3_set_last_insert_rowid (sqlite3 *, sqlite3_int64)
int sqlite3_changes (sqlite3 *)
sqlite3_int64 sqlite3_changes64 (sqlite3 *)
int sqlite3_total_changes (sqlite3 *)
sqlite3_int64 sqlite3_total_changes64 (sqlite3 *)
void sqlite3_interrupt (sqlite3 *)
int sqlite3_is_interrupted (sqlite3 *)
int sqlite3_complete (const char *sql)
int sqlite3_complete16 (const void *sql)
int sqlite3_busy_handler (sqlite3 *, int(*)(void *, int), void *)
int sqlite3_busy_timeout (sqlite3 *, int ms)
int sqlite3_setlk_timeout (sqlite3 *, int ms, int flags)
int sqlite3_get_table (sqlite3 *db, const char *zSql, char ***pazResult, int *pnRow, int *pnColumn, char **pzErrmsg)
void sqlite3_free_table (char **result)
char * sqlite3_mprintf (const char *,...)
char * sqlite3_vmprintf (const char *, va_list)
char * sqlite3_snprintf (int, char *, const char *,...)
char * sqlite3_vsnprintf (int, char *, const char *, va_list)
void * sqlite3_malloc (int)
void * sqlite3_malloc64 (sqlite3_uint64)
void * sqlite3_realloc (void *, int)
void * sqlite3_realloc64 (void *, sqlite3_uint64)
void sqlite3_free (void *)
sqlite3_uint64 sqlite3_msize (void *)
sqlite3_int64 sqlite3_memory_used (void)
sqlite3_int64 sqlite3_memory_highwater (int resetFlag)
void sqlite3_randomness (int N, void *P)
int sqlite3_set_authorizer (sqlite3 *, int(*xAuth)(void *, int, const char *, const char *, const char *, const char *), void *pUserData)
void * sqlite3_trace (sqlite3 *, void(*xTrace)(void *, const char *), void *)
void * sqlite3_profile (sqlite3 *, void(*xProfile)(void *, const char *, sqlite3_uint64), void *)
int sqlite3_trace_v2 (sqlite3 *, unsigned uMask, int(*xCallback)(unsigned, void *, void *, void *), void *pCtx)
void sqlite3_progress_handler (sqlite3 *, int, int(*)(void *), void *)
int sqlite3_open (const char *filename, sqlite3 **ppDb)
int sqlite3_open16 (const void *filename, sqlite3 **ppDb)
int sqlite3_open_v2 (const char *filename, sqlite3 **ppDb, int flags, const char *zVfs)
const char * sqlite3_uri_parameter (sqlite3_filename z, const char *zParam)
int sqlite3_uri_boolean (sqlite3_filename z, const char *zParam, int bDefault)
sqlite3_int64 sqlite3_uri_int64 (sqlite3_filename, const char *, sqlite3_int64)
const char * sqlite3_uri_key (sqlite3_filename z, int N)
const char * sqlite3_filename_database (sqlite3_filename)
const char * sqlite3_filename_journal (sqlite3_filename)
const char * sqlite3_filename_wal (sqlite3_filename)
sqlite3_filesqlite3_database_file_object (const char *)
sqlite3_filename sqlite3_create_filename (const char *zDatabase, const char *zJournal, const char *zWal, int nParam, const char **azParam)
void sqlite3_free_filename (sqlite3_filename)
int sqlite3_errcode (sqlite3 *db)
int sqlite3_extended_errcode (sqlite3 *db)
const char * sqlite3_errmsg (sqlite3 *)
const void * sqlite3_errmsg16 (sqlite3 *)
const char * sqlite3_errstr (int)
int sqlite3_error_offset (sqlite3 *db)
int sqlite3_limit (sqlite3 *, int id, int newVal)
int sqlite3_prepare (sqlite3 *db, const char *zSql, int nByte, sqlite3_stmt **ppStmt, const char **pzTail)
int sqlite3_prepare_v2 (sqlite3 *db, const char *zSql, int nByte, sqlite3_stmt **ppStmt, const char **pzTail)
int sqlite3_prepare_v3 (sqlite3 *db, const char *zSql, int nByte, unsigned int prepFlags, sqlite3_stmt **ppStmt, const char **pzTail)
int sqlite3_prepare16 (sqlite3 *db, const void *zSql, int nByte, sqlite3_stmt **ppStmt, const void **pzTail)
int sqlite3_prepare16_v2 (sqlite3 *db, const void *zSql, int nByte, sqlite3_stmt **ppStmt, const void **pzTail)
int sqlite3_prepare16_v3 (sqlite3 *db, const void *zSql, int nByte, unsigned int prepFlags, sqlite3_stmt **ppStmt, const void **pzTail)
const char * sqlite3_sql (sqlite3_stmt *pStmt)
char * sqlite3_expanded_sql (sqlite3_stmt *pStmt)
int sqlite3_stmt_readonly (sqlite3_stmt *pStmt)
int sqlite3_stmt_isexplain (sqlite3_stmt *pStmt)
int sqlite3_stmt_explain (sqlite3_stmt *pStmt, int eMode)
int sqlite3_stmt_busy (sqlite3_stmt *)
int sqlite3_bind_blob (sqlite3_stmt *, int, const void *, int n, void(*)(void *))
int sqlite3_bind_blob64 (sqlite3_stmt *, int, const void *, sqlite3_uint64, void(*)(void *))
int sqlite3_bind_double (sqlite3_stmt *, int, double)
int sqlite3_bind_int (sqlite3_stmt *, int, int)
int sqlite3_bind_int64 (sqlite3_stmt *, int, sqlite3_int64)
int sqlite3_bind_null (sqlite3_stmt *, int)
int sqlite3_bind_text (sqlite3_stmt *, int, const char *, int, void(*)(void *))
int sqlite3_bind_text16 (sqlite3_stmt *, int, const void *, int, void(*)(void *))
int sqlite3_bind_text64 (sqlite3_stmt *, int, const char *, sqlite3_uint64, void(*)(void *), unsigned char encoding)
int sqlite3_bind_value (sqlite3_stmt *, int, const sqlite3_value *)
int sqlite3_bind_pointer (sqlite3_stmt *, int, void *, const char *, void(*)(void *))
int sqlite3_bind_zeroblob (sqlite3_stmt *, int, int n)
int sqlite3_bind_zeroblob64 (sqlite3_stmt *, int, sqlite3_uint64)
int sqlite3_bind_parameter_count (sqlite3_stmt *)
const char * sqlite3_bind_parameter_name (sqlite3_stmt *, int)
int sqlite3_bind_parameter_index (sqlite3_stmt *, const char *zName)
int sqlite3_clear_bindings (sqlite3_stmt *)
int sqlite3_column_count (sqlite3_stmt *pStmt)
const char * sqlite3_column_name (sqlite3_stmt *, int N)
const void * sqlite3_column_name16 (sqlite3_stmt *, int N)
const char * sqlite3_column_database_name (sqlite3_stmt *, int)
const void * sqlite3_column_database_name16 (sqlite3_stmt *, int)
const char * sqlite3_column_table_name (sqlite3_stmt *, int)
const void * sqlite3_column_table_name16 (sqlite3_stmt *, int)
const char * sqlite3_column_origin_name (sqlite3_stmt *, int)
const void * sqlite3_column_origin_name16 (sqlite3_stmt *, int)
const char * sqlite3_column_decltype (sqlite3_stmt *, int)
const void * sqlite3_column_decltype16 (sqlite3_stmt *, int)
int sqlite3_step (sqlite3_stmt *)
int sqlite3_data_count (sqlite3_stmt *pStmt)
const void * sqlite3_column_blob (sqlite3_stmt *, int iCol)
double sqlite3_column_double (sqlite3_stmt *, int iCol)
int sqlite3_column_int (sqlite3_stmt *, int iCol)
sqlite3_int64 sqlite3_column_int64 (sqlite3_stmt *, int iCol)
const unsigned char * sqlite3_column_text (sqlite3_stmt *, int iCol)
const void * sqlite3_column_text16 (sqlite3_stmt *, int iCol)
sqlite3_valuesqlite3_column_value (sqlite3_stmt *, int iCol)
int sqlite3_column_bytes (sqlite3_stmt *, int iCol)
int sqlite3_column_bytes16 (sqlite3_stmt *, int iCol)
int sqlite3_column_type (sqlite3_stmt *, int iCol)
int sqlite3_finalize (sqlite3_stmt *pStmt)
int sqlite3_reset (sqlite3_stmt *pStmt)
int sqlite3_create_function (sqlite3 *db, const char *zFunctionName, int nArg, int eTextRep, void *pApp, void(*xFunc)(sqlite3_context *, int, sqlite3_value **), void(*xStep)(sqlite3_context *, int, sqlite3_value **), void(*xFinal)(sqlite3_context *))
int sqlite3_create_function16 (sqlite3 *db, const void *zFunctionName, int nArg, int eTextRep, void *pApp, void(*xFunc)(sqlite3_context *, int, sqlite3_value **), void(*xStep)(sqlite3_context *, int, sqlite3_value **), void(*xFinal)(sqlite3_context *))
int sqlite3_create_function_v2 (sqlite3 *db, const char *zFunctionName, int nArg, int eTextRep, void *pApp, void(*xFunc)(sqlite3_context *, int, sqlite3_value **), void(*xStep)(sqlite3_context *, int, sqlite3_value **), void(*xFinal)(sqlite3_context *), void(*xDestroy)(void *))
int sqlite3_create_window_function (sqlite3 *db, const char *zFunctionName, int nArg, int eTextRep, void *pApp, void(*xStep)(sqlite3_context *, int, sqlite3_value **), void(*xFinal)(sqlite3_context *), void(*xValue)(sqlite3_context *), void(*xInverse)(sqlite3_context *, int, sqlite3_value **), void(*xDestroy)(void *))
int sqlite3_aggregate_count (sqlite3_context *)
int sqlite3_expired (sqlite3_stmt *)
int sqlite3_transfer_bindings (sqlite3_stmt *, sqlite3_stmt *)
int sqlite3_global_recover (void)
void sqlite3_thread_cleanup (void)
int sqlite3_memory_alarm (void(*)(void *, sqlite3_int64, int), void *, sqlite3_int64)
const void * sqlite3_value_blob (sqlite3_value *)
double sqlite3_value_double (sqlite3_value *)
int sqlite3_value_int (sqlite3_value *)
sqlite3_int64 sqlite3_value_int64 (sqlite3_value *)
void * sqlite3_value_pointer (sqlite3_value *, const char *)
const unsigned char * sqlite3_value_text (sqlite3_value *)
const void * sqlite3_value_text16 (sqlite3_value *)
const void * sqlite3_value_text16le (sqlite3_value *)
const void * sqlite3_value_text16be (sqlite3_value *)
int sqlite3_value_bytes (sqlite3_value *)
int sqlite3_value_bytes16 (sqlite3_value *)
int sqlite3_value_type (sqlite3_value *)
int sqlite3_value_numeric_type (sqlite3_value *)
int sqlite3_value_nochange (sqlite3_value *)
int sqlite3_value_frombind (sqlite3_value *)
int sqlite3_value_encoding (sqlite3_value *)
unsigned int sqlite3_value_subtype (sqlite3_value *)
sqlite3_valuesqlite3_value_dup (const sqlite3_value *)
void sqlite3_value_free (sqlite3_value *)
void * sqlite3_aggregate_context (sqlite3_context *, int nBytes)
void * sqlite3_user_data (sqlite3_context *)
sqlite3sqlite3_context_db_handle (sqlite3_context *)
void * sqlite3_get_auxdata (sqlite3_context *, int N)
void sqlite3_set_auxdata (sqlite3_context *, int N, void *, void(*)(void *))
void * sqlite3_get_clientdata (sqlite3 *, const char *)
int sqlite3_set_clientdata (sqlite3 *, const char *, void *, void(*)(void *))
void sqlite3_result_blob (sqlite3_context *, const void *, int, void(*)(void *))
void sqlite3_result_blob64 (sqlite3_context *, const void *, sqlite3_uint64, void(*)(void *))
void sqlite3_result_double (sqlite3_context *, double)
void sqlite3_result_error (sqlite3_context *, const char *, int)
void sqlite3_result_error16 (sqlite3_context *, const void *, int)
void sqlite3_result_error_toobig (sqlite3_context *)
void sqlite3_result_error_nomem (sqlite3_context *)
void sqlite3_result_error_code (sqlite3_context *, int)
void sqlite3_result_int (sqlite3_context *, int)
void sqlite3_result_int64 (sqlite3_context *, sqlite3_int64)
void sqlite3_result_null (sqlite3_context *)
void sqlite3_result_text (sqlite3_context *, const char *, int, void(*)(void *))
void sqlite3_result_text64 (sqlite3_context *, const char *, sqlite3_uint64, void(*)(void *), unsigned char encoding)
void sqlite3_result_text16 (sqlite3_context *, const void *, int, void(*)(void *))
void sqlite3_result_text16le (sqlite3_context *, const void *, int, void(*)(void *))
void sqlite3_result_text16be (sqlite3_context *, const void *, int, void(*)(void *))
void sqlite3_result_value (sqlite3_context *, sqlite3_value *)
void sqlite3_result_pointer (sqlite3_context *, void *, const char *, void(*)(void *))
void sqlite3_result_zeroblob (sqlite3_context *, int n)
int sqlite3_result_zeroblob64 (sqlite3_context *, sqlite3_uint64 n)
void sqlite3_result_subtype (sqlite3_context *, unsigned int)
int sqlite3_create_collation (sqlite3 *, const char *zName, int eTextRep, void *pArg, int(*xCompare)(void *, int, const void *, int, const void *))
int sqlite3_create_collation_v2 (sqlite3 *, const char *zName, int eTextRep, void *pArg, int(*xCompare)(void *, int, const void *, int, const void *), void(*xDestroy)(void *))
int sqlite3_create_collation16 (sqlite3 *, const void *zName, int eTextRep, void *pArg, int(*xCompare)(void *, int, const void *, int, const void *))
int sqlite3_collation_needed (sqlite3 *, void *, void(*)(void *, sqlite3 *, int eTextRep, const char *))
int sqlite3_collation_needed16 (sqlite3 *, void *, void(*)(void *, sqlite3 *, int eTextRep, const void *))
int sqlite3_sleep (int)
int sqlite3_win32_set_directory (unsigned long type, void *zValue)
int sqlite3_win32_set_directory8 (unsigned long type, const char *zValue)
int sqlite3_win32_set_directory16 (unsigned long type, const void *zValue)
int sqlite3_get_autocommit (sqlite3 *)
sqlite3sqlite3_db_handle (sqlite3_stmt *)
const char * sqlite3_db_name (sqlite3 *db, int N)
sqlite3_filename sqlite3_db_filename (sqlite3 *db, const char *zDbName)
int sqlite3_db_readonly (sqlite3 *db, const char *zDbName)
int sqlite3_txn_state (sqlite3 *, const char *zSchema)
sqlite3_stmtsqlite3_next_stmt (sqlite3 *pDb, sqlite3_stmt *pStmt)
void * sqlite3_commit_hook (sqlite3 *, int(*)(void *), void *)
void * sqlite3_rollback_hook (sqlite3 *, void(*)(void *), void *)
int sqlite3_autovacuum_pages (sqlite3 *db, unsigned int(*)(void *, const char *, unsigned int, unsigned int, unsigned int), void *, void(*)(void *))
void * sqlite3_update_hook (sqlite3 *, void(*)(void *, int, char const *, char const *, sqlite3_int64), void *)
int sqlite3_enable_shared_cache (int)
int sqlite3_release_memory (int)
int sqlite3_db_release_memory (sqlite3 *)
sqlite3_int64 sqlite3_soft_heap_limit64 (sqlite3_int64 N)
sqlite3_int64 sqlite3_hard_heap_limit64 (sqlite3_int64 N)
void sqlite3_soft_heap_limit (int N)
int sqlite3_table_column_metadata (sqlite3 *db, const char *zDbName, const char *zTableName, const char *zColumnName, char const **pzDataType, char const **pzCollSeq, int *pNotNull, int *pPrimaryKey, int *pAutoinc)
int sqlite3_load_extension (sqlite3 *db, const char *zFile, const char *zProc, char **pzErrMsg)
int sqlite3_enable_load_extension (sqlite3 *db, int onoff)
int sqlite3_auto_extension (void(*xEntryPoint)(void))
int sqlite3_cancel_auto_extension (void(*xEntryPoint)(void))
void sqlite3_reset_auto_extension (void)
int sqlite3_create_module (sqlite3 *db, const char *zName, const sqlite3_module *p, void *pClientData)
int sqlite3_create_module_v2 (sqlite3 *db, const char *zName, const sqlite3_module *p, void *pClientData, void(*xDestroy)(void *))
int sqlite3_drop_modules (sqlite3 *db, const char **azKeep)
int sqlite3_declare_vtab (sqlite3 *, const char *zSQL)
int sqlite3_overload_function (sqlite3 *, const char *zFuncName, int nArg)
int sqlite3_blob_open (sqlite3 *, const char *zDb, const char *zTable, const char *zColumn, sqlite3_int64 iRow, int flags, sqlite3_blob **ppBlob)
int sqlite3_blob_reopen (sqlite3_blob *, sqlite3_int64)
int sqlite3_blob_close (sqlite3_blob *)
int sqlite3_blob_bytes (sqlite3_blob *)
int sqlite3_blob_read (sqlite3_blob *, void *Z, int N, int iOffset)
int sqlite3_blob_write (sqlite3_blob *, const void *z, int n, int iOffset)
sqlite3_vfssqlite3_vfs_find (const char *zVfsName)
int sqlite3_vfs_register (sqlite3_vfs *, int makeDflt)
int sqlite3_vfs_unregister (sqlite3_vfs *)
sqlite3_mutexsqlite3_mutex_alloc (int)
void sqlite3_mutex_free (sqlite3_mutex *)
void sqlite3_mutex_enter (sqlite3_mutex *)
int sqlite3_mutex_try (sqlite3_mutex *)
void sqlite3_mutex_leave (sqlite3_mutex *)
int sqlite3_mutex_held (sqlite3_mutex *)
int sqlite3_mutex_notheld (sqlite3_mutex *)
sqlite3_mutexsqlite3_db_mutex (sqlite3 *)
int sqlite3_file_control (sqlite3 *, const char *zDbName, int op, void *)
int sqlite3_test_control (int op,...)
int sqlite3_keyword_count (void)
int sqlite3_keyword_name (int, const char **, int *)
int sqlite3_keyword_check (const char *, int)
sqlite3_strsqlite3_str_new (sqlite3 *)
char * sqlite3_str_finish (sqlite3_str *)
void sqlite3_str_appendf (sqlite3_str *, const char *zFormat,...)
void sqlite3_str_vappendf (sqlite3_str *, const char *zFormat, va_list)
void sqlite3_str_append (sqlite3_str *, const char *zIn, int N)
void sqlite3_str_appendall (sqlite3_str *, const char *zIn)
void sqlite3_str_appendchar (sqlite3_str *, int N, char C)
void sqlite3_str_reset (sqlite3_str *)
int sqlite3_str_errcode (sqlite3_str *)
int sqlite3_str_length (sqlite3_str *)
char * sqlite3_str_value (sqlite3_str *)
int sqlite3_status (int op, int *pCurrent, int *pHighwater, int resetFlag)
int sqlite3_status64 (int op, sqlite3_int64 *pCurrent, sqlite3_int64 *pHighwater, int resetFlag)
int sqlite3_db_status (sqlite3 *, int op, int *pCur, int *pHiwtr, int resetFlg)
int sqlite3_stmt_status (sqlite3_stmt *, int op, int resetFlg)
sqlite3_backupsqlite3_backup_init (sqlite3 *pDest, const char *zDestName, sqlite3 *pSource, const char *zSourceName)
int sqlite3_backup_step (sqlite3_backup *p, int nPage)
int sqlite3_backup_finish (sqlite3_backup *p)
int sqlite3_backup_remaining (sqlite3_backup *p)
int sqlite3_backup_pagecount (sqlite3_backup *p)
int sqlite3_unlock_notify (sqlite3 *pBlocked, void(*xNotify)(void **apArg, int nArg), void *pNotifyArg)
int sqlite3_stricmp (const char *, const char *)
int sqlite3_strnicmp (const char *, const char *, int)
int sqlite3_strglob (const char *zGlob, const char *zStr)
int sqlite3_strlike (const char *zGlob, const char *zStr, unsigned int cEsc)
void sqlite3_log (int iErrCode, const char *zFormat,...)
void * sqlite3_wal_hook (sqlite3 *, int(*)(void *, sqlite3 *, const char *, int), void *)
int sqlite3_wal_autocheckpoint (sqlite3 *db, int N)
int sqlite3_wal_checkpoint (sqlite3 *db, const char *zDb)
int sqlite3_wal_checkpoint_v2 (sqlite3 *db, const char *zDb, int eMode, int *pnLog, int *pnCkpt)
int sqlite3_vtab_config (sqlite3 *, int op,...)
int sqlite3_vtab_on_conflict (sqlite3 *)
int sqlite3_vtab_nochange (sqlite3_context *)
const char * sqlite3_vtab_collation (sqlite3_index_info *, int)
int sqlite3_vtab_distinct (sqlite3_index_info *)
int sqlite3_vtab_in (sqlite3_index_info *, int iCons, int bHandle)
int sqlite3_vtab_in_first (sqlite3_value *pVal, sqlite3_value **ppOut)
int sqlite3_vtab_in_next (sqlite3_value *pVal, sqlite3_value **ppOut)
int sqlite3_vtab_rhs_value (sqlite3_index_info *, int, sqlite3_value **ppVal)
int sqlite3_stmt_scanstatus (sqlite3_stmt *pStmt, int idx, int iScanStatusOp, void *pOut)
int sqlite3_stmt_scanstatus_v2 (sqlite3_stmt *pStmt, int idx, int iScanStatusOp, int flags, void *pOut)
void sqlite3_stmt_scanstatus_reset (sqlite3_stmt *)
int sqlite3_db_cacheflush (sqlite3 *)
int sqlite3_system_errno (sqlite3 *)
int sqlite3_snapshot_get (sqlite3 *db, const char *zSchema, sqlite3_snapshot **ppSnapshot)
int sqlite3_snapshot_open (sqlite3 *db, const char *zSchema, sqlite3_snapshot *pSnapshot)
void sqlite3_snapshot_free (sqlite3_snapshot *)
int sqlite3_snapshot_cmp (sqlite3_snapshot *p1, sqlite3_snapshot *p2)
int sqlite3_snapshot_recover (sqlite3 *db, const char *zDb)
unsigned char * sqlite3_serialize (sqlite3 *db, const char *zSchema, sqlite3_int64 *piSize, unsigned int mFlags)
int sqlite3_deserialize (sqlite3 *db, const char *zSchema, unsigned char *pData, sqlite3_int64 szDb, sqlite3_int64 szBuf, unsigned mFlags)
int sqlite3_rtree_geometry_callback (sqlite3 *db, const char *zGeom, int(*xGeom)(sqlite3_rtree_geometry *, int, sqlite3_rtree_dbl *, int *), void *pContext)
int sqlite3_rtree_query_callback (sqlite3 *db, const char *zQueryFunc, int(*xQueryFunc)(sqlite3_rtree_query_info *), void *pContext, void(*xDestructor)(void *))

Variables

const char sqlite3_version []
char * sqlite3_temp_directory
char * sqlite3_data_directory

Data Structure Documentation

◆ sqlite3_file

struct sqlite3_file
Collaboration diagram for sqlite3_file:
Data Fields
const struct sqlite3_io_methods * pMethods

◆ sqlite3_io_methods

struct sqlite3_io_methods
Data Fields
int iVersion
int(*)(sqlite3_file *, int *pResOut) xCheckReservedLock
int(*)(sqlite3_file *) xClose
int(*)(sqlite3_file *) xDeviceCharacteristics
int(*)(sqlite3_file *, sqlite3_int64 iOfst, int iAmt, void **pp) xFetch
int(*)(sqlite3_file *, int op, void *pArg) xFileControl
int(*)(sqlite3_file *, sqlite3_int64 *pSize) xFileSize
int(*)(sqlite3_file *, int) xLock
int(*)(sqlite3_file *, void *, int iAmt, sqlite3_int64 iOfst) xRead
int(*)(sqlite3_file *) xSectorSize
void(*)(sqlite3_file *) xShmBarrier
int(*)(sqlite3_file *, int offset, int n, int flags) xShmLock
int(*)(sqlite3_file *, int iPg, int pgsz, int, void volatile **) xShmMap
int(*)(sqlite3_file *, int deleteFlag) xShmUnmap
int(*)(sqlite3_file *, int flags) xSync
int(*)(sqlite3_file *, sqlite3_int64 size) xTruncate
int(*)(sqlite3_file *, sqlite3_int64 iOfst, void *p) xUnfetch
int(*)(sqlite3_file *, int) xUnlock
int(*)(sqlite3_file *, const void *, int iAmt, sqlite3_int64 iOfst) xWrite

◆ sqlite3_vfs

struct sqlite3_vfs
Collaboration diagram for sqlite3_vfs:
Data Fields
int iVersion
int mxPathname
void * pAppData
sqlite3_vfs * pNext
int szOsFile
int(*)(sqlite3_vfs *, const char *zName, int flags, int *pResOut) xAccess
int(*)(sqlite3_vfs *, double *) xCurrentTime
int(*)(sqlite3_vfs *, sqlite3_int64 *) xCurrentTimeInt64
int(*)(sqlite3_vfs *, const char *zName, int syncDir) xDelete
void(*)(sqlite3_vfs *, void *) xDlClose
void(*)(sqlite3_vfs *, int nByte, char *zErrMsg) xDlError
void *(*)(sqlite3_vfs *, const char *zFilename) xDlOpen
void(*(*)(sqlite3_vfs *, void *, const char *zSymbol))(void) xDlSym
int(*)(sqlite3_vfs *, const char *zName, int nOut, char *zOut) xFullPathname
int(*)(sqlite3_vfs *, int, char *) xGetLastError
sqlite3_syscall_ptr(*)(sqlite3_vfs *, const char *zName) xGetSystemCall
const char *(*)(sqlite3_vfs *, const char *zName) xNextSystemCall
int(*)(sqlite3_vfs *, sqlite3_filename zName, sqlite3_file *, int flags, int *pOutFlags) xOpen
int(*)(sqlite3_vfs *, int nByte, char *zOut) xRandomness
int(*)(sqlite3_vfs *, const char *zName, sqlite3_syscall_ptr) xSetSystemCall
int(*)(sqlite3_vfs *, int microseconds) xSleep
const char * zName

◆ sqlite3_mem_methods

struct sqlite3_mem_methods
Data Fields
void * pAppData
void(*)(void *) xFree
int(*)(void *) xInit
void *(*)(int) xMalloc
void *(*)(void *, int) xRealloc
int(*)(int) xRoundup
void(*)(void *) xShutdown
int(*)(void *) xSize

◆ sqlite3_module

struct sqlite3_module
Data Fields
int iVersion
int(*)(sqlite3_vtab *pVTab) xBegin
int(*)(sqlite3_vtab *pVTab, sqlite3_index_info *) xBestIndex
int(*)(sqlite3_vtab_cursor *) xClose
int(*)(sqlite3_vtab_cursor *, sqlite3_context *, int) xColumn
int(*)(sqlite3_vtab *pVTab) xCommit
int(*)(sqlite3 *, void *pAux, int argc, const char *const *argv, sqlite3_vtab **ppVTab, char **) xConnect
int(*)(sqlite3 *, void *pAux, int argc, const char *const *argv, sqlite3_vtab **ppVTab, char **) xCreate
int(*)(sqlite3_vtab *pVTab) xDestroy
int(*)(sqlite3_vtab *pVTab) xDisconnect
int(*)(sqlite3_vtab_cursor *) xEof
int(*)(sqlite3_vtab_cursor *, int idxNum, const char *idxStr, int argc, sqlite3_value **argv) xFilter
int(*)(sqlite3_vtab *pVtab, int nArg, const char *zName, void(**pxFunc)(sqlite3_context *, int, sqlite3_value **), void **ppArg) xFindFunction
int(*)(sqlite3_vtab *pVTab, const char *zSchema, const char *zTabName, int mFlags, char **pzErr) xIntegrity
int(*)(sqlite3_vtab_cursor *) xNext
int(*)(sqlite3_vtab *pVTab, sqlite3_vtab_cursor **ppCursor) xOpen
int(*)(sqlite3_vtab *pVTab, int) xRelease
int(*)(sqlite3_vtab *pVtab, const char *zNew) xRename
int(*)(sqlite3_vtab *pVTab) xRollback
int(*)(sqlite3_vtab *pVTab, int) xRollbackTo
int(*)(sqlite3_vtab_cursor *, sqlite3_int64 *pRowid) xRowid
int(*)(sqlite3_vtab *pVTab, int) xSavepoint
int(*)(const char *) xShadowName
int(*)(sqlite3_vtab *pVTab) xSync
int(*)(sqlite3_vtab *, int, sqlite3_value **, sqlite3_int64 *) xUpdate

◆ sqlite3_index_info

struct sqlite3_index_info
Collaboration diagram for sqlite3_index_info:
Data Fields
struct sqlite3_index_constraint * aConstraint
struct sqlite3_index_constraint_usage * aConstraintUsage
struct sqlite3_index_orderby * aOrderBy
sqlite3_uint64 colUsed
double estimatedCost
sqlite3_int64 estimatedRows
int idxFlags
int idxNum
char * idxStr
int nConstraint
int needToFreeIdxStr
int nOrderBy
int orderByConsumed

◆ sqlite3_index_info::sqlite3_index_constraint

struct sqlite3_index_info::sqlite3_index_constraint
Data Fields
int iColumn
int iTermOffset
unsigned char op
unsigned char usable

◆ sqlite3_index_info::sqlite3_index_orderby

struct sqlite3_index_info::sqlite3_index_orderby
Data Fields
unsigned char desc
int iColumn

◆ sqlite3_index_info::sqlite3_index_constraint_usage

struct sqlite3_index_info::sqlite3_index_constraint_usage
Data Fields
int argvIndex
unsigned char omit

◆ sqlite3_vtab

struct sqlite3_vtab
Collaboration diagram for sqlite3_vtab:
Data Fields
int nRef
const sqlite3_module * pModule
char * zErrMsg

◆ sqlite3_vtab_cursor

struct sqlite3_vtab_cursor
Collaboration diagram for sqlite3_vtab_cursor:
Data Fields
sqlite3_vtab * pVtab

◆ sqlite3_mutex_methods

struct sqlite3_mutex_methods
Collaboration diagram for sqlite3_mutex_methods:
Data Fields
sqlite3_mutex *(*)(int) xMutexAlloc
int(*)(void) xMutexEnd
void(*)(sqlite3_mutex *) xMutexEnter
void(*)(sqlite3_mutex *) xMutexFree
int(*)(sqlite3_mutex *) xMutexHeld
int(*)(void) xMutexInit
void(*)(sqlite3_mutex *) xMutexLeave
int(*)(sqlite3_mutex *) xMutexNotheld
int(*)(sqlite3_mutex *) xMutexTry

◆ sqlite3_pcache_page

struct sqlite3_pcache_page
Data Fields
void * pBuf
void * pExtra

◆ sqlite3_pcache_methods2

struct sqlite3_pcache_methods2
Collaboration diagram for sqlite3_pcache_methods2:
Data Fields
int iVersion
void * pArg
void(*)(sqlite3_pcache *, int nCachesize) xCachesize
sqlite3_pcache *(*)(int szPage, int szExtra, int bPurgeable) xCreate
void(*)(sqlite3_pcache *) xDestroy
sqlite3_pcache_page *(*)(sqlite3_pcache *, unsigned key, int createFlag) xFetch
int(*)(void *) xInit
int(*)(sqlite3_pcache *) xPagecount
void(*)(sqlite3_pcache *, sqlite3_pcache_page *, unsigned oldKey, unsigned newKey) xRekey
void(*)(sqlite3_pcache *) xShrink
void(*)(void *) xShutdown
void(*)(sqlite3_pcache *, unsigned iLimit) xTruncate
void(*)(sqlite3_pcache *, sqlite3_pcache_page *, int discard) xUnpin

◆ sqlite3_pcache_methods

struct sqlite3_pcache_methods
Data Fields
void * pArg
void(*)(sqlite3_pcache *, int nCachesize) xCachesize
sqlite3_pcache *(*)(int szPage, int bPurgeable) xCreate
void(*)(sqlite3_pcache *) xDestroy
void *(*)(sqlite3_pcache *, unsigned key, int createFlag) xFetch
int(*)(void *) xInit
int(*)(sqlite3_pcache *) xPagecount
void(*)(sqlite3_pcache *, void *, unsigned oldKey, unsigned newKey) xRekey
void(*)(void *) xShutdown
void(*)(sqlite3_pcache *, unsigned iLimit) xTruncate
void(*)(sqlite3_pcache *, void *, int discard) xUnpin

◆ sqlite3_snapshot

struct sqlite3_snapshot
Data Fields
unsigned char hidden[48]

◆ sqlite3_rtree_geometry

struct sqlite3_rtree_geometry
Data Fields
sqlite3_rtree_dbl * aParam
int nParam
void * pContext
void * pUser
void(*)(void *) xDelUser

◆ sqlite3_rtree_query_info

struct sqlite3_rtree_query_info
Collaboration diagram for sqlite3_rtree_query_info:
Data Fields
sqlite3_rtree_dbl * aCoord
unsigned int * anQueue
sqlite3_rtree_dbl * aParam
sqlite3_value ** apSqlParam
int eParentWithin
int eWithin
int iLevel
sqlite3_int64 iRowid
int mxLevel
int nCoord
int nParam
void * pContext
void * pUser
sqlite3_rtree_dbl rParentScore
sqlite3_rtree_dbl rScore
void(*)(void *) xDelUser

◆ Fts5PhraseIter

struct Fts5PhraseIter
Data Fields
const unsigned char * a
const unsigned char * b

◆ Fts5ExtensionApi

struct Fts5ExtensionApi
Data Fields
int iVersion
int(*)(Fts5Context *) xColumnCount
int(*)(Fts5Context *, int iCol, const char **pz, int *pn) xColumnLocale
int(*)(Fts5Context *, int iCol, int *pnToken) xColumnSize
int(*)(Fts5Context *, int iCol, const char **pz, int *pn) xColumnText
int(*)(Fts5Context *, int iCol, sqlite3_int64 *pnToken) xColumnTotalSize
void *(*)(Fts5Context *, int bClear) xGetAuxdata
int(*)(Fts5Context *, int iIdx, int *piPhrase, int *piCol, int *piOff) xInst
int(*)(Fts5Context *, int *pnInst) xInstCount
int(*)(Fts5Context *, int iIdx, int iToken, const char **, int *) xInstToken
int(*)(Fts5Context *) xPhraseCount
int(*)(Fts5Context *, int iPhrase, Fts5PhraseIter *, int *, int *) xPhraseFirst
int(*)(Fts5Context *, int iPhrase, Fts5PhraseIter *, int *) xPhraseFirstColumn
void(*)(Fts5Context *, Fts5PhraseIter *, int *piCol, int *piOff) xPhraseNext
void(*)(Fts5Context *, Fts5PhraseIter *, int *piCol) xPhraseNextColumn
int(*)(Fts5Context *, int iPhrase) xPhraseSize
int(*)(Fts5Context *, int iPhrase, void *pUserData, int(*)(const Fts5ExtensionApi *, Fts5Context *, void *)) xQueryPhrase
int(*)(Fts5Context *, int iPhrase, int iToken, const char **ppToken, int *pnToken) xQueryToken
int(*)(Fts5Context *, sqlite3_int64 *pnRow) xRowCount
sqlite3_int64(*)(Fts5Context *) xRowid
int(*)(Fts5Context *, void *pAux, void(*xDelete)(void *)) xSetAuxdata
int(*)(Fts5Context *, const char *pText, int nText, void *pCtx, int(*xToken)(void *, int, const char *, int, int, int)) xTokenize
int(*)(Fts5Context *, const char *pText, int nText, const char *pLocale, int nLocale, void *pCtx, int(*xToken)(void *, int, const char *, int, int, int)) xTokenize_v2
void *(*)(Fts5Context *) xUserData

◆ fts5_tokenizer_v2

struct fts5_tokenizer_v2
Data Fields
int iVersion
int(*)(void *, const char **azArg, int nArg, Fts5Tokenizer **ppOut) xCreate
void(*)(Fts5Tokenizer *) xDelete
int(*)(Fts5Tokenizer *, void *pCtx, int flags, const char *pText, int nText, const char *pLocale, int nLocale, int(*xToken)(void *pCtx, int tflags, const char *pToken, int nToken, int iStart, int iEnd)) xTokenize

◆ fts5_tokenizer

struct fts5_tokenizer
Data Fields
int(*)(void *, const char **azArg, int nArg, Fts5Tokenizer **ppOut) xCreate
void(*)(Fts5Tokenizer *) xDelete
int(*)(Fts5Tokenizer *, void *pCtx, int flags, const char *pText, int nText, int(*xToken)(void *pCtx, int tflags, const char *pToken, int nToken, int iStart, int iEnd)) xTokenize

◆ fts5_api

struct fts5_api
Data Fields
int iVersion
int(*)(fts5_api *pApi, const char *zName, void *pUserData, fts5_extension_function xFunction, void(*xDestroy)(void *)) xCreateFunction
int(*)(fts5_api *pApi, const char *zName, void *pUserData, fts5_tokenizer *pTokenizer, void(*xDestroy)(void *)) xCreateTokenizer
int(*)(fts5_api *pApi, const char *zName, void *pUserData, fts5_tokenizer_v2 *pTokenizer, void(*xDestroy)(void *)) xCreateTokenizer_v2
int(*)(fts5_api *pApi, const char *zName, void **ppUserData, fts5_tokenizer *pTokenizer) xFindTokenizer
int(*)(fts5_api *pApi, const char *zName, void **ppUserData, fts5_tokenizer_v2 **ppTokenizer) xFindTokenizer_v2

Macro Definition Documentation

◆ _FTS5_H

#define _FTS5_H

◆ _SQLITE3RTREE_H_

#define _SQLITE3RTREE_H_

◆ FTS5_TOKEN_COLOCATED

#define FTS5_TOKEN_COLOCATED   0x0001 /* Same position as prev. token */

◆ FTS5_TOKENIZE_AUX

#define FTS5_TOKENIZE_AUX   0x0008

◆ FTS5_TOKENIZE_DOCUMENT

#define FTS5_TOKENIZE_DOCUMENT   0x0004

◆ FTS5_TOKENIZE_PREFIX

#define FTS5_TOKENIZE_PREFIX   0x0002

◆ FTS5_TOKENIZE_QUERY

#define FTS5_TOKENIZE_QUERY   0x0001

◆ FULLY_WITHIN

#define FULLY_WITHIN   2 /* Object fully contained within query region */

◆ NOT_WITHIN

#define NOT_WITHIN   0 /* Object completely outside of query region */

◆ PARTLY_WITHIN

#define PARTLY_WITHIN   1 /* Object partially overlaps query region */

◆ SQLITE3_TEXT

#define SQLITE3_TEXT   3

◆ SQLITE_ABORT

#define SQLITE_ABORT   4 /* Callback routine requested an abort */

◆ SQLITE_ABORT_ROLLBACK

#define SQLITE_ABORT_ROLLBACK   (SQLITE_ABORT | (2<<8))

◆ SQLITE_ACCESS_EXISTS

#define SQLITE_ACCESS_EXISTS   0

◆ SQLITE_ACCESS_READ

#define SQLITE_ACCESS_READ   2 /* Unused */

◆ SQLITE_ACCESS_READWRITE

#define SQLITE_ACCESS_READWRITE   1 /* Used by PRAGMA temp_store_directory */

◆ SQLITE_ALTER_TABLE

#define SQLITE_ALTER_TABLE   26 /* Database Name Table Name */

◆ SQLITE_ANALYZE

#define SQLITE_ANALYZE   28 /* Table Name NULL */

◆ SQLITE_ANY

#define SQLITE_ANY   5 /* Deprecated */

◆ SQLITE_API

#define SQLITE_API

◆ SQLITE_APICALL

#define SQLITE_APICALL

◆ SQLITE_ATTACH

#define SQLITE_ATTACH   24 /* Filename NULL */

◆ SQLITE_AUTH

#define SQLITE_AUTH   23 /* Authorization denied */

◆ SQLITE_AUTH_USER

#define SQLITE_AUTH_USER   (SQLITE_AUTH | (1<<8))

◆ SQLITE_BLOB

#define SQLITE_BLOB   4

◆ SQLITE_BUSY

#define SQLITE_BUSY   5 /* The database file is locked */

◆ SQLITE_BUSY_RECOVERY

#define SQLITE_BUSY_RECOVERY   (SQLITE_BUSY | (1<<8))

◆ SQLITE_BUSY_SNAPSHOT

#define SQLITE_BUSY_SNAPSHOT   (SQLITE_BUSY | (2<<8))

◆ SQLITE_BUSY_TIMEOUT

#define SQLITE_BUSY_TIMEOUT   (SQLITE_BUSY | (3<<8))

◆ SQLITE_CALLBACK

#define SQLITE_CALLBACK

◆ SQLITE_CANTOPEN

#define SQLITE_CANTOPEN   14 /* Unable to open the database file */

◆ SQLITE_CANTOPEN_CONVPATH

#define SQLITE_CANTOPEN_CONVPATH   (SQLITE_CANTOPEN | (4<<8))

◆ SQLITE_CANTOPEN_DIRTYWAL

#define SQLITE_CANTOPEN_DIRTYWAL   (SQLITE_CANTOPEN | (5<<8)) /* Not Used */

◆ SQLITE_CANTOPEN_FULLPATH

#define SQLITE_CANTOPEN_FULLPATH   (SQLITE_CANTOPEN | (3<<8))

◆ SQLITE_CANTOPEN_ISDIR

#define SQLITE_CANTOPEN_ISDIR   (SQLITE_CANTOPEN | (2<<8))

◆ SQLITE_CANTOPEN_NOTEMPDIR

#define SQLITE_CANTOPEN_NOTEMPDIR   (SQLITE_CANTOPEN | (1<<8))

◆ SQLITE_CANTOPEN_SYMLINK

#define SQLITE_CANTOPEN_SYMLINK   (SQLITE_CANTOPEN | (6<<8))

◆ SQLITE_CDECL

#define SQLITE_CDECL

◆ SQLITE_CHECKPOINT_FULL

#define SQLITE_CHECKPOINT_FULL   1 /* Wait for writers, then checkpoint */

◆ SQLITE_CHECKPOINT_PASSIVE

#define SQLITE_CHECKPOINT_PASSIVE   0 /* Do as much as possible w/o blocking */

◆ SQLITE_CHECKPOINT_RESTART

#define SQLITE_CHECKPOINT_RESTART   2 /* Like FULL but wait for readers */

◆ SQLITE_CHECKPOINT_TRUNCATE

#define SQLITE_CHECKPOINT_TRUNCATE   3 /* Like RESTART but also truncate WAL */

◆ SQLITE_CONFIG_COVERING_INDEX_SCAN

#define SQLITE_CONFIG_COVERING_INDEX_SCAN   20 /* int */

◆ SQLITE_CONFIG_GETMALLOC

#define SQLITE_CONFIG_GETMALLOC   5 /* sqlite3_mem_methods* */

◆ SQLITE_CONFIG_GETMUTEX

#define SQLITE_CONFIG_GETMUTEX   11 /* sqlite3_mutex_methods* */

◆ SQLITE_CONFIG_GETPCACHE

#define SQLITE_CONFIG_GETPCACHE   15 /* no-op */

◆ SQLITE_CONFIG_GETPCACHE2

#define SQLITE_CONFIG_GETPCACHE2   19 /* sqlite3_pcache_methods2* */

◆ SQLITE_CONFIG_HEAP

#define SQLITE_CONFIG_HEAP   8 /* void*, int nByte, int min */

◆ SQLITE_CONFIG_LOG

#define SQLITE_CONFIG_LOG   16 /* xFunc, void* */

◆ SQLITE_CONFIG_LOOKASIDE

#define SQLITE_CONFIG_LOOKASIDE   13 /* int int */

◆ SQLITE_CONFIG_MALLOC

#define SQLITE_CONFIG_MALLOC   4 /* sqlite3_mem_methods* */

◆ SQLITE_CONFIG_MEMDB_MAXSIZE

#define SQLITE_CONFIG_MEMDB_MAXSIZE   29 /* sqlite3_int64 */

◆ SQLITE_CONFIG_MEMSTATUS

#define SQLITE_CONFIG_MEMSTATUS   9 /* boolean */

◆ SQLITE_CONFIG_MMAP_SIZE

#define SQLITE_CONFIG_MMAP_SIZE   22 /* sqlite3_int64, sqlite3_int64 */

◆ SQLITE_CONFIG_MULTITHREAD

#define SQLITE_CONFIG_MULTITHREAD   2 /* nil */

◆ SQLITE_CONFIG_MUTEX

#define SQLITE_CONFIG_MUTEX   10 /* sqlite3_mutex_methods* */

◆ SQLITE_CONFIG_PAGECACHE

#define SQLITE_CONFIG_PAGECACHE   7 /* void*, int sz, int N */

◆ SQLITE_CONFIG_PCACHE

#define SQLITE_CONFIG_PCACHE   14 /* no-op */

◆ SQLITE_CONFIG_PCACHE2

#define SQLITE_CONFIG_PCACHE2   18 /* sqlite3_pcache_methods2* */

◆ SQLITE_CONFIG_PCACHE_HDRSZ

#define SQLITE_CONFIG_PCACHE_HDRSZ   24 /* int *psz */

◆ SQLITE_CONFIG_PMASZ

#define SQLITE_CONFIG_PMASZ   25 /* unsigned int szPma */

◆ SQLITE_CONFIG_ROWID_IN_VIEW

#define SQLITE_CONFIG_ROWID_IN_VIEW   30 /* int* */

◆ SQLITE_CONFIG_SCRATCH

#define SQLITE_CONFIG_SCRATCH   6 /* No longer used */

◆ SQLITE_CONFIG_SERIALIZED

#define SQLITE_CONFIG_SERIALIZED   3 /* nil */

◆ SQLITE_CONFIG_SINGLETHREAD

#define SQLITE_CONFIG_SINGLETHREAD   1 /* nil */

◆ SQLITE_CONFIG_SMALL_MALLOC

#define SQLITE_CONFIG_SMALL_MALLOC   27 /* boolean */

◆ SQLITE_CONFIG_SORTERREF_SIZE

#define SQLITE_CONFIG_SORTERREF_SIZE   28 /* int nByte */

◆ SQLITE_CONFIG_SQLLOG

#define SQLITE_CONFIG_SQLLOG   21 /* xSqllog, void* */

◆ SQLITE_CONFIG_STMTJRNL_SPILL

#define SQLITE_CONFIG_STMTJRNL_SPILL   26 /* int nByte */

◆ SQLITE_CONFIG_URI

#define SQLITE_CONFIG_URI   17 /* int */

◆ SQLITE_CONFIG_WIN32_HEAPSIZE

#define SQLITE_CONFIG_WIN32_HEAPSIZE   23 /* int nByte */

◆ SQLITE_CONSTRAINT

#define SQLITE_CONSTRAINT   19 /* Abort due to constraint violation */

◆ SQLITE_CONSTRAINT_CHECK

#define SQLITE_CONSTRAINT_CHECK   (SQLITE_CONSTRAINT | (1<<8))

◆ SQLITE_CONSTRAINT_COMMITHOOK

#define SQLITE_CONSTRAINT_COMMITHOOK   (SQLITE_CONSTRAINT | (2<<8))

◆ SQLITE_CONSTRAINT_DATATYPE

#define SQLITE_CONSTRAINT_DATATYPE   (SQLITE_CONSTRAINT |(12<<8))

◆ SQLITE_CONSTRAINT_FOREIGNKEY

#define SQLITE_CONSTRAINT_FOREIGNKEY   (SQLITE_CONSTRAINT | (3<<8))

◆ SQLITE_CONSTRAINT_FUNCTION

#define SQLITE_CONSTRAINT_FUNCTION   (SQLITE_CONSTRAINT | (4<<8))

◆ SQLITE_CONSTRAINT_NOTNULL

#define SQLITE_CONSTRAINT_NOTNULL   (SQLITE_CONSTRAINT | (5<<8))

◆ SQLITE_CONSTRAINT_PINNED

#define SQLITE_CONSTRAINT_PINNED   (SQLITE_CONSTRAINT |(11<<8))

◆ SQLITE_CONSTRAINT_PRIMARYKEY

#define SQLITE_CONSTRAINT_PRIMARYKEY   (SQLITE_CONSTRAINT | (6<<8))

◆ SQLITE_CONSTRAINT_ROWID

#define SQLITE_CONSTRAINT_ROWID   (SQLITE_CONSTRAINT |(10<<8))

◆ SQLITE_CONSTRAINT_TRIGGER

#define SQLITE_CONSTRAINT_TRIGGER   (SQLITE_CONSTRAINT | (7<<8))

◆ SQLITE_CONSTRAINT_UNIQUE

#define SQLITE_CONSTRAINT_UNIQUE   (SQLITE_CONSTRAINT | (8<<8))

◆ SQLITE_CONSTRAINT_VTAB

#define SQLITE_CONSTRAINT_VTAB   (SQLITE_CONSTRAINT | (9<<8))

◆ SQLITE_COPY

#define SQLITE_COPY   0 /* No longer used */

◆ SQLITE_CORRUPT

#define SQLITE_CORRUPT   11 /* The database disk image is malformed */

◆ SQLITE_CORRUPT_INDEX

#define SQLITE_CORRUPT_INDEX   (SQLITE_CORRUPT | (3<<8))

◆ SQLITE_CORRUPT_SEQUENCE

#define SQLITE_CORRUPT_SEQUENCE   (SQLITE_CORRUPT | (2<<8))

◆ SQLITE_CORRUPT_VTAB

#define SQLITE_CORRUPT_VTAB   (SQLITE_CORRUPT | (1<<8))

◆ SQLITE_CREATE_INDEX

#define SQLITE_CREATE_INDEX   1 /* Index Name Table Name */

◆ SQLITE_CREATE_TABLE

#define SQLITE_CREATE_TABLE   2 /* Table Name NULL */

◆ SQLITE_CREATE_TEMP_INDEX

#define SQLITE_CREATE_TEMP_INDEX   3 /* Index Name Table Name */

◆ SQLITE_CREATE_TEMP_TABLE

#define SQLITE_CREATE_TEMP_TABLE   4 /* Table Name NULL */

◆ SQLITE_CREATE_TEMP_TRIGGER

#define SQLITE_CREATE_TEMP_TRIGGER   5 /* Trigger Name Table Name */

◆ SQLITE_CREATE_TEMP_VIEW

#define SQLITE_CREATE_TEMP_VIEW   6 /* View Name NULL */

◆ SQLITE_CREATE_TRIGGER

#define SQLITE_CREATE_TRIGGER   7 /* Trigger Name Table Name */

◆ SQLITE_CREATE_VIEW

#define SQLITE_CREATE_VIEW   8 /* View Name NULL */

◆ SQLITE_CREATE_VTABLE

#define SQLITE_CREATE_VTABLE   29 /* Table Name Module Name */

◆ SQLITE_DBCONFIG_DEFENSIVE

#define SQLITE_DBCONFIG_DEFENSIVE   1010 /* int int* */

◆ SQLITE_DBCONFIG_DQS_DDL

#define SQLITE_DBCONFIG_DQS_DDL   1014 /* int int* */

◆ SQLITE_DBCONFIG_DQS_DML

#define SQLITE_DBCONFIG_DQS_DML   1013 /* int int* */

◆ SQLITE_DBCONFIG_ENABLE_ATTACH_CREATE

#define SQLITE_DBCONFIG_ENABLE_ATTACH_CREATE   1020 /* int int* */

◆ SQLITE_DBCONFIG_ENABLE_ATTACH_WRITE

#define SQLITE_DBCONFIG_ENABLE_ATTACH_WRITE   1021 /* int int* */

◆ SQLITE_DBCONFIG_ENABLE_COMMENTS

#define SQLITE_DBCONFIG_ENABLE_COMMENTS   1022 /* int int* */

◆ SQLITE_DBCONFIG_ENABLE_FKEY

#define SQLITE_DBCONFIG_ENABLE_FKEY   1002 /* int int* */

◆ SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER

#define SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER   1004 /* int int* */

◆ SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION

#define SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION   1005 /* int int* */

◆ SQLITE_DBCONFIG_ENABLE_QPSG

#define SQLITE_DBCONFIG_ENABLE_QPSG   1007 /* int int* */

◆ SQLITE_DBCONFIG_ENABLE_TRIGGER

#define SQLITE_DBCONFIG_ENABLE_TRIGGER   1003 /* int int* */

◆ SQLITE_DBCONFIG_ENABLE_VIEW

#define SQLITE_DBCONFIG_ENABLE_VIEW   1015 /* int int* */

◆ SQLITE_DBCONFIG_LEGACY_ALTER_TABLE

#define SQLITE_DBCONFIG_LEGACY_ALTER_TABLE   1012 /* int int* */

◆ SQLITE_DBCONFIG_LEGACY_FILE_FORMAT

#define SQLITE_DBCONFIG_LEGACY_FILE_FORMAT   1016 /* int int* */

◆ SQLITE_DBCONFIG_LOOKASIDE

#define SQLITE_DBCONFIG_LOOKASIDE   1001 /* void* int int */

◆ SQLITE_DBCONFIG_MAINDBNAME

#define SQLITE_DBCONFIG_MAINDBNAME   1000 /* const char* */

◆ SQLITE_DBCONFIG_MAX

#define SQLITE_DBCONFIG_MAX   1022 /* Largest DBCONFIG */

◆ SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE

#define SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE   1006 /* int int* */

◆ SQLITE_DBCONFIG_RESET_DATABASE

#define SQLITE_DBCONFIG_RESET_DATABASE   1009 /* int int* */

◆ SQLITE_DBCONFIG_REVERSE_SCANORDER

#define SQLITE_DBCONFIG_REVERSE_SCANORDER   1019 /* int int* */

◆ SQLITE_DBCONFIG_STMT_SCANSTATUS

#define SQLITE_DBCONFIG_STMT_SCANSTATUS   1018 /* int int* */

◆ SQLITE_DBCONFIG_TRIGGER_EQP

#define SQLITE_DBCONFIG_TRIGGER_EQP   1008 /* int int* */

◆ SQLITE_DBCONFIG_TRUSTED_SCHEMA

#define SQLITE_DBCONFIG_TRUSTED_SCHEMA   1017 /* int int* */

◆ SQLITE_DBCONFIG_WRITABLE_SCHEMA

#define SQLITE_DBCONFIG_WRITABLE_SCHEMA   1011 /* int int* */

◆ SQLITE_DBSTATUS_CACHE_HIT

#define SQLITE_DBSTATUS_CACHE_HIT   7

◆ SQLITE_DBSTATUS_CACHE_MISS

#define SQLITE_DBSTATUS_CACHE_MISS   8

◆ SQLITE_DBSTATUS_CACHE_SPILL

#define SQLITE_DBSTATUS_CACHE_SPILL   12

◆ SQLITE_DBSTATUS_CACHE_USED

#define SQLITE_DBSTATUS_CACHE_USED   1

◆ SQLITE_DBSTATUS_CACHE_USED_SHARED

#define SQLITE_DBSTATUS_CACHE_USED_SHARED   11

◆ SQLITE_DBSTATUS_CACHE_WRITE

#define SQLITE_DBSTATUS_CACHE_WRITE   9

◆ SQLITE_DBSTATUS_DEFERRED_FKS

#define SQLITE_DBSTATUS_DEFERRED_FKS   10

◆ SQLITE_DBSTATUS_LOOKASIDE_HIT

#define SQLITE_DBSTATUS_LOOKASIDE_HIT   4

◆ SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL

#define SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL   6

◆ SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE

#define SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE   5

◆ SQLITE_DBSTATUS_LOOKASIDE_USED

#define SQLITE_DBSTATUS_LOOKASIDE_USED   0

◆ SQLITE_DBSTATUS_MAX

#define SQLITE_DBSTATUS_MAX   12 /* Largest defined DBSTATUS */

◆ SQLITE_DBSTATUS_SCHEMA_USED

#define SQLITE_DBSTATUS_SCHEMA_USED   2

◆ SQLITE_DBSTATUS_STMT_USED

#define SQLITE_DBSTATUS_STMT_USED   3

◆ SQLITE_DELETE

#define SQLITE_DELETE   9 /* Table Name NULL */

◆ SQLITE_DENY

#define SQLITE_DENY   1 /* Abort the SQL statement with an error */

◆ SQLITE_DEPRECATED

#define SQLITE_DEPRECATED

◆ SQLITE_DESERIALIZE_FREEONCLOSE

#define SQLITE_DESERIALIZE_FREEONCLOSE   1 /* Call sqlite3_free() on close */

◆ SQLITE_DESERIALIZE_READONLY

#define SQLITE_DESERIALIZE_READONLY   4 /* Database is read-only */

◆ SQLITE_DESERIALIZE_RESIZEABLE

#define SQLITE_DESERIALIZE_RESIZEABLE   2 /* Resize using sqlite3_realloc64() */

◆ SQLITE_DETACH

#define SQLITE_DETACH   25 /* Database Name NULL */

◆ SQLITE_DETERMINISTIC

#define SQLITE_DETERMINISTIC   0x000000800

◆ SQLITE_DIRECTONLY

#define SQLITE_DIRECTONLY   0x000080000

◆ SQLITE_DONE

#define SQLITE_DONE   101 /* sqlite3_step() has finished executing */

◆ SQLITE_DROP_INDEX

#define SQLITE_DROP_INDEX   10 /* Index Name Table Name */

◆ SQLITE_DROP_TABLE

#define SQLITE_DROP_TABLE   11 /* Table Name NULL */

◆ SQLITE_DROP_TEMP_INDEX

#define SQLITE_DROP_TEMP_INDEX   12 /* Index Name Table Name */

◆ SQLITE_DROP_TEMP_TABLE

#define SQLITE_DROP_TEMP_TABLE   13 /* Table Name NULL */

◆ SQLITE_DROP_TEMP_TRIGGER

#define SQLITE_DROP_TEMP_TRIGGER   14 /* Trigger Name Table Name */

◆ SQLITE_DROP_TEMP_VIEW

#define SQLITE_DROP_TEMP_VIEW   15 /* View Name NULL */

◆ SQLITE_DROP_TRIGGER

#define SQLITE_DROP_TRIGGER   16 /* Trigger Name Table Name */

◆ SQLITE_DROP_VIEW

#define SQLITE_DROP_VIEW   17 /* View Name NULL */

◆ SQLITE_DROP_VTABLE

#define SQLITE_DROP_VTABLE   30 /* Table Name Module Name */

◆ SQLITE_EMPTY

#define SQLITE_EMPTY   16 /* Internal use only */

◆ SQLITE_ERROR

#define SQLITE_ERROR   1 /* Generic error */

◆ SQLITE_ERROR_MISSING_COLLSEQ

#define SQLITE_ERROR_MISSING_COLLSEQ   (SQLITE_ERROR | (1<<8))

◆ SQLITE_ERROR_RETRY

#define SQLITE_ERROR_RETRY   (SQLITE_ERROR | (2<<8))

◆ SQLITE_ERROR_SNAPSHOT

#define SQLITE_ERROR_SNAPSHOT   (SQLITE_ERROR | (3<<8))

◆ SQLITE_EXPERIMENTAL

#define SQLITE_EXPERIMENTAL

◆ SQLITE_EXTERN

#define SQLITE_EXTERN   extern

◆ SQLITE_FAIL

#define SQLITE_FAIL   3

◆ SQLITE_FCNTL_BEGIN_ATOMIC_WRITE

#define SQLITE_FCNTL_BEGIN_ATOMIC_WRITE   31

◆ SQLITE_FCNTL_BLOCK_ON_CONNECT

#define SQLITE_FCNTL_BLOCK_ON_CONNECT   44

◆ SQLITE_FCNTL_BUSYHANDLER

#define SQLITE_FCNTL_BUSYHANDLER   15

◆ SQLITE_FCNTL_CHUNK_SIZE

#define SQLITE_FCNTL_CHUNK_SIZE   6

◆ SQLITE_FCNTL_CKPT_DONE

#define SQLITE_FCNTL_CKPT_DONE   37

◆ SQLITE_FCNTL_CKPT_START

#define SQLITE_FCNTL_CKPT_START   39

◆ SQLITE_FCNTL_CKSM_FILE

#define SQLITE_FCNTL_CKSM_FILE   41

◆ SQLITE_FCNTL_COMMIT_ATOMIC_WRITE

#define SQLITE_FCNTL_COMMIT_ATOMIC_WRITE   32

◆ SQLITE_FCNTL_COMMIT_PHASETWO

#define SQLITE_FCNTL_COMMIT_PHASETWO   22

◆ SQLITE_FCNTL_DATA_VERSION

#define SQLITE_FCNTL_DATA_VERSION   35

◆ SQLITE_FCNTL_EXTERNAL_READER

#define SQLITE_FCNTL_EXTERNAL_READER   40

◆ SQLITE_FCNTL_FILE_POINTER

#define SQLITE_FCNTL_FILE_POINTER   7

◆ SQLITE_FCNTL_GET_LOCKPROXYFILE

#define SQLITE_FCNTL_GET_LOCKPROXYFILE   2

◆ SQLITE_FCNTL_HAS_MOVED

#define SQLITE_FCNTL_HAS_MOVED   20

◆ SQLITE_FCNTL_JOURNAL_POINTER

#define SQLITE_FCNTL_JOURNAL_POINTER   28

◆ SQLITE_FCNTL_LAST_ERRNO

#define SQLITE_FCNTL_LAST_ERRNO   4

◆ SQLITE_FCNTL_LOCK_TIMEOUT

#define SQLITE_FCNTL_LOCK_TIMEOUT   34

◆ SQLITE_FCNTL_LOCKSTATE

#define SQLITE_FCNTL_LOCKSTATE   1

◆ SQLITE_FCNTL_MMAP_SIZE

#define SQLITE_FCNTL_MMAP_SIZE   18

◆ SQLITE_FCNTL_NULL_IO

#define SQLITE_FCNTL_NULL_IO   43

◆ SQLITE_FCNTL_OVERWRITE

#define SQLITE_FCNTL_OVERWRITE   11

◆ SQLITE_FCNTL_PDB

#define SQLITE_FCNTL_PDB   30

◆ SQLITE_FCNTL_PERSIST_WAL

#define SQLITE_FCNTL_PERSIST_WAL   10

◆ SQLITE_FCNTL_POWERSAFE_OVERWRITE

#define SQLITE_FCNTL_POWERSAFE_OVERWRITE   13

◆ SQLITE_FCNTL_PRAGMA

#define SQLITE_FCNTL_PRAGMA   14

◆ SQLITE_FCNTL_RBU

#define SQLITE_FCNTL_RBU   26

◆ SQLITE_FCNTL_RESERVE_BYTES

#define SQLITE_FCNTL_RESERVE_BYTES   38

◆ SQLITE_FCNTL_RESET_CACHE

#define SQLITE_FCNTL_RESET_CACHE   42

◆ SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE

#define SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE   33

◆ SQLITE_FCNTL_SET_LOCKPROXYFILE

#define SQLITE_FCNTL_SET_LOCKPROXYFILE   3

◆ SQLITE_FCNTL_SIZE_HINT

#define SQLITE_FCNTL_SIZE_HINT   5

◆ SQLITE_FCNTL_SIZE_LIMIT

#define SQLITE_FCNTL_SIZE_LIMIT   36

◆ SQLITE_FCNTL_SYNC

#define SQLITE_FCNTL_SYNC   21

◆ SQLITE_FCNTL_SYNC_OMITTED

#define SQLITE_FCNTL_SYNC_OMITTED   8

◆ SQLITE_FCNTL_TEMPFILENAME

#define SQLITE_FCNTL_TEMPFILENAME   16

◆ SQLITE_FCNTL_TRACE

#define SQLITE_FCNTL_TRACE   19

◆ SQLITE_FCNTL_VFS_POINTER

#define SQLITE_FCNTL_VFS_POINTER   27

◆ SQLITE_FCNTL_VFSNAME

#define SQLITE_FCNTL_VFSNAME   12

◆ SQLITE_FCNTL_WAL_BLOCK

#define SQLITE_FCNTL_WAL_BLOCK   24

◆ SQLITE_FCNTL_WIN32_AV_RETRY

#define SQLITE_FCNTL_WIN32_AV_RETRY   9

◆ SQLITE_FCNTL_WIN32_GET_HANDLE

#define SQLITE_FCNTL_WIN32_GET_HANDLE   29

◆ SQLITE_FCNTL_WIN32_SET_HANDLE

#define SQLITE_FCNTL_WIN32_SET_HANDLE   23

◆ SQLITE_FCNTL_ZIPVFS

#define SQLITE_FCNTL_ZIPVFS   25

◆ SQLITE_FLOAT

#define SQLITE_FLOAT   2

◆ SQLITE_FORMAT

#define SQLITE_FORMAT   24 /* Not used */

◆ SQLITE_FULL

#define SQLITE_FULL   13 /* Insertion failed because database is full */

◆ SQLITE_FUNCTION

#define SQLITE_FUNCTION   31 /* NULL Function Name */

◆ SQLITE_GET_LOCKPROXYFILE

#define SQLITE_GET_LOCKPROXYFILE   SQLITE_FCNTL_GET_LOCKPROXYFILE

◆ SQLITE_IGNORE

#define SQLITE_IGNORE   2 /* Don't allow access, but don't generate an error */

◆ SQLITE_INDEX_CONSTRAINT_EQ

#define SQLITE_INDEX_CONSTRAINT_EQ   2

◆ SQLITE_INDEX_CONSTRAINT_FUNCTION

#define SQLITE_INDEX_CONSTRAINT_FUNCTION   150

◆ SQLITE_INDEX_CONSTRAINT_GE

#define SQLITE_INDEX_CONSTRAINT_GE   32

◆ SQLITE_INDEX_CONSTRAINT_GLOB

#define SQLITE_INDEX_CONSTRAINT_GLOB   66

◆ SQLITE_INDEX_CONSTRAINT_GT

#define SQLITE_INDEX_CONSTRAINT_GT   4

◆ SQLITE_INDEX_CONSTRAINT_IS

#define SQLITE_INDEX_CONSTRAINT_IS   72

◆ SQLITE_INDEX_CONSTRAINT_ISNOT

#define SQLITE_INDEX_CONSTRAINT_ISNOT   69

◆ SQLITE_INDEX_CONSTRAINT_ISNOTNULL

#define SQLITE_INDEX_CONSTRAINT_ISNOTNULL   70

◆ SQLITE_INDEX_CONSTRAINT_ISNULL

#define SQLITE_INDEX_CONSTRAINT_ISNULL   71

◆ SQLITE_INDEX_CONSTRAINT_LE

#define SQLITE_INDEX_CONSTRAINT_LE   8

◆ SQLITE_INDEX_CONSTRAINT_LIKE

#define SQLITE_INDEX_CONSTRAINT_LIKE   65

◆ SQLITE_INDEX_CONSTRAINT_LIMIT

#define SQLITE_INDEX_CONSTRAINT_LIMIT   73

◆ SQLITE_INDEX_CONSTRAINT_LT

#define SQLITE_INDEX_CONSTRAINT_LT   16

◆ SQLITE_INDEX_CONSTRAINT_MATCH

#define SQLITE_INDEX_CONSTRAINT_MATCH   64

◆ SQLITE_INDEX_CONSTRAINT_NE

#define SQLITE_INDEX_CONSTRAINT_NE   68

◆ SQLITE_INDEX_CONSTRAINT_OFFSET

#define SQLITE_INDEX_CONSTRAINT_OFFSET   74

◆ SQLITE_INDEX_CONSTRAINT_REGEXP

#define SQLITE_INDEX_CONSTRAINT_REGEXP   67

◆ SQLITE_INDEX_SCAN_HEX

#define SQLITE_INDEX_SCAN_HEX   0x00000002 /* Display idxNum as hex */

◆ SQLITE_INDEX_SCAN_UNIQUE

#define SQLITE_INDEX_SCAN_UNIQUE   0x00000001 /* Scan visits at most 1 row */

◆ SQLITE_INNOCUOUS

#define SQLITE_INNOCUOUS   0x000200000

◆ SQLITE_INSERT

#define SQLITE_INSERT   18 /* Table Name NULL */

◆ SQLITE_INTEGER

#define SQLITE_INTEGER   1

◆ SQLITE_INTERNAL

#define SQLITE_INTERNAL   2 /* Internal logic error in SQLite */

◆ SQLITE_INTERRUPT

#define SQLITE_INTERRUPT   9 /* Operation terminated by sqlite3_interrupt()*/

◆ SQLITE_IOCAP_ATOMIC

#define SQLITE_IOCAP_ATOMIC   0x00000001

◆ SQLITE_IOCAP_ATOMIC16K

#define SQLITE_IOCAP_ATOMIC16K   0x00000040

◆ SQLITE_IOCAP_ATOMIC1K

#define SQLITE_IOCAP_ATOMIC1K   0x00000004

◆ SQLITE_IOCAP_ATOMIC2K

#define SQLITE_IOCAP_ATOMIC2K   0x00000008

◆ SQLITE_IOCAP_ATOMIC32K

#define SQLITE_IOCAP_ATOMIC32K   0x00000080

◆ SQLITE_IOCAP_ATOMIC4K

#define SQLITE_IOCAP_ATOMIC4K   0x00000010

◆ SQLITE_IOCAP_ATOMIC512

#define SQLITE_IOCAP_ATOMIC512   0x00000002

◆ SQLITE_IOCAP_ATOMIC64K

#define SQLITE_IOCAP_ATOMIC64K   0x00000100

◆ SQLITE_IOCAP_ATOMIC8K

#define SQLITE_IOCAP_ATOMIC8K   0x00000020

◆ SQLITE_IOCAP_BATCH_ATOMIC

#define SQLITE_IOCAP_BATCH_ATOMIC   0x00004000

◆ SQLITE_IOCAP_IMMUTABLE

#define SQLITE_IOCAP_IMMUTABLE   0x00002000

◆ SQLITE_IOCAP_POWERSAFE_OVERWRITE

#define SQLITE_IOCAP_POWERSAFE_OVERWRITE   0x00001000

◆ SQLITE_IOCAP_SAFE_APPEND

#define SQLITE_IOCAP_SAFE_APPEND   0x00000200

◆ SQLITE_IOCAP_SEQUENTIAL

#define SQLITE_IOCAP_SEQUENTIAL   0x00000400

◆ SQLITE_IOCAP_SUBPAGE_READ

#define SQLITE_IOCAP_SUBPAGE_READ   0x00008000

◆ SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN

#define SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN   0x00000800

◆ SQLITE_IOERR

#define SQLITE_IOERR   10 /* Some kind of disk I/O error occurred */

◆ SQLITE_IOERR_ACCESS

#define SQLITE_IOERR_ACCESS   (SQLITE_IOERR | (13<<8))

◆ SQLITE_IOERR_AUTH

#define SQLITE_IOERR_AUTH   (SQLITE_IOERR | (28<<8))

◆ SQLITE_IOERR_BEGIN_ATOMIC

#define SQLITE_IOERR_BEGIN_ATOMIC   (SQLITE_IOERR | (29<<8))

◆ SQLITE_IOERR_BLOCKED

#define SQLITE_IOERR_BLOCKED   (SQLITE_IOERR | (11<<8))

◆ SQLITE_IOERR_CHECKRESERVEDLOCK

#define SQLITE_IOERR_CHECKRESERVEDLOCK   (SQLITE_IOERR | (14<<8))

◆ SQLITE_IOERR_CLOSE

#define SQLITE_IOERR_CLOSE   (SQLITE_IOERR | (16<<8))

◆ SQLITE_IOERR_COMMIT_ATOMIC

#define SQLITE_IOERR_COMMIT_ATOMIC   (SQLITE_IOERR | (30<<8))

◆ SQLITE_IOERR_CONVPATH

#define SQLITE_IOERR_CONVPATH   (SQLITE_IOERR | (26<<8))

◆ SQLITE_IOERR_CORRUPTFS

#define SQLITE_IOERR_CORRUPTFS   (SQLITE_IOERR | (33<<8))

◆ SQLITE_IOERR_DATA

#define SQLITE_IOERR_DATA   (SQLITE_IOERR | (32<<8))

◆ SQLITE_IOERR_DELETE

#define SQLITE_IOERR_DELETE   (SQLITE_IOERR | (10<<8))

◆ SQLITE_IOERR_DELETE_NOENT

#define SQLITE_IOERR_DELETE_NOENT   (SQLITE_IOERR | (23<<8))

◆ SQLITE_IOERR_DIR_CLOSE

#define SQLITE_IOERR_DIR_CLOSE   (SQLITE_IOERR | (17<<8))

◆ SQLITE_IOERR_DIR_FSYNC

#define SQLITE_IOERR_DIR_FSYNC   (SQLITE_IOERR | (5<<8))

◆ SQLITE_IOERR_FSTAT

#define SQLITE_IOERR_FSTAT   (SQLITE_IOERR | (7<<8))

◆ SQLITE_IOERR_FSYNC

#define SQLITE_IOERR_FSYNC   (SQLITE_IOERR | (4<<8))

◆ SQLITE_IOERR_GETTEMPPATH

#define SQLITE_IOERR_GETTEMPPATH   (SQLITE_IOERR | (25<<8))

◆ SQLITE_IOERR_IN_PAGE

#define SQLITE_IOERR_IN_PAGE   (SQLITE_IOERR | (34<<8))

◆ SQLITE_IOERR_LOCK

#define SQLITE_IOERR_LOCK   (SQLITE_IOERR | (15<<8))

◆ SQLITE_IOERR_MMAP

#define SQLITE_IOERR_MMAP   (SQLITE_IOERR | (24<<8))

◆ SQLITE_IOERR_NOMEM

#define SQLITE_IOERR_NOMEM   (SQLITE_IOERR | (12<<8))

◆ SQLITE_IOERR_RDLOCK

#define SQLITE_IOERR_RDLOCK   (SQLITE_IOERR | (9<<8))

◆ SQLITE_IOERR_READ

#define SQLITE_IOERR_READ   (SQLITE_IOERR | (1<<8))

◆ SQLITE_IOERR_ROLLBACK_ATOMIC

#define SQLITE_IOERR_ROLLBACK_ATOMIC   (SQLITE_IOERR | (31<<8))

◆ SQLITE_IOERR_SEEK

#define SQLITE_IOERR_SEEK   (SQLITE_IOERR | (22<<8))

◆ SQLITE_IOERR_SHMLOCK

#define SQLITE_IOERR_SHMLOCK   (SQLITE_IOERR | (20<<8))

◆ SQLITE_IOERR_SHMMAP

#define SQLITE_IOERR_SHMMAP   (SQLITE_IOERR | (21<<8))

◆ SQLITE_IOERR_SHMOPEN

#define SQLITE_IOERR_SHMOPEN   (SQLITE_IOERR | (18<<8))

◆ SQLITE_IOERR_SHMSIZE

#define SQLITE_IOERR_SHMSIZE   (SQLITE_IOERR | (19<<8))

◆ SQLITE_IOERR_SHORT_READ

#define SQLITE_IOERR_SHORT_READ   (SQLITE_IOERR | (2<<8))

◆ SQLITE_IOERR_TRUNCATE

#define SQLITE_IOERR_TRUNCATE   (SQLITE_IOERR | (6<<8))

◆ SQLITE_IOERR_UNLOCK

#define SQLITE_IOERR_UNLOCK   (SQLITE_IOERR | (8<<8))

◆ SQLITE_IOERR_VNODE

#define SQLITE_IOERR_VNODE   (SQLITE_IOERR | (27<<8))

◆ SQLITE_IOERR_WRITE

#define SQLITE_IOERR_WRITE   (SQLITE_IOERR | (3<<8))

◆ SQLITE_LAST_ERRNO

#define SQLITE_LAST_ERRNO   SQLITE_FCNTL_LAST_ERRNO

◆ SQLITE_LIMIT_ATTACHED

#define SQLITE_LIMIT_ATTACHED   7

◆ SQLITE_LIMIT_COLUMN

#define SQLITE_LIMIT_COLUMN   2

◆ SQLITE_LIMIT_COMPOUND_SELECT

#define SQLITE_LIMIT_COMPOUND_SELECT   4

◆ SQLITE_LIMIT_EXPR_DEPTH

#define SQLITE_LIMIT_EXPR_DEPTH   3

◆ SQLITE_LIMIT_FUNCTION_ARG

#define SQLITE_LIMIT_FUNCTION_ARG   6

◆ SQLITE_LIMIT_LENGTH

#define SQLITE_LIMIT_LENGTH   0

◆ SQLITE_LIMIT_LIKE_PATTERN_LENGTH

#define SQLITE_LIMIT_LIKE_PATTERN_LENGTH   8

◆ SQLITE_LIMIT_SQL_LENGTH

#define SQLITE_LIMIT_SQL_LENGTH   1

◆ SQLITE_LIMIT_TRIGGER_DEPTH

#define SQLITE_LIMIT_TRIGGER_DEPTH   10

◆ SQLITE_LIMIT_VARIABLE_NUMBER

#define SQLITE_LIMIT_VARIABLE_NUMBER   9

◆ SQLITE_LIMIT_VDBE_OP

#define SQLITE_LIMIT_VDBE_OP   5

◆ SQLITE_LIMIT_WORKER_THREADS

#define SQLITE_LIMIT_WORKER_THREADS   11

◆ SQLITE_LOCK_EXCLUSIVE

#define SQLITE_LOCK_EXCLUSIVE   4 /* xLock() only */

◆ SQLITE_LOCK_NONE

#define SQLITE_LOCK_NONE   0 /* xUnlock() only */

◆ SQLITE_LOCK_PENDING

#define SQLITE_LOCK_PENDING   3 /* xLock() only */

◆ SQLITE_LOCK_RESERVED

#define SQLITE_LOCK_RESERVED   2 /* xLock() only */

◆ SQLITE_LOCK_SHARED

#define SQLITE_LOCK_SHARED   1 /* xLock() or xUnlock() */

◆ SQLITE_LOCKED

#define SQLITE_LOCKED   6 /* A table in the database is locked */

◆ SQLITE_LOCKED_SHAREDCACHE

#define SQLITE_LOCKED_SHAREDCACHE   (SQLITE_LOCKED | (1<<8))

◆ SQLITE_LOCKED_VTAB

#define SQLITE_LOCKED_VTAB   (SQLITE_LOCKED | (2<<8))

◆ SQLITE_MISMATCH

#define SQLITE_MISMATCH   20 /* Data type mismatch */

◆ SQLITE_MISUSE

#define SQLITE_MISUSE   21 /* Library used incorrectly */

◆ SQLITE_MUTEX_FAST

#define SQLITE_MUTEX_FAST   0

◆ SQLITE_MUTEX_RECURSIVE

#define SQLITE_MUTEX_RECURSIVE   1

◆ SQLITE_MUTEX_STATIC_APP1

#define SQLITE_MUTEX_STATIC_APP1   8 /* For use by application */

◆ SQLITE_MUTEX_STATIC_APP2

#define SQLITE_MUTEX_STATIC_APP2   9 /* For use by application */

◆ SQLITE_MUTEX_STATIC_APP3

#define SQLITE_MUTEX_STATIC_APP3   10 /* For use by application */

◆ SQLITE_MUTEX_STATIC_LRU

#define SQLITE_MUTEX_STATIC_LRU   6 /* lru page list */

◆ SQLITE_MUTEX_STATIC_LRU2

#define SQLITE_MUTEX_STATIC_LRU2   7 /* NOT USED */

◆ SQLITE_MUTEX_STATIC_MAIN

#define SQLITE_MUTEX_STATIC_MAIN   2

◆ SQLITE_MUTEX_STATIC_MASTER

#define SQLITE_MUTEX_STATIC_MASTER   2

◆ SQLITE_MUTEX_STATIC_MEM

#define SQLITE_MUTEX_STATIC_MEM   3 /* sqlite3_malloc() */

◆ SQLITE_MUTEX_STATIC_MEM2

#define SQLITE_MUTEX_STATIC_MEM2   4 /* NOT USED */

◆ SQLITE_MUTEX_STATIC_OPEN

#define SQLITE_MUTEX_STATIC_OPEN   4 /* sqlite3BtreeOpen() */

◆ SQLITE_MUTEX_STATIC_PMEM

#define SQLITE_MUTEX_STATIC_PMEM   7 /* sqlite3PageMalloc() */

◆ SQLITE_MUTEX_STATIC_PRNG

#define SQLITE_MUTEX_STATIC_PRNG   5 /* sqlite3_randomness() */

◆ SQLITE_MUTEX_STATIC_VFS1

#define SQLITE_MUTEX_STATIC_VFS1   11 /* For use by built-in VFS */

◆ SQLITE_MUTEX_STATIC_VFS2

#define SQLITE_MUTEX_STATIC_VFS2   12 /* For use by extension VFS */

◆ SQLITE_MUTEX_STATIC_VFS3

#define SQLITE_MUTEX_STATIC_VFS3   13 /* For use by application VFS */

◆ SQLITE_NOLFS

#define SQLITE_NOLFS   22 /* Uses OS features not supported on host */

◆ SQLITE_NOMEM

#define SQLITE_NOMEM   7 /* A malloc() failed */

◆ SQLITE_NOTADB

#define SQLITE_NOTADB   26 /* File opened that is not a database file */

◆ SQLITE_NOTFOUND

#define SQLITE_NOTFOUND   12 /* Unknown opcode in sqlite3_file_control() */

◆ SQLITE_NOTICE

#define SQLITE_NOTICE   27 /* Notifications from sqlite3_log() */

◆ SQLITE_NOTICE_RBU

#define SQLITE_NOTICE_RBU   (SQLITE_NOTICE | (3<<8))

◆ SQLITE_NOTICE_RECOVER_ROLLBACK

#define SQLITE_NOTICE_RECOVER_ROLLBACK   (SQLITE_NOTICE | (2<<8))

◆ SQLITE_NOTICE_RECOVER_WAL

#define SQLITE_NOTICE_RECOVER_WAL   (SQLITE_NOTICE | (1<<8))

◆ SQLITE_NULL

#define SQLITE_NULL   5

◆ SQLITE_OK

#define SQLITE_OK   0 /* Successful result */

◆ SQLITE_OK_LOAD_PERMANENTLY

#define SQLITE_OK_LOAD_PERMANENTLY   (SQLITE_OK | (1<<8))

◆ SQLITE_OK_SYMLINK

#define SQLITE_OK_SYMLINK   (SQLITE_OK | (2<<8)) /* internal use only */

◆ SQLITE_OPEN_AUTOPROXY

#define SQLITE_OPEN_AUTOPROXY   0x00000020 /* VFS only */

◆ SQLITE_OPEN_CREATE

#define SQLITE_OPEN_CREATE   0x00000004 /* Ok for sqlite3_open_v2() */

◆ SQLITE_OPEN_DELETEONCLOSE

#define SQLITE_OPEN_DELETEONCLOSE   0x00000008 /* VFS only */

◆ SQLITE_OPEN_EXCLUSIVE

#define SQLITE_OPEN_EXCLUSIVE   0x00000010 /* VFS only */

◆ SQLITE_OPEN_EXRESCODE

#define SQLITE_OPEN_EXRESCODE   0x02000000 /* Extended result codes */

◆ SQLITE_OPEN_FULLMUTEX

#define SQLITE_OPEN_FULLMUTEX   0x00010000 /* Ok for sqlite3_open_v2() */

◆ SQLITE_OPEN_MAIN_DB

#define SQLITE_OPEN_MAIN_DB   0x00000100 /* VFS only */

◆ SQLITE_OPEN_MAIN_JOURNAL

#define SQLITE_OPEN_MAIN_JOURNAL   0x00000800 /* VFS only */

◆ SQLITE_OPEN_MASTER_JOURNAL

#define SQLITE_OPEN_MASTER_JOURNAL   0x00004000 /* VFS only */

◆ SQLITE_OPEN_MEMORY

#define SQLITE_OPEN_MEMORY   0x00000080 /* Ok for sqlite3_open_v2() */

◆ SQLITE_OPEN_NOFOLLOW

#define SQLITE_OPEN_NOFOLLOW   0x01000000 /* Ok for sqlite3_open_v2() */

◆ SQLITE_OPEN_NOMUTEX

#define SQLITE_OPEN_NOMUTEX   0x00008000 /* Ok for sqlite3_open_v2() */

◆ SQLITE_OPEN_PRIVATECACHE

#define SQLITE_OPEN_PRIVATECACHE   0x00040000 /* Ok for sqlite3_open_v2() */

◆ SQLITE_OPEN_READONLY

#define SQLITE_OPEN_READONLY   0x00000001 /* Ok for sqlite3_open_v2() */

◆ SQLITE_OPEN_READWRITE

#define SQLITE_OPEN_READWRITE   0x00000002 /* Ok for sqlite3_open_v2() */

◆ SQLITE_OPEN_SHAREDCACHE

#define SQLITE_OPEN_SHAREDCACHE   0x00020000 /* Ok for sqlite3_open_v2() */

◆ SQLITE_OPEN_SUBJOURNAL

#define SQLITE_OPEN_SUBJOURNAL   0x00002000 /* VFS only */

◆ SQLITE_OPEN_SUPER_JOURNAL

#define SQLITE_OPEN_SUPER_JOURNAL   0x00004000 /* VFS only */

◆ SQLITE_OPEN_TEMP_DB

#define SQLITE_OPEN_TEMP_DB   0x00000200 /* VFS only */

◆ SQLITE_OPEN_TEMP_JOURNAL

#define SQLITE_OPEN_TEMP_JOURNAL   0x00001000 /* VFS only */

◆ SQLITE_OPEN_TRANSIENT_DB

#define SQLITE_OPEN_TRANSIENT_DB   0x00000400 /* VFS only */

◆ SQLITE_OPEN_URI

#define SQLITE_OPEN_URI   0x00000040 /* Ok for sqlite3_open_v2() */

◆ SQLITE_OPEN_WAL

#define SQLITE_OPEN_WAL   0x00080000 /* VFS only */

◆ SQLITE_PERM

#define SQLITE_PERM   3 /* Access permission denied */

◆ SQLITE_PRAGMA

#define SQLITE_PRAGMA   19 /* Pragma Name 1st arg or NULL */

◆ SQLITE_PREPARE_DONT_LOG

#define SQLITE_PREPARE_DONT_LOG   0x10

◆ SQLITE_PREPARE_NO_VTAB

#define SQLITE_PREPARE_NO_VTAB   0x04

◆ SQLITE_PREPARE_NORMALIZE

#define SQLITE_PREPARE_NORMALIZE   0x02

◆ SQLITE_PREPARE_PERSISTENT

#define SQLITE_PREPARE_PERSISTENT   0x01

◆ SQLITE_PROTOCOL

#define SQLITE_PROTOCOL   15 /* Database lock protocol error */

◆ SQLITE_RANGE

#define SQLITE_RANGE   25 /* 2nd parameter to sqlite3_bind out of range */

◆ SQLITE_READ

#define SQLITE_READ   20 /* Table Name Column Name */

◆ SQLITE_READONLY

#define SQLITE_READONLY   8 /* Attempt to write a readonly database */

◆ SQLITE_READONLY_CANTINIT

#define SQLITE_READONLY_CANTINIT   (SQLITE_READONLY | (5<<8))

◆ SQLITE_READONLY_CANTLOCK

#define SQLITE_READONLY_CANTLOCK   (SQLITE_READONLY | (2<<8))

◆ SQLITE_READONLY_DBMOVED

#define SQLITE_READONLY_DBMOVED   (SQLITE_READONLY | (4<<8))

◆ SQLITE_READONLY_DIRECTORY

#define SQLITE_READONLY_DIRECTORY   (SQLITE_READONLY | (6<<8))

◆ SQLITE_READONLY_RECOVERY

#define SQLITE_READONLY_RECOVERY   (SQLITE_READONLY | (1<<8))

◆ SQLITE_READONLY_ROLLBACK

#define SQLITE_READONLY_ROLLBACK   (SQLITE_READONLY | (3<<8))

◆ SQLITE_RECURSIVE

#define SQLITE_RECURSIVE   33 /* NULL NULL */

◆ SQLITE_REINDEX

#define SQLITE_REINDEX   27 /* Index Name NULL */

◆ SQLITE_REPLACE

#define SQLITE_REPLACE   5

◆ SQLITE_RESULT_SUBTYPE

#define SQLITE_RESULT_SUBTYPE   0x001000000

◆ SQLITE_ROLLBACK

#define SQLITE_ROLLBACK   1

◆ SQLITE_ROW

#define SQLITE_ROW   100 /* sqlite3_step() has another row ready */

◆ SQLITE_SAVEPOINT

#define SQLITE_SAVEPOINT   32 /* Operation Savepoint Name */

◆ SQLITE_SCANSTAT_COMPLEX

#define SQLITE_SCANSTAT_COMPLEX   0x0001

◆ SQLITE_SCANSTAT_EST

#define SQLITE_SCANSTAT_EST   2

◆ SQLITE_SCANSTAT_EXPLAIN

#define SQLITE_SCANSTAT_EXPLAIN   4

◆ SQLITE_SCANSTAT_NAME

#define SQLITE_SCANSTAT_NAME   3

◆ SQLITE_SCANSTAT_NCYCLE

#define SQLITE_SCANSTAT_NCYCLE   7

◆ SQLITE_SCANSTAT_NLOOP

#define SQLITE_SCANSTAT_NLOOP   0

◆ SQLITE_SCANSTAT_NVISIT

#define SQLITE_SCANSTAT_NVISIT   1

◆ SQLITE_SCANSTAT_PARENTID

#define SQLITE_SCANSTAT_PARENTID   6

◆ SQLITE_SCANSTAT_SELECTID

#define SQLITE_SCANSTAT_SELECTID   5

◆ SQLITE_SCHEMA

#define SQLITE_SCHEMA   17 /* The database schema changed */

◆ SQLITE_SELECT

#define SQLITE_SELECT   21 /* NULL NULL */

◆ SQLITE_SELFORDER1

#define SQLITE_SELFORDER1   0x002000000

◆ SQLITE_SERIALIZE_NOCOPY

#define SQLITE_SERIALIZE_NOCOPY   0x001 /* Do no memory allocations */

◆ SQLITE_SET_LOCKPROXYFILE

#define SQLITE_SET_LOCKPROXYFILE   SQLITE_FCNTL_SET_LOCKPROXYFILE

◆ SQLITE_SETLK_BLOCK_ON_CONNECT

#define SQLITE_SETLK_BLOCK_ON_CONNECT   0x01

◆ SQLITE_SHM_EXCLUSIVE

#define SQLITE_SHM_EXCLUSIVE   8

◆ SQLITE_SHM_LOCK

#define SQLITE_SHM_LOCK   2

◆ SQLITE_SHM_NLOCK

#define SQLITE_SHM_NLOCK   8

◆ SQLITE_SHM_SHARED

#define SQLITE_SHM_SHARED   4

◆ SQLITE_SHM_UNLOCK

#define SQLITE_SHM_UNLOCK   1

◆ SQLITE_SOURCE_ID

#define SQLITE_SOURCE_ID   "2025-06-28 14:00:48 2af157d77fb1304a74176eaee7fbc7c7e932d946bf25325e9c26c91db19e3079"

◆ SQLITE_STATIC

#define SQLITE_STATIC   ((sqlite3_destructor_type)0)

◆ SQLITE_STATUS_MALLOC_COUNT

#define SQLITE_STATUS_MALLOC_COUNT   9

◆ SQLITE_STATUS_MALLOC_SIZE

#define SQLITE_STATUS_MALLOC_SIZE   5

◆ SQLITE_STATUS_MEMORY_USED

#define SQLITE_STATUS_MEMORY_USED   0

◆ SQLITE_STATUS_PAGECACHE_OVERFLOW

#define SQLITE_STATUS_PAGECACHE_OVERFLOW   2

◆ SQLITE_STATUS_PAGECACHE_SIZE

#define SQLITE_STATUS_PAGECACHE_SIZE   7

◆ SQLITE_STATUS_PAGECACHE_USED

#define SQLITE_STATUS_PAGECACHE_USED   1

◆ SQLITE_STATUS_PARSER_STACK

#define SQLITE_STATUS_PARSER_STACK   6

◆ SQLITE_STATUS_SCRATCH_OVERFLOW

#define SQLITE_STATUS_SCRATCH_OVERFLOW   4 /* NOT USED */

◆ SQLITE_STATUS_SCRATCH_SIZE

#define SQLITE_STATUS_SCRATCH_SIZE   8 /* NOT USED */

◆ SQLITE_STATUS_SCRATCH_USED

#define SQLITE_STATUS_SCRATCH_USED   3 /* NOT USED */

◆ SQLITE_STDCALL

#define SQLITE_STDCALL   SQLITE_APICALL

◆ SQLITE_STMTSTATUS_AUTOINDEX

#define SQLITE_STMTSTATUS_AUTOINDEX   3

◆ SQLITE_STMTSTATUS_FILTER_HIT

#define SQLITE_STMTSTATUS_FILTER_HIT   8

◆ SQLITE_STMTSTATUS_FILTER_MISS

#define SQLITE_STMTSTATUS_FILTER_MISS   7

◆ SQLITE_STMTSTATUS_FULLSCAN_STEP

#define SQLITE_STMTSTATUS_FULLSCAN_STEP   1

◆ SQLITE_STMTSTATUS_MEMUSED

#define SQLITE_STMTSTATUS_MEMUSED   99

◆ SQLITE_STMTSTATUS_REPREPARE

#define SQLITE_STMTSTATUS_REPREPARE   5

◆ SQLITE_STMTSTATUS_RUN

#define SQLITE_STMTSTATUS_RUN   6

◆ SQLITE_STMTSTATUS_SORT

#define SQLITE_STMTSTATUS_SORT   2

◆ SQLITE_STMTSTATUS_VM_STEP

#define SQLITE_STMTSTATUS_VM_STEP   4

◆ SQLITE_SUBTYPE

#define SQLITE_SUBTYPE   0x000100000

◆ SQLITE_SYNC_DATAONLY

#define SQLITE_SYNC_DATAONLY   0x00010

◆ SQLITE_SYNC_FULL

#define SQLITE_SYNC_FULL   0x00003

◆ SQLITE_SYNC_NORMAL

#define SQLITE_SYNC_NORMAL   0x00002

◆ SQLITE_SYSAPI

#define SQLITE_SYSAPI

◆ SQLITE_TESTCTRL_ALWAYS

#define SQLITE_TESTCTRL_ALWAYS   13

◆ SQLITE_TESTCTRL_ASSERT

#define SQLITE_TESTCTRL_ASSERT   12

◆ SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS

#define SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS   10

◆ SQLITE_TESTCTRL_BITVEC_TEST

#define SQLITE_TESTCTRL_BITVEC_TEST   8

◆ SQLITE_TESTCTRL_BYTEORDER

#define SQLITE_TESTCTRL_BYTEORDER   22

◆ SQLITE_TESTCTRL_EXPLAIN_STMT

#define SQLITE_TESTCTRL_EXPLAIN_STMT   19 /* NOT USED */

◆ SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS

#define SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS   29

◆ SQLITE_TESTCTRL_FAULT_INSTALL

#define SQLITE_TESTCTRL_FAULT_INSTALL   9

◆ SQLITE_TESTCTRL_FIRST

#define SQLITE_TESTCTRL_FIRST   5

◆ SQLITE_TESTCTRL_FK_NO_ACTION

#define SQLITE_TESTCTRL_FK_NO_ACTION   7

◆ SQLITE_TESTCTRL_GETOPT

#define SQLITE_TESTCTRL_GETOPT   16

◆ SQLITE_TESTCTRL_IMPOSTER

#define SQLITE_TESTCTRL_IMPOSTER   25

◆ SQLITE_TESTCTRL_INTERNAL_FUNCTIONS

#define SQLITE_TESTCTRL_INTERNAL_FUNCTIONS   17

◆ SQLITE_TESTCTRL_ISINIT

#define SQLITE_TESTCTRL_ISINIT   23

◆ SQLITE_TESTCTRL_ISKEYWORD

#define SQLITE_TESTCTRL_ISKEYWORD   16 /* NOT USED */

◆ SQLITE_TESTCTRL_JSON_SELFCHECK

#define SQLITE_TESTCTRL_JSON_SELFCHECK   14

◆ SQLITE_TESTCTRL_LAST

#define SQLITE_TESTCTRL_LAST   34 /* Largest TESTCTRL */

◆ SQLITE_TESTCTRL_LOCALTIME_FAULT

#define SQLITE_TESTCTRL_LOCALTIME_FAULT   18

◆ SQLITE_TESTCTRL_LOGEST

#define SQLITE_TESTCTRL_LOGEST   33

◆ SQLITE_TESTCTRL_NEVER_CORRUPT

#define SQLITE_TESTCTRL_NEVER_CORRUPT   20

◆ SQLITE_TESTCTRL_ONCE_RESET_THRESHOLD

#define SQLITE_TESTCTRL_ONCE_RESET_THRESHOLD   19

◆ SQLITE_TESTCTRL_OPTIMIZATIONS

#define SQLITE_TESTCTRL_OPTIMIZATIONS   15

◆ SQLITE_TESTCTRL_PARSER_COVERAGE

#define SQLITE_TESTCTRL_PARSER_COVERAGE   26

◆ SQLITE_TESTCTRL_PENDING_BYTE

#define SQLITE_TESTCTRL_PENDING_BYTE   11

◆ SQLITE_TESTCTRL_PRNG_RESET

#define SQLITE_TESTCTRL_PRNG_RESET   7 /* NOT USED */

◆ SQLITE_TESTCTRL_PRNG_RESTORE

#define SQLITE_TESTCTRL_PRNG_RESTORE   6

◆ SQLITE_TESTCTRL_PRNG_SAVE

#define SQLITE_TESTCTRL_PRNG_SAVE   5

◆ SQLITE_TESTCTRL_PRNG_SEED

#define SQLITE_TESTCTRL_PRNG_SEED   28

◆ SQLITE_TESTCTRL_RESERVE

#define SQLITE_TESTCTRL_RESERVE   14 /* NOT USED */

◆ SQLITE_TESTCTRL_RESULT_INTREAL

#define SQLITE_TESTCTRL_RESULT_INTREAL   27

◆ SQLITE_TESTCTRL_SCRATCHMALLOC

#define SQLITE_TESTCTRL_SCRATCHMALLOC   17 /* NOT USED */

◆ SQLITE_TESTCTRL_SEEK_COUNT

#define SQLITE_TESTCTRL_SEEK_COUNT   30

◆ SQLITE_TESTCTRL_SORTER_MMAP

#define SQLITE_TESTCTRL_SORTER_MMAP   24

◆ SQLITE_TESTCTRL_TRACEFLAGS

#define SQLITE_TESTCTRL_TRACEFLAGS   31

◆ SQLITE_TESTCTRL_TUNE

#define SQLITE_TESTCTRL_TUNE   32

◆ SQLITE_TESTCTRL_USELONGDOUBLE

#define SQLITE_TESTCTRL_USELONGDOUBLE   34 /* NOT USED */

◆ SQLITE_TESTCTRL_VDBE_COVERAGE

#define SQLITE_TESTCTRL_VDBE_COVERAGE   21

◆ SQLITE_TEXT

#define SQLITE_TEXT   3

◆ SQLITE_TOOBIG

#define SQLITE_TOOBIG   18 /* String or BLOB exceeds size limit */

◆ SQLITE_TRACE_CLOSE

#define SQLITE_TRACE_CLOSE   0x08

◆ SQLITE_TRACE_PROFILE

#define SQLITE_TRACE_PROFILE   0x02

◆ SQLITE_TRACE_ROW

#define SQLITE_TRACE_ROW   0x04

◆ SQLITE_TRACE_STMT

#define SQLITE_TRACE_STMT   0x01

◆ SQLITE_TRANSACTION

#define SQLITE_TRANSACTION   22 /* Operation NULL */

◆ SQLITE_TRANSIENT

#define SQLITE_TRANSIENT   ((sqlite3_destructor_type)-1)

◆ SQLITE_TXN_NONE

#define SQLITE_TXN_NONE   0

◆ SQLITE_TXN_READ

#define SQLITE_TXN_READ   1

◆ SQLITE_TXN_WRITE

#define SQLITE_TXN_WRITE   2

◆ SQLITE_UPDATE

#define SQLITE_UPDATE   23 /* Table Name Column Name */

◆ SQLITE_UTF16

#define SQLITE_UTF16   4 /* Use native byte order */

◆ SQLITE_UTF16_ALIGNED

#define SQLITE_UTF16_ALIGNED   8 /* sqlite3_create_collation only */

◆ SQLITE_UTF16BE

#define SQLITE_UTF16BE   3 /* IMP: R-51971-34154 */

◆ SQLITE_UTF16LE

#define SQLITE_UTF16LE   2 /* IMP: R-03371-37637 */

◆ SQLITE_UTF8

#define SQLITE_UTF8   1 /* IMP: R-37514-35566 */

◆ SQLITE_VERSION

#define SQLITE_VERSION   "3.50.2"

◆ SQLITE_VERSION_NUMBER

#define SQLITE_VERSION_NUMBER   3050002

◆ SQLITE_VTAB_CONSTRAINT_SUPPORT

#define SQLITE_VTAB_CONSTRAINT_SUPPORT   1

◆ SQLITE_VTAB_DIRECTONLY

#define SQLITE_VTAB_DIRECTONLY   3

◆ SQLITE_VTAB_INNOCUOUS

#define SQLITE_VTAB_INNOCUOUS   2

◆ SQLITE_VTAB_USES_ALL_SCHEMAS

#define SQLITE_VTAB_USES_ALL_SCHEMAS   4

◆ SQLITE_WARNING

#define SQLITE_WARNING   28 /* Warnings from sqlite3_log() */

◆ SQLITE_WARNING_AUTOINDEX

#define SQLITE_WARNING_AUTOINDEX   (SQLITE_WARNING | (1<<8))

◆ SQLITE_WIN32_DATA_DIRECTORY_TYPE

#define SQLITE_WIN32_DATA_DIRECTORY_TYPE   1

◆ SQLITE_WIN32_TEMP_DIRECTORY_TYPE

#define SQLITE_WIN32_TEMP_DIRECTORY_TYPE   2

Typedef Documentation

◆ fts5_extension_function

typedef void(* fts5_extension_function) (const Fts5ExtensionApi *pApi, Fts5Context *pFts, sqlite3_context *pCtx, int nVal, sqlite3_value **apVal)

◆ sqlite3_callback

typedef int(* sqlite3_callback) (void *, int, char **, char **)

◆ sqlite3_destructor_type

typedef void(* sqlite3_destructor_type) (void *)

◆ sqlite3_filename

typedef const char* sqlite3_filename

◆ sqlite3_snapshot

typedef struct sqlite3_snapshot sqlite3_snapshot

◆ sqlite3_syscall_ptr

typedef void(* sqlite3_syscall_ptr) (void)

Function Documentation

◆ sqlite3_aggregate_context()

void * sqlite3_aggregate_context ( sqlite3_context * p,
int nBytes )
92589 {
92590 assert( p && p->pFunc && p->pFunc->xFinalize );
92591 assert( sqlite3_mutex_held(p->pOut->db->mutex) );
92592 testcase( nByte<0 );
void(* xFinalize)(sqlite3_context *)
Definition sqlite3.c:18342
sqlite3_mutex * mutex
Definition sqlite3.c:18038
sqlite3 * db
Definition sqlite3.c:23821
#define testcase(X)
Definition sqlite3.c:14605
Mem * pOut
Definition sqlite3.c:23971
int sqlite3_mutex_held(sqlite3_mutex *)
FuncDef * pFunc
Definition sqlite3.c:23972

References createAggContext(), sqlite3_value::db, sqlite3_value::flags, MEM_Agg, sqlite3::mutex, sqlite3_context::pFunc, sqlite3_context::pMem, sqlite3_context::pOut, sqlite3_mutex_held(), SQLITE_API, testcase, FuncDef::xFinalize, and sqlite3_value::z.

Here is the call graph for this function:

◆ sqlite3_aggregate_count()

◆ sqlite3_auto_extension()

int sqlite3_auto_extension ( void(* xEntryPoint )(void))
139841 {
139842 int rc = SQLITE_OK;
139843#ifdef SQLITE_ENABLE_API_ARMOR
139844 if( xInit==0 ) return SQLITE_MISUSE_BKPT;
139845#endif
139846#ifndef SQLITE_OMIT_AUTOINIT
139847 rc = sqlite3_initialize();
139848 if( rc ){
139849 return rc;
139850 }else
139851#endif
139852 {
139853 u32 i;
139854#if SQLITE_THREADSAFE
139856#endif
139858 sqlite3_mutex_enter(mutex);
139859 for(i=0; i<wsdAutoext.nExt; i++){
139860 if( wsdAutoext.aExt[i]==xInit ) break;
139861 }
139862 if( i==wsdAutoext.nExt ){
139863 u64 nByte = (wsdAutoext.nExt+1)*sizeof(wsdAutoext.aExt[0]);
139864 void (**aNew)(void);
139865 aNew = sqlite3_realloc64(wsdAutoext.aExt, nByte);
139866 if( aNew==0 ){
139867 rc = SQLITE_NOMEM_BKPT;
139868 }else{
139869 wsdAutoext.aExt = aNew;
139870 wsdAutoext.aExt[wsdAutoext.nExt] = xInit;
139871 wsdAutoext.nExt++;
139872 }
unsigned int u32
Definition shell.c:37
sqlite3_uint64 u64
Definition shell.c:123
int sqlite3_initialize(void)
Definition sqlite3.c:182783
#define SQLITE_NOMEM_BKPT
Definition sqlite3.c:21008
#define SQLITE_OK
Definition sqlite3.c:765
static sqlite3_mutex * sqlite3MutexAlloc(int)
Definition sqlite3.c:29525
#define SQLITE_MISUSE_BKPT
Definition sqlite3.c:21000
#define wsdAutoext
Definition sqlite3.c:139825
#define SQLITE_MUTEX_STATIC_MAIN
Definition sqlite3.c:8744
#define wsdAutoextInit
Definition sqlite3.c:139824
Definition sqlite3.c:29871
#define sqlite3_realloc64
Definition sqlite3ext.h:607
#define sqlite3_mutex_enter
Definition sqlite3ext.h:537

References sqlite3_initialize(), sqlite3_mutex_enter, sqlite3_mutex_leave, sqlite3_realloc64, sqlite3MutexAlloc(), SQLITE_API, SQLITE_MISUSE_BKPT, SQLITE_MUTEX_STATIC_MAIN, SQLITE_NOMEM_BKPT, SQLITE_OK, wsdAutoext, and wsdAutoextInit.

Here is the call graph for this function:

◆ sqlite3_autovacuum_pages()

int sqlite3_autovacuum_pages ( sqlite3 * db,
unsigned int*)(void *, const char *, unsigned int, unsigned int, unsigned int,
void * ,
void(*  )(void *) )

References SQLITE_API, and SQLITE_DEPRECATED.

◆ sqlite3_backup_finish()

int sqlite3_backup_finish ( sqlite3_backup * p)
83636 {
83637 sqlite3_backup **pp; /* Ptr to head of pagers backup list */
83638 sqlite3 *pSrcDb; /* Source database connection */
83639 int rc; /* Value to return */
83640
83641 /* Enter the mutexes */
83642 if( p==0 ) return SQLITE_OK;
83643 pSrcDb = p->pSrcDb;
83644 sqlite3_mutex_enter(pSrcDb->mutex);
83646 if( p->pDestDb ){
83648 }
83649
83650 /* Detach this backup from the source pager. */
83651 if( p->pDestDb ){
83652 p->pSrc->nBackup--;
83653 }
83654 if( p->isAttached ){
83656 assert( pp!=0 );
83657 while( *pp!=p ){
83658 pp = &(*pp)->pNext;
83659 assert( pp!=0 );
83660 }
83661 *pp = p->pNext;
83662 }
83663
83664 /* If a transaction is still open on the Btree, roll it back. */
83666
83667 /* Set the error code of the destination database handle. */
83668 rc = (p->rc==SQLITE_DONE) ? SQLITE_OK : p->rc;
83669 if( p->pDestDb ){
83670 sqlite3Error(p->pDestDb, rc);
83671
83672 /* Exit the mutexes and free the backup context structure. */
83674 }
83676 if( p->pDestDb ){
83677 /* EVIDENCE-OF: R-64852-21591 The sqlite3_backup object is created by a
83678 ** call to sqlite3_backup_init() and is destroyed by a call to
static void sqlite3BtreeLeave(Btree *)
Definition sqlite3.c:71377
static void sqlite3Error(sqlite3 *, int)
Definition sqlite3.c:35634
static void sqlite3LeaveMutexAndCloseZombie(sqlite3 *)
Definition sqlite3.c:183948
sqlite3 * pSrcDb
Definition sqlite3.c:83087
sqlite3_backup * pNext
Definition sqlite3.c:83099
int nBackup
Definition sqlite3.c:70862
static int sqlite3BtreeRollback(Btree *, int, int)
Definition sqlite3.c:76035
Btree * pDest
Definition sqlite3.c:83082
static void sqlite3BtreeEnter(Btree *)
Definition sqlite3.c:71305
Btree * pSrc
Definition sqlite3.c:83088
int rc
Definition sqlite3.c:83090
static struct Pager * sqlite3BtreePager(Btree *)
Definition sqlite3.c:82047
sqlite3 * pDestDb
Definition sqlite3.c:83081
static sqlite3_backup ** sqlite3PagerBackupPtr(Pager *)
Definition sqlite3.c:65521
int isAttached
Definition sqlite3.c:83098
#define SQLITE_DONE
Definition sqlite3.c:796
Definition sqlite3.c:18034
Definition sqlite3.c:83080

◆ sqlite3_backup_init()

sqlite3_backup * sqlite3_backup_init ( sqlite3 * pDest,
const char * zDestName,
sqlite3 * pSource,
const char * zSourceName )
83210 {
83211 sqlite3_backup *p; /* Value to return */
83212
83213#ifdef SQLITE_ENABLE_API_ARMOR
83214 if( !sqlite3SafetyCheckOk(pSrcDb)||!sqlite3SafetyCheckOk(pDestDb) ){
83215 (void)SQLITE_MISUSE_BKPT;
83216 return 0;
83217 }
83218#endif
83219
83220 /* Lock the source database handle. The destination database
83221 ** handle is not locked in this routine, but it is locked in
83222 ** sqlite3_backup_step(). The user is required to ensure that no
83223 ** other thread accesses the destination handle for the duration
83224 ** of the backup operation. Any attempt to use the destination
83225 ** database connection while a backup is in progress may cause
83226 ** a malfunction or a deadlock.
83227 */
83228 sqlite3_mutex_enter(pSrcDb->mutex);
83229 sqlite3_mutex_enter(pDestDb->mutex);
83230
83231 if( pSrcDb==pDestDb ){
83233 pDestDb, SQLITE_ERROR, "source and destination must be distinct"
83234 );
83235 p = 0;
83236 }else {
83237 /* Allocate space for a new sqlite3_backup object...
83238 ** EVIDENCE-OF: R-64852-21591 The sqlite3_backup object is created by a
83239 ** call to sqlite3_backup_init() and is destroyed by a call to
83240 ** sqlite3_backup_finish(). */
83242 if( !p ){
83244 }
83245 }
83246
83247 /* If the allocation succeeded, populate the new object. */
83248 if( p ){
83249 p->pSrc = findBtree(pDestDb, pSrcDb, zSrcDb);
83250 p->pDest = findBtree(pDestDb, pDestDb, zDestDb);
83251 p->pDestDb = pDestDb;
83252 p->pSrcDb = pSrcDb;
83253 p->iNext = 1;
83254 p->isAttached = 0;
83255
83256 if( 0==p->pSrc || 0==p->pDest
83257 || checkReadTransaction(pDestDb, p->pDest)!=SQLITE_OK
83258 ){
83259 /* One (or both) of the named databases did not exist or an OOM
83260 ** error was hit. Or there is a transaction open on the destination
83261 ** database. The error has already been written into the pDestDb
83262 ** handle. All that is left to do here is free the sqlite3_backup
83263 ** structure. */
83264 sqlite3_free(p);
83265 p = 0;
83266 }
83267 }
83268 if( p ){
83269 p->pSrc->nBackup++;
static void * sqlite3MallocZero(u64)
Definition sqlite3.c:31325
Pgno iNext
Definition sqlite3.c:83086
static Btree * findBtree(sqlite3 *pErrorDb, sqlite3 *pDb, const char *zDb)
Definition sqlite3.c:83141
static int sqlite3SafetyCheckOk(sqlite3 *)
Definition sqlite3.c:37051
static int checkReadTransaction(sqlite3 *db, Btree *p)
Definition sqlite3.c:83183
static void sqlite3ErrorWithMsg(sqlite3 *, int, const char *,...)
Definition sqlite3.c:35696
#define SQLITE_ERROR
Definition sqlite3.c:767
#define sqlite3_free
Definition sqlite3ext.h:458

References checkReadTransaction(), findBtree(), sqlite3_backup::iNext, sqlite3_backup::isAttached, sqlite3::mutex, Btree::nBackup, sqlite3_backup::pDest, sqlite3_backup::pDestDb, sqlite3_backup::pSrc, sqlite3_backup::pSrcDb, sqlite3_free, sqlite3_mutex_enter, sqlite3_mutex_leave, sqlite3Error(), sqlite3ErrorWithMsg(), sqlite3MallocZero(), sqlite3SafetyCheckOk(), SQLITE_API, SQLITE_ERROR, SQLITE_MISUSE_BKPT, SQLITE_NOMEM_BKPT, and SQLITE_OK.

Here is the call graph for this function:

◆ sqlite3_backup_pagecount()

int sqlite3_backup_pagecount ( sqlite3_backup * p)
83704 {
83705#ifdef SQLITE_ENABLE_API_ARMOR
83706 if( p==0 ){

◆ sqlite3_backup_remaining()

int sqlite3_backup_remaining ( sqlite3_backup * p)
83690 {
83691#ifdef SQLITE_ENABLE_API_ARMOR
83692 if( p==0 ){

◆ sqlite3_backup_step()

int sqlite3_backup_step ( sqlite3_backup * p,
int nPage )
83379 {
83380 int rc;
83381 int destMode; /* Destination journal mode */
83382 int pgszSrc = 0; /* Source page size */
83383 int pgszDest = 0; /* Destination page size */
83384
83385#ifdef SQLITE_ENABLE_API_ARMOR
83386 if( p==0 ) return SQLITE_MISUSE_BKPT;
83387#endif
83390 if( p->pDestDb ){
83392 }
83393
83394 rc = p->rc;
83395 if( !isFatalError(rc) ){
83396 Pager * const pSrcPager = sqlite3BtreePager(p->pSrc); /* Source pager */
83397 Pager * const pDestPager = sqlite3BtreePager(p->pDest); /* Dest pager */
83398 int ii; /* Iterator variable */
83399 int nSrcPage = -1; /* Size of source db in pages */
83400 int bCloseTrans = 0; /* True if src db requires unlocking */
83401
83402 /* If the source pager is currently in a write-transaction, return
83403 ** SQLITE_BUSY immediately.
83404 */
83405 if( p->pDestDb && p->pSrc->pBt->inTransaction==TRANS_WRITE ){
83406 rc = SQLITE_BUSY;
83407 }else{
83408 rc = SQLITE_OK;
83409 }
83410
83411 /* If there is no open read-transaction on the source database, open
83412 ** one now. If a transaction is opened here, then it will be closed
83413 ** before this function exits.
83414 */
83416 rc = sqlite3BtreeBeginTrans(p->pSrc, 0, 0);
83417 bCloseTrans = 1;
83418 }
83419
83420 /* If the destination database has not yet been locked (i.e. if this
83421 ** is the first call to backup_step() for the current backup operation),
83422 ** try to set its page size to the same as the source database. This
83423 ** is especially important on ZipVFS systems, as in that case it is
83424 ** not possible to create a database file that uses one page size by
83425 ** writing to it with another. */
83426 if( p->bDestLocked==0 && rc==SQLITE_OK && setDestPgsz(p)==SQLITE_NOMEM ){
83427 rc = SQLITE_NOMEM;
83428 }
83429
83430 /* Lock the destination database, if it is not locked already. */
83431 if( SQLITE_OK==rc && p->bDestLocked==0
83432 && SQLITE_OK==(rc = sqlite3BtreeBeginTrans(p->pDest, 2,
83433 (int*)&p->iDestSchema))
83434 ){
83435 p->bDestLocked = 1;
83436 }
83437
83438 /* Do not allow backup if the destination database is in WAL mode
83439 ** and the page sizes are different between source and destination */
83440 pgszSrc = sqlite3BtreeGetPageSize(p->pSrc);
83441 pgszDest = sqlite3BtreeGetPageSize(p->pDest);
83443 if( SQLITE_OK==rc
83444 && (destMode==PAGER_JOURNALMODE_WAL || sqlite3PagerIsMemdb(pDestPager))
83445 && pgszSrc!=pgszDest
83446 ){
83447 rc = SQLITE_READONLY;
83448 }
83449
83450 /* Now that there is a read-lock on the source database, query the
83451 ** source pager for the number of pages in the database.
83452 */
83453 nSrcPage = (int)sqlite3BtreeLastPage(p->pSrc);
83454 assert( nSrcPage>=0 );
83455 for(ii=0; (nPage<0 || ii<nPage) && p->iNext<=(Pgno)nSrcPage && !rc; ii++){
83456 const Pgno iSrcPg = p->iNext; /* Source page number */
83457 if( iSrcPg!=PENDING_BYTE_PAGE(p->pSrc->pBt) ){
83458 DbPage *pSrcPg; /* Source page object */
83459 rc = sqlite3PagerGet(pSrcPager, iSrcPg, &pSrcPg,PAGER_GET_READONLY);
83460 if( rc==SQLITE_OK ){
83461 rc = backupOnePage(p, iSrcPg, sqlite3PagerGetData(pSrcPg), 0);
83462 sqlite3PagerUnref(pSrcPg);
83463 }
83464 }
83465 p->iNext++;
83466 }
83467 if( rc==SQLITE_OK ){
83468 p->nPagecount = nSrcPage;
83469 p->nRemaining = nSrcPage+1-p->iNext;
83470 if( p->iNext>(Pgno)nSrcPage ){
83471 rc = SQLITE_DONE;
83472 }else if( !p->isAttached ){
83474 }
83475 }
83476
83477 /* Update the schema version field in the destination database. This
83478 ** is to make sure that the schema-version really does change in
83479 ** the case where the source and destination databases have the
83480 ** same schema version.
83481 */
83482 if( rc==SQLITE_DONE ){
83483 if( nSrcPage==0 ){
83484 rc = sqlite3BtreeNewDb(p->pDest);
83485 nSrcPage = 1;
83486 }
83487 if( rc==SQLITE_OK || rc==SQLITE_DONE ){
83489 }
83490 if( rc==SQLITE_OK ){
83491 if( p->pDestDb ){
83493 }
83494 if( destMode==PAGER_JOURNALMODE_WAL ){
83495 rc = sqlite3BtreeSetVersion(p->pDest, 2);
83496 }
83497 }
83498 if( rc==SQLITE_OK ){
83499 int nDestTruncate;
83500 /* Set nDestTruncate to the final number of pages in the destination
83501 ** database. The complication here is that the destination page
83502 ** size may be different to the source page size.
83503 **
83504 ** If the source page size is smaller than the destination page size,
83505 ** round up. In this case the call to sqlite3OsTruncate() below will
83506 ** fix the size of the file. However it is important to call
83507 ** sqlite3PagerTruncateImage() here so that any pages in the
83508 ** destination file that lie beyond the nDestTruncate page mark are
83509 ** journalled by PagerCommitPhaseOne() before they are destroyed
83510 ** by the file truncation.
83511 */
83512 assert( pgszSrc==sqlite3BtreeGetPageSize(p->pSrc) );
83513 assert( pgszDest==sqlite3BtreeGetPageSize(p->pDest) );
83514 if( pgszSrc<pgszDest ){
83515 int ratio = pgszDest/pgszSrc;
83516 nDestTruncate = (nSrcPage+ratio-1)/ratio;
83517 if( nDestTruncate==(int)PENDING_BYTE_PAGE(p->pDest->pBt) ){
83518 nDestTruncate--;
83519 }
83520 }else{
83521 nDestTruncate = nSrcPage * (pgszSrc/pgszDest);
83522 }
83523 assert( nDestTruncate>0 );
83524
83525 if( pgszSrc<pgszDest ){
83526 /* If the source page-size is smaller than the destination page-size,
83527 ** two extra things may need to happen:
83528 **
83529 ** * The destination may need to be truncated, and
83530 **
83531 ** * Data stored on the pages immediately following the
83532 ** pending-byte page in the source database may need to be
83533 ** copied into the destination database.
83534 */
83535 const i64 iSize = (i64)pgszSrc * (i64)nSrcPage;
83536 sqlite3_file * const pFile = sqlite3PagerFile(pDestPager);
83537 Pgno iPg;
83538 int nDstPage;
83539 i64 iOff;
83540 i64 iEnd;
83541
83542 assert( pFile );
83543 assert( nDestTruncate==0
83544 || (i64)nDestTruncate*(i64)pgszDest >= iSize || (
83545 nDestTruncate==(int)(PENDING_BYTE_PAGE(p->pDest->pBt)-1)
83546 && iSize>=PENDING_BYTE && iSize<=PENDING_BYTE+pgszDest
83547 ));
83548
83549 /* This block ensures that all data required to recreate the original
83550 ** database has been stored in the journal for pDestPager and the
83551 ** journal synced to disk. So at this point we may safely modify
83552 ** the database file in any way, knowing that if a power failure
83553 ** occurs, the original database will be reconstructed from the
83554 ** journal file. */
83555 sqlite3PagerPagecount(pDestPager, &nDstPage);
83556 for(iPg=nDestTruncate; rc==SQLITE_OK && iPg<=(Pgno)nDstPage; iPg++){
83557 if( iPg!=PENDING_BYTE_PAGE(p->pDest->pBt) ){
83558 DbPage *pPg;
83559 rc = sqlite3PagerGet(pDestPager, iPg, &pPg, 0);
83560 if( rc==SQLITE_OK ){
83561 rc = sqlite3PagerWrite(pPg);
83562 sqlite3PagerUnref(pPg);
83563 }
83564 }
83565 }
83566 if( rc==SQLITE_OK ){
83567 rc = sqlite3PagerCommitPhaseOne(pDestPager, 0, 1);
83568 }
83569
83570 /* Write the extra pages and truncate the database file as required */
83571 iEnd = MIN(PENDING_BYTE + pgszDest, iSize);
83572 for(
83573 iOff=PENDING_BYTE+pgszSrc;
83574 rc==SQLITE_OK && iOff<iEnd;
83575 iOff+=pgszSrc
83576 ){
83577 PgHdr *pSrcPg = 0;
83578 const Pgno iSrcPg = (Pgno)((iOff/pgszSrc)+1);
83579 rc = sqlite3PagerGet(pSrcPager, iSrcPg, &pSrcPg, 0);
83580 if( rc==SQLITE_OK ){
83581 u8 *zData = sqlite3PagerGetData(pSrcPg);
83582 rc = sqlite3OsWrite(pFile, zData, pgszSrc, iOff);
83583 }
83584 sqlite3PagerUnref(pSrcPg);
83585 }
83586 if( rc==SQLITE_OK ){
83587 rc = backupTruncateFile(pFile, iSize);
83588 }
83589
83590 /* Sync the database file to disk. */
83591 if( rc==SQLITE_OK ){
83592 rc = sqlite3PagerSync(pDestPager, 0);
83593 }
83594 }else{
83595 sqlite3PagerTruncateImage(pDestPager, nDestTruncate);
83596 rc = sqlite3PagerCommitPhaseOne(pDestPager, 0, 0);
83597 }
83598
83599 /* Finish committing the transaction to the destination database. */
83600 if( SQLITE_OK==rc
83602 ){
83603 rc = SQLITE_DONE;
83604 }
83605 }
83606 }
83607
83608 /* If bCloseTrans is true, then this function opened a read transaction
83609 ** on the source database. Close the read transaction here. There is
83610 ** no need to check the return values of the btree methods here, as
83611 ** "committing" a read-only transaction cannot fail.
83612 */
83613 if( bCloseTrans ){
83614 TESTONLY( int rc2 );
83615 TESTONLY( rc2 = ) sqlite3BtreeCommitPhaseOne(p->pSrc, 0);
83616 TESTONLY( rc2 |= ) sqlite3BtreeCommitPhaseTwo(p->pSrc, 0);
83617 assert( rc2==SQLITE_OK );
83618 }
83619
83620 if( rc==SQLITE_IOERR_NOMEM ){
83621 rc = SQLITE_NOMEM_BKPT;
83622 }
83623 p->rc = rc;
83624 }
83625 if( p->pDestDb ){
sqlite3_int64 i64
Definition shell.c:122
unsigned char u8
Definition shell.c:124
static int isFatalError(int rc)
Definition sqlite3.c:83276
static int backupTruncateFile(sqlite3_file *pFile, i64 iSize)
Definition sqlite3.c:83348
static int sqlite3BtreeCommitPhaseTwo(Btree *, int)
Definition sqlite3.c:75915
static void * sqlite3PagerGetData(DbPage *)
Definition sqlite3.c:65339
static sqlite3_file * sqlite3PagerFile(Pager *)
Definition sqlite3.c:65143
#define SQLITE_READONLY
Definition sqlite3.c:774
#define PAGER_JOURNALMODE_WAL
Definition sqlite3.c:16249
#define SQLITE_BUSY
Definition sqlite3.c:771
static Pgno sqlite3BtreeLastPage(Btree *)
Definition sqlite3.c:73913
static void sqlite3PagerUnref(DbPage *)
Definition sqlite3.c:63830
static void sqlite3PagerPagecount(Pager *, int *)
Definition sqlite3.c:61961
u32 iDestSchema
Definition sqlite3.c:83083
static int sqlite3BtreeNewDb(Btree *p)
Definition sqlite3.c:75091
Pgno nRemaining
Definition sqlite3.c:83095
#define TRANS_WRITE
Definition sqlite3.c:70886
static void attachBackupObject(sqlite3_backup *p)
Definition sqlite3.c:83361
static int sqlite3PagerCommitPhaseOne(Pager *, const char *zSuper, int)
Definition sqlite3.c:64499
#define SQLITE_IOERR_NOMEM
Definition sqlite3.c:830
#define TESTONLY(X)
Definition sqlite3.c:14616
BtShared * pBt
Definition sqlite3.c:70856
static int sqlite3BtreeUpdateMeta(Btree *, int idx, u32 value)
Definition sqlite3.c:81946
static int sqlite3OsWrite(sqlite3_file *, const void *, int amt, i64 offset)
Definition sqlite3.c:26622
static int sqlite3BtreeGetPageSize(Btree *)
Definition sqlite3.c:74646
static int sqlite3PagerSync(Pager *pPager, const char *zSuper)
Definition sqlite3.c:64434
static int backupOnePage(sqlite3_backup *p, Pgno iSrcPg, const u8 *zSrcData, int bUpdate)
Definition sqlite3.c:83285
#define PENDING_BYTE
Definition sqlite3.c:16097
static int sqlite3PagerGet(Pager *pPager, Pgno pgno, DbPage **ppPage, int clrFlag)
Definition sqlite3.c:63760
static int sqlite3PagerWrite(DbPage *)
Definition sqlite3.c:64268
Pgno nPagecount
Definition sqlite3.c:83096
#define SQLITE_NOMEM
Definition sqlite3.c:773
int bDestLocked
Definition sqlite3.c:83084
struct PgHdr DbPage
Definition sqlite3.c:16208
static int sqlite3PagerIsMemdb(Pager *)
Definition sqlite3.c:64939
#define PAGER_GET_READONLY
Definition sqlite3.c:16271
static int sqlite3BtreeCommitPhaseOne(Btree *, const char *)
Definition sqlite3.c:75826
static int sqlite3BtreeTxnState(Btree *)
Definition sqlite3.c:82795
#define SQLITE_TXN_NONE
Definition sqlite3.c:7244
static int setDestPgsz(sqlite3_backup *p)
Definition sqlite3.c:83171
static int sqlite3PagerGetJournalMode(Pager *)
Definition sqlite3.c:65485
#define MIN(A, B)
Definition sqlite3.c:15198
u8 inTransaction
Definition sqlite3.c:70945
#define PENDING_BYTE_PAGE(pBt)
Definition sqlite3.c:71118
u32 Pgno
Definition sqlite3.c:16198
static void sqlite3PagerTruncateImage(Pager *, Pgno)
Definition sqlite3.c:62053
static void sqlite3ResetAllSchemasOfConnection(sqlite3 *)
Definition sqlite3.c:123610
static int sqlite3BtreeSetVersion(Btree *pBt, int iVersion)
Definition sqlite3.c:82977
static int sqlite3BtreeBeginTrans(Btree *, int, int *)
Definition sqlite3.c:75318
Definition sqlite3.c:58670
Definition sqlite3.c:17563
Definition sqlite3.c:1058

◆ sqlite3_bind_blob()

int sqlite3_bind_blob ( sqlite3_stmt * pStmt,
int i,
const void * zData,
int n,
void(* xDel )(void *) )

◆ sqlite3_bind_blob64()

int sqlite3_bind_blob64 ( sqlite3_stmt * pStmt,
int i,
const void * zData,
sqlite3_uint64 nData,
void(* xDel )(void *) )
93180 {
93181#ifdef SQLITE_ENABLE_API_ARMOR
93182 if( nData<0 ) return SQLITE_MISUSE_BKPT;
93183#endif
93184 return bindText(pStmt, i, zData, nData, xDel, 0);
93185}
93187 sqlite3_stmt *pStmt,
93188 int i,
93189 const void *zData,
#define SQLITE_API
Definition sqlite3.c:394
static int bindText(sqlite3_stmt *pStmt, int i, const void *zData, i64 nData, void(*xDel)(void *), u8 encoding)
Definition sqlite3.c:93131
struct sqlite3_stmt sqlite3_stmt
Definition sqlite3.c:4541
#define sqlite3_bind_blob64
Definition sqlite3ext.h:601

References bindText(), and SQLITE_MISUSE_BKPT.

Here is the call graph for this function:

◆ sqlite3_bind_double()

int sqlite3_bind_double ( sqlite3_stmt * pStmt,
int i,
double rValue )
93192 {
93193 assert( xDel!=SQLITE_DYNAMIC );
93194 return bindText(pStmt, i, zData, nData, xDel, 0);
93195}
93196SQLITE_API int sqlite3_bind_double(sqlite3_stmt *pStmt, int i, double rValue){
93197 int rc;
93198 Vdbe *p = (Vdbe *)pStmt;
93199 rc = vdbeUnbind(p, (u32)(i-1));
93200 if( rc==SQLITE_OK ){
#define SQLITE_DYNAMIC
Definition sqlite3.c:15685
static int vdbeUnbind(Vdbe *p, unsigned int i)
Definition sqlite3.c:93089
Definition sqlite3.c:24033
#define sqlite3_bind_double
Definition sqlite3ext.h:400

References bindText(), and SQLITE_DYNAMIC.

Here is the call graph for this function:

◆ sqlite3_bind_int()

int sqlite3_bind_int ( sqlite3_stmt * p,
int i,
int iValue )

◆ sqlite3_bind_int64()

int sqlite3_bind_int64 ( sqlite3_stmt * pStmt,
int i,
sqlite3_int64 iValue )
93207 {
93208 return sqlite3_bind_int64(p, i, (i64)iValue);
93209}
93210SQLITE_API int sqlite3_bind_int64(sqlite3_stmt *pStmt, int i, sqlite_int64 iValue){
93211 int rc;
93212 Vdbe *p = (Vdbe *)pStmt;
93213 rc = vdbeUnbind(p, (u32)(i-1));
93214 if( rc==SQLITE_OK ){
long long int sqlite_int64
Definition sqlite3.c:620
#define sqlite3_bind_int64
Definition sqlite3ext.h:402

◆ sqlite3_bind_null()

int sqlite3_bind_null ( sqlite3_stmt * pStmt,
int i )
93221 {
93222 int rc;
93223 Vdbe *p = (Vdbe*)pStmt;
93224 rc = vdbeUnbind(p, (u32)(i-1));

◆ sqlite3_bind_parameter_count()

int sqlite3_bind_parameter_count ( sqlite3_stmt * pStmt)

◆ sqlite3_bind_parameter_index()

int sqlite3_bind_parameter_index ( sqlite3_stmt * pStmt,
const char * zName )
93378 {

References Vdbe::pVList, sqlite3VListNameToNum(), and SQLITE_PRIVATE.

Here is the call graph for this function:

◆ sqlite3_bind_parameter_name()

const char * sqlite3_bind_parameter_name ( sqlite3_stmt * pStmt,
int i )

References Vdbe::pVList, sqlite3VListNumToName(), and SQLITE_API.

Here is the call graph for this function:

◆ sqlite3_bind_pointer()

int sqlite3_bind_pointer ( sqlite3_stmt * pStmt,
int i,
void * pPtr,
const char * zPTtype,
void(* xDestructor )(void *) )
93225 {
93226 assert( p!=0 && p->aVar!=0 && i>0 && i<=p->nVar ); /* tag-20240917-01 */
93227 sqlite3_mutex_leave(p->db->mutex);
93228 }
93229 return rc;
93230}
93232 sqlite3_stmt *pStmt,
93233 int i,
93234 void *pPtr,
93235 const char *zPTtype,
93236 void (*xDestructor)(void*)
93237){
93238 int rc;
93239 Vdbe *p = (Vdbe*)pStmt;
93240 rc = vdbeUnbind(p, (u32)(i-1));
93241 if( rc==SQLITE_OK ){
93242 assert( p!=0 && p->aVar!=0 && i>0 && i<=p->nVar ); /* tag-20240917-01 */
93243 sqlite3VdbeMemSetPointer(&p->aVar[i-1], pPtr, zPTtype, xDestructor);
static void sqlite3VdbeMemSetPointer(Mem *, void *, const char *, void(*)(void *))
Definition sqlite3.c:84789
Mem * aVar
Definition sqlite3.c:24052
#define sqlite3_mutex_leave
Definition sqlite3ext.h:539
#define sqlite3_bind_pointer
Definition sqlite3ext.h:634

References Vdbe::aVar, Vdbe::db, sqlite3::mutex, sqlite3_mutex_leave, and SQLITE_OK.

◆ sqlite3_bind_text()

int sqlite3_bind_text ( sqlite3_stmt * pStmt,
int i,
const char * zData,
int nData,
void(* xDel )(void *) )
93245 {
93246 xDestructor(pPtr);
93247 }
93248 return rc;
93249}
93251 sqlite3_stmt *pStmt,
93252 int i,
#define sqlite3_bind_text
Definition sqlite3ext.h:407

◆ sqlite3_bind_text16()

int sqlite3_bind_text16 ( sqlite3_stmt * pStmt,
int i,
const void * zData,
int n,
void(* xDel )(void *) )

References SQLITE_UTF16, and SQLITE_UTF16NATIVE.

◆ sqlite3_bind_text64()

int sqlite3_bind_text64 ( sqlite3_stmt * pStmt,
int i,
const char * zData,
sqlite3_uint64 nData,
void(* xDel )(void *),
unsigned char encoding )
93256 {
93257 return bindText(pStmt, i, zData, nData, xDel, SQLITE_UTF8);
93258}
93260 sqlite3_stmt *pStmt,
93261 int i,
93262 const char *zData,
93263 sqlite3_uint64 nData,
93264 void (*xDel)(void*),
93265 unsigned char enc
93266){
93267 assert( xDel!=SQLITE_DYNAMIC );
sqlite_uint64 sqlite3_uint64
Definition sqlite3.c:624
#define SQLITE_UTF8
Definition sqlite3.c:6038
#define sqlite3_bind_text64
Definition sqlite3ext.h:602

References bindText(), and SQLITE_UTF8.

Here is the call graph for this function:

◆ sqlite3_bind_value()

int sqlite3_bind_value ( sqlite3_stmt * pStmt,
int i,
const sqlite3_value * pValue )
93281 {
93282 return bindText(pStmt, i, zData, n & ~(u64)1, xDel, SQLITE_UTF16NATIVE);
93283}
93284#endif /* SQLITE_OMIT_UTF16 */
93285SQLITE_API int sqlite3_bind_value(sqlite3_stmt *pStmt, int i, const sqlite3_value *pValue){
93286 int rc;
93287 switch( sqlite3_value_type((sqlite3_value*)pValue) ){
93288 case SQLITE_INTEGER: {
93289 rc = sqlite3_bind_int64(pStmt, i, pValue->u.i);
93290 break;
93291 }
93292 case SQLITE_FLOAT: {
93293 assert( pValue->flags & (MEM_Real|MEM_IntReal) );
93294 rc = sqlite3_bind_double(pStmt, i,
93295 (pValue->flags & MEM_Real) ? pValue->u.r : (double)pValue->u.i
93296 );
93297 break;
93298 }
93299 case SQLITE_BLOB: {
93300 if( pValue->flags & MEM_Zero ){
93301 rc = sqlite3_bind_zeroblob(pStmt, i, pValue->u.nZero);
93302 }else{
93303 rc = sqlite3_bind_blob(pStmt, i, pValue->z, pValue->n,SQLITE_TRANSIENT);
93304 }
93305 break;
93306 }
93307 case SQLITE_TEXT: {
93308 rc = bindText(pStmt,i, pValue->z, pValue->n, SQLITE_TRANSIENT,
93309 pValue->enc);
93310 break;
93311 }
93312 default: {
#define SQLITE_FLOAT
Definition sqlite3.c:5563
#define SQLITE_UTF16NATIVE
Definition sqlite3.c:15430
double r
Definition sqlite3.c:23809
#define SQLITE_BLOB
Definition sqlite3.c:5564
#define MEM_Real
Definition sqlite3.c:23888
u8 enc
Definition sqlite3.c:23818
union sqlite3_value::MemValue u
#define SQLITE_INTEGER
Definition sqlite3.c:5562
i64 i
Definition sqlite3.c:23810
u16 flags
Definition sqlite3.c:23817
#define MEM_Zero
Definition sqlite3.c:23899
int nZero
Definition sqlite3.c:23811
#define SQLITE_TEXT
Definition sqlite3.c:5569
int n
Definition sqlite3.c:23816
#define SQLITE_TRANSIENT
Definition sqlite3.c:6587
#define MEM_IntReal
Definition sqlite3.c:23890
char * z
Definition sqlite3.c:23815
Definition sqlite3.c:23807
#define sqlite3_bind_blob
Definition sqlite3ext.h:399
#define sqlite3_bind_value
Definition sqlite3ext.h:409
#define sqlite3_bind_zeroblob
Definition sqlite3ext.h:526
#define sqlite3_value_type
Definition sqlite3ext.h:519

References bindText(), and SQLITE_UTF16NATIVE.

Here is the call graph for this function:

◆ sqlite3_bind_zeroblob()

int sqlite3_bind_zeroblob ( sqlite3_stmt * pStmt,
int i,
int n )
93319 {
93320 int rc;
93321 Vdbe *p = (Vdbe *)pStmt;
93322 rc = vdbeUnbind(p, (u32)(i-1));
93323 if( rc==SQLITE_OK ){
93324 assert( p!=0 && p->aVar!=0 && i>0 && i<=p->nVar ); /* tag-20240917-01 */
93325#ifndef SQLITE_OMIT_INCRBLOB
93326 sqlite3VdbeMemSetZeroBlob(&p->aVar[i-1], n);
93327#else
static void sqlite3VdbeMemSetZeroBlob(Mem *, int)
Definition sqlite3.c:84726

◆ sqlite3_bind_zeroblob64()

int sqlite3_bind_zeroblob64 ( sqlite3_stmt * pStmt,
int i,
sqlite3_uint64 n )
93334 {
93335 int rc;
93336 Vdbe *p = (Vdbe *)pStmt;
93337#ifdef SQLITE_ENABLE_API_ARMOR
93338 if( p==0 ) return SQLITE_MISUSE_BKPT;
93339#endif
93341 if( n>(u64)p->db->aLimit[SQLITE_LIMIT_LENGTH] ){
93342 rc = SQLITE_TOOBIG;
93343 }else{
93344 assert( (n & 0x7FFFFFFF)==n );
sqlite3 * db
Definition sqlite3.c:24034
#define SQLITE_TOOBIG
Definition sqlite3.c:784
int aLimit[(11+1)]
Definition sqlite3.c:18069
#define SQLITE_LIMIT_LENGTH
Definition sqlite3.c:4641

◆ sqlite3_blob_bytes()

int sqlite3_blob_bytes ( sqlite3_blob * pBlob)

◆ sqlite3_blob_close()

int sqlite3_blob_close ( sqlite3_blob * pBlob)
103936 {
103937 Incrblob *p = (Incrblob *)pBlob;
103938 int rc;
103939 sqlite3 *db;
103940
103941 if( p ){
103942 sqlite3_stmt *pStmt = p->pStmt;
103943 db = p->db;
103945 sqlite3DbFree(db, p);
sqlite3_stmt * pStmt
Definition sqlite3.c:103600
sqlite3 * db
Definition sqlite3.c:103601
static void sqlite3DbFree(sqlite3 *, void *)
Definition sqlite3.c:31239
Definition sqlite3.c:103595

◆ sqlite3_blob_open()

int sqlite3_blob_open ( sqlite3 * db,
const char * zDb,
const char * zTable,
const char * zColumn,
sqlite3_int64 iRow,
int flags,
sqlite3_blob ** ppBlob )
103705 {
103706 int nAttempt = 0;
103707 int iCol; /* Index of zColumn in row-record */
103708 int rc = SQLITE_OK;
103709 char *zErr = 0;
103710 Table *pTab;
103711 Incrblob *pBlob = 0;
103712 int iDb;
103713 Parse sParse;
103714
103715#ifdef SQLITE_ENABLE_API_ARMOR
103716 if( ppBlob==0 ){
103717 return SQLITE_MISUSE_BKPT;
103718 }
103719#endif
103720 *ppBlob = 0;
103721#ifdef SQLITE_ENABLE_API_ARMOR
103722 if( !sqlite3SafetyCheckOk(db) || zTable==0 || zColumn==0 ){
103723 return SQLITE_MISUSE_BKPT;
103724 }
103725#endif
103726 wrFlag = !!wrFlag; /* wrFlag = (wrFlag ? 1 : 0); */
103727
103729
103730 pBlob = (Incrblob *)sqlite3DbMallocZero(db, sizeof(Incrblob));
103731 while(1){
103732 sqlite3ParseObjectInit(&sParse,db);
103733 if( !pBlob ) goto blob_open_out;
103734 sqlite3DbFree(db, zErr);
103735 zErr = 0;
103736
103738 pTab = sqlite3LocateTable(&sParse, 0, zTable, zDb);
103739 if( pTab && IsVirtual(pTab) ){
103740 pTab = 0;
103741 sqlite3ErrorMsg(&sParse, "cannot open virtual table: %s", zTable);
103742 }
103743 if( pTab && !HasRowid(pTab) ){
103744 pTab = 0;
103745 sqlite3ErrorMsg(&sParse, "cannot open table without rowid: %s", zTable);
103746 }
103747 if( pTab && (pTab->tabFlags&TF_HasGenerated)!=0 ){
103748 pTab = 0;
103749 sqlite3ErrorMsg(&sParse, "cannot open table with generated columns: %s",
103750 zTable);
103751 }
103752#ifndef SQLITE_OMIT_VIEW
103753 if( pTab && IsView(pTab) ){
103754 pTab = 0;
103755 sqlite3ErrorMsg(&sParse, "cannot open view: %s", zTable);
103756 }
103757#endif
103758 if( pTab==0
103759 || ((iDb = sqlite3SchemaToIndex(db, pTab->pSchema))==1 &&
103760 sqlite3OpenTempDatabase(&sParse))
103761 ){
103762 if( sParse.zErrMsg ){
103763 sqlite3DbFree(db, zErr);
103764 zErr = sParse.zErrMsg;
103765 sParse.zErrMsg = 0;
103766 }
103767 rc = SQLITE_ERROR;
103769 goto blob_open_out;
103770 }
103771 pBlob->pTab = pTab;
103772 pBlob->zDb = db->aDb[iDb].zDbSName;
103773
103774 /* Now search pTab for the exact column. */
103775 iCol = sqlite3ColumnIndex(pTab, zColumn);
103776 if( iCol<0 ){
103777 sqlite3DbFree(db, zErr);
103778 zErr = sqlite3MPrintf(db, "no such column: \"%s\"", zColumn);
103779 rc = SQLITE_ERROR;
103781 goto blob_open_out;
103782 }
103783
103784 /* If the value is being opened for writing, check that the
103785 ** column is not indexed, and that it is not part of a foreign key.
103786 */
103787 if( wrFlag ){
103788 const char *zFault = 0;
103789 Index *pIdx;
103790#ifndef SQLITE_OMIT_FOREIGN_KEY
103791 if( db->flags&SQLITE_ForeignKeys ){
103792 /* Check that the column is not part of an FK child key definition. It
103793 ** is not necessary to check if it is part of a parent key, as parent
103794 ** key columns must be indexed. The check below will pick up this
103795 ** case. */
103796 FKey *pFKey;
103797 assert( IsOrdinaryTable(pTab) );
103798 for(pFKey=pTab->u.tab.pFKey; pFKey; pFKey=pFKey->pNextFrom){
103799 int j;
103800 for(j=0; j<pFKey->nCol; j++){
103801 if( pFKey->aCol[j].iFrom==iCol ){
103802 zFault = "foreign key";
103803 }
103804 }
103805 }
103806 }
103807#endif
103808 for(pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext){
103809 int j;
103810 for(j=0; j<pIdx->nKeyCol; j++){
103811 /* FIXME: Be smarter about indexes that use expressions */
103812 if( pIdx->aiColumn[j]==iCol || pIdx->aiColumn[j]==XN_EXPR ){
103813 zFault = "indexed";
103814 }
103815 }
103816 }
103817 if( zFault ){
103818 sqlite3DbFree(db, zErr);
103819 zErr = sqlite3MPrintf(db, "cannot open %s column for writing", zFault);
103820 rc = SQLITE_ERROR;
103822 goto blob_open_out;
103823 }
103824 }
103825
103826 pBlob->pStmt = (sqlite3_stmt *)sqlite3VdbeCreate(&sParse);
103827 assert( pBlob->pStmt || db->mallocFailed );
103828 if( pBlob->pStmt ){
103829
103830 /* This VDBE program seeks a btree cursor to the identified
103831 ** db/table/row entry. The reason for using a vdbe program instead
103832 ** of writing code to use the b-tree layer directly is that the
103833 ** vdbe program will take advantage of the various transaction,
103834 ** locking and error handling infrastructure built into the vdbe.
103835 **
103836 ** After seeking the cursor, the vdbe executes an OP_ResultRow.
103837 ** Code external to the Vdbe then "borrows" the b-tree cursor and
103838 ** uses it to implement the blob_read(), blob_write() and
103839 ** blob_bytes() functions.
103840 **
103841 ** The sqlite3_blob_close() function finalizes the vdbe program,
103842 ** which closes the b-tree cursor and (possibly) commits the
103843 ** transaction.
103844 */
103845 static const int iLn = VDBE_OFFSET_LINENO(2);
103846 static const VdbeOpList openBlob[] = {
103847 {OP_TableLock, 0, 0, 0}, /* 0: Acquire a read or write lock */
103848 {OP_OpenRead, 0, 0, 0}, /* 1: Open a cursor */
103849 /* blobSeekToRow() will initialize r[1] to the desired rowid */
103850 {OP_NotExists, 0, 5, 1}, /* 2: Seek the cursor to rowid=r[1] */
103851 {OP_Column, 0, 0, 1}, /* 3 */
103852 {OP_ResultRow, 1, 0, 0}, /* 4 */
103853 {OP_Halt, 0, 0, 0}, /* 5 */
103854 };
103855 Vdbe *v = (Vdbe *)pBlob->pStmt;
103856 VdbeOp *aOp;
103857
103858 sqlite3VdbeAddOp4Int(v, OP_Transaction, iDb, wrFlag,
103859 pTab->pSchema->schema_cookie,
103860 pTab->pSchema->iGeneration);
103861 sqlite3VdbeChangeP5(v, 1);
103862 assert( sqlite3VdbeCurrentAddr(v)==2 || db->mallocFailed );
103863 aOp = sqlite3VdbeAddOpList(v, ArraySize(openBlob), openBlob, iLn);
103864
103865 /* Make sure a mutex is held on the table to be accessed */
103866 sqlite3VdbeUsesBtree(v, iDb);
103867
103868 if( db->mallocFailed==0 ){
103869 assert( aOp!=0 );
103870 /* Configure the OP_TableLock instruction */
103871#ifdef SQLITE_OMIT_SHARED_CACHE
103872 aOp[0].opcode = OP_Noop;
103873#else
103874 aOp[0].p1 = iDb;
103875 aOp[0].p2 = pTab->tnum;
103876 aOp[0].p3 = wrFlag;
103877 sqlite3VdbeChangeP4(v, 2, pTab->zName, P4_TRANSIENT);
103878 }
103879 if( db->mallocFailed==0 ){
103880#endif
103881
103882 /* Remove either the OP_OpenWrite or OpenRead. Set the P2
103883 ** parameter of the other to pTab->tnum. */
103884 if( wrFlag ) aOp[1].opcode = OP_OpenWrite;
103885 aOp[1].p2 = pTab->tnum;
103886 aOp[1].p3 = iDb;
103887
103888 /* Configure the number of columns. Configure the cursor to
103889 ** think that the table has one more column than it really
103890 ** does. An OP_Column to retrieve this imaginary column will
103891 ** always return an SQL NULL. This is useful because it means
103892 ** we can invoke OP_Column to fill in the vdbe cursors type
103893 ** and offset cache without causing any IO.
103894 */
103895 aOp[1].p4type = P4_INT32;
103896 aOp[1].p4.i = pTab->nCol+1;
103897 aOp[3].p2 = pTab->nCol;
103898
103899 sParse.nVar = 0;
103900 sParse.nMem = 1;
103901 sParse.nTab = 1;
103902 sqlite3VdbeMakeReady(v, &sParse);
103903 }
103904 }
103905
103906 pBlob->iCol = iCol;
103907 pBlob->db = db;
103909 if( db->mallocFailed ){
103910 goto blob_open_out;
103911 }
103912 rc = blobSeekToRow(pBlob, iRow, &zErr);
103913 if( (++nAttempt)>=SQLITE_MAX_SCHEMA_RETRY || rc!=SQLITE_SCHEMA ) break;
103914 sqlite3ParseObjectReset(&sParse);
103915 }
103916
103917blob_open_out:
103918 if( rc==SQLITE_OK && db->mallocFailed==0 ){
103919 *ppBlob = (sqlite3_blob *)pBlob;
103920 }else{
103921 if( pBlob && pBlob->pStmt ) sqlite3VdbeFinalize((Vdbe *)pBlob->pStmt);
103922 sqlite3DbFree(db, pBlob);
103923 }
103924 sqlite3ErrorWithMsg(db, rc, (zErr ? "%s" : (char*)0), zErr);
char * zErrMsg
Definition sqlite3.c:20246
Db * aDb
Definition sqlite3.c:18039
#define OP_OpenRead
Definition sqlite3.c:17151
Index * pNext
Definition sqlite3.c:19148
signed char p4type
Definition sqlite3.c:16919
#define SQLITE_SCHEMA
Definition sqlite3.c:783
int p1
Definition sqlite3.c:16921
i16 nCol
Definition sqlite3.c:18803
static void sqlite3VdbeMakeReady(Vdbe *, Parse *)
Definition sqlite3.c:88531
Schema * pSchema
Definition sqlite3.c:18829
Pgno tnum
Definition sqlite3.c:18799
char * zName
Definition sqlite3.c:18793
#define TF_HasGenerated
Definition sqlite3.c:18855
int iFrom
Definition sqlite3.c:18962
static void * sqlite3DbMallocZero(sqlite3 *, u64)
Definition sqlite3.c:31337
char * zDbSName
Definition sqlite3.c:17847
union Table::@225172020311207303116064315042333203356204002241 u
#define SQLITE_ForeignKeys
Definition sqlite3.c:18214
#define OP_Noop
Definition sqlite3.c:17236
#define OP_Column
Definition sqlite3.c:17143
#define IsVirtual(X)
Definition sqlite3.c:18883
static char * sqlite3MPrintf(sqlite3 *, const char *,...)
Definition sqlite3.c:32896
struct sqlite3_blob sqlite3_blob
Definition sqlite3.c:8235
int schema_cookie
Definition sqlite3.c:17872
#define ArraySize(X)
Definition sqlite3.c:15670
static int sqlite3ColumnIndex(Table *pTab, const char *zCol)
Definition sqlite3.c:145128
#define OP_ResultRow
Definition sqlite3.c:17133
#define OP_Transaction
Definition sqlite3.c:17051
static Vdbe * sqlite3VdbeCreate(Parse *)
Definition sqlite3.c:85913
#define OP_NotExists
Definition sqlite3.c:17080
struct FKey::sColMap aCol[1]
u16 iCol
Definition sqlite3.c:103598
static int sqlite3VdbeCurrentAddr(Vdbe *)
Definition sqlite3.c:86953
#define SQLITE_MAX_SCHEMA_RETRY
Definition sqlite3.c:23601
Index * pIndex
Definition sqlite3.c:18795
#define P4_TRANSIENT
Definition sqlite3.c:16988
int nCol
Definition sqlite3.c:18956
i16 * aiColumn
Definition sqlite3.c:19144
#define XN_EXPR
Definition sqlite3.c:19202
static int sqlite3OpenTempDatabase(Parse *)
Definition sqlite3.c:128270
int i
Definition sqlite3.c:16925
int nTab
Definition sqlite3.c:20278
static void sqlite3VdbeUsesBtree(Vdbe *, int)
Definition sqlite3.c:87919
#define OP_TableLock
Definition sqlite3.c:17218
u8 mallocFailed
Definition sqlite3.c:18055
static void sqlite3ParseObjectInit(Parse *, sqlite3 *)
Definition sqlite3.c:144375
int iGeneration
Definition sqlite3.c:17873
Table * pTab
Definition sqlite3.c:103603
char * zDb
Definition sqlite3.c:103602
static void sqlite3BtreeLeaveAll(sqlite3 *)
Definition sqlite3.c:71446
#define P4_INT32
Definition sqlite3.c:16991
#define OP_OpenWrite
Definition sqlite3.c:17162
static int sqlite3VdbeFinalize(Vdbe *)
Definition sqlite3.c:89554
int nMem
Definition sqlite3.c:20279
static int sqlite3SchemaToIndex(sqlite3 *db, Schema *)
Definition sqlite3.c:144256
#define VDBE_OFFSET_LINENO(x)
Definition sqlite3.c:17512
int p2
Definition sqlite3.c:16922
static void sqlite3VdbeChangeP4(Vdbe *, int addr, const char *zP4, int N)
Definition sqlite3.c:87454
FKey * pNextFrom
Definition sqlite3.c:18952
static int sqlite3VdbeAddOp4Int(Vdbe *, int, int, int, int, int)
Definition sqlite3.c:86205
u16 nKeyCol
Definition sqlite3.c:19156
static void sqlite3VdbeChangeP5(Vdbe *, u16 P5)
Definition sqlite3.c:87185
u32 tabFlags
Definition sqlite3.c:18801
int p3
Definition sqlite3.c:16923
static void sqlite3BtreeEnterAll(sqlite3 *)
Definition sqlite3.c:71434
#define IsOrdinaryTable(X)
Definition sqlite3.c:18875
u64 flags
Definition sqlite3.c:18042
#define IsView(X)
Definition sqlite3.c:18874
union VdbeOp::p4union p4
static Table * sqlite3LocateTable(Parse *, u32 flags, const char *, const char *)
Definition sqlite3.c:123379
static void sqlite3ErrorMsg(Parse *, const char *,...)
Definition sqlite3.c:35746
#define HasRowid(X)
Definition sqlite3.c:18910
u8 opcode
Definition sqlite3.c:16918
ynVar nVar
Definition sqlite3.c:20338
#define OP_Halt
Definition sqlite3.c:17119
static void sqlite3ParseObjectReset(Parse *)
Definition sqlite3.c:144286
static VdbeOp * sqlite3VdbeAddOpList(Vdbe *, int nOp, VdbeOpList const *aOp, int iLineno)
Definition sqlite3.c:87030
static int blobSeekToRow(Incrblob *p, sqlite3_int64 iRow, char **pzErr)
Definition sqlite3.c:103624
Definition sqlite3.c:18950
Definition sqlite3.c:19142
Definition sqlite3.c:20244
Definition sqlite3.c:18792
Definition sqlite3.c:16917
Definition sqlite3.c:16976

◆ sqlite3_blob_read()

int sqlite3_blob_read ( sqlite3_blob * pBlob,
void * Z,
int N,
int iOffset )

◆ sqlite3_blob_reopen()

int sqlite3_blob_reopen ( sqlite3_blob * pBlob,
sqlite3_int64 iRow )
104064 {
104065 int rc;
104066 Incrblob *p = (Incrblob *)pBlob;
104067 sqlite3 *db;
104068
104069 if( p==0 ) return SQLITE_MISUSE_BKPT;
104070 db = p->db;
104072
104073 if( p->pStmt==0 ){
104074 /* If there is no statement handle, then the blob-handle has
104075 ** already been invalidated. Return SQLITE_ABORT in this case.
104076 */
104077 rc = SQLITE_ABORT;
104078 }else{
104079 char *zErr;
104080 ((Vdbe*)p->pStmt)->rc = SQLITE_OK;
104081 rc = blobSeekToRow(p, iRow, &zErr);
104082 if( rc!=SQLITE_OK ){
104083 sqlite3ErrorWithMsg(db, rc, (zErr ? "%s" : (char*)0), zErr);
104084 sqlite3DbFree(db, zErr);
104085 }
104086 assert( rc!=SQLITE_SCHEMA );
104087 }
#define SQLITE_ABORT
Definition sqlite3.c:770

References blobSeekToRow(), Incrblob::db, sqlite3::mutex, Incrblob::pStmt, sqlite3_mutex_enter, sqlite3_mutex_leave, sqlite3ApiExit(), sqlite3DbFree(), sqlite3ErrorWithMsg(), SQLITE_ABORT, SQLITE_API, SQLITE_MISUSE_BKPT, SQLITE_OK, and SQLITE_SCHEMA.

Here is the call graph for this function:

◆ sqlite3_blob_write()

int sqlite3_blob_write ( sqlite3_blob * pBlob,
const void * z,
int n,
int iOffset )

References sqlite3BtreePayloadChecked().

Here is the call graph for this function:

◆ sqlite3_busy_handler()

int sqlite3_busy_handler ( sqlite3 * db,
int(* xBusy )(void *, int),
void * pArg )
184378 {
184379#ifdef SQLITE_ENABLE_API_ARMOR
184380 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
184381#endif
184383 db->busyHandler.xBusyHandler = xBusy;
184384 db->busyHandler.pBusyArg = pArg;
184385 db->busyHandler.nBusy = 0;
int(* xBusyHandler)(void *, int)
Definition sqlite3.c:15627
BusyHandler busyHandler
Definition sqlite3.c:18144
int nBusy
Definition sqlite3.c:15629
void * pBusyArg
Definition sqlite3.c:15628

◆ sqlite3_busy_timeout()

int sqlite3_busy_timeout ( sqlite3 * db,
int ms )
184431 {
184432#ifdef SQLITE_ENABLE_API_ARMOR
184433 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
184434#endif
184435 if( ms>0 ){
184436 sqlite3_busy_handler(db, (int(*)(void*,int))sqliteDefaultBusyCallback,
184437 (void*)db);
184438 db->busyTimeout = ms;
184439#ifdef SQLITE_ENABLE_SETLK_TIMEOUT
int busyTimeout
Definition sqlite3.c:18148
static int sqliteDefaultBusyCallback(void *ptr, int count)
Definition sqlite3.c:184299
#define sqlite3_busy_handler
Definition sqlite3ext.h:410

References sqlite3_busy_handler, sqlite3SafetyCheckOk(), SQLITE_API, SQLITE_MISUSE_BKPT, and sqliteDefaultBusyCallback().

Here is the call graph for this function:

◆ sqlite3_cancel_auto_extension()

int sqlite3_cancel_auto_extension ( void(* xEntryPoint )(void))
139891 {
139892#if SQLITE_THREADSAFE
139894#endif
139895 int i;
139896 int n = 0;
139898#ifdef SQLITE_ENABLE_API_ARMOR
139899 if( xInit==0 ) return 0;
139900#endif
139901 sqlite3_mutex_enter(mutex);
139902 for(i=(int)wsdAutoext.nExt-1; i>=0; i--){
139903 if( wsdAutoext.aExt[i]==xInit ){
139904 wsdAutoext.nExt--;
139905 wsdAutoext.aExt[i] = wsdAutoext.aExt[wsdAutoext.nExt];
139906 n++;

References sqlite3_mutex_enter, sqlite3_mutex_leave, sqlite3MutexAlloc(), SQLITE_API, SQLITE_MUTEX_STATIC_MAIN, wsdAutoext, and wsdAutoextInit.

Here is the call graph for this function:

◆ sqlite3_changes()

int sqlite3_changes ( sqlite3 * db)
183735 {
183736 (void)SQLITE_MISUSE_BKPT;
183737 return 0;

References SQLITE_MISUSE_BKPT.

◆ sqlite3_changes64()

sqlite3_int64 sqlite3_changes64 ( sqlite3 * db)
183733 {
183734#ifdef SQLITE_ENABLE_API_ARMOR

◆ sqlite3_clear_bindings()

int sqlite3_clear_bindings ( sqlite3_stmt * pStmt)
91608 {
91609 int i;
91610 int rc = SQLITE_OK;
91611 Vdbe *p = (Vdbe*)pStmt;
91612#if SQLITE_THREADSAFE
91613 sqlite3_mutex *mutex;
91614#endif
91615#ifdef SQLITE_ENABLE_API_ARMOR
91616 if( pStmt==0 ){
91617 return SQLITE_MISUSE_BKPT;
91618 }
91619#endif
91620#if SQLITE_THREADSAFE
91621 mutex = p->db->mutex;
91622#endif
91623 sqlite3_mutex_enter(mutex);
91624 for(i=0; i<p->nVar; i++){
91626 p->aVar[i].flags = MEM_Null;
91627 }
91628 assert( (p->prepFlags & SQLITE_PREPARE_SAVESQL)!=0 || p->expmask==0 );
#define SQLITE_PREPARE_SAVESQL
Definition sqlite3.c:17292
ynVar nVar
Definition sqlite3.c:24037
u32 expmask
Definition sqlite3.c:24097
#define MEM_Null
Definition sqlite3.c:23885
u8 prepFlags
Definition sqlite3.c:24076
static void sqlite3VdbeMemRelease(Mem *p)
Definition sqlite3.c:84426

◆ sqlite3_close()

int sqlite3_close ( sqlite3 * db)

◆ sqlite3_close_v2()

int sqlite3_close_v2 ( sqlite3 * db)

References sqlite3Close(), and SQLITE_API.

Here is the call graph for this function:

◆ sqlite3_collation_needed()

int sqlite3_collation_needed ( sqlite3 * db,
void * pCollNeededArg,
void(* xCollNeeded )(void *, sqlite3 *, int eTextRep, const char *) )
186367 {
186368#ifdef SQLITE_ENABLE_API_ARMOR
186369 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
186370#endif

◆ sqlite3_collation_needed16()

int sqlite3_collation_needed16 ( sqlite3 * db,
void * pCollNeededArg,
void(* xCollNeeded16 )(void *, sqlite3 *, int eTextRep, const void *) )
186388 {
186389#ifdef SQLITE_ENABLE_API_ARMOR
186390 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
186391#endif

◆ sqlite3_column_blob()

const void * sqlite3_column_blob ( sqlite3_stmt * pStmt,
int iCol )
92822 {
92823 const void *val;
92824 val = sqlite3_value_blob( columnMem(pStmt,i) );
92825 /* Even though there is no encoding conversion, value_blob() might
static Mem * columnMem(sqlite3_stmt *pStmt, int i)
Definition sqlite3.c:92761
#define sqlite3_value_blob
Definition sqlite3ext.h:508

◆ sqlite3_column_bytes()

int sqlite3_column_bytes ( sqlite3_stmt * pStmt,
int iCol )

◆ sqlite3_column_bytes16()

int sqlite3_column_bytes16 ( sqlite3_stmt * pStmt,
int iCol )
92832 {
92833 int val = sqlite3_value_bytes( columnMem(pStmt,i) );
92834 columnMallocFailure(pStmt);
92835 return val;
static void columnMallocFailure(sqlite3_stmt *pStmt)
Definition sqlite3.c:92796
#define sqlite3_value_bytes
Definition sqlite3ext.h:509

◆ sqlite3_column_count()

int sqlite3_column_count ( sqlite3_stmt * pStmt)

◆ sqlite3_column_database_name()

const char * sqlite3_column_database_name ( sqlite3_stmt * ,
int  )

References SQLITE_API.

◆ sqlite3_column_database_name16()

const void * sqlite3_column_database_name16 ( sqlite3_stmt * ,
int  )

References SQLITE_API.

◆ sqlite3_column_decltype()

const char * sqlite3_column_decltype ( sqlite3_stmt * pStmt,
int N )

◆ sqlite3_column_decltype16()

const void * sqlite3_column_decltype16 ( sqlite3_stmt * pStmt,
int N )
93014 {

References COLNAME_DECLTYPE, columnName(), and SQLITE_API.

Here is the call graph for this function:

◆ sqlite3_column_double()

double sqlite3_column_double ( sqlite3_stmt * pStmt,
int iCol )
92837 {
92838 int val = sqlite3_value_bytes16( columnMem(pStmt,i) );
92839 columnMallocFailure(pStmt);
92840 return val;
#define sqlite3_value_bytes16
Definition sqlite3ext.h:510

◆ sqlite3_column_int()

int sqlite3_column_int ( sqlite3_stmt * pStmt,
int iCol )
92842 {
92843 double val = sqlite3_value_double( columnMem(pStmt,i) );
92844 columnMallocFailure(pStmt);
92845 return val;
#define sqlite3_value_double
Definition sqlite3ext.h:511

◆ sqlite3_column_int64()

sqlite3_int64 sqlite3_column_int64 ( sqlite3_stmt * pStmt,
int iCol )
92847 {
92848 int val = sqlite3_value_int( columnMem(pStmt,i) );
92849 columnMallocFailure(pStmt);
92850 return val;
#define sqlite3_value_int
Definition sqlite3ext.h:512

◆ sqlite3_column_name()

const char * sqlite3_column_name ( sqlite3_stmt * pStmt,
int N )

◆ sqlite3_column_name16()

const void * sqlite3_column_name16 ( sqlite3_stmt * pStmt,
int N )
92991 {

References COLNAME_NAME, columnName(), and SQLITE_API.

Here is the call graph for this function:

◆ sqlite3_column_origin_name()

const char * sqlite3_column_origin_name ( sqlite3_stmt * ,
int  )

References SQLITE_API.

◆ sqlite3_column_origin_name16()

const void * sqlite3_column_origin_name16 ( sqlite3_stmt * ,
int  )

References SQLITE_API.

◆ sqlite3_column_table_name()

const char * sqlite3_column_table_name ( sqlite3_stmt * ,
int  )

References SQLITE_API.

◆ sqlite3_column_table_name16()

const void * sqlite3_column_table_name16 ( sqlite3_stmt * ,
int  )

References SQLITE_API.

◆ sqlite3_column_text()

const unsigned char * sqlite3_column_text ( sqlite3_stmt * pStmt,
int iCol )
92852 {
92853 sqlite_int64 val = sqlite3_value_int64( columnMem(pStmt,i) );
92854 columnMallocFailure(pStmt);
92855 return val;
#define sqlite3_value_int64
Definition sqlite3ext.h:513

◆ sqlite3_column_text16()

const void * sqlite3_column_text16 ( sqlite3_stmt * pStmt,
int iCol )

References MEM_Ephem.

◆ sqlite3_column_type()

int sqlite3_column_type ( sqlite3_stmt * pStmt,
int iCol )
92872 {
92873 const void *val = sqlite3_value_text16( columnMem(pStmt,i) );
92874 columnMallocFailure(pStmt);
92875 return val;
92876}
#define sqlite3_value_text16
Definition sqlite3ext.h:516

References columnMallocFailure(), columnMem(), sqlite3_value_text16, and SQLITE_API.

Here is the call graph for this function:

◆ sqlite3_column_value()

sqlite3_value * sqlite3_column_value ( sqlite3_stmt * pStmt,
int iCol )
92857 {
92858 const unsigned char *val = sqlite3_value_text( columnMem(pStmt,i) );
92859 columnMallocFailure(pStmt);
92860 return val;
92861}
92863 Mem *pOut = columnMem(pStmt, i);
92864 if( pOut->flags&MEM_Static ){
#define MEM_Static
Definition sqlite3.c:23907
struct sqlite3_value Mem
Definition sqlite3.c:16895
#define sqlite3_column_value
Definition sqlite3ext.h:436
#define sqlite3_value_text
Definition sqlite3ext.h:515

◆ sqlite3_commit_hook()

void * sqlite3_commit_hook ( sqlite3 * db,
int(* xCallback )(void *),
void * pArg )
184929 {
184930 void *pOld;
184931
184932#ifdef SQLITE_ENABLE_API_ARMOR
184933 if( !sqlite3SafetyCheckOk(db) ){
184934 (void)SQLITE_MISUSE_BKPT;
184935 return 0;
184936 }
184937#endif

References sqlite3::mutex, sqlite3::pCommitArg, sqlite3_mutex_enter, sqlite3_mutex_leave, sqlite3SafetyCheckOk(), SQLITE_API, SQLITE_MISUSE_BKPT, and sqlite3::xCommitCallback.

Here is the call graph for this function:

◆ sqlite3_compileoption_get()

const char * sqlite3_compileoption_get ( int N)
187721 {
187722 int nOpt;

◆ sqlite3_compileoption_used()

int sqlite3_compileoption_used ( const char * zOptName)
187688 {
187689 int i, n;
187690 int nOpt;
187691 const char **azCompileOpt;
187692
187693#ifdef SQLITE_ENABLE_API_ARMOR
187694 if( zOptName==0 ){
187695 (void)SQLITE_MISUSE_BKPT;
187696 return 0;
187697 }
187698#endif
187699
187700 azCompileOpt = sqlite3CompileOptions(&nOpt);
187701
187702 if( sqlite3StrNICmp(zOptName, "SQLITE_", 7)==0 ) zOptName += 7;
187703 n = sqlite3Strlen30(zOptName);
187704
187705 /* Since nOpt is normally in single digits, a linear search is
187706 ** adequate. No need for a binary search. */
187707 for(i=0; i<nOpt; i++){
187708 if( sqlite3StrNICmp(zOptName, azCompileOpt[i], n)==0
static const char ** sqlite3CompileOptions(int *pnOpt)
Definition sqlite3.c:23145
static int sqlite3Strlen30(const char *)
Definition sqlite3.c:35596
#define sqlite3StrNICmp
Definition sqlite3.c:21072

References sqlite3CompileOptions(), sqlite3IsIdChar(), sqlite3Strlen30(), sqlite3StrNICmp, SQLITE_API, and SQLITE_MISUSE_BKPT.

Here is the call graph for this function:

◆ sqlite3_complete()

int sqlite3_complete ( const char * sql)
182314 {
182315 u8 state = 0; /* Current state, using numbers defined in header comment */
182316 u8 token; /* Value of the next token */
182317
182318#ifndef SQLITE_OMIT_TRIGGER
182319 /* A complex statement machine used to detect the end of a CREATE TRIGGER
182320 ** statement. This is the normal case.
182321 */
182322 static const u8 trans[8][8] = {
182323 /* Token: */
182324 /* State: ** SEMI WS OTHER EXPLAIN CREATE TEMP TRIGGER END */
182325 /* 0 INVALID: */ { 1, 0, 2, 3, 4, 2, 2, 2, },
182326 /* 1 START: */ { 1, 1, 2, 3, 4, 2, 2, 2, },
182327 /* 2 NORMAL: */ { 1, 2, 2, 2, 2, 2, 2, 2, },
182328 /* 3 EXPLAIN: */ { 1, 3, 3, 2, 4, 2, 2, 2, },
182329 /* 4 CREATE: */ { 1, 4, 2, 2, 2, 4, 5, 2, },
182330 /* 5 TRIGGER: */ { 6, 5, 5, 5, 5, 5, 5, 5, },
182331 /* 6 SEMI: */ { 6, 6, 5, 5, 5, 5, 5, 7, },
182332 /* 7 END: */ { 1, 7, 5, 5, 5, 5, 5, 5, },
182333 };
182334#else
182335 /* If triggers are not supported by this compile then the statement machine
182336 ** used to detect the end of a statement is much simpler
182337 */
182338 static const u8 trans[3][3] = {
182339 /* Token: */
182340 /* State: ** SEMI WS OTHER */
182341 /* 0 INVALID: */ { 1, 0, 2, },
182342 /* 1 START: */ { 1, 1, 2, },
182343 /* 2 NORMAL: */ { 1, 2, 2, },
182344 };
182345#endif /* SQLITE_OMIT_TRIGGER */
182346
182347#ifdef SQLITE_ENABLE_API_ARMOR
182348 if( zSql==0 ){
182349 (void)SQLITE_MISUSE_BKPT;
182350 return 0;
182351 }
182352#endif
182353
182354 while( *zSql ){
182355 switch( *zSql ){
182356 case ';': { /* A semicolon */
182357 token = tkSEMI;
182358 break;
182359 }
182360 case ' ':
182361 case '\r':
182362 case '\t':
182363 case '\n':
182364 case '\f': { /* White space is ignored */
182365 token = tkWS;
182366 break;
182367 }
182368 case '/': { /* C-style comments */
182369 if( zSql[1]!='*' ){
182370 token = tkOTHER;
182371 break;
182372 }
182373 zSql += 2;
182374 while( zSql[0] && (zSql[0]!='*' || zSql[1]!='/') ){ zSql++; }
182375 if( zSql[0]==0 ) return 0;
182376 zSql++;
182377 token = tkWS;
182378 break;
182379 }
182380 case '-': { /* SQL-style comments from "--" to end of line */
182381 if( zSql[1]!='-' ){
182382 token = tkOTHER;
182383 break;
182384 }
182385 while( *zSql && *zSql!='\n' ){ zSql++; }
182386 if( *zSql==0 ) return state==1;
182387 token = tkWS;
182388 break;
182389 }
182390 case '[': { /* Microsoft-style identifiers in [...] */
182391 zSql++;
182392 while( *zSql && *zSql!=']' ){ zSql++; }
182393 if( *zSql==0 ) return 0;
182394 token = tkOTHER;
182395 break;
182396 }
182397 case '`': /* Grave-accent quoted symbols used by MySQL */
182398 case '"': /* single- and double-quoted strings */
182399 case '\'': {
182400 int c = *zSql;
182401 zSql++;
182402 while( *zSql && *zSql!=c ){ zSql++; }
182403 if( *zSql==0 ) return 0;
182404 token = tkOTHER;
182405 break;
182406 }
182407 default: {
182408#ifdef SQLITE_EBCDIC
182409 unsigned char c;
182410#endif
182411 if( IdChar((u8)*zSql) ){
182412 /* Keywords and unquoted identifiers */
182413 int nId;
182414 for(nId=1; IdChar(zSql[nId]); nId++){}
182415#ifdef SQLITE_OMIT_TRIGGER
182416 token = tkOTHER;
182417#else
182418 switch( *zSql ){
182419 case 'c': case 'C': {
182420 if( nId==6 && sqlite3StrNICmp(zSql, "create", 6)==0 ){
182421 token = tkCREATE;
182422 }else{
182423 token = tkOTHER;
182424 }
182425 break;
182426 }
182427 case 't': case 'T': {
182428 if( nId==7 && sqlite3StrNICmp(zSql, "trigger", 7)==0 ){
182429 token = tkTRIGGER;
182430 }else if( nId==4 && sqlite3StrNICmp(zSql, "temp", 4)==0 ){
182431 token = tkTEMP;
182432 }else if( nId==9 && sqlite3StrNICmp(zSql, "temporary", 9)==0 ){
182433 token = tkTEMP;
182434 }else{
182435 token = tkOTHER;
182436 }
182437 break;
182438 }
182439 case 'e': case 'E': {
182440 if( nId==3 && sqlite3StrNICmp(zSql, "end", 3)==0 ){
182441 token = tkEND;
182442 }else
182443#ifndef SQLITE_OMIT_EXPLAIN
182444 if( nId==7 && sqlite3StrNICmp(zSql, "explain", 7)==0 ){
182445 token = tkEXPLAIN;
182446 }else
182447#endif
182448 {
182449 token = tkOTHER;
182450 }
182451 break;
182452 }
182453 default: {
182454 token = tkOTHER;
182455 break;
182456 }
182457 }
182458#endif /* SQLITE_OMIT_TRIGGER */
182459 zSql += nId-1;
182460 }else{
182461 /* Operators and special symbols */
182462 token = tkOTHER;
182463 }
182464 break;
#define c
#define tkSEMI
Definition sqlite3.c:182243
#define IdChar(C)
Definition sqlite3.c:181470
#define tkEXPLAIN
Definition sqlite3.c:182247
#define tkOTHER
Definition sqlite3.c:182245
#define tkCREATE
Definition sqlite3.c:182248
#define tkWS
Definition sqlite3.c:182244
#define tkTEMP
Definition sqlite3.c:182249
#define tkEND
Definition sqlite3.c:182251
#define tkTRIGGER
Definition sqlite3.c:182250

References c, IdChar, sqlite3StrNICmp, SQLITE_API, SQLITE_MISUSE_BKPT, tkCREATE, tkEND, tkEXPLAIN, tkOTHER, tkSEMI, tkTEMP, tkTRIGGER, and tkWS.

◆ sqlite3_complete16()

int sqlite3_complete16 ( const void * sql)
182479 {
182480 sqlite3_value *pVal;
182481 char const *zSql8;
182482 int rc;
182483
182484#ifndef SQLITE_OMIT_AUTOINIT
182485 rc = sqlite3_initialize();
182486 if( rc ) return rc;
182487#endif
182488 pVal = sqlite3ValueNew(0);
182490 zSql8 = sqlite3ValueText(pVal, SQLITE_UTF8);
182491 if( zSql8 ){
static const void * sqlite3ValueText(sqlite3_value *, u8)
Definition sqlite3.c:85198
#define SQLITE_STATIC
Definition sqlite3.c:6586
static sqlite3_value * sqlite3ValueNew(sqlite3 *)
Definition sqlite3.c:85234
static void sqlite3ValueSetStr(sqlite3_value *, int, const void *, u8, void(*)(void *))
Definition sqlite3.c:85840

References sqlite3_complete, sqlite3_initialize(), sqlite3ValueFree(), sqlite3ValueNew(), sqlite3ValueSetStr(), sqlite3ValueText(), SQLITE_API, SQLITE_NOMEM_BKPT, SQLITE_STATIC, SQLITE_UTF16NATIVE, and SQLITE_UTF8.

Here is the call graph for this function:

◆ sqlite3_config()

int sqlite3_config ( int op,
... )
183026 {
183027 va_list ap;
183028 int rc = SQLITE_OK;
183029
183030 /* sqlite3_config() normally returns SQLITE_MISUSE if it is invoked while
183031 ** the SQLite library is in use. Except, a few selected opcodes
183032 ** are allowed.
183033 */
183034 if( sqlite3GlobalConfig.isInit ){
183035 static const u64 mAnytimeConfigOption = 0
183038 ;
183039 if( op<0 || op>63 || (MASKBIT64(op) & mAnytimeConfigOption)==0 ){
183040 return SQLITE_MISUSE_BKPT;
183041 }
183044 }
183045
183046 va_start(ap, op);
183047 switch( op ){
183048
183049 /* Mutex configuration options are only available in a threadsafe
183050 ** compile.
183051 */
183052#if defined(SQLITE_THREADSAFE) && SQLITE_THREADSAFE>0 /* IMP: R-54466-46756 */
183054 /* EVIDENCE-OF: R-02748-19096 This option sets the threading mode to
183055 ** Single-thread. */
183056 sqlite3GlobalConfig.bCoreMutex = 0; /* Disable mutex on core */
183057 sqlite3GlobalConfig.bFullMutex = 0; /* Disable mutex on connections */
183058 break;
183059 }
183060#endif
183061#if defined(SQLITE_THREADSAFE) && SQLITE_THREADSAFE>0 /* IMP: R-20520-54086 */
183063 /* EVIDENCE-OF: R-14374-42468 This option sets the threading mode to
183064 ** Multi-thread. */
183065 sqlite3GlobalConfig.bCoreMutex = 1; /* Enable mutex on core */
183066 sqlite3GlobalConfig.bFullMutex = 0; /* Disable mutex on connections */
183067 break;
183068 }
183069#endif
183070#if defined(SQLITE_THREADSAFE) && SQLITE_THREADSAFE>0 /* IMP: R-59593-21810 */
183072 /* EVIDENCE-OF: R-41220-51800 This option sets the threading mode to
183073 ** Serialized. */
183074 sqlite3GlobalConfig.bCoreMutex = 1; /* Enable mutex on core */
183075 sqlite3GlobalConfig.bFullMutex = 1; /* Enable mutex on connections */
183076 break;
183077 }
183078#endif
183079#if defined(SQLITE_THREADSAFE) && SQLITE_THREADSAFE>0 /* IMP: R-63666-48755 */
183080 case SQLITE_CONFIG_MUTEX: {
183081 /* Specify an alternative mutex implementation */
183082 sqlite3GlobalConfig.mutex = *va_arg(ap, sqlite3_mutex_methods*);
183083 break;
183084 }
183085#endif
183086#if defined(SQLITE_THREADSAFE) && SQLITE_THREADSAFE>0 /* IMP: R-14450-37597 */
183087 case SQLITE_CONFIG_GETMUTEX: {
183088 /* Retrieve the current mutex implementation */
183089 *va_arg(ap, sqlite3_mutex_methods*) = sqlite3GlobalConfig.mutex;
183090 break;
183091 }
183092#endif
183093
183094 case SQLITE_CONFIG_MALLOC: {
183095 /* EVIDENCE-OF: R-55594-21030 The SQLITE_CONFIG_MALLOC option takes a
183096 ** single argument which is a pointer to an instance of the
183097 ** sqlite3_mem_methods structure. The argument specifies alternative
183098 ** low-level memory allocation routines to be used in place of the memory
183099 ** allocation routines built into SQLite. */
183100 sqlite3GlobalConfig.m = *va_arg(ap, sqlite3_mem_methods*);
183101 break;
183102 }
183104 /* EVIDENCE-OF: R-51213-46414 The SQLITE_CONFIG_GETMALLOC option takes a
183105 ** single argument which is a pointer to an instance of the
183106 ** sqlite3_mem_methods structure. The sqlite3_mem_methods structure is
183107 ** filled with the currently defined memory allocation routines. */
183108 if( sqlite3GlobalConfig.m.xMalloc==0 ) sqlite3MemSetDefault();
183109 *va_arg(ap, sqlite3_mem_methods*) = sqlite3GlobalConfig.m;
183110 break;
183111 }
183113 assert( !sqlite3GlobalConfig.isInit ); /* Cannot change at runtime */
183114 /* EVIDENCE-OF: R-61275-35157 The SQLITE_CONFIG_MEMSTATUS option takes
183115 ** single argument of type int, interpreted as a boolean, which enables
183116 ** or disables the collection of memory allocation statistics. */
183117 sqlite3GlobalConfig.bMemstat = va_arg(ap, int);
183118 break;
183119 }
183121 sqlite3GlobalConfig.bSmallMalloc = va_arg(ap, int);
183122 break;
183123 }
183125 /* EVIDENCE-OF: R-18761-36601 There are three arguments to
183126 ** SQLITE_CONFIG_PAGECACHE: A pointer to 8-byte aligned memory (pMem),
183127 ** the size of each page cache line (sz), and the number of cache lines
183128 ** (N). */
183129 sqlite3GlobalConfig.pPage = va_arg(ap, void*);
183130 sqlite3GlobalConfig.szPage = va_arg(ap, int);
183131 sqlite3GlobalConfig.nPage = va_arg(ap, int);
183132 break;
183133 }
183135 /* EVIDENCE-OF: R-39100-27317 The SQLITE_CONFIG_PCACHE_HDRSZ option takes
183136 ** a single parameter which is a pointer to an integer and writes into
183137 ** that integer the number of extra bytes per page required for each page
183138 ** in SQLITE_CONFIG_PAGECACHE. */
183139 *va_arg(ap, int*) =
183143 break;
183144 }
183145
183146 case SQLITE_CONFIG_PCACHE: {
183147 /* no-op */
183148 break;
183149 }
183151 /* now an error */
183152 rc = SQLITE_ERROR;
183153 break;
183154 }
183155
183156 case SQLITE_CONFIG_PCACHE2: {
183157 /* EVIDENCE-OF: R-63325-48378 The SQLITE_CONFIG_PCACHE2 option takes a
183158 ** single argument which is a pointer to an sqlite3_pcache_methods2
183159 ** object. This object specifies the interface to a custom page cache
183160 ** implementation. */
183161 sqlite3GlobalConfig.pcache2 = *va_arg(ap, sqlite3_pcache_methods2*);
183162 break;
183163 }
183165 /* EVIDENCE-OF: R-22035-46182 The SQLITE_CONFIG_GETPCACHE2 option takes a
183166 ** single argument which is a pointer to an sqlite3_pcache_methods2
183167 ** object. SQLite copies of the current page cache implementation into
183168 ** that object. */
183169 if( sqlite3GlobalConfig.pcache2.xInit==0 ){
183171 }
183172 *va_arg(ap, sqlite3_pcache_methods2*) = sqlite3GlobalConfig.pcache2;
183173 break;
183174 }
183175
183176/* EVIDENCE-OF: R-06626-12911 The SQLITE_CONFIG_HEAP option is only
183177** available if SQLite is compiled with either SQLITE_ENABLE_MEMSYS3 or
183178** SQLITE_ENABLE_MEMSYS5 and returns SQLITE_ERROR if invoked otherwise. */
183179#if defined(SQLITE_ENABLE_MEMSYS3) || defined(SQLITE_ENABLE_MEMSYS5)
183180 case SQLITE_CONFIG_HEAP: {
183181 /* EVIDENCE-OF: R-19854-42126 There are three arguments to
183182 ** SQLITE_CONFIG_HEAP: An 8-byte aligned pointer to the memory, the
183183 ** number of bytes in the memory buffer, and the minimum allocation size.
183184 */
183185 sqlite3GlobalConfig.pHeap = va_arg(ap, void*);
183186 sqlite3GlobalConfig.nHeap = va_arg(ap, int);
183187 sqlite3GlobalConfig.mnReq = va_arg(ap, int);
183188
183189 if( sqlite3GlobalConfig.mnReq<1 ){
183190 sqlite3GlobalConfig.mnReq = 1;
183191 }else if( sqlite3GlobalConfig.mnReq>(1<<12) ){
183192 /* cap min request size at 2^12 */
183193 sqlite3GlobalConfig.mnReq = (1<<12);
183194 }
183195
183196 if( sqlite3GlobalConfig.pHeap==0 ){
183197 /* EVIDENCE-OF: R-49920-60189 If the first pointer (the memory pointer)
183198 ** is NULL, then SQLite reverts to using its default memory allocator
183199 ** (the system malloc() implementation), undoing any prior invocation of
183200 ** SQLITE_CONFIG_MALLOC.
183201 **
183202 ** Setting sqlite3GlobalConfig.m to all zeros will cause malloc to
183203 ** revert to its default implementation when sqlite3_initialize() is run
183204 */
183205 memset(&sqlite3GlobalConfig.m, 0, sizeof(sqlite3GlobalConfig.m));
183206 }else{
183207 /* EVIDENCE-OF: R-61006-08918 If the memory pointer is not NULL then the
183208 ** alternative memory allocator is engaged to handle all of SQLites
183209 ** memory allocation needs. */
183210#ifdef SQLITE_ENABLE_MEMSYS3
183211 sqlite3GlobalConfig.m = *sqlite3MemGetMemsys3();
183212#endif
183213#ifdef SQLITE_ENABLE_MEMSYS5
183214 sqlite3GlobalConfig.m = *sqlite3MemGetMemsys5();
183215#endif
183216 }
183217 break;
183218 }
183219#endif
183220
183222 sqlite3GlobalConfig.szLookaside = va_arg(ap, int);
183223 sqlite3GlobalConfig.nLookaside = va_arg(ap, int);
183224 break;
183225 }
183226
183227 /* Record a pointer to the logger function and its first argument.
183228 ** The default is NULL. Logging is disabled if the function pointer is
183229 ** NULL.
183230 */
183231 case SQLITE_CONFIG_LOG: {
183232 /* MSVC is picky about pulling func ptrs from va lists.
183233 ** http://support.microsoft.com/kb/47961
183234 ** sqlite3GlobalConfig.xLog = va_arg(ap, void(*)(void*,int,const char*));
183235 */
183236 typedef void(*LOGFUNC_t)(void*,int,const char*);
183237 LOGFUNC_t xLog = va_arg(ap, LOGFUNC_t);
183238 void *pLogArg = va_arg(ap, void*);
183239 AtomicStore(&sqlite3GlobalConfig.xLog, xLog);
183240 AtomicStore(&sqlite3GlobalConfig.pLogArg, pLogArg);
183241 break;
183242 }
183243
183244 /* EVIDENCE-OF: R-55548-33817 The compile-time setting for URI filenames
183245 ** can be changed at start-time using the
183246 ** sqlite3_config(SQLITE_CONFIG_URI,1) or
183247 ** sqlite3_config(SQLITE_CONFIG_URI,0) configuration calls.
183248 */
183249 case SQLITE_CONFIG_URI: {
183250 /* EVIDENCE-OF: R-25451-61125 The SQLITE_CONFIG_URI option takes a single
183251 ** argument of type int. If non-zero, then URI handling is globally
183252 ** enabled. If the parameter is zero, then URI handling is globally
183253 ** disabled. */
183254 int bOpenUri = va_arg(ap, int);
183255 AtomicStore(&sqlite3GlobalConfig.bOpenUri, bOpenUri);
183256 break;
183257 }
183258
183260 /* EVIDENCE-OF: R-36592-02772 The SQLITE_CONFIG_COVERING_INDEX_SCAN
183261 ** option takes a single integer argument which is interpreted as a
183262 ** boolean in order to enable or disable the use of covering indices for
183263 ** full table scans in the query optimizer. */
183264 sqlite3GlobalConfig.bUseCis = va_arg(ap, int);
183265 break;
183266 }
183267
183268#ifdef SQLITE_ENABLE_SQLLOG
183269 case SQLITE_CONFIG_SQLLOG: {
183270 typedef void(*SQLLOGFUNC_t)(void*, sqlite3*, const char*, int);
183271 sqlite3GlobalConfig.xSqllog = va_arg(ap, SQLLOGFUNC_t);
183272 sqlite3GlobalConfig.pSqllogArg = va_arg(ap, void *);
183273 break;
183274 }
183275#endif
183276
183278 /* EVIDENCE-OF: R-58063-38258 SQLITE_CONFIG_MMAP_SIZE takes two 64-bit
183279 ** integer (sqlite3_int64) values that are the default mmap size limit
183280 ** (the default setting for PRAGMA mmap_size) and the maximum allowed
183281 ** mmap size limit. */
183282 sqlite3_int64 szMmap = va_arg(ap, sqlite3_int64);
183283 sqlite3_int64 mxMmap = va_arg(ap, sqlite3_int64);
183284 /* EVIDENCE-OF: R-53367-43190 If either argument to this option is
183285 ** negative, then that argument is changed to its compile-time default.
183286 **
183287 ** EVIDENCE-OF: R-34993-45031 The maximum allowed mmap size will be
183288 ** silently truncated if necessary so that it does not exceed the
183289 ** compile-time maximum mmap size set by the SQLITE_MAX_MMAP_SIZE
183290 ** compile-time option.
183291 */
183292 if( mxMmap<0 || mxMmap>SQLITE_MAX_MMAP_SIZE ){
183293 mxMmap = SQLITE_MAX_MMAP_SIZE;
183294 }
183295 if( szMmap<0 ) szMmap = SQLITE_DEFAULT_MMAP_SIZE;
183296 if( szMmap>mxMmap) szMmap = mxMmap;
183297 sqlite3GlobalConfig.mxMmap = mxMmap;
183298 sqlite3GlobalConfig.szMmap = szMmap;
183299 break;
183300 }
183301
183302#if SQLITE_OS_WIN && defined(SQLITE_WIN32_MALLOC) /* IMP: R-04780-55815 */
183304 /* EVIDENCE-OF: R-34926-03360 SQLITE_CONFIG_WIN32_HEAPSIZE takes a 32-bit
183305 ** unsigned integer value that specifies the maximum size of the created
183306 ** heap. */
183307 sqlite3GlobalConfig.nHeap = va_arg(ap, int);
183308 break;
183309 }
183310#endif
183311
183312 case SQLITE_CONFIG_PMASZ: {
183313 sqlite3GlobalConfig.szPma = va_arg(ap, unsigned int);
183314 break;
183315 }
183316
183318 sqlite3GlobalConfig.nStmtSpill = va_arg(ap, int);
183319 break;
183320 }
183321
183322#ifdef SQLITE_ENABLE_SORTER_REFERENCES
183324 int iVal = va_arg(ap, int);
183325 if( iVal<0 ){
183327 }
183328 sqlite3GlobalConfig.szSorterRef = (u32)iVal;
183329 break;
183330 }
183331#endif /* SQLITE_ENABLE_SORTER_REFERENCES */
183332
183333#ifndef SQLITE_OMIT_DESERIALIZE
183335 sqlite3GlobalConfig.mxMemdbSize = va_arg(ap, sqlite3_int64);
183336 break;
183337 }
183338#endif /* SQLITE_OMIT_DESERIALIZE */
183339
183341 int *pVal = va_arg(ap,int*);
183342#ifdef SQLITE_ALLOW_ROWID_IN_VIEW
183343 if( 0==*pVal ) sqlite3GlobalConfig.mNoVisibleRowid = TF_NoVisibleRowid;
183344 if( 1==*pVal ) sqlite3GlobalConfig.mNoVisibleRowid = 0;
183345 *pVal = (sqlite3GlobalConfig.mNoVisibleRowid==0);
183346#else
183347 *pVal = 0;
183348#endif
183349 break;
183350 }
183351
183352 default: {
#define SQLITE_DEFAULT_SORTERREF_SIZE
Definition sqlite3.c:15164
#define SQLITE_CONFIG_MEMSTATUS
Definition sqlite3.c:2516
sqlite_int64 sqlite3_int64
Definition sqlite3.c:623
#define SQLITE_CONFIG_MUTEX
Definition sqlite3.c:2517
#define SQLITE_CONFIG_PMASZ
Definition sqlite3.c:2532
static void sqlite3MemSetDefault(void)
Definition sqlite3.c:27409
#define SQLITE_CONFIG_STMTJRNL_SPILL
Definition sqlite3.c:2533
#define SQLITE_CONFIG_HEAP
Definition sqlite3.c:2515
#define SQLITE_CONFIG_MEMDB_MAXSIZE
Definition sqlite3.c:2536
#define SQLITE_CONFIG_PCACHE2
Definition sqlite3.c:2525
#define TF_NoVisibleRowid
Definition sqlite3.c:18858
#define SQLITE_CONFIG_SMALL_MALLOC
Definition sqlite3.c:2534
static int sqlite3HeaderSizeBtree(void)
Definition sqlite3.c:83026
#define SQLITE_CONFIG_PAGECACHE
Definition sqlite3.c:2514
static int sqlite3HeaderSizePcache(void)
Definition sqlite3.c:56063
#define SQLITE_CONFIG_GETMALLOC
Definition sqlite3.c:2512
#define SQLITE_CONFIG_LOG
Definition sqlite3.c:2523
#define SQLITE_CONFIG_GETMUTEX
Definition sqlite3.c:2518
#define SQLITE_CONFIG_MULTITHREAD
Definition sqlite3.c:2509
#define SQLITE_CONFIG_COVERING_INDEX_SCAN
Definition sqlite3.c:2527
#define SQLITE_CONFIG_MALLOC
Definition sqlite3.c:2511
#define AtomicStore(PTR, VAL)
Definition sqlite3.c:14365
static int sqlite3HeaderSizePcache1(void)
Definition sqlite3.c:57315
#define SQLITE_CONFIG_WIN32_HEAPSIZE
Definition sqlite3.c:2530
#define SQLITE_CONFIG_LOOKASIDE
Definition sqlite3.c:2520
#define SQLITE_DEFAULT_MMAP_SIZE
Definition sqlite3.c:15520
#define sqlite3GlobalConfig
Definition sqlite3.c:15710
#define SQLITE_CONFIG_URI
Definition sqlite3.c:2524
#define SQLITE_CONFIG_SQLLOG
Definition sqlite3.c:2528
#define SQLITE_MAX_MMAP_SIZE
Definition sqlite3.c:15510
#define SQLITE_CONFIG_MMAP_SIZE
Definition sqlite3.c:2529
#define SQLITE_CONFIG_PCACHE
Definition sqlite3.c:2521
#define SQLITE_CONFIG_PCACHE_HDRSZ
Definition sqlite3.c:2531
#define SQLITE_CONFIG_ROWID_IN_VIEW
Definition sqlite3.c:2537
#define SQLITE_CONFIG_SERIALIZED
Definition sqlite3.c:2510
#define MASKBIT64(n)
Definition sqlite3.c:15820
#define SQLITE_CONFIG_GETPCACHE
Definition sqlite3.c:2522
#define SQLITE_CONFIG_SINGLETHREAD
Definition sqlite3.c:2508
#define SQLITE_CONFIG_SORTERREF_SIZE
Definition sqlite3.c:2535
static void sqlite3PCacheSetDefault(void)
Definition sqlite3.c:57293
#define SQLITE_CONFIG_GETPCACHE2
Definition sqlite3.c:2526
Definition sqlite3.c:2108
Definition sqlite3.c:8686
Definition sqlite3.c:9626

References AtomicStore, MASKBIT64, sqlite3GlobalConfig, sqlite3HeaderSizeBtree(), sqlite3HeaderSizePcache(), sqlite3HeaderSizePcache1(), sqlite3MemSetDefault(), sqlite3PCacheSetDefault(), SQLITE_API, SQLITE_CONFIG_COVERING_INDEX_SCAN, SQLITE_CONFIG_GETMALLOC, SQLITE_CONFIG_GETMUTEX, SQLITE_CONFIG_GETPCACHE, SQLITE_CONFIG_GETPCACHE2, SQLITE_CONFIG_HEAP, SQLITE_CONFIG_LOG, SQLITE_CONFIG_LOOKASIDE, SQLITE_CONFIG_MALLOC, SQLITE_CONFIG_MEMDB_MAXSIZE, SQLITE_CONFIG_MEMSTATUS, SQLITE_CONFIG_MMAP_SIZE, SQLITE_CONFIG_MULTITHREAD, SQLITE_CONFIG_MUTEX, SQLITE_CONFIG_PAGECACHE, SQLITE_CONFIG_PCACHE, SQLITE_CONFIG_PCACHE2, SQLITE_CONFIG_PCACHE_HDRSZ, SQLITE_CONFIG_PMASZ, SQLITE_CONFIG_ROWID_IN_VIEW, SQLITE_CONFIG_SERIALIZED, SQLITE_CONFIG_SINGLETHREAD, SQLITE_CONFIG_SMALL_MALLOC, SQLITE_CONFIG_SORTERREF_SIZE, SQLITE_CONFIG_SQLLOG, SQLITE_CONFIG_STMTJRNL_SPILL, SQLITE_CONFIG_URI, SQLITE_CONFIG_WIN32_HEAPSIZE, SQLITE_DEFAULT_MMAP_SIZE, SQLITE_DEFAULT_SORTERREF_SIZE, SQLITE_ERROR, SQLITE_MAX_MMAP_SIZE, SQLITE_MISUSE_BKPT, SQLITE_OK, testcase, and TF_NoVisibleRowid.

Referenced by main(), main_init(), sqlite3MemSetDefault(), sqlite3MemTraceActivate(), sqlite3MemTraceDeactivate(), sqlite3PcacheTraceActivate(), sqlite3PcacheTraceDeactivate(), and verify_uninitialized().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sqlite3_context_db_handle()

sqlite3 * sqlite3_context_db_handle ( sqlite3_context * p)
92420 : R-46798-50301 The sqlite3_context_db_handle() interface
92421** returns a copy of the pointer to the database connection (the 1st
92422** parameter) of the sqlite3_create_function() and
92423** sqlite3_create_function16() routines that originally registered the
92424** application defined function.
92425*/
92427#ifdef SQLITE_ENABLE_API_ARMOR
#define a
Definition sqlite3.c:23970
#define sqlite3_create_function16
Definition sqlite3ext.h:443
#define sqlite3_create_function
Definition sqlite3ext.h:442
#define sqlite3_context_db_handle
Definition sqlite3ext.h:555

References sqlite3_value::db, sqlite3_context::pOut, and SQLITE_API.

◆ sqlite3_create_collation()

int sqlite3_create_collation ( sqlite3 * db,
const char * zName,
int eTextRep,
void * pArg,
int(* xCompare )(void *, int, const void *, int, const void *) )

◆ sqlite3_create_collation16()

int sqlite3_create_collation16 ( sqlite3 * db,
const void * zName,
int eTextRep,
void * pArg,
int(* xCompare )(void *, int, const void *, int, const void *) )
186339 {
186340 int rc = SQLITE_OK;
186341 char *zName8;
186342
186343#ifdef SQLITE_ENABLE_API_ARMOR
186344 if( !sqlite3SafetyCheckOk(db) || zName==0 ) return SQLITE_MISUSE_BKPT;
186345#endif
186347 assert( !db->mallocFailed );
186348 zName8 = sqlite3Utf16to8(db, zName, -1, SQLITE_UTF16NATIVE);
186349 if( zName8 ){
static char * sqlite3Utf16to8(sqlite3 *, const void *, int, u8)
Definition sqlite3.c:35433

◆ sqlite3_create_collation_v2()

int sqlite3_create_collation_v2 ( sqlite3 * db,
const char * zName,
int eTextRep,
void * pArg,
int(* xCompare )(void *, int, const void *, int, const void *),
void(* xDestroy )(void *) )
186301 {
186302 return sqlite3_create_collation_v2(db, zName, enc, pCtx, xCompare, 0);
186303}
186304
186305/*
186306** Register a new collation sequence with the database handle db.
186307*/
186309 sqlite3* db,
186310 const char *zName,
186311 int enc,
186312 void* pCtx,
186313 int(*xCompare)(void*,int,const void*,int,const void*),
186314 void(*xDel)(void*)
186315){
186316 int rc;
186317
186318#ifdef SQLITE_ENABLE_API_ARMOR
186319 if( !sqlite3SafetyCheckOk(db) || zName==0 ) return SQLITE_MISUSE_BKPT;
186320#endif
#define sqlite3_create_collation_v2
Definition sqlite3ext.h:532

References sqlite3_create_collation_v2.

◆ sqlite3_create_filename()

sqlite3_filename sqlite3_create_filename ( const char * zDatabase,
const char * zJournal,
const char * zWal,
int nParam,
const char ** azParam )
187358 {
187359 sqlite3_int64 nByte;
187360 int i;
187361 char *pResult, *p;
187362 nByte = strlen(zDatabase) + strlen(zJournal) + strlen(zWal) + 10;
187363 for(i=0; i<nParam*2; i++){
187364 nByte += strlen(azParam[i])+1;
187365 }
187366 pResult = p = sqlite3_malloc64( nByte );
187367 if( p==0 ) return 0;
187368 memset(p, 0, 4);
187369 p += 4;
187370 p = appendText(p, zDatabase);
187371 for(i=0; i<nParam*2; i++){
187372 p = appendText(p, azParam[i]);
187373 }
187374 *(p++) = 0;
static char * appendText(char *p, const char *z)
Definition sqlite3.c:187330
#define sqlite3_malloc64
Definition sqlite3ext.h:605

References appendText(), sqlite3_malloc64, and SQLITE_API.

Here is the call graph for this function:

◆ sqlite3_create_function()

int sqlite3_create_function ( sqlite3 * db,
const char * zFunctionName,
int nArg,
int eTextRep,
void * pApp,
void(* xFunc )(sqlite3_context *, int, sqlite3_value **),
void(* xStep )(sqlite3_context *, int, sqlite3_value **),
void(* xFinal )(sqlite3_context *) )

◆ sqlite3_create_function16()

int sqlite3_create_function16 ( sqlite3 * db,
const void * zFunctionName,
int nArg,
int eTextRep,
void * pApp,
void(* xFunc )(sqlite3_context *, int, sqlite3_value **),
void(* xStep )(sqlite3_context *, int, sqlite3_value **),
void(* xFinal )(sqlite3_context *) )
184743 {
184744 return createFunctionApi(db, zFunc, nArg, enc, p, 0, xStep,
184745 xFinal, xValue, xInverse, xDestroy);
184746}
184747
184748#ifndef SQLITE_OMIT_UTF16
184750 sqlite3 *db,
184751 const void *zFunctionName,
184752 int nArg,
184753 int eTextRep,
184754 void *p,
184755 void (*xSFunc)(sqlite3_context*,int,sqlite3_value**),
184756 void (*xStep)(sqlite3_context*,int,sqlite3_value**),
184757 void (*xFinal)(sqlite3_context*)
184758){
184759 int rc;
184760 char *zFunc8;
184761
184762#ifdef SQLITE_ENABLE_API_ARMOR
184763 if( !sqlite3SafetyCheckOk(db) || zFunctionName==0 ) return SQLITE_MISUSE_BKPT;
184764#endif
184766 assert( !db->mallocFailed );
static int createFunctionApi(sqlite3 *db, const char *zFunc, int nArg, int enc, void *p, void(*xSFunc)(sqlite3_context *, int, sqlite3_value **), void(*xStep)(sqlite3_context *, int, sqlite3_value **), void(*xFinal)(sqlite3_context *), void(*xValue)(sqlite3_context *), void(*xInverse)(sqlite3_context *, int, sqlite3_value **), void(*xDestroy)(void *))
Definition sqlite3.c:184647

References createFunctionApi().

Here is the call graph for this function:

◆ sqlite3_create_function_v2()

int sqlite3_create_function_v2 ( sqlite3 * db,
const char * zFunctionName,
int nArg,
int eTextRep,
void * pApp,
void(* xFunc )(sqlite3_context *, int, sqlite3_value **),
void(* xStep )(sqlite3_context *, int, sqlite3_value **),
void(* xFinal )(sqlite3_context *),
void(* xDestroy )(void *) )
184714 {
184715 return createFunctionApi(db, zFunc, nArg, enc, p, xSFunc, xStep,
184716 xFinal, 0, 0, 0);
184717}
184719 sqlite3 *db,
184720 const char *zFunc,
184721 int nArg,
184722 int enc,
184723 void *p,
184724 void (*xSFunc)(sqlite3_context*,int,sqlite3_value **),
#define sqlite3_create_function_v2
Definition sqlite3ext.h:568

References createFunctionApi().

Here is the call graph for this function:

◆ sqlite3_create_module()

int sqlite3_create_module ( sqlite3 * db,
const char * zName,
const sqlite3_module * p,
void * pClientData )

◆ sqlite3_create_module_v2()

int sqlite3_create_module_v2 ( sqlite3 * db,
const char * zName,
const sqlite3_module * p,
void * pClientData,
void(* xDestroy )(void *) )

◆ sqlite3_create_window_function()

int sqlite3_create_window_function ( sqlite3 * db,
const char * zFunctionName,
int nArg,
int eTextRep,
void * pApp,
void(* xStep )(sqlite3_context *, int, sqlite3_value **),
void(* xFinal )(sqlite3_context *),
void(* xValue )(sqlite3_context *),
void(* xInverse )(sqlite3_context *, int, sqlite3_value **),
void(* xDestroy )(void *) )
184728 {
184729 return createFunctionApi(db, zFunc, nArg, enc, p, xSFunc, xStep,
184730 xFinal, 0, 0, xDestroy);
184731}
184733 sqlite3 *db,
184734 const char *zFunc,
184735 int nArg,
184736 int enc,
184737 void *p,
184738 void (*xStep)(sqlite3_context*,int,sqlite3_value **),
184739 void (*xFinal)(sqlite3_context*),
#define sqlite3_create_window_function
Definition sqlite3ext.h:657

References createFunctionApi().

Here is the call graph for this function:

◆ sqlite3_data_count()

int sqlite3_data_count ( sqlite3_stmt * pStmt)

◆ sqlite3_database_file_object()

sqlite3_file * sqlite3_database_file_object ( const char * zName)
63130 {
63131 Pager *pPager;
63132 const char *p;
63133 while( zName[-1]!=0 || zName[-2]!=0 || zName[-3]!=0 || zName[-4]!=0 ){
63134 zName--;

References EIGHT_BYTE_ALIGNMENT, Pager::fd, and SQLITE_API.

◆ sqlite3_db_cacheflush()

int sqlite3_db_cacheflush ( sqlite3 * db)
183521 {
183522 int i;
183523 int rc = SQLITE_OK;
183524 int bSeenBusy = 0;
183525
183526#ifdef SQLITE_ENABLE_API_ARMOR
183527 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
183528#endif
183531 for(i=0; rc==SQLITE_OK && i<db->nDb; i++){
183532 Btree *pBt = db->aDb[i].pBt;
183533 if( pBt && sqlite3BtreeTxnState(pBt)==SQLITE_TXN_WRITE ){
183534 Pager *pPager = sqlite3BtreePager(pBt);
183535 rc = sqlite3PagerFlush(pPager);
183536 if( rc==SQLITE_BUSY ){
183537 bSeenBusy = 1;
183538 rc = SQLITE_OK;
int nDb
Definition sqlite3.c:18040
Btree * pBt
Definition sqlite3.c:17848
static int sqlite3PagerFlush(Pager *)
Definition sqlite3.c:62720
#define SQLITE_TXN_WRITE
Definition sqlite3.c:7246
Definition sqlite3.c:70854

References SQLITE_OK.

◆ sqlite3_db_config()

int sqlite3_db_config ( sqlite3 * db,
int op,
... )
183544 : rc);
183545}
183546
183547/*
183548** Configuration settings for an individual database connection
183549*/
183550SQLITE_API int sqlite3_db_config(sqlite3 *db, int op, ...){
183551 va_list ap;
183552 int rc;
183553
183554#ifdef SQLITE_ENABLE_API_ARMOR
183555 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
183556#endif
183558 va_start(ap, op);
183559 switch( op ){
183561 /* IMP: R-06824-28531 */
183562 /* IMP: R-36257-52125 */
183563 db->aDb[0].zDbSName = va_arg(ap,char*);
183564 rc = SQLITE_OK;
183565 break;
183566 }
183568 void *pBuf = va_arg(ap, void*); /* IMP: R-26835-10964 */
183569 int sz = va_arg(ap, int); /* IMP: R-47871-25994 */
183570 int cnt = va_arg(ap, int); /* IMP: R-04460-53386 */
183571 rc = setupLookaside(db, pBuf, sz, cnt);
183572 break;
183573 }
183574 default: {
183575 static const struct {
183576 int op; /* The opcode */
183577 u64 mask; /* Mask of the bit in sqlite3.flags to set/clear */
183578 } aFlagOp[] = {
183601 };
183602 unsigned int i;
183603 rc = SQLITE_ERROR; /* IMP: R-42790-23372 */
183604 for(i=0; i<ArraySize(aFlagOp); i++){
183605 if( aFlagOp[i].op==op ){
183606 int onoff = va_arg(ap, int);
183607 int *pRes = va_arg(ap, int*);
183608 u64 oldFlags = db->flags;
183609 if( onoff>0 ){
183610 db->flags |= aFlagOp[i].mask;
183611 }else if( onoff==0 ){
183612 db->flags &= ~(u64)aFlagOp[i].mask;
183613 }
183614 if( oldFlags!=db->flags ){
183616 }
183617 if( pRes ){
183618 *pRes = (db->flags & aFlagOp[i].mask)!=0;
183619 }
183620 rc = SQLITE_OK;
183621 break;
183622 }
183623 }
#define SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION
Definition sqlite3.c:2972
#define SQLITE_StmtScanStatus
Definition sqlite3.c:18210
#define SQLITE_LegacyAlter
Definition sqlite3.c:18226
#define SQLITE_DBCONFIG_ENABLE_COMMENTS
Definition sqlite3.c:2989
#define SQLITE_DBCONFIG_DEFENSIVE
Definition sqlite3.c:2977
#define SQLITE_AttachWrite
Definition sqlite3.c:18239
#define SQLITE_DBCONFIG_DQS_DDL
Definition sqlite3.c:2981
#define SQLITE_DBCONFIG_ENABLE_TRIGGER
Definition sqlite3.c:2970
#define SQLITE_AttachCreate
Definition sqlite3.c:18238
#define SQLITE_EnableQPSG
Definition sqlite3.c:18223
static void sqlite3ExpirePreparedStatements(sqlite3 *, int)
Definition sqlite3.c:91211
#define SQLITE_Fts3Tokenizer
Definition sqlite3.c:18222
#define SQLITE_DBCONFIG_ENABLE_FKEY
Definition sqlite3.c:2969
#define SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER
Definition sqlite3.c:2971
#define SQLITE_DqsDDL
Definition sqlite3.c:18229
#define SQLITE_Comments
Definition sqlite3.c:18240
#define SQLITE_EnableView
Definition sqlite3.c:18231
#define SQLITE_Defensive
Definition sqlite3.c:18228
#define SQLITE_ResetDatabase
Definition sqlite3.c:18225
#define SQLITE_DBCONFIG_TRUSTED_SCHEMA
Definition sqlite3.c:2984
#define SQLITE_DBCONFIG_RESET_DATABASE
Definition sqlite3.c:2976
#define SQLITE_DBCONFIG_ENABLE_ATTACH_CREATE
Definition sqlite3.c:2987
#define SQLITE_DBCONFIG_DQS_DML
Definition sqlite3.c:2980
#define SQLITE_WriteSchema
Definition sqlite3.c:18199
#define SQLITE_DBCONFIG_ENABLE_QPSG
Definition sqlite3.c:2974
static int setupLookaside(sqlite3 *db, void *pBuf, int sz, int cnt)
Definition sqlite3.c:183365
#define SQLITE_DBCONFIG_ENABLE_ATTACH_WRITE
Definition sqlite3.c:2988
#define SQLITE_EnableTrigger
Definition sqlite3.c:18218
#define SQLITE_DBCONFIG_WRITABLE_SCHEMA
Definition sqlite3.c:2978
#define SQLITE_DBCONFIG_STMT_SCANSTATUS
Definition sqlite3.c:2985
#define SQLITE_NoSchemaError
Definition sqlite3.c:18227
#define SQLITE_TriggerEQP
Definition sqlite3.c:18224
#define SQLITE_DqsDML
Definition sqlite3.c:18230
#define SQLITE_DBCONFIG_LEGACY_ALTER_TABLE
Definition sqlite3.c:2979
#define SQLITE_ReverseOrder
Definition sqlite3.c:18212
#define SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE
Definition sqlite3.c:2973
#define SQLITE_TrustedSchema
Definition sqlite3.c:18206
#define SQLITE_LegacyFileFmt
Definition sqlite3.c:18200
#define SQLITE_DBCONFIG_REVERSE_SCANORDER
Definition sqlite3.c:2986
#define SQLITE_DBCONFIG_LEGACY_FILE_FORMAT
Definition sqlite3.c:2983
#define SQLITE_NoCkptOnClose
Definition sqlite3.c:18211
#define SQLITE_DBCONFIG_LOOKASIDE
Definition sqlite3.c:2968
#define SQLITE_DBCONFIG_ENABLE_VIEW
Definition sqlite3.c:2982
#define SQLITE_DBCONFIG_MAINDBNAME
Definition sqlite3.c:2967
#define SQLITE_LoadExtension
Definition sqlite3.c:18216
#define SQLITE_DBCONFIG_TRIGGER_EQP
Definition sqlite3.c:2975
#define sqlite3_db_config
Definition sqlite3ext.h:569

References SQLITE_BUSY, and SQLITE_OK.

◆ sqlite3_db_filename()

sqlite3_filename sqlite3_db_filename ( sqlite3 * db,
const char * zDbName )
187515 {
187516 Btree *pBt;
187517#ifdef SQLITE_ENABLE_API_ARMOR
187518 if( !sqlite3SafetyCheckOk(db) ){

◆ sqlite3_db_handle()

sqlite3 * sqlite3_db_handle ( sqlite3_stmt * pStmt)

References SQLITE_API.

◆ sqlite3_db_mutex()

sqlite3_mutex * sqlite3_db_mutex ( sqlite3 * db)
183483 {
183484#ifdef SQLITE_ENABLE_API_ARMOR

References SQLITE_OK.

◆ sqlite3_db_name()

const char * sqlite3_db_name ( sqlite3 * db,
int N )
187490 : db->aDb[iDb].pBt;
187491}
187492
187493/*
187494** Return the name of the N-th database schema. Return NULL if N is out
187495** of range.
187496*/
187497SQLITE_API const char *sqlite3_db_name(sqlite3 *db, int N){
187498#ifdef SQLITE_ENABLE_API_ARMOR
187499 if( !sqlite3SafetyCheckOk(db) ){
187500 (void)SQLITE_MISUSE_BKPT;
187501 return 0;
187502 }
#define sqlite3_db_name
Definition sqlite3ext.h:694

◆ sqlite3_db_readonly()

int sqlite3_db_readonly ( sqlite3 * db,
const char * zDbName )
187524 : 0;
187525}
187526
187527/*
187528** Return 1 if database is read-only or 0 if read/write. Return -1 if
187529** no such database exists.
187530*/
187531SQLITE_API int sqlite3_db_readonly(sqlite3 *db, const char *zDbName){
187532 Btree *pBt;
187533#ifdef SQLITE_ENABLE_API_ARMOR
187534 if( !sqlite3SafetyCheckOk(db) ){
#define sqlite3_db_readonly
Definition sqlite3ext.h:588

◆ sqlite3_db_release_memory()

int sqlite3_db_release_memory ( sqlite3 * db)
183497 {
183498 int i;
183499
183500#ifdef SQLITE_ENABLE_API_ARMOR
183501 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
183502#endif
183505 for(i=0; i<db->nDb; i++){
183506 Btree *pBt = db->aDb[i].pBt;
183507 if( pBt ){
183508 Pager *pPager = sqlite3BtreePager(pBt);

◆ sqlite3_db_status()

int sqlite3_db_status ( sqlite3 * db,
int op,
int * pCur,
int * pHiwtr,
int resetFlg )
24521 {
24522 int rc = SQLITE_OK; /* Return code */
24523#ifdef SQLITE_ENABLE_API_ARMOR
24524 if( !sqlite3SafetyCheckOk(db) || pCurrent==0|| pHighwater==0 ){
24525 return SQLITE_MISUSE_BKPT;
24526 }
24527#endif
24529 switch( op ){
24531 *pCurrent = sqlite3LookasideUsed(db, pHighwater);
24532 if( resetFlag ){
24533 LookasideSlot *p = db->lookaside.pFree;
24534 if( p ){
24535 while( p->pNext ) p = p->pNext;
24536 p->pNext = db->lookaside.pInit;
24537 db->lookaside.pInit = db->lookaside.pFree;
24538 db->lookaside.pFree = 0;
24539 }
24540#ifndef SQLITE_OMIT_TWOSIZE_LOOKASIDE
24541 p = db->lookaside.pSmallFree;
24542 if( p ){
24543 while( p->pNext ) p = p->pNext;
24544 p->pNext = db->lookaside.pSmallInit;
24546 db->lookaside.pSmallFree = 0;
24547 }
24548#endif
24549 }
24550 break;
24551 }
24552
24559 assert( (op-SQLITE_DBSTATUS_LOOKASIDE_HIT)>=0 );
24560 assert( (op-SQLITE_DBSTATUS_LOOKASIDE_HIT)<3 );
24561 *pCurrent = 0;
24562 *pHighwater = (int)db->lookaside.anStat[op-SQLITE_DBSTATUS_LOOKASIDE_HIT];
24563 if( resetFlag ){
24565 }
24566 break;
24567 }
24568
24569 /*
24570 ** Return an approximation for the amount of memory currently used
24571 ** by all pagers associated with the given database connection. The
24572 ** highwater mark is meaningless and is returned as zero.
24573 */
24576 int totalUsed = 0;
24577 int i;
24579 for(i=0; i<db->nDb; i++){
24580 Btree *pBt = db->aDb[i].pBt;
24581 if( pBt ){
24582 Pager *pPager = sqlite3BtreePager(pBt);
24583 int nByte = sqlite3PagerMemUsed(pPager);
24585 nByte = nByte / sqlite3BtreeConnectionCount(pBt);
24586 }
24587 totalUsed += nByte;
24588 }
24589 }
24591 *pCurrent = totalUsed;
24592 *pHighwater = 0;
24593 break;
24594 }
24595
24596 /*
24597 ** *pCurrent gets an accurate estimate of the amount of memory used
24598 ** to store the schema for all databases (main, temp, and any ATTACHed
24599 ** databases. *pHighwater is set to zero.
24600 */
24602 int i; /* Used to iterate through schemas */
24603 int nByte = 0; /* Used to accumulate return value */
24604
24606 db->pnBytesFreed = &nByte;
24607 assert( db->lookaside.pEnd==db->lookaside.pTrueEnd );
24608 db->lookaside.pEnd = db->lookaside.pStart;
24609 for(i=0; i<db->nDb; i++){
24610 Schema *pSchema = db->aDb[i].pSchema;
24611 if( ALWAYS(pSchema!=0) ){
24612 HashElem *p;
24613
24614 nByte += sqlite3GlobalConfig.m.xRoundup(sizeof(HashElem)) * (
24615 pSchema->tblHash.count
24616 + pSchema->trigHash.count
24617 + pSchema->idxHash.count
24618 + pSchema->fkeyHash.count
24619 );
24620 nByte += sqlite3_msize(pSchema->tblHash.ht);
24621 nByte += sqlite3_msize(pSchema->trigHash.ht);
24622 nByte += sqlite3_msize(pSchema->idxHash.ht);
24623 nByte += sqlite3_msize(pSchema->fkeyHash.ht);
24624
24625 for(p=sqliteHashFirst(&pSchema->trigHash); p; p=sqliteHashNext(p)){
24627 }
24628 for(p=sqliteHashFirst(&pSchema->tblHash); p; p=sqliteHashNext(p)){
24630 }
24631 }
24632 }
24633 db->pnBytesFreed = 0;
24634 db->lookaside.pEnd = db->lookaside.pTrueEnd;
24636
24637 *pHighwater = 0;
24638 *pCurrent = nByte;
24639 break;
24640 }
24641
24642 /*
24643 ** *pCurrent gets an accurate estimate of the amount of memory used
24644 ** to store all prepared statements.
24645 ** *pHighwater is set to zero.
24646 */
24648 struct Vdbe *pVdbe; /* Used to iterate through VMs */
24649 int nByte = 0; /* Used to accumulate return value */
24650
24651 db->pnBytesFreed = &nByte;
24652 assert( db->lookaside.pEnd==db->lookaside.pTrueEnd );
24654 for(pVdbe=db->pVdbe; pVdbe; pVdbe=pVdbe->pVNext){
24655 sqlite3VdbeDelete(pVdbe);
24656 }
24658 db->pnBytesFreed = 0;
24659
24660 *pHighwater = 0; /* IMP: R-64479-57858 */
24661 *pCurrent = nByte;
24662
24663 break;
24664 }
24665
24666 /*
24667 ** Set *pCurrent to the total cache hits or misses encountered by all
24668 ** pagers the database handle is connected to. *pHighwater is always set
24669 ** to zero.
24670 */
24673 /* no break */ deliberate_fall_through
24677 int i;
24678 u64 nRet = 0;
24681
24682 for(i=0; i<db->nDb; i++){
24683 if( db->aDb[i].pBt ){
24684 Pager *pPager = sqlite3BtreePager(db->aDb[i].pBt);
24685 sqlite3PagerCacheStat(pPager, op, resetFlag, &nRet);
24686 }
24687 }
24688 *pHighwater = 0; /* IMP: R-42420-56072 */
24689 /* IMP: R-54100-20147 */
24690 /* IMP: R-29431-39229 */
24691 *pCurrent = (int)nRet & 0x7fffffff;
24692 break;
24693 }
24694
24695 /* Set *pCurrent to non-zero if there are unresolved deferred foreign
24696 ** key constraints. Set *pCurrent to zero if all foreign key constraints
24697 ** have been satisfied. The *pHighwater is always set to zero.
24698 */
24700 *pHighwater = 0; /* IMP: R-11967-56545 */
24701 *pCurrent = db->nDeferredImmCons>0 || db->nDeferredCons>0;
24702 break;
24703 }
24704
24705 default: {
24706 rc = SQLITE_ERROR;
#define deliberate_fall_through
Definition shell.c:190
#define SQLITE_DBSTATUS_CACHE_HIT
Definition sqlite3.c:9327
#define SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE
Definition sqlite3.c:9325
#define sqliteHashNext(E)
Definition sqlite3.c:14844
#define SQLITE_DBSTATUS_STMT_USED
Definition sqlite3.c:9323
i64 nDeferredCons
Definition sqlite3.c:18155
static void sqlite3VdbeDelete(Vdbe *)
Definition sqlite3.c:89655
LookasideSlot * pInit
Definition sqlite3.c:17966
LookasideSlot * pFree
Definition sqlite3.c:17967
LookasideSlot * pNext
Definition sqlite3.c:17979
void * pStart
Definition sqlite3.c:17974
#define SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL
Definition sqlite3.c:9326
static int sqlite3PagerMemUsed(Pager *)
Definition sqlite3.c:64869
int * pnBytesFreed
Definition sqlite3.c:18157
void * pTrueEnd
Definition sqlite3.c:17976
struct Vdbe * pVdbe
Definition sqlite3.c:18036
#define SQLITE_DBSTATUS_CACHE_USED
Definition sqlite3.c:9321
#define ALWAYS(X)
Definition sqlite3.c:14663
#define sqliteHashFirst(H)
Definition sqlite3.c:14843
#define sqliteHashData(E)
Definition sqlite3.c:14845
#define SQLITE_DBSTATUS_LOOKASIDE_HIT
Definition sqlite3.c:9324
static void sqlite3DeleteTrigger(sqlite3 *, Trigger *)
Definition sqlite3.c:154437
i64 nDeferredImmCons
Definition sqlite3.c:18156
unsigned int count
Definition sqlite3.c:14802
static void sqlite3PagerCacheStat(Pager *, int, int, u64 *)
Definition sqlite3.c:64916
Vdbe * pVNext
Definition sqlite3.c:24035
static void sqlite3DeleteTable(sqlite3 *, Table *)
Definition sqlite3.c:123817
Lookaside lookaside
Definition sqlite3.c:18125
static int sqlite3LookasideUsed(sqlite3 *, int *)
Definition sqlite3.c:24495
#define SQLITE_DBSTATUS_SCHEMA_USED
Definition sqlite3.c:9322
LookasideSlot * pSmallInit
Definition sqlite3.c:17969
#define SQLITE_DBSTATUS_CACHE_USED_SHARED
Definition sqlite3.c:9331
Hash trigHash
Definition sqlite3.c:17876
Hash idxHash
Definition sqlite3.c:17875
struct Hash::_ht * ht
static int sqlite3BtreeConnectionCount(Btree *)
Definition sqlite3.c:83052
#define SQLITE_DBSTATUS_CACHE_WRITE
Definition sqlite3.c:9329
void * pEnd
Definition sqlite3.c:17975
u32 anStat[3]
Definition sqlite3.c:17965
Hash fkeyHash
Definition sqlite3.c:17877
#define SQLITE_DBSTATUS_DEFERRED_FKS
Definition sqlite3.c:9330
#define SQLITE_DBSTATUS_CACHE_SPILL
Definition sqlite3.c:9332
#define SQLITE_DBSTATUS_LOOKASIDE_USED
Definition sqlite3.c:9320
#define SQLITE_DBSTATUS_CACHE_MISS
Definition sqlite3.c:9328
LookasideSlot * pSmallFree
Definition sqlite3.c:17970
int rc
Definition sqlite3.c:24042
Hash tblHash
Definition sqlite3.c:17874
Schema * pSchema
Definition sqlite3.c:17851
Definition sqlite3.c:14816
Definition sqlite3.c:17978
Definition sqlite3.c:17871
Definition sqlite3.c:20461
#define sqlite3_msize
Definition sqlite3ext.h:606

◆ sqlite3_declare_vtab()

int sqlite3_declare_vtab ( sqlite3 * db,
const char * zSQL )
158338 {
158339 VtabCtx *pCtx;
158340 int rc = SQLITE_OK;
158341 Table *pTab;
158342 Parse sParse;
158343 int initBusy;
158344 int i;
158345 const unsigned char *z;
158346 static const u8 aKeyword[] = { TK_CREATE, TK_TABLE, 0 };
158347
158348#ifdef SQLITE_ENABLE_API_ARMOR
158349 if( !sqlite3SafetyCheckOk(db) || zCreateTable==0 ){
158350 return SQLITE_MISUSE_BKPT;
158351 }
158352#endif
158353
158354 /* Verify that the first two keywords in the CREATE TABLE statement
158355 ** really are "CREATE" and "TABLE". If this is not the case, then
158356 ** sqlite3_declare_vtab() is being misused.
158357 */
158358 z = (const unsigned char*)zCreateTable;
158359 for(i=0; aKeyword[i]; i++){
158360 int tokenType = 0;
158361 do{
158362 z += sqlite3GetToken(z, &tokenType);
158363 }while( tokenType==TK_SPACE || tokenType==TK_COMMENT );
158364 if( tokenType!=aKeyword[i] ){
158365 sqlite3ErrorWithMsg(db, SQLITE_ERROR, "syntax error");
158366 return SQLITE_ERROR;
158367 }
158368 }
158369
158371 pCtx = db->pVtabCtx;
158372 if( !pCtx || pCtx->bDeclared ){
158375 return SQLITE_MISUSE_BKPT;
158376 }
158377
158378 pTab = pCtx->pTab;
158379 assert( IsVirtual(pTab) );
158380
158381 sqlite3ParseObjectInit(&sParse, db);
158383 sParse.disableTriggers = 1;
158384 /* We should never be able to reach this point while loading the
158385 ** schema. Nevertheless, defend against that (turn off db->init.busy)
158386 ** in case a bug arises. */
158387 assert( db->init.busy==0 );
158388 initBusy = db->init.busy;
158389 db->init.busy = 0;
158390 sParse.nQueryLoop = 1;
158391 if( SQLITE_OK==sqlite3RunParser(&sParse, zCreateTable) ){
158392 assert( sParse.pNewTable!=0 );
158393 assert( !db->mallocFailed );
158394 assert( IsOrdinaryTable(sParse.pNewTable) );
158395 assert( sParse.zErrMsg==0 );
158396 if( !pTab->aCol ){
158397 Table *pNew = sParse.pNewTable;
158398 Index *pIdx;
158399 pTab->aCol = pNew->aCol;
158400 assert( IsOrdinaryTable(pNew) );
158401 sqlite3ExprListDelete(db, pNew->u.tab.pDfltList);
158402 pTab->nNVCol = pTab->nCol = pNew->nCol;
158404 pNew->nCol = 0;
158405 pNew->aCol = 0;
158406 assert( pTab->pIndex==0 );
158407 assert( HasRowid(pNew) || sqlite3PrimaryKeyIndex(pNew)!=0 );
158408 if( !HasRowid(pNew)
158409 && pCtx->pVTable->pMod->pModule->xUpdate!=0
158410 && sqlite3PrimaryKeyIndex(pNew)->nKeyCol!=1
158411 ){
158412 /* WITHOUT ROWID virtual tables must either be read-only (xUpdate==0)
158413 ** or else must have a single-column PRIMARY KEY */
158414 rc = SQLITE_ERROR;
158415 }
158416 pIdx = pNew->pIndex;
158417 if( pIdx ){
158418 assert( pIdx->pNext==0 );
158419 pTab->pIndex = pIdx;
158420 pNew->pIndex = 0;
158421 pIdx->pTable = pTab;
158422 }
158423 }
158424 pCtx->bDeclared = 1;
158425 }else{
158427 (sParse.zErrMsg ? "%s" : 0), sParse.zErrMsg);
158428 sqlite3DbFree(db, sParse.zErrMsg);
158429 rc = SQLITE_ERROR;
158430 }
158431 sParse.eParseMode = PARSE_MODE_NORMAL;
158432
158433 if( sParse.pVdbe ){
158434 sqlite3VdbeFinalize(sParse.pVdbe);
158435 }
158436 sqlite3DeleteTable(db, sParse.pNewTable);
158437 sqlite3ParseObjectReset(&sParse);
158438 db->init.busy = initBusy;
Table * pTable
Definition sqlite3.c:19146
i16 nNVCol
Definition sqlite3.c:18804
#define PARSE_MODE_NORMAL
Definition sqlite3.c:20368
LogEst nQueryLoop
Definition sqlite3.c:20249
#define TK_COMMENT
Definition sqlite3.c:15044
#define TF_WithoutRowid
Definition sqlite3.c:18856
int bDeclared
Definition sqlite3.c:157549
Table * pTab
Definition sqlite3.c:157547
Table * pNewTable
Definition sqlite3.c:20350
#define TK_CREATE
Definition sqlite3.c:14876
u8 disableTriggers
Definition sqlite3.c:20262
const sqlite3_module * pModule
Definition sqlite3.c:18579
u8 busy
Definition sqlite3.c:18074
VtabCtx * pVtabCtx
Definition sqlite3.c:18138
#define PARSE_MODE_DECLARE_VTAB
Definition sqlite3.c:20369
#define TK_SPACE
Definition sqlite3.c:15043
Vdbe * pVdbe
Definition sqlite3.c:20247
static int sqlite3GetToken(const unsigned char *, int *)
Definition sqlite3.c:181575
Column * aCol
Definition sqlite3.c:18794
VTable * pVTable
Definition sqlite3.c:157546
static Index * sqlite3PrimaryKeyIndex(Table *)
Definition sqlite3.c:124029
static void sqlite3ExprListDelete(sqlite3 *, ExprList *)
Definition sqlite3.c:112605
struct sqlite3::sqlite3InitInfo init
u8 eParseMode
Definition sqlite3.c:20341
Module * pMod
Definition sqlite3.c:18772
static int sqlite3RunParser(Parse *, const char *)
Definition sqlite3.c:181901
#define TK_TABLE
Definition sqlite3.c:14875
Definition sqlite3.c:157545
int(* xUpdate)(sqlite3_vtab *, int, sqlite3_value **, sqlite3_int64 *)
Definition sqlite3.c:7858

References Table::aCol, VtabCtx::bDeclared, sqlite3::sqlite3InitInfo::busy, Parse::disableTriggers, Parse::eParseMode, HasRowid, sqlite3::init, IsOrdinaryTable, IsVirtual, sqlite3::mallocFailed, sqlite3::mutex, Table::nCol, Table::nNVCol, Parse::nQueryLoop, PARSE_MODE_DECLARE_VTAB, PARSE_MODE_NORMAL, Table::pIndex, VTable::pMod, Module::pModule, Parse::pNewTable, Index::pNext, VtabCtx::pTab, Index::pTable, Parse::pVdbe, sqlite3::pVtabCtx, VtabCtx::pVTable, sqlite3_mutex_enter, sqlite3_mutex_leave, sqlite3ApiExit(), sqlite3DbFree(), sqlite3DeleteTable(), sqlite3Error(), sqlite3ErrorWithMsg(), sqlite3ExprListDelete(), sqlite3GetToken(), sqlite3ParseObjectInit(), sqlite3ParseObjectReset(), sqlite3PrimaryKeyIndex(), sqlite3RunParser(), sqlite3SafetyCheckOk(), sqlite3VdbeFinalize(), SQLITE_API, SQLITE_ERROR, SQLITE_MISUSE_BKPT, SQLITE_OK, Table::tabFlags, TF_NoVisibleRowid, TF_WithoutRowid, TK_COMMENT, TK_CREATE, TK_SPACE, TK_TABLE, Table::u, sqlite3_module::xUpdate, and Parse::zErrMsg.

Here is the call graph for this function:

◆ sqlite3_deserialize()

int sqlite3_deserialize ( sqlite3 * db,
const char * zSchema,
unsigned char * pData,
sqlite3_int64 szDb,
sqlite3_int64 szBuf,
unsigned mFlags )
54659 {
54660 MemFile *p;
54661 char *zSql;
54662 sqlite3_stmt *pStmt = 0;
54663 int rc;
54664 int iDb;
54665
54666#ifdef SQLITE_ENABLE_API_ARMOR
54667 if( !sqlite3SafetyCheckOk(db) ){
54668 return SQLITE_MISUSE_BKPT;
54669 }
54670 if( szDb<0 ) return SQLITE_MISUSE_BKPT;
54671 if( szBuf<0 ) return SQLITE_MISUSE_BKPT;
54672#endif
54673
54675 if( zSchema==0 ) zSchema = db->aDb[0].zDbSName;
54676 iDb = sqlite3FindDbName(db, zSchema);
54677 testcase( iDb==1 );
54678 if( iDb<2 && iDb!=0 ){
54679 rc = SQLITE_ERROR;
54680 goto end_deserialize;
54681 }
54682 zSql = sqlite3_mprintf("ATTACH x AS %Q", zSchema);
54683 if( zSql==0 ){
54684 rc = SQLITE_NOMEM;
54685 }else{
54686 rc = sqlite3_prepare_v2(db, zSql, -1, &pStmt, 0);
54687 sqlite3_free(zSql);
54688 }
54689 if( rc ) goto end_deserialize;
54690 db->init.iDb = (u8)iDb;
54691 db->init.reopenMemdb = 1;
54692 rc = sqlite3_step(pStmt);
54693 db->init.reopenMemdb = 0;
54694 if( rc!=SQLITE_DONE ){
54695 rc = SQLITE_ERROR;
54696 goto end_deserialize;
54697 }
54698 p = memdbFromDbSchema(db, zSchema);
54699 if( p==0 ){
54700 rc = SQLITE_ERROR;
54701 }else{
54702 MemStore *pStore = p->pStore;
54703 pStore->aData = pData;
54704 pData = 0;
54705 pStore->sz = szDb;
54706 pStore->szAlloc = szBuf;
54707 pStore->szMax = szBuf;
54708 if( pStore->szMax<sqlite3GlobalConfig.mxMemdbSize ){
54709 pStore->szMax = sqlite3GlobalConfig.mxMemdbSize;
54710 }
54711 pStore->mFlags = mFlags;
54712 rc = SQLITE_OK;
54713 }
54714
54715end_deserialize:
54716 sqlite3_finalize(pStmt);
unsigned reopenMemdb
Definition sqlite3.c:18077
static int sqlite3FindDbName(sqlite3 *, const char *)
Definition sqlite3.c:123891
sqlite3_int64 szMax
Definition sqlite3.c:53880
sqlite3_int64 szAlloc
Definition sqlite3.c:53879
unsigned char * aData
Definition sqlite3.c:53881
sqlite3_int64 sz
Definition sqlite3.c:53878
MemStore * pStore
Definition sqlite3.c:53894
unsigned mFlags
Definition sqlite3.c:53884
u8 iDb
Definition sqlite3.c:18073
static MemFile * memdbFromDbSchema(sqlite3 *db, const char *zSchema)
Definition sqlite3.c:54541
Definition sqlite3.c:53892
Definition sqlite3.c:53877
#define sqlite3_step
Definition sqlite3ext.h:498
#define sqlite3_mprintf
Definition sqlite3ext.h:471
#define sqlite3_finalize
Definition sqlite3ext.h:457
#define sqlite3_prepare_v2
Definition sqlite3ext.h:476

◆ sqlite3_drop_modules()

int sqlite3_drop_modules ( sqlite3 * db,
const char ** azKeep )
157667 {
157668 HashElem *pThis, *pNext;
157669#ifdef SQLITE_ENABLE_API_ARMOR
157670 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
157671#endif
157672 for(pThis=sqliteHashFirst(&db->aModule); pThis; pThis=pNext){
157673 Module *pMod = (Module*)sqliteHashData(pThis);
157674 pNext = sqliteHashNext(pThis);
157675 if( azNames ){
157676 int ii;
157677 for(ii=0; azNames[ii]!=0 && strcmp(azNames[ii],pMod->zName)!=0; ii++){}
Hash aModule
Definition sqlite3.c:18137
const char * zName
Definition sqlite3.c:18580
Definition sqlite3.c:18578

◆ sqlite3_enable_load_extension()

int sqlite3_enable_load_extension ( sqlite3 * db,
int onoff )
139790 {
139791#ifdef SQLITE_ENABLE_API_ARMOR
139792 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
139793#endif
139795 if( onoff ){
#define SQLITE_LoadExtFunc
Definition sqlite3.c:18217

Referenced by open_db().

Here is the caller graph for this function:

◆ sqlite3_enable_shared_cache()

int sqlite3_enable_shared_cache ( int enable)

◆ sqlite3_errcode()

int sqlite3_errcode ( sqlite3 * db)
185373 {
185374 if( db && !sqlite3SafetyCheckSickOrOk(db) ){
static int sqlite3SafetyCheckSickOrOk(sqlite3 *)
Definition sqlite3.c:37068

◆ sqlite3_errmsg()

const char * sqlite3_errmsg ( sqlite3 * db)
185290 {
185291 const char *z;
185292 if( !db ){
185294 }
185295 if( !sqlite3SafetyCheckSickOrOk(db) ){
185297 }
185299 if( db->mallocFailed ){
185301 }else{
185302 testcase( db->pErr==0 );
185303 z = db->errCode ? (char*)sqlite3_value_text(db->pErr) : 0;
185304 assert( !db->mallocFailed );
static const char * sqlite3ErrStr(int)
Definition sqlite3.c:184229
int errCode
Definition sqlite3.c:18047
sqlite3_value * pErr
Definition sqlite3.c:18120

◆ sqlite3_errmsg16()

const void * sqlite3_errmsg16 ( sqlite3 * db)
185331 {
185332 static const u16 outOfMem[] = {
185333 'o', 'u', 't', ' ', 'o', 'f', ' ', 'm', 'e', 'm', 'o', 'r', 'y', 0
185334 };
185335 static const u16 misuse[] = {
185336 'b', 'a', 'd', ' ', 'p', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', ' ',
185337 'o', 'r', ' ', 'o', 't', 'h', 'e', 'r', ' ', 'A', 'P', 'I', ' ',
185338 'm', 'i', 's', 'u', 's', 'e', 0
185339 };
185340
185341 const void *z;
185342 if( !db ){
185343 return (void *)outOfMem;
185344 }
185345 if( !sqlite3SafetyCheckSickOrOk(db) ){
185346 return (void *)misuse;
185347 }
185349 if( db->mallocFailed ){
185350 z = (void *)outOfMem;
185351 }else{
185352 z = sqlite3_value_text16(db->pErr);
185353 if( z==0 ){
185355 z = sqlite3_value_text16(db->pErr);
185356 }
185357 /* A malloc() may have failed within the call to sqlite3_value_text16()
185358 ** above. If this is the case, then the db->mallocFailed flag needs to
185359 ** be cleared before returning. Do this directly, instead of via
unsigned short int u16
Definition shell.c:38

◆ sqlite3_error_offset()

int sqlite3_error_offset ( sqlite3 * db)
185316 {
185317 int iOffset = -1;

◆ sqlite3_errstr()

const char * sqlite3_errstr ( int rc)

◆ sqlite3_exec()

int sqlite3_exec ( sqlite3 * db,
const char * sql,
int(* callback )(void *, int, char **, char **),
void * pArg,
char ** errmsg )
138218 {
138219 int rc = SQLITE_OK; /* Return code */
138220 const char *zLeftover; /* Tail of unprocessed SQL */
138221 sqlite3_stmt *pStmt = 0; /* The current SQL statement */
138222 char **azCols = 0; /* Names of result columns */
138223 int callbackIsInit; /* True if callback data is initialized */
138224
138225 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
138226 if( zSql==0 ) zSql = "";
138227
138229 sqlite3Error(db, SQLITE_OK);
138230 while( rc==SQLITE_OK && zSql[0] ){
138231 int nCol = 0;
138232 char **azVals = 0;
138233
138234 pStmt = 0;
138235 rc = sqlite3_prepare_v2(db, zSql, -1, &pStmt, &zLeftover);
138236 assert( rc==SQLITE_OK || pStmt==0 );
138237 if( rc!=SQLITE_OK ){
138238 continue;
138239 }
138240 if( !pStmt ){
138241 /* this happens for a comment or white-space */
138242 zSql = zLeftover;
138243 continue;
138244 }
138245 callbackIsInit = 0;
138246
138247 while( 1 ){
138248 int i;
138249 rc = sqlite3_step(pStmt);
138250
138251 /* Invoke the callback function if required */
138252 if( xCallback && (SQLITE_ROW==rc ||
138253 (SQLITE_DONE==rc && !callbackIsInit
138254 && db->flags&SQLITE_NullCallback)) ){
138255 if( !callbackIsInit ){
138256 nCol = sqlite3_column_count(pStmt);
138257 azCols = sqlite3DbMallocRaw(db, (2*nCol+1)*sizeof(const char*));
138258 if( azCols==0 ){
138259 goto exec_out;
138260 }
138261 for(i=0; i<nCol; i++){
138262 azCols[i] = (char *)sqlite3_column_name(pStmt, i);
138263 /* sqlite3VdbeSetColName() installs column names as UTF8
138264 ** strings so there is no way for sqlite3_column_name() to fail. */
138265 assert( azCols[i]!=0 );
138266 }
138267 callbackIsInit = 1;
138268 }
138269 if( rc==SQLITE_ROW ){
138270 azVals = &azCols[nCol];
138271 for(i=0; i<nCol; i++){
138272 azVals[i] = (char *)sqlite3_column_text(pStmt, i);
138273 if( !azVals[i] && sqlite3_column_type(pStmt, i)!=SQLITE_NULL ){
138274 sqlite3OomFault(db);
138275 goto exec_out;
138276 }
138277 }
138278 azVals[i] = 0;
138279 }
138280 if( xCallback(pArg, nCol, azVals, azCols) ){
138281 /* EVIDENCE-OF: R-38229-40159 If the callback function to
138282 ** sqlite3_exec() returns non-zero, then sqlite3_exec() will
138283 ** return SQLITE_ABORT. */
138284 rc = SQLITE_ABORT;
138285 sqlite3VdbeFinalize((Vdbe *)pStmt);
138286 pStmt = 0;
138288 goto exec_out;
138289 }
138290 }
138291
138292 if( rc!=SQLITE_ROW ){
138293 rc = sqlite3VdbeFinalize((Vdbe *)pStmt);
138294 pStmt = 0;
138295 zSql = zLeftover;
138296 while( sqlite3Isspace(zSql[0]) ) zSql++;
138297 break;
138298 }
138299 }
138300
138301 sqlite3DbFree(db, azCols);
138302 azCols = 0;
138303 }
138304
138305exec_out:
138306 if( pStmt ) sqlite3VdbeFinalize((Vdbe *)pStmt);
138307 sqlite3DbFree(db, azCols);
138308
138309 rc = sqlite3ApiExit(db, rc);
138310 if( rc!=SQLITE_OK && pzErrMsg ){
138311 *pzErrMsg = sqlite3DbStrDup(0, sqlite3_errmsg(db));
138312 if( *pzErrMsg==0 ){
138313 rc = SQLITE_NOMEM_BKPT;
138315 }
138316 }else if( pzErrMsg ){
138317 *pzErrMsg = 0;
#define SQLITE_NullCallback
Definition sqlite3.c:18207
static int sqlite3ApiExit(sqlite3 *db, int)
Definition sqlite3.c:31632
static void * sqlite3OomFault(sqlite3 *)
Definition sqlite3.c:31572
#define SQLITE_ROW
Definition sqlite3.c:795
static void * sqlite3DbMallocRaw(sqlite3 *, u64)
Definition sqlite3.c:31381
static char * sqlite3DbStrDup(sqlite3 *, const char *)
Definition sqlite3.c:31506
#define sqlite3Isspace(x)
Definition sqlite3.c:21042
#define SQLITE_NULL
Definition sqlite3.c:5565
#define sqlite3_column_name
Definition sqlite3ext.h:427
#define sqlite3_errmsg
Definition sqlite3ext.h:451
#define sqlite3_column_type
Definition sqlite3ext.h:435
#define sqlite3_column_text
Definition sqlite3ext.h:433
#define sqlite3_column_count
Definition sqlite3ext.h:419

References sqlite3::errMask, sqlite3::flags, sqlite3::mutex, sqlite3_column_count, sqlite3_column_name, sqlite3_column_text, sqlite3_column_type, sqlite3_errmsg, sqlite3_mutex_enter, sqlite3_mutex_leave, sqlite3_prepare_v2, sqlite3_step, sqlite3ApiExit(), sqlite3DbFree(), sqlite3DbMallocRaw(), sqlite3DbStrDup(), sqlite3Error(), sqlite3Isspace, sqlite3OomFault(), sqlite3SafetyCheckOk(), sqlite3VdbeFinalize(), SQLITE_ABORT, SQLITE_API, SQLITE_DONE, SQLITE_MISUSE_BKPT, SQLITE_NOMEM, SQLITE_NOMEM_BKPT, SQLITE_NULL, SQLITE_NullCallback, SQLITE_OK, and SQLITE_ROW.

Here is the call graph for this function:

◆ sqlite3_expanded_sql()

char * sqlite3_expanded_sql ( sqlite3_stmt * pStmt)
93577 {
93578#ifdef SQLITE_OMIT_TRACE
93579 return 0;
93580#else
93581 char *z = 0;
93582 const char *zSql = sqlite3_sql(pStmt);
93583 if( zSql ){
93584 Vdbe *p = (Vdbe *)pStmt;
#define sqlite3_sql
Definition sqlite3ext.h:559

References Vdbe::db, sqlite3::mutex, sqlite3_mutex_enter, sqlite3_mutex_leave, sqlite3_sql, sqlite3VdbeExpandSql(), and SQLITE_API.

Here is the call graph for this function:

◆ sqlite3_expired()

int sqlite3_expired ( sqlite3_stmt * pStmt)

References Vdbe::expired, and SQLITE_API.

◆ sqlite3_extended_errcode()

int sqlite3_extended_errcode ( sqlite3 * db)
185377 {
185378 return SQLITE_NOMEM_BKPT;
185379 }
185380 return db->errCode & db->errMask;
185381}
185383 if( db && !sqlite3SafetyCheckSickOrOk(db) ){
int errMask
Definition sqlite3.c:18049
#define sqlite3_extended_errcode
Definition sqlite3ext.h:572

References SQLITE_MISUSE_BKPT.

◆ sqlite3_extended_result_codes()

int sqlite3_extended_result_codes ( sqlite3 * db,
int onoff )
186677 : 1000*ms)/1000);
186678 return rc;
186679}
186680
186681/*
186682** Enable or disable the extended result codes.
186683*/
186685#ifdef SQLITE_ENABLE_API_ARMOR
#define sqlite3_extended_result_codes
Definition sqlite3ext.h:556

◆ sqlite3_file_control()

int sqlite3_file_control ( sqlite3 * db,
const char * zDbName,
int op,
void * pArg )
186697 {
186698 int rc = SQLITE_ERROR;
186699 Btree *pBtree;
186700
186701#ifdef SQLITE_ENABLE_API_ARMOR
186702 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
186703#endif
186705 pBtree = sqlite3DbNameToBtree(db, zDbName);
186706 if( pBtree ){
186707 Pager *pPager;
186708 sqlite3_file *fd;
186709 sqlite3BtreeEnter(pBtree);
186710 pPager = sqlite3BtreePager(pBtree);
186711 assert( pPager!=0 );
186712 fd = sqlite3PagerFile(pPager);
186713 assert( fd!=0 );
186714 if( op==SQLITE_FCNTL_FILE_POINTER ){
186715 *(sqlite3_file**)pArg = fd;
186716 rc = SQLITE_OK;
186717 }else if( op==SQLITE_FCNTL_VFS_POINTER ){
186718 *(sqlite3_vfs**)pArg = sqlite3PagerVfs(pPager);
186719 rc = SQLITE_OK;
186720 }else if( op==SQLITE_FCNTL_JOURNAL_POINTER ){
186721 *(sqlite3_file**)pArg = sqlite3PagerJrnlFile(pPager);
186722 rc = SQLITE_OK;
186723 }else if( op==SQLITE_FCNTL_DATA_VERSION ){
186724 *(unsigned int*)pArg = sqlite3PagerDataVersion(pPager);
186725 rc = SQLITE_OK;
186726 }else if( op==SQLITE_FCNTL_RESERVE_BYTES ){
186727 int iNew = *(int*)pArg;
186728 *(int*)pArg = sqlite3BtreeGetRequestedReserve(pBtree);
186729 if( iNew>=0 && iNew<=255 ){
186730 sqlite3BtreeSetPageSize(pBtree, 0, iNew, 0);
186731 }
186732 rc = SQLITE_OK;
186733 }else if( op==SQLITE_FCNTL_RESET_CACHE ){
186734 sqlite3BtreeClearCache(pBtree);
186735 rc = SQLITE_OK;
186736 }else{
186737 int nSave = db->busyHandler.nBusy;
186738 rc = sqlite3OsFileControl(fd, op, pArg);
static sqlite3_vfs * sqlite3PagerVfs(Pager *)
Definition sqlite3.c:65134
#define SQLITE_FCNTL_DATA_VERSION
Definition sqlite3.c:1578
static int sqlite3BtreeGetRequestedReserve(Btree *)
Definition sqlite3.c:74677
#define SQLITE_FCNTL_FILE_POINTER
Definition sqlite3.c:1551
static void sqlite3BtreeClearCache(Btree *)
Definition sqlite3.c:83032
static int sqlite3OsFileControl(sqlite3_file *, int, void *)
Definition sqlite3.c:26659
static sqlite3_file * sqlite3PagerJrnlFile(Pager *)
Definition sqlite3.c:65151
static int sqlite3BtreeSetPageSize(Btree *p, int nPagesize, int nReserve, int eFix)
Definition sqlite3.c:74614
#define SQLITE_FCNTL_VFS_POINTER
Definition sqlite3.c:1570
#define SQLITE_FCNTL_RESET_CACHE
Definition sqlite3.c:1585
#define SQLITE_FCNTL_JOURNAL_POINTER
Definition sqlite3.c:1571
#define SQLITE_FCNTL_RESERVE_BYTES
Definition sqlite3.c:1581
static Btree * sqlite3DbNameToBtree(sqlite3 *, const char *)
Definition sqlite3.c:187481
static u32 sqlite3PagerDataVersion(Pager *)
Definition sqlite3.c:59830
Definition sqlite3.c:1808

References SQLITE_OK.

◆ sqlite3_filename_database()

const char * sqlite3_filename_database ( sqlite3_filename zFilename)

◆ sqlite3_filename_journal()

const char * sqlite3_filename_journal ( sqlite3_filename zFilename)
187461 {
187462 if( zFilename==0 ) return 0;
187463 return databaseName(zFilename);
187464}
187465SQLITE_API const char *sqlite3_filename_journal(const char *zFilename){
187466 if( zFilename==0 ) return 0;
187467 zFilename = databaseName(zFilename);
static const char * databaseName(const char *zName)
Definition sqlite3.c:187319
#define sqlite3_filename_journal
Definition sqlite3ext.h:669

References databaseName(), and SQLITE_API.

Here is the call graph for this function:

◆ sqlite3_filename_wal()

const char * sqlite3_filename_wal ( sqlite3_filename zFilename)
187469 {
187470 zFilename += sqlite3Strlen30(zFilename) + 1;
187471 zFilename += sqlite3Strlen30(zFilename) + 1;
187472 }
187473 return zFilename + 1;
187474}
187475SQLITE_API const char *sqlite3_filename_wal(const char *zFilename){
187476#ifdef SQLITE_OMIT_WAL
#define sqlite3_filename_wal
Definition sqlite3ext.h:670

References sqlite3Strlen30().

Here is the call graph for this function:

◆ sqlite3_finalize()

int sqlite3_finalize ( sqlite3_stmt * pStmt)
91558 {
91559 int rc;
91560 if( pStmt==0 ){
91561 /* IMPLEMENTATION-OF: R-57228-12904 Invoking sqlite3_finalize() on a NULL
91562 ** pointer is a harmless no-op. */
91563 rc = SQLITE_OK;
91564 }else{
91565 Vdbe *v = (Vdbe*)pStmt;
91566 sqlite3 *db = v->db;
91567 if( vdbeSafety(v) ) return SQLITE_MISUSE_BKPT;
91569 checkProfileCallback(db, v);
91570 assert( v->eVdbeState>=VDBE_READY_STATE );
91571 rc = sqlite3VdbeReset(v);
#define checkProfileCallback(DB, P)
Definition sqlite3.c:91537
#define VDBE_READY_STATE
Definition sqlite3.c:24110
static int sqlite3VdbeReset(Vdbe *)
Definition sqlite3.c:89463
u8 eVdbeState
Definition sqlite3.c:24077
static int vdbeSafety(Vdbe *p)
Definition sqlite3.c:91493

References checkProfileCallback, Vdbe::db, Vdbe::eVdbeState, sqlite3::mutex, sqlite3_mutex_enter, sqlite3ApiExit(), sqlite3LeaveMutexAndCloseZombie(), sqlite3VdbeDelete(), sqlite3VdbeReset(), SQLITE_API, SQLITE_MISUSE_BKPT, SQLITE_OK, VDBE_READY_STATE, and vdbeSafety().

Here is the call graph for this function:

◆ sqlite3_free()

void sqlite3_free ( void * p)
31140 {
31141 if( p==0 ) return; /* IMP: R-49053-54554 */
31143 assert( sqlite3MemdebugNoType(p, (u8)~MEMTYPE_HEAP) );
31144 if( sqlite3GlobalConfig.bMemstat ){
31148 sqlite3GlobalConfig.m.xFree(p);
#define sqlite3MemdebugHasType(X, Y)
Definition sqlite3.c:22192
#define mem0
Definition sqlite3.c:30780
static void sqlite3StatusDown(int, int)
Definition sqlite3.c:24407
#define SQLITE_STATUS_MEMORY_USED
Definition sqlite3.c:9171
#define MEMTYPE_HEAP
Definition sqlite3.c:22195
#define sqlite3MemdebugNoType(X, Y)
Definition sqlite3.c:22193
static int sqlite3MallocSize(const void *)
Definition sqlite3.c:31088
#define SQLITE_STATUS_MALLOC_COUNT
Definition sqlite3.c:9180

◆ sqlite3_free_filename()

void sqlite3_free_filename ( sqlite3_filename p)

◆ sqlite3_free_table()

void sqlite3_free_table ( char ** result)
153823 {
153824 if( azResult ){
153825 int i, n;
153826 azResult--;

◆ sqlite3_get_autocommit()

int sqlite3_get_autocommit ( sqlite3 * db)
186480 {
186481#ifdef SQLITE_ENABLE_API_ARMOR

References sqlite3::autoCommit, sqlite3SafetyCheckOk(), SQLITE_API, and SQLITE_MISUSE_BKPT.

Here is the call graph for this function:

◆ sqlite3_get_auxdata()

void * sqlite3_get_auxdata ( sqlite3_context * pCtx,
int N )
92606 : If iArg is negative then access a cache of
92607** auxiliary data pointers that is available to all functions within a
92608** single prepared statement. The iArg values must match.
92609*/
92610SQLITE_API void *sqlite3_get_auxdata(sqlite3_context *pCtx, int iArg){
92611 AuxData *pAuxData;
92612
92613#ifdef SQLITE_ENABLE_API_ARMOR
92614 if( pCtx==0 ) return 0;
92615#endif
92616 assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
92617#if SQLITE_ENABLE_STAT4
92618 if( pCtx->pVdbe==0 ) return 0;
92619#else
92620 assert( pCtx->pVdbe!=0 );
92621#endif
92622 for(pAuxData=pCtx->pVdbe->pAuxData; pAuxData; pAuxData=pAuxData->pNextAux){
AuxData * pAuxData
Definition sqlite3.c:24099
Vdbe * pVdbe
Definition sqlite3.c:23974
AuxData * pNextAux
Definition sqlite3.c:23954
Definition sqlite3.c:23949
#define sqlite3_get_auxdata
Definition sqlite3ext.h:461

References sqlite3_value::db, AuxData::iAuxArg, AuxData::iAuxOp, sqlite3_context::iOp, sqlite3::mutex, AuxData::pAux, Vdbe::pAuxData, AuxData::pNextAux, sqlite3_context::pOut, sqlite3_context::pVdbe, sqlite3_mutex_held(), and SQLITE_API.

Here is the call graph for this function:

◆ sqlite3_get_clientdata()

void * sqlite3_get_clientdata ( sqlite3 * db,
const char * zName )
186404 {
186405 DbClientData *p;
186407 for(p=db->pDbData; p; p=p->pNext){
186408 if( strcmp(p->zName, zName)==0 ){
186409 void *pResult = p->pData;
DbClientData * pNext
Definition sqlite3.c:20876
void * pData
Definition sqlite3.c:20877
DbClientData * pDbData
Definition sqlite3.c:18158
char zName[1]
Definition sqlite3.c:20879
Definition sqlite3.c:20875

References SQLITE_OK.

◆ sqlite3_get_table()

int sqlite3_get_table ( sqlite3 * db,
const char * zSql,
char *** pazResult,
int * pnRow,
int * pnColumn,
char ** pzErrmsg )
153759 {
153760 int rc;
153761 TabResult res;
153762
153763#ifdef SQLITE_ENABLE_API_ARMOR
153764 if( !sqlite3SafetyCheckOk(db) || pazResult==0 ) return SQLITE_MISUSE_BKPT;
153765#endif
153766 *pazResult = 0;
153767 if( pnColumn ) *pnColumn = 0;
153768 if( pnRow ) *pnRow = 0;
153769 if( pzErrMsg ) *pzErrMsg = 0;
153770 res.zErrMsg = 0;
153771 res.nRow = 0;
153772 res.nColumn = 0;
153773 res.nData = 1;
153774 res.nAlloc = 20;
153775 res.rc = SQLITE_OK;
153776 res.azResult = sqlite3_malloc64(sizeof(char*)*res.nAlloc );
153777 if( res.azResult==0 ){
153778 db->errCode = SQLITE_NOMEM;
153779 return SQLITE_NOMEM_BKPT;
153780 }
153781 res.azResult[0] = 0;
153782 rc = sqlite3_exec(db, zSql, sqlite3_get_table_cb, &res, pzErrMsg);
153783 assert( sizeof(res.azResult[0])>= sizeof(res.nData) );
153784 res.azResult[0] = SQLITE_INT_TO_PTR(res.nData);
153785 if( (rc&0xff)==SQLITE_ABORT ){
153786 sqlite3_free_table(&res.azResult[1]);
153787 if( res.zErrMsg ){
153788 if( pzErrMsg ){
153789 sqlite3_free(*pzErrMsg);
153790 *pzErrMsg = sqlite3_mprintf("%s",res.zErrMsg);
153791 }
153792 sqlite3_free(res.zErrMsg);
153793 }
153794 db->errCode = res.rc; /* Assume 32-bit assignment is atomic */
153795 return res.rc;
153796 }
153797 sqlite3_free(res.zErrMsg);
153798 if( rc!=SQLITE_OK ){
153799 sqlite3_free_table(&res.azResult[1]);
153800 return rc;
153801 }
153802 if( res.nAlloc>res.nData ){
153803 char **azNew;
153804 azNew = sqlite3Realloc( res.azResult, sizeof(char*)*res.nData );
153805 if( azNew==0 ){
153806 sqlite3_free_table(&res.azResult[1]);
153807 db->errCode = SQLITE_NOMEM;
153808 return SQLITE_NOMEM_BKPT;
153809 }
153810 res.azResult = azNew;
u32 nRow
Definition sqlite3.c:153661
u32 nData
Definition sqlite3.c:153663
static int sqlite3_get_table_cb(void *pArg, int nCol, char **argv, char **colv)
Definition sqlite3.c:153672
u32 nColumn
Definition sqlite3.c:153662
int rc
Definition sqlite3.c:153664
char * zErrMsg
Definition sqlite3.c:153659
char ** azResult
Definition sqlite3.c:153658
u32 nAlloc
Definition sqlite3.c:153660
#define SQLITE_INT_TO_PTR(X)
Definition sqlite3.c:14401
static void * sqlite3Realloc(void *, u64)
Definition sqlite3.c:31247
Definition sqlite3.c:153657
#define sqlite3_free_table
Definition sqlite3ext.h:459
#define sqlite3_exec
Definition sqlite3ext.h:453

References TabResult::azResult, sqlite3::errCode, TabResult::nAlloc, TabResult::nColumn, TabResult::nData, TabResult::nRow, TabResult::rc, sqlite3_exec, sqlite3_free, sqlite3_free_table, sqlite3_get_table_cb(), sqlite3_malloc64, sqlite3_mprintf, sqlite3Realloc(), sqlite3SafetyCheckOk(), SQLITE_ABORT, SQLITE_API, SQLITE_INT_TO_PTR, SQLITE_MISUSE_BKPT, SQLITE_NOMEM, SQLITE_NOMEM_BKPT, SQLITE_OK, and TabResult::zErrMsg.

Here is the call graph for this function:

◆ sqlite3_global_recover()

int sqlite3_global_recover ( void )

References SQLITE_API, and SQLITE_OK.

◆ sqlite3_hard_heap_limit64()

sqlite3_int64 sqlite3_hard_heap_limit64 ( sqlite3_int64 N)
30865 {
30866 sqlite3_int64 priorLimit;
30867#ifndef SQLITE_OMIT_AUTOINIT
30868 int rc = sqlite3_initialize();
30869 if( rc ) return -1;
30870#endif
30872 priorLimit = mem0.hardLimit;
30873 if( n>=0 ){
30874 mem0.hardLimit = n;
30875 if( n<mem0.alarmThreshold || mem0.alarmThreshold==0 ){
30876 mem0.alarmThreshold = n;

References mem0, sqlite3_initialize(), sqlite3_mutex_enter, sqlite3_mutex_leave, and SQLITE_API.

Here is the call graph for this function:

◆ sqlite3_initialize()

int sqlite3_initialize ( void )
182790 {
182791 MUTEX_LOGIC( sqlite3_mutex *pMainMtx; ) /* The main static mutex */
182792 int rc; /* Result code */
182793#ifdef SQLITE_EXTRA_INIT
182794 int bRunExtraInit = 0; /* Extra initialization needed */
182795#endif
182796
182797#ifdef SQLITE_OMIT_WSD
182798 rc = sqlite3_wsd_init(4096, 24);
182799 if( rc!=SQLITE_OK ){
182800 return rc;
182801 }
182802#endif
182803
182804 /* If the following assert() fails on some obscure processor/compiler
182805 ** combination, the work-around is to set the correct pointer
182806 ** size at compile-time using -DSQLITE_PTRSIZE=n compile-time option */
182807 assert( SQLITE_PTRSIZE==sizeof(char*) );
182808
182809 /* If SQLite is already completely initialized, then this call
182810 ** to sqlite3_initialize() should be a no-op. But the initialization
182811 ** must be complete. So isInit must not be set until the very end
182812 ** of this routine.
182813 */
182814 if( sqlite3GlobalConfig.isInit ){
182816 return SQLITE_OK;
182817 }
182818
182819 /* Make sure the mutex subsystem is initialized. If unable to
182820 ** initialize the mutex subsystem, return early with the error.
182821 ** If the system is so sick that we are unable to allocate a mutex,
182822 ** there is not much SQLite is going to be able to do.
182823 **
182824 ** The mutex subsystem must take care of serializing its own
182825 ** initialization.
182826 */
182827 rc = sqlite3MutexInit();
182828 if( rc ) return rc;
182829
182830 /* Initialize the malloc() system and the recursive pInitMutex mutex.
182831 ** This operation is protected by the STATIC_MAIN mutex. Note that
182832 ** MutexAlloc() is called for a static mutex prior to initializing the
182833 ** malloc subsystem - this implies that the allocation of a static
182834 ** mutex must not require support from the malloc subsystem.
182835 */
182837 sqlite3_mutex_enter(pMainMtx);
182838 sqlite3GlobalConfig.isMutexInit = 1;
182839 if( !sqlite3GlobalConfig.isMallocInit ){
182840 rc = sqlite3MallocInit();
182841 }
182842 if( rc==SQLITE_OK ){
182843 sqlite3GlobalConfig.isMallocInit = 1;
182844 if( !sqlite3GlobalConfig.pInitMutex ){
182845 sqlite3GlobalConfig.pInitMutex =
182847 if( sqlite3GlobalConfig.bCoreMutex && !sqlite3GlobalConfig.pInitMutex ){
182848 rc = SQLITE_NOMEM_BKPT;
182849 }
182850 }
182851 }
182852 if( rc==SQLITE_OK ){
182853 sqlite3GlobalConfig.nRefInitMutex++;
182854 }
182855 sqlite3_mutex_leave(pMainMtx);
182856
182857 /* If rc is not SQLITE_OK at this point, then either the malloc
182858 ** subsystem could not be initialized or the system failed to allocate
182859 ** the pInitMutex mutex. Return an error in either case. */
182860 if( rc!=SQLITE_OK ){
182861 return rc;
182862 }
182863
182864 /* Do the rest of the initialization under the recursive mutex so
182865 ** that we will be able to handle recursive calls into
182866 ** sqlite3_initialize(). The recursive calls normally come through
182867 ** sqlite3_os_init() when it invokes sqlite3_vfs_register(), but other
182868 ** recursive calls might also be possible.
182869 **
182870 ** IMPLEMENTATION-OF: R-00140-37445 SQLite automatically serializes calls
182871 ** to the xInit method, so the xInit method need not be threadsafe.
182872 **
182873 ** The following mutex is what serializes access to the appdef pcache xInit
182874 ** methods. The sqlite3_pcache_methods.xInit() all is embedded in the
182875 ** call to sqlite3PcacheInitialize().
182876 */
182878 if( sqlite3GlobalConfig.isInit==0 && sqlite3GlobalConfig.inProgress==0 ){
182879 sqlite3GlobalConfig.inProgress = 1;
182880#ifdef SQLITE_ENABLE_SQLLOG
182881 {
182882 extern void sqlite3_init_sqllog(void);
182883 sqlite3_init_sqllog();
182884 }
182885#endif
182888 if( sqlite3GlobalConfig.isPCacheInit==0 ){
182890 }
182891 if( rc==SQLITE_OK ){
182892 sqlite3GlobalConfig.isPCacheInit = 1;
182893 rc = sqlite3OsInit();
182894 }
182895#ifndef SQLITE_OMIT_DESERIALIZE
182896 if( rc==SQLITE_OK ){
182897 rc = sqlite3MemdbInit();
182898 }
182899#endif
182900 if( rc==SQLITE_OK ){
182903#ifdef SQLITE_EXTRA_INIT_MUTEXED
182904 {
182905 int SQLITE_EXTRA_INIT_MUTEXED(const char*);
182906 rc = SQLITE_EXTRA_INIT_MUTEXED(0);
182907 }
182908#endif
182909 }
182910 if( rc==SQLITE_OK ){
182912 sqlite3GlobalConfig.isInit = 1;
182913#ifdef SQLITE_EXTRA_INIT
182914 bRunExtraInit = 1;
182915#endif
182916 }
182917 sqlite3GlobalConfig.inProgress = 0;
182918 }
182920
182921 /* Go back under the static mutex and clean up the recursive
182922 ** mutex to prevent a resource leak.
182923 */
182924 sqlite3_mutex_enter(pMainMtx);
182925 sqlite3GlobalConfig.nRefInitMutex--;
182926 if( sqlite3GlobalConfig.nRefInitMutex<=0 ){
182927 assert( sqlite3GlobalConfig.nRefInitMutex==0 );
182929 sqlite3GlobalConfig.pInitMutex = 0;
182930 }
182931 sqlite3_mutex_leave(pMainMtx);
182932
182933 /* The following is just a sanity check to make sure SQLite has
182934 ** been compiled correctly. It is important to run this code, but
182935 ** we don't want to run it too often and soak up CPU cycles for no
182936 ** reason. So we run it once during initialization.
182937 */
182938#ifndef NDEBUG
182939#ifndef SQLITE_OMIT_FLOATING_POINT
182940 /* This section of code's only "output" is via assert() statements. */
182941 if( rc==SQLITE_OK ){
182942 u64 x = (((u64)1)<<63)-1;
182943 double y;
182944 assert(sizeof(x)==8);
182945 assert(sizeof(x)==sizeof(y));
182946 memcpy(&y, &x, 8);
182947 assert( sqlite3IsNaN(y) );
182948 }
182949#endif
182950#endif
182951
182952 /* Do extra initialization steps requested by the SQLITE_EXTRA_INIT
182953 ** compile-time option.
182954 */
182955#ifdef SQLITE_EXTRA_INIT
static int sqlite3MutexInit(void)
Definition sqlite3.c:29454
#define SQLITE_MUTEX_RECURSIVE
Definition sqlite3.c:8743
static int sqlite3OsInit(void)
Definition sqlite3.c:26875
static void sqlite3MemoryBarrier(void)
Definition sqlite3.c:29921
static FuncDefHash sqlite3BuiltinFunctions
Definition sqlite3.c:23462
static int sqlite3PcacheInitialize(void)
Definition sqlite3.c:55461
static int sqlite3MallocInit(void)
Definition sqlite3.c:30882
#define SQLITE_PTRSIZE
Definition sqlite3.c:15327
#define MUTEX_LOGIC(X)
Definition sqlite3.c:17801
static void sqlite3PCacheBufferSetup(void *, int sz, int n)
Definition sqlite3.c:56372
static int sqlite3MemdbInit(void)
Definition sqlite3.c:54729
static void sqlite3RegisterBuiltinFunctions(void)
Definition sqlite3.c:133108
static int sqlite3IsNaN(double)
Definition sqlite3.c:35561
#define sqlite3_mutex_free
Definition sqlite3ext.h:538

References MUTEX_LOGIC, sqlite3_mutex_enter, sqlite3_mutex_free, sqlite3_mutex_leave, sqlite3BuiltinFunctions, sqlite3GlobalConfig, sqlite3IsNaN(), sqlite3MallocInit(), sqlite3MemdbInit(), sqlite3MemoryBarrier(), sqlite3MutexAlloc(), sqlite3MutexInit(), sqlite3OsInit(), sqlite3PCacheBufferSetup(), sqlite3PcacheInitialize(), sqlite3RegisterBuiltinFunctions(), SQLITE_API, SQLITE_MUTEX_RECURSIVE, SQLITE_MUTEX_STATIC_MAIN, SQLITE_NOMEM_BKPT, SQLITE_OK, and SQLITE_PTRSIZE.

Referenced by main(), openDatabase(), sqlite3_auto_extension(), sqlite3_complete16(), sqlite3_hard_heap_limit64(), sqlite3_soft_heap_limit64(), sqlite3_vfs_find(), and sqlite3_vfs_register().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sqlite3_interrupt()

void sqlite3_interrupt ( sqlite3 * db)
184485 {
184486#ifdef SQLITE_ENABLE_API_ARMOR
184487 if( !sqlite3SafetyCheckOk(db)
184488 && (db==0 || db->eOpenState!=SQLITE_STATE_ZOMBIE)
u8 eOpenState
Definition sqlite3.c:18065
#define SQLITE_STATE_ZOMBIE
Definition sqlite3.c:18324

References SQLITE_OK.

◆ sqlite3_is_interrupted()

int sqlite3_is_interrupted ( sqlite3 * db)
184501 {
184502#ifdef SQLITE_ENABLE_API_ARMOR
184503 if( !sqlite3SafetyCheckOk(db)
184504 && (db==0 || db->eOpenState!=SQLITE_STATE_ZOMBIE)

◆ sqlite3_keyword_check()

int sqlite3_keyword_check ( const char * zName,
int nName )

◆ sqlite3_keyword_count()

int sqlite3_keyword_count ( void )
181444{

References SQLITE_API.

◆ sqlite3_keyword_name()

int sqlite3_keyword_name ( int i,
const char ** pzName,
int * pnName )
181438 {
181439 int id = TK_ID;
181440 if( n>=2 ) keywordCode((char*)z, n, &id);
181441 return id;
181442}
181443#define SQLITE_N_KEYWORD 147
static int keywordCode(const char *z, int n, int *pType)
Definition sqlite3.c:181258
#define TK_ID
Definition sqlite3.c:14919

◆ sqlite3_last_insert_rowid()

sqlite3_int64 sqlite3_last_insert_rowid ( sqlite3 * db)
183705 {
183706#ifdef SQLITE_ENABLE_API_ARMOR

◆ sqlite3_libversion()

const char * sqlite3_libversion ( void )

◆ sqlite3_libversion_number()

int sqlite3_libversion_number ( void )

◆ sqlite3_limit()

int sqlite3_limit ( sqlite3 * db,
int id,
int newVal )
185548 {
185549 int oldLimit;
185550
185551#ifdef SQLITE_ENABLE_API_ARMOR
185552 if( !sqlite3SafetyCheckOk(db) ){
185553 (void)SQLITE_MISUSE_BKPT;
185554 return -1;
185555 }
185556#endif
185557
185558 /* EVIDENCE-OF: R-30189-54097 For each limit category SQLITE_LIMIT_NAME
185559 ** there is a hard upper bound set at compile-time by a C preprocessor
185560 ** macro called SQLITE_MAX_NAME. (The "_LIMIT_" in the name is changed to
185561 ** "_MAX_".)
185562 */
185577
185578
185579 if( limitId<0 || limitId>=SQLITE_N_LIMIT ){
185580 return -1;
185581 }
185582 oldLimit = db->aLimit[limitId];
185583 if( newLimit>=0 ){ /* IMP: R-52476-28732 */
185584 if( newLimit>aHardLimit[limitId] ){
185585 newLimit = aHardLimit[limitId]; /* IMP: R-51463-25634 */
#define SQLITE_MAX_FUNCTION_ARG
Definition sqlite3.c:14220
static const int aHardLimit[]
Definition sqlite3.c:185478
#define SQLITE_LIMIT_ATTACHED
Definition sqlite3.c:4648
#define SQLITE_LIMIT_COLUMN
Definition sqlite3.c:4643
#define SQLITE_MAX_COMPOUND_SELECT
Definition sqlite3.c:14201
#define SQLITE_MAX_LIKE_PATTERN_LENGTH
Definition sqlite3.c:14325
#define SQLITE_LIMIT_WORKER_THREADS
Definition sqlite3.c:4652
#define SQLITE_LIMIT_COMPOUND_SELECT
Definition sqlite3.c:4645
#define SQLITE_LIMIT_FUNCTION_ARG
Definition sqlite3.c:4647
#define SQLITE_LIMIT_VDBE_OP
Definition sqlite3.c:4646
#define SQLITE_MAX_COLUMN
Definition sqlite3.c:14166
#define SQLITE_MAX_EXPR_DEPTH
Definition sqlite3.c:14189
#define SQLITE_LIMIT_SQL_LENGTH
Definition sqlite3.c:4642
#define SQLITE_LIMIT_EXPR_DEPTH
Definition sqlite3.c:4644
#define SQLITE_MAX_LENGTH
Definition sqlite3.c:14138
#define SQLITE_MAX_WORKER_THREADS
Definition sqlite3.c:15137
#define SQLITE_LIMIT_LIKE_PATTERN_LENGTH
Definition sqlite3.c:4649
#define SQLITE_MAX_VDBE_OP
Definition sqlite3.c:14209
#define SQLITE_LIMIT_TRIGGER_DEPTH
Definition sqlite3.c:4651
#define SQLITE_MAX_ATTACHED
Definition sqlite3.c:14251
#define SQLITE_MAX_SQL_LENGTH
Definition sqlite3.c:14179
#define SQLITE_LIMIT_VARIABLE_NUMBER
Definition sqlite3.c:4650
#define SQLITE_MAX_VARIABLE_NUMBER
Definition sqlite3.c:14262
#define SQLITE_MAX_TRIGGER_DEPTH
Definition sqlite3.c:14336
#define SQLITE_N_LIMIT
Definition sqlite3.c:17912

References aHardLimit, sqlite3::aLimit, sqlite3SafetyCheckOk(), SQLITE_API, SQLITE_LIMIT_ATTACHED, SQLITE_LIMIT_COLUMN, SQLITE_LIMIT_COMPOUND_SELECT, SQLITE_LIMIT_EXPR_DEPTH, SQLITE_LIMIT_FUNCTION_ARG, SQLITE_LIMIT_LENGTH, SQLITE_LIMIT_LIKE_PATTERN_LENGTH, SQLITE_LIMIT_SQL_LENGTH, SQLITE_LIMIT_TRIGGER_DEPTH, SQLITE_LIMIT_VARIABLE_NUMBER, SQLITE_LIMIT_VDBE_OP, SQLITE_LIMIT_WORKER_THREADS, SQLITE_MAX_ATTACHED, SQLITE_MAX_COLUMN, SQLITE_MAX_COMPOUND_SELECT, SQLITE_MAX_EXPR_DEPTH, SQLITE_MAX_FUNCTION_ARG, SQLITE_MAX_LENGTH, SQLITE_MAX_LIKE_PATTERN_LENGTH, SQLITE_MAX_SQL_LENGTH, SQLITE_MAX_TRIGGER_DEPTH, SQLITE_MAX_VARIABLE_NUMBER, SQLITE_MAX_VDBE_OP, SQLITE_MAX_WORKER_THREADS, SQLITE_MIN_LENGTH, SQLITE_MISUSE_BKPT, and SQLITE_N_LIMIT.

Here is the call graph for this function:

◆ sqlite3_load_extension()

int sqlite3_load_extension ( sqlite3 * db,
const char * zFile,
const char * zProc,
char ** pzErrMsg )
139764 {
139765 int rc;

References SQLITE_MAX_PATHLEN.

◆ sqlite3_log()

void sqlite3_log ( int iErrCode,
const char * zFormat,
... )
33034 {
33035 va_list ap; /* Vararg list */

References sqlite3StrAccumFinish().

Here is the call graph for this function:

◆ sqlite3_malloc()

void * sqlite3_malloc ( int n)
31065 {

References SQLITE_API.

◆ sqlite3_malloc64()

void * sqlite3_malloc64 ( sqlite3_uint64 n)
31069 : sqlite3Malloc(n);
31070}
static void * sqlite3Malloc(u64)
Definition sqlite3.c:31040

◆ sqlite3_memory_alarm()

int sqlite3_memory_alarm ( void(* xCallback )(void *, sqlite3_int64, int),
void * pArg,
sqlite3_int64 iThreshold )
30804 {

References SQLITE_API, and SQLITE_OK.

◆ sqlite3_memory_highwater()

sqlite3_int64 sqlite3_memory_highwater ( int resetFlag)

◆ sqlite3_memory_used()

sqlite3_int64 sqlite3_memory_used ( void )

◆ sqlite3_mprintf()

char * sqlite3_mprintf ( const char * zFormat,
... )
32939 {
32940 va_list ap;
32941 char *z;
32942#ifndef SQLITE_OMIT_AUTOINIT
32943 if( sqlite3_initialize() ) return 0;

◆ sqlite3_msize()

sqlite3_uint64 sqlite3_msize ( void * p)

◆ sqlite3_mutex_alloc()

sqlite3_mutex * sqlite3_mutex_alloc ( int id)
29521 {
29522#ifndef SQLITE_OMIT_AUTOINIT
29523 if( id<=SQLITE_MUTEX_RECURSIVE && sqlite3_initialize() ) return 0;

◆ sqlite3_mutex_enter()

void sqlite3_mutex_enter ( sqlite3_mutex * p)
29553 {

References sqlite3GlobalConfig, and SQLITE_API.

◆ sqlite3_mutex_free()

void sqlite3_mutex_free ( sqlite3_mutex * p)
29542 {

◆ sqlite3_mutex_held()

int sqlite3_mutex_held ( sqlite3_mutex * )

References SQLITE_API.

◆ sqlite3_mutex_leave()

void sqlite3_mutex_leave ( sqlite3_mutex * p)
29579 {

References sqlite3GlobalConfig, and SQLITE_API.

◆ sqlite3_mutex_notheld()

int sqlite3_mutex_notheld ( sqlite3_mutex * )

References SQLITE_API.

◆ sqlite3_mutex_try()

int sqlite3_mutex_try ( sqlite3_mutex * p)
29564 {
29565 int rc = SQLITE_OK;
29566 if( p ){

References sqlite3GlobalConfig, SQLITE_API, and SQLITE_OK.

◆ sqlite3_next_stmt()

sqlite3_stmt * sqlite3_next_stmt ( sqlite3 * pDb,
sqlite3_stmt * pStmt )
93510 {
93511 sqlite3_stmt *pNext;
93512#ifdef SQLITE_ENABLE_API_ARMOR
93513 if( !sqlite3SafetyCheckOk(pDb) ){
93514 (void)SQLITE_MISUSE_BKPT;
93515 return 0;
93516 }
93517#endif
93519 if( pStmt==0 ){
93520 pNext = (sqlite3_stmt*)pDb->pVdbe;

References sqlite3::mutex, sqlite3::pVdbe, sqlite3_mutex_enter, sqlite3_mutex_leave, sqlite3SafetyCheckOk(), SQLITE_API, and SQLITE_MISUSE_BKPT.

Here is the call graph for this function:

◆ sqlite3_open()

int sqlite3_open ( const char * filename,
sqlite3 ** ppDb )

◆ sqlite3_open16()

int sqlite3_open16 ( const void * filename,
sqlite3 ** ppDb )
186259 {
186260 char const *zFilename8; /* zFilename encoded in UTF-8 instead of UTF-16 */
186261 sqlite3_value *pVal;
186262 int rc;
186263
186264#ifdef SQLITE_ENABLE_API_ARMOR
186265 if( ppDb==0 ) return SQLITE_MISUSE_BKPT;
186266#endif
186267 *ppDb = 0;
186268#ifndef SQLITE_OMIT_AUTOINIT
186269 rc = sqlite3_initialize();
186270 if( rc ) return rc;
186271#endif
186272 if( zFilename==0 ) zFilename = "\000\000";
186273 pVal = sqlite3ValueNew(0);
186274 sqlite3ValueSetStr(pVal, -1, zFilename, SQLITE_UTF16NATIVE, SQLITE_STATIC);
186275 zFilename8 = sqlite3ValueText(pVal, SQLITE_UTF8);
186276 if( zFilename8 ){
186277 rc = openDatabase(zFilename8, ppDb,
186279 assert( *ppDb || rc==SQLITE_NOMEM );
186280 if( rc==SQLITE_OK && !DbHasProperty(*ppDb, 0, DB_SchemaLoaded) ){
186281 SCHEMA_ENC(*ppDb) = ENC(*ppDb) = SQLITE_UTF16NATIVE;
186282 }
#define SQLITE_OPEN_CREATE
Definition sqlite3.c:916
#define SQLITE_OPEN_READWRITE
Definition sqlite3.c:915
static int openDatabase(const char *zFilename, sqlite3 **ppDb, unsigned int flags, const char *zVfs)
Definition sqlite3.c:185868
#define DB_SchemaLoaded
Definition sqlite3.c:17904
#define DbHasProperty(D, I, P)
Definition sqlite3.c:17889
#define ENC(db)
Definition sqlite3.c:18182
#define SCHEMA_ENC(db)
Definition sqlite3.c:18181

◆ sqlite3_open_v2()

int sqlite3_open_v2 ( const char * filename,
sqlite3 ** ppDb,
int flags,
const char * zVfs )
186239 {
186240 return openDatabase(zFilename, ppDb,
186242}
#define sqlite3_open_v2
Definition sqlite3ext.h:541

References openDatabase(), SQLITE_API, SQLITE_OPEN_CREATE, and SQLITE_OPEN_READWRITE.

Here is the call graph for this function:

◆ sqlite3_os_end()

int sqlite3_os_end ( void )

References SQLITE_API, SQLITE_OK, and unixBigLock.

Referenced by sqlite3_shutdown().

Here is the caller graph for this function:

◆ sqlite3_os_init()

int sqlite3_os_init ( void )
46991 {
46992 /*
46993 ** The following macro defines an initializer for an sqlite3_vfs object.
46994 ** The name of the VFS is NAME. The pAppData is a pointer to a pointer
46995 ** to the "finder" function. (pAppData is a pointer to a pointer because
46996 ** silly C90 rules prohibit a void* from being cast to a function pointer
46997 ** and so we have to go through the intermediate pointer to avoid problems
46998 ** when compiling with -pedantic-errors on GCC.)
46999 **
47000 ** The FINDER parameter to this macro is the name of the pointer to the
47001 ** finder-function. The finder-function returns a pointer to the
47002 ** sqlite_io_methods object that implements the desired locking
47003 ** behaviors. See the division above that contains the IOMETHODS
47004 ** macro for addition information on finder-functions.
47005 **
47006 ** Most finders simply return a pointer to a fixed sqlite3_io_methods
47007 ** object. But the "autolockIoFinder" available on MacOSX does a little
47008 ** more than that; it looks at the filesystem type that hosts the
47009 ** database file and tries to choose an locking method appropriate for
47010 ** that filesystem time.
47011 */
47012 #define UNIXVFS(VFSNAME, FINDER) { \
47013 3, /* iVersion */ \
47014 sizeof(unixFile), /* szOsFile */ \
47015 MAX_PATHNAME, /* mxPathname */ \
47016 0, /* pNext */ \
47017 VFSNAME, /* zName */ \
47018 (void*)&FINDER, /* pAppData */ \
47019 unixOpen, /* xOpen */ \
47020 unixDelete, /* xDelete */ \
47021 unixAccess, /* xAccess */ \
47022 unixFullPathname, /* xFullPathname */ \
47023 unixDlOpen, /* xDlOpen */ \
47024 unixDlError, /* xDlError */ \
47025 unixDlSym, /* xDlSym */ \
47026 unixDlClose, /* xDlClose */ \
47027 unixRandomness, /* xRandomness */ \
47028 unixSleep, /* xSleep */ \
47029 unixCurrentTime, /* xCurrentTime */ \
47030 unixGetLastError, /* xGetLastError */ \
47031 unixCurrentTimeInt64, /* xCurrentTimeInt64 */ \
47032 unixSetSystemCall, /* xSetSystemCall */ \
47033 unixGetSystemCall, /* xGetSystemCall */ \
47034 unixNextSystemCall, /* xNextSystemCall */ \
47035 }
47036
47037 /*
47038 ** All default VFSes for unix are contained in the following array.
47039 **
47040 ** Note that the sqlite3_vfs.pNext field of the VFS object is modified
47041 ** by the SQLite core when the VFS is registered. So the following
47042 ** array cannot be const.
47043 */
47044 static sqlite3_vfs aVfs[] = {
47045#if SQLITE_ENABLE_LOCKING_STYLE && defined(__APPLE__)
47046 UNIXVFS("unix", autolockIoFinder ),
47047#elif OS_VXWORKS
47048 UNIXVFS("unix", vxworksIoFinder ),
47049#else
47050 UNIXVFS("unix", posixIoFinder ),
47051#endif
47052 UNIXVFS("unix-none", nolockIoFinder ),
47053 UNIXVFS("unix-dotfile", dotlockIoFinder ),
47054 UNIXVFS("unix-excl", posixIoFinder ),
47055#if OS_VXWORKS
47056 UNIXVFS("unix-namedsem", semIoFinder ),
47057#endif
47058#if SQLITE_ENABLE_LOCKING_STYLE || OS_VXWORKS
47059 UNIXVFS("unix-posix", posixIoFinder ),
47060#endif
47061#if SQLITE_ENABLE_LOCKING_STYLE
47062 UNIXVFS("unix-flock", flockIoFinder ),
47063#endif
47064#if SQLITE_ENABLE_LOCKING_STYLE && defined(__APPLE__)
47065 UNIXVFS("unix-afp", afpIoFinder ),
47066 UNIXVFS("unix-nfs", nfsIoFinder ),
47067 UNIXVFS("unix-proxy", proxyIoFinder ),
47068#endif
47069 };
47070 unsigned int i; /* Loop counter */
47071
47072 /* Double-check that the aSyscall[] array has been constructed
47073 ** correctly. See ticket [bb3a86e890c8e96ab] */
47074 assert( ArraySize(aSyscall)==29 );
47075
47076 /* Register all VFSes defined in the aVfs[] array */
47077 for(i=0; i<(sizeof(aVfs)/sizeof(sqlite3_vfs)); i++){
47078#ifdef SQLITE_DEFAULT_UNIX_VFS
47079 sqlite3_vfs_register(&aVfs[i],
47080 0==strcmp(aVfs[i].zName,SQLITE_DEFAULT_UNIX_VFS));
47081#else
47082 sqlite3_vfs_register(&aVfs[i], i==0);
47083#endif
47084 }
47085#ifdef SQLITE_OS_KV_OPTIONAL
47086 sqlite3KvvfsInit();
47087#endif
47089
47090#ifndef SQLITE_OMIT_WAL
47091 /* Validate lock assumptions */
47092 assert( SQLITE_SHM_NLOCK==8 ); /* Number of available locks */
47093 assert( UNIX_SHM_BASE==120 ); /* Start of locking area */
47094 /* Locks:
47095 ** WRITE UNIX_SHM_BASE 120
47096 ** CKPT UNIX_SHM_BASE+1 121
47097 ** RECOVER UNIX_SHM_BASE+2 122
47098 ** READ-0 UNIX_SHM_BASE+3 123
47099 ** READ-1 UNIX_SHM_BASE+4 124
47100 ** READ-2 UNIX_SHM_BASE+5 125
47101 ** READ-3 UNIX_SHM_BASE+6 126
47102 ** READ-4 UNIX_SHM_BASE+7 127
47103 ** DMS UNIX_SHM_BASE+8 128
47104 */
47105 assert( UNIX_SHM_DMS==128 ); /* Byte offset of the deadman-switch */
47106#endif
static const sqlite3_io_methods *(*const dotlockIoFinder)(const char *, unixFile *p)
Definition sqlite3.c:44437
static sqlite3_mutex * unixBigLock
Definition sqlite3.c:39621
#define UNIXVFS(VFSNAME, FINDER)
static const sqlite3_io_methods *(*const posixIoFinder)(const char *, unixFile *p)
Definition sqlite3.c:44417
#define UNIX_SHM_BASE
Definition sqlite3.c:43217
#define SQLITE_MUTEX_STATIC_VFS1
Definition sqlite3.c:8755
#define UNIX_SHM_DMS
Definition sqlite3.c:43218
static const sqlite3_io_methods *(*const nolockIoFinder)(const char *, unixFile *p)
Definition sqlite3.c:44427
#define SQLITE_SHM_NLOCK
Definition sqlite3.c:1906
static struct unix_syscall aSyscall[]
#define sqlite3_vfs_register
Definition sqlite3ext.h:548

References ArraySize, aSyscall, dotlockIoFinder, nolockIoFinder, posixIoFinder, sqlite3_vfs_register, sqlite3MutexAlloc(), SQLITE_API, SQLITE_MUTEX_STATIC_VFS1, SQLITE_OK, SQLITE_SHM_NLOCK, UNIX_SHM_BASE, UNIX_SHM_DMS, unixBigLock, unixTempFileInit(), and UNIXVFS.

Referenced by sqlite3OsInit().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sqlite3_overload_function()

int sqlite3_overload_function ( sqlite3 * db,
const char * zFuncName,
int nArg )
184815 {
184816 int rc;
184817 char *zCopy;
184818
184819#ifdef SQLITE_ENABLE_API_ARMOR
184820 if( !sqlite3SafetyCheckOk(db) || zName==0 || nArg<-2 ){
184821 return SQLITE_MISUSE_BKPT;
184822 }
184823#endif
184825 rc = sqlite3FindFunction(db, zName, nArg, SQLITE_UTF8, 0)!=0;
static FuncDef * sqlite3FindFunction(sqlite3 *, const char *, int, u8, u8)
Definition sqlite3.c:129169

References sqlite3::mutex, sqlite3_create_function_v2, sqlite3_free, sqlite3_mprintf, sqlite3_mutex_enter, sqlite3_mutex_leave, sqlite3FindFunction(), sqlite3InvalidFunction(), sqlite3SafetyCheckOk(), SQLITE_API, SQLITE_MISUSE_BKPT, SQLITE_NOMEM, SQLITE_OK, and SQLITE_UTF8.

Here is the call graph for this function:

◆ sqlite3_prepare()

int sqlite3_prepare ( sqlite3 * db,
const char * zSql,
int nByte,
sqlite3_stmt ** ppStmt,
const char ** pzTail )

References SQLITE_API.

◆ sqlite3_prepare16()

int sqlite3_prepare16 ( sqlite3 * db,
const void * zSql,
int nByte,
sqlite3_stmt ** ppStmt,
const void ** pzTail )

References SQLITE_API.

◆ sqlite3_prepare16_v2()

int sqlite3_prepare16_v2 ( sqlite3 * db,
const void * zSql,
int nByte,
sqlite3_stmt ** ppStmt,
const void ** pzTail )
144777 {
144778 int rc;
144779 rc = sqlite3Prepare16(db,zSql,nBytes,0,ppStmt,pzTail);
144780 assert( rc==SQLITE_OK || ppStmt==0 || *ppStmt==0 ); /* VERIFY: F13021 */
144781 return rc;
144782}
144784 sqlite3 *db, /* Database handle. */
144785 const void *zSql, /* UTF-16 encoded SQL statement. */
144786 int nBytes, /* Length of zSql in bytes. */
144787 sqlite3_stmt **ppStmt, /* OUT: A pointer to the prepared statement */
144788 const void **pzTail /* OUT: End of parsed string */
static int sqlite3Prepare16(sqlite3 *db, const void *zSql, int nBytes, u32 prepFlags, sqlite3_stmt **ppStmt, const void **pzTail)
Definition sqlite3.c:144695
#define sqlite3_prepare16_v2
Definition sqlite3ext.h:477

References sqlite3Prepare16(), and SQLITE_OK.

Here is the call graph for this function:

◆ sqlite3_prepare16_v3()

int sqlite3_prepare16_v3 ( sqlite3 * db,
const void * zSql,
int nByte,
unsigned int prepFlags,
sqlite3_stmt ** ppStmt,
const void ** pzTail )
144789 {
144790 int rc;
144791 rc = sqlite3Prepare16(db,zSql,nBytes,SQLITE_PREPARE_SAVESQL,ppStmt,pzTail);
144792 assert( rc==SQLITE_OK || ppStmt==0 || *ppStmt==0 ); /* VERIFY: F13021 */
144793 return rc;
144794}
144796 sqlite3 *db, /* Database handle. */
144797 const void *zSql, /* UTF-16 encoded SQL statement. */
144798 int nBytes, /* Length of zSql in bytes. */
144799 unsigned int prepFlags, /* Zero or more SQLITE_PREPARE_* flags */
144800 sqlite3_stmt **ppStmt, /* OUT: A pointer to the prepared statement */
144801 const void **pzTail /* OUT: End of parsed string */
144802){
144803 int rc;
#define sqlite3_prepare16_v3
Definition sqlite3ext.h:633

References sqlite3Prepare16(), SQLITE_OK, and SQLITE_PREPARE_SAVESQL.

Here is the call graph for this function:

◆ sqlite3_prepare_v2()

int sqlite3_prepare_v2 ( sqlite3 * db,
const char * zSql,
int nByte,
sqlite3_stmt ** ppStmt,
const char ** pzTail )
144649 {
144650 int rc;
144651 rc = sqlite3LockAndPrepare(db,zSql,nBytes,0,0,ppStmt,pzTail);
144652 assert( rc==SQLITE_OK || ppStmt==0 || *ppStmt==0 ); /* VERIFY: F13021 */
144653 return rc;
144654}
144656 sqlite3 *db, /* Database handle. */
144657 const char *zSql, /* UTF-8 encoded SQL statement. */
144658 int nBytes, /* Length of zSql in bytes. */
144659 sqlite3_stmt **ppStmt, /* OUT: A pointer to the prepared statement */
144660 const char **pzTail /* OUT: End of parsed string */
144661){
144662 int rc;
144663 /* EVIDENCE-OF: R-37923-12173 The sqlite3_prepare_v2() interface works
144664 ** exactly the same as sqlite3_prepare_v3() with a zero prepFlags
144665 ** parameter.
144666 **
static int sqlite3LockAndPrepare(sqlite3 *db, const char *zSql, int nBytes, u32 prepFlags, Vdbe *pOld, sqlite3_stmt **ppStmt, const char **pzTail)
Definition sqlite3.c:144550

References sqlite3LockAndPrepare(), and SQLITE_OK.

Here is the call graph for this function:

◆ sqlite3_prepare_v3()

int sqlite3_prepare_v3 ( sqlite3 * db,
const char * zSql,
int nByte,
unsigned int prepFlags,
sqlite3_stmt ** ppStmt,
const char ** pzTail )
144680 {
144681 int rc;
144682 /* EVIDENCE-OF: R-56861-42673 sqlite3_prepare_v3() differs from
144683 ** sqlite3_prepare_v2() only in having the extra prepFlags parameter,
144684 ** which is a bit array consisting of zero or more of the
144685 ** SQLITE_PREPARE_* flags.
144686 **
144687 ** Proof by comparison to the implementation of sqlite3_prepare_v2()
144688 ** directly above. */

References SQLITE_OK, and SQLITE_PREPARE_SAVESQL.

◆ sqlite3_profile()

void * sqlite3_profile ( sqlite3 * db,
void(* xProfile )(void *, const char *, sqlite3_uint64),
void * pArg )
184899 {
184900 void *pOld;
184901
184902#ifdef SQLITE_ENABLE_API_ARMOR
184903 if( !sqlite3SafetyCheckOk(db) ){
184904 (void)SQLITE_MISUSE_BKPT;
184905 return 0;
184906 }
184907#endif
184909 pOld = db->pProfileArg;
void * pProfileArg
Definition sqlite3.c:18094

References sqlite3::mTrace, sqlite3::mutex, sqlite3::pProfileArg, sqlite3_mutex_enter, sqlite3_mutex_leave, sqlite3SafetyCheckOk(), SQLITE_API, SQLITE_MISUSE_BKPT, SQLITE_TRACE_NONLEGACY_MASK, SQLITE_TRACE_XPROFILE, and sqlite3::xProfile.

Here is the call graph for this function:

◆ sqlite3_progress_handler()

void sqlite3_progress_handler ( sqlite3 * db,
int nOps,
int(* xProgress )(void *),
void * pArg )
184405 {
184406#ifdef SQLITE_ENABLE_API_ARMOR
184407 if( !sqlite3SafetyCheckOk(db) ){
184408 (void)SQLITE_MISUSE_BKPT;
184409 return;
184410 }
184411#endif
184413 if( nOps>0 ){
184414 db->xProgress = xProgress;
184415 db->nProgressOps = (unsigned)nOps;
184416 db->pProgressArg = pArg;
void * pProgressArg
Definition sqlite3.c:18132
int(* xProgress)(void *)
Definition sqlite3.c:18131
unsigned nProgressOps
Definition sqlite3.c:18133

References sqlite3::mutex, sqlite3::nProgressOps, sqlite3::pProgressArg, sqlite3_mutex_enter, sqlite3_mutex_leave, sqlite3SafetyCheckOk(), SQLITE_API, SQLITE_MISUSE_BKPT, and sqlite3::xProgress.

Here is the call graph for this function:

◆ sqlite3_randomness()

void sqlite3_randomness ( int N,
void * P )
34532 {
34533 unsigned char *zBuf = pBuf;
34534
34535 /* The "wsdPrng" macro will resolve to the pseudo-random number generator
34536 ** state vector. If writable static data is unsupported on the target,
34537 ** we have to locate the state vector at run-time. In the more common
34538 ** case where writable static data is supported, wsdPrng can refer directly
34539 ** to the "sqlite3Prng" state vector declared above.
34540 */
34541#ifdef SQLITE_OMIT_WSD
34542 struct sqlite3PrngType *p = &GLOBAL(struct sqlite3PrngType, sqlite3Prng);
34543# define wsdPrng p[0]
34544#else
34545# define wsdPrng sqlite3Prng
34546#endif
34547
34548#if SQLITE_THREADSAFE
34549 sqlite3_mutex *mutex;
34550#endif
34551
34552#ifndef SQLITE_OMIT_AUTOINIT
34553 if( sqlite3_initialize() ) return;
34554#endif
34555
34556#if SQLITE_THREADSAFE
34558#endif
34559
34560 sqlite3_mutex_enter(mutex);
34561 if( N<=0 || pBuf==0 ){
34562 wsdPrng.s[0] = 0;
34563 sqlite3_mutex_leave(mutex);
34564 return;
34565 }
34566
34567 /* Initialize the state of the random number generator once,
34568 ** the first time this routine is called.
34569 */
34570 if( wsdPrng.s[0]==0 ){
34571 sqlite3_vfs *pVfs = sqlite3_vfs_find(0);
34572 static const u32 chacha20_init[] = {
34573 0x61707865, 0x3320646e, 0x79622d32, 0x6b206574
34574 };
34575 memcpy(&wsdPrng.s[0], chacha20_init, 16);
34576 if( NEVER(pVfs==0) ){
34577 memset(&wsdPrng.s[4], 0, 44);
34578 }else{
34579 sqlite3OsRandomness(pVfs, 44, (char*)&wsdPrng.s[4]);
34580 }
34581 wsdPrng.s[15] = wsdPrng.s[12];
34582 wsdPrng.s[12] = 0;
34583 wsdPrng.n = 0;
34584 }
34585
34586 assert( N>0 );
34587 while( 1 /* exit by break */ ){
34588 if( N<=wsdPrng.n ){
34589 memcpy(zBuf, &wsdPrng.out[wsdPrng.n-N], N);
34590 wsdPrng.n -= N;
34591 break;
34592 }
34593 if( wsdPrng.n>0 ){
34594 memcpy(zBuf, wsdPrng.out, wsdPrng.n);
34595 N -= wsdPrng.n;
34596 zBuf += wsdPrng.n;
34597 }
#define NEVER(X)
Definition sqlite3.c:14664
static struct sqlite3PrngType sqlite3Prng
static int sqlite3OsRandomness(sqlite3_vfs *, int, char *)
Definition sqlite3.c:26803
#define SQLITE_MUTEX_STATIC_PRNG
Definition sqlite3.c:8748
#define wsdPrng
#define GLOBAL(t, v)
Definition sqlite3.c:15709
Definition sqlite3.c:34491
#define sqlite3_vfs_find
Definition sqlite3ext.h:547

◆ sqlite3_realloc()

void * sqlite3_realloc ( void * pOld,
int n )
31312 {
31313#ifndef SQLITE_OMIT_AUTOINIT

References SQLITE_API.

◆ sqlite3_realloc64()

void * sqlite3_realloc64 ( void * pOld,
sqlite3_uint64 n )
31319 {

◆ sqlite3_release_memory()

int sqlite3_release_memory ( int n)
30751 {
30752#ifdef SQLITE_ENABLE_MEMORY_MANAGEMENT
30753 return sqlite3PcacheReleaseMemory(n);
30754#else
30755 /* IMPLEMENTATION-OF: R-34391-24921 The sqlite3_release_memory() routine
30756 ** is a no-op returning zero if SQLite is not compiled with

References SQLITE_API, and UNUSED_PARAMETER.

◆ sqlite3_reset()

int sqlite3_reset ( sqlite3_stmt * pStmt)
91587 {
91588 int rc;
91589 if( pStmt==0 ){
91590 rc = SQLITE_OK;
91591 }else{
91592 Vdbe *v = (Vdbe*)pStmt;
91593 sqlite3 *db = v->db;
91595 checkProfileCallback(db, v);
91596 rc = sqlite3VdbeReset(v);
static void sqlite3VdbeRewind(Vdbe *)
Definition sqlite3.c:88477

References checkProfileCallback, Vdbe::db, sqlite3::errMask, sqlite3::mutex, sqlite3_mutex_enter, sqlite3_mutex_leave, sqlite3ApiExit(), sqlite3VdbeReset(), sqlite3VdbeRewind(), SQLITE_API, and SQLITE_OK.

Here is the call graph for this function:

◆ sqlite3_reset_auto_extension()

void sqlite3_reset_auto_extension ( void )
139917 {
139918#ifndef SQLITE_OMIT_AUTOINIT
139920#endif
139921 {
139922#if SQLITE_THREADSAFE
139924#endif
139926 sqlite3_mutex_enter(mutex);

Referenced by sqlite3_shutdown().

Here is the caller graph for this function:

◆ sqlite3_result_blob()

void sqlite3_result_blob ( sqlite3_context * pCtx,
const void * z,
int n,
void(* xDel )(void *) )
91899 {
91900#ifdef SQLITE_ENABLE_API_ARMOR
91901 if( pCtx==0 || n<0 ){
91902 invokeValueDestructor(z, xDel, pCtx);
91903 return;
static int invokeValueDestructor(const void *p, void(*xDel)(void *), sqlite3_context *pCtx)
Definition sqlite3.c:91865

References SQLITE_TOOBIG.

◆ sqlite3_result_blob64()

void sqlite3_result_blob64 ( sqlite3_context * pCtx,
const void * z,
sqlite3_uint64 n,
void(* xDel )(void *) )
91915 {
91916 assert( xDel!=SQLITE_DYNAMIC );
91917#ifdef SQLITE_ENABLE_API_ARMOR
91918 if( pCtx==0 ){
91919 invokeValueDestructor(z, xDel, 0);
91920 return;
91921 }
91922#endif
91923 assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );

◆ sqlite3_result_double()

void sqlite3_result_double ( sqlite3_context * pCtx,
double rVal )
91924 {
91925 (void)invokeValueDestructor(z, xDel, pCtx);
91926 }else{
91927 setResultStrOrError(pCtx, z, (int)n, 0, xDel);
91928 }
91929}
91930SQLITE_API void sqlite3_result_double(sqlite3_context *pCtx, double rVal){
static void setResultStrOrError(sqlite3_context *pCtx, const char *z, int n, u8 enc, void(*xDel)(void *))
Definition sqlite3.c:91840
#define sqlite3_result_double
Definition sqlite3ext.h:483

References invokeValueDestructor().

Here is the call graph for this function:

◆ sqlite3_result_error()

void sqlite3_result_error ( sqlite3_context * pCtx,
const char * z,
int n )
91937 {
91938#ifdef SQLITE_ENABLE_API_ARMOR

◆ sqlite3_result_error16()

void sqlite3_result_error16 ( sqlite3_context * pCtx,
const void * z,
int n )
91946 {
91947#ifdef SQLITE_ENABLE_API_ARMOR

References SQLITE_ERROR, SQLITE_TRANSIENT, and SQLITE_UTF8.

◆ sqlite3_result_error_code()

void sqlite3_result_error_code ( sqlite3_context * pCtx,
int errCode )
92127 {
92128#ifdef SQLITE_ENABLE_API_ARMOR
92129 if( pCtx==0 ) return;
92130#endif
92131 pCtx->isError = errCode ? errCode : -1;
92132#ifdef SQLITE_DEBUG
92133 if( pCtx->pVdbe ) pCtx->pVdbe->rcApp = errCode;
int isError
Definition sqlite3.c:23976

References SQLITE_OK.

◆ sqlite3_result_error_nomem()

void sqlite3_result_error_nomem ( sqlite3_context * pCtx)
92153 {
92154#ifdef SQLITE_ENABLE_API_ARMOR
92155 if( pCtx==0 ) return;

References SQLITE_STATIC, SQLITE_TOOBIG, and SQLITE_UTF8.

◆ sqlite3_result_error_toobig()

void sqlite3_result_error_toobig ( sqlite3_context * pCtx)
92142 {
92143#ifdef SQLITE_ENABLE_API_ARMOR
92144 if( pCtx==0 ) return;

References SQLITE_STATIC, and SQLITE_UTF8.

◆ sqlite3_result_int()

void sqlite3_result_int ( sqlite3_context * pCtx,
int iVal )

◆ sqlite3_result_int64()

void sqlite3_result_int64 ( sqlite3_context * pCtx,
sqlite3_int64 iVal )
91962 {

◆ sqlite3_result_null()

void sqlite3_result_null ( sqlite3_context * pCtx)
91969 {

◆ sqlite3_result_pointer()

void sqlite3_result_pointer ( sqlite3_context * pCtx,
void * pPtr,
const char * zPType,
void(* xDestructor )(void *) )
91981 {
91982 Mem *pOut;
91983#ifdef SQLITE_ENABLE_API_ARMOR
91984 if( pCtx==0 ){
91985 invokeValueDestructor(pPtr, xDestructor, 0);
91986 return;
91987 }
91988#endif

◆ sqlite3_result_subtype()

void sqlite3_result_subtype ( sqlite3_context * pCtx,
unsigned int eSubtype )
91995 {
91996 Mem *pOut;
91997#ifdef SQLITE_ENABLE_API_ARMOR
91998 if( pCtx==0 ) return;
91999#endif
92000#if defined(SQLITE_STRICT_SUBTYPE) && SQLITE_STRICT_SUBTYPE+0!=0
92001 if( pCtx->pFunc!=0
92002 && (pCtx->pFunc->funcFlags & SQLITE_RESULT_SUBTYPE)==0
92003 ){
92004 char zErr[200];
92005 sqlite3_snprintf(sizeof(zErr), zErr,
92006 "misuse of sqlite3_result_subtype() by %s()",
92007 pCtx->pFunc->zName);
92008 sqlite3_result_error(pCtx, zErr, -1);
92009 return;
92010 }
u32 funcFlags
Definition sqlite3.c:18338
#define SQLITE_RESULT_SUBTYPE
Definition sqlite3.c:6148
const char * zName
Definition sqlite3.c:18345
#define sqlite3_result_error
Definition sqlite3ext.h:484
#define sqlite3_snprintf
Definition sqlite3ext.h:497

References MEM_Null.

◆ sqlite3_result_text()

void sqlite3_result_text ( sqlite3_context * pCtx,
const char * z,
int n,
void(* xDel )(void *) )
92022 {
92023#ifdef SQLITE_ENABLE_API_ARMOR
92024 if( pCtx==0 ){
92025 invokeValueDestructor(z, xDel, 0);

References MEM_Subtype.

◆ sqlite3_result_text16()

void sqlite3_result_text16 ( sqlite3_context * pCtx,
const void * z,
int n,
void(* xDel )(void *) )
92053 {
92054 setResultStrOrError(pCtx, z, (int)n, enc, xDel);
92056 }
92057}
92058#ifndef SQLITE_OMIT_UTF16
92060 sqlite3_context *pCtx,
92061 const void *z,
static void sqlite3VdbeMemZeroTerminateIfAble(Mem *)
Definition sqlite3.c:84153
#define sqlite3_result_text16
Definition sqlite3ext.h:490

◆ sqlite3_result_text16be()

void sqlite3_result_text16be ( sqlite3_context * pCtx,
const void * z,
int n,
void(* xDel )(void *) )
92064 {
92065 assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
92066 setResultStrOrError(pCtx, z, n & ~(u64)1, SQLITE_UTF16NATIVE, xDel);
92067}
92069 sqlite3_context *pCtx,
92070 const void *z,
#define sqlite3_result_text16be
Definition sqlite3ext.h:491

References sqlite3_value::db, sqlite3::mutex, sqlite3_context::pOut, setResultStrOrError(), sqlite3_mutex_held(), and SQLITE_UTF16NATIVE.

Here is the call graph for this function:

◆ sqlite3_result_text16le()

void sqlite3_result_text16le ( sqlite3_context * pCtx,
const void * z,
int n,
void(* xDel )(void *) )
92073 {
92074 assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
92075 setResultStrOrError(pCtx, z, n & ~(u64)1, SQLITE_UTF16BE, xDel);
92076}
92078 sqlite3_context *pCtx,
92079 const void *z,
#define SQLITE_UTF16BE
Definition sqlite3.c:6040
#define sqlite3_result_text16le
Definition sqlite3ext.h:492

References sqlite3_value::db, sqlite3::mutex, sqlite3_context::pOut, setResultStrOrError(), sqlite3_mutex_held(), and SQLITE_UTF16BE.

Here is the call graph for this function:

◆ sqlite3_result_text64()

void sqlite3_result_text64 ( sqlite3_context * pCtx,
const char * z,
sqlite3_uint64 n,
void(* xDel )(void *),
unsigned char encoding )
92038 {
92039#ifdef SQLITE_ENABLE_API_ARMOR
92040 if( pCtx==0 ){
92041 invokeValueDestructor(z, xDel, 0);
92042 return;
92043 }
92044#endif
92045 assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
92046 assert( xDel!=SQLITE_DYNAMIC );
92047 if( enc!=SQLITE_UTF8 ){
92048 if( enc==SQLITE_UTF16 ) enc = SQLITE_UTF16NATIVE;
92049 n &= ~(u64)1;
92050 }
92051 if( n>0x7fffffff ){
#define SQLITE_UTF16
Definition sqlite3.c:6041

◆ sqlite3_result_value()

void sqlite3_result_value ( sqlite3_context * pCtx,
sqlite3_value * pValue )
92082 {
92083 assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
92084 setResultStrOrError(pCtx, z, n & ~(u64)1, SQLITE_UTF16LE, xDel);
92085}
92086#endif /* SQLITE_OMIT_UTF16 */
92088 Mem *pOut;
92089
92090#ifdef SQLITE_ENABLE_API_ARMOR
92091 if( pCtx==0 ) return;
92092 if( pValue==0 ){
92093 sqlite3_result_null(pCtx);
92094 return;
92095 }
92096#endif
92097 pOut = pCtx->pOut;
92098 assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
#define SQLITE_UTF16LE
Definition sqlite3.c:6039
#define sqlite3_result_null
Definition sqlite3ext.h:488
#define sqlite3_result_value
Definition sqlite3ext.h:493

References sqlite3_value::db, sqlite3::mutex, sqlite3_context::pOut, setResultStrOrError(), sqlite3_mutex_held(), and SQLITE_UTF16LE.

Here is the call graph for this function:

◆ sqlite3_result_zeroblob()

void sqlite3_result_zeroblob ( sqlite3_context * pCtx,
int n )
92101 {

◆ sqlite3_result_zeroblob64()

int sqlite3_result_zeroblob64 ( sqlite3_context * pCtx,
sqlite3_uint64 n )
92105 {
92106 sqlite3_result_zeroblob64(pCtx, n>0 ? n : 0);
92107}
92109 Mem *pOut;
92110
92111#ifdef SQLITE_ENABLE_API_ARMOR
92112 if( pCtx==0 ) return SQLITE_MISUSE_BKPT;
92113#endif
92114 pOut = pCtx->pOut;
92115 assert( sqlite3_mutex_held(pOut->db->mutex) );
92116 if( n>(u64)pOut->db->aLimit[SQLITE_LIMIT_LENGTH] ){
92118 return SQLITE_TOOBIG;
92119 }
92120#ifndef SQLITE_OMIT_INCRBLOB
#define sqlite3_result_error_toobig
Definition sqlite3ext.h:544
#define sqlite3_result_zeroblob64
Definition sqlite3ext.h:615

◆ sqlite3_rollback_hook()

void * sqlite3_rollback_hook ( sqlite3 * db,
void(* xCallback )(void *),
void * pArg )
184979 {
184980 void *pRet;
184981
184982#ifdef SQLITE_ENABLE_API_ARMOR
184983 if( !sqlite3SafetyCheckOk(db) ){
184984 (void)SQLITE_MISUSE_BKPT;
184985 return 0;
184986 }
184987#endif

◆ sqlite3_rtree_geometry_callback()

int sqlite3_rtree_geometry_callback ( sqlite3 * db,
const char * zGeom,
int(* xGeom )(sqlite3_rtree_geometry *, int, sqlite3_rtree_dbl *, int *),
void * pContext )

References SQLITE_API.

◆ sqlite3_rtree_query_callback()

int sqlite3_rtree_query_callback ( sqlite3 * db,
const char * zQueryFunc,
int(* xQueryFunc )(sqlite3_rtree_query_info *),
void * pContext,
void(* xDestructor )(void *) )

References SQLITE_API.

◆ sqlite3_serialize()

unsigned char * sqlite3_serialize ( sqlite3 * db,
const char * zSchema,
sqlite3_int64 * piSize,
unsigned int mFlags )
54568 {
54569 MemFile *p;
54570 int iDb;
54571 Btree *pBt;
54572 sqlite3_int64 sz;
54573 int szPage = 0;
54574 sqlite3_stmt *pStmt = 0;
54575 unsigned char *pOut;
54576 char *zSql;
54577 int rc;
54578
54579#ifdef SQLITE_ENABLE_API_ARMOR
54580 if( !sqlite3SafetyCheckOk(db) ){
54581 (void)SQLITE_MISUSE_BKPT;
54582 return 0;
54583 }
54584#endif
54585
54586 if( zSchema==0 ) zSchema = db->aDb[0].zDbSName;
54587 p = memdbFromDbSchema(db, zSchema);
54588 iDb = sqlite3FindDbName(db, zSchema);
54589 if( piSize ) *piSize = -1;
54590 if( iDb<0 ) return 0;
54591 if( p ){
54592 MemStore *pStore = p->pStore;
54593 assert( pStore->pMutex==0 );
54594 if( piSize ) *piSize = pStore->sz;
54595 if( mFlags & SQLITE_SERIALIZE_NOCOPY ){
54596 pOut = pStore->aData;
54597 }else{
54598 pOut = sqlite3_malloc64( pStore->sz );
54599 if( pOut ) memcpy(pOut, pStore->aData, pStore->sz);
54600 }
54601 return pOut;
54602 }
54603 pBt = db->aDb[iDb].pBt;
54604 if( pBt==0 ) return 0;
54605 szPage = sqlite3BtreeGetPageSize(pBt);
54606 zSql = sqlite3_mprintf("PRAGMA \"%w\".page_count", zSchema);
54607 rc = zSql ? sqlite3_prepare_v2(db, zSql, -1, &pStmt, 0) : SQLITE_NOMEM;
54608 sqlite3_free(zSql);
54609 if( rc ) return 0;
54610 rc = sqlite3_step(pStmt);
54611 if( rc!=SQLITE_ROW ){
54612 pOut = 0;
54613 }else{
54614 sz = sqlite3_column_int64(pStmt, 0)*szPage;
54615 if( sz==0 ){
54616 sqlite3_reset(pStmt);
54617 sqlite3_exec(db, "BEGIN IMMEDIATE; COMMIT;", 0, 0, 0);
54618 rc = sqlite3_step(pStmt);
54619 if( rc==SQLITE_ROW ){
54620 sz = sqlite3_column_int64(pStmt, 0)*szPage;
54621 }
54622 }
54623 if( piSize ) *piSize = sz;
54624 if( mFlags & SQLITE_SERIALIZE_NOCOPY ){
54625 pOut = 0;
54626 }else{
54627 pOut = sqlite3_malloc64( sz );
54628 if( pOut ){
54629 int nPage = sqlite3_column_int(pStmt, 0);
54630 Pager *pPager = sqlite3BtreePager(pBt);
54631 int pgno;
54632 for(pgno=1; pgno<=nPage; pgno++){
54633 DbPage *pPage = 0;
54634 unsigned char *pTo = pOut + szPage*(sqlite3_int64)(pgno-1);
54635 rc = sqlite3PagerGet(pPager, pgno, (DbPage**)&pPage, 0);
54636 if( rc==SQLITE_OK ){
54637 memcpy(pTo, sqlite3PagerGetData(pPage), szPage);
54638 }else{
54639 memset(pTo, 0, szPage);
54640 }
54641 sqlite3PagerUnref(pPage);
54642 }
#define SQLITE_SERIALIZE_NOCOPY
Definition sqlite3.c:11297
sqlite3_mutex * pMutex
Definition sqlite3.c:53882
#define sqlite3_reset
Definition sqlite3ext.h:481
#define sqlite3_column_int64
Definition sqlite3ext.h:426
#define sqlite3_column_int
Definition sqlite3ext.h:425

◆ sqlite3_set_authorizer()

int sqlite3_set_authorizer ( sqlite3 * db,
int(* xAuth )(void *, int, const char *, const char *, const char *, const char *),
void * pUserData )
122788 {
122789#ifdef SQLITE_ENABLE_API_ARMOR
122790 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
122791#endif

References sqlite3::mutex, sqlite3::pAuthArg, sqlite3_mutex_enter, sqlite3_mutex_leave, sqlite3ExpirePreparedStatements(), sqlite3SafetyCheckOk(), SQLITE_API, SQLITE_MISUSE_BKPT, SQLITE_OK, and sqlite3::xAuth.

Here is the call graph for this function:

◆ sqlite3_set_auxdata()

void sqlite3_set_auxdata ( sqlite3_context * pCtx,
int N,
void * pAux,
void(* xDelete )(void *) )
92637 : If iArg is negative then make the data available
92638** to all functions within the current prepared statement using iArg as an
92639** access code.
92640*/
92642 sqlite3_context *pCtx,
92643 int iArg,
92644 void *pAux,
92645 void (*xDelete)(void*)
92646){
92647 AuxData *pAuxData;
92648 Vdbe *pVdbe;
92649
92650#ifdef SQLITE_ENABLE_API_ARMOR
92651 if( pCtx==0 ) return;
92652#endif
92653 pVdbe= pCtx->pVdbe;
92654 assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
92655#ifdef SQLITE_ENABLE_STAT4
92656 if( pVdbe==0 ) goto failed;
92657#else
92658 assert( pVdbe!=0 );
92659#endif
92660
92661 for(pAuxData=pVdbe->pAuxData; pAuxData; pAuxData=pAuxData->pNextAux){
92662 if( pAuxData->iAuxArg==iArg && (pAuxData->iAuxOp==pCtx->iOp || iArg<0) ){
92663 break;
92664 }
92665 }
92666 if( pAuxData==0 ){
92667 pAuxData = sqlite3DbMallocZero(pVdbe->db, sizeof(AuxData));
92668 if( !pAuxData ) goto failed;
92669 pAuxData->iAuxOp = pCtx->iOp;
92670 pAuxData->iAuxArg = iArg;
92671 pAuxData->pNextAux = pVdbe->pAuxData;
92672 pVdbe->pAuxData = pAuxData;
92673 if( pCtx->isError==0 ) pCtx->isError = -1;
92674 }else if( pAuxData->xDeleteAux ){
92675 pAuxData->xDeleteAux(pAuxData->pAux);
92676 }
92677
92678 pAuxData->pAux = pAux;
92679 pAuxData->xDeleteAux = xDelete;
92680 return;
void(* xDeleteAux)(void *)
Definition sqlite3.c:23953
void * pAux
Definition sqlite3.c:23952
int iAuxArg
Definition sqlite3.c:23951
int iOp
Definition sqlite3.c:23975
int iAuxOp
Definition sqlite3.c:23950
#define sqlite3_set_auxdata
Definition sqlite3ext.h:496

References sqlite3_value::db, Vdbe::db, AuxData::iAuxArg, AuxData::iAuxOp, sqlite3_context::iOp, sqlite3_context::isError, sqlite3::mutex, AuxData::pAux, Vdbe::pAuxData, AuxData::pNextAux, sqlite3_context::pOut, sqlite3_context::pVdbe, sqlite3_mutex_held(), sqlite3DbMallocZero(), SQLITE_API, and AuxData::xDeleteAux.

Here is the call graph for this function:

◆ sqlite3_set_clientdata()

int sqlite3_set_clientdata ( sqlite3 * db,
const char * zName,
void * pData,
void(* xDestructor )(void *) )
186426 {
186427 DbClientData *p, **pp;
186429 pp = &db->pDbData;
186430 for(p=db->pDbData; p && strcmp(p->zName,zName); p=p->pNext){
186431 pp = &p->pNext;
186432 }
186433 if( p ){
186434 assert( p->pData!=0 );
186435 if( p->xDestructor ) p->xDestructor(p->pData);
186436 if( pData==0 ){
186437 *pp = p->pNext;
186438 sqlite3_free(p);
186440 return SQLITE_OK;
186441 }
186442 }else if( pData==0 ){
186444 return SQLITE_OK;
186445 }else{
186446 size_t n = strlen(zName);
186447 p = sqlite3_malloc64( SZ_DBCLIENTDATA(n+1) );
186448 if( p==0 ){
186449 if( xDestructor ) xDestructor(pData);
186451 return SQLITE_NOMEM;
186452 }
186453 memcpy(p->zName, zName, n+1);
186454 p->pNext = db->pDbData;
#define SZ_DBCLIENTDATA(N)
Definition sqlite3.c:20884
void(* xDestructor)(void *)
Definition sqlite3.c:20878

◆ sqlite3_set_last_insert_rowid()

void sqlite3_set_last_insert_rowid ( sqlite3 * db,
sqlite3_int64 iRowid )
183718 {
183719#ifdef SQLITE_ENABLE_API_ARMOR
183720 if( !sqlite3SafetyCheckOk(db) ){
183721 (void)SQLITE_MISUSE_BKPT;

◆ sqlite3_setlk_timeout()

int sqlite3_setlk_timeout ( sqlite3 * db,
int ms,
int flags )
184451 {
184452#ifdef SQLITE_ENABLE_SETLK_TIMEOUT
184453 int iDb;
184454 int bBOC = ((flags & SQLITE_SETLK_BLOCK_ON_CONNECT) ? 1 : 0);
184455#endif
184456#ifdef SQLITE_ENABLE_API_ARMOR
184457 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
184458#endif
184459 if( ms<-1 ) return SQLITE_RANGE;
184460#ifdef SQLITE_ENABLE_SETLK_TIMEOUT
184462 db->setlkTimeout = ms;
184463 db->setlkFlags = flags;
184465 for(iDb=0; iDb<db->nDb; iDb++){
184466 Btree *pBt = db->aDb[iDb].pBt;
184467 if( pBt ){
184470 }
184471 }
#define SQLITE_FCNTL_BLOCK_ON_CONNECT
Definition sqlite3.c:1587
#define SQLITE_RANGE
Definition sqlite3.c:791
#define SQLITE_SETLK_BLOCK_ON_CONNECT
Definition sqlite3.c:3380
static void sqlite3OsFileControlHint(sqlite3_file *, int, void *)
Definition sqlite3.c:26687

◆ sqlite3_shutdown()

int sqlite3_shutdown ( void )
182972 {
182973#ifdef SQLITE_OMIT_WSD
182974 int rc = sqlite3_wsd_init(4096, 24);
182975 if( rc!=SQLITE_OK ){
182976 return rc;
182977 }
182978#endif
182979
182980 if( sqlite3GlobalConfig.isInit ){
182981#ifdef SQLITE_EXTRA_SHUTDOWN
182982 void SQLITE_EXTRA_SHUTDOWN(void);
182983 SQLITE_EXTRA_SHUTDOWN();
182984#endif
182985 sqlite3_os_end();
182987 sqlite3GlobalConfig.isInit = 0;
182988 }
182989 if( sqlite3GlobalConfig.isPCacheInit ){
182991 sqlite3GlobalConfig.isPCacheInit = 0;
182992 }
182993 if( sqlite3GlobalConfig.isMallocInit ){
182995 sqlite3GlobalConfig.isMallocInit = 0;
182996
182997#ifndef SQLITE_OMIT_SHUTDOWN_DIRECTORIES
182998 /* The heap subsystem has now been shutdown and these values are supposed
182999 ** to be NULL or point to memory that was obtained from sqlite3_malloc(),
183000 ** which would rely on that heap subsystem; therefore, make sure these
183001 ** values cannot refer to heap memory that was just invalidated when the
183002 ** heap subsystem was shutdown. This is only done if the current call to
183003 ** this function resulted in the heap subsystem actually being shutdown.
183004 */
183007#endif
183008 }
int sqlite3_os_end(void)
Definition sqlite3.c:47115
void sqlite3_reset_auto_extension(void)
Definition sqlite3.c:139911
char * sqlite3_data_directory
Definition sqlite3.c:7059
static void sqlite3PcacheShutdown(void)
Definition sqlite3.c:55471
char * sqlite3_temp_directory
Definition sqlite3.c:7022
static void sqlite3MallocEnd(void)
Definition sqlite3.c:30910

References sqlite3_data_directory, sqlite3_os_end(), sqlite3_reset_auto_extension(), sqlite3_temp_directory, sqlite3GlobalConfig, sqlite3MallocEnd(), sqlite3MutexEnd(), sqlite3PcacheShutdown(), SQLITE_API, and SQLITE_OK.

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sqlite3_sleep()

int sqlite3_sleep ( int ms)
186668 {
186669 sqlite3_vfs *pVfs;
186670 int rc;
186671 pVfs = sqlite3_vfs_find(0);
186672 if( pVfs==0 ) return 0;

◆ sqlite3_snapshot_cmp()

int sqlite3_snapshot_cmp ( sqlite3_snapshot * p1,
sqlite3_snapshot * p2 )

References SQLITE_API, and SQLITE_EXPERIMENTAL.

◆ sqlite3_snapshot_free()

void sqlite3_snapshot_free ( sqlite3_snapshot * )

References SQLITE_API, and SQLITE_EXPERIMENTAL.

◆ sqlite3_snapshot_get()

int sqlite3_snapshot_get ( sqlite3 * db,
const char * zSchema,
sqlite3_snapshot ** ppSnapshot )

References SQLITE_API, and SQLITE_EXPERIMENTAL.

◆ sqlite3_snapshot_open()

int sqlite3_snapshot_open ( sqlite3 * db,
const char * zSchema,
sqlite3_snapshot * pSnapshot )

References SQLITE_API, and SQLITE_EXPERIMENTAL.

◆ sqlite3_snapshot_recover()

int sqlite3_snapshot_recover ( sqlite3 * db,
const char * zDb )

References SQLITE_API, and SQLITE_EXPERIMENTAL.

◆ sqlite3_snprintf()

char * sqlite3_snprintf ( int n,
char * zBuf,
const char * zFormat,
... )
32979 {
32980 StrAccum acc;
32981 va_list ap;
32982 if( n<=0 ) return zBuf;
32983#ifdef SQLITE_ENABLE_API_ARMOR
32984 if( zBuf==0 || zFormat==0 ) {
32985 (void)SQLITE_MISUSE_BKPT;
32986 if( zBuf ) zBuf[0] = 0;
32987 return zBuf;
32988 }
32989#endif
32990 sqlite3StrAccumInit(&acc, 0, zBuf, n, 0);
static void sqlite3StrAccumInit(StrAccum *, sqlite3 *, char *, int, int)
Definition sqlite3.c:32850
struct sqlite3_str StrAccum
Definition sqlite3.c:15780

◆ sqlite3_soft_heap_limit()

void sqlite3_soft_heap_limit ( int N)

References mem0.

◆ sqlite3_soft_heap_limit64()

sqlite3_int64 sqlite3_soft_heap_limit64 ( sqlite3_int64 N)
30823 {
30824 sqlite3_int64 priorLimit;
30825 sqlite3_int64 excess;
30826 sqlite3_int64 nUsed;
30827#ifndef SQLITE_OMIT_AUTOINIT
30828 int rc = sqlite3_initialize();
30829 if( rc ) return -1;
30830#endif
30832 priorLimit = mem0.alarmThreshold;
30833 if( n<0 ){
30835 return priorLimit;
30836 }
30837 if( mem0.hardLimit>0 && (n>mem0.hardLimit || n==0) ){
30838 n = mem0.hardLimit;
30839 }
30840 mem0.alarmThreshold = n;
30842 AtomicStore(&mem0.nearlyFull, n>0 && n<=nUsed);
static sqlite3_int64 sqlite3StatusValue(int)
Definition sqlite3.c:24376

References AtomicStore, mem0, sqlite3_initialize(), sqlite3_mutex_enter, sqlite3_mutex_leave, sqlite3StatusValue(), SQLITE_API, and SQLITE_STATUS_MEMORY_USED.

Here is the call graph for this function:

◆ sqlite3_sourceid()

const char * sqlite3_sourceid ( void )

Referenced by sourceidFunc().

Here is the caller graph for this function:

◆ sqlite3_sql()

const char * sqlite3_sql ( sqlite3_stmt * pStmt)

◆ sqlite3_status()

int sqlite3_status ( int op,
int * pCurrent,
int * pHighwater,
int resetFlag )
24471 {
24472 sqlite3_int64 iCur = 0, iHwtr = 0;
24473 int rc;
24474#ifdef SQLITE_ENABLE_API_ARMOR
24475 if( pCurrent==0 || pHighwater==0 ) return SQLITE_MISUSE_BKPT;
24476#endif
24477 rc = sqlite3_status64(op, &iCur, &iHwtr, resetFlag);
24478 if( rc==0 ){
#define sqlite3_status64
Definition sqlite3ext.h:621

◆ sqlite3_status64()

int sqlite3_status64 ( int op,
sqlite3_int64 * pCurrent,
sqlite3_int64 * pHighwater,
int resetFlag )
24451 {
24452 sqlite3_mutex *pMutex;
24454 if( op<0 || op>=ArraySize(wsdStat.nowValue) ){
24455 return SQLITE_MISUSE_BKPT;
24456 }
24457#ifdef SQLITE_ENABLE_API_ARMOR
24458 if( pCurrent==0 || pHighwater==0 ) return SQLITE_MISUSE_BKPT;
24459#endif
24461 sqlite3_mutex_enter(pMutex);
24462 *pCurrent = wsdStat.nowValue[op];
24463 *pHighwater = wsdStat.mxValue[op];
24464 if( resetFlag ){
24465 wsdStat.mxValue[op] = wsdStat.nowValue[op];
static sqlite3_mutex * sqlite3MallocMutex(void)
Definition sqlite3.c:30785
static const char statMutex[]
Definition sqlite3.c:24344
static sqlite3_mutex * sqlite3Pcache1Mutex(void)
Definition sqlite3.c:57321
#define wsdStat
Definition sqlite3.c:24369
#define wsdStatInit
Definition sqlite3.c:24368

◆ sqlite3_step()

int sqlite3_step ( sqlite3_stmt * pStmt)
92354 {
92355 int rc = SQLITE_OK; /* Result from sqlite3Step() */
92356 Vdbe *v = (Vdbe*)pStmt; /* the prepared statement */
92357 int cnt = 0; /* Counter to prevent infinite loop of reprepares */
92358 sqlite3 *db; /* The database connection */
92359
92360 if( vdbeSafetyNotNull(v) ){
92361 return SQLITE_MISUSE_BKPT;
92362 }
92363 db = v->db;
92365 while( (rc = sqlite3Step(v))==SQLITE_SCHEMA
92366 && cnt++ < SQLITE_MAX_SCHEMA_RETRY ){
92367 int savedPc = v->pc;
92368 rc = sqlite3Reprepare(v);
92369 if( rc!=SQLITE_OK ){
92370 /* This case occurs after failing to recompile an sql statement.
92371 ** The error message from the SQL compiler has already been loaded
92372 ** into the database handle. This block copies the error message
92373 ** from the database handle into the statement and sets the statement
92374 ** program counter to 0 to ensure that when the statement is
92375 ** finalized or reset the parser error message is available via
92376 ** sqlite3_errmsg() and sqlite3_errcode().
92377 */
92378 const char *zErr = (const char *)sqlite3_value_text(db->pErr);
92379 sqlite3DbFree(db, v->zErrMsg);
92380 if( !db->mallocFailed ){
92381 v->zErrMsg = sqlite3DbStrDup(db, zErr);
92382 v->rc = rc = sqlite3ApiExit(db, rc);
92383 } else {
92384 v->zErrMsg = 0;
92385 v->rc = rc = SQLITE_NOMEM_BKPT;
92386 }
92387 break;
92388 }
92389 sqlite3_reset(pStmt);
92390 if( savedPc>=0 ){
92391 /* Setting minWriteFileFormat to 254 is a signal to the OP_Init and
92392 ** OP_Trace opcodes to *not* perform SQLITE_TRACE_STMT because it has
92393 ** already been done once on a prior invocation that failed due to
92394 ** SQLITE_SCHEMA. tag-20220401a */
92395 v->minWriteFileFormat = 254;
static int vdbeSafetyNotNull(Vdbe *p)
Definition sqlite3.c:91501
static int sqlite3Reprepare(Vdbe *)
Definition sqlite3.c:144598
static int sqlite3Step(Vdbe *p)
Definition sqlite3.c:92206
u8 minWriteFileFormat
Definition sqlite3.c:24075
char * zErrMsg
Definition sqlite3.c:24062
int pc
Definition sqlite3.c:24041

References Vdbe::db, Vdbe::expired, sqlite3::mallocFailed, Vdbe::minWriteFileFormat, sqlite3::mutex, Vdbe::pc, sqlite3::pErr, Vdbe::rc, sqlite3_mutex_enter, sqlite3_mutex_leave, sqlite3_reset, sqlite3_value_text, sqlite3ApiExit(), sqlite3DbFree(), sqlite3DbStrDup(), sqlite3Reprepare(), sqlite3Step(), SQLITE_API, SQLITE_MAX_SCHEMA_RETRY, SQLITE_MISUSE_BKPT, SQLITE_NOMEM_BKPT, SQLITE_OK, SQLITE_SCHEMA, vdbeSafetyNotNull(), and Vdbe::zErrMsg.

Here is the call graph for this function:

◆ sqlite3_stmt_busy()

int sqlite3_stmt_busy ( sqlite3_stmt * pStmt)

◆ sqlite3_stmt_explain()

int sqlite3_stmt_explain ( sqlite3_stmt * pStmt,
int eMode )
93457 : 0;
93458}
93459
93460/*
93461** Set the explain mode for a statement.
93462*/
93463SQLITE_API int sqlite3_stmt_explain(sqlite3_stmt *pStmt, int eMode){
93464 Vdbe *v = (Vdbe*)pStmt;
93465 int rc;
93466#ifdef SQLITE_ENABLE_API_ARMOR
93467 if( pStmt==0 ) return SQLITE_MISUSE_BKPT;
93468#endif
93470 if( ((int)v->explain)==eMode ){
93471 rc = SQLITE_OK;
93472 }else if( eMode<0 || eMode>2 ){
93473 rc = SQLITE_ERROR;
93474 }else if( (v->prepFlags & SQLITE_PREPARE_SAVESQL)==0 ){
93475 rc = SQLITE_ERROR;
93476 }else if( v->eVdbeState!=VDBE_READY_STATE ){
93477 rc = SQLITE_BUSY;
93478 }else if( v->nMem>=10 && (eMode!=2 || v->haveEqpOps) ){
93479 /* No reprepare necessary */
93480 v->explain = eMode;
93481 rc = SQLITE_OK;
93482 }else{
93483 v->explain = eMode;
93484 rc = sqlite3Reprepare(v);
93485 v->haveEqpOps = eMode==2;
93486 }
93487 if( v->explain ){
93488 v->nResColumn = 12 - 4*v->explain;
int nMem
Definition sqlite3.c:24038
bft haveEqpOps
Definition sqlite3.c:24084
u16 nResColumn
Definition sqlite3.c:24072
bft explain
Definition sqlite3.c:24079
#define sqlite3_stmt_explain
Definition sqlite3ext.h:700

◆ sqlite3_stmt_isexplain()

int sqlite3_stmt_isexplain ( sqlite3_stmt * pStmt)

◆ sqlite3_stmt_readonly()

int sqlite3_stmt_readonly ( sqlite3_stmt * pStmt)

◆ sqlite3_stmt_scanstatus()

int sqlite3_stmt_scanstatus ( sqlite3_stmt * pStmt,
int idx,
int iScanStatusOp,
void * pOut )

References SQLITE_API.

◆ sqlite3_stmt_scanstatus_reset()

void sqlite3_stmt_scanstatus_reset ( sqlite3_stmt * )

References SQLITE_API.

◆ sqlite3_stmt_scanstatus_v2()

int sqlite3_stmt_scanstatus_v2 ( sqlite3_stmt * pStmt,
int idx,
int iScanStatusOp,
int flags,
void * pOut )

References SQLITE_API.

◆ sqlite3_stmt_status()

int sqlite3_stmt_status ( sqlite3_stmt * pStmt,
int op,
int resetFlg )
93531 {
93532 Vdbe *pVdbe = (Vdbe*)pStmt;
93533 u32 v;
93534#ifdef SQLITE_ENABLE_API_ARMOR
93535 if( !pStmt
93536 || (op!=SQLITE_STMTSTATUS_MEMUSED && (op<0||op>=ArraySize(pVdbe->aCounter)))
93537 ){
93538 (void)SQLITE_MISUSE_BKPT;
93539 return 0;
93540 }
93541#endif
93542 if( op==SQLITE_STMTSTATUS_MEMUSED ){
93543 sqlite3 *db = pVdbe->db;
93545 v = 0;
93546 db->pnBytesFreed = (int*)&v;
93547 assert( db->lookaside.pEnd==db->lookaside.pTrueEnd );
93548 db->lookaside.pEnd = db->lookaside.pStart;
93549 sqlite3VdbeDelete(pVdbe);
93550 db->pnBytesFreed = 0;
93551 db->lookaside.pEnd = db->lookaside.pTrueEnd;
#define SQLITE_STMTSTATUS_MEMUSED
Definition sqlite3.c:9435
u32 aCounter[9]
Definition sqlite3.c:24087

◆ sqlite3_str_append()

void sqlite3_str_append ( sqlite3_str * p,
const char * zIn,
int N )
32723 {
32724 assert( z!=0 || N==0 );
32725 assert( p->zText!=0 || p->nChar==0 || p->accError );
32726 assert( N>=0 );
32727 assert( p->accError==0 || p->nAlloc==0 || p->mxAlloc==0 );
32728 if( p->nChar+N >= p->nAlloc ){
32729 enlargeAndAppend(p,z,N);
u32 nAlloc
Definition sqlite3.c:20567
u32 nChar
Definition sqlite3.c:20569
char * zText
Definition sqlite3.c:20566
u8 accError
Definition sqlite3.c:20570
u32 mxAlloc
Definition sqlite3.c:20568
static void enlargeAndAppend(StrAccum *p, const char *z, int N)
Definition sqlite3.c:32705

◆ sqlite3_str_appendall()

void sqlite3_str_appendall ( sqlite3_str * p,
const char * zIn )

◆ sqlite3_str_appendchar()

void sqlite3_str_appendchar ( sqlite3_str * p,
int N,
char C )
32695 {

◆ sqlite3_str_appendf()

void sqlite3_str_appendf ( sqlite3_str * p,
const char * zFormat,
... )

References sqlite3_str_vappendf, and SQLITE_API.

◆ sqlite3_str_errcode()

int sqlite3_str_errcode ( sqlite3_str * p)

◆ sqlite3_str_finish()

char * sqlite3_str_finish ( sqlite3_str * p)
32795 {
32796 0, 0, 0, 0, 0, SQLITE_NOMEM, 0
32797};
32798
32799/* Finalize a string created using sqlite3_str_new().
32800*/
32802 char *z;
32803 if( p!=0 && p!=&sqlite3OomStr ){
32804 z = sqlite3StrAccumFinish(p);
static sqlite3_str sqlite3OomStr
Definition sqlite3.c:32789
static char * sqlite3StrAccumFinish(StrAccum *)
Definition sqlite3.c:32757
Definition sqlite3.c:20564
#define sqlite3_str_finish
Definition sqlite3ext.h:646

References sqlite3OomStr, and SQLITE_NOMEM.

◆ sqlite3_str_length()

int sqlite3_str_length ( sqlite3_str * p)
32813 {
32814 return p ? p->accError : SQLITE_NOMEM;

References sqlite3_str::accError, SQLITE_API, and SQLITE_NOMEM.

◆ sqlite3_str_new()

sqlite3_str * sqlite3_str_new ( sqlite3 * db)
32867 {
32868 sqlite3_str *p = sqlite3_malloc64(sizeof(*p));
32869 if( p ){
32870 sqlite3StrAccumInit(p, 0, 0, 0,

◆ sqlite3_str_reset()

void sqlite3_str_reset ( sqlite3_str * p)
32832 {
32833 if( isMalloced(p) ){
32834 sqlite3DbFree(p->db, p->zText);
#define isMalloced(X)
Definition sqlite3.c:20577
sqlite3 * db
Definition sqlite3.c:20565

◆ sqlite3_str_value()

char * sqlite3_str_value ( sqlite3_str * p)
32818 {
32819 return p ? p->nChar : 0;
32820}
32821

References sqlite3_str::nChar, and SQLITE_API.

◆ sqlite3_str_vappendf()

void sqlite3_str_vappendf ( sqlite3_str * pAccum,
const char * zFormat,
va_list ap )
31831 {
31832 int c; /* Next character in the format string */
31833 char *bufpt; /* Pointer to the conversion buffer */
31834 int precision; /* Precision of the current field */
31835 int length; /* Length of the field */
31836 int idx; /* A general purpose loop counter */
31837 int width; /* Width of the current field */
31838 etByte flag_leftjustify; /* True if "-" flag is present */
31839 etByte flag_prefix; /* '+' or ' ' or 0 for prefix */
31840 etByte flag_alternateform; /* True if "#" flag is present */
31841 etByte flag_altform2; /* True if "!" flag is present */
31842 etByte flag_zeropad; /* True if field width constant starts with zero */
31843 etByte flag_long; /* 1 for the "l" flag, 2 for "ll", 0 by default */
31844 etByte done; /* Loop termination flag */
31845 etByte cThousand; /* Thousands separator for %d and %u */
31846 etByte xtype = etINVALID; /* Conversion paradigm */
31847 u8 bArgList; /* True for SQLITE_PRINTF_SQLFUNC */
31848 char prefix; /* Prefix character. "+" or "-" or " " or '\0'. */
31849 sqlite_uint64 longvalue; /* Value for integer types */
31850 double realvalue; /* Value for real types */
31851 const et_info *infop; /* Pointer to the appropriate info structure */
31852 char *zOut; /* Rendering buffer */
31853 int nOut; /* Size of the rendering buffer */
31854 char *zExtra = 0; /* Malloced memory used by some conversion */
31855 int exp, e2; /* exponent of real numbers */
31856 etByte flag_dp; /* True if decimal point should be shown */
31857 etByte flag_rtz; /* True if trailing zeros should be removed */
31858
31859 PrintfArguments *pArgList = 0; /* Arguments for SQLITE_PRINTF_SQLFUNC */
31860 char buf[etBUFSIZE]; /* Conversion buffer */
31861
31862 /* pAccum never starts out with an empty buffer that was obtained from
31863 ** malloc(). This precondition is required by the mprintf("%z...")
31864 ** optimization. */
31865 assert( pAccum->nChar>0 || (pAccum->printfFlags&SQLITE_PRINTF_MALLOCED)==0 );
31866
31867 bufpt = 0;
31868 if( (pAccum->printfFlags & SQLITE_PRINTF_SQLFUNC)!=0 ){
31869 pArgList = va_arg(ap, PrintfArguments*);
31870 bArgList = 1;
31871 }else{
31872 bArgList = 0;
31873 }
31874 for(; (c=(*fmt))!=0; ++fmt){
31875 if( c!='%' ){
31876 bufpt = (char *)fmt;
31877#if HAVE_STRCHRNUL
31878 fmt = strchrnul(fmt, '%');
31879#else
31880 do{ fmt++; }while( *fmt && *fmt != '%' );
31881#endif
31882 sqlite3_str_append(pAccum, bufpt, (int)(fmt - bufpt));
31883 if( *fmt==0 ) break;
31884 }
31885 if( (c=(*++fmt))==0 ){
31886 sqlite3_str_append(pAccum, "%", 1);
31887 break;
31888 }
31889 /* Find out what flags are present */
31890 flag_leftjustify = flag_prefix = cThousand =
31891 flag_alternateform = flag_altform2 = flag_zeropad = 0;
31892 done = 0;
31893 width = 0;
31894 flag_long = 0;
31895 precision = -1;
31896 do{
31897 switch( c ){
31898 case '-': flag_leftjustify = 1; break;
31899 case '+': flag_prefix = '+'; break;
31900 case ' ': flag_prefix = ' '; break;
31901 case '#': flag_alternateform = 1; break;
31902 case '!': flag_altform2 = 1; break;
31903 case '0': flag_zeropad = 1; break;
31904 case ',': cThousand = ','; break;
31905 default: done = 1; break;
31906 case 'l': {
31907 flag_long = 1;
31908 c = *++fmt;
31909 if( c=='l' ){
31910 c = *++fmt;
31911 flag_long = 2;
31912 }
31913 done = 1;
31914 break;
31915 }
31916 case '1': case '2': case '3': case '4': case '5':
31917 case '6': case '7': case '8': case '9': {
31918 unsigned wx = c - '0';
31919 while( (c = *++fmt)>='0' && c<='9' ){
31920 wx = wx*10 + c - '0';
31921 }
31922 testcase( wx>0x7fffffff );
31923 width = wx & 0x7fffffff;
31924#ifdef SQLITE_PRINTF_PRECISION_LIMIT
31925 if( width>SQLITE_PRINTF_PRECISION_LIMIT ){
31926 width = SQLITE_PRINTF_PRECISION_LIMIT;
31927 }
31928#endif
31929 if( c!='.' && c!='l' ){
31930 done = 1;
31931 }else{
31932 fmt--;
31933 }
31934 break;
31935 }
31936 case '*': {
31937 if( bArgList ){
31938 width = (int)getIntArg(pArgList);
31939 }else{
31940 width = va_arg(ap,int);
31941 }
31942 if( width<0 ){
31943 flag_leftjustify = 1;
31944 width = width >= -2147483647 ? -width : 0;
31945 }
31946#ifdef SQLITE_PRINTF_PRECISION_LIMIT
31947 if( width>SQLITE_PRINTF_PRECISION_LIMIT ){
31948 width = SQLITE_PRINTF_PRECISION_LIMIT;
31949 }
31950#endif
31951 if( (c = fmt[1])!='.' && c!='l' ){
31952 c = *++fmt;
31953 done = 1;
31954 }
31955 break;
31956 }
31957 case '.': {
31958 c = *++fmt;
31959 if( c=='*' ){
31960 if( bArgList ){
31961 precision = (int)getIntArg(pArgList);
31962 }else{
31963 precision = va_arg(ap,int);
31964 }
31965 if( precision<0 ){
31966 precision = precision >= -2147483647 ? -precision : -1;
31967 }
31968 c = *++fmt;
31969 }else{
31970 unsigned px = 0;
31971 while( c>='0' && c<='9' ){
31972 px = px*10 + c - '0';
31973 c = *++fmt;
31974 }
31975 testcase( px>0x7fffffff );
31976 precision = px & 0x7fffffff;
31977 }
31978#ifdef SQLITE_PRINTF_PRECISION_LIMIT
31979 if( precision>SQLITE_PRINTF_PRECISION_LIMIT ){
31980 precision = SQLITE_PRINTF_PRECISION_LIMIT;
31981 }
31982#endif
31983 if( c=='l' ){
31984 --fmt;
31985 }else{
31986 done = 1;
31987 }
31988 break;
31989 }
31990 }
31991 }while( !done && (c=(*++fmt))!=0 );
31992
31993 /* Fetch the info entry for the field */
31994 infop = &fmtinfo[0];
31995 xtype = etINVALID;
31996 for(idx=0; idx<ArraySize(fmtinfo); idx++){
31997 if( c==fmtinfo[idx].fmttype ){
31998 infop = &fmtinfo[idx];
31999 xtype = infop->type;
32000 break;
32001 }
32002 }
32003
32004 /*
32005 ** At this point, variables are initialized as follows:
32006 **
32007 ** flag_alternateform TRUE if a '#' is present.
32008 ** flag_altform2 TRUE if a '!' is present.
32009 ** flag_prefix '+' or ' ' or zero
32010 ** flag_leftjustify TRUE if a '-' is present or if the
32011 ** field width was negative.
32012 ** flag_zeropad TRUE if the width began with 0.
32013 ** flag_long 1 for "l", 2 for "ll"
32014 ** width The specified field width. This is
32015 ** always non-negative. Zero is the default.
32016 ** precision The specified precision. The default
32017 ** is -1.
32018 ** xtype The class of the conversion.
32019 ** infop Pointer to the appropriate info struct.
32020 */
32021 assert( width>=0 );
32022 assert( precision>=(-1) );
32023 switch( xtype ){
32024 case etPOINTER:
32025 flag_long = sizeof(char*)==sizeof(i64) ? 2 :
32026 sizeof(char*)==sizeof(long int) ? 1 : 0;
32027 /* no break */ deliberate_fall_through
32028 case etORDINAL:
32029 case etRADIX:
32030 cThousand = 0;
32031 /* no break */ deliberate_fall_through
32032 case etDECIMAL:
32033 if( infop->flags & FLAG_SIGNED ){
32034 i64 v;
32035 if( bArgList ){
32036 v = getIntArg(pArgList);
32037 }else if( flag_long ){
32038 if( flag_long==2 ){
32039 v = va_arg(ap,i64) ;
32040 }else{
32041 v = va_arg(ap,long int);
32042 }
32043 }else{
32044 v = va_arg(ap,int);
32045 }
32046 if( v<0 ){
32048 testcase( v==(-1) );
32049 longvalue = ~v;
32050 longvalue++;
32051 prefix = '-';
32052 }else{
32053 longvalue = v;
32054 prefix = flag_prefix;
32055 }
32056 }else{
32057 if( bArgList ){
32058 longvalue = (u64)getIntArg(pArgList);
32059 }else if( flag_long ){
32060 if( flag_long==2 ){
32061 longvalue = va_arg(ap,u64);
32062 }else{
32063 longvalue = va_arg(ap,unsigned long int);
32064 }
32065 }else{
32066 longvalue = va_arg(ap,unsigned int);
32067 }
32068 prefix = 0;
32069 }
32070 if( longvalue==0 ) flag_alternateform = 0;
32071 if( flag_zeropad && precision<width-(prefix!=0) ){
32072 precision = width-(prefix!=0);
32073 }
32074 if( precision<etBUFSIZE-10-etBUFSIZE/3 ){
32075 nOut = etBUFSIZE;
32076 zOut = buf;
32077 }else{
32078 u64 n;
32079 n = (u64)precision + 10;
32080 if( cThousand ) n += precision/3;
32081 zOut = zExtra = printfTempBuf(pAccum, n);
32082 if( zOut==0 ) return;
32083 nOut = (int)n;
32084 }
32085 bufpt = &zOut[nOut-1];
32086 if( xtype==etORDINAL ){
32087 static const char zOrd[] = "thstndrd";
32088 int x = (int)(longvalue % 10);
32089 if( x>=4 || (longvalue/10)%10==1 ){
32090 x = 0;
32091 }
32092 *(--bufpt) = zOrd[x*2+1];
32093 *(--bufpt) = zOrd[x*2];
32094 }
32095 {
32096 const char *cset = &aDigits[infop->charset];
32097 u8 base = infop->base;
32098 do{ /* Convert to ascii */
32099 *(--bufpt) = cset[longvalue%base];
32100 longvalue = longvalue/base;
32101 }while( longvalue>0 );
32102 }
32103 length = (int)(&zOut[nOut-1]-bufpt);
32104 while( precision>length ){
32105 *(--bufpt) = '0'; /* Zero pad */
32106 length++;
32107 }
32108 if( cThousand ){
32109 int nn = (length - 1)/3; /* Number of "," to insert */
32110 int ix = (length - 1)%3 + 1;
32111 bufpt -= nn;
32112 for(idx=0; nn>0; idx++){
32113 bufpt[idx] = bufpt[idx+nn];
32114 ix--;
32115 if( ix==0 ){
32116 bufpt[++idx] = cThousand;
32117 nn--;
32118 ix = 3;
32119 }
32120 }
32121 }
32122 if( prefix ) *(--bufpt) = prefix; /* Add sign */
32123 if( flag_alternateform && infop->prefix ){ /* Add "0" or "0x" */
32124 const char *pre;
32125 char x;
32126 pre = &aPrefix[infop->prefix];
32127 for(; (x=(*pre))!=0; pre++) *(--bufpt) = x;
32128 }
32129 length = (int)(&zOut[nOut-1]-bufpt);
32130 break;
32131 case etFLOAT:
32132 case etEXP:
32133 case etGENERIC: {
32134 FpDecode s;
32135 int iRound;
32136 int j;
32137
32138 if( bArgList ){
32139 realvalue = getDoubleArg(pArgList);
32140 }else{
32141 realvalue = va_arg(ap,double);
32142 }
32143 if( precision<0 ) precision = 6; /* Set default precision */
32144#ifdef SQLITE_FP_PRECISION_LIMIT
32145 if( precision>SQLITE_FP_PRECISION_LIMIT ){
32146 precision = SQLITE_FP_PRECISION_LIMIT;
32147 }
32148#endif
32149 if( xtype==etFLOAT ){
32150 iRound = -precision;
32151 }else if( xtype==etGENERIC ){
32152 if( precision==0 ) precision = 1;
32153 iRound = precision;
32154 }else{
32155 iRound = precision+1;
32156 }
32157 sqlite3FpDecode(&s, realvalue, iRound, flag_altform2 ? 26 : 16);
32158 if( s.isSpecial ){
32159 if( s.isSpecial==2 ){
32160 bufpt = flag_zeropad ? "null" : "NaN";
32161 length = sqlite3Strlen30(bufpt);
32162 break;
32163 }else if( flag_zeropad ){
32164 s.z[0] = '9';
32165 s.iDP = 1000;
32166 s.n = 1;
32167 }else{
32168 memcpy(buf, "-Inf", 5);
32169 bufpt = buf;
32170 if( s.sign=='-' ){
32171 /* no-op */
32172 }else if( flag_prefix ){
32173 buf[0] = flag_prefix;
32174 }else{
32175 bufpt++;
32176 }
32177 length = sqlite3Strlen30(bufpt);
32178 break;
32179 }
32180 }
32181 if( s.sign=='-' ){
32182 prefix = '-';
32183 }else{
32184 prefix = flag_prefix;
32185 }
32186
32187 exp = s.iDP-1;
32188
32189 /*
32190 ** If the field type is etGENERIC, then convert to either etEXP
32191 ** or etFLOAT, as appropriate.
32192 */
32193 if( xtype==etGENERIC ){
32194 assert( precision>0 );
32195 precision--;
32196 flag_rtz = !flag_alternateform;
32197 if( exp<-4 || exp>precision ){
32198 xtype = etEXP;
32199 }else{
32200 precision = precision - exp;
32201 xtype = etFLOAT;
32202 }
32203 }else{
32204 flag_rtz = flag_altform2;
32205 }
32206 if( xtype==etEXP ){
32207 e2 = 0;
32208 }else{
32209 e2 = s.iDP - 1;
32210 }
32211 bufpt = buf;
32212 {
32213 i64 szBufNeeded; /* Size of a temporary buffer needed */
32214 szBufNeeded = MAX(e2,0)+(i64)precision+(i64)width+15;
32215 if( cThousand && e2>0 ) szBufNeeded += (e2+2)/3;
32216 if( szBufNeeded > etBUFSIZE ){
32217 bufpt = zExtra = printfTempBuf(pAccum, szBufNeeded);
32218 if( bufpt==0 ) return;
32219 }
32220 }
32221 zOut = bufpt;
32222 flag_dp = (precision>0 ?1:0) | flag_alternateform | flag_altform2;
32223 /* The sign in front of the number */
32224 if( prefix ){
32225 *(bufpt++) = prefix;
32226 }
32227 /* Digits prior to the decimal point */
32228 j = 0;
32229 if( e2<0 ){
32230 *(bufpt++) = '0';
32231 }else{
32232 for(; e2>=0; e2--){
32233 *(bufpt++) = j<s.n ? s.z[j++] : '0';
32234 if( cThousand && (e2%3)==0 && e2>1 ) *(bufpt++) = ',';
32235 }
32236 }
32237 /* The decimal point */
32238 if( flag_dp ){
32239 *(bufpt++) = '.';
32240 }
32241 /* "0" digits after the decimal point but before the first
32242 ** significant digit of the number */
32243 for(e2++; e2<0 && precision>0; precision--, e2++){
32244 *(bufpt++) = '0';
32245 }
32246 /* Significant digits after the decimal point */
32247 while( (precision--)>0 ){
32248 *(bufpt++) = j<s.n ? s.z[j++] : '0';
32249 }
32250 /* Remove trailing zeros and the "." if no digits follow the "." */
32251 if( flag_rtz && flag_dp ){
32252 while( bufpt[-1]=='0' ) *(--bufpt) = 0;
32253 assert( bufpt>zOut );
32254 if( bufpt[-1]=='.' ){
32255 if( flag_altform2 ){
32256 *(bufpt++) = '0';
32257 }else{
32258 *(--bufpt) = 0;
32259 }
32260 }
32261 }
32262 /* Add the "eNNN" suffix */
32263 if( xtype==etEXP ){
32264 exp = s.iDP - 1;
32265 *(bufpt++) = aDigits[infop->charset];
32266 if( exp<0 ){
32267 *(bufpt++) = '-'; exp = -exp;
32268 }else{
32269 *(bufpt++) = '+';
32270 }
32271 if( exp>=100 ){
32272 *(bufpt++) = (char)((exp/100)+'0'); /* 100's digit */
32273 exp %= 100;
32274 }
32275 *(bufpt++) = (char)(exp/10+'0'); /* 10's digit */
32276 *(bufpt++) = (char)(exp%10+'0'); /* 1's digit */
32277 }
32278 *bufpt = 0;
32279
32280 /* The converted number is in buf[] and zero terminated. Output it.
32281 ** Note that the number is in the usual order, not reversed as with
32282 ** integer conversions. */
32283 length = (int)(bufpt-zOut);
32284 bufpt = zOut;
32285
32286 /* Special case: Add leading zeros if the flag_zeropad flag is
32287 ** set and we are not left justified */
32288 if( flag_zeropad && !flag_leftjustify && length < width){
32289 int i;
32290 int nPad = width - length;
32291 for(i=width; i>=nPad; i--){
32292 bufpt[i] = bufpt[i-nPad];
32293 }
32294 i = prefix!=0;
32295 while( nPad-- ) bufpt[i++] = '0';
32296 length = width;
32297 }
32298 break;
32299 }
32300 case etSIZE:
32301 if( !bArgList ){
32302 *(va_arg(ap,int*)) = pAccum->nChar;
32303 }
32304 length = width = 0;
32305 break;
32306 case etPERCENT:
32307 buf[0] = '%';
32308 bufpt = buf;
32309 length = 1;
32310 break;
32311 case etCHARX:
32312 if( bArgList ){
32313 bufpt = getTextArg(pArgList);
32314 length = 1;
32315 if( bufpt ){
32316 buf[0] = c = *(bufpt++);
32317 if( (c&0xc0)==0xc0 ){
32318 while( length<4 && (bufpt[0]&0xc0)==0x80 ){
32319 buf[length++] = *(bufpt++);
32320 }
32321 }
32322 }else{
32323 buf[0] = 0;
32324 }
32325 }else{
32326 unsigned int ch = va_arg(ap,unsigned int);
32327 length = sqlite3AppendOneUtf8Character(buf, ch);
32328 }
32329 if( precision>1 ){
32330 i64 nPrior = 1;
32331 width -= precision-1;
32332 if( width>1 && !flag_leftjustify ){
32333 sqlite3_str_appendchar(pAccum, width-1, ' ');
32334 width = 0;
32335 }
32336 sqlite3_str_append(pAccum, buf, length);
32337 precision--;
32338 while( precision > 1 ){
32339 i64 nCopyBytes;
32340 if( nPrior > precision-1 ) nPrior = precision - 1;
32341 nCopyBytes = length*nPrior;
32342 if( nCopyBytes + pAccum->nChar >= pAccum->nAlloc ){
32343 sqlite3StrAccumEnlarge(pAccum, nCopyBytes);
32344 }
32345 if( pAccum->accError ) break;
32346 sqlite3_str_append(pAccum,
32347 &pAccum->zText[pAccum->nChar-nCopyBytes], nCopyBytes);
32348 precision -= nPrior;
32349 nPrior *= 2;
32350 }
32351 }
32352 bufpt = buf;
32353 flag_altform2 = 1;
32354 goto adjust_width_for_utf8;
32355 case etSTRING:
32356 case etDYNSTRING:
32357 if( bArgList ){
32358 bufpt = getTextArg(pArgList);
32359 xtype = etSTRING;
32360 }else{
32361 bufpt = va_arg(ap,char*);
32362 }
32363 if( bufpt==0 ){
32364 bufpt = "";
32365 }else if( xtype==etDYNSTRING ){
32366 if( pAccum->nChar==0
32367 && pAccum->mxAlloc
32368 && width==0
32369 && precision<0
32370 && pAccum->accError==0
32371 ){
32372 /* Special optimization for sqlite3_mprintf("%z..."):
32373 ** Extend an existing memory allocation rather than creating
32374 ** a new one. */
32375 assert( (pAccum->printfFlags&SQLITE_PRINTF_MALLOCED)==0 );
32376 pAccum->zText = bufpt;
32377 pAccum->nAlloc = sqlite3DbMallocSize(pAccum->db, bufpt);
32378 pAccum->nChar = 0x7fffffff & (int)strlen(bufpt);
32380 length = 0;
32381 break;
32382 }
32383 zExtra = bufpt;
32384 }
32385 if( precision>=0 ){
32386 if( flag_altform2 ){
32387 /* Set length to the number of bytes needed in order to display
32388 ** precision characters */
32389 unsigned char *z = (unsigned char*)bufpt;
32390 while( precision-- > 0 && z[0] ){
32392 }
32393 length = (int)(z - (unsigned char*)bufpt);
32394 }else{
32395 for(length=0; length<precision && bufpt[length]; length++){}
32396 }
32397 }else{
32398 length = 0x7fffffff & (int)strlen(bufpt);
32399 }
32400 adjust_width_for_utf8:
32401 if( flag_altform2 && width>0 ){
32402 /* Adjust width to account for extra bytes in UTF-8 characters */
32403 int ii = length - 1;
32404 while( ii>=0 ) if( (bufpt[ii--] & 0xc0)==0x80 ) width++;
32405 }
32406 break;
32407 case etESCAPE_q: /* %q: Escape ' characters */
32408 case etESCAPE_Q: /* %Q: Escape ' and enclose in '...' */
32409 case etESCAPE_w: { /* %w: Escape " characters */
32410 i64 i, j, k, n;
32411 int needQuote = 0;
32412 char ch;
32413 char *escarg;
32414 char q;
32415
32416 if( bArgList ){
32417 escarg = getTextArg(pArgList);
32418 }else{
32419 escarg = va_arg(ap,char*);
32420 }
32421 if( escarg==0 ){
32422 escarg = (xtype==etESCAPE_Q ? "NULL" : "(NULL)");
32423 }else if( xtype==etESCAPE_Q ){
32424 needQuote = 1;
32425 }
32426 if( xtype==etESCAPE_w ){
32427 q = '"';
32428 flag_alternateform = 0;
32429 }else{
32430 q = '\'';
32431 }
32432 /* For %q, %Q, and %w, the precision is the number of bytes (or
32433 ** characters if the ! flags is present) to use from the input.
32434 ** Because of the extra quoting characters inserted, the number
32435 ** of output characters may be larger than the precision.
32436 */
32437 k = precision;
32438 for(i=n=0; k!=0 && (ch=escarg[i])!=0; i++, k--){
32439 if( ch==q ) n++;
32440 if( flag_altform2 && (ch&0xc0)==0xc0 ){
32441 while( (escarg[i+1]&0xc0)==0x80 ){ i++; }
32442 }
32443 }
32444 if( flag_alternateform ){
32445 /* For %#q, do unistr()-style backslash escapes for
32446 ** all control characters, and for backslash itself.
32447 ** For %#Q, do the same but only if there is at least
32448 ** one control character. */
32449 u32 nBack = 0;
32450 u32 nCtrl = 0;
32451 for(k=0; k<i; k++){
32452 if( escarg[k]=='\\' ){
32453 nBack++;
32454 }else if( ((u8*)escarg)[k]<=0x1f ){
32455 nCtrl++;
32456 }
32457 }
32458 if( nCtrl || xtype==etESCAPE_q ){
32459 n += nBack + 5*nCtrl;
32460 if( xtype==etESCAPE_Q ){
32461 n += 10;
32462 needQuote = 2;
32463 }
32464 }else{
32465 flag_alternateform = 0;
32466 }
32467 }
32468 n += i + 3;
32469 if( n>etBUFSIZE ){
32470 bufpt = zExtra = printfTempBuf(pAccum, n);
32471 if( bufpt==0 ) return;
32472 }else{
32473 bufpt = buf;
32474 }
32475 j = 0;
32476 if( needQuote ){
32477 if( needQuote==2 ){
32478 memcpy(&bufpt[j], "unistr('", 8);
32479 j += 8;
32480 }else{
32481 bufpt[j++] = '\'';
32482 }
32483 }
32484 k = i;
32485 if( flag_alternateform ){
32486 for(i=0; i<k; i++){
32487 bufpt[j++] = ch = escarg[i];
32488 if( ch==q ){
32489 bufpt[j++] = ch;
32490 }else if( ch=='\\' ){
32491 bufpt[j++] = '\\';
32492 }else if( ((unsigned char)ch)<=0x1f ){
32493 bufpt[j-1] = '\\';
32494 bufpt[j++] = 'u';
32495 bufpt[j++] = '0';
32496 bufpt[j++] = '0';
32497 bufpt[j++] = ch>=0x10 ? '1' : '0';
32498 bufpt[j++] = "0123456789abcdef"[ch&0xf];
32499 }
32500 }
32501 }else{
32502 for(i=0; i<k; i++){
32503 bufpt[j++] = ch = escarg[i];
32504 if( ch==q ) bufpt[j++] = ch;
32505 }
32506 }
32507 if( needQuote ){
32508 bufpt[j++] = '\'';
32509 if( needQuote==2 ) bufpt[j++] = ')';
32510 }
32511 bufpt[j] = 0;
32512 length = j;
32513 goto adjust_width_for_utf8;
32514 }
32515 case etTOKEN: {
32516 if( (pAccum->printfFlags & SQLITE_PRINTF_INTERNAL)==0 ) return;
32517 if( flag_alternateform ){
32518 /* %#T means an Expr pointer that uses Expr.u.zToken */
32519 Expr *pExpr = va_arg(ap,Expr*);
32520 if( ALWAYS(pExpr) && ALWAYS(!ExprHasProperty(pExpr,EP_IntValue)) ){
32521 sqlite3_str_appendall(pAccum, (const char*)pExpr->u.zToken);
32522 sqlite3RecordErrorOffsetOfExpr(pAccum->db, pExpr);
32523 }
32524 }else{
32525 /* %T means a Token pointer */
32526 Token *pToken = va_arg(ap, Token*);
32527 assert( bArgList==0 );
32528 if( pToken && pToken->n ){
32529 sqlite3_str_append(pAccum, (const char*)pToken->z, pToken->n);
32530 sqlite3RecordErrorByteOffset(pAccum->db, pToken->z);
32531 }
32532 }
32533 length = width = 0;
32534 break;
32535 }
32536 case etSRCITEM: {
32537 SrcItem *pItem;
32538 if( (pAccum->printfFlags & SQLITE_PRINTF_INTERNAL)==0 ) return;
32539 pItem = va_arg(ap, SrcItem*);
32540 assert( bArgList==0 );
32541 if( pItem->zAlias && !flag_altform2 ){
32542 sqlite3_str_appendall(pAccum, pItem->zAlias);
32543 }else if( pItem->zName ){
32544 if( pItem->fg.fixedSchema==0
32545 && pItem->fg.isSubquery==0
32546 && pItem->u4.zDatabase!=0
32547 ){
32548 sqlite3_str_appendall(pAccum, pItem->u4.zDatabase);
32549 sqlite3_str_append(pAccum, ".", 1);
32550 }
32551 sqlite3_str_appendall(pAccum, pItem->zName);
32552 }else if( pItem->zAlias ){
32553 sqlite3_str_appendall(pAccum, pItem->zAlias);
32554 }else if( ALWAYS(pItem->fg.isSubquery) ){/* Because of tag-20240424-1 */
32555 Select *pSel = pItem->u4.pSubq->pSelect;
32556 assert( pSel!=0 );
32557 if( pSel->selFlags & SF_NestedFrom ){
32558 sqlite3_str_appendf(pAccum, "(join-%u)", pSel->selId);
32559 }else if( pSel->selFlags & SF_MultiValue ){
32560 assert( !pItem->fg.isTabFunc && !pItem->fg.isIndexedBy );
32561 sqlite3_str_appendf(pAccum, "%u-ROW VALUES CLAUSE",
32562 pItem->u1.nRow);
32563 }else{
32564 sqlite3_str_appendf(pAccum, "(subquery-%u)", pSel->selId);
32565 }
32566 }
32567 length = width = 0;
32568 break;
32569 }
32570 default: {
32571 assert( xtype==etINVALID );
32572 return;
32573 }
32574 }/* End switch over the format type */
32575 /*
32576 ** The text of the conversion is pointed to by "bufpt" and is
32577 ** "length" characters long. The field width is "width". Do
32578 ** the output. Both length and width are in bytes, not characters,
32579 ** at this point. If the "!" flag was present on string conversions
32580 ** indicating that width and precision should be expressed in characters,
32581 ** then the values have been translated prior to reaching this point.
32582 */
32583 width -= length;
32584 if( width>0 ){
32585 if( !flag_leftjustify ) sqlite3_str_appendchar(pAccum, width, ' ');
32586 sqlite3_str_append(pAccum, bufpt, length);
32587 if( flag_leftjustify ) sqlite3_str_appendchar(pAccum, width, ' ');
32588 }else{
32589 sqlite3_str_append(pAccum, bufpt, length);
32590 }
32591
#define SMALLEST_INT64
Definition shell.c:6541
int iDP
Definition sqlite3.c:21192
static const char aDigits[]
Definition sqlite3.c:31715
#define etCHARX
Definition sqlite3.c:31672
#define etESCAPE_q
Definition sqlite3.c:31674
union SrcItem::@034312307210060320133242370160113035005237177041 u1
#define etESCAPE_Q
Definition sqlite3.c:31675
#define etSIZE
Definition sqlite3.c:31668
#define SF_NestedFrom
Definition sqlite3.c:19996
#define SQLITE_PRINTF_MALLOCED
Definition sqlite3.c:20575
u8 printfFlags
Definition sqlite3.c:20571
#define SQLITE_PRINTF_SQLFUNC
Definition sqlite3.c:20574
unsigned long long int sqlite_uint64
Definition sqlite3.c:621
etByte type
Definition sqlite3.c:31699
#define SF_MultiValue
Definition sqlite3.c:19995
static const char aPrefix[]
Definition sqlite3.c:31716
static double getDoubleArg(PrintfArguments *p)
Definition sqlite3.c:31770
#define etPOINTER
Definition sqlite3.c:31678
etByte base
Definition sqlite3.c:31697
etByte prefix
Definition sqlite3.c:31701
char * z
Definition sqlite3.c:21193
#define etESCAPE_w
Definition sqlite3.c:31679
struct SrcItem::@147004116245271346057272244375360054111044326110 fg
static char * getTextArg(PrintfArguments *p)
Definition sqlite3.c:31774
#define FLAG_SIGNED
Definition sqlite3.c:31707
int n
Definition sqlite3.c:21191
static int sqlite3DbMallocSize(sqlite3 *, const void *)
Definition sqlite3.c:31099
#define etGENERIC
Definition sqlite3.c:31667
static void sqlite3RecordErrorOffsetOfExpr(sqlite3 *, const Expr *)
Definition sqlite3.c:32621
#define SQLITE_FP_PRECISION_LIMIT
Definition sqlite3.c:31815
union Expr::@273206226103156306246263044064241076263350071274 u
#define etPERCENT
Definition sqlite3.c:31671
const char * z
Definition sqlite3.c:19234
char sign
Definition sqlite3.c:21189
#define etRADIX
Definition sqlite3.c:31664
#define etDECIMAL
Definition sqlite3.c:31681
#define etEXP
Definition sqlite3.c:31666
#define ExprHasProperty(E, P)
Definition sqlite3.c:19495
#define etSTRING
Definition sqlite3.c:31669
etByte charset
Definition sqlite3.c:31700
#define etORDINAL
Definition sqlite3.c:31680
u32 selFlags
Definition sqlite3.c:19955
#define SQLITE_SKIP_UTF8(zIn)
Definition sqlite3.c:20982
char * zAlias
Definition sqlite3.c:19708
#define etDYNSTRING
Definition sqlite3.c:31670
etByte flags
Definition sqlite3.c:31698
char * zName
Definition sqlite3.c:19707
unsigned char etByte
Definition sqlite3.c:31689
#define EP_IntValue
Definition sqlite3.c:19465
#define etSRCITEM
Definition sqlite3.c:31677
static int sqlite3AppendOneUtf8Character(char *, u32)
Definition sqlite3.c:35018
static const et_info fmtinfo[]
Definition sqlite3.c:31717
#define etBUFSIZE
Definition sqlite3.c:31809
#define etFLOAT
Definition sqlite3.c:31665
static sqlite3_int64 getIntArg(PrintfArguments *p)
Definition sqlite3.c:31766
static void sqlite3RecordErrorByteOffset(sqlite3 *, const char *)
Definition sqlite3.c:32600
u32 selId
Definition sqlite3.c:19957
unsigned int n
Definition sqlite3.c:19235
#define MAX(A, B)
Definition sqlite3.c:15201
#define etTOKEN
Definition sqlite3.c:31676
#define SQLITE_PRINTF_INTERNAL
Definition sqlite3.c:20573
static int sqlite3StrAccumEnlarge(StrAccum *, i64)
Definition sqlite3.c:32639
static void sqlite3FpDecode(FpDecode *, double, int, int)
Definition sqlite3.c:36521
union SrcItem::@173335133365100243031343150042046067232142275117 u4
#define etINVALID
Definition sqlite3.c:31683
char isSpecial
Definition sqlite3.c:21190
static char * printfTempBuf(sqlite3_str *pAccum, sqlite3_int64 n)
Definition sqlite3.c:31788
Definition sqlite3.c:19385
Definition sqlite3.c:21188
Definition sqlite3.c:21178
Definition sqlite3.c:19952
Definition sqlite3.c:19706
Definition sqlite3.c:19233
Definition sqlite3.c:31695
#define sqlite3_str_appendf
Definition sqlite3ext.h:647
#define sqlite3_str_appendchar
Definition sqlite3ext.h:651
#define sqlite3_str_appendall
Definition sqlite3ext.h:650
#define sqlite3_str_append
Definition sqlite3ext.h:649

References sqlite3_str::accError, aDigits, ALWAYS, aPrefix, ArraySize, et_info::base, c, et_info::charset, sqlite3_str::db, deliberate_fall_through, EP_IntValue, etBUFSIZE, etCHARX, etDECIMAL, etDYNSTRING, etESCAPE_Q, etESCAPE_q, etESCAPE_w, etEXP, etFLOAT, etGENERIC, etINVALID, etORDINAL, etPERCENT, etPOINTER, etRADIX, etSIZE, etSRCITEM, etSTRING, etTOKEN, ExprHasProperty, SrcItem::fg, FLAG_SIGNED, et_info::flags, fmtinfo, getDoubleArg(), getIntArg(), getTextArg(), FpDecode::iDP, FpDecode::isSpecial, MAX, sqlite3_str::mxAlloc, FpDecode::n, Token::n, sqlite3_str::nAlloc, sqlite3_str::nChar, et_info::prefix, sqlite3_str::printfFlags, printfTempBuf(), Select::selFlags, Select::selId, SF_MultiValue, SF_NestedFrom, FpDecode::sign, SMALLEST_INT64, sqlite3_str_append, sqlite3_str_appendall, sqlite3_str_appendchar, sqlite3_str_appendf, sqlite3AppendOneUtf8Character(), sqlite3DbFree(), sqlite3DbMallocSize(), sqlite3FpDecode(), sqlite3RecordErrorByteOffset(), sqlite3RecordErrorOffsetOfExpr(), sqlite3StrAccumEnlarge(), sqlite3Strlen30(), SQLITE_API, SQLITE_FP_PRECISION_LIMIT, SQLITE_PRINTF_INTERNAL, SQLITE_PRINTF_MALLOCED, SQLITE_PRINTF_SQLFUNC, SQLITE_SKIP_UTF8, testcase, et_info::type, Expr::u, SrcItem::u1, SrcItem::u4, FpDecode::z, Token::z, SrcItem::zAlias, SrcItem::zName, and sqlite3_str::zText.

Here is the call graph for this function:

◆ sqlite3_strglob()

int sqlite3_strglob ( const char * zGlob,
const char * zStr )
131215 {
131216 if( zString==0 ){
131217 return zGlobPattern!=0;

◆ sqlite3_stricmp()

int sqlite3_stricmp ( const char * zLeft,
const char * zRight )
35912 : R-30243-02494 The sqlite3_stricmp() and
35913** sqlite3_strnicmp() APIs allow applications and extensions to compare
35914** the contents of two buffers containing UTF-8 strings in a
35915** case-independent fashion, using the same definition of "case
35916** independence" that SQLite uses internally when comparing identifiers.
35917*/
35918SQLITE_API int sqlite3_stricmp(const char *zLeft, const char *zRight){
35919 if( zLeft==0 ){
#define sqlite3_stricmp
Definition sqlite3ext.h:593
#define sqlite3_strnicmp
Definition sqlite3ext.h:577

References SQLITE_API.

◆ sqlite3_strlike()

int sqlite3_strlike ( const char * zGlob,
const char * zStr,
unsigned int cEsc )
131229 {
131230 if( zStr==0 ){
131231 return zPattern!=0;

◆ sqlite3_strnicmp()

int sqlite3_strnicmp ( const char * zLeft,
const char * zRight,
int N )
35945 {
35946 register unsigned char *a, *b;
35947 if( zLeft==0 ){
35948 return zRight ? -1 : 0;
35949 }else if( zRight==0 ){
35950 return 1;
#define b

◆ sqlite3_system_errno()

int sqlite3_system_errno ( sqlite3 * db)
185386 {

References SQLITE_MISUSE_BKPT.

◆ sqlite3_table_column_metadata()

int sqlite3_table_column_metadata ( sqlite3 * db,
const char * zDbName,
const char * zTableName,
const char * zColumnName,
char const ** pzDataType,
char const ** pzCollSeq,
int * pNotNull,
int * pPrimaryKey,
int * pAutoinc )
186563 {
186564 int rc;
186565 char *zErrMsg = 0;
186566 Table *pTab = 0;
186567 Column *pCol = 0;
186568 int iCol = 0;
186569 char const *zDataType = 0;
186570 char const *zCollSeq = 0;
186571 int notnull = 0;
186572 int primarykey = 0;
186573 int autoinc = 0;
186574
186575
186576#ifdef SQLITE_ENABLE_API_ARMOR
186577 if( !sqlite3SafetyCheckOk(db) || zTableName==0 ){
186578 return SQLITE_MISUSE_BKPT;
186579 }
186580#endif
186581
186582 /* Ensure the database schema has been loaded */
186585 rc = sqlite3Init(db, &zErrMsg);
186586 if( SQLITE_OK!=rc ){
186587 goto error_out;
186588 }
186589
186590 /* Locate the table in question */
186591 pTab = sqlite3FindTable(db, zTableName, zDbName);
186592 if( !pTab || IsView(pTab) ){
186593 pTab = 0;
186594 goto error_out;
186595 }
186596
186597 /* Find the column for which info is requested */
186598 if( zColumnName==0 ){
186599 /* Query for existence of table only */
186600 }else{
186601 iCol = sqlite3ColumnIndex(pTab, zColumnName);
186602 if( iCol>=0 ){
186603 pCol = &pTab->aCol[iCol];
186604 }else{
186605 if( HasRowid(pTab) && sqlite3IsRowid(zColumnName) ){
186606 iCol = pTab->iPKey;
186607 pCol = iCol>=0 ? &pTab->aCol[iCol] : 0;
186608 }else{
186609 pTab = 0;
186610 goto error_out;
186611 }
186612 }
186613 }
186614
186615 /* The following block stores the meta information that will be returned
186616 ** to the caller in local variables zDataType, zCollSeq, notnull, primarykey
186617 ** and autoinc. At this point there are two possibilities:
186618 **
186619 ** 1. The specified column name was rowid", "oid" or "_rowid_"
186620 ** and there is no explicitly declared IPK column.
186621 **
186622 ** 2. The table is not a view and the column name identified an
186623 ** explicitly declared column. Copy meta information from *pCol.
186624 */
186625 if( pCol ){
186626 zDataType = sqlite3ColumnType(pCol,0);
186627 zCollSeq = sqlite3ColumnColl(pCol);
186628 notnull = pCol->notNull!=0;
186629 primarykey = (pCol->colFlags & COLFLAG_PRIMKEY)!=0;
186630 autoinc = pTab->iPKey==iCol && (pTab->tabFlags & TF_Autoincrement)!=0;
186631 }else{
186632 zDataType = "INTEGER";
186633 primarykey = 1;
186634 }
186635 if( !zCollSeq ){
186636 zCollSeq = sqlite3StrBINARY;
186637 }
186638
186639error_out:
186641
186642 /* Whether the function call succeeded or failed, set the output parameters
186643 ** to whatever their local counterparts contain. If an error did occur,
186644 ** this has the effect of zeroing all output parameters.
186645 */
186646 if( pzDataType ) *pzDataType = zDataType;
186647 if( pzCollSeq ) *pzCollSeq = zCollSeq;
186648 if( pNotNull ) *pNotNull = notnull;
186649 if( pPrimaryKey ) *pPrimaryKey = primarykey;
186650 if( pAutoinc ) *pAutoinc = autoinc;
186651
186652 if( SQLITE_OK==rc && !pTab ){
186653 sqlite3DbFree(db, zErrMsg);
186654 zErrMsg = sqlite3MPrintf(db, "no such table column: %s.%s", zTableName,
186655 zColumnName);
186656 rc = SQLITE_ERROR;
static int sqlite3Init(sqlite3 *, char **)
Definition sqlite3.c:144152
#define COLFLAG_PRIMKEY
Definition sqlite3.c:18646
static const char sqlite3StrBINARY[]
Definition sqlite3.c:23524
static char * sqlite3ColumnType(Column *, char *)
Definition sqlite3.c:35608
static Table * sqlite3FindTable(sqlite3 *, const char *, const char *)
Definition sqlite3.c:123308
static int sqlite3IsRowid(const char *)
Definition sqlite3.c:113290
unsigned notNull
Definition sqlite3.c:18614
u16 colFlags
Definition sqlite3.c:18620
static const char * sqlite3ColumnColl(Column *)
Definition sqlite3.c:123705
#define TF_Autoincrement
Definition sqlite3.c:18851
i16 iPKey
Definition sqlite3.c:18802
Definition sqlite3.c:18612

◆ sqlite3_test_control()

int sqlite3_test_control ( int op,
... )
186750 {
186751 int rc = 0;
186752#ifdef SQLITE_UNTESTABLE
186753 UNUSED_PARAMETER(op);
186754#else
186755 va_list ap;
186756 va_start(ap, op);
186757 switch( op ){
186758
186759 /*
186760 ** Save the current state of the PRNG.
186761 */
186764 break;
186765 }
186766
186767 /*
186768 ** Restore the state of the PRNG to the last state saved using
186769 ** PRNG_SAVE. If PRNG_SAVE has never before been called, then
186770 ** this verb acts like PRNG_RESET.
186771 */
186774 break;
186775 }
186776
186777 /* sqlite3_test_control(SQLITE_TESTCTRL_PRNG_SEED, int x, sqlite3 *db);
186778 **
186779 ** Control the seed for the pseudo-random number generator (PRNG) that
186780 ** is built into SQLite. Cases:
186781 **
186782 ** x!=0 && db!=0 Seed the PRNG to the current value of the
186783 ** schema cookie in the main database for db, or
186784 ** x if the schema cookie is zero. This case
186785 ** is convenient to use with database fuzzers
186786 ** as it allows the fuzzer some control over the
186787 ** the PRNG seed.
186788 **
186789 ** x!=0 && db==0 Seed the PRNG to the value of x.
186790 **
186791 ** x==0 && db==0 Revert to default behavior of using the
186792 ** xRandomness method on the primary VFS.
186793 **
186794 ** This test-control also resets the PRNG so that the new seed will
186795 ** be used for the next call to sqlite3_randomness().
186796 */
186797#ifndef SQLITE_OMIT_WSD
186799 int x = va_arg(ap, int);
186800 int y;
186801 sqlite3 *db = va_arg(ap, sqlite3*);
186802 assert( db==0 || db->aDb[0].pSchema!=0 );
186803 if( db && (y = db->aDb[0].pSchema->schema_cookie)!=0 ){ x = y; }
186804 sqlite3Config.iPrngSeed = x;
186805 sqlite3_randomness(0,0);
186806 break;
186807 }
186808#endif
186809
186810 /* sqlite3_test_control(SQLITE_TESTCTRL_FK_NO_ACTION, sqlite3 *db, int b);
186811 **
186812 ** If b is true, then activate the SQLITE_FkNoAction setting. If b is
186813 ** false then clear that setting. If the SQLITE_FkNoAction setting is
186814 ** enabled, all foreign key ON DELETE and ON UPDATE actions behave as if
186815 ** they were NO ACTION, regardless of how they are defined.
186816 **
186817 ** NB: One must usually run "PRAGMA writable_schema=RESET" after
186818 ** using this test-control, before it will take full effect. failing
186819 ** to reset the schema can result in some unexpected behavior.
186820 */
186822 sqlite3 *db = va_arg(ap, sqlite3*);
186823 int b = va_arg(ap, int);
186824 if( b ){
186825 db->flags |= SQLITE_FkNoAction;
186826 }else{
186827 db->flags &= ~SQLITE_FkNoAction;
186828 }
186829 break;
186830 }
186831
186832 /*
186833 ** sqlite3_test_control(BITVEC_TEST, size, program)
186834 **
186835 ** Run a test against a Bitvec object of size. The program argument
186836 ** is an array of integers that defines the test. Return -1 on a
186837 ** memory allocation error, 0 on success, or non-zero for an error.
186838 ** See the sqlite3BitvecBuiltinTest() for additional information.
186839 */
186841 int sz = va_arg(ap, int);
186842 int *aProg = va_arg(ap, int*);
186843 rc = sqlite3BitvecBuiltinTest(sz, aProg);
186844 break;
186845 }
186846
186847 /*
186848 ** sqlite3_test_control(FAULT_INSTALL, xCallback)
186849 **
186850 ** Arrange to invoke xCallback() whenever sqlite3FaultSim() is called,
186851 ** if xCallback is not NULL.
186852 **
186853 ** As a test of the fault simulator mechanism itself, sqlite3FaultSim(0)
186854 ** is called immediately after installing the new callback and the return
186855 ** value from sqlite3FaultSim(0) becomes the return from
186856 ** sqlite3_test_control().
186857 */
186859 /* A bug in MSVC prevents it from understanding pointers to functions
186860 ** types in the second argument to va_arg(). Work around the problem
186861 ** using a typedef.
186862 ** http://support.microsoft.com/kb/47961 <-- dead hyperlink
186863 ** Search at http://web.archive.org/ to find the 2015-03-16 archive
186864 ** of the link above to see the original text.
186865 ** sqlite3GlobalConfig.xTestCallback = va_arg(ap, int(*)(int));
186866 */
186867 typedef int(*sqlite3FaultFuncType)(int);
186868 sqlite3GlobalConfig.xTestCallback = va_arg(ap, sqlite3FaultFuncType);
186869 rc = sqlite3FaultSim(0);
186870 break;
186871 }
186872
186873 /*
186874 ** sqlite3_test_control(BENIGN_MALLOC_HOOKS, xBegin, xEnd)
186875 **
186876 ** Register hooks to call to indicate which malloc() failures
186877 ** are benign.
186878 */
186880 typedef void (*void_function)(void);
186881 void_function xBenignBegin;
186882 void_function xBenignEnd;
186883 xBenignBegin = va_arg(ap, void_function);
186884 xBenignEnd = va_arg(ap, void_function);
186885 sqlite3BenignMallocHooks(xBenignBegin, xBenignEnd);
186886 break;
186887 }
186888
186889 /*
186890 ** sqlite3_test_control(SQLITE_TESTCTRL_PENDING_BYTE, unsigned int X)
186891 **
186892 ** Set the PENDING byte to the value in the argument, if X>0.
186893 ** Make no changes if X==0. Return the value of the pending byte
186894 ** as it existing before this routine was called.
186895 **
186896 ** IMPORTANT: Changing the PENDING byte from 0x40000000 results in
186897 ** an incompatible database file format. Changing the PENDING byte
186898 ** while any database connection is open results in undefined and
186899 ** deleterious behavior.
186900 */
186902 rc = PENDING_BYTE;
186903#ifndef SQLITE_OMIT_WSD
186904 {
186905 unsigned int newVal = va_arg(ap, unsigned int);
186906 if( newVal ) sqlite3PendingByte = newVal;
186907 }
186908#endif
186909 break;
186910 }
186911
186912 /*
186913 ** sqlite3_test_control(SQLITE_TESTCTRL_ASSERT, int X)
186914 **
186915 ** This action provides a run-time test to see whether or not
186916 ** assert() was enabled at compile-time. If X is true and assert()
186917 ** is enabled, then the return value is true. If X is true and
186918 ** assert() is disabled, then the return value is zero. If X is
186919 ** false and assert() is enabled, then the assertion fires and the
186920 ** process aborts. If X is false and assert() is disabled, then the
186921 ** return value is zero.
186922 */
186923 case SQLITE_TESTCTRL_ASSERT: {
186924 volatile int x = 0;
186925 assert( /*side-effects-ok*/ (x = va_arg(ap,int))!=0 );
186926 rc = x;
186927#if defined(SQLITE_DEBUG)
186928 /* Invoke these debugging routines so that the compiler does not
186929 ** issue "defined but not used" warnings. */
186930 if( x==9999 ){
186931 sqlite3ShowExpr(0);
186932 sqlite3ShowExprList(0);
186933 sqlite3ShowIdList(0);
186934 sqlite3ShowSrcList(0);
186935 sqlite3ShowWith(0);
186936 sqlite3ShowUpsert(0);
186937#ifndef SQLITE_OMIT_TRIGGER
186938 sqlite3ShowTriggerStep(0);
186939 sqlite3ShowTriggerStepList(0);
186940 sqlite3ShowTrigger(0);
186941 sqlite3ShowTriggerList(0);
186942#endif
186943#ifndef SQLITE_OMIT_WINDOWFUNC
186944 sqlite3ShowWindow(0);
186945 sqlite3ShowWinFunc(0);
186946#endif
186947 sqlite3ShowSelect(0);
186948 }
186949#endif
186950 break;
186951 }
186952
186953
186954 /*
186955 ** sqlite3_test_control(SQLITE_TESTCTRL_ALWAYS, int X)
186956 **
186957 ** This action provides a run-time test to see how the ALWAYS and
186958 ** NEVER macros were defined at compile-time.
186959 **
186960 ** The return value is ALWAYS(X) if X is true, or 0 if X is false.
186961 **
186962 ** The recommended test is X==2. If the return value is 2, that means
186963 ** ALWAYS() and NEVER() are both no-op pass-through macros, which is the
186964 ** default setting. If the return value is 1, then ALWAYS() is either
186965 ** hard-coded to true or else it asserts if its argument is false.
186966 ** The first behavior (hard-coded to true) is the case if
186967 ** SQLITE_TESTCTRL_ASSERT shows that assert() is disabled and the second
186968 ** behavior (assert if the argument to ALWAYS() is false) is the case if
186969 ** SQLITE_TESTCTRL_ASSERT shows that assert() is enabled.
186970 **
186971 ** The run-time test procedure might look something like this:
186972 **
186973 ** if( sqlite3_test_control(SQLITE_TESTCTRL_ALWAYS, 2)==2 ){
186974 ** // ALWAYS() and NEVER() are no-op pass-through macros
186975 ** }else if( sqlite3_test_control(SQLITE_TESTCTRL_ASSERT, 1) ){
186976 ** // ALWAYS(x) asserts that x is true. NEVER(x) asserts x is false.
186977 ** }else{
186978 ** // ALWAYS(x) is a constant 1. NEVER(x) is a constant 0.
186979 ** }
186980 */
186981 case SQLITE_TESTCTRL_ALWAYS: {
186982 int x = va_arg(ap,int);
186983 rc = x ? ALWAYS(x) : 0;
186984 break;
186985 }
186986
186987 /*
186988 ** sqlite3_test_control(SQLITE_TESTCTRL_BYTEORDER);
186989 **
186990 ** The integer returned reveals the byte-order of the computer on which
186991 ** SQLite is running:
186992 **
186993 ** 1 big-endian, determined at run-time
186994 ** 10 little-endian, determined at run-time
186995 ** 432101 big-endian, determined at compile-time
186996 ** 123410 little-endian, determined at compile-time
186997 */
187000 break;
187001 }
187002
187003 /* sqlite3_test_control(SQLITE_TESTCTRL_OPTIMIZATIONS, sqlite3 *db, int N)
187004 **
187005 ** Enable or disable various optimizations for testing purposes. The
187006 ** argument N is a bitmask of optimizations to be disabled. For normal
187007 ** operation N should be 0. The idea is that a test program (like the
187008 ** SQL Logic Test or SLT test module) can run the same SQL multiple times
187009 ** with various optimizations disabled to verify that the same answer
187010 ** is obtained in every case.
187011 */
187013 sqlite3 *db = va_arg(ap, sqlite3*);
187014 db->dbOptFlags = va_arg(ap, u32);
187015 break;
187016 }
187017
187018 /* sqlite3_test_control(SQLITE_TESTCTRL_GETOPT, sqlite3 *db, int *N)
187019 **
187020 ** Write the current optimization settings into *N. A zero bit means that
187021 ** the optimization is on, and a 1 bit means that the optimization is off.
187022 */
187023 case SQLITE_TESTCTRL_GETOPT: {
187024 sqlite3 *db = va_arg(ap, sqlite3*);
187025 int *pN = va_arg(ap, int*);
187026 *pN = db->dbOptFlags;
187027 break;
187028 }
187029
187030 /* sqlite3_test_control(SQLITE_TESTCTRL_LOCALTIME_FAULT, onoff, xAlt);
187031 **
187032 ** If parameter onoff is 1, subsequent calls to localtime() fail.
187033 ** If 2, then invoke xAlt() instead of localtime(). If 0, normal
187034 ** processing.
187035 **
187036 ** xAlt arguments are void pointers, but they really want to be:
187037 **
187038 ** int xAlt(const time_t*, struct tm*);
187039 **
187040 ** xAlt should write results in to struct tm object of its 2nd argument
187041 ** and return zero on success, or return non-zero on failure.
187042 */
187044 sqlite3GlobalConfig.bLocaltimeFault = va_arg(ap, int);
187045 if( sqlite3GlobalConfig.bLocaltimeFault==2 ){
187046 typedef int(*sqlite3LocaltimeType)(const void*,void*);
187047 sqlite3GlobalConfig.xAltLocaltime = va_arg(ap, sqlite3LocaltimeType);
187048 }else{
187049 sqlite3GlobalConfig.xAltLocaltime = 0;
187050 }
187051 break;
187052 }
187053
187054 /* sqlite3_test_control(SQLITE_TESTCTRL_INTERNAL_FUNCTIONS, sqlite3*);
187055 **
187056 ** Toggle the ability to use internal functions on or off for
187057 ** the database connection given in the argument.
187058 */
187060 sqlite3 *db = va_arg(ap, sqlite3*);
187062 break;
187063 }
187064
187065 /* sqlite3_test_control(SQLITE_TESTCTRL_NEVER_CORRUPT, int);
187066 **
187067 ** Set or clear a flag that indicates that the database file is always well-
187068 ** formed and never corrupt. This flag is clear by default, indicating that
187069 ** database files might have arbitrary corruption. Setting the flag during
187070 ** testing causes certain assert() statements in the code to be activated
187071 ** that demonstrate invariants on well-formed database files.
187072 */
187074 sqlite3GlobalConfig.neverCorrupt = va_arg(ap, int);
187075 break;
187076 }
187077
187078 /* sqlite3_test_control(SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS, int);
187079 **
187080 ** Set or clear a flag that causes SQLite to verify that type, name,
187081 ** and tbl_name fields of the sqlite_schema table. This is normally
187082 ** on, but it is sometimes useful to turn it off for testing.
187083 **
187084 ** 2020-07-22: Disabling EXTRA_SCHEMA_CHECKS also disables the
187085 ** verification of rootpage numbers when parsing the schema. This
187086 ** is useful to make it easier to reach strange internal error states
187087 ** during testing. The EXTRA_SCHEMA_CHECKS setting is always enabled
187088 ** in production.
187089 */
187091 sqlite3GlobalConfig.bExtraSchemaChecks = va_arg(ap, int);
187092 break;
187093 }
187094
187095 /* Set the threshold at which OP_Once counters reset back to zero.
187096 ** By default this is 0x7ffffffe (over 2 billion), but that value is
187097 ** too big to test in a reasonable amount of time, so this control is
187098 ** provided to set a small and easily reachable reset value.
187099 */
187101 sqlite3GlobalConfig.iOnceResetThreshold = va_arg(ap, int);
187102 break;
187103 }
187104
187105 /* sqlite3_test_control(SQLITE_TESTCTRL_VDBE_COVERAGE, xCallback, ptr);
187106 **
187107 ** Set the VDBE coverage callback function to xCallback with context
187108 ** pointer ptr.
187109 */
187111#ifdef SQLITE_VDBE_COVERAGE
187112 typedef void (*branch_callback)(void*,unsigned int,
187113 unsigned char,unsigned char);
187114 sqlite3GlobalConfig.xVdbeBranch = va_arg(ap,branch_callback);
187115 sqlite3GlobalConfig.pVdbeBranchArg = va_arg(ap,void*);
187116#endif
187117 break;
187118 }
187119
187120 /* sqlite3_test_control(SQLITE_TESTCTRL_SORTER_MMAP, db, nMax); */
187122 sqlite3 *db = va_arg(ap, sqlite3*);
187123 db->nMaxSorterMmap = va_arg(ap, int);
187124 break;
187125 }
187126
187127 /* sqlite3_test_control(SQLITE_TESTCTRL_ISINIT);
187128 **
187129 ** Return SQLITE_OK if SQLite has been initialized and SQLITE_ERROR if
187130 ** not.
187131 */
187132 case SQLITE_TESTCTRL_ISINIT: {
187133 if( sqlite3GlobalConfig.isInit==0 ) rc = SQLITE_ERROR;
187134 break;
187135 }
187136
187137 /* sqlite3_test_control(SQLITE_TESTCTRL_IMPOSTER, db, dbName, onOff, tnum);
187138 **
187139 ** This test control is used to create imposter tables. "db" is a pointer
187140 ** to the database connection. dbName is the database name (ex: "main" or
187141 ** "temp") which will receive the imposter. "onOff" turns imposter mode on
187142 ** or off. "tnum" is the root page of the b-tree to which the imposter
187143 ** table should connect.
187144 **
187145 ** Enable imposter mode only when the schema has already been parsed. Then
187146 ** run a single CREATE TABLE statement to construct the imposter table in
187147 ** the parsed schema. Then turn imposter mode back off again.
187148 **
187149 ** If onOff==0 and tnum>0 then reset the schema for all databases, causing
187150 ** the schema to be reparsed the next time it is needed. This has the
187151 ** effect of erasing all imposter tables.
187152 */
187154 sqlite3 *db = va_arg(ap, sqlite3*);
187155 int iDb;
187157 iDb = sqlite3FindDbName(db, va_arg(ap,const char*));
187158 if( iDb>=0 ){
187159 db->init.iDb = iDb;
187160 db->init.busy = db->init.imposterTable = va_arg(ap,int);
187161 db->init.newTnum = va_arg(ap,int);
187162 if( db->init.busy==0 && db->init.newTnum>0 ){
187164 }
187165 }
187167 break;
187168 }
187169
187170#if defined(YYCOVERAGE)
187171 /* sqlite3_test_control(SQLITE_TESTCTRL_PARSER_COVERAGE, FILE *out)
187172 **
187173 ** This test control (only available when SQLite is compiled with
187174 ** -DYYCOVERAGE) writes a report onto "out" that shows all
187175 ** state/lookahead combinations in the parser state machine
187176 ** which are never exercised. If any state is missed, make the
187177 ** return code SQLITE_ERROR.
187178 */
187180 FILE *out = va_arg(ap, FILE*);
187181 if( sqlite3ParserCoverage(out) ) rc = SQLITE_ERROR;
187182 break;
187183 }
187184#endif /* defined(YYCOVERAGE) */
187185
187186 /* sqlite3_test_control(SQLITE_TESTCTRL_RESULT_INTREAL, sqlite3_context*);
187187 **
187188 ** This test-control causes the most recent sqlite3_result_int64() value
187189 ** to be interpreted as a MEM_IntReal instead of as an MEM_Int. Normally,
187190 ** MEM_IntReal values only arise during an INSERT operation of integer
187191 ** values into a REAL column, so they can be challenging to test. This
187192 ** test-control enables us to write an intreal() SQL function that can
187193 ** inject an intreal() value at arbitrary places in an SQL statement,
187194 ** for testing purposes.
187195 */
187197 sqlite3_context *pCtx = va_arg(ap, sqlite3_context*);
187198 sqlite3ResultIntReal(pCtx);
187199 break;
187200 }
187201
187202 /* sqlite3_test_control(SQLITE_TESTCTRL_SEEK_COUNT,
187203 ** sqlite3 *db, // Database connection
187204 ** u64 *pnSeek // Write seek count here
187205 ** );
187206 **
187207 ** This test-control queries the seek-counter on the "main" database
187208 ** file. The seek-counter is written into *pnSeek and is then reset.
187209 ** The seek-count is only available if compiled with SQLITE_DEBUG.
187210 */
187212 sqlite3 *db = va_arg(ap, sqlite3*);
187213 u64 *pn = va_arg(ap, sqlite3_uint64*);
187214 *pn = sqlite3BtreeSeekCount(db->aDb->pBt);
187215 (void)db; /* Silence harmless unused variable warning */
187216 break;
187217 }
187218
187219 /* sqlite3_test_control(SQLITE_TESTCTRL_TRACEFLAGS, op, ptr)
187220 **
187221 ** "ptr" is a pointer to a u32.
187222 **
187223 ** op==0 Store the current sqlite3TreeTrace in *ptr
187224 ** op==1 Set sqlite3TreeTrace to the value *ptr
187225 ** op==2 Store the current sqlite3WhereTrace in *ptr
187226 ** op==3 Set sqlite3WhereTrace to the value *ptr
187227 */
187229 int opTrace = va_arg(ap, int);
187230 u32 *ptr = va_arg(ap, u32*);
187231 switch( opTrace ){
187232 case 0: *ptr = sqlite3TreeTrace; break;
187233 case 1: sqlite3TreeTrace = *ptr; break;
187234 case 2: *ptr = sqlite3WhereTrace; break;
187235 case 3: sqlite3WhereTrace = *ptr; break;
187236 }
187237 break;
187238 }
187239
187240 /* sqlite3_test_control(SQLITE_TESTCTRL_LOGEST,
187241 ** double fIn, // Input value
187242 ** int *pLogEst, // sqlite3LogEstFromDouble(fIn)
187243 ** u64 *pInt, // sqlite3LogEstToInt(*pLogEst)
187244 ** int *pLogEst2 // sqlite3LogEst(*pInt)
187245 ** );
187246 **
187247 ** Test access for the LogEst conversion routines.
187248 */
187249 case SQLITE_TESTCTRL_LOGEST: {
187250 double rIn = va_arg(ap, double);
187251 LogEst rLogEst = sqlite3LogEstFromDouble(rIn);
187252 int *pI1 = va_arg(ap,int*);
187253 u64 *pU64 = va_arg(ap,u64*);
187254 int *pI2 = va_arg(ap,int*);
187255 *pI1 = rLogEst;
187256 *pU64 = sqlite3LogEstToInt(rLogEst);
187257 *pI2 = sqlite3LogEst(*pU64);
187258 break;
187259 }
187260
187261#if defined(SQLITE_DEBUG) && !defined(SQLITE_OMIT_WSD)
187262 /* sqlite3_test_control(SQLITE_TESTCTRL_TUNE, id, *piValue)
187263 **
187264 ** If "id" is an integer between 1 and SQLITE_NTUNE then set the value
187265 ** of the id-th tuning parameter to *piValue. If "id" is between -1
187266 ** and -SQLITE_NTUNE, then write the current value of the (-id)-th
187267 ** tuning parameter into *piValue.
187268 **
187269 ** Tuning parameters are for use during transient development builds,
187270 ** to help find the best values for constants in the query planner.
187271 ** Access tuning parameters using the Tuning(ID) macro. Set the
187272 ** parameters in the CLI using ".testctrl tune ID VALUE".
187273 **
187274 ** Transient use only. Tuning parameters should not be used in
187275 ** checked-in code.
187276 */
187277 case SQLITE_TESTCTRL_TUNE: {
187278 int id = va_arg(ap, int);
187279 int *piValue = va_arg(ap, int*);
187280 if( id>0 && id<=SQLITE_NTUNE ){
187281 Tuning(id) = *piValue;
187282 }else if( id<0 && id>=-SQLITE_NTUNE ){
187283 *piValue = Tuning(-id);
187284 }else{
187285 rc = SQLITE_NOTFOUND;
187286 }
187287 break;
187288 }
187289#endif
187290
187291 /* sqlite3_test_control(SQLITE_TESTCTRL_JSON_SELFCHECK, &onOff);
187292 **
187293 ** Activate or deactivate validation of JSONB that is generated from
187294 ** text. Off by default, as the validation is slow. Validation is
187295 ** only available if compiled using SQLITE_DEBUG.
187296 **
187297 ** If onOff is initially 1, then turn it on. If onOff is initially
187298 ** off, turn it off. If onOff is initially -1, then change onOff
187299 ** to be the current setting.
187300 */
187302#if defined(SQLITE_DEBUG) && !defined(SQLITE_OMIT_WSD)
187303 int *pOnOff = va_arg(ap, int*);
187304 if( *pOnOff<0 ){
187305 *pOnOff = sqlite3Config.bJsonSelfcheck;
187306 }else{
187307 sqlite3Config.bJsonSelfcheck = (u8)((*pOnOff)&0xff);
187308 }
187309#endif
#define Tuning(X)
Definition sqlite3.c:20637
unsigned imposterTable
Definition sqlite3.c:18076
#define SQLITE_TESTCTRL_PARSER_COVERAGE
Definition sqlite3.c:8875
int nMaxSorterMmap
Definition sqlite3.c:18070
#define SQLITE_TESTCTRL_ALWAYS
Definition sqlite3.c:8858
#define SQLITE_TESTCTRL_LOCALTIME_FAULT
Definition sqlite3.c:8866
#define SQLITE_TESTCTRL_IMPOSTER
Definition sqlite3.c:8874
static struct Sqlite3Config sqlite3Config
Definition sqlite3.c:23391
#define sqlite3BtreeSeekCount(X)
Definition sqlite3.c:16793
#define SQLITE_NOTFOUND
Definition sqlite3.c:778
#define SQLITE_TESTCTRL_LOGEST
Definition sqlite3.c:8882
#define SQLITE_LITTLEENDIAN
Definition sqlite3.c:15429
#define UNUSED_PARAMETER(x)
Definition sqlite3.c:15729
#define SQLITE_TESTCTRL_SORTER_MMAP
Definition sqlite3.c:8873
#define SQLITE_TESTCTRL_PRNG_SAVE
Definition sqlite3.c:8849
#define SQLITE_TESTCTRL_FK_NO_ACTION
Definition sqlite3.c:8852
#define SQLITE_TESTCTRL_ISINIT
Definition sqlite3.c:8872
#define SQLITE_TESTCTRL_PENDING_BYTE
Definition sqlite3.c:8856
u32 mDbFlags
Definition sqlite3.c:18041
#define SQLITE_FkNoAction
Definition sqlite3.c:18237
Pgno newTnum
Definition sqlite3.c:18072
static u32 sqlite3WhereTrace
Definition sqlite3.c:15574
#define SQLITE_TESTCTRL_PRNG_SEED
Definition sqlite3.c:8877
#define DBFLAG_InternalFunc
Definition sqlite3.c:18260
static int sqlite3BitvecBuiltinTest(int, int *)
Definition sqlite3.c:55085
#define SQLITE_TESTCTRL_PRNG_RESTORE
Definition sqlite3.c:8850
static LogEst sqlite3LogEst(u64)
Definition sqlite3.c:37219
#define SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS
Definition sqlite3.c:8878
#define SQLITE_TESTCTRL_NEVER_CORRUPT
Definition sqlite3.c:8869
#define SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS
Definition sqlite3.c:8855
#define SQLITE_TESTCTRL_GETOPT
Definition sqlite3.c:8863
#define SQLITE_TESTCTRL_ASSERT
Definition sqlite3.c:8857
#define SQLITE_TESTCTRL_OPTIMIZATIONS
Definition sqlite3.c:8861
static u64 sqlite3LogEstToInt(LogEst)
Definition sqlite3.c:37256
#define SQLITE_TESTCTRL_JSON_SELFCHECK
Definition sqlite3.c:8860
static void sqlite3BenignMallocHooks(void(*)(void), void(*)(void))
Definition sqlite3.c:27040
#define SQLITE_BYTEORDER
Definition sqlite3.c:15411
#define SQLITE_TESTCTRL_SEEK_COUNT
Definition sqlite3.c:8879
static u32 sqlite3TreeTrace
Definition sqlite3.c:23509
static int sqlite3FaultSim(int)
Definition sqlite3.c:35548
#define SQLITE_TESTCTRL_ONCE_RESET_THRESHOLD
Definition sqlite3.c:8868
#define SQLITE_TESTCTRL_TUNE
Definition sqlite3.c:8881
#define SQLITE_TESTCTRL_VDBE_COVERAGE
Definition sqlite3.c:8870
u32 dbOptFlags
Definition sqlite3.c:18051
#define SQLITE_TESTCTRL_BITVEC_TEST
Definition sqlite3.c:8853
short int LogEst
Definition sqlite3.c:15311
static LogEst sqlite3LogEstFromDouble(double)
Definition sqlite3.c:37242
static void sqlite3PrngSaveState(void)
Definition sqlite3.c:34610
static void sqlite3ResultIntReal(sqlite3_context *)
Definition sqlite3.c:92162
#define SQLITE_TESTCTRL_RESULT_INTREAL
Definition sqlite3.c:8876
static int sqlite3PendingByte
Definition sqlite3.c:23503
#define SQLITE_TESTCTRL_FAULT_INSTALL
Definition sqlite3.c:8854
#define SQLITE_TESTCTRL_TRACEFLAGS
Definition sqlite3.c:8880
#define SQLITE_TESTCTRL_BYTEORDER
Definition sqlite3.c:8871
static void sqlite3PrngRestoreState(void)
Definition sqlite3.c:34617
#define SQLITE_BIGENDIAN
Definition sqlite3.c:15428
#define SQLITE_NTUNE
Definition sqlite3.c:20633
#define SQLITE_TESTCTRL_INTERNAL_FUNCTIONS
Definition sqlite3.c:8865
#define sqlite3_randomness
Definition sqlite3ext.h:554

◆ sqlite3_thread_cleanup()

void sqlite3_thread_cleanup ( void )

References SQLITE_API.

◆ sqlite3_threadsafe()

int sqlite3_threadsafe ( void )

◆ sqlite3_total_changes()

int sqlite3_total_changes ( sqlite3 * db)
183751 {
183752 (void)SQLITE_MISUSE_BKPT;
183753 return 0;

References SQLITE_MISUSE_BKPT.

◆ sqlite3_total_changes64()

sqlite3_int64 sqlite3_total_changes64 ( sqlite3 * db)
183742 {
183743 return (int)sqlite3_changes64(db);
183744}
183745
183746/*
183747** Return the number of changes since the database handle was opened.
183748*/
183750#ifdef SQLITE_ENABLE_API_ARMOR
#define sqlite3_total_changes64
Definition sqlite3ext.h:679
#define sqlite3_changes64
Definition sqlite3ext.h:678

References sqlite3_changes64, and SQLITE_API.

◆ sqlite3_trace()

void * sqlite3_trace ( sqlite3 * db,
void(* xTrace )(void *, const char *),
void * pArg )
184844 {
184845 void *pOld;
184846
184847#ifdef SQLITE_ENABLE_API_ARMOR
184848 if( !sqlite3SafetyCheckOk(db) ){
184849 (void)SQLITE_MISUSE_BKPT;
184850 return 0;
184851 }
184852#endif

References sqlite3::mTrace, sqlite3::mutex, sqlite3::pTraceArg, sqlite3_mutex_enter, sqlite3SafetyCheckOk(), SQLITE_API, SQLITE_MISUSE_BKPT, SQLITE_TRACE_LEGACY, and sqlite3::trace.

Here is the call graph for this function:

◆ sqlite3_trace_v2()

int sqlite3_trace_v2 ( sqlite3 * db,
unsigned uMask,
int(* xCallback )(unsigned, void *, void *, void *),
void * pCtx )
184870 {
184871#ifdef SQLITE_ENABLE_API_ARMOR
184872 if( !sqlite3SafetyCheckOk(db) ){
184873 return SQLITE_MISUSE_BKPT;
184874 }
184875#endif
184877 if( mTrace==0 ) xTrace = 0;

◆ sqlite3_transfer_bindings()

int sqlite3_transfer_bindings ( sqlite3_stmt * pFromStmt,
sqlite3_stmt * pToStmt )
93416 {
93417 Vdbe *pFrom = (Vdbe*)pFromStmt;
93418 Vdbe *pTo = (Vdbe*)pToStmt;
93419 if( pFrom->nVar!=pTo->nVar ){
93420 return SQLITE_ERROR;
93421 }
93422 assert( (pTo->prepFlags & SQLITE_PREPARE_SAVESQL)!=0 || pTo->expmask==0 );
93423 if( pTo->expmask ){
93424 pTo->expired = 1;
93425 }
bft expired
Definition sqlite3.c:24078

References Vdbe::expired, Vdbe::expmask, Vdbe::nVar, Vdbe::prepFlags, sqlite3TransferBindings(), SQLITE_API, SQLITE_ERROR, and SQLITE_PREPARE_SAVESQL.

Here is the call graph for this function:

◆ sqlite3_txn_state()

int sqlite3_txn_state ( sqlite3 * db,
const char * zSchema )
183908 {
183909 int iDb, nDb;
183910 int iTxn = -1;
183911#ifdef SQLITE_ENABLE_API_ARMOR
183912 if( !sqlite3SafetyCheckOk(db) ){
183913 (void)SQLITE_MISUSE_BKPT;
183914 return -1;
183915 }
183916#endif
183918 if( zSchema ){
183919 nDb = iDb = sqlite3FindDbName(db, zSchema);
183920 if( iDb<0 ) nDb--;
183921 }else{
183922 iDb = 0;
183923 nDb = db->nDb-1;
183924 }
183925 for(; iDb<=nDb; iDb++){

References SQLITE_OK.

◆ sqlite3_unlock_notify()

int sqlite3_unlock_notify ( sqlite3 * pBlocked,
void(* xNotify )(void **apArg, int nArg),
void * pNotifyArg )

References SQLITE_API.

◆ sqlite3_update_hook()

void * sqlite3_update_hook ( sqlite3 * db,
void(* xCallback )(void *, int, char const *, char const *, sqlite3_int64),
void * pArg )
184954 {
184955 void *pRet;
184956
184957#ifdef SQLITE_ENABLE_API_ARMOR
184958 if( !sqlite3SafetyCheckOk(db) ){
184959 (void)SQLITE_MISUSE_BKPT;
184960 return 0;
184961 }
184962#endif

◆ sqlite3_uri_boolean()

int sqlite3_uri_boolean ( sqlite3_filename z,
const char * zParam,
int bDefault )
187423 : 0;
187424}
187425
187426/*

◆ sqlite3_uri_int64()

sqlite3_int64 sqlite3_uri_int64 ( sqlite3_filename zFilename,
const char * zParam,
sqlite3_int64 bDflt )
187432 : bDflt;
187433}
187434
187435/*
187436** Return a 64-bit integer value for a query parameter.
187437*/
187439 const char *zFilename, /* Filename as passed to xOpen */
187440 const char *zParam, /* URI parameter sought */
187441 sqlite3_int64 bDflt /* return if parameter is missing */
187442){
#define sqlite3_uri_int64
Definition sqlite3ext.h:595

◆ sqlite3_uri_key()

const char * sqlite3_uri_key ( sqlite3_filename z,
int N )
187415 {
187416 if( zFilename==0 || N<0 ) return 0;
187417 zFilename = databaseName(zFilename);

◆ sqlite3_uri_parameter()

const char * sqlite3_uri_parameter ( sqlite3_filename z,
const char * zParam )

References SQLITE_API.

◆ sqlite3_user_data()

void * sqlite3_user_data ( sqlite3_context * p)

◆ sqlite3_value_blob()

const void * sqlite3_value_blob ( sqlite3_value * pVal)
91641 {
91642 Mem *p = (Mem*)pVal;
91643 if( p->flags & (MEM_Blob|MEM_Str) ){
91644 if( ExpandBlob(p)!=SQLITE_OK ){
91645 assert( p->flags==MEM_Null && p->z==0 );
91646 return 0;
91647 }
#define MEM_Blob
Definition sqlite3.c:23889
#define ExpandBlob(P)
Definition sqlite3.c:24315
#define MEM_Str
Definition sqlite3.c:23886

References ExpandBlob, sqlite3_value::flags, MEM_Blob, MEM_Null, MEM_Str, SQLITE_API, SQLITE_OK, and sqlite3_value::z.

◆ sqlite3_value_bytes()

int sqlite3_value_bytes ( sqlite3_value * pVal)
91649 : 0;
91650 }else{

References MEM_Blob.

◆ sqlite3_value_bytes16()

int sqlite3_value_bytes16 ( sqlite3_value * pVal)

◆ sqlite3_value_double()

double sqlite3_value_double ( sqlite3_value * pVal)
91654 {
91655 return sqlite3ValueBytes(pVal, SQLITE_UTF8);
91656}
static int sqlite3ValueBytes(sqlite3_value *, u8)
Definition sqlite3.c:85867

References sqlite3ValueBytes(), SQLITE_API, and SQLITE_UTF8.

Here is the call graph for this function:

◆ sqlite3_value_dup()

sqlite3_value * sqlite3_value_dup ( const sqlite3_value * pOrig)
91798 {
91799 return (pVal->flags&MEM_FromBind)!=0;
91800}
91801
91802/* Make a copy of an sqlite3_value object
91803*/
91805 sqlite3_value *pNew;
91806 if( pOrig==0 ) return 0;
91807 pNew = sqlite3_malloc( sizeof(*pNew) );
91808 if( pNew==0 ) return 0;
91809 memset(pNew, 0, sizeof(*pNew));
91810 memcpy(pNew, pOrig, MEMCELLSIZE);
91811 pNew->flags &= ~MEM_Dyn;
91812 pNew->db = 0;
91813 if( pNew->flags&(MEM_Str|MEM_Blob) ){
91814 pNew->flags &= ~(MEM_Static|MEM_Dyn);
91815 pNew->flags |= MEM_Ephem;
91817 sqlite3ValueFree(pNew);
91818 pNew = 0;
91819 }
static int sqlite3VdbeMemMakeWriteable(Mem *)
Definition sqlite3.c:84206
#define MEM_Ephem
Definition sqlite3.c:23908
#define MEMCELLSIZE
Definition sqlite3.c:23837
static void sqlite3ValueFree(sqlite3_value *)
Definition sqlite3.c:85853
#define MEM_FromBind
Definition sqlite3.c:23895
#define MEM_Dyn
Definition sqlite3.c:23906
#define sqlite3_value_dup
Definition sqlite3ext.h:613
#define sqlite3_malloc
Definition sqlite3ext.h:470

References sqlite3_value::flags, MEM_FromBind, and SQLITE_API.

◆ sqlite3_value_encoding()

int sqlite3_value_encoding ( sqlite3_value * pVal)

◆ sqlite3_value_free()

void sqlite3_value_free ( sqlite3_value * pOld)

◆ sqlite3_value_frombind()

int sqlite3_value_frombind ( sqlite3_value * pVal)
91793 {
91794 return (pVal->flags&(MEM_Null|MEM_Zero))==(MEM_Null|MEM_Zero);

References sqlite3_value::flags, MEM_Null, MEM_Zero, and SQLITE_API.

◆ sqlite3_value_int()

int sqlite3_value_int ( sqlite3_value * pVal)
91657 {
91659}

References sqlite3ValueBytes(), SQLITE_API, and SQLITE_UTF16NATIVE.

Here is the call graph for this function:

◆ sqlite3_value_int64()

sqlite3_int64 sqlite3_value_int64 ( sqlite3_value * pVal)
91660 {
91661 return sqlite3VdbeRealValue((Mem*)pVal);
91662}
static double sqlite3VdbeRealValue(Mem *)
Definition sqlite3.c:84487

References sqlite3VdbeRealValue(), and SQLITE_API.

Here is the call graph for this function:

◆ sqlite3_value_nochange()

int sqlite3_value_nochange ( sqlite3_value * pVal)
91788 {
91789 return pVal->enc;

◆ sqlite3_value_numeric_type()

int sqlite3_value_numeric_type ( sqlite3_value * pVal)
94776 {
94777 int eType = sqlite3_value_type(pVal);
94778 if( eType==SQLITE_TEXT ){

References applyNumericAffinity(), sqlite3_value_type, SQLITE_API, and SQLITE_TEXT.

Here is the call graph for this function:

◆ sqlite3_value_pointer()

void * sqlite3_value_pointer ( sqlite3_value * pVal,
const char * zPType )
91669 {
91670 Mem *pMem = (Mem*)pVal;
91671 return ((pMem->flags & MEM_Subtype) ? pMem->eSubtype : 0);
91672}
91673SQLITE_API void *sqlite3_value_pointer(sqlite3_value *pVal, const char *zPType){
91674 Mem *p = (Mem*)pVal;
91677 && zPType!=0
91678 && p->eSubtype=='p'
91679 && strcmp(p->u.zPType, zPType)==0
#define MEM_Term
Definition sqlite3.c:23898
#define MEM_TypeMask
Definition sqlite3.c:23901
#define MEM_Subtype
Definition sqlite3.c:23900
u8 eSubtype
Definition sqlite3.c:23819
const char * zPType
Definition sqlite3.c:23812
#define sqlite3_value_pointer
Definition sqlite3ext.h:636

◆ sqlite3_value_subtype()

unsigned int sqlite3_value_subtype ( sqlite3_value * pVal)
91663 {
91664 return (int)sqlite3VdbeIntValue((Mem*)pVal);
91665}
static i64 sqlite3VdbeIntValue(const Mem *)
Definition sqlite3.c:84457

References sqlite3VdbeIntValue(), and SQLITE_API.

Here is the call graph for this function:

◆ sqlite3_value_text()

const unsigned char * sqlite3_value_text ( sqlite3_value * pVal)
91680 {
91681 return (void*)p->z;
91682 }else{

References sqlite3_value::z.

◆ sqlite3_value_text16()

const void * sqlite3_value_text16 ( sqlite3_value * pVal)
91686 {

◆ sqlite3_value_text16be()

const void * sqlite3_value_text16be ( sqlite3_value * pVal)

References SQLITE_UTF8.

◆ sqlite3_value_text16le()

const void * sqlite3_value_text16le ( sqlite3_value * pVal)
91690 {
91692}

References sqlite3ValueText(), SQLITE_API, and SQLITE_UTF16NATIVE.

Here is the call graph for this function:

◆ sqlite3_value_type()

int sqlite3_value_type ( sqlite3_value * pVal)
91704 {
91705 static const u8 aType[] = {
91706 SQLITE_BLOB, /* 0x00 (not possible) */
91707 SQLITE_NULL, /* 0x01 NULL */
91708 SQLITE_TEXT, /* 0x02 TEXT */
91709 SQLITE_NULL, /* 0x03 (not possible) */
91710 SQLITE_INTEGER, /* 0x04 INTEGER */
91711 SQLITE_NULL, /* 0x05 (not possible) */
91712 SQLITE_INTEGER, /* 0x06 INTEGER + TEXT */
91713 SQLITE_NULL, /* 0x07 (not possible) */
91714 SQLITE_FLOAT, /* 0x08 FLOAT */
91715 SQLITE_NULL, /* 0x09 (not possible) */
91716 SQLITE_FLOAT, /* 0x0a FLOAT + TEXT */
91717 SQLITE_NULL, /* 0x0b (not possible) */
91718 SQLITE_INTEGER, /* 0x0c (not possible) */
91719 SQLITE_NULL, /* 0x0d (not possible) */
91720 SQLITE_INTEGER, /* 0x0e (not possible) */
91721 SQLITE_NULL, /* 0x0f (not possible) */
91722 SQLITE_BLOB, /* 0x10 BLOB */
91723 SQLITE_NULL, /* 0x11 (not possible) */
91724 SQLITE_TEXT, /* 0x12 (not possible) */
91725 SQLITE_NULL, /* 0x13 (not possible) */
91726 SQLITE_INTEGER, /* 0x14 INTEGER + BLOB */
91727 SQLITE_NULL, /* 0x15 (not possible) */
91728 SQLITE_INTEGER, /* 0x16 (not possible) */
91729 SQLITE_NULL, /* 0x17 (not possible) */
91730 SQLITE_FLOAT, /* 0x18 FLOAT + BLOB */
91731 SQLITE_NULL, /* 0x19 (not possible) */
91732 SQLITE_FLOAT, /* 0x1a (not possible) */
91733 SQLITE_NULL, /* 0x1b (not possible) */
91734 SQLITE_INTEGER, /* 0x1c (not possible) */
91735 SQLITE_NULL, /* 0x1d (not possible) */
91736 SQLITE_INTEGER, /* 0x1e (not possible) */
91737 SQLITE_NULL, /* 0x1f (not possible) */
91738 SQLITE_FLOAT, /* 0x20 INTREAL */
91739 SQLITE_NULL, /* 0x21 (not possible) */
91740 SQLITE_FLOAT, /* 0x22 INTREAL + TEXT */
91741 SQLITE_NULL, /* 0x23 (not possible) */
91742 SQLITE_FLOAT, /* 0x24 (not possible) */
91743 SQLITE_NULL, /* 0x25 (not possible) */
91744 SQLITE_FLOAT, /* 0x26 (not possible) */
91745 SQLITE_NULL, /* 0x27 (not possible) */
91746 SQLITE_FLOAT, /* 0x28 (not possible) */
91747 SQLITE_NULL, /* 0x29 (not possible) */
91748 SQLITE_FLOAT, /* 0x2a (not possible) */
91749 SQLITE_NULL, /* 0x2b (not possible) */
91750 SQLITE_FLOAT, /* 0x2c (not possible) */
91751 SQLITE_NULL, /* 0x2d (not possible) */
91752 SQLITE_FLOAT, /* 0x2e (not possible) */
91753 SQLITE_NULL, /* 0x2f (not possible) */
91754 SQLITE_BLOB, /* 0x30 (not possible) */
91755 SQLITE_NULL, /* 0x31 (not possible) */
91756 SQLITE_TEXT, /* 0x32 (not possible) */
91757 SQLITE_NULL, /* 0x33 (not possible) */
91758 SQLITE_FLOAT, /* 0x34 (not possible) */
91759 SQLITE_NULL, /* 0x35 (not possible) */
91760 SQLITE_FLOAT, /* 0x36 (not possible) */
91761 SQLITE_NULL, /* 0x37 (not possible) */
91762 SQLITE_FLOAT, /* 0x38 (not possible) */
91763 SQLITE_NULL, /* 0x39 (not possible) */
91764 SQLITE_FLOAT, /* 0x3a (not possible) */
91765 SQLITE_NULL, /* 0x3b (not possible) */
91766 SQLITE_FLOAT, /* 0x3c (not possible) */
91767 SQLITE_NULL, /* 0x3d (not possible) */
91768 SQLITE_FLOAT, /* 0x3e (not possible) */
91769 SQLITE_NULL, /* 0x3f (not possible) */
91770 };
91771#ifdef SQLITE_DEBUG
91772 {
91773 int eType = SQLITE_BLOB;
91774 if( pVal->flags & MEM_Null ){
91775 eType = SQLITE_NULL;
91776 }else if( pVal->flags & (MEM_Real|MEM_IntReal) ){
91777 eType = SQLITE_FLOAT;
91778 }else if( pVal->flags & MEM_Int ){
91779 eType = SQLITE_INTEGER;
91780 }else if( pVal->flags & MEM_Str ){
91781 eType = SQLITE_TEXT;
#define MEM_Int
Definition sqlite3.c:23887

◆ sqlite3_vfs_find()

sqlite3_vfs * sqlite3_vfs_find ( const char * zVfsName)
26897 {
26898 sqlite3_vfs *pVfs = 0;
26899#if SQLITE_THREADSAFE
26900 sqlite3_mutex *mutex;
26901#endif
26902#ifndef SQLITE_OMIT_AUTOINIT
26903 int rc = sqlite3_initialize();
26904 if( rc ) return 0;
26905#endif
26906#if SQLITE_THREADSAFE
26908#endif
26909 sqlite3_mutex_enter(mutex);
26910 for(pVfs = vfsList; pVfs; pVfs=pVfs->pNext){
26911 if( zVfs==0 ) break;
#define vfsList
Definition sqlite3.c:26886
sqlite3_vfs * pNext
Definition sqlite3.c:1812

References sqlite3_vfs::pNext, sqlite3_initialize(), sqlite3_mutex_enter, sqlite3_mutex_leave, sqlite3MutexAlloc(), SQLITE_API, SQLITE_MUTEX_STATIC_MAIN, vfsList, and sqlite3_vfs::zName.

Here is the call graph for this function:

◆ sqlite3_vfs_register()

int sqlite3_vfs_register ( sqlite3_vfs * pVfs,
int makeDflt )
26943 {
26944 MUTEX_LOGIC(sqlite3_mutex *mutex;)
26945#ifndef SQLITE_OMIT_AUTOINIT
26946 int rc = sqlite3_initialize();
26947 if( rc ) return rc;
26948#endif
26949#ifdef SQLITE_ENABLE_API_ARMOR
26950 if( pVfs==0 ) return SQLITE_MISUSE_BKPT;
26951#endif
26952
26954 sqlite3_mutex_enter(mutex);
26955 vfsUnlink(pVfs);
26956 if( makeDflt || vfsList==0 ){
26957 pVfs->pNext = vfsList;
26958 vfsList = pVfs;
26959 }else{
26960 pVfs->pNext = vfsList->pNext;
26961 vfsList->pNext = pVfs;
static void vfsUnlink(sqlite3_vfs *pVfs)
Definition sqlite3.c:26916

References MUTEX_LOGIC, sqlite3_vfs::pNext, sqlite3_initialize(), sqlite3_mutex_enter, sqlite3_mutex_leave, sqlite3MutexAlloc(), SQLITE_API, SQLITE_MISUSE_BKPT, SQLITE_MUTEX_STATIC_MAIN, SQLITE_OK, vfsList, and vfsUnlink().

Here is the call graph for this function:

◆ sqlite3_vfs_unregister()

int sqlite3_vfs_unregister ( sqlite3_vfs * pVfs)
26971 {
26972 MUTEX_LOGIC(sqlite3_mutex *mutex;)
26973#ifndef SQLITE_OMIT_AUTOINIT
26974 int rc = sqlite3_initialize();
26975 if( rc ) return rc;
26976#endif

◆ sqlite3_vmprintf()

char * sqlite3_vmprintf ( const char * zFormat,
va_list ap )
32915 {
32916 char *z;
32917 char zBase[SQLITE_PRINT_BUF_SIZE];
32918 StrAccum acc;
32919
32920#ifdef SQLITE_ENABLE_API_ARMOR
32921 if( zFormat==0 ){
32922 (void)SQLITE_MISUSE_BKPT;
32923 return 0;
32924 }
32925#endif
32926#ifndef SQLITE_OMIT_AUTOINIT
32927 if( sqlite3_initialize() ) return 0;
#define SQLITE_PRINT_BUF_SIZE
Definition sqlite3.c:31807

◆ sqlite3_vsnprintf()

char * sqlite3_vsnprintf ( int n,
char * zBuf,
const char * zFormat,
va_list ap )
32964 {
32965 StrAccum acc;
32966 if( n<=0 ) return zBuf;
32967#ifdef SQLITE_ENABLE_API_ARMOR
32968 if( zBuf==0 || zFormat==0 ) {
32969 (void)SQLITE_MISUSE_BKPT;
32970 if( zBuf ) zBuf[0] = 0;
32971 return zBuf;
32972 }

References SQLITE_API, and SQLITE_MISUSE_BKPT.

◆ sqlite3_vtab_collation()

const char * sqlite3_vtab_collation ( sqlite3_index_info * pIdxInfo,
int iCons )
168877 {
168878 HiddenIndexInfo *pHidden = (HiddenIndexInfo*)&pIdxInfo[1];
168879 const char *zRet = 0;
168880 if( iCons>=0 && iCons<pIdxInfo->nConstraint ){
168881 CollSeq *pC = 0;
168882 int iTerm = pIdxInfo->aConstraint[iCons].iTermOffset;
168883 Expr *pX = termFromWhereClause(pHidden->pWC, iTerm)->pExpr;
static WhereTerm * termFromWhereClause(WhereClause *pWC, int iTerm)
Definition sqlite3.c:165836
WhereClause * pWC
Definition sqlite3.c:164475
Expr * pExpr
Definition sqlite3.c:159197
Definition sqlite3.c:18669
Definition sqlite3.c:164474
int iTermOffset
Definition sqlite3.c:7992
struct sqlite3_index_info::sqlite3_index_constraint * aConstraint

References sqlite3_index_info::aConstraint, sqlite3_index_info::sqlite3_index_constraint::iTermOffset, WhereTerm::pExpr, Expr::pLeft, HiddenIndexInfo::pParse, HiddenIndexInfo::pWC, sqlite3ExprCompareCollSeq(), sqlite3StrBINARY, SQLITE_API, termFromWhereClause(), and CollSeq::zName.

Here is the call graph for this function:

◆ sqlite3_vtab_config()

int sqlite3_vtab_config ( sqlite3 * db,
int op,
... )
158859 {
158860 va_list ap;
158861 int rc = SQLITE_OK;
158862 VtabCtx *p;
158863
158864#ifdef SQLITE_ENABLE_API_ARMOR
158865 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
158866#endif
158868 p = db->pVtabCtx;
158869 if( !p ){
158870 rc = SQLITE_MISUSE_BKPT;
158871 }else{
158872 assert( p->pTab==0 || IsVirtual(p->pTab) );
158873 va_start(ap, op);
158874 switch( op ){
158876 p->pVTable->bConstraint = (u8)va_arg(ap, int);
158877 break;
158878 }
158879 case SQLITE_VTAB_INNOCUOUS: {
158881 break;
158882 }
158883 case SQLITE_VTAB_DIRECTONLY: {
158885 break;
158886 }
158888 p->pVTable->bAllSchemas = 1;
158889 break;
158890 }
158891 default: {
158892 rc = SQLITE_MISUSE_BKPT;
158893 break;
158894 }
158895 }
158896 va_end(ap);
#define SQLITE_VTABRISK_Low
Definition sqlite3.c:18784
#define SQLITE_VTAB_INNOCUOUS
Definition sqlite3.c:10379
u8 bConstraint
Definition sqlite3.c:18775
#define SQLITE_VTAB_DIRECTONLY
Definition sqlite3.c:10380
#define SQLITE_VTAB_CONSTRAINT_SUPPORT
Definition sqlite3.c:10378
#define SQLITE_VTAB_USES_ALL_SCHEMAS
Definition sqlite3.c:10381
#define SQLITE_VTABRISK_High
Definition sqlite3.c:18786
u8 eVtabRisk
Definition sqlite3.c:18777
u8 bAllSchemas
Definition sqlite3.c:18776

References VTable::bAllSchemas, VTable::bConstraint, VTable::eVtabRisk, IsVirtual, sqlite3::mutex, VtabCtx::pTab, sqlite3::pVtabCtx, VtabCtx::pVTable, sqlite3_mutex_enter, sqlite3_mutex_leave, sqlite3Error(), sqlite3SafetyCheckOk(), SQLITE_API, SQLITE_MISUSE_BKPT, SQLITE_OK, SQLITE_VTAB_CONSTRAINT_SUPPORT, SQLITE_VTAB_DIRECTONLY, SQLITE_VTAB_INNOCUOUS, SQLITE_VTAB_USES_ALL_SCHEMAS, SQLITE_VTABRISK_High, and SQLITE_VTABRISK_Low.

Here is the call graph for this function:

◆ sqlite3_vtab_distinct()

int sqlite3_vtab_distinct ( sqlite3_index_info * pIdxInfo)

◆ sqlite3_vtab_in()

int sqlite3_vtab_in ( sqlite3_index_info * pIdxInfo,
int iCons,
int bHandle )
168897 {
168898 HiddenIndexInfo *pHidden = (HiddenIndexInfo*)&pIdxInfo[1];
168899 u32 m = SMASKBIT32(iCons);
168900 if( m & pHidden->mIn ){
168901 if( bHandle==0 ){
168902 pHidden->mHandleIn &= ~m;
#define SMASKBIT32(n)
Definition sqlite3.c:15822
u32 mHandleIn
Definition sqlite3.c:164479
u32 mIn
Definition sqlite3.c:164478

◆ sqlite3_vtab_in_first()

int sqlite3_vtab_in_first ( sqlite3_value * pVal,
sqlite3_value ** ppOut )

◆ sqlite3_vtab_in_next()

int sqlite3_vtab_in_next ( sqlite3_value * pVal,
sqlite3_value ** ppOut )

◆ sqlite3_vtab_nochange()

int sqlite3_vtab_nochange ( sqlite3_context * p)
92449 {
92450#ifdef SQLITE_ENABLE_API_ARMOR

References sqlite3_context::pOut, sqlite3_value_nochange, and SQLITE_API.

◆ sqlite3_vtab_on_conflict()

int sqlite3_vtab_on_conflict ( sqlite3 * db)
158841 {
158842 static const unsigned char aMap[] = {
158844 };
158845#ifdef SQLITE_ENABLE_API_ARMOR
158846 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
#define SQLITE_IGNORE
Definition sqlite3.c:3749
#define SQLITE_FAIL
Definition sqlite3.c:10727
#define SQLITE_ROLLBACK
Definition sqlite3.c:10725
#define SQLITE_REPLACE
Definition sqlite3.c:10729

References OE_Abort, OE_Fail, OE_Ignore, OE_Replace, OE_Rollback, sqlite3SafetyCheckOk(), SQLITE_ABORT, SQLITE_API, SQLITE_FAIL, SQLITE_IGNORE, SQLITE_MISUSE_BKPT, SQLITE_REPLACE, SQLITE_ROLLBACK, and sqlite3::vtabOnConflict.

Here is the call graph for this function:

◆ sqlite3_vtab_rhs_value()

int sqlite3_vtab_rhs_value ( sqlite3_index_info * pIdxInfo,
int iCons,
sqlite3_value ** ppVal )
168921 {
168922 HiddenIndexInfo *pH = (HiddenIndexInfo*)&pIdxInfo[1];
168923 sqlite3_value *pVal = 0;
168924 int rc = SQLITE_OK;
168925 if( iCons<0 || iCons>=pIdxInfo->nConstraint ){
168926 rc = SQLITE_MISUSE_BKPT; /* EV: R-30545-25046 */
168927 }else{
168928 if( pH->aRhs[iCons]==0 ){
168930 pH->pWC, pIdxInfo->aConstraint[iCons].iTermOffset
168931 );
168933 pH->pParse->db, pTerm->pExpr->pRight, ENC(pH->pParse->db),
168934 SQLITE_AFF_BLOB, &pH->aRhs[iCons]
168935 );
168936 testcase( rc!=SQLITE_OK );
168937 }
168938 pVal = pH->aRhs[iCons];
168939 }
168940 *ppVal = pVal;
#define SQLITE_AFF_BLOB
Definition sqlite3.c:18699
Parse * pParse
Definition sqlite3.c:164476
sqlite3 * db
Definition sqlite3.c:20245
static int sqlite3ValueFromExpr(sqlite3 *, const Expr *, u8, u8, sqlite3_value **)
Definition sqlite3.c:85611
Expr * pRight
Definition sqlite3.c:19407
sqlite3_value * aRhs[1]
Definition sqlite3.c:164480
Definition sqlite3.c:159196
int nConstraint
Definition sqlite3.c:7987

References sqlite3_index_info::aConstraint, HiddenIndexInfo::aRhs, Parse::db, ENC, sqlite3_index_info::sqlite3_index_constraint::iTermOffset, sqlite3_index_info::nConstraint, WhereTerm::pExpr, HiddenIndexInfo::pParse, Expr::pRight, HiddenIndexInfo::pWC, sqlite3ValueFromExpr(), SQLITE_AFF_BLOB, SQLITE_API, SQLITE_MISUSE_BKPT, SQLITE_NOTFOUND, SQLITE_OK, termFromWhereClause(), and testcase.

Here is the call graph for this function:

◆ sqlite3_wal_autocheckpoint()

int sqlite3_wal_autocheckpoint ( sqlite3 * db,
int N )
185084 {
185085#ifdef SQLITE_OMIT_WAL
185086 UNUSED_PARAMETER(db);
185087 UNUSED_PARAMETER(nFrame);
185088#else
185089#ifdef SQLITE_ENABLE_API_ARMOR
185090 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
185091#endif
185092 if( nFrame>0 ){

References sqlite3_wal_hook, sqlite3SafetyCheckOk(), sqlite3WalDefaultHook(), SQLITE_API, SQLITE_INT_TO_PTR, SQLITE_MISUSE_BKPT, and UNUSED_PARAMETER.

Here is the call graph for this function:

◆ sqlite3_wal_checkpoint()

int sqlite3_wal_checkpoint ( sqlite3 * db,
const char * zDb )

◆ sqlite3_wal_checkpoint_v2()

int sqlite3_wal_checkpoint_v2 ( sqlite3 * db,
const char * zDb,
int eMode,
int * pnLog,
int * pnCkpt )
185138 {
185139#ifdef SQLITE_OMIT_WAL
185140 return SQLITE_OK;
185141#else
185142 int rc; /* Return code */
185143 int iDb; /* Schema to checkpoint */
185144
185145#ifdef SQLITE_ENABLE_API_ARMOR
185146 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
185147#endif
185148
185149 /* Initialize the output variables to -1 in case an error occurs. */
185150 if( pnLog ) *pnLog = -1;
185151 if( pnCkpt ) *pnCkpt = -1;
185152
185153 assert( SQLITE_CHECKPOINT_PASSIVE==0 );
185154 assert( SQLITE_CHECKPOINT_FULL==1 );
185155 assert( SQLITE_CHECKPOINT_RESTART==2 );
185156 assert( SQLITE_CHECKPOINT_TRUNCATE==3 );
185157 if( eMode<SQLITE_CHECKPOINT_PASSIVE || eMode>SQLITE_CHECKPOINT_TRUNCATE ){
185158 /* EVIDENCE-OF: R-03996-12088 The M parameter must be a valid checkpoint
185159 ** mode: */
185160 return SQLITE_MISUSE_BKPT;
185161 }
185162
185164 if( zDb && zDb[0] ){
185165 iDb = sqlite3FindDbName(db, zDb);
185166 }else{
185167 iDb = SQLITE_MAX_DB; /* This means process all schemas */
185168 }
185169 if( iDb<0 ){
185170 rc = SQLITE_ERROR;
185171 sqlite3ErrorWithMsg(db, SQLITE_ERROR, "unknown database: %s", zDb);
185172 }else{
185173 db->busyHandler.nBusy = 0;
185174 rc = sqlite3Checkpoint(db, iDb, eMode, pnLog, pnCkpt);
185175 sqlite3Error(db, rc);
185176 }
185177 rc = sqlite3ApiExit(db, rc);
185178
185179 /* If there are no active statements, clear the interrupt flag at this
185180 ** point. */
185181 if( db->nVdbeActive==0 ){
static int sqlite3Checkpoint(sqlite3 *, int, int, int *, int *)
Definition sqlite3.c:185216
#define SQLITE_CHECKPOINT_TRUNCATE
Definition sqlite3.c:10285
#define SQLITE_CHECKPOINT_FULL
Definition sqlite3.c:10283
#define SQLITE_MAX_DB
Definition sqlite3.c:18029
int nVdbeActive
Definition sqlite3.c:18080
#define SQLITE_CHECKPOINT_RESTART
Definition sqlite3.c:10284
#define SQLITE_CHECKPOINT_PASSIVE
Definition sqlite3.c:10282

◆ sqlite3_wal_hook()

void * sqlite3_wal_hook ( sqlite3 * db,
int(* xCallback )(void *, sqlite3 *, const char *, int),
void * pArg )
185109 {
185110#ifndef SQLITE_OMIT_WAL
185111 void *pRet;
185112#ifdef SQLITE_ENABLE_API_ARMOR
185113 if( !sqlite3SafetyCheckOk(db) ){
185114 (void)SQLITE_MISUSE_BKPT;
185115 return 0;
185116 }
185117#endif
185119 pRet = db->pWalArg;
185120 db->xWalCallback = xCallback;
int(* xWalCallback)(void *, sqlite3 *, const char *, int)
Definition sqlite3.c:18114
void * pWalArg
Definition sqlite3.c:18115

References SQLITE_OK.

◆ sqlite3_win32_set_directory()

int sqlite3_win32_set_directory ( unsigned long type,
void * zValue )

References SQLITE_API.

◆ sqlite3_win32_set_directory16()

int sqlite3_win32_set_directory16 ( unsigned long type,
const void * zValue )

References SQLITE_API.

◆ sqlite3_win32_set_directory8()

int sqlite3_win32_set_directory8 ( unsigned long type,
const char * zValue )

References SQLITE_API.

Variable Documentation

◆ sqlite3_data_directory

char* sqlite3_data_directory
extern

Referenced by sqlite3_shutdown(), and sqlite3Pragma().

◆ sqlite3_temp_directory

char* sqlite3_temp_directory
extern

Referenced by sqlite3_shutdown(), and sqlite3Pragma().

◆ sqlite3_version

const char sqlite3_version[]
extern

Referenced by sqlite3_libversion().