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