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