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 return p->rc; 279 }else{ 280 /* This is for legacy sqlite3_prepare() builds and when the code 281 ** is SQLITE_ROW or SQLITE_DONE */ 282 return rc; 283 } 284 } 285 286 /* 287 ** This is the top-level implementation of sqlite3_step(). Call 288 ** sqlite3Step() to do most of the work. If a schema error occurs, 289 ** call sqlite3Reprepare() and try again. 290 */ 291 #ifdef SQLITE_OMIT_PARSER 292 int sqlite3_step(sqlite3_stmt *pStmt){ 293 return sqlite3Step((Vdbe*)pStmt); 294 } 295 #else 296 int sqlite3_step(sqlite3_stmt *pStmt){ 297 int cnt = 0; 298 int rc; 299 Vdbe *v = (Vdbe*)pStmt; 300 while( (rc = sqlite3Step(v))==SQLITE_SCHEMA 301 && cnt++ < 5 302 && sqlite3Reprepare(v) ){ 303 sqlite3_reset(pStmt); 304 v->expired = 0; 305 } 306 return rc; 307 } 308 #endif 309 310 /* 311 ** Extract the user data from a sqlite3_context structure and return a 312 ** pointer to it. 313 */ 314 void *sqlite3_user_data(sqlite3_context *p){ 315 assert( p && p->pFunc ); 316 return p->pFunc->pUserData; 317 } 318 319 /* 320 ** The following is the implementation of an SQL function that always 321 ** fails with an error message stating that the function is used in the 322 ** wrong context. The sqlite3_overload_function() API might construct 323 ** SQL function that use this routine so that the functions will exist 324 ** for name resolution but are actually overloaded by the xFindFunction 325 ** method of virtual tables. 326 */ 327 void sqlite3InvalidFunction( 328 sqlite3_context *context, /* The function calling context */ 329 int argc, /* Number of arguments to the function */ 330 sqlite3_value **argv /* Value of each argument */ 331 ){ 332 const char *zName = context->pFunc->zName; 333 char *zErr; 334 zErr = sqlite3MPrintf( 335 "unable to use function %s in the requested context", zName); 336 sqlite3_result_error(context, zErr, -1); 337 sqliteFree(zErr); 338 } 339 340 /* 341 ** Allocate or return the aggregate context for a user function. A new 342 ** context is allocated on the first call. Subsequent calls return the 343 ** same context that was returned on prior calls. 344 */ 345 void *sqlite3_aggregate_context(sqlite3_context *p, int nByte){ 346 Mem *pMem = p->pMem; 347 assert( p && p->pFunc && p->pFunc->xStep ); 348 if( (pMem->flags & MEM_Agg)==0 ){ 349 if( nByte==0 ){ 350 assert( pMem->flags==MEM_Null ); 351 pMem->z = 0; 352 }else{ 353 pMem->flags = MEM_Agg; 354 pMem->xDel = sqlite3FreeX; 355 pMem->u.pDef = p->pFunc; 356 if( nByte<=NBFS ){ 357 pMem->z = pMem->zShort; 358 memset(pMem->z, 0, nByte); 359 }else{ 360 pMem->z = sqliteMalloc( nByte ); 361 } 362 } 363 } 364 return (void*)pMem->z; 365 } 366 367 /* 368 ** Return the auxilary data pointer, if any, for the iArg'th argument to 369 ** the user-function defined by pCtx. 370 */ 371 void *sqlite3_get_auxdata(sqlite3_context *pCtx, int iArg){ 372 VdbeFunc *pVdbeFunc = pCtx->pVdbeFunc; 373 if( !pVdbeFunc || iArg>=pVdbeFunc->nAux || iArg<0 ){ 374 return 0; 375 } 376 return pVdbeFunc->apAux[iArg].pAux; 377 } 378 379 /* 380 ** Set the auxilary data pointer and delete function, for the iArg'th 381 ** argument to the user-function defined by pCtx. Any previous value is 382 ** deleted by calling the delete function specified when it was set. 383 */ 384 void sqlite3_set_auxdata( 385 sqlite3_context *pCtx, 386 int iArg, 387 void *pAux, 388 void (*xDelete)(void*) 389 ){ 390 struct AuxData *pAuxData; 391 VdbeFunc *pVdbeFunc; 392 if( iArg<0 ) return; 393 394 pVdbeFunc = pCtx->pVdbeFunc; 395 if( !pVdbeFunc || pVdbeFunc->nAux<=iArg ){ 396 int nMalloc = sizeof(VdbeFunc) + sizeof(struct AuxData)*iArg; 397 pVdbeFunc = sqliteRealloc(pVdbeFunc, nMalloc); 398 if( !pVdbeFunc ) return; 399 pCtx->pVdbeFunc = pVdbeFunc; 400 memset(&pVdbeFunc->apAux[pVdbeFunc->nAux], 0, 401 sizeof(struct AuxData)*(iArg+1-pVdbeFunc->nAux)); 402 pVdbeFunc->nAux = iArg+1; 403 pVdbeFunc->pFunc = pCtx->pFunc; 404 } 405 406 pAuxData = &pVdbeFunc->apAux[iArg]; 407 if( pAuxData->pAux && pAuxData->xDelete ){ 408 pAuxData->xDelete(pAuxData->pAux); 409 } 410 pAuxData->pAux = pAux; 411 pAuxData->xDelete = xDelete; 412 } 413 414 /* 415 ** Return the number of times the Step function of a aggregate has been 416 ** called. 417 ** 418 ** This function is deprecated. Do not use it for new code. It is 419 ** provide only to avoid breaking legacy code. New aggregate function 420 ** implementations should keep their own counts within their aggregate 421 ** context. 422 */ 423 int sqlite3_aggregate_count(sqlite3_context *p){ 424 assert( p && p->pFunc && p->pFunc->xStep ); 425 return p->pMem->n; 426 } 427 428 /* 429 ** Return the number of columns in the result set for the statement pStmt. 430 */ 431 int sqlite3_column_count(sqlite3_stmt *pStmt){ 432 Vdbe *pVm = (Vdbe *)pStmt; 433 return pVm ? pVm->nResColumn : 0; 434 } 435 436 /* 437 ** Return the number of values available from the current row of the 438 ** currently executing statement pStmt. 439 */ 440 int sqlite3_data_count(sqlite3_stmt *pStmt){ 441 Vdbe *pVm = (Vdbe *)pStmt; 442 if( pVm==0 || !pVm->resOnStack ) return 0; 443 return pVm->nResColumn; 444 } 445 446 447 /* 448 ** Check to see if column iCol of the given statement is valid. If 449 ** it is, return a pointer to the Mem for the value of that column. 450 ** If iCol is not valid, return a pointer to a Mem which has a value 451 ** of NULL. 452 */ 453 static Mem *columnMem(sqlite3_stmt *pStmt, int i){ 454 Vdbe *pVm = (Vdbe *)pStmt; 455 int vals = sqlite3_data_count(pStmt); 456 if( i>=vals || i<0 ){ 457 static const Mem nullMem = {{0}, 0.0, "", 0, MEM_Null, SQLITE_NULL }; 458 sqlite3Error(pVm->db, SQLITE_RANGE, 0); 459 return (Mem*)&nullMem; 460 } 461 return &pVm->pTos[(1-vals)+i]; 462 } 463 464 /* 465 ** This function is called after invoking an sqlite3_value_XXX function on a 466 ** column value (i.e. a value returned by evaluating an SQL expression in the 467 ** select list of a SELECT statement) that may cause a malloc() failure. If 468 ** malloc() has failed, the threads mallocFailed flag is cleared and the result 469 ** code of statement pStmt set to SQLITE_NOMEM. 470 ** 471 ** Specificly, this is called from within: 472 ** 473 ** sqlite3_column_int() 474 ** sqlite3_column_int64() 475 ** sqlite3_column_text() 476 ** sqlite3_column_text16() 477 ** sqlite3_column_real() 478 ** sqlite3_column_bytes() 479 ** sqlite3_column_bytes16() 480 ** 481 ** But not for sqlite3_column_blob(), which never calls malloc(). 482 */ 483 static void columnMallocFailure(sqlite3_stmt *pStmt) 484 { 485 /* If malloc() failed during an encoding conversion within an 486 ** sqlite3_column_XXX API, then set the return code of the statement to 487 ** SQLITE_NOMEM. The next call to _step() (if any) will return SQLITE_ERROR 488 ** and _finalize() will return NOMEM. 489 */ 490 Vdbe *p = (Vdbe *)pStmt; 491 p->rc = sqlite3ApiExit(0, p->rc); 492 } 493 494 /**************************** sqlite3_column_ ******************************* 495 ** The following routines are used to access elements of the current row 496 ** in the result set. 497 */ 498 const void *sqlite3_column_blob(sqlite3_stmt *pStmt, int i){ 499 const void *val; 500 val = sqlite3_value_blob( columnMem(pStmt,i) ); 501 return val; 502 } 503 int sqlite3_column_bytes(sqlite3_stmt *pStmt, int i){ 504 int val = sqlite3_value_bytes( columnMem(pStmt,i) ); 505 columnMallocFailure(pStmt); 506 return val; 507 } 508 int sqlite3_column_bytes16(sqlite3_stmt *pStmt, int i){ 509 int val = sqlite3_value_bytes16( columnMem(pStmt,i) ); 510 columnMallocFailure(pStmt); 511 return val; 512 } 513 double sqlite3_column_double(sqlite3_stmt *pStmt, int i){ 514 double val = sqlite3_value_double( columnMem(pStmt,i) ); 515 columnMallocFailure(pStmt); 516 return val; 517 } 518 int sqlite3_column_int(sqlite3_stmt *pStmt, int i){ 519 int val = sqlite3_value_int( columnMem(pStmt,i) ); 520 columnMallocFailure(pStmt); 521 return val; 522 } 523 sqlite_int64 sqlite3_column_int64(sqlite3_stmt *pStmt, int i){ 524 sqlite_int64 val = sqlite3_value_int64( columnMem(pStmt,i) ); 525 columnMallocFailure(pStmt); 526 return val; 527 } 528 const unsigned char *sqlite3_column_text(sqlite3_stmt *pStmt, int i){ 529 const unsigned char *val = sqlite3_value_text( columnMem(pStmt,i) ); 530 columnMallocFailure(pStmt); 531 return val; 532 } 533 sqlite3_value *sqlite3_column_value(sqlite3_stmt *pStmt, int i){ 534 return columnMem(pStmt, i); 535 } 536 #ifndef SQLITE_OMIT_UTF16 537 const void *sqlite3_column_text16(sqlite3_stmt *pStmt, int i){ 538 const void *val = sqlite3_value_text16( columnMem(pStmt,i) ); 539 columnMallocFailure(pStmt); 540 return val; 541 } 542 #endif /* SQLITE_OMIT_UTF16 */ 543 int sqlite3_column_type(sqlite3_stmt *pStmt, int i){ 544 return sqlite3_value_type( columnMem(pStmt,i) ); 545 } 546 547 /* The following function is experimental and subject to change or 548 ** removal */ 549 /*int sqlite3_column_numeric_type(sqlite3_stmt *pStmt, int i){ 550 ** return sqlite3_value_numeric_type( columnMem(pStmt,i) ); 551 **} 552 */ 553 554 /* 555 ** Convert the N-th element of pStmt->pColName[] into a string using 556 ** xFunc() then return that string. If N is out of range, return 0. 557 ** 558 ** There are up to 5 names for each column. useType determines which 559 ** name is returned. Here are the names: 560 ** 561 ** 0 The column name as it should be displayed for output 562 ** 1 The datatype name for the column 563 ** 2 The name of the database that the column derives from 564 ** 3 The name of the table that the column derives from 565 ** 4 The name of the table column that the result column derives from 566 ** 567 ** If the result is not a simple column reference (if it is an expression 568 ** or a constant) then useTypes 2, 3, and 4 return NULL. 569 */ 570 static const void *columnName( 571 sqlite3_stmt *pStmt, 572 int N, 573 const void *(*xFunc)(Mem*), 574 int useType 575 ){ 576 const void *ret; 577 Vdbe *p = (Vdbe *)pStmt; 578 int n = sqlite3_column_count(pStmt); 579 580 if( p==0 || N>=n || N<0 ){ 581 return 0; 582 } 583 N += useType*n; 584 ret = xFunc(&p->aColName[N]); 585 586 /* A malloc may have failed inside of the xFunc() call. If this is the case, 587 ** clear the mallocFailed flag and return NULL. 588 */ 589 sqlite3ApiExit(0, 0); 590 return ret; 591 } 592 593 /* 594 ** Return the name of the Nth column of the result set returned by SQL 595 ** statement pStmt. 596 */ 597 const char *sqlite3_column_name(sqlite3_stmt *pStmt, int N){ 598 return columnName( 599 pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_NAME); 600 } 601 #ifndef SQLITE_OMIT_UTF16 602 const void *sqlite3_column_name16(sqlite3_stmt *pStmt, int N){ 603 return columnName( 604 pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_NAME); 605 } 606 #endif 607 608 /* 609 ** Return the column declaration type (if applicable) of the 'i'th column 610 ** of the result set of SQL statement pStmt. 611 */ 612 const char *sqlite3_column_decltype(sqlite3_stmt *pStmt, int N){ 613 return columnName( 614 pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_DECLTYPE); 615 } 616 #ifndef SQLITE_OMIT_UTF16 617 const void *sqlite3_column_decltype16(sqlite3_stmt *pStmt, int N){ 618 return columnName( 619 pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_DECLTYPE); 620 } 621 #endif /* SQLITE_OMIT_UTF16 */ 622 623 #ifdef SQLITE_ENABLE_COLUMN_METADATA 624 /* 625 ** Return the name of the database from which a result column derives. 626 ** NULL is returned if the result column is an expression or constant or 627 ** anything else which is not an unabiguous reference to a database column. 628 */ 629 const char *sqlite3_column_database_name(sqlite3_stmt *pStmt, int N){ 630 return columnName( 631 pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_DATABASE); 632 } 633 #ifndef SQLITE_OMIT_UTF16 634 const void *sqlite3_column_database_name16(sqlite3_stmt *pStmt, int N){ 635 return columnName( 636 pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_DATABASE); 637 } 638 #endif /* SQLITE_OMIT_UTF16 */ 639 640 /* 641 ** Return the name of the table from which a result column derives. 642 ** NULL is returned if the result column is an expression or constant or 643 ** anything else which is not an unabiguous reference to a database column. 644 */ 645 const char *sqlite3_column_table_name(sqlite3_stmt *pStmt, int N){ 646 return columnName( 647 pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_TABLE); 648 } 649 #ifndef SQLITE_OMIT_UTF16 650 const void *sqlite3_column_table_name16(sqlite3_stmt *pStmt, int N){ 651 return columnName( 652 pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_TABLE); 653 } 654 #endif /* SQLITE_OMIT_UTF16 */ 655 656 /* 657 ** Return the name of the table column from which a result column derives. 658 ** NULL is returned if the result column is an expression or constant or 659 ** anything else which is not an unabiguous reference to a database column. 660 */ 661 const char *sqlite3_column_origin_name(sqlite3_stmt *pStmt, int N){ 662 return columnName( 663 pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_COLUMN); 664 } 665 #ifndef SQLITE_OMIT_UTF16 666 const void *sqlite3_column_origin_name16(sqlite3_stmt *pStmt, int N){ 667 return columnName( 668 pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_COLUMN); 669 } 670 #endif /* SQLITE_OMIT_UTF16 */ 671 #endif /* SQLITE_ENABLE_COLUMN_METADATA */ 672 673 674 /******************************* sqlite3_bind_ *************************** 675 ** 676 ** Routines used to attach values to wildcards in a compiled SQL statement. 677 */ 678 /* 679 ** Unbind the value bound to variable i in virtual machine p. This is the 680 ** the same as binding a NULL value to the column. If the "i" parameter is 681 ** out of range, then SQLITE_RANGE is returned. Othewise SQLITE_OK. 682 ** 683 ** The error code stored in database p->db is overwritten with the return 684 ** value in any case. 685 */ 686 static int vdbeUnbind(Vdbe *p, int i){ 687 Mem *pVar; 688 if( p==0 || p->magic!=VDBE_MAGIC_RUN || p->pc>=0 ){ 689 if( p ) sqlite3Error(p->db, SQLITE_MISUSE, 0); 690 return SQLITE_MISUSE; 691 } 692 if( i<1 || i>p->nVar ){ 693 sqlite3Error(p->db, SQLITE_RANGE, 0); 694 return SQLITE_RANGE; 695 } 696 i--; 697 pVar = &p->aVar[i]; 698 sqlite3VdbeMemRelease(pVar); 699 pVar->flags = MEM_Null; 700 sqlite3Error(p->db, SQLITE_OK, 0); 701 return SQLITE_OK; 702 } 703 704 /* 705 ** Bind a text or BLOB value. 706 */ 707 static int bindText( 708 sqlite3_stmt *pStmt, 709 int i, 710 const void *zData, 711 int nData, 712 void (*xDel)(void*), 713 int encoding 714 ){ 715 Vdbe *p = (Vdbe *)pStmt; 716 Mem *pVar; 717 int rc; 718 719 rc = vdbeUnbind(p, i); 720 if( rc || zData==0 ){ 721 return rc; 722 } 723 pVar = &p->aVar[i-1]; 724 rc = sqlite3VdbeMemSetStr(pVar, zData, nData, encoding, xDel); 725 if( rc==SQLITE_OK && encoding!=0 ){ 726 rc = sqlite3VdbeChangeEncoding(pVar, ENC(p->db)); 727 } 728 729 sqlite3Error(((Vdbe *)pStmt)->db, rc, 0); 730 return sqlite3ApiExit(((Vdbe *)pStmt)->db, rc); 731 } 732 733 734 /* 735 ** Bind a blob value to an SQL statement variable. 736 */ 737 int sqlite3_bind_blob( 738 sqlite3_stmt *pStmt, 739 int i, 740 const void *zData, 741 int nData, 742 void (*xDel)(void*) 743 ){ 744 return bindText(pStmt, i, zData, nData, xDel, 0); 745 } 746 int sqlite3_bind_double(sqlite3_stmt *pStmt, int i, double rValue){ 747 int rc; 748 Vdbe *p = (Vdbe *)pStmt; 749 rc = vdbeUnbind(p, i); 750 if( rc==SQLITE_OK ){ 751 sqlite3VdbeMemSetDouble(&p->aVar[i-1], rValue); 752 } 753 return rc; 754 } 755 int sqlite3_bind_int(sqlite3_stmt *p, int i, int iValue){ 756 return sqlite3_bind_int64(p, i, (i64)iValue); 757 } 758 int sqlite3_bind_int64(sqlite3_stmt *pStmt, int i, sqlite_int64 iValue){ 759 int rc; 760 Vdbe *p = (Vdbe *)pStmt; 761 rc = vdbeUnbind(p, i); 762 if( rc==SQLITE_OK ){ 763 sqlite3VdbeMemSetInt64(&p->aVar[i-1], iValue); 764 } 765 return rc; 766 } 767 int sqlite3_bind_null(sqlite3_stmt* p, int i){ 768 return vdbeUnbind((Vdbe *)p, i); 769 } 770 int sqlite3_bind_text( 771 sqlite3_stmt *pStmt, 772 int i, 773 const char *zData, 774 int nData, 775 void (*xDel)(void*) 776 ){ 777 return bindText(pStmt, i, zData, nData, xDel, SQLITE_UTF8); 778 } 779 #ifndef SQLITE_OMIT_UTF16 780 int sqlite3_bind_text16( 781 sqlite3_stmt *pStmt, 782 int i, 783 const void *zData, 784 int nData, 785 void (*xDel)(void*) 786 ){ 787 return bindText(pStmt, i, zData, nData, xDel, SQLITE_UTF16NATIVE); 788 } 789 #endif /* SQLITE_OMIT_UTF16 */ 790 int sqlite3_bind_value(sqlite3_stmt *pStmt, int i, const sqlite3_value *pValue){ 791 int rc; 792 Vdbe *p = (Vdbe *)pStmt; 793 rc = vdbeUnbind(p, i); 794 if( rc==SQLITE_OK ){ 795 sqlite3VdbeMemCopy(&p->aVar[i-1], pValue); 796 } 797 return rc; 798 } 799 int sqlite3_bind_zeroblob(sqlite3_stmt *pStmt, int i, int n){ 800 int rc; 801 Vdbe *p = (Vdbe *)pStmt; 802 rc = vdbeUnbind(p, i); 803 if( rc==SQLITE_OK ){ 804 sqlite3VdbeMemSetZeroBlob(&p->aVar[i-1], n); 805 } 806 return rc; 807 } 808 809 /* 810 ** Return the number of wildcards that can be potentially bound to. 811 ** This routine is added to support DBD::SQLite. 812 */ 813 int sqlite3_bind_parameter_count(sqlite3_stmt *pStmt){ 814 Vdbe *p = (Vdbe*)pStmt; 815 return p ? p->nVar : 0; 816 } 817 818 /* 819 ** Create a mapping from variable numbers to variable names 820 ** in the Vdbe.azVar[] array, if such a mapping does not already 821 ** exist. 822 */ 823 static void createVarMap(Vdbe *p){ 824 if( !p->okVar ){ 825 int j; 826 Op *pOp; 827 for(j=0, pOp=p->aOp; j<p->nOp; j++, pOp++){ 828 if( pOp->opcode==OP_Variable ){ 829 assert( pOp->p1>0 && pOp->p1<=p->nVar ); 830 p->azVar[pOp->p1-1] = pOp->p3; 831 } 832 } 833 p->okVar = 1; 834 } 835 } 836 837 /* 838 ** Return the name of a wildcard parameter. Return NULL if the index 839 ** is out of range or if the wildcard is unnamed. 840 ** 841 ** The result is always UTF-8. 842 */ 843 const char *sqlite3_bind_parameter_name(sqlite3_stmt *pStmt, int i){ 844 Vdbe *p = (Vdbe*)pStmt; 845 if( p==0 || i<1 || i>p->nVar ){ 846 return 0; 847 } 848 createVarMap(p); 849 return p->azVar[i-1]; 850 } 851 852 /* 853 ** Given a wildcard parameter name, return the index of the variable 854 ** with that name. If there is no variable with the given name, 855 ** return 0. 856 */ 857 int sqlite3_bind_parameter_index(sqlite3_stmt *pStmt, const char *zName){ 858 Vdbe *p = (Vdbe*)pStmt; 859 int i; 860 if( p==0 ){ 861 return 0; 862 } 863 createVarMap(p); 864 if( zName ){ 865 for(i=0; i<p->nVar; i++){ 866 const char *z = p->azVar[i]; 867 if( z && strcmp(z,zName)==0 ){ 868 return i+1; 869 } 870 } 871 } 872 return 0; 873 } 874 875 /* 876 ** Transfer all bindings from the first statement over to the second. 877 ** If the two statements contain a different number of bindings, then 878 ** an SQLITE_ERROR is returned. 879 */ 880 int sqlite3_transfer_bindings(sqlite3_stmt *pFromStmt, sqlite3_stmt *pToStmt){ 881 Vdbe *pFrom = (Vdbe*)pFromStmt; 882 Vdbe *pTo = (Vdbe*)pToStmt; 883 int i, rc = SQLITE_OK; 884 if( (pFrom->magic!=VDBE_MAGIC_RUN && pFrom->magic!=VDBE_MAGIC_HALT) 885 || (pTo->magic!=VDBE_MAGIC_RUN && pTo->magic!=VDBE_MAGIC_HALT) ){ 886 return SQLITE_MISUSE; 887 } 888 if( pFrom->nVar!=pTo->nVar ){ 889 return SQLITE_ERROR; 890 } 891 for(i=0; rc==SQLITE_OK && i<pFrom->nVar; i++){ 892 sqlite3MallocDisallow(); 893 rc = sqlite3VdbeMemMove(&pTo->aVar[i], &pFrom->aVar[i]); 894 sqlite3MallocAllow(); 895 } 896 assert( rc==SQLITE_OK || rc==SQLITE_NOMEM ); 897 return rc; 898 } 899 900 /* 901 ** Return the sqlite3* database handle to which the prepared statement given 902 ** in the argument belongs. This is the same database handle that was 903 ** the first argument to the sqlite3_prepare() that was used to create 904 ** the statement in the first place. 905 */ 906 sqlite3 *sqlite3_db_handle(sqlite3_stmt *pStmt){ 907 return pStmt ? ((Vdbe*)pStmt)->db : 0; 908 } 909