Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
宁楠萍
rt-thread
提交
7d88b753
R
rt-thread
项目概览
宁楠萍
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
7d88b753
编写于
11月 17, 2013
作者:
xpxyr
提交者:
geniusgogo
11月 30, 2013
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
complete SQLite-3.8.1 porting, and auto generate porting code
上级
23151605
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
91 addition
and
86 deletion
+91
-86
components/external/SQLite-3.8.1/src/mem1.c
components/external/SQLite-3.8.1/src/mem1.c
+3
-2
components/external/SQLite-3.8.1/src/sqliteInt.h
components/external/SQLite-3.8.1/src/sqliteInt.h
+86
-84
components/external/SQLite-3.8.1/tool/mksqlite3c.tcl
components/external/SQLite-3.8.1/tool/mksqlite3c.tcl
+2
-0
未找到文件。
components/external/SQLite-3.8.1/src/mem1.c
浏览文件 @
7d88b753
...
@@ -76,13 +76,14 @@ static malloc_zone_t* _sqliteZone_;
...
@@ -76,13 +76,14 @@ static malloc_zone_t* _sqliteZone_;
(_sqliteZone_ ? _sqliteZone_->size(_sqliteZone_,x) : malloc_size(x))
(_sqliteZone_ ? _sqliteZone_->size(_sqliteZone_,x) : malloc_size(x))
#elif defined(SQLITE_OS_RTT)
#elif defined(SQLITE_OS_RTT)
#include <rtthread.h>
/*
/*
** Use standard C library malloc and free on non-Apple systems.
** Use standard C library malloc and free on non-Apple systems.
** Also used by rt-thread systems if SQLITE_WITHOUT_ZONEMALLOC is defined.
** Also used by rt-thread systems if SQLITE_WITHOUT_ZONEMALLOC is defined.
*/
*/
#define SQLITE_MALLOC(x) rt_malloc(x)
#define SQLITE_MALLOC(x) rt_malloc(
(rt_size_t)
x)
#define SQLITE_FREE(x) rt_free(x)
#define SQLITE_FREE(x) rt_free(x)
#define SQLITE_REALLOC(x,y) rt_realloc((x),(y))
#define SQLITE_REALLOC(x,y) rt_realloc((x),(
rt_size_t)(
y))
#if (!defined(SQLITE_WITHOUT_MSIZE)) \
#if (!defined(SQLITE_WITHOUT_MSIZE)) \
&& (defined(HAVE_MALLOC_H) && defined(HAVE_MALLOC_USABLE_SIZE))
&& (defined(HAVE_MALLOC_H) && defined(HAVE_MALLOC_USABLE_SIZE))
...
...
components/external/SQLite-3.8.1/src/sqliteInt.h
浏览文件 @
7d88b753
...
@@ -87,7 +87,7 @@
...
@@ -87,7 +87,7 @@
** to the next, so we have developed the following set of #if statements
** to the next, so we have developed the following set of #if statements
** to generate appropriate macros for a wide range of compilers.
** to generate appropriate macros for a wide range of compilers.
**
**
** The correct "ANSI" way to do this is to use the intptr_t type.
** The correct "ANSI" way to do this is to use the intptr_t type.
** Unfortunately, that typedef is not available on all compilers, or
** Unfortunately, that typedef is not available on all compilers, or
** if it is available, it requires an #include of specific headers
** if it is available, it requires an #include of specific headers
** that vary from one machine to the next.
** that vary from one machine to the next.
...
@@ -140,7 +140,7 @@
...
@@ -140,7 +140,7 @@
/*
/*
** The SQLITE_DEFAULT_MEMSTATUS macro must be defined as either 0 or 1.
** The SQLITE_DEFAULT_MEMSTATUS macro must be defined as either 0 or 1.
** It determines whether or not the features related to
** It determines whether or not the features related to
** SQLITE_CONFIG_MEMSTATUS are available by default or not. This value can
** SQLITE_CONFIG_MEMSTATUS are available by default or not. This value can
** be overridden at runtime using the sqlite3_config() API.
** be overridden at runtime using the sqlite3_config() API.
*/
*/
...
@@ -210,7 +210,7 @@
...
@@ -210,7 +210,7 @@
** is set. Thus NDEBUG becomes an opt-in rather than an opt-out
** is set. Thus NDEBUG becomes an opt-in rather than an opt-out
** feature.
** feature.
*/
*/
#if !defined(NDEBUG) && !defined(SQLITE_DEBUG)
#if !defined(NDEBUG) && !defined(SQLITE_DEBUG)
# define NDEBUG 1
# define NDEBUG 1
#endif
#endif
#if defined(NDEBUG) && defined(SQLITE_DEBUG)
#if defined(NDEBUG) && defined(SQLITE_DEBUG)
...
@@ -218,7 +218,7 @@
...
@@ -218,7 +218,7 @@
#endif
#endif
/*
/*
** The testcase() macro is used to aid in coverage testing. When
** The testcase() macro is used to aid in coverage testing. When
** doing coverage testing, the condition inside the argument to
** doing coverage testing, the condition inside the argument to
** testcase() must be evaluated both true and false in order to
** testcase() must be evaluated both true and false in order to
** get full branch coverage. The testcase() macro is inserted
** get full branch coverage. The testcase() macro is inserted
...
@@ -264,7 +264,7 @@
...
@@ -264,7 +264,7 @@
#endif
#endif
/*
/*
** The ALWAYS and NEVER macros surround boolean expressions which
** The ALWAYS and NEVER macros surround boolean expressions which
** are intended to always be true or false, respectively. Such
** are intended to always be true or false, respectively. Such
** expressions could be omitted from the code completely. But they
** expressions could be omitted from the code completely. But they
** are included in a few cases in order to enhance the resilience
** are included in a few cases in order to enhance the resilience
...
@@ -336,7 +336,7 @@
...
@@ -336,7 +336,7 @@
/*
/*
** OMIT_TEMPDB is set to 1 if SQLITE_OMIT_TEMPDB is defined, or 0
** OMIT_TEMPDB is set to 1 if SQLITE_OMIT_TEMPDB is defined, or 0
** afterward. Having this macro allows us to cause the C compiler
** afterward. Having this macro allows us to cause the C compiler
** to omit code used by TEMP tables without messy #ifndef statements.
** to omit code used by TEMP tables without messy #ifndef statements.
*/
*/
#ifdef SQLITE_OMIT_TEMPDB
#ifdef SQLITE_OMIT_TEMPDB
...
@@ -488,7 +488,7 @@ typedef INT8_TYPE i8; /* 1-byte signed integer */
...
@@ -488,7 +488,7 @@ typedef INT8_TYPE i8; /* 1-byte signed integer */
** 4 -> 20 1000 -> 99 1048576 -> 200
** 4 -> 20 1000 -> 99 1048576 -> 200
** 10 -> 33 1024 -> 100 4294967296 -> 320
** 10 -> 33 1024 -> 100 4294967296 -> 320
**
**
** The LogEst can be negative to indicate fractional values.
** The LogEst can be negative to indicate fractional values.
** Examples:
** Examples:
**
**
** 0.5 -> -10 0.1 -> -33 0.0625 -> -40
** 0.5 -> -10 0.1 -> -33 0.0625 -> -40
...
@@ -523,7 +523,7 @@ extern const int sqlite3one;
...
@@ -523,7 +523,7 @@ extern const int sqlite3one;
#define LARGEST_INT64 (0xffffffff|(((i64)0x7fffffff)<<32))
#define LARGEST_INT64 (0xffffffff|(((i64)0x7fffffff)<<32))
#define SMALLEST_INT64 (((i64)-1) - LARGEST_INT64)
#define SMALLEST_INT64 (((i64)-1) - LARGEST_INT64)
/*
/*
** Round up a number to the next larger multiple of 8. This is used
** Round up a number to the next larger multiple of 8. This is used
** to force 8-byte alignment on 64-bit architectures.
** to force 8-byte alignment on 64-bit architectures.
*/
*/
...
@@ -568,7 +568,9 @@ extern const int sqlite3one;
...
@@ -568,7 +568,9 @@ extern const int sqlite3one;
# endif
# endif
#endif
#endif
#ifndef SQLITE_MAX_MMAP_SIZE
#ifndef SQLITE_MAX_MMAP_SIZE
# if defined(__linux__) \
# if defined(SQLITE_OS_RTT)
# define SQLITE_MAX_MMAP_SIZE 0
# elif defined(__linux__) \
|| defined(_WIN32) \
|| defined(_WIN32) \
|| (defined(__APPLE__) && defined(__MACH__)) \
|| (defined(__APPLE__) && defined(__MACH__)) \
|| defined(__sun)
|| defined(__sun)
...
@@ -609,7 +611,7 @@ extern const int sqlite3one;
...
@@ -609,7 +611,7 @@ extern const int sqlite3one;
/*
/*
** An instance of the following structure is used to store the busy-handler
** An instance of the following structure is used to store the busy-handler
** callback for a given sqlite handle.
** callback for a given sqlite handle.
**
**
** The sqlite.busyHandler member of the sqlite struct contains the busy
** The sqlite.busyHandler member of the sqlite struct contains the busy
** callback for the database handle. Each pager opened via the sqlite
** callback for the database handle. Each pager opened via the sqlite
...
@@ -654,9 +656,9 @@ struct BusyHandler {
...
@@ -654,9 +656,9 @@ struct BusyHandler {
/*
/*
** The following value as a destructor means to use sqlite3DbFree().
** The following value as a destructor means to use sqlite3DbFree().
** The sqlite3DbFree() routine requires two parameters instead of the
** The sqlite3DbFree() routine requires two parameters instead of the
** one parameter that destructors normally want. So we have to introduce
** one parameter that destructors normally want. So we have to introduce
** this magic value that the code knows to handle differently. Any
** this magic value that the code knows to handle differently. Any
** pointer will work here as long as it is distinct from SQLITE_STATIC
** pointer will work here as long as it is distinct from SQLITE_STATIC
** and SQLITE_TRANSIENT.
** and SQLITE_TRANSIENT.
*/
*/
...
@@ -683,16 +685,16 @@ struct BusyHandler {
...
@@ -683,16 +685,16 @@ struct BusyHandler {
int
sqlite3_wsd_init
(
int
N
,
int
J
);
int
sqlite3_wsd_init
(
int
N
,
int
J
);
void
*
sqlite3_wsd_find
(
void
*
K
,
int
L
);
void
*
sqlite3_wsd_find
(
void
*
K
,
int
L
);
#else
#else
#define SQLITE_WSD
#define SQLITE_WSD
#define GLOBAL(t,v) v
#define GLOBAL(t,v) v
#define sqlite3GlobalConfig sqlite3Config
#define sqlite3GlobalConfig sqlite3Config
#endif
#endif
/*
/*
** The following macros are used to suppress compiler warnings and to
** The following macros are used to suppress compiler warnings and to
** make it clear to human readers when a function parameter is deliberately
** make it clear to human readers when a function parameter is deliberately
** left unused within the body of a function. This usually happens when
** left unused within the body of a function. This usually happens when
** a function is called via a function pointer. For example the
** a function is called via a function pointer. For example the
** implementation of an SQL aggregate step callback may not use the
** implementation of an SQL aggregate step callback may not use the
** parameter indicating the number of arguments passed to the aggregate,
** parameter indicating the number of arguments passed to the aggregate,
** if it knows that this is enforced elsewhere.
** if it knows that this is enforced elsewhere.
...
@@ -754,7 +756,7 @@ typedef struct Walker Walker;
...
@@ -754,7 +756,7 @@ typedef struct Walker Walker;
typedef
struct
WhereInfo
WhereInfo
;
typedef
struct
WhereInfo
WhereInfo
;
/*
/*
** Defer sourcing vdbe.h and btree.h until after the "u8" and
** Defer sourcing vdbe.h and btree.h until after the "u8" and
** "BusyHandler" typedefs. vdbe.h also requires a few of the opaque
** "BusyHandler" typedefs. vdbe.h also requires a few of the opaque
** pointer types (i.e. FuncDef) defined above.
** pointer types (i.e. FuncDef) defined above.
*/
*/
...
@@ -788,7 +790,7 @@ struct Db {
...
@@ -788,7 +790,7 @@ struct Db {
** the Schema for the TEMP databaes (sqlite3.aDb[1]) which is free-standing.
** the Schema for the TEMP databaes (sqlite3.aDb[1]) which is free-standing.
** In shared cache mode, a single Schema object can be shared by multiple
** In shared cache mode, a single Schema object can be shared by multiple
** Btrees that refer to the same underlying BtShared object.
** Btrees that refer to the same underlying BtShared object.
**
**
** Schema objects are automatically deallocated when the last Btree that
** Schema objects are automatically deallocated when the last Btree that
** references them is destroyed. The TEMP Schema is manually freed by
** references them is destroyed. The TEMP Schema is manually freed by
** sqlite3_close().
** sqlite3_close().
...
@@ -813,7 +815,7 @@ struct Schema {
...
@@ -813,7 +815,7 @@ struct Schema {
};
};
/*
/*
** These macros can be used to test, set, or clear bits in the
** These macros can be used to test, set, or clear bits in the
** Db.pSchema->flags field.
** Db.pSchema->flags field.
*/
*/
#define DbHasProperty(D,I,P) (((D)->aDb[I].pSchema->flags&(P))==(P))
#define DbHasProperty(D,I,P) (((D)->aDb[I].pSchema->flags&(P))==(P))
...
@@ -932,9 +934,9 @@ struct sqlite3 {
...
@@ -932,9 +934,9 @@ struct sqlite3 {
void
*
pTraceArg
;
/* Argument to the trace function */
void
*
pTraceArg
;
/* Argument to the trace function */
void
(
*
xProfile
)(
void
*
,
const
char
*
,
u64
);
/* Profiling function */
void
(
*
xProfile
)(
void
*
,
const
char
*
,
u64
);
/* Profiling function */
void
*
pProfileArg
;
/* Argument to profile function */
void
*
pProfileArg
;
/* Argument to profile function */
void
*
pCommitArg
;
/* Argument to xCommitCallback() */
void
*
pCommitArg
;
/* Argument to xCommitCallback() */
int
(
*
xCommitCallback
)(
void
*
);
/* Invoked at every commit. */
int
(
*
xCommitCallback
)(
void
*
);
/* Invoked at every commit. */
void
*
pRollbackArg
;
/* Argument to xRollbackCallback() */
void
*
pRollbackArg
;
/* Argument to xRollbackCallback() */
void
(
*
xRollbackCallback
)(
void
*
);
/* Invoked at every commit. */
void
(
*
xRollbackCallback
)(
void
*
);
/* Invoked at every commit. */
void
*
pUpdateArg
;
void
*
pUpdateArg
;
void
(
*
xUpdateCallback
)(
void
*
,
int
,
const
char
*
,
const
char
*
,
sqlite_int64
);
void
(
*
xUpdateCallback
)(
void
*
,
int
,
const
char
*
,
const
char
*
,
sqlite_int64
);
...
@@ -981,8 +983,8 @@ struct sqlite3 {
...
@@ -981,8 +983,8 @@ struct sqlite3 {
int
*
pnBytesFreed
;
/* If not NULL, increment this in DbFree() */
int
*
pnBytesFreed
;
/* If not NULL, increment this in DbFree() */
#ifdef SQLITE_ENABLE_UNLOCK_NOTIFY
#ifdef SQLITE_ENABLE_UNLOCK_NOTIFY
/* The following variables are all protected by the STATIC_MASTER
/* The following variables are all protected by the STATIC_MASTER
** mutex, not by sqlite3.mutex. They are used by code in notify.c.
** mutex, not by sqlite3.mutex. They are used by code in notify.c.
**
**
** When X.pUnlockConnection==Y, that means that X is waiting for Y to
** When X.pUnlockConnection==Y, that means that X is waiting for Y to
** unlock so that it can proceed.
** unlock so that it can proceed.
...
@@ -1104,7 +1106,7 @@ struct FuncDef {
...
@@ -1104,7 +1106,7 @@ struct FuncDef {
** This structure encapsulates a user-function destructor callback (as
** This structure encapsulates a user-function destructor callback (as
** configured using create_function_v2()) and a reference counter. When
** configured using create_function_v2()) and a reference counter. When
** create_function_v2() is called to create a function with a destructor,
** create_function_v2() is called to create a function with a destructor,
** a single object of this type is allocated. FuncDestructor.nRef is set to
** a single object of this type is allocated. FuncDestructor.nRef is set to
** the number of FuncDef objects created (either 1 or 3, depending on whether
** the number of FuncDef objects created (either 1 or 3, depending on whether
** or not the specified encoding is SQLITE_ANY). The FuncDef.pDestructor
** or not the specified encoding is SQLITE_ANY). The FuncDef.pDestructor
** member of each of the new FuncDef objects is set to point to the allocated
** member of each of the new FuncDef objects is set to point to the allocated
...
@@ -1141,10 +1143,10 @@ struct FuncDestructor {
...
@@ -1141,10 +1143,10 @@ struct FuncDestructor {
** used to create the initializers for the FuncDef structures.
** used to create the initializers for the FuncDef structures.
**
**
** FUNCTION(zName, nArg, iArg, bNC, xFunc)
** FUNCTION(zName, nArg, iArg, bNC, xFunc)
** Used to create a scalar function definition of a function zName
** Used to create a scalar function definition of a function zName
** implemented by C function xFunc that accepts nArg arguments. The
** implemented by C function xFunc that accepts nArg arguments. The
** value passed as iArg is cast to a (void*) and made available
** value passed as iArg is cast to a (void*) and made available
** as the user-data (sqlite3_user_data()) for the function. If
** as the user-data (sqlite3_user_data()) for the function. If
** argument bNC is true, then the SQLITE_FUNC_NEEDCOLL flag is set.
** argument bNC is true, then the SQLITE_FUNC_NEEDCOLL flag is set.
**
**
** AGGREGATE(zName, nArg, iArg, bNC, xStep, xFinal)
** AGGREGATE(zName, nArg, iArg, bNC, xStep, xFinal)
...
@@ -1154,8 +1156,8 @@ struct FuncDestructor {
...
@@ -1154,8 +1156,8 @@ struct FuncDestructor {
** FUNCTION().
** FUNCTION().
**
**
** LIKEFUNC(zName, nArg, pArg, flags)
** LIKEFUNC(zName, nArg, pArg, flags)
** Used to create a scalar function definition of a function zName
** Used to create a scalar function definition of a function zName
** that accepts nArg arguments and is implemented by a call to C
** that accepts nArg arguments and is implemented by a call to C
** function likeFunc. Argument pArg is cast to a (void *) and made
** function likeFunc. Argument pArg is cast to a (void *) and made
** available as the function user-data (sqlite3_user_data()). The
** available as the function user-data (sqlite3_user_data()). The
** FuncDef.flags variable is set to the value passed as the flags
** FuncDef.flags variable is set to the value passed as the flags
...
@@ -1259,7 +1261,7 @@ struct CollSeq {
...
@@ -1259,7 +1261,7 @@ struct CollSeq {
**
**
** These used to have mnemonic name like 'i' for SQLITE_AFF_INTEGER and
** These used to have mnemonic name like 'i' for SQLITE_AFF_INTEGER and
** 't' for SQLITE_AFF_TEXT. But we can save a little space and improve
** 't' for SQLITE_AFF_TEXT. But we can save a little space and improve
** the speed a little by numbering the values consecutively.
** the speed a little by numbering the values consecutively.
**
**
** But rather than start with 0 or 1, we begin with 'a'. That way,
** But rather than start with 0 or 1, we begin with 'a'. That way,
** when multiple affinity types are concatenated into a string and
** when multiple affinity types are concatenated into a string and
...
@@ -1278,7 +1280,7 @@ struct CollSeq {
...
@@ -1278,7 +1280,7 @@ struct CollSeq {
/*
/*
** The SQLITE_AFF_MASK values masks off the significant bits of an
** The SQLITE_AFF_MASK values masks off the significant bits of an
** affinity value.
** affinity value.
*/
*/
#define SQLITE_AFF_MASK 0x67
#define SQLITE_AFF_MASK 0x67
...
@@ -1292,20 +1294,20 @@ struct CollSeq {
...
@@ -1292,20 +1294,20 @@ struct CollSeq {
/*
/*
** An object of this type is created for each virtual table present in
** An object of this type is created for each virtual table present in
** the database schema.
** the database schema.
**
**
** If the database schema is shared, then there is one instance of this
** If the database schema is shared, then there is one instance of this
** structure for each database connection (sqlite3*) that uses the shared
** structure for each database connection (sqlite3*) that uses the shared
** schema. This is because each database connection requires its own unique
** schema. This is because each database connection requires its own unique
** instance of the sqlite3_vtab* handle used to access the virtual table
** instance of the sqlite3_vtab* handle used to access the virtual table
** implementation. sqlite3_vtab* handles can not be shared between
** implementation. sqlite3_vtab* handles can not be shared between
** database connections, even when the rest of the in-memory database
** database connections, even when the rest of the in-memory database
** schema is shared, as the implementation often stores the database
** schema is shared, as the implementation often stores the database
** connection handle passed to it via the xConnect() or xCreate() method
** connection handle passed to it via the xConnect() or xCreate() method
** during initialization internally. This database connection handle may
** during initialization internally. This database connection handle may
** then be used by the virtual table implementation to access real tables
** then be used by the virtual table implementation to access real tables
** within the database. So that they appear as part of the callers
** within the database. So that they appear as part of the callers
** transaction, these accesses need to be made via the same database
** transaction, these accesses need to be made via the same database
** connection as that used to execute SQL operations on the virtual table.
** connection as that used to execute SQL operations on the virtual table.
**
**
** All VTable objects that correspond to a single table in a shared
** All VTable objects that correspond to a single table in a shared
...
@@ -1317,19 +1319,19 @@ struct CollSeq {
...
@@ -1317,19 +1319,19 @@ struct CollSeq {
** sqlite3_vtab* handle in the compiled query.
** sqlite3_vtab* handle in the compiled query.
**
**
** When an in-memory Table object is deleted (for example when the
** When an in-memory Table object is deleted (for example when the
** schema is being reloaded for some reason), the VTable objects are not
** schema is being reloaded for some reason), the VTable objects are not
** deleted and the sqlite3_vtab* handles are not xDisconnect()ed
** deleted and the sqlite3_vtab* handles are not xDisconnect()ed
** immediately. Instead, they are moved from the Table.pVTable list to
** immediately. Instead, they are moved from the Table.pVTable list to
** another linked list headed by the sqlite3.pDisconnect member of the
** another linked list headed by the sqlite3.pDisconnect member of the
** corresponding sqlite3 structure. They are then deleted/xDisconnected
** corresponding sqlite3 structure. They are then deleted/xDisconnected
** next time a statement is prepared using said sqlite3*. This is done
** next time a statement is prepared using said sqlite3*. This is done
** to avoid deadlock issues involving multiple sqlite3.mutex mutexes.
** to avoid deadlock issues involving multiple sqlite3.mutex mutexes.
** Refer to comments above function sqlite3VtabUnlockList() for an
** Refer to comments above function sqlite3VtabUnlockList() for an
** explanation as to why it is safe to add an entry to an sqlite3.pDisconnect
** explanation as to why it is safe to add an entry to an sqlite3.pDisconnect
** list without holding the corresponding sqlite3.mutex mutex.
** list without holding the corresponding sqlite3.mutex mutex.
**
**
** The memory for objects of this type is always allocated by
** The memory for objects of this type is always allocated by
** sqlite3DbMalloc(), using the connection handle stored in VTable.db as
** sqlite3DbMalloc(), using the connection handle stored in VTable.db as
** the first argument.
** the first argument.
*/
*/
struct
VTable
{
struct
VTable
{
...
@@ -1366,10 +1368,10 @@ struct VTable {
...
@@ -1366,10 +1368,10 @@ struct VTable {
** in sqlite.aDb[]. 0 is for the main database and 1 is for the file that
** in sqlite.aDb[]. 0 is for the main database and 1 is for the file that
** holds temporary tables and indices. If TF_Ephemeral is set
** holds temporary tables and indices. If TF_Ephemeral is set
** then the table is stored in a file that is automatically deleted
** then the table is stored in a file that is automatically deleted
** when the VDBE cursor to the table is closed. In this case Table.tnum
** when the VDBE cursor to the table is closed. In this case Table.tnum
** refers VDBE cursor number that holds the table open, not to the root
** refers VDBE cursor number that holds the table open, not to the root
** page number. Transient tables are used to hold the results of a
** page number. Transient tables are used to hold the results of a
** sub-query that appears instead of a real table name in the FROM clause
** sub-query that appears instead of a real table name in the FROM clause
** of a SELECT statement.
** of a SELECT statement.
*/
*/
struct
Table
{
struct
Table
{
...
@@ -1483,7 +1485,7 @@ struct FKey {
...
@@ -1483,7 +1485,7 @@ struct FKey {
** key is set to NULL. CASCADE means that a DELETE or UPDATE of the
** key is set to NULL. CASCADE means that a DELETE or UPDATE of the
** referenced table row is propagated into the row that holds the
** referenced table row is propagated into the row that holds the
** foreign key.
** foreign key.
**
**
** The following symbolic values are used to record which type
** The following symbolic values are used to record which type
** of action to take.
** of action to take.
*/
*/
...
@@ -1504,7 +1506,7 @@ struct FKey {
...
@@ -1504,7 +1506,7 @@ struct FKey {
/*
/*
** An instance of the following structure is passed as the first
** An instance of the following structure is passed as the first
** argument to sqlite3VdbeKeyCompare and is used to control the
** argument to sqlite3VdbeKeyCompare and is used to control the
** comparison of the two index keys.
** comparison of the two index keys.
**
**
** Note that aSortOrder[] and aColl[] have nField+1 slots. There
** Note that aSortOrder[] and aColl[] have nField+1 slots. There
...
@@ -1562,7 +1564,7 @@ struct UnpackedRecord {
...
@@ -1562,7 +1564,7 @@ struct UnpackedRecord {
** In the Table structure describing Ex1, nCol==3 because there are
** In the Table structure describing Ex1, nCol==3 because there are
** three columns in the table. In the Index structure describing
** three columns in the table. In the Index structure describing
** Ex2, nColumn==2 since 2 of the 3 columns of Ex1 are indexed.
** Ex2, nColumn==2 since 2 of the 3 columns of Ex1 are indexed.
** The value of aiColumn is {2, 0}. aiColumn[0]==2 because the
** The value of aiColumn is {2, 0}. aiColumn[0]==2 because the
** first column to be indexed (c3) has an index of 2 in Ex1.aCol[].
** first column to be indexed (c3) has an index of 2 in Ex1.aCol[].
** The second column to be indexed (c1) has an index of 0 in
** The second column to be indexed (c1) has an index of 0 in
** Ex1.aCol[], hence Ex2.aiColumn[1]==0.
** Ex1.aCol[], hence Ex2.aiColumn[1]==0.
...
@@ -1570,7 +1572,7 @@ struct UnpackedRecord {
...
@@ -1570,7 +1572,7 @@ struct UnpackedRecord {
** The Index.onError field determines whether or not the indexed columns
** The Index.onError field determines whether or not the indexed columns
** must be unique and what to do if they are not. When Index.onError=OE_None,
** must be unique and what to do if they are not. When Index.onError=OE_None,
** it means this is not a unique index. Otherwise it is a unique index
** it means this is not a unique index. Otherwise it is a unique index
** and the value of Index.onError indicate the which conflict resolution
** and the value of Index.onError indicate the which conflict resolution
** algorithm to employ whenever an attempt is made to insert a non-unique
** algorithm to employ whenever an attempt is made to insert a non-unique
** element.
** element.
*/
*/
...
@@ -1601,7 +1603,7 @@ struct Index {
...
@@ -1601,7 +1603,7 @@ struct Index {
};
};
/*
/*
** Each sample stored in the sqlite_stat3 table is represented in memory
** Each sample stored in the sqlite_stat3 table is represented in memory
** using a structure of this type. See documentation at the top of the
** using a structure of this type. See documentation at the top of the
** analyze.c source file for additional information.
** analyze.c source file for additional information.
*/
*/
...
@@ -1695,9 +1697,9 @@ typedef int ynVar;
...
@@ -1695,9 +1697,9 @@ typedef int ynVar;
** to represent the greater-than-or-equal-to operator in the expression
** to represent the greater-than-or-equal-to operator in the expression
** tree.
** tree.
**
**
** If the expression is an SQL literal (TK_INTEGER, TK_FLOAT, TK_BLOB,
** If the expression is an SQL literal (TK_INTEGER, TK_FLOAT, TK_BLOB,
** or TK_STRING), then Expr.token contains the text of the SQL literal. If
** or TK_STRING), then Expr.token contains the text of the SQL literal. If
** the expression is a variable (TK_VARIABLE), then Expr.token contains the
** the expression is a variable (TK_VARIABLE), then Expr.token contains the
** variable name. Finally, if the expression is an SQL function (TK_FUNCTION),
** variable name. Finally, if the expression is an SQL function (TK_FUNCTION),
** then Expr.token contains the name of the function.
** then Expr.token contains the name of the function.
**
**
...
@@ -1708,7 +1710,7 @@ typedef int ynVar;
...
@@ -1708,7 +1710,7 @@ typedef int ynVar;
** a CASE expression or an IN expression of the form "<lhs> IN (<y>, <z>...)".
** a CASE expression or an IN expression of the form "<lhs> IN (<y>, <z>...)".
** Expr.x.pSelect is used if the expression is a sub-select or an expression of
** Expr.x.pSelect is used if the expression is a sub-select or an expression of
** the form "<lhs> IN (SELECT ...)". If the EP_xIsSelect bit is set in the
** the form "<lhs> IN (SELECT ...)". If the EP_xIsSelect bit is set in the
** Expr.flags mask, then Expr.x.pSelect is valid. Otherwise, Expr.x.pList is
** Expr.flags mask, then Expr.x.pSelect is valid. Otherwise, Expr.x.pList is
** valid.
** valid.
**
**
** An expression of the form ID or ID.ID refers to a column in a table.
** An expression of the form ID or ID.ID refers to a column in a table.
...
@@ -1719,8 +1721,8 @@ typedef int ynVar;
...
@@ -1719,8 +1721,8 @@ typedef int ynVar;
** value is also stored in the Expr.iAgg column in the aggregate so that
** value is also stored in the Expr.iAgg column in the aggregate so that
** it can be accessed after all aggregates are computed.
** it can be accessed after all aggregates are computed.
**
**
** If the expression is an unbound variable marker (a question mark
** If the expression is an unbound variable marker (a question mark
** character '?' in the original SQL) then the Expr.iTable holds the index
** character '?' in the original SQL) then the Expr.iTable holds the index
** number for that variable.
** number for that variable.
**
**
** If the expression is a subquery then Expr.iColumn holds an integer
** If the expression is a subquery then Expr.iColumn holds an integer
...
@@ -1759,7 +1761,7 @@ struct Expr {
...
@@ -1759,7 +1761,7 @@ struct Expr {
/* If the EP_TokenOnly flag is set in the Expr.flags mask, then no
/* If the EP_TokenOnly flag is set in the Expr.flags mask, then no
** space is allocated for the fields below this point. An attempt to
** space is allocated for the fields below this point. An attempt to
** access them will result in a segfault or malfunction.
** access them will result in a segfault or malfunction.
*********************************************************************/
*********************************************************************/
Expr
*
pLeft
;
/* Left subnode */
Expr
*
pLeft
;
/* Left subnode */
...
@@ -1816,7 +1818,7 @@ struct Expr {
...
@@ -1816,7 +1818,7 @@ struct Expr {
#define EP_Unlikely 0x040000
/* unlikely() or likelihood() function */
#define EP_Unlikely 0x040000
/* unlikely() or likelihood() function */
/*
/*
** These macros can be used to test, set, or clear bits in the
** These macros can be used to test, set, or clear bits in the
** Expr.flags field.
** Expr.flags field.
*/
*/
#define ExprHasProperty(E,P) (((E)->flags&(P))!=0)
#define ExprHasProperty(E,P) (((E)->flags&(P))!=0)
...
@@ -1835,8 +1837,8 @@ struct Expr {
...
@@ -1835,8 +1837,8 @@ struct Expr {
#endif
#endif
/*
/*
** Macros to determine the number of bytes required by a normal Expr
** Macros to determine the number of bytes required by a normal Expr
** struct, an Expr struct with the EP_Reduced flag set in Expr.flags
** struct, an Expr struct with the EP_Reduced flag set in Expr.flags
** and an Expr struct with the EP_TokenOnly flag set.
** and an Expr struct with the EP_TokenOnly flag set.
*/
*/
#define EXPR_FULLSIZE sizeof(Expr)
/* Full size */
#define EXPR_FULLSIZE sizeof(Expr)
/* Full size */
...
@@ -1844,7 +1846,7 @@ struct Expr {
...
@@ -1844,7 +1846,7 @@ struct Expr {
#define EXPR_TOKENONLYSIZE offsetof(Expr,pLeft)
/* Fewer features */
#define EXPR_TOKENONLYSIZE offsetof(Expr,pLeft)
/* Fewer features */
/*
/*
** Flags passed to the sqlite3ExprDup() function. See the header comment
** Flags passed to the sqlite3ExprDup() function. See the header comment
** above sqlite3ExprDup() for details.
** above sqlite3ExprDup() for details.
*/
*/
#define EXPRDUP_REDUCE 0x0001
/* Used reduced-size Expr nodes */
#define EXPRDUP_REDUCE 0x0001
/* Used reduced-size Expr nodes */
...
@@ -2025,12 +2027,12 @@ struct SrcList {
...
@@ -2025,12 +2027,12 @@ struct SrcList {
** pEList corresponds to the result set of a SELECT and is NULL for
** pEList corresponds to the result set of a SELECT and is NULL for
** other statements.
** other statements.
**
**
** NameContexts can be nested. When resolving names, the inner-most
** NameContexts can be nested. When resolving names, the inner-most
** context is searched first. If no match is found, the next outer
** context is searched first. If no match is found, the next outer
** context is checked. If there is still no match, the next context
** context is checked. If there is still no match, the next context
** is checked. This process continues until either a match is found
** is checked. This process continues until either a match is found
** or all contexts are check. When a match is found, the nRef member of
** or all contexts are check. When a match is found, the nRef member of
** the context containing the match is incremented.
** the context containing the match is incremented.
**
**
** Each subquery gets a new NameContext. The pNext field points to the
** Each subquery gets a new NameContext. The pNext field points to the
** NameContext in the parent query. Thus the process of scanning the
** NameContext in the parent query. Thus the process of scanning the
...
@@ -2145,7 +2147,7 @@ struct SelectDest {
...
@@ -2145,7 +2147,7 @@ struct SelectDest {
};
};
/*
/*
** During code generation of statements that do inserts into AUTOINCREMENT
** During code generation of statements that do inserts into AUTOINCREMENT
** tables, the following information is attached to the Table.u.autoInc.p
** tables, the following information is attached to the Table.u.autoInc.p
** pointer of each autoincrement table to record some side information that
** pointer of each autoincrement table to record some side information that
** the code generator needs. We have to keep per-table autoincrement
** the code generator needs. We have to keep per-table autoincrement
...
@@ -2168,7 +2170,7 @@ struct AutoincInfo {
...
@@ -2168,7 +2170,7 @@ struct AutoincInfo {
#endif
#endif
/*
/*
** At least one instance of the following structure is created for each
** At least one instance of the following structure is created for each
** trigger that may be fired while parsing an INSERT, UPDATE or DELETE
** trigger that may be fired while parsing an INSERT, UPDATE or DELETE
** statement. All such objects are stored in the linked list headed at
** statement. All such objects are stored in the linked list headed at
** Parse.pTriggerPrg and deleted once statement compilation has been
** Parse.pTriggerPrg and deleted once statement compilation has been
...
@@ -2181,7 +2183,7 @@ struct AutoincInfo {
...
@@ -2181,7 +2183,7 @@ struct AutoincInfo {
** values for both pTrigger and orconf.
** values for both pTrigger and orconf.
**
**
** The TriggerPrg.aColmask[0] variable is set to a mask of old.* columns
** The TriggerPrg.aColmask[0] variable is set to a mask of old.* columns
** accessed (or set to 0 for triggers fired as a result of INSERT
** accessed (or set to 0 for triggers fired as a result of INSERT
** statements). Similarly, the TriggerPrg.aColmask[1] variable is set to
** statements). Similarly, the TriggerPrg.aColmask[1] variable is set to
** a mask of new.* columns used by the program.
** a mask of new.* columns used by the program.
*/
*/
...
@@ -2212,7 +2214,7 @@ struct TriggerPrg {
...
@@ -2212,7 +2214,7 @@ struct TriggerPrg {
** is constant but the second part is reset at the beginning and end of
** is constant but the second part is reset at the beginning and end of
** each recursion.
** each recursion.
**
**
** The nTableLock and aTableLock variables are only used if the shared-cache
** The nTableLock and aTableLock variables are only used if the shared-cache
** feature is enabled (if sqlite3Tsd()->useSharedData is true). They are
** feature is enabled (if sqlite3Tsd()->useSharedData is true). They are
** used to store the set of table-locks required by the statement being
** used to store the set of table-locks required by the statement being
** compiled. Function sqlite3TableLock() is used to add entries to the
** compiled. Function sqlite3TableLock() is used to add entries to the
...
@@ -2345,10 +2347,10 @@ struct AuthContext {
...
@@ -2345,10 +2347,10 @@ struct AuthContext {
/*
/*
* Each trigger present in the database schema is stored as an instance of
* Each trigger present in the database schema is stored as an instance of
* struct Trigger.
* struct Trigger.
*
*
* Pointers to instances of struct Trigger are stored in two ways.
* Pointers to instances of struct Trigger are stored in two ways.
* 1. In the "trigHash" hash table (part of the sqlite3* that represents the
* 1. In the "trigHash" hash table (part of the sqlite3* that represents the
* database). This allows Trigger structures to be retrieved by name.
* database). This allows Trigger structures to be retrieved by name.
* 2. All triggers associated with a single table form a linked list, using the
* 2. All triggers associated with a single table form a linked list, using the
* pNext member of struct Trigger. A pointer to the first element of the
* pNext member of struct Trigger. A pointer to the first element of the
...
@@ -2374,7 +2376,7 @@ struct Trigger {
...
@@ -2374,7 +2376,7 @@ struct Trigger {
/*
/*
** A trigger is either a BEFORE or an AFTER trigger. The following constants
** A trigger is either a BEFORE or an AFTER trigger. The following constants
** determine which.
** determine which.
**
**
** If there are multiple triggers, you might of some BEFORE and some AFTER.
** If there are multiple triggers, you might of some BEFORE and some AFTER.
** In that cases, the constants below can be ORed together.
** In that cases, the constants below can be ORed together.
...
@@ -2384,15 +2386,15 @@ struct Trigger {
...
@@ -2384,15 +2386,15 @@ struct Trigger {
/*
/*
* An instance of struct TriggerStep is used to store a single SQL statement
* An instance of struct TriggerStep is used to store a single SQL statement
* that is a part of a trigger-program.
* that is a part of a trigger-program.
*
*
* Instances of struct TriggerStep are stored in a singly linked list (linked
* Instances of struct TriggerStep are stored in a singly linked list (linked
* using the "pNext" member) referenced by the "step_list" member of the
* using the "pNext" member) referenced by the "step_list" member of the
* associated struct Trigger instance. The first element of the linked list is
* associated struct Trigger instance. The first element of the linked list is
* the first step of the trigger-program.
* the first step of the trigger-program.
*
*
* The "op" member indicates whether this is a "DELETE", "INSERT", "UPDATE" or
* The "op" member indicates whether this is a "DELETE", "INSERT", "UPDATE" or
* "SELECT" statement. The meanings of the other members is determined by the
* "SELECT" statement. The meanings of the other members is determined by the
* value of "op" as follows:
* value of "op" as follows:
*
*
* (op == TK_INSERT)
* (op == TK_INSERT)
...
@@ -2402,7 +2404,7 @@ struct Trigger {
...
@@ -2402,7 +2404,7 @@ struct Trigger {
* target -> A token holding the quoted name of the table to insert into.
* target -> A token holding the quoted name of the table to insert into.
* pExprList -> If this is an INSERT INTO ... VALUES ... statement, then
* pExprList -> If this is an INSERT INTO ... VALUES ... statement, then
* this stores values to be inserted. Otherwise NULL.
* this stores values to be inserted. Otherwise NULL.
* pIdList -> If this is an INSERT INTO ... (<column-names>) VALUES ...
* pIdList -> If this is an INSERT INTO ... (<column-names>) VALUES ...
* statement, then this stores the column-names to be
* statement, then this stores the column-names to be
* inserted into.
* inserted into.
*
*
...
@@ -2410,7 +2412,7 @@ struct Trigger {
...
@@ -2410,7 +2412,7 @@ struct Trigger {
* target -> A token holding the quoted name of the table to delete from.
* target -> A token holding the quoted name of the table to delete from.
* pWhere -> The WHERE clause of the DELETE statement if one is specified.
* pWhere -> The WHERE clause of the DELETE statement if one is specified.
* Otherwise NULL.
* Otherwise NULL.
*
*
* (op == TK_UPDATE)
* (op == TK_UPDATE)
* target -> A token holding the quoted name of the table to update rows of.
* target -> A token holding the quoted name of the table to update rows of.
* pWhere -> The WHERE clause of the UPDATE statement if one is specified.
* pWhere -> The WHERE clause of the UPDATE statement if one is specified.
...
@@ -2418,7 +2420,7 @@ struct Trigger {
...
@@ -2418,7 +2420,7 @@ struct Trigger {
* pExprList -> A list of the columns to update and the expressions to update
* pExprList -> A list of the columns to update and the expressions to update
* them to. See sqlite3Update() documentation of "pChanges"
* them to. See sqlite3Update() documentation of "pChanges"
* argument.
* argument.
*
*
*/
*/
struct
TriggerStep
{
struct
TriggerStep
{
u8
op
;
/* One of TK_DELETE, TK_UPDATE, TK_INSERT, TK_SELECT */
u8
op
;
/* One of TK_DELETE, TK_UPDATE, TK_INSERT, TK_SELECT */
...
@@ -2436,7 +2438,7 @@ struct TriggerStep {
...
@@ -2436,7 +2438,7 @@ struct TriggerStep {
/*
/*
** The following structure contains information used by the sqliteFix...
** The following structure contains information used by the sqliteFix...
** routines as they walk the parse tree to make database references
** routines as they walk the parse tree to make database references
** explicit.
** explicit.
*/
*/
typedef
struct
DbFixer
DbFixer
;
typedef
struct
DbFixer
DbFixer
;
struct
DbFixer
{
struct
DbFixer
{
...
@@ -2662,7 +2664,7 @@ int sqlite3HeapNearlyFull(void);
...
@@ -2662,7 +2664,7 @@ int sqlite3HeapNearlyFull(void);
#ifdef SQLITE_USE_ALLOCA
#ifdef SQLITE_USE_ALLOCA
# define sqlite3StackAllocRaw(D,N) alloca(N)
# define sqlite3StackAllocRaw(D,N) alloca(N)
# define sqlite3StackAllocZero(D,N) memset(alloca(N), 0, N)
# define sqlite3StackAllocZero(D,N) memset(alloca(N), 0, N)
# define sqlite3StackFree(D,P)
# define sqlite3StackFree(D,P)
#else
#else
# define sqlite3StackAllocRaw(D,N) sqlite3DbMallocRaw(D,N)
# define sqlite3StackAllocRaw(D,N) sqlite3DbMallocRaw(D,N)
# define sqlite3StackAllocZero(D,N) sqlite3DbMallocZero(D,N)
# define sqlite3StackAllocZero(D,N) sqlite3DbMallocZero(D,N)
...
@@ -3004,7 +3006,7 @@ u64 sqlite3LogEstToInt(LogEst);
...
@@ -3004,7 +3006,7 @@ u64 sqlite3LogEstToInt(LogEst);
** Routines to read and write variable-length integers. These used to
** Routines to read and write variable-length integers. These used to
** be defined locally, but now we use the varint routines in the util.c
** be defined locally, but now we use the varint routines in the util.c
** file. Code should use the MACRO forms below, as the Varint32 versions
** file. Code should use the MACRO forms below, as the Varint32 versions
** are coded to assume the single byte case is already handled (which
** are coded to assume the single byte case is already handled (which
** the MACRO form does).
** the MACRO form does).
*/
*/
int
sqlite3PutVarint
(
unsigned
char
*
,
u64
);
int
sqlite3PutVarint
(
unsigned
char
*
,
u64
);
...
@@ -3079,7 +3081,7 @@ u8 sqlite3GetBoolean(const char *z,int);
...
@@ -3079,7 +3081,7 @@ u8 sqlite3GetBoolean(const char *z,int);
const
void
*
sqlite3ValueText
(
sqlite3_value
*
,
u8
);
const
void
*
sqlite3ValueText
(
sqlite3_value
*
,
u8
);
int
sqlite3ValueBytes
(
sqlite3_value
*
,
u8
);
int
sqlite3ValueBytes
(
sqlite3_value
*
,
u8
);
void
sqlite3ValueSetStr
(
sqlite3_value
*
,
int
,
const
void
*
,
u8
,
void
sqlite3ValueSetStr
(
sqlite3_value
*
,
int
,
const
void
*
,
u8
,
void
(
*
)(
void
*
));
void
(
*
)(
void
*
));
void
sqlite3ValueFree
(
sqlite3_value
*
);
void
sqlite3ValueFree
(
sqlite3_value
*
);
sqlite3_value
*
sqlite3ValueNew
(
sqlite3
*
);
sqlite3_value
*
sqlite3ValueNew
(
sqlite3
*
);
...
@@ -3131,7 +3133,7 @@ Schema *sqlite3SchemaGet(sqlite3 *, Btree *);
...
@@ -3131,7 +3133,7 @@ Schema *sqlite3SchemaGet(sqlite3 *, Btree *);
int
sqlite3SchemaToIndex
(
sqlite3
*
db
,
Schema
*
);
int
sqlite3SchemaToIndex
(
sqlite3
*
db
,
Schema
*
);
KeyInfo
*
sqlite3KeyInfoAlloc
(
sqlite3
*
,
int
);
KeyInfo
*
sqlite3KeyInfoAlloc
(
sqlite3
*
,
int
);
KeyInfo
*
sqlite3IndexKeyinfo
(
Parse
*
,
Index
*
);
KeyInfo
*
sqlite3IndexKeyinfo
(
Parse
*
,
Index
*
);
int
sqlite3CreateFunc
(
sqlite3
*
,
const
char
*
,
int
,
int
,
void
*
,
int
sqlite3CreateFunc
(
sqlite3
*
,
const
char
*
,
int
,
int
,
void
*
,
void
(
*
)(
sqlite3_context
*
,
int
,
sqlite3_value
**
),
void
(
*
)(
sqlite3_context
*
,
int
,
sqlite3_value
**
),
void
(
*
)(
sqlite3_context
*
,
int
,
sqlite3_value
**
),
void
(
*
)(
sqlite3_context
*
),
void
(
*
)(
sqlite3_context
*
,
int
,
sqlite3_value
**
),
void
(
*
)(
sqlite3_context
*
),
FuncDestructor
*
pDestructor
FuncDestructor
*
pDestructor
...
@@ -3189,7 +3191,7 @@ void sqlite3AutoLoadExtensions(sqlite3*);
...
@@ -3189,7 +3191,7 @@ void sqlite3AutoLoadExtensions(sqlite3*);
# define sqlite3VtabRollback(X)
# define sqlite3VtabRollback(X)
# define sqlite3VtabCommit(X)
# define sqlite3VtabCommit(X)
# define sqlite3VtabInSync(db) 0
# define sqlite3VtabInSync(db) 0
# define sqlite3VtabLock(X)
# define sqlite3VtabLock(X)
# define sqlite3VtabUnlock(X)
# define sqlite3VtabUnlock(X)
# define sqlite3VtabUnlockList(X)
# define sqlite3VtabUnlockList(X)
# define sqlite3VtabSavepoint(X, Y, Z) SQLITE_OK
# define sqlite3VtabSavepoint(X, Y, Z) SQLITE_OK
...
@@ -3236,7 +3238,7 @@ const char *sqlite3JournalModename(int);
...
@@ -3236,7 +3238,7 @@ const char *sqlite3JournalModename(int);
** no-op macros if OMIT_FOREIGN_KEY is defined. In this case no foreign
** no-op macros if OMIT_FOREIGN_KEY is defined. In this case no foreign
** key functionality is available. If OMIT_TRIGGER is defined but
** key functionality is available. If OMIT_TRIGGER is defined but
** OMIT_FOREIGN_KEY is not, only some of the functions are no-oped. In
** OMIT_FOREIGN_KEY is not, only some of the functions are no-oped. In
** this case foreign keys are parsed, but no other functionality is
** this case foreign keys are parsed, but no other functionality is
** provided (enforcement of FK constraints requires the triggers sub-system).
** provided (enforcement of FK constraints requires the triggers sub-system).
*/
*/
#if !defined(SQLITE_OMIT_FOREIGN_KEY) && !defined(SQLITE_OMIT_TRIGGER)
#if !defined(SQLITE_OMIT_FOREIGN_KEY) && !defined(SQLITE_OMIT_TRIGGER)
...
@@ -3331,7 +3333,7 @@ void sqlite3Put4byte(u8*, u32);
...
@@ -3331,7 +3333,7 @@ void sqlite3Put4byte(u8*, u32);
/*
/*
** If the SQLITE_ENABLE IOTRACE exists then the global variable
** If the SQLITE_ENABLE IOTRACE exists then the global variable
** sqlite3IoTrace is a pointer to a printf-like routine used to
** sqlite3IoTrace is a pointer to a printf-like routine used to
** print I/O tracing messages.
** print I/O tracing messages.
*/
*/
#ifdef SQLITE_ENABLE_IOTRACE
#ifdef SQLITE_ENABLE_IOTRACE
# define IOTRACE(A) if( sqlite3IoTrace ){ sqlite3IoTrace A; }
# define IOTRACE(A) if( sqlite3IoTrace ){ sqlite3IoTrace A; }
...
@@ -3365,7 +3367,7 @@ SQLITE_EXTERN void (*sqlite3IoTrace)(const char*,...);
...
@@ -3365,7 +3367,7 @@ SQLITE_EXTERN void (*sqlite3IoTrace)(const char*,...);
** that allocations that might have been satisfied by lookaside are not
** that allocations that might have been satisfied by lookaside are not
** passed back to non-lookaside free() routines. Asserts such as the
** passed back to non-lookaside free() routines. Asserts such as the
** example above are placed on the non-lookaside free() routines to verify
** example above are placed on the non-lookaside free() routines to verify
** this constraint.
** this constraint.
**
**
** All of this is no-op for a production build. It only comes into
** All of this is no-op for a production build. It only comes into
** play when the SQLITE_MEMDEBUG compile-time option is used.
** play when the SQLITE_MEMDEBUG compile-time option is used.
...
...
components/external/SQLite-3.8.1/tool/mksqlite3c.tcl
浏览文件 @
7d88b753
...
@@ -247,6 +247,7 @@ foreach file {
...
@@ -247,6 +247,7 @@ foreach file {
mutex_noop.c
mutex_noop.c
mutex_unix.c
mutex_unix.c
mutex_w32.c
mutex_w32.c
mutex_rtt.c
malloc.c
malloc.c
printf.c
printf.c
random.c
random.c
...
@@ -257,6 +258,7 @@ foreach file {
...
@@ -257,6 +258,7 @@ foreach file {
os_unix.c
os_unix.c
os_win.c
os_win.c
os_rtt.c
bitvec.c
bitvec.c
pcache.c
pcache.c
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录