OpenCoverage

vdbeaux.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/sqlite/src/src/vdbeaux.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/*-
2** 2003 September 6-
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** This file contains code used for creating, destroying, and populating-
13** a VDBE (or an "sqlite3_stmt" as it is known to the outside world.) -
14*/-
15#include "sqliteInt.h"-
16#include "vdbeInt.h"-
17-
18/*-
19** Create a new virtual database engine.-
20*/-
21Vdbe *sqlite3VdbeCreate(Parse *pParse){-
22 sqlite3 *db = pParse->db;-
23 Vdbe *p;-
24 p = sqlite3DbMallocRawNN(db, sizeof(Vdbe) );-
25 if( p==0 ) return 0;
executed 147 times by 1 test: return 0;
Executed by:
  • Self test (438)
p==0Description
TRUEevaluated 147 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 460917 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)
  • ...
147-460917
26 memset(&p->aOp, 0, sizeof(Vdbe)-offsetof(Vdbe,aOp));-
27 p->db = db;-
28 if( db->pVdbe ){
db->pVdbeDescription
TRUEevaluated 397281 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 63636 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)
  • ...
63636-397281
29 db->pVdbe->pPrev = p;-
30 }
executed 397281 times by 436 tests: end of block
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)
  • ...
397281
31 p->pNext = db->pVdbe;-
32 p->pPrev = 0;-
33 db->pVdbe = p;-
34 p->magic = VDBE_MAGIC_INIT;-
35 p->pParse = pParse;-
36 pParse->pVdbe = p;-
37 assert( pParse->aLabel==0 );-
38 assert( pParse->nLabel==0 );-
39 assert( pParse->nOpAlloc==0 );-
40 assert( pParse->szOpAlloc==0 );-
41 sqlite3VdbeAddOp2(p, OP_Init, 0, 1);-
42 return p;
executed 460917 times by 436 tests: return p;
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)
  • ...
460917
43}-
44-
45/*-
46** Change the error string stored in Vdbe.zErrMsg-
47*/-
48void sqlite3VdbeError(Vdbe *p, const char *zFormat, ...){-
49 va_list ap;-
50 sqlite3DbFree(p->db, p->zErrMsg);-
51 va_start(ap, zFormat);-
52 p->zErrMsg = sqlite3VMPrintf(p->db, zFormat, ap);-
53 va_end(ap);-
54}
executed 4498 times by 3 tests: end of block
Executed by:
  • Self test (35)
  • Self test (39)
  • Self test (438)
4498
55-
56/*-
57** Remember the SQL string for a prepared statement.-
58*/-
59void sqlite3VdbeSetSql(Vdbe *p, const char *z, int n, u8 prepFlags){-
60 if( p==0 ) return;
executed 44481 times by 51 tests: return;
Executed by:
  • Self test
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (11)
  • Self test (15)
  • Self test (19)
  • Self test (23)
  • Self test (26)
  • Self test (27)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (35)
  • Self test (38)
  • Self test (39)
  • Self test (41)
  • Self test (42)
  • Self test (438)
  • Self test (44)
  • Self test (46)
  • Self test (47)
  • ...
p==0Description
TRUEevaluated 44481 times by 51 tests
Evaluated by:
  • Self test
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (11)
  • Self test (15)
  • Self test (19)
  • Self test (23)
  • Self test (26)
  • Self test (27)
  • Self test (29)
  • Self test (30)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (35)
  • Self test (38)
  • Self test (39)
  • Self test (41)
  • Self test (42)
  • Self test (438)
  • Self test (44)
  • Self test (46)
  • Self test (47)
  • ...
FALSEevaluated 310972 times by 435 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)
  • ...
44481-310972
61 p->prepFlags = prepFlags;-
62 if( (prepFlags & SQLITE_PREPARE_SAVESQL)==0 ){
(prepFlags & 0x80)==0Description
TRUEevaluated 8930 times by 2 tests
Evaluated by:
  • Self test (438)
  • Self test (63)
FALSEevaluated 302042 times by 435 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)
  • ...
8930-302042
63 p->expmask = 0;-
64 }
executed 8930 times by 2 tests: end of block
Executed by:
  • Self test (438)
  • Self test (63)
8930
65 assert( p->zSql==0 );-
66 p->zSql = sqlite3DbStrNDup(p->db, z, n);-
67}
executed 310972 times by 435 tests: end of block
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)
  • ...
310972
68-
69/*-
70** Swap all content between two VDBE structures.-
71*/-
72void sqlite3VdbeSwap(Vdbe *pA, Vdbe *pB){-
73 Vdbe tmp, *pTmp;-
74 char *zTmp;-
75 assert( pA->db==pB->db );-
76 tmp = *pA;-
77 *pA = *pB;-
78 *pB = tmp;-
79 pTmp = pA->pNext;-
80 pA->pNext = pB->pNext;-
81 pB->pNext = pTmp;-
82 pTmp = pA->pPrev;-
83 pA->pPrev = pB->pPrev;-
84 pB->pPrev = pTmp;-
85 zTmp = pA->zSql;-
86 pA->zSql = pB->zSql;-
87 pB->zSql = zTmp;-
88 pB->expmask = pA->expmask;-
89 pB->prepFlags = pA->prepFlags;-
90 memcpy(pB->aCounter, pA->aCounter, sizeof(pB->aCounter));-
91 pB->aCounter[SQLITE_STMTSTATUS_REPREPARE]++;-
92}
executed 23594 times by 11 tests: end of block
Executed by:
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (34)
  • Self test (438)
  • Self test (47)
  • Self test (53)
  • Self test (84)
23594
93-
94/*-
95** Resize the Vdbe.aOp array so that it is at least nOp elements larger -
96** than its current size. nOp is guaranteed to be less than or equal-
97** to 1024/sizeof(Op).-
98**-
99** If an out-of-memory error occurs while resizing the array, return-
100** SQLITE_NOMEM. In this case Vdbe.aOp and Parse.nOpAlloc remain -
101** unchanged (this is so that any opcodes already allocated can be -
102** correctly deallocated along with the rest of the Vdbe).-
103*/-
104static int growOpArray(Vdbe *v, int nOp){-
105 VdbeOp *pNew;-
106 Parse *p = v->pParse;-
107-
108 /* The SQLITE_TEST_REALLOC_STRESS compile-time option is designed to force-
109 ** more frequent reallocs and hence provide more opportunities for -
110 ** simulated OOM faults. SQLITE_TEST_REALLOC_STRESS is generally used-
111 ** during testing only. With SQLITE_TEST_REALLOC_STRESS grow the op array-
112 ** by the minimum* amount required until the size reaches 512. Normal-
113 ** operation (without SQLITE_TEST_REALLOC_STRESS) is to double the current-
114 ** size of the op array or add 1KB of space, whichever is smaller. */-
115#ifdef SQLITE_TEST_REALLOC_STRESS-
116 int nNew = (p->nOpAlloc>=512 ? p->nOpAlloc*2 : p->nOpAlloc+nOp);-
117#else-
118 int nNew = (p->nOpAlloc ? p->nOpAlloc*2 : (int)(1024/sizeof(Op)));
p->nOpAllocDescription
TRUEevaluated 28240 times by 15 tests
Evaluated by:
  • Self test
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
  • Self test (57)
  • Self test (58)
  • 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 460972 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)
  • ...
28240-460972
119 UNUSED_PARAMETER(nOp);-
120#endif-
121-
122 /* Ensure that the size of a VDBE does not grow too large */-
123 if( nNew > p->db->aLimit[SQLITE_LIMIT_VDBE_OP] ){
nNew > p->db->aLimit[5]Description
TRUEnever evaluated
FALSEevaluated 489212 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)
  • ...
0-489212
124 sqlite3OomFault(p->db);-
125 return SQLITE_NOMEM;
never executed: return 7;
0
126 }-
127-
128 assert( nOp<=(1024/sizeof(Op)) );-
129 assert( nNew>=(p->nOpAlloc+nOp) );-
130 pNew = sqlite3DbRealloc(p->db, v->aOp, nNew*sizeof(Op));-
131 if( pNew ){
pNewDescription
TRUEevaluated 489080 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 132 times by 1 test
Evaluated by:
  • Self test (438)
132-489080
132 p->szOpAlloc = sqlite3DbMallocSize(p->db, pNew);-
133 p->nOpAlloc = p->szOpAlloc/sizeof(Op);-
134 v->aOp = pNew;-
135 }
executed 489080 times by 436 tests: end of block
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)
  • ...
489080
136 return (pNew ? SQLITE_OK : SQLITE_NOMEM_BKPT);
executed 489212 times by 436 tests: return (pNew ? 0 : 7);
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)
  • ...
pNewDescription
TRUEevaluated 489080 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 132 times by 1 test
Evaluated by:
  • Self test (438)
132-489212
137}-
138-
139#ifdef SQLITE_DEBUG-
140/* This routine is just a convenient place to set a breakpoint that will-
141** fire after each opcode is inserted and displayed using-
142** "PRAGMA vdbe_addoptrace=on".-
143*/-
144static void test_addop_breakpoint(void){-
145 static int n = 0;-
146 n++;-
147}-
148#endif-
149-
150/*-
151** Add a new instruction to the list of instructions current in the-
152** VDBE. Return the address of the new instruction.-
153**-
154** Parameters:-
155**-
156** p Pointer to the VDBE-
157**-
158** op The opcode for this instruction-
159**-
160** p1, p2, p3 Operands-
161**-
162** Use the sqlite3VdbeResolveLabel() function to fix an address and-
163** the sqlite3VdbeChangeP4() function to change the value of the P4-
164** operand.-
165*/-
166static SQLITE_NOINLINE int growOp3(Vdbe *p, int op, int p1, int p2, int p3){-
167 assert( p->pParse->nOpAlloc<=p->nOp );-
168 if( growOpArray(p, 1) ) return 1;
executed 132 times by 1 test: return 1;
Executed by:
  • Self test (438)
growOpArray(p, 1)Description
TRUEevaluated 132 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 485817 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)
  • ...
132-485817
169 assert( p->pParse->nOpAlloc>p->nOp );-
170 return sqlite3VdbeAddOp3(p, op, p1, p2, p3);
executed 485817 times by 436 tests: return sqlite3VdbeAddOp3(p, op, p1, p2, p3);
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)
  • ...
485817
171}-
172int sqlite3VdbeAddOp3(Vdbe *p, int op, int p1, int p2, int p3){-
173 int i;-
174 VdbeOp *pOp;-
175-
176 i = p->nOp;-
177 assert( p->magic==VDBE_MAGIC_INIT );-
178 assert( op>=0 && op<0xff );-
179 if( p->pParse->nOpAlloc<=i ){
p->pParse->nOpAlloc<=iDescription
TRUEevaluated 485949 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 7622186 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)
  • ...
485949-7622186
180 return growOp3(p, op, p1, p2, p3);
executed 485949 times by 436 tests: return growOp3(p, op, p1, p2, p3);
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)
  • ...
485949
181 }-
182 p->nOp++;-
183 pOp = &p->aOp[i];-
184 pOp->opcode = (u8)op;-
185 pOp->p5 = 0;-
186 pOp->p1 = p1;-
187 pOp->p2 = p2;-
188 pOp->p3 = p3;-
189 pOp->p4.p = 0;-
190 pOp->p4type = P4_NOTUSED;-
191#ifdef SQLITE_ENABLE_EXPLAIN_COMMENTS-
192 pOp->zComment = 0;-
193#endif-
194#ifdef SQLITE_DEBUG-
195 if( p->db->flags & SQLITE_VdbeAddopTrace ){-
196 sqlite3VdbePrintOp(0, i, &p->aOp[i]);-
197 test_addop_breakpoint();-
198 }-
199#endif-
200#ifdef VDBE_PROFILE-
201 pOp->cycles = 0;-
202 pOp->cnt = 0;-
203#endif-
204#ifdef SQLITE_VDBE_COVERAGE-
205 pOp->iSrcLine = 0;-
206#endif-
207 return i;
executed 7622186 times by 436 tests: return i;
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)
  • ...
7622186
208}-
209int sqlite3VdbeAddOp0(Vdbe *p, int op){-
210 return sqlite3VdbeAddOp3(p, op, 0, 0, 0);
executed 549402 times by 436 tests: return sqlite3VdbeAddOp3(p, op, 0, 0, 0);
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)
  • ...
549402
211}-
212int sqlite3VdbeAddOp1(Vdbe *p, int op, int p1){-
213 return sqlite3VdbeAddOp3(p, op, p1, 0, 0);
executed 316103 times by 55 tests: return sqlite3VdbeAddOp3(p, op, p1, 0, 0);
Executed by:
  • Self test
  • Self test (100)
  • Self test (101)
  • Self test (103)
  • Self test (104)
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (39)
  • Self test (4)
  • Self test (42)
  • Self test (43)
  • Self test (438)
  • Self test (44)
  • Self test (45)
  • Self test (46)
  • Self test (47)
  • Self test (48)
  • Self test (5)
  • ...
316103
214}-
215int sqlite3VdbeAddOp2(Vdbe *p, int op, int p1, int p2){-
216 return sqlite3VdbeAddOp3(p, op, p1, p2, 0);
executed 2509223 times by 436 tests: return sqlite3VdbeAddOp3(p, op, p1, p2, 0);
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)
  • ...
2509223
217}-
218-
219/* Generate code for an unconditional jump to instruction iDest-
220*/-
221int sqlite3VdbeGoto(Vdbe *p, int iDest){-
222 return sqlite3VdbeAddOp3(p, OP_Goto, 0, iDest, 0);
executed 345007 times by 435 tests: return sqlite3VdbeAddOp3(p, 11, 0, iDest, 0);
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)
  • ...
345007
223}-
224-
225/* Generate code to cause the string zStr to be loaded into-
226** register iDest-
227*/-
228int sqlite3VdbeLoadString(Vdbe *p, int iDest, const char *zStr){-
229 return sqlite3VdbeAddOp4(p, OP_String8, 0, iDest, 0, zStr, 0);
executed 276181 times by 58 tests: return sqlite3VdbeAddOp4(p, 106, 0, iDest, 0, zStr, 0);
Executed by:
  • Self test
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (3)
  • Self test (30)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (38)
  • Self test (39)
  • Self test (4)
  • Self test (42)
  • Self test (43)
  • Self test (438)
  • Self test (44)
  • Self test (45)
  • Self test (46)
  • Self test (47)
  • ...
276181
230}-
231-
232/*-
233** Generate code that initializes multiple registers to string or integer-
234** constants. The registers begin with iDest and increase consecutively.-
235** One register is initialized for each characgter in zTypes[]. For each-
236** "s" character in zTypes[], the register is a string if the argument is-
237** not NULL, or OP_Null if the value is a null pointer. For each "i" character-
238** in zTypes[], the register is initialized to an integer.-
239**-
240** If the input string does not end with "X" then an OP_ResultRow instruction-
241** is generated for the values inserted.-
242*/-
243void sqlite3VdbeMultiLoad(Vdbe *p, int iDest, const char *zTypes, ...){-
244 va_list ap;-
245 int i;-
246 char c;-
247 va_start(ap, zTypes);-
248 for(i=0; (c = zTypes[i])!=0; i++){
(c = zTypes[i])!=0Description
TRUEevaluated 112658 times by 2 tests
Evaluated by:
  • Self test (35)
  • Self test (438)
FALSEevaluated 18670 times by 2 tests
Evaluated by:
  • Self test (35)
  • Self test (438)
18670-112658
249 if( c=='s' ){
c=='s'Description
TRUEevaluated 56187 times by 2 tests
Evaluated by:
  • Self test (35)
  • Self test (438)
FALSEevaluated 56471 times by 1 test
Evaluated by:
  • Self test (438)
56187-56471
250 const char *z = va_arg(ap, const char*);-
251 sqlite3VdbeAddOp4(p, z==0 ? OP_Null : OP_String8, 0, iDest+i, 0, z, 0);-
252 }else if( c=='i' ){
executed 56187 times by 2 tests: end of block
Executed by:
  • Self test (35)
  • Self test (438)
c=='i'Description
TRUEevaluated 55260 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1211 times by 1 test
Evaluated by:
  • Self test (438)
1211-56187
253 sqlite3VdbeAddOp2(p, OP_Integer, va_arg(ap, int), iDest+i);-
254 }else{
executed 55260 times by 1 test: end of block
Executed by:
  • Self test (438)
55260
255 goto skip_op_resultrow;
executed 1211 times by 1 test: goto skip_op_resultrow;
Executed by:
  • Self test (438)
1211
256 }-
257 }-
258 sqlite3VdbeAddOp2(p, OP_ResultRow, iDest, i);-
259skip_op_resultrow:
code before this statement executed 18670 times by 2 tests: skip_op_resultrow:
Executed by:
  • Self test (35)
  • Self test (438)
18670
260 va_end(ap);-
261}
executed 19881 times by 2 tests: end of block
Executed by:
  • Self test (35)
  • Self test (438)
19881
262-
263/*-
264** Add an opcode that includes the p4 value as a pointer.-
265*/-
266int sqlite3VdbeAddOp4(-
267 Vdbe *p, /* Add the opcode to this VM */-
268 int op, /* The new opcode */-
269 int p1, /* The P1 operand */-
270 int p2, /* The P2 operand */-
271 int p3, /* The P3 operand */-
272 const char *zP4, /* The P4 operand */-
273 int p4type /* P4 operand type */-
274){-
275 int addr = sqlite3VdbeAddOp3(p, op, p1, p2, p3);-
276 sqlite3VdbeChangeP4(p, addr, zP4, p4type);-
277 return addr;
executed 924268 times by 435 tests: return addr;
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)
  • ...
924268
278}-
279-
280/*-
281** Add an opcode that includes the p4 value with a P4_INT64 or-
282** P4_REAL type.-
283*/-
284int sqlite3VdbeAddOp4Dup8(-
285 Vdbe *p, /* Add the opcode to this VM */-
286 int op, /* The new opcode */-
287 int p1, /* The P1 operand */-
288 int p2, /* The P2 operand */-
289 int p3, /* The P3 operand */-
290 const u8 *zP4, /* The P4 operand */-
291 int p4type /* P4 operand type */-
292){-
293 char *p4copy = sqlite3DbMallocRawNN(sqlite3VdbeDb(p), 8);-
294 if( p4copy ) memcpy(p4copy, zP4, 8);
executed 39071 times by 4 tests: memcpy(p4copy, zP4, 8);
Executed by:
  • Self test (32)
  • Self test (33)
  • Self test (438)
  • Self test (64)
p4copyDescription
TRUEevaluated 39071 times by 4 tests
Evaluated by:
  • Self test (32)
  • Self test (33)
  • Self test (438)
  • Self test (64)
FALSEevaluated 4 times by 1 test
Evaluated by:
  • Self test (438)
4-39071
295 return sqlite3VdbeAddOp4(p, op, p1, p2, p3, p4copy, p4type);
executed 39075 times by 4 tests: return sqlite3VdbeAddOp4(p, op, p1, p2, p3, p4copy, p4type);
Executed by:
  • Self test (32)
  • Self test (33)
  • Self test (438)
  • Self test (64)
39075
296}-
297-
298#ifndef SQLITE_OMIT_EXPLAIN-
299/*-
300** Return the address of the current EXPLAIN QUERY PLAN baseline.-
301** 0 means "none".-
302*/-
303int sqlite3VdbeExplainParent(Parse *pParse){-
304 VdbeOp *pOp;-
305 if( pParse->addrExplain==0 ) return 0;
executed 355675 times by 436 tests: return 0;
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)
  • ...
pParse->addrExplain==0Description
TRUEevaluated 355675 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 146 times by 1 test
Evaluated by:
  • Self test (438)
146-355675
306 pOp = sqlite3VdbeGetOp(pParse->pVdbe, pParse->addrExplain);-
307 return pOp->p2;
executed 146 times by 1 test: return pOp->p2;
Executed by:
  • Self test (438)
146
308}-
309-
310/*-
311** Add a new OP_Explain opcode.-
312**-
313** If the bPush flag is true, then make this opcode the parent for-
314** subsequent Explains until sqlite3VdbeExplainPop() is called.-
315*/-
316void sqlite3VdbeExplain(Parse *pParse, u8 bPush, const char *zFmt, ...){-
317 if( pParse->explain==2 ){
pParse->explain==2Description
TRUEevaluated 349 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 252322 times by 1 test
Evaluated by:
  • Self test (438)
349-252322
318 char *zMsg;-
319 Vdbe *v;-
320 va_list ap;-
321 int iThis;-
322 va_start(ap, zFmt);-
323 zMsg = sqlite3VMPrintf(pParse->db, zFmt, ap);-
324 va_end(ap);-
325 v = pParse->pVdbe;-
326 iThis = v->nOp;-
327 sqlite3VdbeAddOp4(v, OP_Explain, iThis, pParse->addrExplain, 0,-
328 zMsg, P4_DYNAMIC);-
329 if( bPush) pParse->addrExplain = iThis;
executed 146 times by 1 test: pParse->addrExplain = iThis;
Executed by:
  • Self test (438)
bPushDescription
TRUEevaluated 146 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 203 times by 1 test
Evaluated by:
  • Self test (438)
146-203
330 }
executed 349 times by 1 test: end of block
Executed by:
  • Self test (438)
349
331}
executed 252671 times by 1 test: end of block
Executed by:
  • Self test (438)
252671
332-
333/*-
334** Pop the EXPLAIN QUERY PLAN stack one level.-
335*/-
336void sqlite3VdbeExplainPop(Parse *pParse){-
337 pParse->addrExplain = sqlite3VdbeExplainParent(pParse);-
338}
executed 355821 times by 436 tests: end of block
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)
  • ...
355821
339#endif /* SQLITE_OMIT_EXPLAIN */-
340-
341/*-
342** Add an OP_ParseSchema opcode. This routine is broken out from-
343** sqlite3VdbeAddOp4() since it needs to also needs to mark all btrees-
344** as having been used.-
345**-
346** The zWhere string must have been obtained from sqlite3_malloc().-
347** This routine will take ownership of the allocated memory.-
348*/-
349void sqlite3VdbeAddParseSchemaOp(Vdbe *p, int iDb, char *zWhere){-
350 int j;-
351 sqlite3VdbeAddOp4(p, OP_ParseSchema, iDb, 0, 0, zWhere, P4_DYNAMIC);-
352 for(j=0; j<p->db->nDb; j++) sqlite3VdbeUsesBtree(p, j);
executed 63132 times by 33 tests: sqlite3VdbeUsesBtree(p, j);
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 (30)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (39)
  • 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)
  • ...
j<p->db->nDbDescription
TRUEevaluated 63132 times by 33 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 (30)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (39)
  • 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)
  • ...
FALSEevaluated 28073 times by 33 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 (30)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (39)
  • 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)
  • ...
28073-63132
353}
executed 28073 times by 33 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 (30)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (39)
  • 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)
  • ...
28073
354-
355/*-
356** Add an opcode that includes the p4 value as an integer.-
357*/-
358int sqlite3VdbeAddOp4Int(-
359 Vdbe *p, /* Add the opcode to this VM */-
360 int op, /* The new opcode */-
361 int p1, /* The P1 operand */-
362 int p2, /* The P2 operand */-
363 int p3, /* The P3 operand */-
364 int p4 /* The P4 operand as an integer */-
365){-
366 int addr = sqlite3VdbeAddOp3(p, op, p1, p2, p3);-
367 if( p->db->mallocFailed==0 ){
p->db->mallocFailed==0Description
TRUEevaluated 804632 times by 435 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 77 times by 1 test
Evaluated by:
  • Self test (438)
77-804632
368 VdbeOp *pOp = &p->aOp[addr];-
369 pOp->p4type = P4_INT32;-
370 pOp->p4.i = p4;-
371 }
executed 804632 times by 435 tests: end of block
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)
  • ...
804632
372 return addr;
executed 804709 times by 435 tests: return addr;
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)
  • ...
804709
373}-
374-
375/* Insert the end of a co-routine-
376*/-
377void sqlite3VdbeEndCoroutine(Vdbe *v, int regYield){-
378 sqlite3VdbeAddOp1(v, OP_EndCoroutine, regYield);-
379-
380 /* Clear the temporary register cache, thereby ensuring that each-
381 ** co-routine has its own independent set of registers, because co-routines-
382 ** might expect their registers to be preserved across an OP_Yield, and-
383 ** that could cause problems if two or more co-routines are using the same-
384 ** temporary register.-
385 */-
386 v->pParse->nTempReg = 0;-
387 v->pParse->nRangeReg = 0;-
388}
executed 40271 times by 9 tests: end of block
Executed by:
  • Self test
  • Self test (101)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (438)
  • Self test (57)
  • Self test (58)
  • Self test (64)
40271
389-
390/*-
391** Create a new symbolic label for an instruction that has yet to be-
392** coded. The symbolic label is really just a negative number. The-
393** label can be used as the P2 value of an operation. Later, when-
394** the label is resolved to a specific address, the VDBE will scan-
395** through its operation list and change all values of P2 which match-
396** the label into the resolved address.-
397**-
398** The VDBE knows that a P2 value is a label because labels are-
399** always negative and P2 values are suppose to be non-negative.-
400** Hence, a negative P2 value is a label that has yet to be resolved.-
401**-
402** Zero is returned if a malloc() fails.-
403*/-
404int sqlite3VdbeMakeLabel(Vdbe *v){-
405 Parse *p = v->pParse;-
406 int i = p->nLabel++;-
407 assert( v->magic==VDBE_MAGIC_INIT );-
408 if( (i & (i-1))==0 ){
(i & (i-1))==0Description
TRUEevaluated 764898 times by 435 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 762131 times by 435 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)
  • ...
762131-764898
409 p->aLabel = sqlite3DbReallocOrFree(p->db, p->aLabel, -
410 (i*2+1)*sizeof(p->aLabel[0]));-
411 }
executed 764898 times by 435 tests: end of block
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)
  • ...
764898
412 if( p->aLabel ){
p->aLabelDescription
TRUEevaluated 1526672 times by 435 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 357 times by 1 test
Evaluated by:
  • Self test (438)
357-1526672
413 p->aLabel[i] = -1;-
414 }
executed 1526672 times by 435 tests: end of block
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)
  • ...
1526672
415 return ADDR(i);
executed 1527029 times by 435 tests: return (-1-(i));
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)
  • ...
1527029
416}-
417-
418/*-
419** Resolve label "x" to be the address of the next instruction to-
420** be inserted. The parameter "x" must have been obtained from-
421** a prior call to sqlite3VdbeMakeLabel().-
422*/-
423void sqlite3VdbeResolveLabel(Vdbe *v, int x){-
424 Parse *p = v->pParse;-
425 int j = ADDR(x);-
426 assert( v->magic==VDBE_MAGIC_INIT );-
427 assert( j<p->nLabel );-
428 assert( j>=0 );-
429 if( p->aLabel ){
p->aLabelDescription
TRUEevaluated 1521950 times by 435 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 98 times by 1 test
Evaluated by:
  • Self test (438)
98-1521950
430#ifdef SQLITE_DEBUG-
431 if( p->db->flags & SQLITE_VdbeAddopTrace ){-
432 printf("RESOLVE LABEL %d to %d\n", x, v->nOp);-
433 }-
434#endif-
435 assert( p->aLabel[j]==(-1) ); /* Labels may only be resolved once */-
436 p->aLabel[j] = v->nOp;-
437 }
executed 1521950 times by 435 tests: end of block
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)
  • ...
1521950
438}
executed 1522048 times by 435 tests: end of block
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)
  • ...
1522048
439-
440/*-
441** Mark the VDBE as one that can only be run one time.-
442*/-
443void sqlite3VdbeRunOnlyOnce(Vdbe *p){-
444 p->runOnlyOnce = 1;-
445}
executed 35849 times by 52 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 (35)
  • Self test (39)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
  • Self test (54)
  • Self test (57)
  • ...
35849
446-
447/*-
448** Mark the VDBE as one that can only be run multiple times.-
449*/-
450void sqlite3VdbeReusable(Vdbe *p){-
451 p->runOnlyOnce = 0;-
452}
executed 57 times by 1 test: end of block
Executed by:
  • Self test (438)
57
453-
454#ifdef SQLITE_DEBUG /* sqlite3AssertMayAbort() logic */-
455-
456/*-
457** The following type and function are used to iterate through all opcodes-
458** in a Vdbe main program and each of the sub-programs (triggers) it may -
459** invoke directly or indirectly. It should be used as follows:-
460**-
461** Op *pOp;-
462** VdbeOpIter sIter;-
463**-
464** memset(&sIter, 0, sizeof(sIter));-
465** sIter.v = v; // v is of type Vdbe* -
466** while( (pOp = opIterNext(&sIter)) ){-
467** // Do something with pOp-
468** }-
469** sqlite3DbFree(v->db, sIter.apSub);-
470** -
471*/-
472typedef struct VdbeOpIter VdbeOpIter;-
473struct VdbeOpIter {-
474 Vdbe *v; /* Vdbe to iterate through the opcodes of */-
475 SubProgram **apSub; /* Array of subprograms */-
476 int nSub; /* Number of entries in apSub */-
477 int iAddr; /* Address of next instruction to return */-
478 int iSub; /* 0 = main program, 1 = first sub-program etc. */-
479};-
480static Op *opIterNext(VdbeOpIter *p){-
481 Vdbe *v = p->v;-
482 Op *pRet = 0;-
483 Op *aOp;-
484 int nOp;-
485-
486 if( p->iSub<=p->nSub ){-
487-
488 if( p->iSub==0 ){-
489 aOp = v->aOp;-
490 nOp = v->nOp;-
491 }else{-
492 aOp = p->apSub[p->iSub-1]->aOp;-
493 nOp = p->apSub[p->iSub-1]->nOp;-
494 }-
495 assert( p->iAddr<nOp );-
496-
497 pRet = &aOp[p->iAddr];-
498 p->iAddr++;-
499 if( p->iAddr==nOp ){-
500 p->iSub++;-
501 p->iAddr = 0;-
502 }-
503 -
504 if( pRet->p4type==P4_SUBPROGRAM ){-
505 int nByte = (p->nSub+1)*sizeof(SubProgram*);-
506 int j;-
507 for(j=0; j<p->nSub; j++){-
508 if( p->apSub[j]==pRet->p4.pProgram ) break;-
509 }-
510 if( j==p->nSub ){-
511 p->apSub = sqlite3DbReallocOrFree(v->db, p->apSub, nByte);-
512 if( !p->apSub ){-
513 pRet = 0;-
514 }else{-
515 p->apSub[p->nSub++] = pRet->p4.pProgram;-
516 }-
517 }-
518 }-
519 }-
520-
521 return pRet;-
522}-
523-
524/*-
525** Check if the program stored in the VM associated with pParse may-
526** throw an ABORT exception (causing the statement, but not entire transaction-
527** to be rolled back). This condition is true if the main program or any-
528** sub-programs contains any of the following:-
529**-
530** * OP_Halt with P1=SQLITE_CONSTRAINT and P2=OE_Abort.-
531** * OP_HaltIfNull with P1=SQLITE_CONSTRAINT and P2=OE_Abort.-
532** * OP_Destroy-
533** * OP_VUpdate-
534** * OP_VRename-
535** * OP_FkCounter with P2==0 (immediate foreign key constraint)-
536** * OP_CreateBtree/BTREE_INTKEY and OP_InitCoroutine -
537** (for CREATE TABLE AS SELECT ...)-
538**-
539** Then check that the value of Parse.mayAbort is true if an-
540** ABORT may be thrown, or false otherwise. Return true if it does-
541** match, or false otherwise. This function is intended to be used as-
542** part of an assert statement in the compiler. Similar to:-
543**-
544** assert( sqlite3VdbeAssertMayAbort(pParse->pVdbe, pParse->mayAbort) );-
545*/-
546int sqlite3VdbeAssertMayAbort(Vdbe *v, int mayAbort){-
547 int hasAbort = 0;-
548 int hasFkCounter = 0;-
549 int hasCreateTable = 0;-
550 int hasInitCoroutine = 0;-
551 Op *pOp;-
552 VdbeOpIter sIter;-
553 memset(&sIter, 0, sizeof(sIter));-
554 sIter.v = v;-
555-
556 while( (pOp = opIterNext(&sIter))!=0 ){-
557 int opcode = pOp->opcode;-
558 if( opcode==OP_Destroy || opcode==OP_VUpdate || opcode==OP_VRename -
559 || ((opcode==OP_Halt || opcode==OP_HaltIfNull) -
560 && ((pOp->p1&0xff)==SQLITE_CONSTRAINT && pOp->p2==OE_Abort))-
561 ){-
562 hasAbort = 1;-
563 break;-
564 }-
565 if( opcode==OP_CreateBtree && pOp->p3==BTREE_INTKEY ) hasCreateTable = 1;-
566 if( opcode==OP_InitCoroutine ) hasInitCoroutine = 1;-
567#ifndef SQLITE_OMIT_FOREIGN_KEY-
568 if( opcode==OP_FkCounter && pOp->p1==0 && pOp->p2==1 ){-
569 hasFkCounter = 1;-
570 }-
571#endif-
572 }-
573 sqlite3DbFree(v->db, sIter.apSub);-
574-
575 /* Return true if hasAbort==mayAbort. Or if a malloc failure occurred.-
576 ** If malloc failed, then the while() loop above may not have iterated-
577 ** through all opcodes and hasAbort may be set incorrectly. Return-
578 ** true for this case to prevent the assert() in the callers frame-
579 ** from failing. */-
580 return ( v->db->mallocFailed || hasAbort==mayAbort || hasFkCounter-
581 || (hasCreateTable && hasInitCoroutine) );-
582}-
583#endif /* SQLITE_DEBUG - the sqlite3AssertMayAbort() function */-
584-
585#ifdef SQLITE_DEBUG-
586/*-
587** Increment the nWrite counter in the VDBE if the cursor is not an-
588** ephemeral cursor, or if the cursor argument is NULL.-
589*/-
590void sqlite3VdbeIncrWriteCounter(Vdbe *p, VdbeCursor *pC){-
591 if( pC==0-
592 || (pC->eCurType!=CURTYPE_SORTER-
593 && pC->eCurType!=CURTYPE_PSEUDO-
594 && !pC->isEphemeral)-
595 ){-
596 p->nWrite++;-
597 }-
598}-
599#endif-
600-
601#ifdef SQLITE_DEBUG-
602/*-
603** Assert if an Abort at this point in time might result in a corrupt-
604** database.-
605*/-
606void sqlite3VdbeAssertAbortable(Vdbe *p){-
607 assert( p->nWrite==0 || p->usesStmtJournal );-
608}-
609#endif-
610-
611/*-
612** This routine is called after all opcodes have been inserted. It loops-
613** through all the opcodes and fixes up some details.-
614**-
615** (1) For each jump instruction with a negative P2 value (a label)-
616** resolve the P2 value to an actual address.-
617**-
618** (2) Compute the maximum number of arguments used by any SQL function-
619** and store that value in *pMaxFuncArgs.-
620**-
621** (3) Update the Vdbe.readOnly and Vdbe.bIsReader flags to accurately-
622** indicate what the prepared statement actually does.-
623**-
624** (4) Initialize the p4.xAdvance pointer on opcodes that use it.-
625**-
626** (5) Reclaim the memory allocated for storing labels.-
627**-
628** This routine will only function correctly if the mkopcodeh.tcl generator-
629** script numbers the opcodes correctly. Changes to this routine must be-
630** coordinated with changes to mkopcodeh.tcl.-
631*/-
632static void resolveP2Values(Vdbe *p, int *pMaxFuncArgs){-
633 int nMaxArgs = *pMaxFuncArgs;-
634 Op *pOp;-
635 Parse *pParse = p->pParse;-
636 int *aLabel = pParse->aLabel;-
637 p->readOnly = 1;-
638 p->bIsReader = 0;-
639 pOp = &p->aOp[p->nOp-1];-
640 while(1){-
641-
642 /* Only JUMP opcodes and the short list of special opcodes in the switch-
643 ** below need to be considered. The mkopcodeh.tcl generator script groups-
644 ** all these opcodes together near the front of the opcode list. Skip-
645 ** any opcode that does not need processing by virtual of the fact that-
646 ** it is larger than SQLITE_MX_JUMP_OPCODE, as a performance optimization.-
647 */-
648 if( pOp->opcode<=SQLITE_MX_JUMP_OPCODE ){
pOp->opcode<=61Description
TRUEevaluated 2609187 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 5046637 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)
  • ...
2609187-5046637
649 /* NOTE: Be sure to update mkopcodeh.tcl when adding or removing-
650 ** cases from this switch! */-
651 switch( pOp->opcode ){-
652 case OP_Transaction: {
executed 247597 times by 435 tests: case 2:
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)
  • ...
247597
653 if( pOp->p2!=0 ) p->readOnly = 0;
executed 108257 times by 407 tests: p->readOnly = 0;
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)
  • ...
pOp->p2!=0Description
TRUEevaluated 108257 times by 407 tests
Evaluated 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)
  • ...
FALSEevaluated 139340 times by 435 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)
  • ...
108257-139340
654 /* fall thru */-
655 }-
656 case OP_AutoCommit:
code before this statement executed 247597 times by 435 tests: case 1:
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)
  • ...
executed 4737 times by 53 tests: case 1:
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (3)
  • Self test (30)
  • Self test (31)
  • Self test (34)
  • Self test (35)
  • Self test (38)
  • Self test (4)
  • Self test (42)
  • Self test (438)
  • Self test (44)
  • Self test (49)
  • Self test (5)
  • Self test (50)
  • Self test (51)
  • Self test (54)
  • ...
4737-247597
657 case OP_Savepoint: {
executed 35034 times by 2 tests: case 0:
Executed by:
  • Self test (438)
  • Self test (64)
35034
658 p->bIsReader = 1;-
659 break;
executed 287368 times by 435 tests: break;
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)
  • ...
287368
660 }-
661#ifndef SQLITE_OMIT_WAL-
662 case OP_Checkpoint:
executed 4424 times by 8 tests: case 6:
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)
4424
663#endif-
664 case OP_Vacuum:
executed 854 times by 2 tests: case 8:
Executed by:
  • Self test (34)
  • Self test (438)
854
665 case OP_JournalMode: {
executed 5365 times by 10 tests: case 7:
Executed by:
  • Self test (101)
  • Self test (104)
  • Self test (28)
  • Self test (3)
  • Self test (438)
  • Self test (58)
  • Self test (84)
  • Self test (85)
  • Self test (89)
  • Self test (90)
5365
666 p->readOnly = 0;-
667 p->bIsReader = 1;-
668 break;
executed 10643 times by 14 tests: break;
Executed by:
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (28)
  • Self test (3)
  • Self test (34)
  • Self test (438)
  • Self test (58)
  • Self test (72)
  • Self test (73)
  • Self test (84)
  • Self test (85)
  • Self test (89)
  • Self test (90)
10643
669 }-
670 case OP_Next:
executed 269405 times by 435 tests: case 5:
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)
  • ...
269405
671 case OP_SorterNext: {
executed 17043 times by 10 tests: case 3:
Executed by:
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (42)
  • Self test (438)
  • Self test (44)
  • Self test (46)
  • Self test (47)
17043
672 pOp->p4.xAdvance = sqlite3BtreeNext;-
673 pOp->p4type = P4_ADVANCE;-
674 /* The code generator never codes any of these opcodes as a jump-
675 ** to a label. They are always coded as a jump backwards to a -
676 ** known address */-
677 assert( pOp->p2>=0 );-
678 break;
executed 286448 times by 435 tests: break;
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)
  • ...
286448
679 }-
680 case OP_Prev: {
executed 3534 times by 1 test: case 4:
Executed by:
  • Self test (438)
3534
681 pOp->p4.xAdvance = sqlite3BtreePrevious;-
682 pOp->p4type = P4_ADVANCE;-
683 /* The code generator never codes any of these opcodes as a jump-
684 ** to a label. They are always coded as a jump backwards to a -
685 ** known address */-
686 assert( pOp->p2>=0 );-
687 break;
executed 3534 times by 1 test: break;
Executed by:
  • Self test (438)
3534
688 }-
689#ifndef SQLITE_OMIT_VIRTUALTABLE-
690 case OP_VUpdate: {
executed 1079 times by 1 test: case 10:
Executed by:
  • Self test (438)
1079
691 if( pOp->p2>nMaxArgs ) nMaxArgs = pOp->p2;
executed 279 times by 1 test: nMaxArgs = pOp->p2;
Executed by:
  • Self test (438)
pOp->p2>nMaxArgsDescription
TRUEevaluated 279 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 800 times by 1 test
Evaluated by:
  • Self test (438)
279-800
692 break;
executed 1079 times by 1 test: break;
Executed by:
  • Self test (438)
1079
693 }-
694 case OP_VFilter: {
executed 11058 times by 1 test: case 9:
Executed by:
  • Self test (438)
11058
695 int n;-
696 assert( (pOp - p->aOp) >= 3 );-
697 assert( pOp[-1].opcode==OP_Integer );-
698 n = pOp[-1].p1;-
699 if( n>nMaxArgs ) nMaxArgs = n;
executed 9510 times by 1 test: nMaxArgs = n;
Executed by:
  • Self test (438)
n>nMaxArgsDescription
TRUEevaluated 9510 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1548 times by 1 test
Evaluated by:
  • Self test (438)
1548-9510
700 /* Fall through into the default case */-
701 }-
702#endif-
703 default: {
code before this statement executed 11058 times by 1 test: default:
Executed by:
  • Self test (438)
executed 2020115 times by 436 tests: default:
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)
  • ...
11058-2020115
704 if( pOp->p2<0 ){
pOp->p2<0Description
TRUEevaluated 697704 times by 435 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 1322411 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)
  • ...
697704-1322411
705 /* The mkopcodeh.tcl script has so arranged things that the only-
706 ** non-jump opcodes less than SQLITE_MX_JUMP_CODE are guaranteed to-
707 ** have non-negative values for P2. */-
708 assert( (sqlite3OpcodeProperty[pOp->opcode] & OPFLG_JUMP)!=0 );-
709 assert( ADDR(pOp->p2)<pParse->nLabel );-
710 pOp->p2 = aLabel[ADDR(pOp->p2)];-
711 }
executed 697704 times by 435 tests: end of block
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)
  • ...
697704
712 break;
executed 2020115 times by 436 tests: break;
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)
  • ...
2020115
713 }-
714 }-
715 /* The mkopcodeh.tcl script has so arranged things that the only-
716 ** non-jump opcodes less than SQLITE_MX_JUMP_CODE are guaranteed to-
717 ** have non-negative values for P2. */-
718 assert( (sqlite3OpcodeProperty[pOp->opcode]&OPFLG_JUMP)==0 || pOp->p2>=0);-
719 }
executed 2609187 times by 436 tests: end of block
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)
  • ...
2609187
720 if( pOp==p->aOp ) break;
executed 457795 times by 436 tests: break;
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)
  • ...
pOp==p->aOpDescription
TRUEevaluated 457795 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 7198029 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)
  • ...
457795-7198029
721 pOp--;-
722 }
executed 7198029 times by 436 tests: end of block
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)
  • ...
7198029
723 sqlite3DbFree(p->db, pParse->aLabel);-
724 pParse->aLabel = 0;-
725 pParse->nLabel = 0;-
726 *pMaxFuncArgs = nMaxArgs;-
727 assert( p->bIsReader!=0 || DbMaskAllZero(p->btreeMask) );-
728}
executed 457795 times by 436 tests: end of block
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)
  • ...
457795
729-
730/*-
731** Return the address of the next instruction to be inserted.-
732*/-
733int sqlite3VdbeCurrentAddr(Vdbe *p){-
734 assert( p->magic==VDBE_MAGIC_INIT );-
735 return p->nOp;
executed 862018 times by 435 tests: return p->nOp;
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)
  • ...
862018
736}-
737-
738/*-
739** Verify that at least N opcode slots are available in p without-
740** having to malloc for more space (except when compiled using-
741** SQLITE_TEST_REALLOC_STRESS). This interface is used during testing-
742** to verify that certain calls to sqlite3VdbeAddOpList() can never-
743** fail due to a OOM fault and hence that the return value from-
744** sqlite3VdbeAddOpList() will always be non-NULL.-
745*/-
746#if defined(SQLITE_DEBUG) && !defined(SQLITE_TEST_REALLOC_STRESS)-
747void sqlite3VdbeVerifyNoMallocRequired(Vdbe *p, int N){-
748 assert( p->nOp + N <= p->pParse->nOpAlloc );-
749}-
750#endif-
751-
752/*-
753** Verify that the VM passed as the only argument does not contain-
754** an OP_ResultRow opcode. Fail an assert() if it does. This is used-
755** by code in pragma.c to ensure that the implementation of certain-
756** pragmas comports with the flags specified in the mkpragmatab.tcl-
757** script.-
758*/-
759#if defined(SQLITE_DEBUG) && !defined(SQLITE_TEST_REALLOC_STRESS)-
760void sqlite3VdbeVerifyNoResultRow(Vdbe *p){-
761 int i;-
762 for(i=0; i<p->nOp; i++){-
763 assert( p->aOp[i].opcode!=OP_ResultRow );-
764 }-
765}-
766#endif-
767-
768/*-
769** Generate code (a single OP_Abortable opcode) that will-
770** verify that the VDBE program can safely call Abort in the current-
771** context.-
772*/-
773#if defined(SQLITE_DEBUG)-
774void sqlite3VdbeVerifyAbortable(Vdbe *p, int onError){-
775 if( onError==OE_Abort ) sqlite3VdbeAddOp0(p, OP_Abortable);-
776}-
777#endif-
778-
779/*-
780** This function returns a pointer to the array of opcodes associated with-
781** the Vdbe passed as the first argument. It is the callers responsibility-
782** to arrange for the returned array to be eventually freed using the -
783** vdbeFreeOpArray() function.-
784**-
785** Before returning, *pnOp is set to the number of entries in the returned-
786** array. Also, *pnMaxArg is set to the larger of its current value and -
787** the number of entries in the Vdbe.apArg[] array required to execute the -
788** returned program.-
789*/-
790VdbeOp *sqlite3VdbeTakeOpArray(Vdbe *p, int *pnOp, int *pnMaxArg){-
791 VdbeOp *aOp = p->aOp;-
792 assert( aOp && !p->db->mallocFailed );-
793-
794 /* Check that sqlite3VdbeUsesBtree() was not called on this VM */-
795 assert( DbMaskAllZero(p->btreeMask) );-
796-
797 resolveP2Values(p, pnMaxArg);-
798 *pnOp = p->nOp;-
799 p->aOp = 0;-
800 return aOp;
executed 5896 times by 1 test: return aOp;
Executed by:
  • Self test (438)
5896
801}-
802-
803/*-
804** Add a whole list of operations to the operation stack. Return a-
805** pointer to the first operation inserted.-
806**-
807** Non-zero P2 arguments to jump instructions are automatically adjusted-
808** so that the jump target is relative to the first operation inserted.-
809*/-
810VdbeOp *sqlite3VdbeAddOpList(-
811 Vdbe *p, /* Add opcodes to the prepared statement */-
812 int nOp, /* Number of opcodes to add */-
813 VdbeOpList const *aOp, /* The opcodes to be added */-
814 int iLineno /* Source-file line number of first opcode */-
815){-
816 int i;-
817 VdbeOp *pOut, *pFirst;-
818 assert( nOp>0 );-
819 assert( p->magic==VDBE_MAGIC_INIT );-
820 if( p->nOp + nOp > p->pParse->nOpAlloc && growOpArray(p, nOp) ){
p->nOp + nOp >...arse->nOpAllocDescription
TRUEevaluated 3263 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 3636 times by 14 tests
Evaluated by:
  • Self test (32)
  • Self test (33)
  • 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)
growOpArray(p, nOp)Description
TRUEnever evaluated
FALSEevaluated 3263 times by 1 test
Evaluated by:
  • Self test (438)
0-3636
821 return 0;
never executed: return 0;
0
822 }-
823 pFirst = pOut = &p->aOp[p->nOp];-
824 for(i=0; i<nOp; i++, aOp++, pOut++){
i<nOpDescription
TRUEevaluated 48405 times by 14 tests
Evaluated by:
  • Self test (32)
  • Self test (33)
  • 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)
FALSEevaluated 6899 times by 14 tests
Evaluated by:
  • Self test (32)
  • Self test (33)
  • 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)
6899-48405
825 pOut->opcode = aOp->opcode;-
826 pOut->p1 = aOp->p1;-
827 pOut->p2 = aOp->p2;-
828 assert( aOp->p2>=0 );-
829 if( (sqlite3OpcodeProperty[aOp->opcode] & OPFLG_JUMP)!=0 && aOp->p2>0 ){
(sqlite3Opcode...de] & 0x01)!=0Description
TRUEevaluated 13179 times by 14 tests
Evaluated by:
  • Self test (32)
  • Self test (33)
  • 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)
FALSEevaluated 35226 times by 14 tests
Evaluated by:
  • Self test (32)
  • Self test (33)
  • 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)
aOp->p2>0Description
TRUEevaluated 13044 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)
FALSEevaluated 135 times by 3 tests
Evaluated by:
  • Self test (32)
  • Self test (33)
  • Self test (438)
135-35226
830 pOut->p2 += p->nOp;-
831 }
executed 13044 times by 12 tests: end of block
Executed 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)
13044
832 pOut->p3 = aOp->p3;-
833 pOut->p4type = P4_NOTUSED;-
834 pOut->p4.p = 0;-
835 pOut->p5 = 0;-
836#ifdef SQLITE_ENABLE_EXPLAIN_COMMENTS-
837 pOut->zComment = 0;-
838#endif-
839#ifdef SQLITE_VDBE_COVERAGE-
840 pOut->iSrcLine = iLineno+i;-
841#else-
842 (void)iLineno;-
843#endif-
844#ifdef SQLITE_DEBUG-
845 if( p->db->flags & SQLITE_VdbeAddopTrace ){-
846 sqlite3VdbePrintOp(0, i+p->nOp, &p->aOp[i+p->nOp]);-
847 }-
848#endif-
849 }
executed 48405 times by 14 tests: end of block
Executed by:
  • Self test (32)
  • Self test (33)
  • 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)
48405
850 p->nOp += nOp;-
851 return pFirst;
executed 6899 times by 14 tests: return pFirst;
Executed by:
  • Self test (32)
  • Self test (33)
  • 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)
6899
852}-
853-
854#if defined(SQLITE_ENABLE_STMT_SCANSTATUS)-
855/*-
856** Add an entry to the array of counters managed by sqlite3_stmt_scanstatus().-
857*/-
858void sqlite3VdbeScanStatus(-
859 Vdbe *p, /* VM to add scanstatus() to */-
860 int addrExplain, /* Address of OP_Explain (or 0) */-
861 int addrLoop, /* Address of loop counter */ -
862 int addrVisit, /* Address of rows visited counter */-
863 LogEst nEst, /* Estimated number of output rows */-
864 const char *zName /* Name of table or index being scanned */-
865){-
866 int nByte = (p->nScan+1) * sizeof(ScanStatus);-
867 ScanStatus *aNew;-
868 aNew = (ScanStatus*)sqlite3DbRealloc(p->db, p->aScan, nByte);-
869 if( aNew ){-
870 ScanStatus *pNew = &aNew[p->nScan++];-
871 pNew->addrExplain = addrExplain;-
872 pNew->addrLoop = addrLoop;-
873 pNew->addrVisit = addrVisit;-
874 pNew->nEst = nEst;-
875 pNew->zName = sqlite3DbStrDup(p->db, zName);-
876 p->aScan = aNew;-
877 }-
878}-
879#endif-
880-
881-
882/*-
883** Change the value of the opcode, or P1, P2, P3, or P5 operands-
884** for a specific instruction.-
885*/-
886void sqlite3VdbeChangeOpcode(Vdbe *p, u32 addr, u8 iNewOpcode){-
887 sqlite3VdbeGetOp(p,addr)->opcode = iNewOpcode;-
888}
executed 59293 times by 435 tests: end of block
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)
  • ...
59293
889void sqlite3VdbeChangeP1(Vdbe *p, u32 addr, int val){-
890 sqlite3VdbeGetOp(p,addr)->p1 = val;-
891}
executed 2521 times by 1 test: end of block
Executed by:
  • Self test (438)
2521
892void sqlite3VdbeChangeP2(Vdbe *p, u32 addr, int val){-
893 sqlite3VdbeGetOp(p,addr)->p2 = val;-
894}
executed 539013 times by 435 tests: end of block
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)
  • ...
539013
895void sqlite3VdbeChangeP3(Vdbe *p, u32 addr, int val){-
896 sqlite3VdbeGetOp(p,addr)->p3 = val;-
897}
executed 5985 times by 12 tests: end of block
Executed 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)
5985
898void sqlite3VdbeChangeP5(Vdbe *p, u16 p5){-
899 assert( p->nOp>0 || p->db->mallocFailed );-
900 if( p->nOp>0 ) p->aOp[p->nOp-1].p5 = p5;
executed 1248618 times by 435 tests: p->aOp[p->nOp-1].p5 = p5;
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)
  • ...
p->nOp>0Description
TRUEevaluated 1248618 times by 435 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)
  • ...
FALSEnever evaluated
0-1248618
901}
executed 1248618 times by 435 tests: end of block
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)
  • ...
1248618
902-
903/*-
904** Change the P2 operand of instruction addr so that it points to-
905** the address of the next instruction to be coded.-
906*/-
907void sqlite3VdbeJumpHere(Vdbe *p, int addr){-
908 sqlite3VdbeChangeP2(p, addr, p->nOp);-
909}
executed 501693 times by 435 tests: end of block
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)
  • ...
501693
910-
911-
912/*-
913** If the input FuncDef structure is ephemeral, then free it. If-
914** the FuncDef is not ephermal, then do nothing.-
915*/-
916static void freeEphemeralFunction(sqlite3 *db, FuncDef *pDef){-
917 if( (pDef->funcFlags & SQLITE_FUNC_EPHEM)!=0 ){
(pDef->funcFlags & 0x0010)!=0Description
TRUEevaluated 3 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 137652 times by 14 tests
Evaluated by:
  • Self test (27)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (438)
  • Self test (64)
  • Self test (77)
  • Self test (78)
  • Self test (79)
  • Self test (80)
  • Self test (81)
  • Self test (82)
  • Self test (83)
3-137652
918 sqlite3DbFreeNN(db, pDef);-
919 }
executed 3 times by 1 test: end of block
Executed by:
  • Self test (438)
3
920}
executed 137655 times by 14 tests: end of block
Executed by:
  • Self test (27)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (438)
  • Self test (64)
  • Self test (77)
  • Self test (78)
  • Self test (79)
  • Self test (80)
  • Self test (81)
  • Self test (82)
  • Self test (83)
137655
921-
922static void vdbeFreeOpArray(sqlite3 *, Op *, int);-
923-
924/*-
925** Delete a P4 value if necessary.-
926*/-
927static SQLITE_NOINLINE void freeP4Mem(sqlite3 *db, Mem *p){-
928 if( p->szMalloc ) sqlite3DbFree(db, p->zMalloc);
never executed: sqlite3DbFree(db, p->zMalloc);
p->szMallocDescription
TRUEnever evaluated
FALSEnever evaluated
0
929 sqlite3DbFreeNN(db, p);-
930}
never executed: end of block
0
931static SQLITE_NOINLINE void freeP4FuncCtx(sqlite3 *db, sqlite3_context *p){-
932 freeEphemeralFunction(db, p->pFunc);-
933 sqlite3DbFreeNN(db, p);-
934}
executed 82010 times by 14 tests: end of block
Executed by:
  • Self test (27)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (438)
  • Self test (64)
  • Self test (77)
  • Self test (78)
  • Self test (79)
  • Self test (80)
  • Self test (81)
  • Self test (82)
  • Self test (83)
82010
935static void freeP4(sqlite3 *db, int p4type, void *p4){-
936 assert( db );-
937 switch( p4type ){-
938 case P4_FUNCCTX: {
executed 82010 times by 14 tests: case (-16):
Executed by:
  • Self test (27)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (438)
  • Self test (64)
  • Self test (77)
  • Self test (78)
  • Self test (79)
  • Self test (80)
  • Self test (81)
  • Self test (82)
  • Self test (83)
82010
939 freeP4FuncCtx(db, (sqlite3_context*)p4);-
940 break;
executed 82010 times by 14 tests: break;
Executed by:
  • Self test (27)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (438)
  • Self test (64)
  • Self test (77)
  • Self test (78)
  • Self test (79)
  • Self test (80)
  • Self test (81)
  • Self test (82)
  • Self test (83)
82010
941 }-
942 case P4_REAL:
executed 34734 times by 1 test: case (-13):
Executed by:
  • Self test (438)
34734
943 case P4_INT64:
executed 4341 times by 4 tests: case (-14):
Executed by:
  • Self test (32)
  • Self test (33)
  • Self test (438)
  • Self test (64)
4341
944 case P4_DYNAMIC:
executed 549523 times by 57 tests: case (-7):
Executed by:
  • Self test
  • Self test (100)
  • Self test (101)
  • 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 (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (38)
  • Self test (39)
  • Self test (42)
  • Self test (43)
  • Self test (438)
  • Self test (44)
  • Self test (45)
  • Self test (46)
  • Self test (47)
  • Self test (48)
  • ...
549523
945 case P4_DYNBLOB:
never executed: case (-17):
0
946 case P4_INTARRAY: {
executed 25229 times by 12 tests: case (-15):
Executed 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)
25229
947 sqlite3DbFree(db, p4);-
948 break;
executed 613827 times by 57 tests: break;
Executed by:
  • Self test
  • Self test (100)
  • Self test (101)
  • 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 (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (38)
  • Self test (39)
  • Self test (42)
  • Self test (43)
  • Self test (438)
  • Self test (44)
  • Self test (45)
  • Self test (46)
  • Self test (47)
  • Self test (48)
  • ...
613827
949 }-
950 case P4_KEYINFO: {
executed 177965 times by 435 tests: case (-9):
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)
  • ...
177965
951 if( db->pnBytesFreed==0 ) sqlite3KeyInfoUnref((KeyInfo*)p4);
executed 177958 times by 435 tests: sqlite3KeyInfoUnref((KeyInfo*)p4);
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)
  • ...
db->pnBytesFreed==0Description
TRUEevaluated 177958 times by 435 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 7 times by 1 test
Evaluated by:
  • Self test (438)
7-177958
952 break;
executed 177965 times by 435 tests: break;
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)
  • ...
177965
953 }-
954#ifdef SQLITE_ENABLE_CURSOR_HINTS-
955 case P4_EXPR: {-
956 sqlite3ExprDelete(db, (Expr*)p4);-
957 break;-
958 }-
959#endif-
960 case P4_FUNCDEF: {
executed 55645 times by 1 test: case (-8):
Executed by:
  • Self test (438)
55645
961 freeEphemeralFunction(db, (FuncDef*)p4);-
962 break;
executed 55645 times by 1 test: break;
Executed by:
  • Self test (438)
55645
963 }-
964 case P4_MEM: {
executed 595 times by 1 test: case (-11):
Executed by:
  • Self test (438)
595
965 if( db->pnBytesFreed==0 ){
db->pnBytesFreed==0Description
TRUEevaluated 595 times by 1 test
Evaluated by:
  • Self test (438)
FALSEnever evaluated
0-595
966 sqlite3ValueFree((sqlite3_value*)p4);-
967 }else{
executed 595 times by 1 test: end of block
Executed by:
  • Self test (438)
595
968 freeP4Mem(db, (Mem*)p4);-
969 }
never executed: end of block
0
970 break;
executed 595 times by 1 test: break;
Executed by:
  • Self test (438)
595
971 }-
972 case P4_VTAB : {
executed 12808 times by 1 test: case (-12) :
Executed by:
  • Self test (438)
12808
973 if( db->pnBytesFreed==0 ) sqlite3VtabUnlock((VTable *)p4);
executed 12804 times by 1 test: sqlite3VtabUnlock((VTable *)p4);
Executed by:
  • Self test (438)
db->pnBytesFreed==0Description
TRUEevaluated 12804 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 4 times by 1 test
Evaluated by:
  • Self test (438)
4-12804
974 break;
executed 12808 times by 1 test: break;
Executed by:
  • Self test (438)
12808
975 }-
976 }-
977}
executed 1117431 times by 435 tests: end of block
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)
  • ...
1117431
978-
979/*-
980** Free the space allocated for aOp and any p4 values allocated for the-
981** opcodes contained within. If aOp is not NULL it is assumed to contain -
982** nOp entries. -
983*/-
984static void vdbeFreeOpArray(sqlite3 *db, Op *aOp, int nOp){-
985 if( aOp ){
aOpDescription
TRUEevaluated 460311 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 6099 times by 1 test
Evaluated by:
  • Self test (438)
6099-460311
986 Op *pOp;-
987 for(pOp=&aOp[nOp-1]; pOp>=aOp; pOp--){
pOp>=aOpDescription
TRUEevaluated 7656089 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 460311 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)
  • ...
460311-7656089
988 if( pOp->p4type <= P4_FREE_IF_LE ) freeP4(db, pOp->p4type, pOp->p4.p);
executed 895743 times by 59 tests: freeP4(db, pOp->p4type, pOp->p4.p);
Executed by:
  • Self test
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (3)
  • Self test (30)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (38)
  • Self test (39)
  • Self test (42)
  • Self test (43)
  • Self test (438)
  • Self test (44)
  • Self test (45)
  • Self test (46)
  • Self test (47)
  • ...
pOp->p4type <= (-7)Description
TRUEevaluated 895743 times by 59 tests
Evaluated by:
  • Self test
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (3)
  • Self test (30)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (38)
  • Self test (39)
  • Self test (42)
  • Self test (43)
  • Self test (438)
  • Self test (44)
  • Self test (45)
  • Self test (46)
  • Self test (47)
  • ...
FALSEevaluated 6760346 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)
  • ...
895743-6760346
989#ifdef SQLITE_ENABLE_EXPLAIN_COMMENTS-
990 sqlite3DbFree(db, pOp->zComment);-
991#endif -
992 }
executed 7656089 times by 436 tests: end of block
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)
  • ...
7656089
993 sqlite3DbFreeNN(db, aOp);-
994 }
executed 460311 times by 436 tests: end of block
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)
  • ...
460311
995}
executed 466410 times by 436 tests: end of block
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)
  • ...
466410
996-
997/*-
998** Link the SubProgram object passed as the second argument into the linked-
999** list at Vdbe.pSubProgram. This list is used to delete all sub-program-
1000** objects when the VM is no longer required.-
1001*/-
1002void sqlite3VdbeLinkSubProgram(Vdbe *pVdbe, SubProgram *p){-
1003 p->pNext = pVdbe->pProgram;-
1004 pVdbe->pProgram = p;-
1005}
executed 6028 times by 1 test: end of block
Executed by:
  • Self test (438)
6028
1006-
1007/*-
1008** Change the opcode at addr into OP_Noop-
1009*/-
1010int sqlite3VdbeChangeToNoop(Vdbe *p, int addr){-
1011 VdbeOp *pOp;-
1012 if( p->db->mallocFailed ) return 0;
executed 1 time by 1 test: return 0;
Executed by:
  • Self test (438)
p->db->mallocFailedDescription
TRUEevaluated 1 time by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 47098 times by 435 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)
  • ...
1-47098
1013 assert( addr>=0 && addr<p->nOp );-
1014 pOp = &p->aOp[addr];-
1015 freeP4(p->db, pOp->p4type, pOp->p4.p);-
1016 pOp->p4type = P4_NOTUSED;-
1017 pOp->p4.z = 0;-
1018 pOp->opcode = OP_Noop;-
1019 return 1;
executed 47098 times by 435 tests: return 1;
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)
  • ...
47098
1020}-
1021-
1022/*-
1023** If the last opcode is "op" and it is not a jump destination,-
1024** then remove it. Return true if and only if an opcode was removed.-
1025*/-
1026int sqlite3VdbeDeletePriorOpcode(Vdbe *p, u8 op){-
1027 if( p->nOp>0 && p->aOp[p->nOp-1].opcode==op ){
p->nOp>0Description
TRUEevaluated 23925 times by 368 tests
Evaluated by:
  • Self test (10)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • Self test (128)
  • ...
FALSEnever evaluated
p->aOp[p->nOp-1].opcode==opDescription
TRUEevaluated 64 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 23861 times by 368 tests
Evaluated by:
  • Self test (10)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • Self test (128)
  • ...
0-23925
1028 return sqlite3VdbeChangeToNoop(p, p->nOp-1);
executed 64 times by 1 test: return sqlite3VdbeChangeToNoop(p, p->nOp-1);
Executed by:
  • Self test (438)
64
1029 }else{-
1030 return 0;
executed 23861 times by 368 tests: return 0;
Executed by:
  • Self test (10)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • Self test (128)
  • ...
23861
1031 }-
1032}-
1033-
1034/*-
1035** Change the value of the P4 operand for a specific instruction.-
1036** This routine is useful when a large program is loaded from a-
1037** static array using sqlite3VdbeAddOpList but we want to make a-
1038** few minor changes to the program.-
1039**-
1040** If n>=0 then the P4 operand is dynamic, meaning that a copy of-
1041** the string is made into memory obtained from sqlite3_malloc().-
1042** A value of n==0 means copy bytes of zP4 up to and including the-
1043** first null byte. If n>0 then copy n+1 bytes of zP4.-
1044** -
1045** Other values of n (P4_STATIC, P4_COLLSEQ etc.) indicate that zP4 points-
1046** to a string or structure that is guaranteed to exist for the lifetime of-
1047** the Vdbe. In these cases we can just copy the pointer.-
1048**-
1049** If addr<0 then change P4 on the most recently inserted instruction.-
1050*/-
1051static void SQLITE_NOINLINE vdbeChangeP4Full(-
1052 Vdbe *p,-
1053 Op *pOp,-
1054 const char *zP4,-
1055 int n-
1056){-
1057 if( pOp->p4type ){
pOp->p4typeDescription
TRUEevaluated 174230 times by 435 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 439180 times by 391 tests
Evaluated by:
  • Self test
  • 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 (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 (120)
  • Self test (121)
  • Self test (122)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • ...
174230-439180
1058 freeP4(p->db, pOp->p4type, pOp->p4.p);-
1059 pOp->p4type = 0;-
1060 pOp->p4.p = 0;-
1061 }
executed 174230 times by 435 tests: end of block
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)
  • ...
174230
1062 if( n<0 ){
n<0Description
TRUEevaluated 174230 times by 435 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 439180 times by 391 tests
Evaluated by:
  • Self test
  • 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 (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 (120)
  • Self test (121)
  • Self test (122)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • ...
174230-439180
1063 sqlite3VdbeChangeP4(p, (int)(pOp - p->aOp), zP4, n);-
1064 }else{
executed 174230 times by 435 tests: end of block
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)
  • ...
174230
1065 if( n==0 ) n = sqlite3Strlen30(zP4);
executed 338947 times by 59 tests: n = sqlite3Strlen30(zP4);
Executed by:
  • Self test
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (3)
  • Self test (30)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (38)
  • Self test (39)
  • Self test (4)
  • Self test (42)
  • Self test (43)
  • Self test (438)
  • Self test (44)
  • Self test (45)
  • Self test (46)
  • ...
n==0Description
TRUEevaluated 338947 times by 59 tests
Evaluated by:
  • Self test
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (3)
  • Self test (30)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (38)
  • Self test (39)
  • Self test (4)
  • Self test (42)
  • Self test (43)
  • Self test (438)
  • Self test (44)
  • Self test (45)
  • Self test (46)
  • ...
FALSEevaluated 100233 times by 365 tests
Evaluated by:
  • Self test
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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 (120)
  • Self test (121)
  • Self test (122)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • ...
100233-338947
1066 pOp->p4.z = sqlite3DbStrNDup(p->db, zP4, n);-
1067 pOp->p4type = P4_DYNAMIC;-
1068 }
executed 439180 times by 391 tests: end of block
Executed by:
  • Self test
  • 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 (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 (120)
  • Self test (121)
  • Self test (122)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • ...
439180
1069}-
1070void sqlite3VdbeChangeP4(Vdbe *p, int addr, const char *zP4, int n){-
1071 Op *pOp;-
1072 sqlite3 *db;-
1073 assert( p!=0 );-
1074 db = p->db;-
1075 assert( p->magic==VDBE_MAGIC_INIT );-
1076 assert( p->aOp!=0 || db->mallocFailed );-
1077 if( db->mallocFailed ){
db->mallocFailedDescription
TRUEevaluated 352 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1406882 times by 435 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)
  • ...
352-1406882
1078 if( n!=P4_VTAB ) freeP4(db, n, (void*)*(char**)&zP4);
executed 352 times by 1 test: freeP4(db, n, (void*)*(char**)&zP4);
Executed by:
  • Self test (438)
n!=(-12)Description
TRUEevaluated 352 times by 1 test
Evaluated by:
  • Self test (438)
FALSEnever evaluated
0-352
1079 return;
executed 352 times by 1 test: return;
Executed by:
  • Self test (438)
352
1080 }-
1081 assert( p->nOp>0 );-
1082 assert( addr<p->nOp );-
1083 if( addr<0 ){
addr<0Description
TRUEevaluated 267463 times by 435 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 1139419 times by 435 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)
  • ...
267463-1139419
1084 addr = p->nOp - 1;-
1085 }
executed 267463 times by 435 tests: end of block
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)
  • ...
267463
1086 pOp = &p->aOp[addr];-
1087 if( n>=0 || pOp->p4type ){
n>=0Description
TRUEevaluated 439180 times by 391 tests
Evaluated by:
  • Self test
  • 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 (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 (120)
  • Self test (121)
  • Self test (122)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • ...
FALSEevaluated 967702 times by 435 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)
  • ...
pOp->p4typeDescription
TRUEevaluated 174230 times by 435 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 793472 times by 435 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)
  • ...
174230-967702
1088 vdbeChangeP4Full(p, pOp, zP4, n);-
1089 return;
executed 613410 times by 435 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)
  • ...
613410
1090 }-
1091 if( n==P4_INT32 ){
n==(-3)Description
TRUEevaluated 173996 times by 435 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 619476 times by 435 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)
  • ...
173996-619476
1092 /* Note: this cast is safe, because the origin data point was an int-
1093 ** that was cast to a (const char *). */-
1094 pOp->p4.i = SQLITE_PTR_TO_INT(zP4);-
1095 pOp->p4type = P4_INT32;-
1096 }else if( zP4!=0 ){
executed 173996 times by 435 tests: end of block
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)
  • ...
zP4!=0Description
TRUEevaluated 539960 times by 435 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 79516 times by 334 tests
Evaluated by:
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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 (120)
  • Self test (121)
  • Self test (122)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • Self test (128)
  • Self test (129)
  • Self test (130)
  • ...
79516-539960
1097 assert( n<0 );-
1098 pOp->p4.p = (void*)zP4;-
1099 pOp->p4type = (signed char)n;-
1100 if( n==P4_VTAB ) sqlite3VtabLock((VTable*)zP4);
executed 12804 times by 1 test: sqlite3VtabLock((VTable*)zP4);
Executed by:
  • Self test (438)
n==(-12)Description
TRUEevaluated 12804 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 527156 times by 435 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)
  • ...
12804-527156
1101 }
executed 539960 times by 435 tests: end of block
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)
  • ...
539960
1102}
executed 793472 times by 435 tests: end of block
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)
  • ...
793472
1103-
1104/*-
1105** Change the P4 operand of the most recently coded instruction -
1106** to the value defined by the arguments. This is a high-speed-
1107** version of sqlite3VdbeChangeP4().-
1108**-
1109** The P4 operand must not have been previously defined. And the new-
1110** P4 must not be P4_INT32. Use sqlite3VdbeChangeP4() in either of-
1111** those cases.-
1112*/-
1113void sqlite3VdbeAppendP4(Vdbe *p, void *pP4, int n){-
1114 VdbeOp *pOp;-
1115 assert( n!=P4_INT32 && n!=P4_VTAB );-
1116 assert( n<=0 );-
1117 if( p->db->mallocFailed ){
p->db->mallocFailedDescription
TRUEevaluated 8 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 249910 times by 405 tests
Evaluated by:
  • 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)
  • Self test (123)
  • ...
8-249910
1118 freeP4(p->db, n, pP4);-
1119 }else{
executed 8 times by 1 test: end of block
Executed by:
  • Self test (438)
8
1120 assert( pP4!=0 );-
1121 assert( p->nOp>0 );-
1122 pOp = &p->aOp[p->nOp-1];-
1123 assert( pOp->p4type==P4_NOTUSED );-
1124 pOp->p4type = n;-
1125 pOp->p4.p = pP4;-
1126 }
executed 249910 times by 405 tests: end of block
Executed by:
  • 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)
  • Self test (123)
  • ...
249910
1127}-
1128-
1129/*-
1130** Set the P4 on the most recently added opcode to the KeyInfo for the-
1131** index given.-
1132*/-
1133void sqlite3VdbeSetP4KeyInfo(Parse *pParse, Index *pIdx){-
1134 Vdbe *v = pParse->pVdbe;-
1135 KeyInfo *pKeyInfo;-
1136 assert( v!=0 );-
1137 assert( pIdx!=0 );-
1138 pKeyInfo = sqlite3KeyInfoOfIndex(pParse, pIdx);-
1139 if( pKeyInfo ) sqlite3VdbeAppendP4(v, pKeyInfo, P4_KEYINFO);
executed 60885 times by 381 tests: sqlite3VdbeAppendP4(v, pKeyInfo, (-9));
Executed by:
  • Self test (10)
  • Self test (100)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • ...
pKeyInfoDescription
TRUEevaluated 60885 times by 381 tests
Evaluated by:
  • Self test (10)
  • Self test (100)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • ...
FALSEevaluated 17 times by 1 test
Evaluated by:
  • Self test (438)
17-60885
1140}
executed 60902 times by 381 tests: end of block
Executed by:
  • Self test (10)
  • Self test (100)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • ...
60902
1141-
1142#ifdef SQLITE_ENABLE_EXPLAIN_COMMENTS-
1143/*-
1144** Change the comment on the most recently coded instruction. Or-
1145** insert a No-op and add the comment to that new instruction. This-
1146** makes the code easier to read during debugging. None of this happens-
1147** in a production build.-
1148*/-
1149static void vdbeVComment(Vdbe *p, const char *zFormat, va_list ap){-
1150 assert( p->nOp>0 || p->aOp==0 );-
1151 assert( p->aOp==0 || p->aOp[p->nOp-1].zComment==0 || p->db->mallocFailed );-
1152 if( p->nOp ){-
1153 assert( p->aOp );-
1154 sqlite3DbFree(p->db, p->aOp[p->nOp-1].zComment);-
1155 p->aOp[p->nOp-1].zComment = sqlite3VMPrintf(p->db, zFormat, ap);-
1156 }-
1157}-
1158void sqlite3VdbeComment(Vdbe *p, const char *zFormat, ...){-
1159 va_list ap;-
1160 if( p ){-
1161 va_start(ap, zFormat);-
1162 vdbeVComment(p, zFormat, ap);-
1163 va_end(ap);-
1164 }-
1165}-
1166void sqlite3VdbeNoopComment(Vdbe *p, const char *zFormat, ...){-
1167 va_list ap;-
1168 if( p ){-
1169 sqlite3VdbeAddOp0(p, OP_Noop);-
1170 va_start(ap, zFormat);-
1171 vdbeVComment(p, zFormat, ap);-
1172 va_end(ap);-
1173 }-
1174}-
1175#endif /* NDEBUG */-
1176-
1177#ifdef SQLITE_VDBE_COVERAGE-
1178/*-
1179** Set the value if the iSrcLine field for the previously coded instruction.-
1180*/-
1181void sqlite3VdbeSetLineNumber(Vdbe *v, int iLine){-
1182 sqlite3VdbeGetOp(v,-1)->iSrcLine = iLine;-
1183}-
1184#endif /* SQLITE_VDBE_COVERAGE */-
1185-
1186/*-
1187** Return the opcode for a given address. If the address is -1, then-
1188** return the most recently inserted opcode.-
1189**-
1190** If a memory allocation error has occurred prior to the calling of this-
1191** routine, then a pointer to a dummy VdbeOp will be returned. That opcode-
1192** is readable but not writable, though it is cast to a writable value.-
1193** The return of a dummy opcode allows the call to continue functioning-
1194** after an OOM fault without having to check to see if the return from -
1195** this routine is a valid pointer. But because the dummy.opcode is 0,-
1196** dummy will never be written to. This is verified by code inspection and-
1197** by running with Valgrind.-
1198*/-
1199VdbeOp *sqlite3VdbeGetOp(Vdbe *p, int addr){-
1200 /* C89 specifies that the constant "dummy" will be initialized to all-
1201 ** zeros, which is correct. MSVC generates a warning, nevertheless. */-
1202 static VdbeOp dummy; /* Ignore the MSVC warning about no initializer */-
1203 assert( p->magic==VDBE_MAGIC_INIT );-
1204 if( addr<0 ){
addr<0Description
TRUEevaluated 39774 times by 4 tests
Evaluated by:
  • Self test (103)
  • Self test (104)
  • Self test (34)
  • Self test (438)
FALSEevaluated 907847 times by 435 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)
  • ...
39774-907847
1205 addr = p->nOp - 1;-
1206 }
executed 39774 times by 4 tests: end of block
Executed by:
  • Self test (103)
  • Self test (104)
  • Self test (34)
  • Self test (438)
39774
1207 assert( (addr>=0 && addr<p->nOp) || p->db->mallocFailed );-
1208 if( p->db->mallocFailed ){
p->db->mallocFailedDescription
TRUEevaluated 172 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 947449 times by 435 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)
  • ...
172-947449
1209 return (VdbeOp*)&dummy;
executed 172 times by 1 test: return (VdbeOp*)&dummy;
Executed by:
  • Self test (438)
172
1210 }else{-
1211 return &p->aOp[addr];
executed 947449 times by 435 tests: return &p->aOp[addr];
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)
  • ...
947449
1212 }-
1213}-
1214-
1215#if defined(SQLITE_ENABLE_EXPLAIN_COMMENTS)-
1216/*-
1217** Return an integer value for one of the parameters to the opcode pOp-
1218** determined by character c.-
1219*/-
1220static int translateP(char c, const Op *pOp){-
1221 if( c=='1' ) return pOp->p1;-
1222 if( c=='2' ) return pOp->p2;-
1223 if( c=='3' ) return pOp->p3;-
1224 if( c=='4' ) return pOp->p4.i;-
1225 return pOp->p5;-
1226}-
1227-
1228/*-
1229** Compute a string for the "comment" field of a VDBE opcode listing.-
1230**-
1231** The Synopsis: field in comments in the vdbe.c source file gets converted-
1232** to an extra string that is appended to the sqlite3OpcodeName(). In the-
1233** absence of other comments, this synopsis becomes the comment on the opcode.-
1234** Some translation occurs:-
1235**-
1236** "PX" -> "r[X]"-
1237** "PX@PY" -> "r[X..X+Y-1]" or "r[x]" if y is 0 or 1-
1238** "PX@PY+1" -> "r[X..X+Y]" or "r[x]" if y is 0-
1239** "PY..PY" -> "r[X..Y]" or "r[x]" if y<=x-
1240*/-
1241static int displayComment(-
1242 const Op *pOp, /* The opcode to be commented */-
1243 const char *zP4, /* Previously obtained value for P4 */-
1244 char *zTemp, /* Write result here */-
1245 int nTemp /* Space available in zTemp[] */-
1246){-
1247 const char *zOpName;-
1248 const char *zSynopsis;-
1249 int nOpName;-
1250 int ii, jj;-
1251 char zAlt[50];-
1252 zOpName = sqlite3OpcodeName(pOp->opcode);-
1253 nOpName = sqlite3Strlen30(zOpName);-
1254 if( zOpName[nOpName+1] ){-
1255 int seenCom = 0;-
1256 char c;-
1257 zSynopsis = zOpName += nOpName + 1;-
1258 if( strncmp(zSynopsis,"IF ",3)==0 ){-
1259 if( pOp->p5 & SQLITE_STOREP2 ){-
1260 sqlite3_snprintf(sizeof(zAlt), zAlt, "r[P2] = (%s)", zSynopsis+3);-
1261 }else{-
1262 sqlite3_snprintf(sizeof(zAlt), zAlt, "if %s goto P2", zSynopsis+3);-
1263 }-
1264 zSynopsis = zAlt;-
1265 }-
1266 for(ii=jj=0; jj<nTemp-1 && (c = zSynopsis[ii])!=0; ii++){-
1267 if( c=='P' ){-
1268 c = zSynopsis[++ii];-
1269 if( c=='4' ){-
1270 sqlite3_snprintf(nTemp-jj, zTemp+jj, "%s", zP4);-
1271 }else if( c=='X' ){-
1272 sqlite3_snprintf(nTemp-jj, zTemp+jj, "%s", pOp->zComment);-
1273 seenCom = 1;-
1274 }else{-
1275 int v1 = translateP(c, pOp);-
1276 int v2;-
1277 sqlite3_snprintf(nTemp-jj, zTemp+jj, "%d", v1);-
1278 if( strncmp(zSynopsis+ii+1, "@P", 2)==0 ){-
1279 ii += 3;-
1280 jj += sqlite3Strlen30(zTemp+jj);-
1281 v2 = translateP(zSynopsis[ii], pOp);-
1282 if( strncmp(zSynopsis+ii+1,"+1",2)==0 ){-
1283 ii += 2;-
1284 v2++;-
1285 }-
1286 if( v2>1 ){-
1287 sqlite3_snprintf(nTemp-jj, zTemp+jj, "..%d", v1+v2-1);-
1288 }-
1289 }else if( strncmp(zSynopsis+ii+1, "..P3", 4)==0 && pOp->p3==0 ){-
1290 ii += 4;-
1291 }-
1292 }-
1293 jj += sqlite3Strlen30(zTemp+jj);-
1294 }else{-
1295 zTemp[jj++] = c;-
1296 }-
1297 }-
1298 if( !seenCom && jj<nTemp-5 && pOp->zComment ){-
1299 sqlite3_snprintf(nTemp-jj, zTemp+jj, "; %s", pOp->zComment);-
1300 jj += sqlite3Strlen30(zTemp+jj);-
1301 }-
1302 if( jj<nTemp ) zTemp[jj] = 0;-
1303 }else if( pOp->zComment ){-
1304 sqlite3_snprintf(nTemp, zTemp, "%s", pOp->zComment);-
1305 jj = sqlite3Strlen30(zTemp);-
1306 }else{-
1307 zTemp[0] = 0;-
1308 jj = 0;-
1309 }-
1310 return jj;-
1311}-
1312#endif /* SQLITE_DEBUG */-
1313-
1314#if VDBE_DISPLAY_P4 && defined(SQLITE_ENABLE_CURSOR_HINTS)-
1315/*-
1316** Translate the P4.pExpr value for an OP_CursorHint opcode into text-
1317** that can be displayed in the P4 column of EXPLAIN output.-
1318*/-
1319static void displayP4Expr(StrAccum *p, Expr *pExpr){-
1320 const char *zOp = 0;-
1321 switch( pExpr->op ){-
1322 case TK_STRING:-
1323 sqlite3_str_appendf(p, "%Q", pExpr->u.zToken);-
1324 break;-
1325 case TK_INTEGER:-
1326 sqlite3_str_appendf(p, "%d", pExpr->u.iValue);-
1327 break;-
1328 case TK_NULL:-
1329 sqlite3_str_appendf(p, "NULL");-
1330 break;-
1331 case TK_REGISTER: {-
1332 sqlite3_str_appendf(p, "r[%d]", pExpr->iTable);-
1333 break;-
1334 }-
1335 case TK_COLUMN: {-
1336 if( pExpr->iColumn<0 ){-
1337 sqlite3_str_appendf(p, "rowid");-
1338 }else{-
1339 sqlite3_str_appendf(p, "c%d", (int)pExpr->iColumn);-
1340 }-
1341 break;-
1342 }-
1343 case TK_LT: zOp = "LT"; break;-
1344 case TK_LE: zOp = "LE"; break;-
1345 case TK_GT: zOp = "GT"; break;-
1346 case TK_GE: zOp = "GE"; break;-
1347 case TK_NE: zOp = "NE"; break;-
1348 case TK_EQ: zOp = "EQ"; break;-
1349 case TK_IS: zOp = "IS"; break;-
1350 case TK_ISNOT: zOp = "ISNOT"; break;-
1351 case TK_AND: zOp = "AND"; break;-
1352 case TK_OR: zOp = "OR"; break;-
1353 case TK_PLUS: zOp = "ADD"; break;-
1354 case TK_STAR: zOp = "MUL"; break;-
1355 case TK_MINUS: zOp = "SUB"; break;-
1356 case TK_REM: zOp = "REM"; break;-
1357 case TK_BITAND: zOp = "BITAND"; break;-
1358 case TK_BITOR: zOp = "BITOR"; break;-
1359 case TK_SLASH: zOp = "DIV"; break;-
1360 case TK_LSHIFT: zOp = "LSHIFT"; break;-
1361 case TK_RSHIFT: zOp = "RSHIFT"; break;-
1362 case TK_CONCAT: zOp = "CONCAT"; break;-
1363 case TK_UMINUS: zOp = "MINUS"; break;-
1364 case TK_UPLUS: zOp = "PLUS"; break;-
1365 case TK_BITNOT: zOp = "BITNOT"; break;-
1366 case TK_NOT: zOp = "NOT"; break;-
1367 case TK_ISNULL: zOp = "ISNULL"; break;-
1368 case TK_NOTNULL: zOp = "NOTNULL"; break;-
1369-
1370 default:-
1371 sqlite3_str_appendf(p, "%s", "expr");-
1372 break;-
1373 }-
1374-
1375 if( zOp ){-
1376 sqlite3_str_appendf(p, "%s(", zOp);-
1377 displayP4Expr(p, pExpr->pLeft);-
1378 if( pExpr->pRight ){-
1379 sqlite3_str_append(p, ",", 1);-
1380 displayP4Expr(p, pExpr->pRight);-
1381 }-
1382 sqlite3_str_append(p, ")", 1);-
1383 }-
1384}-
1385#endif /* VDBE_DISPLAY_P4 && defined(SQLITE_ENABLE_CURSOR_HINTS) */-
1386-
1387-
1388#if VDBE_DISPLAY_P4-
1389/*-
1390** Compute a string that describes the P4 parameter for an opcode.-
1391** Use zTemp for any required temporary buffer space.-
1392*/-
1393static char *displayP4(Op *pOp, char *zTemp, int nTemp){-
1394 char *zP4 = zTemp;-
1395 StrAccum x;-
1396 assert( nTemp>=20 );-
1397 sqlite3StrAccumInit(&x, 0, zTemp, nTemp, 0);-
1398 switch( pOp->p4type ){-
1399 case P4_KEYINFO: {
executed 479 times by 1 test: case (-9):
Executed by:
  • Self test (438)
479
1400 int j;-
1401 KeyInfo *pKeyInfo = pOp->p4.pKeyInfo;-
1402 assert( pKeyInfo->aSortOrder!=0 );-
1403 sqlite3_str_appendf(&x, "k(%d", pKeyInfo->nKeyField);-
1404 for(j=0; j<pKeyInfo->nKeyField; j++){
j<pKeyInfo->nKeyFieldDescription
TRUEevaluated 1924 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 479 times by 1 test
Evaluated by:
  • Self test (438)
479-1924
1405 CollSeq *pColl = pKeyInfo->aColl[j];-
1406 const char *zColl = pColl ? pColl->zName : "";
pCollDescription
TRUEevaluated 328 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1596 times by 1 test
Evaluated by:
  • Self test (438)
328-1596
1407 if( strcmp(zColl, "BINARY")==0 ) zColl = "B";
never executed: __result = (((const unsigned char *) (const char *) ( zColl ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "BINARY" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
executed 293 times by 1 test: zColl = "B";
Executed by:
  • Self test (438)
__extension__ ..." )))); }) ==0Description
TRUEevaluated 293 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1631 times by 1 test
Evaluated by:
  • Self test (438)
__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-1631
1408 sqlite3_str_appendf(&x, ",%s%s", -
1409 pKeyInfo->aSortOrder[j] ? "-" : "", zColl);-
1410 }
executed 1924 times by 1 test: end of block
Executed by:
  • Self test (438)
1924
1411 sqlite3_str_append(&x, ")", 1);-
1412 break;
executed 479 times by 1 test: break;
Executed by:
  • Self test (438)
479
1413 }-
1414#ifdef SQLITE_ENABLE_CURSOR_HINTS-
1415 case P4_EXPR: {-
1416 displayP4Expr(&x, pOp->p4.pExpr);-
1417 break;-
1418 }-
1419#endif-
1420 case P4_COLLSEQ: {
executed 130 times by 1 test: case (-2):
Executed by:
  • Self test (438)
130
1421 CollSeq *pColl = pOp->p4.pColl;-
1422 sqlite3_str_appendf(&x, "(%.20s)", pColl->zName);-
1423 break;
executed 130 times by 1 test: break;
Executed by:
  • Self test (438)
130
1424 }-
1425 case P4_FUNCDEF: {
executed 92 times by 1 test: case (-8):
Executed by:
  • Self test (438)
92
1426 FuncDef *pDef = pOp->p4.pFunc;-
1427 sqlite3_str_appendf(&x, "%s(%d)", pDef->zName, pDef->nArg);-
1428 break;
executed 92 times by 1 test: break;
Executed by:
  • Self test (438)
92
1429 }-
1430#if defined(SQLITE_DEBUG) || defined(VDBE_PROFILE)-
1431 case P4_FUNCCTX: {-
1432 FuncDef *pDef = pOp->p4.pCtx->pFunc;-
1433 sqlite3_str_appendf(&x, "%s(%d)", pDef->zName, pDef->nArg);-
1434 break;-
1435 }-
1436#endif-
1437 case P4_INT64: {
executed 2 times by 1 test: case (-14):
Executed by:
  • Self test (438)
2
1438 sqlite3_str_appendf(&x, "%lld", *pOp->p4.pI64);-
1439 break;
executed 2 times by 1 test: break;
Executed by:
  • Self test (438)
2
1440 }-
1441 case P4_INT32: {
executed 1227 times by 1 test: case (-3):
Executed by:
  • Self test (438)
1227
1442 sqlite3_str_appendf(&x, "%d", pOp->p4.i);-
1443 break;
executed 1227 times by 1 test: break;
Executed by:
  • Self test (438)
1227
1444 }-
1445 case P4_REAL: {
executed 7 times by 1 test: case (-13):
Executed by:
  • Self test (438)
7
1446 sqlite3_str_appendf(&x, "%.16g", *pOp->p4.pReal);-
1447 break;
executed 7 times by 1 test: break;
Executed by:
  • Self test (438)
7
1448 }-
1449 case P4_MEM: {
executed 22 times by 1 test: case (-11):
Executed by:
  • Self test (438)
22
1450 Mem *pMem = pOp->p4.pMem;-
1451 if( pMem->flags & MEM_Str ){
pMem->flags & 0x0002Description
TRUEevaluated 8 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 14 times by 1 test
Evaluated by:
  • Self test (438)
8-14
1452 zP4 = pMem->z;-
1453 }else if( pMem->flags & MEM_Int ){
executed 8 times by 1 test: end of block
Executed by:
  • Self test (438)
pMem->flags & 0x0004Description
TRUEevaluated 13 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1 time by 1 test
Evaluated by:
  • Self test (438)
1-13
1454 sqlite3_str_appendf(&x, "%lld", pMem->u.i);-
1455 }else if( pMem->flags & MEM_Real ){
executed 13 times by 1 test: end of block
Executed by:
  • Self test (438)
pMem->flags & 0x0008Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • Self test (438)
FALSEnever evaluated
0-13
1456 sqlite3_str_appendf(&x, "%.16g", pMem->u.r);-
1457 }else if( pMem->flags & MEM_Null ){
executed 1 time by 1 test: end of block
Executed by:
  • Self test (438)
pMem->flags & 0x0001Description
TRUEnever evaluated
FALSEnever evaluated
0-1
1458 zP4 = "NULL";-
1459 }else{
never executed: end of block
0
1460 assert( pMem->flags & MEM_Blob );-
1461 zP4 = "(blob)";-
1462 }
never executed: end of block
0
1463 break;
executed 22 times by 1 test: break;
Executed by:
  • Self test (438)
22
1464 }-
1465#ifndef SQLITE_OMIT_VIRTUALTABLE-
1466 case P4_VTAB: {
executed 2 times by 1 test: case (-12):
Executed by:
  • Self test (438)
2
1467 sqlite3_vtab *pVtab = pOp->p4.pVtab->pVtab;-
1468 sqlite3_str_appendf(&x, "vtab:%p", pVtab);-
1469 break;
executed 2 times by 1 test: break;
Executed by:
  • Self test (438)
2
1470 }-
1471#endif-
1472 case P4_INTARRAY: {
executed 49 times by 1 test: case (-15):
Executed by:
  • Self test (438)
49
1473 int i;-
1474 int *ai = pOp->p4.ai;-
1475 int n = ai[0]; /* The first element of an INTARRAY is always the-
1476 ** count of the number of elements to follow */-
1477 for(i=1; i<=n; i++){
i<=nDescription
TRUEevaluated 57 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 49 times by 1 test
Evaluated by:
  • Self test (438)
49-57
1478 sqlite3_str_appendf(&x, ",%d", ai[i]);-
1479 }
executed 57 times by 1 test: end of block
Executed by:
  • Self test (438)
57
1480 zTemp[0] = '[';-
1481 sqlite3_str_append(&x, "]", 1);-
1482 break;
executed 49 times by 1 test: break;
Executed by:
  • Self test (438)
49
1483 }-
1484 case P4_SUBPROGRAM: {
executed 10 times by 1 test: case (-4):
Executed by:
  • Self test (438)
10
1485 sqlite3_str_appendf(&x, "program");-
1486 break;
executed 10 times by 1 test: break;
Executed by:
  • Self test (438)
10
1487 }-
1488 case P4_DYNBLOB:
never executed: case (-17):
0
1489 case P4_ADVANCE: {
executed 603 times by 1 test: case (-5):
Executed by:
  • Self test (438)
603
1490 zTemp[0] = 0;-
1491 break;
executed 603 times by 1 test: break;
Executed by:
  • Self test (438)
603
1492 }-
1493 case P4_TABLE: {
executed 60 times by 1 test: case (-6):
Executed by:
  • Self test (438)
60
1494 sqlite3_str_appendf(&x, "%s", pOp->p4.pTab->zName);-
1495 break;
executed 60 times by 1 test: break;
Executed by:
  • Self test (438)
60
1496 }-
1497 default: {
executed 8023 times by 1 test: default:
Executed by:
  • Self test (438)
8023
1498 zP4 = pOp->p4.z;-
1499 if( zP4==0 ){
zP4==0Description
TRUEevaluated 6590 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1433 times by 1 test
Evaluated by:
  • Self test (438)
1433-6590
1500 zP4 = zTemp;-
1501 zTemp[0] = 0;-
1502 }
executed 6590 times by 1 test: end of block
Executed by:
  • Self test (438)
6590
1503 }-
1504 }
executed 8023 times by 1 test: end of block
Executed by:
  • Self test (438)
8023
1505 sqlite3StrAccumFinish(&x);-
1506 assert( zP4!=0 );-
1507 return zP4;
executed 10706 times by 1 test: return zP4;
Executed by:
  • Self test (438)
10706
1508}-
1509#endif /* VDBE_DISPLAY_P4 */-
1510-
1511/*-
1512** Declare to the Vdbe that the BTree object at db->aDb[i] is used.-
1513**-
1514** The prepared statements need to know in advance the complete set of-
1515** attached databases that will be use. A mask of these databases-
1516** is maintained in p->btreeMask. The p->lockMask value is the subset of-
1517** p->btreeMask of databases that will require a lock.-
1518*/-
1519void sqlite3VdbeUsesBtree(Vdbe *p, int i){-
1520 assert( i>=0 && i<p->db->nDb && i<(int)sizeof(yDbMask)*8 );-
1521 assert( i<(int)sizeof(p->btreeMask)*8 );-
1522 DbMaskSet(p->btreeMask, i);-
1523 if( i!=1 && sqlite3BtreeSharable(p->db->aDb[i].pBt) ){
i!=1Description
TRUEevaluated 301488 times by 435 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 39458 times by 44 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 (30)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (39)
  • Self test (42)
  • Self test (43)
  • Self test (438)
  • Self test (44)
  • Self test (45)
  • Self test (46)
  • Self test (47)
  • Self test (48)
  • Self test (53)
  • Self test (57)
  • Self test (58)
  • ...
sqlite3BtreeSh...b->aDb[i].pBt)Description
TRUEevaluated 2173 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 299315 times by 435 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)
  • ...
2173-301488
1524 DbMaskSet(p->lockMask, i);-
1525 }
executed 2173 times by 1 test: end of block
Executed by:
  • Self test (438)
2173
1526}
executed 340946 times by 435 tests: end of block
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)
  • ...
340946
1527-
1528#if !defined(SQLITE_OMIT_SHARED_CACHE)-
1529/*-
1530** If SQLite is compiled to support shared-cache mode and to be threadsafe,-
1531** this routine obtains the mutex associated with each BtShared structure-
1532** that may be accessed by the VM passed as an argument. In doing so it also-
1533** sets the BtShared.db member of each of the BtShared structures, ensuring-
1534** that the correct busy-handler callback is invoked if required.-
1535**-
1536** If SQLite is not threadsafe but does support shared-cache mode, then-
1537** sqlite3BtreeEnter() is invoked to set the BtShared.db variables-
1538** of all of BtShared structures accessible via the database handle -
1539** associated with the VM.-
1540**-
1541** If SQLite is not threadsafe and does not support shared-cache mode, this-
1542** function is a no-op.-
1543**-
1544** The p->btreeMask field is a bitmask of all btrees that the prepared -
1545** statement p will ever use. Let N be the number of bits in p->btreeMask-
1546** corresponding to btrees that use shared cache. Then the runtime of-
1547** this routine is N*N. But as N is rarely more than 1, this should not-
1548** be a problem.-
1549*/-
1550void sqlite3VdbeEnter(Vdbe *p){-
1551 int i;-
1552 sqlite3 *db;-
1553 Db *aDb;-
1554 int nDb;-
1555 if( DbMaskAllZero(p->lockMask) ) return; /* The common case */
executed 4726071 times by 435 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)
  • ...
(p->lockMask)==0Description
TRUEevaluated 4726071 times by 435 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 25138 times by 1 test
Evaluated by:
  • Self test (438)
25138-4726071
1556 db = p->db;-
1557 aDb = db->aDb;-
1558 nDb = db->nDb;-
1559 for(i=0; i<nDb; i++){
i<nDbDescription
TRUEevaluated 51570 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 25138 times by 1 test
Evaluated by:
  • Self test (438)
25138-51570
1560 if( i!=1 && DbMaskTest(p->lockMask,i) && ALWAYS(aDb[i].pBt!=0) ){
i!=1Description
TRUEevaluated 26432 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 25138 times by 1 test
Evaluated by:
  • Self test (438)
(((p->lockMask...)1)<<(i)))!=0)Description
TRUEevaluated 25646 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 786 times by 1 test
Evaluated by:
  • Self test (438)
(aDb[i].pBt!=0)Description
TRUEevaluated 25646 times by 1 test
Evaluated by:
  • Self test (438)
FALSEnever evaluated
0-26432
1561 sqlite3BtreeEnter(aDb[i].pBt);-
1562 }
executed 25646 times by 1 test: end of block
Executed by:
  • Self test (438)
25646
1563 }
executed 51570 times by 1 test: end of block
Executed by:
  • Self test (438)
51570
1564}
executed 25138 times by 1 test: end of block
Executed by:
  • Self test (438)
25138
1565#endif-
1566-
1567#if !defined(SQLITE_OMIT_SHARED_CACHE) && SQLITE_THREADSAFE>0-
1568/*-
1569** Unlock all of the btrees previously locked by a call to sqlite3VdbeEnter().-
1570*/-
1571static SQLITE_NOINLINE void vdbeLeave(Vdbe *p){-
1572 int i;-
1573 sqlite3 *db;-
1574 Db *aDb;-
1575 int nDb;-
1576 db = p->db;-
1577 aDb = db->aDb;-
1578 nDb = db->nDb;-
1579 for(i=0; i<nDb; i++){
i<nDbDescription
TRUEevaluated 51570 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 25138 times by 1 test
Evaluated by:
  • Self test (438)
25138-51570
1580 if( i!=1 && DbMaskTest(p->lockMask,i) && ALWAYS(aDb[i].pBt!=0) ){
i!=1Description
TRUEevaluated 26432 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 25138 times by 1 test
Evaluated by:
  • Self test (438)
(((p->lockMask...)1)<<(i)))!=0)Description
TRUEevaluated 25646 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 786 times by 1 test
Evaluated by:
  • Self test (438)
(aDb[i].pBt!=0)Description
TRUEevaluated 25646 times by 1 test
Evaluated by:
  • Self test (438)
FALSEnever evaluated
0-26432
1581 sqlite3BtreeLeave(aDb[i].pBt);-
1582 }
executed 25646 times by 1 test: end of block
Executed by:
  • Self test (438)
25646
1583 }
executed 51570 times by 1 test: end of block
Executed by:
  • Self test (438)
51570
1584}
executed 25138 times by 1 test: end of block
Executed by:
  • Self test (438)
25138
1585void sqlite3VdbeLeave(Vdbe *p){-
1586 if( DbMaskAllZero(p->lockMask) ) return; /* The common case */
executed 4725626 times by 435 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)
  • ...
(p->lockMask)==0Description
TRUEevaluated 4725626 times by 435 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 25138 times by 1 test
Evaluated by:
  • Self test (438)
25138-4725626
1587 vdbeLeave(p);-
1588}
executed 25138 times by 1 test: end of block
Executed by:
  • Self test (438)
25138
1589#endif-
1590-
1591#if defined(VDBE_PROFILE) || defined(SQLITE_DEBUG)-
1592/*-
1593** Print a single opcode. This routine is used for debugging only.-
1594*/-
1595void sqlite3VdbePrintOp(FILE *pOut, int pc, VdbeOp *pOp){-
1596 char *zP4;-
1597 char zPtr[50];-
1598 char zCom[100];-
1599 static const char *zFormat1 = "%4d %-13s %4d %4d %4d %-13s %.2X %s\n";-
1600 if( pOut==0 ) pOut = stdout;-
1601 zP4 = displayP4(pOp, zPtr, sizeof(zPtr));-
1602#ifdef SQLITE_ENABLE_EXPLAIN_COMMENTS-
1603 displayComment(pOp, zP4, zCom, sizeof(zCom));-
1604#else-
1605 zCom[0] = 0;-
1606#endif-
1607 /* NB: The sqlite3OpcodeName() function is implemented by code created-
1608 ** by the mkopcodeh.awk and mkopcodec.awk scripts which extract the-
1609 ** information from the vdbe.c source text */-
1610 fprintf(pOut, zFormat1, pc, -
1611 sqlite3OpcodeName(pOp->opcode), pOp->p1, pOp->p2, pOp->p3, zP4, pOp->p5,-
1612 zCom-
1613 );-
1614 fflush(pOut);-
1615}-
1616#endif-
1617-
1618/*-
1619** Initialize an array of N Mem element.-
1620*/-
1621static void initMemArray(Mem *p, int N, sqlite3 *db, u16 flags){-
1622 while( (N--)>0 ){
(N--)>0Description
TRUEevaluated 4022742 times by 435 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 1110892 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)
  • ...
1110892-4022742
1623 p->db = db;-
1624 p->flags = flags;-
1625 p->szMalloc = 0;-
1626#ifdef SQLITE_DEBUG-
1627 p->pScopyFrom = 0;-
1628#endif-
1629 p++;-
1630 }
executed 4022742 times by 435 tests: end of block
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)
  • ...
4022742
1631}
executed 1110892 times by 436 tests: end of block
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)
  • ...
1110892
1632-
1633/*-
1634** Release an array of N Mem elements-
1635*/-
1636static void releaseMemArray(Mem *p, int N){-
1637 if( p && N ){
pDescription
TRUEevaluated 2180738 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 253609 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)
  • ...
NDescription
TRUEevaluated 1589989 times by 435 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 590749 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)
  • ...
253609-2180738
1638 Mem *pEnd = &p[N];-
1639 sqlite3 *db = p->db;-
1640 if( db->pnBytesFreed ){
db->pnBytesFreedDescription
TRUEevaluated 7 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1589982 times by 435 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)
  • ...
7-1589982
1641 do{-
1642 if( p->szMalloc ) sqlite3DbFree(db, p->zMalloc);
executed 11 times by 1 test: sqlite3DbFree(db, p->zMalloc);
Executed by:
  • Self test (438)
p->szMallocDescription
TRUEevaluated 11 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 14 times by 1 test
Evaluated by:
  • Self test (438)
11-14
1643 }while( (++p)<pEnd );
executed 25 times by 1 test: end of block
Executed by:
  • Self test (438)
(++p)<pEndDescription
TRUEevaluated 18 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 7 times by 1 test
Evaluated by:
  • Self test (438)
7-25
1644 return;
executed 7 times by 1 test: return;
Executed by:
  • Self test (438)
7
1645 }-
1646 do{-
1647 assert( (&p[1])==pEnd || p[0].db==p[1].db );-
1648 assert( sqlite3VdbeCheckMemInvariants(p) );-
1649-
1650 /* This block is really an inlined version of sqlite3VdbeMemRelease()-
1651 ** that takes advantage of the fact that the memory cell value is -
1652 ** being set to NULL after releasing any dynamic resources.-
1653 **-
1654 ** The justification for duplicating code is that according to -
1655 ** callgrind, this causes a certain test case to hit the CPU 4.7 -
1656 ** percent less (x86 linux, gcc version 4.1.2, -O6) than if -
1657 ** sqlite3MemRelease() were called from here. With -O2, this jumps-
1658 ** to 6.6 percent. The test case is inserting 1000 rows into a table -
1659 ** with no indexes using a single prepared INSERT statement, bind() -
1660 ** and reset(). Inserts are grouped into a transaction.-
1661 */-
1662 testcase( p->flags & MEM_Agg );-
1663 testcase( p->flags & MEM_Dyn );-
1664 testcase( p->xDel==sqlite3VdbeFrameMemDel );-
1665 if( p->flags&(MEM_Agg|MEM_Dyn) ){
p->flags&(0x2000|0x0400)Description
TRUEevaluated 179768 times by 116 tests
Evaluated by:
  • Self test (10)
  • Self test (100)
  • Self test (11)
  • Self test (12)
  • Self test (13)
  • Self test (14)
  • Self test (15)
  • Self test (16)
  • Self test (17)
  • Self test (18)
  • Self test (19)
  • Self test (20)
  • Self test (21)
  • Self test (22)
  • Self test (23)
  • Self test (34)
  • Self test (353)
  • Self test (354)
  • Self test (355)
  • Self test (356)
  • Self test (357)
  • Self test (358)
  • Self test (359)
  • Self test (360)
  • Self test (361)
  • ...
FALSEevaluated 13244252 times by 435 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)
  • ...
179768-13244252
1666 sqlite3VdbeMemRelease(p);-
1667 }else if( p->szMalloc ){
executed 179768 times by 116 tests: end of block
Executed by:
  • Self test (10)
  • Self test (100)
  • Self test (11)
  • Self test (12)
  • Self test (13)
  • Self test (14)
  • Self test (15)
  • Self test (16)
  • Self test (17)
  • Self test (18)
  • Self test (19)
  • Self test (20)
  • Self test (21)
  • Self test (22)
  • Self test (23)
  • Self test (34)
  • Self test (353)
  • Self test (354)
  • Self test (355)
  • Self test (356)
  • Self test (357)
  • Self test (358)
  • Self test (359)
  • Self test (360)
  • Self test (361)
  • ...
p->szMallocDescription
TRUEevaluated 3935745 times by 435 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 9308507 times by 435 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)
  • ...
179768-9308507
1668 sqlite3DbFreeNN(db, p->zMalloc);-
1669 p->szMalloc = 0;-
1670 }
executed 3935745 times by 435 tests: end of block
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)
  • ...
3935745
1671-
1672 p->flags = MEM_Undefined;-
1673 }while( (++p)<pEnd );
executed 13424020 times by 435 tests: end of block
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)
  • ...
(++p)<pEndDescription
TRUEevaluated 11834038 times by 435 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 1589982 times by 435 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)
  • ...
1589982-13424020
1674 }
executed 1589982 times by 435 tests: end of block
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)
  • ...
1589982
1675}
executed 2434340 times by 436 tests: end of block
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)
  • ...
2434340
1676-
1677#ifdef SQLITE_DEBUG-
1678/*-
1679** Verify that pFrame is a valid VdbeFrame pointer. Return true if it is-
1680** and false if something is wrong.-
1681**-
1682** This routine is intended for use inside of assert() statements only.-
1683*/-
1684int sqlite3VdbeFrameIsValid(VdbeFrame *pFrame){-
1685 if( pFrame->iFrameMagic!=SQLITE_FRAME_MAGIC ) return 0;-
1686 return 1;-
1687}-
1688#endif-
1689-
1690-
1691/*-
1692** This is a destructor on a Mem object (which is really an sqlite3_value)-
1693** that deletes the Frame object that is attached to it as a blob.-
1694**-
1695** This routine does not delete the Frame right away. It merely adds the-
1696** frame to a list of frames to be deleted when the Vdbe halts.-
1697*/-
1698void sqlite3VdbeFrameMemDel(void *pArg){-
1699 VdbeFrame *pFrame = (VdbeFrame*)pArg;-
1700 assert( sqlite3VdbeFrameIsValid(pFrame) );-
1701 pFrame->pParent = pFrame->v->pDelFrame;-
1702 pFrame->v->pDelFrame = pFrame;-
1703}
executed 16137 times by 1 test: end of block
Executed by:
  • Self test (438)
16137
1704-
1705-
1706/*-
1707** Delete a VdbeFrame object and its contents. VdbeFrame objects are-
1708** allocated by the OP_Program opcode in sqlite3VdbeExec().-
1709*/-
1710void sqlite3VdbeFrameDelete(VdbeFrame *p){-
1711 int i;-
1712 Mem *aMem = VdbeFrameMem(p);-
1713 VdbeCursor **apCsr = (VdbeCursor **)&aMem[p->nChildMem];-
1714 assert( sqlite3VdbeFrameIsValid(p) );-
1715 for(i=0; i<p->nChildCsr; i++){
i<p->nChildCsrDescription
TRUEevaluated 22365 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 16137 times by 1 test
Evaluated by:
  • Self test (438)
16137-22365
1716 sqlite3VdbeFreeCursor(p->v, apCsr[i]);-
1717 }
executed 22365 times by 1 test: end of block
Executed by:
  • Self test (438)
22365
1718 releaseMemArray(aMem, p->nChildMem);-
1719 sqlite3VdbeDeleteAuxData(p->v->db, &p->pAuxData, -1, 0);-
1720 sqlite3DbFree(p->v->db, p);-
1721}
executed 16137 times by 1 test: end of block
Executed by:
  • Self test (438)
16137
1722-
1723#ifndef SQLITE_OMIT_EXPLAIN-
1724/*-
1725** Give a listing of the program in the virtual machine.-
1726**-
1727** The interface is the same as sqlite3VdbeExec(). But instead of-
1728** running the code, it invokes the callback once for each instruction.-
1729** This feature is used to implement "EXPLAIN".-
1730**-
1731** When p->explain==1, each instruction is listed. When-
1732** p->explain==2, only OP_Explain instructions are listed and these-
1733** are shown in a different format. p->explain==2 is used to implement-
1734** EXPLAIN QUERY PLAN.-
1735** 2018-04-24: In p->explain==2 mode, the OP_Init opcodes of triggers-
1736** are also shown, so that the boundaries between the main program and-
1737** each trigger are clear.-
1738**-
1739** When p->explain==1, first the main program is listed, then each of-
1740** the trigger subprograms are listed one by one.-
1741*/-
1742int sqlite3VdbeList(-
1743 Vdbe *p /* The VDBE */-
1744){-
1745 int nRow; /* Stop when row count reaches this */-
1746 int nSub = 0; /* Number of sub-vdbes seen so far */-
1747 SubProgram **apSub = 0; /* Array of sub-vdbes */-
1748 Mem *pSub = 0; /* Memory cell hold array of subprogs */-
1749 sqlite3 *db = p->db; /* The database connection */-
1750 int i; /* Loop counter */-
1751 int rc = SQLITE_OK; /* Return code */-
1752 Mem *pMem = &p->aMem[1]; /* First Mem of result set */-
1753 int bListSubprogs = (p->explain==1 || (db->flags & SQLITE_TriggerEQP)!=0);
p->explain==1Description
TRUEevaluated 9781 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1901 times by 1 test
Evaluated by:
  • Self test (438)
(db->flags & 0x01000000)!=0Description
TRUEevaluated 55 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1846 times by 1 test
Evaluated by:
  • Self test (438)
55-9781
1754 Op *pOp = 0;-
1755-
1756 assert( p->explain );-
1757 assert( p->magic==VDBE_MAGIC_RUN );-
1758 assert( p->rc==SQLITE_OK || p->rc==SQLITE_BUSY || p->rc==SQLITE_NOMEM );-
1759-
1760 /* Even though this opcode does not use dynamic strings for-
1761 ** the result, result columns may become dynamic if the user calls-
1762 ** sqlite3_column_text16(), causing a translation to UTF-16 encoding.-
1763 */-
1764 releaseMemArray(pMem, 8);-
1765 p->pResultSet = 0;-
1766-
1767 if( p->rc==SQLITE_NOMEM ){
p->rc==7Description
TRUEnever evaluated
FALSEevaluated 11682 times by 1 test
Evaluated by:
  • Self test (438)
0-11682
1768 /* This happens if a malloc() inside a call to sqlite3_column_text() or-
1769 ** sqlite3_column_text16() failed. */-
1770 sqlite3OomFault(db);-
1771 return SQLITE_ERROR;
never executed: return 1;
0
1772 }-
1773-
1774 /* When the number of output rows reaches nRow, that means the-
1775 ** listing has finished and sqlite3_step() should return SQLITE_DONE.-
1776 ** nRow is the sum of the number of rows in the main program, plus-
1777 ** the sum of the number of rows in all trigger subprograms encountered-
1778 ** so far. The nRow value will increase as new trigger subprograms are-
1779 ** encountered, but p->pc will eventually catch up to nRow.-
1780 */-
1781 nRow = p->nOp;-
1782 if( bListSubprogs ){
bListSubprogsDescription
TRUEevaluated 9836 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1846 times by 1 test
Evaluated by:
  • Self test (438)
1846-9836
1783 /* The first 8 memory cells are used for the result set. So we will-
1784 ** commandeer the 9th cell to use as storage for an array of pointers-
1785 ** to trigger subprograms. The VDBE is guaranteed to have at least 9-
1786 ** cells. */-
1787 assert( p->nMem>9 );-
1788 pSub = &p->aMem[9];-
1789 if( pSub->flags&MEM_Blob ){
pSub->flags&0x0010Description
TRUEevaluated 149 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 9687 times by 1 test
Evaluated by:
  • Self test (438)
149-9687
1790 /* On the first call to sqlite3_step(), pSub will hold a NULL. It is-
1791 ** initialized to a BLOB by the P4_SUBPROGRAM processing logic below */-
1792 nSub = pSub->n/sizeof(Vdbe*);-
1793 apSub = (SubProgram **)pSub->z;-
1794 }
executed 149 times by 1 test: end of block
Executed by:
  • Self test (438)
149
1795 for(i=0; i<nSub; i++){
i<nSubDescription
TRUEevaluated 149 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 9836 times by 1 test
Evaluated by:
  • Self test (438)
149-9836
1796 nRow += apSub[i]->nOp;-
1797 }
executed 149 times by 1 test: end of block
Executed by:
  • Self test (438)
149
1798 }
executed 9836 times by 1 test: end of block
Executed by:
  • Self test (438)
9836
1799-
1800 while(1){ /* Loop exits via break */-
1801 i = p->pc++;-
1802 if( i>=nRow ){
i>=nRowDescription
TRUEevaluated 975 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 28226 times by 1 test
Evaluated by:
  • Self test (438)
975-28226
1803 p->rc = SQLITE_OK;-
1804 rc = SQLITE_DONE;-
1805 break;
executed 975 times by 1 test: break;
Executed by:
  • Self test (438)
975
1806 }-
1807 if( i<p->nOp ){
i<p->nOpDescription
TRUEevaluated 28129 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 97 times by 1 test
Evaluated by:
  • Self test (438)
97-28129
1808 /* The output line number is small enough that we are still in the-
1809 ** main program. */-
1810 pOp = &p->aOp[i];-
1811 }else{
executed 28129 times by 1 test: end of block
Executed by:
  • Self test (438)
28129
1812 /* We are currently listing subprograms. Figure out which one and-
1813 ** pick up the appropriate opcode. */-
1814 int j;-
1815 i -= p->nOp;-
1816 for(j=0; i>=apSub[j]->nOp; j++){
i>=apSub[j]->nOpDescription
TRUEnever evaluated
FALSEevaluated 97 times by 1 test
Evaluated by:
  • Self test (438)
0-97
1817 i -= apSub[j]->nOp;-
1818 }
never executed: end of block
0
1819 pOp = &apSub[j]->aOp[i];-
1820 }
executed 97 times by 1 test: end of block
Executed by:
  • Self test (438)
97
1821-
1822 /* When an OP_Program opcode is encounter (the only opcode that has-
1823 ** a P4_SUBPROGRAM argument), expand the size of the array of subprograms-
1824 ** kept in p->aMem[9].z to hold the new program - assuming this subprogram-
1825 ** has not already been seen.-
1826 */-
1827 if( bListSubprogs && pOp->p4type==P4_SUBPROGRAM ){
bListSubprogsDescription
TRUEevaluated 9898 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 18328 times by 1 test
Evaluated by:
  • Self test (438)
pOp->p4type==(-4)Description
TRUEevaluated 11 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 9887 times by 1 test
Evaluated by:
  • Self test (438)
11-18328
1828 int nByte = (nSub+1)*sizeof(SubProgram*);-
1829 int j;-
1830 for(j=0; j<nSub; j++){
j<nSubDescription
TRUEnever evaluated
FALSEevaluated 11 times by 1 test
Evaluated by:
  • Self test (438)
0-11
1831 if( apSub[j]==pOp->p4.pProgram ) break;
never executed: break;
apSub[j]==pOp->p4.pProgramDescription
TRUEnever evaluated
FALSEnever evaluated
0
1832 }
never executed: end of block
0
1833 if( j==nSub ){
j==nSubDescription
TRUEevaluated 11 times by 1 test
Evaluated by:
  • Self test (438)
FALSEnever evaluated
0-11
1834 p->rc = sqlite3VdbeMemGrow(pSub, nByte, nSub!=0);-
1835 if( p->rc!=SQLITE_OK ){
p->rc!=0Description
TRUEnever evaluated
FALSEevaluated 11 times by 1 test
Evaluated by:
  • Self test (438)
0-11
1836 rc = SQLITE_ERROR;-
1837 break;
never executed: break;
0
1838 }-
1839 apSub = (SubProgram **)pSub->z;-
1840 apSub[nSub++] = pOp->p4.pProgram;-
1841 pSub->flags |= MEM_Blob;-
1842 pSub->n = nSub*sizeof(SubProgram*);-
1843 nRow += pOp->p4.pProgram->nOp;-
1844 }
executed 11 times by 1 test: end of block
Executed by:
  • Self test (438)
11
1845 }
executed 11 times by 1 test: end of block
Executed by:
  • Self test (438)
11
1846 if( p->explain<2 ) break;
executed 9443 times by 1 test: break;
Executed by:
  • Self test (438)
p->explain<2Description
TRUEevaluated 9443 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 18783 times by 1 test
Evaluated by:
  • Self test (438)
9443-18783
1847 if( pOp->opcode==OP_Explain ) break;
executed 1263 times by 1 test: break;
Executed by:
  • Self test (438)
pOp->opcode==172Description
TRUEevaluated 1263 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 17520 times by 1 test
Evaluated by:
  • Self test (438)
1263-17520
1848 if( pOp->opcode==OP_Init && p->pc>1 ) break;
executed 1 time by 1 test: break;
Executed by:
  • Self test (438)
pOp->opcode==61Description
TRUEevaluated 638 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 16882 times by 1 test
Evaluated by:
  • Self test (438)
p->pc>1Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 637 times by 1 test
Evaluated by:
  • Self test (438)
1-16882
1849 }
executed 17519 times by 1 test: end of block
Executed by:
  • Self test (438)
17519
1850-
1851 if( rc==SQLITE_OK ){
rc==0Description
TRUEevaluated 10707 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 975 times by 1 test
Evaluated by:
  • Self test (438)
975-10707
1852 if( db->u1.isInterrupted ){
db->u1.isInterruptedDescription
TRUEevaluated 1 time by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 10706 times by 1 test
Evaluated by:
  • Self test (438)
1-10706
1853 p->rc = SQLITE_INTERRUPT;-
1854 rc = SQLITE_ERROR;-
1855 sqlite3VdbeError(p, sqlite3ErrStr(p->rc));-
1856 }else{
executed 1 time by 1 test: end of block
Executed by:
  • Self test (438)
1
1857 char *zP4;-
1858 if( p->explain==1 ){
p->explain==1Description
TRUEevaluated 9442 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1264 times by 1 test
Evaluated by:
  • Self test (438)
1264-9442
1859 pMem->flags = MEM_Int;-
1860 pMem->u.i = i; /* Program counter */-
1861 pMem++;-
1862 -
1863 pMem->flags = MEM_Static|MEM_Str|MEM_Term;-
1864 pMem->z = (char*)sqlite3OpcodeName(pOp->opcode); /* Opcode */-
1865 assert( pMem->z!=0 );-
1866 pMem->n = sqlite3Strlen30(pMem->z);-
1867 pMem->enc = SQLITE_UTF8;-
1868 pMem++;-
1869 }
executed 9442 times by 1 test: end of block
Executed by:
  • Self test (438)
9442
1870-
1871 pMem->flags = MEM_Int;-
1872 pMem->u.i = pOp->p1; /* P1 */-
1873 pMem++;-
1874-
1875 pMem->flags = MEM_Int;-
1876 pMem->u.i = pOp->p2; /* P2 */-
1877 pMem++;-
1878-
1879 pMem->flags = MEM_Int;-
1880 pMem->u.i = pOp->p3; /* P3 */-
1881 pMem++;-
1882-
1883 if( sqlite3VdbeMemClearAndResize(pMem, 100) ){ /* P4 */
sqlite3VdbeMem...ize(pMem, 100)Description
TRUEnever evaluated
FALSEevaluated 10706 times by 1 test
Evaluated by:
  • Self test (438)
0-10706
1884 assert( p->db->mallocFailed );-
1885 return SQLITE_ERROR;
never executed: return 1;
0
1886 }-
1887 pMem->flags = MEM_Str|MEM_Term;-
1888 zP4 = displayP4(pOp, pMem->z, pMem->szMalloc);-
1889 if( zP4!=pMem->z ){
zP4!=pMem->zDescription
TRUEevaluated 1441 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 9265 times by 1 test
Evaluated by:
  • Self test (438)
1441-9265
1890 pMem->n = 0;-
1891 sqlite3VdbeMemSetStr(pMem, zP4, -1, SQLITE_UTF8, 0);-
1892 }else{
executed 1441 times by 1 test: end of block
Executed by:
  • Self test (438)
1441
1893 assert( pMem->z!=0 );-
1894 pMem->n = sqlite3Strlen30(pMem->z);-
1895 pMem->enc = SQLITE_UTF8;-
1896 }
executed 9265 times by 1 test: end of block
Executed by:
  • Self test (438)
9265
1897 pMem++;-
1898-
1899 if( p->explain==1 ){
p->explain==1Description
TRUEevaluated 9442 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1264 times by 1 test
Evaluated by:
  • Self test (438)
1264-9442
1900 if( sqlite3VdbeMemClearAndResize(pMem, 4) ){
sqlite3VdbeMem...esize(pMem, 4)Description
TRUEnever evaluated
FALSEevaluated 9442 times by 1 test
Evaluated by:
  • Self test (438)
0-9442
1901 assert( p->db->mallocFailed );-
1902 return SQLITE_ERROR;
never executed: return 1;
0
1903 }-
1904 pMem->flags = MEM_Str|MEM_Term;-
1905 pMem->n = 2;-
1906 sqlite3_snprintf(3, pMem->z, "%.2x", pOp->p5); /* P5 */-
1907 pMem->enc = SQLITE_UTF8;-
1908 pMem++;-
1909 -
1910#ifdef SQLITE_ENABLE_EXPLAIN_COMMENTS-
1911 if( sqlite3VdbeMemClearAndResize(pMem, 500) ){-
1912 assert( p->db->mallocFailed );-
1913 return SQLITE_ERROR;-
1914 }-
1915 pMem->flags = MEM_Str|MEM_Term;-
1916 pMem->n = displayComment(pOp, zP4, pMem->z, 500);-
1917 pMem->enc = SQLITE_UTF8;-
1918#else-
1919 pMem->flags = MEM_Null; /* Comment */-
1920#endif-
1921 }
executed 9442 times by 1 test: end of block
Executed by:
  • Self test (438)
9442
1922-
1923 p->nResColumn = 8 - 4*(p->explain-1);-
1924 p->pResultSet = &p->aMem[1];-
1925 p->rc = SQLITE_OK;-
1926 rc = SQLITE_ROW;-
1927 }
executed 10706 times by 1 test: end of block
Executed by:
  • Self test (438)
10706
1928 }-
1929 return rc;
executed 11682 times by 1 test: return rc;
Executed by:
  • Self test (438)
11682
1930}-
1931#endif /* SQLITE_OMIT_EXPLAIN */-
1932-
1933#ifdef SQLITE_DEBUG-
1934/*-
1935** Print the SQL that was used to generate a VDBE program.-
1936*/-
1937void sqlite3VdbePrintSql(Vdbe *p){-
1938 const char *z = 0;-
1939 if( p->zSql ){-
1940 z = p->zSql;-
1941 }else if( p->nOp>=1 ){-
1942 const VdbeOp *pOp = &p->aOp[0];-
1943 if( pOp->opcode==OP_Init && pOp->p4.z!=0 ){-
1944 z = pOp->p4.z;-
1945 while( sqlite3Isspace(*z) ) z++;-
1946 }-
1947 }-
1948 if( z ) printf("SQL: [%s]\n", z);-
1949}-
1950#endif-
1951-
1952#if !defined(SQLITE_OMIT_TRACE) && defined(SQLITE_ENABLE_IOTRACE)-
1953/*-
1954** Print an IOTRACE message showing SQL content.-
1955*/-
1956void sqlite3VdbeIOTraceSql(Vdbe *p){-
1957 int nOp = p->nOp;-
1958 VdbeOp *pOp;-
1959 if( sqlite3IoTrace==0 ) return;-
1960 if( nOp<1 ) return;-
1961 pOp = &p->aOp[0];-
1962 if( pOp->opcode==OP_Init && pOp->p4.z!=0 ){-
1963 int i, j;-
1964 char z[1000];-
1965 sqlite3_snprintf(sizeof(z), z, "%s", pOp->p4.z);-
1966 for(i=0; sqlite3Isspace(z[i]); i++){}-
1967 for(j=0; z[i]; i++){-
1968 if( sqlite3Isspace(z[i]) ){-
1969 if( z[i-1]!=' ' ){-
1970 z[j++] = ' ';-
1971 }-
1972 }else{-
1973 z[j++] = z[i];-
1974 }-
1975 }-
1976 z[j] = 0;-
1977 sqlite3IoTrace("SQL %s\n", z);-
1978 }-
1979}-
1980#endif /* !SQLITE_OMIT_TRACE && SQLITE_ENABLE_IOTRACE */-
1981-
1982/* An instance of this object describes bulk memory available for use-
1983** by subcomponents of a prepared statement. Space is allocated out-
1984** of a ReusableSpace object by the allocSpace() routine below.-
1985*/-
1986struct ReusableSpace {-
1987 u8 *pSpace; /* Available memory */-
1988 int nFree; /* Bytes of available memory */-
1989 int nNeeded; /* Total bytes that could not be allocated */-
1990};-
1991-
1992/* Try to allocate nByte bytes of 8-byte aligned bulk memory for pBuf-
1993** from the ReusableSpace object. Return a pointer to the allocated-
1994** memory on success. If insufficient memory is available in the-
1995** ReusableSpace object, increase the ReusableSpace.nNeeded-
1996** value by the amount needed and return NULL.-
1997**-
1998** If pBuf is not initially NULL, that means that the memory has already-
1999** been allocated by a prior call to this routine, so just return a copy-
2000** of pBuf and leave ReusableSpace unchanged.-
2001**-
2002** This allocator is employed to repurpose unused slots at the end of the-
2003** opcode array of prepared state for other memory needs of the prepared-
2004** statement.-
2005*/-
2006static void *allocSpace(-
2007 struct ReusableSpace *p, /* Bulk memory available for allocation */-
2008 void *pBuf, /* Pointer to a prior allocation */-
2009 int nByte /* Bytes of memory needed */-
2010){-
2011 assert( EIGHT_BYTE_ALIGNMENT(p->pSpace) );-
2012 if( pBuf==0 ){
pBuf==0Description
TRUEevaluated 1885461 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 220263 times by 390 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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)
  • Self test (123)
  • Self test (124)
  • ...
220263-1885461
2013 nByte = ROUND8(nByte);-
2014 if( nByte <= p->nFree ){
nByte <= p->nFreeDescription
TRUEevaluated 1807587 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 77874 times by 390 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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)
  • Self test (123)
  • Self test (124)
  • ...
77874-1807587
2015 p->nFree -= nByte;-
2016 pBuf = &p->pSpace[p->nFree];-
2017 }else{
executed 1807587 times by 436 tests: end of block
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)
  • ...
1807587
2018 p->nNeeded += nByte;-
2019 }
executed 77874 times by 390 tests: end of block
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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)
  • Self test (123)
  • Self test (124)
  • ...
77874
2020 }-
2021 assert( EIGHT_BYTE_ALIGNMENT(pBuf) );-
2022 return pBuf;
executed 2105724 times by 436 tests: return pBuf;
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)
  • ...
2105724
2023}-
2024-
2025/*-
2026** Rewind the VDBE back to the beginning in preparation for-
2027** running it.-
2028*/-
2029void sqlite3VdbeRewind(Vdbe *p){-
2030#if defined(SQLITE_DEBUG) || defined(VDBE_PROFILE)-
2031 int i;-
2032#endif-
2033 assert( p!=0 );-
2034 assert( p->magic==VDBE_MAGIC_INIT || p->magic==VDBE_MAGIC_RESET );-
2035-
2036 /* There should be at least one opcode.-
2037 */-
2038 assert( p->nOp>0 );-
2039-
2040 /* Set the magic to VDBE_MAGIC_RUN sooner rather than later. */-
2041 p->magic = VDBE_MAGIC_RUN;-
2042-
2043#ifdef SQLITE_DEBUG-
2044 for(i=0; i<p->nMem; i++){-
2045 assert( p->aMem[i].db==p->db );-
2046 }-
2047#endif-
2048 p->pc = -1;-
2049 p->rc = SQLITE_OK;-
2050 p->errorAction = OE_Abort;-
2051 p->nChange = 0;-
2052 p->cacheCtr = 1;-
2053 p->minWriteFileFormat = 255;-
2054 p->iStatement = 0;-
2055 p->nFkConstraint = 0;-
2056#ifdef VDBE_PROFILE-
2057 for(i=0; i<p->nOp; i++){-
2058 p->aOp[i].cnt = 0;-
2059 p->aOp[i].cycles = 0;-
2060 }-
2061#endif-
2062}
executed 1494902 times by 436 tests: end of block
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)
  • ...
1494902
2063-
2064/*-
2065** Prepare a virtual machine for execution for the first time after-
2066** creating the virtual machine. This involves things such-
2067** as allocating registers and initializing the program counter.-
2068** After the VDBE has be prepped, it can be executed by one or more-
2069** calls to sqlite3VdbeExec(). -
2070**-
2071** This function may be called exactly once on each virtual machine.-
2072** After this routine is called the VM has been "packaged" and is ready-
2073** to run. After this routine is called, further calls to -
2074** sqlite3VdbeAddOp() functions are prohibited. This routine disconnects-
2075** the Vdbe from the Parse object that helped generate it so that the-
2076** the Vdbe becomes an independent entity and the Parse object can be-
2077** destroyed.-
2078**-
2079** Use the sqlite3VdbeRewind() procedure to restore a virtual machine back-
2080** to its initial state after it has been run.-
2081*/-
2082void sqlite3VdbeMakeReady(-
2083 Vdbe *p, /* The VDBE */-
2084 Parse *pParse /* Parsing context */-
2085){-
2086 sqlite3 *db; /* The database connection */-
2087 int nVar; /* Number of parameters */-
2088 int nMem; /* Number of VM memory registers */-
2089 int nCursor; /* Number of cursors required */-
2090 int nArg; /* Number of arguments in subprograms */-
2091 int n; /* Loop counter */-
2092 struct ReusableSpace x; /* Reusable bulk memory */-
2093-
2094 assert( p!=0 );-
2095 assert( p->nOp>0 );-
2096 assert( pParse!=0 );-
2097 assert( p->magic==VDBE_MAGIC_INIT );-
2098 assert( pParse==p->pParse );-
2099 db = p->db;-
2100 assert( db->mallocFailed==0 );-
2101 nVar = pParse->nVar;-
2102 nMem = pParse->nMem;-
2103 nCursor = pParse->nTab;-
2104 nArg = pParse->nMaxArg;-
2105 -
2106 /* Each cursor uses a memory cell. The first cursor (cursor 0) can-
2107 ** use aMem[0] which is not otherwise used by the VDBE program. Allocate-
2108 ** space at the end of aMem[] for cursors 1 and greater.-
2109 ** See also: allocateCursor().-
2110 */-
2111 nMem += nCursor;-
2112 if( nCursor==0 && nMem>0 ) nMem++; /* Space for aMem[0] even if not used */
executed 94025 times by 52 tests: nMem++;
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 (27)
  • Self test (28)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (39)
  • Self test (4)
  • Self test (438)
  • Self test (5)
  • Self test (54)
  • ...
nCursor==0Description
TRUEevaluated 227808 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 224091 times by 435 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)
  • ...
nMem>0Description
TRUEevaluated 94025 times by 52 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 (27)
  • Self test (28)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (39)
  • Self test (4)
  • Self test (438)
  • Self test (5)
  • Self test (54)
  • ...
FALSEevaluated 133783 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)
  • ...
94025-227808
2113-
2114 /* Figure out how much reusable memory is available at the end of the-
2115 ** opcode array. This extra memory will be reallocated for other elements-
2116 ** of the prepared statement.-
2117 */-
2118 n = ROUND8(sizeof(Op)*p->nOp); /* Bytes of opcode memory used */-
2119 x.pSpace = &((u8*)p->aOp)[n]; /* Unused opcode memory */-
2120 assert( EIGHT_BYTE_ALIGNMENT(x.pSpace) );-
2121 x.nFree = ROUNDDOWN8(pParse->szOpAlloc - n); /* Bytes of unused memory */-
2122 assert( x.nFree>=0 );-
2123 assert( EIGHT_BYTE_ALIGNMENT(&x.pSpace[x.nFree]) );-
2124-
2125 resolveP2Values(p, &nArg);-
2126 p->usesStmtJournal = (u8)(pParse->isMultiWrite && pParse->mayAbort);-
2127 if( pParse->explain && nMem<10 ){
pParse->explainDescription
TRUEevaluated 939 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 450960 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)
  • ...
nMem<10Description
TRUEevaluated 488 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 451 times by 1 test
Evaluated by:
  • Self test (438)
451-450960
2128 nMem = 10;-
2129 }
executed 488 times by 1 test: end of block
Executed by:
  • Self test (438)
488
2130 p->expired = 0;-
2131-
2132 /* Memory for registers, parameters, cursor, etc, is allocated in one or two-
2133 ** passes. On the first pass, we try to reuse unused memory at the -
2134 ** end of the opcode array. If we are unable to satisfy all memory-
2135 ** requirements by reusing the opcode array tail, then the second-
2136 ** pass will fill in the remainder using a fresh memory allocation. -
2137 **-
2138 ** This two-pass approach that reuses as much memory as possible from-
2139 ** the leftover memory at the end of the opcode array. This can significantly-
2140 ** reduce the amount of memory held by a prepared statement.-
2141 */-
2142 do {-
2143 x.nNeeded = 0;-
2144 p->aMem = allocSpace(&x, p->aMem, nMem*sizeof(Mem));-
2145 p->aVar = allocSpace(&x, p->aVar, nVar*sizeof(Mem));-
2146 p->apArg = allocSpace(&x, p->apArg, nArg*sizeof(Mem*));-
2147 p->apCsr = allocSpace(&x, p->apCsr, nCursor*sizeof(VdbeCursor*));-
2148#ifdef SQLITE_ENABLE_STMT_SCANSTATUS-
2149 p->anExec = allocSpace(&x, p->anExec, p->nOp*sizeof(i64));-
2150#endif-
2151 if( x.nNeeded==0 ) break;
executed 451890 times by 436 tests: break;
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)
  • ...
x.nNeeded==0Description
TRUEevaluated 451890 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 74541 times by 390 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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)
  • Self test (123)
  • Self test (124)
  • ...
74541-451890
2152 x.pSpace = p->pFree = sqlite3DbMallocRawNN(db, x.nNeeded);-
2153 x.nFree = x.nNeeded;-
2154 }while( !db->mallocFailed );
executed 74541 times by 390 tests: end of block
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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)
  • Self test (123)
  • Self test (124)
  • ...
!db->mallocFailedDescription
TRUEevaluated 74532 times by 390 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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)
  • Self test (123)
  • Self test (124)
  • ...
FALSEevaluated 9 times by 1 test
Evaluated by:
  • Self test (438)
9-74541
2155-
2156 p->pVList = pParse->pVList;-
2157 pParse->pVList = 0;-
2158 p->explain = pParse->explain;-
2159 if( db->mallocFailed ){
db->mallocFailedDescription
TRUEevaluated 9 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 451890 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)
  • ...
9-451890
2160 p->nVar = 0;-
2161 p->nCursor = 0;-
2162 p->nMem = 0;-
2163 }else{
executed 9 times by 1 test: end of block
Executed by:
  • Self test (438)
9
2164 p->nCursor = nCursor;-
2165 p->nVar = (ynVar)nVar;-
2166 initMemArray(p->aVar, nVar, db, MEM_Null);-
2167 p->nMem = nMem;-
2168 initMemArray(p->aMem, nMem, db, MEM_Undefined);-
2169 memset(p->apCsr, 0, nCursor*sizeof(VdbeCursor*));-
2170#ifdef SQLITE_ENABLE_STMT_SCANSTATUS-
2171 memset(p->anExec, 0, p->nOp*sizeof(i64));-
2172#endif-
2173 }
executed 451890 times by 436 tests: end of block
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)
  • ...
451890
2174 sqlite3VdbeRewind(p);-
2175}
executed 451899 times by 436 tests: end of block
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)
  • ...
451899
2176-
2177/*-
2178** Close a VDBE cursor and release all the resources that cursor -
2179** happens to hold.-
2180*/-
2181void sqlite3VdbeFreeCursor(Vdbe *p, VdbeCursor *pCx){-
2182 if( pCx==0 ){
pCx==0Description
TRUEevaluated 24649 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)
  • ...
FALSEevaluated 2003039 times by 435 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)
  • ...
24649-2003039
2183 return;
executed 24649 times by 28 tests: return;
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 (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)
  • ...
24649
2184 }-
2185 assert( pCx->pBtx==0 || pCx->eCurType==CURTYPE_BTREE );-
2186 switch( pCx->eCurType ){-
2187 case CURTYPE_SORTER: {
executed 18989 times by 10 tests: case 1:
Executed by:
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (42)
  • Self test (438)
  • Self test (44)
  • Self test (46)
  • Self test (47)
18989
2188 sqlite3VdbeSorterClose(p->db, pCx);-
2189 break;
executed 18989 times by 10 tests: break;
Executed by:
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (42)
  • Self test (438)
  • Self test (44)
  • Self test (46)
  • Self test (47)
18989
2190 }-
2191 case CURTYPE_BTREE: {
executed 1914647 times by 435 tests: case 0:
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)
  • ...
1914647
2192 if( pCx->isEphemeral ){
pCx->isEphemeralDescription
TRUEevaluated 62586 times by 5 tests
Evaluated by:
  • Self test (101)
  • Self test (32)
  • Self test (33)
  • Self test (438)
  • Self test (64)
FALSEevaluated 1852061 times by 435 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)
  • ...
62586-1852061
2193 if( pCx->pBtx ) sqlite3BtreeClose(pCx->pBtx);
executed 60197 times by 5 tests: sqlite3BtreeClose(pCx->pBtx);
Executed by:
  • Self test (101)
  • Self test (32)
  • Self test (33)
  • Self test (438)
  • Self test (64)
pCx->pBtxDescription
TRUEevaluated 60197 times by 5 tests
Evaluated by:
  • Self test (101)
  • Self test (32)
  • Self test (33)
  • Self test (438)
  • Self test (64)
FALSEevaluated 2389 times by 1 test
Evaluated by:
  • Self test (438)
2389-60197
2194 /* The pCx->pCursor will be close automatically, if it exists, by-
2195 ** the call above. */-
2196 }else{
executed 62586 times by 5 tests: end of block
Executed by:
  • Self test (101)
  • Self test (32)
  • Self test (33)
  • Self test (438)
  • Self test (64)
62586
2197 assert( pCx->uc.pCursor!=0 );-
2198 sqlite3BtreeCloseCursor(pCx->uc.pCursor);-
2199 }
executed 1852061 times by 435 tests: end of block
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)
  • ...
1852061
2200 break;
executed 1914647 times by 435 tests: break;
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)
  • ...
1914647
2201 }-
2202#ifndef SQLITE_OMIT_VIRTUALTABLE-
2203 case CURTYPE_VTAB: {
executed 11225 times by 1 test: case 2:
Executed by:
  • Self test (438)
11225
2204 sqlite3_vtab_cursor *pVCur = pCx->uc.pVCur;-
2205 const sqlite3_module *pModule = pVCur->pVtab->pModule;-
2206 assert( pVCur->pVtab->nRef>0 );-
2207 pVCur->pVtab->nRef--;-
2208 pModule->xClose(pVCur);-
2209 break;
executed 11225 times by 1 test: break;
Executed by:
  • Self test (438)
11225
2210 }-
2211#endif-
2212 }-
2213}
executed 2003039 times by 435 tests: end of block
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)
  • ...
2003039
2214-
2215/*-
2216** Close all cursors in the current frame.-
2217*/-
2218static void closeCursorsInFrame(Vdbe *p){-
2219 if( p->apCsr ){
p->apCsrDescription
TRUEevaluated 1629029 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)
  • ...
FALSEnever evaluated
0-1629029
2220 int i;-
2221 for(i=0; i<p->nCursor; i++){
i<p->nCursorDescription
TRUEevaluated 2731104 times by 435 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 1629029 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)
  • ...
1629029-2731104
2222 VdbeCursor *pC = p->apCsr[i];-
2223 if( pC ){
pCDescription
TRUEevaluated 1583653 times by 435 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 1147451 times by 435 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)
  • ...
1147451-1583653
2224 sqlite3VdbeFreeCursor(p, pC);-
2225 p->apCsr[i] = 0;-
2226 }
executed 1583653 times by 435 tests: end of block
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)
  • ...
1583653
2227 }
executed 2731104 times by 435 tests: end of block
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)
  • ...
2731104
2228 }
executed 1629029 times by 436 tests: end of block
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)
  • ...
1629029
2229}
executed 1629029 times by 436 tests: end of block
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)
  • ...
1629029
2230-
2231/*-
2232** Copy the values stored in the VdbeFrame structure to its Vdbe. This-
2233** is used, for example, when a trigger sub-program is halted to restore-
2234** control to the main program.-
2235*/-
2236int sqlite3VdbeFrameRestore(VdbeFrame *pFrame){-
2237 Vdbe *v = pFrame->v;-
2238 closeCursorsInFrame(v);-
2239#ifdef SQLITE_ENABLE_STMT_SCANSTATUS-
2240 v->anExec = pFrame->anExec;-
2241#endif-
2242 v->aOp = pFrame->aOp;-
2243 v->nOp = pFrame->nOp;-
2244 v->aMem = pFrame->aMem;-
2245 v->nMem = pFrame->nMem;-
2246 v->apCsr = pFrame->apCsr;-
2247 v->nCursor = pFrame->nCursor;-
2248 v->db->lastRowid = pFrame->lastRowid;-
2249 v->nChange = pFrame->nChange;-
2250 v->db->nChange = pFrame->nDbChange;-
2251 sqlite3VdbeDeleteAuxData(v->db, &v->pAuxData, -1, 0);-
2252 v->pAuxData = pFrame->pAuxData;-
2253 pFrame->pAuxData = 0;-
2254 return pFrame->pc;
executed 134560 times by 1 test: return pFrame->pc;
Executed by:
  • Self test (438)
134560
2255}-
2256-
2257/*-
2258** Close all cursors.-
2259**-
2260** Also release any dynamic memory held by the VM in the Vdbe.aMem memory -
2261** cell array. This is necessary as the memory cell array may contain-
2262** pointers to VdbeFrame objects, which may in turn contain pointers to-
2263** open cursors.-
2264*/-
2265static void closeAllCursors(Vdbe *p){-
2266 if( p->pFrame ){
p->pFrameDescription
TRUEevaluated 81 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1494388 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)
  • ...
81-1494388
2267 VdbeFrame *pFrame;-
2268 for(pFrame=p->pFrame; pFrame->pParent; pFrame=pFrame->pParent);
executed 7098 times by 1 test: ;
Executed by:
  • Self test (438)
pFrame->pParentDescription
TRUEevaluated 7098 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 81 times by 1 test
Evaluated by:
  • Self test (438)
81-7098
2269 sqlite3VdbeFrameRestore(pFrame);-
2270 p->pFrame = 0;-
2271 p->nFrame = 0;-
2272 }
executed 81 times by 1 test: end of block
Executed by:
  • Self test (438)
81
2273 assert( p->nFrame==0 );-
2274 closeCursorsInFrame(p);-
2275 if( p->aMem ){
p->aMemDescription
TRUEevaluated 1494460 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 9 times by 1 test
Evaluated by:
  • Self test (438)
9-1494460
2276 releaseMemArray(p->aMem, p->nMem);-
2277 }
executed 1494460 times by 436 tests: end of block
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)
  • ...
1494460
2278 while( p->pDelFrame ){
p->pDelFrameDescription
TRUEevaluated 16137 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1494469 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)
  • ...
16137-1494469
2279 VdbeFrame *pDel = p->pDelFrame;-
2280 p->pDelFrame = pDel->pParent;-
2281 sqlite3VdbeFrameDelete(pDel);-
2282 }
executed 16137 times by 1 test: end of block
Executed by:
  • Self test (438)
16137
2283-
2284 /* Delete any auxdata allocations made by the VM */-
2285 if( p->pAuxData ) sqlite3VdbeDeleteAuxData(p->db, &p->pAuxData, -1, 0);
executed 58 times by 1 test: sqlite3VdbeDeleteAuxData(p->db, &p->pAuxData, -1, 0);
Executed by:
  • Self test (438)
p->pAuxDataDescription
TRUEevaluated 58 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1494411 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)
  • ...
58-1494411
2286 assert( p->pAuxData==0 );-
2287}
executed 1494469 times by 436 tests: end of block
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)
  • ...
1494469
2288-
2289/*-
2290** Set the number of result columns that will be returned by this SQL-
2291** statement. This is now set at compile time, rather than during-
2292** execution of the vdbe program so that sqlite3_column_count() can-
2293** be called on an SQL statement before sqlite3_step().-
2294*/-
2295void sqlite3VdbeSetNumCols(Vdbe *p, int nResColumn){-
2296 int n;-
2297 sqlite3 *db = p->db;-
2298-
2299 if( p->nResColumn ){
p->nResColumnDescription
TRUEevaluated 322 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 206817 times by 435 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)
  • ...
322-206817
2300 releaseMemArray(p->aColName, p->nResColumn*COLNAME_N);-
2301 sqlite3DbFree(db, p->aColName);-
2302 }
executed 322 times by 1 test: end of block
Executed by:
  • Self test (438)
322
2303 n = nResColumn*COLNAME_N;-
2304 p->nResColumn = (u16)nResColumn;-
2305 p->aColName = (Mem*)sqlite3DbMallocRawNN(db, sizeof(Mem)*n );-
2306 if( p->aColName==0 ) return;
executed 27 times by 1 test: return;
Executed by:
  • Self test (438)
p->aColName==0Description
TRUEevaluated 27 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 207112 times by 435 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)
  • ...
27-207112
2307 initMemArray(p->aColName, n, db, MEM_Null);-
2308}
executed 207112 times by 435 tests: end of block
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)
  • ...
207112
2309-
2310/*-
2311** Set the name of the idx'th column to be returned by the SQL statement.-
2312** zName must be a pointer to a nul terminated string.-
2313**-
2314** This call must be made after a call to sqlite3VdbeSetNumCols().-
2315**-
2316** The final parameter, xDel, must be one of SQLITE_DYNAMIC, SQLITE_STATIC-
2317** or SQLITE_TRANSIENT. If it is SQLITE_DYNAMIC, then the buffer pointed-
2318** to by zName will be freed by sqlite3DbFree() when the vdbe is destroyed.-
2319*/-
2320int sqlite3VdbeSetColName(-
2321 Vdbe *p, /* Vdbe being configured */-
2322 int idx, /* Index of column zName applies to */-
2323 int var, /* One of the COLNAME_* constants */-
2324 const char *zName, /* Pointer to buffer containing name */-
2325 void (*xDel)(void*) /* Memory management strategy for zName */-
2326){-
2327 int rc;-
2328 Mem *pColName;-
2329 assert( idx<p->nResColumn );-
2330 assert( var<COLNAME_N );-
2331 if( p->db->mallocFailed ){
p->db->mallocFailedDescription
TRUEevaluated 553 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 767523 times by 435 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)
  • ...
553-767523
2332 assert( !zName || xDel!=SQLITE_DYNAMIC );-
2333 return SQLITE_NOMEM_BKPT;
executed 553 times by 1 test: return 7;
Executed by:
  • Self test (438)
553
2334 }-
2335 assert( p->aColName!=0 );-
2336 pColName = &(p->aColName[idx+var*p->nResColumn]);-
2337 rc = sqlite3VdbeMemSetStr(pColName, zName, -1, SQLITE_UTF8, xDel);-
2338 assert( rc!=0 || !zName || (pColName->flags&MEM_Term)!=0 );-
2339 return rc;
executed 767523 times by 435 tests: return rc;
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)
  • ...
767523
2340}-
2341-
2342/*-
2343** A read or write transaction may or may not be active on database handle-
2344** db. If a transaction is active, commit it. If there is a-
2345** write-transaction spanning more than one database file, this routine-
2346** takes care of the master journal trickery.-
2347*/-
2348static int vdbeCommit(sqlite3 *db, Vdbe *p){-
2349 int i;-
2350 int nTrans = 0; /* Number of databases with an active write-transaction-
2351 ** that are candidates for a two-phase commit using a-
2352 ** master-journal */-
2353 int rc = SQLITE_OK;-
2354 int needXcommit = 0;-
2355-
2356#ifdef SQLITE_OMIT_VIRTUALTABLE-
2357 /* With this option, sqlite3VtabSync() is defined to be simply -
2358 ** SQLITE_OK so p is not used. -
2359 */-
2360 UNUSED_PARAMETER(p);-
2361#endif-
2362-
2363 /* Before doing anything else, call the xSync() callback for any-
2364 ** virtual module tables written in this transaction. This has to-
2365 ** be done before determining whether a master journal file is -
2366 ** required, as an xSync() callback may add an attached database-
2367 ** to the transaction.-
2368 */-
2369 rc = sqlite3VtabSync(db, p);-
2370-
2371 /* This loop determines (a) if the commit hook should be invoked and-
2372 ** (b) how many database files have open write transactions, not -
2373 ** including the temp database. (b) is important because if more than -
2374 ** one database file has an open write transaction, a master journal-
2375 ** file is required for an atomic commit.-
2376 */ -
2377 for(i=0; rc==SQLITE_OK && i<db->nDb; i++){
rc==0Description
TRUEevaluated 1031127 times by 434 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 54 times by 3 tests
Evaluated by:
  • Self test (38)
  • Self test (438)
  • Self test (55)
i<db->nDbDescription
TRUEevaluated 690683 times by 434 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 340444 times by 434 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)
  • ...
54-1031127
2378 Btree *pBt = db->aDb[i].pBt;-
2379 if( sqlite3BtreeIsInTrans(pBt) ){
sqlite3BtreeIsInTrans(pBt)Description
TRUEevaluated 98158 times by 150 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (11)
  • Self test (13)
  • Self test (14)
  • Self test (15)
  • Self test (17)
  • Self test (18)
  • Self test (19)
  • Self test (2)
  • Self test (21)
  • Self test (22)
  • Self test (23)
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (3)
  • Self test (31)
  • Self test (32)
  • ...
FALSEevaluated 592525 times by 434 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)
  • ...
98158-592525
2380 /* Whether or not a database might need a master journal depends upon-
2381 ** its journal mode (among other things). This matrix determines which-
2382 ** journal modes use a master journal and which do not */-
2383 static const u8 aMJNeeded[] = {-
2384 /* DELETE */ 1,-
2385 /* PERSIST */ 1,-
2386 /* OFF */ 0,-
2387 /* TRUNCATE */ 1,-
2388 /* MEMORY */ 0,-
2389 /* WAL */ 0-
2390 };-
2391 Pager *pPager; /* Pager associated with pBt */-
2392 needXcommit = 1;-
2393 sqlite3BtreeEnter(pBt);-
2394 pPager = sqlite3BtreePager(pBt);-
2395 if( db->aDb[i].safety_level!=PAGER_SYNCHRONOUS_OFF
db->aDb[i].safety_level!=0x01Description
TRUEevaluated 95189 times by 150 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (11)
  • Self test (13)
  • Self test (14)
  • Self test (15)
  • Self test (17)
  • Self test (18)
  • Self test (19)
  • Self test (2)
  • Self test (21)
  • Self test (22)
  • Self test (23)
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (3)
  • Self test (31)
  • Self test (32)
  • ...
FALSEevaluated 2969 times by 1 test
Evaluated by:
  • Self test (438)
2969-95189
2396 && aMJNeeded[sqlite3PagerGetJournalMode(pPager)]
aMJNeeded[sqli...lMode(pPager)]Description
TRUEevaluated 38092 times by 126 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (104)
  • Self test (11)
  • Self test (13)
  • Self test (14)
  • Self test (15)
  • Self test (17)
  • Self test (18)
  • Self test (19)
  • Self test (2)
  • Self test (21)
  • Self test (22)
  • Self test (23)
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (3)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (353)
  • Self test (354)
  • Self test (355)
  • ...
FALSEevaluated 57097 times by 26 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 (64)
  • 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)
  • ...
38092-57097
2397 && sqlite3PagerIsMemdb(pPager)==0
sqlite3PagerIsMemdb(pPager)==0Description
TRUEevaluated 37921 times by 126 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (104)
  • Self test (11)
  • Self test (13)
  • Self test (14)
  • Self test (15)
  • Self test (17)
  • Self test (18)
  • Self test (19)
  • Self test (2)
  • Self test (21)
  • Self test (22)
  • Self test (23)
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (3)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (353)
  • Self test (354)
  • Self test (355)
  • ...
FALSEevaluated 171 times by 1 test
Evaluated by:
  • Self test (438)
171-37921
2398 ){ -
2399 assert( i!=1 );-
2400 nTrans++;-
2401 }
executed 37921 times by 126 tests: end of block
Executed by:
  • Self test
  • Self test (10)
  • Self test (104)
  • Self test (11)
  • Self test (13)
  • Self test (14)
  • Self test (15)
  • Self test (17)
  • Self test (18)
  • Self test (19)
  • Self test (2)
  • Self test (21)
  • Self test (22)
  • Self test (23)
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (3)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (353)
  • Self test (354)
  • Self test (355)
  • ...
37921
2402 rc = sqlite3PagerExclusiveLock(pPager);-
2403 sqlite3BtreeLeave(pBt);-
2404 }
executed 98158 times by 150 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 (11)
  • Self test (13)
  • Self test (14)
  • Self test (15)
  • Self test (17)
  • Self test (18)
  • Self test (19)
  • Self test (2)
  • Self test (21)
  • Self test (22)
  • Self test (23)
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (3)
  • Self test (31)
  • Self test (32)
  • ...
98158
2405 }
executed 690683 times by 434 tests: end of block
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)
  • ...
690683
2406 if( rc!=SQLITE_OK ){
rc!=0Description
TRUEevaluated 54 times by 3 tests
Evaluated by:
  • Self test (38)
  • Self test (438)
  • Self test (55)
FALSEevaluated 340444 times by 434 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)
  • ...
54-340444
2407 return rc;
executed 54 times by 3 tests: return rc;
Executed by:
  • Self test (38)
  • Self test (438)
  • Self test (55)
54
2408 }-
2409-
2410 /* If there are any write-transactions at all, invoke the commit hook */-
2411 if( needXcommit && db->xCommitCallback ){
needXcommitDescription
TRUEevaluated 97783 times by 149 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (11)
  • Self test (13)
  • Self test (14)
  • Self test (15)
  • Self test (17)
  • Self test (18)
  • Self test (19)
  • Self test (2)
  • Self test (21)
  • Self test (22)
  • Self test (23)
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (3)
  • Self test (31)
  • Self test (32)
  • ...
FALSEevaluated 242661 times by 432 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)
  • ...
db->xCommitCallbackDescription
TRUEevaluated 10 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 97773 times by 149 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (11)
  • Self test (13)
  • Self test (14)
  • Self test (15)
  • Self test (17)
  • Self test (18)
  • Self test (19)
  • Self test (2)
  • Self test (21)
  • Self test (22)
  • Self test (23)
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (3)
  • Self test (31)
  • Self test (32)
  • ...
10-242661
2412 rc = db->xCommitCallback(db->pCommitArg);-
2413 if( rc ){
rcDescription
TRUEevaluated 3 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 7 times by 1 test
Evaluated by:
  • Self test (438)
3-7
2414 return SQLITE_CONSTRAINT_COMMITHOOK;
executed 3 times by 1 test: return (19 | (2<<8));
Executed by:
  • Self test (438)
3
2415 }-
2416 }
executed 7 times by 1 test: end of block
Executed by:
  • Self test (438)
7
2417-
2418 /* The simple case - no more than one database file (not counting the-
2419 ** TEMP database) has a transaction active. There is no need for the-
2420 ** master-journal.-
2421 **-
2422 ** If the return value of sqlite3BtreeGetFilename() is a zero length-
2423 ** string, it means the main database is :memory: or a temp file. In -
2424 ** that case we do not support atomic multi-file commits, so use the -
2425 ** simple case then too.-
2426 */-
2427 if( 0==sqlite3Strlen30(sqlite3BtreeGetFilename(db->aDb[0].pBt))
0==sqlite3Strl...->aDb[0].pBt))Description
TRUEevaluated 2159 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 338282 times by 434 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)
  • ...
2159-338282
2428 || nTrans<=1
nTrans<=1Description
TRUEevaluated 338220 times by 434 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 62 times by 3 tests
Evaluated by:
  • Self test (4)
  • Self test (438)
  • Self test (5)
62-338220
2429 ){-
2430 for(i=0; rc==SQLITE_OK && i<db->nDb; i++){
rc==0Description
TRUEevaluated 1030313 times by 434 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 149 times by 1 test
Evaluated by:
  • Self test (438)
i<db->nDbDescription
TRUEevaluated 690178 times by 434 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 340135 times by 434 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)
  • ...
149-1030313
2431 Btree *pBt = db->aDb[i].pBt;-
2432 if( pBt ){
pBtDescription
TRUEevaluated 376077 times by 434 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 314101 times by 434 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)
  • ...
314101-376077
2433 rc = sqlite3BtreeCommitPhaseOne(pBt, 0);-
2434 }
executed 375982 times by 434 tests: end of block
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)
  • ...
375982
2435 }
executed 690083 times by 434 tests: end of block
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)
  • ...
690083
2436-
2437 /* Do the commit only if all databases successfully complete phase 1. -
2438 ** If one of the BtreeCommitPhaseOne() calls fails, this indicates an-
2439 ** IO error while deleting or truncating a journal file. It is unlikely,-
2440 ** but could happen. In this case abandon processing and return the error.-
2441 */-
2442 for(i=0; rc==SQLITE_OK && i<db->nDb; i++){
rc==0Description
TRUEevaluated 1029993 times by 434 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 187 times by 1 test
Evaluated by:
  • Self test (438)
i<db->nDbDescription
TRUEevaluated 689896 times by 434 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 340097 times by 434 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)
  • ...
187-1029993
2443 Btree *pBt = db->aDb[i].pBt;-
2444 if( pBt ){
pBtDescription
TRUEevaluated 375833 times by 434 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 314063 times by 434 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)
  • ...
314063-375833
2445 rc = sqlite3BtreeCommitPhaseTwo(pBt, 0);-
2446 }
executed 375833 times by 434 tests: end of block
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)
  • ...
375833
2447 }
executed 689896 times by 434 tests: end of block
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)
  • ...
689896
2448 if( rc==SQLITE_OK ){
rc==0Description
TRUEevaluated 340097 times by 434 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 187 times by 1 test
Evaluated by:
  • Self test (438)
187-340097
2449 sqlite3VtabCommit(db);-
2450 }
executed 340097 times by 434 tests: end of block
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)
  • ...
340097
2451 }
executed 340284 times by 434 tests: end of block
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)
  • ...
340284
2452-
2453 /* The complex case - There is a multi-file write-transaction active.-
2454 ** This requires a master journal file to ensure the transaction is-
2455 ** committed atomically.-
2456 */-
2457#ifndef SQLITE_OMIT_DISKIO-
2458 else{-
2459 sqlite3_vfs *pVfs = db->pVfs;-
2460 char *zMaster = 0; /* File-name for the master journal */-
2461 char const *zMainFile = sqlite3BtreeGetFilename(db->aDb[0].pBt);-
2462 sqlite3_file *pMaster = 0;-
2463 i64 offset = 0;-
2464 int res;-
2465 int retryCount = 0;-
2466 int nMainFile;-
2467-
2468 /* Select a master journal file name */-
2469 nMainFile = sqlite3Strlen30(zMainFile);-
2470 zMaster = sqlite3MPrintf(db, "%s-mjXXXXXX9XXz", zMainFile);-
2471 if( zMaster==0 ) return SQLITE_NOMEM_BKPT;
never executed: return 7;
zMaster==0Description
TRUEnever evaluated
FALSEevaluated 62 times by 3 tests
Evaluated by:
  • Self test (4)
  • Self test (438)
  • Self test (5)
0-62
2472 do {-
2473 u32 iRandom;-
2474 if( retryCount ){
retryCountDescription
TRUEnever evaluated
FALSEevaluated 62 times by 3 tests
Evaluated by:
  • Self test (4)
  • Self test (438)
  • Self test (5)
0-62
2475 if( retryCount>100 ){
retryCount>100Description
TRUEnever evaluated
FALSEnever evaluated
0
2476 sqlite3_log(SQLITE_FULL, "MJ delete: %s", zMaster);-
2477 sqlite3OsDelete(pVfs, zMaster, 0);-
2478 break;
never executed: break;
0
2479 }else if( retryCount==1 ){
retryCount==1Description
TRUEnever evaluated
FALSEnever evaluated
0
2480 sqlite3_log(SQLITE_FULL, "MJ collide: %s", zMaster);-
2481 }
never executed: end of block
0
2482 }
never executed: end of block
0
2483 retryCount++;-
2484 sqlite3_randomness(sizeof(iRandom), &iRandom);-
2485 sqlite3_snprintf(13, &zMaster[nMainFile], "-mj%06X9%02X",-
2486 (iRandom>>8)&0xffffff, iRandom&0xff);-
2487 /* The antipenultimate character of the master journal name must-
2488 ** be "9" to avoid name collisions when using 8+3 filenames. */-
2489 assert( zMaster[sqlite3Strlen30(zMaster)-3]=='9' );-
2490 sqlite3FileSuffix3(zMainFile, zMaster);-
2491 rc = sqlite3OsAccess(pVfs, zMaster, SQLITE_ACCESS_EXISTS, &res);-
2492 }while( rc==SQLITE_OK && res );
executed 62 times by 3 tests: end of block
Executed by:
  • Self test (4)
  • Self test (438)
  • Self test (5)
rc==0Description
TRUEevaluated 62 times by 3 tests
Evaluated by:
  • Self test (4)
  • Self test (438)
  • Self test (5)
FALSEnever evaluated
resDescription
TRUEnever evaluated
FALSEevaluated 62 times by 3 tests
Evaluated by:
  • Self test (4)
  • Self test (438)
  • Self test (5)
0-62
2493 if( rc==SQLITE_OK ){
rc==0Description
TRUEevaluated 62 times by 3 tests
Evaluated by:
  • Self test (4)
  • Self test (438)
  • Self test (5)
FALSEnever evaluated
0-62
2494 /* Open the master journal. */-
2495 rc = sqlite3OsOpenMalloc(pVfs, zMaster, &pMaster, -
2496 SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE|-
2497 SQLITE_OPEN_EXCLUSIVE|SQLITE_OPEN_MASTER_JOURNAL, 0-
2498 );-
2499 }
executed 62 times by 3 tests: end of block
Executed by:
  • Self test (4)
  • Self test (438)
  • Self test (5)
62
2500 if( rc!=SQLITE_OK ){
rc!=0Description
TRUEnever evaluated
FALSEevaluated 62 times by 3 tests
Evaluated by:
  • Self test (4)
  • Self test (438)
  • Self test (5)
0-62
2501 sqlite3DbFree(db, zMaster);-
2502 return rc;
never executed: return rc;
0
2503 }-
2504 -
2505 /* Write the name of each database file in the transaction into the new-
2506 ** master journal file. If an error occurs at this point close-
2507 ** and delete the master journal file. All the individual journal files-
2508 ** still have 'null' as the master journal pointer, so they will roll-
2509 ** back independently if a failure occurs.-
2510 */-
2511 for(i=0; i<db->nDb; i++){
i<db->nDbDescription
TRUEevaluated 201 times by 3 tests
Evaluated by:
  • Self test (4)
  • Self test (438)
  • Self test (5)
FALSEevaluated 62 times by 3 tests
Evaluated by:
  • Self test (4)
  • Self test (438)
  • Self test (5)
62-201
2512 Btree *pBt = db->aDb[i].pBt;-
2513 if( sqlite3BtreeIsInTrans(pBt) ){
sqlite3BtreeIsInTrans(pBt)Description
TRUEevaluated 138 times by 3 tests
Evaluated by:
  • Self test (4)
  • Self test (438)
  • Self test (5)
FALSEevaluated 63 times by 3 tests
Evaluated by:
  • Self test (4)
  • Self test (438)
  • Self test (5)
63-138
2514 char const *zFile = sqlite3BtreeGetJournalname(pBt);-
2515 if( zFile==0 ){
zFile==0Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 137 times by 3 tests
Evaluated by:
  • Self test (4)
  • Self test (438)
  • Self test (5)
1-137
2516 continue; /* Ignore TEMP and :memory: databases */
executed 1 time by 1 test: continue;
Executed by:
  • Self test (438)
1
2517 }-
2518 assert( zFile[0]!=0 );-
2519 rc = sqlite3OsWrite(pMaster, zFile, sqlite3Strlen30(zFile)+1, offset);-
2520 offset += sqlite3Strlen30(zFile)+1;-
2521 if( rc!=SQLITE_OK ){
rc!=0Description
TRUEnever evaluated
FALSEevaluated 137 times by 3 tests
Evaluated by:
  • Self test (4)
  • Self test (438)
  • Self test (5)
0-137
2522 sqlite3OsCloseFree(pMaster);-
2523 sqlite3OsDelete(pVfs, zMaster, 0);-
2524 sqlite3DbFree(db, zMaster);-
2525 return rc;
never executed: return rc;
0
2526 }-
2527 }
executed 137 times by 3 tests: end of block
Executed by:
  • Self test (4)
  • Self test (438)
  • Self test (5)
137
2528 }
executed 200 times by 3 tests: end of block
Executed by:
  • Self test (4)
  • Self test (438)
  • Self test (5)
200
2529-
2530 /* Sync the master journal file. If the IOCAP_SEQUENTIAL device-
2531 ** flag is set this is not required.-
2532 */-
2533 if( 0==(sqlite3OsDeviceCharacteristics(pMaster)&SQLITE_IOCAP_SEQUENTIAL)
0==(sqlite3OsD...r)&0x00000400)Description
TRUEevaluated 62 times by 3 tests
Evaluated by:
  • Self test (4)
  • Self test (438)
  • Self test (5)
FALSEnever evaluated
0-62
2534 && SQLITE_OK!=(rc = sqlite3OsSync(pMaster, SQLITE_SYNC_NORMAL))
0!=(rc = sqlit...ter, 0x00002))Description
TRUEnever evaluated
FALSEevaluated 62 times by 3 tests
Evaluated by:
  • Self test (4)
  • Self test (438)
  • Self test (5)
0-62
2535 ){-
2536 sqlite3OsCloseFree(pMaster);-
2537 sqlite3OsDelete(pVfs, zMaster, 0);-
2538 sqlite3DbFree(db, zMaster);-
2539 return rc;
never executed: return rc;
0
2540 }-
2541-
2542 /* Sync all the db files involved in the transaction. The same call-
2543 ** sets the master journal pointer in each individual journal. If-
2544 ** an error occurs here, do not delete the master journal file.-
2545 **-
2546 ** If the error occurs during the first call to-
2547 ** sqlite3BtreeCommitPhaseOne(), then there is a chance that the-
2548 ** master journal file will be orphaned. But we cannot delete it,-
2549 ** in case the master journal file name was written into the journal-
2550 ** file before the failure occurred.-
2551 */-
2552 for(i=0; rc==SQLITE_OK && i<db->nDb; i++){
rc==0Description
TRUEevaluated 261 times by 3 tests
Evaluated by:
  • Self test (4)
  • Self test (438)
  • Self test (5)
FALSEnever evaluated
i<db->nDbDescription
TRUEevaluated 201 times by 3 tests
Evaluated by:
  • Self test (4)
  • Self test (438)
  • Self test (5)
FALSEevaluated 60 times by 1 test
Evaluated by:
  • Self test (438)
0-261
2553 Btree *pBt = db->aDb[i].pBt;-
2554 if( pBt ){
pBtDescription
TRUEevaluated 146 times by 3 tests
Evaluated by:
  • Self test (4)
  • Self test (438)
  • Self test (5)
FALSEevaluated 55 times by 3 tests
Evaluated by:
  • Self test (4)
  • Self test (438)
  • Self test (5)
55-146
2555 rc = sqlite3BtreeCommitPhaseOne(pBt, zMaster);-
2556 }
executed 144 times by 3 tests: end of block
Executed by:
  • Self test (4)
  • Self test (438)
  • Self test (5)
144
2557 }
executed 199 times by 3 tests: end of block
Executed by:
  • Self test (4)
  • Self test (438)
  • Self test (5)
199
2558 sqlite3OsCloseFree(pMaster);-
2559 assert( rc!=SQLITE_BUSY );-
2560 if( rc!=SQLITE_OK ){
rc!=0Description
TRUEnever evaluated
FALSEevaluated 60 times by 1 test
Evaluated by:
  • Self test (438)
0-60
2561 sqlite3DbFree(db, zMaster);-
2562 return rc;
never executed: return rc;
0
2563 }-
2564-
2565 /* Delete the master journal file. This commits the transaction. After-
2566 ** doing this the directory is synced again before any individual-
2567 ** transaction files are deleted.-
2568 */-
2569 rc = sqlite3OsDelete(pVfs, zMaster, 1);-
2570 sqlite3DbFree(db, zMaster);-
2571 zMaster = 0;-
2572 if( rc ){
rcDescription
TRUEnever evaluated
FALSEevaluated 60 times by 1 test
Evaluated by:
  • Self test (438)
0-60
2573 return rc;
never executed: return rc;
0
2574 }-
2575-
2576 /* All files and directories have already been synced, so the following-
2577 ** calls to sqlite3BtreeCommitPhaseTwo() are only closing files and-
2578 ** deleting or truncating journals. If something goes wrong while-
2579 ** this is happening we don't really care. The integrity of the-
2580 ** transaction is already guaranteed, but some stray 'cold' journals-
2581 ** may be lying around. Returning an error code won't help matters.-
2582 */-
2583 disable_simulated_io_errors();-
2584 sqlite3BeginBenignMalloc();-
2585 for(i=0; i<db->nDb; i++){
i<db->nDbDescription
TRUEevaluated 195 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 60 times by 1 test
Evaluated by:
  • Self test (438)
60-195
2586 Btree *pBt = db->aDb[i].pBt;-
2587 if( pBt ){
pBtDescription
TRUEevaluated 142 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 53 times by 1 test
Evaluated by:
  • Self test (438)
53-142
2588 sqlite3BtreeCommitPhaseTwo(pBt, 1);-
2589 }
executed 142 times by 1 test: end of block
Executed by:
  • Self test (438)
142
2590 }
executed 195 times by 1 test: end of block
Executed by:
  • Self test (438)
195
2591 sqlite3EndBenignMalloc();-
2592 enable_simulated_io_errors();-
2593-
2594 sqlite3VtabCommit(db);-
2595 }
executed 60 times by 1 test: end of block
Executed by:
  • Self test (438)
60
2596#endif-
2597-
2598 return rc;
executed 340344 times by 434 tests: return rc;
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)
  • ...
340344
2599}-
2600-
2601/* -
2602** This routine checks that the sqlite3.nVdbeActive count variable-
2603** matches the number of vdbe's in the list sqlite3.pVdbe that are-
2604** currently active. An assertion fails if the two counts do not match.-
2605** This is an internal self-check only - it is not an essential processing-
2606** step.-
2607**-
2608** This is a no-op if NDEBUG is defined.-
2609*/-
2610#ifndef NDEBUG-
2611static void checkActiveVdbeCnt(sqlite3 *db){-
2612 Vdbe *p;-
2613 int cnt = 0;-
2614 int nWrite = 0;-
2615 int nRead = 0;-
2616 p = db->pVdbe;-
2617 while( p ){-
2618 if( sqlite3_stmt_busy((sqlite3_stmt*)p) ){-
2619 cnt++;-
2620 if( p->readOnly==0 ) nWrite++;-
2621 if( p->bIsReader ) nRead++;-
2622 }-
2623 p = p->pNext;-
2624 }-
2625 assert( cnt==db->nVdbeActive );-
2626 assert( nWrite==db->nVdbeWrite );-
2627 assert( nRead==db->nVdbeRead );-
2628}-
2629#else-
2630#define checkActiveVdbeCnt(x)-
2631#endif-
2632-
2633/*-
2634** If the Vdbe passed as the first argument opened a statement-transaction,-
2635** close it now. Argument eOp must be either SAVEPOINT_ROLLBACK or-
2636** SAVEPOINT_RELEASE. If it is SAVEPOINT_ROLLBACK, then the statement-
2637** transaction is rolled back. If eOp is SAVEPOINT_RELEASE, then the -
2638** statement transaction is committed.-
2639**-
2640** If an IO error occurs, an SQLITE_IOERR_XXX error code is returned. -
2641** Otherwise SQLITE_OK.-
2642*/-
2643static SQLITE_NOINLINE int vdbeCloseStatement(Vdbe *p, int eOp){-
2644 sqlite3 *const db = p->db;-
2645 int rc = SQLITE_OK;-
2646 int i;-
2647 const int iSavepoint = p->iStatement-1;-
2648-
2649 assert( eOp==SAVEPOINT_ROLLBACK || eOp==SAVEPOINT_RELEASE);-
2650 assert( db->nStatement>0 );-
2651 assert( p->iStatement==(db->nStatement+db->nSavepoint) );-
2652-
2653 for(i=0; i<db->nDb; i++){
i<db->nDbDescription
TRUEevaluated 9047 times by 14 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (438)
  • Self test (54)
  • Self test (57)
  • Self test (58)
  • Self test (6)
  • Self test (8)
FALSEevaluated 3404 times by 14 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (438)
  • Self test (54)
  • Self test (57)
  • Self test (58)
  • Self test (6)
  • Self test (8)
3404-9047
2654 int rc2 = SQLITE_OK;-
2655 Btree *pBt = db->aDb[i].pBt;-
2656 if( pBt ){
pBtDescription
TRUEevaluated 6485 times by 14 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (438)
  • Self test (54)
  • Self test (57)
  • Self test (58)
  • Self test (6)
  • Self test (8)
FALSEevaluated 2562 times by 14 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (438)
  • Self test (54)
  • Self test (57)
  • Self test (58)
  • Self test (6)
  • Self test (8)
2562-6485
2657 if( eOp==SAVEPOINT_ROLLBACK ){
eOp==2Description
TRUEevaluated 366 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 6119 times by 14 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (438)
  • Self test (54)
  • Self test (57)
  • Self test (58)
  • Self test (6)
  • Self test (8)
366-6119
2658 rc2 = sqlite3BtreeSavepoint(pBt, SAVEPOINT_ROLLBACK, iSavepoint);-
2659 }
executed 366 times by 1 test: end of block
Executed by:
  • Self test (438)
366
2660 if( rc2==SQLITE_OK ){
rc2==0Description
TRUEevaluated 6485 times by 14 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (438)
  • Self test (54)
  • Self test (57)
  • Self test (58)
  • Self test (6)
  • Self test (8)
FALSEnever evaluated
0-6485
2661 rc2 = sqlite3BtreeSavepoint(pBt, SAVEPOINT_RELEASE, iSavepoint);-
2662 }
executed 6485 times by 14 tests: end of block
Executed by:
  • Self test
  • Self test (10)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (438)
  • Self test (54)
  • Self test (57)
  • Self test (58)
  • Self test (6)
  • Self test (8)
6485
2663 if( rc==SQLITE_OK ){
rc==0Description
TRUEevaluated 6485 times by 14 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (438)
  • Self test (54)
  • Self test (57)
  • Self test (58)
  • Self test (6)
  • Self test (8)
FALSEnever evaluated
0-6485
2664 rc = rc2;-
2665 }
executed 6485 times by 14 tests: end of block
Executed by:
  • Self test
  • Self test (10)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (438)
  • Self test (54)
  • Self test (57)
  • Self test (58)
  • Self test (6)
  • Self test (8)
6485
2666 }
executed 6485 times by 14 tests: end of block
Executed by:
  • Self test
  • Self test (10)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (438)
  • Self test (54)
  • Self test (57)
  • Self test (58)
  • Self test (6)
  • Self test (8)
6485
2667 }
executed 9047 times by 14 tests: end of block
Executed by:
  • Self test
  • Self test (10)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (438)
  • Self test (54)
  • Self test (57)
  • Self test (58)
  • Self test (6)
  • Self test (8)
9047
2668 db->nStatement--;-
2669 p->iStatement = 0;-
2670-
2671 if( rc==SQLITE_OK ){
rc==0Description
TRUEevaluated 3404 times by 14 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (438)
  • Self test (54)
  • Self test (57)
  • Self test (58)
  • Self test (6)
  • Self test (8)
FALSEnever evaluated
0-3404
2672 if( eOp==SAVEPOINT_ROLLBACK ){
eOp==2Description
TRUEevaluated 177 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 3227 times by 14 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (438)
  • Self test (54)
  • Self test (57)
  • Self test (58)
  • Self test (6)
  • Self test (8)
177-3227
2673 rc = sqlite3VtabSavepoint(db, SAVEPOINT_ROLLBACK, iSavepoint);-
2674 }
executed 177 times by 1 test: end of block
Executed by:
  • Self test (438)
177
2675 if( rc==SQLITE_OK ){
rc==0Description
TRUEevaluated 3404 times by 14 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (438)
  • Self test (54)
  • Self test (57)
  • Self test (58)
  • Self test (6)
  • Self test (8)
FALSEnever evaluated
0-3404
2676 rc = sqlite3VtabSavepoint(db, SAVEPOINT_RELEASE, iSavepoint);-
2677 }
executed 3404 times by 14 tests: end of block
Executed by:
  • Self test
  • Self test (10)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (438)
  • Self test (54)
  • Self test (57)
  • Self test (58)
  • Self test (6)
  • Self test (8)
3404
2678 }
executed 3404 times by 14 tests: end of block
Executed by:
  • Self test
  • Self test (10)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (438)
  • Self test (54)
  • Self test (57)
  • Self test (58)
  • Self test (6)
  • Self test (8)
3404
2679-
2680 /* If the statement transaction is being rolled back, also restore the -
2681 ** database handles deferred constraint counter to the value it had when -
2682 ** the statement transaction was opened. */-
2683 if( eOp==SAVEPOINT_ROLLBACK ){
eOp==2Description
TRUEevaluated 177 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 3227 times by 14 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (438)
  • Self test (54)
  • Self test (57)
  • Self test (58)
  • Self test (6)
  • Self test (8)
177-3227
2684 db->nDeferredCons = p->nStmtDefCons;-
2685 db->nDeferredImmCons = p->nStmtDefImmCons;-
2686 }
executed 177 times by 1 test: end of block
Executed by:
  • Self test (438)
177
2687 return rc;
executed 3404 times by 14 tests: return rc;
Executed by:
  • Self test
  • Self test (10)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (438)
  • Self test (54)
  • Self test (57)
  • Self test (58)
  • Self test (6)
  • Self test (8)
3404
2688}-
2689int sqlite3VdbeCloseStatement(Vdbe *p, int eOp){-
2690 if( p->db->nStatement && p->iStatement ){
p->db->nStatementDescription
TRUEevaluated 3815 times by 14 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (438)
  • Self test (54)
  • Self test (57)
  • Self test (58)
  • Self test (6)
  • Self test (8)
FALSEevaluated 3340976 times by 434 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)
  • ...
p->iStatementDescription
TRUEevaluated 3404 times by 14 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (438)
  • Self test (54)
  • Self test (57)
  • Self test (58)
  • Self test (6)
  • Self test (8)
FALSEevaluated 411 times by 4 tests
Evaluated by:
  • Self test
  • Self test (438)
  • Self test (57)
  • Self test (58)
411-3340976
2691 return vdbeCloseStatement(p, eOp);
executed 3404 times by 14 tests: return vdbeCloseStatement(p, eOp);
Executed by:
  • Self test
  • Self test (10)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (438)
  • Self test (54)
  • Self test (57)
  • Self test (58)
  • Self test (6)
  • Self test (8)
3404
2692 }-
2693 return SQLITE_OK;
executed 3341387 times by 434 tests: return 0;
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)
  • ...
3341387
2694}-
2695-
2696-
2697/*-
2698** This function is called when a transaction opened by the database -
2699** handle associated with the VM passed as an argument is about to be -
2700** committed. If there are outstanding deferred foreign key constraint-
2701** violations, return SQLITE_ERROR. Otherwise, SQLITE_OK.-
2702**-
2703** If there are outstanding FK violations and this function returns -
2704** SQLITE_ERROR, set the result of the VM to SQLITE_CONSTRAINT_FOREIGNKEY-
2705** and write an error message to it. Then return SQLITE_ERROR.-
2706*/-
2707#ifndef SQLITE_OMIT_FOREIGN_KEY-
2708int sqlite3VdbeCheckFk(Vdbe *p, int deferred){-
2709 sqlite3 *db = p->db;-
2710 if( (deferred && (db->nDeferredCons+db->nDeferredImmCons)>0)
deferredDescription
TRUEevaluated 346412 times by 435 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 3684486 times by 435 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)
  • ...
(db->nDeferred...rredImmCons)>0Description
TRUEevaluated 87 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 346325 times by 435 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)
  • ...
87-3684486
2711 || (!deferred && p->nFkConstraint>0)
!deferredDescription
TRUEevaluated 3684486 times by 435 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 346325 times by 435 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)
  • ...
p->nFkConstraint>0Description
TRUEevaluated 194 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 3684292 times by 435 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)
  • ...
194-3684486
2712 ){-
2713 p->rc = SQLITE_CONSTRAINT_FOREIGNKEY;-
2714 p->errorAction = OE_Abort;-
2715 sqlite3VdbeError(p, "FOREIGN KEY constraint failed");-
2716 return SQLITE_ERROR;
executed 281 times by 1 test: return 1;
Executed by:
  • Self test (438)
281
2717 }-
2718 return SQLITE_OK;
executed 4030617 times by 435 tests: return 0;
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)
  • ...
4030617
2719}-
2720#endif-
2721-
2722/*-
2723** This routine is called the when a VDBE tries to halt. If the VDBE-
2724** has made changes and is in autocommit mode, then commit those-
2725** changes. If a rollback is needed, then do the rollback.-
2726**-
2727** This routine is the only way to move the state of a VM from-
2728** SQLITE_MAGIC_RUN to SQLITE_MAGIC_HALT. It is harmless to-
2729** call this on a VM that is in the SQLITE_MAGIC_HALT state.-
2730**-
2731** Return an error code. If the commit could not complete because of-
2732** lock contention, return SQLITE_BUSY. If SQLITE_BUSY is returned, it-
2733** means the close did not happen and needs to be repeated.-
2734*/-
2735int sqlite3VdbeHalt(Vdbe *p){-
2736 int rc; /* Used to store transient return codes */-
2737 sqlite3 *db = p->db;-
2738-
2739 /* This function contains the logic that determines if a statement or-
2740 ** transaction will be committed or rolled back as a result of the-
2741 ** execution of this virtual machine. -
2742 **-
2743 ** If any of the following errors occur:-
2744 **-
2745 ** SQLITE_NOMEM-
2746 ** SQLITE_IOERR-
2747 ** SQLITE_FULL-
2748 ** SQLITE_INTERRUPT-
2749 **-
2750 ** Then the internal cache might have been left in an inconsistent-
2751 ** state. We need to rollback the statement transaction, if there is-
2752 ** one, or the complete transaction if there is no statement transaction.-
2753 */-
2754-
2755 if( p->magic!=VDBE_MAGIC_RUN ){
p->magic!=0x2df20da3Description
TRUEevaluated 1058899 times by 435 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 1494469 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)
  • ...
1058899-1494469
2756 return SQLITE_OK;
executed 1058899 times by 435 tests: return 0;
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)
  • ...
1058899
2757 }-
2758 if( db->mallocFailed ){
db->mallocFailedDescription
TRUEevaluated 213 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1494256 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)
  • ...
213-1494256
2759 p->rc = SQLITE_NOMEM_BKPT;-
2760 }
executed 213 times by 1 test: end of block
Executed by:
  • Self test (438)
213
2761 closeAllCursors(p);-
2762 checkActiveVdbeCnt(db);-
2763-
2764 /* No commit or rollback needed if the program never started or if the-
2765 ** SQL statement does not read or write a database file. */-
2766 if( p->pc>=0 && p->bIsReader ){
p->pc>=0Description
TRUEevaluated 1103526 times by 435 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 390943 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)
  • ...
p->bIsReaderDescription
TRUEevaluated 997048 times by 435 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 106478 times by 39 tests
Evaluated by:
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (2)
  • Self test (20)
  • Self test (22)
  • Self test (27)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (4)
  • Self test (438)
  • Self test (5)
  • Self test (54)
  • Self test (6)
  • Self test (64)
  • Self test (77)
  • Self test (78)
  • Self test (79)
  • ...
106478-1103526
2767 int mrc; /* Primary error code from p->rc */-
2768 int eStatementOp = 0;-
2769 int isSpecialError; /* Set to true if a 'special' error */-
2770-
2771 /* Lock all btrees used by the statement */-
2772 sqlite3VdbeEnter(p);-
2773-
2774 /* Check for one of the special errors */-
2775 mrc = p->rc & 0xff;-
2776 isSpecialError = mrc==SQLITE_NOMEM || mrc==SQLITE_IOERR
mrc==7Description
TRUEevaluated 218 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 996830 times by 435 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)
  • ...
mrc==10Description
TRUEevaluated 337 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 996493 times by 435 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)
  • ...
218-996830
2777 || mrc==SQLITE_INTERRUPT || mrc==SQLITE_FULL;
mrc==9Description
TRUEevaluated 2491 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 994002 times by 435 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)
  • ...
mrc==13Description
TRUEevaluated 407 times by 2 tests
Evaluated by:
  • Self test (39)
  • Self test (438)
FALSEevaluated 993595 times by 435 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)
  • ...
407-994002
2778 if( isSpecialError ){
isSpecialErrorDescription
TRUEevaluated 3453 times by 2 tests
Evaluated by:
  • Self test (39)
  • Self test (438)
FALSEevaluated 993595 times by 435 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)
  • ...
3453-993595
2779 /* If the query was read-only and the error code is SQLITE_INTERRUPT, -
2780 ** no rollback is necessary. Otherwise, at least a savepoint -
2781 ** transaction must be rolled back to restore the database to a -
2782 ** consistent state.-
2783 **-
2784 ** Even if the statement is read-only, it is important to perform-
2785 ** a statement or transaction rollback operation. If the error -
2786 ** occurred while writing to the journal, sub-journal or database-
2787 ** file as part of an effort to free up cache space (see function-
2788 ** pagerStress() in pager.c), the rollback is required to restore -
2789 ** the pager to a consistent state.-
2790 */-
2791 if( !p->readOnly || mrc!=SQLITE_INTERRUPT ){
!p->readOnlyDescription
TRUEevaluated 1477 times by 2 tests
Evaluated by:
  • Self test (39)
  • Self test (438)
FALSEevaluated 1976 times by 1 test
Evaluated by:
  • Self test (438)
mrc!=9Description
TRUEevaluated 239 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1737 times by 1 test
Evaluated by:
  • Self test (438)
239-1976
2792 if( (mrc==SQLITE_NOMEM || mrc==SQLITE_FULL) && p->usesStmtJournal ){
mrc==7Description
TRUEevaluated 218 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1498 times by 2 tests
Evaluated by:
  • Self test (39)
  • Self test (438)
mrc==13Description
TRUEevaluated 407 times by 2 tests
Evaluated by:
  • Self test (39)
  • Self test (438)
FALSEevaluated 1091 times by 1 test
Evaluated by:
  • Self test (438)
p->usesStmtJournalDescription
TRUEevaluated 5 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 620 times by 2 tests
Evaluated by:
  • Self test (39)
  • Self test (438)
5-1498
2793 eStatementOp = SAVEPOINT_ROLLBACK;-
2794 }else{
executed 5 times by 1 test: end of block
Executed by:
  • Self test (438)
5
2795 /* We are forced to roll back the active transaction. Before doing-
2796 ** so, abort any other statements this handle currently has active.-
2797 */-
2798 sqlite3RollbackAll(db, SQLITE_ABORT_ROLLBACK);-
2799 sqlite3CloseSavepoints(db);-
2800 db->autoCommit = 1;-
2801 p->nChange = 0;-
2802 }
executed 1711 times by 2 tests: end of block
Executed by:
  • Self test (39)
  • Self test (438)
1711
2803 }-
2804 }
executed 3453 times by 2 tests: end of block
Executed by:
  • Self test (39)
  • Self test (438)
3453
2805-
2806 /* Check for immediate foreign key violations. */-
2807 if( p->rc==SQLITE_OK ){
p->rc==0Description
TRUEevaluated 989679 times by 435 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 7369 times by 18 tests
Evaluated by:
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (38)
  • Self test (39)
  • Self test (438)
  • Self test (47)
  • Self test (50)
  • Self test (51)
  • Self test (52)
  • Self test (53)
  • Self test (59)
7369-989679
2808 sqlite3VdbeCheckFk(p, 0);-
2809 }
executed 989679 times by 435 tests: end of block
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)
  • ...
989679
2810 -
2811 /* If the auto-commit flag is set and this is the only active writer -
2812 ** VM, then we do either a commit or rollback of the current transaction. -
2813 **-
2814 ** Note: This block also runs if one of the special errors handled -
2815 ** above has occurred. -
2816 */-
2817 if( !sqlite3VtabInSync(db)
(db)->nVTrans>0Description
TRUEevaluated 2653 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 994395 times by 435 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)
  • ...
(db)->aVTrans==0Description
TRUEevaluated 10 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 2643 times by 1 test
Evaluated by:
  • Self test (438)
10-994395
2818 && db->autoCommit
db->autoCommitDescription
TRUEevaluated 363744 times by 434 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 633294 times by 53 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (3)
  • Self test (30)
  • Self test (31)
  • Self test (34)
  • Self test (35)
  • Self test (38)
  • Self test (4)
  • Self test (42)
  • Self test (438)
  • Self test (44)
  • Self test (49)
  • Self test (5)
  • Self test (50)
  • Self test (51)
  • Self test (54)
  • ...
363744-633294
2819 && db->nVdbeWrite==(p->readOnly==0)
db->nVdbeWrite...->readOnly==0)Description
TRUEevaluated 346984 times by 434 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 16760 times by 18 tests
Evaluated by:
  • 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 (72)
  • Self test (73)
16760-346984
2820 ){-
2821 if( p->rc==SQLITE_OK || (p->errorAction==OE_Fail && !isSpecialError) ){
p->rc==0Description
TRUEevaluated 340513 times by 434 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 6471 times by 16 tests
Evaluated by:
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (39)
  • Self test (438)
  • Self test (47)
  • Self test (50)
  • Self test (51)
  • Self test (52)
  • Self test (53)
  • Self test (59)
p->errorAction==3Description
TRUEevaluated 19 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 6452 times by 16 tests
Evaluated by:
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (39)
  • Self test (438)
  • Self test (47)
  • Self test (50)
  • Self test (51)
  • Self test (52)
  • Self test (53)
  • Self test (59)
!isSpecialErrorDescription
TRUEevaluated 19 times by 1 test
Evaluated by:
  • Self test (438)
FALSEnever evaluated
0-340513
2822 rc = sqlite3VdbeCheckFk(p, 1);-
2823 if( rc!=SQLITE_OK ){
rc!=0Description
TRUEevaluated 34 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 340498 times by 434 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)
  • ...
34-340498
2824 if( NEVER(p->readOnly) ){
(p->readOnly)Description
TRUEnever evaluated
FALSEevaluated 34 times by 1 test
Evaluated by:
  • Self test (438)
0-34
2825 sqlite3VdbeLeave(p);-
2826 return SQLITE_ERROR;
never executed: return 1;
0
2827 }-
2828 rc = SQLITE_CONSTRAINT_FOREIGNKEY;-
2829 }else{
executed 34 times by 1 test: end of block
Executed by:
  • Self test (438)
34
2830 /* The auto-commit flag is true, the vdbe program was successful -
2831 ** or hit an 'OR FAIL' constraint and there are no deferred foreign-
2832 ** key constraints to hold up the transaction. This means a commit -
2833 ** is required. */-
2834 rc = vdbeCommit(db, p);-
2835 }
executed 340401 times by 434 tests: end of block
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)
  • ...
340401
2836 if( rc==SQLITE_BUSY && p->readOnly ){
rc==5Description
TRUEevaluated 43 times by 3 tests
Evaluated by:
  • Self test (38)
  • Self test (438)
  • Self test (55)
FALSEevaluated 340392 times by 434 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)
  • ...
p->readOnlyDescription
TRUEevaluated 24 times by 2 tests
Evaluated by:
  • Self test (38)
  • Self test (438)
FALSEevaluated 19 times by 2 tests
Evaluated by:
  • Self test (438)
  • Self test (55)
19-340392
2837 sqlite3VdbeLeave(p);-
2838 return SQLITE_BUSY;
executed 24 times by 2 tests: return 5;
Executed by:
  • Self test (38)
  • Self test (438)
24
2839 }else if( rc!=SQLITE_OK ){
rc!=0Description
TRUEevaluated 254 times by 2 tests
Evaluated by:
  • Self test (438)
  • Self test (55)
FALSEevaluated 340157 times by 434 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)
  • ...
254-340157
2840 p->rc = rc;-
2841 sqlite3RollbackAll(db, SQLITE_OK);-
2842 p->nChange = 0;-
2843 }else{
executed 254 times by 2 tests: end of block
Executed by:
  • Self test (438)
  • Self test (55)
254
2844 db->nDeferredCons = 0;-
2845 db->nDeferredImmCons = 0;-
2846 db->flags &= ~SQLITE_DeferFKs;-
2847 sqlite3CommitInternalChanges(db);-
2848 }
executed 340157 times by 434 tests: end of block
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)
  • ...
340157
2849 }else{-
2850 sqlite3RollbackAll(db, SQLITE_OK);-
2851 p->nChange = 0;-
2852 }
executed 6452 times by 16 tests: end of block
Executed by:
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (34)
  • Self test (35)
  • Self test (36)
  • Self test (39)
  • Self test (438)
  • Self test (47)
  • Self test (50)
  • Self test (51)
  • Self test (52)
  • Self test (53)
  • Self test (59)
6452
2853 db->nStatement = 0;-
2854 }else if( eStatementOp==0 ){
executed 346863 times by 434 tests: end of block
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)
  • ...
eStatementOp==0Description
TRUEevaluated 650059 times by 64 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (24)
  • 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)
  • Self test (34)
  • Self test (35)
  • Self test (38)
  • Self test (4)
  • ...
FALSEevaluated 5 times by 1 test
Evaluated by:
  • Self test (438)
5-650059
2855 if( p->rc==SQLITE_OK || p->errorAction==OE_Fail ){
p->rc==0Description
TRUEevaluated 649004 times by 64 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (24)
  • 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)
  • Self test (34)
  • Self test (35)
  • Self test (38)
  • Self test (4)
  • ...
FALSEevaluated 1055 times by 4 tests
Evaluated by:
  • Self test (30)
  • Self test (35)
  • Self test (38)
  • Self test (438)
p->errorAction==3Description
TRUEevaluated 33 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1022 times by 4 tests
Evaluated by:
  • Self test (30)
  • Self test (35)
  • Self test (38)
  • Self test (438)
33-649004
2856 eStatementOp = SAVEPOINT_RELEASE;-
2857 }else if( p->errorAction==OE_Abort ){
executed 649037 times by 64 tests: end of block
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (24)
  • 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)
  • Self test (34)
  • Self test (35)
  • Self test (38)
  • Self test (4)
  • ...
p->errorAction==2Description
TRUEevaluated 974 times by 4 tests
Evaluated by:
  • Self test (30)
  • Self test (35)
  • Self test (38)
  • Self test (438)
FALSEevaluated 48 times by 1 test
Evaluated by:
  • Self test (438)
48-649037
2858 eStatementOp = SAVEPOINT_ROLLBACK;-
2859 }else{
executed 974 times by 4 tests: end of block
Executed by:
  • Self test (30)
  • Self test (35)
  • Self test (38)
  • Self test (438)
974
2860 sqlite3RollbackAll(db, SQLITE_ABORT_ROLLBACK);-
2861 sqlite3CloseSavepoints(db);-
2862 db->autoCommit = 1;-
2863 p->nChange = 0;-
2864 }
executed 48 times by 1 test: end of block
Executed by:
  • Self test (438)
48
2865 }-
2866 -
2867 /* If eStatementOp is non-zero, then a statement transaction needs to-
2868 ** be committed or rolled back. Call sqlite3VdbeCloseStatement() to-
2869 ** do so. If this operation returns an error, and the current statement-
2870 ** error code is SQLITE_OK or SQLITE_CONSTRAINT, then promote the-
2871 ** current statement error code.-
2872 */-
2873 if( eStatementOp ){
eStatementOpDescription
TRUEevaluated 650016 times by 64 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (24)
  • 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)
  • Self test (34)
  • Self test (35)
  • Self test (38)
  • Self test (4)
  • ...
FALSEevaluated 346911 times by 434 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)
  • ...
346911-650016
2874 rc = sqlite3VdbeCloseStatement(p, eStatementOp);-
2875 if( rc ){
rcDescription
TRUEnever evaluated
FALSEevaluated 650016 times by 64 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (24)
  • 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)
  • Self test (34)
  • Self test (35)
  • Self test (38)
  • Self test (4)
  • ...
0-650016
2876 if( p->rc==SQLITE_OK || (p->rc&0xff)==SQLITE_CONSTRAINT ){
p->rc==0Description
TRUEnever evaluated
FALSEnever evaluated
(p->rc&0xff)==19Description
TRUEnever evaluated
FALSEnever evaluated
0
2877 p->rc = rc;-
2878 sqlite3DbFree(db, p->zErrMsg);-
2879 p->zErrMsg = 0;-
2880 }
never executed: end of block
0
2881 sqlite3RollbackAll(db, SQLITE_ABORT_ROLLBACK);-
2882 sqlite3CloseSavepoints(db);-
2883 db->autoCommit = 1;-
2884 p->nChange = 0;-
2885 }
never executed: end of block
0
2886 }
executed 650016 times by 64 tests: end of block
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (24)
  • 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)
  • Self test (34)
  • Self test (35)
  • Self test (38)
  • Self test (4)
  • ...
650016
2887 -
2888 /* If this was an INSERT, UPDATE or DELETE and no statement transaction-
2889 ** has been rolled back, update the database connection change-counter. -
2890 */-
2891 if( p->changeCntOn ){
p->changeCntOnDescription
TRUEevaluated 649750 times by 62 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (11)
  • Self test (12)
  • Self test (14)
  • Self test (15)
  • Self test (16)
  • Self test (18)
  • Self test (19)
  • Self test (2)
  • Self test (20)
  • Self test (22)
  • Self test (23)
  • Self test (3)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (38)
  • Self test (39)
  • ...
FALSEevaluated 347177 times by 435 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)
  • ...
347177-649750
2892 if( eStatementOp!=SAVEPOINT_ROLLBACK ){
eStatementOp!=2Description
TRUEevaluated 649061 times by 62 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (11)
  • Self test (12)
  • Self test (14)
  • Self test (15)
  • Self test (16)
  • Self test (18)
  • Self test (19)
  • Self test (2)
  • Self test (20)
  • Self test (22)
  • Self test (23)
  • Self test (3)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (38)
  • Self test (39)
  • ...
FALSEevaluated 689 times by 2 tests
Evaluated by:
  • Self test (35)
  • Self test (438)
689-649061
2893 sqlite3VdbeSetChanges(db, p->nChange);-
2894 }else{
executed 649061 times by 62 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 (11)
  • Self test (12)
  • Self test (14)
  • Self test (15)
  • Self test (16)
  • Self test (18)
  • Self test (19)
  • Self test (2)
  • Self test (20)
  • Self test (22)
  • Self test (23)
  • Self test (3)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (38)
  • Self test (39)
  • ...
649061
2895 sqlite3VdbeSetChanges(db, 0);-
2896 }
executed 689 times by 2 tests: end of block
Executed by:
  • Self test (35)
  • Self test (438)
689
2897 p->nChange = 0;-
2898 }
executed 649750 times by 62 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 (11)
  • Self test (12)
  • Self test (14)
  • Self test (15)
  • Self test (16)
  • Self test (18)
  • Self test (19)
  • Self test (2)
  • Self test (20)
  • Self test (22)
  • Self test (23)
  • Self test (3)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (38)
  • Self test (39)
  • ...
649750
2899-
2900 /* Release the locks */-
2901 sqlite3VdbeLeave(p);-
2902 }
executed 996927 times by 435 tests: end of block
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)
  • ...
996927
2903-
2904 /* We have successfully halted and closed the VM. Record this fact. */-
2905 if( p->pc>=0 ){
p->pc>=0Description
TRUEevaluated 1103405 times by 435 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 390943 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)
  • ...
390943-1103405
2906 db->nVdbeActive--;-
2907 if( !p->readOnly ) db->nVdbeWrite--;
executed 688212 times by 76 tests: db->nVdbeWrite--;
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (11)
  • Self test (12)
  • Self test (14)
  • Self test (15)
  • Self test (16)
  • Self test (18)
  • Self test (19)
  • Self test (2)
  • Self test (20)
  • Self test (22)
  • Self test (23)
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (3)
  • Self test (30)
  • Self test (31)
  • ...
!p->readOnlyDescription
TRUEevaluated 688212 times by 76 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (105)
  • Self test (11)
  • Self test (12)
  • Self test (14)
  • Self test (15)
  • Self test (16)
  • Self test (18)
  • Self test (19)
  • Self test (2)
  • Self test (20)
  • Self test (22)
  • Self test (23)
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (3)
  • Self test (30)
  • Self test (31)
  • ...
FALSEevaluated 415193 times by 435 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)
  • ...
415193-688212
2908 if( p->bIsReader ) db->nVdbeRead--;
executed 996927 times by 435 tests: db->nVdbeRead--;
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)
  • ...
p->bIsReaderDescription
TRUEevaluated 996927 times by 435 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 106478 times by 39 tests
Evaluated by:
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (2)
  • Self test (20)
  • Self test (22)
  • Self test (27)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (4)
  • Self test (438)
  • Self test (5)
  • Self test (54)
  • Self test (6)
  • Self test (64)
  • Self test (77)
  • Self test (78)
  • Self test (79)
  • ...
106478-996927
2909 assert( db->nVdbeActive>=db->nVdbeRead );-
2910 assert( db->nVdbeRead>=db->nVdbeWrite );-
2911 assert( db->nVdbeWrite>=0 );-
2912 }
executed 1103405 times by 435 tests: end of block
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)
  • ...
1103405
2913 p->magic = VDBE_MAGIC_HALT;-
2914 checkActiveVdbeCnt(db);-
2915 if( db->mallocFailed ){
db->mallocFailedDescription
TRUEevaluated 213 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1494135 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)
  • ...
213-1494135
2916 p->rc = SQLITE_NOMEM_BKPT;-
2917 }
executed 213 times by 1 test: end of block
Executed by:
  • Self test (438)
213
2918-
2919 /* If the auto-commit flag is set to true, then any locks that were held-
2920 ** by connection db have now been released. Call sqlite3ConnectionUnlocked() -
2921 ** to invoke any required unlock-notify callbacks.-
2922 */-
2923 if( db->autoCommit ){
db->autoCommitDescription
TRUEevaluated 758279 times by 435 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 736069 times by 53 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (20)
  • Self test (22)
  • Self test (3)
  • Self test (30)
  • Self test (31)
  • Self test (34)
  • Self test (35)
  • Self test (38)
  • Self test (4)
  • Self test (42)
  • Self test (438)
  • Self test (44)
  • Self test (49)
  • Self test (5)
  • Self test (50)
  • Self test (51)
  • Self test (54)
  • ...
736069-758279
2924 sqlite3ConnectionUnlocked(db);-
2925 }
executed 758279 times by 435 tests: end of block
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)
  • ...
758279
2926-
2927 assert( db->nVdbeActive>0 || db->autoCommit==0 || db->nStatement==0 );-
2928 return (p->rc==SQLITE_BUSY ? SQLITE_BUSY : SQLITE_OK);
executed 1494348 times by 436 tests: return (p->rc==5 ? 5 : 0);
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)
  • ...
p->rc==5Description
TRUEevaluated 144 times by 8 tests
Evaluated by:
  • Self test (30)
  • Self test (35)
  • Self test (36)
  • Self test (38)
  • Self test (438)
  • Self test (52)
  • Self test (55)
  • Self test (59)
FALSEevaluated 1494204 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)
  • ...
144-1494348
2929}-
2930-
2931-
2932/*-
2933** Each VDBE holds the result of the most recent sqlite3_step() call-
2934** in p->rc. This routine sets that result back to SQLITE_OK.-
2935*/-
2936void sqlite3VdbeResetStepResult(Vdbe *p){-
2937 p->rc = SQLITE_OK;-
2938}
executed 23594 times by 11 tests: end of block
Executed by:
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (34)
  • Self test (438)
  • Self test (47)
  • Self test (53)
  • Self test (84)
23594
2939-
2940/*-
2941** Copy the error code and error message belonging to the VDBE passed-
2942** as the first argument to its database handle (so that they will be -
2943** returned by calls to sqlite3_errcode() and sqlite3_errmsg()).-
2944**-
2945** This function does not clear the VDBE error code or message, just-
2946** copies them to the database handle.-
2947*/-
2948int sqlite3VdbeTransferError(Vdbe *p){-
2949 sqlite3 *db = p->db;-
2950 int rc = p->rc;-
2951 if( p->zErrMsg ){
p->zErrMsgDescription
TRUEevaluated 14169 times by 12 tests
Evaluated by:
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (34)
  • Self test (35)
  • Self test (39)
  • Self test (438)
  • Self test (47)
  • Self test (53)
FALSEevaluated 1118312 times by 435 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)
  • ...
14169-1118312
2952 db->bBenignMalloc++;-
2953 sqlite3BeginBenignMalloc();-
2954 if( db->pErr==0 ) db->pErr = sqlite3ValueNew(db);
executed 1310 times by 11 tests: db->pErr = sqlite3ValueNew(db);
Executed by:
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (34)
  • Self test (35)
  • Self test (39)
  • Self test (438)
  • Self test (53)
db->pErr==0Description
TRUEevaluated 1310 times by 11 tests
Evaluated by:
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (34)
  • Self test (35)
  • Self test (39)
  • Self test (438)
  • Self test (53)
FALSEevaluated 12859 times by 12 tests
Evaluated by:
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (34)
  • Self test (35)
  • Self test (39)
  • Self test (438)
  • Self test (47)
  • Self test (53)
1310-12859
2955 sqlite3ValueSetStr(db->pErr, -1, p->zErrMsg, SQLITE_UTF8, SQLITE_TRANSIENT);-
2956 sqlite3EndBenignMalloc();-
2957 db->bBenignMalloc--;-
2958 }else if( db->pErr ){
executed 14169 times by 12 tests: end of block
Executed by:
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (34)
  • Self test (35)
  • Self test (39)
  • Self test (438)
  • Self test (47)
  • Self test (53)
db->pErrDescription
TRUEevaluated 128701 times by 18 tests
Evaluated by:
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (34)
  • Self test (35)
  • Self test (39)
  • Self test (438)
  • Self test (47)
  • Self test (53)
  • Self test (78)
  • Self test (79)
  • Self test (80)
  • Self test (81)
  • Self test (82)
  • Self test (83)
FALSEevaluated 989611 times by 435 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)
  • ...
14169-989611
2959 sqlite3ValueSetNull(db->pErr);-
2960 }
executed 128701 times by 18 tests: end of block
Executed by:
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (34)
  • Self test (35)
  • Self test (39)
  • Self test (438)
  • Self test (47)
  • Self test (53)
  • Self test (78)
  • Self test (79)
  • Self test (80)
  • Self test (81)
  • Self test (82)
  • Self test (83)
128701
2961 db->errCode = rc;-
2962 return rc;
executed 1132481 times by 435 tests: return rc;
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)
  • ...
1132481
2963}-
2964-
2965#ifdef SQLITE_ENABLE_SQLLOG-
2966/*-
2967** If an SQLITE_CONFIG_SQLLOG hook is registered and the VM has been run, -
2968** invoke it.-
2969*/-
2970static void vdbeInvokeSqllog(Vdbe *v){-
2971 if( sqlite3GlobalConfig.xSqllog && v->rc==SQLITE_OK && v->zSql && v->pc>=0 ){-
2972 char *zExpanded = sqlite3VdbeExpandSql(v, v->zSql);-
2973 assert( v->db->init.busy==0 );-
2974 if( zExpanded ){-
2975 sqlite3GlobalConfig.xSqllog(-
2976 sqlite3GlobalConfig.pSqllogArg, v->db, zExpanded, 1-
2977 );-
2978 sqlite3DbFree(v->db, zExpanded);-
2979 }-
2980 }-
2981}-
2982#else-
2983# define vdbeInvokeSqllog(x)-
2984#endif-
2985-
2986/*-
2987** Clean up a VDBE after execution but do not delete the VDBE just yet.-
2988** Write any error messages into *pzErrMsg. Return the result code.-
2989**-
2990** After this routine is run, the VDBE should be ready to be executed-
2991** again.-
2992**-
2993** To look at it another way, this routine resets the state of the-
2994** virtual machine from VDBE_MAGIC_RUN or VDBE_MAGIC_HALT back to-
2995** VDBE_MAGIC_INIT.-
2996*/-
2997int sqlite3VdbeReset(Vdbe *p){-
2998#if defined(SQLITE_DEBUG) || defined(VDBE_PROFILE)-
2999 int i;-
3000#endif-
3001-
3002 sqlite3 *db;-
3003 db = p->db;-
3004-
3005 /* If the VM did not run to completion or if it encountered an-
3006 ** error, then it might not have been halted properly. So halt-
3007 ** it now.-
3008 */-
3009 sqlite3VdbeHalt(p);-
3010-
3011 /* If the VDBE has been run even partially, then transfer the error code-
3012 ** and error message from the VDBE into the main database structure. But-
3013 ** if the VDBE has just been set to run but has not actually executed any-
3014 ** instructions yet, leave the main database error information unchanged.-
3015 */-
3016 if( p->pc>=0 ){
p->pc>=0Description
TRUEevaluated 1103405 times by 435 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 390943 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)
  • ...
390943-1103405
3017 vdbeInvokeSqllog(p);-
3018 sqlite3VdbeTransferError(p);-
3019 if( p->runOnlyOnce ) p->expired = 1;
executed 35682 times by 52 tests: p->expired = 1;
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 (35)
  • Self test (39)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
  • Self test (54)
  • Self test (57)
  • ...
p->runOnlyOnceDescription
TRUEevaluated 35682 times by 52 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 (35)
  • Self test (39)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
  • Self test (54)
  • Self test (57)
  • ...
FALSEevaluated 1067723 times by 435 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)
  • ...
35682-1067723
3020 }else if( p->rc && p->expired ){
executed 1103405 times by 435 tests: end of block
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)
  • ...
p->rcDescription
TRUEevaluated 83 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 390860 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)
  • ...
p->expiredDescription
TRUEevaluated 44 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 39 times by 1 test
Evaluated by:
  • Self test (438)
39-1103405
3021 /* The expired flag was set on the VDBE before the first call-
3022 ** to sqlite3_step(). For consistency (since sqlite3_step() was-
3023 ** called), set the database error in this case as well.-
3024 */-
3025 sqlite3ErrorWithMsg(db, p->rc, p->zErrMsg ? "%s" : 0, p->zErrMsg);-
3026 }
executed 44 times by 1 test: end of block
Executed by:
  • Self test (438)
44
3027-
3028 /* Reset register contents and reclaim error message memory.-
3029 */-
3030#ifdef SQLITE_DEBUG-
3031 /* Execute assert() statements to ensure that the Vdbe.apCsr[] and -
3032 ** Vdbe.aMem[] arrays have already been cleaned up. */-
3033 if( p->apCsr ) for(i=0; i<p->nCursor; i++) assert( p->apCsr[i]==0 );-
3034 if( p->aMem ){-
3035 for(i=0; i<p->nMem; i++) assert( p->aMem[i].flags==MEM_Undefined );-
3036 }-
3037#endif-
3038 sqlite3DbFree(db, p->zErrMsg);-
3039 p->zErrMsg = 0;-
3040 p->pResultSet = 0;-
3041#ifdef SQLITE_DEBUG-
3042 p->nWrite = 0;-
3043#endif-
3044-
3045 /* Save profiling information from this VDBE run.-
3046 */-
3047#ifdef VDBE_PROFILE-
3048 {-
3049 FILE *out = fopen("vdbe_profile.out", "a");-
3050 if( out ){-
3051 fprintf(out, "---- ");-
3052 for(i=0; i<p->nOp; i++){-
3053 fprintf(out, "%02x", p->aOp[i].opcode);-
3054 }-
3055 fprintf(out, "\n");-
3056 if( p->zSql ){-
3057 char c, pc = 0;-
3058 fprintf(out, "-- ");-
3059 for(i=0; (c = p->zSql[i])!=0; i++){-
3060 if( pc=='\n' ) fprintf(out, "-- ");-
3061 putc(c, out);-
3062 pc = c;-
3063 }-
3064 if( pc!='\n' ) fprintf(out, "\n");-
3065 }-
3066 for(i=0; i<p->nOp; i++){-
3067 char zHdr[100];-
3068 sqlite3_snprintf(sizeof(zHdr), zHdr, "%6u %12llu %8llu ",-
3069 p->aOp[i].cnt,-
3070 p->aOp[i].cycles,-
3071 p->aOp[i].cnt>0 ? p->aOp[i].cycles/p->aOp[i].cnt : 0-
3072 );-
3073 fprintf(out, "%s", zHdr);-
3074 sqlite3VdbePrintOp(out, i, &p->aOp[i]);-
3075 }-
3076 fclose(out);-
3077 }-
3078 }-
3079#endif-
3080 p->magic = VDBE_MAGIC_RESET;-
3081 return p->rc & db->errMask;
executed 1494348 times by 436 tests: return p->rc & db->errMask;
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)
  • ...
1494348
3082}-
3083 -
3084/*-
3085** Clean up and delete a VDBE after execution. Return an integer which is-
3086** the result code. Write any error message text into *pzErrMsg.-
3087*/-
3088int sqlite3VdbeFinalize(Vdbe *p){-
3089 int rc = SQLITE_OK;-
3090 if( p->magic==VDBE_MAGIC_RUN || p->magic==VDBE_MAGIC_HALT ){
p->magic==0x2df20da3Description
TRUEevaluated 378132 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 74465 times by 435 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)
  • ...
p->magic==0x319c2973Description
TRUEevaluated 73213 times by 435 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 1252 times by 1 test
Evaluated by:
  • Self test (438)
1252-378132
3091 rc = sqlite3VdbeReset(p);-
3092 assert( (rc & p->db->errMask)==rc );-
3093 }
executed 451345 times by 436 tests: end of block
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)
  • ...
451345
3094 sqlite3VdbeDelete(p);-
3095 return rc;
executed 452597 times by 436 tests: return rc;
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)
  • ...
452597
3096}-
3097-
3098/*-
3099** If parameter iOp is less than zero, then invoke the destructor for-
3100** all auxiliary data pointers currently cached by the VM passed as-
3101** the first argument.-
3102**-
3103** Or, if iOp is greater than or equal to zero, then the destructor is-
3104** only invoked for those auxiliary data pointers created by the user -
3105** function invoked by the OP_Function opcode at instruction iOp of -
3106** VM pVdbe, and only then if:-
3107**-
3108** * the associated function parameter is the 32nd or later (counting-
3109** from left to right), or-
3110**-
3111** * the corresponding bit in argument mask is clear (where the first-
3112** function parameter corresponds to bit 0 etc.).-
3113*/-
3114void sqlite3VdbeDeleteAuxData(sqlite3 *db, AuxData **pp, int iOp, int mask){-
3115 while( *pp ){
*ppDescription
TRUEevaluated 351 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 150978 times by 1 test
Evaluated by:
  • Self test (438)
351-150978
3116 AuxData *pAux = *pp;-
3117 if( (iOp<0)
(iOp<0)Description
TRUEevaluated 111 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 240 times by 1 test
Evaluated by:
  • Self test (438)
111-240
3118 || (pAux->iAuxOp==iOp
pAux->iAuxOp==iOpDescription
TRUEevaluated 120 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 120 times by 1 test
Evaluated by:
  • Self test (438)
120
3119 && pAux->iAuxArg>=0
pAux->iAuxArg>=0Description
TRUEevaluated 120 times by 1 test
Evaluated by:
  • Self test (438)
FALSEnever evaluated
0-120
3120 && (pAux->iAuxArg>31 || !(mask & MASKBIT32(pAux->iAuxArg))))
pAux->iAuxArg>31Description
TRUEnever evaluated
FALSEevaluated 120 times by 1 test
Evaluated by:
  • Self test (438)
!(mask & (((un...ux->iAuxArg)))Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 114 times by 1 test
Evaluated by:
  • Self test (438)
0-120
3121 ){-
3122 testcase( pAux->iAuxArg==31 );-
3123 if( pAux->xDeleteAux ){
pAux->xDeleteAuxDescription
TRUEevaluated 117 times by 1 test
Evaluated by:
  • Self test (438)
FALSEnever evaluated
0-117
3124 pAux->xDeleteAux(pAux->pAux);-
3125 }
executed 117 times by 1 test: end of block
Executed by:
  • Self test (438)
117
3126 *pp = pAux->pNextAux;-
3127 sqlite3DbFree(db, pAux);-
3128 }else{
executed 117 times by 1 test: end of block
Executed by:
  • Self test (438)
117
3129 pp= &pAux->pNextAux;-
3130 }
executed 234 times by 1 test: end of block
Executed by:
  • Self test (438)
234
3131 }-
3132}
executed 150978 times by 1 test: end of block
Executed by:
  • Self test (438)
150978
3133-
3134/*-
3135** Free all memory associated with the Vdbe passed as the second argument,-
3136** except for object itself, which is preserved.-
3137**-
3138** The difference between this function and sqlite3VdbeDelete() is that-
3139** VdbeDelete() also unlinks the Vdbe from the list of VMs associated with-
3140** the database connection and frees the object itself.-
3141*/-
3142void sqlite3VdbeClearObject(sqlite3 *db, Vdbe *p){-
3143 SubProgram *pSub, *pNext;-
3144 assert( p->db==0 || p->db==db );-
3145 releaseMemArray(p->aColName, p->nResColumn*COLNAME_N);-
3146 for(pSub=p->pProgram; pSub; pSub=pNext){
pSubDescription
TRUEevaluated 6028 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 460382 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)
  • ...
6028-460382
3147 pNext = pSub->pNext;-
3148 vdbeFreeOpArray(db, pSub->aOp, pSub->nOp);-
3149 sqlite3DbFree(db, pSub);-
3150 }
executed 6028 times by 1 test: end of block
Executed by:
  • Self test (438)
6028
3151 if( p->magic!=VDBE_MAGIC_INIT ){
p->magic!=0x16bceaa5Description
TRUEevaluated 451364 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 9018 times by 6 tests
Evaluated by:
  • Self test (438)
  • Self test (47)
  • Self test (61)
  • Self test (78)
  • Self test (80)
  • Self test (82)
9018-451364
3152 releaseMemArray(p->aVar, p->nVar);-
3153 sqlite3DbFree(db, p->pVList);-
3154 sqlite3DbFree(db, p->pFree);-
3155 }
executed 451364 times by 436 tests: end of block
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)
  • ...
451364
3156 vdbeFreeOpArray(db, p->aOp, p->nOp);-
3157 sqlite3DbFree(db, p->aColName);-
3158 sqlite3DbFree(db, p->zSql);-
3159#ifdef SQLITE_ENABLE_STMT_SCANSTATUS-
3160 {-
3161 int i;-
3162 for(i=0; i<p->nScan; i++){-
3163 sqlite3DbFree(db, p->aScan[i].zName);-
3164 }-
3165 sqlite3DbFree(db, p->aScan);-
3166 }-
3167#endif-
3168}
executed 460382 times by 436 tests: end of block
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)
  • ...
460382
3169-
3170/*-
3171** Delete an entire VDBE.-
3172*/-
3173void sqlite3VdbeDelete(Vdbe *p){-
3174 sqlite3 *db;-
3175-
3176 assert( p!=0 );-
3177 db = p->db;-
3178 assert( sqlite3_mutex_held(db->mutex) );-
3179 sqlite3VdbeClearObject(db, p);-
3180 if( p->pPrev ){
p->pPrevDescription
TRUEevaluated 207891 times by 19 tests
Evaluated by:
  • Self test (100)
  • Self test (24)
  • Self test (27)
  • Self test (28)
  • Self test (3)
  • Self test (30)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (38)
  • Self test (438)
  • Self test (47)
  • Self test (50)
  • Self test (62)
  • Self test (64)
  • Self test (97)
  • Self test (98)
  • Self test (99)
FALSEevaluated 252481 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)
  • ...
207891-252481
3181 p->pPrev->pNext = p->pNext;-
3182 }else{
executed 207891 times by 19 tests: end of block
Executed by:
  • Self test (100)
  • Self test (24)
  • Self test (27)
  • Self test (28)
  • Self test (3)
  • Self test (30)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (38)
  • Self test (438)
  • Self test (47)
  • Self test (50)
  • Self test (62)
  • Self test (64)
  • Self test (97)
  • Self test (98)
  • Self test (99)
207891
3183 assert( db->pVdbe==p );-
3184 db->pVdbe = p->pNext;-
3185 }
executed 252481 times by 436 tests: end of block
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)
  • ...
252481
3186 if( p->pNext ){
p->pNextDescription
TRUEevaluated 260367 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 200005 times by 404 tests
Evaluated by:
  • 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 (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 (120)
  • Self test (121)
  • Self test (122)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • ...
200005-260367
3187 p->pNext->pPrev = p->pPrev;-
3188 }
executed 260367 times by 436 tests: end of block
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)
  • ...
260367
3189 p->magic = VDBE_MAGIC_DEAD;-
3190 p->db = 0;-
3191 sqlite3DbFreeNN(db, p);-
3192}
executed 460372 times by 436 tests: end of block
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)
  • ...
460372
3193-
3194/*-
3195** The cursor "p" has a pending seek operation that has not yet been-
3196** carried out. Seek the cursor now. If an error occurs, return-
3197** the appropriate error code.-
3198*/-
3199static int SQLITE_NOINLINE handleDeferredMoveto(VdbeCursor *p){-
3200 int res, rc;-
3201#ifdef SQLITE_TEST-
3202 extern int sqlite3_search_count;-
3203#endif-
3204 assert( p->deferredMoveto );-
3205 assert( p->isTable );-
3206 assert( p->eCurType==CURTYPE_BTREE );-
3207 rc = sqlite3BtreeMovetoUnpacked(p->uc.pCursor, 0, p->movetoTarget, 0, &res);-
3208 if( rc ) return rc;
never executed: return rc;
rcDescription
TRUEnever evaluated
FALSEevaluated 437028 times by 1 test
Evaluated by:
  • Self test (438)
0-437028
3209 if( res!=0 ) return SQLITE_CORRUPT_BKPT;
never executed: return sqlite3CorruptError(3209);
res!=0Description
TRUEnever evaluated
FALSEevaluated 437028 times by 1 test
Evaluated by:
  • Self test (438)
0-437028
3210#ifdef SQLITE_TEST-
3211 sqlite3_search_count++;-
3212#endif-
3213 p->deferredMoveto = 0;-
3214 p->cacheStatus = CACHE_STALE;-
3215 return SQLITE_OK;
executed 437028 times by 1 test: return 0;
Executed by:
  • Self test (438)
437028
3216}-
3217-
3218/*-
3219** Something has moved cursor "p" out of place. Maybe the row it was-
3220** pointed to was deleted out from under it. Or maybe the btree was-
3221** rebalanced. Whatever the cause, try to restore "p" to the place it-
3222** is supposed to be pointing. If the row was deleted out from under the-
3223** cursor, set the cursor to point to a NULL row.-
3224*/-
3225static int SQLITE_NOINLINE handleMovedCursor(VdbeCursor *p){-
3226 int isDifferentRow, rc;-
3227 assert( p->eCurType==CURTYPE_BTREE );-
3228 assert( p->uc.pCursor!=0 );-
3229 assert( sqlite3BtreeCursorHasMoved(p->uc.pCursor) );-
3230 rc = sqlite3BtreeCursorRestore(p->uc.pCursor, &isDifferentRow);-
3231 p->cacheStatus = CACHE_STALE;-
3232 if( isDifferentRow ) p->nullRow = 1;
executed 1632 times by 1 test: p->nullRow = 1;
Executed by:
  • Self test (438)
isDifferentRowDescription
TRUEevaluated 1632 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 24 times by 1 test
Evaluated by:
  • Self test (438)
24-1632
3233 return rc;
executed 1656 times by 1 test: return rc;
Executed by:
  • Self test (438)
1656
3234}-
3235-
3236/*-
3237** Check to ensure that the cursor is valid. Restore the cursor-
3238** if need be. Return any I/O error from the restore operation.-
3239*/-
3240int sqlite3VdbeCursorRestore(VdbeCursor *p){-
3241 assert( p->eCurType==CURTYPE_BTREE );-
3242 if( sqlite3BtreeCursorHasMoved(p->uc.pCursor) ){
sqlite3BtreeCu...p->uc.pCursor)Description
TRUEevaluated 60 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 5066755 times by 389 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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)
  • Self test (123)
  • Self test (124)
  • ...
60-5066755
3243 return handleMovedCursor(p);
executed 60 times by 1 test: return handleMovedCursor(p);
Executed by:
  • Self test (438)
60
3244 }-
3245 return SQLITE_OK;
executed 5066755 times by 389 tests: return 0;
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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)
  • Self test (123)
  • Self test (124)
  • ...
5066755
3246}-
3247-
3248/*-
3249** Make sure the cursor p is ready to read or write the row to which it-
3250** was last positioned. Return an error code if an OOM fault or I/O error-
3251** prevents us from positioning the cursor to its correct position.-
3252**-
3253** If a MoveTo operation is pending on the given cursor, then do that-
3254** MoveTo now. If no move is pending, check to see if the row has been-
3255** deleted out from under the cursor and if it has, mark the row as-
3256** a NULL row.-
3257**-
3258** If the cursor is already pointing to the correct row and that row has-
3259** not been deleted out from under the cursor, then this routine is a no-op.-
3260*/-
3261int sqlite3VdbeCursorMoveto(VdbeCursor **pp, int *piCol){-
3262 VdbeCursor *p = *pp;-
3263 assert( p->eCurType==CURTYPE_BTREE || p->eCurType==CURTYPE_PSEUDO );-
3264 if( p->deferredMoveto ){
p->deferredMovetoDescription
TRUEevaluated 464609 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 33649929 times by 434 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)
  • ...
464609-33649929
3265 int iMap;-
3266 if( p->aAltMap && (iMap = p->aAltMap[1+*piCol])>0 ){
p->aAltMapDescription
TRUEevaluated 34135 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 430474 times by 1 test
Evaluated by:
  • Self test (438)
(iMap = p->aAl...p[1+*piCol])>0Description
TRUEevaluated 27581 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 6554 times by 1 test
Evaluated by:
  • Self test (438)
6554-430474
3267 *pp = p->pAltCursor;-
3268 *piCol = iMap - 1;-
3269 return SQLITE_OK;
executed 27581 times by 1 test: return 0;
Executed by:
  • Self test (438)
27581
3270 }-
3271 return handleDeferredMoveto(p);
executed 437028 times by 1 test: return handleDeferredMoveto(p);
Executed by:
  • Self test (438)
437028
3272 }-
3273 if( sqlite3BtreeCursorHasMoved(p->uc.pCursor) ){
sqlite3BtreeCu...p->uc.pCursor)Description
TRUEevaluated 1596 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 33648333 times by 434 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)
  • ...
1596-33648333
3274 return handleMovedCursor(p);
executed 1596 times by 1 test: return handleMovedCursor(p);
Executed by:
  • Self test (438)
1596
3275 }-
3276 return SQLITE_OK;
executed 33648333 times by 434 tests: return 0;
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)
  • ...
33648333
3277}-
3278-
3279/*-
3280** The following functions:-
3281**-
3282** sqlite3VdbeSerialType()-
3283** sqlite3VdbeSerialTypeLen()-
3284** sqlite3VdbeSerialLen()-
3285** sqlite3VdbeSerialPut()-
3286** sqlite3VdbeSerialGet()-
3287**-
3288** encapsulate the code that serializes values for storage in SQLite-
3289** data and index records. Each serialized value consists of a-
3290** 'serial-type' and a blob of data. The serial type is an 8-byte unsigned-
3291** integer, stored as a varint.-
3292**-
3293** In an SQLite index record, the serial type is stored directly before-
3294** the blob of data that it corresponds to. In a table record, all serial-
3295** types are stored at the start of the record, and the blobs of data at-
3296** the end. Hence these functions allow the caller to handle the-
3297** serial-type and data blob separately.-
3298**-
3299** The following table describes the various storage classes for data:-
3300**-
3301** serial type bytes of data type-
3302** -------------- --------------- ----------------
3303** 0 0 NULL-
3304** 1 1 signed integer-
3305** 2 2 signed integer-
3306** 3 3 signed integer-
3307** 4 4 signed integer-
3308** 5 6 signed integer-
3309** 6 8 signed integer-
3310** 7 8 IEEE float-
3311** 8 0 Integer constant 0-
3312** 9 0 Integer constant 1-
3313** 10,11 reserved for expansion-
3314** N>=12 and even (N-12)/2 BLOB-
3315** N>=13 and odd (N-13)/2 text-
3316**-
3317** The 8 and 9 types were added in 3.3.0, file format 4. Prior versions-
3318** of SQLite will not understand those serial types.-
3319*/-
3320-
3321/*-
3322** Return the serial-type for the value stored in pMem.-
3323*/-
3324u32 sqlite3VdbeSerialType(Mem *pMem, int file_format, u32 *pLen){-
3325 int flags = pMem->flags;-
3326 u32 n;-
3327-
3328 assert( pLen!=0 );-
3329 if( flags&MEM_Null ){
flags&0x0001Description
TRUEevaluated 415869 times by 332 tests
Evaluated by:
  • Self test (100)
  • Self test (119)
  • Self test (120)
  • Self test (121)
  • Self test (122)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • Self test (128)
  • Self test (129)
  • Self test (130)
  • Self test (131)
  • Self test (132)
  • Self test (133)
  • Self test (134)
  • Self test (135)
  • Self test (136)
  • Self test (137)
  • Self test (138)
  • Self test (139)
  • Self test (140)
  • Self test (141)
  • Self test (142)
  • ...
FALSEevaluated 16468074 times by 403 tests
Evaluated 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)
  • ...
415869-16468074
3330 *pLen = 0;-
3331 return 0;
executed 415869 times by 332 tests: return 0;
Executed by:
  • Self test (100)
  • Self test (119)
  • Self test (120)
  • Self test (121)
  • Self test (122)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • Self test (128)
  • Self test (129)
  • Self test (130)
  • Self test (131)
  • Self test (132)
  • Self test (133)
  • Self test (134)
  • Self test (135)
  • Self test (136)
  • Self test (137)
  • Self test (138)
  • Self test (139)
  • Self test (140)
  • Self test (141)
  • Self test (142)
  • ...
415869
3332 }-
3333 if( flags&MEM_Int ){
flags&0x0004Description
TRUEevaluated 11521274 times by 399 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • 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)
  • Self test (123)
  • ...
FALSEevaluated 4946800 times by 392 tests
Evaluated 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)
  • ...
4946800-11521274
3334 /* Figure out whether to use 1, 2, 4, 6 or 8 bytes. */-
3335# define MAX_6BYTE ((((i64)0x00008000)<<32)-1)-
3336 i64 i = pMem->u.i;-
3337 u64 u;-
3338 if( i<0 ){
i<0Description
TRUEevaluated 12721 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 11508553 times by 399 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • 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)
  • Self test (123)
  • ...
12721-11508553
3339 u = ~i;-
3340 }else{
executed 12721 times by 1 test: end of block
Executed by:
  • Self test (438)
12721
3341 u = i;-
3342 }
executed 11508553 times by 399 tests: end of block
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • 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)
  • Self test (123)
  • ...
11508553
3343 if( u<=127 ){
u<=127Description
TRUEevaluated 4169702 times by 399 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • 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)
  • Self test (123)
  • ...
FALSEevaluated 7351572 times by 1 test
Evaluated by:
  • Self test (438)
4169702-7351572
3344 if( (i&1)==i && file_format>=4 ){
(i&1)==iDescription
TRUEevaluated 686055 times by 41 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (2)
  • Self test (20)
  • Self test (22)
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (4)
  • Self test (42)
  • Self test (438)
  • Self test (44)
  • Self test (46)
  • ...
FALSEevaluated 3483647 times by 397 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • 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)
  • Self test (123)
  • ...
file_format>=4Description
TRUEevaluated 685736 times by 41 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (2)
  • Self test (20)
  • Self test (22)
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (4)
  • Self test (42)
  • Self test (438)
  • Self test (44)
  • Self test (46)
  • ...
FALSEevaluated 319 times by 1 test
Evaluated by:
  • Self test (438)
319-3483647
3345 *pLen = 0;-
3346 return 8+(u32)u;
executed 685736 times by 41 tests: return 8+(u32)u;
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (2)
  • Self test (20)
  • Self test (22)
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (4)
  • Self test (42)
  • Self test (438)
  • Self test (44)
  • Self test (46)
  • ...
685736
3347 }else{-
3348 *pLen = 1;-
3349 return 1;
executed 3483966 times by 397 tests: return 1;
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • 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)
  • Self test (123)
  • ...
3483966
3350 }-
3351 }-
3352 if( u<=32767 ){ *pLen = 2; return 2; }
executed 3664618 times by 1 test: return 2;
Executed by:
  • Self test (438)
u<=32767Description
TRUEevaluated 3664618 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 3686954 times by 1 test
Evaluated by:
  • Self test (438)
3664618-3686954
3353 if( u<=8388607 ){ *pLen = 3; return 3; }
executed 2928224 times by 1 test: return 3;
Executed by:
  • Self test (438)
u<=8388607Description
TRUEevaluated 2928224 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 758730 times by 1 test
Evaluated by:
  • Self test (438)
758730-2928224
3354 if( u<=2147483647 ){ *pLen = 4; return 4; }
executed 568669 times by 1 test: return 4;
Executed by:
  • Self test (438)
u<=2147483647Description
TRUEevaluated 568669 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 190061 times by 1 test
Evaluated by:
  • Self test (438)
190061-568669
3355 if( u<=MAX_6BYTE ){ *pLen = 6; return 5; }
executed 148064 times by 1 test: return 5;
Executed by:
  • Self test (438)
u<=((((i64)0x00008000)<<32)-1)Description
TRUEevaluated 148064 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 41997 times by 1 test
Evaluated by:
  • Self test (438)
41997-148064
3356 *pLen = 8;-
3357 return 6;
executed 41997 times by 1 test: return 6;
Executed by:
  • Self test (438)
41997
3358 }-
3359 if( flags&MEM_Real ){
flags&0x0008Description
TRUEevaluated 307749 times by 4 tests
Evaluated by:
  • Self test
  • Self test (438)
  • Self test (57)
  • Self test (58)
FALSEevaluated 4639051 times by 392 tests
Evaluated 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)
  • ...
307749-4639051
3360 *pLen = 8;-
3361 return 7;
executed 307749 times by 4 tests: return 7;
Executed by:
  • Self test
  • Self test (438)
  • Self test (57)
  • Self test (58)
307749
3362 }-
3363 assert( pMem->db->mallocFailed || flags&(MEM_Str|MEM_Blob) );-
3364 assert( pMem->n>=0 );-
3365 n = (u32)pMem->n;-
3366 if( flags & MEM_Zero ){
flags & 0x4000Description
TRUEevaluated 6819 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 4632232 times by 392 tests
Evaluated 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)
  • ...
6819-4632232
3367 n += pMem->u.nZero;-
3368 }
executed 6819 times by 1 test: end of block
Executed by:
  • Self test (438)
6819
3369 *pLen = n;-
3370 return ((n*2) + 12 + ((flags&MEM_Str)!=0));
executed 4639051 times by 392 tests: return ((n*2) + 12 + ((flags&0x0002)!=0));
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)
  • ...
4639051
3371}-
3372-
3373/*-
3374** The sizes for serial types less than 128-
3375*/-
3376static const u8 sqlite3SmallTypeSizes[] = {-
3377 /* 0 1 2 3 4 5 6 7 8 9 */ -
3378/* 0 */ 0, 1, 2, 3, 4, 6, 8, 8, 0, 0,-
3379/* 10 */ 0, 0, 0, 0, 1, 1, 2, 2, 3, 3,-
3380/* 20 */ 4, 4, 5, 5, 6, 6, 7, 7, 8, 8,-
3381/* 30 */ 9, 9, 10, 10, 11, 11, 12, 12, 13, 13,-
3382/* 40 */ 14, 14, 15, 15, 16, 16, 17, 17, 18, 18,-
3383/* 50 */ 19, 19, 20, 20, 21, 21, 22, 22, 23, 23,-
3384/* 60 */ 24, 24, 25, 25, 26, 26, 27, 27, 28, 28,-
3385/* 70 */ 29, 29, 30, 30, 31, 31, 32, 32, 33, 33,-
3386/* 80 */ 34, 34, 35, 35, 36, 36, 37, 37, 38, 38,-
3387/* 90 */ 39, 39, 40, 40, 41, 41, 42, 42, 43, 43,-
3388/* 100 */ 44, 44, 45, 45, 46, 46, 47, 47, 48, 48,-
3389/* 110 */ 49, 49, 50, 50, 51, 51, 52, 52, 53, 53,-
3390/* 120 */ 54, 54, 55, 55, 56, 56, 57, 57-
3391};-
3392-
3393/*-
3394** Return the length of the data corresponding to the supplied serial-type.-
3395*/-
3396u32 sqlite3VdbeSerialTypeLen(u32 serial_type){-
3397 if( serial_type>=128 ){
serial_type>=128Description
TRUEevaluated 5609754 times by 358 tests
Evaluated by:
  • Self test (10)
  • Self test (101)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • ...
FALSEevaluated 7344573 times by 6 tests
Evaluated by:
  • Self test (2)
  • Self test (3)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
5609754-7344573
3398 return (serial_type-12)/2;
executed 5609754 times by 358 tests: return (serial_type-12)/2;
Executed by:
  • Self test (10)
  • Self test (101)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • ...
5609754
3399 }else{-
3400 assert( serial_type<12 -
3401 || sqlite3SmallTypeSizes[serial_type]==(serial_type - 12)/2 );-
3402 return sqlite3SmallTypeSizes[serial_type];
executed 7344573 times by 6 tests: return sqlite3SmallTypeSizes[serial_type];
Executed by:
  • Self test (2)
  • Self test (3)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
7344573
3403 }-
3404}-
3405u8 sqlite3VdbeOneByteSerialTypeLen(u8 serial_type){-
3406 assert( serial_type<128 );-
3407 return sqlite3SmallTypeSizes[serial_type];
executed 36900007 times by 434 tests: return sqlite3SmallTypeSizes[serial_type];
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)
  • ...
36900007
3408}-
3409-
3410/*-
3411** If we are on an architecture with mixed-endian floating -
3412** points (ex: ARM7) then swap the lower 4 bytes with the -
3413** upper 4 bytes. Return the result.-
3414**-
3415** For most architectures, this is a no-op.-
3416**-
3417** (later): It is reported to me that the mixed-endian problem-
3418** on ARM7 is an issue with GCC, not with the ARM7 chip. It seems-
3419** that early versions of GCC stored the two words of a 64-bit-
3420** float in the wrong order. And that error has been propagated-
3421** ever since. The blame is not necessarily with GCC, though.-
3422** GCC might have just copying the problem from a prior compiler.-
3423** I am also told that newer versions of GCC that follow a different-
3424** ABI get the byte order right.-
3425**-
3426** Developers using SQLite on an ARM7 should compile and run their-
3427** application using -DSQLITE_DEBUG=1 at least once. With DEBUG-
3428** enabled, some asserts below will ensure that the byte order of-
3429** floating point values is correct.-
3430**-
3431** (2007-08-30) Frank van Vugt has studied this problem closely-
3432** and has send his findings to the SQLite developers. Frank-
3433** writes that some Linux kernels offer floating point hardware-
3434** emulation that uses only 32-bit mantissas instead of a full -
3435** 48-bits as required by the IEEE standard. (This is the-
3436** CONFIG_FPE_FASTFPE option.) On such systems, floating point-
3437** byte swapping becomes very complicated. To avoid problems,-
3438** the necessary byte swapping is carried out using a 64-bit integer-
3439** rather than a 64-bit float. Frank assures us that the code here-
3440** works for him. We, the developers, have no way to independently-
3441** verify this, but Frank seems to know what he is talking about-
3442** so we trust him.-
3443*/-
3444#ifdef SQLITE_MIXED_ENDIAN_64BIT_FLOAT-
3445static u64 floatSwap(u64 in){-
3446 union {-
3447 u64 r;-
3448 u32 i[2];-
3449 } u;-
3450 u32 t;-
3451-
3452 u.r = in;-
3453 t = u.i[0];-
3454 u.i[0] = u.i[1];-
3455 u.i[1] = t;-
3456 return u.r;-
3457}-
3458# define swapMixedEndianFloat(X) X = floatSwap(X)-
3459#else-
3460# define swapMixedEndianFloat(X)-
3461#endif-
3462-
3463/*-
3464** Write the serialized data blob for the value stored in pMem into -
3465** buf. It is assumed that the caller has allocated sufficient space.-
3466** Return the number of bytes written.-
3467**-
3468** nBuf is the amount of space left in buf[]. The caller is responsible-
3469** for allocating enough space to buf[] to hold the entire field, exclusive-
3470** of the pMem->u.nZero bytes for a MEM_Zero value.-
3471**-
3472** Return the number of bytes actually written into buf[]. The number-
3473** of bytes in the zero-filled tail is included in the return value only-
3474** if those bytes were zeroed in buf[].-
3475*/ -
3476u32 sqlite3VdbeSerialPut(u8 *buf, Mem *pMem, u32 serial_type){-
3477 u32 len;-
3478-
3479 /* Integer and Real */-
3480 if( serial_type<=7 && serial_type>0 ){
serial_type<=7Description
TRUEevaluated 11559109 times by 397 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • 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)
  • Self test (123)
  • ...
FALSEevaluated 5324828 times by 392 tests
Evaluated 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)
  • ...
serial_type>0Description
TRUEevaluated 11143287 times by 397 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • 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)
  • Self test (123)
  • ...
FALSEevaluated 415822 times by 332 tests
Evaluated by:
  • Self test (100)
  • Self test (119)
  • Self test (120)
  • Self test (121)
  • Self test (122)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • Self test (128)
  • Self test (129)
  • Self test (130)
  • Self test (131)
  • Self test (132)
  • Self test (133)
  • Self test (134)
  • Self test (135)
  • Self test (136)
  • Self test (137)
  • Self test (138)
  • Self test (139)
  • Self test (140)
  • Self test (141)
  • Self test (142)
  • ...
415822-11559109
3481 u64 v;-
3482 u32 i;-
3483 if( serial_type==7 ){
serial_type==7Description
TRUEevaluated 307749 times by 4 tests
Evaluated by:
  • Self test
  • Self test (438)
  • Self test (57)
  • Self test (58)
FALSEevaluated 10835538 times by 397 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • 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)
  • Self test (123)
  • ...
307749-10835538
3484 assert( sizeof(v)==sizeof(pMem->u.r) );-
3485 memcpy(&v, &pMem->u.r, sizeof(v));-
3486 swapMixedEndianFloat(v);-
3487 }else{
executed 307749 times by 4 tests: end of block
Executed by:
  • Self test
  • Self test (438)
  • Self test (57)
  • Self test (58)
307749
3488 v = pMem->u.i;-
3489 }
executed 10835538 times by 397 tests: end of block
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • 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)
  • Self test (123)
  • ...
10835538
3490 len = i = sqlite3SmallTypeSizes[serial_type];-
3491 assert( i>0 );-
3492 do{-
3493 buf[--i] = (u8)(v&0xFF);-
3494 v >>= 8;-
3495 }while( i );
executed 25558902 times by 397 tests: end of block
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • 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)
  • Self test (123)
  • ...
iDescription
TRUEevaluated 14415615 times by 4 tests
Evaluated by:
  • Self test
  • Self test (438)
  • Self test (57)
  • Self test (58)
FALSEevaluated 11143287 times by 397 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • 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)
  • Self test (123)
  • ...
11143287-25558902
3496 return len;
executed 11143287 times by 397 tests: return len;
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • 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)
  • Self test (123)
  • ...
11143287
3497 }-
3498-
3499 /* String or blob */-
3500 if( serial_type>=12 ){
serial_type>=12Description
TRUEevaluated 4639045 times by 392 tests
Evaluated 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)
  • ...
FALSEevaluated 1101605 times by 360 tests
Evaluated by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • Self test (121)
  • Self test (122)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • Self test (128)
  • Self test (129)
  • Self test (130)
  • Self test (131)
  • Self test (132)
  • Self test (133)
  • Self test (134)
  • Self test (135)
  • Self test (136)
  • Self test (137)
  • ...
1101605-4639045
3501 assert( pMem->n + ((pMem->flags & MEM_Zero)?pMem->u.nZero:0)-
3502 == (int)sqlite3VdbeSerialTypeLen(serial_type) );-
3503 len = pMem->n;-
3504 if( len>0 ) memcpy(buf, pMem->z, len);
executed 4631477 times by 392 tests: memcpy(buf, pMem->z, len);
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)
  • ...
len>0Description
TRUEevaluated 4631477 times by 392 tests
Evaluated 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)
  • ...
FALSEevaluated 7568 times by 1 test
Evaluated by:
  • Self test (438)
7568-4631477
3505 return len;
executed 4639045 times by 392 tests: return len;
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)
  • ...
4639045
3506 }-
3507-
3508 /* NULL or constants 0 or 1 */-
3509 return 0;
executed 1101605 times by 360 tests: return 0;
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (119)
  • Self test (12)
  • Self test (120)
  • Self test (121)
  • Self test (122)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • Self test (128)
  • Self test (129)
  • Self test (130)
  • Self test (131)
  • Self test (132)
  • Self test (133)
  • Self test (134)
  • Self test (135)
  • Self test (136)
  • Self test (137)
  • ...
1101605
3510}-
3511-
3512/* Input "x" is a sequence of unsigned characters that represent a-
3513** big-endian integer. Return the equivalent native integer-
3514*/-
3515#define ONE_BYTE_INT(x) ((i8)(x)[0])-
3516#define TWO_BYTE_INT(x) (256*(i8)((x)[0])|(x)[1])-
3517#define THREE_BYTE_INT(x) (65536*(i8)((x)[0])|((x)[1]<<8)|(x)[2])-
3518#define FOUR_BYTE_UINT(x) (((u32)(x)[0]<<24)|((x)[1]<<16)|((x)[2]<<8)|(x)[3])-
3519#define FOUR_BYTE_INT(x) (16777216*(i8)((x)[0])|((x)[1]<<16)|((x)[2]<<8)|(x)[3])-
3520-
3521/*-
3522** Deserialize the data blob pointed to by buf as serial type serial_type-
3523** and store the result in pMem. Return the number of bytes read.-
3524**-
3525** This function is implemented as two separate routines for performance.-
3526** The few cases that require local variables are broken out into a separate-
3527** routine so that in most cases the overhead of moving the stack pointer-
3528** is avoided.-
3529*/ -
3530static u32 SQLITE_NOINLINE serialGet(-
3531 const unsigned char *buf, /* Buffer to deserialize from */-
3532 u32 serial_type, /* Serial type to deserialize */-
3533 Mem *pMem /* Memory cell to write value into */-
3534){-
3535 u64 x = FOUR_BYTE_UINT(buf);-
3536 u32 y = FOUR_BYTE_UINT(buf+4);-
3537 x = (x<<32) + y;-
3538 if( serial_type==6 ){
serial_type==6Description
TRUEevaluated 119576 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 2156234 times by 4 tests
Evaluated by:
  • Self test
  • Self test (438)
  • Self test (57)
  • Self test (58)
119576-2156234
3539 /* EVIDENCE-OF: R-29851-52272 Value is a big-endian 64-bit-
3540 ** twos-complement integer. */-
3541 pMem->u.i = *(i64*)&x;-
3542 pMem->flags = MEM_Int;-
3543 testcase( pMem->u.i<0 );-
3544 }else{
executed 119576 times by 1 test: end of block
Executed by:
  • Self test (438)
119576
3545 /* EVIDENCE-OF: R-57343-49114 Value is a big-endian IEEE 754-2008 64-bit-
3546 ** floating point number. */-
3547#if !defined(NDEBUG) && !defined(SQLITE_OMIT_FLOATING_POINT)-
3548 /* Verify that integers and floating point values use the same-
3549 ** byte order. Or, that if SQLITE_MIXED_ENDIAN_64BIT_FLOAT is-
3550 ** defined that 64-bit floating point values really are mixed-
3551 ** endian.-
3552 */-
3553 static const u64 t1 = ((u64)0x3ff00000)<<32;-
3554 static const double r1 = 1.0;-
3555 u64 t2 = t1;-
3556 swapMixedEndianFloat(t2);-
3557 assert( sizeof(r1)==sizeof(t2) && memcmp(&r1, &t2, sizeof(r1))==0 );-
3558#endif-
3559 assert( sizeof(x)==8 && sizeof(pMem->u.r)==8 );-
3560 swapMixedEndianFloat(x);-
3561 memcpy(&pMem->u.r, &x, sizeof(x));-
3562 pMem->flags = sqlite3IsNaN(pMem->u.r) ? MEM_Null : MEM_Real;
sqlite3IsNaN(pMem->u.r)Description
TRUEevaluated 8 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 2156226 times by 4 tests
Evaluated by:
  • Self test
  • Self test (438)
  • Self test (57)
  • Self test (58)
8-2156226
3563 }
executed 2156234 times by 4 tests: end of block
Executed by:
  • Self test
  • Self test (438)
  • Self test (57)
  • Self test (58)
2156234
3564 return 8;
executed 2275810 times by 4 tests: return 8;
Executed by:
  • Self test
  • Self test (438)
  • Self test (57)
  • Self test (58)
2275810
3565}-
3566u32 sqlite3VdbeSerialGet(-
3567 const unsigned char *buf, /* Buffer to deserialize from */-
3568 u32 serial_type, /* Serial type to deserialize */-
3569 Mem *pMem /* Memory cell to write value into */-
3570){-
3571 switch( serial_type ){-
3572 case 10: { /* Internal use only: NULL with virtual table
executed 47 times by 1 test: case 10:
Executed by:
  • Self test (438)
47
3573 ** UPDATE no-change flag set */-
3574 pMem->flags = MEM_Null|MEM_Zero;-
3575 pMem->n = 0;-
3576 pMem->u.nZero = 0;-
3577 break;
executed 47 times by 1 test: break;
Executed by:
  • Self test (438)
47
3578 }-
3579 case 11: /* Reserved for future use */
never executed: case 11:
0
3580 case 0: { /* Null */
executed 441992 times by 376 tests: case 0:
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • ...
441992
3581 /* EVIDENCE-OF: R-24078-09375 Value is a NULL. */-
3582 pMem->flags = MEM_Null;-
3583 break;
executed 441992 times by 376 tests: break;
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • ...
441992
3584 }-
3585 case 1: {
executed 6911353 times by 434 tests: case 1:
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)
  • ...
6911353
3586 /* EVIDENCE-OF: R-44885-25196 Value is an 8-bit twos-complement-
3587 ** integer. */-
3588 pMem->u.i = ONE_BYTE_INT(buf);-
3589 pMem->flags = MEM_Int;-
3590 testcase( pMem->u.i<0 );-
3591 return 1;
executed 6911353 times by 434 tests: return 1;
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)
  • ...
6911353
3592 }-
3593 case 2: { /* 2-byte signed integer */
executed 5617043 times by 3 tests: case 2:
Executed by:
  • Self test (40)
  • Self test (438)
  • Self test (74)
5617043
3594 /* EVIDENCE-OF: R-49794-35026 Value is a big-endian 16-bit-
3595 ** twos-complement integer. */-
3596 pMem->u.i = TWO_BYTE_INT(buf);-
3597 pMem->flags = MEM_Int;-
3598 testcase( pMem->u.i<0 );-
3599 return 2;
executed 5617087 times by 3 tests: return 2;
Executed by:
  • Self test (40)
  • Self test (438)
  • Self test (74)
5617087
3600 }-
3601 case 3: { /* 3-byte signed integer */
executed 5905995 times by 1 test: case 3:
Executed by:
  • Self test (438)
5905995
3602 /* EVIDENCE-OF: R-37839-54301 Value is a big-endian 24-bit-
3603 ** twos-complement integer. */-
3604 pMem->u.i = THREE_BYTE_INT(buf);-
3605 pMem->flags = MEM_Int;-
3606 testcase( pMem->u.i<0 );-
3607 return 3;
executed 5905995 times by 1 test: return 3;
Executed by:
  • Self test (438)
5905995
3608 }-
3609 case 4: { /* 4-byte signed integer */
executed 1496817 times by 1 test: case 4:
Executed by:
  • Self test (438)
1496817
3610 /* EVIDENCE-OF: R-01849-26079 Value is a big-endian 32-bit-
3611 ** twos-complement integer. */-
3612 pMem->u.i = FOUR_BYTE_INT(buf);-
3613#ifdef __HP_cc -
3614 /* Work around a sign-extension bug in the HP compiler for HP/UX */-
3615 if( buf[0]&0x80 ) pMem->u.i |= 0xffffffff80000000LL;-
3616#endif-
3617 pMem->flags = MEM_Int;-
3618 testcase( pMem->u.i<0 );-
3619 return 4;
executed 1496817 times by 1 test: return 4;
Executed by:
  • Self test (438)
1496817
3620 }-
3621 case 5: { /* 6-byte signed integer */
executed 578374 times by 1 test: case 5:
Executed by:
  • Self test (438)
578374
3622 /* EVIDENCE-OF: R-50385-09674 Value is a big-endian 48-bit-
3623 ** twos-complement integer. */-
3624 pMem->u.i = FOUR_BYTE_UINT(buf+2) + (((i64)1)<<32)*TWO_BYTE_INT(buf);-
3625 pMem->flags = MEM_Int;-
3626 testcase( pMem->u.i<0 );-
3627 return 6;
executed 578374 times by 1 test: return 6;
Executed by:
  • Self test (438)
578374
3628 }-
3629 case 6: /* 8-byte signed integer */
executed 119576 times by 1 test: case 6:
Executed by:
  • Self test (438)
119576
3630 case 7: { /* IEEE floating point */
executed 2156234 times by 4 tests: case 7:
Executed by:
  • Self test
  • Self test (438)
  • Self test (57)
  • Self test (58)
2156234
3631 /* These use local variables, so do them in a separate routine-
3632 ** to avoid having to move the frame pointer in the common case */-
3633 return serialGet(buf,serial_type,pMem);
executed 2275810 times by 4 tests: return serialGet(buf,serial_type,pMem);
Executed by:
  • Self test
  • Self test (438)
  • Self test (57)
  • Self test (58)
2275810
3634 }-
3635 case 8: /* Integer 0 */
executed 332243 times by 9 tests: case 8:
Executed by:
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (4)
  • Self test (438)
  • Self test (47)
  • Self test (5)
332243
3636 case 9: { /* Integer 1 */
executed 727627 times by 31 tests: case 9:
Executed by:
  • Self test
  • Self test (2)
  • Self test (3)
  • Self test (35)
  • Self test (36)
  • Self test (4)
  • Self test (42)
  • Self test (43)
  • Self test (438)
  • Self test (44)
  • Self test (45)
  • Self test (46)
  • Self test (49)
  • Self test (5)
  • Self test (50)
  • Self test (51)
  • Self test (52)
  • Self test (53)
  • Self test (57)
  • Self test (58)
  • Self test (62)
  • Self test (63)
  • Self test (75)
  • Self test (76)
  • Self test (78)
  • ...
727627
3637 /* EVIDENCE-OF: R-12976-22893 Value is the integer 0. */-
3638 /* EVIDENCE-OF: R-18143-12121 Value is the integer 1. */-
3639 pMem->u.i = serial_type-8;-
3640 pMem->flags = MEM_Int;-
3641 return 0;
executed 1059870 times by 37 tests: return 0;
Executed by:
  • Self test
  • Self test (2)
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (3)
  • Self test (35)
  • Self test (36)
  • Self test (4)
  • Self test (42)
  • Self test (43)
  • Self test (438)
  • Self test (44)
  • Self test (45)
  • Self test (46)
  • Self test (47)
  • Self test (49)
  • Self test (5)
  • Self test (50)
  • Self test (51)
  • Self test (52)
  • Self test (53)
  • Self test (57)
  • ...
1059870
3642 }-
3643 default: {
executed 4788748 times by 7 tests: default:
Executed by:
  • Self test (101)
  • Self test (2)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (438)
  • Self test (65)
4788748
3644 /* EVIDENCE-OF: R-14606-31564 Value is a BLOB that is (N-12)/2 bytes in-
3645 ** length.-
3646 ** EVIDENCE-OF: R-28401-00140 Value is a string in the text encoding and-
3647 ** (N-13)/2 bytes in length. */-
3648 static const u16 aFlag[] = { MEM_Blob|MEM_Ephem, MEM_Str|MEM_Ephem };-
3649 pMem->z = (char *)buf;-
3650 pMem->n = (serial_type-12)/2;-
3651 pMem->flags = aFlag[serial_type&1];-
3652 return pMem->n;
executed 4788726 times by 7 tests: return pMem->n;
Executed by:
  • Self test (101)
  • Self test (2)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (438)
  • Self test (65)
4788726
3653 }-
3654 }-
3655 return 0;
executed 442039 times by 376 tests: return 0;
Executed by:
  • Self test
  • Self test (10)
  • Self test (100)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • ...
442039
3656}-
3657/*-
3658** This routine is used to allocate sufficient space for an UnpackedRecord-
3659** structure large enough to be used with sqlite3VdbeRecordUnpack() if-
3660** the first argument is a pointer to KeyInfo structure pKeyInfo.-
3661**-
3662** The space is either allocated using sqlite3DbMallocRaw() or from within-
3663** the unaligned buffer passed via the second and third arguments (presumably-
3664** stack space). If the former, then *ppFree is set to a pointer that should-
3665** be eventually freed by the caller using sqlite3DbFree(). Or, if the -
3666** allocation comes from the pSpace/szSpace buffer, *ppFree is set to NULL-
3667** before returning.-
3668**-
3669** If an OOM error occurs, NULL is returned.-
3670*/-
3671UnpackedRecord *sqlite3VdbeAllocUnpackedRecord(-
3672 KeyInfo *pKeyInfo /* Description of the record */-
3673){-
3674 UnpackedRecord *p; /* Unpacked record to return */-
3675 int nByte; /* Number of bytes required for *p */-
3676 nByte = ROUND8(sizeof(UnpackedRecord)) + sizeof(Mem)*(pKeyInfo->nKeyField+1);-
3677 p = (UnpackedRecord *)sqlite3DbMallocRaw(pKeyInfo->db, nByte);-
3678 if( !p ) return 0;
never executed: return 0;
!pDescription
TRUEnever evaluated
FALSEevaluated 74575 times by 4 tests
Evaluated by:
  • Self test (42)
  • Self test (438)
  • Self test (44)
  • Self test (46)
0-74575
3679 p->aMem = (Mem*)&((char*)p)[ROUND8(sizeof(UnpackedRecord))];-
3680 assert( pKeyInfo->aSortOrder!=0 );-
3681 p->pKeyInfo = pKeyInfo;-
3682 p->nField = pKeyInfo->nKeyField + 1;-
3683 return p;
executed 74575 times by 4 tests: return p;
Executed by:
  • Self test (42)
  • Self test (438)
  • Self test (44)
  • Self test (46)
74575
3684}-
3685-
3686/*-
3687** Given the nKey-byte encoding of a record in pKey[], populate the -
3688** UnpackedRecord structure indicated by the fourth argument with the-
3689** contents of the decoded record.-
3690*/ -
3691void sqlite3VdbeRecordUnpack(-
3692 KeyInfo *pKeyInfo, /* Information about the record format */-
3693 int nKey, /* Size of the binary record */-
3694 const void *pKey, /* The binary record */-
3695 UnpackedRecord *p /* Populate this structure before returning. */-
3696){-
3697 const unsigned char *aKey = (const unsigned char *)pKey;-
3698 int d; -
3699 u32 idx; /* Offset in aKey[] to read from */-
3700 u16 u; /* Unsigned loop counter */-
3701 u32 szHdr;-
3702 Mem *pMem = p->aMem;-
3703-
3704 p->default_rc = 0;-
3705 assert( EIGHT_BYTE_ALIGNMENT(pMem) );-
3706 idx = getVarint32(aKey, szHdr);
(*(aKey)<(u8)0x80)Description
TRUEevaluated 5463668 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 100 times by 1 test
Evaluated by:
  • Self test (438)
100-5463668
3707 d = szHdr;-
3708 u = 0;-
3709 while( idx<szHdr && d<=nKey ){
idx<szHdrDescription
TRUEevaluated 6706972 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 51935 times by 1 test
Evaluated by:
  • Self test (438)
d<=nKeyDescription
TRUEevaluated 6707398 times by 1 test
Evaluated by:
  • Self test (438)
FALSEnever evaluated
0-6707398
3710 u32 serial_type;-
3711-
3712 idx += getVarint32(&aKey[idx], serial_type);
(*(&aKey[idx])<(u8)0x80)Description
TRUEevaluated 2214145 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 4494189 times by 1 test
Evaluated by:
  • Self test (438)
2214145-4494189
3713 pMem->enc = pKeyInfo->enc;-
3714 pMem->db = pKeyInfo->db;-
3715 /* pMem->flags = 0; // sqlite3VdbeSerialGet() will set this for us */-
3716 pMem->szMalloc = 0;-
3717 pMem->z = 0;-
3718 d += sqlite3VdbeSerialGet(&aKey[d], serial_type, pMem);-
3719 pMem++;-
3720 if( (++u)>=p->nField ) break;
executed 5411693 times by 1 test: break;
Executed by:
  • Self test (438)
(++u)>=p->nFieldDescription
TRUEevaluated 5411672 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1296419 times by 1 test
Evaluated by:
  • Self test (438)
1296419-5411693
3721 }
executed 1296377 times by 1 test: end of block
Executed by:
  • Self test (438)
1296377
3722 assert( u<=pKeyInfo->nKeyField + 1 );-
3723 p->nField = u;-
3724}
executed 5463581 times by 1 test: end of block
Executed by:
  • Self test (438)
5463581
3725-
3726#ifdef SQLITE_DEBUG-
3727/*-
3728** This function compares two index or table record keys in the same way-
3729** as the sqlite3VdbeRecordCompare() routine. Unlike VdbeRecordCompare(),-
3730** this function deserializes and compares values using the-
3731** sqlite3VdbeSerialGet() and sqlite3MemCompare() functions. It is used-
3732** in assert() statements to ensure that the optimized code in-
3733** sqlite3VdbeRecordCompare() returns results with these two primitives.-
3734**-
3735** Return true if the result of comparison is equivalent to desiredResult.-
3736** Return false if there is a disagreement.-
3737*/-
3738static int vdbeRecordCompareDebug(-
3739 int nKey1, const void *pKey1, /* Left key */-
3740 const UnpackedRecord *pPKey2, /* Right key */-
3741 int desiredResult /* Correct answer */-
3742){-
3743 u32 d1; /* Offset into aKey[] of next data element */-
3744 u32 idx1; /* Offset into aKey[] of next header element */-
3745 u32 szHdr1; /* Number of bytes in header */-
3746 int i = 0;-
3747 int rc = 0;-
3748 const unsigned char *aKey1 = (const unsigned char *)pKey1;-
3749 KeyInfo *pKeyInfo;-
3750 Mem mem1;-
3751-
3752 pKeyInfo = pPKey2->pKeyInfo;-
3753 if( pKeyInfo->db==0 ) return 1;-
3754 mem1.enc = pKeyInfo->enc;-
3755 mem1.db = pKeyInfo->db;-
3756 /* mem1.flags = 0; // Will be initialized by sqlite3VdbeSerialGet() */-
3757 VVA_ONLY( mem1.szMalloc = 0; ) /* Only needed by assert() statements */-
3758-
3759 /* Compilers may complain that mem1.u.i is potentially uninitialized.-
3760 ** We could initialize it, as shown here, to silence those complaints.-
3761 ** But in fact, mem1.u.i will never actually be used uninitialized, and doing -
3762 ** the unnecessary initialization has a measurable negative performance-
3763 ** impact, since this routine is a very high runner. And so, we choose-
3764 ** to ignore the compiler warnings and leave this variable uninitialized.-
3765 */-
3766 /* mem1.u.i = 0; // not needed, here to silence compiler warning */-
3767 -
3768 idx1 = getVarint32(aKey1, szHdr1);-
3769 if( szHdr1>98307 ) return SQLITE_CORRUPT;-
3770 d1 = szHdr1;-
3771 assert( pKeyInfo->nAllField>=pPKey2->nField || CORRUPT_DB );-
3772 assert( pKeyInfo->aSortOrder!=0 );-
3773 assert( pKeyInfo->nKeyField>0 );-
3774 assert( idx1<=szHdr1 || CORRUPT_DB );-
3775 do{-
3776 u32 serial_type1;-
3777-
3778 /* Read the serial types for the next element in each key. */-
3779 idx1 += getVarint32( aKey1+idx1, serial_type1 );-
3780-
3781 /* Verify that there is enough key space remaining to avoid-
3782 ** a buffer overread. The "d1+serial_type1+2" subexpression will-
3783 ** always be greater than or equal to the amount of required key space.-
3784 ** Use that approximation to avoid the more expensive call to-
3785 ** sqlite3VdbeSerialTypeLen() in the common case.-
3786 */-
3787 if( d1+serial_type1+2>(u32)nKey1-
3788 && d1+sqlite3VdbeSerialTypeLen(serial_type1)>(u32)nKey1 -
3789 ){-
3790 break;-
3791 }-
3792-
3793 /* Extract the values to be compared.-
3794 */-
3795 d1 += sqlite3VdbeSerialGet(&aKey1[d1], serial_type1, &mem1);-
3796-
3797 /* Do the comparison-
3798 */-
3799 rc = sqlite3MemCompare(&mem1, &pPKey2->aMem[i], pKeyInfo->aColl[i]);-
3800 if( rc!=0 ){-
3801 assert( mem1.szMalloc==0 ); /* See comment below */-
3802 if( pKeyInfo->aSortOrder[i] ){-
3803 rc = -rc; /* Invert the result for DESC sort order. */-
3804 }-
3805 goto debugCompareEnd;-
3806 }-
3807 i++;-
3808 }while( idx1<szHdr1 && i<pPKey2->nField );-
3809-
3810 /* No memory allocation is ever used on mem1. Prove this using-
3811 ** the following assert(). If the assert() fails, it indicates a-
3812 ** memory leak and a need to call sqlite3VdbeMemRelease(&mem1).-
3813 */-
3814 assert( mem1.szMalloc==0 );-
3815-
3816 /* rc==0 here means that one of the keys ran out of fields and-
3817 ** all the fields up to that point were equal. Return the default_rc-
3818 ** value. */-
3819 rc = pPKey2->default_rc;-
3820-
3821debugCompareEnd:-
3822 if( desiredResult==0 && rc==0 ) return 1;-
3823 if( desiredResult<0 && rc<0 ) return 1;-
3824 if( desiredResult>0 && rc>0 ) return 1;-
3825 if( CORRUPT_DB ) return 1;-
3826 if( pKeyInfo->db->mallocFailed ) return 1;-
3827 return 0;-
3828}-
3829#endif-
3830-
3831#ifdef SQLITE_DEBUG-
3832/*-
3833** Count the number of fields (a.k.a. columns) in the record given by-
3834** pKey,nKey. The verify that this count is less than or equal to the-
3835** limit given by pKeyInfo->nAllField.-
3836**-
3837** If this constraint is not satisfied, it means that the high-speed-
3838** vdbeRecordCompareInt() and vdbeRecordCompareString() routines will-
3839** not work correctly. If this assert() ever fires, it probably means-
3840** that the KeyInfo.nKeyField or KeyInfo.nAllField values were computed-
3841** incorrectly.-
3842*/-
3843static void vdbeAssertFieldCountWithinLimits(-
3844 int nKey, const void *pKey, /* The record to verify */ -
3845 const KeyInfo *pKeyInfo /* Compare size with this KeyInfo */-
3846){-
3847 int nField = 0;-
3848 u32 szHdr;-
3849 u32 idx;-
3850 u32 notUsed;-
3851 const unsigned char *aKey = (const unsigned char*)pKey;-
3852-
3853 if( CORRUPT_DB ) return;-
3854 idx = getVarint32(aKey, szHdr);-
3855 assert( nKey>=0 );-
3856 assert( szHdr<=(u32)nKey );-
3857 while( idx<szHdr ){-
3858 idx += getVarint32(aKey+idx, notUsed);-
3859 nField++;-
3860 }-
3861 assert( nField <= pKeyInfo->nAllField );-
3862}-
3863#else-
3864# define vdbeAssertFieldCountWithinLimits(A,B,C)-
3865#endif-
3866-
3867/*-
3868** Both *pMem1 and *pMem2 contain string values. Compare the two values-
3869** using the collation sequence pColl. As usual, return a negative , zero-
3870** or positive value if *pMem1 is less than, equal to or greater than -
3871** *pMem2, respectively. Similar in spirit to "rc = (*pMem1) - (*pMem2);".-
3872*/-
3873static int vdbeCompareMemString(-
3874 const Mem *pMem1,-
3875 const Mem *pMem2,-
3876 const CollSeq *pColl,-
3877 u8 *prcErr /* If an OOM occurs, set to SQLITE_NOMEM */-
3878){-
3879 if( pMem1->enc==pColl->enc ){
pMem1->enc==pColl->encDescription
TRUEevaluated 6233057 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 578 times by 1 test
Evaluated by:
  • Self test (438)
578-6233057
3880 /* The strings are already in the correct encoding. Call the-
3881 ** comparison function directly */-
3882 return pColl->xCmp(pColl->pUser,pMem1->n,pMem1->z,pMem2->n,pMem2->z);
executed 6233057 times by 31 tests: return pColl->xCmp(pColl->pUser,pMem1->n,pMem1->z,pMem2->n,pMem2->z);
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)
  • ...
6233057
3883 }else{-
3884 int rc;-
3885 const void *v1, *v2;-
3886 Mem c1;-
3887 Mem c2;-
3888 sqlite3VdbeMemInit(&c1, pMem1->db, MEM_Null);-
3889 sqlite3VdbeMemInit(&c2, pMem1->db, MEM_Null);-
3890 sqlite3VdbeMemShallowCopy(&c1, pMem1, MEM_Ephem);-
3891 sqlite3VdbeMemShallowCopy(&c2, pMem2, MEM_Ephem);-
3892 v1 = sqlite3ValueText((sqlite3_value*)&c1, pColl->enc);-
3893 v2 = sqlite3ValueText((sqlite3_value*)&c2, pColl->enc);-
3894 if( (v1==0 || v2==0) ){
v1==0Description
TRUEnever evaluated
FALSEevaluated 578 times by 1 test
Evaluated by:
  • Self test (438)
v2==0Description
TRUEnever evaluated
FALSEevaluated 578 times by 1 test
Evaluated by:
  • Self test (438)
0-578
3895 if( prcErr ) *prcErr = SQLITE_NOMEM_BKPT;
never executed: *prcErr = 7;
prcErrDescription
TRUEnever evaluated
FALSEnever evaluated
0
3896 rc = 0;-
3897 }else{
never executed: end of block
0
3898 rc = pColl->xCmp(pColl->pUser, c1.n, v1, c2.n, v2);-
3899 }
executed 578 times by 1 test: end of block
Executed by:
  • Self test (438)
578
3900 sqlite3VdbeMemRelease(&c1);-
3901 sqlite3VdbeMemRelease(&c2);-
3902 return rc;
executed 578 times by 1 test: return rc;
Executed by:
  • Self test (438)
578
3903 }-
3904}-
3905-
3906/*-
3907** The input pBlob is guaranteed to be a Blob that is not marked-
3908** with MEM_Zero. Return true if it could be a zero-blob.-
3909*/-
3910static int isAllZero(const char *z, int n){-
3911 int i;-
3912 for(i=0; i<n; i++){
i<nDescription
TRUEevaluated 20014 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 7 times by 1 test
Evaluated by:
  • Self test (438)
7-20014
3913 if( z[i] ) return 0;
never executed: return 0;
z[i]Description
TRUEnever evaluated
FALSEevaluated 20014 times by 1 test
Evaluated by:
  • Self test (438)
0-20014
3914 }
executed 20014 times by 1 test: end of block
Executed by:
  • Self test (438)
20014
3915 return 1;
executed 7 times by 1 test: return 1;
Executed by:
  • Self test (438)
7
3916}-
3917-
3918/*-
3919** Compare two blobs. Return negative, zero, or positive if the first-
3920** is less than, equal to, or greater than the second, respectively.-
3921** If one blob is a prefix of the other, then the shorter is the lessor.-
3922*/-
3923SQLITE_NOINLINE int sqlite3BlobCompare(const Mem *pB1, const Mem *pB2){-
3924 int c;-
3925 int n1 = pB1->n;-
3926 int n2 = pB2->n;-
3927-
3928 /* It is possible to have a Blob value that has some non-zero content-
3929 ** followed by zero content. But that only comes up for Blobs formed-
3930 ** by the OP_MakeRecord opcode, and such Blobs never get passed into-
3931 ** sqlite3MemCompare(). */-
3932 assert( (pB1->flags & MEM_Zero)==0 || n1==0 );-
3933 assert( (pB2->flags & MEM_Zero)==0 || n2==0 );-
3934-
3935 if( (pB1->flags|pB2->flags) & MEM_Zero ){
(pB1->flags|pB...lags) & 0x4000Description
TRUEevaluated 7 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 5145 times by 1 test
Evaluated by:
  • Self test (438)
7-5145
3936 if( pB1->flags & pB2->flags & MEM_Zero ){
pB1->flags & p...flags & 0x4000Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 5 times by 1 test
Evaluated by:
  • Self test (438)
2-5
3937 return pB1->u.nZero - pB2->u.nZero;
executed 2 times by 1 test: return pB1->u.nZero - pB2->u.nZero;
Executed by:
  • Self test (438)
2
3938 }else if( pB1->flags & MEM_Zero ){
pB1->flags & 0x4000Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 3 times by 1 test
Evaluated by:
  • Self test (438)
2-3
3939 if( !isAllZero(pB2->z, pB2->n) ) return -1;
never executed: return -1;
!isAllZero(pB2->z, pB2->n)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
0-2
3940 return pB1->u.nZero - n2;
executed 2 times by 1 test: return pB1->u.nZero - n2;
Executed by:
  • Self test (438)
2
3941 }else{-
3942 if( !isAllZero(pB1->z, pB1->n) ) return +1;
never executed: return +1;
!isAllZero(pB1->z, pB1->n)Description
TRUEnever evaluated
FALSEevaluated 3 times by 1 test
Evaluated by:
  • Self test (438)
0-3
3943 return n1 - pB2->u.nZero;
executed 3 times by 1 test: return n1 - pB2->u.nZero;
Executed by:
  • Self test (438)
3
3944 }-
3945 }-
3946 c = memcmp(pB1->z, pB2->z, n1>n2 ? n2 : n1);-
3947 if( c ) return c;
executed 3496 times by 1 test: return c;
Executed by:
  • Self test (438)
cDescription
TRUEevaluated 3496 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1649 times by 1 test
Evaluated by:
  • Self test (438)
1649-3496
3948 return n1 - n2;
executed 1649 times by 1 test: return n1 - n2;
Executed by:
  • Self test (438)
1649
3949}-
3950-
3951/*-
3952** Do a comparison between a 64-bit signed integer and a 64-bit floating-point-
3953** number. Return negative, zero, or positive if the first (i64) is less than,-
3954** equal to, or greater than the second (double).-
3955*/-
3956static int sqlite3IntFloatCompare(i64 i, double r){-
3957 if( sizeof(LONGDOUBLE_TYPE)>8 ){
sizeof(long double)>8Description
TRUEevaluated 71815 times by 1 test
Evaluated by:
  • Self test (438)
FALSEnever evaluated
0-71815
3958 LONGDOUBLE_TYPE x = (LONGDOUBLE_TYPE)i;-
3959 if( x<r ) return -1;
executed 24163 times by 1 test: return -1;
Executed by:
  • Self test (438)
x<rDescription
TRUEevaluated 24163 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 47652 times by 1 test
Evaluated by:
  • Self test (438)
24163-47652
3960 if( x>r ) return +1;
executed 46120 times by 1 test: return +1;
Executed by:
  • Self test (438)
x>rDescription
TRUEevaluated 46120 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1532 times by 1 test
Evaluated by:
  • Self test (438)
1532-46120
3961 return 0;
executed 1532 times by 1 test: return 0;
Executed by:
  • Self test (438)
1532
3962 }else{-
3963 i64 y;-
3964 double s;-
3965 if( r<-9223372036854775808.0 ) return +1;
never executed: return +1;
r<-9223372036854775808.0Description
TRUEnever evaluated
FALSEnever evaluated
0
3966 if( r>=9223372036854775808.0 ) return -1;
never executed: return -1;
r>=9223372036854775808.0Description
TRUEnever evaluated
FALSEnever evaluated
0
3967 y = (i64)r;-
3968 if( i<y ) return -1;
never executed: return -1;
i<yDescription
TRUEnever evaluated
FALSEnever evaluated
0
3969 if( i>y ) return +1;
never executed: return +1;
i>yDescription
TRUEnever evaluated
FALSEnever evaluated
0
3970 s = (double)i;-
3971 if( s<r ) return -1;
never executed: return -1;
s<rDescription
TRUEnever evaluated
FALSEnever evaluated
0
3972 if( s>r ) return +1;
never executed: return +1;
s>rDescription
TRUEnever evaluated
FALSEnever evaluated
0
3973 return 0;
never executed: return 0;
0
3974 }-
3975}-
3976-
3977/*-
3978** Compare the values contained by the two memory cells, returning-
3979** negative, zero or positive if pMem1 is less than, equal to, or greater-
3980** than pMem2. Sorting order is NULL's first, followed by numbers (integers-
3981** and reals) sorted numerically, followed by text ordered by the collating-
3982** sequence pColl and finally blob's ordered by memcmp().-
3983**-
3984** Two NULL values are considered equal by this function.-
3985*/-
3986int sqlite3MemCompare(const Mem *pMem1, const Mem *pMem2, const CollSeq *pColl){-
3987 int f1, f2;-
3988 int combined_flags;-
3989-
3990 f1 = pMem1->flags;-
3991 f2 = pMem2->flags;-
3992 combined_flags = f1|f2;-
3993 assert( !sqlite3VdbeMemIsRowSet(pMem1) && !sqlite3VdbeMemIsRowSet(pMem2) );-
3994 -
3995 /* If one value is NULL, it is less than the other. If both values-
3996 ** are NULL, return 0.-
3997 */-
3998 if( combined_flags&MEM_Null ){
combined_flags&0x0001Description
TRUEevaluated 3889 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 9997320 times by 377 tests
Evaluated by:
  • Self test
  • Self test (100)
  • Self test (101)
  • Self test (104)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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 (120)
  • Self test (121)
  • Self test (122)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • ...
3889-9997320
3999 return (f2&MEM_Null) - (f1&MEM_Null);
executed 3889 times by 1 test: return (f2&0x0001) - (f1&0x0001);
Executed by:
  • Self test (438)
3889
4000 }-
4001-
4002 /* At least one of the two values is a number-
4003 */-
4004 if( combined_flags&(MEM_Int|MEM_Real) ){
combined_flags&(0x0004|0x0008)Description
TRUEevaluated 3872047 times by 348 tests
Evaluated by:
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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 (120)
  • Self test (121)
  • Self test (122)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • Self test (128)
  • Self test (129)
  • Self test (130)
  • ...
FALSEevaluated 6125273 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)
  • ...
3872047-6125273
4005 if( (f1 & f2 & MEM_Int)!=0 ){
(f1 & f2 & 0x0004)!=0Description
TRUEevaluated 3422647 times by 348 tests
Evaluated by:
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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 (120)
  • Self test (121)
  • Self test (122)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • Self test (128)
  • Self test (129)
  • Self test (130)
  • ...
FALSEevaluated 449400 times by 1 test
Evaluated by:
  • Self test (438)
449400-3422647
4006 if( pMem1->u.i < pMem2->u.i ) return -1;
executed 1377228 times by 2 tests: return -1;
Executed by:
  • Self test (40)
  • Self test (438)
pMem1->u.i < pMem2->u.iDescription
TRUEevaluated 1377228 times by 2 tests
Evaluated by:
  • Self test (40)
  • Self test (438)
FALSEevaluated 2045419 times by 348 tests
Evaluated by:
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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 (120)
  • Self test (121)
  • Self test (122)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • Self test (128)
  • Self test (129)
  • Self test (130)
  • ...
1377228-2045419
4007 if( pMem1->u.i > pMem2->u.i ) return +1;
executed 873799 times by 337 tests: return +1;
Executed by:
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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 (120)
  • Self test (121)
  • Self test (122)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • Self test (128)
  • Self test (129)
  • Self test (130)
  • ...
pMem1->u.i > pMem2->u.iDescription
TRUEevaluated 873799 times by 337 tests
Evaluated by:
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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 (120)
  • Self test (121)
  • Self test (122)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • Self test (128)
  • Self test (129)
  • Self test (130)
  • ...
FALSEevaluated 1171620 times by 346 tests
Evaluated by:
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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 (120)
  • Self test (121)
  • Self test (122)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • Self test (128)
  • Self test (129)
  • Self test (130)
  • ...
873799-1171620
4008 return 0;
executed 1171620 times by 346 tests: return 0;
Executed by:
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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 (120)
  • Self test (121)
  • Self test (122)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • Self test (128)
  • Self test (129)
  • Self test (130)
  • ...
1171620
4009 }-
4010 if( (f1 & f2 & MEM_Real)!=0 ){
(f1 & f2 & 0x0008)!=0Description
TRUEevaluated 151557 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 297843 times by 1 test
Evaluated by:
  • Self test (438)
151557-297843
4011 if( pMem1->u.r < pMem2->u.r ) return -1;
executed 26561 times by 1 test: return -1;
Executed by:
  • Self test (438)
pMem1->u.r < pMem2->u.rDescription
TRUEevaluated 26561 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 124996 times by 1 test
Evaluated by:
  • Self test (438)
26561-124996
4012 if( pMem1->u.r > pMem2->u.r ) return +1;
executed 12693 times by 1 test: return +1;
Executed by:
  • Self test (438)
pMem1->u.r > pMem2->u.rDescription
TRUEevaluated 12693 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 112303 times by 1 test
Evaluated by:
  • Self test (438)
12693-112303
4013 return 0;
executed 112303 times by 1 test: return 0;
Executed by:
  • Self test (438)
112303
4014 }-
4015 if( (f1&MEM_Int)!=0 ){
(f1&0x0004)!=0Description
TRUEevaluated 77919 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 219924 times by 1 test
Evaluated by:
  • Self test (438)
77919-219924
4016 if( (f2&MEM_Real)!=0 ){
(f2&0x0008)!=0Description
TRUEevaluated 42300 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 35619 times by 1 test
Evaluated by:
  • Self test (438)
35619-42300
4017 return sqlite3IntFloatCompare(pMem1->u.i, pMem2->u.r);
executed 42300 times by 1 test: return sqlite3IntFloatCompare(pMem1->u.i, pMem2->u.r);
Executed by:
  • Self test (438)
42300
4018 }else{-
4019 return -1;
executed 35619 times by 1 test: return -1;
Executed by:
  • Self test (438)
35619
4020 }-
4021 }-
4022 if( (f1&MEM_Real)!=0 ){
(f1&0x0008)!=0Description
TRUEevaluated 100062 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 119862 times by 1 test
Evaluated by:
  • Self test (438)
100062-119862
4023 if( (f2&MEM_Int)!=0 ){
(f2&0x0004)!=0Description
TRUEevaluated 26190 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 73872 times by 1 test
Evaluated by:
  • Self test (438)
26190-73872
4024 return -sqlite3IntFloatCompare(pMem2->u.i, pMem1->u.r);
executed 26190 times by 1 test: return -sqlite3IntFloatCompare(pMem2->u.i, pMem1->u.r);
Executed by:
  • Self test (438)
26190
4025 }else{-
4026 return -1;
executed 73872 times by 1 test: return -1;
Executed by:
  • Self test (438)
73872
4027 }-
4028 }-
4029 return +1;
executed 119862 times by 1 test: return +1;
Executed by:
  • Self test (438)
119862
4030 }-
4031-
4032 /* If one value is a string and the other is a blob, the string is less.-
4033 ** If both are strings, compare using the collating functions.-
4034 */-
4035 if( combined_flags&MEM_Str ){
combined_flags&0x0002Description
TRUEevaluated 6124823 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 450 times by 1 test
Evaluated by:
  • Self test (438)
450-6124823
4036 if( (f1 & MEM_Str)==0 ){
(f1 & 0x0002)==0Description
TRUEevaluated 266 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 6124557 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)
  • ...
266-6124557
4037 return 1;
executed 266 times by 1 test: return 1;
Executed by:
  • Self test (438)
266
4038 }-
4039 if( (f2 & MEM_Str)==0 ){
(f2 & 0x0002)==0Description
TRUEevaluated 262 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 6124295 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)
  • ...
262-6124295
4040 return -1;
executed 262 times by 1 test: return -1;
Executed by:
  • Self test (438)
262
4041 }-
4042-
4043 assert( pMem1->enc==pMem2->enc || pMem1->db->mallocFailed );-
4044 assert( pMem1->enc==SQLITE_UTF8 || -
4045 pMem1->enc==SQLITE_UTF16LE || pMem1->enc==SQLITE_UTF16BE );-
4046-
4047 /* The collation sequence must be defined at this point, even if-
4048 ** the user deletes the collation sequence after the vdbe program is-
4049 ** compiled (this was not always the case).-
4050 */-
4051 assert( !pColl || pColl->xCmp );-
4052-
4053 if( pColl ){
pCollDescription
TRUEevaluated 6119593 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 4702 times by 1 test
Evaluated by:
  • Self test (438)
4702-6119593
4054 return vdbeCompareMemString(pMem1, pMem2, pColl, 0);
executed 6119593 times by 31 tests: return vdbeCompareMemString(pMem1, pMem2, pColl, 0);
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)
  • ...
6119593
4055 }-
4056 /* If a NULL pointer was passed as the collate function, fall through-
4057 ** to the blob case and use memcmp(). */-
4058 }
executed 4702 times by 1 test: end of block
Executed by:
  • Self test (438)
4702
4059 -
4060 /* Both values must be blobs. Compare using memcmp(). */-
4061 return sqlite3BlobCompare(pMem1, pMem2);
executed 5152 times by 1 test: return sqlite3BlobCompare(pMem1, pMem2);
Executed by:
  • Self test (438)
5152
4062}-
4063-
4064-
4065/*-
4066** The first argument passed to this function is a serial-type that-
4067** corresponds to an integer - all values between 1 and 9 inclusive -
4068** except 7. The second points to a buffer containing an integer value-
4069** serialized according to serial_type. This function deserializes-
4070** and returns the value.-
4071*/-
4072static i64 vdbeRecordDecodeInt(u32 serial_type, const u8 *aKey){-
4073 u32 y;-
4074 assert( CORRUPT_DB || (serial_type>=1 && serial_type<=9 && serial_type!=7) );-
4075 switch( serial_type ){-
4076 case 0:
never executed: case 0:
0
4077 case 1:
executed 1199168 times by 358 tests: case 1:
Executed by:
  • Self test (10)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • Self test (128)
  • ...
1199168
4078 testcase( aKey[0]&0x80 );-
4079 return ONE_BYTE_INT(aKey);
executed 1199168 times by 358 tests: return ((i8)(aKey)[0]);
Executed by:
  • Self test (10)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • Self test (128)
  • ...
1199168
4080 case 2:
executed 2604272 times by 2 tests: case 2:
Executed by:
  • Self test (438)
  • Self test (74)
2604272
4081 testcase( aKey[0]&0x80 );-
4082 return TWO_BYTE_INT(aKey);
executed 2604272 times by 2 tests: return (256*(i8)((aKey)[0])|(aKey)[1]);
Executed by:
  • Self test (438)
  • Self test (74)
2604272
4083 case 3:
executed 1386243 times by 1 test: case 3:
Executed by:
  • Self test (438)
1386243
4084 testcase( aKey[0]&0x80 );-
4085 return THREE_BYTE_INT(aKey);
executed 1386243 times by 1 test: return (65536*(i8)((aKey)[0])|((aKey)[1]<<8)|(aKey)[2]);
Executed by:
  • Self test (438)
1386243
4086 case 4: {
executed 4078125 times by 1 test: case 4:
Executed by:
  • Self test (438)
4078125
4087 testcase( aKey[0]&0x80 );-
4088 y = FOUR_BYTE_UINT(aKey);-
4089 return (i64)*(int*)&y;
executed 4078125 times by 1 test: return (i64)*(int*)&y;
Executed by:
  • Self test (438)
4078125
4090 }-
4091 case 5: {
executed 24172 times by 1 test: case 5:
Executed by:
  • Self test (438)
24172
4092 testcase( aKey[0]&0x80 );-
4093 return FOUR_BYTE_UINT(aKey+2) + (((i64)1)<<32)*TWO_BYTE_INT(aKey);
executed 24172 times by 1 test: return (((u32)(aKey+2)[0]<<24)|((aKey+2)[1]<<16)|((aKey+2)[2]<<8)|(aKey+2)[3]) + (((i64)1)<<32)*(256*(i8)((aKey)[0])|(aKey)[1]);
Executed by:
  • Self test (438)
24172
4094 }-
4095 case 6: {
executed 55668 times by 1 test: case 6:
Executed by:
  • Self test (438)
55668
4096 u64 x = FOUR_BYTE_UINT(aKey);-
4097 testcase( aKey[0]&0x80 );-
4098 x = (x<<32) | FOUR_BYTE_UINT(aKey+4);-
4099 return (i64)*(i64*)&x;
executed 55668 times by 1 test: return (i64)*(i64*)&x;
Executed by:
  • Self test (438)
55668
4100 }-
4101 }-
4102-
4103 return (serial_type - 8);
executed 225936 times by 26 tests: return (serial_type - 8);
Executed by:
  • Self test (10)
  • Self test (12)
  • Self test (14)
  • Self test (16)
  • Self test (18)
  • Self test (2)
  • Self test (20)
  • Self test (22)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
  • Self test (54)
  • Self test (6)
  • Self test (65)
  • Self test (66)
  • Self test (67)
  • Self test (68)
  • Self test (69)
  • Self test (70)
  • Self test (71)
  • Self test (74)
  • ...
225936
4104}-
4105-
4106/*-
4107** This function compares the two table rows or index records-
4108** specified by {nKey1, pKey1} and pPKey2. It returns a negative, zero-
4109** or positive integer if key1 is less than, equal to or -
4110** greater than key2. The {nKey1, pKey1} key must be a blob-
4111** created by the OP_MakeRecord opcode of the VDBE. The pPKey2-
4112** key must be a parsed key such as obtained from-
4113** sqlite3VdbeParseRecord.-
4114**-
4115** If argument bSkip is non-zero, it is assumed that the caller has already-
4116** determined that the first fields of the keys are equal.-
4117**-
4118** Key1 and Key2 do not have to contain the same number of fields. If all -
4119** fields that appear in both keys are equal, then pPKey2->default_rc is -
4120** returned.-
4121**-
4122** If database corruption is discovered, set pPKey2->errCode to -
4123** SQLITE_CORRUPT and return 0. If an OOM error is encountered, -
4124** pPKey2->errCode is set to SQLITE_NOMEM and, if it is not NULL, the-
4125** malloc-failed flag set on database handle (pPKey2->pKeyInfo->db).-
4126*/-
4127int sqlite3VdbeRecordCompareWithSkip(-
4128 int nKey1, const void *pKey1, /* Left key */-
4129 UnpackedRecord *pPKey2, /* Right key */-
4130 int bSkip /* If true, skip the first field */-
4131){-
4132 u32 d1; /* Offset into aKey[] of next data element */-
4133 int i; /* Index of next field to compare */-
4134 u32 szHdr1; /* Size of record header in bytes */-
4135 u32 idx1; /* Offset of first type in header */-
4136 int rc = 0; /* Return value */-
4137 Mem *pRhs = pPKey2->aMem; /* Next field of pPKey2 to compare */-
4138 KeyInfo *pKeyInfo;-
4139 const unsigned char *aKey1 = (const unsigned char *)pKey1;-
4140 Mem mem1;-
4141-
4142 /* If bSkip is true, then the caller has already determined that the first-
4143 ** two elements in the keys are equal. Fix the various stack variables so-
4144 ** that this routine begins comparing at the second field. */-
4145 if( bSkip ){
bSkipDescription
TRUEevaluated 6812383 times by 8 tests
Evaluated by:
  • Self test (2)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
FALSEevaluated 19734164 times by 360 tests
Evaluated by:
  • Self test (10)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • ...
6812383-19734164
4146 u32 s1;-
4147 idx1 = 1 + getVarint32(&aKey1[1], s1);
(*(&aKey1[1])<(u8)0x80)Description
TRUEevaluated 6739520 times by 6 tests
Evaluated by:
  • Self test (2)
  • Self test (3)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
FALSEevaluated 72863 times by 3 tests
Evaluated by:
  • Self test (32)
  • Self test (33)
  • Self test (438)
72863-6739520
4148 szHdr1 = aKey1[0];-
4149 d1 = szHdr1 + sqlite3VdbeSerialTypeLen(s1);-
4150 i = 1;-
4151 pRhs++;-
4152 }else{
executed 6812383 times by 8 tests: end of block
Executed by:
  • Self test (2)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
6812383
4153 idx1 = getVarint32(aKey1, szHdr1);
(*(aKey1)<(u8)0x80)Description
TRUEevaluated 19732449 times by 360 tests
Evaluated by:
  • Self test (10)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • ...
FALSEevaluated 1822 times by 1 test
Evaluated by:
  • Self test (438)
1822-19732449
4154 d1 = szHdr1;-
4155 if( d1>(unsigned)nKey1 ){
d1>(unsigned)nKey1Description
TRUEevaluated 3 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 19734260 times by 360 tests
Evaluated by:
  • Self test (10)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • ...
3-19734260
4156 pPKey2->errCode = (u8)SQLITE_CORRUPT_BKPT;-
4157 return 0; /* Corruption */
executed 3 times by 1 test: return 0;
Executed by:
  • Self test (438)
3
4158 }-
4159 i = 0;-
4160 }
executed 19734251 times by 360 tests: end of block
Executed by:
  • Self test (10)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • ...
19734251
4161-
4162 VVA_ONLY( mem1.szMalloc = 0; ) /* Only needed by assert() statements */-
4163 assert( pPKey2->pKeyInfo->nAllField>=pPKey2->nField -
4164 || CORRUPT_DB );-
4165 assert( pPKey2->pKeyInfo->aSortOrder!=0 );-
4166 assert( pPKey2->pKeyInfo->nKeyField>0 );-
4167 assert( idx1<=szHdr1 || CORRUPT_DB );-
4168 do{-
4169 u32 serial_type;-
4170-
4171 /* RHS is an integer */-
4172 if( pRhs->flags & MEM_Int ){
pRhs->flags & 0x0004Description
TRUEevaluated 9578888 times by 358 tests
Evaluated by:
  • Self test (10)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • Self test (128)
  • ...
FALSEevaluated 18088083 times by 364 tests
Evaluated by:
  • Self test (10)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • ...
9578888-18088083
4173 serial_type = aKey1[idx1];-
4174 testcase( serial_type==12 );-
4175 if( serial_type>=10 ){
serial_type>=10Description
TRUEevaluated 1778 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 9577110 times by 358 tests
Evaluated by:
  • Self test (10)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • Self test (128)
  • ...
1778-9577110
4176 rc = +1;-
4177 }else if( serial_type==0 ){
executed 1778 times by 1 test: end of block
Executed by:
  • Self test (438)
serial_type==0Description
TRUEevaluated 1802 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 9575308 times by 358 tests
Evaluated by:
  • Self test (10)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • Self test (128)
  • ...
1778-9575308
4178 rc = -1;-
4179 }else if( serial_type==7 ){
executed 1802 times by 1 test: end of block
Executed by:
  • Self test (438)
serial_type==7Description
TRUEevaluated 1724 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 9573584 times by 358 tests
Evaluated by:
  • Self test (10)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • Self test (128)
  • ...
1724-9573584
4180 sqlite3VdbeSerialGet(&aKey1[d1], serial_type, &mem1);-
4181 rc = -sqlite3IntFloatCompare(pRhs->u.i, mem1.u.r);-
4182 }else{
executed 1724 times by 1 test: end of block
Executed by:
  • Self test (438)
1724
4183 i64 lhs = vdbeRecordDecodeInt(serial_type, &aKey1[d1]);-
4184 i64 rhs = pRhs->u.i;-
4185 if( lhs<rhs ){
lhs<rhsDescription
TRUEevaluated 5755846 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 3817738 times by 358 tests
Evaluated by:
  • Self test (10)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • Self test (128)
  • ...
3817738-5755846
4186 rc = -1;-
4187 }else if( lhs>rhs ){
executed 5755846 times by 1 test: end of block
Executed by:
  • Self test (438)
lhs>rhsDescription
TRUEevaluated 2463183 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1354555 times by 358 tests
Evaluated by:
  • Self test (10)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • Self test (128)
  • ...
1354555-5755846
4188 rc = +1;-
4189 }
executed 2463183 times by 1 test: end of block
Executed by:
  • Self test (438)
2463183
4190 }
executed 9573584 times by 358 tests: end of block
Executed by:
  • Self test (10)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • Self test (128)
  • ...
9573584
4191 }-
4192-
4193 /* RHS is real */-
4194 else if( pRhs->flags & MEM_Real ){
pRhs->flags & 0x0008Description
TRUEevaluated 921186 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 17166885 times by 364 tests
Evaluated by:
  • Self test (10)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • ...
921186-17166885
4195 serial_type = aKey1[idx1];-
4196 if( serial_type>=10 ){
serial_type>=10Description
TRUEevaluated 677 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 920509 times by 1 test
Evaluated by:
  • Self test (438)
677-920509
4197 /* Serial types 12 or greater are strings and blobs (greater than-
4198 ** numbers). Types 10 and 11 are currently "reserved for future -
4199 ** use", so it doesn't really matter what the results of comparing-
4200 ** them to numberic values are. */-
4201 rc = +1;-
4202 }else if( serial_type==0 ){
executed 677 times by 1 test: end of block
Executed by:
  • Self test (438)
serial_type==0Description
TRUEevaluated 245 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 920264 times by 1 test
Evaluated by:
  • Self test (438)
245-920264
4203 rc = -1;-
4204 }else{
executed 245 times by 1 test: end of block
Executed by:
  • Self test (438)
245
4205 sqlite3VdbeSerialGet(&aKey1[d1], serial_type, &mem1);-
4206 if( serial_type==7 ){
serial_type==7Description
TRUEevaluated 918663 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1601 times by 1 test
Evaluated by:
  • Self test (438)
1601-918663
4207 if( mem1.u.r<pRhs->u.r ){
mem1.u.r<pRhs->u.rDescription
TRUEevaluated 354419 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 564244 times by 1 test
Evaluated by:
  • Self test (438)
354419-564244
4208 rc = -1;-
4209 }else if( mem1.u.r>pRhs->u.r ){
executed 354419 times by 1 test: end of block
Executed by:
  • Self test (438)
mem1.u.r>pRhs->u.rDescription
TRUEevaluated 234916 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 329328 times by 1 test
Evaluated by:
  • Self test (438)
234916-354419
4210 rc = +1;-
4211 }
executed 234916 times by 1 test: end of block
Executed by:
  • Self test (438)
234916
4212 }else{
executed 918663 times by 1 test: end of block
Executed by:
  • Self test (438)
918663
4213 rc = sqlite3IntFloatCompare(mem1.u.i, pRhs->u.r);-
4214 }
executed 1601 times by 1 test: end of block
Executed by:
  • Self test (438)
1601
4215 }-
4216 }-
4217-
4218 /* RHS is a string */-
4219 else if( pRhs->flags & MEM_Str ){
pRhs->flags & 0x0002Description
TRUEevaluated 584837 times by 5 tests
Evaluated by:
  • Self test (2)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (438)
FALSEevaluated 16582000 times by 360 tests
Evaluated by:
  • Self test (10)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • ...
584837-16582000
4220 getVarint32(&aKey1[idx1], serial_type);-
4221 testcase( serial_type==12 );-
4222 if( serial_type<12 ){
serial_type<12Description
TRUEevaluated 7244 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 577593 times by 5 tests
Evaluated by:
  • Self test (2)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (438)
7244-577593
4223 rc = -1;-
4224 }else if( !(serial_type & 0x01) ){
executed 7244 times by 1 test: end of block
Executed by:
  • Self test (438)
!(serial_type & 0x01)Description
TRUEevaluated 162 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 577431 times by 5 tests
Evaluated by:
  • Self test (2)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (438)
162-577431
4225 rc = +1;-
4226 }else{
executed 162 times by 1 test: end of block
Executed by:
  • Self test (438)
162
4227 mem1.n = (serial_type - 12) / 2;-
4228 testcase( (d1+mem1.n)==(unsigned)nKey1 );-
4229 testcase( (d1+mem1.n+1)==(unsigned)nKey1 );-
4230 if( (d1+mem1.n) > (unsigned)nKey1 ){
(d1+mem1.n) > (unsigned)nKey1Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 577430 times by 5 tests
Evaluated by:
  • Self test (2)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (438)
1-577430
4231 pPKey2->errCode = (u8)SQLITE_CORRUPT_BKPT;-
4232 return 0; /* Corruption */
executed 1 time by 1 test: return 0;
Executed by:
  • Self test (438)
1
4233 }else if( (pKeyInfo = pPKey2->pKeyInfo)->aColl[i] ){
(pKeyInfo = pP...nfo)->aColl[i]Description
TRUEevaluated 114042 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 463388 times by 5 tests
Evaluated by:
  • Self test (2)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (438)
114042-463388
4234 mem1.enc = pKeyInfo->enc;-
4235 mem1.db = pKeyInfo->db;-
4236 mem1.flags = MEM_Str;-
4237 mem1.z = (char*)&aKey1[d1];-
4238 rc = vdbeCompareMemString(-
4239 &mem1, pRhs, pKeyInfo->aColl[i], &pPKey2->errCode-
4240 );-
4241 }else{
executed 114042 times by 1 test: end of block
Executed by:
  • Self test (438)
114042
4242 int nCmp = MIN(mem1.n, pRhs->n);
(mem1.n)<(pRhs->n)Description
TRUEevaluated 24757 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 438631 times by 5 tests
Evaluated by:
  • Self test (2)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (438)
24757-438631
4243 rc = memcmp(&aKey1[d1], pRhs->z, nCmp);-
4244 if( rc==0 ) rc = mem1.n - pRhs->n;
executed 366365 times by 5 tests: rc = mem1.n - pRhs->n;
Executed by:
  • Self test (2)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (438)
rc==0Description
TRUEevaluated 366365 times by 5 tests
Evaluated by:
  • Self test (2)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (438)
FALSEevaluated 97023 times by 1 test
Evaluated by:
  • Self test (438)
97023-366365
4245 }
executed 463388 times by 5 tests: end of block
Executed by:
  • Self test (2)
  • Self test (3)
  • Self test (32)
  • Self test (33)
  • Self test (438)
463388
4246 }-
4247 }-
4248-
4249 /* RHS is a blob */-
4250 else if( pRhs->flags & MEM_Blob ){
pRhs->flags & 0x0010Description
TRUEevaluated 16524580 times by 360 tests
Evaluated by:
  • Self test (10)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • ...
FALSEevaluated 57406 times by 1 test
Evaluated by:
  • Self test (438)
57406-16524580
4251 assert( (pRhs->flags & MEM_Zero)==0 || pRhs->n==0 );-
4252 getVarint32(&aKey1[idx1], serial_type);-
4253 testcase( serial_type==12 );-
4254 if( serial_type<12 || (serial_type & 0x01) ){
serial_type<12Description
TRUEevaluated 508 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 16524007 times by 360 tests
Evaluated by:
  • Self test (10)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • ...
(serial_type & 0x01)Description
TRUEevaluated 6977 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 16517086 times by 360 tests
Evaluated by:
  • Self test (10)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • ...
508-16524007
4255 rc = -1;-
4256 }else{
executed 7485 times by 1 test: end of block
Executed by:
  • Self test (438)
7485
4257 int nStr = (serial_type - 12) / 2;-
4258 testcase( (d1+nStr)==(unsigned)nKey1 );-
4259 testcase( (d1+nStr+1)==(unsigned)nKey1 );-
4260 if( (d1+nStr) > (unsigned)nKey1 ){
(d1+nStr) > (unsigned)nKey1Description
TRUEnever evaluated
FALSEevaluated 16517135 times by 360 tests
Evaluated by:
  • Self test (10)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • ...
0-16517135
4261 pPKey2->errCode = (u8)SQLITE_CORRUPT_BKPT;-
4262 return 0; /* Corruption */
never executed: return 0;
0
4263 }else if( pRhs->flags & MEM_Zero ){
pRhs->flags & 0x4000Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 16517143 times by 360 tests
Evaluated by:
  • Self test (10)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • ...
2-16517143
4264 if( !isAllZero((const char*)&aKey1[d1],nStr) ){
!isAllZero((co...Key1[d1],nStr)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
0-2
4265 rc = 1;-
4266 }else{
never executed: end of block
0
4267 rc = nStr - pRhs->u.nZero;-
4268 }
executed 2 times by 1 test: end of block
Executed by:
  • Self test (438)
2
4269 }else{-
4270 int nCmp = MIN(nStr, pRhs->n);
(nStr)<(pRhs->n)Description
TRUEevaluated 4954 times by 222 tests
Evaluated by:
  • Self test (218)
  • Self test (219)
  • Self test (220)
  • Self test (221)
  • Self test (222)
  • Self test (223)
  • Self test (224)
  • Self test (225)
  • Self test (226)
  • Self test (227)
  • Self test (228)
  • Self test (229)
  • Self test (230)
  • Self test (231)
  • Self test (232)
  • Self test (233)
  • Self test (234)
  • Self test (235)
  • Self test (236)
  • Self test (237)
  • Self test (238)
  • Self test (239)
  • Self test (240)
  • Self test (241)
  • Self test (242)
  • ...
FALSEevaluated 16512231 times by 360 tests
Evaluated by:
  • Self test (10)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • ...
4954-16512231
4271 rc = memcmp(&aKey1[d1], pRhs->z, nCmp);-
4272 if( rc==0 ) rc = nStr - pRhs->n;
executed 733825 times by 351 tests: rc = nStr - pRhs->n;
Executed by:
  • Self test (10)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • Self test (128)
  • ...
rc==0Description
TRUEevaluated 733825 times by 351 tests
Evaluated by:
  • Self test (10)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • Self test (128)
  • ...
FALSEevaluated 15783400 times by 360 tests
Evaluated by:
  • Self test (10)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • ...
733825-15783400
4273 }
executed 16517223 times by 360 tests: end of block
Executed by:
  • Self test (10)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • ...
16517223
4274 }-
4275 }-
4276-
4277 /* RHS is null */-
4278 else{-
4279 serial_type = aKey1[idx1];-
4280 rc = (serial_type!=0);-
4281 }
executed 57406 times by 1 test: end of block
Executed by:
  • Self test (438)
57406
4282-
4283 if( rc!=0 ){
rc!=0Description
TRUEevaluated 24826069 times by 360 tests
Evaluated by:
  • Self test (10)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • ...
FALSEevaluated 2840986 times by 358 tests
Evaluated by:
  • Self test (10)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • Self test (128)
  • ...
2840986-24826069
4284 if( pPKey2->pKeyInfo->aSortOrder[i] ){
pPKey2->pKeyIn...>aSortOrder[i]Description
TRUEevaluated 101271 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 24724774 times by 360 tests
Evaluated by:
  • Self test (10)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • ...
101271-24724774
4285 rc = -rc;-
4286 }
executed 101271 times by 1 test: end of block
Executed by:
  • Self test (438)
101271
4287 assert( vdbeRecordCompareDebug(nKey1, pKey1, pPKey2, rc) );-
4288 assert( mem1.szMalloc==0 ); /* See comment below */-
4289 return rc;
executed 24826043 times by 360 tests: return rc;
Executed by:
  • Self test (10)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • ...
24826043
4290 }-
4291-
4292 i++;-
4293 if( i==pPKey2->nField ) break;
executed 1720691 times by 358 tests: break;
Executed by:
  • Self test (10)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • Self test (128)
  • ...
i==pPKey2->nFieldDescription
TRUEevaluated 1720691 times by 358 tests
Evaluated by:
  • Self test (10)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • Self test (128)
  • ...
FALSEevaluated 1120295 times by 356 tests
Evaluated by:
  • Self test (10)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • Self test (128)
  • ...
1120295-1720691
4294 pRhs++;-
4295 d1 += sqlite3VdbeSerialTypeLen(serial_type);-
4296 idx1 += sqlite3VarintLen(serial_type);-
4297 }while( idx1<(unsigned)szHdr1 && d1<=(unsigned)nKey1 );
executed 1120295 times by 356 tests: end of block
Executed by:
  • Self test (10)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • Self test (128)
  • ...
idx1<(unsigned)szHdr1Description
TRUEevaluated 1120295 times by 356 tests
Evaluated by:
  • Self test (10)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • Self test (128)
  • ...
FALSEnever evaluated
d1<=(unsigned)nKey1Description
TRUEevaluated 1120295 times by 356 tests
Evaluated by:
  • Self test (10)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • Self test (128)
  • ...
FALSEnever evaluated
0-1120295
4298-
4299 /* No memory allocation is ever used on mem1. Prove this using-
4300 ** the following assert(). If the assert() fails, it indicates a-
4301 ** memory leak and a need to call sqlite3VdbeMemRelease(&mem1). */-
4302 assert( mem1.szMalloc==0 );-
4303-
4304 /* rc==0 here means that one or both of the keys ran out of fields and-
4305 ** all the fields up to that point were equal. Return the default_rc-
4306 ** value. */-
4307 assert( CORRUPT_DB -
4308 || vdbeRecordCompareDebug(nKey1, pKey1, pPKey2, pPKey2->default_rc) -
4309 || pPKey2->pKeyInfo->db->mallocFailed-
4310 );-
4311 pPKey2->eqSeen = 1;-
4312 return pPKey2->default_rc;
executed 1720691 times by 358 tests: return pPKey2->default_rc;
Executed by:
  • Self test (10)
  • Self test (106)
  • Self test (107)
  • Self test (108)
  • Self test (109)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • Self test (128)
  • ...
1720691
4313}-
4314int sqlite3VdbeRecordCompare(-
4315 int nKey1, const void *pKey1, /* Left key */-
4316 UnpackedRecord *pPKey2 /* Right key */-
4317){-
4318 return sqlite3VdbeRecordCompareWithSkip(nKey1, pKey1, pPKey2, 0);
executed 18344926 times by 360 tests: return sqlite3VdbeRecordCompareWithSkip(nKey1, pKey1, pPKey2, 0);
Executed by:
  • Self test (10)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • Self test (127)
  • ...
18344926
4319}-
4320-
4321-
4322/*-
4323** This function is an optimized version of sqlite3VdbeRecordCompare() -
4324** that (a) the first field of pPKey2 is an integer, and (b) the -
4325** size-of-header varint at the start of (pKey1/nKey1) fits in a single-
4326** byte (i.e. is less than 128).-
4327**-
4328** To avoid concerns about buffer overreads, this routine is only used-
4329** on schemas where the maximum valid header size is 63 bytes or less.-
4330*/-
4331static int vdbeRecordCompareInt(-
4332 int nKey1, const void *pKey1, /* Left key */-
4333 UnpackedRecord *pPKey2 /* Right key */-
4334){-
4335 const u8 *aKey = &((const u8*)pKey1)[*(const u8*)pKey1 & 0x3F];-
4336 int serial_type = ((const u8*)pKey1)[1];-
4337 int res;-
4338 u32 y;-
4339 u64 x;-
4340 i64 v;-
4341 i64 lhs;-
4342-
4343 vdbeAssertFieldCountWithinLimits(nKey1, pKey1, pPKey2->pKeyInfo);-
4344 assert( (*(u8*)pKey1)<=0x3F || CORRUPT_DB );-
4345 switch( serial_type ){-
4346 case 1: { /* 1-byte signed integer */
executed 2028332 times by 7 tests: case 1:
Executed by:
  • Self test (2)
  • Self test (3)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
  • Self test (88)
2028332
4347 lhs = ONE_BYTE_INT(aKey);-
4348 testcase( lhs<0 );-
4349 break;
executed 2028332 times by 7 tests: break;
Executed by:
  • Self test (2)
  • Self test (3)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
  • Self test (88)
2028332
4350 }-
4351 case 2: { /* 2-byte signed integer */
executed 7687065 times by 1 test: case 2:
Executed by:
  • Self test (438)
7687065
4352 lhs = TWO_BYTE_INT(aKey);-
4353 testcase( lhs<0 );-
4354 break;
executed 7687065 times by 1 test: break;
Executed by:
  • Self test (438)
7687065
4355 }-
4356 case 3: { /* 3-byte signed integer */
executed 4396838 times by 1 test: case 3:
Executed by:
  • Self test (438)
4396838
4357 lhs = THREE_BYTE_INT(aKey);-
4358 testcase( lhs<0 );-
4359 break;
executed 4396838 times by 1 test: break;
Executed by:
  • Self test (438)
4396838
4360 }-
4361 case 4: { /* 4-byte signed integer */
executed 721562 times by 1 test: case 4:
Executed by:
  • Self test (438)
721562
4362 y = FOUR_BYTE_UINT(aKey);-
4363 lhs = (i64)*(int*)&y;-
4364 testcase( lhs<0 );-
4365 break;
executed 721562 times by 1 test: break;
Executed by:
  • Self test (438)
721562
4366 }-
4367 case 5: { /* 6-byte signed integer */
executed 848857 times by 1 test: case 5:
Executed by:
  • Self test (438)
848857
4368 lhs = FOUR_BYTE_UINT(aKey+2) + (((i64)1)<<32)*TWO_BYTE_INT(aKey);-
4369 testcase( lhs<0 );-
4370 break;
executed 848857 times by 1 test: break;
Executed by:
  • Self test (438)
848857
4371 }-
4372 case 6: { /* 8-byte signed integer */
executed 974 times by 1 test: case 6:
Executed by:
  • Self test (438)
974
4373 x = FOUR_BYTE_UINT(aKey);-
4374 x = (x<<32) | FOUR_BYTE_UINT(aKey+4);-
4375 lhs = *(i64*)&x;-
4376 testcase( lhs<0 );-
4377 break;
executed 974 times by 1 test: break;
Executed by:
  • Self test (438)
974
4378 }-
4379 case 8:
executed 61166 times by 1 test: case 8:
Executed by:
  • Self test (438)
61166
4380 lhs = 0;-
4381 break;
executed 61166 times by 1 test: break;
Executed by:
  • Self test (438)
61166
4382 case 9:
executed 421682 times by 6 tests: case 9:
Executed by:
  • Self test (2)
  • Self test (3)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
421682
4383 lhs = 1;-
4384 break;
executed 421682 times by 6 tests: break;
Executed by:
  • Self test (2)
  • Self test (3)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
421682
4385-
4386 /* This case could be removed without changing the results of running-
4387 ** this code. Including it causes gcc to generate a faster switch -
4388 ** statement (since the range of switch targets now starts at zero and-
4389 ** is contiguous) but does not cause any duplicate code to be generated-
4390 ** (as gcc is clever enough to combine the two like cases). Other -
4391 ** compilers might be similar. */ -
4392 case 0: case 7:
executed 1214 times by 1 test: case 0:
Executed by:
  • Self test (438)
executed 1007 times by 1 test: case 7:
Executed by:
  • Self test (438)
1007-1214
4393 return sqlite3VdbeRecordCompare(nKey1, pKey1, pPKey2);
executed 2221 times by 1 test: return sqlite3VdbeRecordCompare(nKey1, pKey1, pPKey2);
Executed by:
  • Self test (438)
2221
4394-
4395 default:
executed 1402 times by 1 test: default:
Executed by:
  • Self test (438)
1402
4396 return sqlite3VdbeRecordCompare(nKey1, pKey1, pPKey2);
executed 1402 times by 1 test: return sqlite3VdbeRecordCompare(nKey1, pKey1, pPKey2);
Executed by:
  • Self test (438)
1402
4397 }-
4398-
4399 v = pPKey2->aMem[0].u.i;-
4400 if( v>lhs ){
v>lhsDescription
TRUEevaluated 11782761 times by 7 tests
Evaluated by:
  • Self test (2)
  • Self test (3)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
  • Self test (88)
FALSEevaluated 4383715 times by 6 tests
Evaluated by:
  • Self test (2)
  • Self test (3)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
4383715-11782761
4401 res = pPKey2->r1;-
4402 }else if( v<lhs ){
executed 11782761 times by 7 tests: end of block
Executed by:
  • Self test (2)
  • Self test (3)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
  • Self test (88)
v<lhsDescription
TRUEevaluated 2447054 times by 6 tests
Evaluated by:
  • Self test (2)
  • Self test (3)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
FALSEevaluated 1936661 times by 6 tests
Evaluated by:
  • Self test (2)
  • Self test (3)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
1936661-11782761
4403 res = pPKey2->r2;-
4404 }else if( pPKey2->nField>1 ){
executed 2447054 times by 6 tests: end of block
Executed by:
  • Self test (2)
  • Self test (3)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
pPKey2->nField>1Description
TRUEevaluated 1591834 times by 6 tests
Evaluated by:
  • Self test (2)
  • Self test (3)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
FALSEevaluated 344827 times by 1 test
Evaluated by:
  • Self test (438)
344827-2447054
4405 /* The first fields of the two keys are equal. Compare the trailing -
4406 ** fields. */-
4407 res = sqlite3VdbeRecordCompareWithSkip(nKey1, pKey1, pPKey2, 1);-
4408 }else{
executed 1591834 times by 6 tests: end of block
Executed by:
  • Self test (2)
  • Self test (3)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
1591834
4409 /* The first fields of the two keys are equal and there are no trailing-
4410 ** fields. Return pPKey2->default_rc in this case. */-
4411 res = pPKey2->default_rc;-
4412 pPKey2->eqSeen = 1;-
4413 }
executed 344827 times by 1 test: end of block
Executed by:
  • Self test (438)
344827
4414-
4415 assert( vdbeRecordCompareDebug(nKey1, pKey1, pPKey2, res) );-
4416 return res;
executed 16166476 times by 7 tests: return res;
Executed by:
  • Self test (2)
  • Self test (3)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
  • Self test (88)
16166476
4417}-
4418-
4419/*-
4420** This function is an optimized version of sqlite3VdbeRecordCompare() -
4421** that (a) the first field of pPKey2 is a string, that (b) the first field-
4422** uses the collation sequence BINARY and (c) that the size-of-header varint -
4423** at the start of (pKey1/nKey1) fits in a single byte.-
4424*/-
4425static int vdbeRecordCompareString(-
4426 int nKey1, const void *pKey1, /* Left key */-
4427 UnpackedRecord *pPKey2 /* Right key */-
4428){-
4429 const u8 *aKey1 = (const u8*)pKey1;-
4430 int serial_type;-
4431 int res;-
4432-
4433 assert( pPKey2->aMem[0].flags & MEM_Str );-
4434 vdbeAssertFieldCountWithinLimits(nKey1, pKey1, pPKey2->pKeyInfo);-
4435 getVarint32(&aKey1[1], serial_type);-
4436 if( serial_type<12 ){
serial_type<12Description
TRUEevaluated 1513 times by 2 tests
Evaluated by:
  • Self test (438)
  • Self test (86)
FALSEevaluated 4984057 times by 3 tests
Evaluated by:
  • Self test (32)
  • Self test (33)
  • Self test (438)
1513-4984057
4437 res = pPKey2->r1; /* (pKey1/nKey1) is a number or a null */-
4438 }else if( !(serial_type & 0x01) ){
executed 1513 times by 2 tests: end of block
Executed by:
  • Self test (438)
  • Self test (86)
!(serial_type & 0x01)Description
TRUEevaluated 109 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 4983948 times by 3 tests
Evaluated by:
  • Self test (32)
  • Self test (33)
  • Self test (438)
109-4983948
4439 res = pPKey2->r2; /* (pKey1/nKey1) is a blob */-
4440 }else{
executed 109 times by 1 test: end of block
Executed by:
  • Self test (438)
109
4441 int nCmp;-
4442 int nStr;-
4443 int szHdr = aKey1[0];-
4444-
4445 nStr = (serial_type-12) / 2;-
4446 if( (szHdr + nStr) > nKey1 ){
(szHdr + nStr) > nKey1Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 4983946 times by 3 tests
Evaluated by:
  • Self test (32)
  • Self test (33)
  • Self test (438)
2-4983946
4447 pPKey2->errCode = (u8)SQLITE_CORRUPT_BKPT;-
4448 return 0; /* Corruption */
executed 2 times by 1 test: return 0;
Executed by:
  • Self test (438)
2
4449 }-
4450 nCmp = MIN( pPKey2->aMem[0].n, nStr );
(pPKey2->aMem[0].n)<(nStr)Description
TRUEevaluated 299097 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 4684849 times by 3 tests
Evaluated by:
  • Self test (32)
  • Self test (33)
  • Self test (438)
299097-4684849
4451 res = memcmp(&aKey1[szHdr], pPKey2->aMem[0].z, nCmp);-
4452-
4453 if( res==0 ){
res==0Description
TRUEevaluated 4210236 times by 3 tests
Evaluated by:
  • Self test (32)
  • Self test (33)
  • Self test (438)
FALSEevaluated 773710 times by 3 tests
Evaluated by:
  • Self test (32)
  • Self test (33)
  • Self test (438)
773710-4210236
4454 res = nStr - pPKey2->aMem[0].n;-
4455 if( res==0 ){
res==0Description
TRUEevaluated 4205081 times by 3 tests
Evaluated by:
  • Self test (32)
  • Self test (33)
  • Self test (438)
FALSEevaluated 5155 times by 1 test
Evaluated by:
  • Self test (438)
5155-4205081
4456 if( pPKey2->nField>1 ){
pPKey2->nField>1Description
TRUEevaluated 4190956 times by 3 tests
Evaluated by:
  • Self test (32)
  • Self test (33)
  • Self test (438)
FALSEevaluated 14125 times by 1 test
Evaluated by:
  • Self test (438)
14125-4190956
4457 res = sqlite3VdbeRecordCompareWithSkip(nKey1, pKey1, pPKey2, 1);-
4458 }else{
executed 4190956 times by 3 tests: end of block
Executed by:
  • Self test (32)
  • Self test (33)
  • Self test (438)
4190956
4459 res = pPKey2->default_rc;-
4460 pPKey2->eqSeen = 1;-
4461 }
executed 14125 times by 1 test: end of block
Executed by:
  • Self test (438)
14125
4462 }else if( res>0 ){
res>0Description
TRUEevaluated 3062 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 2093 times by 1 test
Evaluated by:
  • Self test (438)
2093-3062
4463 res = pPKey2->r2;-
4464 }else{
executed 3062 times by 1 test: end of block
Executed by:
  • Self test (438)
3062
4465 res = pPKey2->r1;-
4466 }
executed 2093 times by 1 test: end of block
Executed by:
  • Self test (438)
2093
4467 }else if( res>0 ){
res>0Description
TRUEevaluated 305900 times by 3 tests
Evaluated by:
  • Self test (32)
  • Self test (33)
  • Self test (438)
FALSEevaluated 467810 times by 3 tests
Evaluated by:
  • Self test (32)
  • Self test (33)
  • Self test (438)
305900-467810
4468 res = pPKey2->r2;-
4469 }else{
executed 305900 times by 3 tests: end of block
Executed by:
  • Self test (32)
  • Self test (33)
  • Self test (438)
305900
4470 res = pPKey2->r1;-
4471 }
executed 467810 times by 3 tests: end of block
Executed by:
  • Self test (32)
  • Self test (33)
  • Self test (438)
467810
4472 }-
4473-
4474 assert( vdbeRecordCompareDebug(nKey1, pKey1, pPKey2, res)-
4475 || CORRUPT_DB-
4476 || pPKey2->pKeyInfo->db->mallocFailed-
4477 );-
4478 return res;
executed 4985568 times by 4 tests: return res;
Executed by:
  • Self test (32)
  • Self test (33)
  • Self test (438)
  • Self test (86)
4985568
4479}-
4480-
4481/*-
4482** Return a pointer to an sqlite3VdbeRecordCompare() compatible function-
4483** suitable for comparing serialized records to the unpacked record passed-
4484** as the only argument.-
4485*/-
4486RecordCompare sqlite3VdbeFindCompare(UnpackedRecord *p){-
4487 /* varintRecordCompareInt() and varintRecordCompareString() both assume-
4488 ** that the size-of-header varint that occurs at the start of each record-
4489 ** fits in a single byte (i.e. is 127 or less). varintRecordCompareInt()-
4490 ** also assumes that it is safe to overread a buffer by at least the -
4491 ** maximum possible legal header size plus 8 bytes. Because there is-
4492 ** guaranteed to be at least 74 (but not 136) bytes of padding following each-
4493 ** buffer passed to varintRecordCompareInt() this makes it convenient to-
4494 ** limit the size of the header to 64 bytes in cases where the first field-
4495 ** is an integer.-
4496 **-
4497 ** The easiest way to enforce this limit is to consider only records with-
4498 ** 13 fields or less. If the first field is an integer, the maximum legal-
4499 ** header size is (12*5 + 1 + 1) bytes. */-
4500 if( p->pKeyInfo->nAllField<=13 ){
p->pKeyInfo->nAllField<=13Description
TRUEevaluated 2611848 times by 379 tests
Evaluated by:
  • Self test (10)
  • Self test (100)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • ...
FALSEevaluated 1843 times by 1 test
Evaluated by:
  • Self test (438)
1843-2611848
4501 int flags = p->aMem[0].flags;-
4502 if( p->pKeyInfo->aSortOrder[0] ){
p->pKeyInfo->aSortOrder[0]Description
TRUEevaluated 32266 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 2579582 times by 379 tests
Evaluated by:
  • Self test (10)
  • Self test (100)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • ...
32266-2579582
4503 p->r1 = 1;-
4504 p->r2 = -1;-
4505 }else{
executed 32266 times by 1 test: end of block
Executed by:
  • Self test (438)
32266
4506 p->r1 = -1;-
4507 p->r2 = 1;-
4508 }
executed 2579582 times by 379 tests: end of block
Executed by:
  • Self test (10)
  • Self test (100)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • ...
2579582
4509 if( (flags & MEM_Int) ){
(flags & 0x0004)Description
TRUEevaluated 1293512 times by 7 tests
Evaluated by:
  • Self test (2)
  • Self test (3)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
  • Self test (88)
FALSEevaluated 1318336 times by 373 tests
Evaluated by:
  • Self test (10)
  • Self test (100)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • ...
1293512-1318336
4510 return vdbeRecordCompareInt;
executed 1293512 times by 7 tests: return vdbeRecordCompareInt;
Executed by:
  • Self test (2)
  • Self test (3)
  • Self test (43)
  • Self test (438)
  • Self test (45)
  • Self test (53)
  • Self test (88)
1293512
4511 }-
4512 testcase( flags & MEM_Real );-
4513 testcase( flags & MEM_Null );-
4514 testcase( flags & MEM_Blob );-
4515 if( (flags & (MEM_Real|MEM_Null|MEM_Blob))==0 && p->pKeyInfo->aColl[0]==0 ){
(flags & (0x00...01|0x0010))==0Description
TRUEevaluated 442702 times by 4 tests
Evaluated by:
  • Self test (32)
  • Self test (33)
  • Self test (438)
  • Self test (86)
FALSEevaluated 875634 times by 370 tests
Evaluated by:
  • Self test (10)
  • Self test (100)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • ...
p->pKeyInfo->aColl[0]==0Description
TRUEevaluated 434994 times by 4 tests
Evaluated by:
  • Self test (32)
  • Self test (33)
  • Self test (438)
  • Self test (86)
FALSEevaluated 7708 times by 1 test
Evaluated by:
  • Self test (438)
7708-875634
4516 assert( flags & MEM_Str );-
4517 return vdbeRecordCompareString;
executed 434994 times by 4 tests: return vdbeRecordCompareString;
Executed by:
  • Self test (32)
  • Self test (33)
  • Self test (438)
  • Self test (86)
434994
4518 }-
4519 }
executed 883342 times by 370 tests: end of block
Executed by:
  • Self test (10)
  • Self test (100)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • ...
883342
4520-
4521 return sqlite3VdbeRecordCompare;
executed 885185 times by 370 tests: return sqlite3VdbeRecordCompare;
Executed by:
  • Self test (10)
  • Self test (100)
  • 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)
  • Self test (123)
  • Self test (124)
  • Self test (125)
  • Self test (126)
  • ...
885185
4522}-
4523-
4524/*-
4525** pCur points at an index entry created using the OP_MakeRecord opcode.-
4526** Read the rowid (the last field in the record) and store it in *rowid.-
4527** Return SQLITE_OK if everything works, or an error code otherwise.-
4528**-
4529** pCur might be pointing to text obtained from a corrupt database file.-
4530** So the content cannot be trusted. Do appropriate checks on the content.-
4531*/-
4532int sqlite3VdbeIdxRowid(sqlite3 *db, BtCursor *pCur, i64 *rowid){-
4533 i64 nCellKey = 0;-
4534 int rc;-
4535 u32 szHdr; /* Size of the header */-
4536 u32 typeRowid; /* Serial type of the rowid */-
4537 u32 lenRowid; /* Size of the rowid */-
4538 Mem m, v;-
4539-
4540 /* Get the size of the index entry. Only indices entries of less-
4541 ** than 2GiB are support - anything large must be database corruption.-
4542 ** Any corruption is detected in sqlite3BtreeParseCellPtr(), though, so-
4543 ** this code can safely assume that nCellKey is 32-bits -
4544 */-
4545 assert( sqlite3BtreeCursorIsValid(pCur) );-
4546 nCellKey = sqlite3BtreePayloadSize(pCur);-
4547 assert( (nCellKey & SQLITE_MAX_U32)==(u64)nCellKey );-
4548-
4549 /* Read in the complete content of the index entry */-
4550 sqlite3VdbeMemInit(&m, db, 0);-
4551 rc = sqlite3VdbeMemFromBtree(pCur, 0, (u32)nCellKey, &m);-
4552 if( rc ){
rcDescription
TRUEnever evaluated
FALSEevaluated 1773778 times by 1 test
Evaluated by:
  • Self test (438)
0-1773778
4553 return rc;
never executed: return rc;
0
4554 }-
4555-
4556 /* The index entry must begin with a header size */-
4557 (void)getVarint32((u8*)m.z, szHdr);-
4558 testcase( szHdr==3 );-
4559 testcase( szHdr==m.n );-
4560 if( unlikely(szHdr<3 || (int)szHdr>m.n) ){
szHdr<3Description
TRUEnever evaluated
FALSEevaluated 1773778 times by 1 test
Evaluated by:
  • Self test (438)
(int)szHdr>m.nDescription
TRUEnever evaluated
FALSEevaluated 1773778 times by 1 test
Evaluated by:
  • Self test (438)
0-1773778
4561 goto idx_rowid_corruption;
never executed: goto idx_rowid_corruption;
0
4562 }-
4563-
4564 /* The last field of the index should be an integer - the ROWID.-
4565 ** Verify that the last entry really is an integer. */-
4566 (void)getVarint32((u8*)&m.z[szHdr-1], typeRowid);-
4567 testcase( typeRowid==1 );-
4568 testcase( typeRowid==2 );-
4569 testcase( typeRowid==3 );-
4570 testcase( typeRowid==4 );-
4571 testcase( typeRowid==5 );-
4572 testcase( typeRowid==6 );-
4573 testcase( typeRowid==8 );-
4574 testcase( typeRowid==9 );-
4575 if( unlikely(typeRowid<1 || typeRowid>9 || typeRowid==7) ){
typeRowid<1Description
TRUEnever evaluated
FALSEevaluated 1773778 times by 1 test
Evaluated by:
  • Self test (438)
typeRowid>9Description
TRUEnever evaluated
FALSEevaluated 1773778 times by 1 test
Evaluated by:
  • Self test (438)
typeRowid==7Description
TRUEnever evaluated
FALSEevaluated 1773778 times by 1 test
Evaluated by:
  • Self test (438)
0-1773778
4576 goto idx_rowid_corruption;
never executed: goto idx_rowid_corruption;
0
4577 }-
4578 lenRowid = sqlite3SmallTypeSizes[typeRowid];-
4579 testcase( (u32)m.n==szHdr+lenRowid );-
4580 if( unlikely((u32)m.n<szHdr+lenRowid) ){
((u32)m.n<szHdr+lenRowid)Description
TRUEnever evaluated
FALSEevaluated 1773778 times by 1 test
Evaluated by:
  • Self test (438)
0-1773778
4581 goto idx_rowid_corruption;
never executed: goto idx_rowid_corruption;
0
4582 }-
4583-
4584 /* Fetch the integer off the end of the index record */-
4585 sqlite3VdbeSerialGet((u8*)&m.z[m.n-lenRowid], typeRowid, &v);-
4586 *rowid = v.u.i;-
4587 sqlite3VdbeMemRelease(&m);-
4588 return SQLITE_OK;
executed 1773778 times by 1 test: return 0;
Executed by:
  • Self test (438)
1773778
4589-
4590 /* Jump here if database corruption is detected after m has been-
4591 ** allocated. Free the m object and return SQLITE_CORRUPT. */-
4592idx_rowid_corruption:-
4593 testcase( m.szMalloc!=0 );-
4594 sqlite3VdbeMemRelease(&m);-
4595 return SQLITE_CORRUPT_BKPT;
never executed: return sqlite3CorruptError(4595);
0
4596}-
4597-
4598/*-
4599** Compare the key of the index entry that cursor pC is pointing to against-
4600** the key string in pUnpacked. Write into *pRes a number-
4601** that is negative, zero, or positive if pC is less than, equal to,-
4602** or greater than pUnpacked. Return SQLITE_OK on success.-
4603**-
4604** pUnpacked is either created without a rowid or is truncated so that it-
4605** omits the rowid at the end. The rowid at the end of the index entry-
4606** is ignored as well. Hence, this routine only compares the prefixes -
4607** of the keys prior to the final rowid, not the entire key.-
4608*/-
4609int sqlite3VdbeIdxKeyCompare(-
4610 sqlite3 *db, /* Database connection */-
4611 VdbeCursor *pC, /* The cursor to compare against */-
4612 UnpackedRecord *pUnpacked, /* Unpacked version of key */-
4613 int *res /* Write the comparison result here */-
4614){-
4615 i64 nCellKey = 0;-
4616 int rc;-
4617 BtCursor *pCur;-
4618 Mem m;-
4619-
4620 assert( pC->eCurType==CURTYPE_BTREE );-
4621 pCur = pC->uc.pCursor;-
4622 assert( sqlite3BtreeCursorIsValid(pCur) );-
4623 nCellKey = sqlite3BtreePayloadSize(pCur);-
4624 /* nCellKey will always be between 0 and 0xffffffff because of the way-
4625 ** that btreeParseCellPtr() and sqlite3GetVarint32() are implemented */-
4626 if( nCellKey<=0 || nCellKey>0x7fffffff ){
nCellKey<=0Description
TRUEnever evaluated
FALSEevaluated 1389390 times by 8 tests
Evaluated by:
  • Self test (438)
  • Self test (65)
  • Self test (66)
  • Self test (67)
  • Self test (68)
  • Self test (69)
  • Self test (70)
  • Self test (71)
nCellKey>0x7fffffffDescription
TRUEnever evaluated
FALSEevaluated 1389390 times by 8 tests
Evaluated by:
  • Self test (438)
  • Self test (65)
  • Self test (66)
  • Self test (67)
  • Self test (68)
  • Self test (69)
  • Self test (70)
  • Self test (71)
0-1389390
4627 *res = 0;-
4628 return SQLITE_CORRUPT_BKPT;
never executed: return sqlite3CorruptError(4628);
0
4629 }-
4630 sqlite3VdbeMemInit(&m, db, 0);-
4631 rc = sqlite3VdbeMemFromBtree(pCur, 0, (u32)nCellKey, &m);-
4632 if( rc ){
rcDescription
TRUEnever evaluated
FALSEevaluated 1389390 times by 8 tests
Evaluated by:
  • Self test (438)
  • Self test (65)
  • Self test (66)
  • Self test (67)
  • Self test (68)
  • Self test (69)
  • Self test (70)
  • Self test (71)
0-1389390
4633 return rc;
never executed: return rc;
0
4634 }-
4635 *res = sqlite3VdbeRecordCompareWithSkip(m.n, m.z, pUnpacked, 0);-
4636 sqlite3VdbeMemRelease(&m);-
4637 return SQLITE_OK;
executed 1389390 times by 8 tests: return 0;
Executed by:
  • Self test (438)
  • Self test (65)
  • Self test (66)
  • Self test (67)
  • Self test (68)
  • Self test (69)
  • Self test (70)
  • Self test (71)
1389390
4638}-
4639-
4640/*-
4641** This routine sets the value to be returned by subsequent calls to-
4642** sqlite3_changes() on the database handle 'db'. -
4643*/-
4644void sqlite3VdbeSetChanges(sqlite3 *db, int nChange){-
4645 assert( sqlite3_mutex_held(db->mutex) );-
4646 db->nChange = nChange;-
4647 db->nTotalChange += nChange;-
4648}
executed 789399 times by 62 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 (11)
  • Self test (12)
  • Self test (14)
  • Self test (15)
  • Self test (16)
  • Self test (18)
  • Self test (19)
  • Self test (2)
  • Self test (20)
  • Self test (22)
  • Self test (23)
  • Self test (3)
  • Self test (31)
  • Self test (32)
  • Self test (33)
  • Self test (34)
  • Self test (35)
  • Self test (38)
  • Self test (39)
  • ...
789399
4649-
4650/*-
4651** Set a flag in the vdbe to update the change counter when it is finalised-
4652** or reset.-
4653*/-
4654void sqlite3VdbeCountChanges(Vdbe *v){-
4655 v->changeCntOn = 1;-
4656}
executed 77336 times by 397 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 (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)
  • ...
77336
4657-
4658/*-
4659** Mark every prepared statement associated with a database connection-
4660** as expired.-
4661**-
4662** An expired statement means that recompilation of the statement is-
4663** recommend. Statements expire when things happen that make their-
4664** programs obsolete. Removing user-defined functions or collating-
4665** sequences, or changing an authorization function are the types of-
4666** things that make prepared statements obsolete.-
4667**-
4668** If iCode is 1, then expiration is advisory. The statement should-
4669** be reprepared before being restarted, but if it is already running-
4670** it is allowed to run to completion.-
4671**-
4672** Internally, this function just sets the Vdbe.expired flag on all-
4673** prepared statements. The flag is set to 1 for an immediate expiration-
4674** and set to 2 for an advisory expiration.-
4675*/-
4676void sqlite3ExpirePreparedStatements(sqlite3 *db, int iCode){-
4677 Vdbe *p;-
4678 for(p = db->pVdbe; p; p=p->pNext){
pDescription
TRUEevaluated 52192 times by 10 tests
Evaluated by:
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (42)
  • Self test (438)
  • Self test (44)
  • Self test (46)
  • Self test (47)
FALSEevaluated 7666 times by 11 tests
Evaluated by:
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (42)
  • Self test (438)
  • Self test (44)
  • Self test (46)
  • Self test (47)
  • Self test (61)
7666-52192
4679 p->expired = iCode+1;-
4680 }
executed 52192 times by 10 tests: end of block
Executed by:
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (42)
  • Self test (438)
  • Self test (44)
  • Self test (46)
  • Self test (47)
52192
4681}
executed 7666 times by 11 tests: end of block
Executed by:
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (42)
  • Self test (438)
  • Self test (44)
  • Self test (46)
  • Self test (47)
  • Self test (61)
7666
4682-
4683/*-
4684** Return the database associated with the Vdbe.-
4685*/-
4686sqlite3 *sqlite3VdbeDb(Vdbe *v){-
4687 return v->db;
executed 1206910 times by 435 tests: return v->db;
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)
  • ...
1206910
4688}-
4689-
4690/*-
4691** Return the SQLITE_PREPARE flags for a Vdbe.-
4692*/-
4693u8 sqlite3VdbePrepareFlags(Vdbe *v){-
4694 return v->prepFlags;
executed 23673 times by 11 tests: return v->prepFlags;
Executed by:
  • Self test (24)
  • Self test (26)
  • Self test (27)
  • Self test (28)
  • Self test (29)
  • Self test (30)
  • Self test (34)
  • Self test (438)
  • Self test (47)
  • Self test (53)
  • Self test (84)
23673
4695}-
4696-
4697/*-
4698** Return a pointer to an sqlite3_value structure containing the value bound-
4699** parameter iVar of VM v. Except, if the value is an SQL NULL, return -
4700** 0 instead. Unless it is NULL, apply affinity aff (one of the SQLITE_AFF_*-
4701** constants) to the value before returning it.-
4702**-
4703** The returned value must be freed by the caller using sqlite3ValueFree().-
4704*/-
4705sqlite3_value *sqlite3VdbeGetBoundValue(Vdbe *v, int iVar, u8 aff){-
4706 assert( iVar>0 );-
4707 if( v ){
vDescription
TRUEevaluated 42 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 21 times by 1 test
Evaluated by:
  • Self test (438)
21-42
4708 Mem *pMem = &v->aVar[iVar-1];-
4709 assert( (v->db->flags & SQLITE_EnableQPSG)==0 );-
4710 if( 0==(pMem->flags & MEM_Null) ){
0==(pMem->flags & 0x0001)Description
TRUEevaluated 41 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 1 time by 1 test
Evaluated by:
  • Self test (438)
1-41
4711 sqlite3_value *pRet = sqlite3ValueNew(v->db);-
4712 if( pRet ){
pRetDescription
TRUEevaluated 41 times by 1 test
Evaluated by:
  • Self test (438)
FALSEnever evaluated
0-41
4713 sqlite3VdbeMemCopy((Mem *)pRet, pMem);-
4714 sqlite3ValueApplyAffinity(pRet, aff, SQLITE_UTF8);-
4715 }
executed 41 times by 1 test: end of block
Executed by:
  • Self test (438)
41
4716 return pRet;
executed 41 times by 1 test: return pRet;
Executed by:
  • Self test (438)
41
4717 }-
4718 }
executed 1 time by 1 test: end of block
Executed by:
  • Self test (438)
1
4719 return 0;
executed 22 times by 1 test: return 0;
Executed by:
  • Self test (438)
22
4720}-
4721-
4722/*-
4723** Configure SQL variable iVar so that binding a new value to it signals-
4724** to sqlite3_reoptimize() that re-preparing the statement may result-
4725** in a better query plan.-
4726*/-
4727void sqlite3VdbeSetVarmask(Vdbe *v, int iVar){-
4728 assert( iVar>0 );-
4729 assert( (v->db->flags & SQLITE_EnableQPSG)==0 );-
4730 if( iVar>=32 ){
iVar>=32Description
TRUEnever evaluated
FALSEevaluated 67 times by 1 test
Evaluated by:
  • Self test (438)
0-67
4731 v->expmask |= 0x80000000;-
4732 }else{
never executed: end of block
0
4733 v->expmask |= ((u32)1 << (iVar-1));-
4734 }
executed 67 times by 1 test: end of block
Executed by:
  • Self test (438)
67
4735}-
4736-
4737/*-
4738** Cause a function to throw an error if it was call from OP_PureFunc-
4739** rather than OP_Function.-
4740**-
4741** OP_PureFunc means that the function must be deterministic, and should-
4742** throw an error if it is given inputs that would make it non-deterministic.-
4743** This routine is invoked by date/time functions that use non-deterministic-
4744** features such as 'now'.-
4745*/-
4746int sqlite3NotPureFunc(sqlite3_context *pCtx){-
4747#ifdef SQLITE_ENABLE_STAT3_OR_STAT4-
4748 if( pCtx->pVdbe==0 ) return 1;-
4749#endif-
4750 if( pCtx->pVdbe->aOp[pCtx->iOp].opcode==OP_PureFunc ){
pCtx->pVdbe->a...Op].opcode==64Description
TRUEevaluated 8 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 56 times by 1 test
Evaluated by:
  • Self test (438)
8-56
4751 sqlite3_result_error(pCtx, -
4752 "non-deterministic function in index expression or CHECK constraint",-
4753 -1);-
4754 return 0;
executed 8 times by 1 test: return 0;
Executed by:
  • Self test (438)
8
4755 }-
4756 return 1;
executed 56 times by 1 test: return 1;
Executed by:
  • Self test (438)
56
4757}-
4758-
4759#ifndef SQLITE_OMIT_VIRTUALTABLE-
4760/*-
4761** Transfer error message text from an sqlite3_vtab.zErrMsg (text stored-
4762** in memory obtained from sqlite3_malloc) into a Vdbe.zErrMsg (text stored-
4763** in memory obtained from sqlite3DbMalloc).-
4764*/-
4765void sqlite3VtabImportErrmsg(Vdbe *p, sqlite3_vtab *pVtab){-
4766 if( pVtab->zErrMsg ){
pVtab->zErrMsgDescription
TRUEevaluated 54 times by 1 test
Evaluated by:
  • Self test (438)
FALSEevaluated 3002475 times by 1 test
Evaluated by:
  • Self test (438)
54-3002475
4767 sqlite3 *db = p->db;-
4768 sqlite3DbFree(db, p->zErrMsg);-
4769 p->zErrMsg = sqlite3DbStrDup(db, pVtab->zErrMsg);-
4770 sqlite3_free(pVtab->zErrMsg);-
4771 pVtab->zErrMsg = 0;-
4772 }
executed 54 times by 1 test: end of block
Executed by:
  • Self test (438)
54
4773}
executed 3002529 times by 1 test: end of block
Executed by:
  • Self test (438)
3002529
4774#endif /* SQLITE_OMIT_VIRTUALTABLE */-
4775-
4776#ifdef SQLITE_ENABLE_PREUPDATE_HOOK-
4777-
4778/*-
4779** If the second argument is not NULL, release any allocations associated -
4780** with the memory cells in the p->aMem[] array. Also free the UnpackedRecord-
4781** structure itself, using sqlite3DbFree().-
4782**-
4783** This function is used to free UnpackedRecord structures allocated by-
4784** the vdbeUnpackRecord() function found in vdbeapi.c.-
4785*/-
4786static void vdbeFreeUnpacked(sqlite3 *db, int nField, UnpackedRecord *p){-
4787 if( p ){-
4788 int i;-
4789 for(i=0; i<nField; i++){-
4790 Mem *pMem = &p->aMem[i];-
4791 if( pMem->zMalloc ) sqlite3VdbeMemRelease(pMem);-
4792 }-
4793 sqlite3DbFreeNN(db, p);-
4794 }-
4795}-
4796#endif /* SQLITE_ENABLE_PREUPDATE_HOOK */-
4797-
4798#ifdef SQLITE_ENABLE_PREUPDATE_HOOK-
4799/*-
4800** Invoke the pre-update hook. If this is an UPDATE or DELETE pre-update call,-
4801** then cursor passed as the second argument should point to the row about-
4802** to be update or deleted. If the application calls sqlite3_preupdate_old(),-
4803** the required value will be read from the row the cursor points to.-
4804*/-
4805void sqlite3VdbePreUpdateHook(-
4806 Vdbe *v, /* Vdbe pre-update hook is invoked by */-
4807 VdbeCursor *pCsr, /* Cursor to grab old.* values from */-
4808 int op, /* SQLITE_INSERT, UPDATE or DELETE */-
4809 const char *zDb, /* Database name */-
4810 Table *pTab, /* Modified table */-
4811 i64 iKey1, /* Initial key value */-
4812 int iReg /* Register for new.* record */-
4813){-
4814 sqlite3 *db = v->db;-
4815 i64 iKey2;-
4816 PreUpdate preupdate;-
4817 const char *zTbl = pTab->zName;-
4818 static const u8 fakeSortOrder = 0;-
4819-
4820 assert( db->pPreUpdate==0 );-
4821 memset(&preupdate, 0, sizeof(PreUpdate));-
4822 if( HasRowid(pTab)==0 ){-
4823 iKey1 = iKey2 = 0;-
4824 preupdate.pPk = sqlite3PrimaryKeyIndex(pTab);-
4825 }else{-
4826 if( op==SQLITE_UPDATE ){-
4827 iKey2 = v->aMem[iReg].u.i;-
4828 }else{-
4829 iKey2 = iKey1;-
4830 }-
4831 }-
4832-
4833 assert( pCsr->nField==pTab->nCol -
4834 || (pCsr->nField==pTab->nCol+1 && op==SQLITE_DELETE && iReg==-1)-
4835 );-
4836-
4837 preupdate.v = v;-
4838 preupdate.pCsr = pCsr;-
4839 preupdate.op = op;-
4840 preupdate.iNewReg = iReg;-
4841 preupdate.keyinfo.db = db;-
4842 preupdate.keyinfo.enc = ENC(db);-
4843 preupdate.keyinfo.nKeyField = pTab->nCol;-
4844 preupdate.keyinfo.aSortOrder = (u8*)&fakeSortOrder;-
4845 preupdate.iKey1 = iKey1;-
4846 preupdate.iKey2 = iKey2;-
4847 preupdate.pTab = pTab;-
4848-
4849 db->pPreUpdate = &preupdate;-
4850 db->xPreUpdateCallback(db->pPreUpdateArg, db, op, zDb, zTbl, iKey1, iKey2);-
4851 db->pPreUpdate = 0;-
4852 sqlite3DbFree(db, preupdate.aRecord);-
4853 vdbeFreeUnpacked(db, preupdate.keyinfo.nKeyField+1, preupdate.pUnpacked);-
4854 vdbeFreeUnpacked(db, preupdate.keyinfo.nKeyField+1, preupdate.pNewUnpacked);-
4855 if( preupdate.aNew ){-
4856 int i;-
4857 for(i=0; i<pCsr->nField; i++){-
4858 sqlite3VdbeMemRelease(&preupdate.aNew[i]);-
4859 }-
4860 sqlite3DbFreeNN(db, preupdate.aNew);-
4861 }-
4862}-
4863#endif /* SQLITE_ENABLE_PREUPDATE_HOOK */-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2