1 /* 2 ** 2001 September 15 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 ** Main file for the SQLite library. The routines in this file 13 ** implement the programmer interface to the library. Routines in 14 ** other files are for internal use by SQLite and should not be 15 ** accessed by users of the library. 16 ** 17 ** $Id: main.c,v 1.361 2007/02/28 04:47:27 drh Exp $ 18 */ 19 #include "sqliteInt.h" 20 #include "os.h" 21 #include <ctype.h> 22 23 /* 24 ** The following constant value is used by the SQLITE_BIGENDIAN and 25 ** SQLITE_LITTLEENDIAN macros. 26 */ 27 const int sqlite3one = 1; 28 29 /* 30 ** The version of the library 31 */ 32 const char sqlite3_version[] = SQLITE_VERSION; 33 const char *sqlite3_libversion(void){ return sqlite3_version; } 34 int sqlite3_libversion_number(void){ return SQLITE_VERSION_NUMBER; } 35 36 /* 37 ** If the following function pointer is not NULL and if 38 ** SQLITE_ENABLE_IOTRACE is enabled, then messages describing 39 ** I/O active are written using this function. These messages 40 ** are intended for debugging activity only. 41 */ 42 void (*sqlite3_io_trace)(const char*, ...) = 0; 43 44 /* 45 ** This is the default collating function named "BINARY" which is always 46 ** available. 47 */ 48 static int binCollFunc( 49 void *NotUsed, 50 int nKey1, const void *pKey1, 51 int nKey2, const void *pKey2 52 ){ 53 int rc, n; 54 n = nKey1<nKey2 ? nKey1 : nKey2; 55 rc = memcmp(pKey1, pKey2, n); 56 if( rc==0 ){ 57 rc = nKey1 - nKey2; 58 } 59 return rc; 60 } 61 62 /* 63 ** Another built-in collating sequence: NOCASE. 64 ** 65 ** This collating sequence is intended to be used for "case independant 66 ** comparison". SQLite's knowledge of upper and lower case equivalents 67 ** extends only to the 26 characters used in the English language. 68 ** 69 ** At the moment there is only a UTF-8 implementation. 70 */ 71 static int nocaseCollatingFunc( 72 void *NotUsed, 73 int nKey1, const void *pKey1, 74 int nKey2, const void *pKey2 75 ){ 76 int r = sqlite3StrNICmp( 77 (const char *)pKey1, (const char *)pKey2, (nKey1<nKey2)?nKey1:nKey2); 78 if( 0==r ){ 79 r = nKey1-nKey2; 80 } 81 return r; 82 } 83 84 /* 85 ** Return the ROWID of the most recent insert 86 */ 87 sqlite_int64 sqlite3_last_insert_rowid(sqlite3 *db){ 88 return db->lastRowid; 89 } 90 91 /* 92 ** Return the number of changes in the most recent call to sqlite3_exec(). 93 */ 94 int sqlite3_changes(sqlite3 *db){ 95 return db->nChange; 96 } 97 98 /* 99 ** Return the number of changes since the database handle was opened. 100 */ 101 int sqlite3_total_changes(sqlite3 *db){ 102 return db->nTotalChange; 103 } 104 105 /* 106 ** Close an existing SQLite database 107 */ 108 int sqlite3_close(sqlite3 *db){ 109 HashElem *i; 110 int j; 111 112 if( !db ){ 113 return SQLITE_OK; 114 } 115 if( sqlite3SafetyCheck(db) ){ 116 return SQLITE_MISUSE; 117 } 118 119 #ifdef SQLITE_SSE 120 { 121 extern void sqlite3SseCleanup(sqlite3*); 122 sqlite3SseCleanup(db); 123 } 124 #endif 125 126 /* If there are any outstanding VMs, return SQLITE_BUSY. */ 127 sqlite3ResetInternalSchema(db, 0); 128 if( db->pVdbe ){ 129 sqlite3Error(db, SQLITE_BUSY, 130 "Unable to close due to unfinalised statements"); 131 return SQLITE_BUSY; 132 } 133 assert( !sqlite3SafetyCheck(db) ); 134 135 /* FIX ME: db->magic may be set to SQLITE_MAGIC_CLOSED if the database 136 ** cannot be opened for some reason. So this routine needs to run in 137 ** that case. But maybe there should be an extra magic value for the 138 ** "failed to open" state. 139 */ 140 if( db->magic!=SQLITE_MAGIC_CLOSED && sqlite3SafetyOn(db) ){ 141 /* printf("DID NOT CLOSE\n"); fflush(stdout); */ 142 return SQLITE_ERROR; 143 } 144 145 sqlite3VtabRollback(db); 146 147 for(j=0; j<db->nDb; j++){ 148 struct Db *pDb = &db->aDb[j]; 149 if( pDb->pBt ){ 150 sqlite3BtreeClose(pDb->pBt); 151 pDb->pBt = 0; 152 if( j!=1 ){ 153 pDb->pSchema = 0; 154 } 155 } 156 } 157 sqlite3ResetInternalSchema(db, 0); 158 assert( db->nDb<=2 ); 159 assert( db->aDb==db->aDbStatic ); 160 for(i=sqliteHashFirst(&db->aFunc); i; i=sqliteHashNext(i)){ 161 FuncDef *pFunc, *pNext; 162 for(pFunc = (FuncDef*)sqliteHashData(i); pFunc; pFunc=pNext){ 163 pNext = pFunc->pNext; 164 sqliteFree(pFunc); 165 } 166 } 167 168 for(i=sqliteHashFirst(&db->aCollSeq); i; i=sqliteHashNext(i)){ 169 CollSeq *pColl = (CollSeq *)sqliteHashData(i); 170 sqliteFree(pColl); 171 } 172 sqlite3HashClear(&db->aCollSeq); 173 #ifndef SQLITE_OMIT_VIRTUALTABLE 174 for(i=sqliteHashFirst(&db->aModule); i; i=sqliteHashNext(i)){ 175 Module *pMod = (Module *)sqliteHashData(i); 176 sqliteFree(pMod); 177 } 178 sqlite3HashClear(&db->aModule); 179 #endif 180 181 sqlite3HashClear(&db->aFunc); 182 sqlite3Error(db, SQLITE_OK, 0); /* Deallocates any cached error strings. */ 183 if( db->pErr ){ 184 sqlite3ValueFree(db->pErr); 185 } 186 sqlite3CloseExtensions(db); 187 188 db->magic = SQLITE_MAGIC_ERROR; 189 190 /* The temp-database schema is allocated differently from the other schema 191 ** objects (using sqliteMalloc() directly, instead of sqlite3BtreeSchema()). 192 ** So it needs to be freed here. Todo: Why not roll the temp schema into 193 ** the same sqliteMalloc() as the one that allocates the database 194 ** structure? 195 */ 196 sqliteFree(db->aDb[1].pSchema); 197 sqliteFree(db); 198 sqlite3ReleaseThreadData(); 199 return SQLITE_OK; 200 } 201 202 /* 203 ** Rollback all database files. 204 */ 205 void sqlite3RollbackAll(sqlite3 *db){ 206 int i; 207 int inTrans = 0; 208 for(i=0; i<db->nDb; i++){ 209 if( db->aDb[i].pBt ){ 210 if( sqlite3BtreeIsInTrans(db->aDb[i].pBt) ){ 211 inTrans = 1; 212 } 213 sqlite3BtreeRollback(db->aDb[i].pBt); 214 db->aDb[i].inTrans = 0; 215 } 216 } 217 sqlite3VtabRollback(db); 218 if( db->flags&SQLITE_InternChanges ){ 219 sqlite3ResetInternalSchema(db, 0); 220 } 221 222 /* If one has been configured, invoke the rollback-hook callback */ 223 if( db->xRollbackCallback && (inTrans || !db->autoCommit) ){ 224 db->xRollbackCallback(db->pRollbackArg); 225 } 226 } 227 228 /* 229 ** Return a static string that describes the kind of error specified in the 230 ** argument. 231 */ 232 const char *sqlite3ErrStr(int rc){ 233 const char *z; 234 switch( rc & 0xff ){ 235 case SQLITE_ROW: 236 case SQLITE_DONE: 237 case SQLITE_OK: z = "not an error"; break; 238 case SQLITE_ERROR: z = "SQL logic error or missing database"; break; 239 case SQLITE_PERM: z = "access permission denied"; break; 240 case SQLITE_ABORT: z = "callback requested query abort"; break; 241 case SQLITE_BUSY: z = "database is locked"; break; 242 case SQLITE_LOCKED: z = "database table is locked"; break; 243 case SQLITE_NOMEM: z = "out of memory"; break; 244 case SQLITE_READONLY: z = "attempt to write a readonly database"; break; 245 case SQLITE_INTERRUPT: z = "interrupted"; break; 246 case SQLITE_IOERR: z = "disk I/O error"; break; 247 case SQLITE_CORRUPT: z = "database disk image is malformed"; break; 248 case SQLITE_FULL: z = "database or disk is full"; break; 249 case SQLITE_CANTOPEN: z = "unable to open database file"; break; 250 case SQLITE_PROTOCOL: z = "database locking protocol failure"; break; 251 case SQLITE_EMPTY: z = "table contains no data"; break; 252 case SQLITE_SCHEMA: z = "database schema has changed"; break; 253 case SQLITE_CONSTRAINT: z = "constraint failed"; break; 254 case SQLITE_MISMATCH: z = "datatype mismatch"; break; 255 case SQLITE_MISUSE: z = "library routine called out of sequence";break; 256 case SQLITE_NOLFS: z = "kernel lacks large file support"; break; 257 case SQLITE_AUTH: z = "authorization denied"; break; 258 case SQLITE_FORMAT: z = "auxiliary database format error"; break; 259 case SQLITE_RANGE: z = "bind or column index out of range"; break; 260 case SQLITE_NOTADB: z = "file is encrypted or is not a database";break; 261 default: z = "unknown error"; break; 262 } 263 return z; 264 } 265 266 /* 267 ** This routine implements a busy callback that sleeps and tries 268 ** again until a timeout value is reached. The timeout value is 269 ** an integer number of milliseconds passed in as the first 270 ** argument. 271 */ 272 static int sqliteDefaultBusyCallback( 273 void *ptr, /* Database connection */ 274 int count /* Number of times table has been busy */ 275 ){ 276 #if OS_WIN || (defined(HAVE_USLEEP) && HAVE_USLEEP) 277 static const u8 delays[] = 278 { 1, 2, 5, 10, 15, 20, 25, 25, 25, 50, 50, 100 }; 279 static const u8 totals[] = 280 { 0, 1, 3, 8, 18, 33, 53, 78, 103, 128, 178, 228 }; 281 # define NDELAY (sizeof(delays)/sizeof(delays[0])) 282 int timeout = ((sqlite3 *)ptr)->busyTimeout; 283 int delay, prior; 284 285 assert( count>=0 ); 286 if( count < NDELAY ){ 287 delay = delays[count]; 288 prior = totals[count]; 289 }else{ 290 delay = delays[NDELAY-1]; 291 prior = totals[NDELAY-1] + delay*(count-(NDELAY-1)); 292 } 293 if( prior + delay > timeout ){ 294 delay = timeout - prior; 295 if( delay<=0 ) return 0; 296 } 297 sqlite3OsSleep(delay); 298 return 1; 299 #else 300 int timeout = ((sqlite3 *)ptr)->busyTimeout; 301 if( (count+1)*1000 > timeout ){ 302 return 0; 303 } 304 sqlite3OsSleep(1000); 305 return 1; 306 #endif 307 } 308 309 /* 310 ** Invoke the given busy handler. 311 ** 312 ** This routine is called when an operation failed with a lock. 313 ** If this routine returns non-zero, the lock is retried. If it 314 ** returns 0, the operation aborts with an SQLITE_BUSY error. 315 */ 316 int sqlite3InvokeBusyHandler(BusyHandler *p){ 317 int rc; 318 if( p==0 || p->xFunc==0 || p->nBusy<0 ) return 0; 319 rc = p->xFunc(p->pArg, p->nBusy); 320 if( rc==0 ){ 321 p->nBusy = -1; 322 }else{ 323 p->nBusy++; 324 } 325 return rc; 326 } 327 328 /* 329 ** This routine sets the busy callback for an Sqlite database to the 330 ** given callback function with the given argument. 331 */ 332 int sqlite3_busy_handler( 333 sqlite3 *db, 334 int (*xBusy)(void*,int), 335 void *pArg 336 ){ 337 if( sqlite3SafetyCheck(db) ){ 338 return SQLITE_MISUSE; 339 } 340 db->busyHandler.xFunc = xBusy; 341 db->busyHandler.pArg = pArg; 342 db->busyHandler.nBusy = 0; 343 return SQLITE_OK; 344 } 345 346 #ifndef SQLITE_OMIT_PROGRESS_CALLBACK 347 /* 348 ** This routine sets the progress callback for an Sqlite database to the 349 ** given callback function with the given argument. The progress callback will 350 ** be invoked every nOps opcodes. 351 */ 352 void sqlite3_progress_handler( 353 sqlite3 *db, 354 int nOps, 355 int (*xProgress)(void*), 356 void *pArg 357 ){ 358 if( !sqlite3SafetyCheck(db) ){ 359 if( nOps>0 ){ 360 db->xProgress = xProgress; 361 db->nProgressOps = nOps; 362 db->pProgressArg = pArg; 363 }else{ 364 db->xProgress = 0; 365 db->nProgressOps = 0; 366 db->pProgressArg = 0; 367 } 368 } 369 } 370 #endif 371 372 373 /* 374 ** This routine installs a default busy handler that waits for the 375 ** specified number of milliseconds before returning 0. 376 */ 377 int sqlite3_busy_timeout(sqlite3 *db, int ms){ 378 if( sqlite3SafetyCheck(db) ){ 379 return SQLITE_MISUSE; 380 } 381 if( ms>0 ){ 382 db->busyTimeout = ms; 383 sqlite3_busy_handler(db, sqliteDefaultBusyCallback, (void*)db); 384 }else{ 385 sqlite3_busy_handler(db, 0, 0); 386 } 387 return SQLITE_OK; 388 } 389 390 /* 391 ** Cause any pending operation to stop at its earliest opportunity. 392 */ 393 void sqlite3_interrupt(sqlite3 *db){ 394 if( db && (db->magic==SQLITE_MAGIC_OPEN || db->magic==SQLITE_MAGIC_BUSY) ){ 395 db->u1.isInterrupted = 1; 396 } 397 } 398 399 /* 400 ** Memory allocation routines that use SQLites internal memory 401 ** memory allocator. Depending on how SQLite is compiled, the 402 ** internal memory allocator might be just an alias for the 403 ** system default malloc/realloc/free. Or the built-in allocator 404 ** might do extra stuff like put sentinals around buffers to 405 ** check for overruns or look for memory leaks. 406 ** 407 ** Use sqlite3_free() to free memory returned by sqlite3_mprintf(). 408 */ 409 void sqlite3_free(void *p){ if( p ) sqlite3OsFree(p); } 410 void *sqlite3_malloc(int nByte){ return nByte>0 ? sqlite3OsMalloc(nByte) : 0; } 411 void *sqlite3_realloc(void *pOld, int nByte){ 412 if( pOld ){ 413 if( nByte>0 ){ 414 return sqlite3OsRealloc(pOld, nByte); 415 }else{ 416 sqlite3OsFree(pOld); 417 return 0; 418 } 419 }else{ 420 return sqlite3_malloc(nByte); 421 } 422 } 423 424 /* 425 ** This function is exactly the same as sqlite3_create_function(), except 426 ** that it is designed to be called by internal code. The difference is 427 ** that if a malloc() fails in sqlite3_create_function(), an error code 428 ** is returned and the mallocFailed flag cleared. 429 */ 430 int sqlite3CreateFunc( 431 sqlite3 *db, 432 const char *zFunctionName, 433 int nArg, 434 int enc, 435 void *pUserData, 436 void (*xFunc)(sqlite3_context*,int,sqlite3_value **), 437 void (*xStep)(sqlite3_context*,int,sqlite3_value **), 438 void (*xFinal)(sqlite3_context*) 439 ){ 440 FuncDef *p; 441 int nName; 442 443 if( sqlite3SafetyCheck(db) ){ 444 return SQLITE_MISUSE; 445 } 446 if( zFunctionName==0 || 447 (xFunc && (xFinal || xStep)) || 448 (!xFunc && (xFinal && !xStep)) || 449 (!xFunc && (!xFinal && xStep)) || 450 (nArg<-1 || nArg>127) || 451 (255<(nName = strlen(zFunctionName))) ){ 452 sqlite3Error(db, SQLITE_ERROR, "bad parameters"); 453 return SQLITE_ERROR; 454 } 455 456 #ifndef SQLITE_OMIT_UTF16 457 /* If SQLITE_UTF16 is specified as the encoding type, transform this 458 ** to one of SQLITE_UTF16LE or SQLITE_UTF16BE using the 459 ** SQLITE_UTF16NATIVE macro. SQLITE_UTF16 is not used internally. 460 ** 461 ** If SQLITE_ANY is specified, add three versions of the function 462 ** to the hash table. 463 */ 464 if( enc==SQLITE_UTF16 ){ 465 enc = SQLITE_UTF16NATIVE; 466 }else if( enc==SQLITE_ANY ){ 467 int rc; 468 rc = sqlite3CreateFunc(db, zFunctionName, nArg, SQLITE_UTF8, 469 pUserData, xFunc, xStep, xFinal); 470 if( rc!=SQLITE_OK ) return rc; 471 rc = sqlite3CreateFunc(db, zFunctionName, nArg, SQLITE_UTF16LE, 472 pUserData, xFunc, xStep, xFinal); 473 if( rc!=SQLITE_OK ) return rc; 474 enc = SQLITE_UTF16BE; 475 } 476 #else 477 enc = SQLITE_UTF8; 478 #endif 479 480 /* Check if an existing function is being overridden or deleted. If so, 481 ** and there are active VMs, then return SQLITE_BUSY. If a function 482 ** is being overridden/deleted but there are no active VMs, allow the 483 ** operation to continue but invalidate all precompiled statements. 484 */ 485 p = sqlite3FindFunction(db, zFunctionName, nName, nArg, enc, 0); 486 if( p && p->iPrefEnc==enc && p->nArg==nArg ){ 487 if( db->activeVdbeCnt ){ 488 sqlite3Error(db, SQLITE_BUSY, 489 "Unable to delete/modify user-function due to active statements"); 490 assert( !sqlite3MallocFailed() ); 491 return SQLITE_BUSY; 492 }else{ 493 sqlite3ExpirePreparedStatements(db); 494 } 495 } 496 497 p = sqlite3FindFunction(db, zFunctionName, nName, nArg, enc, 1); 498 if( p ){ 499 p->flags = 0; 500 p->xFunc = xFunc; 501 p->xStep = xStep; 502 p->xFinalize = xFinal; 503 p->pUserData = pUserData; 504 p->nArg = nArg; 505 } 506 return SQLITE_OK; 507 } 508 509 /* 510 ** Create new user functions. 511 */ 512 int sqlite3_create_function( 513 sqlite3 *db, 514 const char *zFunctionName, 515 int nArg, 516 int enc, 517 void *p, 518 void (*xFunc)(sqlite3_context*,int,sqlite3_value **), 519 void (*xStep)(sqlite3_context*,int,sqlite3_value **), 520 void (*xFinal)(sqlite3_context*) 521 ){ 522 int rc; 523 assert( !sqlite3MallocFailed() ); 524 rc = sqlite3CreateFunc(db, zFunctionName, nArg, enc, p, xFunc, xStep, xFinal); 525 526 return sqlite3ApiExit(db, rc); 527 } 528 529 #ifndef SQLITE_OMIT_UTF16 530 int sqlite3_create_function16( 531 sqlite3 *db, 532 const void *zFunctionName, 533 int nArg, 534 int eTextRep, 535 void *p, 536 void (*xFunc)(sqlite3_context*,int,sqlite3_value**), 537 void (*xStep)(sqlite3_context*,int,sqlite3_value**), 538 void (*xFinal)(sqlite3_context*) 539 ){ 540 int rc; 541 char *zFunc8; 542 assert( !sqlite3MallocFailed() ); 543 544 zFunc8 = sqlite3utf16to8(zFunctionName, -1); 545 rc = sqlite3CreateFunc(db, zFunc8, nArg, eTextRep, p, xFunc, xStep, xFinal); 546 sqliteFree(zFunc8); 547 548 return sqlite3ApiExit(db, rc); 549 } 550 #endif 551 552 553 /* 554 ** Declare that a function has been overloaded by a virtual table. 555 ** 556 ** If the function already exists as a regular global function, then 557 ** this routine is a no-op. If the function does not exist, then create 558 ** a new one that always throws a run-time error. 559 ** 560 ** When virtual tables intend to provide an overloaded function, they 561 ** should call this routine to make sure the global function exists. 562 ** A global function must exist in order for name resolution to work 563 ** properly. 564 */ 565 int sqlite3_overload_function( 566 sqlite3 *db, 567 const char *zName, 568 int nArg 569 ){ 570 int nName = strlen(zName); 571 if( sqlite3FindFunction(db, zName, nName, nArg, SQLITE_UTF8, 0)==0 ){ 572 sqlite3CreateFunc(db, zName, nArg, SQLITE_UTF8, 573 0, sqlite3InvalidFunction, 0, 0); 574 } 575 return sqlite3ApiExit(db, SQLITE_OK); 576 } 577 578 #ifndef SQLITE_OMIT_TRACE 579 /* 580 ** Register a trace function. The pArg from the previously registered trace 581 ** is returned. 582 ** 583 ** A NULL trace function means that no tracing is executes. A non-NULL 584 ** trace is a pointer to a function that is invoked at the start of each 585 ** SQL statement. 586 */ 587 void *sqlite3_trace(sqlite3 *db, void (*xTrace)(void*,const char*), void *pArg){ 588 void *pOld = db->pTraceArg; 589 db->xTrace = xTrace; 590 db->pTraceArg = pArg; 591 return pOld; 592 } 593 /* 594 ** Register a profile function. The pArg from the previously registered 595 ** profile function is returned. 596 ** 597 ** A NULL profile function means that no profiling is executes. A non-NULL 598 ** profile is a pointer to a function that is invoked at the conclusion of 599 ** each SQL statement that is run. 600 */ 601 void *sqlite3_profile( 602 sqlite3 *db, 603 void (*xProfile)(void*,const char*,sqlite_uint64), 604 void *pArg 605 ){ 606 void *pOld = db->pProfileArg; 607 db->xProfile = xProfile; 608 db->pProfileArg = pArg; 609 return pOld; 610 } 611 #endif /* SQLITE_OMIT_TRACE */ 612 613 /*** EXPERIMENTAL *** 614 ** 615 ** Register a function to be invoked when a transaction comments. 616 ** If the invoked function returns non-zero, then the commit becomes a 617 ** rollback. 618 */ 619 void *sqlite3_commit_hook( 620 sqlite3 *db, /* Attach the hook to this database */ 621 int (*xCallback)(void*), /* Function to invoke on each commit */ 622 void *pArg /* Argument to the function */ 623 ){ 624 void *pOld = db->pCommitArg; 625 db->xCommitCallback = xCallback; 626 db->pCommitArg = pArg; 627 return pOld; 628 } 629 630 /* 631 ** Register a callback to be invoked each time a row is updated, 632 ** inserted or deleted using this database connection. 633 */ 634 void *sqlite3_update_hook( 635 sqlite3 *db, /* Attach the hook to this database */ 636 void (*xCallback)(void*,int,char const *,char const *,sqlite_int64), 637 void *pArg /* Argument to the function */ 638 ){ 639 void *pRet = db->pUpdateArg; 640 db->xUpdateCallback = xCallback; 641 db->pUpdateArg = pArg; 642 return pRet; 643 } 644 645 /* 646 ** Register a callback to be invoked each time a transaction is rolled 647 ** back by this database connection. 648 */ 649 void *sqlite3_rollback_hook( 650 sqlite3 *db, /* Attach the hook to this database */ 651 void (*xCallback)(void*), /* Callback function */ 652 void *pArg /* Argument to the function */ 653 ){ 654 void *pRet = db->pRollbackArg; 655 db->xRollbackCallback = xCallback; 656 db->pRollbackArg = pArg; 657 return pRet; 658 } 659 660 /* 661 ** This routine is called to create a connection to a database BTree 662 ** driver. If zFilename is the name of a file, then that file is 663 ** opened and used. If zFilename is the magic name ":memory:" then 664 ** the database is stored in memory (and is thus forgotten as soon as 665 ** the connection is closed.) If zFilename is NULL then the database 666 ** is a "virtual" database for transient use only and is deleted as 667 ** soon as the connection is closed. 668 ** 669 ** A virtual database can be either a disk file (that is automatically 670 ** deleted when the file is closed) or it an be held entirely in memory, 671 ** depending on the values of the TEMP_STORE compile-time macro and the 672 ** db->temp_store variable, according to the following chart: 673 ** 674 ** TEMP_STORE db->temp_store Location of temporary database 675 ** ---------- -------------- ------------------------------ 676 ** 0 any file 677 ** 1 1 file 678 ** 1 2 memory 679 ** 1 0 file 680 ** 2 1 file 681 ** 2 2 memory 682 ** 2 0 memory 683 ** 3 any memory 684 */ 685 int sqlite3BtreeFactory( 686 const sqlite3 *db, /* Main database when opening aux otherwise 0 */ 687 const char *zFilename, /* Name of the file containing the BTree database */ 688 int omitJournal, /* if TRUE then do not journal this file */ 689 int nCache, /* How many pages in the page cache */ 690 Btree **ppBtree /* Pointer to new Btree object written here */ 691 ){ 692 int btree_flags = 0; 693 int rc; 694 695 assert( ppBtree != 0); 696 if( omitJournal ){ 697 btree_flags |= BTREE_OMIT_JOURNAL; 698 } 699 if( db->flags & SQLITE_NoReadlock ){ 700 btree_flags |= BTREE_NO_READLOCK; 701 } 702 if( zFilename==0 ){ 703 #if TEMP_STORE==0 704 /* Do nothing */ 705 #endif 706 #ifndef SQLITE_OMIT_MEMORYDB 707 #if TEMP_STORE==1 708 if( db->temp_store==2 ) zFilename = ":memory:"; 709 #endif 710 #if TEMP_STORE==2 711 if( db->temp_store!=1 ) zFilename = ":memory:"; 712 #endif 713 #if TEMP_STORE==3 714 zFilename = ":memory:"; 715 #endif 716 #endif /* SQLITE_OMIT_MEMORYDB */ 717 } 718 719 rc = sqlite3BtreeOpen(zFilename, (sqlite3 *)db, ppBtree, btree_flags); 720 if( rc==SQLITE_OK ){ 721 sqlite3BtreeSetBusyHandler(*ppBtree, (void*)&db->busyHandler); 722 sqlite3BtreeSetCacheSize(*ppBtree, nCache); 723 } 724 return rc; 725 } 726 727 /* 728 ** Return UTF-8 encoded English language explanation of the most recent 729 ** error. 730 */ 731 const char *sqlite3_errmsg(sqlite3 *db){ 732 const char *z; 733 if( !db || sqlite3MallocFailed() ){ 734 return sqlite3ErrStr(SQLITE_NOMEM); 735 } 736 if( sqlite3SafetyCheck(db) || db->errCode==SQLITE_MISUSE ){ 737 return sqlite3ErrStr(SQLITE_MISUSE); 738 } 739 z = (char*)sqlite3_value_text(db->pErr); 740 if( z==0 ){ 741 z = sqlite3ErrStr(db->errCode); 742 } 743 return z; 744 } 745 746 #ifndef SQLITE_OMIT_UTF16 747 /* 748 ** Return UTF-16 encoded English language explanation of the most recent 749 ** error. 750 */ 751 const void *sqlite3_errmsg16(sqlite3 *db){ 752 /* Because all the characters in the string are in the unicode 753 ** range 0x00-0xFF, if we pad the big-endian string with a 754 ** zero byte, we can obtain the little-endian string with 755 ** &big_endian[1]. 756 */ 757 static const char outOfMemBe[] = { 758 0, 'o', 0, 'u', 0, 't', 0, ' ', 759 0, 'o', 0, 'f', 0, ' ', 760 0, 'm', 0, 'e', 0, 'm', 0, 'o', 0, 'r', 0, 'y', 0, 0, 0 761 }; 762 static const char misuseBe [] = { 763 0, 'l', 0, 'i', 0, 'b', 0, 'r', 0, 'a', 0, 'r', 0, 'y', 0, ' ', 764 0, 'r', 0, 'o', 0, 'u', 0, 't', 0, 'i', 0, 'n', 0, 'e', 0, ' ', 765 0, 'c', 0, 'a', 0, 'l', 0, 'l', 0, 'e', 0, 'd', 0, ' ', 766 0, 'o', 0, 'u', 0, 't', 0, ' ', 767 0, 'o', 0, 'f', 0, ' ', 768 0, 's', 0, 'e', 0, 'q', 0, 'u', 0, 'e', 0, 'n', 0, 'c', 0, 'e', 0, 0, 0 769 }; 770 771 const void *z; 772 if( sqlite3MallocFailed() ){ 773 return (void *)(&outOfMemBe[SQLITE_UTF16NATIVE==SQLITE_UTF16LE?1:0]); 774 } 775 if( sqlite3SafetyCheck(db) || db->errCode==SQLITE_MISUSE ){ 776 return (void *)(&misuseBe[SQLITE_UTF16NATIVE==SQLITE_UTF16LE?1:0]); 777 } 778 z = sqlite3_value_text16(db->pErr); 779 if( z==0 ){ 780 sqlite3ValueSetStr(db->pErr, -1, sqlite3ErrStr(db->errCode), 781 SQLITE_UTF8, SQLITE_STATIC); 782 z = sqlite3_value_text16(db->pErr); 783 } 784 sqlite3ApiExit(0, 0); 785 return z; 786 } 787 #endif /* SQLITE_OMIT_UTF16 */ 788 789 /* 790 ** Return the most recent error code generated by an SQLite routine. If NULL is 791 ** passed to this function, we assume a malloc() failed during sqlite3_open(). 792 */ 793 int sqlite3_errcode(sqlite3 *db){ 794 if( !db || sqlite3MallocFailed() ){ 795 return SQLITE_NOMEM; 796 } 797 if( sqlite3SafetyCheck(db) ){ 798 return SQLITE_MISUSE; 799 } 800 return db->errCode & db->errMask; 801 } 802 803 /* 804 ** Create a new collating function for database "db". The name is zName 805 ** and the encoding is enc. 806 */ 807 static int createCollation( 808 sqlite3* db, 809 const char *zName, 810 int enc, 811 void* pCtx, 812 int(*xCompare)(void*,int,const void*,int,const void*) 813 ){ 814 CollSeq *pColl; 815 int enc2; 816 817 if( sqlite3SafetyCheck(db) ){ 818 return SQLITE_MISUSE; 819 } 820 821 /* If SQLITE_UTF16 is specified as the encoding type, transform this 822 ** to one of SQLITE_UTF16LE or SQLITE_UTF16BE using the 823 ** SQLITE_UTF16NATIVE macro. SQLITE_UTF16 is not used internally. 824 */ 825 enc2 = enc & ~SQLITE_UTF16_ALIGNED; 826 if( enc2==SQLITE_UTF16 ){ 827 enc2 = SQLITE_UTF16NATIVE; 828 } 829 830 if( (enc2&~3)!=0 ){ 831 sqlite3Error(db, SQLITE_ERROR, "unknown encoding"); 832 return SQLITE_ERROR; 833 } 834 835 /* Check if this call is removing or replacing an existing collation 836 ** sequence. If so, and there are active VMs, return busy. If there 837 ** are no active VMs, invalidate any pre-compiled statements. 838 */ 839 pColl = sqlite3FindCollSeq(db, (u8)enc2, zName, strlen(zName), 0); 840 if( pColl && pColl->xCmp ){ 841 if( db->activeVdbeCnt ){ 842 sqlite3Error(db, SQLITE_BUSY, 843 "Unable to delete/modify collation sequence due to active statements"); 844 return SQLITE_BUSY; 845 } 846 sqlite3ExpirePreparedStatements(db); 847 } 848 849 pColl = sqlite3FindCollSeq(db, (u8)enc2, zName, strlen(zName), 1); 850 if( pColl ){ 851 pColl->xCmp = xCompare; 852 pColl->pUser = pCtx; 853 pColl->enc = enc2 | (enc & SQLITE_UTF16_ALIGNED); 854 } 855 sqlite3Error(db, SQLITE_OK, 0); 856 return SQLITE_OK; 857 } 858 859 860 /* 861 ** This routine does the work of opening a database on behalf of 862 ** sqlite3_open() and sqlite3_open16(). The database filename "zFilename" 863 ** is UTF-8 encoded. 864 */ 865 static int openDatabase( 866 const char *zFilename, /* Database filename UTF-8 encoded */ 867 sqlite3 **ppDb /* OUT: Returned database handle */ 868 ){ 869 sqlite3 *db; 870 int rc; 871 CollSeq *pColl; 872 873 assert( !sqlite3MallocFailed() ); 874 875 /* Allocate the sqlite data structure */ 876 db = sqliteMalloc( sizeof(sqlite3) ); 877 if( db==0 ) goto opendb_out; 878 db->errMask = 0xff; 879 db->priorNewRowid = 0; 880 db->magic = SQLITE_MAGIC_BUSY; 881 db->nDb = 2; 882 db->aDb = db->aDbStatic; 883 db->autoCommit = 1; 884 db->flags |= SQLITE_ShortColNames 885 #if SQLITE_DEFAULT_FILE_FORMAT<4 886 | SQLITE_LegacyFileFmt 887 #endif 888 ; 889 sqlite3HashInit(&db->aFunc, SQLITE_HASH_STRING, 0); 890 sqlite3HashInit(&db->aCollSeq, SQLITE_HASH_STRING, 0); 891 #ifndef SQLITE_OMIT_VIRTUALTABLE 892 sqlite3HashInit(&db->aModule, SQLITE_HASH_STRING, 0); 893 #endif 894 895 /* Add the default collation sequence BINARY. BINARY works for both UTF-8 896 ** and UTF-16, so add a version for each to avoid any unnecessary 897 ** conversions. The only error that can occur here is a malloc() failure. 898 */ 899 if( createCollation(db, "BINARY", SQLITE_UTF8, 0, binCollFunc) || 900 createCollation(db, "BINARY", SQLITE_UTF16BE, 0, binCollFunc) || 901 createCollation(db, "BINARY", SQLITE_UTF16LE, 0, binCollFunc) || 902 (db->pDfltColl = sqlite3FindCollSeq(db, SQLITE_UTF8, "BINARY", 6, 0))==0 903 ){ 904 assert( sqlite3MallocFailed() ); 905 db->magic = SQLITE_MAGIC_CLOSED; 906 goto opendb_out; 907 } 908 909 /* Also add a UTF-8 case-insensitive collation sequence. */ 910 createCollation(db, "NOCASE", SQLITE_UTF8, 0, nocaseCollatingFunc); 911 912 /* Set flags on the built-in collating sequences */ 913 db->pDfltColl->type = SQLITE_COLL_BINARY; 914 pColl = sqlite3FindCollSeq(db, SQLITE_UTF8, "NOCASE", 6, 0); 915 if( pColl ){ 916 pColl->type = SQLITE_COLL_NOCASE; 917 } 918 919 /* Open the backend database driver */ 920 rc = sqlite3BtreeFactory(db, zFilename, 0, MAX_PAGES, &db->aDb[0].pBt); 921 if( rc!=SQLITE_OK ){ 922 sqlite3Error(db, rc, 0); 923 db->magic = SQLITE_MAGIC_CLOSED; 924 goto opendb_out; 925 } 926 db->aDb[0].pSchema = sqlite3SchemaGet(db->aDb[0].pBt); 927 db->aDb[1].pSchema = sqlite3SchemaGet(0); 928 929 930 /* The default safety_level for the main database is 'full'; for the temp 931 ** database it is 'NONE'. This matches the pager layer defaults. 932 */ 933 db->aDb[0].zName = "main"; 934 db->aDb[0].safety_level = 3; 935 #ifndef SQLITE_OMIT_TEMPDB 936 db->aDb[1].zName = "temp"; 937 db->aDb[1].safety_level = 1; 938 #endif 939 940 /* Register all built-in functions, but do not attempt to read the 941 ** database schema yet. This is delayed until the first time the database 942 ** is accessed. 943 */ 944 if( !sqlite3MallocFailed() ){ 945 sqlite3Error(db, SQLITE_OK, 0); 946 sqlite3RegisterBuiltinFunctions(db); 947 } 948 db->magic = SQLITE_MAGIC_OPEN; 949 950 /* Load automatic extensions - extensions that have been registered 951 ** using the sqlite3_automatic_extension() API. 952 */ 953 (void)sqlite3AutoLoadExtensions(db); 954 955 #ifdef SQLITE_ENABLE_FTS1 956 { 957 extern int sqlite3Fts1Init(sqlite3*); 958 sqlite3Fts1Init(db); 959 } 960 #endif 961 962 #ifdef SQLITE_ENABLE_FTS2 963 { 964 extern int sqlite3Fts2Init(sqlite3*); 965 sqlite3Fts2Init(db); 966 } 967 #endif 968 969 opendb_out: 970 if( SQLITE_NOMEM==(rc = sqlite3_errcode(db)) ){ 971 sqlite3_close(db); 972 db = 0; 973 } 974 *ppDb = db; 975 return sqlite3ApiExit(0, rc); 976 } 977 978 /* 979 ** Open a new database handle. 980 */ 981 int sqlite3_open( 982 const char *zFilename, 983 sqlite3 **ppDb 984 ){ 985 return openDatabase(zFilename, ppDb); 986 } 987 988 #ifndef SQLITE_OMIT_UTF16 989 /* 990 ** Open a new database handle. 991 */ 992 int sqlite3_open16( 993 const void *zFilename, 994 sqlite3 **ppDb 995 ){ 996 char const *zFilename8; /* zFilename encoded in UTF-8 instead of UTF-16 */ 997 int rc = SQLITE_OK; 998 sqlite3_value *pVal; 999 1000 assert( zFilename ); 1001 assert( ppDb ); 1002 *ppDb = 0; 1003 pVal = sqlite3ValueNew(); 1004 sqlite3ValueSetStr(pVal, -1, zFilename, SQLITE_UTF16NATIVE, SQLITE_STATIC); 1005 zFilename8 = sqlite3ValueText(pVal, SQLITE_UTF8); 1006 if( zFilename8 ){ 1007 rc = openDatabase(zFilename8, ppDb); 1008 if( rc==SQLITE_OK && *ppDb ){ 1009 rc = sqlite3_exec(*ppDb, "PRAGMA encoding = 'UTF-16'", 0, 0, 0); 1010 if( rc!=SQLITE_OK ){ 1011 sqlite3_close(*ppDb); 1012 *ppDb = 0; 1013 } 1014 } 1015 } 1016 sqlite3ValueFree(pVal); 1017 1018 return sqlite3ApiExit(0, rc); 1019 } 1020 #endif /* SQLITE_OMIT_UTF16 */ 1021 1022 /* 1023 ** The following routine destroys a virtual machine that is created by 1024 ** the sqlite3_compile() routine. The integer returned is an SQLITE_ 1025 ** success/failure code that describes the result of executing the virtual 1026 ** machine. 1027 ** 1028 ** This routine sets the error code and string returned by 1029 ** sqlite3_errcode(), sqlite3_errmsg() and sqlite3_errmsg16(). 1030 */ 1031 int sqlite3_finalize(sqlite3_stmt *pStmt){ 1032 int rc; 1033 if( pStmt==0 ){ 1034 rc = SQLITE_OK; 1035 }else{ 1036 rc = sqlite3VdbeFinalize((Vdbe*)pStmt); 1037 } 1038 return rc; 1039 } 1040 1041 /* 1042 ** Terminate the current execution of an SQL statement and reset it 1043 ** back to its starting state so that it can be reused. A success code from 1044 ** the prior execution is returned. 1045 ** 1046 ** This routine sets the error code and string returned by 1047 ** sqlite3_errcode(), sqlite3_errmsg() and sqlite3_errmsg16(). 1048 */ 1049 int sqlite3_reset(sqlite3_stmt *pStmt){ 1050 int rc; 1051 if( pStmt==0 ){ 1052 rc = SQLITE_OK; 1053 }else{ 1054 rc = sqlite3VdbeReset((Vdbe*)pStmt); 1055 sqlite3VdbeMakeReady((Vdbe*)pStmt, -1, 0, 0, 0); 1056 assert( (rc & (sqlite3_db_handle(pStmt)->errMask))==rc ); 1057 } 1058 return rc; 1059 } 1060 1061 /* 1062 ** Register a new collation sequence with the database handle db. 1063 */ 1064 int sqlite3_create_collation( 1065 sqlite3* db, 1066 const char *zName, 1067 int enc, 1068 void* pCtx, 1069 int(*xCompare)(void*,int,const void*,int,const void*) 1070 ){ 1071 int rc; 1072 assert( !sqlite3MallocFailed() ); 1073 rc = createCollation(db, zName, enc, pCtx, xCompare); 1074 return sqlite3ApiExit(db, rc); 1075 } 1076 1077 #ifndef SQLITE_OMIT_UTF16 1078 /* 1079 ** Register a new collation sequence with the database handle db. 1080 */ 1081 int sqlite3_create_collation16( 1082 sqlite3* db, 1083 const char *zName, 1084 int enc, 1085 void* pCtx, 1086 int(*xCompare)(void*,int,const void*,int,const void*) 1087 ){ 1088 int rc = SQLITE_OK; 1089 char *zName8; 1090 assert( !sqlite3MallocFailed() ); 1091 zName8 = sqlite3utf16to8(zName, -1); 1092 if( zName8 ){ 1093 rc = createCollation(db, zName8, enc, pCtx, xCompare); 1094 sqliteFree(zName8); 1095 } 1096 return sqlite3ApiExit(db, rc); 1097 } 1098 #endif /* SQLITE_OMIT_UTF16 */ 1099 1100 /* 1101 ** Register a collation sequence factory callback with the database handle 1102 ** db. Replace any previously installed collation sequence factory. 1103 */ 1104 int sqlite3_collation_needed( 1105 sqlite3 *db, 1106 void *pCollNeededArg, 1107 void(*xCollNeeded)(void*,sqlite3*,int eTextRep,const char*) 1108 ){ 1109 if( sqlite3SafetyCheck(db) ){ 1110 return SQLITE_MISUSE; 1111 } 1112 db->xCollNeeded = xCollNeeded; 1113 db->xCollNeeded16 = 0; 1114 db->pCollNeededArg = pCollNeededArg; 1115 return SQLITE_OK; 1116 } 1117 1118 #ifndef SQLITE_OMIT_UTF16 1119 /* 1120 ** Register a collation sequence factory callback with the database handle 1121 ** db. Replace any previously installed collation sequence factory. 1122 */ 1123 int sqlite3_collation_needed16( 1124 sqlite3 *db, 1125 void *pCollNeededArg, 1126 void(*xCollNeeded16)(void*,sqlite3*,int eTextRep,const void*) 1127 ){ 1128 if( sqlite3SafetyCheck(db) ){ 1129 return SQLITE_MISUSE; 1130 } 1131 db->xCollNeeded = 0; 1132 db->xCollNeeded16 = xCollNeeded16; 1133 db->pCollNeededArg = pCollNeededArg; 1134 return SQLITE_OK; 1135 } 1136 #endif /* SQLITE_OMIT_UTF16 */ 1137 1138 #ifndef SQLITE_OMIT_GLOBALRECOVER 1139 /* 1140 ** This function is now an anachronism. It used to be used to recover from a 1141 ** malloc() failure, but SQLite now does this automatically. 1142 */ 1143 int sqlite3_global_recover(){ 1144 return SQLITE_OK; 1145 } 1146 #endif 1147 1148 /* 1149 ** Test to see whether or not the database connection is in autocommit 1150 ** mode. Return TRUE if it is and FALSE if not. Autocommit mode is on 1151 ** by default. Autocommit is disabled by a BEGIN statement and reenabled 1152 ** by the next COMMIT or ROLLBACK. 1153 ** 1154 ******* THIS IS AN EXPERIMENTAL API AND IS SUBJECT TO CHANGE ****** 1155 */ 1156 int sqlite3_get_autocommit(sqlite3 *db){ 1157 return db->autoCommit; 1158 } 1159 1160 #ifdef SQLITE_DEBUG 1161 /* 1162 ** The following routine is subtituted for constant SQLITE_CORRUPT in 1163 ** debugging builds. This provides a way to set a breakpoint for when 1164 ** corruption is first detected. 1165 */ 1166 int sqlite3Corrupt(void){ 1167 return SQLITE_CORRUPT; 1168 } 1169 #endif 1170 1171 1172 #ifndef SQLITE_OMIT_SHARED_CACHE 1173 /* 1174 ** Enable or disable the shared pager and schema features for the 1175 ** current thread. 1176 ** 1177 ** This routine should only be called when there are no open 1178 ** database connections. 1179 */ 1180 int sqlite3_enable_shared_cache(int enable){ 1181 ThreadData *pTd = sqlite3ThreadData(); 1182 if( pTd ){ 1183 /* It is only legal to call sqlite3_enable_shared_cache() when there 1184 ** are no currently open b-trees that were opened by the calling thread. 1185 ** This condition is only easy to detect if the shared-cache were 1186 ** previously enabled (and is being disabled). 1187 */ 1188 if( pTd->pBtree && !enable ){ 1189 assert( pTd->useSharedData ); 1190 return SQLITE_MISUSE; 1191 } 1192 1193 pTd->useSharedData = enable; 1194 sqlite3ReleaseThreadData(); 1195 } 1196 return sqlite3ApiExit(0, SQLITE_OK); 1197 } 1198 #endif 1199 1200 /* 1201 ** This is a convenience routine that makes sure that all thread-specific 1202 ** data for this thread has been deallocated. 1203 */ 1204 void sqlite3_thread_cleanup(void){ 1205 ThreadData *pTd = sqlite3OsThreadSpecificData(0); 1206 if( pTd ){ 1207 memset(pTd, 0, sizeof(*pTd)); 1208 sqlite3OsThreadSpecificData(-1); 1209 } 1210 } 1211 1212 /* 1213 ** Return meta information about a specific column of a database table. 1214 ** See comment in sqlite3.h (sqlite.h.in) for details. 1215 */ 1216 #ifdef SQLITE_ENABLE_COLUMN_METADATA 1217 int sqlite3_table_column_metadata( 1218 sqlite3 *db, /* Connection handle */ 1219 const char *zDbName, /* Database name or NULL */ 1220 const char *zTableName, /* Table name */ 1221 const char *zColumnName, /* Column name */ 1222 char const **pzDataType, /* OUTPUT: Declared data type */ 1223 char const **pzCollSeq, /* OUTPUT: Collation sequence name */ 1224 int *pNotNull, /* OUTPUT: True if NOT NULL constraint exists */ 1225 int *pPrimaryKey, /* OUTPUT: True if column part of PK */ 1226 int *pAutoinc /* OUTPUT: True if colums is auto-increment */ 1227 ){ 1228 int rc; 1229 char *zErrMsg = 0; 1230 Table *pTab = 0; 1231 Column *pCol = 0; 1232 int iCol; 1233 1234 char const *zDataType = 0; 1235 char const *zCollSeq = 0; 1236 int notnull = 0; 1237 int primarykey = 0; 1238 int autoinc = 0; 1239 1240 /* Ensure the database schema has been loaded */ 1241 if( sqlite3SafetyOn(db) ){ 1242 return SQLITE_MISUSE; 1243 } 1244 rc = sqlite3Init(db, &zErrMsg); 1245 if( SQLITE_OK!=rc ){ 1246 goto error_out; 1247 } 1248 1249 /* Locate the table in question */ 1250 pTab = sqlite3FindTable(db, zTableName, zDbName); 1251 if( !pTab || pTab->pSelect ){ 1252 pTab = 0; 1253 goto error_out; 1254 } 1255 1256 /* Find the column for which info is requested */ 1257 if( sqlite3IsRowid(zColumnName) ){ 1258 iCol = pTab->iPKey; 1259 if( iCol>=0 ){ 1260 pCol = &pTab->aCol[iCol]; 1261 } 1262 }else{ 1263 for(iCol=0; iCol<pTab->nCol; iCol++){ 1264 pCol = &pTab->aCol[iCol]; 1265 if( 0==sqlite3StrICmp(pCol->zName, zColumnName) ){ 1266 break; 1267 } 1268 } 1269 if( iCol==pTab->nCol ){ 1270 pTab = 0; 1271 goto error_out; 1272 } 1273 } 1274 1275 /* The following block stores the meta information that will be returned 1276 ** to the caller in local variables zDataType, zCollSeq, notnull, primarykey 1277 ** and autoinc. At this point there are two possibilities: 1278 ** 1279 ** 1. The specified column name was rowid", "oid" or "_rowid_" 1280 ** and there is no explicitly declared IPK column. 1281 ** 1282 ** 2. The table is not a view and the column name identified an 1283 ** explicitly declared column. Copy meta information from *pCol. 1284 */ 1285 if( pCol ){ 1286 zDataType = pCol->zType; 1287 zCollSeq = pCol->zColl; 1288 notnull = (pCol->notNull?1:0); 1289 primarykey = (pCol->isPrimKey?1:0); 1290 autoinc = ((pTab->iPKey==iCol && pTab->autoInc)?1:0); 1291 }else{ 1292 zDataType = "INTEGER"; 1293 primarykey = 1; 1294 } 1295 if( !zCollSeq ){ 1296 zCollSeq = "BINARY"; 1297 } 1298 1299 error_out: 1300 if( sqlite3SafetyOff(db) ){ 1301 rc = SQLITE_MISUSE; 1302 } 1303 1304 /* Whether the function call succeeded or failed, set the output parameters 1305 ** to whatever their local counterparts contain. If an error did occur, 1306 ** this has the effect of zeroing all output parameters. 1307 */ 1308 if( pzDataType ) *pzDataType = zDataType; 1309 if( pzCollSeq ) *pzCollSeq = zCollSeq; 1310 if( pNotNull ) *pNotNull = notnull; 1311 if( pPrimaryKey ) *pPrimaryKey = primarykey; 1312 if( pAutoinc ) *pAutoinc = autoinc; 1313 1314 if( SQLITE_OK==rc && !pTab ){ 1315 sqlite3SetString(&zErrMsg, "no such table column: ", zTableName, ".", 1316 zColumnName, 0); 1317 rc = SQLITE_ERROR; 1318 } 1319 sqlite3Error(db, rc, (zErrMsg?"%s":0), zErrMsg); 1320 sqliteFree(zErrMsg); 1321 return sqlite3ApiExit(db, rc); 1322 } 1323 #endif 1324 1325 /* 1326 ** Set all the parameters in the compiled SQL statement to NULL. 1327 */ 1328 int sqlite3_clear_bindings(sqlite3_stmt *pStmt){ 1329 int i; 1330 int rc = SQLITE_OK; 1331 for(i=1; rc==SQLITE_OK && i<=sqlite3_bind_parameter_count(pStmt); i++){ 1332 rc = sqlite3_bind_null(pStmt, i); 1333 } 1334 return rc; 1335 } 1336 1337 /* 1338 ** Sleep for a little while. Return the amount of time slept. 1339 */ 1340 int sqlite3_sleep(int ms){ 1341 return sqlite3OsSleep(ms); 1342 } 1343 1344 /* 1345 ** Enable or disable the extended result codes. 1346 */ 1347 int sqlite3_extended_result_codes(sqlite3 *db, int onoff){ 1348 db->errMask = onoff ? 0xffffffff : 0xff; 1349 return SQLITE_OK; 1350 } 1351