xref: /sqlite-3.40.0/src/vdbeapi.c (revision 1c826650)
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 ** $Id: vdbeapi.c,v 1.141 2008/09/04 12:03:43 shane Exp $
17 */
18 #include "sqliteInt.h"
19 #include "vdbeInt.h"
20 
21 #if 0 && defined(SQLITE_ENABLE_MEMORY_MANAGEMENT)
22 /*
23 ** The following structure contains pointers to the end points of a
24 ** doubly-linked list of all compiled SQL statements that may be holding
25 ** buffers eligible for release when the sqlite3_release_memory() interface is
26 ** invoked. Access to this list is protected by the SQLITE_MUTEX_STATIC_LRU2
27 ** mutex.
28 **
29 ** Statements are added to the end of this list when sqlite3_reset() is
30 ** called. They are removed either when sqlite3_step() or sqlite3_finalize()
31 ** is called. When statements are added to this list, the associated
32 ** register array (p->aMem[1..p->nMem]) may contain dynamic buffers that
33 ** can be freed using sqlite3VdbeReleaseMemory().
34 **
35 ** When statements are added or removed from this list, the mutex
36 ** associated with the Vdbe being added or removed (Vdbe.db->mutex) is
37 ** already held. The LRU2 mutex is then obtained, blocking if necessary,
38 ** the linked-list pointers manipulated and the LRU2 mutex relinquished.
39 */
40 struct StatementLruList {
41   Vdbe *pFirst;
42   Vdbe *pLast;
43 };
44 static struct StatementLruList sqlite3LruStatements;
45 
46 /*
47 ** Check that the list looks to be internally consistent. This is used
48 ** as part of an assert() statement as follows:
49 **
50 **   assert( stmtLruCheck() );
51 */
52 #ifndef NDEBUG
53 static int stmtLruCheck(){
54   Vdbe *p;
55   for(p=sqlite3LruStatements.pFirst; p; p=p->pLruNext){
56     assert(p->pLruNext || p==sqlite3LruStatements.pLast);
57     assert(!p->pLruNext || p->pLruNext->pLruPrev==p);
58     assert(p->pLruPrev || p==sqlite3LruStatements.pFirst);
59     assert(!p->pLruPrev || p->pLruPrev->pLruNext==p);
60   }
61   return 1;
62 }
63 #endif
64 
65 /*
66 ** Add vdbe p to the end of the statement lru list. It is assumed that
67 ** p is not already part of the list when this is called. The lru list
68 ** is protected by the SQLITE_MUTEX_STATIC_LRU mutex.
69 */
70 static void stmtLruAdd(Vdbe *p){
71   sqlite3_mutex_enter(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_LRU2));
72 
73   if( p->pLruPrev || p->pLruNext || sqlite3LruStatements.pFirst==p ){
74     sqlite3_mutex_leave(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_LRU2));
75     return;
76   }
77 
78   assert( stmtLruCheck() );
79 
80   if( !sqlite3LruStatements.pFirst ){
81     assert( !sqlite3LruStatements.pLast );
82     sqlite3LruStatements.pFirst = p;
83     sqlite3LruStatements.pLast = p;
84   }else{
85     assert( !sqlite3LruStatements.pLast->pLruNext );
86     p->pLruPrev = sqlite3LruStatements.pLast;
87     sqlite3LruStatements.pLast->pLruNext = p;
88     sqlite3LruStatements.pLast = p;
89   }
90 
91   assert( stmtLruCheck() );
92 
93   sqlite3_mutex_leave(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_LRU2));
94 }
95 
96 /*
97 ** Assuming the SQLITE_MUTEX_STATIC_LRU2 mutext is already held, remove
98 ** statement p from the least-recently-used statement list. If the
99 ** statement is not currently part of the list, this call is a no-op.
100 */
101 static void stmtLruRemoveNomutex(Vdbe *p){
102   if( p->pLruPrev || p->pLruNext || p==sqlite3LruStatements.pFirst ){
103     assert( stmtLruCheck() );
104     if( p->pLruNext ){
105       p->pLruNext->pLruPrev = p->pLruPrev;
106     }else{
107       sqlite3LruStatements.pLast = p->pLruPrev;
108     }
109     if( p->pLruPrev ){
110       p->pLruPrev->pLruNext = p->pLruNext;
111     }else{
112       sqlite3LruStatements.pFirst = p->pLruNext;
113     }
114     p->pLruNext = 0;
115     p->pLruPrev = 0;
116     assert( stmtLruCheck() );
117   }
118 }
119 
120 /*
121 ** Assuming the SQLITE_MUTEX_STATIC_LRU2 mutext is not held, remove
122 ** statement p from the least-recently-used statement list. If the
123 ** statement is not currently part of the list, this call is a no-op.
124 */
125 static void stmtLruRemove(Vdbe *p){
126   sqlite3_mutex_enter(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_LRU2));
127   stmtLruRemoveNomutex(p);
128   sqlite3_mutex_leave(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_LRU2));
129 }
130 
131 /*
132 ** Try to release n bytes of memory by freeing buffers associated
133 ** with the memory registers of currently unused vdbes.
134 */
135 int sqlite3VdbeReleaseMemory(int n){
136   Vdbe *p;
137   Vdbe *pNext;
138   int nFree = 0;
139 
140   sqlite3_mutex_enter(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_LRU2));
141   for(p=sqlite3LruStatements.pFirst; p && nFree<n; p=pNext){
142     pNext = p->pLruNext;
143 
144     /* For each statement handle in the lru list, attempt to obtain the
145     ** associated database mutex. If it cannot be obtained, continue
146     ** to the next statement handle. It is not possible to block on
147     ** the database mutex - that could cause deadlock.
148     */
149     if( SQLITE_OK==sqlite3_mutex_try(p->db->mutex) ){
150       nFree += sqlite3VdbeReleaseBuffers(p);
151       stmtLruRemoveNomutex(p);
152       sqlite3_mutex_leave(p->db->mutex);
153     }
154   }
155   sqlite3_mutex_leave(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_LRU2));
156 
157   return nFree;
158 }
159 
160 /*
161 ** Call sqlite3Reprepare() on the statement. Remove it from the
162 ** lru list before doing so, as Reprepare() will free all the
163 ** memory register buffers anyway.
164 */
165 int vdbeReprepare(Vdbe *p){
166   stmtLruRemove(p);
167   return sqlite3Reprepare(p);
168 }
169 
170 #else       /* !SQLITE_ENABLE_MEMORY_MANAGEMENT */
171   #define stmtLruRemove(x)
172   #define stmtLruAdd(x)
173   #define vdbeReprepare(x) sqlite3Reprepare(x)
174 #endif
175 
176 
177 /*
178 ** Return TRUE (non-zero) of the statement supplied as an argument needs
179 ** to be recompiled.  A statement needs to be recompiled whenever the
180 ** execution environment changes in a way that would alter the program
181 ** that sqlite3_prepare() generates.  For example, if new functions or
182 ** collating sequences are registered or if an authorizer function is
183 ** added or changed.
184 */
185 int sqlite3_expired(sqlite3_stmt *pStmt){
186   Vdbe *p = (Vdbe*)pStmt;
187   return p==0 || p->expired;
188 }
189 
190 /*
191 ** The following routine destroys a virtual machine that is created by
192 ** the sqlite3_compile() routine. The integer returned is an SQLITE_
193 ** success/failure code that describes the result of executing the virtual
194 ** machine.
195 **
196 ** This routine sets the error code and string returned by
197 ** sqlite3_errcode(), sqlite3_errmsg() and sqlite3_errmsg16().
198 */
199 int sqlite3_finalize(sqlite3_stmt *pStmt){
200   int rc;
201   if( pStmt==0 ){
202     rc = SQLITE_OK;
203   }else{
204     Vdbe *v = (Vdbe*)pStmt;
205 #ifndef SQLITE_MUTEX_NOOP
206     sqlite3_mutex *mutex = v->db->mutex;
207 #endif
208     sqlite3_mutex_enter(mutex);
209     stmtLruRemove(v);
210     rc = sqlite3VdbeFinalize(v);
211     sqlite3_mutex_leave(mutex);
212   }
213   return rc;
214 }
215 
216 /*
217 ** Terminate the current execution of an SQL statement and reset it
218 ** back to its starting state so that it can be reused. A success code from
219 ** the prior execution is returned.
220 **
221 ** This routine sets the error code and string returned by
222 ** sqlite3_errcode(), sqlite3_errmsg() and sqlite3_errmsg16().
223 */
224 int sqlite3_reset(sqlite3_stmt *pStmt){
225   int rc;
226   if( pStmt==0 ){
227     rc = SQLITE_OK;
228   }else{
229     Vdbe *v = (Vdbe*)pStmt;
230     sqlite3_mutex_enter(v->db->mutex);
231     rc = sqlite3VdbeReset(v);
232     stmtLruAdd(v);
233     sqlite3VdbeMakeReady(v, -1, 0, 0, 0);
234     assert( (rc & (v->db->errMask))==rc );
235     sqlite3_mutex_leave(v->db->mutex);
236   }
237   return rc;
238 }
239 
240 /*
241 ** Set all the parameters in the compiled SQL statement to NULL.
242 */
243 int sqlite3_clear_bindings(sqlite3_stmt *pStmt){
244   int i;
245   int rc = SQLITE_OK;
246   Vdbe *p = (Vdbe*)pStmt;
247 #ifndef SQLITE_MUTEX_NOOP
248   sqlite3_mutex *mutex = ((Vdbe*)pStmt)->db->mutex;
249 #endif
250   sqlite3_mutex_enter(mutex);
251   for(i=0; i<p->nVar; i++){
252     sqlite3VdbeMemRelease(&p->aVar[i]);
253     p->aVar[i].flags = MEM_Null;
254   }
255   sqlite3_mutex_leave(mutex);
256   return rc;
257 }
258 
259 
260 /**************************** sqlite3_value_  *******************************
261 ** The following routines extract information from a Mem or sqlite3_value
262 ** structure.
263 */
264 const void *sqlite3_value_blob(sqlite3_value *pVal){
265   Mem *p = (Mem*)pVal;
266   if( p->flags & (MEM_Blob|MEM_Str) ){
267     sqlite3VdbeMemExpandBlob(p);
268     p->flags &= ~MEM_Str;
269     p->flags |= MEM_Blob;
270     return p->z;
271   }else{
272     return sqlite3_value_text(pVal);
273   }
274 }
275 int sqlite3_value_bytes(sqlite3_value *pVal){
276   return sqlite3ValueBytes(pVal, SQLITE_UTF8);
277 }
278 int sqlite3_value_bytes16(sqlite3_value *pVal){
279   return sqlite3ValueBytes(pVal, SQLITE_UTF16NATIVE);
280 }
281 double sqlite3_value_double(sqlite3_value *pVal){
282   return sqlite3VdbeRealValue((Mem*)pVal);
283 }
284 int sqlite3_value_int(sqlite3_value *pVal){
285   return sqlite3VdbeIntValue((Mem*)pVal);
286 }
287 sqlite_int64 sqlite3_value_int64(sqlite3_value *pVal){
288   return sqlite3VdbeIntValue((Mem*)pVal);
289 }
290 const unsigned char *sqlite3_value_text(sqlite3_value *pVal){
291   return (const unsigned char *)sqlite3ValueText(pVal, SQLITE_UTF8);
292 }
293 #ifndef SQLITE_OMIT_UTF16
294 const void *sqlite3_value_text16(sqlite3_value* pVal){
295   return sqlite3ValueText(pVal, SQLITE_UTF16NATIVE);
296 }
297 const void *sqlite3_value_text16be(sqlite3_value *pVal){
298   return sqlite3ValueText(pVal, SQLITE_UTF16BE);
299 }
300 const void *sqlite3_value_text16le(sqlite3_value *pVal){
301   return sqlite3ValueText(pVal, SQLITE_UTF16LE);
302 }
303 #endif /* SQLITE_OMIT_UTF16 */
304 int sqlite3_value_type(sqlite3_value* pVal){
305   return pVal->type;
306 }
307 
308 /**************************** sqlite3_result_  *******************************
309 ** The following routines are used by user-defined functions to specify
310 ** the function result.
311 */
312 void sqlite3_result_blob(
313   sqlite3_context *pCtx,
314   const void *z,
315   int n,
316   void (*xDel)(void *)
317 ){
318   assert( n>=0 );
319   assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
320   sqlite3VdbeMemSetStr(&pCtx->s, z, n, 0, xDel);
321 }
322 void sqlite3_result_double(sqlite3_context *pCtx, double rVal){
323   assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
324   sqlite3VdbeMemSetDouble(&pCtx->s, rVal);
325 }
326 void sqlite3_result_error(sqlite3_context *pCtx, const char *z, int n){
327   assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
328   pCtx->isError = SQLITE_ERROR;
329   sqlite3VdbeMemSetStr(&pCtx->s, z, n, SQLITE_UTF8, SQLITE_TRANSIENT);
330 }
331 #ifndef SQLITE_OMIT_UTF16
332 void sqlite3_result_error16(sqlite3_context *pCtx, const void *z, int n){
333   assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
334   pCtx->isError = SQLITE_ERROR;
335   sqlite3VdbeMemSetStr(&pCtx->s, z, n, SQLITE_UTF16NATIVE, SQLITE_TRANSIENT);
336 }
337 #endif
338 void sqlite3_result_int(sqlite3_context *pCtx, int iVal){
339   assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
340   sqlite3VdbeMemSetInt64(&pCtx->s, (i64)iVal);
341 }
342 void sqlite3_result_int64(sqlite3_context *pCtx, i64 iVal){
343   assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
344   sqlite3VdbeMemSetInt64(&pCtx->s, iVal);
345 }
346 void sqlite3_result_null(sqlite3_context *pCtx){
347   assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
348   sqlite3VdbeMemSetNull(&pCtx->s);
349 }
350 void sqlite3_result_text(
351   sqlite3_context *pCtx,
352   const char *z,
353   int n,
354   void (*xDel)(void *)
355 ){
356   assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
357   sqlite3VdbeMemSetStr(&pCtx->s, z, n, SQLITE_UTF8, xDel);
358 }
359 #ifndef SQLITE_OMIT_UTF16
360 void sqlite3_result_text16(
361   sqlite3_context *pCtx,
362   const void *z,
363   int n,
364   void (*xDel)(void *)
365 ){
366   assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
367   sqlite3VdbeMemSetStr(&pCtx->s, z, n, SQLITE_UTF16NATIVE, xDel);
368 }
369 void sqlite3_result_text16be(
370   sqlite3_context *pCtx,
371   const void *z,
372   int n,
373   void (*xDel)(void *)
374 ){
375   assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
376   sqlite3VdbeMemSetStr(&pCtx->s, z, n, SQLITE_UTF16BE, xDel);
377 }
378 void sqlite3_result_text16le(
379   sqlite3_context *pCtx,
380   const void *z,
381   int n,
382   void (*xDel)(void *)
383 ){
384   assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
385   sqlite3VdbeMemSetStr(&pCtx->s, z, n, SQLITE_UTF16LE, xDel);
386 }
387 #endif /* SQLITE_OMIT_UTF16 */
388 void sqlite3_result_value(sqlite3_context *pCtx, sqlite3_value *pValue){
389   assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
390   sqlite3VdbeMemCopy(&pCtx->s, pValue);
391 }
392 void sqlite3_result_zeroblob(sqlite3_context *pCtx, int n){
393   assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
394   sqlite3VdbeMemSetZeroBlob(&pCtx->s, n);
395 }
396 void sqlite3_result_error_code(sqlite3_context *pCtx, int errCode){
397   pCtx->isError = errCode;
398 }
399 
400 /* Force an SQLITE_TOOBIG error. */
401 void sqlite3_result_error_toobig(sqlite3_context *pCtx){
402   assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
403   pCtx->isError = SQLITE_TOOBIG;
404   sqlite3VdbeMemSetStr(&pCtx->s, "string or blob too big", -1,
405                        SQLITE_UTF8, SQLITE_STATIC);
406 }
407 
408 /* An SQLITE_NOMEM error. */
409 void sqlite3_result_error_nomem(sqlite3_context *pCtx){
410   assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
411   sqlite3VdbeMemSetNull(&pCtx->s);
412   pCtx->isError = SQLITE_NOMEM;
413   pCtx->s.db->mallocFailed = 1;
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     return SQLITE_MISUSE;
432   }
433 
434   /* Assert that malloc() has not failed */
435   db = p->db;
436   if( db->mallocFailed ){
437     return SQLITE_NOMEM;
438   }
439 
440   if( p->pc<=0 && p->expired ){
441     if( p->rc==SQLITE_OK ){
442       p->rc = SQLITE_SCHEMA;
443     }
444     rc = SQLITE_ERROR;
445     goto end_of_step;
446   }
447   if( sqlite3SafetyOn(db) ){
448     p->rc = SQLITE_MISUSE;
449     return SQLITE_MISUSE;
450   }
451   if( p->pc<0 ){
452     /* If there are no other statements currently running, then
453     ** reset the interrupt flag.  This prevents a call to sqlite3_interrupt
454     ** from interrupting a statement that has not yet started.
455     */
456     if( db->activeVdbeCnt==0 ){
457       db->u1.isInterrupted = 0;
458     }
459 
460 #ifndef SQLITE_OMIT_TRACE
461     if( db->xProfile && !db->init.busy ){
462       double rNow;
463       sqlite3OsCurrentTime(db->pVfs, &rNow);
464       p->startTime = (rNow - (int)rNow)*3600.0*24.0*1000000000.0;
465     }
466 #endif
467 
468     db->activeVdbeCnt++;
469     p->pc = 0;
470     stmtLruRemove(p);
471   }
472 #ifndef SQLITE_OMIT_EXPLAIN
473   if( p->explain ){
474     rc = sqlite3VdbeList(p);
475   }else
476 #endif /* SQLITE_OMIT_EXPLAIN */
477   {
478     rc = sqlite3VdbeExec(p);
479   }
480 
481   if( sqlite3SafetyOff(db) ){
482     rc = SQLITE_MISUSE;
483   }
484 
485 #ifndef SQLITE_OMIT_TRACE
486   /* Invoke the profile callback if there is one
487   */
488   if( rc!=SQLITE_ROW && db->xProfile && !db->init.busy && p->nOp>0
489            && p->aOp[0].opcode==OP_Trace && p->aOp[0].p4.z!=0 ){
490     double rNow;
491     u64 elapseTime;
492 
493     sqlite3OsCurrentTime(db->pVfs, &rNow);
494     elapseTime = (rNow - (int)rNow)*3600.0*24.0*1000000000.0 - p->startTime;
495     db->xProfile(db->pProfileArg, p->aOp[0].p4.z, elapseTime);
496   }
497 #endif
498 
499   db->errCode = rc;
500   /*sqlite3Error(p->db, rc, 0);*/
501   p->rc = sqlite3ApiExit(p->db, p->rc);
502 end_of_step:
503   assert( (rc&0xff)==rc );
504   if( p->zSql && (rc&0xff)<SQLITE_ROW ){
505     /* This behavior occurs if sqlite3_prepare_v2() was used to build
506     ** the prepared statement.  Return error codes directly */
507     p->db->errCode = p->rc;
508     /* sqlite3Error(p->db, p->rc, 0); */
509     return p->rc;
510   }else{
511     /* This is for legacy sqlite3_prepare() builds and when the code
512     ** is SQLITE_ROW or SQLITE_DONE */
513     return rc;
514   }
515 }
516 
517 /*
518 ** This is the top-level implementation of sqlite3_step().  Call
519 ** sqlite3Step() to do most of the work.  If a schema error occurs,
520 ** call sqlite3Reprepare() and try again.
521 */
522 #ifdef SQLITE_OMIT_PARSER
523 int sqlite3_step(sqlite3_stmt *pStmt){
524   int rc = SQLITE_MISUSE;
525   if( pStmt ){
526     Vdbe *v;
527     v = (Vdbe*)pStmt;
528     sqlite3_mutex_enter(v->db->mutex);
529     rc = sqlite3Step(v);
530     sqlite3_mutex_leave(v->db->mutex);
531   }
532   return rc;
533 }
534 #else
535 int sqlite3_step(sqlite3_stmt *pStmt){
536   int rc = SQLITE_MISUSE;
537   if( pStmt ){
538     int cnt = 0;
539     Vdbe *v = (Vdbe*)pStmt;
540     sqlite3 *db = v->db;
541     sqlite3_mutex_enter(db->mutex);
542     while( (rc = sqlite3Step(v))==SQLITE_SCHEMA
543            && cnt++ < 5
544            && vdbeReprepare(v) ){
545       sqlite3_reset(pStmt);
546       v->expired = 0;
547     }
548     if( rc==SQLITE_SCHEMA && v->zSql && db->pErr ){
549       /* This case occurs after failing to recompile an sql statement.
550       ** The error message from the SQL compiler has already been loaded
551       ** into the database handle. This block copies the error message
552       ** from the database handle into the statement and sets the statement
553       ** program counter to 0 to ensure that when the statement is
554       ** finalized or reset the parser error message is available via
555       ** sqlite3_errmsg() and sqlite3_errcode().
556       */
557       const char *zErr = (const char *)sqlite3_value_text(db->pErr);
558       sqlite3DbFree(db, v->zErrMsg);
559       if( !db->mallocFailed ){
560         v->zErrMsg = sqlite3DbStrDup(db, zErr);
561       } else {
562         v->zErrMsg = 0;
563         v->rc = SQLITE_NOMEM;
564       }
565     }
566     rc = sqlite3ApiExit(db, rc);
567     sqlite3_mutex_leave(db->mutex);
568   }
569   return rc;
570 }
571 #endif
572 
573 /*
574 ** Extract the user data from a sqlite3_context structure and return a
575 ** pointer to it.
576 */
577 void *sqlite3_user_data(sqlite3_context *p){
578   assert( p && p->pFunc );
579   return p->pFunc->pUserData;
580 }
581 
582 /*
583 ** Extract the user data from a sqlite3_context structure and return a
584 ** pointer to it.
585 */
586 sqlite3 *sqlite3_context_db_handle(sqlite3_context *p){
587   assert( p && p->pFunc );
588   return p->s.db;
589 }
590 
591 /*
592 ** The following is the implementation of an SQL function that always
593 ** fails with an error message stating that the function is used in the
594 ** wrong context.  The sqlite3_overload_function() API might construct
595 ** SQL function that use this routine so that the functions will exist
596 ** for name resolution but are actually overloaded by the xFindFunction
597 ** method of virtual tables.
598 */
599 void sqlite3InvalidFunction(
600   sqlite3_context *context,  /* The function calling context */
601   int argc,                  /* Number of arguments to the function */
602   sqlite3_value **argv       /* Value of each argument */
603 ){
604   const char *zName = context->pFunc->zName;
605   char *zErr;
606   zErr = sqlite3MPrintf(0,
607       "unable to use function %s in the requested context", zName);
608   sqlite3_result_error(context, zErr, -1);
609   sqlite3_free(zErr);
610 }
611 
612 /*
613 ** Allocate or return the aggregate context for a user function.  A new
614 ** context is allocated on the first call.  Subsequent calls return the
615 ** same context that was returned on prior calls.
616 */
617 void *sqlite3_aggregate_context(sqlite3_context *p, int nByte){
618   Mem *pMem;
619   assert( p && p->pFunc && p->pFunc->xStep );
620   assert( sqlite3_mutex_held(p->s.db->mutex) );
621   pMem = p->pMem;
622   if( (pMem->flags & MEM_Agg)==0 ){
623     if( nByte==0 ){
624       sqlite3VdbeMemReleaseExternal(pMem);
625       pMem->flags = MEM_Null;
626       pMem->z = 0;
627     }else{
628       sqlite3VdbeMemGrow(pMem, nByte, 0);
629       pMem->flags = MEM_Agg;
630       pMem->u.pDef = p->pFunc;
631       if( pMem->z ){
632         memset(pMem->z, 0, nByte);
633       }
634     }
635   }
636   return (void*)pMem->z;
637 }
638 
639 /*
640 ** Return the auxilary data pointer, if any, for the iArg'th argument to
641 ** the user-function defined by pCtx.
642 */
643 void *sqlite3_get_auxdata(sqlite3_context *pCtx, int iArg){
644   VdbeFunc *pVdbeFunc;
645 
646   assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
647   pVdbeFunc = pCtx->pVdbeFunc;
648   if( !pVdbeFunc || iArg>=pVdbeFunc->nAux || iArg<0 ){
649     return 0;
650   }
651   return pVdbeFunc->apAux[iArg].pAux;
652 }
653 
654 /*
655 ** Set the auxilary data pointer and delete function, for the iArg'th
656 ** argument to the user-function defined by pCtx. Any previous value is
657 ** deleted by calling the delete function specified when it was set.
658 */
659 void sqlite3_set_auxdata(
660   sqlite3_context *pCtx,
661   int iArg,
662   void *pAux,
663   void (*xDelete)(void*)
664 ){
665   struct AuxData *pAuxData;
666   VdbeFunc *pVdbeFunc;
667   if( iArg<0 ) goto failed;
668 
669   assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
670   pVdbeFunc = pCtx->pVdbeFunc;
671   if( !pVdbeFunc || pVdbeFunc->nAux<=iArg ){
672     int nAux = (pVdbeFunc ? pVdbeFunc->nAux : 0);
673     int nMalloc = sizeof(VdbeFunc) + sizeof(struct AuxData)*iArg;
674     pVdbeFunc = sqlite3DbRealloc(pCtx->s.db, pVdbeFunc, nMalloc);
675     if( !pVdbeFunc ){
676       goto failed;
677     }
678     pCtx->pVdbeFunc = pVdbeFunc;
679     memset(&pVdbeFunc->apAux[nAux], 0, sizeof(struct AuxData)*(iArg+1-nAux));
680     pVdbeFunc->nAux = iArg+1;
681     pVdbeFunc->pFunc = pCtx->pFunc;
682   }
683 
684   pAuxData = &pVdbeFunc->apAux[iArg];
685   if( pAuxData->pAux && pAuxData->xDelete ){
686     pAuxData->xDelete(pAuxData->pAux);
687   }
688   pAuxData->pAux = pAux;
689   pAuxData->xDelete = xDelete;
690   return;
691 
692 failed:
693   if( xDelete ){
694     xDelete(pAux);
695   }
696 }
697 
698 /*
699 ** Return the number of times the Step function of a aggregate has been
700 ** called.
701 **
702 ** This function is deprecated.  Do not use it for new code.  It is
703 ** provide only to avoid breaking legacy code.  New aggregate function
704 ** implementations should keep their own counts within their aggregate
705 ** context.
706 */
707 int sqlite3_aggregate_count(sqlite3_context *p){
708   assert( p && p->pFunc && p->pFunc->xStep );
709   return p->pMem->n;
710 }
711 
712 /*
713 ** Return the number of columns in the result set for the statement pStmt.
714 */
715 int sqlite3_column_count(sqlite3_stmt *pStmt){
716   Vdbe *pVm = (Vdbe *)pStmt;
717   return pVm ? pVm->nResColumn : 0;
718 }
719 
720 /*
721 ** Return the number of values available from the current row of the
722 ** currently executing statement pStmt.
723 */
724 int sqlite3_data_count(sqlite3_stmt *pStmt){
725   Vdbe *pVm = (Vdbe *)pStmt;
726   if( pVm==0 || pVm->pResultSet==0 ) return 0;
727   return pVm->nResColumn;
728 }
729 
730 
731 /*
732 ** Check to see if column iCol of the given statement is valid.  If
733 ** it is, return a pointer to the Mem for the value of that column.
734 ** If iCol is not valid, return a pointer to a Mem which has a value
735 ** of NULL.
736 */
737 static Mem *columnMem(sqlite3_stmt *pStmt, int i){
738   Vdbe *pVm;
739   int vals;
740   Mem *pOut;
741 
742   pVm = (Vdbe *)pStmt;
743   if( pVm && pVm->pResultSet!=0 && i<pVm->nResColumn && i>=0 ){
744     sqlite3_mutex_enter(pVm->db->mutex);
745     vals = sqlite3_data_count(pStmt);
746     pOut = &pVm->pResultSet[i];
747   }else{
748     static const Mem nullMem = {{0}, 0.0, 0, "", 0, MEM_Null, SQLITE_NULL, 0, 0, 0 };
749     if( pVm->db ){
750       sqlite3_mutex_enter(pVm->db->mutex);
751       sqlite3Error(pVm->db, SQLITE_RANGE, 0);
752     }
753     pOut = (Mem*)&nullMem;
754   }
755   return pOut;
756 }
757 
758 /*
759 ** This function is called after invoking an sqlite3_value_XXX function on a
760 ** column value (i.e. a value returned by evaluating an SQL expression in the
761 ** select list of a SELECT statement) that may cause a malloc() failure. If
762 ** malloc() has failed, the threads mallocFailed flag is cleared and the result
763 ** code of statement pStmt set to SQLITE_NOMEM.
764 **
765 ** Specifically, this is called from within:
766 **
767 **     sqlite3_column_int()
768 **     sqlite3_column_int64()
769 **     sqlite3_column_text()
770 **     sqlite3_column_text16()
771 **     sqlite3_column_real()
772 **     sqlite3_column_bytes()
773 **     sqlite3_column_bytes16()
774 **
775 ** But not for sqlite3_column_blob(), which never calls malloc().
776 */
777 static void columnMallocFailure(sqlite3_stmt *pStmt)
778 {
779   /* If malloc() failed during an encoding conversion within an
780   ** sqlite3_column_XXX API, then set the return code of the statement to
781   ** SQLITE_NOMEM. The next call to _step() (if any) will return SQLITE_ERROR
782   ** and _finalize() will return NOMEM.
783   */
784   Vdbe *p = (Vdbe *)pStmt;
785   if( p ){
786     p->rc = sqlite3ApiExit(p->db, p->rc);
787     sqlite3_mutex_leave(p->db->mutex);
788   }
789 }
790 
791 /**************************** sqlite3_column_  *******************************
792 ** The following routines are used to access elements of the current row
793 ** in the result set.
794 */
795 const void *sqlite3_column_blob(sqlite3_stmt *pStmt, int i){
796   const void *val;
797   val = sqlite3_value_blob( columnMem(pStmt,i) );
798   /* Even though there is no encoding conversion, value_blob() might
799   ** need to call malloc() to expand the result of a zeroblob()
800   ** expression.
801   */
802   columnMallocFailure(pStmt);
803   return val;
804 }
805 int sqlite3_column_bytes(sqlite3_stmt *pStmt, int i){
806   int val = sqlite3_value_bytes( columnMem(pStmt,i) );
807   columnMallocFailure(pStmt);
808   return val;
809 }
810 int sqlite3_column_bytes16(sqlite3_stmt *pStmt, int i){
811   int val = sqlite3_value_bytes16( columnMem(pStmt,i) );
812   columnMallocFailure(pStmt);
813   return val;
814 }
815 double sqlite3_column_double(sqlite3_stmt *pStmt, int i){
816   double val = sqlite3_value_double( columnMem(pStmt,i) );
817   columnMallocFailure(pStmt);
818   return val;
819 }
820 int sqlite3_column_int(sqlite3_stmt *pStmt, int i){
821   int val = sqlite3_value_int( columnMem(pStmt,i) );
822   columnMallocFailure(pStmt);
823   return val;
824 }
825 sqlite_int64 sqlite3_column_int64(sqlite3_stmt *pStmt, int i){
826   sqlite_int64 val = sqlite3_value_int64( columnMem(pStmt,i) );
827   columnMallocFailure(pStmt);
828   return val;
829 }
830 const unsigned char *sqlite3_column_text(sqlite3_stmt *pStmt, int i){
831   const unsigned char *val = sqlite3_value_text( columnMem(pStmt,i) );
832   columnMallocFailure(pStmt);
833   return val;
834 }
835 sqlite3_value *sqlite3_column_value(sqlite3_stmt *pStmt, int i){
836   sqlite3_value *pOut = columnMem(pStmt, i);
837   columnMallocFailure(pStmt);
838   return pOut;
839 }
840 #ifndef SQLITE_OMIT_UTF16
841 const void *sqlite3_column_text16(sqlite3_stmt *pStmt, int i){
842   const void *val = sqlite3_value_text16( columnMem(pStmt,i) );
843   columnMallocFailure(pStmt);
844   return val;
845 }
846 #endif /* SQLITE_OMIT_UTF16 */
847 int sqlite3_column_type(sqlite3_stmt *pStmt, int i){
848   int iType = sqlite3_value_type( columnMem(pStmt,i) );
849   columnMallocFailure(pStmt);
850   return iType;
851 }
852 
853 /* The following function is experimental and subject to change or
854 ** removal */
855 /*int sqlite3_column_numeric_type(sqlite3_stmt *pStmt, int i){
856 **  return sqlite3_value_numeric_type( columnMem(pStmt,i) );
857 **}
858 */
859 
860 /*
861 ** Convert the N-th element of pStmt->pColName[] into a string using
862 ** xFunc() then return that string.  If N is out of range, return 0.
863 **
864 ** There are up to 5 names for each column.  useType determines which
865 ** name is returned.  Here are the names:
866 **
867 **    0      The column name as it should be displayed for output
868 **    1      The datatype name for the column
869 **    2      The name of the database that the column derives from
870 **    3      The name of the table that the column derives from
871 **    4      The name of the table column that the result column derives from
872 **
873 ** If the result is not a simple column reference (if it is an expression
874 ** or a constant) then useTypes 2, 3, and 4 return NULL.
875 */
876 static const void *columnName(
877   sqlite3_stmt *pStmt,
878   int N,
879   const void *(*xFunc)(Mem*),
880   int useType
881 ){
882   const void *ret = 0;
883   Vdbe *p = (Vdbe *)pStmt;
884   int n;
885 
886 
887   if( p!=0 ){
888     n = sqlite3_column_count(pStmt);
889     if( N<n && N>=0 ){
890       N += useType*n;
891       sqlite3_mutex_enter(p->db->mutex);
892       ret = xFunc(&p->aColName[N]);
893 
894       /* A malloc may have failed inside of the xFunc() call. If this
895       ** is the case, clear the mallocFailed flag and return NULL.
896       */
897       if( p->db && p->db->mallocFailed ){
898         p->db->mallocFailed = 0;
899         ret = 0;
900       }
901       sqlite3_mutex_leave(p->db->mutex);
902     }
903   }
904   return ret;
905 }
906 
907 /*
908 ** Return the name of the Nth column of the result set returned by SQL
909 ** statement pStmt.
910 */
911 const char *sqlite3_column_name(sqlite3_stmt *pStmt, int N){
912   return columnName(
913       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_NAME);
914 }
915 #ifndef SQLITE_OMIT_UTF16
916 const void *sqlite3_column_name16(sqlite3_stmt *pStmt, int N){
917   return columnName(
918       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_NAME);
919 }
920 #endif
921 
922 /*
923 ** Constraint:  If you have ENABLE_COLUMN_METADATA then you must
924 ** not define OMIT_DECLTYPE.
925 */
926 #if defined(SQLITE_OMIT_DECLTYPE) && defined(SQLITE_ENABLE_COLUMN_METADATA)
927 # error "Must not define both SQLITE_OMIT_DECLTYPE \
928          and SQLITE_ENABLE_COLUMN_METADATA"
929 #endif
930 
931 #ifndef SQLITE_OMIT_DECLTYPE
932 /*
933 ** Return the column declaration type (if applicable) of the 'i'th column
934 ** of the result set of SQL statement pStmt.
935 */
936 const char *sqlite3_column_decltype(sqlite3_stmt *pStmt, int N){
937   return columnName(
938       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_DECLTYPE);
939 }
940 #ifndef SQLITE_OMIT_UTF16
941 const void *sqlite3_column_decltype16(sqlite3_stmt *pStmt, int N){
942   return columnName(
943       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_DECLTYPE);
944 }
945 #endif /* SQLITE_OMIT_UTF16 */
946 #endif /* SQLITE_OMIT_DECLTYPE */
947 
948 #ifdef SQLITE_ENABLE_COLUMN_METADATA
949 /*
950 ** Return the name of the database from which a result column derives.
951 ** NULL is returned if the result column is an expression or constant or
952 ** anything else which is not an unabiguous reference to a database column.
953 */
954 const char *sqlite3_column_database_name(sqlite3_stmt *pStmt, int N){
955   return columnName(
956       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_DATABASE);
957 }
958 #ifndef SQLITE_OMIT_UTF16
959 const void *sqlite3_column_database_name16(sqlite3_stmt *pStmt, int N){
960   return columnName(
961       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_DATABASE);
962 }
963 #endif /* SQLITE_OMIT_UTF16 */
964 
965 /*
966 ** Return the name of the table from which a result column derives.
967 ** NULL is returned if the result column is an expression or constant or
968 ** anything else which is not an unabiguous reference to a database column.
969 */
970 const char *sqlite3_column_table_name(sqlite3_stmt *pStmt, int N){
971   return columnName(
972       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_TABLE);
973 }
974 #ifndef SQLITE_OMIT_UTF16
975 const void *sqlite3_column_table_name16(sqlite3_stmt *pStmt, int N){
976   return columnName(
977       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_TABLE);
978 }
979 #endif /* SQLITE_OMIT_UTF16 */
980 
981 /*
982 ** Return the name of the table column from which a result column derives.
983 ** NULL is returned if the result column is an expression or constant or
984 ** anything else which is not an unabiguous reference to a database column.
985 */
986 const char *sqlite3_column_origin_name(sqlite3_stmt *pStmt, int N){
987   return columnName(
988       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_COLUMN);
989 }
990 #ifndef SQLITE_OMIT_UTF16
991 const void *sqlite3_column_origin_name16(sqlite3_stmt *pStmt, int N){
992   return columnName(
993       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_COLUMN);
994 }
995 #endif /* SQLITE_OMIT_UTF16 */
996 #endif /* SQLITE_ENABLE_COLUMN_METADATA */
997 
998 
999 /******************************* sqlite3_bind_  ***************************
1000 **
1001 ** Routines used to attach values to wildcards in a compiled SQL statement.
1002 */
1003 /*
1004 ** Unbind the value bound to variable i in virtual machine p. This is the
1005 ** the same as binding a NULL value to the column. If the "i" parameter is
1006 ** out of range, then SQLITE_RANGE is returned. Othewise SQLITE_OK.
1007 **
1008 ** The error code stored in database p->db is overwritten with the return
1009 ** value in any case.
1010 */
1011 static int vdbeUnbind(Vdbe *p, int i){
1012   Mem *pVar;
1013   if( p==0 || p->magic!=VDBE_MAGIC_RUN || p->pc>=0 ){
1014     if( p ) sqlite3Error(p->db, SQLITE_MISUSE, 0);
1015     return SQLITE_MISUSE;
1016   }
1017   if( i<1 || i>p->nVar ){
1018     sqlite3Error(p->db, SQLITE_RANGE, 0);
1019     return SQLITE_RANGE;
1020   }
1021   i--;
1022   pVar = &p->aVar[i];
1023   sqlite3VdbeMemRelease(pVar);
1024   pVar->flags = MEM_Null;
1025   sqlite3Error(p->db, SQLITE_OK, 0);
1026   return SQLITE_OK;
1027 }
1028 
1029 /*
1030 ** Bind a text or BLOB value.
1031 */
1032 static int bindText(
1033   sqlite3_stmt *pStmt,   /* The statement to bind against */
1034   int i,                 /* Index of the parameter to bind */
1035   const void *zData,     /* Pointer to the data to be bound */
1036   int nData,             /* Number of bytes of data to be bound */
1037   void (*xDel)(void*),   /* Destructor for the data */
1038   int encoding           /* Encoding for the data */
1039 ){
1040   Vdbe *p = (Vdbe *)pStmt;
1041   Mem *pVar;
1042   int rc;
1043 
1044   if( p==0 ){
1045     return SQLITE_MISUSE;
1046   }
1047   sqlite3_mutex_enter(p->db->mutex);
1048   rc = vdbeUnbind(p, i);
1049   if( rc==SQLITE_OK && zData!=0 ){
1050     pVar = &p->aVar[i-1];
1051     rc = sqlite3VdbeMemSetStr(pVar, zData, nData, encoding, xDel);
1052     if( rc==SQLITE_OK && encoding!=0 ){
1053       rc = sqlite3VdbeChangeEncoding(pVar, ENC(p->db));
1054     }
1055     sqlite3Error(p->db, rc, 0);
1056     rc = sqlite3ApiExit(p->db, rc);
1057   }
1058   sqlite3_mutex_leave(p->db->mutex);
1059   return rc;
1060 }
1061 
1062 
1063 /*
1064 ** Bind a blob value to an SQL statement variable.
1065 */
1066 int sqlite3_bind_blob(
1067   sqlite3_stmt *pStmt,
1068   int i,
1069   const void *zData,
1070   int nData,
1071   void (*xDel)(void*)
1072 ){
1073   return bindText(pStmt, i, zData, nData, xDel, 0);
1074 }
1075 int sqlite3_bind_double(sqlite3_stmt *pStmt, int i, double rValue){
1076   int rc;
1077   Vdbe *p = (Vdbe *)pStmt;
1078   sqlite3_mutex_enter(p->db->mutex);
1079   rc = vdbeUnbind(p, i);
1080   if( rc==SQLITE_OK ){
1081     sqlite3VdbeMemSetDouble(&p->aVar[i-1], rValue);
1082   }
1083   sqlite3_mutex_leave(p->db->mutex);
1084   return rc;
1085 }
1086 int sqlite3_bind_int(sqlite3_stmt *p, int i, int iValue){
1087   return sqlite3_bind_int64(p, i, (i64)iValue);
1088 }
1089 int sqlite3_bind_int64(sqlite3_stmt *pStmt, int i, sqlite_int64 iValue){
1090   int rc;
1091   Vdbe *p = (Vdbe *)pStmt;
1092   sqlite3_mutex_enter(p->db->mutex);
1093   rc = vdbeUnbind(p, i);
1094   if( rc==SQLITE_OK ){
1095     sqlite3VdbeMemSetInt64(&p->aVar[i-1], iValue);
1096   }
1097   sqlite3_mutex_leave(p->db->mutex);
1098   return rc;
1099 }
1100 int sqlite3_bind_null(sqlite3_stmt *pStmt, int i){
1101   int rc;
1102   Vdbe *p = (Vdbe*)pStmt;
1103   sqlite3_mutex_enter(p->db->mutex);
1104   rc = vdbeUnbind(p, i);
1105   sqlite3_mutex_leave(p->db->mutex);
1106   return rc;
1107 }
1108 int sqlite3_bind_text(
1109   sqlite3_stmt *pStmt,
1110   int i,
1111   const char *zData,
1112   int nData,
1113   void (*xDel)(void*)
1114 ){
1115   return bindText(pStmt, i, zData, nData, xDel, SQLITE_UTF8);
1116 }
1117 #ifndef SQLITE_OMIT_UTF16
1118 int sqlite3_bind_text16(
1119   sqlite3_stmt *pStmt,
1120   int i,
1121   const void *zData,
1122   int nData,
1123   void (*xDel)(void*)
1124 ){
1125   return bindText(pStmt, i, zData, nData, xDel, SQLITE_UTF16NATIVE);
1126 }
1127 #endif /* SQLITE_OMIT_UTF16 */
1128 int sqlite3_bind_value(sqlite3_stmt *pStmt, int i, const sqlite3_value *pValue){
1129   int rc;
1130   Vdbe *p = (Vdbe *)pStmt;
1131   sqlite3_mutex_enter(p->db->mutex);
1132   rc = vdbeUnbind(p, i);
1133   if( rc==SQLITE_OK ){
1134     rc = sqlite3VdbeMemCopy(&p->aVar[i-1], pValue);
1135     if( rc==SQLITE_OK ){
1136       rc = sqlite3VdbeChangeEncoding(&p->aVar[i-1], ENC(p->db));
1137     }
1138   }
1139   rc = sqlite3ApiExit(p->db, rc);
1140   sqlite3_mutex_leave(p->db->mutex);
1141   return rc;
1142 }
1143 int sqlite3_bind_zeroblob(sqlite3_stmt *pStmt, int i, int n){
1144   int rc;
1145   Vdbe *p = (Vdbe *)pStmt;
1146   sqlite3_mutex_enter(p->db->mutex);
1147   rc = vdbeUnbind(p, i);
1148   if( rc==SQLITE_OK ){
1149     sqlite3VdbeMemSetZeroBlob(&p->aVar[i-1], n);
1150   }
1151   sqlite3_mutex_leave(p->db->mutex);
1152   return rc;
1153 }
1154 
1155 /*
1156 ** Return the number of wildcards that can be potentially bound to.
1157 ** This routine is added to support DBD::SQLite.
1158 */
1159 int sqlite3_bind_parameter_count(sqlite3_stmt *pStmt){
1160   Vdbe *p = (Vdbe*)pStmt;
1161   return p ? p->nVar : 0;
1162 }
1163 
1164 /*
1165 ** Create a mapping from variable numbers to variable names
1166 ** in the Vdbe.azVar[] array, if such a mapping does not already
1167 ** exist.
1168 */
1169 static void createVarMap(Vdbe *p){
1170   if( !p->okVar ){
1171     sqlite3_mutex_enter(p->db->mutex);
1172     if( !p->okVar ){
1173       int j;
1174       Op *pOp;
1175       for(j=0, pOp=p->aOp; j<p->nOp; j++, pOp++){
1176         if( pOp->opcode==OP_Variable ){
1177           assert( pOp->p1>0 && pOp->p1<=p->nVar );
1178           p->azVar[pOp->p1-1] = pOp->p4.z;
1179         }
1180       }
1181       p->okVar = 1;
1182     }
1183     sqlite3_mutex_leave(p->db->mutex);
1184   }
1185 }
1186 
1187 /*
1188 ** Return the name of a wildcard parameter.  Return NULL if the index
1189 ** is out of range or if the wildcard is unnamed.
1190 **
1191 ** The result is always UTF-8.
1192 */
1193 const char *sqlite3_bind_parameter_name(sqlite3_stmt *pStmt, int i){
1194   Vdbe *p = (Vdbe*)pStmt;
1195   if( p==0 || i<1 || i>p->nVar ){
1196     return 0;
1197   }
1198   createVarMap(p);
1199   return p->azVar[i-1];
1200 }
1201 
1202 /*
1203 ** Given a wildcard parameter name, return the index of the variable
1204 ** with that name.  If there is no variable with the given name,
1205 ** return 0.
1206 */
1207 int sqlite3_bind_parameter_index(sqlite3_stmt *pStmt, const char *zName){
1208   Vdbe *p = (Vdbe*)pStmt;
1209   int i;
1210   if( p==0 ){
1211     return 0;
1212   }
1213   createVarMap(p);
1214   if( zName ){
1215     for(i=0; i<p->nVar; i++){
1216       const char *z = p->azVar[i];
1217       if( z && strcmp(z,zName)==0 ){
1218         return i+1;
1219       }
1220     }
1221   }
1222   return 0;
1223 }
1224 
1225 /*
1226 ** Transfer all bindings from the first statement over to the second.
1227 ** If the two statements contain a different number of bindings, then
1228 ** an SQLITE_ERROR is returned.
1229 */
1230 int sqlite3TransferBindings(sqlite3_stmt *pFromStmt, sqlite3_stmt *pToStmt){
1231   Vdbe *pFrom = (Vdbe*)pFromStmt;
1232   Vdbe *pTo = (Vdbe*)pToStmt;
1233   int i, rc = SQLITE_OK;
1234   if( (pFrom->magic!=VDBE_MAGIC_RUN && pFrom->magic!=VDBE_MAGIC_HALT)
1235     || (pTo->magic!=VDBE_MAGIC_RUN && pTo->magic!=VDBE_MAGIC_HALT)
1236     || pTo->db!=pFrom->db ){
1237     return SQLITE_MISUSE;
1238   }
1239   if( pFrom->nVar!=pTo->nVar ){
1240     return SQLITE_ERROR;
1241   }
1242   sqlite3_mutex_enter(pTo->db->mutex);
1243   for(i=0; rc==SQLITE_OK && i<pFrom->nVar; i++){
1244     sqlite3VdbeMemMove(&pTo->aVar[i], &pFrom->aVar[i]);
1245   }
1246   sqlite3_mutex_leave(pTo->db->mutex);
1247   assert( rc==SQLITE_OK || rc==SQLITE_NOMEM );
1248   return rc;
1249 }
1250 
1251 /*
1252 ** Deprecated external interface.  Internal/core SQLite code
1253 ** should call sqlite3TransferBindings.
1254 */
1255 int sqlite3_transfer_bindings(sqlite3_stmt *pFromStmt, sqlite3_stmt *pToStmt){
1256   return sqlite3TransferBindings(pFromStmt, pToStmt);
1257 }
1258 
1259 /*
1260 ** Return the sqlite3* database handle to which the prepared statement given
1261 ** in the argument belongs.  This is the same database handle that was
1262 ** the first argument to the sqlite3_prepare() that was used to create
1263 ** the statement in the first place.
1264 */
1265 sqlite3 *sqlite3_db_handle(sqlite3_stmt *pStmt){
1266   return pStmt ? ((Vdbe*)pStmt)->db : 0;
1267 }
1268 
1269 /*
1270 ** Return a pointer to the next prepared statement after pStmt associated
1271 ** with database connection pDb.  If pStmt is NULL, return the first
1272 ** prepared statement for the database connection.  Return NULL if there
1273 ** are no more.
1274 */
1275 sqlite3_stmt *sqlite3_next_stmt(sqlite3 *pDb, sqlite3_stmt *pStmt){
1276   sqlite3_stmt *pNext;
1277   sqlite3_mutex_enter(pDb->mutex);
1278   if( pStmt==0 ){
1279     pNext = (sqlite3_stmt*)pDb->pVdbe;
1280   }else{
1281     pNext = (sqlite3_stmt*)((Vdbe*)pStmt)->pNext;
1282   }
1283   sqlite3_mutex_leave(pDb->mutex);
1284   return pNext;
1285 }
1286