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