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