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