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.500 2008/09/08 08:08:09 danielk1977 Exp $ 18 */ 19 #include "sqliteInt.h" 20 #include <ctype.h> 21 22 #ifdef SQLITE_ENABLE_FTS3 23 # include "fts3.h" 24 #endif 25 #ifdef SQLITE_ENABLE_RTREE 26 # include "rtree.h" 27 #endif 28 #ifdef SQLITE_ENABLE_ICU 29 # include "sqliteicu.h" 30 #endif 31 32 /* 33 ** The version of the library 34 */ 35 const char sqlite3_version[] = SQLITE_VERSION; 36 const char *sqlite3_libversion(void){ return sqlite3_version; } 37 int sqlite3_libversion_number(void){ return SQLITE_VERSION_NUMBER; } 38 int sqlite3_threadsafe(void){ return SQLITE_THREADSAFE; } 39 40 #if !defined(SQLITE_OMIT_TRACE) && defined(SQLITE_ENABLE_IOTRACE) 41 /* 42 ** If the following function pointer is not NULL and if 43 ** SQLITE_ENABLE_IOTRACE is enabled, then messages describing 44 ** I/O active are written using this function. These messages 45 ** are intended for debugging activity only. 46 */ 47 void (*sqlite3IoTrace)(const char*, ...) = 0; 48 #endif 49 50 /* 51 ** If the following global variable points to a string which is the 52 ** name of a directory, then that directory will be used to store 53 ** temporary files. 54 ** 55 ** See also the "PRAGMA temp_store_directory" SQL command. 56 */ 57 char *sqlite3_temp_directory = 0; 58 59 /* 60 ** Initialize SQLite. 61 ** 62 ** This routine must be called to initialize the memory allocation, 63 ** VFS, and mutex subsystems prior to doing any serious work with 64 ** SQLite. But as long as you do not compile with SQLITE_OMIT_AUTOINIT 65 ** this routine will be called automatically by key routines such as 66 ** sqlite3_open(). 67 ** 68 ** This routine is a no-op except on its very first call for the process, 69 ** or for the first call after a call to sqlite3_shutdown. 70 ** 71 ** The first thread to call this routine runs the initialization to 72 ** completion. If subsequent threads call this routine before the first 73 ** thread has finished the initialization process, then the subsequent 74 ** threads must block until the first thread finishes with the initialization. 75 ** 76 ** The first thread might call this routine recursively. Recursive 77 ** calls to this routine should not block, of course. Otherwise the 78 ** initialization process would never complete. 79 ** 80 ** Let X be the first thread to enter this routine. Let Y be some other 81 ** thread. Then while the initial invocation of this routine by X is 82 ** incomplete, it is required that: 83 ** 84 ** * Calls to this routine from Y must block until the outer-most 85 ** call by X completes. 86 ** 87 ** * Recursive calls to this routine from thread X return immediately 88 ** without blocking. 89 */ 90 int sqlite3_initialize(void){ 91 sqlite3_mutex *pMaster; /* The main static mutex */ 92 int rc; /* Result code */ 93 94 #ifdef SQLITE_OMIT_WSD 95 rc = sqlite3_wsd_init(4096, 24); 96 if( rc!=SQLITE_OK ){ 97 return rc; 98 } 99 #endif 100 101 /* If SQLite is already completely initialized, then this call 102 ** to sqlite3_initialize() should be a no-op. But the initialization 103 ** must be complete. So isInit must not be set until the very end 104 ** of this routine. 105 */ 106 if( sqlite3GlobalConfig.isInit ) return SQLITE_OK; 107 108 /* Make sure the mutex subsystem is initialized. If unable to 109 ** initialize the mutex subsystem, return early with the error. 110 ** If the system is so sick that we are unable to allocate a mutex, 111 ** there is not much SQLite is going to be able to do. 112 ** 113 ** The mutex subsystem must take care of serializing its own 114 ** initialization. 115 */ 116 rc = sqlite3MutexInit(); 117 if( rc ) return rc; 118 119 /* Initialize the malloc() system and the recursive pInitMutex mutex. 120 ** This operation is protected by the STATIC_MASTER mutex. Note that 121 ** MutexAlloc() is called for a static mutex prior to initializing the 122 ** malloc subsystem - this implies that the allocation of a static 123 ** mutex must not require support from the malloc subsystem. 124 */ 125 pMaster = sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_MASTER); 126 sqlite3_mutex_enter(pMaster); 127 if( !sqlite3GlobalConfig.isMallocInit ){ 128 rc = sqlite3MallocInit(); 129 } 130 if( rc==SQLITE_OK ){ 131 sqlite3GlobalConfig.isMallocInit = 1; 132 if( !sqlite3GlobalConfig.pInitMutex ){ 133 sqlite3GlobalConfig.pInitMutex = sqlite3MutexAlloc(SQLITE_MUTEX_RECURSIVE); 134 if( sqlite3GlobalConfig.bCoreMutex && !sqlite3GlobalConfig.pInitMutex ){ 135 rc = SQLITE_NOMEM; 136 } 137 } 138 sqlite3GlobalConfig.nRefInitMutex++; 139 } 140 sqlite3_mutex_leave(pMaster); 141 142 /* If unable to initialize the malloc subsystem, then return early. 143 ** There is little hope of getting SQLite to run if the malloc 144 ** subsystem cannot be initialized. 145 */ 146 if( rc!=SQLITE_OK ){ 147 return rc; 148 } 149 150 /* Do the rest of the initialization under the recursive mutex so 151 ** that we will be able to handle recursive calls into 152 ** sqlite3_initialize(). The recursive calls normally come through 153 ** sqlite3_os_init() when it invokes sqlite3_vfs_register(), but other 154 ** recursive calls might also be possible. 155 */ 156 sqlite3_mutex_enter(sqlite3GlobalConfig.pInitMutex); 157 if( sqlite3GlobalConfig.isInit==0 && sqlite3GlobalConfig.inProgress==0 ){ 158 FuncDefHash *pHash = &GLOBAL(FuncDefHash, sqlite3GlobalFunctions); 159 sqlite3GlobalConfig.inProgress = 1; 160 memset(pHash, 0, sizeof(sqlite3GlobalFunctions)); 161 sqlite3RegisterGlobalFunctions(); 162 rc = sqlite3_os_init(); 163 if( rc==SQLITE_OK ){ 164 rc = sqlite3PcacheInitialize(); 165 sqlite3PCacheBufferSetup( sqlite3GlobalConfig.pPage, 166 sqlite3GlobalConfig.szPage, sqlite3GlobalConfig.nPage); 167 } 168 sqlite3GlobalConfig.inProgress = 0; 169 sqlite3GlobalConfig.isInit = (rc==SQLITE_OK ? 1 : 0); 170 } 171 sqlite3_mutex_leave(sqlite3GlobalConfig.pInitMutex); 172 173 /* Go back under the static mutex and clean up the recursive 174 ** mutex to prevent a resource leak. 175 */ 176 sqlite3_mutex_enter(pMaster); 177 sqlite3GlobalConfig.nRefInitMutex--; 178 if( sqlite3GlobalConfig.nRefInitMutex<=0 ){ 179 assert( sqlite3GlobalConfig.nRefInitMutex==0 ); 180 sqlite3_mutex_free(sqlite3GlobalConfig.pInitMutex); 181 sqlite3GlobalConfig.pInitMutex = 0; 182 } 183 sqlite3_mutex_leave(pMaster); 184 185 /* The following is just a sanity check to make sure SQLite has 186 ** been compiled correctly. It is important to run this code, but 187 ** we don't want to run it too often and soak up CPU cycles for no 188 ** reason. So we run it once during initialization. 189 */ 190 #ifndef NDEBUG 191 /* This section of code's only "output" is via assert() statements. */ 192 if ( rc==SQLITE_OK ){ 193 u64 x = (((u64)1)<<63)-1; 194 double y; 195 assert(sizeof(x)==8); 196 assert(sizeof(x)==sizeof(y)); 197 memcpy(&y, &x, 8); 198 assert( sqlite3IsNaN(y) ); 199 } 200 #endif 201 202 return rc; 203 } 204 205 /* 206 ** Undo the effects of sqlite3_initialize(). Must not be called while 207 ** there are outstanding database connections or memory allocations or 208 ** while any part of SQLite is otherwise in use in any thread. This 209 ** routine is not threadsafe. Not by a long shot. 210 */ 211 int sqlite3_shutdown(void){ 212 sqlite3GlobalConfig.isMallocInit = 0; 213 sqlite3PcacheShutdown(); 214 if( sqlite3GlobalConfig.isInit ){ 215 sqlite3_os_end(); 216 } 217 if( sqlite3GlobalConfig.m.xShutdown ){ 218 sqlite3MallocEnd(); 219 } 220 if( sqlite3GlobalConfig.mutex.xMutexEnd ){ 221 sqlite3MutexEnd(); 222 } 223 sqlite3GlobalConfig.isInit = 0; 224 return SQLITE_OK; 225 } 226 227 /* 228 ** This API allows applications to modify the global configuration of 229 ** the SQLite library at run-time. 230 ** 231 ** This routine should only be called when there are no outstanding 232 ** database connections or memory allocations. This routine is not 233 ** threadsafe. Failure to heed these warnings can lead to unpredictable 234 ** behavior. 235 */ 236 int sqlite3_config(int op, ...){ 237 va_list ap; 238 int rc = SQLITE_OK; 239 240 /* sqlite3_config() shall return SQLITE_MISUSE if it is invoked while 241 ** the SQLite library is in use. */ 242 if( sqlite3GlobalConfig.isInit ) return SQLITE_MISUSE; 243 244 va_start(ap, op); 245 switch( op ){ 246 case SQLITE_CONFIG_SINGLETHREAD: { 247 /* Disable all mutexing */ 248 sqlite3GlobalConfig.bCoreMutex = 0; 249 sqlite3GlobalConfig.bFullMutex = 0; 250 break; 251 } 252 case SQLITE_CONFIG_MULTITHREAD: { 253 /* Disable mutexing of database connections */ 254 /* Enable mutexing of core data structures */ 255 sqlite3GlobalConfig.bCoreMutex = 1; 256 sqlite3GlobalConfig.bFullMutex = 0; 257 break; 258 } 259 case SQLITE_CONFIG_SERIALIZED: { 260 /* Enable all mutexing */ 261 sqlite3GlobalConfig.bCoreMutex = 1; 262 sqlite3GlobalConfig.bFullMutex = 1; 263 break; 264 } 265 case SQLITE_CONFIG_MALLOC: { 266 /* Specify an alternative malloc implementation */ 267 sqlite3GlobalConfig.m = *va_arg(ap, sqlite3_mem_methods*); 268 break; 269 } 270 case SQLITE_CONFIG_GETMALLOC: { 271 /* Retrieve the current malloc() implementation */ 272 if( sqlite3GlobalConfig.m.xMalloc==0 ) sqlite3MemSetDefault(); 273 *va_arg(ap, sqlite3_mem_methods*) = sqlite3GlobalConfig.m; 274 break; 275 } 276 case SQLITE_CONFIG_MUTEX: { 277 /* Specify an alternative mutex implementation */ 278 sqlite3GlobalConfig.mutex = *va_arg(ap, sqlite3_mutex_methods*); 279 break; 280 } 281 case SQLITE_CONFIG_GETMUTEX: { 282 /* Retrieve the current mutex implementation */ 283 *va_arg(ap, sqlite3_mutex_methods*) = sqlite3GlobalConfig.mutex; 284 break; 285 } 286 case SQLITE_CONFIG_MEMSTATUS: { 287 /* Enable or disable the malloc status collection */ 288 sqlite3GlobalConfig.bMemstat = va_arg(ap, int); 289 break; 290 } 291 case SQLITE_CONFIG_SCRATCH: { 292 /* Designate a buffer for scratch memory space */ 293 sqlite3GlobalConfig.pScratch = va_arg(ap, void*); 294 sqlite3GlobalConfig.szScratch = va_arg(ap, int); 295 sqlite3GlobalConfig.nScratch = va_arg(ap, int); 296 break; 297 } 298 case SQLITE_CONFIG_PAGECACHE: { 299 /* Designate a buffer for scratch memory space */ 300 sqlite3GlobalConfig.pPage = va_arg(ap, void*); 301 sqlite3GlobalConfig.szPage = va_arg(ap, int); 302 sqlite3GlobalConfig.nPage = va_arg(ap, int); 303 break; 304 } 305 306 #if defined(SQLITE_ENABLE_MEMSYS3) || defined(SQLITE_ENABLE_MEMSYS5) 307 case SQLITE_CONFIG_HEAP: { 308 /* Designate a buffer for heap memory space */ 309 sqlite3GlobalConfig.pHeap = va_arg(ap, void*); 310 sqlite3GlobalConfig.nHeap = va_arg(ap, int); 311 sqlite3GlobalConfig.mnReq = va_arg(ap, int); 312 313 if( sqlite3GlobalConfig.pHeap==0 ){ 314 /* If the heap pointer is NULL, then restore the malloc implementation 315 ** back to NULL pointers too. This will cause the malloc to go 316 ** back to its default implementation when sqlite3_initialize() is 317 ** run. 318 */ 319 memset(&sqlite3GlobalConfig.m, 0, sizeof(sqlite3GlobalConfig.m)); 320 }else{ 321 /* The heap pointer is not NULL, then install one of the 322 ** mem5.c/mem3.c methods. If neither ENABLE_MEMSYS3 nor 323 ** ENABLE_MEMSYS5 is defined, return an error. 324 ** the default case and return an error. 325 */ 326 #ifdef SQLITE_ENABLE_MEMSYS3 327 sqlite3GlobalConfig.m = *sqlite3MemGetMemsys3(); 328 #endif 329 #ifdef SQLITE_ENABLE_MEMSYS5 330 sqlite3GlobalConfig.m = *sqlite3MemGetMemsys5(); 331 #endif 332 } 333 break; 334 } 335 #endif 336 337 #if defined(SQLITE_ENABLE_MEMSYS6) 338 case SQLITE_CONFIG_CHUNKALLOC: { 339 sqlite3GlobalConfig.nSmall = va_arg(ap, int); 340 sqlite3GlobalConfig.m = *sqlite3MemGetMemsys6(); 341 break; 342 } 343 #endif 344 345 case SQLITE_CONFIG_LOOKASIDE: { 346 sqlite3GlobalConfig.szLookaside = va_arg(ap, int); 347 sqlite3GlobalConfig.nLookaside = va_arg(ap, int); 348 break; 349 } 350 351 default: { 352 rc = SQLITE_ERROR; 353 break; 354 } 355 } 356 va_end(ap); 357 return rc; 358 } 359 360 /* 361 ** Set up the lookaside buffers for a database connection. 362 ** Return SQLITE_OK on success. 363 ** If lookaside is already active, return SQLITE_BUSY. 364 ** 365 ** The sz parameter is the number of bytes in each lookaside slot. 366 ** The cnt parameter is the number of slots. If pStart is NULL the 367 ** space for the lookaside memory is obtained from sqlite3_malloc(). 368 ** If pStart is not NULL then it is sz*cnt bytes of memory to use for 369 ** the lookaside memory. 370 */ 371 static int setupLookaside(sqlite3 *db, void *pBuf, int sz, int cnt){ 372 void *pStart; 373 if( db->lookaside.nOut ){ 374 return SQLITE_BUSY; 375 } 376 if( sz<0 ) sz = 0; 377 if( cnt<0 ) cnt = 0; 378 if( pBuf==0 ){ 379 sz = (sz + 7)&~7; 380 sqlite3BeginBenignMalloc(); 381 pStart = sqlite3Malloc( sz*cnt ); 382 sqlite3EndBenignMalloc(); 383 }else{ 384 sz = sz&~7; 385 pStart = pBuf; 386 } 387 if( db->lookaside.bMalloced ){ 388 sqlite3_free(db->lookaside.pStart); 389 } 390 db->lookaside.pStart = pStart; 391 db->lookaside.pFree = 0; 392 db->lookaside.sz = sz; 393 db->lookaside.bMalloced = pBuf==0; 394 if( pStart ){ 395 int i; 396 LookasideSlot *p; 397 p = (LookasideSlot*)pStart; 398 for(i=cnt-1; i>=0; i--){ 399 p->pNext = db->lookaside.pFree; 400 db->lookaside.pFree = p; 401 p = (LookasideSlot*)&((u8*)p)[sz]; 402 } 403 db->lookaside.pEnd = p; 404 db->lookaside.bEnabled = 1; 405 }else{ 406 db->lookaside.pEnd = 0; 407 db->lookaside.bEnabled = 0; 408 } 409 return SQLITE_OK; 410 } 411 412 /* 413 ** Configuration settings for an individual database connection 414 */ 415 int sqlite3_db_config(sqlite3 *db, int op, ...){ 416 va_list ap; 417 int rc; 418 va_start(ap, op); 419 switch( op ){ 420 case SQLITE_DBCONFIG_LOOKASIDE: { 421 void *pBuf = va_arg(ap, void*); 422 int sz = va_arg(ap, int); 423 int cnt = va_arg(ap, int); 424 rc = setupLookaside(db, pBuf, sz, cnt); 425 break; 426 } 427 default: { 428 rc = SQLITE_ERROR; 429 break; 430 } 431 } 432 va_end(ap); 433 return rc; 434 } 435 436 /* 437 ** Routine needed to support the testcase() macro. 438 */ 439 #ifdef SQLITE_COVERAGE_TEST 440 void sqlite3Coverage(int x){ 441 static int dummy = 0; 442 dummy += x; 443 } 444 #endif 445 446 447 /* 448 ** Return true if the buffer z[0..n-1] contains all spaces. 449 */ 450 static int allSpaces(const char *z, int n){ 451 while( n>0 && z[n-1]==' ' ){ n--; } 452 return n==0; 453 } 454 455 /* 456 ** This is the default collating function named "BINARY" which is always 457 ** available. 458 ** 459 ** If the padFlag argument is not NULL then space padding at the end 460 ** of strings is ignored. This implements the RTRIM collation. 461 */ 462 static int binCollFunc( 463 void *padFlag, 464 int nKey1, const void *pKey1, 465 int nKey2, const void *pKey2 466 ){ 467 int rc, n; 468 n = nKey1<nKey2 ? nKey1 : nKey2; 469 rc = memcmp(pKey1, pKey2, n); 470 if( rc==0 ){ 471 if( padFlag 472 && allSpaces(((char*)pKey1)+n, nKey1-n) 473 && allSpaces(((char*)pKey2)+n, nKey2-n) 474 ){ 475 /* Leave rc unchanged at 0 */ 476 }else{ 477 rc = nKey1 - nKey2; 478 } 479 } 480 return rc; 481 } 482 483 /* 484 ** Another built-in collating sequence: NOCASE. 485 ** 486 ** This collating sequence is intended to be used for "case independant 487 ** comparison". SQLite's knowledge of upper and lower case equivalents 488 ** extends only to the 26 characters used in the English language. 489 ** 490 ** At the moment there is only a UTF-8 implementation. 491 */ 492 static int nocaseCollatingFunc( 493 void *NotUsed, 494 int nKey1, const void *pKey1, 495 int nKey2, const void *pKey2 496 ){ 497 int r = sqlite3StrNICmp( 498 (const char *)pKey1, (const char *)pKey2, (nKey1<nKey2)?nKey1:nKey2); 499 if( 0==r ){ 500 r = nKey1-nKey2; 501 } 502 return r; 503 } 504 505 /* 506 ** Return the ROWID of the most recent insert 507 */ 508 sqlite_int64 sqlite3_last_insert_rowid(sqlite3 *db){ 509 return db->lastRowid; 510 } 511 512 /* 513 ** Return the number of changes in the most recent call to sqlite3_exec(). 514 */ 515 int sqlite3_changes(sqlite3 *db){ 516 return db->nChange; 517 } 518 519 /* 520 ** Return the number of changes since the database handle was opened. 521 */ 522 int sqlite3_total_changes(sqlite3 *db){ 523 return db->nTotalChange; 524 } 525 526 /* 527 ** Close an existing SQLite database 528 */ 529 int sqlite3_close(sqlite3 *db){ 530 HashElem *i; 531 int j; 532 533 if( !db ){ 534 return SQLITE_OK; 535 } 536 if( !sqlite3SafetyCheckSickOrOk(db) ){ 537 return SQLITE_MISUSE; 538 } 539 sqlite3_mutex_enter(db->mutex); 540 541 #ifdef SQLITE_SSE 542 { 543 extern void sqlite3SseCleanup(sqlite3*); 544 sqlite3SseCleanup(db); 545 } 546 #endif 547 548 sqlite3ResetInternalSchema(db, 0); 549 550 /* If a transaction is open, the ResetInternalSchema() call above 551 ** will not have called the xDisconnect() method on any virtual 552 ** tables in the db->aVTrans[] array. The following sqlite3VtabRollback() 553 ** call will do so. We need to do this before the check for active 554 ** SQL statements below, as the v-table implementation may be storing 555 ** some prepared statements internally. 556 */ 557 sqlite3VtabRollback(db); 558 559 /* If there are any outstanding VMs, return SQLITE_BUSY. */ 560 if( db->pVdbe ){ 561 sqlite3Error(db, SQLITE_BUSY, 562 "Unable to close due to unfinalised statements"); 563 sqlite3_mutex_leave(db->mutex); 564 return SQLITE_BUSY; 565 } 566 assert( sqlite3SafetyCheckSickOrOk(db) ); 567 568 for(j=0; j<db->nDb; j++){ 569 struct Db *pDb = &db->aDb[j]; 570 if( pDb->pBt ){ 571 sqlite3BtreeClose(pDb->pBt); 572 pDb->pBt = 0; 573 if( j!=1 ){ 574 pDb->pSchema = 0; 575 } 576 } 577 } 578 sqlite3ResetInternalSchema(db, 0); 579 assert( db->nDb<=2 ); 580 assert( db->aDb==db->aDbStatic ); 581 for(j=0; j<ArraySize(db->aFunc.a); j++){ 582 FuncDef *pNext, *pHash, *p; 583 for(p=db->aFunc.a[j]; p; p=pHash){ 584 pHash = p->pHash; 585 while( p ){ 586 pNext = p->pNext; 587 sqlite3DbFree(db, p); 588 p = pNext; 589 } 590 } 591 } 592 for(i=sqliteHashFirst(&db->aCollSeq); i; i=sqliteHashNext(i)){ 593 CollSeq *pColl = (CollSeq *)sqliteHashData(i); 594 /* Invoke any destructors registered for collation sequence user data. */ 595 for(j=0; j<3; j++){ 596 if( pColl[j].xDel ){ 597 pColl[j].xDel(pColl[j].pUser); 598 } 599 } 600 sqlite3DbFree(db, pColl); 601 } 602 sqlite3HashClear(&db->aCollSeq); 603 #ifndef SQLITE_OMIT_VIRTUALTABLE 604 for(i=sqliteHashFirst(&db->aModule); i; i=sqliteHashNext(i)){ 605 Module *pMod = (Module *)sqliteHashData(i); 606 if( pMod->xDestroy ){ 607 pMod->xDestroy(pMod->pAux); 608 } 609 sqlite3DbFree(db, pMod); 610 } 611 sqlite3HashClear(&db->aModule); 612 #endif 613 614 sqlite3Error(db, SQLITE_OK, 0); /* Deallocates any cached error strings. */ 615 if( db->pErr ){ 616 sqlite3ValueFree(db->pErr); 617 } 618 sqlite3CloseExtensions(db); 619 620 db->magic = SQLITE_MAGIC_ERROR; 621 622 /* The temp-database schema is allocated differently from the other schema 623 ** objects (using sqliteMalloc() directly, instead of sqlite3BtreeSchema()). 624 ** So it needs to be freed here. Todo: Why not roll the temp schema into 625 ** the same sqliteMalloc() as the one that allocates the database 626 ** structure? 627 */ 628 sqlite3DbFree(db, db->aDb[1].pSchema); 629 sqlite3_mutex_leave(db->mutex); 630 db->magic = SQLITE_MAGIC_CLOSED; 631 sqlite3_mutex_free(db->mutex); 632 if( db->lookaside.bMalloced ){ 633 sqlite3_free(db->lookaside.pStart); 634 } 635 sqlite3_free(db); 636 return SQLITE_OK; 637 } 638 639 /* 640 ** Rollback all database files. 641 */ 642 void sqlite3RollbackAll(sqlite3 *db){ 643 int i; 644 int inTrans = 0; 645 assert( sqlite3_mutex_held(db->mutex) ); 646 sqlite3BeginBenignMalloc(); 647 for(i=0; i<db->nDb; i++){ 648 if( db->aDb[i].pBt ){ 649 if( sqlite3BtreeIsInTrans(db->aDb[i].pBt) ){ 650 inTrans = 1; 651 } 652 sqlite3BtreeRollback(db->aDb[i].pBt); 653 db->aDb[i].inTrans = 0; 654 } 655 } 656 sqlite3VtabRollback(db); 657 sqlite3EndBenignMalloc(); 658 659 if( db->flags&SQLITE_InternChanges ){ 660 sqlite3ExpirePreparedStatements(db); 661 sqlite3ResetInternalSchema(db, 0); 662 } 663 664 /* If one has been configured, invoke the rollback-hook callback */ 665 if( db->xRollbackCallback && (inTrans || !db->autoCommit) ){ 666 db->xRollbackCallback(db->pRollbackArg); 667 } 668 } 669 670 /* 671 ** Return a static string that describes the kind of error specified in the 672 ** argument. 673 */ 674 const char *sqlite3ErrStr(int rc){ 675 const char *z; 676 switch( rc & 0xff ){ 677 case SQLITE_ROW: 678 case SQLITE_DONE: 679 case SQLITE_OK: z = "not an error"; break; 680 case SQLITE_ERROR: z = "SQL logic error or missing database"; break; 681 case SQLITE_PERM: z = "access permission denied"; break; 682 case SQLITE_ABORT: z = "callback requested query abort"; break; 683 case SQLITE_BUSY: z = "database is locked"; break; 684 case SQLITE_LOCKED: z = "database table is locked"; break; 685 case SQLITE_NOMEM: z = "out of memory"; break; 686 case SQLITE_READONLY: z = "attempt to write a readonly database"; break; 687 case SQLITE_INTERRUPT: z = "interrupted"; break; 688 case SQLITE_IOERR: z = "disk I/O error"; break; 689 case SQLITE_CORRUPT: z = "database disk image is malformed"; break; 690 case SQLITE_FULL: z = "database or disk is full"; break; 691 case SQLITE_CANTOPEN: z = "unable to open database file"; break; 692 case SQLITE_EMPTY: z = "table contains no data"; break; 693 case SQLITE_SCHEMA: z = "database schema has changed"; break; 694 case SQLITE_TOOBIG: z = "String or BLOB exceeded size limit"; break; 695 case SQLITE_CONSTRAINT: z = "constraint failed"; break; 696 case SQLITE_MISMATCH: z = "datatype mismatch"; break; 697 case SQLITE_MISUSE: z = "library routine called out of sequence";break; 698 case SQLITE_NOLFS: z = "large file support is disabled"; break; 699 case SQLITE_AUTH: z = "authorization denied"; break; 700 case SQLITE_FORMAT: z = "auxiliary database format error"; break; 701 case SQLITE_RANGE: z = "bind or column index out of range"; break; 702 case SQLITE_NOTADB: z = "file is encrypted or is not a database";break; 703 default: z = "unknown error"; break; 704 } 705 return z; 706 } 707 708 /* 709 ** This routine implements a busy callback that sleeps and tries 710 ** again until a timeout value is reached. The timeout value is 711 ** an integer number of milliseconds passed in as the first 712 ** argument. 713 */ 714 static int sqliteDefaultBusyCallback( 715 void *ptr, /* Database connection */ 716 int count /* Number of times table has been busy */ 717 ){ 718 #if SQLITE_OS_WIN || (defined(HAVE_USLEEP) && HAVE_USLEEP) 719 static const u8 delays[] = 720 { 1, 2, 5, 10, 15, 20, 25, 25, 25, 50, 50, 100 }; 721 static const u8 totals[] = 722 { 0, 1, 3, 8, 18, 33, 53, 78, 103, 128, 178, 228 }; 723 # define NDELAY (sizeof(delays)/sizeof(delays[0])) 724 sqlite3 *db = (sqlite3 *)ptr; 725 int timeout = db->busyTimeout; 726 int delay, prior; 727 728 assert( count>=0 ); 729 if( count < NDELAY ){ 730 delay = delays[count]; 731 prior = totals[count]; 732 }else{ 733 delay = delays[NDELAY-1]; 734 prior = totals[NDELAY-1] + delay*(count-(NDELAY-1)); 735 } 736 if( prior + delay > timeout ){ 737 delay = timeout - prior; 738 if( delay<=0 ) return 0; 739 } 740 sqlite3OsSleep(db->pVfs, delay*1000); 741 return 1; 742 #else 743 sqlite3 *db = (sqlite3 *)ptr; 744 int timeout = ((sqlite3 *)ptr)->busyTimeout; 745 if( (count+1)*1000 > timeout ){ 746 return 0; 747 } 748 sqlite3OsSleep(db->pVfs, 1000000); 749 return 1; 750 #endif 751 } 752 753 /* 754 ** Invoke the given busy handler. 755 ** 756 ** This routine is called when an operation failed with a lock. 757 ** If this routine returns non-zero, the lock is retried. If it 758 ** returns 0, the operation aborts with an SQLITE_BUSY error. 759 */ 760 int sqlite3InvokeBusyHandler(BusyHandler *p){ 761 int rc; 762 if( NEVER(p==0) || p->xFunc==0 || p->nBusy<0 ) return 0; 763 rc = p->xFunc(p->pArg, p->nBusy); 764 if( rc==0 ){ 765 p->nBusy = -1; 766 }else{ 767 p->nBusy++; 768 } 769 return rc; 770 } 771 772 /* 773 ** This routine sets the busy callback for an Sqlite database to the 774 ** given callback function with the given argument. 775 */ 776 int sqlite3_busy_handler( 777 sqlite3 *db, 778 int (*xBusy)(void*,int), 779 void *pArg 780 ){ 781 sqlite3_mutex_enter(db->mutex); 782 db->busyHandler.xFunc = xBusy; 783 db->busyHandler.pArg = pArg; 784 db->busyHandler.nBusy = 0; 785 sqlite3_mutex_leave(db->mutex); 786 return SQLITE_OK; 787 } 788 789 #ifndef SQLITE_OMIT_PROGRESS_CALLBACK 790 /* 791 ** This routine sets the progress callback for an Sqlite database to the 792 ** given callback function with the given argument. The progress callback will 793 ** be invoked every nOps opcodes. 794 */ 795 void sqlite3_progress_handler( 796 sqlite3 *db, 797 int nOps, 798 int (*xProgress)(void*), 799 void *pArg 800 ){ 801 sqlite3_mutex_enter(db->mutex); 802 if( nOps>0 ){ 803 db->xProgress = xProgress; 804 db->nProgressOps = nOps; 805 db->pProgressArg = pArg; 806 }else{ 807 db->xProgress = 0; 808 db->nProgressOps = 0; 809 db->pProgressArg = 0; 810 } 811 sqlite3_mutex_leave(db->mutex); 812 } 813 #endif 814 815 816 /* 817 ** This routine installs a default busy handler that waits for the 818 ** specified number of milliseconds before returning 0. 819 */ 820 int sqlite3_busy_timeout(sqlite3 *db, int ms){ 821 if( ms>0 ){ 822 db->busyTimeout = ms; 823 sqlite3_busy_handler(db, sqliteDefaultBusyCallback, (void*)db); 824 }else{ 825 sqlite3_busy_handler(db, 0, 0); 826 } 827 return SQLITE_OK; 828 } 829 830 /* 831 ** Cause any pending operation to stop at its earliest opportunity. 832 */ 833 void sqlite3_interrupt(sqlite3 *db){ 834 db->u1.isInterrupted = 1; 835 } 836 837 838 /* 839 ** This function is exactly the same as sqlite3_create_function(), except 840 ** that it is designed to be called by internal code. The difference is 841 ** that if a malloc() fails in sqlite3_create_function(), an error code 842 ** is returned and the mallocFailed flag cleared. 843 */ 844 int sqlite3CreateFunc( 845 sqlite3 *db, 846 const char *zFunctionName, 847 int nArg, 848 int enc, 849 void *pUserData, 850 void (*xFunc)(sqlite3_context*,int,sqlite3_value **), 851 void (*xStep)(sqlite3_context*,int,sqlite3_value **), 852 void (*xFinal)(sqlite3_context*) 853 ){ 854 FuncDef *p; 855 int nName; 856 857 assert( sqlite3_mutex_held(db->mutex) ); 858 if( zFunctionName==0 || 859 (xFunc && (xFinal || xStep)) || 860 (!xFunc && (xFinal && !xStep)) || 861 (!xFunc && (!xFinal && xStep)) || 862 (nArg<-1 || nArg>SQLITE_MAX_FUNCTION_ARG) || 863 (255<(nName = sqlite3Strlen(db, zFunctionName))) ){ 864 sqlite3Error(db, SQLITE_ERROR, "bad parameters"); 865 return SQLITE_ERROR; 866 } 867 868 #ifndef SQLITE_OMIT_UTF16 869 /* If SQLITE_UTF16 is specified as the encoding type, transform this 870 ** to one of SQLITE_UTF16LE or SQLITE_UTF16BE using the 871 ** SQLITE_UTF16NATIVE macro. SQLITE_UTF16 is not used internally. 872 ** 873 ** If SQLITE_ANY is specified, add three versions of the function 874 ** to the hash table. 875 */ 876 if( enc==SQLITE_UTF16 ){ 877 enc = SQLITE_UTF16NATIVE; 878 }else if( enc==SQLITE_ANY ){ 879 int rc; 880 rc = sqlite3CreateFunc(db, zFunctionName, nArg, SQLITE_UTF8, 881 pUserData, xFunc, xStep, xFinal); 882 if( rc==SQLITE_OK ){ 883 rc = sqlite3CreateFunc(db, zFunctionName, nArg, SQLITE_UTF16LE, 884 pUserData, xFunc, xStep, xFinal); 885 } 886 if( rc!=SQLITE_OK ){ 887 return rc; 888 } 889 enc = SQLITE_UTF16BE; 890 } 891 #else 892 enc = SQLITE_UTF8; 893 #endif 894 895 /* Check if an existing function is being overridden or deleted. If so, 896 ** and there are active VMs, then return SQLITE_BUSY. If a function 897 ** is being overridden/deleted but there are no active VMs, allow the 898 ** operation to continue but invalidate all precompiled statements. 899 */ 900 p = sqlite3FindFunction(db, zFunctionName, nName, nArg, enc, 0); 901 if( p && p->iPrefEnc==enc && p->nArg==nArg ){ 902 if( db->activeVdbeCnt ){ 903 sqlite3Error(db, SQLITE_BUSY, 904 "Unable to delete/modify user-function due to active statements"); 905 assert( !db->mallocFailed ); 906 return SQLITE_BUSY; 907 }else{ 908 sqlite3ExpirePreparedStatements(db); 909 } 910 } 911 912 p = sqlite3FindFunction(db, zFunctionName, nName, nArg, enc, 1); 913 assert(p || db->mallocFailed); 914 if( !p ){ 915 return SQLITE_NOMEM; 916 } 917 p->flags = 0; 918 p->xFunc = xFunc; 919 p->xStep = xStep; 920 p->xFinalize = xFinal; 921 p->pUserData = pUserData; 922 p->nArg = nArg; 923 return SQLITE_OK; 924 } 925 926 /* 927 ** Create new user functions. 928 */ 929 int sqlite3_create_function( 930 sqlite3 *db, 931 const char *zFunctionName, 932 int nArg, 933 int enc, 934 void *p, 935 void (*xFunc)(sqlite3_context*,int,sqlite3_value **), 936 void (*xStep)(sqlite3_context*,int,sqlite3_value **), 937 void (*xFinal)(sqlite3_context*) 938 ){ 939 int rc; 940 sqlite3_mutex_enter(db->mutex); 941 rc = sqlite3CreateFunc(db, zFunctionName, nArg, enc, p, xFunc, xStep, xFinal); 942 rc = sqlite3ApiExit(db, rc); 943 sqlite3_mutex_leave(db->mutex); 944 return rc; 945 } 946 947 #ifndef SQLITE_OMIT_UTF16 948 int sqlite3_create_function16( 949 sqlite3 *db, 950 const void *zFunctionName, 951 int nArg, 952 int eTextRep, 953 void *p, 954 void (*xFunc)(sqlite3_context*,int,sqlite3_value**), 955 void (*xStep)(sqlite3_context*,int,sqlite3_value**), 956 void (*xFinal)(sqlite3_context*) 957 ){ 958 int rc; 959 char *zFunc8; 960 sqlite3_mutex_enter(db->mutex); 961 assert( !db->mallocFailed ); 962 zFunc8 = sqlite3Utf16to8(db, zFunctionName, -1); 963 rc = sqlite3CreateFunc(db, zFunc8, nArg, eTextRep, p, xFunc, xStep, xFinal); 964 sqlite3DbFree(db, zFunc8); 965 rc = sqlite3ApiExit(db, rc); 966 sqlite3_mutex_leave(db->mutex); 967 return rc; 968 } 969 #endif 970 971 972 /* 973 ** Declare that a function has been overloaded by a virtual table. 974 ** 975 ** If the function already exists as a regular global function, then 976 ** this routine is a no-op. If the function does not exist, then create 977 ** a new one that always throws a run-time error. 978 ** 979 ** When virtual tables intend to provide an overloaded function, they 980 ** should call this routine to make sure the global function exists. 981 ** A global function must exist in order for name resolution to work 982 ** properly. 983 */ 984 int sqlite3_overload_function( 985 sqlite3 *db, 986 const char *zName, 987 int nArg 988 ){ 989 int nName = sqlite3Strlen(db, zName); 990 int rc; 991 sqlite3_mutex_enter(db->mutex); 992 if( sqlite3FindFunction(db, zName, nName, nArg, SQLITE_UTF8, 0)==0 ){ 993 sqlite3CreateFunc(db, zName, nArg, SQLITE_UTF8, 994 0, sqlite3InvalidFunction, 0, 0); 995 } 996 rc = sqlite3ApiExit(db, SQLITE_OK); 997 sqlite3_mutex_leave(db->mutex); 998 return rc; 999 } 1000 1001 #ifndef SQLITE_OMIT_TRACE 1002 /* 1003 ** Register a trace function. The pArg from the previously registered trace 1004 ** is returned. 1005 ** 1006 ** A NULL trace function means that no tracing is executes. A non-NULL 1007 ** trace is a pointer to a function that is invoked at the start of each 1008 ** SQL statement. 1009 */ 1010 void *sqlite3_trace(sqlite3 *db, void (*xTrace)(void*,const char*), void *pArg){ 1011 void *pOld; 1012 sqlite3_mutex_enter(db->mutex); 1013 pOld = db->pTraceArg; 1014 db->xTrace = xTrace; 1015 db->pTraceArg = pArg; 1016 sqlite3_mutex_leave(db->mutex); 1017 return pOld; 1018 } 1019 /* 1020 ** Register a profile function. The pArg from the previously registered 1021 ** profile function is returned. 1022 ** 1023 ** A NULL profile function means that no profiling is executes. A non-NULL 1024 ** profile is a pointer to a function that is invoked at the conclusion of 1025 ** each SQL statement that is run. 1026 */ 1027 void *sqlite3_profile( 1028 sqlite3 *db, 1029 void (*xProfile)(void*,const char*,sqlite_uint64), 1030 void *pArg 1031 ){ 1032 void *pOld; 1033 sqlite3_mutex_enter(db->mutex); 1034 pOld = db->pProfileArg; 1035 db->xProfile = xProfile; 1036 db->pProfileArg = pArg; 1037 sqlite3_mutex_leave(db->mutex); 1038 return pOld; 1039 } 1040 #endif /* SQLITE_OMIT_TRACE */ 1041 1042 /*** EXPERIMENTAL *** 1043 ** 1044 ** Register a function to be invoked when a transaction comments. 1045 ** If the invoked function returns non-zero, then the commit becomes a 1046 ** rollback. 1047 */ 1048 void *sqlite3_commit_hook( 1049 sqlite3 *db, /* Attach the hook to this database */ 1050 int (*xCallback)(void*), /* Function to invoke on each commit */ 1051 void *pArg /* Argument to the function */ 1052 ){ 1053 void *pOld; 1054 sqlite3_mutex_enter(db->mutex); 1055 pOld = db->pCommitArg; 1056 db->xCommitCallback = xCallback; 1057 db->pCommitArg = pArg; 1058 sqlite3_mutex_leave(db->mutex); 1059 return pOld; 1060 } 1061 1062 /* 1063 ** Register a callback to be invoked each time a row is updated, 1064 ** inserted or deleted using this database connection. 1065 */ 1066 void *sqlite3_update_hook( 1067 sqlite3 *db, /* Attach the hook to this database */ 1068 void (*xCallback)(void*,int,char const *,char const *,sqlite_int64), 1069 void *pArg /* Argument to the function */ 1070 ){ 1071 void *pRet; 1072 sqlite3_mutex_enter(db->mutex); 1073 pRet = db->pUpdateArg; 1074 db->xUpdateCallback = xCallback; 1075 db->pUpdateArg = pArg; 1076 sqlite3_mutex_leave(db->mutex); 1077 return pRet; 1078 } 1079 1080 /* 1081 ** Register a callback to be invoked each time a transaction is rolled 1082 ** back by this database connection. 1083 */ 1084 void *sqlite3_rollback_hook( 1085 sqlite3 *db, /* Attach the hook to this database */ 1086 void (*xCallback)(void*), /* Callback function */ 1087 void *pArg /* Argument to the function */ 1088 ){ 1089 void *pRet; 1090 sqlite3_mutex_enter(db->mutex); 1091 pRet = db->pRollbackArg; 1092 db->xRollbackCallback = xCallback; 1093 db->pRollbackArg = pArg; 1094 sqlite3_mutex_leave(db->mutex); 1095 return pRet; 1096 } 1097 1098 /* 1099 ** This routine is called to create a connection to a database BTree 1100 ** driver. If zFilename is the name of a file, then that file is 1101 ** opened and used. If zFilename is the magic name ":memory:" then 1102 ** the database is stored in memory (and is thus forgotten as soon as 1103 ** the connection is closed.) If zFilename is NULL then the database 1104 ** is a "virtual" database for transient use only and is deleted as 1105 ** soon as the connection is closed. 1106 ** 1107 ** A virtual database can be either a disk file (that is automatically 1108 ** deleted when the file is closed) or it an be held entirely in memory, 1109 ** depending on the values of the SQLITE_TEMP_STORE compile-time macro and the 1110 ** db->temp_store variable, according to the following chart: 1111 ** 1112 ** SQLITE_TEMP_STORE db->temp_store Location of temporary database 1113 ** ----------------- -------------- ------------------------------ 1114 ** 0 any file 1115 ** 1 1 file 1116 ** 1 2 memory 1117 ** 1 0 file 1118 ** 2 1 file 1119 ** 2 2 memory 1120 ** 2 0 memory 1121 ** 3 any memory 1122 */ 1123 int sqlite3BtreeFactory( 1124 const sqlite3 *db, /* Main database when opening aux otherwise 0 */ 1125 const char *zFilename, /* Name of the file containing the BTree database */ 1126 int omitJournal, /* if TRUE then do not journal this file */ 1127 int nCache, /* How many pages in the page cache */ 1128 int vfsFlags, /* Flags passed through to vfsOpen */ 1129 Btree **ppBtree /* Pointer to new Btree object written here */ 1130 ){ 1131 int btFlags = 0; 1132 int rc; 1133 1134 assert( sqlite3_mutex_held(db->mutex) ); 1135 assert( ppBtree != 0); 1136 if( omitJournal ){ 1137 btFlags |= BTREE_OMIT_JOURNAL; 1138 } 1139 if( db->flags & SQLITE_NoReadlock ){ 1140 btFlags |= BTREE_NO_READLOCK; 1141 } 1142 if( zFilename==0 ){ 1143 #if SQLITE_TEMP_STORE==0 1144 /* Do nothing */ 1145 #endif 1146 #ifndef SQLITE_OMIT_MEMORYDB 1147 #if SQLITE_TEMP_STORE==1 1148 if( db->temp_store==2 ) zFilename = ":memory:"; 1149 #endif 1150 #if SQLITE_TEMP_STORE==2 1151 if( db->temp_store!=1 ) zFilename = ":memory:"; 1152 #endif 1153 #if SQLITE_TEMP_STORE==3 1154 zFilename = ":memory:"; 1155 #endif 1156 #endif /* SQLITE_OMIT_MEMORYDB */ 1157 } 1158 1159 if( (vfsFlags & SQLITE_OPEN_MAIN_DB)!=0 && (zFilename==0 || *zFilename==0) ){ 1160 vfsFlags = (vfsFlags & ~SQLITE_OPEN_MAIN_DB) | SQLITE_OPEN_TEMP_DB; 1161 } 1162 rc = sqlite3BtreeOpen(zFilename, (sqlite3 *)db, ppBtree, btFlags, vfsFlags); 1163 1164 /* If the B-Tree was successfully opened, set the pager-cache size to the 1165 ** default value. Except, if the call to BtreeOpen() returned a handle 1166 ** open on an existing shared pager-cache, do not change the pager-cache 1167 ** size. 1168 */ 1169 if( rc==SQLITE_OK && 0==sqlite3BtreeSchema(*ppBtree, 0, 0) ){ 1170 sqlite3BtreeSetCacheSize(*ppBtree, nCache); 1171 } 1172 return rc; 1173 } 1174 1175 /* 1176 ** Return UTF-8 encoded English language explanation of the most recent 1177 ** error. 1178 */ 1179 const char *sqlite3_errmsg(sqlite3 *db){ 1180 const char *z; 1181 if( !db ){ 1182 return sqlite3ErrStr(SQLITE_NOMEM); 1183 } 1184 if( !sqlite3SafetyCheckSickOrOk(db) ){ 1185 return sqlite3ErrStr(SQLITE_MISUSE); 1186 } 1187 sqlite3_mutex_enter(db->mutex); 1188 assert( !db->mallocFailed ); 1189 z = (char*)sqlite3_value_text(db->pErr); 1190 assert( !db->mallocFailed ); 1191 if( z==0 ){ 1192 z = sqlite3ErrStr(db->errCode); 1193 } 1194 sqlite3_mutex_leave(db->mutex); 1195 return z; 1196 } 1197 1198 #ifndef SQLITE_OMIT_UTF16 1199 /* 1200 ** Return UTF-16 encoded English language explanation of the most recent 1201 ** error. 1202 */ 1203 const void *sqlite3_errmsg16(sqlite3 *db){ 1204 /* Because all the characters in the string are in the unicode 1205 ** range 0x00-0xFF, if we pad the big-endian string with a 1206 ** zero byte, we can obtain the little-endian string with 1207 ** &big_endian[1]. 1208 */ 1209 static const char outOfMemBe[] = { 1210 0, 'o', 0, 'u', 0, 't', 0, ' ', 1211 0, 'o', 0, 'f', 0, ' ', 1212 0, 'm', 0, 'e', 0, 'm', 0, 'o', 0, 'r', 0, 'y', 0, 0, 0 1213 }; 1214 static const char misuseBe [] = { 1215 0, 'l', 0, 'i', 0, 'b', 0, 'r', 0, 'a', 0, 'r', 0, 'y', 0, ' ', 1216 0, 'r', 0, 'o', 0, 'u', 0, 't', 0, 'i', 0, 'n', 0, 'e', 0, ' ', 1217 0, 'c', 0, 'a', 0, 'l', 0, 'l', 0, 'e', 0, 'd', 0, ' ', 1218 0, 'o', 0, 'u', 0, 't', 0, ' ', 1219 0, 'o', 0, 'f', 0, ' ', 1220 0, 's', 0, 'e', 0, 'q', 0, 'u', 0, 'e', 0, 'n', 0, 'c', 0, 'e', 0, 0, 0 1221 }; 1222 1223 const void *z; 1224 if( !db ){ 1225 return (void *)(&outOfMemBe[SQLITE_UTF16NATIVE==SQLITE_UTF16LE?1:0]); 1226 } 1227 if( !sqlite3SafetyCheckSickOrOk(db) ){ 1228 return (void *)(&misuseBe[SQLITE_UTF16NATIVE==SQLITE_UTF16LE?1:0]); 1229 } 1230 sqlite3_mutex_enter(db->mutex); 1231 assert( !db->mallocFailed ); 1232 z = sqlite3_value_text16(db->pErr); 1233 if( z==0 ){ 1234 sqlite3ValueSetStr(db->pErr, -1, sqlite3ErrStr(db->errCode), 1235 SQLITE_UTF8, SQLITE_STATIC); 1236 z = sqlite3_value_text16(db->pErr); 1237 } 1238 /* A malloc() may have failed within the call to sqlite3_value_text16() 1239 ** above. If this is the case, then the db->mallocFailed flag needs to 1240 ** be cleared before returning. Do this directly, instead of via 1241 ** sqlite3ApiExit(), to avoid setting the database handle error message. 1242 */ 1243 db->mallocFailed = 0; 1244 sqlite3_mutex_leave(db->mutex); 1245 return z; 1246 } 1247 #endif /* SQLITE_OMIT_UTF16 */ 1248 1249 /* 1250 ** Return the most recent error code generated by an SQLite routine. If NULL is 1251 ** passed to this function, we assume a malloc() failed during sqlite3_open(). 1252 */ 1253 int sqlite3_errcode(sqlite3 *db){ 1254 if( db && !sqlite3SafetyCheckSickOrOk(db) ){ 1255 return SQLITE_MISUSE; 1256 } 1257 if( !db || db->mallocFailed ){ 1258 return SQLITE_NOMEM; 1259 } 1260 return db->errCode & db->errMask; 1261 } 1262 1263 /* 1264 ** Create a new collating function for database "db". The name is zName 1265 ** and the encoding is enc. 1266 */ 1267 static int createCollation( 1268 sqlite3* db, 1269 const char *zName, 1270 int enc, 1271 void* pCtx, 1272 int(*xCompare)(void*,int,const void*,int,const void*), 1273 void(*xDel)(void*) 1274 ){ 1275 CollSeq *pColl; 1276 int enc2; 1277 int nName; 1278 1279 assert( sqlite3_mutex_held(db->mutex) ); 1280 1281 /* If SQLITE_UTF16 is specified as the encoding type, transform this 1282 ** to one of SQLITE_UTF16LE or SQLITE_UTF16BE using the 1283 ** SQLITE_UTF16NATIVE macro. SQLITE_UTF16 is not used internally. 1284 */ 1285 enc2 = enc & ~SQLITE_UTF16_ALIGNED; 1286 if( enc2==SQLITE_UTF16 ){ 1287 enc2 = SQLITE_UTF16NATIVE; 1288 } 1289 if( (enc2&~3)!=0 ){ 1290 return SQLITE_MISUSE; 1291 } 1292 1293 /* Check if this call is removing or replacing an existing collation 1294 ** sequence. If so, and there are active VMs, return busy. If there 1295 ** are no active VMs, invalidate any pre-compiled statements. 1296 */ 1297 nName = sqlite3Strlen(db, zName); 1298 pColl = sqlite3FindCollSeq(db, (u8)enc2, zName, nName, 0); 1299 if( pColl && pColl->xCmp ){ 1300 if( db->activeVdbeCnt ){ 1301 sqlite3Error(db, SQLITE_BUSY, 1302 "Unable to delete/modify collation sequence due to active statements"); 1303 return SQLITE_BUSY; 1304 } 1305 sqlite3ExpirePreparedStatements(db); 1306 1307 /* If collation sequence pColl was created directly by a call to 1308 ** sqlite3_create_collation, and not generated by synthCollSeq(), 1309 ** then any copies made by synthCollSeq() need to be invalidated. 1310 ** Also, collation destructor - CollSeq.xDel() - function may need 1311 ** to be called. 1312 */ 1313 if( (pColl->enc & ~SQLITE_UTF16_ALIGNED)==enc2 ){ 1314 CollSeq *aColl = sqlite3HashFind(&db->aCollSeq, zName, nName); 1315 int j; 1316 for(j=0; j<3; j++){ 1317 CollSeq *p = &aColl[j]; 1318 if( p->enc==pColl->enc ){ 1319 if( p->xDel ){ 1320 p->xDel(p->pUser); 1321 } 1322 p->xCmp = 0; 1323 } 1324 } 1325 } 1326 } 1327 1328 pColl = sqlite3FindCollSeq(db, (u8)enc2, zName, nName, 1); 1329 if( pColl ){ 1330 pColl->xCmp = xCompare; 1331 pColl->pUser = pCtx; 1332 pColl->xDel = xDel; 1333 pColl->enc = enc2 | (enc & SQLITE_UTF16_ALIGNED); 1334 } 1335 sqlite3Error(db, SQLITE_OK, 0); 1336 return SQLITE_OK; 1337 } 1338 1339 1340 /* 1341 ** This array defines hard upper bounds on limit values. The 1342 ** initializer must be kept in sync with the SQLITE_LIMIT_* 1343 ** #defines in sqlite3.h. 1344 */ 1345 static const int aHardLimit[] = { 1346 SQLITE_MAX_LENGTH, 1347 SQLITE_MAX_SQL_LENGTH, 1348 SQLITE_MAX_COLUMN, 1349 SQLITE_MAX_EXPR_DEPTH, 1350 SQLITE_MAX_COMPOUND_SELECT, 1351 SQLITE_MAX_VDBE_OP, 1352 SQLITE_MAX_FUNCTION_ARG, 1353 SQLITE_MAX_ATTACHED, 1354 SQLITE_MAX_LIKE_PATTERN_LENGTH, 1355 SQLITE_MAX_VARIABLE_NUMBER, 1356 }; 1357 1358 /* 1359 ** Make sure the hard limits are set to reasonable values 1360 */ 1361 #if SQLITE_MAX_LENGTH<100 1362 # error SQLITE_MAX_LENGTH must be at least 100 1363 #endif 1364 #if SQLITE_MAX_SQL_LENGTH<100 1365 # error SQLITE_MAX_SQL_LENGTH must be at least 100 1366 #endif 1367 #if SQLITE_MAX_SQL_LENGTH>SQLITE_MAX_LENGTH 1368 # error SQLITE_MAX_SQL_LENGTH must not be greater than SQLITE_MAX_LENGTH 1369 #endif 1370 #if SQLITE_MAX_COMPOUND_SELECT<2 1371 # error SQLITE_MAX_COMPOUND_SELECT must be at least 2 1372 #endif 1373 #if SQLITE_MAX_VDBE_OP<40 1374 # error SQLITE_MAX_VDBE_OP must be at least 40 1375 #endif 1376 #if SQLITE_MAX_FUNCTION_ARG<0 || SQLITE_MAX_FUNCTION_ARG>127 1377 # error SQLITE_MAX_FUNCTION_ARG must be between 0 and 127 1378 #endif 1379 #if SQLITE_MAX_ATTACHED<0 || SQLITE_MAX_ATTACHED>30 1380 # error SQLITE_MAX_ATTACHED must be between 0 and 30 1381 #endif 1382 #if SQLITE_MAX_LIKE_PATTERN_LENGTH<1 1383 # error SQLITE_MAX_LIKE_PATTERN_LENGTH must be at least 1 1384 #endif 1385 #if SQLITE_MAX_VARIABLE_NUMBER<1 1386 # error SQLITE_MAX_VARIABLE_NUMBER must be at least 1 1387 #endif 1388 #if SQLITE_MAX_COLUMN>32767 1389 # error SQLITE_MAX_COLUMN must not exceed 32767 1390 #endif 1391 1392 1393 /* 1394 ** Change the value of a limit. Report the old value. 1395 ** If an invalid limit index is supplied, report -1. 1396 ** Make no changes but still report the old value if the 1397 ** new limit is negative. 1398 ** 1399 ** A new lower limit does not shrink existing constructs. 1400 ** It merely prevents new constructs that exceed the limit 1401 ** from forming. 1402 */ 1403 int sqlite3_limit(sqlite3 *db, int limitId, int newLimit){ 1404 int oldLimit; 1405 if( limitId<0 || limitId>=SQLITE_N_LIMIT ){ 1406 return -1; 1407 } 1408 oldLimit = db->aLimit[limitId]; 1409 if( newLimit>=0 ){ 1410 if( newLimit>aHardLimit[limitId] ){ 1411 newLimit = aHardLimit[limitId]; 1412 } 1413 db->aLimit[limitId] = newLimit; 1414 } 1415 return oldLimit; 1416 } 1417 1418 /* 1419 ** This routine does the work of opening a database on behalf of 1420 ** sqlite3_open() and sqlite3_open16(). The database filename "zFilename" 1421 ** is UTF-8 encoded. 1422 */ 1423 static int openDatabase( 1424 const char *zFilename, /* Database filename UTF-8 encoded */ 1425 sqlite3 **ppDb, /* OUT: Returned database handle */ 1426 unsigned flags, /* Operational flags */ 1427 const char *zVfs /* Name of the VFS to use */ 1428 ){ 1429 sqlite3 *db; 1430 int rc; 1431 CollSeq *pColl; 1432 int isThreadsafe; 1433 1434 #ifndef SQLITE_OMIT_AUTOINIT 1435 rc = sqlite3_initialize(); 1436 if( rc ) return rc; 1437 #endif 1438 1439 if( sqlite3GlobalConfig.bCoreMutex==0 ){ 1440 isThreadsafe = 0; 1441 }else if( flags & SQLITE_OPEN_NOMUTEX ){ 1442 isThreadsafe = 0; 1443 }else if( flags & SQLITE_OPEN_FULLMUTEX ){ 1444 isThreadsafe = 1; 1445 }else{ 1446 isThreadsafe = sqlite3GlobalConfig.bFullMutex; 1447 } 1448 1449 /* Remove harmful bits from the flags parameter */ 1450 flags &= ~( SQLITE_OPEN_DELETEONCLOSE | 1451 SQLITE_OPEN_MAIN_DB | 1452 SQLITE_OPEN_TEMP_DB | 1453 SQLITE_OPEN_TRANSIENT_DB | 1454 SQLITE_OPEN_MAIN_JOURNAL | 1455 SQLITE_OPEN_TEMP_JOURNAL | 1456 SQLITE_OPEN_SUBJOURNAL | 1457 SQLITE_OPEN_MASTER_JOURNAL | 1458 SQLITE_OPEN_NOMUTEX | 1459 SQLITE_OPEN_FULLMUTEX 1460 ); 1461 1462 /* Allocate the sqlite data structure */ 1463 db = sqlite3MallocZero( sizeof(sqlite3) ); 1464 if( db==0 ) goto opendb_out; 1465 if( isThreadsafe ){ 1466 db->mutex = sqlite3MutexAlloc(SQLITE_MUTEX_RECURSIVE); 1467 if( db->mutex==0 ){ 1468 sqlite3_free(db); 1469 db = 0; 1470 goto opendb_out; 1471 } 1472 } 1473 sqlite3_mutex_enter(db->mutex); 1474 db->errMask = 0xff; 1475 db->priorNewRowid = 0; 1476 db->nDb = 2; 1477 db->magic = SQLITE_MAGIC_BUSY; 1478 db->aDb = db->aDbStatic; 1479 1480 assert( sizeof(db->aLimit)==sizeof(aHardLimit) ); 1481 memcpy(db->aLimit, aHardLimit, sizeof(db->aLimit)); 1482 db->autoCommit = 1; 1483 db->nextAutovac = -1; 1484 db->nextPagesize = 0; 1485 db->flags |= SQLITE_ShortColNames 1486 #if SQLITE_DEFAULT_FILE_FORMAT<4 1487 | SQLITE_LegacyFileFmt 1488 #endif 1489 #ifdef SQLITE_ENABLE_LOAD_EXTENSION 1490 | SQLITE_LoadExtension 1491 #endif 1492 ; 1493 sqlite3HashInit(&db->aCollSeq, SQLITE_HASH_STRING, 0); 1494 #ifndef SQLITE_OMIT_VIRTUALTABLE 1495 sqlite3HashInit(&db->aModule, SQLITE_HASH_STRING, 0); 1496 #endif 1497 1498 db->pVfs = sqlite3_vfs_find(zVfs); 1499 if( !db->pVfs ){ 1500 rc = SQLITE_ERROR; 1501 sqlite3Error(db, rc, "no such vfs: %s", zVfs); 1502 goto opendb_out; 1503 } 1504 1505 /* Add the default collation sequence BINARY. BINARY works for both UTF-8 1506 ** and UTF-16, so add a version for each to avoid any unnecessary 1507 ** conversions. The only error that can occur here is a malloc() failure. 1508 */ 1509 createCollation(db, "BINARY", SQLITE_UTF8, 0, binCollFunc, 0); 1510 createCollation(db, "BINARY", SQLITE_UTF16BE, 0, binCollFunc, 0); 1511 createCollation(db, "BINARY", SQLITE_UTF16LE, 0, binCollFunc, 0); 1512 createCollation(db, "RTRIM", SQLITE_UTF8, (void*)1, binCollFunc, 0); 1513 if( db->mallocFailed ){ 1514 goto opendb_out; 1515 } 1516 db->pDfltColl = sqlite3FindCollSeq(db, SQLITE_UTF8, "BINARY", 6, 0); 1517 assert( db->pDfltColl!=0 ); 1518 1519 /* Also add a UTF-8 case-insensitive collation sequence. */ 1520 createCollation(db, "NOCASE", SQLITE_UTF8, 0, nocaseCollatingFunc, 0); 1521 1522 /* Set flags on the built-in collating sequences */ 1523 db->pDfltColl->type = SQLITE_COLL_BINARY; 1524 pColl = sqlite3FindCollSeq(db, SQLITE_UTF8, "NOCASE", 6, 0); 1525 if( pColl ){ 1526 pColl->type = SQLITE_COLL_NOCASE; 1527 } 1528 1529 /* Open the backend database driver */ 1530 db->openFlags = flags; 1531 rc = sqlite3BtreeFactory(db, zFilename, 0, SQLITE_DEFAULT_CACHE_SIZE, 1532 flags | SQLITE_OPEN_MAIN_DB, 1533 &db->aDb[0].pBt); 1534 if( rc!=SQLITE_OK ){ 1535 sqlite3Error(db, rc, 0); 1536 goto opendb_out; 1537 } 1538 db->aDb[0].pSchema = sqlite3SchemaGet(db, db->aDb[0].pBt); 1539 db->aDb[1].pSchema = sqlite3SchemaGet(db, 0); 1540 1541 1542 /* The default safety_level for the main database is 'full'; for the temp 1543 ** database it is 'NONE'. This matches the pager layer defaults. 1544 */ 1545 db->aDb[0].zName = "main"; 1546 db->aDb[0].safety_level = 3; 1547 #ifndef SQLITE_OMIT_TEMPDB 1548 db->aDb[1].zName = "temp"; 1549 db->aDb[1].safety_level = 1; 1550 #endif 1551 1552 db->magic = SQLITE_MAGIC_OPEN; 1553 if( db->mallocFailed ){ 1554 goto opendb_out; 1555 } 1556 1557 /* Register all built-in functions, but do not attempt to read the 1558 ** database schema yet. This is delayed until the first time the database 1559 ** is accessed. 1560 */ 1561 sqlite3Error(db, SQLITE_OK, 0); 1562 sqlite3RegisterBuiltinFunctions(db); 1563 1564 /* Load automatic extensions - extensions that have been registered 1565 ** using the sqlite3_automatic_extension() API. 1566 */ 1567 (void)sqlite3AutoLoadExtensions(db); 1568 if( sqlite3_errcode(db)!=SQLITE_OK ){ 1569 goto opendb_out; 1570 } 1571 1572 #ifdef SQLITE_ENABLE_FTS1 1573 if( !db->mallocFailed ){ 1574 extern int sqlite3Fts1Init(sqlite3*); 1575 rc = sqlite3Fts1Init(db); 1576 } 1577 #endif 1578 1579 #ifdef SQLITE_ENABLE_FTS2 1580 if( !db->mallocFailed && rc==SQLITE_OK ){ 1581 extern int sqlite3Fts2Init(sqlite3*); 1582 rc = sqlite3Fts2Init(db); 1583 } 1584 #endif 1585 1586 #ifdef SQLITE_ENABLE_FTS3 1587 if( !db->mallocFailed && rc==SQLITE_OK ){ 1588 rc = sqlite3Fts3Init(db); 1589 } 1590 #endif 1591 1592 #ifdef SQLITE_ENABLE_ICU 1593 if( !db->mallocFailed && rc==SQLITE_OK ){ 1594 rc = sqlite3IcuInit(db); 1595 } 1596 #endif 1597 1598 #ifdef SQLITE_ENABLE_RTREE 1599 if( !db->mallocFailed && rc==SQLITE_OK){ 1600 rc = sqlite3RtreeInit(db); 1601 } 1602 #endif 1603 1604 sqlite3Error(db, rc, 0); 1605 1606 /* -DSQLITE_DEFAULT_LOCKING_MODE=1 makes EXCLUSIVE the default locking 1607 ** mode. -DSQLITE_DEFAULT_LOCKING_MODE=0 make NORMAL the default locking 1608 ** mode. Doing nothing at all also makes NORMAL the default. 1609 */ 1610 #ifdef SQLITE_DEFAULT_LOCKING_MODE 1611 db->dfltLockMode = SQLITE_DEFAULT_LOCKING_MODE; 1612 sqlite3PagerLockingMode(sqlite3BtreePager(db->aDb[0].pBt), 1613 SQLITE_DEFAULT_LOCKING_MODE); 1614 #endif 1615 1616 /* Enable the lookaside-malloc subsystem */ 1617 setupLookaside(db, 0, sqlite3GlobalConfig.szLookaside, sqlite3GlobalConfig.nLookaside); 1618 1619 opendb_out: 1620 if( db ){ 1621 assert( db->mutex!=0 || isThreadsafe==0 || sqlite3GlobalConfig.bFullMutex==0 ); 1622 sqlite3_mutex_leave(db->mutex); 1623 } 1624 rc = sqlite3_errcode(db); 1625 if( rc==SQLITE_NOMEM ){ 1626 sqlite3_close(db); 1627 db = 0; 1628 }else if( rc!=SQLITE_OK ){ 1629 db->magic = SQLITE_MAGIC_SICK; 1630 } 1631 *ppDb = db; 1632 return sqlite3ApiExit(0, rc); 1633 } 1634 1635 /* 1636 ** Open a new database handle. 1637 */ 1638 int sqlite3_open( 1639 const char *zFilename, 1640 sqlite3 **ppDb 1641 ){ 1642 return openDatabase(zFilename, ppDb, 1643 SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, 0); 1644 } 1645 int sqlite3_open_v2( 1646 const char *filename, /* Database filename (UTF-8) */ 1647 sqlite3 **ppDb, /* OUT: SQLite db handle */ 1648 int flags, /* Flags */ 1649 const char *zVfs /* Name of VFS module to use */ 1650 ){ 1651 return openDatabase(filename, ppDb, flags, zVfs); 1652 } 1653 1654 #ifndef SQLITE_OMIT_UTF16 1655 /* 1656 ** Open a new database handle. 1657 */ 1658 int sqlite3_open16( 1659 const void *zFilename, 1660 sqlite3 **ppDb 1661 ){ 1662 char const *zFilename8; /* zFilename encoded in UTF-8 instead of UTF-16 */ 1663 sqlite3_value *pVal; 1664 int rc; 1665 1666 assert( zFilename ); 1667 assert( ppDb ); 1668 *ppDb = 0; 1669 #ifndef SQLITE_OMIT_AUTOINIT 1670 rc = sqlite3_initialize(); 1671 if( rc ) return rc; 1672 #endif 1673 pVal = sqlite3ValueNew(0); 1674 sqlite3ValueSetStr(pVal, -1, zFilename, SQLITE_UTF16NATIVE, SQLITE_STATIC); 1675 zFilename8 = sqlite3ValueText(pVal, SQLITE_UTF8); 1676 if( zFilename8 ){ 1677 rc = openDatabase(zFilename8, ppDb, 1678 SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, 0); 1679 assert( *ppDb || rc==SQLITE_NOMEM ); 1680 if( rc==SQLITE_OK && !DbHasProperty(*ppDb, 0, DB_SchemaLoaded) ){ 1681 ENC(*ppDb) = SQLITE_UTF16NATIVE; 1682 } 1683 }else{ 1684 rc = SQLITE_NOMEM; 1685 } 1686 sqlite3ValueFree(pVal); 1687 1688 return sqlite3ApiExit(0, rc); 1689 } 1690 #endif /* SQLITE_OMIT_UTF16 */ 1691 1692 /* 1693 ** Register a new collation sequence with the database handle db. 1694 */ 1695 int sqlite3_create_collation( 1696 sqlite3* db, 1697 const char *zName, 1698 int enc, 1699 void* pCtx, 1700 int(*xCompare)(void*,int,const void*,int,const void*) 1701 ){ 1702 int rc; 1703 sqlite3_mutex_enter(db->mutex); 1704 assert( !db->mallocFailed ); 1705 rc = createCollation(db, zName, enc, pCtx, xCompare, 0); 1706 rc = sqlite3ApiExit(db, rc); 1707 sqlite3_mutex_leave(db->mutex); 1708 return rc; 1709 } 1710 1711 /* 1712 ** Register a new collation sequence with the database handle db. 1713 */ 1714 int sqlite3_create_collation_v2( 1715 sqlite3* db, 1716 const char *zName, 1717 int enc, 1718 void* pCtx, 1719 int(*xCompare)(void*,int,const void*,int,const void*), 1720 void(*xDel)(void*) 1721 ){ 1722 int rc; 1723 sqlite3_mutex_enter(db->mutex); 1724 assert( !db->mallocFailed ); 1725 rc = createCollation(db, zName, enc, pCtx, xCompare, xDel); 1726 rc = sqlite3ApiExit(db, rc); 1727 sqlite3_mutex_leave(db->mutex); 1728 return rc; 1729 } 1730 1731 #ifndef SQLITE_OMIT_UTF16 1732 /* 1733 ** Register a new collation sequence with the database handle db. 1734 */ 1735 int sqlite3_create_collation16( 1736 sqlite3* db, 1737 const void *zName, 1738 int enc, 1739 void* pCtx, 1740 int(*xCompare)(void*,int,const void*,int,const void*) 1741 ){ 1742 int rc = SQLITE_OK; 1743 char *zName8; 1744 sqlite3_mutex_enter(db->mutex); 1745 assert( !db->mallocFailed ); 1746 zName8 = sqlite3Utf16to8(db, zName, -1); 1747 if( zName8 ){ 1748 rc = createCollation(db, zName8, enc, pCtx, xCompare, 0); 1749 sqlite3DbFree(db, zName8); 1750 } 1751 rc = sqlite3ApiExit(db, rc); 1752 sqlite3_mutex_leave(db->mutex); 1753 return rc; 1754 } 1755 #endif /* SQLITE_OMIT_UTF16 */ 1756 1757 /* 1758 ** Register a collation sequence factory callback with the database handle 1759 ** db. Replace any previously installed collation sequence factory. 1760 */ 1761 int sqlite3_collation_needed( 1762 sqlite3 *db, 1763 void *pCollNeededArg, 1764 void(*xCollNeeded)(void*,sqlite3*,int eTextRep,const char*) 1765 ){ 1766 sqlite3_mutex_enter(db->mutex); 1767 db->xCollNeeded = xCollNeeded; 1768 db->xCollNeeded16 = 0; 1769 db->pCollNeededArg = pCollNeededArg; 1770 sqlite3_mutex_leave(db->mutex); 1771 return SQLITE_OK; 1772 } 1773 1774 #ifndef SQLITE_OMIT_UTF16 1775 /* 1776 ** Register a collation sequence factory callback with the database handle 1777 ** db. Replace any previously installed collation sequence factory. 1778 */ 1779 int sqlite3_collation_needed16( 1780 sqlite3 *db, 1781 void *pCollNeededArg, 1782 void(*xCollNeeded16)(void*,sqlite3*,int eTextRep,const void*) 1783 ){ 1784 sqlite3_mutex_enter(db->mutex); 1785 db->xCollNeeded = 0; 1786 db->xCollNeeded16 = xCollNeeded16; 1787 db->pCollNeededArg = pCollNeededArg; 1788 sqlite3_mutex_leave(db->mutex); 1789 return SQLITE_OK; 1790 } 1791 #endif /* SQLITE_OMIT_UTF16 */ 1792 1793 #ifndef SQLITE_OMIT_GLOBALRECOVER 1794 /* 1795 ** This function is now an anachronism. It used to be used to recover from a 1796 ** malloc() failure, but SQLite now does this automatically. 1797 */ 1798 int sqlite3_global_recover(void){ 1799 return SQLITE_OK; 1800 } 1801 #endif 1802 1803 /* 1804 ** Test to see whether or not the database connection is in autocommit 1805 ** mode. Return TRUE if it is and FALSE if not. Autocommit mode is on 1806 ** by default. Autocommit is disabled by a BEGIN statement and reenabled 1807 ** by the next COMMIT or ROLLBACK. 1808 ** 1809 ******* THIS IS AN EXPERIMENTAL API AND IS SUBJECT TO CHANGE ****** 1810 */ 1811 int sqlite3_get_autocommit(sqlite3 *db){ 1812 return db->autoCommit; 1813 } 1814 1815 #ifdef SQLITE_DEBUG 1816 /* 1817 ** The following routine is subtituted for constant SQLITE_CORRUPT in 1818 ** debugging builds. This provides a way to set a breakpoint for when 1819 ** corruption is first detected. 1820 */ 1821 int sqlite3Corrupt(void){ 1822 return SQLITE_CORRUPT; 1823 } 1824 #endif 1825 1826 /* 1827 ** This is a convenience routine that makes sure that all thread-specific 1828 ** data for this thread has been deallocated. 1829 ** 1830 ** SQLite no longer uses thread-specific data so this routine is now a 1831 ** no-op. It is retained for historical compatibility. 1832 */ 1833 void sqlite3_thread_cleanup(void){ 1834 } 1835 1836 /* 1837 ** Return meta information about a specific column of a database table. 1838 ** See comment in sqlite3.h (sqlite.h.in) for details. 1839 */ 1840 #ifdef SQLITE_ENABLE_COLUMN_METADATA 1841 int sqlite3_table_column_metadata( 1842 sqlite3 *db, /* Connection handle */ 1843 const char *zDbName, /* Database name or NULL */ 1844 const char *zTableName, /* Table name */ 1845 const char *zColumnName, /* Column name */ 1846 char const **pzDataType, /* OUTPUT: Declared data type */ 1847 char const **pzCollSeq, /* OUTPUT: Collation sequence name */ 1848 int *pNotNull, /* OUTPUT: True if NOT NULL constraint exists */ 1849 int *pPrimaryKey, /* OUTPUT: True if column part of PK */ 1850 int *pAutoinc /* OUTPUT: True if column is auto-increment */ 1851 ){ 1852 int rc; 1853 char *zErrMsg = 0; 1854 Table *pTab = 0; 1855 Column *pCol = 0; 1856 int iCol; 1857 1858 char const *zDataType = 0; 1859 char const *zCollSeq = 0; 1860 int notnull = 0; 1861 int primarykey = 0; 1862 int autoinc = 0; 1863 1864 /* Ensure the database schema has been loaded */ 1865 sqlite3_mutex_enter(db->mutex); 1866 (void)sqlite3SafetyOn(db); 1867 sqlite3BtreeEnterAll(db); 1868 rc = sqlite3Init(db, &zErrMsg); 1869 sqlite3BtreeLeaveAll(db); 1870 if( SQLITE_OK!=rc ){ 1871 goto error_out; 1872 } 1873 1874 /* Locate the table in question */ 1875 pTab = sqlite3FindTable(db, zTableName, zDbName); 1876 if( !pTab || pTab->pSelect ){ 1877 pTab = 0; 1878 goto error_out; 1879 } 1880 1881 /* Find the column for which info is requested */ 1882 if( sqlite3IsRowid(zColumnName) ){ 1883 iCol = pTab->iPKey; 1884 if( iCol>=0 ){ 1885 pCol = &pTab->aCol[iCol]; 1886 } 1887 }else{ 1888 for(iCol=0; iCol<pTab->nCol; iCol++){ 1889 pCol = &pTab->aCol[iCol]; 1890 if( 0==sqlite3StrICmp(pCol->zName, zColumnName) ){ 1891 break; 1892 } 1893 } 1894 if( iCol==pTab->nCol ){ 1895 pTab = 0; 1896 goto error_out; 1897 } 1898 } 1899 1900 /* The following block stores the meta information that will be returned 1901 ** to the caller in local variables zDataType, zCollSeq, notnull, primarykey 1902 ** and autoinc. At this point there are two possibilities: 1903 ** 1904 ** 1. The specified column name was rowid", "oid" or "_rowid_" 1905 ** and there is no explicitly declared IPK column. 1906 ** 1907 ** 2. The table is not a view and the column name identified an 1908 ** explicitly declared column. Copy meta information from *pCol. 1909 */ 1910 if( pCol ){ 1911 zDataType = pCol->zType; 1912 zCollSeq = pCol->zColl; 1913 notnull = pCol->notNull!=0; 1914 primarykey = pCol->isPrimKey!=0; 1915 autoinc = pTab->iPKey==iCol && (pTab->tabFlags & TF_Autoincrement)!=0; 1916 }else{ 1917 zDataType = "INTEGER"; 1918 primarykey = 1; 1919 } 1920 if( !zCollSeq ){ 1921 zCollSeq = "BINARY"; 1922 } 1923 1924 error_out: 1925 (void)sqlite3SafetyOff(db); 1926 1927 /* Whether the function call succeeded or failed, set the output parameters 1928 ** to whatever their local counterparts contain. If an error did occur, 1929 ** this has the effect of zeroing all output parameters. 1930 */ 1931 if( pzDataType ) *pzDataType = zDataType; 1932 if( pzCollSeq ) *pzCollSeq = zCollSeq; 1933 if( pNotNull ) *pNotNull = notnull; 1934 if( pPrimaryKey ) *pPrimaryKey = primarykey; 1935 if( pAutoinc ) *pAutoinc = autoinc; 1936 1937 if( SQLITE_OK==rc && !pTab ){ 1938 sqlite3DbFree(db, zErrMsg); 1939 zErrMsg = sqlite3MPrintf(db, "no such table column: %s.%s", zTableName, 1940 zColumnName); 1941 rc = SQLITE_ERROR; 1942 } 1943 sqlite3Error(db, rc, (zErrMsg?"%s":0), zErrMsg); 1944 sqlite3DbFree(db, zErrMsg); 1945 rc = sqlite3ApiExit(db, rc); 1946 sqlite3_mutex_leave(db->mutex); 1947 return rc; 1948 } 1949 #endif 1950 1951 /* 1952 ** Sleep for a little while. Return the amount of time slept. 1953 */ 1954 int sqlite3_sleep(int ms){ 1955 sqlite3_vfs *pVfs; 1956 int rc; 1957 pVfs = sqlite3_vfs_find(0); 1958 if( pVfs==0 ) return 0; 1959 1960 /* This function works in milliseconds, but the underlying OsSleep() 1961 ** API uses microseconds. Hence the 1000's. 1962 */ 1963 rc = (sqlite3OsSleep(pVfs, 1000*ms)/1000); 1964 return rc; 1965 } 1966 1967 /* 1968 ** Enable or disable the extended result codes. 1969 */ 1970 int sqlite3_extended_result_codes(sqlite3 *db, int onoff){ 1971 sqlite3_mutex_enter(db->mutex); 1972 db->errMask = onoff ? 0xffffffff : 0xff; 1973 sqlite3_mutex_leave(db->mutex); 1974 return SQLITE_OK; 1975 } 1976 1977 /* 1978 ** Invoke the xFileControl method on a particular database. 1979 */ 1980 int sqlite3_file_control(sqlite3 *db, const char *zDbName, int op, void *pArg){ 1981 int rc = SQLITE_ERROR; 1982 int iDb; 1983 sqlite3_mutex_enter(db->mutex); 1984 if( zDbName==0 ){ 1985 iDb = 0; 1986 }else{ 1987 for(iDb=0; iDb<db->nDb; iDb++){ 1988 if( strcmp(db->aDb[iDb].zName, zDbName)==0 ) break; 1989 } 1990 } 1991 if( iDb<db->nDb ){ 1992 Btree *pBtree = db->aDb[iDb].pBt; 1993 if( pBtree ){ 1994 Pager *pPager; 1995 sqlite3_file *fd; 1996 sqlite3BtreeEnter(pBtree); 1997 pPager = sqlite3BtreePager(pBtree); 1998 assert( pPager!=0 ); 1999 fd = sqlite3PagerFile(pPager); 2000 assert( fd!=0 ); 2001 if( fd->pMethods ){ 2002 rc = sqlite3OsFileControl(fd, op, pArg); 2003 } 2004 sqlite3BtreeLeave(pBtree); 2005 } 2006 } 2007 sqlite3_mutex_leave(db->mutex); 2008 return rc; 2009 } 2010 2011 /* 2012 ** Interface to the testing logic. 2013 */ 2014 int sqlite3_test_control(int op, ...){ 2015 int rc = 0; 2016 #ifndef SQLITE_OMIT_BUILTIN_TEST 2017 va_list ap; 2018 va_start(ap, op); 2019 switch( op ){ 2020 2021 /* 2022 ** Save the current state of the PRNG. 2023 */ 2024 case SQLITE_TESTCTRL_PRNG_SAVE: { 2025 sqlite3PrngSaveState(); 2026 break; 2027 } 2028 2029 /* 2030 ** Restore the state of the PRNG to the last state saved using 2031 ** PRNG_SAVE. If PRNG_SAVE has never before been called, then 2032 ** this verb acts like PRNG_RESET. 2033 */ 2034 case SQLITE_TESTCTRL_PRNG_RESTORE: { 2035 sqlite3PrngRestoreState(); 2036 break; 2037 } 2038 2039 /* 2040 ** Reset the PRNG back to its uninitialized state. The next call 2041 ** to sqlite3_randomness() will reseed the PRNG using a single call 2042 ** to the xRandomness method of the default VFS. 2043 */ 2044 case SQLITE_TESTCTRL_PRNG_RESET: { 2045 sqlite3PrngResetState(); 2046 break; 2047 } 2048 2049 /* 2050 ** sqlite3_test_control(BITVEC_TEST, size, program) 2051 ** 2052 ** Run a test against a Bitvec object of size. The program argument 2053 ** is an array of integers that defines the test. Return -1 on a 2054 ** memory allocation error, 0 on success, or non-zero for an error. 2055 ** See the sqlite3BitvecBuiltinTest() for additional information. 2056 */ 2057 case SQLITE_TESTCTRL_BITVEC_TEST: { 2058 int sz = va_arg(ap, int); 2059 int *aProg = va_arg(ap, int*); 2060 rc = sqlite3BitvecBuiltinTest(sz, aProg); 2061 break; 2062 } 2063 2064 /* 2065 ** sqlite3_test_control(BENIGN_MALLOC_HOOKS, xBegin, xEnd) 2066 ** 2067 ** Register hooks to call to indicate which malloc() failures 2068 ** are benign. 2069 */ 2070 case SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS: { 2071 typedef void (*void_function)(void); 2072 void_function xBenignBegin; 2073 void_function xBenignEnd; 2074 xBenignBegin = va_arg(ap, void_function); 2075 xBenignEnd = va_arg(ap, void_function); 2076 sqlite3BenignMallocHooks(xBenignBegin, xBenignEnd); 2077 break; 2078 } 2079 } 2080 va_end(ap); 2081 #endif /* SQLITE_OMIT_BUILTIN_TEST */ 2082 return rc; 2083 } 2084