xref: /sqlite-3.40.0/src/vdbeapi.c (revision 545311ee)
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 #include "os.h"
19 
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 
33 /**************************** sqlite3_value_  *******************************
34 ** The following routines extract information from a Mem or sqlite3_value
35 ** structure.
36 */
37 const void *sqlite3_value_blob(sqlite3_value *pVal){
38   Mem *p = (Mem*)pVal;
39   if( p->flags & (MEM_Blob|MEM_Str) ){
40     return p->z;
41   }else{
42     return sqlite3_value_text(pVal);
43   }
44 }
45 int sqlite3_value_bytes(sqlite3_value *pVal){
46   return sqlite3ValueBytes(pVal, SQLITE_UTF8);
47 }
48 int sqlite3_value_bytes16(sqlite3_value *pVal){
49   return sqlite3ValueBytes(pVal, SQLITE_UTF16NATIVE);
50 }
51 double sqlite3_value_double(sqlite3_value *pVal){
52   return sqlite3VdbeRealValue((Mem*)pVal);
53 }
54 int sqlite3_value_int(sqlite3_value *pVal){
55   return sqlite3VdbeIntValue((Mem*)pVal);
56 }
57 sqlite_int64 sqlite3_value_int64(sqlite3_value *pVal){
58   return sqlite3VdbeIntValue((Mem*)pVal);
59 }
60 const unsigned char *sqlite3_value_text(sqlite3_value *pVal){
61   return (const unsigned char *)sqlite3ValueText(pVal, SQLITE_UTF8);
62 }
63 #ifndef SQLITE_OMIT_UTF16
64 const void *sqlite3_value_text16(sqlite3_value* pVal){
65   return sqlite3ValueText(pVal, SQLITE_UTF16NATIVE);
66 }
67 const void *sqlite3_value_text16be(sqlite3_value *pVal){
68   return sqlite3ValueText(pVal, SQLITE_UTF16BE);
69 }
70 const void *sqlite3_value_text16le(sqlite3_value *pVal){
71   return sqlite3ValueText(pVal, SQLITE_UTF16LE);
72 }
73 #endif /* SQLITE_OMIT_UTF16 */
74 int sqlite3_value_type(sqlite3_value* pVal){
75   return pVal->type;
76 }
77 /* sqlite3_value_numeric_type() defined in vdbe.c */
78 
79 /**************************** sqlite3_result_  *******************************
80 ** The following routines are used by user-defined functions to specify
81 ** the function result.
82 */
83 void sqlite3_result_blob(
84   sqlite3_context *pCtx,
85   const void *z,
86   int n,
87   void (*xDel)(void *)
88 ){
89   assert( n>=0 );
90   sqlite3VdbeMemSetStr(&pCtx->s, z, n, 0, xDel);
91 }
92 void sqlite3_result_double(sqlite3_context *pCtx, double rVal){
93   sqlite3VdbeMemSetDouble(&pCtx->s, rVal);
94 }
95 void sqlite3_result_error(sqlite3_context *pCtx, const char *z, int n){
96   pCtx->isError = 1;
97   sqlite3VdbeMemSetStr(&pCtx->s, z, n, SQLITE_UTF8, SQLITE_TRANSIENT);
98 }
99 #ifndef SQLITE_OMIT_UTF16
100 void sqlite3_result_error16(sqlite3_context *pCtx, const void *z, int n){
101   pCtx->isError = 1;
102   sqlite3VdbeMemSetStr(&pCtx->s, z, n, SQLITE_UTF16NATIVE, SQLITE_TRANSIENT);
103 }
104 #endif
105 void sqlite3_result_int(sqlite3_context *pCtx, int iVal){
106   sqlite3VdbeMemSetInt64(&pCtx->s, (i64)iVal);
107 }
108 void sqlite3_result_int64(sqlite3_context *pCtx, i64 iVal){
109   sqlite3VdbeMemSetInt64(&pCtx->s, iVal);
110 }
111 void sqlite3_result_null(sqlite3_context *pCtx){
112   sqlite3VdbeMemSetNull(&pCtx->s);
113 }
114 void sqlite3_result_text(
115   sqlite3_context *pCtx,
116   const char *z,
117   int n,
118   void (*xDel)(void *)
119 ){
120   sqlite3VdbeMemSetStr(&pCtx->s, z, n, SQLITE_UTF8, xDel);
121 }
122 #ifndef SQLITE_OMIT_UTF16
123 void sqlite3_result_text16(
124   sqlite3_context *pCtx,
125   const void *z,
126   int n,
127   void (*xDel)(void *)
128 ){
129   sqlite3VdbeMemSetStr(&pCtx->s, z, n, SQLITE_UTF16NATIVE, xDel);
130 }
131 void sqlite3_result_text16be(
132   sqlite3_context *pCtx,
133   const void *z,
134   int n,
135   void (*xDel)(void *)
136 ){
137   sqlite3VdbeMemSetStr(&pCtx->s, z, n, SQLITE_UTF16BE, xDel);
138 }
139 void sqlite3_result_text16le(
140   sqlite3_context *pCtx,
141   const void *z,
142   int n,
143   void (*xDel)(void *)
144 ){
145   sqlite3VdbeMemSetStr(&pCtx->s, z, n, SQLITE_UTF16LE, xDel);
146 }
147 #endif /* SQLITE_OMIT_UTF16 */
148 void sqlite3_result_value(sqlite3_context *pCtx, sqlite3_value *pValue){
149   sqlite3VdbeMemCopy(&pCtx->s, pValue);
150 }
151 
152 
153 /*
154 ** Execute the statement pStmt, either until a row of data is ready, the
155 ** statement is completely executed or an error occurs.
156 **
157 ** This routine implements the bulk of the logic behind the sqlite_step()
158 ** API.  The only thing omitted is the automatic recompile if a
159 ** schema change has occurred.  That detail is handled by the
160 ** outer sqlite3_step() wrapper procedure.
161 */
162 static int sqlite3Step(Vdbe *p){
163   sqlite3 *db;
164   int rc;
165 
166   /* Assert that malloc() has not failed */
167   assert( !sqlite3MallocFailed() );
168 
169   if( p==0 || p->magic!=VDBE_MAGIC_RUN ){
170     return SQLITE_MISUSE;
171   }
172   if( p->aborted ){
173     return SQLITE_ABORT;
174   }
175   if( p->pc<=0 && p->expired ){
176     if( p->rc==SQLITE_OK ){
177       p->rc = SQLITE_SCHEMA;
178     }
179     rc = SQLITE_ERROR;
180     goto end_of_step;
181   }
182   db = p->db;
183   if( sqlite3SafetyOn(db) ){
184     p->rc = SQLITE_MISUSE;
185     return SQLITE_MISUSE;
186   }
187   if( p->pc<0 ){
188     /* If there are no other statements currently running, then
189     ** reset the interrupt flag.  This prevents a call to sqlite3_interrupt
190     ** from interrupting a statement that has not yet started.
191     */
192     if( db->activeVdbeCnt==0 ){
193       db->u1.isInterrupted = 0;
194     }
195 
196 #ifndef SQLITE_OMIT_TRACE
197     /* Invoke the trace callback if there is one
198     */
199     if( db->xTrace && !db->init.busy ){
200       assert( p->nOp>0 );
201       assert( p->aOp[p->nOp-1].opcode==OP_Noop );
202       assert( p->aOp[p->nOp-1].p3!=0 );
203       assert( p->aOp[p->nOp-1].p3type==P3_DYNAMIC );
204       sqlite3SafetyOff(db);
205       db->xTrace(db->pTraceArg, p->aOp[p->nOp-1].p3);
206       if( sqlite3SafetyOn(db) ){
207         p->rc = SQLITE_MISUSE;
208         return SQLITE_MISUSE;
209       }
210     }
211     if( db->xProfile && !db->init.busy ){
212       double rNow;
213       sqlite3OsCurrentTime(&rNow);
214       p->startTime = (rNow - (int)rNow)*3600.0*24.0*1000000000.0;
215     }
216 #endif
217 
218     /* Print a copy of SQL as it is executed if the SQL_TRACE pragma is turned
219     ** on in debugging mode.
220     */
221 #ifdef SQLITE_DEBUG
222     if( (db->flags & SQLITE_SqlTrace)!=0 ){
223       sqlite3DebugPrintf("SQL-trace: %s\n", p->aOp[p->nOp-1].p3);
224     }
225 #endif /* SQLITE_DEBUG */
226 
227     db->activeVdbeCnt++;
228     p->pc = 0;
229   }
230 #ifndef SQLITE_OMIT_EXPLAIN
231   if( p->explain ){
232     rc = sqlite3VdbeList(p);
233   }else
234 #endif /* SQLITE_OMIT_EXPLAIN */
235   {
236     rc = sqlite3VdbeExec(p);
237   }
238 
239   if( sqlite3SafetyOff(db) ){
240     rc = SQLITE_MISUSE;
241   }
242 
243 #ifndef SQLITE_OMIT_TRACE
244   /* Invoke the profile callback if there is one
245   */
246   if( rc!=SQLITE_ROW && db->xProfile && !db->init.busy ){
247     double rNow;
248     u64 elapseTime;
249 
250     sqlite3OsCurrentTime(&rNow);
251     elapseTime = (rNow - (int)rNow)*3600.0*24.0*1000000000.0 - p->startTime;
252     assert( p->nOp>0 );
253     assert( p->aOp[p->nOp-1].opcode==OP_Noop );
254     assert( p->aOp[p->nOp-1].p3!=0 );
255     assert( p->aOp[p->nOp-1].p3type==P3_DYNAMIC );
256     db->xProfile(db->pProfileArg, p->aOp[p->nOp-1].p3, elapseTime);
257   }
258 #endif
259 
260   sqlite3Error(p->db, rc, 0);
261   p->rc = sqlite3ApiExit(p->db, p->rc);
262 end_of_step:
263   assert( (rc&0xff)==rc );
264   if( p->zSql && (rc&0xff)<SQLITE_ROW ){
265     /* This behavior occurs if sqlite3_prepare_v2() was used to build
266     ** the prepared statement.  Return error codes directly */
267     return p->rc;
268   }else{
269     /* This is for legacy sqlite3_prepare() builds and when the code
270     ** is SQLITE_ROW or SQLITE_DONE */
271     return rc;
272   }
273 }
274 
275 /*
276 ** This is the top-level implementation of sqlite3_step().  Call
277 ** sqlite3Step() to do most of the work.  If a schema error occurs,
278 ** call sqlite3Reprepare() and try again.
279 */
280 #ifdef SQLITE_OMIT_PARSER
281 int sqlite3_step(sqlite3_stmt *pStmt){
282   return sqlite3Step((Vdbe*)pStmt);
283 }
284 #else
285 int sqlite3_step(sqlite3_stmt *pStmt){
286   int cnt = 0;
287   int rc;
288   Vdbe *v = (Vdbe*)pStmt;
289   while( (rc = sqlite3Step(v))==SQLITE_SCHEMA
290          && cnt++ < 5
291          && sqlite3Reprepare(v) ){
292     sqlite3_reset(pStmt);
293     v->expired = 0;
294   }
295   return rc;
296 }
297 #endif
298 
299 /*
300 ** Extract the user data from a sqlite3_context structure and return a
301 ** pointer to it.
302 */
303 void *sqlite3_user_data(sqlite3_context *p){
304   assert( p && p->pFunc );
305   return p->pFunc->pUserData;
306 }
307 
308 /*
309 ** The following is the implementation of an SQL function that always
310 ** fails with an error message stating that the function is used in the
311 ** wrong context.  The sqlite3_overload_function() API might construct
312 ** SQL function that use this routine so that the functions will exist
313 ** for name resolution but are actually overloaded by the xFindFunction
314 ** method of virtual tables.
315 */
316 void sqlite3InvalidFunction(
317   sqlite3_context *context,  /* The function calling context */
318   int argc,                  /* Number of arguments to the function */
319   sqlite3_value **argv       /* Value of each argument */
320 ){
321   const char *zName = context->pFunc->zName;
322   char *zErr;
323   zErr = sqlite3MPrintf(
324       "unable to use function %s in the requested context", zName);
325   sqlite3_result_error(context, zErr, -1);
326   sqliteFree(zErr);
327 }
328 
329 /*
330 ** Allocate or return the aggregate context for a user function.  A new
331 ** context is allocated on the first call.  Subsequent calls return the
332 ** same context that was returned on prior calls.
333 */
334 void *sqlite3_aggregate_context(sqlite3_context *p, int nByte){
335   Mem *pMem = p->pMem;
336   assert( p && p->pFunc && p->pFunc->xStep );
337   if( (pMem->flags & MEM_Agg)==0 ){
338     if( nByte==0 ){
339       assert( pMem->flags==MEM_Null );
340       pMem->z = 0;
341     }else{
342       pMem->flags = MEM_Agg;
343       pMem->xDel = sqlite3FreeX;
344       *(FuncDef**)&pMem->i = p->pFunc;
345       if( nByte<=NBFS ){
346         pMem->z = pMem->zShort;
347         memset(pMem->z, 0, nByte);
348       }else{
349         pMem->z = sqliteMalloc( nByte );
350       }
351     }
352   }
353   return (void*)pMem->z;
354 }
355 
356 /*
357 ** Return the auxilary data pointer, if any, for the iArg'th argument to
358 ** the user-function defined by pCtx.
359 */
360 void *sqlite3_get_auxdata(sqlite3_context *pCtx, int iArg){
361   VdbeFunc *pVdbeFunc = pCtx->pVdbeFunc;
362   if( !pVdbeFunc || iArg>=pVdbeFunc->nAux || iArg<0 ){
363     return 0;
364   }
365   return pVdbeFunc->apAux[iArg].pAux;
366 }
367 
368 /*
369 ** Set the auxilary data pointer and delete function, for the iArg'th
370 ** argument to the user-function defined by pCtx. Any previous value is
371 ** deleted by calling the delete function specified when it was set.
372 */
373 void sqlite3_set_auxdata(
374   sqlite3_context *pCtx,
375   int iArg,
376   void *pAux,
377   void (*xDelete)(void*)
378 ){
379   struct AuxData *pAuxData;
380   VdbeFunc *pVdbeFunc;
381   if( iArg<0 ) return;
382 
383   pVdbeFunc = pCtx->pVdbeFunc;
384   if( !pVdbeFunc || pVdbeFunc->nAux<=iArg ){
385     int nMalloc = sizeof(VdbeFunc) + sizeof(struct AuxData)*iArg;
386     pVdbeFunc = sqliteRealloc(pVdbeFunc, nMalloc);
387     if( !pVdbeFunc ) return;
388     pCtx->pVdbeFunc = pVdbeFunc;
389     memset(&pVdbeFunc->apAux[pVdbeFunc->nAux], 0,
390              sizeof(struct AuxData)*(iArg+1-pVdbeFunc->nAux));
391     pVdbeFunc->nAux = iArg+1;
392     pVdbeFunc->pFunc = pCtx->pFunc;
393   }
394 
395   pAuxData = &pVdbeFunc->apAux[iArg];
396   if( pAuxData->pAux && pAuxData->xDelete ){
397     pAuxData->xDelete(pAuxData->pAux);
398   }
399   pAuxData->pAux = pAux;
400   pAuxData->xDelete = xDelete;
401 }
402 
403 /*
404 ** Return the number of times the Step function of a aggregate has been
405 ** called.
406 **
407 ** This function is deprecated.  Do not use it for new code.  It is
408 ** provide only to avoid breaking legacy code.  New aggregate function
409 ** implementations should keep their own counts within their aggregate
410 ** context.
411 */
412 int sqlite3_aggregate_count(sqlite3_context *p){
413   assert( p && p->pFunc && p->pFunc->xStep );
414   return p->pMem->n;
415 }
416 
417 /*
418 ** Return the number of columns in the result set for the statement pStmt.
419 */
420 int sqlite3_column_count(sqlite3_stmt *pStmt){
421   Vdbe *pVm = (Vdbe *)pStmt;
422   return pVm ? pVm->nResColumn : 0;
423 }
424 
425 /*
426 ** Return the number of values available from the current row of the
427 ** currently executing statement pStmt.
428 */
429 int sqlite3_data_count(sqlite3_stmt *pStmt){
430   Vdbe *pVm = (Vdbe *)pStmt;
431   if( pVm==0 || !pVm->resOnStack ) return 0;
432   return pVm->nResColumn;
433 }
434 
435 
436 /*
437 ** Check to see if column iCol of the given statement is valid.  If
438 ** it is, return a pointer to the Mem for the value of that column.
439 ** If iCol is not valid, return a pointer to a Mem which has a value
440 ** of NULL.
441 */
442 static Mem *columnMem(sqlite3_stmt *pStmt, int i){
443   Vdbe *pVm = (Vdbe *)pStmt;
444   int vals = sqlite3_data_count(pStmt);
445   if( i>=vals || i<0 ){
446     static const Mem nullMem = {0, 0.0, "", 0, MEM_Null, MEM_Null };
447     sqlite3Error(pVm->db, SQLITE_RANGE, 0);
448     return (Mem*)&nullMem;
449   }
450   return &pVm->pTos[(1-vals)+i];
451 }
452 
453 /*
454 ** This function is called after invoking an sqlite3_value_XXX function on a
455 ** column value (i.e. a value returned by evaluating an SQL expression in the
456 ** select list of a SELECT statement) that may cause a malloc() failure. If
457 ** malloc() has failed, the threads mallocFailed flag is cleared and the result
458 ** code of statement pStmt set to SQLITE_NOMEM.
459 **
460 ** Specificly, this is called from within:
461 **
462 **     sqlite3_column_int()
463 **     sqlite3_column_int64()
464 **     sqlite3_column_text()
465 **     sqlite3_column_text16()
466 **     sqlite3_column_real()
467 **     sqlite3_column_bytes()
468 **     sqlite3_column_bytes16()
469 **
470 ** But not for sqlite3_column_blob(), which never calls malloc().
471 */
472 static void columnMallocFailure(sqlite3_stmt *pStmt)
473 {
474   /* If malloc() failed during an encoding conversion within an
475   ** sqlite3_column_XXX API, then set the return code of the statement to
476   ** SQLITE_NOMEM. The next call to _step() (if any) will return SQLITE_ERROR
477   ** and _finalize() will return NOMEM.
478   */
479   Vdbe *p = (Vdbe *)pStmt;
480   p->rc = sqlite3ApiExit(0, p->rc);
481 }
482 
483 /**************************** sqlite3_column_  *******************************
484 ** The following routines are used to access elements of the current row
485 ** in the result set.
486 */
487 const void *sqlite3_column_blob(sqlite3_stmt *pStmt, int i){
488   const void *val;
489   sqlite3MallocDisallow();
490   val = sqlite3_value_blob( columnMem(pStmt,i) );
491   sqlite3MallocAllow();
492   return val;
493 }
494 int sqlite3_column_bytes(sqlite3_stmt *pStmt, int i){
495   int val = sqlite3_value_bytes( columnMem(pStmt,i) );
496   columnMallocFailure(pStmt);
497   return val;
498 }
499 int sqlite3_column_bytes16(sqlite3_stmt *pStmt, int i){
500   int val = sqlite3_value_bytes16( columnMem(pStmt,i) );
501   columnMallocFailure(pStmt);
502   return val;
503 }
504 double sqlite3_column_double(sqlite3_stmt *pStmt, int i){
505   double val = sqlite3_value_double( columnMem(pStmt,i) );
506   columnMallocFailure(pStmt);
507   return val;
508 }
509 int sqlite3_column_int(sqlite3_stmt *pStmt, int i){
510   int val = sqlite3_value_int( columnMem(pStmt,i) );
511   columnMallocFailure(pStmt);
512   return val;
513 }
514 sqlite_int64 sqlite3_column_int64(sqlite3_stmt *pStmt, int i){
515   sqlite_int64 val = sqlite3_value_int64( columnMem(pStmt,i) );
516   columnMallocFailure(pStmt);
517   return val;
518 }
519 const unsigned char *sqlite3_column_text(sqlite3_stmt *pStmt, int i){
520   const unsigned char *val = sqlite3_value_text( columnMem(pStmt,i) );
521   columnMallocFailure(pStmt);
522   return val;
523 }
524 sqlite3_value *sqlite3_column_value(sqlite3_stmt *pStmt, int i){
525   return columnMem(pStmt, i);
526 }
527 #ifndef SQLITE_OMIT_UTF16
528 const void *sqlite3_column_text16(sqlite3_stmt *pStmt, int i){
529   const void *val = sqlite3_value_text16( columnMem(pStmt,i) );
530   columnMallocFailure(pStmt);
531   return val;
532 }
533 #endif /* SQLITE_OMIT_UTF16 */
534 int sqlite3_column_type(sqlite3_stmt *pStmt, int i){
535   return sqlite3_value_type( columnMem(pStmt,i) );
536 }
537 
538 /* The following function is experimental and subject to change or
539 ** removal */
540 /*int sqlite3_column_numeric_type(sqlite3_stmt *pStmt, int i){
541 **  return sqlite3_value_numeric_type( columnMem(pStmt,i) );
542 **}
543 */
544 
545 /*
546 ** Convert the N-th element of pStmt->pColName[] into a string using
547 ** xFunc() then return that string.  If N is out of range, return 0.
548 **
549 ** There are up to 5 names for each column.  useType determines which
550 ** name is returned.  Here are the names:
551 **
552 **    0      The column name as it should be displayed for output
553 **    1      The datatype name for the column
554 **    2      The name of the database that the column derives from
555 **    3      The name of the table that the column derives from
556 **    4      The name of the table column that the result column derives from
557 **
558 ** If the result is not a simple column reference (if it is an expression
559 ** or a constant) then useTypes 2, 3, and 4 return NULL.
560 */
561 static const void *columnName(
562   sqlite3_stmt *pStmt,
563   int N,
564   const void *(*xFunc)(Mem*),
565   int useType
566 ){
567   const void *ret;
568   Vdbe *p = (Vdbe *)pStmt;
569   int n = sqlite3_column_count(pStmt);
570 
571   if( p==0 || N>=n || N<0 ){
572     return 0;
573   }
574   N += useType*n;
575   ret = xFunc(&p->aColName[N]);
576 
577   /* A malloc may have failed inside of the xFunc() call. If this is the case,
578   ** clear the mallocFailed flag and return NULL.
579   */
580   sqlite3ApiExit(0, 0);
581   return ret;
582 }
583 
584 /*
585 ** Return the name of the Nth column of the result set returned by SQL
586 ** statement pStmt.
587 */
588 const char *sqlite3_column_name(sqlite3_stmt *pStmt, int N){
589   return columnName(
590       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_NAME);
591 }
592 #ifndef SQLITE_OMIT_UTF16
593 const void *sqlite3_column_name16(sqlite3_stmt *pStmt, int N){
594   return columnName(
595       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_NAME);
596 }
597 #endif
598 
599 /*
600 ** Return the column declaration type (if applicable) of the 'i'th column
601 ** of the result set of SQL statement pStmt.
602 */
603 const char *sqlite3_column_decltype(sqlite3_stmt *pStmt, int N){
604   return columnName(
605       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_DECLTYPE);
606 }
607 #ifndef SQLITE_OMIT_UTF16
608 const void *sqlite3_column_decltype16(sqlite3_stmt *pStmt, int N){
609   return columnName(
610       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_DECLTYPE);
611 }
612 #endif /* SQLITE_OMIT_UTF16 */
613 
614 #ifdef SQLITE_ENABLE_COLUMN_METADATA
615 /*
616 ** Return the name of the database from which a result column derives.
617 ** NULL is returned if the result column is an expression or constant or
618 ** anything else which is not an unabiguous reference to a database column.
619 */
620 const char *sqlite3_column_database_name(sqlite3_stmt *pStmt, int N){
621   return columnName(
622       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_DATABASE);
623 }
624 #ifndef SQLITE_OMIT_UTF16
625 const void *sqlite3_column_database_name16(sqlite3_stmt *pStmt, int N){
626   return columnName(
627       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_DATABASE);
628 }
629 #endif /* SQLITE_OMIT_UTF16 */
630 
631 /*
632 ** Return the name of the table from which a result column derives.
633 ** NULL is returned if the result column is an expression or constant or
634 ** anything else which is not an unabiguous reference to a database column.
635 */
636 const char *sqlite3_column_table_name(sqlite3_stmt *pStmt, int N){
637   return columnName(
638       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_TABLE);
639 }
640 #ifndef SQLITE_OMIT_UTF16
641 const void *sqlite3_column_table_name16(sqlite3_stmt *pStmt, int N){
642   return columnName(
643       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_TABLE);
644 }
645 #endif /* SQLITE_OMIT_UTF16 */
646 
647 /*
648 ** Return the name of the table column from which a result column derives.
649 ** NULL is returned if the result column is an expression or constant or
650 ** anything else which is not an unabiguous reference to a database column.
651 */
652 const char *sqlite3_column_origin_name(sqlite3_stmt *pStmt, int N){
653   return columnName(
654       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_COLUMN);
655 }
656 #ifndef SQLITE_OMIT_UTF16
657 const void *sqlite3_column_origin_name16(sqlite3_stmt *pStmt, int N){
658   return columnName(
659       pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_COLUMN);
660 }
661 #endif /* SQLITE_OMIT_UTF16 */
662 #endif /* SQLITE_ENABLE_COLUMN_METADATA */
663 
664 
665 /******************************* sqlite3_bind_  ***************************
666 **
667 ** Routines used to attach values to wildcards in a compiled SQL statement.
668 */
669 /*
670 ** Unbind the value bound to variable i in virtual machine p. This is the
671 ** the same as binding a NULL value to the column. If the "i" parameter is
672 ** out of range, then SQLITE_RANGE is returned. Othewise SQLITE_OK.
673 **
674 ** The error code stored in database p->db is overwritten with the return
675 ** value in any case.
676 */
677 static int vdbeUnbind(Vdbe *p, int i){
678   Mem *pVar;
679   if( p==0 || p->magic!=VDBE_MAGIC_RUN || p->pc>=0 ){
680     if( p ) sqlite3Error(p->db, SQLITE_MISUSE, 0);
681     return SQLITE_MISUSE;
682   }
683   if( i<1 || i>p->nVar ){
684     sqlite3Error(p->db, SQLITE_RANGE, 0);
685     return SQLITE_RANGE;
686   }
687   i--;
688   pVar = &p->aVar[i];
689   sqlite3VdbeMemRelease(pVar);
690   pVar->flags = MEM_Null;
691   sqlite3Error(p->db, SQLITE_OK, 0);
692   return SQLITE_OK;
693 }
694 
695 /*
696 ** Bind a text or BLOB value.
697 */
698 static int bindText(
699   sqlite3_stmt *pStmt,
700   int i,
701   const void *zData,
702   int nData,
703   void (*xDel)(void*),
704   int encoding
705 ){
706   Vdbe *p = (Vdbe *)pStmt;
707   Mem *pVar;
708   int rc;
709 
710   rc = vdbeUnbind(p, i);
711   if( rc || zData==0 ){
712     return rc;
713   }
714   pVar = &p->aVar[i-1];
715   rc = sqlite3VdbeMemSetStr(pVar, zData, nData, encoding, xDel);
716   if( rc==SQLITE_OK && encoding!=0 ){
717     rc = sqlite3VdbeChangeEncoding(pVar, ENC(p->db));
718   }
719 
720   sqlite3Error(((Vdbe *)pStmt)->db, rc, 0);
721   return sqlite3ApiExit(((Vdbe *)pStmt)->db, rc);
722 }
723 
724 
725 /*
726 ** Bind a blob value to an SQL statement variable.
727 */
728 int sqlite3_bind_blob(
729   sqlite3_stmt *pStmt,
730   int i,
731   const void *zData,
732   int nData,
733   void (*xDel)(void*)
734 ){
735   return bindText(pStmt, i, zData, nData, xDel, 0);
736 }
737 int sqlite3_bind_double(sqlite3_stmt *pStmt, int i, double rValue){
738   int rc;
739   Vdbe *p = (Vdbe *)pStmt;
740   rc = vdbeUnbind(p, i);
741   if( rc==SQLITE_OK ){
742     sqlite3VdbeMemSetDouble(&p->aVar[i-1], rValue);
743   }
744   return rc;
745 }
746 int sqlite3_bind_int(sqlite3_stmt *p, int i, int iValue){
747   return sqlite3_bind_int64(p, i, (i64)iValue);
748 }
749 int sqlite3_bind_int64(sqlite3_stmt *pStmt, int i, sqlite_int64 iValue){
750   int rc;
751   Vdbe *p = (Vdbe *)pStmt;
752   rc = vdbeUnbind(p, i);
753   if( rc==SQLITE_OK ){
754     sqlite3VdbeMemSetInt64(&p->aVar[i-1], iValue);
755   }
756   return rc;
757 }
758 int sqlite3_bind_null(sqlite3_stmt* p, int i){
759   return vdbeUnbind((Vdbe *)p, i);
760 }
761 int sqlite3_bind_text(
762   sqlite3_stmt *pStmt,
763   int i,
764   const char *zData,
765   int nData,
766   void (*xDel)(void*)
767 ){
768   return bindText(pStmt, i, zData, nData, xDel, SQLITE_UTF8);
769 }
770 #ifndef SQLITE_OMIT_UTF16
771 int sqlite3_bind_text16(
772   sqlite3_stmt *pStmt,
773   int i,
774   const void *zData,
775   int nData,
776   void (*xDel)(void*)
777 ){
778   return bindText(pStmt, i, zData, nData, xDel, SQLITE_UTF16NATIVE);
779 }
780 #endif /* SQLITE_OMIT_UTF16 */
781 int sqlite3_bind_value(sqlite3_stmt *pStmt, int i, const sqlite3_value *pValue){
782   int rc;
783   Vdbe *p = (Vdbe *)pStmt;
784   rc = vdbeUnbind(p, i);
785   if( rc==SQLITE_OK ){
786     sqlite3VdbeMemCopy(&p->aVar[i-1], pValue);
787   }
788   return rc;
789 }
790 
791 /*
792 ** Return the number of wildcards that can be potentially bound to.
793 ** This routine is added to support DBD::SQLite.
794 */
795 int sqlite3_bind_parameter_count(sqlite3_stmt *pStmt){
796   Vdbe *p = (Vdbe*)pStmt;
797   return p ? p->nVar : 0;
798 }
799 
800 /*
801 ** Create a mapping from variable numbers to variable names
802 ** in the Vdbe.azVar[] array, if such a mapping does not already
803 ** exist.
804 */
805 static void createVarMap(Vdbe *p){
806   if( !p->okVar ){
807     int j;
808     Op *pOp;
809     for(j=0, pOp=p->aOp; j<p->nOp; j++, pOp++){
810       if( pOp->opcode==OP_Variable ){
811         assert( pOp->p1>0 && pOp->p1<=p->nVar );
812         p->azVar[pOp->p1-1] = pOp->p3;
813       }
814     }
815     p->okVar = 1;
816   }
817 }
818 
819 /*
820 ** Return the name of a wildcard parameter.  Return NULL if the index
821 ** is out of range or if the wildcard is unnamed.
822 **
823 ** The result is always UTF-8.
824 */
825 const char *sqlite3_bind_parameter_name(sqlite3_stmt *pStmt, int i){
826   Vdbe *p = (Vdbe*)pStmt;
827   if( p==0 || i<1 || i>p->nVar ){
828     return 0;
829   }
830   createVarMap(p);
831   return p->azVar[i-1];
832 }
833 
834 /*
835 ** Given a wildcard parameter name, return the index of the variable
836 ** with that name.  If there is no variable with the given name,
837 ** return 0.
838 */
839 int sqlite3_bind_parameter_index(sqlite3_stmt *pStmt, const char *zName){
840   Vdbe *p = (Vdbe*)pStmt;
841   int i;
842   if( p==0 ){
843     return 0;
844   }
845   createVarMap(p);
846   if( zName ){
847     for(i=0; i<p->nVar; i++){
848       const char *z = p->azVar[i];
849       if( z && strcmp(z,zName)==0 ){
850         return i+1;
851       }
852     }
853   }
854   return 0;
855 }
856 
857 /*
858 ** Transfer all bindings from the first statement over to the second.
859 ** If the two statements contain a different number of bindings, then
860 ** an SQLITE_ERROR is returned.
861 */
862 int sqlite3_transfer_bindings(sqlite3_stmt *pFromStmt, sqlite3_stmt *pToStmt){
863   Vdbe *pFrom = (Vdbe*)pFromStmt;
864   Vdbe *pTo = (Vdbe*)pToStmt;
865   int i, rc = SQLITE_OK;
866   if( (pFrom->magic!=VDBE_MAGIC_RUN && pFrom->magic!=VDBE_MAGIC_HALT)
867     || (pTo->magic!=VDBE_MAGIC_RUN && pTo->magic!=VDBE_MAGIC_HALT) ){
868     return SQLITE_MISUSE;
869   }
870   if( pFrom->nVar!=pTo->nVar ){
871     return SQLITE_ERROR;
872   }
873   for(i=0; rc==SQLITE_OK && i<pFrom->nVar; i++){
874     sqlite3MallocDisallow();
875     rc = sqlite3VdbeMemMove(&pTo->aVar[i], &pFrom->aVar[i]);
876     sqlite3MallocAllow();
877   }
878   assert( rc==SQLITE_OK || rc==SQLITE_NOMEM );
879   return rc;
880 }
881 
882 /*
883 ** Return the sqlite3* database handle to which the prepared statement given
884 ** in the argument belongs.  This is the same database handle that was
885 ** the first argument to the sqlite3_prepare() that was used to create
886 ** the statement in the first place.
887 */
888 sqlite3 *sqlite3_db_handle(sqlite3_stmt *pStmt){
889   return pStmt ? ((Vdbe*)pStmt)->db : 0;
890 }
891