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