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