📄 sqlite3.h
字号:
** must insure that no other SQLite interfaces are invoked by other** threads while sqlite3_config() is running. Furthermore, sqlite3_config()** may only be invoked prior to library initialization using** [sqlite3_initialize()] or after shutdown by [sqlite3_shutdown()].** Note, however, that sqlite3_config() can be called as part of the** implementation of an application-defined [sqlite3_os_init()].**** The first argument to sqlite3_config() is an integer** [SQLITE_CONFIG_SINGLETHREAD | configuration option] that determines** what property of SQLite is to be configured. Subsequent arguments** vary depending on the [SQLITE_CONFIG_SINGLETHREAD | configuration option]** in the first argument.**** When a configuration option is set, sqlite3_config() returns [SQLITE_OK].** If the option is unknown or SQLite is unable to set the option** then this routine returns a non-zero [error code].**** Requirements:** [H14103] [H14106] [H14120] [H14123] [H14126] [H14129] [H14132] [H14135]** [H14138] [H14141] [H14144] [H14147] [H14150] [H14153] [H14156] [H14159]** [H14162] [H14165] [H14168]*/SQLITE_EXPERIMENTAL int sqlite3_config(int, ...);/*** CAPI3REF: Configure database connections {H14200} <S20000>** EXPERIMENTAL**** The sqlite3_db_config() interface is used to make configuration** changes to a [database connection]. The interface is similar to** [sqlite3_config()] except that the changes apply to a single** [database connection] (specified in the first argument). The** sqlite3_db_config() interface can only be used immediately after** the database connection is created using [sqlite3_open()],** [sqlite3_open16()], or [sqlite3_open_v2()]. **** The second argument to sqlite3_db_config(D,V,...) is the** configuration verb - an integer code that indicates what** aspect of the [database connection] is being configured.** The only choice for this value is [SQLITE_DBCONFIG_LOOKASIDE].** New verbs are likely to be added in future releases of SQLite.** Additional arguments depend on the verb.**** Requirements:** [H14203] [H14206] [H14209] [H14212] [H14215]*/SQLITE_EXPERIMENTAL int sqlite3_db_config(sqlite3*, int op, ...);/*** CAPI3REF: Memory Allocation Routines {H10155} <S20120>** EXPERIMENTAL**** An instance of this object defines the interface between SQLite** and low-level memory allocation routines.**** This object is used in only one place in the SQLite interface.** A pointer to an instance of this object is the argument to** [sqlite3_config()] when the configuration option is** [SQLITE_CONFIG_MALLOC]. By creating an instance of this object** and passing it to [sqlite3_config()] during configuration, an** application can specify an alternative memory allocation subsystem** for SQLite to use for all of its dynamic memory needs.**** Note that SQLite comes with a built-in memory allocator that is** perfectly adequate for the overwhelming majority of applications** and that this object is only useful to a tiny minority of applications** with specialized memory allocation requirements. This object is** also used during testing of SQLite in order to specify an alternative** memory allocator that simulates memory out-of-memory conditions in** order to verify that SQLite recovers gracefully from such** conditions.**** The xMalloc, xFree, and xRealloc methods must work like the** malloc(), free(), and realloc() functions from the standard library.**** xSize should return the allocated size of a memory allocation** previously obtained from xMalloc or xRealloc. The allocated size** is always at least as big as the requested size but may be larger.**** The xRoundup method returns what would be the allocated size of** a memory allocation given a particular requested size. Most memory** allocators round up memory allocations at least to the next multiple** of 8. Some allocators round up to a larger multiple or to a power of 2.**** The xInit method initializes the memory allocator. (For example,** it might allocate any require mutexes or initialize internal data** structures. The xShutdown method is invoked (indirectly) by** [sqlite3_shutdown()] and should deallocate any resources acquired** by xInit. The pAppData pointer is used as the only parameter to** xInit and xShutdown.*/typedef struct sqlite3_mem_methods sqlite3_mem_methods;struct sqlite3_mem_methods { void *(*xMalloc)(int); /* Memory allocation function */ void (*xFree)(void*); /* Free a prior allocation */ void *(*xRealloc)(void*,int); /* Resize an allocation */ int (*xSize)(void*); /* Return the size of an allocation */ int (*xRoundup)(int); /* Round up request size to allocation size */ int (*xInit)(void*); /* Initialize the memory allocator */ void (*xShutdown)(void*); /* Deinitialize the memory allocator */ void *pAppData; /* Argument to xInit() and xShutdown() */};/*** CAPI3REF: Configuration Options {H10160} <S20000>** EXPERIMENTAL**** These constants are the available integer configuration options that** can be passed as the first argument to the [sqlite3_config()] interface.**** New configuration options may be added in future releases of SQLite.** Existing configuration options might be discontinued. Applications** should check the return code from [sqlite3_config()] to make sure that** the call worked. The [sqlite3_config()] interface will return a** non-zero [error code] if a discontinued or unsupported configuration option** is invoked.**** <dl>** <dt>SQLITE_CONFIG_SINGLETHREAD</dt>** <dd>There are no arguments to this option. This option disables** all mutexing and puts SQLite into a mode where it can only be used** by a single thread.</dd>**** <dt>SQLITE_CONFIG_MULTITHREAD</dt>** <dd>There are no arguments to this option. This option disables** mutexing on [database connection] and [prepared statement] objects.** The application is responsible for serializing access to** [database connections] and [prepared statements]. But other mutexes** are enabled so that SQLite will be safe to use in a multi-threaded** environment as long as no two threads attempt to use the same** [database connection] at the same time. See the [threading mode]** documentation for additional information.</dd>**** <dt>SQLITE_CONFIG_SERIALIZED</dt>** <dd>There are no arguments to this option. This option enables** all mutexes including the recursive** mutexes on [database connection] and [prepared statement] objects.** In this mode (which is the default when SQLite is compiled with** [SQLITE_THREADSAFE=1]) the SQLite library will itself serialize access** to [database connections] and [prepared statements] so that the** application is free to use the same [database connection] or the** same [prepared statement] in different threads at the same time.** See the [threading mode] documentation for additional information.</dd>**** <dt>SQLITE_CONFIG_MALLOC</dt>** <dd>This option takes a single argument which is a pointer to an** instance of the [sqlite3_mem_methods] structure. The argument specifies** alternative low-level memory allocation routines to be used in place of** the memory allocation routines built into SQLite.</dd>**** <dt>SQLITE_CONFIG_GETMALLOC</dt>** <dd>This option takes a single argument which is a pointer to an** instance of the [sqlite3_mem_methods] structure. The [sqlite3_mem_methods]** structure is filled with the currently defined memory allocation routines.** This option can be used to overload the default memory allocation** routines with a wrapper that simulations memory allocation failure or** tracks memory usage, for example.</dd>**** <dt>SQLITE_CONFIG_MEMSTATUS</dt>** <dd>This option takes single argument of type int, interpreted as a ** boolean, which enables or disables the collection of memory allocation ** statistics. When disabled, the following SQLite interfaces become ** non-operational:** <ul>** <li> [sqlite3_memory_used()]** <li> [sqlite3_memory_highwater()]** <li> [sqlite3_soft_heap_limit()]** <li> [sqlite3_status()]** </ul>** </dd>**** <dt>SQLITE_CONFIG_SCRATCH</dt>** <dd>This option specifies a static memory buffer that SQLite can use for** scratch memory. There are three arguments: A pointer to the memory, the** size of each scratch buffer (sz), and the number of buffers (N). The sz** argument must be a multiple of 16. The sz parameter should be a few bytes** larger than the actual scratch space required due internal overhead.** The first** argument should point to an allocation of at least sz*N bytes of memory.** SQLite will use no more than one scratch buffer at once per thread, so** N should be set to the expected maximum number of threads. The sz** parameter should be 6 times the size of the largest database page size.** Scratch buffers are used as part of the btree balance operation. If** The btree balancer needs additional memory beyond what is provided by** scratch buffers or if no scratch buffer space is specified, then SQLite** goes to [sqlite3_malloc()] to obtain the memory it needs.</dd>**** <dt>SQLITE_CONFIG_PAGECACHE</dt>** <dd>This option specifies a static memory buffer that SQLite can use for** the database page cache with the default page cache implemenation. ** This configuration should not be used if an application-define page** cache implementation is loaded using the SQLITE_CONFIG_PCACHE option.** There are three arguments to this option: A pointer to the** memory, the size of each page buffer (sz), and the number of pages (N).** The sz argument must be a power of two between 512 and 32768. The first** argument should point to an allocation of at least sz*N bytes of memory.** SQLite will use the memory provided by the first argument to satisfy its** memory needs for the first N pages that it adds to cache. If additional** page cache memory is needed beyond what is provided by this option, then** SQLite goes to [sqlite3_malloc()] for the additional storage space.** The implementation might use one or more of the N buffers to hold ** memory accounting information. </dd>**** <dt>SQLITE_CONFIG_HEAP</dt>** <dd>This option specifies a static memory buffer that SQLite will use** for all of its dynamic memory allocation needs beyond those provided** for by [SQLITE_CONFIG_SCRATCH] and [SQLITE_CONFIG_PAGECACHE].** There are three arguments: A pointer to the memory, the number of** bytes in the memory buffer, and the minimum allocation size. If** the first pointer (the memory pointer) is NULL, then SQLite reverts** to using its default memory allocator (the system malloc() implementation),** undoing any prior invocation of [SQLITE_CONFIG_MALLOC]. If the** memory pointer is not NULL and either [SQLITE_ENABLE_MEMSYS3] or** [SQLITE_ENABLE_MEMSYS5] are defined, then the alternative memory** allocator is engaged to handle all of SQLites memory allocation needs.</dd>**** <dt>SQLITE_CONFIG_MUTEX</dt>** <dd>This option takes a single argument which is a pointer to an** instance of the [sqlite3_mutex_methods] structure. The argument specifies** alternative low-level mutex routines to be used in place** the mutex routines built into SQLite.</dd>**** <dt>SQLITE_CONFIG_GETMUTEX</dt>** <dd>This option takes a single argument which is a pointer to an** instance of the [sqlite3_mutex_methods] structure. The** [sqlite3_mutex_methods]** structure is filled with the currently defined mutex routines.** This option can be used to overload the default mutex allocation** routines with a wrapper used to track mutex usage for performance** profiling or testing, for example.</dd>**** <dt>SQLITE_CONFIG_LOOKASIDE</dt>** <dd>This option takes two arguments that determine the default** memory allcation lookaside optimization. The first argument is the** size of each lookaside buffer slot and the second is the number of** slots allocated to each database connection.</dd>**** <dt>SQLITE_CONFIG_PCACHE</dt>** <dd>This option takes a single argument which is a pointer to** an [sqlite3_pcache_methods] object. This object specifies the interface** to a custom page cache implementation. SQLite makes a copy of the** object and uses it for page cache memory allocations.</dd>**** <dt>SQLITE_CONFIG_GETPCACHE</dt>** <dd>This option takes a single argument which is a pointer to an** [sqlite3_pcache_methods] object. SQLite copies of the current** page cache implementation into that object.</dd>**** </dl>*/#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 /* void*, int sz, int N */#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* *//* previously SQLITE_CONFIG_CHUNKALLOC 12 which is now unused. */ #define SQLITE_CONFIG_LOOKASIDE 13 /* int int */#define SQLITE_CONFIG_PCACHE 14 /* sqlite3_pcache_methods* */#define SQLITE_CONFIG_GETPCACHE 15 /* sqlite3_pcache_methods* *//*** CAPI3REF: Configuration Options {H10170} <S20000>** EXPERIMENTAL**** These constants are the available integer configuration options that** can be passed as the second argument to the [sqlite3_db_config()] interface.**** New configuration options may be added in future releases of SQLite.** Existing configuration options might be discontinued. Applications** should check the return code from [sqlite3_db_config()] to make sure that** the call worked. The [sqlite3_db_config()] interface will return a** non-zero [error code] if a discontinued or unsupported configuration option** is invoked.**** <dl>** <dt>SQLITE_DBCONFIG_LOOKASIDE</dt>** <dd>This option takes three additional arguments that determine the ** [lookaside memory allocator] configuration for the [database connection].** The first argument (the third parameter to [sqlite3_db_config()] is a
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -