⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sqlite3.h

📁 sqlite - amalgamation source
💻 H
📖 第 1 页 / 共 5 页
字号:
** 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 + -