OpenCoverage

main.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/sqlite/src/src/main.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/*-
2** 2001 September 15-
3**-
4** The author disclaims copyright to this source code. In place of-
5** a legal notice, here is a blessing:-
6**-
7** May you do good and not evil.-
8** May you find forgiveness for yourself and forgive others.-
9** May you share freely, never taking more than you give.-
10**-
11*************************************************************************-
12** Main file for the SQLite library. The routines in this file-
13** implement the programmer interface to the library. Routines in-
14** other files are for internal use by SQLite and should not be-
15** accessed by users of the library.-
16*/-
17#include "sqliteInt.h"-
18-
19#ifdef SQLITE_ENABLE_FTS3-
20# include "fts3.h"-
21#endif-
22#ifdef SQLITE_ENABLE_RTREE-
23# include "rtree.h"-
24#endif-
25#if defined(SQLITE_ENABLE_ICU) || defined(SQLITE_ENABLE_ICU_COLLATIONS)-
26# include "sqliteicu.h"-
27#endif-
28#ifdef SQLITE_ENABLE_JSON1-
29int sqlite3Json1Init(sqlite3*);-
30#endif-
31#ifdef SQLITE_ENABLE_STMTVTAB-
32int sqlite3StmtVtabInit(sqlite3*);-
33#endif-
34#ifdef SQLITE_ENABLE_FTS5-
35int sqlite3Fts5Init(sqlite3*);-
36#endif-
37-
38#ifndef SQLITE_AMALGAMATION-
39/* IMPLEMENTATION-OF: R-46656-45156 The sqlite3_version[] string constant-
40** contains the text of SQLITE_VERSION macro. -
41*/-
42const char sqlite3_version[] = SQLITE_VERSION;-
43#endif-
44-
45/* IMPLEMENTATION-OF: R-53536-42575 The sqlite3_libversion() function returns-
46** a pointer to the to the sqlite3_version[] string constant. -
47*/-
48const
executed 5 times by 1 test: return sqlite3_version;
Executed by:
  • Self test (438)
char *sqlite3_libversion(void){ return sqlite3_version; }
executed 5 times by 1 test: return sqlite3_version;
Executed by:
  • Self test (438)
5
49-
50/* IMPLEMENTATION-OF: R-25063-23286 The sqlite3_sourceid() function returns a-
51** pointer to a string constant whose value is the same as the-
52** SQLITE_SOURCE_ID C preprocessor macro. Except if SQLite is built using-
53** an edited copy of the amalgamation, then the last four characters of-
54** the hash might be different from SQLITE_SOURCE_ID.-
55*/-
56const
executed 1890 times by 1 test: return "2018-09-23 02:01:42 2fd62fccd13e326dbd7dd730112542c6faa56e466bf4f7b8e22ced543031280c";
Executed by:
  • Self test (438)
char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
executed 1890 times by 1 test: return "2018-09-23 02:01:42 2fd62fccd13e326dbd7dd730112542c6faa56e466bf4f7b8e22ced543031280c";
Executed by:
  • Self test (438)
1890
57-
58/* IMPLEMENTATION-OF: R-35210-63508 The sqlite3_libversion_number() function-
59** returns an integer equal to SQLITE_VERSION_NUMBER.-
60*/-
61int sqlite3_libversion_number(void){ return SQLITE_VERSION_NUMBER; }
executed 785 times by 1 test: return 3026000;
Executed by:
  • Self test (438)
785
62-
63/* IMPLEMENTATION-OF: R-20790-14025 The sqlite3_threadsafe() function returns-
64** zero if and only if SQLite was compiled with mutexing code omitted due to-
65** the SQLITE_THREADSAFE compile-time option being set to 0.-
66*/-
67int sqlite3_threadsafe(void){ return SQLITE_THREADSAFE; }
executed 15087 times by 2 tests: return 1;
Executed by:
  • Self test (438)
  • Self test (63)
15087
68-
69/*-
70** When compiling the test fixture or with debugging enabled (on Win32),-
71** this variable being set to non-zero will cause OSTRACE macros to emit-
72** extra diagnostic information.-
73*/-
74#ifdef SQLITE_HAVE_OS_TRACE-
75# ifndef SQLITE_DEBUG_OS_TRACE-
76# define SQLITE_DEBUG_OS_TRACE 0-
77# endif-
78 int sqlite3OSTrace = SQLITE_DEBUG_OS_TRACE;-
79#endif-
80-
81#if !defined(SQLITE_OMIT_TRACE) && defined(SQLITE_ENABLE_IOTRACE)-
82/*-
83** If the following function pointer is not NULL and if-
84** SQLITE_ENABLE_IOTRACE is enabled, then messages describing-
85** I/O active are written using this function. These messages-
86** are intended for debugging activity only.-
87*/-
88SQLITE_API void (SQLITE_CDECL *sqlite3IoTrace)(const char*, ...) = 0;-
89#endif-
90-
91/*-
92** If the following global variable points to a string which is the-
93** name of a directory, then that directory will be used to store-
94** temporary files.-
95**-
96** See also the "PRAGMA temp_store_directory" SQL command.-
97*/-
98char *sqlite3_temp_directory = 0;-
99-
100/*-
101** If the following global variable points to a string which is the-
102** name of a directory, then that directory will be used to store-
103** all database files specified with a relative pathname.-
104**-
105** See also the "PRAGMA data_store_directory" SQL command.-
106*/-
107char *sqlite3_data_directory = 0;-
108-
109/*-
110** Initialize SQLite. -
111**-
112** This routine must be called to initialize the memory allocation,-
113** VFS, and mutex subsystems prior to doing any serious work with-
114** SQLite. But as long as you do not compile with SQLITE_OMIT_AUTOINIT-
115** this routine will be called automatically by key routines such as-
116** sqlite3_open(). -
117**-
118** This routine is a no-op except on its very first call for the process,-
119** or for the first call after a call to sqlite3_shutdown.-
120**-
121** The first thread to call this routine runs the initialization to-
122** completion. If subsequent threads call this routine before the first-
123** thread has finished the initialization process, then the subsequent-
124** threads must block until the first thread finishes with the initialization.-
125**-
126** The first thread might call this routine recursively. Recursive-
127** calls to this routine should not block, of course. Otherwise the-
128** initialization process would never complete.-
129**-
130** Let X be the first thread to enter this routine. Let Y be some other-
131** thread. Then while the initial invocation of this routine by X is-
132** incomplete, it is required that:-
133**-
134** * Calls to this routine from Y must block until the outer-most-
135** call by X completes.-
136**-
137** * Recursive calls to this routine from thread X return immediately-
138** without blocking.-
139*/-
140int sqlite3_initialize(void){-
141 MUTEX_LOGIC( sqlite3_mutex *pMaster; ) /* The main static mutex */-
142 int rc; /* Result code */-
143#ifdef SQLITE_EXTRA_INIT-
144 int bRunExtraInit = 0; /* Extra initialization needed */-
145#endif-
146-
147#ifdef SQLITE_OMIT_WSD-
148 rc = sqlite3_wsd_init(4096, 24);-
149 if( rc!=SQLITE_OK ){-
150 return rc;-
151 }-
152#endif-
153-
154 /* If the following assert() fails on some obscure processor/compiler-
155 ** combination, the work-around is to set the correct pointer-
156 ** size at compile-time using -DSQLITE_PTRSIZE=n compile-time option */-
157 assert( SQLITE_PTRSIZE==sizeof(char*) );-
158-
159 /* If SQLite is already completely initialized, then this call-
160 ** to sqlite3_initialize() should be a no-op. But the initialization-
161 ** must be complete. So isInit must not be set until the very end-
162 ** of this routine.-
163 */-
164 if( sqlite3GlobalConfig.isInit ) return SQLITE_OK;
executed 4473830 times by 438 tests: return 0;
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
sqlite3Config.isInitDescription
TRUEevaluated 4473830 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
FALSEevaluated 3193 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
3193-4473830
165-
166 /* Make sure the mutex subsystem is initialized. If unable to -
167 ** initialize the mutex subsystem, return early with the error.-
168 ** If the system is so sick that we are unable to allocate a mutex,-
169 ** there is not much SQLite is going to be able to do.-
170 **-
171 ** The mutex subsystem must take care of serializing its own-
172 ** initialization.-
173 */-
174 rc = sqlite3MutexInit();-
175 if( rc ) return rc;
executed 2 times by 1 test: return rc;
Executed by:
  • Self test (438)
rcDescription
TRUEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 3191 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
2-3191
176-
177 /* Initialize the malloc() system and the recursive pInitMutex mutex.-
178 ** This operation is protected by the STATIC_MASTER mutex. Note that-
179 ** MutexAlloc() is called for a static mutex prior to initializing the-
180 ** malloc subsystem - this implies that the allocation of a static-
181 ** mutex must not require support from the malloc subsystem.-
182 */-
183 MUTEX_LOGIC( pMaster = sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_MASTER); )-
184 sqlite3_mutex_enter(pMaster);-
185 sqlite3GlobalConfig.isMutexInit = 1;-
186 if( !sqlite3GlobalConfig.isMallocInit ){
!sqlite3Config.isMallocInitDescription
TRUEevaluated 533 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
FALSEevaluated 2658 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
533-2658
187 rc = sqlite3MallocInit();-
188 }
executed 533 times by 438 tests: end of block
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
533
189 if( rc==SQLITE_OK ){
rc==0Description
TRUEevaluated 3189 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
FALSEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
2-3189
190 sqlite3GlobalConfig.isMallocInit = 1;-
191 if( !sqlite3GlobalConfig.pInitMutex ){
!sqlite3Config.pInitMutexDescription
TRUEevaluated 576 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
FALSEevaluated 2613 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
576-2613
192 sqlite3GlobalConfig.pInitMutex =-
193 sqlite3MutexAlloc(SQLITE_MUTEX_RECURSIVE);-
194 if( sqlite3GlobalConfig.bCoreMutex && !sqlite3GlobalConfig.pInitMutex ){
sqlite3Config.bCoreMutexDescription
TRUEevaluated 528 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
FALSEevaluated 48 times by 1 test
Evaluated by:
  • Self test (438)
!sqlite3Config.pInitMutexDescription
TRUEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 526 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
2-528
195 rc = SQLITE_NOMEM_BKPT;-
196 }
executed 2 times by 1 test: end of block
Executed by:
  • Self test (438)
2
197 }
executed 576 times by 438 tests: end of block
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
576
198 }
executed 3189 times by 438 tests: end of block
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
3189
199 if( rc==SQLITE_OK ){
rc==0Description
TRUEevaluated 3187 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
FALSEevaluated 4 times by 1 test
Evaluated by:
  • Self test (438)
4-3187
200 sqlite3GlobalConfig.nRefInitMutex++;-
201 }
executed 3187 times by 438 tests: end of block
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
3187
202 sqlite3_mutex_leave(pMaster);-
203-
204 /* If rc is not SQLITE_OK at this point, then either the malloc-
205 ** subsystem could not be initialized or the system failed to allocate-
206 ** the pInitMutex mutex. Return an error in either case. */-
207 if( rc!=SQLITE_OK ){
rc!=0Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 3187 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
4-3187
208 return rc;
executed 4 times by 1 test: return rc;
Executed by:
  • Self test (438)
4
209 }-
210-
211 /* Do the rest of the initialization under the recursive mutex so-
212 ** that we will be able to handle recursive calls into-
213 ** sqlite3_initialize(). The recursive calls normally come through-
214 ** sqlite3_os_init() when it invokes sqlite3_vfs_register(), but other-
215 ** recursive calls might also be possible.-
216 **-
217 ** IMPLEMENTATION-OF: R-00140-37445 SQLite automatically serializes calls-
218 ** to the xInit method, so the xInit method need not be threadsafe.-
219 **-
220 ** The following mutex is what serializes access to the appdef pcache xInit-
221 ** methods. The sqlite3_pcache_methods.xInit() all is embedded in the-
222 ** call to sqlite3PcacheInitialize().-
223 */-
224 sqlite3_mutex_enter(sqlite3GlobalConfig.pInitMutex);-
225 if( sqlite3GlobalConfig.isInit==0 && sqlite3GlobalConfig.inProgress==0 ){
sqlite3Config.isInit==0Description
TRUEevaluated 3187 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
FALSEnever evaluated
sqlite3Config.inProgress==0Description
TRUEevaluated 534 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
FALSEevaluated 2653 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
0-3187
226 sqlite3GlobalConfig.inProgress = 1;-
227#ifdef SQLITE_ENABLE_SQLLOG-
228 {-
229 extern void sqlite3_init_sqllog(void);-
230 sqlite3_init_sqllog();-
231 }-
232#endif-
233 memset(&sqlite3BuiltinFunctions, 0, sizeof(sqlite3BuiltinFunctions));-
234 sqlite3RegisterBuiltinFunctions();-
235 if( sqlite3GlobalConfig.isPCacheInit==0 ){
sqlite3Config.isPCacheInit==0Description
TRUEevaluated 532 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
FALSEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
2-532
236 rc = sqlite3PcacheInitialize();-
237 }
executed 532 times by 438 tests: end of block
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
532
238 if( rc==SQLITE_OK ){
rc==0Description
TRUEevaluated 532 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
FALSEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
2-532
239 sqlite3GlobalConfig.isPCacheInit = 1;-
240 rc = sqlite3OsInit();-
241 }
executed 532 times by 438 tests: end of block
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
532
242#ifdef SQLITE_ENABLE_DESERIALIZE-
243 if( rc==SQLITE_OK ){-
244 rc = sqlite3MemdbInit();-
245 }-
246#endif-
247 if( rc==SQLITE_OK ){
rc==0Description
TRUEevaluated 530 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
FALSEevaluated 4 times by 1 test
Evaluated by:
  • Self test (438)
4-530
248 sqlite3PCacheBufferSetup( sqlite3GlobalConfig.pPage, -
249 sqlite3GlobalConfig.szPage, sqlite3GlobalConfig.nPage);-
250 sqlite3GlobalConfig.isInit = 1;-
251#ifdef SQLITE_EXTRA_INIT-
252 bRunExtraInit = 1;-
253#endif-
254 }
executed 530 times by 438 tests: end of block
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
530
255 sqlite3GlobalConfig.inProgress = 0;-
256 }
executed 534 times by 438 tests: end of block
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
534
257 sqlite3_mutex_leave(sqlite3GlobalConfig.pInitMutex);-
258-
259 /* Go back under the static mutex and clean up the recursive-
260 ** mutex to prevent a resource leak.-
261 */-
262 sqlite3_mutex_enter(pMaster);-
263 sqlite3GlobalConfig.nRefInitMutex--;-
264 if( sqlite3GlobalConfig.nRefInitMutex<=0 ){
sqlite3Config.nRefInitMutex<=0Description
TRUEevaluated 534 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
FALSEevaluated 2653 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
534-2653
265 assert( sqlite3GlobalConfig.nRefInitMutex==0 );-
266 sqlite3_mutex_free(sqlite3GlobalConfig.pInitMutex);-
267 sqlite3GlobalConfig.pInitMutex = 0;-
268 }
executed 534 times by 438 tests: end of block
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
534
269 sqlite3_mutex_leave(pMaster);-
270-
271 /* The following is just a sanity check to make sure SQLite has-
272 ** been compiled correctly. It is important to run this code, but-
273 ** we don't want to run it too often and soak up CPU cycles for no-
274 ** reason. So we run it once during initialization.-
275 */-
276#ifndef NDEBUG-
277#ifndef SQLITE_OMIT_FLOATING_POINT-
278 /* This section of code's only "output" is via assert() statements. */-
279 if( rc==SQLITE_OK ){-
280 u64 x = (((u64)1)<<63)-1;-
281 double y;-
282 assert(sizeof(x)==8);-
283 assert(sizeof(x)==sizeof(y));-
284 memcpy(&y, &x, 8);-
285 assert( sqlite3IsNaN(y) );-
286 }-
287#endif-
288#endif-
289-
290 /* Do extra initialization steps requested by the SQLITE_EXTRA_INIT-
291 ** compile-time option.-
292 */-
293#ifdef SQLITE_EXTRA_INIT-
294 if( bRunExtraInit ){-
295 int SQLITE_EXTRA_INIT(const char*);-
296 rc = SQLITE_EXTRA_INIT(0);-
297 }-
298#endif-
299-
300 return rc;
executed 3187 times by 438 tests: return rc;
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
3187
301}-
302-
303/*-
304** Undo the effects of sqlite3_initialize(). Must not be called while-
305** there are outstanding database connections or memory allocations or-
306** while any part of SQLite is otherwise in use in any thread. This-
307** routine is not threadsafe. But it is safe to invoke this routine-
308** on when SQLite is already shut down. If SQLite is already shut down-
309** when this routine is invoked, then this routine is a harmless no-op.-
310*/-
311int sqlite3_shutdown(void){-
312#ifdef SQLITE_OMIT_WSD-
313 int rc = sqlite3_wsd_init(4096, 24);-
314 if( rc!=SQLITE_OK ){-
315 return rc;-
316 }-
317#endif-
318-
319 if( sqlite3GlobalConfig.isInit ){
sqlite3Config.isInitDescription
TRUEevaluated 93 times by 6 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (438)
FALSEevaluated 447 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
93-447
320#ifdef SQLITE_EXTRA_SHUTDOWN-
321 void SQLITE_EXTRA_SHUTDOWN(void);-
322 SQLITE_EXTRA_SHUTDOWN();-
323#endif-
324 sqlite3_os_end();-
325 sqlite3_reset_auto_extension();-
326 sqlite3GlobalConfig.isInit = 0;-
327 }
executed 93 times by 6 tests: end of block
Executed by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (438)
93
328 if( sqlite3GlobalConfig.isPCacheInit ){
sqlite3Config.isPCacheInitDescription
TRUEevaluated 93 times by 6 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (438)
FALSEevaluated 447 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
93-447
329 sqlite3PcacheShutdown();-
330 sqlite3GlobalConfig.isPCacheInit = 0;-
331 }
executed 93 times by 6 tests: end of block
Executed by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (438)
93
332 if( sqlite3GlobalConfig.isMallocInit ){
sqlite3Config.isMallocInitDescription
TRUEevaluated 94 times by 6 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (438)
FALSEevaluated 446 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
94-446
333 sqlite3MallocEnd();-
334 sqlite3GlobalConfig.isMallocInit = 0;-
335-
336#ifndef SQLITE_OMIT_SHUTDOWN_DIRECTORIES-
337 /* The heap subsystem has now been shutdown and these values are supposed-
338 ** to be NULL or point to memory that was obtained from sqlite3_malloc(),-
339 ** which would rely on that heap subsystem; therefore, make sure these-
340 ** values cannot refer to heap memory that was just invalidated when the-
341 ** heap subsystem was shutdown. This is only done if the current call to-
342 ** this function resulted in the heap subsystem actually being shutdown.-
343 */-
344 sqlite3_data_directory = 0;-
345 sqlite3_temp_directory = 0;-
346#endif-
347 }
executed 94 times by 6 tests: end of block
Executed by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (438)
94
348 if( sqlite3GlobalConfig.isMutexInit ){
sqlite3Config.isMutexInitDescription
TRUEevaluated 95 times by 6 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (438)
FALSEevaluated 445 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
95-445
349 sqlite3MutexEnd();-
350 sqlite3GlobalConfig.isMutexInit = 0;-
351 }
executed 95 times by 6 tests: end of block
Executed by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (438)
95
352-
353 return SQLITE_OK;
executed 540 times by 438 tests: return 0;
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
540
354}-
355-
356/*-
357** This API allows applications to modify the global configuration of-
358** the SQLite library at run-time.-
359**-
360** This routine should only be called when there are no outstanding-
361** database connections or memory allocations. This routine is not-
362** threadsafe. Failure to heed these warnings can lead to unpredictable-
363** behavior.-
364*/-
365int sqlite3_config(int op, ...){-
366 va_list ap;-
367 int rc = SQLITE_OK;-
368-
369 /* sqlite3_config() shall return SQLITE_MISUSE if it is invoked while-
370 ** the SQLite library is in use. */-
371 if( sqlite3GlobalConfig.isInit ) return SQLITE_MISUSE_BKPT;
executed 977 times by 1 test: return sqlite3MisuseError(371);
Executed by:
  • Self test (438)
sqlite3Config.isInitDescription
TRUEevaluated 977 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1056 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
977-1056
372-
373 va_start(ap, op);-
374 switch( op ){-
375-
376 /* Mutex configuration options are only available in a threadsafe-
377 ** compile.-
378 */-
379#if defined(SQLITE_THREADSAFE) && SQLITE_THREADSAFE>0 /* IMP: R-54466-46756 */-
380 case SQLITE_CONFIG_SINGLETHREAD: {
executed 6 times by 1 test: case 1:
Executed by:
  • Self test (438)
6
381 /* EVIDENCE-OF: R-02748-19096 This option sets the threading mode to-
382 ** Single-thread. */-
383 sqlite3GlobalConfig.bCoreMutex = 0; /* Disable mutex on core */-
384 sqlite3GlobalConfig.bFullMutex = 0; /* Disable mutex on connections */-
385 break;
executed 6 times by 1 test: break;
Executed by:
  • Self test (438)
6
386 }-
387#endif-
388#if defined(SQLITE_THREADSAFE) && SQLITE_THREADSAFE>0 /* IMP: R-20520-54086 */-
389 case SQLITE_CONFIG_MULTITHREAD: {
executed 6 times by 1 test: case 2:
Executed by:
  • Self test (438)
6
390 /* EVIDENCE-OF: R-14374-42468 This option sets the threading mode to-
391 ** Multi-thread. */-
392 sqlite3GlobalConfig.bCoreMutex = 1; /* Enable mutex on core */-
393 sqlite3GlobalConfig.bFullMutex = 0; /* Disable mutex on connections */-
394 break;
executed 6 times by 1 test: break;
Executed by:
  • Self test (438)
6
395 }-
396#endif-
397#if defined(SQLITE_THREADSAFE) && SQLITE_THREADSAFE>0 /* IMP: R-59593-21810 */-
398 case SQLITE_CONFIG_SERIALIZED: {
executed 3 times by 1 test: case 3:
Executed by:
  • Self test (438)
3
399 /* EVIDENCE-OF: R-41220-51800 This option sets the threading mode to-
400 ** Serialized. */-
401 sqlite3GlobalConfig.bCoreMutex = 1; /* Enable mutex on core */-
402 sqlite3GlobalConfig.bFullMutex = 1; /* Enable mutex on connections */-
403 break;
executed 3 times by 1 test: break;
Executed by:
  • Self test (438)
3
404 }-
405#endif-
406#if defined(SQLITE_THREADSAFE) && SQLITE_THREADSAFE>0 /* IMP: R-63666-48755 */-
407 case SQLITE_CONFIG_MUTEX: {
executed 24 times by 1 test: case 10:
Executed by:
  • Self test (438)
24
408 /* Specify an alternative mutex implementation */-
409 sqlite3GlobalConfig.mutex = *va_arg(ap, sqlite3_mutex_methods*);-
410 break;
executed 24 times by 1 test: break;
Executed by:
  • Self test (438)
24
411 }-
412#endif-
413#if defined(SQLITE_THREADSAFE) && SQLITE_THREADSAFE>0 /* IMP: R-14450-37597 */-
414 case SQLITE_CONFIG_GETMUTEX: {
executed 12 times by 1 test: case 11:
Executed by:
  • Self test (438)
12
415 /* Retrieve the current mutex implementation */-
416 *va_arg(ap, sqlite3_mutex_methods*) = sqlite3GlobalConfig.mutex;-
417 break;
executed 12 times by 1 test: break;
Executed by:
  • Self test (438)
12
418 }-
419#endif-
420-
421 case SQLITE_CONFIG_MALLOC: {
executed 459 times by 438 tests: case 4:
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
459
422 /* EVIDENCE-OF: R-55594-21030 The SQLITE_CONFIG_MALLOC option takes a-
423 ** single argument which is a pointer to an instance of the-
424 ** sqlite3_mem_methods structure. The argument specifies alternative-
425 ** low-level memory allocation routines to be used in place of the memory-
426 ** allocation routines built into SQLite. */-
427 sqlite3GlobalConfig.m = *va_arg(ap, sqlite3_mem_methods*);-
428 break;
executed 459 times by 438 tests: break;
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
459
429 }-
430 case SQLITE_CONFIG_GETMALLOC: {
executed 11 times by 1 test: case 5:
Executed by:
  • Self test (438)
11
431 /* EVIDENCE-OF: R-51213-46414 The SQLITE_CONFIG_GETMALLOC option takes a-
432 ** single argument which is a pointer to an instance of the-
433 ** sqlite3_mem_methods structure. The sqlite3_mem_methods structure is-
434 ** filled with the currently defined memory allocation routines. */-
435 if( sqlite3GlobalConfig.m.xMalloc==0 ) sqlite3MemSetDefault();
never executed: sqlite3MemSetDefault();
sqlite3Config.m.xMalloc==0Description
TRUEnever evaluated
FALSEevaluated 11 times by 1 test
Evaluated by:
  • Self test (438)
0-11
436 *va_arg(ap, sqlite3_mem_methods*) = sqlite3GlobalConfig.m;-
437 break;
executed 11 times by 1 test: break;
Executed by:
  • Self test (438)
11
438 }-
439 case SQLITE_CONFIG_MEMSTATUS: {
executed 4 times by 1 test: case 9:
Executed by:
  • Self test (438)
4
440 /* EVIDENCE-OF: R-61275-35157 The SQLITE_CONFIG_MEMSTATUS option takes-
441 ** single argument of type int, interpreted as a boolean, which enables-
442 ** or disables the collection of memory allocation statistics. */-
443 sqlite3GlobalConfig.bMemstat = va_arg(ap, int);-
444 break;
executed 4 times by 1 test: break;
Executed by:
  • Self test (438)
4
445 }-
446 case SQLITE_CONFIG_SMALL_MALLOC: {
never executed: case 27:
0
447 sqlite3GlobalConfig.bSmallMalloc = va_arg(ap, int);-
448 break;
never executed: break;
0
449 }-
450 case SQLITE_CONFIG_PAGECACHE: {
executed 21 times by 1 test: case 7:
Executed by:
  • Self test (438)
21
451 /* EVIDENCE-OF: R-18761-36601 There are three arguments to-
452 ** SQLITE_CONFIG_PAGECACHE: A pointer to 8-byte aligned memory (pMem),-
453 ** the size of each page cache line (sz), and the number of cache lines-
454 ** (N). */-
455 sqlite3GlobalConfig.pPage = va_arg(ap, void*);-
456 sqlite3GlobalConfig.szPage = va_arg(ap, int);-
457 sqlite3GlobalConfig.nPage = va_arg(ap, int);-
458 break;
executed 21 times by 1 test: break;
Executed by:
  • Self test (438)
21
459 }-
460 case SQLITE_CONFIG_PCACHE_HDRSZ: {
never executed: case 24:
0
461 /* EVIDENCE-OF: R-39100-27317 The SQLITE_CONFIG_PCACHE_HDRSZ option takes-
462 ** a single parameter which is a pointer to an integer and writes into-
463 ** that integer the number of extra bytes per page required for each page-
464 ** in SQLITE_CONFIG_PAGECACHE. */-
465 *va_arg(ap, int*) = -
466 sqlite3HeaderSizeBtree() +-
467 sqlite3HeaderSizePcache() +-
468 sqlite3HeaderSizePcache1();-
469 break;
never executed: break;
0
470 }-
471-
472 case SQLITE_CONFIG_PCACHE: {
never executed: case 14:
0
473 /* no-op */-
474 break;
never executed: break;
0
475 }-
476 case SQLITE_CONFIG_GETPCACHE: {
never executed: case 15:
0
477 /* now an error */-
478 rc = SQLITE_ERROR;-
479 break;
never executed: break;
0
480 }-
481-
482 case SQLITE_CONFIG_PCACHE2: {
executed 460 times by 438 tests: case 18:
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
460
483 /* EVIDENCE-OF: R-63325-48378 The SQLITE_CONFIG_PCACHE2 option takes a-
484 ** single argument which is a pointer to an sqlite3_pcache_methods2-
485 ** object. This object specifies the interface to a custom page cache-
486 ** implementation. */-
487 sqlite3GlobalConfig.pcache2 = *va_arg(ap, sqlite3_pcache_methods2*);-
488 break;
executed 460 times by 438 tests: break;
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
460
489 }-
490 case SQLITE_CONFIG_GETPCACHE2: {
executed 11 times by 1 test: case 19:
Executed by:
  • Self test (438)
11
491 /* EVIDENCE-OF: R-22035-46182 The SQLITE_CONFIG_GETPCACHE2 option takes a-
492 ** single argument which is a pointer to an sqlite3_pcache_methods2-
493 ** object. SQLite copies of the current page cache implementation into-
494 ** that object. */-
495 if( sqlite3GlobalConfig.pcache2.xInit==0 ){
sqlite3Config.pcache2.xInit==0Description
TRUEnever evaluated
FALSEevaluated 11 times by 1 test
Evaluated by:
  • Self test (438)
0-11
496 sqlite3PCacheSetDefault();-
497 }
never executed: end of block
0
498 *va_arg(ap, sqlite3_pcache_methods2*) = sqlite3GlobalConfig.pcache2;-
499 break;
executed 11 times by 1 test: break;
Executed by:
  • Self test (438)
11
500 }-
501-
502/* EVIDENCE-OF: R-06626-12911 The SQLITE_CONFIG_HEAP option is only-
503** available if SQLite is compiled with either SQLITE_ENABLE_MEMSYS3 or-
504** SQLITE_ENABLE_MEMSYS5 and returns SQLITE_ERROR if invoked otherwise. */-
505#if defined(SQLITE_ENABLE_MEMSYS3) || defined(SQLITE_ENABLE_MEMSYS5)-
506 case SQLITE_CONFIG_HEAP: {-
507 /* EVIDENCE-OF: R-19854-42126 There are three arguments to-
508 ** SQLITE_CONFIG_HEAP: An 8-byte aligned pointer to the memory, the-
509 ** number of bytes in the memory buffer, and the minimum allocation size.-
510 */-
511 sqlite3GlobalConfig.pHeap = va_arg(ap, void*);-
512 sqlite3GlobalConfig.nHeap = va_arg(ap, int);-
513 sqlite3GlobalConfig.mnReq = va_arg(ap, int);-
514-
515 if( sqlite3GlobalConfig.mnReq<1 ){-
516 sqlite3GlobalConfig.mnReq = 1;-
517 }else if( sqlite3GlobalConfig.mnReq>(1<<12) ){-
518 /* cap min request size at 2^12 */-
519 sqlite3GlobalConfig.mnReq = (1<<12);-
520 }-
521-
522 if( sqlite3GlobalConfig.pHeap==0 ){-
523 /* EVIDENCE-OF: R-49920-60189 If the first pointer (the memory pointer)-
524 ** is NULL, then SQLite reverts to using its default memory allocator-
525 ** (the system malloc() implementation), undoing any prior invocation of-
526 ** SQLITE_CONFIG_MALLOC.-
527 **-
528 ** Setting sqlite3GlobalConfig.m to all zeros will cause malloc to-
529 ** revert to its default implementation when sqlite3_initialize() is run-
530 */-
531 memset(&sqlite3GlobalConfig.m, 0, sizeof(sqlite3GlobalConfig.m));-
532 }else{-
533 /* EVIDENCE-OF: R-61006-08918 If the memory pointer is not NULL then the-
534 ** alternative memory allocator is engaged to handle all of SQLites-
535 ** memory allocation needs. */-
536#ifdef SQLITE_ENABLE_MEMSYS3-
537 sqlite3GlobalConfig.m = *sqlite3MemGetMemsys3();-
538#endif-
539#ifdef SQLITE_ENABLE_MEMSYS5-
540 sqlite3GlobalConfig.m = *sqlite3MemGetMemsys5();-
541#endif-
542 }-
543 break;-
544 }-
545#endif-
546-
547 case SQLITE_CONFIG_LOOKASIDE: {
executed 2 times by 1 test: case 13:
Executed by:
  • Self test (438)
2
548 sqlite3GlobalConfig.szLookaside = va_arg(ap, int);-
549 sqlite3GlobalConfig.nLookaside = va_arg(ap, int);-
550 break;
executed 2 times by 1 test: break;
Executed by:
  • Self test (438)
2
551 }-
552 -
553 /* Record a pointer to the logger function and its first argument.-
554 ** The default is NULL. Logging is disabled if the function pointer is-
555 ** NULL.-
556 */-
557 case SQLITE_CONFIG_LOG: {
executed 10 times by 1 test: case 16:
Executed by:
  • Self test (438)
10
558 /* MSVC is picky about pulling func ptrs from va lists.-
559 ** http://support.microsoft.com/kb/47961-
560 ** sqlite3GlobalConfig.xLog = va_arg(ap, void(*)(void*,int,const char*));-
561 */-
562 typedef void(*LOGFUNC_t)(void*,int,const char*);-
563 sqlite3GlobalConfig.xLog = va_arg(ap, LOGFUNC_t);-
564 sqlite3GlobalConfig.pLogArg = va_arg(ap, void*);-
565 break;
executed 10 times by 1 test: break;
Executed by:
  • Self test (438)
10
566 }-
567-
568 /* EVIDENCE-OF: R-55548-33817 The compile-time setting for URI filenames-
569 ** can be changed at start-time using the-
570 ** sqlite3_config(SQLITE_CONFIG_URI,1) or-
571 ** sqlite3_config(SQLITE_CONFIG_URI,0) configuration calls.-
572 */-
573 case SQLITE_CONFIG_URI: {
executed 23 times by 6 tests: case 17:
Executed by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (438)
23
574 /* EVIDENCE-OF: R-25451-61125 The SQLITE_CONFIG_URI option takes a single-
575 ** argument of type int. If non-zero, then URI handling is globally-
576 ** enabled. If the parameter is zero, then URI handling is globally-
577 ** disabled. */-
578 sqlite3GlobalConfig.bOpenUri = va_arg(ap, int);-
579 break;
executed 23 times by 6 tests: break;
Executed by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (438)
23
580 }-
581-
582 case SQLITE_CONFIG_COVERING_INDEX_SCAN: {
executed 2 times by 1 test: case 20:
Executed by:
  • Self test (438)
2
583 /* EVIDENCE-OF: R-36592-02772 The SQLITE_CONFIG_COVERING_INDEX_SCAN-
584 ** option takes a single integer argument which is interpreted as a-
585 ** boolean in order to enable or disable the use of covering indices for-
586 ** full table scans in the query optimizer. */-
587 sqlite3GlobalConfig.bUseCis = va_arg(ap, int);-
588 break;
executed 2 times by 1 test: break;
Executed by:
  • Self test (438)
2
589 }-
590-
591#ifdef SQLITE_ENABLE_SQLLOG-
592 case SQLITE_CONFIG_SQLLOG: {-
593 typedef void(*SQLLOGFUNC_t)(void*, sqlite3*, const char*, int);-
594 sqlite3GlobalConfig.xSqllog = va_arg(ap, SQLLOGFUNC_t);-
595 sqlite3GlobalConfig.pSqllogArg = va_arg(ap, void *);-
596 break;-
597 }-
598#endif-
599-
600 case SQLITE_CONFIG_MMAP_SIZE: {
never executed: case 22:
0
601 /* EVIDENCE-OF: R-58063-38258 SQLITE_CONFIG_MMAP_SIZE takes two 64-bit-
602 ** integer (sqlite3_int64) values that are the default mmap size limit-
603 ** (the default setting for PRAGMA mmap_size) and the maximum allowed-
604 ** mmap size limit. */-
605 sqlite3_int64 szMmap = va_arg(ap, sqlite3_int64);-
606 sqlite3_int64 mxMmap = va_arg(ap, sqlite3_int64);-
607 /* EVIDENCE-OF: R-53367-43190 If either argument to this option is-
608 ** negative, then that argument is changed to its compile-time default.-
609 **-
610 ** EVIDENCE-OF: R-34993-45031 The maximum allowed mmap size will be-
611 ** silently truncated if necessary so that it does not exceed the-
612 ** compile-time maximum mmap size set by the SQLITE_MAX_MMAP_SIZE-
613 ** compile-time option.-
614 */-
615 if( mxMmap<0 || mxMmap>SQLITE_MAX_MMAP_SIZE ){
mxMmap<0Description
TRUEnever evaluated
FALSEnever evaluated
mxMmap>0x7fff0000Description
TRUEnever evaluated
FALSEnever evaluated
0
616 mxMmap = SQLITE_MAX_MMAP_SIZE;-
617 }
never executed: end of block
0
618 if( szMmap<0 ) szMmap = SQLITE_DEFAULT_MMAP_SIZE;
never executed: szMmap = 0;
szMmap<0Description
TRUEnever evaluated
FALSEnever evaluated
0
619 if( szMmap>mxMmap) szMmap = mxMmap;
never executed: szMmap = mxMmap;
szMmap>mxMmapDescription
TRUEnever evaluated
FALSEnever evaluated
0
620 sqlite3GlobalConfig.mxMmap = mxMmap;-
621 sqlite3GlobalConfig.szMmap = szMmap;-
622 break;
never executed: break;
0
623 }-
624-
625#if SQLITE_OS_WIN && defined(SQLITE_WIN32_MALLOC) /* IMP: R-04780-55815 */-
626 case SQLITE_CONFIG_WIN32_HEAPSIZE: {-
627 /* EVIDENCE-OF: R-34926-03360 SQLITE_CONFIG_WIN32_HEAPSIZE takes a 32-bit-
628 ** unsigned integer value that specifies the maximum size of the created-
629 ** heap. */-
630 sqlite3GlobalConfig.nHeap = va_arg(ap, int);-
631 break;-
632 }-
633#endif-
634-
635 case SQLITE_CONFIG_PMASZ: {
executed 2 times by 1 test: case 25:
Executed by:
  • Self test (438)
2
636 sqlite3GlobalConfig.szPma = va_arg(ap, unsigned int);-
637 break;
executed 2 times by 1 test: break;
Executed by:
  • Self test (438)
2
638 }-
639-
640 case SQLITE_CONFIG_STMTJRNL_SPILL: {
never executed: case 26:
0
641 sqlite3GlobalConfig.nStmtSpill = va_arg(ap, int);-
642 break;
never executed: break;
0
643 }-
644-
645#ifdef SQLITE_ENABLE_SORTER_REFERENCES-
646 case SQLITE_CONFIG_SORTERREF_SIZE: {-
647 int iVal = va_arg(ap, int);-
648 if( iVal<0 ){-
649 iVal = SQLITE_DEFAULT_SORTERREF_SIZE;-
650 }-
651 sqlite3GlobalConfig.szSorterRef = (u32)iVal;-
652 break;-
653 }-
654#endif /* SQLITE_ENABLE_SORTER_REFERENCES */-
655-
656 default: {
never executed: default:
0
657 rc = SQLITE_ERROR;-
658 break;
never executed: break;
0
659 }-
660 }-
661 va_end(ap);-
662 return rc;
executed 1056 times by 438 tests: return rc;
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
1056
663}-
664-
665/*-
666** Set up the lookaside buffers for a database connection.-
667** Return SQLITE_OK on success. -
668** If lookaside is already active, return SQLITE_BUSY.-
669**-
670** The sz parameter is the number of bytes in each lookaside slot.-
671** The cnt parameter is the number of slots. If pStart is NULL the-
672** space for the lookaside memory is obtained from sqlite3_malloc().-
673** If pStart is not NULL then it is sz*cnt bytes of memory to use for-
674** the lookaside memory.-
675*/-
676static int setupLookaside(sqlite3 *db, void *pBuf, int sz, int cnt){-
677#ifndef SQLITE_OMIT_LOOKASIDE-
678 void *pStart;-
679 -
680 if( sqlite3LookasideUsed(db,0)>0 ){
sqlite3LookasideUsed(db,0)>0Description
TRUEnever evaluated
FALSEevaluated 34059 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
0-34059
681 return SQLITE_BUSY;
never executed: return 5;
0
682 }-
683 /* Free any existing lookaside buffer for this handle before-
684 ** allocating a new one so we don't have to have space for -
685 ** both at the same time.-
686 */-
687 if( db->lookaside.bMalloced ){
db->lookaside.bMallocedDescription
TRUEevaluated 2470 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 31589 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
2470-31589
688 sqlite3_free(db->lookaside.pStart);-
689 }
executed 2470 times by 1 test: end of block
Executed by:
  • Self test (438)
2470
690 /* The size of a lookaside slot after ROUNDDOWN8 needs to be larger-
691 ** than a pointer to be useful.-
692 */-
693 sz = ROUNDDOWN8(sz); /* IMP: R-33038-09382 */-
694 if( sz<=(int)sizeof(LookasideSlot*) ) sz = 0;
executed 2480 times by 1 test: sz = 0;
Executed by:
  • Self test (438)
sz<=(int)sizeo...ookasideSlot*)Description
TRUEevaluated 2480 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 31579 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
2480-31579
695 if( cnt<0 ) cnt = 0;
never executed: cnt = 0;
cnt<0Description
TRUEnever evaluated
FALSEevaluated 34059 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
0-34059
696 if( sz==0 || cnt==0 ){
sz==0Description
TRUEevaluated 2480 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 31579 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
cnt==0Description
TRUEnever evaluated
FALSEevaluated 31579 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
0-31579
697 sz = 0;-
698 pStart = 0;-
699 }else if( pBuf==0 ){
executed 2480 times by 1 test: end of block
Executed by:
  • Self test (438)
pBuf==0Description
TRUEevaluated 31579 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
FALSEnever evaluated
0-31579
700 sqlite3BeginBenignMalloc();-
701 pStart = sqlite3Malloc( sz*cnt ); /* IMP: R-61949-35727 */-
702 sqlite3EndBenignMalloc();-
703 if( pStart ) cnt = sqlite3MallocSize(pStart)/sz;
executed 31539 times by 438 tests: cnt = sqlite3MallocSize(pStart)/sz;
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
pStartDescription
TRUEevaluated 31539 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
FALSEevaluated 40 times by 1 test
Evaluated by:
  • Self test (438)
40-31539
704 }else{
executed 31579 times by 438 tests: end of block
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
31579
705 pStart = pBuf;-
706 }
never executed: end of block
0
707 db->lookaside.pStart = pStart;-
708 db->lookaside.pInit = 0;-
709 db->lookaside.pFree = 0;-
710 db->lookaside.sz = (u16)sz;-
711 if( pStart ){
pStartDescription
TRUEevaluated 31539 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
FALSEevaluated 2520 times by 1 test
Evaluated by:
  • Self test (438)
2520-31539
712 int i;-
713 LookasideSlot *p;-
714 assert( sz > (int)sizeof(LookasideSlot*) );-
715 db->lookaside.nSlot = cnt;-
716 p = (LookasideSlot*)pStart;-
717 for(i=cnt-1; i>=0; i--){
i>=0Description
TRUEevaluated 14214839 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
FALSEevaluated 31539 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
31539-14214839
718 p->pNext = db->lookaside.pInit;-
719 db->lookaside.pInit = p;-
720 p = (LookasideSlot*)&((u8*)p)[sz];-
721 }
executed 14214848 times by 438 tests: end of block
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
14214848
722 db->lookaside.pEnd = p;-
723 db->lookaside.bDisable = 0;-
724 db->lookaside.bMalloced = pBuf==0 ?1:0;
pBuf==0Description
TRUEevaluated 31539 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
FALSEnever evaluated
0-31539
725 }else{
executed 31539 times by 438 tests: end of block
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
31539
726 db->lookaside.pStart = db;-
727 db->lookaside.pEnd = db;-
728 db->lookaside.bDisable = 1;-
729 db->lookaside.bMalloced = 0;-
730 db->lookaside.nSlot = 0;-
731 }
executed 2520 times by 1 test: end of block
Executed by:
  • Self test (438)
2520
732#endif /* SQLITE_OMIT_LOOKASIDE */-
733 return SQLITE_OK;
executed 34059 times by 438 tests: return 0;
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
34059
734}-
735-
736/*-
737** Return the mutex associated with a database connection.-
738*/-
739sqlite3_mutex *sqlite3_db_mutex(sqlite3 *db){-
740#ifdef SQLITE_ENABLE_API_ARMOR-
741 if( !sqlite3SafetyCheckOk(db) ){-
742 (void)SQLITE_MISUSE_BKPT;-
743 return 0;-
744 }-
745#endif-
746 return db->mutex;
executed 4 times by 1 test: return db->mutex;
Executed by:
  • Self test (438)
4
747}-
748-
749/*-
750** Free up as much memory as we can from the given database-
751** connection.-
752*/-
753int sqlite3_db_release_memory(sqlite3 *db){-
754 int i;-
755-
756#ifdef SQLITE_ENABLE_API_ARMOR-
757 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;-
758#endif-
759 sqlite3_mutex_enter(db->mutex);-
760 sqlite3BtreeEnterAll(db);-
761 for(i=0; i<db->nDb; i++){
i<db->nDbDescription
TRUEevaluated 10 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 5 times by 1 test
Evaluated by:
  • Self test (438)
5-10
762 Btree *pBt = db->aDb[i].pBt;-
763 if( pBt ){
pBtDescription
TRUEevaluated 6 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 4 times by 1 test
Evaluated by:
  • Self test (438)
4-6
764 Pager *pPager = sqlite3BtreePager(pBt);-
765 sqlite3PagerShrink(pPager);-
766 }
executed 6 times by 1 test: end of block
Executed by:
  • Self test (438)
6
767 }
executed 10 times by 1 test: end of block
Executed by:
  • Self test (438)
10
768 sqlite3BtreeLeaveAll(db);-
769 sqlite3_mutex_leave(db->mutex);-
770 return SQLITE_OK;
executed 5 times by 1 test: return 0;
Executed by:
  • Self test (438)
5
771}-
772-
773/*-
774** Flush any dirty pages in the pager-cache for any attached database-
775** to disk.-
776*/-
777int sqlite3_db_cacheflush(sqlite3 *db){-
778 int i;-
779 int rc = SQLITE_OK;-
780 int bSeenBusy = 0;-
781-
782#ifdef SQLITE_ENABLE_API_ARMOR-
783 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;-
784#endif-
785 sqlite3_mutex_enter(db->mutex);-
786 sqlite3BtreeEnterAll(db);-
787 for(i=0; rc==SQLITE_OK && i<db->nDb; i++){
rc==0Description
TRUEevaluated 55 times by 1 test
Evaluated by:
  • Self test (438)
FALSEnever evaluated
i<db->nDbDescription
TRUEevaluated 38 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 17 times by 1 test
Evaluated by:
  • Self test (438)
0-55
788 Btree *pBt = db->aDb[i].pBt;-
789 if( pBt && sqlite3BtreeIsInTrans(pBt) ){
pBtDescription
TRUEevaluated 21 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 17 times by 1 test
Evaluated by:
  • Self test (438)
sqlite3BtreeIsInTrans(pBt)Description
TRUEevaluated 21 times by 1 test
Evaluated by:
  • Self test (438)
FALSEnever evaluated
0-21
790 Pager *pPager = sqlite3BtreePager(pBt);-
791 rc = sqlite3PagerFlush(pPager);-
792 if( rc==SQLITE_BUSY ){
rc==5Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 19 times by 1 test
Evaluated by:
  • Self test (438)
2-19
793 bSeenBusy = 1;-
794 rc = SQLITE_OK;-
795 }
executed 2 times by 1 test: end of block
Executed by:
  • Self test (438)
2
796 }
executed 21 times by 1 test: end of block
Executed by:
  • Self test (438)
21
797 }
executed 38 times by 1 test: end of block
Executed by:
  • Self test (438)
38
798 sqlite3BtreeLeaveAll(db);-
799 sqlite3_mutex_leave(db->mutex);-
800 return ((rc==SQLITE_OK && bSeenBusy) ? SQLITE_BUSY : rc);
executed 17 times by 1 test: return ((rc==0 && bSeenBusy) ? 5 : rc);
Executed by:
  • Self test (438)
rc==0Description
TRUEevaluated 17 times by 1 test
Evaluated by:
  • Self test (438)
FALSEnever evaluated
bSeenBusyDescription
TRUEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 15 times by 1 test
Evaluated by:
  • Self test (438)
0-17
801}-
802-
803/*-
804** Configuration settings for an individual database connection-
805*/-
806int sqlite3_db_config(sqlite3 *db, int op, ...){-
807 va_list ap;-
808 int rc;-
809 va_start(ap, op);-
810 switch( op ){-
811 case SQLITE_DBCONFIG_MAINDBNAME: {
executed 1 time by 1 test: case 1000:
Executed by:
  • Self test (438)
1
812 /* IMP: R-06824-28531 */-
813 /* IMP: R-36257-52125 */-
814 db->aDb[0].zDbSName = va_arg(ap,char*);-
815 rc = SQLITE_OK;-
816 break;
executed 1 time by 1 test: break;
Executed by:
  • Self test (438)
1
817 }-
818 case SQLITE_DBCONFIG_LOOKASIDE: {
executed 2475 times by 1 test: case 1001:
Executed by:
  • Self test (438)
2475
819 void *pBuf = va_arg(ap, void*); /* IMP: R-26835-10964 */-
820 int sz = va_arg(ap, int); /* IMP: R-47871-25994 */-
821 int cnt = va_arg(ap, int); /* IMP: R-04460-53386 */-
822 rc = setupLookaside(db, pBuf, sz, cnt);-
823 break;
executed 2475 times by 1 test: break;
Executed by:
  • Self test (438)
2475
824 }-
825 default: {
executed 41 times by 1 test: default:
Executed by:
  • Self test (438)
41
826 static const struct {-
827 int op; /* The opcode */-
828 u32 mask; /* Mask of the bit in sqlite3.flags to set/clear */-
829 } aFlagOp[] = {-
830 { SQLITE_DBCONFIG_ENABLE_FKEY, SQLITE_ForeignKeys },-
831 { SQLITE_DBCONFIG_ENABLE_TRIGGER, SQLITE_EnableTrigger },-
832 { SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER, SQLITE_Fts3Tokenizer },-
833 { SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION, SQLITE_LoadExtension },-
834 { SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE, SQLITE_NoCkptOnClose },-
835 { SQLITE_DBCONFIG_ENABLE_QPSG, SQLITE_EnableQPSG },-
836 { SQLITE_DBCONFIG_TRIGGER_EQP, SQLITE_TriggerEQP },-
837 { SQLITE_DBCONFIG_RESET_DATABASE, SQLITE_ResetDatabase },-
838 };-
839 unsigned int i;-
840 rc = SQLITE_ERROR; /* IMP: R-42790-23372 */-
841 for(i=0; i<ArraySize(aFlagOp); i++){
i<((int)(sizeo...(aFlagOp[0])))Description
TRUEevaluated 287 times by 1 test
Evaluated by:
  • Self test (438)
FALSEnever evaluated
0-287
842 if( aFlagOp[i].op==op ){
aFlagOp[i].op==opDescription
TRUEevaluated 41 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 246 times by 1 test
Evaluated by:
  • Self test (438)
41-246
843 int onoff = va_arg(ap, int);-
844 int *pRes = va_arg(ap, int*);-
845 u32 oldFlags = db->flags;-
846 if( onoff>0 ){
onoff>0Description
TRUEevaluated 33 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 8 times by 1 test
Evaluated by:
  • Self test (438)
8-33
847 db->flags |= aFlagOp[i].mask;-
848 }else if( onoff==0 ){
executed 33 times by 1 test: end of block
Executed by:
  • Self test (438)
onoff==0Description
TRUEevaluated 8 times by 1 test
Evaluated by:
  • Self test (438)
FALSEnever evaluated
0-33
849 db->flags &= ~aFlagOp[i].mask;-
850 }
executed 8 times by 1 test: end of block
Executed by:
  • Self test (438)
8
851 if( oldFlags!=db->flags ){
oldFlags!=db->flagsDescription
TRUEevaluated 41 times by 1 test
Evaluated by:
  • Self test (438)
FALSEnever evaluated
0-41
852 sqlite3ExpirePreparedStatements(db, 0);-
853 }
executed 41 times by 1 test: end of block
Executed by:
  • Self test (438)
41
854 if( pRes ){
pResDescription
TRUEevaluated 18 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 23 times by 1 test
Evaluated by:
  • Self test (438)
18-23
855 *pRes = (db->flags & aFlagOp[i].mask)!=0;-
856 }
executed 18 times by 1 test: end of block
Executed by:
  • Self test (438)
18
857 rc = SQLITE_OK;-
858 break;
executed 41 times by 1 test: break;
Executed by:
  • Self test (438)
41
859 }-
860 }
executed 246 times by 1 test: end of block
Executed by:
  • Self test (438)
246
861 break;
executed 41 times by 1 test: break;
Executed by:
  • Self test (438)
41
862 }-
863 }-
864 va_end(ap);-
865 return rc;
executed 2517 times by 1 test: return rc;
Executed by:
  • Self test (438)
2517
866}-
867-
868-
869/*-
870** Return true if the buffer z[0..n-1] contains all spaces.-
871*/-
872static int allSpaces(const char *z, int n){-
873 while( n>0 && z[n-1]==' ' ){ n--; }
executed 734 times by 1 test: end of block
Executed by:
  • Self test (438)
n>0Description
TRUEevaluated 776 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 303 times by 1 test
Evaluated by:
  • Self test (438)
z[n-1]==' 'Description
TRUEevaluated 734 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 42 times by 1 test
Evaluated by:
  • Self test (438)
42-776
874 return n==0;
executed 345 times by 1 test: return n==0;
Executed by:
  • Self test (438)
345
875}-
876-
877/*-
878** This is the default collating function named "BINARY" which is always-
879** available.-
880**-
881** If the padFlag argument is not NULL then space padding at the end-
882** of strings is ignored. This implements the RTRIM collation.-
883*/-
884static int binCollFunc(-
885 void *padFlag,-
886 int nKey1, const void *pKey1,-
887 int nKey2, const void *pKey2-
888){-
889 int rc, n;-
890 n = nKey1<nKey2 ? nKey1 : nKey2;
nKey1<nKey2Description
TRUEevaluated 1631726 times by 31 tests
Evaluated by:
  • Self test
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (42)
  • Self test (438)
  • Self test (44)
  • Self test (46)
  • Self test (47)
  • Self test (48)
  • Self test (57)
  • Self test (58)
  • Self test (72)
  • Self test (73)
  • Self test (91)
  • Self test (92)
  • Self test (93)
  • ...
FALSEevaluated 4582934 times by 31 tests
Evaluated by:
  • Self test
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (42)
  • Self test (438)
  • Self test (44)
  • Self test (46)
  • Self test (47)
  • Self test (48)
  • Self test (57)
  • Self test (58)
  • Self test (72)
  • Self test (73)
  • Self test (91)
  • Self test (92)
  • Self test (93)
  • ...
1631726-4582934
891 /* EVIDENCE-OF: R-65033-28449 The built-in BINARY collation compares-
892 ** strings byte by byte using the memcmp() function from the standard C-
893 ** library. */-
894 assert( pKey1 && pKey2 );-
895 rc = memcmp(pKey1, pKey2, n);-
896 if( rc==0 ){
rc==0Description
TRUEevaluated 238999 times by 31 tests
Evaluated by:
  • Self test
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (42)
  • Self test (438)
  • Self test (44)
  • Self test (46)
  • Self test (47)
  • Self test (48)
  • Self test (57)
  • Self test (58)
  • Self test (72)
  • Self test (73)
  • Self test (91)
  • Self test (92)
  • Self test (93)
  • ...
FALSEevaluated 5975661 times by 28 tests
Evaluated by:
  • Self test
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (438)
  • Self test (47)
  • Self test (48)
  • Self test (57)
  • Self test (58)
  • Self test (72)
  • Self test (73)
  • Self test (91)
  • Self test (92)
  • Self test (93)
  • Self test (94)
  • Self test (95)
  • Self test (96)
  • ...
238999-5975661
897 if( padFlag
padFlagDescription
TRUEevaluated 183 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 238816 times by 31 tests
Evaluated by:
  • Self test
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (42)
  • Self test (438)
  • Self test (44)
  • Self test (46)
  • Self test (47)
  • Self test (48)
  • Self test (57)
  • Self test (58)
  • Self test (72)
  • Self test (73)
  • Self test (91)
  • Self test (92)
  • Self test (93)
  • ...
183-238816
898 && allSpaces(((char*)pKey1)+n, nKey1-n)
allSpaces(((ch...1)+n, nKey1-n)Description
TRUEevaluated 162 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 21 times by 1 test
Evaluated by:
  • Self test (438)
21-162
899 && allSpaces(((char*)pKey2)+n, nKey2-n)
allSpaces(((ch...2)+n, nKey2-n)Description
TRUEevaluated 141 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 21 times by 1 test
Evaluated by:
  • Self test (438)
21-141
900 ){-
901 /* EVIDENCE-OF: R-31624-24737 RTRIM is like BINARY except that extra-
902 ** spaces at the end of either string do not change the result. In other-
903 ** words, strings will compare equal to one another as long as they-
904 ** differ only in the number of spaces at the end.-
905 */-
906 }else{
executed 141 times by 1 test: end of block
Executed by:
  • Self test (438)
141
907 rc = nKey1 - nKey2;-
908 }
executed 238858 times by 31 tests: end of block
Executed by:
  • Self test
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (42)
  • Self test (438)
  • Self test (44)
  • Self test (46)
  • Self test (47)
  • Self test (48)
  • Self test (57)
  • Self test (58)
  • Self test (72)
  • Self test (73)
  • Self test (91)
  • Self test (92)
  • Self test (93)
  • ...
238858
909 }-
910 return rc;
executed 6214660 times by 31 tests: return rc;
Executed by:
  • Self test
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (42)
  • Self test (438)
  • Self test (44)
  • Self test (46)
  • Self test (47)
  • Self test (48)
  • Self test (57)
  • Self test (58)
  • Self test (72)
  • Self test (73)
  • Self test (91)
  • Self test (92)
  • Self test (93)
  • ...
6214660
911}-
912-
913/*-
914** Return true if CollSeq is the default built-in BINARY.-
915*/-
916int sqlite3IsBinary(const CollSeq *p){-
917 assert( p==0 || p->xCmp!=binCollFunc || p->pUser!=0-
918 || strcmp(p->zName,"BINARY")==0 );-
919 return p==0 || (p->xCmp==binCollFunc && p->pUser==0);
executed 8425 times by 1 test: return p==0 || (p->xCmp==binCollFunc && p->pUser==0);
Executed by:
  • Self test (438)
p==0Description
TRUEevaluated 713 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 7712 times by 1 test
Evaluated by:
  • Self test (438)
p->xCmp==binCollFuncDescription
TRUEevaluated 7604 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 108 times by 1 test
Evaluated by:
  • Self test (438)
p->pUser==0Description
TRUEevaluated 7604 times by 1 test
Evaluated by:
  • Self test (438)
FALSEnever evaluated
0-8425
920}-
921-
922/*-
923** Another built-in collating sequence: NOCASE. -
924**-
925** This collating sequence is intended to be used for "case independent-
926** comparison". SQLite's knowledge of upper and lower case equivalents-
927** extends only to the 26 characters used in the English language.-
928**-
929** At the moment there is only a UTF-8 implementation.-
930*/-
931static int nocaseCollatingFunc(-
932 void *NotUsed,-
933 int nKey1, const void *pKey1,-
934 int nKey2, const void *pKey2-
935){-
936 int r = sqlite3StrNICmp(-
937 (const char *)pKey1, (const char *)pKey2, (nKey1<nKey2)?nKey1:nKey2);-
938 UNUSED_PARAMETER(NotUsed);-
939 if( 0==r ){
0==rDescription
TRUEevaluated 5347 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 10282 times by 1 test
Evaluated by:
  • Self test (438)
5347-10282
940 r = nKey1-nKey2;-
941 }
executed 5347 times by 1 test: end of block
Executed by:
  • Self test (438)
5347
942 return r;
executed 15629 times by 1 test: return r;
Executed by:
  • Self test (438)
15629
943}-
944-
945/*-
946** Return the ROWID of the most recent insert-
947*/-
948sqlite_int64 sqlite3_last_insert_rowid(sqlite3 *db){-
949#ifdef SQLITE_ENABLE_API_ARMOR-
950 if( !sqlite3SafetyCheckOk(db) ){-
951 (void)SQLITE_MISUSE_BKPT;-
952 return 0;-
953 }-
954#endif-
955 return db->lastRowid;
executed 2081 times by 1 test: return db->lastRowid;
Executed by:
  • Self test (438)
2081
956}-
957-
958/*-
959** Set the value returned by the sqlite3_last_insert_rowid() API function.-
960*/-
961void sqlite3_set_last_insert_rowid(sqlite3 *db, sqlite3_int64 iRowid){-
962#ifdef SQLITE_ENABLE_API_ARMOR-
963 if( !sqlite3SafetyCheckOk(db) ){-
964 (void)SQLITE_MISUSE_BKPT;-
965 return;-
966 }-
967#endif-
968 sqlite3_mutex_enter(db->mutex);-
969 db->lastRowid = iRowid;-
970 sqlite3_mutex_leave(db->mutex);-
971}
never executed: end of block
0
972-
973/*-
974** Return the number of changes in the most recent call to sqlite3_exec().-
975*/-
976int sqlite3_changes(sqlite3 *db){-
977#ifdef SQLITE_ENABLE_API_ARMOR-
978 if( !sqlite3SafetyCheckOk(db) ){-
979 (void)SQLITE_MISUSE_BKPT;-
980 return 0;-
981 }-
982#endif-
983 return db->nChange;
executed 170 times by 1 test: return db->nChange;
Executed by:
  • Self test (438)
170
984}-
985-
986/*-
987** Return the number of changes since the database handle was opened.-
988*/-
989int sqlite3_total_changes(sqlite3 *db){-
990#ifdef SQLITE_ENABLE_API_ARMOR-
991 if( !sqlite3SafetyCheckOk(db) ){-
992 (void)SQLITE_MISUSE_BKPT;-
993 return 0;-
994 }-
995#endif-
996 return db->nTotalChange;
executed 38 times by 1 test: return db->nTotalChange;
Executed by:
  • Self test (438)
38
997}-
998-
999/*-
1000** Close all open savepoints. This function only manipulates fields of the-
1001** database handle object, it does not close any savepoints that may be open-
1002** at the b-tree/pager level.-
1003*/-
1004void sqlite3CloseSavepoints(sqlite3 *db){-
1005 while( db->pSavepoint ){
db->pSavepointDescription
TRUEevaluated 5970 times by 2 tests
Evaluated by:
  • Self test (438)
  • Self test (64)
FALSEevaluated 40853 times by 94 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (3)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • ...
5970-40853
1006 Savepoint *pTmp = db->pSavepoint;-
1007 db->pSavepoint = pTmp->pNext;-
1008 sqlite3DbFree(db, pTmp);-
1009 }
executed 5970 times by 2 tests: end of block
Executed by:
  • Self test (438)
  • Self test (64)
5970
1010 db->nSavepoint = 0;-
1011 db->nStatement = 0;-
1012 db->isTransactionSavepoint = 0;-
1013}
executed 40853 times by 94 tests: end of block
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (3)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • ...
40853
1014-
1015/*-
1016** Invoke the destructor function associated with FuncDef p, if any. Except,-
1017** if this is not the last copy of the function, do not invoke it. Multiple-
1018** copies of a single function are created when create_function() is called-
1019** with SQLITE_ANY as the encoding.-
1020*/-
1021static void functionDestroy(sqlite3 *db, FuncDef *p){-
1022 FuncDestructor *pDestructor = p->u.pDestructor;-
1023 if( pDestructor ){
pDestructorDescription
TRUEevaluated 31406 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
FALSEevaluated 1400599 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
31406-1400599
1024 pDestructor->nRef--;-
1025 if( pDestructor->nRef==0 ){
pDestructor->nRef==0Description
TRUEevaluated 31402 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
FALSEevaluated 4 times by 1 test
Evaluated by:
  • Self test (438)
4-31402
1026 pDestructor->xDestroy(pDestructor->pUserData);-
1027 sqlite3DbFree(db, pDestructor);-
1028 }
executed 31402 times by 66 tests: end of block
Executed by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
31402
1029 }
executed 31406 times by 66 tests: end of block
Executed by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
31406
1030}
executed 1432005 times by 438 tests: end of block
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
1432005
1031-
1032/*-
1033** Disconnect all sqlite3_vtab objects that belong to database connection-
1034** db. This is called when db is being closed.-
1035*/-
1036static void disconnectAllVtab(sqlite3 *db){-
1037#ifndef SQLITE_OMIT_VIRTUALTABLE-
1038 int i;-
1039 HashElem *p;-
1040 sqlite3BtreeEnterAll(db);-
1041 for(i=0; i<db->nDb; i++){
i<db->nDbDescription
TRUEevaluated 64910 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
FALSEevaluated 32155 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
32155-64910
1042 Schema *pSchema = db->aDb[i].pSchema;-
1043 if( pSchema ){
pSchemaDescription
TRUEevaluated 63422 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
FALSEevaluated 1488 times by 1 test
Evaluated by:
  • Self test (438)
1488-63422
1044 for(p=sqliteHashFirst(&pSchema->tblHash); p; p=sqliteHashNext(p)){
pDescription
TRUEevaluated 63710 times by 63 tests
Evaluated by:
  • Self test (101)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • Self test (438)
  • Self test (44)
  • ...
FALSEevaluated 63422 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
63422-63710
1045 Table *pTab = (Table *)sqliteHashData(p);-
1046 if( IsVirtual(pTab) ) sqlite3VtabDisconnect(db, pTab);
executed 996 times by 1 test: sqlite3VtabDisconnect(db, pTab);
Executed by:
  • Self test (438)
((pTab)->nModuleArg)Description
TRUEevaluated 996 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 62714 times by 63 tests
Evaluated by:
  • Self test (101)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • Self test (438)
  • Self test (44)
  • ...
996-62714
1047 }
executed 63710 times by 63 tests: end of block
Executed by:
  • Self test (101)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • Self test (438)
  • Self test (44)
  • ...
63710
1048 }
executed 63422 times by 66 tests: end of block
Executed by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
63422
1049 }
executed 64910 times by 66 tests: end of block
Executed by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
64910
1050 for(p=sqliteHashFirst(&db->aModule); p; p=sqliteHashNext(p)){
pDescription
TRUEevaluated 71411 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
FALSEevaluated 32155 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
32155-71411
1051 Module *pMod = (Module *)sqliteHashData(p);-
1052 if( pMod->pEpoTab ){
pMod->pEpoTabDescription
TRUEevaluated 8615 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 62796 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
8615-62796
1053 sqlite3VtabDisconnect(db, pMod->pEpoTab);-
1054 }
executed 8615 times by 1 test: end of block
Executed by:
  • Self test (438)
8615
1055 }
executed 71411 times by 66 tests: end of block
Executed by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
71411
1056 sqlite3VtabUnlockList(db);-
1057 sqlite3BtreeLeaveAll(db);-
1058#else-
1059 UNUSED_PARAMETER(db);-
1060#endif-
1061}
executed 32155 times by 66 tests: end of block
Executed by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
32155
1062-
1063/*-
1064** Return TRUE if database connection db has unfinalized prepared-
1065** statements or unfinished sqlite3_backup objects. -
1066*/-
1067static int connectionIsBusy(sqlite3 *db){-
1068 int j;-
1069 assert( sqlite3_mutex_held(db->mutex) );-
1070 if( db->pVdbe ) return 1;
executed 7 times by 1 test: return 1;
Executed by:
  • Self test (438)
db->pVdbeDescription
TRUEevaluated 7 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 64299 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
7-64299
1071 for(j=0; j<db->nDb; j++){
j<db->nDbDescription
TRUEevaluated 129798 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
FALSEevaluated 64299 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
64299-129798
1072 Btree *pBt = db->aDb[j].pBt;-
1073 if( pBt && sqlite3BtreeIsInBackup(pBt) ) return 1;
never executed: return 1;
pBtDescription
TRUEevaluated 68563 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
FALSEevaluated 61235 times by 55 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (438)
  • ...
sqlite3BtreeIsInBackup(pBt)Description
TRUEnever evaluated
FALSEevaluated 68563 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
0-68563
1074 }
executed 129798 times by 66 tests: end of block
Executed by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
129798
1075 return 0;
executed 64299 times by 66 tests: return 0;
Executed by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
64299
1076}-
1077-
1078/*-
1079** Close an existing SQLite database-
1080*/-
1081static int sqlite3Close(sqlite3 *db, int forceZombie){-
1082 if( !db ){
!dbDescription
TRUEevaluated 644 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 32160 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
644-32160
1083 /* EVIDENCE-OF: R-63257-11740 Calling sqlite3_close() or-
1084 ** sqlite3_close_v2() with a NULL pointer argument is a harmless no-op. */-
1085 return SQLITE_OK;
executed 644 times by 1 test: return 0;
Executed by:
  • Self test (438)
644
1086 }-
1087 if( !sqlite3SafetyCheckSickOrOk(db) ){
!sqlite3Safety...ckSickOrOk(db)Description
TRUEevaluated 5 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 32155 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
5-32155
1088 return SQLITE_MISUSE_BKPT;
executed 5 times by 1 test: return sqlite3MisuseError(1088);
Executed by:
  • Self test (438)
5
1089 }-
1090 sqlite3_mutex_enter(db->mutex);-
1091 if( db->mTrace & SQLITE_TRACE_CLOSE ){
db->mTrace & 0x08Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 32153 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
2-32153
1092 db->xTrace(SQLITE_TRACE_CLOSE, db->pTraceArg, db, 0);-
1093 }
executed 2 times by 1 test: end of block
Executed by:
  • Self test (438)
2
1094-
1095 /* Force xDisconnect calls on all virtual tables */-
1096 disconnectAllVtab(db);-
1097-
1098 /* If a transaction is open, the disconnectAllVtab() call above-
1099 ** will not have called the xDisconnect() method on any virtual-
1100 ** tables in the db->aVTrans[] array. The following sqlite3VtabRollback()-
1101 ** call will do so. We need to do this before the check for active-
1102 ** SQL statements below, as the v-table implementation may be storing-
1103 ** some prepared statements internally.-
1104 */-
1105 sqlite3VtabRollback(db);-
1106-
1107 /* Legacy behavior (sqlite3_close() behavior) is to return-
1108 ** SQLITE_BUSY if the connection can not be closed immediately.-
1109 */-
1110 if( !forceZombie && connectionIsBusy(db) ){
!forceZombieDescription
TRUEevaluated 32150 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
FALSEevaluated 5 times by 1 test
Evaluated by:
  • Self test (438)
connectionIsBusy(db)Description
TRUEevaluated 3 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 32147 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
3-32150
1111 sqlite3ErrorWithMsg(db, SQLITE_BUSY, "unable to close due to unfinalized "-
1112 "statements or unfinished backups");-
1113 sqlite3_mutex_leave(db->mutex);-
1114 return SQLITE_BUSY;
executed 3 times by 1 test: return 5;
Executed by:
  • Self test (438)
3
1115 }-
1116-
1117#ifdef SQLITE_ENABLE_SQLLOG-
1118 if( sqlite3GlobalConfig.xSqllog ){-
1119 /* Closing the handle. Fourth parameter is passed the value 2. */-
1120 sqlite3GlobalConfig.xSqllog(sqlite3GlobalConfig.pSqllogArg, db, 0, 2);-
1121 }-
1122#endif-
1123-
1124 /* Convert the connection into a zombie and then close it.-
1125 */-
1126 db->magic = SQLITE_MAGIC_ZOMBIE;-
1127 sqlite3LeaveMutexAndCloseZombie(db);-
1128 return SQLITE_OK;
executed 32152 times by 66 tests: return 0;
Executed by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
32152
1129}-
1130-
1131/*-
1132** Two variations on the public interface for closing a database-
1133** connection. The sqlite3_close() version returns SQLITE_BUSY and-
1134** leaves the connection option if there are unfinalized prepared-
1135** statements or unfinished sqlite3_backups. The sqlite3_close_v2()-
1136** version forces the connection to become a zombie if there are-
1137** unclosed resources, and arranges for deallocation when the last-
1138** prepare statement or sqlite3_backup closes.-
1139*/-
1140int sqlite3_close(sqlite3 *db){ return sqlite3Close(db,0); }
executed 32799 times by 66 tests: return sqlite3Close(db,0);
Executed by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
32799
1141int sqlite3_close_v2(sqlite3 *db){ return sqlite3Close(db,1); }
executed 5 times by 1 test: return sqlite3Close(db,1);
Executed by:
  • Self test (438)
5
1142-
1143-
1144/*-
1145** Close the mutex on database connection db.-
1146**-
1147** Furthermore, if database connection db is a zombie (meaning that there-
1148** has been a prior call to sqlite3_close(db) or sqlite3_close_v2(db)) and-
1149** every sqlite3_stmt has now been finalized and every sqlite3_backup has-
1150** finished, then free all resources.-
1151*/-
1152void sqlite3LeaveMutexAndCloseZombie(sqlite3 *db){-
1153 HashElem *i; /* Hash table iterator */-
1154 int j;-
1155-
1156 /* If there are outstanding sqlite3_stmt or sqlite3_backup objects-
1157 ** or if the connection has not yet been closed by sqlite3_close_v2(),-
1158 ** then just leave the mutex and return.-
1159 */-
1160 if( db->magic!=SQLITE_MAGIC_ZOMBIE || connectionIsBusy(db) ){
db->magic!=0x64cffc7fDescription
TRUEevaluated 377356 times by 436 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • Self test (121)
  • ...
FALSEevaluated 32156 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
connectionIsBusy(db)Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 32152 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
4-377356
1161 sqlite3_mutex_leave(db->mutex);-
1162 return;
executed 377360 times by 436 tests: return;
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • Self test (121)
  • ...
377360
1163 }-
1164-
1165 /* If we reach this point, it means that the database connection has-
1166 ** closed all sqlite3_stmt and sqlite3_backup objects and has been-
1167 ** passed to sqlite3_close (meaning that it is a zombie). Therefore,-
1168 ** go ahead and free all resources.-
1169 */-
1170-
1171 /* If a transaction is open, roll it back. This also ensures that if-
1172 ** any database schemas have been modified by an uncommitted transaction-
1173 ** they are reset. And that the required b-tree mutex is held to make-
1174 ** the pager rollback and schema reset an atomic operation. */-
1175 sqlite3RollbackAll(db, SQLITE_OK);-
1176-
1177 /* Free any outstanding Savepoint structures. */-
1178 sqlite3CloseSavepoints(db);-
1179-
1180 /* Close all database connections */-
1181 for(j=0; j<db->nDb; j++){
j<db->nDbDescription
TRUEevaluated 64904 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
FALSEevaluated 32152 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
32152-64904
1182 struct Db *pDb = &db->aDb[j];-
1183 if( pDb->pBt ){
pDb->pBtDescription
TRUEevaluated 34284 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
FALSEevaluated 30620 times by 55 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (438)
  • ...
30620-34284
1184 sqlite3BtreeClose(pDb->pBt);-
1185 pDb->pBt = 0;-
1186 if( j!=1 ){
j!=1Description
TRUEevaluated 32018 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
FALSEevaluated 2266 times by 12 tests
Evaluated by:
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
  • Self test (65)
  • Self test (66)
  • Self test (67)
  • Self test (68)
  • Self test (69)
  • Self test (70)
  • Self test (71)
  • Self test (74)
2266-32018
1187 pDb->pSchema = 0;-
1188 }
executed 32018 times by 66 tests: end of block
Executed by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
32018
1189 }
executed 34284 times by 66 tests: end of block
Executed by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
34284
1190 }
executed 64904 times by 66 tests: end of block
Executed by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
64904
1191 /* Clear the TEMP schema separately and last */-
1192 if( db->aDb[1].pSchema ){
db->aDb[1].pSchemaDescription
TRUEevaluated 31406 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
FALSEevaluated 746 times by 1 test
Evaluated by:
  • Self test (438)
746-31406
1193 sqlite3SchemaClear(db->aDb[1].pSchema);-
1194 }
executed 31406 times by 66 tests: end of block
Executed by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
31406
1195 sqlite3VtabUnlockList(db);-
1196-
1197 /* Free up the array of auxiliary databases */-
1198 sqlite3CollapseDatabaseArray(db);-
1199 assert( db->nDb<=2 );-
1200 assert( db->aDb==db->aDbStatic );-
1201-
1202 /* Tell the code in notify.c that the connection no longer holds any-
1203 ** locks and does not require any further unlock-notify callbacks.-
1204 */-
1205 sqlite3ConnectionClosed(db);-
1206-
1207 for(i=sqliteHashFirst(&db->aFunc); i; i=sqliteHashNext(i)){
iDescription
TRUEevaluated 621068 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
FALSEevaluated 32152 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
32152-621068
1208 FuncDef *pNext, *p;-
1209 p = sqliteHashData(i);-
1210 do{-
1211 functionDestroy(db, p);-
1212 pNext = p->pNext;-
1213 sqlite3DbFree(db, p);-
1214 p = pNext;-
1215 }while( p );
executed 711471 times by 66 tests: end of block
Executed by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
pDescription
TRUEevaluated 90403 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
FALSEevaluated 621068 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
90403-711471
1216 }
executed 621068 times by 66 tests: end of block
Executed by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
621068
1217 sqlite3HashClear(&db->aFunc);-
1218 for(i=sqliteHashFirst(&db->aCollSeq); i; i=sqliteHashNext(i)){
iDescription
TRUEevaluated 96423 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
FALSEevaluated 32152 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
32152-96423
1219 CollSeq *pColl = (CollSeq *)sqliteHashData(i);-
1220 /* Invoke any destructors registered for collation sequence user data. */-
1221 for(j=0; j<3; j++){
j<3Description
TRUEevaluated 289269 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
FALSEevaluated 96423 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
96423-289269
1222 if( pColl[j].xDel ){
pColl[j].xDelDescription
TRUEevaluated 1 time by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 289268 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
1-289268
1223 pColl[j].xDel(pColl[j].pUser);-
1224 }
executed 1 time by 1 test: end of block
Executed by:
  • Self test (438)
1
1225 }
executed 289269 times by 66 tests: end of block
Executed by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
289269
1226 sqlite3DbFree(db, pColl);-
1227 }
executed 96423 times by 66 tests: end of block
Executed by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
96423
1228 sqlite3HashClear(&db->aCollSeq);-
1229#ifndef SQLITE_OMIT_VIRTUALTABLE-
1230 for(i=sqliteHashFirst(&db->aModule); i; i=sqliteHashNext(i)){
iDescription
TRUEevaluated 71405 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
FALSEevaluated 32152 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
32152-71405
1231 Module *pMod = (Module *)sqliteHashData(i);-
1232 if( pMod->xDestroy ){
pMod->xDestroyDescription
TRUEevaluated 147 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 71258 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
147-71258
1233 pMod->xDestroy(pMod->pAux);-
1234 }
executed 147 times by 1 test: end of block
Executed by:
  • Self test (438)
147
1235 sqlite3VtabEponymousTableClear(db, pMod);-
1236 sqlite3DbFree(db, pMod);-
1237 }
executed 71405 times by 66 tests: end of block
Executed by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
71405
1238 sqlite3HashClear(&db->aModule);-
1239#endif-
1240-
1241 sqlite3Error(db, SQLITE_OK); /* Deallocates any cached error strings. */-
1242 sqlite3ValueFree(db->pErr);-
1243 sqlite3CloseExtensions(db);-
1244#if SQLITE_USER_AUTHENTICATION-
1245 sqlite3_free(db->auth.zAuthUser);-
1246 sqlite3_free(db->auth.zAuthPW);-
1247#endif-
1248-
1249 db->magic = SQLITE_MAGIC_ERROR;-
1250-
1251 /* The temp-database schema is allocated differently from the other schema-
1252 ** objects (using sqliteMalloc() directly, instead of sqlite3BtreeSchema()).-
1253 ** So it needs to be freed here. Todo: Why not roll the temp schema into-
1254 ** the same sqliteMalloc() as the one that allocates the database -
1255 ** structure?-
1256 */-
1257 sqlite3DbFree(db, db->aDb[1].pSchema);-
1258 sqlite3_mutex_leave(db->mutex);-
1259 db->magic = SQLITE_MAGIC_CLOSED;-
1260 sqlite3_mutex_free(db->mutex);-
1261 assert( sqlite3LookasideUsed(db,0)==0 );-
1262 if( db->lookaside.bMalloced ){
db->lookaside.bMallocedDescription
TRUEevaluated 28696 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
FALSEevaluated 3456 times by 1 test
Evaluated by:
  • Self test (438)
3456-28696
1263 sqlite3_free(db->lookaside.pStart);-
1264 }
executed 28696 times by 66 tests: end of block
Executed by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
28696
1265 sqlite3_free(db);-
1266}
executed 32152 times by 66 tests: end of block
Executed by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
32152
1267-
1268/*-
1269** Rollback all database files. If tripCode is not SQLITE_OK, then-
1270** any write cursors are invalidated ("tripped" - as in "tripping a circuit-
1271** breaker") and made to return tripCode if there are any further-
1272** attempts to use that cursor. Read cursors remain open and valid-
1273** but are "saved" in case the table pages are moved around.-
1274*/-
1275void sqlite3RollbackAll(sqlite3 *db, int tripCode){-
1276 int i;-
1277 int inTrans = 0;-
1278 int schemaChange;-
1279 assert( sqlite3_mutex_held(db->mutex) );-
1280 sqlite3BeginBenignMalloc();-
1281-
1282 /* Obtain all b-tree mutexes before making any calls to BtreeRollback(). -
1283 ** This is important in case the transaction being rolled back has-
1284 ** modified the database schema. If the b-tree mutexes are not taken-
1285 ** here, then another shared-cache connection might sneak in between-
1286 ** the database rollback and schema reset, which can cause false-
1287 ** corruption reports in some cases. */-
1288 sqlite3BtreeEnterAll(db);-
1289 schemaChange = (db->mDbFlags & DBFLAG_SchemaChange)!=0 && db->init.busy==0;
(db->mDbFlags & 0x0001)!=0Description
TRUEevaluated 1415 times by 2 tests
Evaluated by:
  • Self test (438)
  • Self test (61)
FALSEevaluated 40396 times by 76 tests
Evaluated by:
  • Self test (10)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • ...
db->init.busy==0Description
TRUEevaluated 1185 times by 2 tests
Evaluated by:
  • Self test (438)
  • Self test (61)
FALSEevaluated 230 times by 1 test
Evaluated by:
  • Self test (438)
230-40396
1290-
1291 for(i=0; i<db->nDb; i++){
i<db->nDbDescription
TRUEevaluated 85087 times by 76 tests
Evaluated by:
  • Self test (10)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • ...
FALSEevaluated 41807 times by 72 tests
Evaluated by:
  • Self test (10)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (14)
  • Self test (18)
  • Self test (22)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • ...
41807-85087
1292 Btree *p = db->aDb[i].pBt;-
1293 if( p ){
pDescription
TRUEevaluated 49712 times by 76 tests
Evaluated by:
  • Self test (10)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • ...
FALSEevaluated 35375 times by 61 tests
Evaluated by:
  • Self test (10)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (14)
  • Self test (18)
  • Self test (22)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • ...
35375-49712
1294 if( sqlite3BtreeIsInTrans(p) ){
sqlite3BtreeIsInTrans(p)Description
TRUEevaluated 4504 times by 16 tests
Evaluated by:
  • Self test (10)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (27)
  • Self test (39)
  • Self test (438)
  • Self test (47)
  • Self test (55)
  • Self test (6)
  • Self test (79)
  • Self test (8)
  • Self test (88)
FALSEevaluated 45208 times by 66 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • Self test (40)
  • Self test (41)
  • Self test (42)
  • Self test (43)
  • ...
4504-45208
1295 inTrans = 1;-
1296 }
executed 4504 times by 16 tests: end of block
Executed by:
  • Self test (10)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (27)
  • Self test (39)
  • Self test (438)
  • Self test (47)
  • Self test (55)
  • Self test (6)
  • Self test (79)
  • Self test (8)
  • Self test (88)
4504
1297 sqlite3BtreeRollback(p, tripCode, !schemaChange);-
1298 }
executed 49708 times by 72 tests: end of block
Executed by:
  • Self test (10)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (14)
  • Self test (18)
  • Self test (22)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • ...
49708
1299 }
executed 85083 times by 72 tests: end of block
Executed by:
  • Self test (10)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (14)
  • Self test (18)
  • Self test (22)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • ...
85083
1300 sqlite3VtabRollback(db);-
1301 sqlite3EndBenignMalloc();-
1302-
1303 if( schemaChange ){
schemaChangeDescription
TRUEevaluated 1185 times by 2 tests
Evaluated by:
  • Self test (438)
  • Self test (61)
FALSEevaluated 40622 times by 72 tests
Evaluated by:
  • Self test (10)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (14)
  • Self test (18)
  • Self test (22)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • ...
1185-40622
1304 sqlite3ExpirePreparedStatements(db, 0);-
1305 sqlite3ResetAllSchemasOfConnection(db);-
1306 }
executed 1185 times by 2 tests: end of block
Executed by:
  • Self test (438)
  • Self test (61)
1185
1307 sqlite3BtreeLeaveAll(db);-
1308-
1309 /* Any deferred constraint violations have now been resolved. */-
1310 db->nDeferredCons = 0;-
1311 db->nDeferredImmCons = 0;-
1312 db->flags &= ~SQLITE_DeferFKs;-
1313-
1314 /* If one has been configured, invoke the rollback-hook callback */-
1315 if( db->xRollbackCallback && (inTrans || !db->autoCommit) ){
db->xRollbackCallbackDescription
TRUEevaluated 4 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 41803 times by 72 tests
Evaluated by:
  • Self test (10)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (14)
  • Self test (18)
  • Self test (22)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • ...
inTransDescription
TRUEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
!db->autoCommitDescription
TRUEevaluated 1 time by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1 time by 1 test
Evaluated by:
  • Self test (438)
1-41803
1316 db->xRollbackCallback(db->pRollbackArg);-
1317 }
executed 3 times by 1 test: end of block
Executed by:
  • Self test (438)
3
1318}
executed 41807 times by 72 tests: end of block
Executed by:
  • Self test (10)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (14)
  • Self test (18)
  • Self test (22)
  • Self test (24)
  • Self test (25)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (37)
  • Self test (38)
  • Self test (39)
  • ...
41807
1319-
1320/*-
1321** Return a static string containing the name corresponding to the error code-
1322** specified in the argument.-
1323*/-
1324#if defined(SQLITE_NEED_ERR_NAME)-
1325const char *sqlite3ErrName(int rc){-
1326 const char *zName = 0;-
1327 int i, origRc = rc;-
1328 for(i=0; i<2 && zName==0; i++, rc &= 0xff){
i<2Description
TRUEevaluated 31920 times by 8 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (34)
  • Self test (438)
  • Self test (63)
FALSEevaluated 338 times by 1 test
Evaluated by:
  • Self test (438)
zName==0Description
TRUEevaluated 16298 times by 8 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (34)
  • Self test (438)
  • Self test (63)
FALSEevaluated 15622 times by 8 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (34)
  • Self test (438)
  • Self test (63)
338-31920
1329 switch( rc ){-
1330 case SQLITE_OK: zName = "SQLITE_OK"; break;
executed 8415 times by 8 tests: break;
Executed by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (34)
  • Self test (438)
  • Self test (63)
executed 8415 times by 8 tests: case 0:
Executed by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (34)
  • Self test (438)
  • Self test (63)
8415
1331 case SQLITE_ERROR: zName = "SQLITE_ERROR"; break;
executed 192 times by 1 test: break;
Executed by:
  • Self test (438)
executed 192 times by 1 test: case 1:
Executed by:
  • Self test (438)
192
1332 case SQLITE_ERROR_SNAPSHOT: zName = "SQLITE_ERROR_SNAPSHOT"; break;
never executed: break;
never executed: case (1 | (3<<8)):
0
1333 case SQLITE_INTERNAL: zName = "SQLITE_INTERNAL"; break;
executed 39 times by 1 test: break;
Executed by:
  • Self test (438)
executed 39 times by 1 test: case 2:
Executed by:
  • Self test (438)
39
1334 case SQLITE_PERM: zName = "SQLITE_PERM"; break;
executed 41 times by 1 test: break;
Executed by:
  • Self test (438)
executed 41 times by 1 test: case 3:
Executed by:
  • Self test (438)
41
1335 case SQLITE_ABORT: zName = "SQLITE_ABORT"; break;
executed 218 times by 1 test: break;
Executed by:
  • Self test (438)
executed 218 times by 1 test: case 4:
Executed by:
  • Self test (438)
218
1336 case SQLITE_ABORT_ROLLBACK: zName = "SQLITE_ABORT_ROLLBACK"; break;
never executed: break;
never executed: case (4 | (2<<8)):
0
1337 case SQLITE_BUSY: zName = "SQLITE_BUSY"; break;
executed 81 times by 1 test: break;
Executed by:
  • Self test (438)
executed 81 times by 1 test: case 5:
Executed by:
  • Self test (438)
81
1338 case SQLITE_BUSY_RECOVERY: zName = "SQLITE_BUSY_RECOVERY"; break;
never executed: break;
never executed: case (5 | (1<<8)):
0
1339 case SQLITE_BUSY_SNAPSHOT: zName = "SQLITE_BUSY_SNAPSHOT"; break;
executed 2 times by 1 test: break;
Executed by:
  • Self test (438)
executed 2 times by 1 test: case (5 | (2<<8)):
Executed by:
  • Self test (438)
2
1340 case SQLITE_LOCKED: zName = "SQLITE_LOCKED"; break;
executed 52 times by 1 test: break;
Executed by:
  • Self test (438)
executed 52 times by 1 test: case 6:
Executed by:
  • Self test (438)
52
1341 case SQLITE_LOCKED_SHAREDCACHE: zName = "SQLITE_LOCKED_SHAREDCACHE";break;
never executed: break;
never executed: case (6 | (1<<8)):
0
1342 case SQLITE_NOMEM: zName = "SQLITE_NOMEM"; break;
executed 212 times by 1 test: break;
Executed by:
  • Self test (438)
executed 212 times by 1 test: case 7:
Executed by:
  • Self test (438)
212
1343 case SQLITE_READONLY: zName = "SQLITE_READONLY"; break;
executed 41 times by 1 test: break;
Executed by:
  • Self test (438)
executed 41 times by 1 test: case 8:
Executed by:
  • Self test (438)
41
1344 case SQLITE_READONLY_RECOVERY: zName = "SQLITE_READONLY_RECOVERY"; break;
never executed: break;
never executed: case (8 | (1<<8)):
0
1345 case SQLITE_READONLY_CANTINIT: zName = "SQLITE_READONLY_CANTINIT"; break;
never executed: break;
never executed: case (8 | (5<<8)):
0
1346 case SQLITE_READONLY_ROLLBACK: zName = "SQLITE_READONLY_ROLLBACK"; break;
never executed: break;
never executed: case (8 | (3<<8)):
0
1347 case SQLITE_READONLY_DBMOVED: zName = "SQLITE_READONLY_DBMOVED"; break;
never executed: break;
never executed: case (8 | (4<<8)):
0
1348 case SQLITE_READONLY_DIRECTORY: zName = "SQLITE_READONLY_DIRECTORY";break;
never executed: break;
never executed: case (8 | (6<<8)):
0
1349 case SQLITE_INTERRUPT: zName = "SQLITE_INTERRUPT"; break;
executed 38 times by 1 test: break;
Executed by:
  • Self test (438)
executed 38 times by 1 test: case 9:
Executed by:
  • Self test (438)
38
1350 case SQLITE_IOERR: zName = "SQLITE_IOERR"; break;
executed 27 times by 1 test: break;
Executed by:
  • Self test (438)
executed 27 times by 1 test: case 10:
Executed by:
  • Self test (438)
27
1351 case SQLITE_IOERR_READ: zName = "SQLITE_IOERR_READ"; break;
executed 10 times by 1 test: break;
Executed by:
  • Self test (438)
executed 10 times by 1 test: case (10 | (1<<8)):
Executed by:
  • Self test (438)
10
1352 case SQLITE_IOERR_SHORT_READ: zName = "SQLITE_IOERR_SHORT_READ"; break;
never executed: break;
never executed: case (10 | (2<<8)):
0
1353 case SQLITE_IOERR_WRITE: zName = "SQLITE_IOERR_WRITE"; break;
executed 26 times by 1 test: break;
Executed by:
  • Self test (438)
executed 26 times by 1 test: case (10 | (3<<8)):
Executed by:
  • Self test (438)
26
1354 case SQLITE_IOERR_FSYNC: zName = "SQLITE_IOERR_FSYNC"; break;
executed 6 times by 1 test: break;
Executed by:
  • Self test (438)
executed 6 times by 1 test: case (10 | (4<<8)):
Executed by:
  • Self test (438)
6
1355 case SQLITE_IOERR_DIR_FSYNC: zName = "SQLITE_IOERR_DIR_FSYNC"; break;
never executed: break;
never executed: case (10 | (5<<8)):
0
1356 case SQLITE_IOERR_TRUNCATE: zName = "SQLITE_IOERR_TRUNCATE"; break;
never executed: break;
never executed: case (10 | (6<<8)):
0
1357 case SQLITE_IOERR_FSTAT: zName = "SQLITE_IOERR_FSTAT"; break;
executed 6 times by 1 test: break;
Executed by:
  • Self test (438)
executed 6 times by 1 test: case (10 | (7<<8)):
Executed by:
  • Self test (438)
6
1358 case SQLITE_IOERR_UNLOCK: zName = "SQLITE_IOERR_UNLOCK"; break;
never executed: break;
never executed: case (10 | (8<<8)):
0
1359 case SQLITE_IOERR_RDLOCK: zName = "SQLITE_IOERR_RDLOCK"; break;
never executed: break;
never executed: case (10 | (9<<8)):
0
1360 case SQLITE_IOERR_DELETE: zName = "SQLITE_IOERR_DELETE"; break;
executed 2 times by 1 test: break;
Executed by:
  • Self test (438)
executed 2 times by 1 test: case (10 | (10<<8)):
Executed by:
  • Self test (438)
2
1361 case SQLITE_IOERR_NOMEM: zName = "SQLITE_IOERR_NOMEM"; break;
executed 50 times by 1 test: break;
Executed by:
  • Self test (438)
executed 50 times by 1 test: case (10 | (12<<8)):
Executed by:
  • Self test (438)
50
1362 case SQLITE_IOERR_ACCESS: zName = "SQLITE_IOERR_ACCESS"; break;
executed 26 times by 1 test: break;
Executed by:
  • Self test (438)
executed 26 times by 1 test: case (10 | (13<<8)):
Executed by:
  • Self test (438)
26
1363 case SQLITE_IOERR_CHECKRESERVEDLOCK:
never executed: case (10 | (14<<8)):
0
1364 zName = "SQLITE_IOERR_CHECKRESERVEDLOCK"; break;
never executed: break;
0
1365 case SQLITE_IOERR_LOCK: zName = "SQLITE_IOERR_LOCK"; break;
never executed: break;
never executed: case (10 | (15<<8)):
0
1366 case SQLITE_IOERR_CLOSE: zName = "SQLITE_IOERR_CLOSE"; break;
never executed: break;
never executed: case (10 | (16<<8)):
0
1367 case SQLITE_IOERR_DIR_CLOSE: zName = "SQLITE_IOERR_DIR_CLOSE"; break;
never executed: break;
never executed: case (10 | (17<<8)):
0
1368 case SQLITE_IOERR_SHMOPEN: zName = "SQLITE_IOERR_SHMOPEN"; break;
never executed: break;
never executed: case (10 | (18<<8)):
0
1369 case SQLITE_IOERR_SHMSIZE: zName = "SQLITE_IOERR_SHMSIZE"; break;
never executed: break;
never executed: case (10 | (19<<8)):
0
1370 case SQLITE_IOERR_SHMLOCK: zName = "SQLITE_IOERR_SHMLOCK"; break;
never executed: break;
never executed: case (10 | (20<<8)):
0
1371 case SQLITE_IOERR_SHMMAP: zName = "SQLITE_IOERR_SHMMAP"; break;
never executed: break;
never executed: case (10 | (21<<8)):
0
1372 case SQLITE_IOERR_SEEK: zName = "SQLITE_IOERR_SEEK"; break;
never executed: break;
never executed: case (10 | (22<<8)):
0
1373 case SQLITE_IOERR_DELETE_NOENT: zName = "SQLITE_IOERR_DELETE_NOENT";break;
never executed: break;
never executed: case (10 | (23<<8)):
0
1374 case SQLITE_IOERR_MMAP: zName = "SQLITE_IOERR_MMAP"; break;
never executed: break;
never executed: case (10 | (24<<8)):
0
1375 case SQLITE_IOERR_GETTEMPPATH: zName = "SQLITE_IOERR_GETTEMPPATH"; break;
never executed: break;
never executed: case (10 | (25<<8)):
0
1376 case SQLITE_IOERR_CONVPATH: zName = "SQLITE_IOERR_CONVPATH"; break;
never executed: break;
never executed: case (10 | (26<<8)):
0
1377 case SQLITE_CORRUPT: zName = "SQLITE_CORRUPT"; break;
executed 42 times by 1 test: break;
Executed by:
  • Self test (438)
executed 42 times by 1 test: case 11:
Executed by:
  • Self test (438)
42
1378 case SQLITE_CORRUPT_VTAB: zName = "SQLITE_CORRUPT_VTAB"; break;
never executed: break;
never executed: case (11 | (1<<8)):
0
1379 case SQLITE_NOTFOUND: zName = "SQLITE_NOTFOUND"; break;
executed 25 times by 1 test: break;
Executed by:
  • Self test (438)
executed 25 times by 1 test: case 12:
Executed by:
  • Self test (438)
25
1380 case SQLITE_FULL: zName = "SQLITE_FULL"; break;
executed 35 times by 1 test: break;
Executed by:
  • Self test (438)
executed 35 times by 1 test: case 13:
Executed by:
  • Self test (438)
35
1381 case SQLITE_CANTOPEN: zName = "SQLITE_CANTOPEN"; break;
executed 39 times by 1 test: break;
Executed by:
  • Self test (438)
executed 39 times by 1 test: case 14:
Executed by:
  • Self test (438)
39
1382 case SQLITE_CANTOPEN_NOTEMPDIR: zName = "SQLITE_CANTOPEN_NOTEMPDIR";break;
never executed: break;
never executed: case (14 | (1<<8)):
0
1383 case SQLITE_CANTOPEN_ISDIR: zName = "SQLITE_CANTOPEN_ISDIR"; break;
never executed: break;
never executed: case (14 | (2<<8)):
0
1384 case SQLITE_CANTOPEN_FULLPATH: zName = "SQLITE_CANTOPEN_FULLPATH"; break;
never executed: break;
never executed: case (14 | (3<<8)):
0
1385 case SQLITE_CANTOPEN_CONVPATH: zName = "SQLITE_CANTOPEN_CONVPATH"; break;
never executed: break;
never executed: case (14 | (4<<8)):
0
1386 case SQLITE_PROTOCOL: zName = "SQLITE_PROTOCOL"; break;
executed 17 times by 1 test: break;
Executed by:
  • Self test (438)
executed 17 times by 1 test: case 15:
Executed by:
  • Self test (438)
17
1387 case SQLITE_EMPTY: zName = "SQLITE_EMPTY"; break;
executed 19 times by 1 test: break;
Executed by:
  • Self test (438)
executed 19 times by 1 test: case 16:
Executed by:
  • Self test (438)
19
1388 case SQLITE_SCHEMA: zName = "SQLITE_SCHEMA"; break;
executed 45 times by 1 test: break;
Executed by:
  • Self test (438)
executed 45 times by 1 test: case 17:
Executed by:
  • Self test (438)
45
1389 case SQLITE_TOOBIG: zName = "SQLITE_TOOBIG"; break;
executed 15 times by 1 test: break;
Executed by:
  • Self test (438)
executed 15 times by 1 test: case 18:
Executed by:
  • Self test (438)
15
1390 case SQLITE_CONSTRAINT: zName = "SQLITE_CONSTRAINT"; break;
executed 41 times by 1 test: break;
Executed by:
  • Self test (438)
executed 41 times by 1 test: case 19:
Executed by:
  • Self test (438)
41
1391 case SQLITE_CONSTRAINT_UNIQUE: zName = "SQLITE_CONSTRAINT_UNIQUE"; break;
executed 14 times by 1 test: break;
Executed by:
  • Self test (438)
executed 14 times by 1 test: case (19 | (8<<8)):
Executed by:
  • Self test (438)
14
1392 case SQLITE_CONSTRAINT_TRIGGER: zName = "SQLITE_CONSTRAINT_TRIGGER";break;
executed 7 times by 1 test: break;
Executed by:
  • Self test (438)
executed 7 times by 1 test: case (19 | (7<<8)):
Executed by:
  • Self test (438)
7
1393 case SQLITE_CONSTRAINT_FOREIGNKEY:
executed 16 times by 1 test: case (19 | (3<<8)):
Executed by:
  • Self test (438)
16
1394 zName = "SQLITE_CONSTRAINT_FOREIGNKEY"; break;
executed 16 times by 1 test: break;
Executed by:
  • Self test (438)
16
1395 case SQLITE_CONSTRAINT_CHECK: zName = "SQLITE_CONSTRAINT_CHECK"; break;
executed 2 times by 1 test: break;
Executed by:
  • Self test (438)
executed 2 times by 1 test: case (19 | (1<<8)):
Executed by:
  • Self test (438)
2
1396 case SQLITE_CONSTRAINT_PRIMARYKEY:
executed 3 times by 1 test: case (19 | (6<<8)):
Executed by:
  • Self test (438)
3
1397 zName = "SQLITE_CONSTRAINT_PRIMARYKEY"; break;
executed 3 times by 1 test: break;
Executed by:
  • Self test (438)
3
1398 case SQLITE_CONSTRAINT_NOTNULL: zName = "SQLITE_CONSTRAINT_NOTNULL";break;
executed 27 times by 1 test: break;
Executed by:
  • Self test (438)
executed 27 times by 1 test: case (19 | (5<<8)):
Executed by:
  • Self test (438)
27
1399 case SQLITE_CONSTRAINT_COMMITHOOK:
executed 1 time by 1 test: case (19 | (2<<8)):
Executed by:
  • Self test (438)
1
1400 zName = "SQLITE_CONSTRAINT_COMMITHOOK"; break;
executed 1 time by 1 test: break;
Executed by:
  • Self test (438)
1
1401 case SQLITE_CONSTRAINT_VTAB: zName = "SQLITE_CONSTRAINT_VTAB"; break;
never executed: break;
never executed: case (19 | (9<<8)):
0
1402 case SQLITE_CONSTRAINT_FUNCTION:
never executed: case (19 | (4<<8)):
0
1403 zName = "SQLITE_CONSTRAINT_FUNCTION"; break;
never executed: break;
0
1404 case SQLITE_CONSTRAINT_ROWID: zName = "SQLITE_CONSTRAINT_ROWID"; break;
executed 1 time by 1 test: break;
Executed by:
  • Self test (438)
executed 1 time by 1 test: case (19 |(10<<8)):
Executed by:
  • Self test (438)
1
1405 case SQLITE_MISMATCH: zName = "SQLITE_MISMATCH"; break;
executed 12 times by 1 test: break;
Executed by:
  • Self test (438)
executed 12 times by 1 test: case 20:
Executed by:
  • Self test (438)
12
1406 case SQLITE_MISUSE: zName = "SQLITE_MISUSE"; break;
executed 38 times by 1 test: break;
Executed by:
  • Self test (438)
executed 38 times by 1 test: case 21:
Executed by:
  • Self test (438)
38
1407 case SQLITE_NOLFS: zName = "SQLITE_NOLFS"; break;
executed 8 times by 1 test: break;
Executed by:
  • Self test (438)
executed 8 times by 1 test: case 22:
Executed by:
  • Self test (438)
8
1408 case SQLITE_AUTH: zName = "SQLITE_AUTH"; break;
executed 11 times by 1 test: break;
Executed by:
  • Self test (438)
executed 11 times by 1 test: case 23:
Executed by:
  • Self test (438)
11
1409 case SQLITE_FORMAT: zName = "SQLITE_FORMAT"; break;
executed 6 times by 1 test: break;
Executed by:
  • Self test (438)
executed 6 times by 1 test: case 24:
Executed by:
  • Self test (438)
6
1410 case SQLITE_RANGE: zName = "SQLITE_RANGE"; break;
executed 8 times by 1 test: break;
Executed by:
  • Self test (438)
executed 8 times by 1 test: case 25:
Executed by:
  • Self test (438)
8
1411 case SQLITE_NOTADB: zName = "SQLITE_NOTADB"; break;
executed 4 times by 1 test: break;
Executed by:
  • Self test (438)
executed 4 times by 1 test: case 26:
Executed by:
  • Self test (438)
4
1412 case SQLITE_ROW: zName = "SQLITE_ROW"; break;
executed 4926 times by 2 tests: break;
Executed by:
  • Self test (438)
  • Self test (63)
executed 4926 times by 2 tests: case 100:
Executed by:
  • Self test (438)
  • Self test (63)
4926
1413 case SQLITE_NOTICE: zName = "SQLITE_NOTICE"; break;
executed 2 times by 1 test: break;
Executed by:
  • Self test (438)
executed 2 times by 1 test: case 27:
Executed by:
  • Self test (438)
2
1414 case SQLITE_NOTICE_RECOVER_WAL: zName = "SQLITE_NOTICE_RECOVER_WAL";break;
executed 1 time by 1 test: break;
Executed by:
  • Self test (438)
executed 1 time by 1 test: case (27 | (1<<8)):
Executed by:
  • Self test (438)
1
1415 case SQLITE_NOTICE_RECOVER_ROLLBACK:
never executed: case (27 | (2<<8)):
0
1416 zName = "SQLITE_NOTICE_RECOVER_ROLLBACK"; break;
never executed: break;
0
1417 case SQLITE_WARNING: zName = "SQLITE_WARNING"; break;
executed 2 times by 1 test: break;
Executed by:
  • Self test (438)
executed 2 times by 1 test: case 28:
Executed by:
  • Self test (438)
2
1418 case SQLITE_WARNING_AUTOINDEX: zName = "SQLITE_WARNING_AUTOINDEX"; break;
executed 1 time by 1 test: break;
Executed by:
  • Self test (438)
executed 1 time by 1 test: case (28 | (1<<8)):
Executed by:
  • Self test (438)
1
1419 case SQLITE_DONE: zName = "SQLITE_DONE"; break;
executed 770 times by 1 test: break;
Executed by:
  • Self test (438)
executed 770 times by 1 test: case 101:
Executed by:
  • Self test (438)
770
1420 }-
1421 }
executed 16298 times by 8 tests: end of block
Executed by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (34)
  • Self test (438)
  • Self test (63)
16298
1422 if( zName==0 ){
zName==0Description
TRUEevaluated 338 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 15622 times by 8 tests
Evaluated by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (34)
  • Self test (438)
  • Self test (63)
338-15622
1423 static char zBuf[50];-
1424 sqlite3_snprintf(sizeof(zBuf), zBuf, "SQLITE_UNKNOWN(%d)", origRc);-
1425 zName = zBuf;-
1426 }
executed 338 times by 1 test: end of block
Executed by:
  • Self test (438)
338
1427 return zName;
executed 15960 times by 8 tests: return zName;
Executed by:
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (34)
  • Self test (438)
  • Self test (63)
15960
1428}-
1429#endif-
1430-
1431/*-
1432** Return a static string that describes the kind of error specified in the-
1433** argument.-
1434*/-
1435const char *sqlite3ErrStr(int rc){-
1436 static const char* const aMsg[] = {-
1437 /* SQLITE_OK */ "not an error",-
1438 /* SQLITE_ERROR */ "SQL logic error",-
1439 /* SQLITE_INTERNAL */ 0,-
1440 /* SQLITE_PERM */ "access permission denied",-
1441 /* SQLITE_ABORT */ "query aborted",-
1442 /* SQLITE_BUSY */ "database is locked",-
1443 /* SQLITE_LOCKED */ "database table is locked",-
1444 /* SQLITE_NOMEM */ "out of memory",-
1445 /* SQLITE_READONLY */ "attempt to write a readonly database",-
1446 /* SQLITE_INTERRUPT */ "interrupted",-
1447 /* SQLITE_IOERR */ "disk I/O error",-
1448 /* SQLITE_CORRUPT */ "database disk image is malformed",-
1449 /* SQLITE_NOTFOUND */ "unknown operation",-
1450 /* SQLITE_FULL */ "database or disk is full",-
1451 /* SQLITE_CANTOPEN */ "unable to open database file",-
1452 /* SQLITE_PROTOCOL */ "locking protocol",-
1453 /* SQLITE_EMPTY */ 0,-
1454 /* SQLITE_SCHEMA */ "database schema has changed",-
1455 /* SQLITE_TOOBIG */ "string or blob too big",-
1456 /* SQLITE_CONSTRAINT */ "constraint failed",-
1457 /* SQLITE_MISMATCH */ "datatype mismatch",-
1458 /* SQLITE_MISUSE */ "bad parameter or other API misuse",-
1459#ifdef SQLITE_DISABLE_LFS-
1460 /* SQLITE_NOLFS */ "large file support is disabled",-
1461#else-
1462 /* SQLITE_NOLFS */ 0,-
1463#endif-
1464 /* SQLITE_AUTH */ "authorization denied",-
1465 /* SQLITE_FORMAT */ 0,-
1466 /* SQLITE_RANGE */ "column index out of range",-
1467 /* SQLITE_NOTADB */ "file is not a database",-
1468 /* SQLITE_NOTICE */ "notification message",-
1469 /* SQLITE_WARNING */ "warning message",-
1470 };-
1471 const char *zErr = "unknown error";-
1472 switch( rc ){-
1473 case SQLITE_ABORT_ROLLBACK: {
executed 6 times by 1 test: case (4 | (2<<8)):
Executed by:
  • Self test (438)
6
1474 zErr = "abort due to ROLLBACK";-
1475 break;
executed 6 times by 1 test: break;
Executed by:
  • Self test (438)
6
1476 }-
1477 case SQLITE_ROW: {
never executed: case 100:
0
1478 zErr = "another row available";-
1479 break;
never executed: break;
0
1480 }-
1481 case SQLITE_DONE: {
never executed: case 101:
0
1482 zErr = "no more rows available";-
1483 break;
never executed: break;
0
1484 }-
1485 default: {
executed 15255 times by 23 tests: default:
Executed by:
  • Self test (30)
  • Self test (35)
  • Self test (36)
  • Self test (38)
  • Self test (39)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (50)
  • Self test (51)
  • Self test (52)
  • Self test (53)
  • Self test (55)
  • Self test (59)
  • Self test (61)
  • Self test (65)
  • Self test (66)
  • Self test (67)
  • Self test (68)
  • Self test (69)
  • Self test (70)
  • Self test (71)
  • Self test (74)
15255
1486 rc &= 0xff;-
1487 if( ALWAYS(rc>=0) && rc<ArraySize(aMsg) && aMsg[rc]!=0 ){
(rc>=0)Description
TRUEevaluated 15255 times by 23 tests
Evaluated by:
  • Self test (30)
  • Self test (35)
  • Self test (36)
  • Self test (38)
  • Self test (39)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (50)
  • Self test (51)
  • Self test (52)
  • Self test (53)
  • Self test (55)
  • Self test (59)
  • Self test (61)
  • Self test (65)
  • Self test (66)
  • Self test (67)
  • Self test (68)
  • Self test (69)
  • Self test (70)
  • Self test (71)
  • Self test (74)
FALSEnever evaluated
rc<((int)(size...eof(aMsg[0])))Description
TRUEevaluated 15251 times by 23 tests
Evaluated by:
  • Self test (30)
  • Self test (35)
  • Self test (36)
  • Self test (38)
  • Self test (39)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (50)
  • Self test (51)
  • Self test (52)
  • Self test (53)
  • Self test (55)
  • Self test (59)
  • Self test (61)
  • Self test (65)
  • Self test (66)
  • Self test (67)
  • Self test (68)
  • Self test (69)
  • Self test (70)
  • Self test (71)
  • Self test (74)
FALSEevaluated 4 times by 1 test
Evaluated by:
  • Self test (438)
aMsg[rc]!=0Description
TRUEevaluated 15250 times by 23 tests
Evaluated by:
  • Self test (30)
  • Self test (35)
  • Self test (36)
  • Self test (38)
  • Self test (39)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (50)
  • Self test (51)
  • Self test (52)
  • Self test (53)
  • Self test (55)
  • Self test (59)
  • Self test (61)
  • Self test (65)
  • Self test (66)
  • Self test (67)
  • Self test (68)
  • Self test (69)
  • Self test (70)
  • Self test (71)
  • Self test (74)
FALSEevaluated 1 time by 1 test
Evaluated by:
  • Self test (438)
0-15255
1488 zErr = aMsg[rc];-
1489 }
executed 15250 times by 23 tests: end of block
Executed by:
  • Self test (30)
  • Self test (35)
  • Self test (36)
  • Self test (38)
  • Self test (39)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (50)
  • Self test (51)
  • Self test (52)
  • Self test (53)
  • Self test (55)
  • Self test (59)
  • Self test (61)
  • Self test (65)
  • Self test (66)
  • Self test (67)
  • Self test (68)
  • Self test (69)
  • Self test (70)
  • Self test (71)
  • Self test (74)
15250
1490 break;
executed 15255 times by 23 tests: break;
Executed by:
  • Self test (30)
  • Self test (35)
  • Self test (36)
  • Self test (38)
  • Self test (39)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (50)
  • Self test (51)
  • Self test (52)
  • Self test (53)
  • Self test (55)
  • Self test (59)
  • Self test (61)
  • Self test (65)
  • Self test (66)
  • Self test (67)
  • Self test (68)
  • Self test (69)
  • Self test (70)
  • Self test (71)
  • Self test (74)
15255
1491 }-
1492 }-
1493 return zErr;
executed 15261 times by 23 tests: return zErr;
Executed by:
  • Self test (30)
  • Self test (35)
  • Self test (36)
  • Self test (38)
  • Self test (39)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (50)
  • Self test (51)
  • Self test (52)
  • Self test (53)
  • Self test (55)
  • Self test (59)
  • Self test (61)
  • Self test (65)
  • Self test (66)
  • Self test (67)
  • Self test (68)
  • Self test (69)
  • Self test (70)
  • Self test (71)
  • Self test (74)
15261
1494}-
1495-
1496/*-
1497** This routine implements a busy callback that sleeps and tries-
1498** again until a timeout value is reached. The timeout value is-
1499** an integer number of milliseconds passed in as the first-
1500** argument.-
1501**-
1502** Return non-zero to retry the lock. Return zero to stop trying-
1503** and cause SQLite to return SQLITE_BUSY.-
1504*/-
1505static int sqliteDefaultBusyCallback(-
1506 void *ptr, /* Database connection */-
1507 int count, /* Number of times table has been busy */-
1508 sqlite3_file *pFile /* The file on which the lock occurred */-
1509){-
1510#if SQLITE_OS_WIN || HAVE_USLEEP-
1511 /* This case is for systems that have support for sleeping for fractions of-
1512 ** a second. Examples: All windows systems, unix systems with usleep() */-
1513 static const u8 delays[] =-
1514 { 1, 2, 5, 10, 15, 20, 25, 25, 25, 50, 50, 100 };-
1515 static const u8 totals[] =-
1516 { 0, 1, 3, 8, 18, 33, 53, 78, 103, 128, 178, 228 };-
1517# define NDELAY ArraySize(delays)-
1518 sqlite3 *db = (sqlite3 *)ptr;-
1519 int tmout = db->busyTimeout;-
1520 int delay, prior;-
1521-
1522#ifdef SQLITE_ENABLE_SETLK_TIMEOUT-
1523 if( sqlite3OsFileControl(pFile,SQLITE_FCNTL_LOCK_TIMEOUT,&tmout)==SQLITE_OK ){-
1524 if( count ){-
1525 tmout = 0;-
1526 sqlite3OsFileControl(pFile, SQLITE_FCNTL_LOCK_TIMEOUT, &tmout);-
1527 return 0;-
1528 }else{-
1529 return 1;-
1530 }-
1531 }-
1532#else-
1533 UNUSED_PARAMETER(pFile);-
1534#endif-
1535 assert( count>=0 );-
1536 if( count < NDELAY ){
count < ((int)...f(delays[0])))Description
TRUEevaluated 26 times by 2 tests
Evaluated by:
  • Self test (31)
  • Self test (438)
FALSEevaluated 4 times by 1 test
Evaluated by:
  • Self test (438)
4-26
1537 delay = delays[count];-
1538 prior = totals[count];-
1539 }else{
executed 26 times by 2 tests: end of block
Executed by:
  • Self test (31)
  • Self test (438)
26
1540 delay = delays[NDELAY-1];-
1541 prior = totals[NDELAY-1] + delay*(count-(NDELAY-1));-
1542 }
executed 4 times by 1 test: end of block
Executed by:
  • Self test (438)
4
1543 if( prior + delay > tmout ){
prior + delay > tmoutDescription
TRUEevaluated 4 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 26 times by 2 tests
Evaluated by:
  • Self test (31)
  • Self test (438)
4-26
1544 delay = tmout - prior;-
1545 if( delay<=0 ) return 0;
executed 2 times by 1 test: return 0;
Executed by:
  • Self test (438)
delay<=0Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
2
1546 }
executed 2 times by 1 test: end of block
Executed by:
  • Self test (438)
2
1547 sqlite3OsSleep(db->pVfs, delay*1000);-
1548 return 1;
executed 28 times by 2 tests: return 1;
Executed by:
  • Self test (31)
  • Self test (438)
28
1549#else-
1550 /* This case for unix systems that lack usleep() support. Sleeping-
1551 ** must be done in increments of whole seconds */-
1552 sqlite3 *db = (sqlite3 *)ptr;-
1553 int tmout = ((sqlite3 *)ptr)->busyTimeout;-
1554 UNUSED_PARAMETER(pFile);-
1555 if( (count+1)*1000 > tmout ){-
1556 return 0;-
1557 }-
1558 sqlite3OsSleep(db->pVfs, 1000000);-
1559 return 1;-
1560#endif-
1561}-
1562-
1563/*-
1564** Invoke the given busy handler.-
1565**-
1566** This routine is called when an operation failed to acquire a-
1567** lock on VFS file pFile.-
1568**-
1569** If this routine returns non-zero, the lock is retried. If it-
1570** returns 0, the operation aborts with an SQLITE_BUSY error.-
1571*/-
1572int sqlite3InvokeBusyHandler(BusyHandler *p, sqlite3_file *pFile){-
1573 int rc;-
1574 if( p->xBusyHandler==0 || p->nBusy<0 ) return 0;
executed 1974 times by 11 tests: return 0;
Executed by:
  • Self test (30)
  • Self test (35)
  • Self test (36)
  • Self test (38)
  • Self test (438)
  • Self test (50)
  • Self test (51)
  • Self test (52)
  • Self test (55)
  • Self test (59)
  • Self test (61)
p->xBusyHandler==0Description
TRUEevaluated 500 times by 11 tests
Evaluated by:
  • Self test (30)
  • Self test (35)
  • Self test (36)
  • Self test (38)
  • Self test (438)
  • Self test (50)
  • Self test (51)
  • Self test (52)
  • Self test (55)
  • Self test (59)
  • Self test (61)
FALSEevaluated 3086 times by 2 tests
Evaluated by:
  • Self test (31)
  • Self test (438)
p->nBusy<0Description
TRUEevaluated 1474 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1612 times by 2 tests
Evaluated by:
  • Self test (31)
  • Self test (438)
500-3086
1575 if( p->bExtraFileArg ){
p->bExtraFileArgDescription
TRUEevaluated 30 times by 2 tests
Evaluated by:
  • Self test (31)
  • Self test (438)
FALSEevaluated 1582 times by 1 test
Evaluated by:
  • Self test (438)
30-1582
1576 /* Add an extra parameter with the pFile pointer to the end of the-
1577 ** callback argument list */-
1578 int (*xTra)(void*,int,sqlite3_file*);-
1579 xTra = (int(*)(void*,int,sqlite3_file*))p->xBusyHandler;-
1580 rc = xTra(p->pBusyArg, p->nBusy, pFile);-
1581 }else{
executed 30 times by 2 tests: end of block
Executed by:
  • Self test (31)
  • Self test (438)
30
1582 /* Legacy style busy handler callback */-
1583 rc = p->xBusyHandler(p->pBusyArg, p->nBusy);-
1584 }
executed 1582 times by 1 test: end of block
Executed by:
  • Self test (438)
1582
1585 if( rc==0 ){
rc==0Description
TRUEevaluated 110 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1502 times by 2 tests
Evaluated by:
  • Self test (31)
  • Self test (438)
110-1502
1586 p->nBusy = -1;-
1587 }else{
executed 110 times by 1 test: end of block
Executed by:
  • Self test (438)
110
1588 p->nBusy++;-
1589 }
executed 1502 times by 2 tests: end of block
Executed by:
  • Self test (31)
  • Self test (438)
1502
1590 return rc;
executed 1612 times by 2 tests: return rc;
Executed by:
  • Self test (31)
  • Self test (438)
1612
1591}-
1592-
1593/*-
1594** This routine sets the busy callback for an Sqlite database to the-
1595** given callback function with the given argument.-
1596*/-
1597int sqlite3_busy_handler(-
1598 sqlite3 *db,-
1599 int (*xBusy)(void*,int),-
1600 void *pArg-
1601){-
1602#ifdef SQLITE_ENABLE_API_ARMOR-
1603 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;-
1604#endif-
1605 sqlite3_mutex_enter(db->mutex);-
1606 db->busyHandler.xBusyHandler = xBusy;-
1607 db->busyHandler.pBusyArg = pArg;-
1608 db->busyHandler.nBusy = 0;-
1609 db->busyHandler.bExtraFileArg = 0;-
1610 db->busyTimeout = 0;-
1611 sqlite3_mutex_leave(db->mutex);-
1612 return SQLITE_OK;
executed 157 times by 2 tests: return 0;
Executed by:
  • Self test (31)
  • Self test (438)
157
1613}-
1614-
1615#ifndef SQLITE_OMIT_PROGRESS_CALLBACK-
1616/*-
1617** This routine sets the progress callback for an Sqlite database to the-
1618** given callback function with the given argument. The progress callback will-
1619** be invoked every nOps opcodes.-
1620*/-
1621void sqlite3_progress_handler(-
1622 sqlite3 *db, -
1623 int nOps,-
1624 int (*xProgress)(void*), -
1625 void *pArg-
1626){-
1627#ifdef SQLITE_ENABLE_API_ARMOR-
1628 if( !sqlite3SafetyCheckOk(db) ){-
1629 (void)SQLITE_MISUSE_BKPT;-
1630 return;-
1631 }-
1632#endif-
1633 sqlite3_mutex_enter(db->mutex);-
1634 if( nOps>0 ){
nOps>0Description
TRUEevaluated 16 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 7 times by 1 test
Evaluated by:
  • Self test (438)
7-16
1635 db->xProgress = xProgress;-
1636 db->nProgressOps = (unsigned)nOps;-
1637 db->pProgressArg = pArg;-
1638 }else{
executed 16 times by 1 test: end of block
Executed by:
  • Self test (438)
16
1639 db->xProgress = 0;-
1640 db->nProgressOps = 0;-
1641 db->pProgressArg = 0;-
1642 }
executed 7 times by 1 test: end of block
Executed by:
  • Self test (438)
7
1643 sqlite3_mutex_leave(db->mutex);-
1644}
executed 23 times by 1 test: end of block
Executed by:
  • Self test (438)
23
1645#endif-
1646-
1647-
1648/*-
1649** This routine installs a default busy handler that waits for the-
1650** specified number of milliseconds before returning 0.-
1651*/-
1652int sqlite3_busy_timeout(sqlite3 *db, int ms){-
1653#ifdef SQLITE_ENABLE_API_ARMOR-
1654 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;-
1655#endif-
1656 if( ms>0 ){
ms>0Description
TRUEevaluated 4 times by 2 tests
Evaluated by:
  • Self test (31)
  • Self test (438)
FALSEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
2-4
1657 sqlite3_busy_handler(db, (int(*)(void*,int))sqliteDefaultBusyCallback,-
1658 (void*)db);-
1659 db->busyTimeout = ms;-
1660 db->busyHandler.bExtraFileArg = 1;-
1661 }else{
executed 4 times by 2 tests: end of block
Executed by:
  • Self test (31)
  • Self test (438)
4
1662 sqlite3_busy_handler(db, 0, 0);-
1663 }
executed 2 times by 1 test: end of block
Executed by:
  • Self test (438)
2
1664 return SQLITE_OK;
executed 6 times by 2 tests: return 0;
Executed by:
  • Self test (31)
  • Self test (438)
6
1665}-
1666-
1667/*-
1668** Cause any pending operation to stop at its earliest opportunity.-
1669*/-
1670void sqlite3_interrupt(sqlite3 *db){-
1671#ifdef SQLITE_ENABLE_API_ARMOR-
1672 if( !sqlite3SafetyCheckOk(db) && (db==0 || db->magic!=SQLITE_MAGIC_ZOMBIE) ){-
1673 (void)SQLITE_MISUSE_BKPT;-
1674 return;-
1675 }-
1676#endif-
1677 db->u1.isInterrupted = 1;-
1678}
executed 2137 times by 1 test: end of block
Executed by:
  • Self test (438)
2137
1679-
1680-
1681/*-
1682** This function is exactly the same as sqlite3_create_function(), except-
1683** that it is designed to be called by internal code. The difference is-
1684** that if a malloc() fails in sqlite3_create_function(), an error code-
1685** is returned and the mallocFailed flag cleared. -
1686*/-
1687int sqlite3CreateFunc(-
1688 sqlite3 *db,-
1689 const char *zFunctionName,-
1690 int nArg,-
1691 int enc,-
1692 void *pUserData,-
1693 void (*xSFunc)(sqlite3_context*,int,sqlite3_value **),-
1694 void (*xStep)(sqlite3_context*,int,sqlite3_value **),-
1695 void (*xFinal)(sqlite3_context*),-
1696 void (*xValue)(sqlite3_context*),-
1697 void (*xInverse)(sqlite3_context*,int,sqlite3_value **),-
1698 FuncDestructor *pDestructor-
1699){-
1700 FuncDef *p;-
1701 int nName;-
1702 int extraFlags;-
1703-
1704 assert( sqlite3_mutex_held(db->mutex) );-
1705 assert( xValue==0 || xSFunc==0 );-
1706 if( zFunctionName==0 /* Must have a valid name */
zFunctionName==0Description
TRUEnever evaluated
FALSEevaluated 721702 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
0-721702
1707 || (xSFunc!=0 && xFinal!=0) /* Not both xSFunc and xFinal */
xSFunc!=0Description
TRUEevaluated 602443 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
FALSEevaluated 119259 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
xFinal!=0Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 602441 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
2-602443
1708 || ((xFinal==0)!=(xStep==0)) /* Both or neither of xFinal and xStep */
((xFinal==0)!=(xStep==0))Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 721694 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
6-721694
1709 || ((xValue==0)!=(xInverse==0)) /* Both or neither of xValue, xInverse */
((xValue==0)!=(xInverse==0))Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 721692 times by 438 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (102)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • Self test (11)
  • Self test (110)
  • Self test (111)
  • Self test (112)
  • Self test (113)
  • Self test (114)
  • Self test (115)
  • Self test (116)
  • Self test (117)
  • Self test (118)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • ...
2-721692
1710 || (nArg<-1 <