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