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