xref: /sqlite-3.40.0/src/vdbeapi.c (revision 9bccde3d)
1 /*
2 ** 2004 May 26
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 **
13 ** This file contains code use to implement APIs that are part of the
14 ** VDBE.
15 */
16 #include "sqliteInt.h"
17 #include "vdbeInt.h"
18 
19 #ifndef SQLITE_OMIT_DEPRECATED
20 /*
21 ** Return TRUE (non-zero) of the statement supplied as an argument needs
22 ** to be recompiled.  A statement needs to be recompiled whenever the
23 ** execution environment changes in a way that would alter the program
24 ** that sqlite3_prepare() generates.  For example, if new functions or
25 ** collating sequences are registered or if an authorizer function is
26 ** added or changed.
27 */
28 int sqlite3_expired(sqlite3_stmt *pStmt){
29   Vdbe *p = (Vdbe*)pStmt;
30   return p==0 || p->expired;
31 }
32 #endif
33 
34 /*
35 ** Check on a Vdbe to make sure it has not been finalized.  Log
36 ** an error and return true if it has been finalized (or is otherwise
37 ** invalid).  Return false if it is ok.
38 */
39 static int vdbeSafety(Vdbe *p){
40   if( p->db==0 ){
41     sqlite3_log(SQLITE_MISUSE, "API called with finalized prepared statement");
42     return 1;
43   }else{
44     return 0;
45   }
46 }
47 static int vdbeSafetyNotNull(Vdbe *p){
48   if( p==0 ){
49     sqlite3_log(SQLITE_MISUSE, "API called with NULL prepared statement");
50     return 1;
51   }else{
52     return vdbeSafety(p);
53   }
54 }
55 
56 #ifndef SQLITE_OMIT_TRACE
57 /*
58 ** Invoke the profile callback.  This routine is only called if we already
59 ** know that the profile callback is defined and needs to be invoked.
60 */
61 static SQLITE_NOINLINE void invokeProfileCallback(sqlite3 *db, Vdbe *p){
62   sqlite3_int64 iNow;
63   assert( p->startTime>0 );
64   assert( db->xProfile!=0 );
65   assert( db->init.busy==0 );
66   assert( p->zSql!=0 );
67   sqlite3OsCurrentTimeInt64(db->pVfs, &iNow);
68   db->xProfile(db->pProfileArg, p->zSql, (iNow - p->startTime)*1000000);
69   p->startTime = 0;
70 }
71 /*
72 ** The checkProfileCallback(DB,P) macro checks to see if a profile callback
73 ** is needed, and it invokes the callback if it is needed.
74 */
75 # define checkProfileCallback(DB,P) \
76    if( ((P)->startTime)>0 ){ invokeProfileCallback(DB,P); }
77 #else
78 # define checkProfileCallback(DB,P)  /*no-op*/
79 #endif
80 
81 /*
82 ** The following routine destroys a virtual machine that is created by
83 ** the sqlite3_compile() routine. The integer returned is an SQLITE_
84 ** success/failure code that describes the result of executing the virtual
85 ** machine.
86 **
87 ** This routine sets the error code and string returned by
88 ** sqlite3_errcode(), sqlite3_errmsg() and sqlite3_errmsg16().
89 */
90 int sqlite3_finalize(sqlite3_stmt *pStmt){
91   int rc;
92   if( pStmt==0 ){
93     /* IMPLEMENTATION-OF: R-57228-12904 Invoking sqlite3_finalize() on a NULL
94     ** pointer is a harmless no-op. */
95     rc = SQLITE_OK;
96   }else{
97     Vdbe *v = (Vdbe*)pStmt;
98     sqlite3 *db = v->db;
99     if( vdbeSafety(v) ) return SQLITE_MISUSE_BKPT;
100     sqlite3_mutex_enter(db->mutex);
101     checkProfileCallback(db, v);
102     rc = sqlite3VdbeFinalize(v);
103     rc = sqlite3ApiExit(db, rc);
104     sqlite3LeaveMutexAndCloseZombie(db);
105   }
106   return rc;
107 }
108 
109 /*
110 ** Terminate the current execution of an SQL statement and reset it
111 ** back to its starting state so that it can be reused. A success code from
112 ** the prior execution is returned.
113 **
114 ** This routine sets the error code and string returned by
115 ** sqlite3_errcode(), sqlite3_errmsg() and sqlite3_errmsg16().
116 */
117 int sqlite3_reset(sqlite3_stmt *pStmt){
118   int rc;
119   if( pStmt==0 ){
120     rc = SQLITE_OK;
121   }else{
122     Vdbe *v = (Vdbe*)pStmt;
123     sqlite3 *db = v->db;
124     sqlite3_mutex_enter(db->mutex);
125     checkProfileCallback(db, v);
126     rc = sqlite3VdbeReset(v);
127     sqlite3VdbeRewind(v);
128     assert( (rc & (db->errMask))==rc );
129     rc = sqlite3ApiExit(db, rc);
130     sqlite3_mutex_leave(db->mutex);
131   }
132   return rc;
133 }
134 
135 /*
136 ** Set all the parameters in the compiled SQL statement to NULL.
137 */
138 int sqlite3_clear_bindings(sqlite3_stmt *pStmt){
139   int i;
140   int rc = SQLITE_OK;
141   Vdbe *p = (Vdbe*)pStmt;
142 #if SQLITE_THREADSAFE
143   sqlite3_mutex *mutex = ((Vdbe*)pStmt)->db->mutex;
144 #endif
145   sqlite3_mutex_enter(mutex);
146   for(i=0; i<p->nVar; i++){
147     sqlite3VdbeMemRelease(&p->aVar[i]);
148     p->aVar[i].flags = MEM_Null;
149   }
150   if( p->isPrepareV2 && p->expmask ){
151     p->expired = 1;
152   }
153   sqlite3_mutex_leave(mutex);
154   return rc;
155 }
156 
157 
158 /**************************** sqlite3_value_  *******************************
159 ** The following routines extract information from a Mem or sqlite3_value
160 ** structure.
161 */
162 const void *sqlite3_value_blob(sqlite3_value *pVal){
163   Mem *p = (Mem*)pVal;
164   if( p->flags & (MEM_Blob|MEM_Str) ){
165     if( sqlite3VdbeMemExpandBlob(p)!=SQLITE_OK ){
166       assert( p->flags==MEM_Null && p->z==0 );
167       return 0;
168     }
169     p->flags |= MEM_Blob;
170     return p->n ? p->z : 0;
171   }else{
172     return sqlite3_value_text(pVal);
173   }
174 }
175 int sqlite3_value_bytes(sqlite3_value *pVal){
176   return sqlite3ValueBytes(pVal, SQLITE_UTF8);
177 }
178 int sqlite3_value_bytes16(sqlite3_value *pVal){
179   return sqlite3ValueBytes(pVal, SQLITE_UTF16NATIVE);
180 }
181 double sqlite3_value_double(sqlite3_value *pVal){
182   return sqlite3VdbeRealValue((Mem*)pVal);
183 }
184 int sqlite3_value_int(sqlite3_value *pVal){
185   return (int)sqlite3VdbeIntValue((Mem*)pVal);
186 }
187 sqlite_int64 sqlite3_value_int64(sqlite3_value *pVal){
188   return sqlite3VdbeIntValue((Mem*)pVal);
189 }
190 unsigned int sqlite3_value_subtype(sqlite3_value *pVal){
191   Mem *pMem = (Mem*)pVal;
192   return ((pMem->flags & MEM_Subtype) ? pMem->eSubtype : 0);
193 }
194 const unsigned char *sqlite3_value_text(sqlite3_value *pVal){
195   return (const unsigned char *)sqlite3ValueText(pVal, SQLITE_UTF8);
196 }
197 #ifndef SQLITE_OMIT_UTF16
198 const void *sqlite3_value_text16(sqlite3_value* pVal){
199   return sqlite3ValueText(pVal, SQLITE_UTF16NATIVE);
200 }
201 const void *sqlite3_value_text16be(sqlite3_value *pVal){
202   return sqlite3ValueText(pVal, SQLITE_UTF16BE);
203 }
204 const void *sqlite3_value_text16le(sqlite3_value *pVal){
205   return sqlite3ValueText(pVal, SQLITE_UTF16LE);
206 }
207 #endif /* SQLITE_OMIT_UTF16 */
208 /* EVIDENCE-OF: R-12793-43283 Every value in SQLite has one of five
209 ** fundamental datatypes: 64-bit signed integer 64-bit IEEE floating
210 ** point number string BLOB NULL
211 */
212 int sqlite3_value_type(sqlite3_value* pVal){
213   static const u8 aType[] = {
214      SQLITE_BLOB,     /* 0x00 */
215      SQLITE_NULL,     /* 0x01 */
216      SQLITE_TEXT,     /* 0x02 */
217      SQLITE_NULL,     /* 0x03 */
218      SQLITE_INTEGER,  /* 0x04 */
219      SQLITE_NULL,     /* 0x05 */
220      SQLITE_INTEGER,  /* 0x06 */
221      SQLITE_NULL,     /* 0x07 */
222      SQLITE_FLOAT,    /* 0x08 */
223      SQLITE_NULL,     /* 0x09 */
224      SQLITE_FLOAT,    /* 0x0a */
225      SQLITE_NULL,     /* 0x0b */
226      SQLITE_INTEGER,  /* 0x0c */
227      SQLITE_NULL,     /* 0x0d */
228      SQLITE_INTEGER,  /* 0x0e */
229      SQLITE_NULL,     /* 0x0f */
230      SQLITE_BLOB,     /* 0x10 */
231      SQLITE_NULL,     /* 0x11 */
232      SQLITE_TEXT,     /* 0x12 */
233      SQLITE_NULL,     /* 0x13 */
234      SQLITE_INTEGER,  /* 0x14 */
235      SQLITE_NULL,     /* 0x15 */
236      SQLITE_INTEGER,  /* 0x16 */
237      SQLITE_NULL,     /* 0x17 */
238      SQLITE_FLOAT,    /* 0x18 */
239      SQLITE_NULL,     /* 0x19 */
240      SQLITE_FLOAT,    /* 0x1a */
241      SQLITE_NULL,     /* 0x1b */
242      SQLITE_INTEGER,  /* 0x1c */
243      SQLITE_NULL,     /* 0x1d */
244      SQLITE_INTEGER,  /* 0x1e */
245      SQLITE_NULL,     /* 0x1f */
246   };
247   return aType[pVal->flags&MEM_AffMask];
248 }
249 
250 /* Make a copy of an sqlite3_value object
251 */
252 sqlite3_value *sqlite3_value_dup(const sqlite3_value *pOrig){
253   sqlite3_value *pNew;
254   if( pOrig==0 ) return 0;
255   pNew = sqlite3_malloc( sizeof(*pNew) );
256   if( pNew==0 ) return 0;
257   memset(pNew, 0, sizeof(*pNew));
258   memcpy(pNew, pOrig, MEMCELLSIZE);
259   pNew->flags &= ~MEM_Dyn;
260   pNew->db = 0;
261   if( pNew->flags&(MEM_Str|MEM_Blob) ){
262     pNew->flags &= ~(MEM_Static|MEM_Dyn);
263     pNew->flags |= MEM_Ephem;
264     if( sqlite3VdbeMemMakeWriteable(pNew)!=SQLITE_OK ){
265       sqlite3ValueFree(pNew);
266       pNew = 0;
267     }
268   }
269   return pNew;
270 }
271 
272 /* Destroy an sqlite3_value object previously obtained from
273 ** sqlite3_value_dup().
274 */
275 void sqlite3_value_free(sqlite3_value *pOld){
276   sqlite3ValueFree(pOld);
277 }
278 
279 
280 /**************************** sqlite3_result_  *******************************
281 ** The following routines are used by user-defined functions to specify
282 ** the function result.
283 **
284 ** The setStrOrError() function calls sqlite3VdbeMemSetStr() to store the
285 ** result as a string or blob but if the string or blob is too large, it
286 ** then sets the error code to SQLITE_TOOBIG
287 **
288 ** The invokeValueDestructor(P,X) routine invokes destructor function X()
289 ** on value P is not going to be used and need to be destroyed.
290 */
291 static void setResultStrOrError(
292   sqlite3_context *pCtx,  /* Function context */
293   const char *z,          /* String pointer */
294   int n,                  /* Bytes in string, or negative */
295   u8 enc,                 /* Encoding of z.  0 for BLOBs */
296   void (*xDel)(void*)     /* Destructor function */
297 ){
298   if( sqlite3VdbeMemSetStr(pCtx->pOut, z, n, enc, xDel)==SQLITE_TOOBIG ){
299     sqlite3_result_error_toobig(pCtx);
300   }
301 }
302 static int invokeValueDestructor(
303   const void *p,             /* Value to destroy */
304   void (*xDel)(void*),       /* The destructor */
305   sqlite3_context *pCtx      /* Set a SQLITE_TOOBIG error if no NULL */
306 ){
307   assert( xDel!=SQLITE_DYNAMIC );
308   if( xDel==0 ){
309     /* noop */
310   }else if( xDel==SQLITE_TRANSIENT ){
311     /* noop */
312   }else{
313     xDel((void*)p);
314   }
315   if( pCtx ) sqlite3_result_error_toobig(pCtx);
316   return SQLITE_TOOBIG;
317 }
318 void sqlite3_result_blob(
319   sqlite3_context *pCtx,
320   const void *z,
321   int n,
322   void (*xDel)(void *)
323 ){
324   assert( n>=0 );
325   assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
326   setResultStrOrError(pCtx, z, n, 0, xDel);
327 }
328 void sqlite3_result_blob64(
329   sqlite3_context *pCtx,
330   const void *z,
331   sqlite3_uint64 n,
332   void (*xDel)(void *)
333 ){
334   assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
335   assert( xDel!=SQLITE_DYNAMIC );
336   if( n>0x7fffffff ){
337     (void)invokeValueDestructor(z, xDel, pCtx);
338   }else{
339     setResultStrOrError(pCtx, z, (int)n, 0, xDel);
340   }
341 }
342 void sqlite3_result_double(sqlite3_context *pCtx, double rVal){
343   assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
344   sqlite3VdbeMemSetDouble(pCtx->pOut, rVal);
345 }
346 void sqlite3_result_error(sqlite3_context *pCtx, const char *z, int n){
347   assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
348   pCtx->isError = SQLITE_ERROR;
349   pCtx->fErrorOrAux = 1;
350   sqlite3VdbeMemSetStr(pCtx->pOut, z, n, SQLITE_UTF8, SQLITE_TRANSIENT);
351 }
352 #ifndef SQLITE_OMIT_UTF16
353 void sqlite3_result_error16(sqlite3_context *pCtx, const void *z, int n){
354   assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
355   pCtx->isError = SQLITE_ERROR;
356   pCtx->fErrorOrAux = 1;
357   sqlite3VdbeMemSetStr(pCtx->pOut, z, n, SQLITE_UTF16NATIVE, SQLITE_TRANSIENT);
358 }
359 #endif
360 void sqlite3_result_int(sqlite3_context *pCtx, int iVal){
361   assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
362   sqlite3VdbeMemSetInt64(pCtx->pOut, (i64)iVal);
363 }
364 void sqlite3_result_int64(sqlite3_context *pCtx, i64 iVal){
365   assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
366   sqlite3VdbeMemSetInt64(pCtx->pOut, iVal);
367 }
368 void sqlite3_result_null(sqlite3_context *pCtx){
369   assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
370   sqlite3VdbeMemSetNull(pCtx->pOut);
371 }
372 void sqlite3_result_subtype(sqlite3_context *pCtx, unsigned int eSubtype){
373   Mem *pOut = pCtx->pOut;
374   assert( sqlite3_mutex_held(pOut->db->mutex) );
375   pOut->eSubtype = eSubtype & 0xff;
376   pOut->flags |= MEM_Subtype;
377 }
378 void sqlite3_result_text(
379   sqlite3_context *pCtx,
380   const char *z,
381   int n,
382   void (*xDel)(void *)
383 ){
384   assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
385   setResultStrOrError(pCtx, z, n, SQLITE_UTF8, xDel);
386 }
387 void sqlite3_result_text64(
388   sqlite3_context *pCtx,
389   const char *z,
390   sqlite3_uint64 n,
391   void (*xDel)(void *),
392   unsigned char enc
393 ){
394   assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
395   assert( xDel!=SQLITE_DYNAMIC );
396   if( enc==SQLITE_UTF16 ) enc = SQLITE_UTF16NATIVE;
397   if( n>0x7fffffff ){
398     (void)invokeValueDestructor(z, xDel, pCtx);
399   }else{
400     setResultStrOrError(pCtx, z, (int)n, enc, xDel);
401   }
402 }
403 #ifndef SQLITE_OMIT_UTF16
404 void sqlite3_result_text16(
405   sqlite3_context *pCtx,
406   const void *z,
407   int n,
408   void (*xDel)(void *)
409 ){
410   assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
411   setResultStrOrError(pCtx, z, n, SQLITE_UTF16NATIVE, xDel);
412 }
413 void sqlite3_result_text16be(
414   sqlite3_context *pCtx,
415   const void *z,
416   int n,
417   void (*xDel)(void *)
418 ){
419   assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
420   setResultStrOrError(pCtx, z, n, SQLITE_UTF16BE, xDel);
421 }
422 void sqlite3_result_text16le(
423   sqlite3_context *pCtx,
424   const void *z,
425   int n,
426   void (*xDel)(void *)
427 ){
428   assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
429   setResultStrOrError(pCtx, z, n, SQLITE_UTF16LE, xDel);
430 }
431 #endif /* SQLITE_OMIT_UTF16 */
432 void sqlite3_result_value(sqlite3_context *pCtx, sqlite3_value *pValue){
433   assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
434   sqlite3VdbeMemCopy(pCtx->pOut, pValue);
435 }
436 void sqlite3_result_zeroblob(sqlite3_context *pCtx, int n){
437   assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
438   sqlite3VdbeMemSetZeroBlob(pCtx->pOut, n);
439 }
440 int sqlite3_result_zeroblob64(sqlite3_context *pCtx, u64 n){
441   Mem *pOut = pCtx->pOut;
442   assert( sqlite3_mutex_held(pOut->db->mutex) );
443   if( n>(u64)pOut->db->aLimit[SQLITE_LIMIT_LENGTH] ){
444     return SQLITE_TOOBIG;
445   }
446   sqlite3VdbeMemSetZeroBlob(pCtx->pOut, (int)n);
447   return SQLITE_OK;
448 }
449 void sqlite3_result_error_code(sqlite3_context *pCtx, int errCode){
450   pCtx->isError = errCode;
451   pCtx->fErrorOrAux = 1;
452 #ifdef SQLITE_DEBUG
453   if( pCtx->pVdbe ) pCtx->pVdbe->rcApp = errCode;
454 #endif
455   if( pCtx->pOut->flags & MEM_Null ){
456     sqlite3VdbeMemSetStr(pCtx->pOut, sqlite3ErrStr(errCode), -1,
457                          SQLITE_UTF8, SQLITE_STATIC);
458   }
459 }
460 
461 /* Force an SQLITE_TOOBIG error. */
462 void sqlite3_result_error_toobig(sqlite3_context *pCtx){
463   assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
464   pCtx->isError = SQLITE_TOOBIG;
465   pCtx->fErrorOrAux = 1;
466   sqlite3VdbeMemSetStr(pCtx->pOut, "string or blob too big", -1,
467                        SQLITE_UTF8, SQLITE_STATIC);
468 }
469 
470 /* An SQLITE_NOMEM error. */
471 void sqlite3_result_error_nomem(sqlite3_context *pCtx){
472   assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
473   sqlite3VdbeMemSetNull(pCtx->pOut);
474   pCtx->isError = SQLITE_NOMEM_BKPT;
475   pCtx->fErrorOrAux = 1;
476   sqlite3OomFault(pCtx->pOut->db);
477 }
478 
479 /*
480 ** This function is called after a transaction has been committed. It
481 ** invokes callbacks registered with sqlite3_wal_hook() as required.
482 */
483 static int doWalCallbacks(sqlite3 *db){
484   int rc = SQLITE_OK;
485 #ifndef SQLITE_OMIT_WAL
486   int i;
487   for(i=0; i<db->nDb; i++){
488     Btree *pBt = db->aDb[i].pBt;
489     if( pBt ){
490       int nEntry;
491       sqlite3BtreeEnter(pBt);
492       nEntry = sqlite3PagerWalCallback(sqlite3BtreePager(pBt));
493       sqlite3BtreeLeave(pBt);
494       if( db->xWalCallback && nEntry>0 && rc==SQLITE_OK ){
495         rc = db->xWalCallback(db->pWalArg, db, db->aDb[i].zName, nEntry);
496       }
497     }
498   }
499 #endif
500   return rc;
501 }
502 
503 
504 /*
505 ** Execute the statement pStmt, either until a row of data is ready, the
506 ** statement is completely executed or an error occurs.
507 **
508 ** This routine implements the bulk of the logic behind the sqlite_step()
509 ** API.  The only thing omitted is the automatic recompile if a
510 ** schema change has occurred.  That detail is handled by the
511 ** outer sqlite3_step() wrapper procedure.
512 */
513 static int sqlite3Step(Vdbe *p){
514   sqlite3 *db;
515   int rc;
516 
517   assert(p);
518   if( p->magic!=VDBE_MAGIC_RUN ){
519     /* We used to require that sqlite3_reset() be called before retrying
520     ** sqlite3_step() after any error or after SQLITE_DONE.  But beginning
521     ** with version 3.7.0, we changed this so that sqlite3_reset() would
522     ** be called automatically instead of throwing the SQLITE_MISUSE error.
523     ** This "automatic-reset" change is not technically an incompatibility,
524     ** since any application that receives an SQLITE_MISUSE is broken by
525     ** definition.
526     **
527     ** Nevertheless, some published applications that were originally written
528     ** for version 3.6.23 or earlier do in fact depend on SQLITE_MISUSE
529     ** returns, and those were broken by the automatic-reset change.  As a
530     ** a work-around, the SQLITE_OMIT_AUTORESET compile-time restores the
531     ** legacy behavior of returning SQLITE_MISUSE for cases where the
532     ** previous sqlite3_step() returned something other than a SQLITE_LOCKED
533     ** or SQLITE_BUSY error.
534     */
535 #ifdef SQLITE_OMIT_AUTORESET
536     if( (rc = p->rc&0xff)==SQLITE_BUSY || rc==SQLITE_LOCKED ){
537       sqlite3_reset((sqlite3_stmt*)p);
538     }else{
539       return SQLITE_MISUSE_BKPT;
540     }
541 #else
542     sqlite3_reset((sqlite3_stmt*)p);
543 #endif
544   }
545 
546   /* Check that malloc() has not failed. If it has, return early. */
547   db = p->db;
548   if( db->mallocFailed ){
549     p->rc = SQLITE_NOMEM;
550     return SQLITE_NOMEM_BKPT;
551   }
552 
553   if( p->pc<=0 && p->expired ){
554     p->rc = SQLITE_SCHEMA;
555     rc = SQLITE_ERROR;
556     goto end_of_step;
557   }
558   if( p->pc<0 ){
559     /* If there are no other statements currently running, then
560     ** reset the interrupt flag.  This prevents a call to sqlite3_interrupt
561     ** from interrupting a statement that has not yet started.
562     */
563     if( db->nVdbeActive==0 ){
564       db->u1.isInterrupted = 0;
565     }
566 
567     assert( db->nVdbeWrite>0 || db->autoCommit==0
568         || (db->nDeferredCons==0 && db->nDeferredImmCons==0)
569     );
570 
571 #ifndef SQLITE_OMIT_TRACE
572     if( db->xProfile && !db->init.busy && p->zSql ){
573       sqlite3OsCurrentTimeInt64(db->pVfs, &p->startTime);
574     }else{
575       assert( p->startTime==0 );
576     }
577 #endif
578 
579     db->nVdbeActive++;
580     if( p->readOnly==0 ) db->nVdbeWrite++;
581     if( p->bIsReader ) db->nVdbeRead++;
582     p->pc = 0;
583   }
584 #ifdef SQLITE_DEBUG
585   p->rcApp = SQLITE_OK;
586 #endif
587 #ifndef SQLITE_OMIT_EXPLAIN
588   if( p->explain ){
589     rc = sqlite3VdbeList(p);
590   }else
591 #endif /* SQLITE_OMIT_EXPLAIN */
592   {
593     db->nVdbeExec++;
594     rc = sqlite3VdbeExec(p);
595     db->nVdbeExec--;
596   }
597 
598 #ifndef SQLITE_OMIT_TRACE
599   /* If the statement completed successfully, invoke the profile callback */
600   if( rc!=SQLITE_ROW ) checkProfileCallback(db, p);
601 #endif
602 
603   if( rc==SQLITE_DONE ){
604     assert( p->rc==SQLITE_OK );
605     p->rc = doWalCallbacks(db);
606     if( p->rc!=SQLITE_OK ){
607       rc = SQLITE_ERROR;
608     }
609   }
610 
611   db->errCode = rc;
612   if( SQLITE_NOMEM==sqlite3ApiExit(p->db, p->rc) ){
613     p->rc = SQLITE_NOMEM_BKPT;
614   }
615 end_of_step:
616   /* At this point local variable rc holds the value that should be
617   ** returned if this statement was compiled using the legacy
618   ** sqlite3_prepare() interface. According to the docs, this can only
619   ** be one of the values in the first assert() below. Variable p->rc
620   ** contains the value that would be returned if sqlite3_finalize()
621   ** were called on statement p.
622   */
623   assert( rc==SQLITE_ROW  || rc==SQLITE_DONE   || rc==SQLITE_ERROR
624        || (rc&0xff)==SQLITE_BUSY || rc==SQLITE_MISUSE
625   );
626   assert( (p->rc!=SQLITE_ROW && p->rc!=SQLITE_DONE) || p->rc==p->rcApp );
627   if( p->isPrepareV2 && rc!=SQLITE_ROW && rc!=SQLITE_DONE ){
628     /* If this statement was prepared using sqlite3_prepare_v2(), and an
629     ** error has occurred, then return the error code in p->rc to the
630     ** caller. Set the error code in the database handle to the same value.
631     */
632     rc = sqlite3VdbeTransferError(p);
633   }
634   return (rc&db->errMask);
635 }
636 
637 /*
638 ** This is the top-level implementation of sqlite3_step().  Call
639 ** sqlite3Step() to do most of the work.  If a schema error occurs,
640 ** call sqlite3Reprepare() and try again.
641 */
642 int sqlite3_step(sqlite3_stmt *pStmt){
643   int rc = SQLITE_OK;      /* Result from sqlite3Step() */
644   int rc2 = SQLITE_OK;     /* Result from sqlite3Reprepare() */
645   Vdbe *v = (Vdbe*)pStmt;  /* the prepared statement */
646   int cnt = 0;             /* Counter to prevent infinite loop of reprepares */
647   sqlite3 *db;             /* The database connection */
648 
649   if( vdbeSafetyNotNull(v) ){
650     return SQLITE_MISUSE_BKPT;
651   }
652   db = v->db;
653   sqlite3_mutex_enter(db->mutex);
654   v->doingRerun = 0;
655   while( (rc = sqlite3Step(v))==SQLITE_SCHEMA
656          && cnt++ < SQLITE_MAX_SCHEMA_RETRY ){
657     int savedPc = v->pc;
658     rc2 = rc = sqlite3Reprepare(v);
659     if( rc!=SQLITE_OK) break;
660     sqlite3_reset(pStmt);
661     if( savedPc>=0 ) v->doingRerun = 1;
662     assert( v->expired==0 );
663   }
664   if( rc2!=SQLITE_OK ){
665     /* This case occurs after failing to recompile an sql statement.
666     ** The error message from the SQL compiler has already been loaded
667     ** into the database handle. This block copies the error message
668     ** from the database handle into the statement and sets the statement
669     ** program counter to 0 to ensure that when the statement is
670     ** finalized or reset the parser error message is available via
671     ** sqlite3_errmsg() and sqlite3_errcode().
672     */
673     const char *zErr = (const char *)sqlite3_value_text(db->pErr);
674     sqlite3DbFree(db, v->zErrMsg);
675     if( !db->mallocFailed ){
676       v->zErrMsg = sqlite3DbStrDup(db, zErr);
677       v->rc = rc2;
678     } else {
679       v->zErrMsg = 0;
680       v->rc = rc = SQLITE_NOMEM_BKPT;
681     }
682   }
683   rc = sqlite3ApiExit(db, rc);
684   sqlite3_mutex_leave(db->mutex);
685   return rc;
686 }
687 
688 
689 /*
690 ** Extract the user data from a sqlite3_context structure and return a
691 ** pointer to it.
692 */
693 void *sqlite3_user_data(sqlite3_context *p){
694   assert( p && p->pFunc );
695   return p->pFunc->pUserData;
696 }
697 
698 /*
699 ** Extract the user data from a sqlite3_context structure and return a
700 ** pointer to it.
701 **
702 ** IMPLEMENTATION-OF: R-46798-50301 The sqlite3_context_db_handle() interface
703 ** returns a copy of the pointer to the database connection (the 1st
704 ** parameter) of the sqlite3_create_function() and
705 ** sqlite3_create_function16() routines that originally registered the
706 ** application defined function.
707 */
708 sqlite3 *sqlite3_context_db_handle(sqlite3_context *p){
709   assert( p && p->pOut );
710   return p->pOut->db;
711 }
712 
713 /*
714 ** Return the current time for a statement.  If the current time
715 ** is requested more than once within the same run of a single prepared
716 ** statement, the exact same time is returned for each invocation regardless
717 ** of the amount of time that elapses between invocations.  In other words,
718 ** the time returned is always the time of the first call.
719 */
720 sqlite3_int64 sqlite3StmtCurrentTime(sqlite3_context *p){
721   int rc;
722 #ifndef SQLITE_ENABLE_STAT3_OR_STAT4
723   sqlite3_int64 *piTime = &p->pVdbe->iCurrentTime;
724   assert( p->pVdbe!=0 );
725 #else
726   sqlite3_int64 iTime = 0;
727   sqlite3_int64 *piTime = p->pVdbe!=0 ? &p->pVdbe->iCurrentTime : &iTime;
728 #endif
729   if( *piTime==0 ){
730     rc = sqlite3OsCurrentTimeInt64(p->pOut->db->pVfs, piTime);
731     if( rc ) *piTime = 0;
732   }
733   return *piTime;
734 }
735 
736 /*
737 ** The following is the implementation of an SQL function that always
738 ** fails with an error message stating that the function is used in the
739 ** wrong context.  The sqlite3_overload_function() API might construct
740 ** SQL function that use this routine so that the functions will exist
741 ** for name resolution but are actually overloaded by the xFindFunction
742 ** method of virtual tables.
743 */
744 void sqlite3InvalidFunction(
745   sqlite3_context *context,  /* The function calling context */
746   int NotUsed,               /* Number of arguments to the function */
747   sqlite3_value **NotUsed2   /* Value of each argument */
748 ){
749   const char *zName = context->pFunc->zName;
750   char *zErr;
751   UNUSED_PARAMETER2(NotUsed, NotUsed2);
752   zErr = sqlite3_mprintf(
753       "unable to use function %s in the requested context", zName);
754   sqlite3_result_error(context, zErr, -1);
755   sqlite3_free(zErr);
756 }
757 
758 /*
759 ** Create a new aggregate context for p and return a pointer to
760 ** its pMem->z element.
761 */
762 static SQLITE_NOINLINE void *createAggContext(sqlite3_context *p, int nByte){
763   Mem *pMem = p->pMem;
764   assert( (pMem->flags & MEM_Agg)==0 );
765   if( nByte<=0 ){
766     sqlite3VdbeMemSetNull(pMem);
767     pMem->z = 0;
768   }else{
769     sqlite3VdbeMemClearAndResize(pMem, nByte);
770     pMem->flags = MEM_Agg;
771     pMem->u.pDef = p->pFunc;
772     if( pMem->z ){
773       memset(pMem->z, 0, nByte);
774     }
775   }
776   return (void*)pMem->z;
777 }
778 
779 /*
780 ** Allocate or return the aggregate context for a user function.  A new
781 ** context is allocated on the first call.  Subsequent calls return the
782 ** same context that was returned on prior calls.
783 */
784 void *sqlite3_aggregate_context(sqlite3_context *p, int nByte){
785   assert( p && p->pFunc && p->pFunc->xFinalize );
786   assert( sqlite3_mutex_held(p->pOut->db->mutex) );
787   testcase( nByte<0 );
788   if( (p->pMem->flags & MEM_Agg)==0 ){
789     return createAggContext(p, nByte);
790   }else{
791     return (void*)p->pMem->z;
792   }
793 }
794 
795 /*
796 ** Return the auxiliary data pointer, if any, for the iArg'th argument to
797 ** the user-function defined by pCtx.
798 */
799 void *sqlite3_get_auxdata(sqlite3_context *pCtx, int iArg){
800   AuxData *pAuxData;
801 
802   assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
803 #if SQLITE_ENABLE_STAT3_OR_STAT4
804   if( pCtx->pVdbe==0 ) return 0;
805 #else
806   assert( pCtx->pVdbe!=0 );
807 #endif
808   for(pAuxData=pCtx->pVdbe->pAuxData; pAuxData; pAuxData=pAuxData->pNext){
809     if( pAuxData->iOp==pCtx->iOp && pAuxData->iArg==iArg ) break;
810   }
811 
812   return (pAuxData ? pAuxData->pAux : 0);
813 }
814 
815 /*
816 ** Set the auxiliary data pointer and delete function, for the iArg'th
817 ** argument to the user-function defined by pCtx. Any previous value is
818 ** deleted by calling the delete function specified when it was set.
819 */
820 void sqlite3_set_auxdata(
821   sqlite3_context *pCtx,
822   int iArg,
823   void *pAux,
824   void (*xDelete)(void*)
825 ){
826   AuxData *pAuxData;
827   Vdbe *pVdbe = pCtx->pVdbe;
828 
829   assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
830   if( iArg<0 ) goto failed;
831 #ifdef SQLITE_ENABLE_STAT3_OR_STAT4
832   if( pVdbe==0 ) goto failed;
833 #else
834   assert( pVdbe!=0 );
835 #endif
836 
837   for(pAuxData=pVdbe->pAuxData; pAuxData; pAuxData=pAuxData->pNext){
838     if( pAuxData->iOp==pCtx->iOp && pAuxData->iArg==iArg ) break;
839   }
840   if( pAuxData==0 ){
841     pAuxData = sqlite3DbMallocZero(pVdbe->db, sizeof(AuxData));
842     if( !pAuxData ) goto failed;
843     pAuxData->iOp = pCtx->iOp;
844     pAuxData->iArg = iArg;
845     pAuxData->pNext = pVdbe->pAuxData;
846     pVdbe->pAuxData = pAuxData;
847     if( pCtx->fErrorOrAux==0 ){
848       pCtx->isError = 0;
849       pCtx->fErrorOrAux = 1;
850     }
851   }else if( pAuxData->xDelete ){
852     pAuxData->xDelete(pAuxData->pAux);
853   }
854 
855   pAuxData->pAux = pAux;
856   pAuxData->xDelete = xDelete;
857   return;
858 
859 failed:
860   if( xDelete ){
861     xDelete(pAux);
862   }
863 }
864 
865 #ifndef SQLITE_OMIT_DEPRECATED
866 /*
867 ** Return the number of times the Step function of an aggregate has been
868 ** called.
869 **
870 ** This function is deprecated.  Do not use it for new code.  It is
871 ** provide only to avoid breaking legacy code.  New aggregate function
872 ** implementations should keep their own counts within their aggregate
873 ** context.
874 */
875 int sqlite3_aggregate_count(sqlite3_context *p){
876   assert( p && p->pMem && p->pFunc && p->pFunc->xFinalize );
877   return p->pMem->n;
878 }
879 #endif
880 
881 /*
882 ** Return the number of columns in the result set for the statement pStmt.
883 */
884 int sqlite3_column_count(sqlite3_stmt *pStmt){
885   Vdbe *pVm = (Vdbe *)pStmt;
886   return pVm ? pVm->nResColumn : 0;
887 }
888 
889 /*
890 ** Return the number of values available from the current row of the
891 ** currently executing statement pStmt.
892 */
893 int sqlite3_data_count(sqlite3_stmt *pStmt){
894   Vdbe *pVm = (Vdbe *)pStmt;
895   if( pVm==0 || pVm->pResultSet==0 ) return 0;
896   return pVm->nResColumn;
897 }
898 
899 /*
900 ** Return a pointer to static memory containing an SQL NULL value.
901 */
902 static const Mem *columnNullValue(void){
903   /* Even though the Mem structure contains an element
904   ** of type i64, on certain architectures (x86) with certain compiler
905   ** switches (-Os), gcc may align this Mem object on a 4-byte boundary
906   ** instead of an 8-byte one. This all works fine, except that when
907   ** running with SQLITE_DEBUG defined the SQLite code sometimes assert()s
908   ** that a Mem structure is located on an 8-byte boundary. To prevent
909   ** these assert()s from failing, when building with SQLITE_DEBUG defined
910   ** using gcc, we force nullMem to be 8-byte aligned using the magical
911   ** __attribute__((aligned(8))) macro.  */
912   static const Mem nullMem
913 #if defined(SQLITE_DEBUG) && defined(__GNUC__)
914     __attribute__((aligned(8)))
915 #endif
916     = {
917         /* .u          = */ {0},
918         /* .flags      = */ (u16)MEM_Null,
919         /* .enc        = */ (u8)0,
920         /* .eSubtype   = */ (u8)0,
921         /* .n          = */ (int)0,
922         /* .z          = */ (char*)0,
923         /* .zMalloc    = */ (char*)0,
924         /* .szMalloc   = */ (int)0,
925         /* .uTemp      = */ (u32)0,
926         /* .db         = */ (sqlite3*)0,
927         /* .xDel       = */ (void(*)(void*))0,
928 #ifdef SQLITE_DEBUG
929         /* .pScopyFrom = */ (Mem*)0,
930         /* .pFiller    = */ (void*)0,
931 #endif
932       };
933   return &nullMem;
934 }
935 
936 /*
937 ** Check to see if column iCol of the given statement is valid.  If
938 ** it is, return a pointer to the Mem for the value of that column.
939 ** If iCol is not valid, return a pointer to a Mem which has a value
940 ** of NULL.
941 */
942 static Mem *columnMem(sqlite3_stmt *pStmt, int i){
943   Vdbe *pVm;
944   Mem *pOut;
945 
946   pVm = (Vdbe *)pStmt;
947   if( pVm && pVm->pResultSet!=0 && i<pVm->nResColumn && i>=0 ){
948     sqlite3_mutex_enter(pVm->db->mutex);
949     pOut = &pVm->pResultSet[i];
950   }else{
951     if( pVm && ALWAYS(pVm->db) ){
952       sqlite3_mutex_enter(pVm->db->mutex);
953       sqlite3Error(pVm->db, SQLITE_RANGE);
954     }
955     pOut = (Mem*)columnNullValue();
956   }
957   return pOut;
958 }
959 
960 /*
961 ** This function is called after invoking an sqlite3_value_XXX function on a
962 ** column value (i.e. a value returned by evaluating an SQL expression in the
963 ** select list of a SELECT statement) that may cause a malloc() failure. If
964 ** malloc() has failed, the threads mallocFailed flag is cleared and the result
965 ** code of statement pStmt set to SQLITE_NOMEM.
966 **
967 ** Specifically, this is called from within:
968 **
969 **     sqlite3_column_int()
970 **     sqlite3_column_int64()
971 **     sqlite3_column_text()
972 **     sqlite3_column_text16()
973 **     sqlite3_column_real()
974 **     sqlite3_column_bytes()
975 **     sqlite3_column_bytes16()
976 **     sqiite3_column_blob()
977 */
978 static void columnMallocFailure(sqlite3_stmt *pStmt)
979 {
980   /* If malloc() failed during an encoding conversion within an
981   ** sqlite3_column_XXX API, then set the return code of the statement to
982   ** SQLITE_NOMEM. The next call to _step() (if any) will return SQLITE_ERROR
983   ** and _finalize() will return NOMEM.
984   */
985   Vdbe *p = (Vdbe *)pStmt;
986   if( p ){
987     p->rc = sqlite3ApiExit(p->db, p->rc);
988     sqlite3_mutex_leave(p->db->mutex);
989   }
990 }
991 
992 /**************************** sqlite3_column_  *******************************
993 ** The following routines are used to access elements of the current row
994 ** in the result set.
995 */
996 const void *sqlite3_column_blob(sqlite3_stmt *pStmt, int i){
997   const void *val;
998   val = sqlite3_value_blob( columnMem(pStmt,i) );
999   /* Even though there is no encoding conversion, value_blob() might
1000   ** need to call malloc() to expand the result of a zeroblob()
1001   ** expression.
1002   */
1003   columnMallocFailure(pStmt);
1004   return val;
1005 }
1006 int sqlite3_column_bytes(sqlite3_stmt *pStmt, int i){
1007   int val = sqlite3_value_bytes( columnMem(pStmt,i) );
1008   columnMallocFailure(pStmt);
1009   return val;
1010 }
1011 int sqlite3_column_bytes16(sqlite3_stmt *pStmt, int i){
1012   int val = sqlite3_value_bytes16( columnMem(pStmt,i) );
1013   columnMallocFailure(pStmt);
1014   return val;
1015 }
1016 double sqlite3_column_double(sqlite3_stmt *pStmt, int i){
1017   double val = sqlite3_value_double( columnMem(pStmt,i) );
1018   columnMallocFailure(pStmt);
1019   return val;
1020 }
1021 int sqlite3_column_int(sqlite3_stmt *pStmt, int i){
1022   int val = sqlite3_value_int( columnMem(pStmt,i) );
1023   columnMallocFailure(pStmt);
1024   return val;
1025 }
1026 sqlite_int64 sqlite3_column_int64(sqlite3_stmt *pStmt, int i){
1027   sqlite_int64 val = sqlite3_value_int64( columnMem(pStmt,i) );
1028   columnMallocFailure(pStmt);
1029   return val;
1030 }
1031 const unsigned char *sqlite3_column_text(sqlite3_stmt *pStmt, int i){
1032   const unsigned char *val = sqlite3_value_text( columnMem(pStmt,i) );
1033   columnMallocFailure(pStmt);
1034   return val;
1035 }
1036 sqlite3_value *sqlite3_column_value(sqlite3_stmt *pStmt, int i){
1037   Mem *pOut = columnMem(pStmt, i);
1038   if( pOut->flags&MEM_Static ){
1039     pOut->flags &= ~MEM_Static;
1040     pOut->flags |= MEM_Ephem;
1041   }
1042   columnMallocFailure(pStmt);
1043   return (sqlite3_value *)pOut;
1044 }
1045 #ifndef SQLITE_OMIT_UTF16
1046 const void *sqlite3_column_text16(sqlite3_stmt *pStmt, int i){
1047   const void *val = sqlite3_value_text16( columnMem(pStmt,i) );
1048   columnMallocFailure(pStmt);
1049   return val;
1050 }
1051 #endif /* SQLITE_OMIT_UTF16 */
1052 int sqlite3_column_type(sqlite3_stmt *pStmt, int i){
1053   int iType = sqlite3_value_type( columnMem(pStmt,i) );
1054   columnMallocFailure(pStmt);
1055   return iType;
1056 }
1057 
1058 /*
1059 ** Convert the N-th element of pStmt->pColName[] into a string using
1060 ** xFunc() then return that string.  If N is out of range, return 0.
1061 **
1062 ** There are up to 5 names for each column.  useType determines which
1063 ** name is returned.  Here are the names:
1064 **
1065 **    0      The column name as it should be displayed for output
1066 **    1      The datatype name for the column
1067 **    2      The name of the database that the column derives from
1068 **    3      The name of the table that the column derives from
1069 **    4      The name of the table column that the result column derives from
1070 **
1071 ** If the result is not a simple column reference (if it is an expression
1072 ** or a constant) then useTypes 2, 3, and 4 return NULL.
1073 */
1074 static const void *columnName(
1075   sqlite3_stmt *pStmt,
1076   int N,
1077   const void *(*xFunc)(Mem*),
1078   int useType
1079 ){
1080   const void *ret;
1081   Vdbe *p;
1082   int n;
1083   sqlite3 *db;
1084 #ifdef SQLITE_ENABLE_API_ARMOR
1085   if( pStmt==0 ){
1086     (void)SQLITE_MISUSE_BKPT;
1087     return 0;
1088   }
1089 #endif
1090   ret = 0;
1091   p = (Vdbe *)pStmt;
1092   db = p->db;
1093   assert( db!=0 );
1094   n = sqlite3_column_count(pStmt);
1095   if( N<n && N>=0 ){
1096     N += useType*n;
1097     sqlite3_mutex_enter(db->mutex);
1098     assert( db->mallocFailed==0 );
1099     ret = xFunc(&p->aColName[N]);
1100      /* A malloc may have failed inside of the xFunc() call. If this
1101     ** is the case, clear the mallocFailed flag and return NULL.
1102     */
1103     if( db->mallocFailed ){
1104       sqlite3OomClear(db);
1105       ret = 0;
1106     }
1107     sqlite3_mutex_leave(db->mutex);
1108   }
1109   return ret;
1110 }
1111 
1112 /*
1113 ** Return the name of the Nth column of the result set returned by SQL
1114 ** statement pStmt.
1115 */
1116 const char *sqlite3_column_name(sqlite3_stmt *pStmt, int N){
1117   return columnName(
1118       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_NAME);
1119 }
1120 #ifndef SQLITE_OMIT_UTF16
1121 const void *sqlite3_column_name16(sqlite3_stmt *pStmt, int N){
1122   return columnName(
1123       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_NAME);
1124 }
1125 #endif
1126 
1127 /*
1128 ** Constraint:  If you have ENABLE_COLUMN_METADATA then you must
1129 ** not define OMIT_DECLTYPE.
1130 */
1131 #if defined(SQLITE_OMIT_DECLTYPE) && defined(SQLITE_ENABLE_COLUMN_METADATA)
1132 # error "Must not define both SQLITE_OMIT_DECLTYPE \
1133          and SQLITE_ENABLE_COLUMN_METADATA"
1134 #endif
1135 
1136 #ifndef SQLITE_OMIT_DECLTYPE
1137 /*
1138 ** Return the column declaration type (if applicable) of the 'i'th column
1139 ** of the result set of SQL statement pStmt.
1140 */
1141 const char *sqlite3_column_decltype(sqlite3_stmt *pStmt, int N){
1142   return columnName(
1143       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_DECLTYPE);
1144 }
1145 #ifndef SQLITE_OMIT_UTF16
1146 const void *sqlite3_column_decltype16(sqlite3_stmt *pStmt, int N){
1147   return columnName(
1148       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_DECLTYPE);
1149 }
1150 #endif /* SQLITE_OMIT_UTF16 */
1151 #endif /* SQLITE_OMIT_DECLTYPE */
1152 
1153 #ifdef SQLITE_ENABLE_COLUMN_METADATA
1154 /*
1155 ** Return the name of the database from which a result column derives.
1156 ** NULL is returned if the result column is an expression or constant or
1157 ** anything else which is not an unambiguous reference to a database column.
1158 */
1159 const char *sqlite3_column_database_name(sqlite3_stmt *pStmt, int N){
1160   return columnName(
1161       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_DATABASE);
1162 }
1163 #ifndef SQLITE_OMIT_UTF16
1164 const void *sqlite3_column_database_name16(sqlite3_stmt *pStmt, int N){
1165   return columnName(
1166       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_DATABASE);
1167 }
1168 #endif /* SQLITE_OMIT_UTF16 */
1169 
1170 /*
1171 ** Return the name of the table from which a result column derives.
1172 ** NULL is returned if the result column is an expression or constant or
1173 ** anything else which is not an unambiguous reference to a database column.
1174 */
1175 const char *sqlite3_column_table_name(sqlite3_stmt *pStmt, int N){
1176   return columnName(
1177       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_TABLE);
1178 }
1179 #ifndef SQLITE_OMIT_UTF16
1180 const void *sqlite3_column_table_name16(sqlite3_stmt *pStmt, int N){
1181   return columnName(
1182       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_TABLE);
1183 }
1184 #endif /* SQLITE_OMIT_UTF16 */
1185 
1186 /*
1187 ** Return the name of the table column from which a result column derives.
1188 ** NULL is returned if the result column is an expression or constant or
1189 ** anything else which is not an unambiguous reference to a database column.
1190 */
1191 const char *sqlite3_column_origin_name(sqlite3_stmt *pStmt, int N){
1192   return columnName(
1193       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_COLUMN);
1194 }
1195 #ifndef SQLITE_OMIT_UTF16
1196 const void *sqlite3_column_origin_name16(sqlite3_stmt *pStmt, int N){
1197   return columnName(
1198       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_COLUMN);
1199 }
1200 #endif /* SQLITE_OMIT_UTF16 */
1201 #endif /* SQLITE_ENABLE_COLUMN_METADATA */
1202 
1203 
1204 /******************************* sqlite3_bind_  ***************************
1205 **
1206 ** Routines used to attach values to wildcards in a compiled SQL statement.
1207 */
1208 /*
1209 ** Unbind the value bound to variable i in virtual machine p. This is the
1210 ** the same as binding a NULL value to the column. If the "i" parameter is
1211 ** out of range, then SQLITE_RANGE is returned. Othewise SQLITE_OK.
1212 **
1213 ** A successful evaluation of this routine acquires the mutex on p.
1214 ** the mutex is released if any kind of error occurs.
1215 **
1216 ** The error code stored in database p->db is overwritten with the return
1217 ** value in any case.
1218 */
1219 static int vdbeUnbind(Vdbe *p, int i){
1220   Mem *pVar;
1221   if( vdbeSafetyNotNull(p) ){
1222     return SQLITE_MISUSE_BKPT;
1223   }
1224   sqlite3_mutex_enter(p->db->mutex);
1225   if( p->magic!=VDBE_MAGIC_RUN || p->pc>=0 ){
1226     sqlite3Error(p->db, SQLITE_MISUSE);
1227     sqlite3_mutex_leave(p->db->mutex);
1228     sqlite3_log(SQLITE_MISUSE,
1229         "bind on a busy prepared statement: [%s]", p->zSql);
1230     return SQLITE_MISUSE_BKPT;
1231   }
1232   if( i<1 || i>p->nVar ){
1233     sqlite3Error(p->db, SQLITE_RANGE);
1234     sqlite3_mutex_leave(p->db->mutex);
1235     return SQLITE_RANGE;
1236   }
1237   i--;
1238   pVar = &p->aVar[i];
1239   sqlite3VdbeMemRelease(pVar);
1240   pVar->flags = MEM_Null;
1241   sqlite3Error(p->db, SQLITE_OK);
1242 
1243   /* If the bit corresponding to this variable in Vdbe.expmask is set, then
1244   ** binding a new value to this variable invalidates the current query plan.
1245   **
1246   ** IMPLEMENTATION-OF: R-48440-37595 If the specific value bound to host
1247   ** parameter in the WHERE clause might influence the choice of query plan
1248   ** for a statement, then the statement will be automatically recompiled,
1249   ** as if there had been a schema change, on the first sqlite3_step() call
1250   ** following any change to the bindings of that parameter.
1251   */
1252   if( p->isPrepareV2 &&
1253      ((i<32 && p->expmask & ((u32)1 << i)) || p->expmask==0xffffffff)
1254   ){
1255     p->expired = 1;
1256   }
1257   return SQLITE_OK;
1258 }
1259 
1260 /*
1261 ** Bind a text or BLOB value.
1262 */
1263 static int bindText(
1264   sqlite3_stmt *pStmt,   /* The statement to bind against */
1265   int i,                 /* Index of the parameter to bind */
1266   const void *zData,     /* Pointer to the data to be bound */
1267   int nData,             /* Number of bytes of data to be bound */
1268   void (*xDel)(void*),   /* Destructor for the data */
1269   u8 encoding            /* Encoding for the data */
1270 ){
1271   Vdbe *p = (Vdbe *)pStmt;
1272   Mem *pVar;
1273   int rc;
1274 
1275   rc = vdbeUnbind(p, i);
1276   if( rc==SQLITE_OK ){
1277     if( zData!=0 ){
1278       pVar = &p->aVar[i-1];
1279       rc = sqlite3VdbeMemSetStr(pVar, zData, nData, encoding, xDel);
1280       if( rc==SQLITE_OK && encoding!=0 ){
1281         rc = sqlite3VdbeChangeEncoding(pVar, ENC(p->db));
1282       }
1283       sqlite3Error(p->db, rc);
1284       rc = sqlite3ApiExit(p->db, rc);
1285     }
1286     sqlite3_mutex_leave(p->db->mutex);
1287   }else if( xDel!=SQLITE_STATIC && xDel!=SQLITE_TRANSIENT ){
1288     xDel((void*)zData);
1289   }
1290   return rc;
1291 }
1292 
1293 
1294 /*
1295 ** Bind a blob value to an SQL statement variable.
1296 */
1297 int sqlite3_bind_blob(
1298   sqlite3_stmt *pStmt,
1299   int i,
1300   const void *zData,
1301   int nData,
1302   void (*xDel)(void*)
1303 ){
1304 #ifdef SQLITE_ENABLE_API_ARMOR
1305   if( nData<0 ) return SQLITE_MISUSE_BKPT;
1306 #endif
1307   return bindText(pStmt, i, zData, nData, xDel, 0);
1308 }
1309 int sqlite3_bind_blob64(
1310   sqlite3_stmt *pStmt,
1311   int i,
1312   const void *zData,
1313   sqlite3_uint64 nData,
1314   void (*xDel)(void*)
1315 ){
1316   assert( xDel!=SQLITE_DYNAMIC );
1317   if( nData>0x7fffffff ){
1318     return invokeValueDestructor(zData, xDel, 0);
1319   }else{
1320     return bindText(pStmt, i, zData, (int)nData, xDel, 0);
1321   }
1322 }
1323 int sqlite3_bind_double(sqlite3_stmt *pStmt, int i, double rValue){
1324   int rc;
1325   Vdbe *p = (Vdbe *)pStmt;
1326   rc = vdbeUnbind(p, i);
1327   if( rc==SQLITE_OK ){
1328     sqlite3VdbeMemSetDouble(&p->aVar[i-1], rValue);
1329     sqlite3_mutex_leave(p->db->mutex);
1330   }
1331   return rc;
1332 }
1333 int sqlite3_bind_int(sqlite3_stmt *p, int i, int iValue){
1334   return sqlite3_bind_int64(p, i, (i64)iValue);
1335 }
1336 int sqlite3_bind_int64(sqlite3_stmt *pStmt, int i, sqlite_int64 iValue){
1337   int rc;
1338   Vdbe *p = (Vdbe *)pStmt;
1339   rc = vdbeUnbind(p, i);
1340   if( rc==SQLITE_OK ){
1341     sqlite3VdbeMemSetInt64(&p->aVar[i-1], iValue);
1342     sqlite3_mutex_leave(p->db->mutex);
1343   }
1344   return rc;
1345 }
1346 int sqlite3_bind_null(sqlite3_stmt *pStmt, int i){
1347   int rc;
1348   Vdbe *p = (Vdbe*)pStmt;
1349   rc = vdbeUnbind(p, i);
1350   if( rc==SQLITE_OK ){
1351     sqlite3_mutex_leave(p->db->mutex);
1352   }
1353   return rc;
1354 }
1355 int sqlite3_bind_text(
1356   sqlite3_stmt *pStmt,
1357   int i,
1358   const char *zData,
1359   int nData,
1360   void (*xDel)(void*)
1361 ){
1362   return bindText(pStmt, i, zData, nData, xDel, SQLITE_UTF8);
1363 }
1364 int sqlite3_bind_text64(
1365   sqlite3_stmt *pStmt,
1366   int i,
1367   const char *zData,
1368   sqlite3_uint64 nData,
1369   void (*xDel)(void*),
1370   unsigned char enc
1371 ){
1372   assert( xDel!=SQLITE_DYNAMIC );
1373   if( nData>0x7fffffff ){
1374     return invokeValueDestructor(zData, xDel, 0);
1375   }else{
1376     if( enc==SQLITE_UTF16 ) enc = SQLITE_UTF16NATIVE;
1377     return bindText(pStmt, i, zData, (int)nData, xDel, enc);
1378   }
1379 }
1380 #ifndef SQLITE_OMIT_UTF16
1381 int sqlite3_bind_text16(
1382   sqlite3_stmt *pStmt,
1383   int i,
1384   const void *zData,
1385   int nData,
1386   void (*xDel)(void*)
1387 ){
1388   return bindText(pStmt, i, zData, nData, xDel, SQLITE_UTF16NATIVE);
1389 }
1390 #endif /* SQLITE_OMIT_UTF16 */
1391 int sqlite3_bind_value(sqlite3_stmt *pStmt, int i, const sqlite3_value *pValue){
1392   int rc;
1393   switch( sqlite3_value_type((sqlite3_value*)pValue) ){
1394     case SQLITE_INTEGER: {
1395       rc = sqlite3_bind_int64(pStmt, i, pValue->u.i);
1396       break;
1397     }
1398     case SQLITE_FLOAT: {
1399       rc = sqlite3_bind_double(pStmt, i, pValue->u.r);
1400       break;
1401     }
1402     case SQLITE_BLOB: {
1403       if( pValue->flags & MEM_Zero ){
1404         rc = sqlite3_bind_zeroblob(pStmt, i, pValue->u.nZero);
1405       }else{
1406         rc = sqlite3_bind_blob(pStmt, i, pValue->z, pValue->n,SQLITE_TRANSIENT);
1407       }
1408       break;
1409     }
1410     case SQLITE_TEXT: {
1411       rc = bindText(pStmt,i,  pValue->z, pValue->n, SQLITE_TRANSIENT,
1412                               pValue->enc);
1413       break;
1414     }
1415     default: {
1416       rc = sqlite3_bind_null(pStmt, i);
1417       break;
1418     }
1419   }
1420   return rc;
1421 }
1422 int sqlite3_bind_zeroblob(sqlite3_stmt *pStmt, int i, int n){
1423   int rc;
1424   Vdbe *p = (Vdbe *)pStmt;
1425   rc = vdbeUnbind(p, i);
1426   if( rc==SQLITE_OK ){
1427     sqlite3VdbeMemSetZeroBlob(&p->aVar[i-1], n);
1428     sqlite3_mutex_leave(p->db->mutex);
1429   }
1430   return rc;
1431 }
1432 int sqlite3_bind_zeroblob64(sqlite3_stmt *pStmt, int i, sqlite3_uint64 n){
1433   int rc;
1434   Vdbe *p = (Vdbe *)pStmt;
1435   sqlite3_mutex_enter(p->db->mutex);
1436   if( n>(u64)p->db->aLimit[SQLITE_LIMIT_LENGTH] ){
1437     rc = SQLITE_TOOBIG;
1438   }else{
1439     assert( (n & 0x7FFFFFFF)==n );
1440     rc = sqlite3_bind_zeroblob(pStmt, i, n);
1441   }
1442   rc = sqlite3ApiExit(p->db, rc);
1443   sqlite3_mutex_leave(p->db->mutex);
1444   return rc;
1445 }
1446 
1447 /*
1448 ** Return the number of wildcards that can be potentially bound to.
1449 ** This routine is added to support DBD::SQLite.
1450 */
1451 int sqlite3_bind_parameter_count(sqlite3_stmt *pStmt){
1452   Vdbe *p = (Vdbe*)pStmt;
1453   return p ? p->nVar : 0;
1454 }
1455 
1456 /*
1457 ** Return the name of a wildcard parameter.  Return NULL if the index
1458 ** is out of range or if the wildcard is unnamed.
1459 **
1460 ** The result is always UTF-8.
1461 */
1462 const char *sqlite3_bind_parameter_name(sqlite3_stmt *pStmt, int i){
1463   Vdbe *p = (Vdbe*)pStmt;
1464   if( p==0 || i<1 || i>p->nzVar ){
1465     return 0;
1466   }
1467   return p->azVar[i-1];
1468 }
1469 
1470 /*
1471 ** Given a wildcard parameter name, return the index of the variable
1472 ** with that name.  If there is no variable with the given name,
1473 ** return 0.
1474 */
1475 int sqlite3VdbeParameterIndex(Vdbe *p, const char *zName, int nName){
1476   int i;
1477   if( p==0 ){
1478     return 0;
1479   }
1480   if( zName ){
1481     for(i=0; i<p->nzVar; i++){
1482       const char *z = p->azVar[i];
1483       if( z && strncmp(z,zName,nName)==0 && z[nName]==0 ){
1484         return i+1;
1485       }
1486     }
1487   }
1488   return 0;
1489 }
1490 int sqlite3_bind_parameter_index(sqlite3_stmt *pStmt, const char *zName){
1491   return sqlite3VdbeParameterIndex((Vdbe*)pStmt, zName, sqlite3Strlen30(zName));
1492 }
1493 
1494 /*
1495 ** Transfer all bindings from the first statement over to the second.
1496 */
1497 int sqlite3TransferBindings(sqlite3_stmt *pFromStmt, sqlite3_stmt *pToStmt){
1498   Vdbe *pFrom = (Vdbe*)pFromStmt;
1499   Vdbe *pTo = (Vdbe*)pToStmt;
1500   int i;
1501   assert( pTo->db==pFrom->db );
1502   assert( pTo->nVar==pFrom->nVar );
1503   sqlite3_mutex_enter(pTo->db->mutex);
1504   for(i=0; i<pFrom->nVar; i++){
1505     sqlite3VdbeMemMove(&pTo->aVar[i], &pFrom->aVar[i]);
1506   }
1507   sqlite3_mutex_leave(pTo->db->mutex);
1508   return SQLITE_OK;
1509 }
1510 
1511 #ifndef SQLITE_OMIT_DEPRECATED
1512 /*
1513 ** Deprecated external interface.  Internal/core SQLite code
1514 ** should call sqlite3TransferBindings.
1515 **
1516 ** It is misuse to call this routine with statements from different
1517 ** database connections.  But as this is a deprecated interface, we
1518 ** will not bother to check for that condition.
1519 **
1520 ** If the two statements contain a different number of bindings, then
1521 ** an SQLITE_ERROR is returned.  Nothing else can go wrong, so otherwise
1522 ** SQLITE_OK is returned.
1523 */
1524 int sqlite3_transfer_bindings(sqlite3_stmt *pFromStmt, sqlite3_stmt *pToStmt){
1525   Vdbe *pFrom = (Vdbe*)pFromStmt;
1526   Vdbe *pTo = (Vdbe*)pToStmt;
1527   if( pFrom->nVar!=pTo->nVar ){
1528     return SQLITE_ERROR;
1529   }
1530   if( pTo->isPrepareV2 && pTo->expmask ){
1531     pTo->expired = 1;
1532   }
1533   if( pFrom->isPrepareV2 && pFrom->expmask ){
1534     pFrom->expired = 1;
1535   }
1536   return sqlite3TransferBindings(pFromStmt, pToStmt);
1537 }
1538 #endif
1539 
1540 /*
1541 ** Return the sqlite3* database handle to which the prepared statement given
1542 ** in the argument belongs.  This is the same database handle that was
1543 ** the first argument to the sqlite3_prepare() that was used to create
1544 ** the statement in the first place.
1545 */
1546 sqlite3 *sqlite3_db_handle(sqlite3_stmt *pStmt){
1547   return pStmt ? ((Vdbe*)pStmt)->db : 0;
1548 }
1549 
1550 /*
1551 ** Return true if the prepared statement is guaranteed to not modify the
1552 ** database.
1553 */
1554 int sqlite3_stmt_readonly(sqlite3_stmt *pStmt){
1555   return pStmt ? ((Vdbe*)pStmt)->readOnly : 1;
1556 }
1557 
1558 /*
1559 ** Return true if the prepared statement is in need of being reset.
1560 */
1561 int sqlite3_stmt_busy(sqlite3_stmt *pStmt){
1562   Vdbe *v = (Vdbe*)pStmt;
1563   return v!=0 && v->pc>=0 && v->magic==VDBE_MAGIC_RUN;
1564 }
1565 
1566 /*
1567 ** Return a pointer to the next prepared statement after pStmt associated
1568 ** with database connection pDb.  If pStmt is NULL, return the first
1569 ** prepared statement for the database connection.  Return NULL if there
1570 ** are no more.
1571 */
1572 sqlite3_stmt *sqlite3_next_stmt(sqlite3 *pDb, sqlite3_stmt *pStmt){
1573   sqlite3_stmt *pNext;
1574 #ifdef SQLITE_ENABLE_API_ARMOR
1575   if( !sqlite3SafetyCheckOk(pDb) ){
1576     (void)SQLITE_MISUSE_BKPT;
1577     return 0;
1578   }
1579 #endif
1580   sqlite3_mutex_enter(pDb->mutex);
1581   if( pStmt==0 ){
1582     pNext = (sqlite3_stmt*)pDb->pVdbe;
1583   }else{
1584     pNext = (sqlite3_stmt*)((Vdbe*)pStmt)->pNext;
1585   }
1586   sqlite3_mutex_leave(pDb->mutex);
1587   return pNext;
1588 }
1589 
1590 /*
1591 ** Return the value of a status counter for a prepared statement
1592 */
1593 int sqlite3_stmt_status(sqlite3_stmt *pStmt, int op, int resetFlag){
1594   Vdbe *pVdbe = (Vdbe*)pStmt;
1595   u32 v;
1596 #ifdef SQLITE_ENABLE_API_ARMOR
1597   if( !pStmt ){
1598     (void)SQLITE_MISUSE_BKPT;
1599     return 0;
1600   }
1601 #endif
1602   v = pVdbe->aCounter[op];
1603   if( resetFlag ) pVdbe->aCounter[op] = 0;
1604   return (int)v;
1605 }
1606 
1607 #ifdef SQLITE_ENABLE_STMT_SCANSTATUS
1608 /*
1609 ** Return status data for a single loop within query pStmt.
1610 */
1611 int sqlite3_stmt_scanstatus(
1612   sqlite3_stmt *pStmt,            /* Prepared statement being queried */
1613   int idx,                        /* Index of loop to report on */
1614   int iScanStatusOp,              /* Which metric to return */
1615   void *pOut                      /* OUT: Write the answer here */
1616 ){
1617   Vdbe *p = (Vdbe*)pStmt;
1618   ScanStatus *pScan;
1619   if( idx<0 || idx>=p->nScan ) return 1;
1620   pScan = &p->aScan[idx];
1621   switch( iScanStatusOp ){
1622     case SQLITE_SCANSTAT_NLOOP: {
1623       *(sqlite3_int64*)pOut = p->anExec[pScan->addrLoop];
1624       break;
1625     }
1626     case SQLITE_SCANSTAT_NVISIT: {
1627       *(sqlite3_int64*)pOut = p->anExec[pScan->addrVisit];
1628       break;
1629     }
1630     case SQLITE_SCANSTAT_EST: {
1631       double r = 1.0;
1632       LogEst x = pScan->nEst;
1633       while( x<100 ){
1634         x += 10;
1635         r *= 0.5;
1636       }
1637       *(double*)pOut = r*sqlite3LogEstToInt(x);
1638       break;
1639     }
1640     case SQLITE_SCANSTAT_NAME: {
1641       *(const char**)pOut = pScan->zName;
1642       break;
1643     }
1644     case SQLITE_SCANSTAT_EXPLAIN: {
1645       if( pScan->addrExplain ){
1646         *(const char**)pOut = p->aOp[ pScan->addrExplain ].p4.z;
1647       }else{
1648         *(const char**)pOut = 0;
1649       }
1650       break;
1651     }
1652     case SQLITE_SCANSTAT_SELECTID: {
1653       if( pScan->addrExplain ){
1654         *(int*)pOut = p->aOp[ pScan->addrExplain ].p1;
1655       }else{
1656         *(int*)pOut = -1;
1657       }
1658       break;
1659     }
1660     default: {
1661       return 1;
1662     }
1663   }
1664   return 0;
1665 }
1666 
1667 /*
1668 ** Zero all counters associated with the sqlite3_stmt_scanstatus() data.
1669 */
1670 void sqlite3_stmt_scanstatus_reset(sqlite3_stmt *pStmt){
1671   Vdbe *p = (Vdbe*)pStmt;
1672   memset(p->anExec, 0, p->nOp * sizeof(i64));
1673 }
1674 #endif /* SQLITE_ENABLE_STMT_SCANSTATUS */
1675