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 || nArg>SQLITE_MAX_FUNCTION_ARG)
nArg<-1Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 721691 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)
  • ...
nArg>127Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 721690 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)
  • ...
1-721691
1711 || (255<(nName = sqlite3Strlen30( zFunctionName)))
(255<(nName = ...unctionName)))Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 721688 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-721688
1712 ){-
1713 return SQLITE_MISUSE_BKPT;
executed 14 times by 1 test: return sqlite3MisuseError(1713);
Executed by:
  • Self test (438)
14
1714 }-
1715-
1716 assert( SQLITE_FUNC_CONSTANT==SQLITE_DETERMINISTIC );-
1717 extraFlags = enc & SQLITE_DETERMINISTIC;-
1718 enc &= (SQLITE_FUNC_ENCMASK|SQLITE_ANY);-
1719 -
1720#ifndef SQLITE_OMIT_UTF16-
1721 /* If SQLITE_UTF16 is specified as the encoding type, transform this-
1722 ** to one of SQLITE_UTF16LE or SQLITE_UTF16BE using the-
1723 ** SQLITE_UTF16NATIVE macro. SQLITE_UTF16 is not used internally.-
1724 **-
1725 ** If SQLITE_ANY is specified, add three versions of the function-
1726 ** to the hash table.-
1727 */-
1728 if( enc==SQLITE_UTF16 ){
enc==4Description
TRUEevaluated 14 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 721674 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)
  • ...
14-721674
1729 enc = SQLITE_UTF16NATIVE;-
1730 }else if( enc==SQLITE_ANY ){
executed 14 times by 1 test: end of block
Executed by:
  • Self test (438)
enc==5Description
TRUEevaluated 30937 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 690737 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)
  • ...
14-690737
1731 int rc;-
1732 rc = sqlite3CreateFunc(db, zFunctionName, nArg, SQLITE_UTF8|extraFlags,-
1733 pUserData, xSFunc, xStep, xFinal, xValue, xInverse, pDestructor);-
1734 if( rc==SQLITE_OK ){
rc==0Description
TRUEevaluated 30845 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 92 times by 1 test
Evaluated by:
  • Self test (438)
92-30845
1735 rc = sqlite3CreateFunc(db, zFunctionName, nArg, SQLITE_UTF16LE|extraFlags,-
1736 pUserData, xSFunc, xStep, xFinal, xValue, xInverse, pDestructor);-
1737 }
executed 30845 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)
  • ...
30845
1738 if( rc!=SQLITE_OK ){
rc!=0Description
TRUEevaluated 100 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 30837 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)
  • ...
100-30837
1739 return rc;
executed 100 times by 1 test: return rc;
Executed by:
  • Self test (438)
100
1740 }-
1741 enc = SQLITE_UTF16BE;-
1742 }
executed 30837 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)
  • ...
30837
1743#else-
1744 enc = SQLITE_UTF8;-
1745#endif-
1746 -
1747 /* Check if an existing function is being overridden or deleted. If so,-
1748 ** and there are active VMs, then return SQLITE_BUSY. If a function-
1749 ** is being overridden/deleted but there are no active VMs, allow the-
1750 ** operation to continue but invalidate all precompiled statements.-
1751 */-
1752 p = sqlite3FindFunction(db, zFunctionName, nArg, (u8)enc, 0);-
1753 if( p && (p->funcFlags & SQLITE_FUNC_ENCMASK)==(u32)enc && p->nArg==nArg ){
pDescription
TRUEevaluated 61822 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 659766 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)
  • ...
(p->funcFlags ...003)==(u32)encDescription
TRUEevaluated 134 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 61688 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)
  • ...
p->nArg==nArgDescription
TRUEevaluated 134 times by 1 test
Evaluated by:
  • Self test (438)
FALSEnever evaluated
0-659766
1754 if( db->nVdbeActive ){
db->nVdbeActiveDescription
TRUEevaluated 4 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 130 times by 1 test
Evaluated by:
  • Self test (438)
4-130
1755 sqlite3ErrorWithMsg(db, SQLITE_BUSY, -
1756 "unable to delete/modify user-function due to active statements");-
1757 assert( !db->mallocFailed );-
1758 return SQLITE_BUSY;
executed 4 times by 1 test: return 5;
Executed by:
  • Self test (438)
4
1759 }else{-
1760 sqlite3ExpirePreparedStatements(db, 0);-
1761 }
executed 130 times by 1 test: end of block
Executed by:
  • Self test (438)
130
1762 }-
1763-
1764 p = sqlite3FindFunction(db, zFunctionName, nArg, (u8)enc, 1);-
1765 assert(p || db->mallocFailed);-
1766 if( !p ){
!pDescription
TRUEevaluated 1050 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 720534 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)
  • ...
1050-720534
1767 return SQLITE_NOMEM_BKPT;
executed 1050 times by 1 test: return 7;
Executed by:
  • Self test (438)
1050
1768 }-
1769-
1770 /* If an older version of the function with a configured destructor is-
1771 ** being replaced invoke the destructor function here. */-
1772 functionDestroy(db, p);-
1773-
1774 if( pDestructor ){
pDestructorDescription
TRUEevaluated 31779 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 688755 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)
  • ...
31779-688755
1775 pDestructor->nRef++;-
1776 }
executed 31779 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)
  • ...
31779
1777 p->u.pDestructor = pDestructor;-
1778 p->funcFlags = (p->funcFlags & SQLITE_FUNC_ENCMASK) | extraFlags;-
1779 testcase( p->funcFlags & SQLITE_DETERMINISTIC );-
1780 p->xSFunc = xSFunc ? xSFunc : xStep;
xSFuncDescription
TRUEevaluated 601555 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 118979 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)
  • ...
118979-601555
1781 p->xFinalize = xFinal;-
1782 p->xValue = xValue;-
1783 p->xInverse = xInverse;-
1784 p->pUserData = pUserData;-
1785 p->nArg = (u16)nArg;-
1786 return SQLITE_OK;
executed 720534 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)
  • ...
720534
1787}-
1788-
1789/*-
1790** Worker function used by utf-8 APIs that create new functions:-
1791**-
1792** sqlite3_create_function()-
1793** sqlite3_create_function_v2()-
1794** sqlite3_create_window_function()-
1795*/-
1796static int createFunctionApi(-
1797 sqlite3 *db,-
1798 const char *zFunc,-
1799 int nArg,-
1800 int enc,-
1801 void *p,-
1802 void (*xSFunc)(sqlite3_context*,int,sqlite3_value**),-
1803 void (*xStep)(sqlite3_context*,int,sqlite3_value**),-
1804 void (*xFinal)(sqlite3_context*),-
1805 void (*xValue)(sqlite3_context*),-
1806 void (*xInverse)(sqlite3_context*,int,sqlite3_value**),-
1807 void(*xDestroy)(void*)-
1808){-
1809 int rc = SQLITE_ERROR;-
1810 FuncDestructor *pArg = 0;-
1811-
1812#ifdef SQLITE_ENABLE_API_ARMOR-
1813 if( !sqlite3SafetyCheckOk(db) ){-
1814 return SQLITE_MISUSE_BKPT;-
1815 }-
1816#endif-
1817 sqlite3_mutex_enter(db->mutex);-
1818 if( xDestroy ){
xDestroyDescription
TRUEevaluated 31800 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 628034 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)
  • ...
31800-628034
1819 pArg = (FuncDestructor *)sqlite3Malloc(sizeof(FuncDestructor));-
1820 if( !pArg ){
!pArgDescription
TRUEevaluated 8 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 31792 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)
  • ...
8-31792
1821 sqlite3OomFault(db);-
1822 xDestroy(p);-
1823 goto out;
executed 8 times by 1 test: goto out;
Executed by:
  • Self test (438)
8
1824 }-
1825 pArg->nRef = 0;-
1826 pArg->xDestroy = xDestroy;-
1827 pArg->pUserData = p;-
1828 }
executed 31792 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)
  • ...
31792
1829 rc = sqlite3CreateFunc(db, zFunc, nArg, enc, p, -
1830 xSFunc, xStep, xFinal, xValue, xInverse, pArg-
1831 );-
1832 if( pArg && pArg->nRef==0 ){
pArgDescription
TRUEevaluated 31792 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 628034 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)
  • ...
pArg->nRef==0Description
TRUEevaluated 17 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 31775 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)
  • ...
17-628034
1833 assert( rc!=SQLITE_OK );-
1834 xDestroy(p);-
1835 sqlite3_free(pArg);-
1836 }
executed 17 times by 1 test: end of block
Executed by:
  • Self test (438)
17
1837-
1838 out:
code before this statement executed 659826 times by 438 tests: out:
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)
  • ...
659826
1839 rc = sqlite3ApiExit(db, rc);-
1840 sqlite3_mutex_leave(db->mutex);-
1841 return rc;
executed 659834 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)
  • ...
659834
1842}-
1843-
1844/*-
1845** Create new user functions.-
1846*/-
1847int sqlite3_create_function(-
1848 sqlite3 *db,-
1849 const char *zFunc,-
1850 int nArg,-
1851 int enc,-
1852 void *p,-
1853 void (*xSFunc)(sqlite3_context*,int,sqlite3_value **),-
1854 void (*xStep)(sqlite3_context*,int,sqlite3_value **),-
1855 void (*xFinal)(sqlite3_context*)-
1856){-
1857 return createFunctionApi(db, zFunc, nArg, enc, p, xSFunc, xStep,
executed 628001 times by 438 tests: return createFunctionApi(db, zFunc, nArg, enc, p, xSFunc, xStep, xFinal, 0, 0, 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)
  • ...
628001
1858 xFinal, 0, 0, 0);
executed 628001 times by 438 tests: return createFunctionApi(db, zFunc, nArg, enc, p, xSFunc, xStep, xFinal, 0, 0, 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)
  • ...
628001
1859}-
1860int sqlite3_create_function_v2(-
1861 sqlite3 *db,-
1862 const char *zFunc,-
1863 int nArg,-
1864 int enc,-
1865 void *p,-
1866 void (*xSFunc)(sqlite3_context*,int,sqlite3_value **),-
1867 void (*xStep)(sqlite3_context*,int,sqlite3_value **),-
1868 void (*xFinal)(sqlite3_context*),-
1869 void (*xDestroy)(void *)-
1870){-
1871 return createFunctionApi(db, zFunc, nArg, enc, p, xSFunc, xStep,
executed 31826 times by 438 tests: return createFunctionApi(db, zFunc, nArg, enc, p, xSFunc, xStep, xFinal, 0, 0, xDestroy);
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)
  • ...
31826
1872 xFinal, 0, 0, xDestroy);
executed 31826 times by 438 tests: return createFunctionApi(db, zFunc, nArg, enc, p, xSFunc, xStep, xFinal, 0, 0, xDestroy);
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)
  • ...
31826
1873}-
1874int sqlite3_create_window_function(-
1875 sqlite3 *db,-
1876 const char *zFunc,-
1877 int nArg,-
1878 int enc,-
1879 void *p,-
1880 void (*xStep)(sqlite3_context*,int,sqlite3_value **),-
1881 void (*xFinal)(sqlite3_context*),-
1882 void (*xValue)(sqlite3_context*),-
1883 void (*xInverse)(sqlite3_context*,int,sqlite3_value **),-
1884 void (*xDestroy)(void *)-
1885){-
1886 return createFunctionApi(db, zFunc, nArg, enc, p, 0, xStep,
executed 7 times by 1 test: return createFunctionApi(db, zFunc, nArg, enc, p, 0, xStep, xFinal, xValue, xInverse, xDestroy);
Executed by:
  • Self test (438)
7
1887 xFinal, xValue, xInverse, xDestroy);
executed 7 times by 1 test: return createFunctionApi(db, zFunc, nArg, enc, p, 0, xStep, xFinal, xValue, xInverse, xDestroy);
Executed by:
  • Self test (438)
7
1888}-
1889-
1890#ifndef SQLITE_OMIT_UTF16-
1891int sqlite3_create_function16(-
1892 sqlite3 *db,-
1893 const void *zFunctionName,-
1894 int nArg,-
1895 int eTextRep,-
1896 void *p,-
1897 void (*xSFunc)(sqlite3_context*,int,sqlite3_value**),-
1898 void (*xStep)(sqlite3_context*,int,sqlite3_value**),-
1899 void (*xFinal)(sqlite3_context*)-
1900){-
1901 int rc;-
1902 char *zFunc8;-
1903-
1904#ifdef SQLITE_ENABLE_API_ARMOR-
1905 if( !sqlite3SafetyCheckOk(db) || zFunctionName==0 ) return SQLITE_MISUSE_BKPT;-
1906#endif-
1907 sqlite3_mutex_enter(db->mutex);-
1908 assert( !db->mallocFailed );-
1909 zFunc8 = sqlite3Utf16to8(db, zFunctionName, -1, SQLITE_UTF16NATIVE);-
1910 rc = sqlite3CreateFunc(db, zFunc8, nArg, eTextRep, p, xSFunc,xStep,xFinal,0,0,0);-
1911 sqlite3DbFree(db, zFunc8);-
1912 rc = sqlite3ApiExit(db, rc);-
1913 sqlite3_mutex_leave(db->mutex);-
1914 return rc;
executed 7 times by 1 test: return rc;
Executed by:
  • Self test (438)
7
1915}-
1916#endif-
1917-
1918-
1919/*-
1920** The following is the implementation of an SQL function that always-
1921** fails with an error message stating that the function is used in the-
1922** wrong context. The sqlite3_overload_function() API might construct-
1923** SQL function that use this routine so that the functions will exist-
1924** for name resolution but are actually overloaded by the xFindFunction-
1925** method of virtual tables.-
1926*/-
1927static void sqlite3InvalidFunction(-
1928 sqlite3_context *context, /* The function calling context */-
1929 int NotUsed, /* Number of arguments to the function */-
1930 sqlite3_value **NotUsed2 /* Value of each argument */-
1931){-
1932 const char *zName = (const char*)sqlite3_user_data(context);-
1933 char *zErr;-
1934 UNUSED_PARAMETER2(NotUsed, NotUsed2);-
1935 zErr = sqlite3_mprintf(-
1936 "unable to use function %s in the requested context", zName);-
1937 sqlite3_result_error(context, zErr, -1);-
1938 sqlite3_free(zErr);-
1939}
executed 6 times by 1 test: end of block
Executed by:
  • Self test (438)
6
1940-
1941/*-
1942** Declare that a function has been overloaded by a virtual table.-
1943**-
1944** If the function already exists as a regular global function, then-
1945** this routine is a no-op. If the function does not exist, then create-
1946** a new one that always throws a run-time error. -
1947**-
1948** When virtual tables intend to provide an overloaded function, they-
1949** should call this routine to make sure the global function exists.-
1950** A global function must exist in order for name resolution to work-
1951** properly.-
1952*/-
1953int sqlite3_overload_function(-
1954 sqlite3 *db,-
1955 const char *zName,-
1956 int nArg-
1957){-
1958 int rc;-
1959 char *zCopy;-
1960-
1961#ifdef SQLITE_ENABLE_API_ARMOR-
1962 if( !sqlite3SafetyCheckOk(db) || zName==0 || nArg<-2 ){-
1963 return SQLITE_MISUSE_BKPT;-
1964 }-
1965#endif-
1966 sqlite3_mutex_enter(db->mutex);-
1967 rc = sqlite3FindFunction(db, zName, nArg, SQLITE_UTF8, 0)!=0;-
1968 sqlite3_mutex_leave(db->mutex);-
1969 if( rc ) return SQLITE_OK;
executed 29735 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)
  • ...
rcDescription
TRUEevaluated 29735 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 31872 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)
  • ...
29735-31872
1970 zCopy = sqlite3_mprintf(zName);-
1971 if( zCopy==0 ) return SQLITE_NOMEM;
executed 96 times by 1 test: return 7;
Executed by:
  • Self test (438)
zCopy==0Description
TRUEevaluated 96 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 31776 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)
  • ...
96-31776
1972 return sqlite3_create_function_v2(db, zName, nArg, SQLITE_UTF8,
executed 31776 times by 438 tests: return sqlite3_create_function_v2(db, zName, nArg, 1, zCopy, sqlite3InvalidFunction, 0, 0, sqlite3_free);
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)
  • ...
31776
1973 zCopy, sqlite3InvalidFunction, 0, 0, sqlite3_free);
executed 31776 times by 438 tests: return sqlite3_create_function_v2(db, zName, nArg, 1, zCopy, sqlite3InvalidFunction, 0, 0, sqlite3_free);
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)
  • ...
31776
1974}-
1975-
1976#ifndef SQLITE_OMIT_TRACE-
1977/*-
1978** Register a trace function. The pArg from the previously registered trace-
1979** is returned. -
1980**-
1981** A NULL trace function means that no tracing is executes. A non-NULL-
1982** trace is a pointer to a function that is invoked at the start of each-
1983** SQL statement.-
1984*/-
1985#ifndef SQLITE_OMIT_DEPRECATED-
1986void *sqlite3_trace(sqlite3 *db, void(*xTrace)(void*,const char*), void *pArg){-
1987 void *pOld;-
1988-
1989#ifdef SQLITE_ENABLE_API_ARMOR-
1990 if( !sqlite3SafetyCheckOk(db) ){-
1991 (void)SQLITE_MISUSE_BKPT;-
1992 return 0;-
1993 }-
1994#endif-
1995 sqlite3_mutex_enter(db->mutex);-
1996 pOld = db->pTraceArg;-
1997 db->mTrace = xTrace ? SQLITE_TRACE_LEGACY : 0;
xTraceDescription
TRUEevaluated 9 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 3 times by 1 test
Evaluated by:
  • Self test (438)
3-9
1998 db->xTrace = (int(*)(u32,void*,void*,void*))xTrace;-
1999 db->pTraceArg = pArg;-
2000 sqlite3_mutex_leave(db->mutex);-
2001 return pOld;
executed 12 times by 1 test: return pOld;
Executed by:
  • Self test (438)
12
2002}-
2003#endif /* SQLITE_OMIT_DEPRECATED */-
2004-
2005/* Register a trace callback using the version-2 interface.-
2006*/-
2007int sqlite3_trace_v2(-
2008 sqlite3 *db, /* Trace this connection */-
2009 unsigned mTrace, /* Mask of events to be traced */-
2010 int(*xTrace)(unsigned,void*,void*,void*), /* Callback to invoke */-
2011 void *pArg /* Context */-
2012){-
2013#ifdef SQLITE_ENABLE_API_ARMOR-
2014 if( !sqlite3SafetyCheckOk(db) ){-
2015 return SQLITE_MISUSE_BKPT;-
2016 }-
2017#endif-
2018 sqlite3_mutex_enter(db->mutex);-
2019 if( mTrace==0 ) xTrace = 0;
executed 2 times by 1 test: xTrace = 0;
Executed by:
  • Self test (438)
mTrace==0Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 16 times by 1 test
Evaluated by:
  • Self test (438)
2-16
2020 if( xTrace==0 ) mTrace = 0;
executed 2 times by 1 test: mTrace = 0;
Executed by:
  • Self test (438)
xTrace==0Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 16 times by 1 test
Evaluated by:
  • Self test (438)
2-16
2021 db->mTrace = mTrace;-
2022 db->xTrace = xTrace;-
2023 db->pTraceArg = pArg;-
2024 sqlite3_mutex_leave(db->mutex);-
2025 return SQLITE_OK;
executed 18 times by 1 test: return 0;
Executed by:
  • Self test (438)
18
2026}-
2027-
2028#ifndef SQLITE_OMIT_DEPRECATED-
2029/*-
2030** Register a profile function. The pArg from the previously registered -
2031** profile function is returned. -
2032**-
2033** A NULL profile function means that no profiling is executes. A non-NULL-
2034** profile is a pointer to a function that is invoked at the conclusion of-
2035** each SQL statement that is run.-
2036*/-
2037void *sqlite3_profile(-
2038 sqlite3 *db,-
2039 void (*xProfile)(void*,const char*,sqlite_uint64),-
2040 void *pArg-
2041){-
2042 void *pOld;-
2043-
2044#ifdef SQLITE_ENABLE_API_ARMOR-
2045 if( !sqlite3SafetyCheckOk(db) ){-
2046 (void)SQLITE_MISUSE_BKPT;-
2047 return 0;-
2048 }-
2049#endif-
2050 sqlite3_mutex_enter(db->mutex);-
2051 pOld = db->pProfileArg;-
2052 db->xProfile = xProfile;-
2053 db->pProfileArg = pArg;-
2054 sqlite3_mutex_leave(db->mutex);-
2055 return pOld;
executed 3 times by 1 test: return pOld;
Executed by:
  • Self test (438)
3
2056}-
2057#endif /* SQLITE_OMIT_DEPRECATED */-
2058#endif /* SQLITE_OMIT_TRACE */-
2059-
2060/*-
2061** Register a function to be invoked when a transaction commits.-
2062** If the invoked function returns non-zero, then the commit becomes a-
2063** rollback.-
2064*/-
2065void *sqlite3_commit_hook(-
2066 sqlite3 *db, /* Attach the hook to this database */-
2067 int (*xCallback)(void*), /* Function to invoke on each commit */-
2068 void *pArg /* Argument to the function */-
2069){-
2070 void *pOld;-
2071-
2072#ifdef SQLITE_ENABLE_API_ARMOR-
2073 if( !sqlite3SafetyCheckOk(db) ){-
2074 (void)SQLITE_MISUSE_BKPT;-
2075 return 0;-
2076 }-
2077#endif-
2078 sqlite3_mutex_enter(db->mutex);-
2079 pOld = db->pCommitArg;-
2080 db->xCommitCallback = xCallback;-
2081 db->pCommitArg = pArg;-
2082 sqlite3_mutex_leave(db->mutex);-
2083 return pOld;
executed 4 times by 1 test: return pOld;
Executed by:
  • Self test (438)
4
2084}-
2085-
2086/*-
2087** Register a callback to be invoked each time a row is updated,-
2088** inserted or deleted using this database connection.-
2089*/-
2090void *sqlite3_update_hook(-
2091 sqlite3 *db, /* Attach the hook to this database */-
2092 void (*xCallback)(void*,int,char const *,char const *,sqlite_int64),-
2093 void *pArg /* Argument to the function */-
2094){-
2095 void *pRet;-
2096-
2097#ifdef SQLITE_ENABLE_API_ARMOR-
2098 if( !sqlite3SafetyCheckOk(db) ){-
2099 (void)SQLITE_MISUSE_BKPT;-
2100 return 0;-
2101 }-
2102#endif-
2103 sqlite3_mutex_enter(db->mutex);-
2104 pRet = db->pUpdateArg;-
2105 db->xUpdateCallback = xCallback;-
2106 db->pUpdateArg = pArg;-
2107 sqlite3_mutex_leave(db->mutex);-
2108 return pRet;
executed 15 times by 1 test: return pRet;
Executed by:
  • Self test (438)
15
2109}-
2110-
2111/*-
2112** Register a callback to be invoked each time a transaction is rolled-
2113** back by this database connection.-
2114*/-
2115void *sqlite3_rollback_hook(-
2116 sqlite3 *db, /* Attach the hook to this database */-
2117 void (*xCallback)(void*), /* Callback function */-
2118 void *pArg /* Argument to the function */-
2119){-
2120 void *pRet;-
2121-
2122#ifdef SQLITE_ENABLE_API_ARMOR-
2123 if( !sqlite3SafetyCheckOk(db) ){-
2124 (void)SQLITE_MISUSE_BKPT;-
2125 return 0;-
2126 }-
2127#endif-
2128 sqlite3_mutex_enter(db->mutex);-
2129 pRet = db->pRollbackArg;-
2130 db->xRollbackCallback = xCallback;-
2131 db->pRollbackArg = pArg;-
2132 sqlite3_mutex_leave(db->mutex);-
2133 return pRet;
executed 15 times by 1 test: return pRet;
Executed by:
  • Self test (438)
15
2134}-
2135-
2136#ifdef SQLITE_ENABLE_PREUPDATE_HOOK-
2137/*-
2138** Register a callback to be invoked each time a row is updated,-
2139** inserted or deleted using this database connection.-
2140*/-
2141void *sqlite3_preupdate_hook(-
2142 sqlite3 *db, /* Attach the hook to this database */-
2143 void(*xCallback)( /* Callback function */-
2144 void*,sqlite3*,int,char const*,char const*,sqlite3_int64,sqlite3_int64),-
2145 void *pArg /* First callback argument */-
2146){-
2147 void *pRet;-
2148 sqlite3_mutex_enter(db->mutex);-
2149 pRet = db->pPreUpdateArg;-
2150 db->xPreUpdateCallback = xCallback;-
2151 db->pPreUpdateArg = pArg;-
2152 sqlite3_mutex_leave(db->mutex);-
2153 return pRet;-
2154}-
2155#endif /* SQLITE_ENABLE_PREUPDATE_HOOK */-
2156-
2157#ifndef SQLITE_OMIT_WAL-
2158/*-
2159** The sqlite3_wal_hook() callback registered by sqlite3_wal_autocheckpoint().-
2160** Invoke sqlite3_wal_checkpoint if the number of frames in the log file-
2161** is greater than sqlite3.pWalArg cast to an integer (the value configured by-
2162** wal_autocheckpoint()).-
2163*/ -
2164int sqlite3WalDefaultHook(-
2165 void *pClientData, /* Argument */-
2166 sqlite3 *db, /* Connection */-
2167 const char *zDb, /* Database */-
2168 int nFrame /* Size of WAL */-
2169){-
2170 if( nFrame>=SQLITE_PTR_TO_INT(pClientData) ){
nFrame>=((int)...(pClientData))Description
TRUEevaluated 1937 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 11417 times by 25 tests
Evaluated by:
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (28)
  • Self test (29)
  • Self test (41)
  • Self test (438)
  • Self test (50)
  • Self test (62)
  • Self test (63)
  • Self test (72)
  • Self test (73)
  • Self test (81)
  • Self test (83)
  • Self test (86)
  • Self test (91)
  • Self test (92)
  • Self test (93)
  • Self test (94)
  • Self test (95)
  • Self test (96)
  • Self test (97)
  • Self test (98)
  • Self test (99)
1937-11417
2171 sqlite3BeginBenignMalloc();-
2172 sqlite3_wal_checkpoint(db, zDb);-
2173 sqlite3EndBenignMalloc();-
2174 }
executed 1937 times by 1 test: end of block
Executed by:
  • Self test (438)
1937
2175 return SQLITE_OK;
executed 13354 times by 25 tests: return 0;
Executed by:
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (28)
  • Self test (29)
  • Self test (41)
  • Self test (438)
  • Self test (50)
  • Self test (62)
  • Self test (63)
  • Self test (72)
  • Self test (73)
  • Self test (81)
  • Self test (83)
  • Self test (86)
  • Self test (91)
  • Self test (92)
  • Self test (93)
  • Self test (94)
  • Self test (95)
  • Self test (96)
  • Self test (97)
  • Self test (98)
  • Self test (99)
13354
2176}-
2177#endif /* SQLITE_OMIT_WAL */-
2178-
2179/*-
2180** Configure an sqlite3_wal_hook() callback to automatically checkpoint-
2181** a database after committing a transaction if there are nFrame or-
2182** more frames in the log file. Passing zero or a negative value as the-
2183** nFrame parameter disables automatic checkpoints entirely.-
2184**-
2185** The callback registered by this function replaces any existing callback-
2186** registered using sqlite3_wal_hook(). Likewise, registering a callback-
2187** using sqlite3_wal_hook() disables the automatic checkpoint mechanism-
2188** configured by this function.-
2189*/-
2190int sqlite3_wal_autocheckpoint(sqlite3 *db, int nFrame){-
2191#ifdef SQLITE_OMIT_WAL-
2192 UNUSED_PARAMETER(db);-
2193 UNUSED_PARAMETER(nFrame);-
2194#else-
2195#ifdef SQLITE_ENABLE_API_ARMOR-
2196 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;-
2197#endif-
2198 if( nFrame>0 ){
nFrame>0Description
TRUEevaluated 31610 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 20 times by 2 tests
Evaluated by:
  • Self test (438)
  • Self test (64)
20-31610
2199 sqlite3_wal_hook(db, sqlite3WalDefaultHook, SQLITE_INT_TO_PTR(nFrame));-
2200 }else{
executed 31610 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)
  • ...
31610
2201 sqlite3_wal_hook(db, 0, 0);-
2202 }
executed 20 times by 2 tests: end of block
Executed by:
  • Self test (438)
  • Self test (64)
20
2203#endif-
2204 return SQLITE_OK;
executed 31630 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)
  • ...
31630
2205}-
2206-
2207/*-
2208** Register a callback to be invoked each time a transaction is written-
2209** into the write-ahead-log by this database connection.-
2210*/-
2211void *sqlite3_wal_hook(-
2212 sqlite3 *db, /* Attach the hook to this db handle */-
2213 int(*xCallback)(void *, sqlite3*, const char*, int),-
2214 void *pArg /* First argument passed to xCallback() */-
2215){-
2216#ifndef SQLITE_OMIT_WAL-
2217 void *pRet;-
2218#ifdef SQLITE_ENABLE_API_ARMOR-
2219 if( !sqlite3SafetyCheckOk(db) ){-
2220 (void)SQLITE_MISUSE_BKPT;-
2221 return 0;-
2222 }-
2223#endif-
2224 sqlite3_mutex_enter(db->mutex);-
2225 pRet = db->pWalArg;-
2226 db->xWalCallback = xCallback;-
2227 db->pWalArg = pArg;-
2228 sqlite3_mutex_leave(db->mutex);-
2229 return pRet;
executed 31645 times by 438 tests: return pRet;
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)
  • ...
31645
2230#else-
2231 return 0;-
2232#endif-
2233}-
2234-
2235/*-
2236** Checkpoint database zDb.-
2237*/-
2238int sqlite3_wal_checkpoint_v2(-
2239 sqlite3 *db, /* Database handle */-
2240 const char *zDb, /* Name of attached database (or NULL) */-
2241 int eMode, /* SQLITE_CHECKPOINT_* value */-
2242 int *pnLog, /* OUT: Size of WAL log in frames */-
2243 int *pnCkpt /* OUT: Total number of frames checkpointed */-
2244){-
2245#ifdef SQLITE_OMIT_WAL-
2246 return SQLITE_OK;-
2247#else-
2248 int rc; /* Return code */-
2249 int iDb = SQLITE_MAX_ATTACHED; /* sqlite3.aDb[] index of db to checkpoint */-
2250-
2251#ifdef SQLITE_ENABLE_API_ARMOR-
2252 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;-
2253#endif-
2254-
2255 /* Initialize the output variables to -1 in case an error occurs. */-
2256 if( pnLog ) *pnLog = -1;
executed 128 times by 3 tests: *pnLog = -1;
Executed by:
  • Self test (438)
  • Self test (89)
  • Self test (90)
pnLogDescription
TRUEevaluated 128 times by 3 tests
Evaluated by:
  • Self test (438)
  • Self test (89)
  • Self test (90)
FALSEevaluated 1959 times by 1 test
Evaluated by:
  • Self test (438)
128-1959
2257 if( pnCkpt ) *pnCkpt = -1;
executed 128 times by 3 tests: *pnCkpt = -1;
Executed by:
  • Self test (438)
  • Self test (89)
  • Self test (90)
pnCkptDescription
TRUEevaluated 128 times by 3 tests
Evaluated by:
  • Self test (438)
  • Self test (89)
  • Self test (90)
FALSEevaluated 1959 times by 1 test
Evaluated by:
  • Self test (438)
128-1959
2258-
2259 assert( SQLITE_CHECKPOINT_PASSIVE==0 );-
2260 assert( SQLITE_CHECKPOINT_FULL==1 );-
2261 assert( SQLITE_CHECKPOINT_RESTART==2 );-
2262 assert( SQLITE_CHECKPOINT_TRUNCATE==3 );-
2263 if( eMode<SQLITE_CHECKPOINT_PASSIVE || eMode>SQLITE_CHECKPOINT_TRUNCATE ){
eMode<0Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 2085 times by 3 tests
Evaluated by:
  • Self test (438)
  • Self test (89)
  • Self test (90)
eMode>3Description
TRUEevaluated 3 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 2082 times by 3 tests
Evaluated by:
  • Self test (438)
  • Self test (89)
  • Self test (90)
2-2085
2264 /* EVIDENCE-OF: R-03996-12088 The M parameter must be a valid checkpoint-
2265 ** mode: */-
2266 return SQLITE_MISUSE;
executed 5 times by 1 test: return 21;
Executed by:
  • Self test (438)
5
2267 }-
2268-
2269 sqlite3_mutex_enter(db->mutex);-
2270 if( zDb && zDb[0] ){
zDbDescription
TRUEevaluated 1979 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 103 times by 3 tests
Evaluated by:
  • Self test (438)
  • Self test (89)
  • Self test (90)
zDb[0]Description
TRUEevaluated 1976 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 3 times by 1 test
Evaluated by:
  • Self test (438)
3-1979
2271 iDb = sqlite3FindDbName(db, zDb);-
2272 }
executed 1976 times by 1 test: end of block
Executed by:
  • Self test (438)
1976
2273 if( iDb<0 ){
iDb<0Description
TRUEevaluated 3 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 2079 times by 3 tests
Evaluated by:
  • Self test (438)
  • Self test (89)
  • Self test (90)
3-2079
2274 rc = SQLITE_ERROR;-
2275 sqlite3ErrorWithMsg(db, SQLITE_ERROR, "unknown database: %s", zDb);-
2276 }else{
executed 3 times by 1 test: end of block
Executed by:
  • Self test (438)
3
2277 db->busyHandler.nBusy = 0;-
2278 rc = sqlite3Checkpoint(db, iDb, eMode, pnLog, pnCkpt);-
2279 sqlite3Error(db, rc);-
2280 }
executed 2079 times by 3 tests: end of block
Executed by:
  • Self test (438)
  • Self test (89)
  • Self test (90)
2079
2281 rc = sqlite3ApiExit(db, rc);-
2282-
2283 /* If there are no active statements, clear the interrupt flag at this-
2284 ** point. */-
2285 if( db->nVdbeActive==0 ){
db->nVdbeActive==0Description
TRUEevaluated 2081 times by 3 tests
Evaluated by:
  • Self test (438)
  • Self test (89)
  • Self test (90)
FALSEevaluated 1 time by 1 test
Evaluated by:
  • Self test (438)
1-2081
2286 db->u1.isInterrupted = 0;-
2287 }
executed 2081 times by 3 tests: end of block
Executed by:
  • Self test (438)
  • Self test (89)
  • Self test (90)
2081
2288-
2289 sqlite3_mutex_leave(db->mutex);-
2290 return rc;
executed 2082 times by 3 tests: return rc;
Executed by:
  • Self test (438)
  • Self test (89)
  • Self test (90)
2082
2291#endif-
2292}-
2293-
2294-
2295/*-
2296** Checkpoint database zDb. If zDb is NULL, or if the buffer zDb points-
2297** to contains a zero-length string, all attached databases are -
2298** checkpointed.-
2299*/-
2300int sqlite3_wal_checkpoint(sqlite3 *db, const char *zDb){-
2301 /* EVIDENCE-OF: R-41613-20553 The sqlite3_wal_checkpoint(D,X) is equivalent to-
2302 ** sqlite3_wal_checkpoint_v2(D,X,SQLITE_CHECKPOINT_PASSIVE,0,0). */-
2303 return sqlite3_wal_checkpoint_v2(db,zDb,SQLITE_CHECKPOINT_PASSIVE,0,0);
executed 1959 times by 1 test: return sqlite3_wal_checkpoint_v2(db,zDb,0,0,0);
Executed by:
  • Self test (438)
1959
2304}-
2305-
2306#ifndef SQLITE_OMIT_WAL-
2307/*-
2308** Run a checkpoint on database iDb. This is a no-op if database iDb is-
2309** not currently open in WAL mode.-
2310**-
2311** If a transaction is open on the database being checkpointed, this -
2312** function returns SQLITE_LOCKED and a checkpoint is not attempted. If -
2313** an error occurs while running the checkpoint, an SQLite error code is -
2314** returned (i.e. SQLITE_IOERR). Otherwise, SQLITE_OK.-
2315**-
2316** The mutex on database handle db should be held by the caller. The mutex-
2317** associated with the specific b-tree being checkpointed is taken by-
2318** this function while the checkpoint is running.-
2319**-
2320** If iDb is passed SQLITE_MAX_ATTACHED, then all attached databases are-
2321** checkpointed. If an error is encountered it is returned immediately --
2322** no attempt is made to checkpoint any remaining databases.-
2323**-
2324** Parameter eMode is one of SQLITE_CHECKPOINT_PASSIVE, FULL, RESTART-
2325** or TRUNCATE.-
2326*/-
2327int sqlite3Checkpoint(sqlite3 *db, int iDb, int eMode, int *pnLog, int *pnCkpt){-
2328 int rc = SQLITE_OK; /* Return code */-
2329 int i; /* Used to iterate through attached dbs */-
2330 int bBusy = 0; /* True if SQLITE_BUSY has been encountered */-
2331-
2332 assert( sqlite3_mutex_held(db->mutex) );-
2333 assert( !pnLog || *pnLog==-1 );-
2334 assert( !pnCkpt || *pnCkpt==-1 );-
2335-
2336 for(i=0; i<db->nDb && rc==SQLITE_OK; i++){
i<db->nDbDescription
TRUEevaluated 13150 times by 10 tests
Evaluated by:
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (438)
  • Self test (72)
  • Self test (73)
  • Self test (84)
  • Self test (85)
  • Self test (89)
  • Self test (90)
FALSEevaluated 6487 times by 10 tests
Evaluated by:
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (438)
  • Self test (72)
  • Self test (73)
  • Self test (84)
  • Self test (85)
  • Self test (89)
  • Self test (90)
rc==0Description
TRUEevaluated 13135 times by 10 tests
Evaluated by:
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (438)
  • Self test (72)
  • Self test (73)
  • Self test (84)
  • Self test (85)
  • Self test (89)
  • Self test (90)
FALSEevaluated 15 times by 1 test
Evaluated by:
  • Self test (438)
15-13150
2337 if( i==iDb || iDb==SQLITE_MAX_ATTACHED ){
i==iDbDescription
TRUEevaluated 1992 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 11143 times by 10 tests
Evaluated by:
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (438)
  • Self test (72)
  • Self test (73)
  • Self test (84)
  • Self test (85)
  • Self test (89)
  • Self test (90)
iDb==10Description
TRUEevaluated 9102 times by 10 tests
Evaluated by:
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (438)
  • Self test (72)
  • Self test (73)
  • Self test (84)
  • Self test (85)
  • Self test (89)
  • Self test (90)
FALSEevaluated 2041 times by 1 test
Evaluated by:
  • Self test (438)
1992-11143
2338 rc = sqlite3BtreeCheckpoint(db->aDb[i].pBt, eMode, pnLog, pnCkpt);-
2339 pnLog = 0;-
2340 pnCkpt = 0;-
2341 if( rc==SQLITE_BUSY ){
rc==5Description
TRUEevaluated 83 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 11011 times by 10 tests
Evaluated by:
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (438)
  • Self test (72)
  • Self test (73)
  • Self test (84)
  • Self test (85)
  • Self test (89)
  • Self test (90)
83-11011
2342 bBusy = 1;-
2343 rc = SQLITE_OK;-
2344 }
executed 83 times by 1 test: end of block
Executed by:
  • Self test (438)
83
2345 }
executed 11094 times by 10 tests: end of block
Executed by:
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (438)
  • Self test (72)
  • Self test (73)
  • Self test (84)
  • Self test (85)
  • Self test (89)
  • Self test (90)
11094
2346 }
executed 13135 times by 10 tests: end of block
Executed by:
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (438)
  • Self test (72)
  • Self test (73)
  • Self test (84)
  • Self test (85)
  • Self test (89)
  • Self test (90)
13135
2347-
2348 return (rc==SQLITE_OK && bBusy) ? SQLITE_BUSY : rc;
executed 6502 times by 10 tests: return (rc==0 && bBusy) ? 5 : rc;
Executed by:
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (438)
  • Self test (72)
  • Self test (73)
  • Self test (84)
  • Self test (85)
  • Self test (89)
  • Self test (90)
rc==0Description
TRUEevaluated 6487 times by 10 tests
Evaluated by:
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (438)
  • Self test (72)
  • Self test (73)
  • Self test (84)
  • Self test (85)
  • Self test (89)
  • Self test (90)
FALSEevaluated 15 times by 1 test
Evaluated by:
  • Self test (438)
bBusyDescription
TRUEevaluated 83 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 6404 times by 10 tests
Evaluated by:
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (438)
  • Self test (72)
  • Self test (73)
  • Self test (84)
  • Self test (85)
  • Self test (89)
  • Self test (90)
15-6502
2349}-
2350#endif /* SQLITE_OMIT_WAL */-
2351-
2352/*-
2353** This function returns true if main-memory should be used instead of-
2354** a temporary file for transient pager files and statement journals.-
2355** The value returned depends on the value of db->temp_store (runtime-
2356** parameter) and the compile time value of SQLITE_TEMP_STORE. The-
2357** following table describes the relationship between these two values-
2358** and this functions return value.-
2359**-
2360** SQLITE_TEMP_STORE db->temp_store Location of temporary database-
2361** ----------------- -------------- -------------------------------
2362** 0 any file (return 0)-
2363** 1 1 file (return 0)-
2364** 1 2 memory (return 1)-
2365** 1 0 file (return 0)-
2366** 2 1 file (return 0)-
2367** 2 2 memory (return 1)-
2368** 2 0 memory (return 1)-
2369** 3 any memory (return 1)-
2370*/-
2371int sqlite3TempInMemory(const sqlite3 *db){-
2372#if SQLITE_TEMP_STORE==1-
2373 return ( db->temp_store==2 );
executed 265432 times by 417 tests: return ( db->temp_store==2 );
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • 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)
  • Self test (122)
  • ...
265432
2374#endif-
2375#if SQLITE_TEMP_STORE==2-
2376 return ( db->temp_store!=1 );-
2377#endif-
2378#if SQLITE_TEMP_STORE==3-
2379 UNUSED_PARAMETER(db);-
2380 return 1;-
2381#endif-
2382#if SQLITE_TEMP_STORE<1 || SQLITE_TEMP_STORE>3-
2383 UNUSED_PARAMETER(db);-
2384 return 0;-
2385#endif-
2386}-
2387-
2388/*-
2389** Return UTF-8 encoded English language explanation of the most recent-
2390** error.-
2391*/-
2392const char *sqlite3_errmsg(sqlite3 *db){-
2393 const char *z;-
2394 if( !db ){
!dbDescription
TRUEnever evaluated
FALSEevaluated 9988 times by 12 tests
Evaluated by:
  • Self test (30)
  • Self test (35)
  • Self test (36)
  • Self test (38)
  • Self test (39)
  • Self test (438)
  • Self test (50)
  • Self test (51)
  • Self test (52)
  • Self test (55)
  • Self test (59)
  • Self test (61)
0-9988
2395 return sqlite3ErrStr(SQLITE_NOMEM_BKPT);
never executed: return sqlite3ErrStr(7);
0
2396 }-
2397 if( !sqlite3SafetyCheckSickOrOk(db) ){
!sqlite3Safety...ckSickOrOk(db)Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 9982 times by 12 tests
Evaluated by:
  • Self test (30)
  • Self test (35)
  • Self test (36)
  • Self test (38)
  • Self test (39)
  • Self test (438)
  • Self test (50)
  • Self test (51)
  • Self test (52)
  • Self test (55)
  • Self test (59)
  • Self test (61)
6-9982
2398 return sqlite3ErrStr(SQLITE_MISUSE_BKPT);
executed 6 times by 1 test: return sqlite3ErrStr(sqlite3MisuseError(2398));
Executed by:
  • Self test (438)
6
2399 }-
2400 sqlite3_mutex_enter(db->mutex);-
2401 if( db->mallocFailed ){
db->mallocFailedDescription
TRUEnever evaluated
FALSEevaluated 9982 times by 12 tests
Evaluated by:
  • Self test (30)
  • Self test (35)
  • Self test (36)
  • Self test (38)
  • Self test (39)
  • Self test (438)
  • Self test (50)
  • Self test (51)
  • Self test (52)
  • Self test (55)
  • Self test (59)
  • Self test (61)
0-9982
2402 z = sqlite3ErrStr(SQLITE_NOMEM_BKPT);-
2403 }else{
never executed: end of block
0
2404 testcase( db->pErr==0 );-
2405 z = (char*)sqlite3_value_text(db->pErr);-
2406 assert( !db->mallocFailed );-
2407 if( z==0 ){
z==0Description
TRUEevaluated 2950 times by 10 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)
FALSEevaluated 7032 times by 4 tests
Evaluated by:
  • Self test (35)
  • Self test (39)
  • Self test (438)
  • Self test (61)
2950-7032
2408 z = sqlite3ErrStr(db->errCode);-
2409 }
executed 2950 times by 10 tests: end of block
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)
2950
2410 }
executed 9982 times by 12 tests: end of block
Executed by:
  • Self test (30)
  • Self test (35)
  • Self test (36)
  • Self test (38)
  • Self test (39)
  • Self test (438)
  • Self test (50)
  • Self test (51)
  • Self test (52)
  • Self test (55)
  • Self test (59)
  • Self test (61)
9982
2411 sqlite3_mutex_leave(db->mutex);-
2412 return z;
executed 9982 times by 12 tests: return z;
Executed by:
  • Self test (30)
  • Self test (35)
  • Self test (36)
  • Self test (38)
  • Self test (39)
  • Self test (438)
  • Self test (50)
  • Self test (51)
  • Self test (52)
  • Self test (55)
  • Self test (59)
  • Self test (61)
9982
2413}-
2414-
2415#ifndef SQLITE_OMIT_UTF16-
2416/*-
2417** Return UTF-16 encoded English language explanation of the most recent-
2418** error.-
2419*/-
2420const void *sqlite3_errmsg16(sqlite3 *db){-
2421 static const u16 outOfMem[] = {-
2422 'o', 'u', 't', ' ', 'o', 'f', ' ', 'm', 'e', 'm', 'o', 'r', 'y', 0-
2423 };-
2424 static const u16 misuse[] = {-
2425 'b', 'a', 'd', ' ', 'p', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', ' ',-
2426 'o', 'r', ' ', 'o', 't', 'h', 'e', 'r', ' ', 'A', 'P', 'I', ' ',-
2427 'm', 'i', 's', 'u', 's', 'e', 0-
2428 };-
2429-
2430 const void *z;-
2431 if( !db ){
!dbDescription
TRUEnever evaluated
FALSEevaluated 9 times by 1 test
Evaluated by:
  • Self test (438)
0-9
2432 return (void *)outOfMem;
never executed: return (void *)outOfMem;
0
2433 }-
2434 if( !sqlite3SafetyCheckSickOrOk(db) ){
!sqlite3Safety...ckSickOrOk(db)Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 7 times by 1 test
Evaluated by:
  • Self test (438)
2-7
2435 return (void *)misuse;
executed 2 times by 1 test: return (void *)misuse;
Executed by:
  • Self test (438)
2
2436 }-
2437 sqlite3_mutex_enter(db->mutex);-
2438 if( db->mallocFailed ){
db->mallocFailedDescription
TRUEnever evaluated
FALSEevaluated 7 times by 1 test
Evaluated by:
  • Self test (438)
0-7
2439 z = (void *)outOfMem;-
2440 }else{
never executed: end of block
0
2441 z = sqlite3_value_text16(db->pErr);-
2442 if( z==0 ){
z==0Description
TRUEevaluated 7 times by 1 test
Evaluated by:
  • Self test (438)
FALSEnever evaluated
0-7
2443 sqlite3ErrorWithMsg(db, db->errCode, sqlite3ErrStr(db->errCode));-
2444 z = sqlite3_value_text16(db->pErr);-
2445 }
executed 7 times by 1 test: end of block
Executed by:
  • Self test (438)
7
2446 /* A malloc() may have failed within the call to sqlite3_value_text16()-
2447 ** above. If this is the case, then the db->mallocFailed flag needs to-
2448 ** be cleared before returning. Do this directly, instead of via-
2449 ** sqlite3ApiExit(), to avoid setting the database handle error message.-
2450 */-
2451 sqlite3OomClear(db);-
2452 }
executed 7 times by 1 test: end of block
Executed by:
  • Self test (438)
7
2453 sqlite3_mutex_leave(db->mutex);-
2454 return z;
executed 7 times by 1 test: return z;
Executed by:
  • Self test (438)
7
2455}-
2456#endif /* SQLITE_OMIT_UTF16 */-
2457-
2458/*-
2459** Return the most recent error code generated by an SQLite routine. If NULL is-
2460** passed to this function, we assume a malloc() failed during sqlite3_open().-
2461*/-
2462int sqlite3_errcode(sqlite3 *db){-
2463 if( db && !sqlite3SafetyCheckSickOrOk(db) ){
dbDescription
TRUEevaluated 170156 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 8 times by 1 test
Evaluated by:
  • Self test (438)
!sqlite3Safety...ckSickOrOk(db)Description
TRUEnever evaluated
FALSEevaluated 170156 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-170156
2464 return SQLITE_MISUSE_BKPT;
never executed: return sqlite3MisuseError(2464);
0
2465 }-
2466 if( !db || db->mallocFailed ){
!dbDescription
TRUEevaluated 8 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 170156 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)
  • ...
db->mallocFailedDescription
TRUEevaluated 328 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 169828 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)
  • ...
8-170156
2467 return SQLITE_NOMEM_BKPT;
executed 336 times by 1 test: return 7;
Executed by:
  • Self test (438)
336
2468 }-
2469 return db->errCode & db->errMask;
executed 169828 times by 438 tests: return db->errCode & db->errMask;
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)
  • ...
169828
2470}-
2471int sqlite3_extended_errcode(sqlite3 *db){-
2472 if( db && !sqlite3SafetyCheckSickOrOk(db) ){
dbDescription
TRUEevaluated 88 times by 1 test
Evaluated by:
  • Self test (438)
FALSEnever evaluated
!sqlite3Safety...ckSickOrOk(db)Description
TRUEnever evaluated
FALSEevaluated 88 times by 1 test
Evaluated by:
  • Self test (438)
0-88
2473 return SQLITE_MISUSE_BKPT;
never executed: return sqlite3MisuseError(2473);
0
2474 }-
2475 if( !db || db->mallocFailed ){
!dbDescription
TRUEnever evaluated
FALSEevaluated 88 times by 1 test
Evaluated by:
  • Self test (438)
db->mallocFailedDescription
TRUEnever evaluated
FALSEevaluated 88 times by 1 test
Evaluated by:
  • Self test (438)
0-88
2476 return SQLITE_NOMEM_BKPT;
never executed: return 7;
0
2477 }-
2478 return db->errCode;
executed 88 times by 1 test: return db->errCode;
Executed by:
  • Self test (438)
88
2479}-
2480int sqlite3_system_errno(sqlite3 *db){-
2481 return db ? db->iSysErrno : 0;
executed 2 times by 1 test: return db ? db->iSysErrno : 0;
Executed by:
  • Self test (438)
dbDescription
TRUEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
FALSEnever evaluated
0-2
2482} -
2483-
2484/*-
2485** Return a string that describes the kind of error specified in the-
2486** argument. For now, this simply calls the internal sqlite3ErrStr()-
2487** function.-
2488*/-
2489const char *sqlite3_errstr(int rc){-
2490 return sqlite3ErrStr(rc);
executed 458 times by 1 test: return sqlite3ErrStr(rc);
Executed by:
  • Self test (438)
458
2491}-
2492-
2493/*-
2494** Create a new collating function for database "db". The name is zName-
2495** and the encoding is enc.-
2496*/-
2497static int createCollation(-
2498 sqlite3* db,-
2499 const char *zName, -
2500 u8 enc,-
2501 void* pCtx,-
2502 int(*xCompare)(void*,int,const void*,int,const void*),-
2503 void(*xDel)(void*)-
2504){-
2505 CollSeq *pColl;-
2506 int enc2;-
2507 -
2508 assert( sqlite3_mutex_held(db->mutex) );-
2509-
2510 /* If SQLITE_UTF16 is specified as the encoding type, transform this-
2511 ** to one of SQLITE_UTF16LE or SQLITE_UTF16BE using the-
2512 ** SQLITE_UTF16NATIVE macro. SQLITE_UTF16 is not used internally.-
2513 */-
2514 enc2 = enc;-
2515 testcase( enc2==SQLITE_UTF16 );-
2516 testcase( enc2==SQLITE_UTF16_ALIGNED );-
2517 if( enc2==SQLITE_UTF16 || enc2==SQLITE_UTF16_ALIGNED ){
enc2==4Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 162751 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)
  • ...
enc2==8Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 162750 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)
  • ...
1-162751
2518 enc2 = SQLITE_UTF16NATIVE;-
2519 }
executed 2 times by 1 test: end of block
Executed by:
  • Self test (438)
2
2520 if( enc2<SQLITE_UTF8 || enc2>SQLITE_UTF16BE ){
enc2<1Description
TRUEnever evaluated
FALSEevaluated 162752 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)
  • ...
enc2>3Description
TRUEevaluated 3 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 162749 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-162752
2521 return SQLITE_MISUSE_BKPT;
executed 3 times by 1 test: return sqlite3MisuseError(2521);
Executed by:
  • Self test (438)
3
2522 }-
2523-
2524 /* Check if this call is removing or replacing an existing collation -
2525 ** sequence. If so, and there are active VMs, return busy. If there-
2526 ** are no active VMs, invalidate any pre-compiled statements.-
2527 */-
2528 pColl = sqlite3FindCollSeq(db, (u8)enc2, zName, 0);-
2529 if( pColl && pColl->xCmp ){
pCollDescription
TRUEevaluated 65088 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 97661 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)
  • ...
pColl->xCmpDescription
TRUEevaluated 47 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 65041 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)
  • ...
47-97661
2530 if( db->nVdbeActive ){
db->nVdbeActiveDescription
TRUEevaluated 4 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 43 times by 1 test
Evaluated by:
  • Self test (438)
4-43
2531 sqlite3ErrorWithMsg(db, SQLITE_BUSY, -
2532 "unable to delete/modify collation sequence due to active statements");-
2533 return SQLITE_BUSY;
executed 4 times by 1 test: return 5;
Executed by:
  • Self test (438)
4
2534 }-
2535 sqlite3ExpirePreparedStatements(db, 0);-
2536-
2537 /* If collation sequence pColl was created directly by a call to-
2538 ** sqlite3_create_collation, and not generated by synthCollSeq(),-
2539 ** then any copies made by synthCollSeq() need to be invalidated.-
2540 ** Also, collation destructor - CollSeq.xDel() - function may need-
2541 ** to be called.-
2542 */ -
2543 if( (pColl->enc & ~SQLITE_UTF16_ALIGNED)==enc2 ){
(pColl->enc & ~8)==enc2Description
TRUEevaluated 41 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
2-41
2544 CollSeq *aColl = sqlite3HashFind(&db->aCollSeq, zName);-
2545 int j;-
2546 for(j=0; j<3; j++){
j<3Description
TRUEevaluated 123 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 41 times by 1 test
Evaluated by:
  • Self test (438)
41-123
2547 CollSeq *p = &aColl[j];-
2548 if( p->enc==pColl->enc ){
p->enc==pColl->encDescription
TRUEevaluated 44 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 79 times by 1 test
Evaluated by:
  • Self test (438)
44-79
2549 if( p->xDel ){
p->xDelDescription
TRUEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 42 times by 1 test
Evaluated by:
  • Self test (438)
2-42
2550 p->xDel(p->pUser);-
2551 }
executed 2 times by 1 test: end of block
Executed by:
  • Self test (438)
2
2552 p->xCmp = 0;-
2553 }
executed 44 times by 1 test: end of block
Executed by:
  • Self test (438)
44
2554 }
executed 123 times by 1 test: end of block
Executed by:
  • Self test (438)
123
2555 }
executed 41 times by 1 test: end of block
Executed by:
  • Self test (438)
41
2556 }
executed 43 times by 1 test: end of block
Executed by:
  • Self test (438)
43
2557-
2558 pColl = sqlite3FindCollSeq(db, (u8)enc2, zName, 1);-
2559 if( pColl==0 ) return SQLITE_NOMEM_BKPT;
executed 128 times by 1 test: return 7;
Executed by:
  • Self test (438)
pColl==0Description
TRUEevaluated 128 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 162617 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)
  • ...
128-162617
2560 pColl->xCmp = xCompare;-
2561 pColl->pUser = pCtx;-
2562 pColl->xDel = xDel;-
2563 pColl->enc = (u8)(enc2 | (enc & SQLITE_UTF16_ALIGNED));-
2564 sqlite3Error(db, SQLITE_OK);-
2565 return SQLITE_OK;
executed 162617 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)
  • ...
162617
2566}-
2567-
2568-
2569/*-
2570** This array defines hard upper bounds on limit values. The-
2571** initializer must be kept in sync with the SQLITE_LIMIT_*-
2572** #defines in sqlite3.h.-
2573*/-
2574static const int aHardLimit[] = {-
2575 SQLITE_MAX_LENGTH,-
2576 SQLITE_MAX_SQL_LENGTH,-
2577 SQLITE_MAX_COLUMN,-
2578 SQLITE_MAX_EXPR_DEPTH,-
2579 SQLITE_MAX_COMPOUND_SELECT,-
2580 SQLITE_MAX_VDBE_OP,-
2581 SQLITE_MAX_FUNCTION_ARG,-
2582 SQLITE_MAX_ATTACHED,-
2583 SQLITE_MAX_LIKE_PATTERN_LENGTH,-
2584 SQLITE_MAX_VARIABLE_NUMBER, /* IMP: R-38091-32352 */-
2585 SQLITE_MAX_TRIGGER_DEPTH,-
2586 SQLITE_MAX_WORKER_THREADS,-
2587};-
2588-
2589/*-
2590** Make sure the hard limits are set to reasonable values-
2591*/-
2592#if SQLITE_MAX_LENGTH<100-
2593# error SQLITE_MAX_LENGTH must be at least 100-
2594#endif-
2595#if SQLITE_MAX_SQL_LENGTH<100-
2596# error SQLITE_MAX_SQL_LENGTH must be at least 100-
2597#endif-
2598#if SQLITE_MAX_SQL_LENGTH>SQLITE_MAX_LENGTH-
2599# error SQLITE_MAX_SQL_LENGTH must not be greater than SQLITE_MAX_LENGTH-
2600#endif-
2601#if SQLITE_MAX_COMPOUND_SELECT<2-
2602# error SQLITE_MAX_COMPOUND_SELECT must be at least 2-
2603#endif-
2604#if SQLITE_MAX_VDBE_OP<40-
2605# error SQLITE_MAX_VDBE_OP must be at least 40-
2606#endif-
2607#if SQLITE_MAX_FUNCTION_ARG<0 || SQLITE_MAX_FUNCTION_ARG>127-
2608# error SQLITE_MAX_FUNCTION_ARG must be between 0 and 127-
2609#endif-
2610#if SQLITE_MAX_ATTACHED<0 || SQLITE_MAX_ATTACHED>125-
2611# error SQLITE_MAX_ATTACHED must be between 0 and 125-
2612#endif-
2613#if SQLITE_MAX_LIKE_PATTERN_LENGTH<1-
2614# error SQLITE_MAX_LIKE_PATTERN_LENGTH must be at least 1-
2615#endif-
2616#if SQLITE_MAX_COLUMN>32767-
2617# error SQLITE_MAX_COLUMN must not exceed 32767-
2618#endif-
2619#if SQLITE_MAX_TRIGGER_DEPTH<1-
2620# error SQLITE_MAX_TRIGGER_DEPTH must be at least 1-
2621#endif-
2622#if SQLITE_MAX_WORKER_THREADS<0 || SQLITE_MAX_WORKER_THREADS>50-
2623# error SQLITE_MAX_WORKER_THREADS must be between 0 and 50-
2624#endif-
2625-
2626-
2627/*-
2628** Change the value of a limit. Report the old value.-
2629** If an invalid limit index is supplied, report -1.-
2630** Make no changes but still report the old value if the-
2631** new limit is negative.-
2632**-
2633** A new lower limit does not shrink existing constructs.-
2634** It merely prevents new constructs that exceed the limit-
2635** from forming.-
2636*/-
2637int sqlite3_limit(sqlite3 *db, int limitId, int newLimit){-
2638 int oldLimit;-
2639-
2640#ifdef SQLITE_ENABLE_API_ARMOR-
2641 if( !sqlite3SafetyCheckOk(db) ){-
2642 (void)SQLITE_MISUSE_BKPT;-
2643 return -1;-
2644 }-
2645#endif-
2646-
2647 /* EVIDENCE-OF: R-30189-54097 For each limit category SQLITE_LIMIT_NAME-
2648 ** there is a hard upper bound set at compile-time by a C preprocessor-
2649 ** macro called SQLITE_MAX_NAME. (The "_LIMIT_" in the name is changed to-
2650 ** "_MAX_".)-
2651 */-
2652 assert( aHardLimit[SQLITE_LIMIT_LENGTH]==SQLITE_MAX_LENGTH );-
2653 assert( aHardLimit[SQLITE_LIMIT_SQL_LENGTH]==SQLITE_MAX_SQL_LENGTH );-
2654 assert( aHardLimit[SQLITE_LIMIT_COLUMN]==SQLITE_MAX_COLUMN );-
2655 assert( aHardLimit[SQLITE_LIMIT_EXPR_DEPTH]==SQLITE_MAX_EXPR_DEPTH );-
2656 assert( aHardLimit[SQLITE_LIMIT_COMPOUND_SELECT]==SQLITE_MAX_COMPOUND_SELECT);-
2657 assert( aHardLimit[SQLITE_LIMIT_VDBE_OP]==SQLITE_MAX_VDBE_OP );-
2658 assert( aHardLimit[SQLITE_LIMIT_FUNCTION_ARG]==SQLITE_MAX_FUNCTION_ARG );-
2659 assert( aHardLimit[SQLITE_LIMIT_ATTACHED]==SQLITE_MAX_ATTACHED );-
2660 assert( aHardLimit[SQLITE_LIMIT_LIKE_PATTERN_LENGTH]==-
2661 SQLITE_MAX_LIKE_PATTERN_LENGTH );-
2662 assert( aHardLimit[SQLITE_LIMIT_VARIABLE_NUMBER]==SQLITE_MAX_VARIABLE_NUMBER);-
2663 assert( aHardLimit[SQLITE_LIMIT_TRIGGER_DEPTH]==SQLITE_MAX_TRIGGER_DEPTH );-
2664 assert( aHardLimit[SQLITE_LIMIT_WORKER_THREADS]==SQLITE_MAX_WORKER_THREADS );-
2665 assert( SQLITE_LIMIT_WORKER_THREADS==(SQLITE_N_LIMIT-1) );-
2666-
2667-
2668 if( limitId<0 || limitId>=SQLITE_N_LIMIT ){
limitId<0Description
TRUEnever evaluated
FALSEevaluated 153 times by 1 test
Evaluated by:
  • Self test (438)
limitId>=(11 +1)Description
TRUEnever evaluated
FALSEevaluated 153 times by 1 test
Evaluated by:
  • Self test (438)
0-153
2669 return -1;
never executed: return -1;
0
2670 }-
2671 oldLimit = db->aLimit[limitId];-
2672 if( newLimit>=0 ){ /* IMP: R-52476-28732 */
newLimit>=0Description
TRUEevaluated 15 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 138 times by 1 test
Evaluated by:
  • Self test (438)
15-138
2673 if( newLimit>aHardLimit[limitId] ){
newLimit>aHardLimit[limitId]Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 13 times by 1 test
Evaluated by:
  • Self test (438)
2-13
2674 newLimit = aHardLimit[limitId]; /* IMP: R-51463-25634 */-
2675 }
executed 2 times by 1 test: end of block
Executed by:
  • Self test (438)
2
2676 db->aLimit[limitId] = newLimit;-
2677 }
executed 15 times by 1 test: end of block
Executed by:
  • Self test (438)
15
2678 return oldLimit; /* IMP: R-53341-35419 */
executed 153 times by 1 test: return oldLimit;
Executed by:
  • Self test (438)
153
2679}-
2680-
2681/*-
2682** This function is used to parse both URIs and non-URI filenames passed by the-
2683** user to API functions sqlite3_open() or sqlite3_open_v2(), and for database-
2684** URIs specified as part of ATTACH statements.-
2685**-
2686** The first argument to this function is the name of the VFS to use (or-
2687** a NULL to signify the default VFS) if the URI does not contain a "vfs=xxx"-
2688** query parameter. The second argument contains the URI (or non-URI filename)-
2689** itself. When this function is called the *pFlags variable should contain-
2690** the default flags to open the database handle with. The value stored in-
2691** *pFlags may be updated before returning if the URI filename contains -
2692** "cache=xxx" or "mode=xxx" query parameters.-
2693**-
2694** If successful, SQLITE_OK is returned. In this case *ppVfs is set to point to-
2695** the VFS that should be used to open the database file. *pzFile is set to-
2696** point to a buffer containing the name of the file to open. It is the -
2697** responsibility of the caller to eventually call sqlite3_free() to release-
2698** this buffer.-
2699**-
2700** If an error occurs, then an SQLite error code is returned and *pzErrMsg-
2701** may be set to point to a buffer containing an English language error -
2702** message. It is the responsibility of the caller to eventually release-
2703** this buffer by calling sqlite3_free().-
2704*/-
2705int sqlite3ParseUri(-
2706 const char *zDefaultVfs, /* VFS to use if no "vfs=xxx" query option */-
2707 const char *zUri, /* Nul-terminated URI to parse */-
2708 unsigned int *pFlags, /* IN/OUT: SQLITE_OPEN_XXX flags */-
2709 sqlite3_vfs **ppVfs, /* OUT: VFS to use */ -
2710 char **pzFile, /* OUT: Filename component of URI */-
2711 char **pzErrMsg /* OUT: Error message (if rc!=SQLITE_OK) */-
2712){-
2713 int rc = SQLITE_OK;-
2714 unsigned int flags = *pFlags;-
2715 const char *zVfs = zDefaultVfs;-
2716 char *zFile;-
2717 char c;-
2718 int nUri = sqlite3Strlen30(zUri);-
2719-
2720 assert( *pzErrMsg==0 );-
2721-
2722 if( ((flags & SQLITE_OPEN_URI) /* IMP: R-48725-32206 */
(flags & 0x00000040)Description
TRUEevaluated 9054 times by 2 tests
Evaluated by:
  • Self test (438)
  • Self test (61)
FALSEevaluated 25056 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)
  • ...
9054-25056
2723 || sqlite3GlobalConfig.bOpenUri) /* IMP: R-51689-46548 */
sqlite3Config.bOpenUriDescription
TRUEevaluated 22674 times by 5 tests
Evaluated by:
  • Self test (101)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (438)
FALSEevaluated 2382 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)
  • ...
2382-22674
2724 && nUri>=5 && memcmp(zUri, "file:", 5)==0 /* IMP: R-57884-37496 */
nUri>=5Description
TRUEevaluated 30846 times by 6 tests
Evaluated by:
  • Self test (101)
  • Self test (103)
  • Self test (104)
  • Self test (105)
  • Self test (438)
  • Self test (61)
FALSEevaluated 882 times by 1 test
Evaluated by:
  • Self test (438)
memcmp(zUri, "file:", 5)==0Description
TRUEevaluated 220 times by 4 tests
Evaluated by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
FALSEevaluated 30626 times by 4 tests
Evaluated by:
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (438)
220-30846
2725 ){-
2726 char *zOpt;-
2727 int eState; /* Parser state when parsing URI */-
2728 int iIn; /* Input character index */-
2729 int iOut = 0; /* Output character index */-
2730 u64 nByte = nUri+2; /* Bytes of space to allocate */-
2731-
2732 /* Make sure the SQLITE_OPEN_URI flag is set to indicate to the VFS xOpen -
2733 ** method that there may be extra parameters following the file-name. */-
2734 flags |= SQLITE_OPEN_URI;-
2735-
2736 for(iIn=0; iIn<nUri; iIn++) nByte += (zUri[iIn]=='&');
executed 15325 times by 4 tests: nByte += (zUri[iIn]=='&');
Executed by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
iIn<nUriDescription
TRUEevaluated 15325 times by 4 tests
Evaluated by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
FALSEevaluated 220 times by 4 tests
Evaluated by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
220-15325
2737 zFile = sqlite3_malloc64(nByte);-
2738 if( !zFile ) return SQLITE_NOMEM_BKPT;
never executed: return 7;
!zFileDescription
TRUEnever evaluated
FALSEevaluated 220 times by 4 tests
Evaluated by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
0-220
2739-
2740 iIn = 5;-
2741#ifdef SQLITE_ALLOW_URI_AUTHORITY-
2742 if( strncmp(zUri+5, "///", 3)==0 ){-
2743 iIn = 7;-
2744 /* The following condition causes URIs with five leading / characters-
2745 ** like file://///host/path to be converted into UNCs like //host/path.-
2746 ** The correct URI for that UNC has only two or four leading / characters-
2747 ** file://host/path or file:////host/path. But 5 leading slashes is a -
2748 ** common error, we are told, so we handle it as a special case. */-
2749 if( strncmp(zUri+7, "///", 3)==0 ){ iIn++; }-
2750 }else if( strncmp(zUri+5, "//localhost/", 12)==0 ){-
2751 iIn = 16;-
2752 }-
2753#else-
2754 /* Discard the scheme and authority segments of the URI. */-
2755 if( zUri[5]=='/' && zUri[6]=='/' ){
zUri[5]=='/'Description
TRUEevaluated 25 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 195 times by 4 tests
Evaluated by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
zUri[6]=='/'Description
TRUEevaluated 17 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 8 times by 1 test
Evaluated by:
  • Self test (438)
8-195
2756 iIn = 7;-
2757 while( zUri[iIn] && zUri[iIn]!='/' ) iIn++;
executed 92 times by 1 test: iIn++;
Executed by:
  • Self test (438)
zUri[iIn]Description
TRUEevaluated 109 times by 1 test
Evaluated by:
  • Self test (438)
FALSEnever evaluated
zUri[iIn]!='/'Description
TRUEevaluated 92 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 17 times by 1 test
Evaluated by:
  • Self test (438)
0-109
2758 if( iIn!=7 && (iIn!=16 || memcmp("localhost", &zUri[7], 9)) ){
iIn!=7Description
TRUEevaluated 12 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 5 times by 1 test
Evaluated by:
  • Self test (438)
iIn!=16Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 8 times by 1 test
Evaluated by:
  • Self test (438)
memcmp("localh..., &zUri[7], 9)Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 7 times by 1 test
Evaluated by:
  • Self test (438)
1-12
2759 *pzErrMsg = sqlite3_mprintf("invalid uri authority: %.*s", -
2760 iIn-7, &zUri[7]);-
2761 rc = SQLITE_ERROR;-
2762 goto parse_uri_out;
executed 5 times by 1 test: goto parse_uri_out;
Executed by:
  • Self test (438)
5
2763 }-
2764 }
executed 12 times by 1 test: end of block
Executed by:
  • Self test (438)
12
2765#endif-
2766-
2767 /* Copy the filename and any query parameters into the zFile buffer. -
2768 ** Decode %HH escape codes along the way. -
2769 **-
2770 ** Within this loop, variable eState may be set to 0, 1 or 2, depending-
2771 ** on the parsing context. As follows:-
2772 **-
2773 ** 0: Parsing file-name.-
2774 ** 1: Parsing name section of a name=value query parameter.-
2775 ** 2: Parsing value section of a name=value query parameter.-
2776 */-
2777 eState = 0;-
2778 while( (c = zUri[iIn])!=0 && c!='#' ){
(c = zUri[iIn])!=0Description
TRUEevaluated 13439 times by 4 tests
Evaluated by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
FALSEevaluated 206 times by 4 tests
Evaluated by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
c!='#'Description
TRUEevaluated 13430 times by 4 tests
Evaluated by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
FALSEevaluated 9 times by 1 test
Evaluated by:
  • Self test (438)
9-13439
2779 iIn++;-
2780 if( c=='%'
c=='%'Description
TRUEevaluated 60 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 13370 times by 4 tests
Evaluated by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
60-13370
2781 && sqlite3Isxdigit(zUri[iIn])
(sqlite3CtypeM...i[iIn])]&0x08)Description
TRUEevaluated 60 times by 1 test
Evaluated by:
  • Self test (438)
FALSEnever evaluated
0-60
2782 && sqlite3Isxdigit(zUri[iIn+1])
(sqlite3CtypeM...iIn+1])]&0x08)Description
TRUEevaluated 60 times by 1 test
Evaluated by:
  • Self test (438)
FALSEnever evaluated
0-60
2783 ){-
2784 int octet = (sqlite3HexToInt(zUri[iIn++]) << 4);-
2785 octet += sqlite3HexToInt(zUri[iIn++]);-
2786-
2787 assert( octet>=0 && octet<256 );-
2788 if( octet==0 ){
octet==0Description
TRUEevaluated 22 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 38 times by 1 test
Evaluated by:
  • Self test (438)
22-38
2789#ifndef SQLITE_ENABLE_URI_00_ERROR-
2790 /* This branch is taken when "%00" appears within the URI. In this-
2791 ** case we ignore all text in the remainder of the path, name or-
2792 ** value currently being parsed. So ignore the current character-
2793 ** and skip to the next "?", "=" or "&", as appropriate. */-
2794 while( (c = zUri[iIn])!=0 && c!='#'
(c = zUri[iIn])!=0Description
TRUEevaluated 98 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 8 times by 1 test
Evaluated by:
  • Self test (438)
c!='#'Description
TRUEevaluated 98 times by 1 test
Evaluated by:
  • Self test (438)
FALSEnever evaluated
0-98
2795 && (eState!=0 || c!='?')
eState!=0Description
TRUEevaluated 42 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 56 times by 1 test
Evaluated by:
  • Self test (438)
c!='?'Description
TRUEevaluated 50 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 6 times by 1 test
Evaluated by:
  • Self test (438)
6-56
2796 && (eState!=1 || (c!='=' && c!='&'))
eState!=1Description
TRUEevaluated 66 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 26 times by 1 test
Evaluated by:
  • Self test (438)
c!='='Description
TRUEevaluated 20 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 6 times by 1 test
Evaluated by:
  • Self test (438)
c!='&'Description
TRUEevaluated 20 times by 1 test
Evaluated by:
  • Self test (438)
FALSEnever evaluated
0-66
2797 && (eState!=2 || c!='&')
eState!=2Description
TRUEevaluated 70 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 16 times by 1 test
Evaluated by:
  • Self test (438)
c!='&'Description
TRUEevaluated 14 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
2-70
2798 ){-
2799 iIn++;-
2800 }
executed 84 times by 1 test: end of block
Executed by:
  • Self test (438)
84
2801 continue;
executed 22 times by 1 test: continue;
Executed by:
  • Self test (438)
22
2802#else-
2803 /* If ENABLE_URI_00_ERROR is defined, "%00" in a URI is an error. */-
2804 *pzErrMsg = sqlite3_mprintf("unexpected %%00 in uri");-
2805 rc = SQLITE_ERROR;-
2806 goto parse_uri_out;-
2807#endif-
2808 }-
2809 c = octet;-
2810 }else if( eState==1 && (c=='&' || c=='=') ){
executed 38 times by 1 test: end of block
Executed by:
  • Self test (438)
eState==1Description
TRUEevaluated 1243 times by 4 tests
Evaluated by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
FALSEevaluated 12127 times by 4 tests
Evaluated by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
c=='&'Description
TRUEevaluated 34 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1209 times by 4 tests
Evaluated by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
c=='='Description
TRUEevaluated 195 times by 4 tests
Evaluated by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
FALSEevaluated 1014 times by 4 tests
Evaluated by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
34-12127
2811 if( zFile[iOut-1]==0 ){
zFile[iOut-1]==0Description
TRUEevaluated 34 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 195 times by 4 tests
Evaluated by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
34-195
2812 /* An empty option name. Ignore this option altogether. */-
2813 while( zUri[iIn] && zUri[iIn]!='#' && zUri[iIn-1]!='&' ) iIn++;
executed 24 times by 1 test: iIn++;
Executed by:
  • Self test (438)
zUri[iIn]Description
TRUEevaluated 56 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
zUri[iIn]!='#'Description
TRUEevaluated 54 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
zUri[iIn-1]!='&'Description
TRUEevaluated 24 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 30 times by 1 test
Evaluated by:
  • Self test (438)
2-56
2814 continue;
executed 34 times by 1 test: continue;
Executed by:
  • Self test (438)
34
2815 }-
2816 if( c=='&' ){
c=='&'Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 189 times by 4 tests
Evaluated by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
6-189
2817 zFile[iOut++] = '\0';-
2818 }else{
executed 6 times by 1 test: end of block
Executed by:
  • Self test (438)
6
2819 eState = 2;-
2820 }
executed 189 times by 4 tests: end of block
Executed by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
189
2821 c = 0;-
2822 }else if( (eState==0 && c=='?') || (eState==2 && c=='&') ){
executed 195 times by 4 tests: end of block
Executed by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
eState==0Description
TRUEevaluated 11459 times by 4 tests
Evaluated by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
FALSEevaluated 1682 times by 4 tests
Evaluated by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
c=='?'Description
TRUEevaluated 169 times by 4 tests
Evaluated by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
FALSEevaluated 11290 times by 4 tests
Evaluated by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
eState==2Description
TRUEevaluated 668 times by 4 tests
Evaluated by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
FALSEevaluated 12304 times by 4 tests
Evaluated by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
c=='&'Description
TRUEevaluated 29 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 639 times by 4 tests
Evaluated by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
29-12304
2823 c = 0;-
2824 eState = 1;-
2825 }
executed 198 times by 4 tests: end of block
Executed by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
198
2826 zFile[iOut++] = c;-
2827 }
executed 13374 times by 4 tests: end of block
Executed by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
13374
2828 if( eState==1 ) zFile[iOut++] = '\0';
executed 9 times by 1 test: zFile[iOut++] = '\0';
Executed by:
  • Self test (438)
eState==1Description
TRUEevaluated 9 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 206 times by 4 tests
Evaluated by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
9-206
2829 zFile[iOut++] = '\0';-
2830 zFile[iOut++] = '\0';-
2831-
2832 /* Check if there were any options specified that should be interpreted -
2833 ** here. Options that are interpreted here include "vfs" and those that-
2834 ** correspond to flags that may be passed to the sqlite3_open_v2()-
2835 ** method. */-
2836 zOpt = &zFile[sqlite3Strlen30(zFile)+1];-
2837 while( zOpt[0] ){
zOpt[0]Description
TRUEevaluated 198 times by 4 tests
Evaluated by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
FALSEevaluated 202 times by 4 tests
Evaluated by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
198-202
2838 int nOpt = sqlite3Strlen30(zOpt);-
2839 char *zVal = &zOpt[nOpt+1];-
2840 int nVal = sqlite3Strlen30(zVal);-
2841-
2842 if( nOpt==3 && memcmp("vfs", zOpt, 3)==0 ){
nOpt==3Description
TRUEevaluated 24 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 174 times by 4 tests
Evaluated by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
memcmp("vfs", zOpt, 3)==0Description
TRUEevaluated 17 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 7 times by 1 test
Evaluated by:
  • Self test (438)
7-174
2843 zVfs = zVal;-
2844 }else{
executed 17 times by 1 test: end of block
Executed by:
  • Self test (438)
17
2845 struct OpenMode {-
2846 const char *z;-
2847 int mode;-
2848 } *aMode = 0;-
2849 char *zModeType = 0;-
2850 int mask = 0;-
2851 int limit = 0;-
2852-
2853 if( nOpt==5 && memcmp("cache", zOpt, 5)==0 ){
nOpt==5Description
TRUEevaluated 59 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 122 times by 4 tests
Evaluated by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
memcmp("cache", zOpt, 5)==0Description
TRUEevaluated 34 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 25 times by 1 test
Evaluated by:
  • Self test (438)
25-122
2854 static struct OpenMode aCacheMode[] = {-
2855 { "shared", SQLITE_OPEN_SHAREDCACHE },-
2856 { "private", SQLITE_OPEN_PRIVATECACHE },-
2857 { 0, 0 }-
2858 };-
2859-
2860 mask = SQLITE_OPEN_SHAREDCACHE|SQLITE_OPEN_PRIVATECACHE;-
2861 aMode = aCacheMode;-
2862 limit = mask;-
2863 zModeType = "cache";-
2864 }
executed 34 times by 1 test: end of block
Executed by:
  • Self test (438)
34
2865 if( nOpt==4 && memcmp("mode", zOpt, 4)==0 ){
nOpt==4Description
TRUEevaluated 71 times by 2 tests
Evaluated by:
  • Self test (438)
  • Self test (61)
FALSEevaluated 110 times by 3 tests
Evaluated by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
memcmp("mode", zOpt, 4)==0Description
TRUEevaluated 55 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 16 times by 2 tests
Evaluated by:
  • Self test (438)
  • Self test (61)
16-110
2866 static struct OpenMode aOpenMode[] = {-
2867 { "ro", SQLITE_OPEN_READONLY },-
2868 { "rw", SQLITE_OPEN_READWRITE }, -
2869 { "rwc", SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE },-
2870 { "memory", SQLITE_OPEN_MEMORY },-
2871 { 0, 0 }-
2872 };-
2873-
2874 mask = SQLITE_OPEN_READONLY | SQLITE_OPEN_READWRITE-
2875 | SQLITE_OPEN_CREATE | SQLITE_OPEN_MEMORY;-
2876 aMode = aOpenMode;-
2877 limit = mask & flags;-
2878 zModeType = "access";-
2879 }
executed 55 times by 1 test: end of block
Executed by:
  • Self test (438)
55
2880-
2881 if( aMode ){
aModeDescription
TRUEevaluated 89 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 92 times by 4 tests
Evaluated by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
89-92
2882 int i;-
2883 int mode = 0;-
2884 for(i=0; aMode[i].z; i++){
aMode[i].zDescription
TRUEevaluated 201 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 8 times by 1 test
Evaluated by:
  • Self test (438)
8-201
2885 const char *z = aMode[i].z;-
2886 if( nVal==sqlite3Strlen30(z) && 0==memcmp(zVal, z, nVal) ){
nVal==sqlite3Strlen30(z)Description
TRUEevaluated 101 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 100 times by 1 test
Evaluated by:
  • Self test (438)
0==memcmp(zVal, z, nVal)Description
TRUEevaluated 81 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 20 times by 1 test
Evaluated by:
  • Self test (438)
20-101
2887 mode = aMode[i].mode;-
2888 break;
executed 81 times by 1 test: break;
Executed by:
  • Self test (438)
81
2889 }-
2890 }
executed 120 times by 1 test: end of block
Executed by:
  • Self test (438)
120
2891 if( mode==0 ){
mode==0Description
TRUEevaluated 8 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 81 times by 1 test
Evaluated by:
  • Self test (438)
8-81
2892 *pzErrMsg = sqlite3_mprintf("no such %s mode: %s", zModeType, zVal);-
2893 rc = SQLITE_ERROR;-
2894 goto parse_uri_out;
executed 8 times by 1 test: goto parse_uri_out;
Executed by:
  • Self test (438)
8
2895 }-
2896 if( (mode & ~SQLITE_OPEN_MEMORY)>limit ){
(mode & ~0x00000080)>limitDescription
TRUEevaluated 5 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 76 times by 1 test
Evaluated by:
  • Self test (438)
5-76
2897 *pzErrMsg = sqlite3_mprintf("%s mode not allowed: %s",-
2898 zModeType, zVal);-
2899 rc = SQLITE_PERM;-
2900 goto parse_uri_out;
executed 5 times by 1 test: goto parse_uri_out;
Executed by:
  • Self test (438)
5
2901 }-
2902 flags = (flags & ~mask) | mode;-
2903 }
executed 76 times by 1 test: end of block
Executed by:
  • Self test (438)
76
2904 }
executed 168 times by 4 tests: end of block
Executed by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
168
2905-
2906 zOpt = &zVal[nVal+1];-
2907 }
executed 185 times by 4 tests: end of block
Executed by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
185
2908-
2909 }else{
executed 202 times by 4 tests: end of block
Executed by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
202
2910 zFile = sqlite3_malloc64(nUri+2);-
2911 if( !zFile ) return SQLITE_NOMEM_BKPT;
executed 8 times by 1 test: return 7;
Executed by:
  • Self test (438)
!zFileDescription
TRUEevaluated 8 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 33882 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)
  • ...
8-33882
2912 if( nUri ){
nUriDescription
TRUEevaluated 32987 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 895 times by 2 tests
Evaluated by:
  • Self test (34)
  • Self test (438)
895-32987
2913 memcpy(zFile, zUri, nUri);-
2914 }
executed 32987 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)
  • ...
32987
2915 zFile[nUri] = '\0';-
2916 zFile[nUri+1] = '\0';-
2917 flags &= ~SQLITE_OPEN_URI;-
2918 }
executed 33882 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)
  • ...
33882
2919-
2920 *ppVfs = sqlite3_vfs_find(zVfs);-
2921 if( *ppVfs==0 ){
*ppVfs==0Description
TRUEevaluated 5 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 34079 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)
  • ...
5-34079
2922 *pzErrMsg = sqlite3_mprintf("no such vfs: %s", zVfs);-
2923 rc = SQLITE_ERROR;-
2924 }
executed 5 times by 1 test: end of block
Executed by:
  • Self test (438)
5
2925 parse_uri_out:
code before this statement executed 34084 times by 438 tests: parse_uri_out:
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)
  • ...
34084
2926 if( rc!=SQLITE_OK ){
rc!=0Description
TRUEevaluated 23 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 34079 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)
  • ...
23-34079
2927 sqlite3_free(zFile);-
2928 zFile = 0;-
2929 }
executed 23 times by 1 test: end of block
Executed by:
  • Self test (438)
23
2930 *pFlags = flags;-
2931 *pzFile = zFile;-
2932 return rc;
executed 34102 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)
  • ...
34102
2933}-
2934-
2935-
2936/*-
2937** This routine does the work of opening a database on behalf of-
2938** sqlite3_open() and sqlite3_open16(). The database filename "zFilename" -
2939** is UTF-8 encoded.-
2940*/-
2941static int openDatabase(-
2942 const char *zFilename, /* Database filename UTF-8 encoded */-
2943 sqlite3 **ppDb, /* OUT: Returned database handle */-
2944 unsigned int flags, /* Operational flags */-
2945 const char *zVfs /* Name of the VFS to use */-
2946){-
2947 sqlite3 *db; /* Store allocated handle here */-
2948 int rc; /* Return code */-
2949 int isThreadsafe; /* True for threadsafe connections */-
2950 char *zOpen = 0; /* Filename argument to pass to BtreeOpen() */-
2951 char *zErrMsg = 0; /* Error message from sqlite3ParseUri() */-
2952-
2953#ifdef SQLITE_ENABLE_API_ARMOR-
2954 if( ppDb==0 ) return SQLITE_MISUSE_BKPT;-
2955#endif-
2956 *ppDb = 0;-
2957#ifndef SQLITE_OMIT_AUTOINIT-
2958 rc = sqlite3_initialize();-
2959 if( rc ) return rc;
never executed: return rc;
rcDescription
TRUEnever evaluated
FALSEevaluated 32533 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-32533
2960#endif-
2961-
2962 if( sqlite3GlobalConfig.bCoreMutex==0 ){
sqlite3Config.bCoreMutex==0Description
TRUEevaluated 9 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 32524 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)
  • ...
9-32524
2963 isThreadsafe = 0;-
2964 }else if( flags & SQLITE_OPEN_NOMUTEX ){
executed 9 times by 1 test: end of block
Executed by:
  • Self test (438)
flags & 0x00008000Description
TRUEevaluated 23255 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 9269 times by 1 test
Evaluated by:
  • Self test (438)
9-23255
2965 isThreadsafe = 0;-
2966 }else if( flags & SQLITE_OPEN_FULLMUTEX ){
executed 23255 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)
  • ...
flags & 0x00010000Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 9265 times by 1 test
Evaluated by:
  • Self test (438)
4-23255
2967 isThreadsafe = 1;-
2968 }else{
executed 4 times by 1 test: end of block
Executed by:
  • Self test (438)
4
2969 isThreadsafe = sqlite3GlobalConfig.bFullMutex;-
2970 }
executed 9265 times by 1 test: end of block
Executed by:
  • Self test (438)
9265
2971-
2972 if( flags & SQLITE_OPEN_PRIVATECACHE ){
flags & 0x00040000Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 32527 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-32527
2973 flags &= ~SQLITE_OPEN_SHAREDCACHE;-
2974 }else if( sqlite3GlobalConfig.sharedCacheEnabled ){
executed 6 times by 1 test: end of block
Executed by:
  • Self test (438)
sqlite3Config....edCacheEnabledDescription
TRUEevaluated 338 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 32189 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-32189
2975 flags |= SQLITE_OPEN_SHAREDCACHE;-
2976 }
executed 338 times by 1 test: end of block
Executed by:
  • Self test (438)
338
2977-
2978 /* Remove harmful bits from the flags parameter-
2979 **-
2980 ** The SQLITE_OPEN_NOMUTEX and SQLITE_OPEN_FULLMUTEX flags were-
2981 ** dealt with in the previous code block. Besides these, the only-
2982 ** valid input flags for sqlite3_open_v2() are SQLITE_OPEN_READONLY,-
2983 ** SQLITE_OPEN_READWRITE, SQLITE_OPEN_CREATE, SQLITE_OPEN_SHAREDCACHE,-
2984 ** SQLITE_OPEN_PRIVATECACHE, and some reserved bits. Silently mask-
2985 ** off all other flags.-
2986 */-
2987 flags &= ~( SQLITE_OPEN_DELETEONCLOSE |-
2988 SQLITE_OPEN_EXCLUSIVE |-
2989 SQLITE_OPEN_MAIN_DB |-
2990 SQLITE_OPEN_TEMP_DB | -
2991 SQLITE_OPEN_TRANSIENT_DB | -
2992 SQLITE_OPEN_MAIN_JOURNAL | -
2993 SQLITE_OPEN_TEMP_JOURNAL | -
2994 SQLITE_OPEN_SUBJOURNAL | -
2995 SQLITE_OPEN_MASTER_JOURNAL |-
2996 SQLITE_OPEN_NOMUTEX |-
2997 SQLITE_OPEN_FULLMUTEX |-
2998 SQLITE_OPEN_WAL-
2999 );-
3000-
3001 /* Allocate the sqlite data structure */-
3002 db = sqlite3MallocZero( sizeof(sqlite3) );-
3003 if( db==0 ) goto opendb_out;
executed 8 times by 1 test: goto opendb_out;
Executed by:
  • Self test (438)
db==0Description
TRUEevaluated 8 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 32525 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)
  • ...
8-32525
3004 if( isThreadsafe
isThreadsafeDescription
TRUEevaluated 206 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 32319 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)
  • ...
206-32319
3005#ifdef SQLITE_ENABLE_MULTITHREADED_CHECKS-
3006 || sqlite3GlobalConfig.bCoreMutex-
3007#endif-
3008 ){-
3009 db->mutex = sqlite3MutexAlloc(SQLITE_MUTEX_RECURSIVE);-
3010 if( db->mutex==0 ){
db->mutex==0Description
TRUEnever evaluated
FALSEevaluated 206 times by 1 test
Evaluated by:
  • Self test (438)
0-206
3011 sqlite3_free(db);-
3012 db = 0;-
3013 goto opendb_out;
never executed: goto opendb_out;
0
3014 }-
3015 if( isThreadsafe==0 ){
isThreadsafe==0Description
TRUEnever evaluated
FALSEevaluated 206 times by 1 test
Evaluated by:
  • Self test (438)
0-206
3016 sqlite3MutexWarnOnContention(db->mutex);-
3017 }
never executed: end of block
0
3018 }
executed 206 times by 1 test: end of block
Executed by:
  • Self test (438)
206
3019 sqlite3_mutex_enter(db->mutex);-
3020 db->errMask = 0xff;-
3021 db->nDb = 2;-
3022 db->magic = SQLITE_MAGIC_BUSY;-
3023 db->aDb = db->aDbStatic;-
3024 db->lookaside.bDisable = 1;-
3025-
3026 assert( sizeof(db->aLimit)==sizeof(aHardLimit) );-
3027 memcpy(db->aLimit, aHardLimit, sizeof(db->aLimit));-
3028 db->aLimit[SQLITE_LIMIT_WORKER_THREADS] = SQLITE_DEFAULT_WORKER_THREADS;-
3029 db->autoCommit = 1;-
3030 db->nextAutovac = -1;-
3031 db->szMmap = sqlite3GlobalConfig.szMmap;-
3032 db->nextPagesize = 0;-
3033 db->nMaxSorterMmap = 0x7FFFFFFF;-
3034 db->flags |= SQLITE_ShortColNames | SQLITE_EnableTrigger | SQLITE_CacheSpill-
3035#if !defined(SQLITE_DEFAULT_AUTOMATIC_INDEX) || SQLITE_DEFAULT_AUTOMATIC_INDEX-
3036 | SQLITE_AutoIndex-
3037#endif-
3038#if SQLITE_DEFAULT_CKPTFULLFSYNC-
3039 | SQLITE_CkptFullFSync-
3040#endif-
3041#if SQLITE_DEFAULT_FILE_FORMAT<4-
3042 | SQLITE_LegacyFileFmt-
3043#endif-
3044#ifdef SQLITE_ENABLE_LOAD_EXTENSION-
3045 | SQLITE_LoadExtension-
3046#endif-
3047#if SQLITE_DEFAULT_RECURSIVE_TRIGGERS-
3048 | SQLITE_RecTriggers-
3049#endif-
3050#if defined(SQLITE_DEFAULT_FOREIGN_KEYS) && SQLITE_DEFAULT_FOREIGN_KEYS-
3051 | SQLITE_ForeignKeys-
3052#endif-
3053#if defined(SQLITE_REVERSE_UNORDERED_SELECTS)-
3054 | SQLITE_ReverseOrder-
3055#endif-
3056#if defined(SQLITE_ENABLE_OVERSIZE_CELL_CHECK)-
3057 | SQLITE_CellSizeCk-
3058#endif-
3059#if defined(SQLITE_ENABLE_FTS3_TOKENIZER)-
3060 | SQLITE_Fts3Tokenizer-
3061#endif-
3062#if defined(SQLITE_ENABLE_QPSG)-
3063 | SQLITE_EnableQPSG-
3064#endif-
3065 ;-
3066 sqlite3HashInit(&db->aCollSeq);-
3067#ifndef SQLITE_OMIT_VIRTUALTABLE-
3068 sqlite3HashInit(&db->aModule);-
3069#endif-
3070-
3071 /* Add the default collation sequence BINARY. BINARY works for both UTF-8-
3072 ** and UTF-16, so add a version for each to avoid any unnecessary-
3073 ** conversions. The only error that can occur here is a malloc() failure.-
3074 **-
3075 ** EVIDENCE-OF: R-52786-44878 SQLite defines three built-in collating-
3076 ** functions:-
3077 */-
3078 createCollation(db, sqlite3StrBINARY, SQLITE_UTF8, 0, binCollFunc, 0);-
3079 createCollation(db, sqlite3StrBINARY, SQLITE_UTF16BE, 0, binCollFunc, 0);-
3080 createCollation(db, sqlite3StrBINARY, SQLITE_UTF16LE, 0, binCollFunc, 0);-
3081 createCollation(db, "NOCASE", SQLITE_UTF8, 0, nocaseCollatingFunc, 0);-
3082 createCollation(db, "RTRIM", SQLITE_UTF8, (void*)1, binCollFunc, 0);-
3083 if( db->mallocFailed ){
db->mallocFailedDescription
TRUEevaluated 48 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 32477 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)
  • ...
48-32477
3084 goto opendb_out;
executed 48 times by 1 test: goto opendb_out;
Executed by:
  • Self test (438)
48
3085 }-
3086 /* EVIDENCE-OF: R-08308-17224 The default collating function for all-
3087 ** strings is BINARY. -
3088 */-
3089 db->pDfltColl = sqlite3FindCollSeq(db, SQLITE_UTF8, sqlite3StrBINARY, 0);-
3090 assert( db->pDfltColl!=0 );-
3091-
3092 /* Parse the filename/URI argument-
3093 **-
3094 ** Only allow sensible combinations of bits in the flags argument. -
3095 ** Throw an error if any non-sense combination is used. If we-
3096 ** do not block illegal combinations here, it could trigger-
3097 ** assert() statements in deeper layers. Sensible combinations-
3098 ** are:-
3099 **-
3100 ** 1: SQLITE_OPEN_READONLY-
3101 ** 2: SQLITE_OPEN_READWRITE-
3102 ** 6: SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE-
3103 */-
3104 db->openFlags = flags;-
3105 assert( SQLITE_OPEN_READONLY == 0x01 );-
3106 assert( SQLITE_OPEN_READWRITE == 0x02 );-
3107 assert( SQLITE_OPEN_CREATE == 0x04 );-
3108 testcase( (1<<(flags&7))==0x02 ); /* READONLY */-
3109 testcase( (1<<(flags&7))==0x04 ); /* READWRITE */-
3110 testcase( (1<<(flags&7))==0x40 ); /* READWRITE | CREATE */-
3111 if( ((1<<(flags&7)) & 0x46)==0 ){
((1<<(flags&7)) & 0x46)==0Description
TRUEnever evaluated
FALSEevaluated 32477 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-32477
3112 rc = SQLITE_MISUSE_BKPT; /* IMP: R-65497-44594 */-
3113 }else{
never executed: end of block
0
3114 rc = sqlite3ParseUri(zVfs, zFilename, &flags, &db->pVfs, &zOpen, &zErrMsg);-
3115 }
executed 32477 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)
  • ...
32477
3116 if( rc!=SQLITE_OK ){
rc!=0Description
TRUEevaluated 31 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 32446 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)
  • ...
31-32446
3117 if( rc==SQLITE_NOMEM ) sqlite3OomFault(db);
executed 8 times by 1 test: sqlite3OomFault(db);
Executed by:
  • Self test (438)
rc==7Description
TRUEevaluated 8 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 23 times by 1 test
Evaluated by:
  • Self test (438)
8-23
3118 sqlite3ErrorWithMsg(db, rc, zErrMsg ? "%s" : 0, zErrMsg);-
3119 sqlite3_free(zErrMsg);-
3120 goto opendb_out;
executed 31 times by 1 test: goto opendb_out;
Executed by:
  • Self test (438)
31
3121 }-
3122-
3123 /* Open the backend database driver */-
3124 rc = sqlite3BtreeOpen(db->pVfs, zOpen, db, &db->aDb[0].pBt, 0,-
3125 flags | SQLITE_OPEN_MAIN_DB);-
3126 if( rc!=SQLITE_OK ){
rc!=0Description
TRUEevaluated 655 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 31791 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)
  • ...
655-31791
3127 if( rc==SQLITE_IOERR_NOMEM ){
rc==(10 | (12<<8))Description
TRUEevaluated 28 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 627 times by 1 test
Evaluated by:
  • Self test (438)
28-627
3128 rc = SQLITE_NOMEM_BKPT;-
3129 }
executed 28 times by 1 test: end of block
Executed by:
  • Self test (438)
28
3130 sqlite3Error(db, rc);-
3131 goto opendb_out;
executed 655 times by 1 test: goto opendb_out;
Executed by:
  • Self test (438)
655
3132 }-
3133 sqlite3BtreeEnter(db->aDb[0].pBt);-
3134 db->aDb[0].pSchema = sqlite3SchemaGet(db, db->aDb[0].pBt);-
3135 if( !db->mallocFailed ) ENC(db) = SCHEMA_ENC(db);
executed 31783 times by 438 tests: ((db)->enc) = ((db)->aDb[0].pSchema->enc);
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)
  • ...
!db->mallocFailedDescription
TRUEevaluated 31783 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 8 times by 1 test
Evaluated by:
  • Self test (438)
8-31783
3136 sqlite3BtreeLeave(db->aDb[0].pBt);-
3137 db->aDb[1].pSchema = sqlite3SchemaGet(db, 0);-
3138-
3139 /* The default safety_level for the main database is FULL; for the temp-
3140 ** database it is OFF. This matches the pager layer defaults. -
3141 */-
3142 db->aDb[0].zDbSName = "main";-
3143 db->aDb[0].safety_level = SQLITE_DEFAULT_SYNCHRONOUS+1;-
3144 db->aDb[1].zDbSName = "temp";-
3145 db->aDb[1].safety_level = PAGER_SYNCHRONOUS_OFF;-
3146-
3147 db->magic = SQLITE_MAGIC_OPEN;-
3148 if( db->mallocFailed ){
db->mallocFailedDescription
TRUEevaluated 16 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 31775 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)
  • ...
16-31775
3149 goto opendb_out;
executed 16 times by 1 test: goto opendb_out;
Executed by:
  • Self test (438)
16
3150 }-
3151-
3152 /* Register all built-in functions, but do not attempt to read the-
3153 ** database schema yet. This is delayed until the first time the database-
3154 ** is accessed.-
3155 */-
3156 sqlite3Error(db, SQLITE_OK);-
3157 sqlite3RegisterPerConnectionBuiltinFunctions(db);-
3158 rc = sqlite3_errcode(db);-
3159-
3160#ifdef SQLITE_ENABLE_FTS5-
3161 /* Register any built-in FTS5 module before loading the automatic-
3162 ** extensions. This allows automatic extensions to register FTS5 -
3163 ** tokenizers and auxiliary functions. */-
3164 if( !db->mallocFailed && rc==SQLITE_OK ){-
3165 rc = sqlite3Fts5Init(db);-
3166 }-
3167#endif-
3168-
3169 /* Load automatic extensions - extensions that have been registered-
3170 ** using the sqlite3_automatic_extension() API.-
3171 */-
3172 if( rc==SQLITE_OK ){
rc==0Description
TRUEevaluated 31743 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 32 times by 1 test
Evaluated by:
  • Self test (438)
32-31743
3173 sqlite3AutoLoadExtensions(db);-
3174 rc = sqlite3_errcode(db);-
3175 if( rc!=SQLITE_OK ){
rc!=0Description
TRUEevaluated 191 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 31552 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)
  • ...
191-31552
3176 goto opendb_out;
executed 191 times by 1 test: goto opendb_out;
Executed by:
  • Self test (438)
191
3177 }-
3178 }
executed 31552 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)
  • ...
31552
3179-
3180#ifdef SQLITE_ENABLE_FTS1-
3181 if( !db->mallocFailed ){-
3182 extern int sqlite3Fts1Init(sqlite3*);-
3183 rc = sqlite3Fts1Init(db);-
3184 }-
3185#endif-
3186-
3187#ifdef SQLITE_ENABLE_FTS2-
3188 if( !db->mallocFailed && rc==SQLITE_OK ){-
3189 extern int sqlite3Fts2Init(sqlite3*);-
3190 rc = sqlite3Fts2Init(db);-
3191 }-
3192#endif-
3193-
3194#ifdef SQLITE_ENABLE_FTS3 /* automatically defined by SQLITE_ENABLE_FTS4 */-
3195 if( !db->mallocFailed && rc==SQLITE_OK ){-
3196 rc = sqlite3Fts3Init(db);-
3197 }-
3198#endif-
3199-
3200#if defined(SQLITE_ENABLE_ICU) || defined(SQLITE_ENABLE_ICU_COLLATIONS)-
3201 if( !db->mallocFailed && rc==SQLITE_OK ){-
3202 rc = sqlite3IcuInit(db);-
3203 }-
3204#endif-
3205-
3206#ifdef SQLITE_ENABLE_RTREE-
3207 if( !db->mallocFailed && rc==SQLITE_OK){-
3208 rc = sqlite3RtreeInit(db);-
3209 }-
3210#endif-
3211-
3212#ifdef SQLITE_ENABLE_DBPAGE_VTAB-
3213 if( !db->mallocFailed && rc==SQLITE_OK){
!db->mallocFailedDescription
TRUEevaluated 31552 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 32 times by 1 test
Evaluated by:
  • Self test (438)
rc==0Description
TRUEevaluated 31552 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-31552
3214 rc = sqlite3DbpageRegister(db);-
3215 }
executed 31552 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)
  • ...
31552
3216#endif-
3217-
3218#ifdef SQLITE_ENABLE_DBSTAT_VTAB-
3219 if( !db->mallocFailed && rc==SQLITE_OK){-
3220 rc = sqlite3DbstatRegister(db);-
3221 }-
3222#endif-
3223-
3224#ifdef SQLITE_ENABLE_JSON1-
3225 if( !db->mallocFailed && rc==SQLITE_OK){-
3226 rc = sqlite3Json1Init(db);-
3227 }-
3228#endif-
3229-
3230#ifdef SQLITE_ENABLE_STMTVTAB-
3231 if( !db->mallocFailed && rc==SQLITE_OK){
!db->mallocFailedDescription
TRUEevaluated 31552 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 32 times by 1 test
Evaluated by:
  • Self test (438)
rc==0Description
TRUEevaluated 31536 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 16 times by 1 test
Evaluated by:
  • Self test (438)
16-31552
3232 rc = sqlite3StmtVtabInit(db);-
3233 }
executed 31536 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)
  • ...
31536
3234#endif-
3235-
3236 /* -DSQLITE_DEFAULT_LOCKING_MODE=1 makes EXCLUSIVE the default locking-
3237 ** mode. -DSQLITE_DEFAULT_LOCKING_MODE=0 make NORMAL the default locking-
3238 ** mode. Doing nothing at all also makes NORMAL the default.-
3239 */-
3240#ifdef SQLITE_DEFAULT_LOCKING_MODE-
3241 db->dfltLockMode = SQLITE_DEFAULT_LOCKING_MODE;-
3242 sqlite3PagerLockingMode(sqlite3BtreePager(db->aDb[0].pBt),-
3243 SQLITE_DEFAULT_LOCKING_MODE);-
3244#endif-
3245-
3246 if( rc ) sqlite3Error(db, rc);
executed 64 times by 1 test: sqlite3Error(db, rc);
Executed by:
  • Self test (438)
rcDescription
TRUEevaluated 64 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 31520 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)
  • ...
64-31520
3247-
3248 /* Enable the lookaside-malloc subsystem */-
3249 setupLookaside(db, 0, sqlite3GlobalConfig.szLookaside,-
3250 sqlite3GlobalConfig.nLookaside);-
3251-
3252 sqlite3_wal_autocheckpoint(db, SQLITE_DEFAULT_WAL_AUTOCHECKPOINT);-
3253-
3254opendb_out:
code before this statement executed 31584 times by 438 tests: opendb_out:
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)
  • ...
31584
3255 if( db ){
dbDescription
TRUEevaluated 32525 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 8 times by 1 test
Evaluated by:
  • Self test (438)
8-32525
3256 assert( db->mutex!=0 || isThreadsafe==0-
3257 || sqlite3GlobalConfig.bFullMutex==0 );-
3258 sqlite3_mutex_leave(db->mutex);-
3259 }
executed 32525 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)
  • ...
32525
3260 rc = sqlite3_errcode(db);-
3261 assert( db!=0 || rc==SQLITE_NOMEM );-
3262 if( rc==SQLITE_NOMEM ){
rc==7Description
TRUEevaluated 458 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 32075 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)
  • ...
458-32075
3263 sqlite3_close(db);-
3264 db = 0;-
3265 }else if( rc!=SQLITE_OK ){
executed 458 times by 1 test: end of block
Executed by:
  • Self test (438)
rc!=0Description
TRUEevaluated 555 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 31520 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)
  • ...
458-31520
3266 db->magic = SQLITE_MAGIC_SICK;-
3267 }
executed 555 times by 1 test: end of block
Executed by:
  • Self test (438)
555
3268 *ppDb = db;-
3269#ifdef SQLITE_ENABLE_SQLLOG-
3270 if( sqlite3GlobalConfig.xSqllog ){-
3271 /* Opening a db handle. Fourth parameter is passed 0. */-
3272 void *pArg = sqlite3GlobalConfig.pSqllogArg;-
3273 sqlite3GlobalConfig.xSqllog(pArg, db, zFilename, 0);-
3274 }-
3275#endif-
3276#if defined(SQLITE_HAS_CODEC)-
3277 if( rc==SQLITE_OK ){-
3278 const char *zKey;-
3279 if( (zKey = sqlite3_uri_parameter(zOpen, "hexkey"))!=0 && zKey[0] ){-
3280 u8 iByte;-
3281 int i;-
3282 char zDecoded[40];-
3283 for(i=0, iByte=0; i<sizeof(zDecoded)*2 && sqlite3Isxdigit(zKey[i]); i++){-
3284 iByte = (iByte<<4) + sqlite3HexToInt(zKey[i]);-
3285 if( (i&1)!=0 ) zDecoded[i/2] = iByte;-
3286 }-
3287 sqlite3_key_v2(db, 0, zDecoded, i/2);-
3288 }else if( (zKey = sqlite3_uri_parameter(zOpen, "key"))!=0 ){-
3289 sqlite3_key_v2(db, 0, zKey, sqlite3Strlen30(zKey));-
3290 }-
3291 }-
3292#endif-
3293 sqlite3_free(zOpen);-
3294 return rc & 0xff;
executed 32533 times by 438 tests: return rc & 0xff;
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)
  • ...
32533
3295}-
3296-
3297/*-
3298** Open a new database handle.-
3299*/-
3300int sqlite3_open(-
3301 const char *zFilename, -
3302 sqlite3 **ppDb -
3303){-
3304 return openDatabase(zFilename, ppDb,
executed 155 times by 1 test: return openDatabase(zFilename, ppDb, 0x00000002 | 0x00000004, 0);
Executed by:
  • Self test (438)
155
3305 SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, 0);
executed 155 times by 1 test: return openDatabase(zFilename, ppDb, 0x00000002 | 0x00000004, 0);
Executed by:
  • Self test (438)
155
3306}-
3307int sqlite3_open_v2(-
3308 const char *filename, /* Database filename (UTF-8) */-
3309 sqlite3 **ppDb, /* OUT: SQLite db handle */-
3310 int flags, /* Flags */-
3311 const char *zVfs /* Name of VFS module to use */-
3312){-
3313 return openDatabase(filename, ppDb, (unsigned int)flags, zVfs);
executed 32358 times by 438 tests: return openDatabase(filename, ppDb, (unsigned int)flags, zVfs);
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)
  • ...
32358
3314}-
3315-
3316#ifndef SQLITE_OMIT_UTF16-
3317/*-
3318** Open a new database handle.-
3319*/-
3320int sqlite3_open16(-
3321 const void *zFilename, -
3322 sqlite3 **ppDb-
3323){-
3324 char const *zFilename8; /* zFilename encoded in UTF-8 instead of UTF-16 */-
3325 sqlite3_value *pVal;-
3326 int rc;-
3327-
3328#ifdef SQLITE_ENABLE_API_ARMOR-
3329 if( ppDb==0 ) return SQLITE_MISUSE_BKPT;-
3330#endif-
3331 *ppDb = 0;-
3332#ifndef SQLITE_OMIT_AUTOINIT-
3333 rc = sqlite3_initialize();-
3334 if( rc ) return rc;
never executed: return rc;
rcDescription
TRUEnever evaluated
FALSEevaluated 20 times by 1 test
Evaluated by:
  • Self test (438)
0-20
3335#endif-
3336 if( zFilename==0 ) zFilename = "\000\000";
never executed: zFilename = "\000\000";
zFilename==0Description
TRUEnever evaluated
FALSEevaluated 20 times by 1 test
Evaluated by:
  • Self test (438)
0-20
3337 pVal = sqlite3ValueNew(0);-
3338 sqlite3ValueSetStr(pVal, -1, zFilename, SQLITE_UTF16NATIVE, SQLITE_STATIC);-
3339 zFilename8 = sqlite3ValueText(pVal, SQLITE_UTF8);-
3340 if( zFilename8 ){
zFilename8Description
TRUEevaluated 20 times by 1 test
Evaluated by:
  • Self test (438)
FALSEnever evaluated
0-20
3341 rc = openDatabase(zFilename8, ppDb,-
3342 SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, 0);-
3343 assert( *ppDb || rc==SQLITE_NOMEM );-
3344 if( rc==SQLITE_OK && !DbHasProperty(*ppDb, 0, DB_SchemaLoaded) ){
rc==0Description
TRUEevaluated 18 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
!(((*ppDb)->aD...1))==(0x0001))Description
TRUEevaluated 16 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
2-18
3345 SCHEMA_ENC(*ppDb) = ENC(*ppDb) = SQLITE_UTF16NATIVE;-
3346 }
executed 16 times by 1 test: end of block
Executed by:
  • Self test (438)
16
3347 }else{
executed 20 times by 1 test: end of block
Executed by:
  • Self test (438)
20
3348 rc = SQLITE_NOMEM_BKPT;-
3349 }
never executed: end of block
0
3350 sqlite3ValueFree(pVal);-
3351-
3352 return rc & 0xff;
executed 20 times by 1 test: return rc & 0xff;
Executed by:
  • Self test (438)
20
3353}-
3354#endif /* SQLITE_OMIT_UTF16 */-
3355-
3356/*-
3357** Register a new collation sequence with the database handle db.-
3358*/-
3359int sqlite3_create_collation(-
3360 sqlite3* db, -
3361 const char *zName, -
3362 int enc, -
3363 void* pCtx,-
3364 int(*xCompare)(void*,int,const void*,int,const void*)-
3365){-
3366 return sqlite3_create_collation_v2(db, zName, enc, pCtx, xCompare, 0);
executed 106 times by 1 test: return sqlite3_create_collation_v2(db, zName, enc, pCtx, xCompare, 0);
Executed by:
  • Self test (438)
106
3367}-
3368-
3369/*-
3370** Register a new collation sequence with the database handle db.-
3371*/-
3372int sqlite3_create_collation_v2(-
3373 sqlite3* db, -
3374 const char *zName, -
3375 int enc, -
3376 void* pCtx,-
3377 int(*xCompare)(void*,int,const void*,int,const void*),-
3378 void(*xDel)(void*)-
3379){-
3380 int rc;-
3381-
3382#ifdef SQLITE_ENABLE_API_ARMOR-
3383 if( !sqlite3SafetyCheckOk(db) || zName==0 ) return SQLITE_MISUSE_BKPT;-
3384#endif-
3385 sqlite3_mutex_enter(db->mutex);-
3386 assert( !db->mallocFailed );-
3387 rc = createCollation(db, zName, (u8)enc, pCtx, xCompare, xDel);-
3388 rc = sqlite3ApiExit(db, rc);-
3389 sqlite3_mutex_leave(db->mutex);-
3390 return rc;
executed 112 times by 1 test: return rc;
Executed by:
  • Self test (438)
112
3391}-
3392-
3393#ifndef SQLITE_OMIT_UTF16-
3394/*-
3395** Register a new collation sequence with the database handle db.-
3396*/-
3397int sqlite3_create_collation16(-
3398 sqlite3* db, -
3399 const void *zName,-
3400 int enc, -
3401 void* pCtx,-
3402 int(*xCompare)(void*,int,const void*,int,const void*)-
3403){-
3404 int rc = SQLITE_OK;-
3405 char *zName8;-
3406-
3407#ifdef SQLITE_ENABLE_API_ARMOR-
3408 if( !sqlite3SafetyCheckOk(db) || zName==0 ) return SQLITE_MISUSE_BKPT;-
3409#endif-
3410 sqlite3_mutex_enter(db->mutex);-
3411 assert( !db->mallocFailed );-
3412 zName8 = sqlite3Utf16to8(db, zName, -1, SQLITE_UTF16NATIVE);-
3413 if( zName8 ){
zName8Description
TRUEevaluated 15 times by 1 test
Evaluated by:
  • Self test (438)
FALSEnever evaluated
0-15
3414 rc = createCollation(db, zName8, (u8)enc, pCtx, xCompare, 0);-
3415 sqlite3DbFree(db, zName8);-
3416 }
executed 15 times by 1 test: end of block
Executed by:
  • Self test (438)
15
3417 rc = sqlite3ApiExit(db, rc);-
3418 sqlite3_mutex_leave(db->mutex);-
3419 return rc;
executed 15 times by 1 test: return rc;
Executed by:
  • Self test (438)
15
3420}-
3421#endif /* SQLITE_OMIT_UTF16 */-
3422-
3423/*-
3424** Register a collation sequence factory callback with the database handle-
3425** db. Replace any previously installed collation sequence factory.-
3426*/-
3427int sqlite3_collation_needed(-
3428 sqlite3 *db, -
3429 void *pCollNeededArg, -
3430 void(*xCollNeeded)(void*,sqlite3*,int eTextRep,const char*)-
3431){-
3432#ifdef SQLITE_ENABLE_API_ARMOR-
3433 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;-
3434#endif-
3435 sqlite3_mutex_enter(db->mutex);-
3436 db->xCollNeeded = xCollNeeded;-
3437 db->xCollNeeded16 = 0;-
3438 db->pCollNeededArg = pCollNeededArg;-
3439 sqlite3_mutex_leave(db->mutex);-
3440 return SQLITE_OK;
executed 4 times by 1 test: return 0;
Executed by:
  • Self test (438)
4
3441}-
3442-
3443#ifndef SQLITE_OMIT_UTF16-
3444/*-
3445** Register a collation sequence factory callback with the database handle-
3446** db. Replace any previously installed collation sequence factory.-
3447*/-
3448int sqlite3_collation_needed16(-
3449 sqlite3 *db, -
3450 void *pCollNeededArg, -
3451 void(*xCollNeeded16)(void*,sqlite3*,int eTextRep,const void*)-
3452){-
3453#ifdef SQLITE_ENABLE_API_ARMOR-
3454 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;-
3455#endif-
3456 sqlite3_mutex_enter(db->mutex);-
3457 db->xCollNeeded = 0;-
3458 db->xCollNeeded16 = xCollNeeded16;-
3459 db->pCollNeededArg = pCollNeededArg;-
3460 sqlite3_mutex_leave(db->mutex);-
3461 return SQLITE_OK;
executed 2 times by 1 test: return 0;
Executed by:
  • Self test (438)
2
3462}-
3463#endif /* SQLITE_OMIT_UTF16 */-
3464-
3465#ifndef SQLITE_OMIT_DEPRECATED-
3466/*-
3467** This function is now an anachronism. It used to be used to recover from a-
3468** malloc() failure, but SQLite now does this automatically.-
3469*/-
3470int sqlite3_global_recover(void){-
3471 return SQLITE_OK;
never executed: return 0;
0
3472}-
3473#endif-
3474-
3475/*-
3476** Test to see whether or not the database connection is in autocommit-
3477** mode. Return TRUE if it is and FALSE if not. Autocommit mode is on-
3478** by default. Autocommit is disabled by a BEGIN statement and reenabled-
3479** by the next COMMIT or ROLLBACK.-
3480*/-
3481int sqlite3_get_autocommit(sqlite3 *db){-
3482#ifdef SQLITE_ENABLE_API_ARMOR-
3483 if( !sqlite3SafetyCheckOk(db) ){-
3484 (void)SQLITE_MISUSE_BKPT;-
3485 return 0;-
3486 }-
3487#endif-
3488 return db->autoCommit;
executed 247 times by 1 test: return db->autoCommit;
Executed by:
  • Self test (438)
247
3489}-
3490-
3491/*-
3492** The following routines are substitutes for constants SQLITE_CORRUPT,-
3493** SQLITE_MISUSE, SQLITE_CANTOPEN, SQLITE_NOMEM and possibly other error-
3494** constants. They serve two purposes:-
3495**-
3496** 1. Serve as a convenient place to set a breakpoint in a debugger-
3497** to detect when version error conditions occurs.-
3498**-
3499** 2. Invoke sqlite3_log() to provide the source code location where-
3500** a low-level error is first detected.-
3501*/-
3502int sqlite3ReportError(int iErr, int lineno, const char *zType){-
3503 sqlite3_log(iErr, "%s at line %d of [%.10s]",-
3504 zType, lineno, 20+sqlite3_sourceid());-
3505 return iErr;
executed 1888 times by 1 test: return iErr;
Executed by:
  • Self test (438)
1888
3506}-
3507int sqlite3CorruptError(int lineno){-
3508 testcase( sqlite3GlobalConfig.xLog!=0 );-
3509 return sqlite3ReportError(SQLITE_CORRUPT, lineno, "database corruption");
executed 358 times by 1 test: return sqlite3ReportError(11, lineno, "database corruption");
Executed by:
  • Self test (438)
358
3510}-
3511int sqlite3MisuseError(int lineno){-
3512 testcase( sqlite3GlobalConfig.xLog!=0 );-
3513 return sqlite3ReportError(SQLITE_MISUSE, lineno, "misuse");
executed 1018 times by 1 test: return sqlite3ReportError(21, lineno, "misuse");
Executed by:
  • Self test (438)
1018
3514}-
3515int sqlite3CantopenError(int lineno){-
3516 testcase( sqlite3GlobalConfig.xLog!=0 );-
3517 return sqlite3ReportError(SQLITE_CANTOPEN, lineno, "cannot open file");
executed 512 times by 1 test: return sqlite3ReportError(14, lineno, "cannot open file");
Executed by:
  • Self test (438)
512
3518}-
3519#ifdef SQLITE_DEBUG-
3520int sqlite3CorruptPgnoError(int lineno, Pgno pgno){-
3521 char zMsg[100];-
3522 sqlite3_snprintf(sizeof(zMsg), zMsg, "database corruption page %d", pgno);-
3523 testcase( sqlite3GlobalConfig.xLog!=0 );-
3524 return sqlite3ReportError(SQLITE_CORRUPT, lineno, zMsg);-
3525}-
3526int sqlite3NomemError(int lineno){-
3527 testcase( sqlite3GlobalConfig.xLog!=0 );-
3528 return sqlite3ReportError(SQLITE_NOMEM, lineno, "OOM");-
3529}-
3530int sqlite3IoerrnomemError(int lineno){-
3531 testcase( sqlite3GlobalConfig.xLog!=0 );-
3532 return sqlite3ReportError(SQLITE_IOERR_NOMEM, lineno, "I/O OOM error");-
3533}-
3534#endif-
3535-
3536#ifndef SQLITE_OMIT_DEPRECATED-
3537/*-
3538** This is a convenience routine that makes sure that all thread-specific-
3539** data for this thread has been deallocated.-
3540**-
3541** SQLite no longer uses thread-specific data so this routine is now a-
3542** no-op. It is retained for historical compatibility.-
3543*/-
3544void sqlite3_thread_cleanup(void){-
3545}-
3546#endif-
3547-
3548/*-
3549** Return meta information about a specific column of a database table.-
3550** See comment in sqlite3.h (sqlite.h.in) for details.-
3551*/-
3552int sqlite3_table_column_metadata(-
3553 sqlite3 *db, /* Connection handle */-
3554 const char *zDbName, /* Database name or NULL */-
3555 const char *zTableName, /* Table name */-
3556 const char *zColumnName, /* Column name */-
3557 char const **pzDataType, /* OUTPUT: Declared data type */-
3558 char const **pzCollSeq, /* OUTPUT: Collation sequence name */-
3559 int *pNotNull, /* OUTPUT: True if NOT NULL constraint exists */-
3560 int *pPrimaryKey, /* OUTPUT: True if column part of PK */-
3561 int *pAutoinc /* OUTPUT: True if column is auto-increment */-
3562){-
3563 int rc;-
3564 char *zErrMsg = 0;-
3565 Table *pTab = 0;-
3566 Column *pCol = 0;-
3567 int iCol = 0;-
3568 char const *zDataType = 0;-
3569 char const *zCollSeq = 0;-
3570 int notnull = 0;-
3571 int primarykey = 0;-
3572 int autoinc = 0;-
3573-
3574-
3575#ifdef SQLITE_ENABLE_API_ARMOR-
3576 if( !sqlite3SafetyCheckOk(db) || zTableName==0 ){-
3577 return SQLITE_MISUSE_BKPT;-
3578 }-
3579#endif-
3580-
3581 /* Ensure the database schema has been loaded */-
3582 sqlite3_mutex_enter(db->mutex);-
3583 sqlite3BtreeEnterAll(db);-
3584 rc = sqlite3Init(db, &zErrMsg);-
3585 if( SQLITE_OK!=rc ){
0!=rcDescription
TRUEnever evaluated
FALSEevaluated 8756 times by 1 test
Evaluated by:
  • Self test (438)
0-8756
3586 goto error_out;
never executed: goto error_out;
0
3587 }-
3588-
3589 /* Locate the table in question */-
3590 pTab = sqlite3FindTable(db, zTableName, zDbName);-
3591 if( !pTab || pTab->pSelect ){
!pTabDescription
TRUEevaluated 5 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 8751 times by 1 test
Evaluated by:
  • Self test (438)
pTab->pSelectDescription
TRUEevaluated 10 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 8741 times by 1 test
Evaluated by:
  • Self test (438)
5-8751
3592 pTab = 0;-
3593 goto error_out;
executed 15 times by 1 test: goto error_out;
Executed by:
  • Self test (438)
15
3594 }-
3595-
3596 /* Find the column for which info is requested */-
3597 if( zColumnName==0 ){
zColumnName==0Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 8740 times by 1 test
Evaluated by:
  • Self test (438)
1-8740
3598 /* Query for existance of table only */-
3599 }else{
executed 1 time by 1 test: end of block
Executed by:
  • Self test (438)
1
3600 for(iCol=0; iCol<pTab->nCol; iCol++){
iCol<pTab->nColDescription
TRUEevaluated 17471 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 8566 times by 1 test
Evaluated by:
  • Self test (438)
8566-17471
3601 pCol = &pTab->aCol[iCol];-
3602 if( 0==sqlite3StrICmp(pCol->zName, zColumnName) ){
0==sqlite3StrI..., zColumnName)Description
TRUEevaluated 174 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 17297 times by 1 test
Evaluated by:
  • Self test (438)
174-17297
3603 break;
executed 174 times by 1 test: break;
Executed by:
  • Self test (438)
174
3604 }-
3605 }
executed 17297 times by 1 test: end of block
Executed by:
  • Self test (438)
17297
3606 if( iCol==pTab->nCol ){
iCol==pTab->nColDescription
TRUEevaluated 8566 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 174 times by 1 test
Evaluated by:
  • Self test (438)
174-8566
3607 if( HasRowid(pTab) && sqlite3IsRowid(zColumnName) ){
(((pTab)->tabF... & 0x0020)==0)Description
TRUEevaluated 8563 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 3 times by 1 test
Evaluated by:
  • Self test (438)
sqlite3IsRowid(zColumnName)Description
TRUEevaluated 8561 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
2-8563
3608 iCol = pTab->iPKey;-
3609 pCol = iCol>=0 ? &pTab->aCol[iCol] : 0;
iCol>=0Description
TRUEevaluated 8551 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 10 times by 1 test
Evaluated by:
  • Self test (438)
10-8551
3610 }else{
executed 8561 times by 1 test: end of block
Executed by:
  • Self test (438)
8561
3611 pTab = 0;-
3612 goto error_out;
executed 5 times by 1 test: goto error_out;
Executed by:
  • Self test (438)
5
3613 }-
3614 }-
3615 }
executed 8735 times by 1 test: end of block
Executed by:
  • Self test (438)
8735
3616-
3617 /* The following block stores the meta information that will be returned-
3618 ** to the caller in local variables zDataType, zCollSeq, notnull, primarykey-
3619 ** and autoinc. At this point there are two possibilities:-
3620 ** -
3621 ** 1. The specified column name was rowid", "oid" or "_rowid_" -
3622 ** and there is no explicitly declared IPK column. -
3623 **-
3624 ** 2. The table is not a view and the column name identified an -
3625 ** explicitly declared column. Copy meta information from *pCol.-
3626 */ -
3627 if( pCol ){
pColDescription
TRUEevaluated 8725 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 11 times by 1 test
Evaluated by:
  • Self test (438)
11-8725
3628 zDataType = sqlite3ColumnType(pCol,0);-
3629 zCollSeq = pCol->zColl;-
3630 notnull = pCol->notNull!=0;-
3631 primarykey = (pCol->colFlags & COLFLAG_PRIMKEY)!=0;-
3632 autoinc = pTab->iPKey==iCol && (pTab->tabFlags & TF_Autoincrement)!=0;
pTab->iPKey==iColDescription
TRUEevaluated 8555 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 170 times by 1 test
Evaluated by:
  • Self test (438)
(pTab->tabFlags & 0x0008)!=0Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 8551 times by 1 test
Evaluated by:
  • Self test (438)
4-8555
3633 }else{
executed 8725 times by 1 test: end of block
Executed by:
  • Self test (438)
8725
3634 zDataType = "INTEGER";-
3635 primarykey = 1;-
3636 }
executed 11 times by 1 test: end of block
Executed by:
  • Self test (438)
11
3637 if( !zCollSeq ){
!zCollSeqDescription
TRUEevaluated 8728 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 8 times by 1 test
Evaluated by:
  • Self test (438)
8-8728
3638 zCollSeq = sqlite3StrBINARY;-
3639 }
executed 8728 times by 1 test: end of block
Executed by:
  • Self test (438)
8728
3640-
3641error_out:
code before this statement executed 8736 times by 1 test: error_out:
Executed by:
  • Self test (438)
8736
3642 sqlite3BtreeLeaveAll(db);-
3643-
3644 /* Whether the function call succeeded or failed, set the output parameters-
3645 ** to whatever their local counterparts contain. If an error did occur,-
3646 ** this has the effect of zeroing all output parameters.-
3647 */-
3648 if( pzDataType ) *pzDataType = zDataType;
executed 8614 times by 1 test: *pzDataType = zDataType;
Executed by:
  • Self test (438)
pzDataTypeDescription
TRUEevaluated 8614 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 142 times by 1 test
Evaluated by:
  • Self test (438)
142-8614
3649 if( pzCollSeq ) *pzCollSeq = zCollSeq;
executed 192 times by 1 test: *pzCollSeq = zCollSeq;
Executed by:
  • Self test (438)
pzCollSeqDescription
TRUEevaluated 192 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 8564 times by 1 test
Evaluated by:
  • Self test (438)
192-8564
3650 if( pNotNull ) *pNotNull = notnull;
executed 50 times by 1 test: *pNotNull = notnull;
Executed by:
  • Self test (438)
pNotNullDescription
TRUEevaluated 50 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 8706 times by 1 test
Evaluated by:
  • Self test (438)
50-8706
3651 if( pPrimaryKey ) *pPrimaryKey = primarykey;
executed 8614 times by 1 test: *pPrimaryKey = primarykey;
Executed by:
  • Self test (438)
pPrimaryKeyDescription
TRUEevaluated 8614 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 142 times by 1 test
Evaluated by:
  • Self test (438)
142-8614
3652 if( pAutoinc ) *pAutoinc = autoinc;
executed 50 times by 1 test: *pAutoinc = autoinc;
Executed by:
  • Self test (438)
pAutoincDescription
TRUEevaluated 50 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 8706 times by 1 test
Evaluated by:
  • Self test (438)
50-8706
3653-
3654 if( SQLITE_OK==rc && !pTab ){
0==rcDescription
TRUEevaluated 8756 times by 1 test
Evaluated by:
  • Self test (438)
FALSEnever evaluated
!pTabDescription
TRUEevaluated 20 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 8736 times by 1 test
Evaluated by:
  • Self test (438)
0-8756
3655 sqlite3DbFree(db, zErrMsg);-
3656 zErrMsg = sqlite3MPrintf(db, "no such table column: %s.%s", zTableName,-
3657 zColumnName);-
3658 rc = SQLITE_ERROR;-
3659 }
executed 20 times by 1 test: end of block
Executed by:
  • Self test (438)
20
3660 sqlite3ErrorWithMsg(db, rc, (zErrMsg?"%s":0), zErrMsg);-
3661 sqlite3DbFree(db, zErrMsg);-
3662 rc = sqlite3ApiExit(db, rc);-
3663 sqlite3_mutex_leave(db->mutex);-
3664 return rc;
executed 8756 times by 1 test: return rc;
Executed by:
  • Self test (438)
8756
3665}-
3666-
3667/*-
3668** Sleep for a little while. Return the amount of time slept.-
3669*/-
3670int sqlite3_sleep(int ms){-
3671 sqlite3_vfs *pVfs;-
3672 int rc;-
3673 pVfs = sqlite3_vfs_find(0);-
3674 if( pVfs==0 ) return 0;
executed 1 time by 1 test: return 0;
Executed by:
  • Self test (438)
pVfs==0Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 6 times by 1 test
Evaluated by:
  • Self test (438)
1-6
3675-
3676 /* This function works in milliseconds, but the underlying OsSleep() -
3677 ** API uses microseconds. Hence the 1000's.-
3678 */-
3679 rc = (sqlite3OsSleep(pVfs, 1000*ms)/1000);-
3680 return rc;
executed 6 times by 1 test: return rc;
Executed by:
  • Self test (438)
6
3681}-
3682-
3683/*-
3684** Enable or disable the extended result codes.-
3685*/-
3686int sqlite3_extended_result_codes(sqlite3 *db, int onoff){-
3687#ifdef SQLITE_ENABLE_API_ARMOR-
3688 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;-
3689#endif-
3690 sqlite3_mutex_enter(db->mutex);-
3691 db->errMask = onoff ? 0xffffffff : 0xff;
onoffDescription
TRUEevaluated 2941 times by 1 test
Evaluated by:
  • Self test (438)
FALSEnever evaluated
0-2941
3692 sqlite3_mutex_leave(db->mutex);-
3693 return SQLITE_OK;
executed 2941 times by 1 test: return 0;
Executed by:
  • Self test (438)
2941
3694}-
3695-
3696/*-
3697** Invoke the xFileControl method on a particular database.-
3698*/-
3699int sqlite3_file_control(sqlite3 *db, const char *zDbName, int op, void *pArg){-
3700 int rc = SQLITE_ERROR;-
3701 Btree *pBtree;-
3702-
3703#ifdef SQLITE_ENABLE_API_ARMOR-
3704 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;-
3705#endif-
3706 sqlite3_mutex_enter(db->mutex);-
3707 pBtree = sqlite3DbNameToBtree(db, zDbName);-
3708 if( pBtree ){
pBtreeDescription
TRUEevaluated 36634 times by 53 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (2)
  • Self test (20)
  • Self test (22)
  • Self test (28)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (39)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
  • Self test (54)
  • ...
FALSEevaluated 5 times by 1 test
Evaluated by:
  • Self test (438)
5-36634
3709 Pager *pPager;-
3710 sqlite3_file *fd;-
3711 sqlite3BtreeEnter(pBtree);-
3712 pPager = sqlite3BtreePager(pBtree);-
3713 assert( pPager!=0 );-
3714 fd = sqlite3PagerFile(pPager);-
3715 assert( fd!=0 );-
3716 if( op==SQLITE_FCNTL_FILE_POINTER ){
op==7Description
TRUEevaluated 95 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 36539 times by 53 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (2)
  • Self test (20)
  • Self test (22)
  • Self test (28)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (39)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
  • Self test (54)
  • ...
95-36539
3717 *(sqlite3_file**)pArg = fd;-
3718 rc = SQLITE_OK;-
3719 }else if( op==SQLITE_FCNTL_VFS_POINTER ){
executed 95 times by 1 test: end of block
Executed by:
  • Self test (438)
op==27Description
TRUEnever evaluated
FALSEevaluated 36539 times by 53 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (2)
  • Self test (20)
  • Self test (22)
  • Self test (28)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (39)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
  • Self test (54)
  • ...
0-36539
3720 *(sqlite3_vfs**)pArg = sqlite3PagerVfs(pPager);-
3721 rc = SQLITE_OK;-
3722 }else if( op==SQLITE_FCNTL_JOURNAL_POINTER ){
never executed: end of block
op==28Description
TRUEnever evaluated
FALSEevaluated 36539 times by 53 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (2)
  • Self test (20)
  • Self test (22)
  • Self test (28)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (39)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
  • Self test (54)
  • ...
0-36539
3723 *(sqlite3_file**)pArg = sqlite3PagerJrnlFile(pPager);-
3724 rc = SQLITE_OK;-
3725 }else if( op==SQLITE_FCNTL_DATA_VERSION ){
never executed: end of block
op==35Description
TRUEevaluated 8 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 36531 times by 53 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (2)
  • Self test (20)
  • Self test (22)
  • Self test (28)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (39)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
  • Self test (54)
  • ...
0-36531
3726 *(unsigned int*)pArg = sqlite3PagerDataVersion(pPager);-
3727 rc = SQLITE_OK;-
3728 }else{
executed 8 times by 1 test: end of block
Executed by:
  • Self test (438)
8
3729 rc = sqlite3OsFileControl(fd, op, pArg);-
3730 }
executed 36531 times by 53 tests: end of block
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (2)
  • Self test (20)
  • Self test (22)
  • Self test (28)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (39)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
  • Self test (54)
  • ...
36531
3731 sqlite3BtreeLeave(pBtree);-
3732 }
executed 36634 times by 53 tests: end of block
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (2)
  • Self test (20)
  • Self test (22)
  • Self test (28)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (39)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
  • Self test (54)
  • ...
36634
3733 sqlite3_mutex_leave(db->mutex);-
3734 return rc;
executed 36639 times by 53 tests: return rc;
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (2)
  • Self test (20)
  • Self test (22)
  • Self test (28)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (39)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
  • Self test (54)
  • ...
36639
3735}-
3736-
3737/*-
3738** Interface to the testing logic.-
3739*/-
3740int sqlite3_test_control(int op, ...){-
3741 int rc = 0;-
3742#ifdef SQLITE_UNTESTABLE-
3743 UNUSED_PARAMETER(op);-
3744#else-
3745 va_list ap;-
3746 va_start(ap, op);-
3747 switch( op ){-
3748-
3749 /*-
3750 ** Save the current state of the PRNG.-
3751 */-
3752 case SQLITE_TESTCTRL_PRNG_SAVE: {
executed 5 times by 1 test: case 5:
Executed by:
  • Self test (438)
5
3753 sqlite3PrngSaveState();-
3754 break;
executed 5 times by 1 test: break;
Executed by:
  • Self test (438)
5
3755 }-
3756-
3757 /*-
3758 ** Restore the state of the PRNG to the last state saved using-
3759 ** PRNG_SAVE. If PRNG_SAVE has never before been called, then-
3760 ** this verb acts like PRNG_RESET.-
3761 */-
3762 case SQLITE_TESTCTRL_PRNG_RESTORE: {
executed 927 times by 1 test: case 6:
Executed by:
  • Self test (438)
927
3763 sqlite3PrngRestoreState();-
3764 break;
executed 927 times by 1 test: break;
Executed by:
  • Self test (438)
927
3765 }-
3766-
3767 /*-
3768 ** Reset the PRNG back to its uninitialized state. The next call-
3769 ** to sqlite3_randomness() will reseed the PRNG using a single call-
3770 ** to the xRandomness method of the default VFS.-
3771 */-
3772 case SQLITE_TESTCTRL_PRNG_RESET: {
executed 978 times by 1 test: case 7:
Executed by:
  • Self test (438)
978
3773 sqlite3_randomness(0,0);-
3774 break;
executed 978 times by 1 test: break;
Executed by:
  • Self test (438)
978
3775 }-
3776-
3777 /*-
3778 ** sqlite3_test_control(BITVEC_TEST, size, program)-
3779 **-
3780 ** Run a test against a Bitvec object of size. The program argument-
3781 ** is an array of integers that defines the test. Return -1 on a-
3782 ** memory allocation error, 0 on success, or non-zero for an error.-
3783 ** See the sqlite3BitvecBuiltinTest() for additional information.-
3784 */-
3785 case SQLITE_TESTCTRL_BITVEC_TEST: {
executed 180 times by 1 test: case 8:
Executed by:
  • Self test (438)
180
3786 int sz = va_arg(ap, int);-
3787 int *aProg = va_arg(ap, int*);-
3788 rc = sqlite3BitvecBuiltinTest(sz, aProg);-
3789 break;
executed 180 times by 1 test: break;
Executed by:
  • Self test (438)
180
3790 }-
3791-
3792 /*-
3793 ** sqlite3_test_control(FAULT_INSTALL, xCallback)-
3794 **-
3795 ** Arrange to invoke xCallback() whenever sqlite3FaultSim() is called,-
3796 ** if xCallback is not NULL.-
3797 **-
3798 ** As a test of the fault simulator mechanism itself, sqlite3FaultSim(0)-
3799 ** is called immediately after installing the new callback and the return-
3800 ** value from sqlite3FaultSim(0) becomes the return from-
3801 ** sqlite3_test_control().-
3802 */-
3803 case SQLITE_TESTCTRL_FAULT_INSTALL: {
executed 2 times by 1 test: case 9:
Executed by:
  • Self test (438)
2
3804 /* MSVC is picky about pulling func ptrs from va lists.-
3805 ** http://support.microsoft.com/kb/47961-
3806 ** sqlite3GlobalConfig.xTestCallback = va_arg(ap, int(*)(int));-
3807 */-
3808 typedef int(*TESTCALLBACKFUNC_t)(int);-
3809 sqlite3GlobalConfig.xTestCallback = va_arg(ap, TESTCALLBACKFUNC_t);-
3810 rc = sqlite3FaultSim(0);-
3811 break;
executed 2 times by 1 test: break;
Executed by:
  • Self test (438)
2
3812 }-
3813-
3814 /*-
3815 ** sqlite3_test_control(BENIGN_MALLOC_HOOKS, xBegin, xEnd)-
3816 **-
3817 ** Register hooks to call to indicate which malloc() failures -
3818 ** are benign.-
3819 */-
3820 case SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS: {
executed 1 time by 1 test: case 10:
Executed by:
  • Self test (438)
1
3821 typedef void (*void_function)(void);-
3822 void_function xBenignBegin;-
3823 void_function xBenignEnd;-
3824 xBenignBegin = va_arg(ap, void_function);-
3825 xBenignEnd = va_arg(ap, void_function);-
3826 sqlite3BenignMallocHooks(xBenignBegin, xBenignEnd);-
3827 break;
executed 1 time by 1 test: break;
Executed by:
  • Self test (438)
1
3828 }-
3829-
3830 /*-
3831 ** sqlite3_test_control(SQLITE_TESTCTRL_PENDING_BYTE, unsigned int X)-
3832 **-
3833 ** Set the PENDING byte to the value in the argument, if X>0.-
3834 ** Make no changes if X==0. Return the value of the pending byte-
3835 ** as it existing before this routine was called.-
3836 **-
3837 ** IMPORTANT: Changing the PENDING byte from 0x40000000 results in-
3838 ** an incompatible database file format. Changing the PENDING byte-
3839 ** while any database connection is open results in undefined and-
3840 ** deleterious behavior.-
3841 */-
3842 case SQLITE_TESTCTRL_PENDING_BYTE: {
executed 1417 times by 436 tests: case 11:
Executed by:
  • 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)
  • Self test (121)
  • ...
1417
3843 rc = PENDING_BYTE;-
3844#ifndef SQLITE_OMIT_WSD-
3845 {-
3846 unsigned int newVal = va_arg(ap, unsigned int);-
3847 if( newVal ) sqlite3PendingByte = newVal;
executed 1417 times by 436 tests: sqlite3PendingByte = newVal;
Executed by:
  • 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)
  • Self test (121)
  • ...
newValDescription
TRUEevaluated 1417 times by 436 tests
Evaluated by:
  • 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)
  • Self test (121)
  • ...
FALSEnever evaluated
0-1417
3848 }-
3849#endif-
3850 break;
executed 1417 times by 436 tests: break;
Executed by:
  • 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)
  • Self test (121)
  • ...
1417
3851 }-
3852-
3853 /*-
3854 ** sqlite3_test_control(SQLITE_TESTCTRL_ASSERT, int X)-
3855 **-
3856 ** This action provides a run-time test to see whether or not-
3857 ** assert() was enabled at compile-time. If X is true and assert()-
3858 ** is enabled, then the return value is true. If X is true and-
3859 ** assert() is disabled, then the return value is zero. If X is-
3860 ** false and assert() is enabled, then the assertion fires and the-
3861 ** process aborts. If X is false and assert() is disabled, then the-
3862 ** return value is zero.-
3863 */-
3864 case SQLITE_TESTCTRL_ASSERT: {
never executed: case 12:
0
3865 volatile int x = 0;-
3866 assert( /*side-effects-ok*/ (x = va_arg(ap,int))!=0 );-
3867 rc = x;-
3868 break;
never executed: break;
0
3869 }-
3870-
3871-
3872 /*-
3873 ** sqlite3_test_control(SQLITE_TESTCTRL_ALWAYS, int X)-
3874 **-
3875 ** This action provides a run-time test to see how the ALWAYS and-
3876 ** NEVER macros were defined at compile-time.-
3877 **-
3878 ** The return value is ALWAYS(X) if X is true, or 0 if X is false.-
3879 **-
3880 ** The recommended test is X==2. If the return value is 2, that means-
3881 ** ALWAYS() and NEVER() are both no-op pass-through macros, which is the-
3882 ** default setting. If the return value is 1, then ALWAYS() is either-
3883 ** hard-coded to true or else it asserts if its argument is false.-
3884 ** The first behavior (hard-coded to true) is the case if-
3885 ** SQLITE_TESTCTRL_ASSERT shows that assert() is disabled and the second-
3886 ** behavior (assert if the argument to ALWAYS() is false) is the case if-
3887 ** SQLITE_TESTCTRL_ASSERT shows that assert() is enabled.-
3888 **-
3889 ** The run-time test procedure might look something like this:-
3890 **-
3891 ** if( sqlite3_test_control(SQLITE_TESTCTRL_ALWAYS, 2)==2 ){-
3892 ** // ALWAYS() and NEVER() are no-op pass-through macros-
3893 ** }else if( sqlite3_test_control(SQLITE_TESTCTRL_ASSERT, 1) ){-
3894 ** // ALWAYS(x) asserts that x is true. NEVER(x) asserts x is false.-
3895 ** }else{-
3896 ** // ALWAYS(x) is a constant 1. NEVER(x) is a constant 0.-
3897 ** }-
3898 */-
3899 case SQLITE_TESTCTRL_ALWAYS: {
never executed: case 13:
0
3900 int x = va_arg(ap,int);-
3901 rc = x ? ALWAYS(x) : 0;
xDescription
TRUEnever evaluated
FALSEnever evaluated
0
3902 break;
never executed: break;
0
3903 }-
3904-
3905 /*-
3906 ** sqlite3_test_control(SQLITE_TESTCTRL_BYTEORDER);-
3907 **-
3908 ** The integer returned reveals the byte-order of the computer on which-
3909 ** SQLite is running:-
3910 **-
3911 ** 1 big-endian, determined at run-time-
3912 ** 10 little-endian, determined at run-time-
3913 ** 432101 big-endian, determined at compile-time-
3914 ** 123410 little-endian, determined at compile-time-
3915 */ -
3916 case SQLITE_TESTCTRL_BYTEORDER: {
never executed: case 22:
0
3917 rc = SQLITE_BYTEORDER*100 + SQLITE_LITTLEENDIAN*10 + SQLITE_BIGENDIAN;-
3918 break;
never executed: break;
0
3919 }-
3920-
3921 /* sqlite3_test_control(SQLITE_TESTCTRL_RESERVE, sqlite3 *db, int N)-
3922 **-
3923 ** Set the nReserve size to N for the main database on the database-
3924 ** connection db.-
3925 */-
3926 case SQLITE_TESTCTRL_RESERVE: {
never executed: case 14:
0
3927 sqlite3 *db = va_arg(ap, sqlite3*);-
3928 int x = va_arg(ap,int);-
3929 sqlite3_mutex_enter(db->mutex);-
3930 sqlite3BtreeSetPageSize(db->aDb[0].pBt, 0, x, 0);-
3931 sqlite3_mutex_leave(db->mutex);-
3932 break;
never executed: break;
0
3933 }-
3934-
3935 /* sqlite3_test_control(SQLITE_TESTCTRL_OPTIMIZATIONS, sqlite3 *db, int N)-
3936 **-
3937 ** Enable or disable various optimizations for testing purposes. The -
3938 ** argument N is a bitmask of optimizations to be disabled. For normal-
3939 ** operation N should be 0. The idea is that a test program (like the-
3940 ** SQL Logic Test or SLT test module) can run the same SQL multiple times-
3941 ** with various optimizations disabled to verify that the same answer-
3942 ** is obtained in every case.-
3943 */-
3944 case SQLITE_TESTCTRL_OPTIMIZATIONS: {
executed 27 times by 1 test: case 15:
Executed by:
  • Self test (438)
27
3945 sqlite3 *db = va_arg(ap, sqlite3*);-
3946 db->dbOptFlags = (u16)(va_arg(ap, int) & 0xffff);-
3947 break;
executed 27 times by 1 test: break;
Executed by:
  • Self test (438)
27
3948 }-
3949-
3950 /* sqlite3_test_control(SQLITE_TESTCTRL_LOCALTIME_FAULT, int onoff);-
3951 **-
3952 ** If parameter onoff is non-zero, configure the wrappers so that all-
3953 ** subsequent calls to localtime() and variants fail. If onoff is zero,-
3954 ** undo this setting.-
3955 */-
3956 case SQLITE_TESTCTRL_LOCALTIME_FAULT: {
executed 2 times by 1 test: case 18:
Executed by:
  • Self test (438)
2
3957 sqlite3GlobalConfig.bLocaltimeFault = va_arg(ap, int);-
3958 break;
executed 2 times by 1 test: break;
Executed by:
  • Self test (438)
2
3959 }-
3960-
3961 /* sqlite3_test_control(SQLITE_TESTCTRL_NEVER_CORRUPT, int);-
3962 **-
3963 ** Set or clear a flag that indicates that the database file is always well--
3964 ** formed and never corrupt. This flag is clear by default, indicating that-
3965 ** database files might have arbitrary corruption. Setting the flag during-
3966 ** testing causes certain assert() statements in the code to be activated-
3967 ** that demonstrat invariants on well-formed database files.-
3968 */-
3969 case SQLITE_TESTCTRL_NEVER_CORRUPT: {
executed 996 times by 1 test: case 20:
Executed by:
  • Self test (438)
996
3970 sqlite3GlobalConfig.neverCorrupt = va_arg(ap, int);-
3971 break;
executed 996 times by 1 test: break;
Executed by:
  • Self test (438)
996
3972 }-
3973-
3974 /* Set the threshold at which OP_Once counters reset back to zero.-
3975 ** By default this is 0x7ffffffe (over 2 billion), but that value is-
3976 ** too big to test in a reasonable amount of time, so this control is-
3977 ** provided to set a small and easily reachable reset value.-
3978 */-
3979 case SQLITE_TESTCTRL_ONCE_RESET_THRESHOLD: {
never executed: case 19:
0
3980 sqlite3GlobalConfig.iOnceResetThreshold = va_arg(ap, int);-
3981 break;
never executed: break;
0
3982 }-
3983-
3984 /* sqlite3_test_control(SQLITE_TESTCTRL_VDBE_COVERAGE, xCallback, ptr);-
3985 **-
3986 ** Set the VDBE coverage callback function to xCallback with context -
3987 ** pointer ptr.-
3988 */-
3989 case SQLITE_TESTCTRL_VDBE_COVERAGE: {
never executed: case 21:
0
3990#ifdef SQLITE_VDBE_COVERAGE-
3991 typedef void (*branch_callback)(void*,unsigned int,-
3992 unsigned char,unsigned char);-
3993 sqlite3GlobalConfig.xVdbeBranch = va_arg(ap,branch_callback);-
3994 sqlite3GlobalConfig.pVdbeBranchArg = va_arg(ap,void*);-
3995#endif-
3996 break;
never executed: break;
0
3997 }-
3998-
3999 /* sqlite3_test_control(SQLITE_TESTCTRL_SORTER_MMAP, db, nMax); */-
4000 case SQLITE_TESTCTRL_SORTER_MMAP: {
executed 7 times by 1 test: case 24:
Executed by:
  • Self test (438)
7
4001 sqlite3 *db = va_arg(ap, sqlite3*);-
4002 db->nMaxSorterMmap = va_arg(ap, int);-
4003 break;
executed 7 times by 1 test: break;
Executed by:
  • Self test (438)
7
4004 }-
4005-
4006 /* sqlite3_test_control(SQLITE_TESTCTRL_ISINIT);-
4007 **-
4008 ** Return SQLITE_OK if SQLite has been initialized and SQLITE_ERROR if-
4009 ** not.-
4010 */-
4011 case SQLITE_TESTCTRL_ISINIT: {
never executed: case 23:
0
4012 if( sqlite3GlobalConfig.isInit==0 ) rc = SQLITE_ERROR;
never executed: rc = 1;
sqlite3Config.isInit==0Description
TRUEnever evaluated
FALSEnever evaluated
0
4013 break;
never executed: break;
0
4014 }-
4015-
4016 /* sqlite3_test_control(SQLITE_TESTCTRL_IMPOSTER, db, dbName, onOff, tnum);-
4017 **-
4018 ** This test control is used to create imposter tables. "db" is a pointer-
4019 ** to the database connection. dbName is the database name (ex: "main" or-
4020 ** "temp") which will receive the imposter. "onOff" turns imposter mode on-
4021 ** or off. "tnum" is the root page of the b-tree to which the imposter-
4022 ** table should connect.-
4023 **-
4024 ** Enable imposter mode only when the schema has already been parsed. Then-
4025 ** run a single CREATE TABLE statement to construct the imposter table in-
4026 ** the parsed schema. Then turn imposter mode back off again.-
4027 **-
4028 ** If onOff==0 and tnum>0 then reset the schema for all databases, causing-
4029 ** the schema to be reparsed the next time it is needed. This has the-
4030 ** effect of erasing all imposter tables.-
4031 */-
4032 case SQLITE_TESTCTRL_IMPOSTER: {
executed 4 times by 1 test: case 25:
Executed by:
  • Self test (438)
4
4033 sqlite3 *db = va_arg(ap, sqlite3*);-
4034 sqlite3_mutex_enter(db->mutex);-
4035 db->init.iDb = sqlite3FindDbName(db, va_arg(ap,const char*));-
4036 db->init.busy = db->init.imposterTable = va_arg(ap,int);-
4037 db->init.newTnum = va_arg(ap,int);-
4038 if( db->init.busy==0 && db->init.newTnum>0 ){
db->init.busy==0Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
db->init.newTnum>0Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1 time by 1 test
Evaluated by:
  • Self test (438)
1-2
4039 sqlite3ResetAllSchemasOfConnection(db);-
4040 }
executed 1 time by 1 test: end of block
Executed by:
  • Self test (438)
1
4041 sqlite3_mutex_leave(db->mutex);-
4042 break;
executed 4 times by 1 test: break;
Executed by:
  • Self test (438)
4
4043 }-
4044-
4045#if defined(YYCOVERAGE)-
4046 /* sqlite3_test_control(SQLITE_TESTCTRL_PARSER_COVERAGE, FILE *out)-
4047 **-
4048 ** This test control (only available when SQLite is compiled with-
4049 ** -DYYCOVERAGE) writes a report onto "out" that shows all-
4050 ** state/lookahead combinations in the parser state machine-
4051 ** which are never exercised. If any state is missed, make the-
4052 ** return code SQLITE_ERROR.-
4053 */-
4054 case SQLITE_TESTCTRL_PARSER_COVERAGE: {-
4055 FILE *out = va_arg(ap, FILE*);-
4056 if( sqlite3ParserCoverage(out) ) rc = SQLITE_ERROR;-
4057 break;-
4058 }-
4059#endif /* defined(YYCOVERAGE) */-
4060 }-
4061 va_end(ap);-
4062#endif /* SQLITE_UNTESTABLE */-
4063 return rc;
executed 4556 times by 436 tests: return rc;
Executed by:
  • 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)
  • Self test (121)
  • ...
4556
4064}-
4065-
4066/*-
4067** This is a utility routine, useful to VFS implementations, that checks-
4068** to see if a database file was a URI that contained a specific query -
4069** parameter, and if so obtains the value of the query parameter.-
4070**-
4071** The zFilename argument is the filename pointer passed into the xOpen()-
4072** method of a VFS implementation. The zParam argument is the name of the-
4073** query parameter we seek. This routine returns the value of the zParam-
4074** parameter if it exists. If the parameter does not exist, this routine-
4075** returns a NULL pointer.-
4076*/-
4077const char *sqlite3_uri_parameter(const char *zFilename, const char *zParam){-
4078 if( zFilename==0 || zParam==0 ) return 0;
executed 79399 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)
  • ...
zFilename==0Description
TRUEevaluated 79399 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 65362 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)
  • ...
zParam==0Description
TRUEnever evaluated
FALSEevaluated 65362 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-79399
4079 zFilename += sqlite3Strlen30(zFilename) + 1;-
4080 while( zFilename[0] ){
zFilename[0]Description
TRUEevaluated 563 times by 4 tests
Evaluated by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
FALSEevaluated 65322 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)
  • ...
563-65322
4081 int x = strcmp(zFilename, zParam);
never executed: __result = (((const unsigned char *) (const char *) ( zFilename ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( zParam ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
4082 zFilename += sqlite3Strlen30(zFilename) + 1;-
4083 if( x==0 ) return zFilename;
executed 40 times by 4 tests: return zFilename;
Executed by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
x==0Description
TRUEevaluated 40 times by 4 tests
Evaluated by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
FALSEevaluated 523 times by 4 tests
Evaluated by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
40-523
4084 zFilename += sqlite3Strlen30(zFilename) + 1;-
4085 }
executed 523 times by 4 tests: end of block
Executed by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
523
4086 return 0;
executed 65322 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)
  • ...
65322
4087}-
4088-
4089/*-
4090** Return a boolean value for a query parameter.-
4091*/-
4092int sqlite3_uri_boolean(const char *zFilename, const char *zParam, int bDflt){-
4093 const char *z = sqlite3_uri_parameter(zFilename, zParam);-
4094 bDflt = bDflt!=0;-
4095 return z ? sqlite3GetBoolean(z, bDflt) : bDflt;
executed 143447 times by 438 tests: return z ? sqlite3GetBoolean(z, bDflt) : bDflt;
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)
  • ...
zDescription
TRUEevaluated 39 times by 4 tests
Evaluated by:
  • Self test (103)
  • Self test (104)
  • Self test (438)
  • Self test (61)
FALSEevaluated 143408 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)
  • ...
39-143447
4096}-
4097-
4098/*-
4099** Return a 64-bit integer value for a query parameter.-
4100*/-
4101sqlite3_int64 sqlite3_uri_int64(-
4102 const char *zFilename, /* Filename as passed to xOpen */-
4103 const char *zParam, /* URI parameter sought */-
4104 sqlite3_int64 bDflt /* return if parameter is missing */-
4105){-
4106 const char *z = sqlite3_uri_parameter(zFilename, zParam);-
4107 sqlite3_int64 v;-
4108 if( z && sqlite3DecOrHexToI64(z, &v)==0 ){
zDescription
TRUEevaluated 1 time by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1148 times by 2 tests
Evaluated by:
  • Self test (34)
  • Self test (438)
sqlite3DecOrHexToI64(z, &v)==0Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • Self test (438)
FALSEnever evaluated
0-1148
4109 bDflt = v;-
4110 }
executed 1 time by 1 test: end of block
Executed by:
  • Self test (438)
1
4111 return bDflt;
executed 1149 times by 2 tests: return bDflt;
Executed by:
  • Self test (34)
  • Self test (438)
1149
4112}-
4113-
4114/*-
4115** Return the Btree pointer identified by zDbName. Return NULL if not found.-
4116*/-
4117Btree *sqlite3DbNameToBtree(sqlite3 *db, const char *zDbName){-
4118 int iDb = zDbName ? sqlite3FindDbName(db, zDbName) : 0;
zDbNameDescription
TRUEevaluated 1588 times by 12 tests
Evaluated by:
  • Self test (100)
  • Self test (34)
  • Self test (438)
  • Self test (91)
  • Self test (92)
  • Self test (93)
  • Self test (94)
  • Self test (95)
  • Self test (96)
  • Self test (97)
  • Self test (98)
  • Self test (99)
FALSEevaluated 35090 times by 42 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (2)
  • Self test (20)
  • Self test (22)
  • Self test (28)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (35)
  • Self test (39)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
  • Self test (54)
  • Self test (57)
  • Self test (58)
  • ...
1588-35090
4119 return iDb<0 ? 0 : db->aDb[iDb].pBt;
executed 36678 times by 53 tests: return iDb<0 ? 0 : db->aDb[iDb].pBt;
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (2)
  • Self test (20)
  • Self test (22)
  • Self test (28)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (39)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
  • Self test (54)
  • ...
iDb<0Description
TRUEevaluated 5 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 36673 times by 53 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (2)
  • Self test (20)
  • Self test (22)
  • Self test (28)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (39)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
  • Self test (54)
  • ...
5-36678
4120}-
4121-
4122/*-
4123** Return the filename of the database associated with a database-
4124** connection.-
4125*/-
4126const char *sqlite3_db_filename(sqlite3 *db, const char *zDbName){-
4127 Btree *pBt;-
4128#ifdef SQLITE_ENABLE_API_ARMOR-
4129 if( !sqlite3SafetyCheckOk(db) ){-
4130 (void)SQLITE_MISUSE_BKPT;-
4131 return 0;-
4132 }-
4133#endif-
4134 pBt = sqlite3DbNameToBtree(db, zDbName);-
4135 return pBt ? sqlite3BtreeGetFilename(pBt) : 0;
executed 34 times by 1 test: return pBt ? sqlite3BtreeGetFilename(pBt) : 0;
Executed by:
  • Self test (438)
pBtDescription
TRUEevaluated 23 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 11 times by 1 test
Evaluated by:
  • Self test (438)
11-34
4136}-
4137-
4138/*-
4139** Return 1 if database is read-only or 0 if read/write. Return -1 if-
4140** no such database exists.-
4141*/-
4142int sqlite3_db_readonly(sqlite3 *db, const char *zDbName){-
4143 Btree *pBt;-
4144#ifdef SQLITE_ENABLE_API_ARMOR-
4145 if( !sqlite3SafetyCheckOk(db) ){-
4146 (void)SQLITE_MISUSE_BKPT;-
4147 return -1;-
4148 }-
4149#endif-
4150 pBt = sqlite3DbNameToBtree(db, zDbName);-
4151 return pBt ? sqlite3BtreeIsReadonly(pBt) : -1;
executed 5 times by 1 test: return pBt ? sqlite3BtreeIsReadonly(pBt) : -1;
Executed by:
  • Self test (438)
pBtDescription
TRUEevaluated 4 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1 time by 1 test
Evaluated by:
  • Self test (438)
1-5
4152}-
4153-
4154#ifdef SQLITE_ENABLE_SNAPSHOT-
4155/*-
4156** Obtain a snapshot handle for the snapshot of database zDb currently -
4157** being read by handle db.-
4158*/-
4159int sqlite3_snapshot_get(-
4160 sqlite3 *db, -
4161 const char *zDb,-
4162 sqlite3_snapshot **ppSnapshot-
4163){-
4164 int rc = SQLITE_ERROR;-
4165#ifndef SQLITE_OMIT_WAL-
4166-
4167#ifdef SQLITE_ENABLE_API_ARMOR-
4168 if( !sqlite3SafetyCheckOk(db) ){-
4169 return SQLITE_MISUSE_BKPT;-
4170 }-
4171#endif-
4172 sqlite3_mutex_enter(db->mutex);-
4173-
4174 if( db->autoCommit==0 ){-
4175 int iDb = sqlite3FindDbName(db, zDb);-
4176 if( iDb==0 || iDb>1 ){-
4177 Btree *pBt = db->aDb[iDb].pBt;-
4178 if( 0==sqlite3BtreeIsInTrans(pBt) ){-
4179 rc = sqlite3BtreeBeginTrans(pBt, 0, 0);-
4180 if( rc==SQLITE_OK ){-
4181 rc = sqlite3PagerSnapshotGet(sqlite3BtreePager(pBt), ppSnapshot);-
4182 }-
4183 }-
4184 }-
4185 }-
4186-
4187 sqlite3_mutex_leave(db->mutex);-
4188#endif /* SQLITE_OMIT_WAL */-
4189 return rc;-
4190}-
4191-
4192/*-
4193** Open a read-transaction on the snapshot idendified by pSnapshot.-
4194*/-
4195int sqlite3_snapshot_open(-
4196 sqlite3 *db, -
4197 const char *zDb, -
4198 sqlite3_snapshot *pSnapshot-
4199){-
4200 int rc = SQLITE_ERROR;-
4201#ifndef SQLITE_OMIT_WAL-
4202-
4203#ifdef SQLITE_ENABLE_API_ARMOR-
4204 if( !sqlite3SafetyCheckOk(db) ){-
4205 return SQLITE_MISUSE_BKPT;-
4206 }-
4207#endif-
4208 sqlite3_mutex_enter(db->mutex);-
4209 if( db->autoCommit==0 ){-
4210 int iDb;-
4211 iDb = sqlite3FindDbName(db, zDb);-
4212 if( iDb==0 || iDb>1 ){-
4213 Btree *pBt = db->aDb[iDb].pBt;-
4214 if( sqlite3BtreeIsInTrans(pBt)==0 ){-
4215 Pager *pPager = sqlite3BtreePager(pBt);-
4216 int bUnlock = 0;-
4217 if( sqlite3BtreeIsInReadTrans(pBt) ){-
4218 if( db->nVdbeActive==0 ){-
4219 rc = sqlite3PagerSnapshotCheck(pPager, pSnapshot);-
4220 if( rc==SQLITE_OK ){-
4221 bUnlock = 1;-
4222 rc = sqlite3BtreeCommit(pBt);-
4223 }-
4224 }-
4225 }else{-
4226 rc = SQLITE_OK;-
4227 }-
4228 if( rc==SQLITE_OK ){-
4229 rc = sqlite3PagerSnapshotOpen(pPager, pSnapshot);-
4230 }-
4231 if( rc==SQLITE_OK ){-
4232 rc = sqlite3BtreeBeginTrans(pBt, 0, 0);-
4233 sqlite3PagerSnapshotOpen(pPager, 0);-
4234 }-
4235 if( bUnlock ){-
4236 sqlite3PagerSnapshotUnlock(pPager);-
4237 }-
4238 }-
4239 }-
4240 }-
4241-
4242 sqlite3_mutex_leave(db->mutex);-
4243#endif /* SQLITE_OMIT_WAL */-
4244 return rc;-
4245}-
4246-
4247/*-
4248** Recover as many snapshots as possible from the wal file associated with-
4249** schema zDb of database db.-
4250*/-
4251int sqlite3_snapshot_recover(sqlite3 *db, const char *zDb){-
4252 int rc = SQLITE_ERROR;-
4253 int iDb;-
4254#ifndef SQLITE_OMIT_WAL-
4255-
4256#ifdef SQLITE_ENABLE_API_ARMOR-
4257 if( !sqlite3SafetyCheckOk(db) ){-
4258 return SQLITE_MISUSE_BKPT;-
4259 }-
4260#endif-
4261-
4262 sqlite3_mutex_enter(db->mutex);-
4263 iDb = sqlite3FindDbName(db, zDb);-
4264 if( iDb==0 || iDb>1 ){-
4265 Btree *pBt = db->aDb[iDb].pBt;-
4266 if( 0==sqlite3BtreeIsInReadTrans(pBt) ){-
4267 rc = sqlite3BtreeBeginTrans(pBt, 0, 0);-
4268 if( rc==SQLITE_OK ){-
4269 rc = sqlite3PagerSnapshotRecover(sqlite3BtreePager(pBt));-
4270 sqlite3BtreeCommit(pBt);-
4271 }-
4272 }-
4273 }-
4274 sqlite3_mutex_leave(db->mutex);-
4275#endif /* SQLITE_OMIT_WAL */-
4276 return rc;-
4277}-
4278-
4279/*-
4280** Free a snapshot handle obtained from sqlite3_snapshot_get().-
4281*/-
4282void sqlite3_snapshot_free(sqlite3_snapshot *pSnapshot){-
4283 sqlite3_free(pSnapshot);-
4284}-
4285#endif /* SQLITE_ENABLE_SNAPSHOT */-
4286-
4287#ifndef SQLITE_OMIT_COMPILEOPTION_DIAGS-
4288/*-
4289** Given the name of a compile-time option, return true if that option-
4290** was used and false if not.-
4291**-
4292** The name can optionally begin with "SQLITE_" but the "SQLITE_" prefix-
4293** is not required for a match.-
4294*/-
4295int sqlite3_compileoption_used(const char *zOptName){-
4296 int i, n;-
4297 int nOpt;-
4298 const char **azCompileOpt;-
4299 -
4300#if SQLITE_ENABLE_API_ARMOR-
4301 if( zOptName==0 ){-
4302 (void)SQLITE_MISUSE_BKPT;-
4303 return 0;-
4304 }-
4305#endif-
4306-
4307 azCompileOpt = sqlite3CompileOptions(&nOpt);-
4308-
4309 if( sqlite3StrNICmp(zOptName, "SQLITE_", 7)==0 ) zOptName += 7;
executed 2 times by 1 test: zOptName += 7;
Executed by:
  • Self test (438)
sqlite3_strnic...QLITE_", 7)==0Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 23 times by 1 test
Evaluated by:
  • Self test (438)
2-23
4310 n = sqlite3Strlen30(zOptName);-
4311-
4312 /* Since nOpt is normally in single digits, a linear search is -
4313 ** adequate. No need for a binary search. */-
4314 for(i=0; i<nOpt; i++){
i<nOptDescription
TRUEevaluated 165 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 12 times by 1 test
Evaluated by:
  • Self test (438)
12-165
4315 if( sqlite3StrNICmp(zOptName, azCompileOpt[i], n)==0
sqlite3_strnic...eOpt[i], n)==0Description
TRUEevaluated 30 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 135 times by 1 test
Evaluated by:
  • Self test (438)
30-135
4316 && sqlite3IsIdChar((unsigned char)azCompileOpt[i][n])==0
sqlite3IsIdCha...eOpt[i][n])==0Description
TRUEevaluated 13 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 17 times by 1 test
Evaluated by:
  • Self test (438)
13-17
4317 ){-
4318 return 1;
executed 13 times by 1 test: return 1;
Executed by:
  • Self test (438)
13
4319 }-
4320 }
executed 152 times by 1 test: end of block
Executed by:
  • Self test (438)
152
4321 return 0;
executed 12 times by 1 test: return 0;
Executed by:
  • Self test (438)
12
4322}-
4323-
4324/*-
4325** Return the N-th compile-time option string. If N is out of range,-
4326** return a NULL pointer.-
4327*/-
4328const char *sqlite3_compileoption_get(int N){-
4329 int nOpt;-
4330 const char **azCompileOpt;-
4331 azCompileOpt = sqlite3CompileOptions(&nOpt);-
4332 if( N>=0 && N<nOpt ){
N>=0Description
TRUEevaluated 65 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1 time by 1 test
Evaluated by:
  • Self test (438)
N<nOptDescription
TRUEevaluated 58 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 7 times by 1 test
Evaluated by:
  • Self test (438)
1-65
4333 return azCompileOpt[N];
executed 58 times by 1 test: return azCompileOpt[N];
Executed by:
  • Self test (438)
58
4334 }-
4335 return 0;
executed 8 times by 1 test: return 0;
Executed by:
  • Self test (438)
8
4336}-
4337#endif /* SQLITE_OMIT_COMPILEOPTION_DIAGS */-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2