First public contribution.
     4 ** The author disclaims copyright to this source code.  In place of
 
     5 ** a legal notice, here is a blessing:
 
     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.
 
    11 *************************************************************************
 
    13 ** This file contains code use to implement APIs that are part of the
 
    16 ** $Id: vdbeapi.c,v 1.141 2008/09/04 12:03:43 shane Exp $
 
    18 #include "sqliteInt.h"
 
    21 #if 0 && defined(SQLITE_ENABLE_MEMORY_MANAGEMENT)
 
    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
 
    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().
 
    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.
 
    40 struct StatementLruList {
 
    44 static struct StatementLruList sqlite3LruStatements;
 
    47 ** Check that the list looks to be internally consistent. This is used
 
    48 ** as part of an assert() statement as follows:
 
    50 **   assert( stmtLruCheck() );
 
    53 static int stmtLruCheck(){
 
    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);
 
    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.
 
    70 static void stmtLruAdd(Vdbe *p){
 
    71   sqlite3_mutex_enter(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_LRU2));
 
    73   if( p->pLruPrev || p->pLruNext || sqlite3LruStatements.pFirst==p ){
 
    74     sqlite3_mutex_leave(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_LRU2));
 
    78   assert( stmtLruCheck() );
 
    80   if( !sqlite3LruStatements.pFirst ){
 
    81     assert( !sqlite3LruStatements.pLast );
 
    82     sqlite3LruStatements.pFirst = p;
 
    83     sqlite3LruStatements.pLast = p;
 
    85     assert( !sqlite3LruStatements.pLast->pLruNext );
 
    86     p->pLruPrev = sqlite3LruStatements.pLast;
 
    87     sqlite3LruStatements.pLast->pLruNext = p;
 
    88     sqlite3LruStatements.pLast = p;
 
    91   assert( stmtLruCheck() );
 
    93   sqlite3_mutex_leave(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_LRU2));
 
    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.
 
   101 static void stmtLruRemoveNomutex(Vdbe *p){
 
   102   if( p->pLruPrev || p->pLruNext || p==sqlite3LruStatements.pFirst ){
 
   103     assert( stmtLruCheck() );
 
   105       p->pLruNext->pLruPrev = p->pLruPrev;
 
   107       sqlite3LruStatements.pLast = p->pLruPrev;
 
   110       p->pLruPrev->pLruNext = p->pLruNext;
 
   112       sqlite3LruStatements.pFirst = p->pLruNext;
 
   116     assert( stmtLruCheck() );
 
   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.
 
   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));
 
   132 ** Try to release n bytes of memory by freeing buffers associated 
 
   133 ** with the memory registers of currently unused vdbes.
 
   135 int sqlite3VdbeReleaseMemory(int n){
 
   140   sqlite3_mutex_enter(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_LRU2));
 
   141   for(p=sqlite3LruStatements.pFirst; p && nFree<n; p=pNext){
 
   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.
 
   149     if( SQLITE_OK==sqlite3_mutex_try(p->db->mutex) ){
 
   150       nFree += sqlite3VdbeReleaseBuffers(p);
 
   151       stmtLruRemoveNomutex(p);
 
   152       sqlite3_mutex_leave(p->db->mutex);
 
   155   sqlite3_mutex_leave(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_LRU2));
 
   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.
 
   165 int vdbeReprepare(Vdbe *p){
 
   167   return sqlite3Reprepare(p);
 
   170 #else       /* !SQLITE_ENABLE_MEMORY_MANAGEMENT */
 
   171   #define stmtLruRemove(x)
 
   172   #define stmtLruAdd(x)
 
   173   #define vdbeReprepare(x) sqlite3Reprepare(x)
 
   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
 
   185 SQLITE_EXPORT int sqlite3_expired(sqlite3_stmt *pStmt){
 
   186   Vdbe *p = (Vdbe*)pStmt;
 
   187   return p==0 || p->expired;
 
   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
 
   196 ** This routine sets the error code and string returned by
 
   197 ** sqlite3_errcode(), sqlite3_errmsg() and sqlite3_errmsg16().
 
   199 SQLITE_EXPORT int sqlite3_finalize(sqlite3_stmt *pStmt){
 
   204     Vdbe *v = (Vdbe*)pStmt;
 
   205 #ifndef SQLITE_MUTEX_NOOP
 
   206     sqlite3_mutex *mutex = v->db->mutex;
 
   208     sqlite3_mutex_enter(mutex);
 
   210     rc = sqlite3VdbeFinalize(v);
 
   211     sqlite3_mutex_leave(mutex);
 
   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.
 
   221 ** This routine sets the error code and string returned by
 
   222 ** sqlite3_errcode(), sqlite3_errmsg() and sqlite3_errmsg16().
 
   224 SQLITE_EXPORT int sqlite3_reset(sqlite3_stmt *pStmt){
 
   229     Vdbe *v = (Vdbe*)pStmt;
 
   230     sqlite3_mutex_enter(v->db->mutex);
 
   231     rc = sqlite3VdbeReset(v);
 
   233     sqlite3VdbeMakeReady(v, -1, 0, 0, 0);
 
   234     assert( (rc & (v->db->errMask))==rc );
 
   235     sqlite3_mutex_leave(v->db->mutex);
 
   241 ** Set all the parameters in the compiled SQL statement to NULL.
 
   243 SQLITE_EXPORT int sqlite3_clear_bindings(sqlite3_stmt *pStmt){
 
   246   Vdbe *p = (Vdbe*)pStmt;
 
   247 #ifndef SQLITE_MUTEX_NOOP
 
   248   sqlite3_mutex *mutex = ((Vdbe*)pStmt)->db->mutex;
 
   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;
 
   255   sqlite3_mutex_leave(mutex);
 
   260 /**************************** sqlite3_value_  *******************************
 
   261 ** The following routines extract information from a Mem or sqlite3_value
 
   264 SQLITE_EXPORT const void *sqlite3_value_blob(sqlite3_value *pVal){
 
   266   if( p->flags & (MEM_Blob|MEM_Str) ){
 
   267     sqlite3VdbeMemExpandBlob(p);
 
   268     p->flags &= ~MEM_Str;
 
   269     p->flags |= MEM_Blob;
 
   272     return sqlite3_value_text(pVal);
 
   275 SQLITE_EXPORT int sqlite3_value_bytes(sqlite3_value *pVal){
 
   276   return sqlite3ValueBytes(pVal, SQLITE_UTF8);
 
   278 SQLITE_EXPORT int sqlite3_value_bytes16(sqlite3_value *pVal){
 
   279   return sqlite3ValueBytes(pVal, SQLITE_UTF16NATIVE);
 
   281 SQLITE_EXPORT double sqlite3_value_double(sqlite3_value *pVal){
 
   282   return sqlite3VdbeRealValue((Mem*)pVal);
 
   284 SQLITE_EXPORT int sqlite3_value_int(sqlite3_value *pVal){
 
   285   return sqlite3VdbeIntValue((Mem*)pVal);
 
   287 SQLITE_EXPORT sqlite_int64 sqlite3_value_int64(sqlite3_value *pVal){
 
   288   return sqlite3VdbeIntValue((Mem*)pVal);
 
   290 SQLITE_EXPORT const unsigned char *sqlite3_value_text(sqlite3_value *pVal){
 
   291   return (const unsigned char *)sqlite3ValueText(pVal, SQLITE_UTF8);
 
   293 #ifndef SQLITE_OMIT_UTF16
 
   294 SQLITE_EXPORT const void *sqlite3_value_text16(sqlite3_value* pVal){
 
   295   return sqlite3ValueText(pVal, SQLITE_UTF16NATIVE);
 
   297 SQLITE_EXPORT const void *sqlite3_value_text16be(sqlite3_value *pVal){
 
   298   return sqlite3ValueText(pVal, SQLITE_UTF16BE);
 
   300 SQLITE_EXPORT const void *sqlite3_value_text16le(sqlite3_value *pVal){
 
   301   return sqlite3ValueText(pVal, SQLITE_UTF16LE);
 
   303 #endif /* SQLITE_OMIT_UTF16 */
 
   304 SQLITE_EXPORT int sqlite3_value_type(sqlite3_value* pVal){
 
   308 /**************************** sqlite3_result_  *******************************
 
   309 ** The following routines are used by user-defined functions to specify
 
   310 ** the function result.
 
   312 SQLITE_EXPORT void sqlite3_result_blob(
 
   313   sqlite3_context *pCtx, 
 
   319   assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
 
   320   sqlite3VdbeMemSetStr(&pCtx->s, z, n, 0, xDel);
 
   322 SQLITE_EXPORT void sqlite3_result_double(sqlite3_context *pCtx, double rVal){
 
   323   assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
 
   324   sqlite3VdbeMemSetDouble(&pCtx->s, rVal);
 
   326 SQLITE_EXPORT 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);
 
   331 #ifndef SQLITE_OMIT_UTF16
 
   332 SQLITE_EXPORT 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);
 
   338 SQLITE_EXPORT void sqlite3_result_int(sqlite3_context *pCtx, int iVal){
 
   339   assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
 
   340   sqlite3VdbeMemSetInt64(&pCtx->s, (i64)iVal);
 
   342 SQLITE_EXPORT void sqlite3_result_int64(sqlite3_context *pCtx, i64 iVal){
 
   343   assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
 
   344   sqlite3VdbeMemSetInt64(&pCtx->s, iVal);
 
   346 SQLITE_EXPORT void sqlite3_result_null(sqlite3_context *pCtx){
 
   347   assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
 
   348   sqlite3VdbeMemSetNull(&pCtx->s);
 
   350 SQLITE_EXPORT void sqlite3_result_text(
 
   351   sqlite3_context *pCtx, 
 
   356   assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
 
   357   sqlite3VdbeMemSetStr(&pCtx->s, z, n, SQLITE_UTF8, xDel);
 
   359 #ifndef SQLITE_OMIT_UTF16
 
   360 SQLITE_EXPORT void sqlite3_result_text16(
 
   361   sqlite3_context *pCtx, 
 
   366   assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
 
   367   sqlite3VdbeMemSetStr(&pCtx->s, z, n, SQLITE_UTF16NATIVE, xDel);
 
   369 SQLITE_EXPORT void sqlite3_result_text16be(
 
   370   sqlite3_context *pCtx, 
 
   375   assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
 
   376   sqlite3VdbeMemSetStr(&pCtx->s, z, n, SQLITE_UTF16BE, xDel);
 
   378 SQLITE_EXPORT void sqlite3_result_text16le(
 
   379   sqlite3_context *pCtx, 
 
   384   assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
 
   385   sqlite3VdbeMemSetStr(&pCtx->s, z, n, SQLITE_UTF16LE, xDel);
 
   387 #endif /* SQLITE_OMIT_UTF16 */
 
   388 SQLITE_EXPORT void sqlite3_result_value(sqlite3_context *pCtx, sqlite3_value *pValue){
 
   389   assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
 
   390   sqlite3VdbeMemCopy(&pCtx->s, pValue);
 
   392 SQLITE_EXPORT void sqlite3_result_zeroblob(sqlite3_context *pCtx, int n){
 
   393   assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
 
   394   sqlite3VdbeMemSetZeroBlob(&pCtx->s, n);
 
   396 SQLITE_EXPORT void sqlite3_result_error_code(sqlite3_context *pCtx, int errCode){
 
   397   pCtx->isError = errCode;
 
   400 /* Force an SQLITE_TOOBIG error. */
 
   401 SQLITE_EXPORT 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);
 
   408 /* An SQLITE_NOMEM error. */
 
   409 SQLITE_EXPORT 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;
 
   417 ** Execute the statement pStmt, either until a row of data is ready, the
 
   418 ** statement is completely executed or an error occurs.
 
   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.
 
   425 static int sqlite3Step(Vdbe *p){
 
   430   if( p->magic!=VDBE_MAGIC_RUN ){
 
   431     return SQLITE_MISUSE;
 
   434   /* Assert that malloc() has not failed */
 
   436   if( db->mallocFailed ){
 
   440   if( p->pc<=0 && p->expired ){
 
   441     if( p->rc==SQLITE_OK ){
 
   442       p->rc = SQLITE_SCHEMA;
 
   447   if( sqlite3SafetyOn(db) ){
 
   448     p->rc = SQLITE_MISUSE;
 
   449     return SQLITE_MISUSE;
 
   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.
 
   456     if( db->activeVdbeCnt==0 ){
 
   457       db->u1.isInterrupted = 0;
 
   460 #ifndef SQLITE_OMIT_TRACE
 
   461     if( db->xProfile && !db->init.busy ){
 
   463       sqlite3OsCurrentTime(db->pVfs, &rNow);
 
   464       p->startTime = (rNow - (int)rNow)*3600.0*24.0*1000000000.0;
 
   472 #ifndef SQLITE_OMIT_EXPLAIN
 
   474     rc = sqlite3VdbeList(p);
 
   476 #endif /* SQLITE_OMIT_EXPLAIN */
 
   478     rc = sqlite3VdbeExec(p);
 
   481   if( sqlite3SafetyOff(db) ){
 
   485 #ifndef SQLITE_OMIT_TRACE
 
   486   /* Invoke the profile callback if there is one
 
   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 ){
 
   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);
 
   500   /*sqlite3Error(p->db, rc, 0);*/
 
   501   p->rc = sqlite3ApiExit(p->db, p->rc);
 
   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); */
 
   511     /* This is for legacy sqlite3_prepare() builds and when the code
 
   512     ** is SQLITE_ROW or SQLITE_DONE */
 
   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.
 
   522 #ifdef SQLITE_OMIT_PARSER
 
   523 int sqlite3_step(sqlite3_stmt *pStmt){
 
   524   int rc = SQLITE_MISUSE;
 
   528     sqlite3_mutex_enter(v->db->mutex);
 
   530     sqlite3_mutex_leave(v->db->mutex);
 
   535 SQLITE_EXPORT int sqlite3_step(sqlite3_stmt *pStmt){
 
   536   int rc = SQLITE_MISUSE;
 
   539     Vdbe *v = (Vdbe*)pStmt;
 
   541     sqlite3_mutex_enter(db->mutex);
 
   542     while( (rc = sqlite3Step(v))==SQLITE_SCHEMA
 
   544            && vdbeReprepare(v) ){
 
   545       sqlite3_reset(pStmt);
 
   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().
 
   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);
 
   563         v->rc = SQLITE_NOMEM;
 
   566     rc = sqlite3ApiExit(db, rc);
 
   567     sqlite3_mutex_leave(db->mutex);
 
   574 ** Extract the user data from a sqlite3_context structure and return a
 
   577 SQLITE_EXPORT void *sqlite3_user_data(sqlite3_context *p){
 
   578   assert( p && p->pFunc );
 
   579   return p->pFunc->pUserData;
 
   583 ** Extract the user data from a sqlite3_context structure and return a
 
   586 SQLITE_EXPORT sqlite3 *sqlite3_context_db_handle(sqlite3_context *p){
 
   587   assert( p && p->pFunc );
 
   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.
 
   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 */
 
   604   const char *zName = context->pFunc->zName;
 
   606   zErr = sqlite3MPrintf(0,
 
   607       "unable to use function %s in the requested context", zName);
 
   608   sqlite3_result_error(context, zErr, -1);
 
   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.
 
   617 SQLITE_EXPORT void *sqlite3_aggregate_context(sqlite3_context *p, int nByte){
 
   619   assert( p && p->pFunc && p->pFunc->xStep );
 
   620   assert( sqlite3_mutex_held(p->s.db->mutex) );
 
   622   if( (pMem->flags & MEM_Agg)==0 ){
 
   624       sqlite3VdbeMemReleaseExternal(pMem);
 
   625       pMem->flags = MEM_Null;
 
   628       sqlite3VdbeMemGrow(pMem, nByte, 0);
 
   629       pMem->flags = MEM_Agg;
 
   630       pMem->u.pDef = p->pFunc;
 
   632         memset(pMem->z, 0, nByte);
 
   636   return (void*)pMem->z;
 
   640 ** Return the auxilary data pointer, if any, for the iArg'th argument to
 
   641 ** the user-function defined by pCtx.
 
   643 SQLITE_EXPORT void *sqlite3_get_auxdata(sqlite3_context *pCtx, int iArg){
 
   646   assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
 
   647   pVdbeFunc = pCtx->pVdbeFunc;
 
   648   if( !pVdbeFunc || iArg>=pVdbeFunc->nAux || iArg<0 ){
 
   651   return pVdbeFunc->apAux[iArg].pAux;
 
   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.
 
   659 SQLITE_EXPORT void sqlite3_set_auxdata(
 
   660   sqlite3_context *pCtx, 
 
   663   void (*xDelete)(void*)
 
   665   struct AuxData *pAuxData;
 
   667   if( iArg<0 ) goto failed;
 
   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);
 
   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;
 
   684   pAuxData = &pVdbeFunc->apAux[iArg];
 
   685   if( pAuxData->pAux && pAuxData->xDelete ){
 
   686     pAuxData->xDelete(pAuxData->pAux);
 
   688   pAuxData->pAux = pAux;
 
   689   pAuxData->xDelete = xDelete;
 
   699 ** Return the number of times the Step function of a aggregate has been 
 
   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
 
   707 SQLITE_EXPORT int sqlite3_aggregate_count(sqlite3_context *p){
 
   708   assert( p && p->pFunc && p->pFunc->xStep );
 
   713 ** Return the number of columns in the result set for the statement pStmt.
 
   715 SQLITE_EXPORT int sqlite3_column_count(sqlite3_stmt *pStmt){
 
   716   Vdbe *pVm = (Vdbe *)pStmt;
 
   717   return pVm ? pVm->nResColumn : 0;
 
   721 ** Return the number of values available from the current row of the
 
   722 ** currently executing statement pStmt.
 
   724 SQLITE_EXPORT 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;
 
   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
 
   737 static Mem *columnMem(sqlite3_stmt *pStmt, int i){
 
   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];
 
   748     static const Mem nullMem = {{0}, 0.0, 0, "", 0, MEM_Null, SQLITE_NULL, 0, 0, 0 };
 
   750       sqlite3_mutex_enter(pVm->db->mutex);
 
   751       sqlite3Error(pVm->db, SQLITE_RANGE, 0);
 
   753     pOut = (Mem*)&nullMem;
 
   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.
 
   765 ** Specifically, this is called from within:
 
   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()
 
   775 ** But not for sqlite3_column_blob(), which never calls malloc().
 
   777 static void columnMallocFailure(sqlite3_stmt *pStmt)
 
   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.
 
   784   Vdbe *p = (Vdbe *)pStmt;
 
   786     p->rc = sqlite3ApiExit(p->db, p->rc);
 
   787     sqlite3_mutex_leave(p->db->mutex);
 
   791 /**************************** sqlite3_column_  *******************************
 
   792 ** The following routines are used to access elements of the current row
 
   793 ** in the result set.
 
   795 SQLITE_EXPORT const void *sqlite3_column_blob(sqlite3_stmt *pStmt, int i){
 
   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() 
 
   802   columnMallocFailure(pStmt);
 
   805 SQLITE_EXPORT int sqlite3_column_bytes(sqlite3_stmt *pStmt, int i){
 
   806   int val = sqlite3_value_bytes( columnMem(pStmt,i) );
 
   807   columnMallocFailure(pStmt);
 
   810 SQLITE_EXPORT int sqlite3_column_bytes16(sqlite3_stmt *pStmt, int i){
 
   811   int val = sqlite3_value_bytes16( columnMem(pStmt,i) );
 
   812   columnMallocFailure(pStmt);
 
   815 SQLITE_EXPORT double sqlite3_column_double(sqlite3_stmt *pStmt, int i){
 
   816   double val = sqlite3_value_double( columnMem(pStmt,i) );
 
   817   columnMallocFailure(pStmt);
 
   820 SQLITE_EXPORT int sqlite3_column_int(sqlite3_stmt *pStmt, int i){
 
   821   int val = sqlite3_value_int( columnMem(pStmt,i) );
 
   822   columnMallocFailure(pStmt);
 
   825 SQLITE_EXPORT sqlite_int64 sqlite3_column_int64(sqlite3_stmt *pStmt, int i){
 
   826   sqlite_int64 val = sqlite3_value_int64( columnMem(pStmt,i) );
 
   827   columnMallocFailure(pStmt);
 
   830 SQLITE_EXPORT 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);
 
   835 SQLITE_EXPORT sqlite3_value *sqlite3_column_value(sqlite3_stmt *pStmt, int i){
 
   836   sqlite3_value *pOut = columnMem(pStmt, i);
 
   837   columnMallocFailure(pStmt);
 
   840 #ifndef SQLITE_OMIT_UTF16
 
   841 SQLITE_EXPORT const void *sqlite3_column_text16(sqlite3_stmt *pStmt, int i){
 
   842   const void *val = sqlite3_value_text16( columnMem(pStmt,i) );
 
   843   columnMallocFailure(pStmt);
 
   846 #endif /* SQLITE_OMIT_UTF16 */
 
   847 SQLITE_EXPORT int sqlite3_column_type(sqlite3_stmt *pStmt, int i){
 
   848   int iType = sqlite3_value_type( columnMem(pStmt,i) );
 
   849   columnMallocFailure(pStmt);
 
   853 /* The following function is experimental and subject to change or
 
   855 /*int sqlite3_column_numeric_type(sqlite3_stmt *pStmt, int i){
 
   856 **  return sqlite3_value_numeric_type( columnMem(pStmt,i) );
 
   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.
 
   864 ** There are up to 5 names for each column.  useType determines which
 
   865 ** name is returned.  Here are the names:
 
   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
 
   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.
 
   876 static const void *columnName(
 
   879   const void *(*xFunc)(Mem*),
 
   883   Vdbe *p = (Vdbe *)pStmt;
 
   888     n = sqlite3_column_count(pStmt);
 
   891       sqlite3_mutex_enter(p->db->mutex);
 
   892       ret = xFunc(&p->aColName[N]);
 
   894       /* A malloc may have failed inside of the xFunc() call. If this
 
   895       ** is the case, clear the mallocFailed flag and return NULL.
 
   897       if( p->db && p->db->mallocFailed ){
 
   898         p->db->mallocFailed = 0;
 
   901       sqlite3_mutex_leave(p->db->mutex);
 
   908 ** Return the name of the Nth column of the result set returned by SQL
 
   911 SQLITE_EXPORT const char *sqlite3_column_name(sqlite3_stmt *pStmt, int N){
 
   913       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_NAME);
 
   915 #ifndef SQLITE_OMIT_UTF16
 
   916 SQLITE_EXPORT const void *sqlite3_column_name16(sqlite3_stmt *pStmt, int N){
 
   918       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_NAME);
 
   923 ** Constraint:  If you have ENABLE_COLUMN_METADATA then you must
 
   924 ** not define OMIT_DECLTYPE.
 
   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"
 
   931 #ifndef SQLITE_OMIT_DECLTYPE
 
   933 ** Return the column declaration type (if applicable) of the 'i'th column
 
   934 ** of the result set of SQL statement pStmt.
 
   936 SQLITE_EXPORT const char *sqlite3_column_decltype(sqlite3_stmt *pStmt, int N){
 
   938       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_DECLTYPE);
 
   940 #ifndef SQLITE_OMIT_UTF16
 
   941 SQLITE_EXPORT const void *sqlite3_column_decltype16(sqlite3_stmt *pStmt, int N){
 
   943       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_DECLTYPE);
 
   945 #endif /* SQLITE_OMIT_UTF16 */
 
   946 #endif /* SQLITE_OMIT_DECLTYPE */
 
   948 #ifdef SQLITE_ENABLE_COLUMN_METADATA
 
   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.
 
   954 const char *sqlite3_column_database_name(sqlite3_stmt *pStmt, int N){
 
   956       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_DATABASE);
 
   958 #ifndef SQLITE_OMIT_UTF16
 
   959 const void *sqlite3_column_database_name16(sqlite3_stmt *pStmt, int N){
 
   961       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_DATABASE);
 
   963 #endif /* SQLITE_OMIT_UTF16 */
 
   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.
 
   970 const char *sqlite3_column_table_name(sqlite3_stmt *pStmt, int N){
 
   972       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_TABLE);
 
   974 #ifndef SQLITE_OMIT_UTF16
 
   975 const void *sqlite3_column_table_name16(sqlite3_stmt *pStmt, int N){
 
   977       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_TABLE);
 
   979 #endif /* SQLITE_OMIT_UTF16 */
 
   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.
 
   986 const char *sqlite3_column_origin_name(sqlite3_stmt *pStmt, int N){
 
   988       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_COLUMN);
 
   990 #ifndef SQLITE_OMIT_UTF16
 
   991 const void *sqlite3_column_origin_name16(sqlite3_stmt *pStmt, int N){
 
   993       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_COLUMN);
 
   995 #endif /* SQLITE_OMIT_UTF16 */
 
   996 #endif /* SQLITE_ENABLE_COLUMN_METADATA */
 
   999 /******************************* sqlite3_bind_  ***************************
 
  1001 ** Routines used to attach values to wildcards in a compiled SQL statement.
 
  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.
 
  1008 ** The error code stored in database p->db is overwritten with the return
 
  1009 ** value in any case.
 
  1011 static int vdbeUnbind(Vdbe *p, int i){
 
  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;
 
  1017   if( i<1 || i>p->nVar ){
 
  1018     sqlite3Error(p->db, SQLITE_RANGE, 0);
 
  1019     return SQLITE_RANGE;
 
  1023   sqlite3VdbeMemRelease(pVar);
 
  1024   pVar->flags = MEM_Null;
 
  1025   sqlite3Error(p->db, SQLITE_OK, 0);
 
  1030 ** Bind a text or BLOB value.
 
  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 */
 
  1040   Vdbe *p = (Vdbe *)pStmt;
 
  1045     return SQLITE_MISUSE;
 
  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));
 
  1055     sqlite3Error(p->db, rc, 0);
 
  1056     rc = sqlite3ApiExit(p->db, rc);
 
  1058   sqlite3_mutex_leave(p->db->mutex);
 
  1064 ** Bind a blob value to an SQL statement variable.
 
  1066 SQLITE_EXPORT int sqlite3_bind_blob(
 
  1067   sqlite3_stmt *pStmt, 
 
  1073   return bindText(pStmt, i, zData, nData, xDel, 0);
 
  1075 SQLITE_EXPORT int sqlite3_bind_double(sqlite3_stmt *pStmt, int i, double rValue){
 
  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);
 
  1083   sqlite3_mutex_leave(p->db->mutex);
 
  1086 SQLITE_EXPORT int sqlite3_bind_int(sqlite3_stmt *p, int i, int iValue){
 
  1087   return sqlite3_bind_int64(p, i, (i64)iValue);
 
  1089 SQLITE_EXPORT int sqlite3_bind_int64(sqlite3_stmt *pStmt, int i, sqlite_int64 iValue){
 
  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);
 
  1097   sqlite3_mutex_leave(p->db->mutex);
 
  1100 SQLITE_EXPORT int sqlite3_bind_null(sqlite3_stmt *pStmt, int i){
 
  1102   Vdbe *p = (Vdbe*)pStmt;
 
  1103   sqlite3_mutex_enter(p->db->mutex);
 
  1104   rc = vdbeUnbind(p, i);
 
  1105   sqlite3_mutex_leave(p->db->mutex);
 
  1108 SQLITE_EXPORT int sqlite3_bind_text( 
 
  1109   sqlite3_stmt *pStmt, 
 
  1115   return bindText(pStmt, i, zData, nData, xDel, SQLITE_UTF8);
 
  1117 #ifndef SQLITE_OMIT_UTF16
 
  1118 SQLITE_EXPORT int sqlite3_bind_text16(
 
  1119   sqlite3_stmt *pStmt, 
 
  1125   return bindText(pStmt, i, zData, nData, xDel, SQLITE_UTF16NATIVE);
 
  1127 #endif /* SQLITE_OMIT_UTF16 */
 
  1128 SQLITE_EXPORT int sqlite3_bind_value(sqlite3_stmt *pStmt, int i, const sqlite3_value *pValue){
 
  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));
 
  1139   rc = sqlite3ApiExit(p->db, rc);
 
  1140   sqlite3_mutex_leave(p->db->mutex);
 
  1143 SQLITE_EXPORT int sqlite3_bind_zeroblob(sqlite3_stmt *pStmt, int i, int n){
 
  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);
 
  1151   sqlite3_mutex_leave(p->db->mutex);
 
  1156 ** Return the number of wildcards that can be potentially bound to.
 
  1157 ** This routine is added to support DBD::SQLite.  
 
  1159 SQLITE_EXPORT int sqlite3_bind_parameter_count(sqlite3_stmt *pStmt){
 
  1160   Vdbe *p = (Vdbe*)pStmt;
 
  1161   return p ? p->nVar : 0;
 
  1165 ** Create a mapping from variable numbers to variable names
 
  1166 ** in the Vdbe.azVar[] array, if such a mapping does not already
 
  1169 static void createVarMap(Vdbe *p){
 
  1171     sqlite3_mutex_enter(p->db->mutex);
 
  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;
 
  1183     sqlite3_mutex_leave(p->db->mutex);
 
  1188 ** Return the name of a wildcard parameter.  Return NULL if the index
 
  1189 ** is out of range or if the wildcard is unnamed.
 
  1191 ** The result is always UTF-8.
 
  1193 SQLITE_EXPORT 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 ){
 
  1199   return p->azVar[i-1];
 
  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,
 
  1207 SQLITE_EXPORT int sqlite3_bind_parameter_index(sqlite3_stmt *pStmt, const char *zName){
 
  1208   Vdbe *p = (Vdbe*)pStmt;
 
  1215     for(i=0; i<p->nVar; i++){
 
  1216       const char *z = p->azVar[i];
 
  1217       if( z && strcmp(z,zName)==0 ){
 
  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.
 
  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;
 
  1239   if( pFrom->nVar!=pTo->nVar ){
 
  1240     return SQLITE_ERROR;
 
  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]);
 
  1246   sqlite3_mutex_leave(pTo->db->mutex);
 
  1247   assert( rc==SQLITE_OK || rc==SQLITE_NOMEM );
 
  1252 ** Deprecated external interface.  Internal/core SQLite code
 
  1253 ** should call sqlite3TransferBindings.
 
  1255 SQLITE_EXPORT int sqlite3_transfer_bindings(sqlite3_stmt *pFromStmt, sqlite3_stmt *pToStmt){
 
  1256   return sqlite3TransferBindings(pFromStmt, pToStmt);
 
  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.
 
  1265 SQLITE_EXPORT sqlite3 *sqlite3_db_handle(sqlite3_stmt *pStmt){
 
  1266   return pStmt ? ((Vdbe*)pStmt)->db : 0;
 
  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
 
  1275 SQLITE_EXPORT sqlite3_stmt *sqlite3_next_stmt(sqlite3 *pDb, sqlite3_stmt *pStmt){
 
  1276   sqlite3_stmt *pNext;
 
  1277   sqlite3_mutex_enter(pDb->mutex);
 
  1279     pNext = (sqlite3_stmt*)pDb->pVdbe;
 
  1281     pNext = (sqlite3_stmt*)((Vdbe*)pStmt)->pNext;
 
  1283   sqlite3_mutex_leave(pDb->mutex);