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