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 #ifndef SQLITE_OMIT_TRACE 57 /* 58 ** Invoke the profile callback. This routine is only called if we already 59 ** know that the profile callback is defined and needs to be invoked. 60 */ 61 static SQLITE_NOINLINE void invokeProfileCallback(sqlite3 *db, Vdbe *p){ 62 sqlite3_int64 iNow; 63 sqlite3_int64 iElapse; 64 assert( p->startTime>0 ); 65 assert( (db->mTrace & (SQLITE_TRACE_PROFILE|SQLITE_TRACE_XPROFILE))!=0 ); 66 assert( db->init.busy==0 ); 67 assert( p->zSql!=0 ); 68 sqlite3OsCurrentTimeInt64(db->pVfs, &iNow); 69 iElapse = (iNow - p->startTime)*1000000; 70 #ifndef SQLITE_OMIT_DEPRECATED 71 if( db->xProfile ){ 72 db->xProfile(db->pProfileArg, p->zSql, iElapse); 73 } 74 #endif 75 if( db->mTrace & SQLITE_TRACE_PROFILE ){ 76 db->trace.xV2(SQLITE_TRACE_PROFILE, db->pTraceArg, p, (void*)&iElapse); 77 } 78 p->startTime = 0; 79 } 80 /* 81 ** The checkProfileCallback(DB,P) macro checks to see if a profile callback 82 ** is needed, and it invokes the callback if it is needed. 83 */ 84 # define checkProfileCallback(DB,P) \ 85 if( ((P)->startTime)>0 ){ invokeProfileCallback(DB,P); } 86 #else 87 # define checkProfileCallback(DB,P) /*no-op*/ 88 #endif 89 90 /* 91 ** The following routine destroys a virtual machine that is created by 92 ** the sqlite3_compile() routine. The integer returned is an SQLITE_ 93 ** success/failure code that describes the result of executing the virtual 94 ** machine. 95 ** 96 ** This routine sets the error code and string returned by 97 ** sqlite3_errcode(), sqlite3_errmsg() and sqlite3_errmsg16(). 98 */ 99 int sqlite3_finalize(sqlite3_stmt *pStmt){ 100 int rc; 101 if( pStmt==0 ){ 102 /* IMPLEMENTATION-OF: R-57228-12904 Invoking sqlite3_finalize() on a NULL 103 ** pointer is a harmless no-op. */ 104 rc = SQLITE_OK; 105 }else{ 106 Vdbe *v = (Vdbe*)pStmt; 107 sqlite3 *db = v->db; 108 if( vdbeSafety(v) ) return SQLITE_MISUSE_BKPT; 109 sqlite3_mutex_enter(db->mutex); 110 checkProfileCallback(db, v); 111 rc = sqlite3VdbeFinalize(v); 112 rc = sqlite3ApiExit(db, rc); 113 sqlite3LeaveMutexAndCloseZombie(db); 114 } 115 return rc; 116 } 117 118 /* 119 ** Terminate the current execution of an SQL statement and reset it 120 ** back to its starting state so that it can be reused. A success code from 121 ** the prior execution is returned. 122 ** 123 ** This routine sets the error code and string returned by 124 ** sqlite3_errcode(), sqlite3_errmsg() and sqlite3_errmsg16(). 125 */ 126 int sqlite3_reset(sqlite3_stmt *pStmt){ 127 int rc; 128 if( pStmt==0 ){ 129 rc = SQLITE_OK; 130 }else{ 131 Vdbe *v = (Vdbe*)pStmt; 132 sqlite3 *db = v->db; 133 sqlite3_mutex_enter(db->mutex); 134 checkProfileCallback(db, v); 135 rc = sqlite3VdbeReset(v); 136 sqlite3VdbeRewind(v); 137 assert( (rc & (db->errMask))==rc ); 138 rc = sqlite3ApiExit(db, rc); 139 sqlite3_mutex_leave(db->mutex); 140 } 141 return rc; 142 } 143 144 /* 145 ** Set all the parameters in the compiled SQL statement to NULL. 146 */ 147 int sqlite3_clear_bindings(sqlite3_stmt *pStmt){ 148 int i; 149 int rc = SQLITE_OK; 150 Vdbe *p = (Vdbe*)pStmt; 151 #if SQLITE_THREADSAFE 152 sqlite3_mutex *mutex = ((Vdbe*)pStmt)->db->mutex; 153 #endif 154 sqlite3_mutex_enter(mutex); 155 for(i=0; i<p->nVar; i++){ 156 sqlite3VdbeMemRelease(&p->aVar[i]); 157 p->aVar[i].flags = MEM_Null; 158 } 159 assert( (p->prepFlags & SQLITE_PREPARE_SAVESQL)!=0 || p->expmask==0 ); 160 if( p->expmask ){ 161 p->expired = 1; 162 } 163 sqlite3_mutex_leave(mutex); 164 return rc; 165 } 166 167 168 /**************************** sqlite3_value_ ******************************* 169 ** The following routines extract information from a Mem or sqlite3_value 170 ** structure. 171 */ 172 const void *sqlite3_value_blob(sqlite3_value *pVal){ 173 Mem *p = (Mem*)pVal; 174 if( p->flags & (MEM_Blob|MEM_Str) ){ 175 if( ExpandBlob(p)!=SQLITE_OK ){ 176 assert( p->flags==MEM_Null && p->z==0 ); 177 return 0; 178 } 179 p->flags |= MEM_Blob; 180 return p->n ? p->z : 0; 181 }else{ 182 return sqlite3_value_text(pVal); 183 } 184 } 185 int sqlite3_value_bytes(sqlite3_value *pVal){ 186 return sqlite3ValueBytes(pVal, SQLITE_UTF8); 187 } 188 int sqlite3_value_bytes16(sqlite3_value *pVal){ 189 return sqlite3ValueBytes(pVal, SQLITE_UTF16NATIVE); 190 } 191 double sqlite3_value_double(sqlite3_value *pVal){ 192 return sqlite3VdbeRealValue((Mem*)pVal); 193 } 194 int sqlite3_value_int(sqlite3_value *pVal){ 195 return (int)sqlite3VdbeIntValue((Mem*)pVal); 196 } 197 sqlite_int64 sqlite3_value_int64(sqlite3_value *pVal){ 198 return sqlite3VdbeIntValue((Mem*)pVal); 199 } 200 unsigned int sqlite3_value_subtype(sqlite3_value *pVal){ 201 Mem *pMem = (Mem*)pVal; 202 return ((pMem->flags & MEM_Subtype) ? pMem->eSubtype : 0); 203 } 204 void *sqlite3_value_pointer(sqlite3_value *pVal, const char *zPType){ 205 Mem *p = (Mem*)pVal; 206 if( (p->flags&(MEM_TypeMask|MEM_Term|MEM_Subtype)) == 207 (MEM_Null|MEM_Term|MEM_Subtype) 208 && zPType!=0 209 && p->eSubtype=='p' 210 && strcmp(p->u.zPType, zPType)==0 211 ){ 212 return (void*)p->z; 213 }else{ 214 return 0; 215 } 216 } 217 const unsigned char *sqlite3_value_text(sqlite3_value *pVal){ 218 return (const unsigned char *)sqlite3ValueText(pVal, SQLITE_UTF8); 219 } 220 #ifndef SQLITE_OMIT_UTF16 221 const void *sqlite3_value_text16(sqlite3_value* pVal){ 222 return sqlite3ValueText(pVal, SQLITE_UTF16NATIVE); 223 } 224 const void *sqlite3_value_text16be(sqlite3_value *pVal){ 225 return sqlite3ValueText(pVal, SQLITE_UTF16BE); 226 } 227 const void *sqlite3_value_text16le(sqlite3_value *pVal){ 228 return sqlite3ValueText(pVal, SQLITE_UTF16LE); 229 } 230 #endif /* SQLITE_OMIT_UTF16 */ 231 /* EVIDENCE-OF: R-12793-43283 Every value in SQLite has one of five 232 ** fundamental datatypes: 64-bit signed integer 64-bit IEEE floating 233 ** point number string BLOB NULL 234 */ 235 int sqlite3_value_type(sqlite3_value* pVal){ 236 static const u8 aType[] = { 237 SQLITE_BLOB, /* 0x00 (not possible) */ 238 SQLITE_NULL, /* 0x01 NULL */ 239 SQLITE_TEXT, /* 0x02 TEXT */ 240 SQLITE_NULL, /* 0x03 (not possible) */ 241 SQLITE_INTEGER, /* 0x04 INTEGER */ 242 SQLITE_NULL, /* 0x05 (not possible) */ 243 SQLITE_INTEGER, /* 0x06 INTEGER + TEXT */ 244 SQLITE_NULL, /* 0x07 (not possible) */ 245 SQLITE_FLOAT, /* 0x08 FLOAT */ 246 SQLITE_NULL, /* 0x09 (not possible) */ 247 SQLITE_FLOAT, /* 0x0a FLOAT + TEXT */ 248 SQLITE_NULL, /* 0x0b (not possible) */ 249 SQLITE_INTEGER, /* 0x0c (not possible) */ 250 SQLITE_NULL, /* 0x0d (not possible) */ 251 SQLITE_INTEGER, /* 0x0e (not possible) */ 252 SQLITE_NULL, /* 0x0f (not possible) */ 253 SQLITE_BLOB, /* 0x10 BLOB */ 254 SQLITE_NULL, /* 0x11 (not possible) */ 255 SQLITE_TEXT, /* 0x12 (not possible) */ 256 SQLITE_NULL, /* 0x13 (not possible) */ 257 SQLITE_INTEGER, /* 0x14 INTEGER + BLOB */ 258 SQLITE_NULL, /* 0x15 (not possible) */ 259 SQLITE_INTEGER, /* 0x16 (not possible) */ 260 SQLITE_NULL, /* 0x17 (not possible) */ 261 SQLITE_FLOAT, /* 0x18 FLOAT + BLOB */ 262 SQLITE_NULL, /* 0x19 (not possible) */ 263 SQLITE_FLOAT, /* 0x1a (not possible) */ 264 SQLITE_NULL, /* 0x1b (not possible) */ 265 SQLITE_INTEGER, /* 0x1c (not possible) */ 266 SQLITE_NULL, /* 0x1d (not possible) */ 267 SQLITE_INTEGER, /* 0x1e (not possible) */ 268 SQLITE_NULL, /* 0x1f (not possible) */ 269 SQLITE_FLOAT, /* 0x20 INTREAL */ 270 SQLITE_NULL, /* 0x21 (not possible) */ 271 SQLITE_TEXT, /* 0x22 INTREAL + TEXT */ 272 SQLITE_NULL, /* 0x23 (not possible) */ 273 SQLITE_FLOAT, /* 0x24 (not possible) */ 274 SQLITE_NULL, /* 0x25 (not possible) */ 275 SQLITE_FLOAT, /* 0x26 (not possible) */ 276 SQLITE_NULL, /* 0x27 (not possible) */ 277 SQLITE_FLOAT, /* 0x28 (not possible) */ 278 SQLITE_NULL, /* 0x29 (not possible) */ 279 SQLITE_FLOAT, /* 0x2a (not possible) */ 280 SQLITE_NULL, /* 0x2b (not possible) */ 281 SQLITE_FLOAT, /* 0x2c (not possible) */ 282 SQLITE_NULL, /* 0x2d (not possible) */ 283 SQLITE_FLOAT, /* 0x2e (not possible) */ 284 SQLITE_NULL, /* 0x2f (not possible) */ 285 SQLITE_BLOB, /* 0x30 (not possible) */ 286 SQLITE_NULL, /* 0x31 (not possible) */ 287 SQLITE_TEXT, /* 0x32 (not possible) */ 288 SQLITE_NULL, /* 0x33 (not possible) */ 289 SQLITE_FLOAT, /* 0x34 (not possible) */ 290 SQLITE_NULL, /* 0x35 (not possible) */ 291 SQLITE_FLOAT, /* 0x36 (not possible) */ 292 SQLITE_NULL, /* 0x37 (not possible) */ 293 SQLITE_FLOAT, /* 0x38 (not possible) */ 294 SQLITE_NULL, /* 0x39 (not possible) */ 295 SQLITE_FLOAT, /* 0x3a (not possible) */ 296 SQLITE_NULL, /* 0x3b (not possible) */ 297 SQLITE_FLOAT, /* 0x3c (not possible) */ 298 SQLITE_NULL, /* 0x3d (not possible) */ 299 SQLITE_FLOAT, /* 0x3e (not possible) */ 300 SQLITE_NULL, /* 0x3f (not possible) */ 301 }; 302 #ifdef SQLITE_DEBUG 303 { 304 int eType = SQLITE_BLOB; 305 if( pVal->flags & MEM_Null ){ 306 eType = SQLITE_NULL; 307 }else if( pVal->flags & (MEM_Real|MEM_IntReal) ){ 308 eType = SQLITE_FLOAT; 309 }else if( pVal->flags & MEM_Int ){ 310 eType = SQLITE_INTEGER; 311 }else if( pVal->flags & MEM_Str ){ 312 eType = SQLITE_TEXT; 313 } 314 assert( eType == aType[pVal->flags&MEM_AffMask] ); 315 } 316 #endif 317 return aType[pVal->flags&MEM_AffMask]; 318 } 319 320 /* Return true if a parameter to xUpdate represents an unchanged column */ 321 int sqlite3_value_nochange(sqlite3_value *pVal){ 322 return (pVal->flags&(MEM_Null|MEM_Zero))==(MEM_Null|MEM_Zero); 323 } 324 325 /* Return true if a parameter value originated from an sqlite3_bind() */ 326 int sqlite3_value_frombind(sqlite3_value *pVal){ 327 return (pVal->flags&MEM_FromBind)!=0; 328 } 329 330 /* Make a copy of an sqlite3_value object 331 */ 332 sqlite3_value *sqlite3_value_dup(const sqlite3_value *pOrig){ 333 sqlite3_value *pNew; 334 if( pOrig==0 ) return 0; 335 pNew = sqlite3_malloc( sizeof(*pNew) ); 336 if( pNew==0 ) return 0; 337 memset(pNew, 0, sizeof(*pNew)); 338 memcpy(pNew, pOrig, MEMCELLSIZE); 339 pNew->flags &= ~MEM_Dyn; 340 pNew->db = 0; 341 if( pNew->flags&(MEM_Str|MEM_Blob) ){ 342 pNew->flags &= ~(MEM_Static|MEM_Dyn); 343 pNew->flags |= MEM_Ephem; 344 if( sqlite3VdbeMemMakeWriteable(pNew)!=SQLITE_OK ){ 345 sqlite3ValueFree(pNew); 346 pNew = 0; 347 } 348 } 349 return pNew; 350 } 351 352 /* Destroy an sqlite3_value object previously obtained from 353 ** sqlite3_value_dup(). 354 */ 355 void sqlite3_value_free(sqlite3_value *pOld){ 356 sqlite3ValueFree(pOld); 357 } 358 359 360 /**************************** sqlite3_result_ ******************************* 361 ** The following routines are used by user-defined functions to specify 362 ** the function result. 363 ** 364 ** The setStrOrError() function calls sqlite3VdbeMemSetStr() to store the 365 ** result as a string or blob. Appropriate errors are set if the string/blob 366 ** is too big or if an OOM occurs. 367 ** 368 ** The invokeValueDestructor(P,X) routine invokes destructor function X() 369 ** on value P is not going to be used and need to be destroyed. 370 */ 371 static void setResultStrOrError( 372 sqlite3_context *pCtx, /* Function context */ 373 const char *z, /* String pointer */ 374 int n, /* Bytes in string, or negative */ 375 u8 enc, /* Encoding of z. 0 for BLOBs */ 376 void (*xDel)(void*) /* Destructor function */ 377 ){ 378 int rc = sqlite3VdbeMemSetStr(pCtx->pOut, z, n, enc, xDel); 379 if( rc ){ 380 if( rc==SQLITE_TOOBIG ){ 381 sqlite3_result_error_toobig(pCtx); 382 }else{ 383 /* The only errors possible from sqlite3VdbeMemSetStr are 384 ** SQLITE_TOOBIG and SQLITE_NOMEM */ 385 assert( rc==SQLITE_NOMEM ); 386 sqlite3_result_error_nomem(pCtx); 387 } 388 } 389 } 390 static int invokeValueDestructor( 391 const void *p, /* Value to destroy */ 392 void (*xDel)(void*), /* The destructor */ 393 sqlite3_context *pCtx /* Set a SQLITE_TOOBIG error if no NULL */ 394 ){ 395 assert( xDel!=SQLITE_DYNAMIC ); 396 if( xDel==0 ){ 397 /* noop */ 398 }else if( xDel==SQLITE_TRANSIENT ){ 399 /* noop */ 400 }else{ 401 xDel((void*)p); 402 } 403 sqlite3_result_error_toobig(pCtx); 404 return SQLITE_TOOBIG; 405 } 406 void sqlite3_result_blob( 407 sqlite3_context *pCtx, 408 const void *z, 409 int n, 410 void (*xDel)(void *) 411 ){ 412 assert( n>=0 ); 413 assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) ); 414 setResultStrOrError(pCtx, z, n, 0, xDel); 415 } 416 void sqlite3_result_blob64( 417 sqlite3_context *pCtx, 418 const void *z, 419 sqlite3_uint64 n, 420 void (*xDel)(void *) 421 ){ 422 assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) ); 423 assert( xDel!=SQLITE_DYNAMIC ); 424 if( n>0x7fffffff ){ 425 (void)invokeValueDestructor(z, xDel, pCtx); 426 }else{ 427 setResultStrOrError(pCtx, z, (int)n, 0, xDel); 428 } 429 } 430 void sqlite3_result_double(sqlite3_context *pCtx, double rVal){ 431 assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) ); 432 sqlite3VdbeMemSetDouble(pCtx->pOut, rVal); 433 } 434 void sqlite3_result_error(sqlite3_context *pCtx, const char *z, int n){ 435 assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) ); 436 pCtx->isError = SQLITE_ERROR; 437 sqlite3VdbeMemSetStr(pCtx->pOut, z, n, SQLITE_UTF8, SQLITE_TRANSIENT); 438 } 439 #ifndef SQLITE_OMIT_UTF16 440 void sqlite3_result_error16(sqlite3_context *pCtx, const void *z, int n){ 441 assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) ); 442 pCtx->isError = SQLITE_ERROR; 443 sqlite3VdbeMemSetStr(pCtx->pOut, z, n, SQLITE_UTF16NATIVE, SQLITE_TRANSIENT); 444 } 445 #endif 446 void sqlite3_result_int(sqlite3_context *pCtx, int iVal){ 447 assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) ); 448 sqlite3VdbeMemSetInt64(pCtx->pOut, (i64)iVal); 449 } 450 void sqlite3_result_int64(sqlite3_context *pCtx, i64 iVal){ 451 assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) ); 452 sqlite3VdbeMemSetInt64(pCtx->pOut, iVal); 453 } 454 void sqlite3_result_null(sqlite3_context *pCtx){ 455 assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) ); 456 sqlite3VdbeMemSetNull(pCtx->pOut); 457 } 458 void sqlite3_result_pointer( 459 sqlite3_context *pCtx, 460 void *pPtr, 461 const char *zPType, 462 void (*xDestructor)(void*) 463 ){ 464 Mem *pOut = pCtx->pOut; 465 assert( sqlite3_mutex_held(pOut->db->mutex) ); 466 sqlite3VdbeMemRelease(pOut); 467 pOut->flags = MEM_Null; 468 sqlite3VdbeMemSetPointer(pOut, pPtr, zPType, xDestructor); 469 } 470 void sqlite3_result_subtype(sqlite3_context *pCtx, unsigned int eSubtype){ 471 Mem *pOut = pCtx->pOut; 472 assert( sqlite3_mutex_held(pOut->db->mutex) ); 473 pOut->eSubtype = eSubtype & 0xff; 474 pOut->flags |= MEM_Subtype; 475 } 476 void sqlite3_result_text( 477 sqlite3_context *pCtx, 478 const char *z, 479 int n, 480 void (*xDel)(void *) 481 ){ 482 assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) ); 483 setResultStrOrError(pCtx, z, n, SQLITE_UTF8, xDel); 484 } 485 void sqlite3_result_text64( 486 sqlite3_context *pCtx, 487 const char *z, 488 sqlite3_uint64 n, 489 void (*xDel)(void *), 490 unsigned char enc 491 ){ 492 assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) ); 493 assert( xDel!=SQLITE_DYNAMIC ); 494 if( enc==SQLITE_UTF16 ) enc = SQLITE_UTF16NATIVE; 495 if( n>0x7fffffff ){ 496 (void)invokeValueDestructor(z, xDel, pCtx); 497 }else{ 498 setResultStrOrError(pCtx, z, (int)n, enc, xDel); 499 } 500 } 501 #ifndef SQLITE_OMIT_UTF16 502 void sqlite3_result_text16( 503 sqlite3_context *pCtx, 504 const void *z, 505 int n, 506 void (*xDel)(void *) 507 ){ 508 assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) ); 509 setResultStrOrError(pCtx, z, n, SQLITE_UTF16NATIVE, xDel); 510 } 511 void sqlite3_result_text16be( 512 sqlite3_context *pCtx, 513 const void *z, 514 int n, 515 void (*xDel)(void *) 516 ){ 517 assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) ); 518 setResultStrOrError(pCtx, z, n, SQLITE_UTF16BE, xDel); 519 } 520 void sqlite3_result_text16le( 521 sqlite3_context *pCtx, 522 const void *z, 523 int n, 524 void (*xDel)(void *) 525 ){ 526 assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) ); 527 setResultStrOrError(pCtx, z, n, SQLITE_UTF16LE, xDel); 528 } 529 #endif /* SQLITE_OMIT_UTF16 */ 530 void sqlite3_result_value(sqlite3_context *pCtx, sqlite3_value *pValue){ 531 assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) ); 532 sqlite3VdbeMemCopy(pCtx->pOut, pValue); 533 } 534 void sqlite3_result_zeroblob(sqlite3_context *pCtx, int n){ 535 assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) ); 536 sqlite3VdbeMemSetZeroBlob(pCtx->pOut, n); 537 } 538 int sqlite3_result_zeroblob64(sqlite3_context *pCtx, u64 n){ 539 Mem *pOut = pCtx->pOut; 540 assert( sqlite3_mutex_held(pOut->db->mutex) ); 541 if( n>(u64)pOut->db->aLimit[SQLITE_LIMIT_LENGTH] ){ 542 return SQLITE_TOOBIG; 543 } 544 #ifndef SQLITE_OMIT_INCRBLOB 545 sqlite3VdbeMemSetZeroBlob(pCtx->pOut, (int)n); 546 return SQLITE_OK; 547 #else 548 return sqlite3VdbeMemSetZeroBlob(pCtx->pOut, (int)n); 549 #endif 550 } 551 void sqlite3_result_error_code(sqlite3_context *pCtx, int errCode){ 552 pCtx->isError = errCode ? errCode : -1; 553 #ifdef SQLITE_DEBUG 554 if( pCtx->pVdbe ) pCtx->pVdbe->rcApp = errCode; 555 #endif 556 if( pCtx->pOut->flags & MEM_Null ){ 557 sqlite3VdbeMemSetStr(pCtx->pOut, sqlite3ErrStr(errCode), -1, 558 SQLITE_UTF8, SQLITE_STATIC); 559 } 560 } 561 562 /* Force an SQLITE_TOOBIG error. */ 563 void sqlite3_result_error_toobig(sqlite3_context *pCtx){ 564 assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) ); 565 pCtx->isError = SQLITE_TOOBIG; 566 sqlite3VdbeMemSetStr(pCtx->pOut, "string or blob too big", -1, 567 SQLITE_UTF8, SQLITE_STATIC); 568 } 569 570 /* An SQLITE_NOMEM error. */ 571 void sqlite3_result_error_nomem(sqlite3_context *pCtx){ 572 assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) ); 573 sqlite3VdbeMemSetNull(pCtx->pOut); 574 pCtx->isError = SQLITE_NOMEM_BKPT; 575 sqlite3OomFault(pCtx->pOut->db); 576 } 577 578 #ifndef SQLITE_UNTESTABLE 579 /* Force the INT64 value currently stored as the result to be 580 ** a MEM_IntReal value. See the SQLITE_TESTCTRL_RESULT_INTREAL 581 ** test-control. 582 */ 583 void sqlite3ResultIntReal(sqlite3_context *pCtx){ 584 assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) ); 585 if( pCtx->pOut->flags & MEM_Int ){ 586 pCtx->pOut->flags &= ~MEM_Int; 587 pCtx->pOut->flags |= MEM_IntReal; 588 } 589 } 590 #endif 591 592 593 /* 594 ** This function is called after a transaction has been committed. It 595 ** invokes callbacks registered with sqlite3_wal_hook() as required. 596 */ 597 static int doWalCallbacks(sqlite3 *db){ 598 int rc = SQLITE_OK; 599 #ifndef SQLITE_OMIT_WAL 600 int i; 601 for(i=0; i<db->nDb; i++){ 602 Btree *pBt = db->aDb[i].pBt; 603 if( pBt ){ 604 int nEntry; 605 sqlite3BtreeEnter(pBt); 606 nEntry = sqlite3PagerWalCallback(sqlite3BtreePager(pBt)); 607 sqlite3BtreeLeave(pBt); 608 if( nEntry>0 && db->xWalCallback && rc==SQLITE_OK ){ 609 rc = db->xWalCallback(db->pWalArg, db, db->aDb[i].zDbSName, nEntry); 610 } 611 } 612 } 613 #endif 614 return rc; 615 } 616 617 618 /* 619 ** Execute the statement pStmt, either until a row of data is ready, the 620 ** statement is completely executed or an error occurs. 621 ** 622 ** This routine implements the bulk of the logic behind the sqlite_step() 623 ** API. The only thing omitted is the automatic recompile if a 624 ** schema change has occurred. That detail is handled by the 625 ** outer sqlite3_step() wrapper procedure. 626 */ 627 static int sqlite3Step(Vdbe *p){ 628 sqlite3 *db; 629 int rc; 630 631 assert(p); 632 if( p->iVdbeMagic!=VDBE_MAGIC_RUN ){ 633 /* We used to require that sqlite3_reset() be called before retrying 634 ** sqlite3_step() after any error or after SQLITE_DONE. But beginning 635 ** with version 3.7.0, we changed this so that sqlite3_reset() would 636 ** be called automatically instead of throwing the SQLITE_MISUSE error. 637 ** This "automatic-reset" change is not technically an incompatibility, 638 ** since any application that receives an SQLITE_MISUSE is broken by 639 ** definition. 640 ** 641 ** Nevertheless, some published applications that were originally written 642 ** for version 3.6.23 or earlier do in fact depend on SQLITE_MISUSE 643 ** returns, and those were broken by the automatic-reset change. As a 644 ** a work-around, the SQLITE_OMIT_AUTORESET compile-time restores the 645 ** legacy behavior of returning SQLITE_MISUSE for cases where the 646 ** previous sqlite3_step() returned something other than a SQLITE_LOCKED 647 ** or SQLITE_BUSY error. 648 */ 649 #ifdef SQLITE_OMIT_AUTORESET 650 if( (rc = p->rc&0xff)==SQLITE_BUSY || rc==SQLITE_LOCKED ){ 651 sqlite3_reset((sqlite3_stmt*)p); 652 }else{ 653 return SQLITE_MISUSE_BKPT; 654 } 655 #else 656 sqlite3_reset((sqlite3_stmt*)p); 657 #endif 658 } 659 660 /* Check that malloc() has not failed. If it has, return early. */ 661 db = p->db; 662 if( db->mallocFailed ){ 663 p->rc = SQLITE_NOMEM; 664 return SQLITE_NOMEM_BKPT; 665 } 666 667 if( p->pc<0 && p->expired ){ 668 p->rc = SQLITE_SCHEMA; 669 rc = SQLITE_ERROR; 670 if( (p->prepFlags & SQLITE_PREPARE_SAVESQL)!=0 ){ 671 /* If this statement was prepared using saved SQL and an 672 ** error has occurred, then return the error code in p->rc to the 673 ** caller. Set the error code in the database handle to the same value. 674 */ 675 rc = sqlite3VdbeTransferError(p); 676 } 677 goto end_of_step; 678 } 679 if( p->pc<0 ){ 680 /* If there are no other statements currently running, then 681 ** reset the interrupt flag. This prevents a call to sqlite3_interrupt 682 ** from interrupting a statement that has not yet started. 683 */ 684 if( db->nVdbeActive==0 ){ 685 AtomicStore(&db->u1.isInterrupted, 0); 686 } 687 688 assert( db->nVdbeWrite>0 || db->autoCommit==0 689 || (db->nDeferredCons==0 && db->nDeferredImmCons==0) 690 ); 691 692 #ifndef SQLITE_OMIT_TRACE 693 if( (db->mTrace & (SQLITE_TRACE_PROFILE|SQLITE_TRACE_XPROFILE))!=0 694 && !db->init.busy && p->zSql ){ 695 sqlite3OsCurrentTimeInt64(db->pVfs, &p->startTime); 696 }else{ 697 assert( p->startTime==0 ); 698 } 699 #endif 700 701 db->nVdbeActive++; 702 if( p->readOnly==0 ) db->nVdbeWrite++; 703 if( p->bIsReader ) db->nVdbeRead++; 704 p->pc = 0; 705 } 706 #ifdef SQLITE_DEBUG 707 p->rcApp = SQLITE_OK; 708 #endif 709 #ifndef SQLITE_OMIT_EXPLAIN 710 if( p->explain ){ 711 rc = sqlite3VdbeList(p); 712 }else 713 #endif /* SQLITE_OMIT_EXPLAIN */ 714 { 715 db->nVdbeExec++; 716 rc = sqlite3VdbeExec(p); 717 db->nVdbeExec--; 718 } 719 720 if( rc!=SQLITE_ROW ){ 721 #ifndef SQLITE_OMIT_TRACE 722 /* If the statement completed successfully, invoke the profile callback */ 723 checkProfileCallback(db, p); 724 #endif 725 726 if( rc==SQLITE_DONE && db->autoCommit ){ 727 assert( p->rc==SQLITE_OK ); 728 p->rc = doWalCallbacks(db); 729 if( p->rc!=SQLITE_OK ){ 730 rc = SQLITE_ERROR; 731 } 732 }else if( rc!=SQLITE_DONE && (p->prepFlags & SQLITE_PREPARE_SAVESQL)!=0 ){ 733 /* If this statement was prepared using saved SQL and an 734 ** error has occurred, then return the error code in p->rc to the 735 ** caller. Set the error code in the database handle to the same value. 736 */ 737 rc = sqlite3VdbeTransferError(p); 738 } 739 } 740 741 db->errCode = rc; 742 if( SQLITE_NOMEM==sqlite3ApiExit(p->db, p->rc) ){ 743 p->rc = SQLITE_NOMEM_BKPT; 744 if( (p->prepFlags & SQLITE_PREPARE_SAVESQL)!=0 ) rc = p->rc; 745 } 746 end_of_step: 747 /* There are only a limited number of result codes allowed from the 748 ** statements prepared using the legacy sqlite3_prepare() interface */ 749 assert( (p->prepFlags & SQLITE_PREPARE_SAVESQL)!=0 750 || rc==SQLITE_ROW || rc==SQLITE_DONE || rc==SQLITE_ERROR 751 || (rc&0xff)==SQLITE_BUSY || rc==SQLITE_MISUSE 752 ); 753 return (rc&db->errMask); 754 } 755 756 /* 757 ** This is the top-level implementation of sqlite3_step(). Call 758 ** sqlite3Step() to do most of the work. If a schema error occurs, 759 ** call sqlite3Reprepare() and try again. 760 */ 761 int sqlite3_step(sqlite3_stmt *pStmt){ 762 int rc = SQLITE_OK; /* Result from sqlite3Step() */ 763 Vdbe *v = (Vdbe*)pStmt; /* the prepared statement */ 764 int cnt = 0; /* Counter to prevent infinite loop of reprepares */ 765 sqlite3 *db; /* The database connection */ 766 767 if( vdbeSafetyNotNull(v) ){ 768 return SQLITE_MISUSE_BKPT; 769 } 770 db = v->db; 771 sqlite3_mutex_enter(db->mutex); 772 v->doingRerun = 0; 773 while( (rc = sqlite3Step(v))==SQLITE_SCHEMA 774 && cnt++ < SQLITE_MAX_SCHEMA_RETRY ){ 775 int savedPc = v->pc; 776 rc = sqlite3Reprepare(v); 777 if( rc!=SQLITE_OK ){ 778 /* This case occurs after failing to recompile an sql statement. 779 ** The error message from the SQL compiler has already been loaded 780 ** into the database handle. This block copies the error message 781 ** from the database handle into the statement and sets the statement 782 ** program counter to 0 to ensure that when the statement is 783 ** finalized or reset the parser error message is available via 784 ** sqlite3_errmsg() and sqlite3_errcode(). 785 */ 786 const char *zErr = (const char *)sqlite3_value_text(db->pErr); 787 sqlite3DbFree(db, v->zErrMsg); 788 if( !db->mallocFailed ){ 789 v->zErrMsg = sqlite3DbStrDup(db, zErr); 790 v->rc = rc = sqlite3ApiExit(db, rc); 791 } else { 792 v->zErrMsg = 0; 793 v->rc = rc = SQLITE_NOMEM_BKPT; 794 } 795 break; 796 } 797 sqlite3_reset(pStmt); 798 if( savedPc>=0 ) v->doingRerun = 1; 799 assert( v->expired==0 ); 800 } 801 sqlite3_mutex_leave(db->mutex); 802 return rc; 803 } 804 805 806 /* 807 ** Extract the user data from a sqlite3_context structure and return a 808 ** pointer to it. 809 */ 810 void *sqlite3_user_data(sqlite3_context *p){ 811 assert( p && p->pFunc ); 812 return p->pFunc->pUserData; 813 } 814 815 /* 816 ** Extract the user data from a sqlite3_context structure and return a 817 ** pointer to it. 818 ** 819 ** IMPLEMENTATION-OF: R-46798-50301 The sqlite3_context_db_handle() interface 820 ** returns a copy of the pointer to the database connection (the 1st 821 ** parameter) of the sqlite3_create_function() and 822 ** sqlite3_create_function16() routines that originally registered the 823 ** application defined function. 824 */ 825 sqlite3 *sqlite3_context_db_handle(sqlite3_context *p){ 826 assert( p && p->pOut ); 827 return p->pOut->db; 828 } 829 830 /* 831 ** If this routine is invoked from within an xColumn method of a virtual 832 ** table, then it returns true if and only if the the call is during an 833 ** UPDATE operation and the value of the column will not be modified 834 ** by the UPDATE. 835 ** 836 ** If this routine is called from any context other than within the 837 ** xColumn method of a virtual table, then the return value is meaningless 838 ** and arbitrary. 839 ** 840 ** Virtual table implements might use this routine to optimize their 841 ** performance by substituting a NULL result, or some other light-weight 842 ** value, as a signal to the xUpdate routine that the column is unchanged. 843 */ 844 int sqlite3_vtab_nochange(sqlite3_context *p){ 845 assert( p ); 846 return sqlite3_value_nochange(p->pOut); 847 } 848 849 /* 850 ** The first argument is an iterator value created by VDBE instruction 851 ** OP_VInitIn. The iterator is guaranteed to point to a valid entry. This 852 ** function attempts to load the current value from the iterator into 853 ** object pVal->u.pVal. If successful, (*ppOut) is set to point to 854 ** pVal->u.pVal and SQLITE_OK is returned. Otherwise, if an error 855 ** occurs, an SQLite error code is returned and (*ppOut) is left unchanged. 856 */ 857 static int vtabInLoadValue(sqlite3_value *pVal, sqlite3_value **ppOut){ 858 BtCursor *pCsr = (BtCursor*)pVal->z; 859 sqlite3_value *pOut = pVal->u.pVal; 860 int sz; 861 int rc; 862 863 sz = (int)sqlite3BtreePayloadSize(pCsr); 864 if( sz>pVal->szMalloc ){ 865 if( pVal->szMalloc==0 ) pVal->zMalloc = 0; 866 pVal->zMalloc = sqlite3DbReallocOrFree(pVal->db, pVal->zMalloc, sz*2); 867 if( pVal->zMalloc ){ 868 pVal->szMalloc = sqlite3DbMallocSize(pVal->db, pVal->zMalloc); 869 }else{ 870 pVal->szMalloc = 0; 871 return SQLITE_NOMEM_BKPT; 872 } 873 } 874 875 rc = sqlite3BtreePayload(pCsr, 0, sz, pVal->zMalloc); 876 if( rc==SQLITE_OK ){ 877 u32 iSerial; 878 int iOff = 1 + getVarint32((const u8*)&pVal->zMalloc[1], iSerial); 879 sqlite3VdbeSerialGet((const u8*)&pVal->zMalloc[iOff], iSerial, pOut); 880 pOut->enc = ENC(pVal->db); 881 *ppOut = pOut; 882 } 883 return rc; 884 } 885 886 /* 887 ** Implementation of sqlite3_vtab_in_first() (if bNext==0) and 888 ** sqlite3_vtab_in_next() (if bNext!=0). 889 */ 890 static int vtabInOp(sqlite3_value *pVal, sqlite3_value **ppOut, int bNext){ 891 int rc; 892 BtCursor *pCsr; 893 *ppOut = 0; 894 if( pVal==0 ) return SQLITE_MISUSE; 895 if( pVal->uTemp!=SQLITE_VTAB_IN_MAGIC ) return SQLITE_MISUSE; 896 pCsr = (BtCursor*)pVal->z; 897 if( bNext ){ 898 rc = sqlite3BtreeNext(pCsr, 0); 899 }else{ 900 int dummy = 0; 901 rc = sqlite3BtreeFirst(pCsr, &dummy); 902 if( rc==SQLITE_OK && sqlite3BtreeEof(pCsr) ) rc = SQLITE_DONE; 903 } 904 if( rc==SQLITE_OK ){ 905 rc = vtabInLoadValue(pVal, ppOut); 906 } 907 return rc; 908 } 909 910 /* 911 ** Set the iterator value pVal to point to the first value in the set. 912 ** Set (*ppOut) to point to this value before returning. 913 */ 914 int sqlite3_vtab_in_first(sqlite3_value *pVal, sqlite3_value **ppOut){ 915 return vtabInOp(pVal, ppOut, 0); 916 } 917 918 /* 919 ** Set the iterator value pVal to point to the next value in the set. 920 ** Set (*ppOut) to point to this value before returning. 921 */ 922 int sqlite3_vtab_in_next(sqlite3_value *pVal, sqlite3_value **ppOut){ 923 return vtabInOp(pVal, ppOut, 1); 924 } 925 926 /* 927 ** Return the current time for a statement. If the current time 928 ** is requested more than once within the same run of a single prepared 929 ** statement, the exact same time is returned for each invocation regardless 930 ** of the amount of time that elapses between invocations. In other words, 931 ** the time returned is always the time of the first call. 932 */ 933 sqlite3_int64 sqlite3StmtCurrentTime(sqlite3_context *p){ 934 int rc; 935 #ifndef SQLITE_ENABLE_STAT4 936 sqlite3_int64 *piTime = &p->pVdbe->iCurrentTime; 937 assert( p->pVdbe!=0 ); 938 #else 939 sqlite3_int64 iTime = 0; 940 sqlite3_int64 *piTime = p->pVdbe!=0 ? &p->pVdbe->iCurrentTime : &iTime; 941 #endif 942 if( *piTime==0 ){ 943 rc = sqlite3OsCurrentTimeInt64(p->pOut->db->pVfs, piTime); 944 if( rc ) *piTime = 0; 945 } 946 return *piTime; 947 } 948 949 /* 950 ** Create a new aggregate context for p and return a pointer to 951 ** its pMem->z element. 952 */ 953 static SQLITE_NOINLINE void *createAggContext(sqlite3_context *p, int nByte){ 954 Mem *pMem = p->pMem; 955 assert( (pMem->flags & MEM_Agg)==0 ); 956 if( nByte<=0 ){ 957 sqlite3VdbeMemSetNull(pMem); 958 pMem->z = 0; 959 }else{ 960 sqlite3VdbeMemClearAndResize(pMem, nByte); 961 pMem->flags = MEM_Agg; 962 pMem->u.pDef = p->pFunc; 963 if( pMem->z ){ 964 memset(pMem->z, 0, nByte); 965 } 966 } 967 return (void*)pMem->z; 968 } 969 970 /* 971 ** Allocate or return the aggregate context for a user function. A new 972 ** context is allocated on the first call. Subsequent calls return the 973 ** same context that was returned on prior calls. 974 */ 975 void *sqlite3_aggregate_context(sqlite3_context *p, int nByte){ 976 assert( p && p->pFunc && p->pFunc->xFinalize ); 977 assert( sqlite3_mutex_held(p->pOut->db->mutex) ); 978 testcase( nByte<0 ); 979 if( (p->pMem->flags & MEM_Agg)==0 ){ 980 return createAggContext(p, nByte); 981 }else{ 982 return (void*)p->pMem->z; 983 } 984 } 985 986 /* 987 ** Return the auxiliary data pointer, if any, for the iArg'th argument to 988 ** the user-function defined by pCtx. 989 ** 990 ** The left-most argument is 0. 991 ** 992 ** Undocumented behavior: If iArg is negative then access a cache of 993 ** auxiliary data pointers that is available to all functions within a 994 ** single prepared statement. The iArg values must match. 995 */ 996 void *sqlite3_get_auxdata(sqlite3_context *pCtx, int iArg){ 997 AuxData *pAuxData; 998 999 assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) ); 1000 #if SQLITE_ENABLE_STAT4 1001 if( pCtx->pVdbe==0 ) return 0; 1002 #else 1003 assert( pCtx->pVdbe!=0 ); 1004 #endif 1005 for(pAuxData=pCtx->pVdbe->pAuxData; pAuxData; pAuxData=pAuxData->pNextAux){ 1006 if( pAuxData->iAuxArg==iArg && (pAuxData->iAuxOp==pCtx->iOp || iArg<0) ){ 1007 return pAuxData->pAux; 1008 } 1009 } 1010 return 0; 1011 } 1012 1013 /* 1014 ** Set the auxiliary data pointer and delete function, for the iArg'th 1015 ** argument to the user-function defined by pCtx. Any previous value is 1016 ** deleted by calling the delete function specified when it was set. 1017 ** 1018 ** The left-most argument is 0. 1019 ** 1020 ** Undocumented behavior: If iArg is negative then make the data available 1021 ** to all functions within the current prepared statement using iArg as an 1022 ** access code. 1023 */ 1024 void sqlite3_set_auxdata( 1025 sqlite3_context *pCtx, 1026 int iArg, 1027 void *pAux, 1028 void (*xDelete)(void*) 1029 ){ 1030 AuxData *pAuxData; 1031 Vdbe *pVdbe = pCtx->pVdbe; 1032 1033 assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) ); 1034 #ifdef SQLITE_ENABLE_STAT4 1035 if( pVdbe==0 ) goto failed; 1036 #else 1037 assert( pVdbe!=0 ); 1038 #endif 1039 1040 for(pAuxData=pVdbe->pAuxData; pAuxData; pAuxData=pAuxData->pNextAux){ 1041 if( pAuxData->iAuxArg==iArg && (pAuxData->iAuxOp==pCtx->iOp || iArg<0) ){ 1042 break; 1043 } 1044 } 1045 if( pAuxData==0 ){ 1046 pAuxData = sqlite3DbMallocZero(pVdbe->db, sizeof(AuxData)); 1047 if( !pAuxData ) goto failed; 1048 pAuxData->iAuxOp = pCtx->iOp; 1049 pAuxData->iAuxArg = iArg; 1050 pAuxData->pNextAux = pVdbe->pAuxData; 1051 pVdbe->pAuxData = pAuxData; 1052 if( pCtx->isError==0 ) pCtx->isError = -1; 1053 }else if( pAuxData->xDeleteAux ){ 1054 pAuxData->xDeleteAux(pAuxData->pAux); 1055 } 1056 1057 pAuxData->pAux = pAux; 1058 pAuxData->xDeleteAux = xDelete; 1059 return; 1060 1061 failed: 1062 if( xDelete ){ 1063 xDelete(pAux); 1064 } 1065 } 1066 1067 #ifndef SQLITE_OMIT_DEPRECATED 1068 /* 1069 ** Return the number of times the Step function of an aggregate has been 1070 ** called. 1071 ** 1072 ** This function is deprecated. Do not use it for new code. It is 1073 ** provide only to avoid breaking legacy code. New aggregate function 1074 ** implementations should keep their own counts within their aggregate 1075 ** context. 1076 */ 1077 int sqlite3_aggregate_count(sqlite3_context *p){ 1078 assert( p && p->pMem && p->pFunc && p->pFunc->xFinalize ); 1079 return p->pMem->n; 1080 } 1081 #endif 1082 1083 /* 1084 ** Return the number of columns in the result set for the statement pStmt. 1085 */ 1086 int sqlite3_column_count(sqlite3_stmt *pStmt){ 1087 Vdbe *pVm = (Vdbe *)pStmt; 1088 return pVm ? pVm->nResColumn : 0; 1089 } 1090 1091 /* 1092 ** Return the number of values available from the current row of the 1093 ** currently executing statement pStmt. 1094 */ 1095 int sqlite3_data_count(sqlite3_stmt *pStmt){ 1096 Vdbe *pVm = (Vdbe *)pStmt; 1097 if( pVm==0 || pVm->pResultSet==0 ) return 0; 1098 return pVm->nResColumn; 1099 } 1100 1101 /* 1102 ** Return a pointer to static memory containing an SQL NULL value. 1103 */ 1104 static const Mem *columnNullValue(void){ 1105 /* Even though the Mem structure contains an element 1106 ** of type i64, on certain architectures (x86) with certain compiler 1107 ** switches (-Os), gcc may align this Mem object on a 4-byte boundary 1108 ** instead of an 8-byte one. This all works fine, except that when 1109 ** running with SQLITE_DEBUG defined the SQLite code sometimes assert()s 1110 ** that a Mem structure is located on an 8-byte boundary. To prevent 1111 ** these assert()s from failing, when building with SQLITE_DEBUG defined 1112 ** using gcc, we force nullMem to be 8-byte aligned using the magical 1113 ** __attribute__((aligned(8))) macro. */ 1114 static const Mem nullMem 1115 #if defined(SQLITE_DEBUG) && defined(__GNUC__) 1116 __attribute__((aligned(8))) 1117 #endif 1118 = { 1119 /* .u = */ {0}, 1120 /* .flags = */ (u16)MEM_Null, 1121 /* .enc = */ (u8)0, 1122 /* .eSubtype = */ (u8)0, 1123 /* .n = */ (int)0, 1124 /* .z = */ (char*)0, 1125 /* .zMalloc = */ (char*)0, 1126 /* .szMalloc = */ (int)0, 1127 /* .uTemp = */ (u32)0, 1128 /* .db = */ (sqlite3*)0, 1129 /* .xDel = */ (void(*)(void*))0, 1130 #ifdef SQLITE_DEBUG 1131 /* .pScopyFrom = */ (Mem*)0, 1132 /* .mScopyFlags= */ 0, 1133 #endif 1134 }; 1135 return &nullMem; 1136 } 1137 1138 /* 1139 ** Check to see if column iCol of the given statement is valid. If 1140 ** it is, return a pointer to the Mem for the value of that column. 1141 ** If iCol is not valid, return a pointer to a Mem which has a value 1142 ** of NULL. 1143 */ 1144 static Mem *columnMem(sqlite3_stmt *pStmt, int i){ 1145 Vdbe *pVm; 1146 Mem *pOut; 1147 1148 pVm = (Vdbe *)pStmt; 1149 if( pVm==0 ) return (Mem*)columnNullValue(); 1150 assert( pVm->db ); 1151 sqlite3_mutex_enter(pVm->db->mutex); 1152 if( pVm->pResultSet!=0 && i<pVm->nResColumn && i>=0 ){ 1153 pOut = &pVm->pResultSet[i]; 1154 }else{ 1155 sqlite3Error(pVm->db, SQLITE_RANGE); 1156 pOut = (Mem*)columnNullValue(); 1157 } 1158 return pOut; 1159 } 1160 1161 /* 1162 ** This function is called after invoking an sqlite3_value_XXX function on a 1163 ** column value (i.e. a value returned by evaluating an SQL expression in the 1164 ** select list of a SELECT statement) that may cause a malloc() failure. If 1165 ** malloc() has failed, the threads mallocFailed flag is cleared and the result 1166 ** code of statement pStmt set to SQLITE_NOMEM. 1167 ** 1168 ** Specifically, this is called from within: 1169 ** 1170 ** sqlite3_column_int() 1171 ** sqlite3_column_int64() 1172 ** sqlite3_column_text() 1173 ** sqlite3_column_text16() 1174 ** sqlite3_column_real() 1175 ** sqlite3_column_bytes() 1176 ** sqlite3_column_bytes16() 1177 ** sqiite3_column_blob() 1178 */ 1179 static void columnMallocFailure(sqlite3_stmt *pStmt) 1180 { 1181 /* If malloc() failed during an encoding conversion within an 1182 ** sqlite3_column_XXX API, then set the return code of the statement to 1183 ** SQLITE_NOMEM. The next call to _step() (if any) will return SQLITE_ERROR 1184 ** and _finalize() will return NOMEM. 1185 */ 1186 Vdbe *p = (Vdbe *)pStmt; 1187 if( p ){ 1188 assert( p->db!=0 ); 1189 assert( sqlite3_mutex_held(p->db->mutex) ); 1190 p->rc = sqlite3ApiExit(p->db, p->rc); 1191 sqlite3_mutex_leave(p->db->mutex); 1192 } 1193 } 1194 1195 /**************************** sqlite3_column_ ******************************* 1196 ** The following routines are used to access elements of the current row 1197 ** in the result set. 1198 */ 1199 const void *sqlite3_column_blob(sqlite3_stmt *pStmt, int i){ 1200 const void *val; 1201 val = sqlite3_value_blob( columnMem(pStmt,i) ); 1202 /* Even though there is no encoding conversion, value_blob() might 1203 ** need to call malloc() to expand the result of a zeroblob() 1204 ** expression. 1205 */ 1206 columnMallocFailure(pStmt); 1207 return val; 1208 } 1209 int sqlite3_column_bytes(sqlite3_stmt *pStmt, int i){ 1210 int val = sqlite3_value_bytes( columnMem(pStmt,i) ); 1211 columnMallocFailure(pStmt); 1212 return val; 1213 } 1214 int sqlite3_column_bytes16(sqlite3_stmt *pStmt, int i){ 1215 int val = sqlite3_value_bytes16( columnMem(pStmt,i) ); 1216 columnMallocFailure(pStmt); 1217 return val; 1218 } 1219 double sqlite3_column_double(sqlite3_stmt *pStmt, int i){ 1220 double val = sqlite3_value_double( columnMem(pStmt,i) ); 1221 columnMallocFailure(pStmt); 1222 return val; 1223 } 1224 int sqlite3_column_int(sqlite3_stmt *pStmt, int i){ 1225 int val = sqlite3_value_int( columnMem(pStmt,i) ); 1226 columnMallocFailure(pStmt); 1227 return val; 1228 } 1229 sqlite_int64 sqlite3_column_int64(sqlite3_stmt *pStmt, int i){ 1230 sqlite_int64 val = sqlite3_value_int64( columnMem(pStmt,i) ); 1231 columnMallocFailure(pStmt); 1232 return val; 1233 } 1234 const unsigned char *sqlite3_column_text(sqlite3_stmt *pStmt, int i){ 1235 const unsigned char *val = sqlite3_value_text( columnMem(pStmt,i) ); 1236 columnMallocFailure(pStmt); 1237 return val; 1238 } 1239 sqlite3_value *sqlite3_column_value(sqlite3_stmt *pStmt, int i){ 1240 Mem *pOut = columnMem(pStmt, i); 1241 if( pOut->flags&MEM_Static ){ 1242 pOut->flags &= ~MEM_Static; 1243 pOut->flags |= MEM_Ephem; 1244 } 1245 columnMallocFailure(pStmt); 1246 return (sqlite3_value *)pOut; 1247 } 1248 #ifndef SQLITE_OMIT_UTF16 1249 const void *sqlite3_column_text16(sqlite3_stmt *pStmt, int i){ 1250 const void *val = sqlite3_value_text16( columnMem(pStmt,i) ); 1251 columnMallocFailure(pStmt); 1252 return val; 1253 } 1254 #endif /* SQLITE_OMIT_UTF16 */ 1255 int sqlite3_column_type(sqlite3_stmt *pStmt, int i){ 1256 int iType = sqlite3_value_type( columnMem(pStmt,i) ); 1257 columnMallocFailure(pStmt); 1258 return iType; 1259 } 1260 1261 /* 1262 ** Convert the N-th element of pStmt->pColName[] into a string using 1263 ** xFunc() then return that string. If N is out of range, return 0. 1264 ** 1265 ** There are up to 5 names for each column. useType determines which 1266 ** name is returned. Here are the names: 1267 ** 1268 ** 0 The column name as it should be displayed for output 1269 ** 1 The datatype name for the column 1270 ** 2 The name of the database that the column derives from 1271 ** 3 The name of the table that the column derives from 1272 ** 4 The name of the table column that the result column derives from 1273 ** 1274 ** If the result is not a simple column reference (if it is an expression 1275 ** or a constant) then useTypes 2, 3, and 4 return NULL. 1276 */ 1277 static const void *columnName( 1278 sqlite3_stmt *pStmt, /* The statement */ 1279 int N, /* Which column to get the name for */ 1280 int useUtf16, /* True to return the name as UTF16 */ 1281 int useType /* What type of name */ 1282 ){ 1283 const void *ret; 1284 Vdbe *p; 1285 int n; 1286 sqlite3 *db; 1287 #ifdef SQLITE_ENABLE_API_ARMOR 1288 if( pStmt==0 ){ 1289 (void)SQLITE_MISUSE_BKPT; 1290 return 0; 1291 } 1292 #endif 1293 ret = 0; 1294 p = (Vdbe *)pStmt; 1295 db = p->db; 1296 assert( db!=0 ); 1297 n = sqlite3_column_count(pStmt); 1298 if( N<n && N>=0 ){ 1299 N += useType*n; 1300 sqlite3_mutex_enter(db->mutex); 1301 assert( db->mallocFailed==0 ); 1302 #ifndef SQLITE_OMIT_UTF16 1303 if( useUtf16 ){ 1304 ret = sqlite3_value_text16((sqlite3_value*)&p->aColName[N]); 1305 }else 1306 #endif 1307 { 1308 ret = sqlite3_value_text((sqlite3_value*)&p->aColName[N]); 1309 } 1310 /* A malloc may have failed inside of the _text() call. If this 1311 ** is the case, clear the mallocFailed flag and return NULL. 1312 */ 1313 if( db->mallocFailed ){ 1314 sqlite3OomClear(db); 1315 ret = 0; 1316 } 1317 sqlite3_mutex_leave(db->mutex); 1318 } 1319 return ret; 1320 } 1321 1322 /* 1323 ** Return the name of the Nth column of the result set returned by SQL 1324 ** statement pStmt. 1325 */ 1326 const char *sqlite3_column_name(sqlite3_stmt *pStmt, int N){ 1327 return columnName(pStmt, N, 0, COLNAME_NAME); 1328 } 1329 #ifndef SQLITE_OMIT_UTF16 1330 const void *sqlite3_column_name16(sqlite3_stmt *pStmt, int N){ 1331 return columnName(pStmt, N, 1, COLNAME_NAME); 1332 } 1333 #endif 1334 1335 /* 1336 ** Constraint: If you have ENABLE_COLUMN_METADATA then you must 1337 ** not define OMIT_DECLTYPE. 1338 */ 1339 #if defined(SQLITE_OMIT_DECLTYPE) && defined(SQLITE_ENABLE_COLUMN_METADATA) 1340 # error "Must not define both SQLITE_OMIT_DECLTYPE \ 1341 and SQLITE_ENABLE_COLUMN_METADATA" 1342 #endif 1343 1344 #ifndef SQLITE_OMIT_DECLTYPE 1345 /* 1346 ** Return the column declaration type (if applicable) of the 'i'th column 1347 ** of the result set of SQL statement pStmt. 1348 */ 1349 const char *sqlite3_column_decltype(sqlite3_stmt *pStmt, int N){ 1350 return columnName(pStmt, N, 0, COLNAME_DECLTYPE); 1351 } 1352 #ifndef SQLITE_OMIT_UTF16 1353 const void *sqlite3_column_decltype16(sqlite3_stmt *pStmt, int N){ 1354 return columnName(pStmt, N, 1, COLNAME_DECLTYPE); 1355 } 1356 #endif /* SQLITE_OMIT_UTF16 */ 1357 #endif /* SQLITE_OMIT_DECLTYPE */ 1358 1359 #ifdef SQLITE_ENABLE_COLUMN_METADATA 1360 /* 1361 ** Return the name of the database from which a result column derives. 1362 ** NULL is returned if the result column is an expression or constant or 1363 ** anything else which is not an unambiguous reference to a database column. 1364 */ 1365 const char *sqlite3_column_database_name(sqlite3_stmt *pStmt, int N){ 1366 return columnName(pStmt, N, 0, COLNAME_DATABASE); 1367 } 1368 #ifndef SQLITE_OMIT_UTF16 1369 const void *sqlite3_column_database_name16(sqlite3_stmt *pStmt, int N){ 1370 return columnName(pStmt, N, 1, COLNAME_DATABASE); 1371 } 1372 #endif /* SQLITE_OMIT_UTF16 */ 1373 1374 /* 1375 ** Return the name of the table from which a result column derives. 1376 ** NULL is returned if the result column is an expression or constant or 1377 ** anything else which is not an unambiguous reference to a database column. 1378 */ 1379 const char *sqlite3_column_table_name(sqlite3_stmt *pStmt, int N){ 1380 return columnName(pStmt, N, 0, COLNAME_TABLE); 1381 } 1382 #ifndef SQLITE_OMIT_UTF16 1383 const void *sqlite3_column_table_name16(sqlite3_stmt *pStmt, int N){ 1384 return columnName(pStmt, N, 1, COLNAME_TABLE); 1385 } 1386 #endif /* SQLITE_OMIT_UTF16 */ 1387 1388 /* 1389 ** Return the name of the table column from which a result column derives. 1390 ** NULL is returned if the result column is an expression or constant or 1391 ** anything else which is not an unambiguous reference to a database column. 1392 */ 1393 const char *sqlite3_column_origin_name(sqlite3_stmt *pStmt, int N){ 1394 return columnName(pStmt, N, 0, COLNAME_COLUMN); 1395 } 1396 #ifndef SQLITE_OMIT_UTF16 1397 const void *sqlite3_column_origin_name16(sqlite3_stmt *pStmt, int N){ 1398 return columnName(pStmt, N, 1, COLNAME_COLUMN); 1399 } 1400 #endif /* SQLITE_OMIT_UTF16 */ 1401 #endif /* SQLITE_ENABLE_COLUMN_METADATA */ 1402 1403 1404 /******************************* sqlite3_bind_ *************************** 1405 ** 1406 ** Routines used to attach values to wildcards in a compiled SQL statement. 1407 */ 1408 /* 1409 ** Unbind the value bound to variable i in virtual machine p. This is the 1410 ** the same as binding a NULL value to the column. If the "i" parameter is 1411 ** out of range, then SQLITE_RANGE is returned. Othewise SQLITE_OK. 1412 ** 1413 ** A successful evaluation of this routine acquires the mutex on p. 1414 ** the mutex is released if any kind of error occurs. 1415 ** 1416 ** The error code stored in database p->db is overwritten with the return 1417 ** value in any case. 1418 */ 1419 static int vdbeUnbind(Vdbe *p, int i){ 1420 Mem *pVar; 1421 if( vdbeSafetyNotNull(p) ){ 1422 return SQLITE_MISUSE_BKPT; 1423 } 1424 sqlite3_mutex_enter(p->db->mutex); 1425 if( p->iVdbeMagic!=VDBE_MAGIC_RUN || p->pc>=0 ){ 1426 sqlite3Error(p->db, SQLITE_MISUSE); 1427 sqlite3_mutex_leave(p->db->mutex); 1428 sqlite3_log(SQLITE_MISUSE, 1429 "bind on a busy prepared statement: [%s]", p->zSql); 1430 return SQLITE_MISUSE_BKPT; 1431 } 1432 if( i<1 || i>p->nVar ){ 1433 sqlite3Error(p->db, SQLITE_RANGE); 1434 sqlite3_mutex_leave(p->db->mutex); 1435 return SQLITE_RANGE; 1436 } 1437 i--; 1438 pVar = &p->aVar[i]; 1439 sqlite3VdbeMemRelease(pVar); 1440 pVar->flags = MEM_Null; 1441 p->db->errCode = SQLITE_OK; 1442 1443 /* If the bit corresponding to this variable in Vdbe.expmask is set, then 1444 ** binding a new value to this variable invalidates the current query plan. 1445 ** 1446 ** IMPLEMENTATION-OF: R-57496-20354 If the specific value bound to a host 1447 ** parameter in the WHERE clause might influence the choice of query plan 1448 ** for a statement, then the statement will be automatically recompiled, 1449 ** as if there had been a schema change, on the first sqlite3_step() call 1450 ** following any change to the bindings of that parameter. 1451 */ 1452 assert( (p->prepFlags & SQLITE_PREPARE_SAVESQL)!=0 || p->expmask==0 ); 1453 if( p->expmask!=0 && (p->expmask & (i>=31 ? 0x80000000 : (u32)1<<i))!=0 ){ 1454 p->expired = 1; 1455 } 1456 return SQLITE_OK; 1457 } 1458 1459 /* 1460 ** Bind a text or BLOB value. 1461 */ 1462 static int bindText( 1463 sqlite3_stmt *pStmt, /* The statement to bind against */ 1464 int i, /* Index of the parameter to bind */ 1465 const void *zData, /* Pointer to the data to be bound */ 1466 i64 nData, /* Number of bytes of data to be bound */ 1467 void (*xDel)(void*), /* Destructor for the data */ 1468 u8 encoding /* Encoding for the data */ 1469 ){ 1470 Vdbe *p = (Vdbe *)pStmt; 1471 Mem *pVar; 1472 int rc; 1473 1474 rc = vdbeUnbind(p, i); 1475 if( rc==SQLITE_OK ){ 1476 if( zData!=0 ){ 1477 pVar = &p->aVar[i-1]; 1478 rc = sqlite3VdbeMemSetStr(pVar, zData, nData, encoding, xDel); 1479 if( rc==SQLITE_OK && encoding!=0 ){ 1480 rc = sqlite3VdbeChangeEncoding(pVar, ENC(p->db)); 1481 } 1482 if( rc ){ 1483 sqlite3Error(p->db, rc); 1484 rc = sqlite3ApiExit(p->db, rc); 1485 } 1486 } 1487 sqlite3_mutex_leave(p->db->mutex); 1488 }else if( xDel!=SQLITE_STATIC && xDel!=SQLITE_TRANSIENT ){ 1489 xDel((void*)zData); 1490 } 1491 return rc; 1492 } 1493 1494 1495 /* 1496 ** Bind a blob value to an SQL statement variable. 1497 */ 1498 int sqlite3_bind_blob( 1499 sqlite3_stmt *pStmt, 1500 int i, 1501 const void *zData, 1502 int nData, 1503 void (*xDel)(void*) 1504 ){ 1505 #ifdef SQLITE_ENABLE_API_ARMOR 1506 if( nData<0 ) return SQLITE_MISUSE_BKPT; 1507 #endif 1508 return bindText(pStmt, i, zData, nData, xDel, 0); 1509 } 1510 int sqlite3_bind_blob64( 1511 sqlite3_stmt *pStmt, 1512 int i, 1513 const void *zData, 1514 sqlite3_uint64 nData, 1515 void (*xDel)(void*) 1516 ){ 1517 assert( xDel!=SQLITE_DYNAMIC ); 1518 return bindText(pStmt, i, zData, nData, xDel, 0); 1519 } 1520 int sqlite3_bind_double(sqlite3_stmt *pStmt, int i, double rValue){ 1521 int rc; 1522 Vdbe *p = (Vdbe *)pStmt; 1523 rc = vdbeUnbind(p, i); 1524 if( rc==SQLITE_OK ){ 1525 sqlite3VdbeMemSetDouble(&p->aVar[i-1], rValue); 1526 sqlite3_mutex_leave(p->db->mutex); 1527 } 1528 return rc; 1529 } 1530 int sqlite3_bind_int(sqlite3_stmt *p, int i, int iValue){ 1531 return sqlite3_bind_int64(p, i, (i64)iValue); 1532 } 1533 int sqlite3_bind_int64(sqlite3_stmt *pStmt, int i, sqlite_int64 iValue){ 1534 int rc; 1535 Vdbe *p = (Vdbe *)pStmt; 1536 rc = vdbeUnbind(p, i); 1537 if( rc==SQLITE_OK ){ 1538 sqlite3VdbeMemSetInt64(&p->aVar[i-1], iValue); 1539 sqlite3_mutex_leave(p->db->mutex); 1540 } 1541 return rc; 1542 } 1543 int sqlite3_bind_null(sqlite3_stmt *pStmt, int i){ 1544 int rc; 1545 Vdbe *p = (Vdbe*)pStmt; 1546 rc = vdbeUnbind(p, i); 1547 if( rc==SQLITE_OK ){ 1548 sqlite3_mutex_leave(p->db->mutex); 1549 } 1550 return rc; 1551 } 1552 int sqlite3_bind_pointer( 1553 sqlite3_stmt *pStmt, 1554 int i, 1555 void *pPtr, 1556 const char *zPTtype, 1557 void (*xDestructor)(void*) 1558 ){ 1559 int rc; 1560 Vdbe *p = (Vdbe*)pStmt; 1561 rc = vdbeUnbind(p, i); 1562 if( rc==SQLITE_OK ){ 1563 sqlite3VdbeMemSetPointer(&p->aVar[i-1], pPtr, zPTtype, xDestructor); 1564 sqlite3_mutex_leave(p->db->mutex); 1565 }else if( xDestructor ){ 1566 xDestructor(pPtr); 1567 } 1568 return rc; 1569 } 1570 int sqlite3_bind_text( 1571 sqlite3_stmt *pStmt, 1572 int i, 1573 const char *zData, 1574 int nData, 1575 void (*xDel)(void*) 1576 ){ 1577 return bindText(pStmt, i, zData, nData, xDel, SQLITE_UTF8); 1578 } 1579 int sqlite3_bind_text64( 1580 sqlite3_stmt *pStmt, 1581 int i, 1582 const char *zData, 1583 sqlite3_uint64 nData, 1584 void (*xDel)(void*), 1585 unsigned char enc 1586 ){ 1587 assert( xDel!=SQLITE_DYNAMIC ); 1588 if( enc==SQLITE_UTF16 ) enc = SQLITE_UTF16NATIVE; 1589 return bindText(pStmt, i, zData, nData, xDel, enc); 1590 } 1591 #ifndef SQLITE_OMIT_UTF16 1592 int sqlite3_bind_text16( 1593 sqlite3_stmt *pStmt, 1594 int i, 1595 const void *zData, 1596 int nData, 1597 void (*xDel)(void*) 1598 ){ 1599 return bindText(pStmt, i, zData, nData, xDel, SQLITE_UTF16NATIVE); 1600 } 1601 #endif /* SQLITE_OMIT_UTF16 */ 1602 int sqlite3_bind_value(sqlite3_stmt *pStmt, int i, const sqlite3_value *pValue){ 1603 int rc; 1604 switch( sqlite3_value_type((sqlite3_value*)pValue) ){ 1605 case SQLITE_INTEGER: { 1606 rc = sqlite3_bind_int64(pStmt, i, pValue->u.i); 1607 break; 1608 } 1609 case SQLITE_FLOAT: { 1610 rc = sqlite3_bind_double(pStmt, i, pValue->u.r); 1611 break; 1612 } 1613 case SQLITE_BLOB: { 1614 if( pValue->flags & MEM_Zero ){ 1615 rc = sqlite3_bind_zeroblob(pStmt, i, pValue->u.nZero); 1616 }else{ 1617 rc = sqlite3_bind_blob(pStmt, i, pValue->z, pValue->n,SQLITE_TRANSIENT); 1618 } 1619 break; 1620 } 1621 case SQLITE_TEXT: { 1622 rc = bindText(pStmt,i, pValue->z, pValue->n, SQLITE_TRANSIENT, 1623 pValue->enc); 1624 break; 1625 } 1626 default: { 1627 rc = sqlite3_bind_null(pStmt, i); 1628 break; 1629 } 1630 } 1631 return rc; 1632 } 1633 int sqlite3_bind_zeroblob(sqlite3_stmt *pStmt, int i, int n){ 1634 int rc; 1635 Vdbe *p = (Vdbe *)pStmt; 1636 rc = vdbeUnbind(p, i); 1637 if( rc==SQLITE_OK ){ 1638 #ifndef SQLITE_OMIT_INCRBLOB 1639 sqlite3VdbeMemSetZeroBlob(&p->aVar[i-1], n); 1640 #else 1641 rc = sqlite3VdbeMemSetZeroBlob(&p->aVar[i-1], n); 1642 #endif 1643 sqlite3_mutex_leave(p->db->mutex); 1644 } 1645 return rc; 1646 } 1647 int sqlite3_bind_zeroblob64(sqlite3_stmt *pStmt, int i, sqlite3_uint64 n){ 1648 int rc; 1649 Vdbe *p = (Vdbe *)pStmt; 1650 sqlite3_mutex_enter(p->db->mutex); 1651 if( n>(u64)p->db->aLimit[SQLITE_LIMIT_LENGTH] ){ 1652 rc = SQLITE_TOOBIG; 1653 }else{ 1654 assert( (n & 0x7FFFFFFF)==n ); 1655 rc = sqlite3_bind_zeroblob(pStmt, i, n); 1656 } 1657 rc = sqlite3ApiExit(p->db, rc); 1658 sqlite3_mutex_leave(p->db->mutex); 1659 return rc; 1660 } 1661 1662 /* 1663 ** Return the number of wildcards that can be potentially bound to. 1664 ** This routine is added to support DBD::SQLite. 1665 */ 1666 int sqlite3_bind_parameter_count(sqlite3_stmt *pStmt){ 1667 Vdbe *p = (Vdbe*)pStmt; 1668 return p ? p->nVar : 0; 1669 } 1670 1671 /* 1672 ** Return the name of a wildcard parameter. Return NULL if the index 1673 ** is out of range or if the wildcard is unnamed. 1674 ** 1675 ** The result is always UTF-8. 1676 */ 1677 const char *sqlite3_bind_parameter_name(sqlite3_stmt *pStmt, int i){ 1678 Vdbe *p = (Vdbe*)pStmt; 1679 if( p==0 ) return 0; 1680 return sqlite3VListNumToName(p->pVList, i); 1681 } 1682 1683 /* 1684 ** Given a wildcard parameter name, return the index of the variable 1685 ** with that name. If there is no variable with the given name, 1686 ** return 0. 1687 */ 1688 int sqlite3VdbeParameterIndex(Vdbe *p, const char *zName, int nName){ 1689 if( p==0 || zName==0 ) return 0; 1690 return sqlite3VListNameToNum(p->pVList, zName, nName); 1691 } 1692 int sqlite3_bind_parameter_index(sqlite3_stmt *pStmt, const char *zName){ 1693 return sqlite3VdbeParameterIndex((Vdbe*)pStmt, zName, sqlite3Strlen30(zName)); 1694 } 1695 1696 /* 1697 ** Transfer all bindings from the first statement over to the second. 1698 */ 1699 int sqlite3TransferBindings(sqlite3_stmt *pFromStmt, sqlite3_stmt *pToStmt){ 1700 Vdbe *pFrom = (Vdbe*)pFromStmt; 1701 Vdbe *pTo = (Vdbe*)pToStmt; 1702 int i; 1703 assert( pTo->db==pFrom->db ); 1704 assert( pTo->nVar==pFrom->nVar ); 1705 sqlite3_mutex_enter(pTo->db->mutex); 1706 for(i=0; i<pFrom->nVar; i++){ 1707 sqlite3VdbeMemMove(&pTo->aVar[i], &pFrom->aVar[i]); 1708 } 1709 sqlite3_mutex_leave(pTo->db->mutex); 1710 return SQLITE_OK; 1711 } 1712 1713 #ifndef SQLITE_OMIT_DEPRECATED 1714 /* 1715 ** Deprecated external interface. Internal/core SQLite code 1716 ** should call sqlite3TransferBindings. 1717 ** 1718 ** It is misuse to call this routine with statements from different 1719 ** database connections. But as this is a deprecated interface, we 1720 ** will not bother to check for that condition. 1721 ** 1722 ** If the two statements contain a different number of bindings, then 1723 ** an SQLITE_ERROR is returned. Nothing else can go wrong, so otherwise 1724 ** SQLITE_OK is returned. 1725 */ 1726 int sqlite3_transfer_bindings(sqlite3_stmt *pFromStmt, sqlite3_stmt *pToStmt){ 1727 Vdbe *pFrom = (Vdbe*)pFromStmt; 1728 Vdbe *pTo = (Vdbe*)pToStmt; 1729 if( pFrom->nVar!=pTo->nVar ){ 1730 return SQLITE_ERROR; 1731 } 1732 assert( (pTo->prepFlags & SQLITE_PREPARE_SAVESQL)!=0 || pTo->expmask==0 ); 1733 if( pTo->expmask ){ 1734 pTo->expired = 1; 1735 } 1736 assert( (pFrom->prepFlags & SQLITE_PREPARE_SAVESQL)!=0 || pFrom->expmask==0 ); 1737 if( pFrom->expmask ){ 1738 pFrom->expired = 1; 1739 } 1740 return sqlite3TransferBindings(pFromStmt, pToStmt); 1741 } 1742 #endif 1743 1744 /* 1745 ** Return the sqlite3* database handle to which the prepared statement given 1746 ** in the argument belongs. This is the same database handle that was 1747 ** the first argument to the sqlite3_prepare() that was used to create 1748 ** the statement in the first place. 1749 */ 1750 sqlite3 *sqlite3_db_handle(sqlite3_stmt *pStmt){ 1751 return pStmt ? ((Vdbe*)pStmt)->db : 0; 1752 } 1753 1754 /* 1755 ** Return true if the prepared statement is guaranteed to not modify the 1756 ** database. 1757 */ 1758 int sqlite3_stmt_readonly(sqlite3_stmt *pStmt){ 1759 return pStmt ? ((Vdbe*)pStmt)->readOnly : 1; 1760 } 1761 1762 /* 1763 ** Return 1 if the statement is an EXPLAIN and return 2 if the 1764 ** statement is an EXPLAIN QUERY PLAN 1765 */ 1766 int sqlite3_stmt_isexplain(sqlite3_stmt *pStmt){ 1767 return pStmt ? ((Vdbe*)pStmt)->explain : 0; 1768 } 1769 1770 /* 1771 ** Return true if the prepared statement is in need of being reset. 1772 */ 1773 int sqlite3_stmt_busy(sqlite3_stmt *pStmt){ 1774 Vdbe *v = (Vdbe*)pStmt; 1775 return v!=0 && v->iVdbeMagic==VDBE_MAGIC_RUN && v->pc>=0; 1776 } 1777 1778 /* 1779 ** Return a pointer to the next prepared statement after pStmt associated 1780 ** with database connection pDb. If pStmt is NULL, return the first 1781 ** prepared statement for the database connection. Return NULL if there 1782 ** are no more. 1783 */ 1784 sqlite3_stmt *sqlite3_next_stmt(sqlite3 *pDb, sqlite3_stmt *pStmt){ 1785 sqlite3_stmt *pNext; 1786 #ifdef SQLITE_ENABLE_API_ARMOR 1787 if( !sqlite3SafetyCheckOk(pDb) ){ 1788 (void)SQLITE_MISUSE_BKPT; 1789 return 0; 1790 } 1791 #endif 1792 sqlite3_mutex_enter(pDb->mutex); 1793 if( pStmt==0 ){ 1794 pNext = (sqlite3_stmt*)pDb->pVdbe; 1795 }else{ 1796 pNext = (sqlite3_stmt*)((Vdbe*)pStmt)->pNext; 1797 } 1798 sqlite3_mutex_leave(pDb->mutex); 1799 return pNext; 1800 } 1801 1802 /* 1803 ** Return the value of a status counter for a prepared statement 1804 */ 1805 int sqlite3_stmt_status(sqlite3_stmt *pStmt, int op, int resetFlag){ 1806 Vdbe *pVdbe = (Vdbe*)pStmt; 1807 u32 v; 1808 #ifdef SQLITE_ENABLE_API_ARMOR 1809 if( !pStmt 1810 || (op!=SQLITE_STMTSTATUS_MEMUSED && (op<0||op>=ArraySize(pVdbe->aCounter))) 1811 ){ 1812 (void)SQLITE_MISUSE_BKPT; 1813 return 0; 1814 } 1815 #endif 1816 if( op==SQLITE_STMTSTATUS_MEMUSED ){ 1817 sqlite3 *db = pVdbe->db; 1818 sqlite3_mutex_enter(db->mutex); 1819 v = 0; 1820 db->pnBytesFreed = (int*)&v; 1821 sqlite3VdbeClearObject(db, pVdbe); 1822 sqlite3DbFree(db, pVdbe); 1823 db->pnBytesFreed = 0; 1824 sqlite3_mutex_leave(db->mutex); 1825 }else{ 1826 v = pVdbe->aCounter[op]; 1827 if( resetFlag ) pVdbe->aCounter[op] = 0; 1828 } 1829 return (int)v; 1830 } 1831 1832 /* 1833 ** Return the SQL associated with a prepared statement 1834 */ 1835 const char *sqlite3_sql(sqlite3_stmt *pStmt){ 1836 Vdbe *p = (Vdbe *)pStmt; 1837 return p ? p->zSql : 0; 1838 } 1839 1840 /* 1841 ** Return the SQL associated with a prepared statement with 1842 ** bound parameters expanded. Space to hold the returned string is 1843 ** obtained from sqlite3_malloc(). The caller is responsible for 1844 ** freeing the returned string by passing it to sqlite3_free(). 1845 ** 1846 ** The SQLITE_TRACE_SIZE_LIMIT puts an upper bound on the size of 1847 ** expanded bound parameters. 1848 */ 1849 char *sqlite3_expanded_sql(sqlite3_stmt *pStmt){ 1850 #ifdef SQLITE_OMIT_TRACE 1851 return 0; 1852 #else 1853 char *z = 0; 1854 const char *zSql = sqlite3_sql(pStmt); 1855 if( zSql ){ 1856 Vdbe *p = (Vdbe *)pStmt; 1857 sqlite3_mutex_enter(p->db->mutex); 1858 z = sqlite3VdbeExpandSql(p, zSql); 1859 sqlite3_mutex_leave(p->db->mutex); 1860 } 1861 return z; 1862 #endif 1863 } 1864 1865 #ifdef SQLITE_ENABLE_NORMALIZE 1866 /* 1867 ** Return the normalized SQL associated with a prepared statement. 1868 */ 1869 const char *sqlite3_normalized_sql(sqlite3_stmt *pStmt){ 1870 Vdbe *p = (Vdbe *)pStmt; 1871 if( p==0 ) return 0; 1872 if( p->zNormSql==0 && ALWAYS(p->zSql!=0) ){ 1873 sqlite3_mutex_enter(p->db->mutex); 1874 p->zNormSql = sqlite3Normalize(p, p->zSql); 1875 sqlite3_mutex_leave(p->db->mutex); 1876 } 1877 return p->zNormSql; 1878 } 1879 #endif /* SQLITE_ENABLE_NORMALIZE */ 1880 1881 #ifdef SQLITE_ENABLE_PREUPDATE_HOOK 1882 /* 1883 ** Allocate and populate an UnpackedRecord structure based on the serialized 1884 ** record in nKey/pKey. Return a pointer to the new UnpackedRecord structure 1885 ** if successful, or a NULL pointer if an OOM error is encountered. 1886 */ 1887 static UnpackedRecord *vdbeUnpackRecord( 1888 KeyInfo *pKeyInfo, 1889 int nKey, 1890 const void *pKey 1891 ){ 1892 UnpackedRecord *pRet; /* Return value */ 1893 1894 pRet = sqlite3VdbeAllocUnpackedRecord(pKeyInfo); 1895 if( pRet ){ 1896 memset(pRet->aMem, 0, sizeof(Mem)*(pKeyInfo->nKeyField+1)); 1897 sqlite3VdbeRecordUnpack(pKeyInfo, nKey, pKey, pRet); 1898 } 1899 return pRet; 1900 } 1901 1902 /* 1903 ** This function is called from within a pre-update callback to retrieve 1904 ** a field of the row currently being updated or deleted. 1905 */ 1906 int sqlite3_preupdate_old(sqlite3 *db, int iIdx, sqlite3_value **ppValue){ 1907 PreUpdate *p = db->pPreUpdate; 1908 Mem *pMem; 1909 int rc = SQLITE_OK; 1910 1911 /* Test that this call is being made from within an SQLITE_DELETE or 1912 ** SQLITE_UPDATE pre-update callback, and that iIdx is within range. */ 1913 if( !p || p->op==SQLITE_INSERT ){ 1914 rc = SQLITE_MISUSE_BKPT; 1915 goto preupdate_old_out; 1916 } 1917 if( p->pPk ){ 1918 iIdx = sqlite3TableColumnToIndex(p->pPk, iIdx); 1919 } 1920 if( iIdx>=p->pCsr->nField || iIdx<0 ){ 1921 rc = SQLITE_RANGE; 1922 goto preupdate_old_out; 1923 } 1924 1925 /* If the old.* record has not yet been loaded into memory, do so now. */ 1926 if( p->pUnpacked==0 ){ 1927 u32 nRec; 1928 u8 *aRec; 1929 1930 assert( p->pCsr->eCurType==CURTYPE_BTREE ); 1931 nRec = sqlite3BtreePayloadSize(p->pCsr->uc.pCursor); 1932 aRec = sqlite3DbMallocRaw(db, nRec); 1933 if( !aRec ) goto preupdate_old_out; 1934 rc = sqlite3BtreePayload(p->pCsr->uc.pCursor, 0, nRec, aRec); 1935 if( rc==SQLITE_OK ){ 1936 p->pUnpacked = vdbeUnpackRecord(&p->keyinfo, nRec, aRec); 1937 if( !p->pUnpacked ) rc = SQLITE_NOMEM; 1938 } 1939 if( rc!=SQLITE_OK ){ 1940 sqlite3DbFree(db, aRec); 1941 goto preupdate_old_out; 1942 } 1943 p->aRecord = aRec; 1944 } 1945 1946 pMem = *ppValue = &p->pUnpacked->aMem[iIdx]; 1947 if( iIdx==p->pTab->iPKey ){ 1948 sqlite3VdbeMemSetInt64(pMem, p->iKey1); 1949 }else if( iIdx>=p->pUnpacked->nField ){ 1950 *ppValue = (sqlite3_value *)columnNullValue(); 1951 }else if( p->pTab->aCol[iIdx].affinity==SQLITE_AFF_REAL ){ 1952 if( pMem->flags & (MEM_Int|MEM_IntReal) ){ 1953 testcase( pMem->flags & MEM_Int ); 1954 testcase( pMem->flags & MEM_IntReal ); 1955 sqlite3VdbeMemRealify(pMem); 1956 } 1957 } 1958 1959 preupdate_old_out: 1960 sqlite3Error(db, rc); 1961 return sqlite3ApiExit(db, rc); 1962 } 1963 #endif /* SQLITE_ENABLE_PREUPDATE_HOOK */ 1964 1965 #ifdef SQLITE_ENABLE_PREUPDATE_HOOK 1966 /* 1967 ** This function is called from within a pre-update callback to retrieve 1968 ** the number of columns in the row being updated, deleted or inserted. 1969 */ 1970 int sqlite3_preupdate_count(sqlite3 *db){ 1971 PreUpdate *p = db->pPreUpdate; 1972 return (p ? p->keyinfo.nKeyField : 0); 1973 } 1974 #endif /* SQLITE_ENABLE_PREUPDATE_HOOK */ 1975 1976 #ifdef SQLITE_ENABLE_PREUPDATE_HOOK 1977 /* 1978 ** This function is designed to be called from within a pre-update callback 1979 ** only. It returns zero if the change that caused the callback was made 1980 ** immediately by a user SQL statement. Or, if the change was made by a 1981 ** trigger program, it returns the number of trigger programs currently 1982 ** on the stack (1 for a top-level trigger, 2 for a trigger fired by a 1983 ** top-level trigger etc.). 1984 ** 1985 ** For the purposes of the previous paragraph, a foreign key CASCADE, SET NULL 1986 ** or SET DEFAULT action is considered a trigger. 1987 */ 1988 int sqlite3_preupdate_depth(sqlite3 *db){ 1989 PreUpdate *p = db->pPreUpdate; 1990 return (p ? p->v->nFrame : 0); 1991 } 1992 #endif /* SQLITE_ENABLE_PREUPDATE_HOOK */ 1993 1994 #ifdef SQLITE_ENABLE_PREUPDATE_HOOK 1995 /* 1996 ** This function is designed to be called from within a pre-update callback 1997 ** only. 1998 */ 1999 int sqlite3_preupdate_blobwrite(sqlite3 *db){ 2000 PreUpdate *p = db->pPreUpdate; 2001 return (p ? p->iBlobWrite : -1); 2002 } 2003 #endif 2004 2005 #ifdef SQLITE_ENABLE_PREUPDATE_HOOK 2006 /* 2007 ** This function is called from within a pre-update callback to retrieve 2008 ** a field of the row currently being updated or inserted. 2009 */ 2010 int sqlite3_preupdate_new(sqlite3 *db, int iIdx, sqlite3_value **ppValue){ 2011 PreUpdate *p = db->pPreUpdate; 2012 int rc = SQLITE_OK; 2013 Mem *pMem; 2014 2015 if( !p || p->op==SQLITE_DELETE ){ 2016 rc = SQLITE_MISUSE_BKPT; 2017 goto preupdate_new_out; 2018 } 2019 if( p->pPk && p->op!=SQLITE_UPDATE ){ 2020 iIdx = sqlite3TableColumnToIndex(p->pPk, iIdx); 2021 } 2022 if( iIdx>=p->pCsr->nField || iIdx<0 ){ 2023 rc = SQLITE_RANGE; 2024 goto preupdate_new_out; 2025 } 2026 2027 if( p->op==SQLITE_INSERT ){ 2028 /* For an INSERT, memory cell p->iNewReg contains the serialized record 2029 ** that is being inserted. Deserialize it. */ 2030 UnpackedRecord *pUnpack = p->pNewUnpacked; 2031 if( !pUnpack ){ 2032 Mem *pData = &p->v->aMem[p->iNewReg]; 2033 rc = ExpandBlob(pData); 2034 if( rc!=SQLITE_OK ) goto preupdate_new_out; 2035 pUnpack = vdbeUnpackRecord(&p->keyinfo, pData->n, pData->z); 2036 if( !pUnpack ){ 2037 rc = SQLITE_NOMEM; 2038 goto preupdate_new_out; 2039 } 2040 p->pNewUnpacked = pUnpack; 2041 } 2042 pMem = &pUnpack->aMem[iIdx]; 2043 if( iIdx==p->pTab->iPKey ){ 2044 sqlite3VdbeMemSetInt64(pMem, p->iKey2); 2045 }else if( iIdx>=pUnpack->nField ){ 2046 pMem = (sqlite3_value *)columnNullValue(); 2047 } 2048 }else{ 2049 /* For an UPDATE, memory cell (p->iNewReg+1+iIdx) contains the required 2050 ** value. Make a copy of the cell contents and return a pointer to it. 2051 ** It is not safe to return a pointer to the memory cell itself as the 2052 ** caller may modify the value text encoding. 2053 */ 2054 assert( p->op==SQLITE_UPDATE ); 2055 if( !p->aNew ){ 2056 p->aNew = (Mem *)sqlite3DbMallocZero(db, sizeof(Mem) * p->pCsr->nField); 2057 if( !p->aNew ){ 2058 rc = SQLITE_NOMEM; 2059 goto preupdate_new_out; 2060 } 2061 } 2062 assert( iIdx>=0 && iIdx<p->pCsr->nField ); 2063 pMem = &p->aNew[iIdx]; 2064 if( pMem->flags==0 ){ 2065 if( iIdx==p->pTab->iPKey ){ 2066 sqlite3VdbeMemSetInt64(pMem, p->iKey2); 2067 }else{ 2068 rc = sqlite3VdbeMemCopy(pMem, &p->v->aMem[p->iNewReg+1+iIdx]); 2069 if( rc!=SQLITE_OK ) goto preupdate_new_out; 2070 } 2071 } 2072 } 2073 *ppValue = pMem; 2074 2075 preupdate_new_out: 2076 sqlite3Error(db, rc); 2077 return sqlite3ApiExit(db, rc); 2078 } 2079 #endif /* SQLITE_ENABLE_PREUPDATE_HOOK */ 2080 2081 #ifdef SQLITE_ENABLE_STMT_SCANSTATUS 2082 /* 2083 ** Return status data for a single loop within query pStmt. 2084 */ 2085 int sqlite3_stmt_scanstatus( 2086 sqlite3_stmt *pStmt, /* Prepared statement being queried */ 2087 int idx, /* Index of loop to report on */ 2088 int iScanStatusOp, /* Which metric to return */ 2089 void *pOut /* OUT: Write the answer here */ 2090 ){ 2091 Vdbe *p = (Vdbe*)pStmt; 2092 ScanStatus *pScan; 2093 if( idx<0 || idx>=p->nScan ) return 1; 2094 pScan = &p->aScan[idx]; 2095 switch( iScanStatusOp ){ 2096 case SQLITE_SCANSTAT_NLOOP: { 2097 *(sqlite3_int64*)pOut = p->anExec[pScan->addrLoop]; 2098 break; 2099 } 2100 case SQLITE_SCANSTAT_NVISIT: { 2101 *(sqlite3_int64*)pOut = p->anExec[pScan->addrVisit]; 2102 break; 2103 } 2104 case SQLITE_SCANSTAT_EST: { 2105 double r = 1.0; 2106 LogEst x = pScan->nEst; 2107 while( x<100 ){ 2108 x += 10; 2109 r *= 0.5; 2110 } 2111 *(double*)pOut = r*sqlite3LogEstToInt(x); 2112 break; 2113 } 2114 case SQLITE_SCANSTAT_NAME: { 2115 *(const char**)pOut = pScan->zName; 2116 break; 2117 } 2118 case SQLITE_SCANSTAT_EXPLAIN: { 2119 if( pScan->addrExplain ){ 2120 *(const char**)pOut = p->aOp[ pScan->addrExplain ].p4.z; 2121 }else{ 2122 *(const char**)pOut = 0; 2123 } 2124 break; 2125 } 2126 case SQLITE_SCANSTAT_SELECTID: { 2127 if( pScan->addrExplain ){ 2128 *(int*)pOut = p->aOp[ pScan->addrExplain ].p1; 2129 }else{ 2130 *(int*)pOut = -1; 2131 } 2132 break; 2133 } 2134 default: { 2135 return 1; 2136 } 2137 } 2138 return 0; 2139 } 2140 2141 /* 2142 ** Zero all counters associated with the sqlite3_stmt_scanstatus() data. 2143 */ 2144 void sqlite3_stmt_scanstatus_reset(sqlite3_stmt *pStmt){ 2145 Vdbe *p = (Vdbe*)pStmt; 2146 memset(p->anExec, 0, p->nOp * sizeof(i64)); 2147 } 2148 #endif /* SQLITE_ENABLE_STMT_SCANSTATUS */ 2149