xref: /sqlite-3.40.0/src/util.c (revision dee0359d)
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 ** Utility functions used throughout sqlite.
13 **
14 ** This file contains functions for allocating memory, comparing
15 ** strings, and stuff like that.
16 **
17 */
18 #include "sqliteInt.h"
19 #include <stdarg.h>
20 #ifndef SQLITE_OMIT_FLOATING_POINT
21 #include <math.h>
22 #endif
23 
24 /*
25 ** Routine needed to support the testcase() macro.
26 */
27 #ifdef SQLITE_COVERAGE_TEST
28 void sqlite3Coverage(int x){
29   static unsigned dummy = 0;
30   dummy += (unsigned)x;
31 }
32 #endif
33 
34 /*
35 ** Calls to sqlite3FaultSim() are used to simulate a failure during testing,
36 ** or to bypass normal error detection during testing in order to let
37 ** execute proceed futher downstream.
38 **
39 ** In deployment, sqlite3FaultSim() *always* return SQLITE_OK (0).  The
40 ** sqlite3FaultSim() function only returns non-zero during testing.
41 **
42 ** During testing, if the test harness has set a fault-sim callback using
43 ** a call to sqlite3_test_control(SQLITE_TESTCTRL_FAULT_INSTALL), then
44 ** each call to sqlite3FaultSim() is relayed to that application-supplied
45 ** callback and the integer return value form the application-supplied
46 ** callback is returned by sqlite3FaultSim().
47 **
48 ** The integer argument to sqlite3FaultSim() is a code to identify which
49 ** sqlite3FaultSim() instance is being invoked. Each call to sqlite3FaultSim()
50 ** should have a unique code.  To prevent legacy testing applications from
51 ** breaking, the codes should not be changed or reused.
52 */
53 #ifndef SQLITE_UNTESTABLE
54 int sqlite3FaultSim(int iTest){
55   int (*xCallback)(int) = sqlite3GlobalConfig.xTestCallback;
56   return xCallback ? xCallback(iTest) : SQLITE_OK;
57 }
58 #endif
59 
60 #ifndef SQLITE_OMIT_FLOATING_POINT
61 /*
62 ** Return true if the floating point value is Not a Number (NaN).
63 **
64 ** Use the math library isnan() function if compiled with SQLITE_HAVE_ISNAN.
65 ** Otherwise, we have our own implementation that works on most systems.
66 */
67 int sqlite3IsNaN(double x){
68   int rc;   /* The value return */
69 #if !SQLITE_HAVE_ISNAN && !HAVE_ISNAN
70   u64 y;
71   memcpy(&y,&x,sizeof(y));
72   rc = IsNaN(y);
73 #else
74   rc = isnan(x);
75 #endif /* HAVE_ISNAN */
76   testcase( rc );
77   return rc;
78 }
79 #endif /* SQLITE_OMIT_FLOATING_POINT */
80 
81 /*
82 ** Compute a string length that is limited to what can be stored in
83 ** lower 30 bits of a 32-bit signed integer.
84 **
85 ** The value returned will never be negative.  Nor will it ever be greater
86 ** than the actual length of the string.  For very long strings (greater
87 ** than 1GiB) the value returned might be less than the true string length.
88 */
89 int sqlite3Strlen30(const char *z){
90   if( z==0 ) return 0;
91   return 0x3fffffff & (int)strlen(z);
92 }
93 
94 /*
95 ** Return the declared type of a column.  Or return zDflt if the column
96 ** has no declared type.
97 **
98 ** The column type is an extra string stored after the zero-terminator on
99 ** the column name if and only if the COLFLAG_HASTYPE flag is set.
100 */
101 char *sqlite3ColumnType(Column *pCol, char *zDflt){
102   if( pCol->colFlags & COLFLAG_HASTYPE ){
103     return pCol->zCnName + strlen(pCol->zCnName) + 1;
104   }else if( pCol->eCType ){
105     assert( pCol->eCType<=SQLITE_N_STDTYPE );
106     return (char*)sqlite3StdType[pCol->eCType-1];
107   }else{
108     return zDflt;
109   }
110 }
111 
112 /*
113 ** Helper function for sqlite3Error() - called rarely.  Broken out into
114 ** a separate routine to avoid unnecessary register saves on entry to
115 ** sqlite3Error().
116 */
117 static SQLITE_NOINLINE void  sqlite3ErrorFinish(sqlite3 *db, int err_code){
118   if( db->pErr ) sqlite3ValueSetNull(db->pErr);
119   sqlite3SystemError(db, err_code);
120 }
121 
122 /*
123 ** Set the current error code to err_code and clear any prior error message.
124 ** Also set iSysErrno (by calling sqlite3System) if the err_code indicates
125 ** that would be appropriate.
126 */
127 void sqlite3Error(sqlite3 *db, int err_code){
128   assert( db!=0 );
129   db->errCode = err_code;
130   if( err_code || db->pErr ) sqlite3ErrorFinish(db, err_code);
131 }
132 
133 /*
134 ** The equivalent of sqlite3Error(db, SQLITE_OK).  Clear the error state
135 ** and error message.
136 */
137 void sqlite3ErrorClear(sqlite3 *db){
138   assert( db!=0 );
139   db->errCode = SQLITE_OK;
140   if( db->pErr ) sqlite3ValueSetNull(db->pErr);
141 }
142 
143 /*
144 ** Load the sqlite3.iSysErrno field if that is an appropriate thing
145 ** to do based on the SQLite error code in rc.
146 */
147 void sqlite3SystemError(sqlite3 *db, int rc){
148   if( rc==SQLITE_IOERR_NOMEM ) return;
149   rc &= 0xff;
150   if( rc==SQLITE_CANTOPEN || rc==SQLITE_IOERR ){
151     db->iSysErrno = sqlite3OsGetLastError(db->pVfs);
152   }
153 }
154 
155 /*
156 ** Set the most recent error code and error string for the sqlite
157 ** handle "db". The error code is set to "err_code".
158 **
159 ** If it is not NULL, string zFormat specifies the format of the
160 ** error string in the style of the printf functions: The following
161 ** format characters are allowed:
162 **
163 **      %s      Insert a string
164 **      %z      A string that should be freed after use
165 **      %d      Insert an integer
166 **      %T      Insert a token
167 **      %S      Insert the first element of a SrcList
168 **
169 ** zFormat and any string tokens that follow it are assumed to be
170 ** encoded in UTF-8.
171 **
172 ** To clear the most recent error for sqlite handle "db", sqlite3Error
173 ** should be called with err_code set to SQLITE_OK and zFormat set
174 ** to NULL.
175 */
176 void sqlite3ErrorWithMsg(sqlite3 *db, int err_code, const char *zFormat, ...){
177   assert( db!=0 );
178   db->errCode = err_code;
179   sqlite3SystemError(db, err_code);
180   if( zFormat==0 ){
181     sqlite3Error(db, err_code);
182   }else if( db->pErr || (db->pErr = sqlite3ValueNew(db))!=0 ){
183     char *z;
184     va_list ap;
185     va_start(ap, zFormat);
186     z = sqlite3VMPrintf(db, zFormat, ap);
187     va_end(ap);
188     sqlite3ValueSetStr(db->pErr, -1, z, SQLITE_UTF8, SQLITE_DYNAMIC);
189   }
190 }
191 
192 /*
193 ** Add an error message to pParse->zErrMsg and increment pParse->nErr.
194 ** The following formatting characters are allowed:
195 **
196 **      %s      Insert a string
197 **      %z      A string that should be freed after use
198 **      %d      Insert an integer
199 **      %T      Insert a token
200 **      %S      Insert the first element of a SrcList
201 **
202 ** This function should be used to report any error that occurs while
203 ** compiling an SQL statement (i.e. within sqlite3_prepare()). The
204 ** last thing the sqlite3_prepare() function does is copy the error
205 ** stored by this function into the database handle using sqlite3Error().
206 ** Functions sqlite3Error() or sqlite3ErrorWithMsg() should be used
207 ** during statement execution (sqlite3_step() etc.).
208 */
209 void sqlite3ErrorMsg(Parse *pParse, const char *zFormat, ...){
210   char *zMsg;
211   va_list ap;
212   sqlite3 *db = pParse->db;
213   va_start(ap, zFormat);
214   zMsg = sqlite3VMPrintf(db, zFormat, ap);
215   va_end(ap);
216   if( db->suppressErr ){
217     sqlite3DbFree(db, zMsg);
218   }else{
219     pParse->nErr++;
220     sqlite3DbFree(db, pParse->zErrMsg);
221     pParse->zErrMsg = zMsg;
222     pParse->rc = SQLITE_ERROR;
223     pParse->pWith = 0;
224   }
225 }
226 
227 /*
228 ** If database connection db is currently parsing SQL, then transfer
229 ** error code errCode to that parser if the parser has not already
230 ** encountered some other kind of error.
231 */
232 int sqlite3ErrorToParser(sqlite3 *db, int errCode){
233   Parse *pParse;
234   if( db==0 || (pParse = db->pParse)==0 ) return errCode;
235   pParse->rc = errCode;
236   pParse->nErr++;
237   return errCode;
238 }
239 
240 /*
241 ** Convert an SQL-style quoted string into a normal string by removing
242 ** the quote characters.  The conversion is done in-place.  If the
243 ** input does not begin with a quote character, then this routine
244 ** is a no-op.
245 **
246 ** The input string must be zero-terminated.  A new zero-terminator
247 ** is added to the dequoted string.
248 **
249 ** The return value is -1 if no dequoting occurs or the length of the
250 ** dequoted string, exclusive of the zero terminator, if dequoting does
251 ** occur.
252 **
253 ** 2002-02-14: This routine is extended to remove MS-Access style
254 ** brackets from around identifiers.  For example:  "[a-b-c]" becomes
255 ** "a-b-c".
256 */
257 void sqlite3Dequote(char *z){
258   char quote;
259   int i, j;
260   if( z==0 ) return;
261   quote = z[0];
262   if( !sqlite3Isquote(quote) ) return;
263   if( quote=='[' ) quote = ']';
264   for(i=1, j=0;; i++){
265     assert( z[i] );
266     if( z[i]==quote ){
267       if( z[i+1]==quote ){
268         z[j++] = quote;
269         i++;
270       }else{
271         break;
272       }
273     }else{
274       z[j++] = z[i];
275     }
276   }
277   z[j] = 0;
278 }
279 void sqlite3DequoteExpr(Expr *p){
280   assert( !ExprHasProperty(p, EP_IntValue) );
281   assert( sqlite3Isquote(p->u.zToken[0]) );
282   p->flags |= p->u.zToken[0]=='"' ? EP_Quoted|EP_DblQuoted : EP_Quoted;
283   sqlite3Dequote(p->u.zToken);
284 }
285 
286 /*
287 ** If the input token p is quoted, try to adjust the token to remove
288 ** the quotes.  This is not always possible:
289 **
290 **     "abc"     ->   abc
291 **     "ab""cd"  ->   (not possible because of the interior "")
292 **
293 ** Remove the quotes if possible.  This is a optimization.  The overall
294 ** system should still return the correct answer even if this routine
295 ** is always a no-op.
296 */
297 void sqlite3DequoteToken(Token *p){
298   unsigned int i;
299   if( p->n<2 ) return;
300   if( !sqlite3Isquote(p->z[0]) ) return;
301   for(i=1; i<p->n-1; i++){
302     if( sqlite3Isquote(p->z[i]) ) return;
303   }
304   p->n -= 2;
305   p->z++;
306 }
307 
308 /*
309 ** Generate a Token object from a string
310 */
311 void sqlite3TokenInit(Token *p, char *z){
312   p->z = z;
313   p->n = sqlite3Strlen30(z);
314 }
315 
316 /* Convenient short-hand */
317 #define UpperToLower sqlite3UpperToLower
318 
319 /*
320 ** Some systems have stricmp().  Others have strcasecmp().  Because
321 ** there is no consistency, we will define our own.
322 **
323 ** IMPLEMENTATION-OF: R-30243-02494 The sqlite3_stricmp() and
324 ** sqlite3_strnicmp() APIs allow applications and extensions to compare
325 ** the contents of two buffers containing UTF-8 strings in a
326 ** case-independent fashion, using the same definition of "case
327 ** independence" that SQLite uses internally when comparing identifiers.
328 */
329 int sqlite3_stricmp(const char *zLeft, const char *zRight){
330   if( zLeft==0 ){
331     return zRight ? -1 : 0;
332   }else if( zRight==0 ){
333     return 1;
334   }
335   return sqlite3StrICmp(zLeft, zRight);
336 }
337 int sqlite3StrICmp(const char *zLeft, const char *zRight){
338   unsigned char *a, *b;
339   int c, x;
340   a = (unsigned char *)zLeft;
341   b = (unsigned char *)zRight;
342   for(;;){
343     c = *a;
344     x = *b;
345     if( c==x ){
346       if( c==0 ) break;
347     }else{
348       c = (int)UpperToLower[c] - (int)UpperToLower[x];
349       if( c ) break;
350     }
351     a++;
352     b++;
353   }
354   return c;
355 }
356 int sqlite3_strnicmp(const char *zLeft, const char *zRight, int N){
357   register unsigned char *a, *b;
358   if( zLeft==0 ){
359     return zRight ? -1 : 0;
360   }else if( zRight==0 ){
361     return 1;
362   }
363   a = (unsigned char *)zLeft;
364   b = (unsigned char *)zRight;
365   while( N-- > 0 && *a!=0 && UpperToLower[*a]==UpperToLower[*b]){ a++; b++; }
366   return N<0 ? 0 : UpperToLower[*a] - UpperToLower[*b];
367 }
368 
369 /*
370 ** Compute an 8-bit hash on a string that is insensitive to case differences
371 */
372 u8 sqlite3StrIHash(const char *z){
373   u8 h = 0;
374   if( z==0 ) return 0;
375   while( z[0] ){
376     h += UpperToLower[(unsigned char)z[0]];
377     z++;
378   }
379   return h;
380 }
381 
382 /*
383 ** Compute 10 to the E-th power.  Examples:  E==1 results in 10.
384 ** E==2 results in 100.  E==50 results in 1.0e50.
385 **
386 ** This routine only works for values of E between 1 and 341.
387 */
388 static LONGDOUBLE_TYPE sqlite3Pow10(int E){
389 #if defined(_MSC_VER)
390   static const LONGDOUBLE_TYPE x[] = {
391     1.0e+001L,
392     1.0e+002L,
393     1.0e+004L,
394     1.0e+008L,
395     1.0e+016L,
396     1.0e+032L,
397     1.0e+064L,
398     1.0e+128L,
399     1.0e+256L
400   };
401   LONGDOUBLE_TYPE r = 1.0;
402   int i;
403   assert( E>=0 && E<=307 );
404   for(i=0; E!=0; i++, E >>=1){
405     if( E & 1 ) r *= x[i];
406   }
407   return r;
408 #else
409   LONGDOUBLE_TYPE x = 10.0;
410   LONGDOUBLE_TYPE r = 1.0;
411   while(1){
412     if( E & 1 ) r *= x;
413     E >>= 1;
414     if( E==0 ) break;
415     x *= x;
416   }
417   return r;
418 #endif
419 }
420 
421 /*
422 ** The string z[] is an text representation of a real number.
423 ** Convert this string to a double and write it into *pResult.
424 **
425 ** The string z[] is length bytes in length (bytes, not characters) and
426 ** uses the encoding enc.  The string is not necessarily zero-terminated.
427 **
428 ** Return TRUE if the result is a valid real number (or integer) and FALSE
429 ** if the string is empty or contains extraneous text.  More specifically
430 ** return
431 **      1          =>  The input string is a pure integer
432 **      2 or more  =>  The input has a decimal point or eNNN clause
433 **      0 or less  =>  The input string is not a valid number
434 **     -1          =>  Not a valid number, but has a valid prefix which
435 **                     includes a decimal point and/or an eNNN clause
436 **
437 ** Valid numbers are in one of these formats:
438 **
439 **    [+-]digits[E[+-]digits]
440 **    [+-]digits.[digits][E[+-]digits]
441 **    [+-].digits[E[+-]digits]
442 **
443 ** Leading and trailing whitespace is ignored for the purpose of determining
444 ** validity.
445 **
446 ** If some prefix of the input string is a valid number, this routine
447 ** returns FALSE but it still converts the prefix and writes the result
448 ** into *pResult.
449 */
450 #if defined(_MSC_VER)
451 #pragma warning(disable : 4756)
452 #endif
453 int sqlite3AtoF(const char *z, double *pResult, int length, u8 enc){
454 #ifndef SQLITE_OMIT_FLOATING_POINT
455   int incr;
456   const char *zEnd;
457   /* sign * significand * (10 ^ (esign * exponent)) */
458   int sign = 1;    /* sign of significand */
459   i64 s = 0;       /* significand */
460   int d = 0;       /* adjust exponent for shifting decimal point */
461   int esign = 1;   /* sign of exponent */
462   int e = 0;       /* exponent */
463   int eValid = 1;  /* True exponent is either not used or is well-formed */
464   double result;
465   int nDigit = 0;  /* Number of digits processed */
466   int eType = 1;   /* 1: pure integer,  2+: fractional  -1 or less: bad UTF16 */
467 
468   assert( enc==SQLITE_UTF8 || enc==SQLITE_UTF16LE || enc==SQLITE_UTF16BE );
469   *pResult = 0.0;   /* Default return value, in case of an error */
470   if( length==0 ) return 0;
471 
472   if( enc==SQLITE_UTF8 ){
473     incr = 1;
474     zEnd = z + length;
475   }else{
476     int i;
477     incr = 2;
478     length &= ~1;
479     assert( SQLITE_UTF16LE==2 && SQLITE_UTF16BE==3 );
480     testcase( enc==SQLITE_UTF16LE );
481     testcase( enc==SQLITE_UTF16BE );
482     for(i=3-enc; i<length && z[i]==0; i+=2){}
483     if( i<length ) eType = -100;
484     zEnd = &z[i^1];
485     z += (enc&1);
486   }
487 
488   /* skip leading spaces */
489   while( z<zEnd && sqlite3Isspace(*z) ) z+=incr;
490   if( z>=zEnd ) return 0;
491 
492   /* get sign of significand */
493   if( *z=='-' ){
494     sign = -1;
495     z+=incr;
496   }else if( *z=='+' ){
497     z+=incr;
498   }
499 
500   /* copy max significant digits to significand */
501   while( z<zEnd && sqlite3Isdigit(*z) ){
502     s = s*10 + (*z - '0');
503     z+=incr; nDigit++;
504     if( s>=((LARGEST_INT64-9)/10) ){
505       /* skip non-significant significand digits
506       ** (increase exponent by d to shift decimal left) */
507       while( z<zEnd && sqlite3Isdigit(*z) ){ z+=incr; d++; }
508     }
509   }
510   if( z>=zEnd ) goto do_atof_calc;
511 
512   /* if decimal point is present */
513   if( *z=='.' ){
514     z+=incr;
515     eType++;
516     /* copy digits from after decimal to significand
517     ** (decrease exponent by d to shift decimal right) */
518     while( z<zEnd && sqlite3Isdigit(*z) ){
519       if( s<((LARGEST_INT64-9)/10) ){
520         s = s*10 + (*z - '0');
521         d--;
522         nDigit++;
523       }
524       z+=incr;
525     }
526   }
527   if( z>=zEnd ) goto do_atof_calc;
528 
529   /* if exponent is present */
530   if( *z=='e' || *z=='E' ){
531     z+=incr;
532     eValid = 0;
533     eType++;
534 
535     /* This branch is needed to avoid a (harmless) buffer overread.  The
536     ** special comment alerts the mutation tester that the correct answer
537     ** is obtained even if the branch is omitted */
538     if( z>=zEnd ) goto do_atof_calc;              /*PREVENTS-HARMLESS-OVERREAD*/
539 
540     /* get sign of exponent */
541     if( *z=='-' ){
542       esign = -1;
543       z+=incr;
544     }else if( *z=='+' ){
545       z+=incr;
546     }
547     /* copy digits to exponent */
548     while( z<zEnd && sqlite3Isdigit(*z) ){
549       e = e<10000 ? (e*10 + (*z - '0')) : 10000;
550       z+=incr;
551       eValid = 1;
552     }
553   }
554 
555   /* skip trailing spaces */
556   while( z<zEnd && sqlite3Isspace(*z) ) z+=incr;
557 
558 do_atof_calc:
559   /* adjust exponent by d, and update sign */
560   e = (e*esign) + d;
561   if( e<0 ) {
562     esign = -1;
563     e *= -1;
564   } else {
565     esign = 1;
566   }
567 
568   if( s==0 ) {
569     /* In the IEEE 754 standard, zero is signed. */
570     result = sign<0 ? -(double)0 : (double)0;
571   } else {
572     /* Attempt to reduce exponent.
573     **
574     ** Branches that are not required for the correct answer but which only
575     ** help to obtain the correct answer faster are marked with special
576     ** comments, as a hint to the mutation tester.
577     */
578     while( e>0 ){                                       /*OPTIMIZATION-IF-TRUE*/
579       if( esign>0 ){
580         if( s>=(LARGEST_INT64/10) ) break;             /*OPTIMIZATION-IF-FALSE*/
581         s *= 10;
582       }else{
583         if( s%10!=0 ) break;                           /*OPTIMIZATION-IF-FALSE*/
584         s /= 10;
585       }
586       e--;
587     }
588 
589     /* adjust the sign of significand */
590     s = sign<0 ? -s : s;
591 
592     if( e==0 ){                                         /*OPTIMIZATION-IF-TRUE*/
593       result = (double)s;
594     }else{
595       /* attempt to handle extremely small/large numbers better */
596       if( e>307 ){                                      /*OPTIMIZATION-IF-TRUE*/
597         if( e<342 ){                                    /*OPTIMIZATION-IF-TRUE*/
598           LONGDOUBLE_TYPE scale = sqlite3Pow10(e-308);
599           if( esign<0 ){
600             result = s / scale;
601             result /= 1.0e+308;
602           }else{
603             result = s * scale;
604             result *= 1.0e+308;
605           }
606         }else{ assert( e>=342 );
607           if( esign<0 ){
608             result = 0.0*s;
609           }else{
610 #ifdef INFINITY
611             result = INFINITY*s;
612 #else
613             result = 1e308*1e308*s;  /* Infinity */
614 #endif
615           }
616         }
617       }else{
618         LONGDOUBLE_TYPE scale = sqlite3Pow10(e);
619         if( esign<0 ){
620           result = s / scale;
621         }else{
622           result = s * scale;
623         }
624       }
625     }
626   }
627 
628   /* store the result */
629   *pResult = result;
630 
631   /* return true if number and no extra non-whitespace chracters after */
632   if( z==zEnd && nDigit>0 && eValid && eType>0 ){
633     return eType;
634   }else if( eType>=2 && (eType==3 || eValid) && nDigit>0 ){
635     return -1;
636   }else{
637     return 0;
638   }
639 #else
640   return !sqlite3Atoi64(z, pResult, length, enc);
641 #endif /* SQLITE_OMIT_FLOATING_POINT */
642 }
643 #if defined(_MSC_VER)
644 #pragma warning(default : 4756)
645 #endif
646 
647 /*
648 ** Render an signed 64-bit integer as text.  Store the result in zOut[].
649 **
650 ** The caller must ensure that zOut[] is at least 21 bytes in size.
651 */
652 void sqlite3Int64ToText(i64 v, char *zOut){
653   int i;
654   u64 x;
655   char zTemp[22];
656   if( v<0 ){
657     x = (v==SMALLEST_INT64) ? ((u64)1)<<63 : (u64)-v;
658   }else{
659     x = v;
660   }
661   i = sizeof(zTemp)-2;
662   zTemp[sizeof(zTemp)-1] = 0;
663   do{
664     zTemp[i--] = (x%10) + '0';
665     x = x/10;
666   }while( x );
667   if( v<0 ) zTemp[i--] = '-';
668   memcpy(zOut, &zTemp[i+1], sizeof(zTemp)-1-i);
669 }
670 
671 /*
672 ** Compare the 19-character string zNum against the text representation
673 ** value 2^63:  9223372036854775808.  Return negative, zero, or positive
674 ** if zNum is less than, equal to, or greater than the string.
675 ** Note that zNum must contain exactly 19 characters.
676 **
677 ** Unlike memcmp() this routine is guaranteed to return the difference
678 ** in the values of the last digit if the only difference is in the
679 ** last digit.  So, for example,
680 **
681 **      compare2pow63("9223372036854775800", 1)
682 **
683 ** will return -8.
684 */
685 static int compare2pow63(const char *zNum, int incr){
686   int c = 0;
687   int i;
688                     /* 012345678901234567 */
689   const char *pow63 = "922337203685477580";
690   for(i=0; c==0 && i<18; i++){
691     c = (zNum[i*incr]-pow63[i])*10;
692   }
693   if( c==0 ){
694     c = zNum[18*incr] - '8';
695     testcase( c==(-1) );
696     testcase( c==0 );
697     testcase( c==(+1) );
698   }
699   return c;
700 }
701 
702 /*
703 ** Convert zNum to a 64-bit signed integer.  zNum must be decimal. This
704 ** routine does *not* accept hexadecimal notation.
705 **
706 ** Returns:
707 **
708 **    -1    Not even a prefix of the input text looks like an integer
709 **     0    Successful transformation.  Fits in a 64-bit signed integer.
710 **     1    Excess non-space text after the integer value
711 **     2    Integer too large for a 64-bit signed integer or is malformed
712 **     3    Special case of 9223372036854775808
713 **
714 ** length is the number of bytes in the string (bytes, not characters).
715 ** The string is not necessarily zero-terminated.  The encoding is
716 ** given by enc.
717 */
718 int sqlite3Atoi64(const char *zNum, i64 *pNum, int length, u8 enc){
719   int incr;
720   u64 u = 0;
721   int neg = 0; /* assume positive */
722   int i;
723   int c = 0;
724   int nonNum = 0;  /* True if input contains UTF16 with high byte non-zero */
725   int rc;          /* Baseline return code */
726   const char *zStart;
727   const char *zEnd = zNum + length;
728   assert( enc==SQLITE_UTF8 || enc==SQLITE_UTF16LE || enc==SQLITE_UTF16BE );
729   if( enc==SQLITE_UTF8 ){
730     incr = 1;
731   }else{
732     incr = 2;
733     length &= ~1;
734     assert( SQLITE_UTF16LE==2 && SQLITE_UTF16BE==3 );
735     for(i=3-enc; i<length && zNum[i]==0; i+=2){}
736     nonNum = i<length;
737     zEnd = &zNum[i^1];
738     zNum += (enc&1);
739   }
740   while( zNum<zEnd && sqlite3Isspace(*zNum) ) zNum+=incr;
741   if( zNum<zEnd ){
742     if( *zNum=='-' ){
743       neg = 1;
744       zNum+=incr;
745     }else if( *zNum=='+' ){
746       zNum+=incr;
747     }
748   }
749   zStart = zNum;
750   while( zNum<zEnd && zNum[0]=='0' ){ zNum+=incr; } /* Skip leading zeros. */
751   for(i=0; &zNum[i]<zEnd && (c=zNum[i])>='0' && c<='9'; i+=incr){
752     u = u*10 + c - '0';
753   }
754   testcase( i==18*incr );
755   testcase( i==19*incr );
756   testcase( i==20*incr );
757   if( u>LARGEST_INT64 ){
758     /* This test and assignment is needed only to suppress UB warnings
759     ** from clang and -fsanitize=undefined.  This test and assignment make
760     ** the code a little larger and slower, and no harm comes from omitting
761     ** them, but we must appaise the undefined-behavior pharisees. */
762     *pNum = neg ? SMALLEST_INT64 : LARGEST_INT64;
763   }else if( neg ){
764     *pNum = -(i64)u;
765   }else{
766     *pNum = (i64)u;
767   }
768   rc = 0;
769   if( i==0 && zStart==zNum ){    /* No digits */
770     rc = -1;
771   }else if( nonNum ){            /* UTF16 with high-order bytes non-zero */
772     rc = 1;
773   }else if( &zNum[i]<zEnd ){     /* Extra bytes at the end */
774     int jj = i;
775     do{
776       if( !sqlite3Isspace(zNum[jj]) ){
777         rc = 1;          /* Extra non-space text after the integer */
778         break;
779       }
780       jj += incr;
781     }while( &zNum[jj]<zEnd );
782   }
783   if( i<19*incr ){
784     /* Less than 19 digits, so we know that it fits in 64 bits */
785     assert( u<=LARGEST_INT64 );
786     return rc;
787   }else{
788     /* zNum is a 19-digit numbers.  Compare it against 9223372036854775808. */
789     c = i>19*incr ? 1 : compare2pow63(zNum, incr);
790     if( c<0 ){
791       /* zNum is less than 9223372036854775808 so it fits */
792       assert( u<=LARGEST_INT64 );
793       return rc;
794     }else{
795       *pNum = neg ? SMALLEST_INT64 : LARGEST_INT64;
796       if( c>0 ){
797         /* zNum is greater than 9223372036854775808 so it overflows */
798         return 2;
799       }else{
800         /* zNum is exactly 9223372036854775808.  Fits if negative.  The
801         ** special case 2 overflow if positive */
802         assert( u-1==LARGEST_INT64 );
803         return neg ? rc : 3;
804       }
805     }
806   }
807 }
808 
809 /*
810 ** Transform a UTF-8 integer literal, in either decimal or hexadecimal,
811 ** into a 64-bit signed integer.  This routine accepts hexadecimal literals,
812 ** whereas sqlite3Atoi64() does not.
813 **
814 ** Returns:
815 **
816 **     0    Successful transformation.  Fits in a 64-bit signed integer.
817 **     1    Excess text after the integer value
818 **     2    Integer too large for a 64-bit signed integer or is malformed
819 **     3    Special case of 9223372036854775808
820 */
821 int sqlite3DecOrHexToI64(const char *z, i64 *pOut){
822 #ifndef SQLITE_OMIT_HEX_INTEGER
823   if( z[0]=='0'
824    && (z[1]=='x' || z[1]=='X')
825   ){
826     u64 u = 0;
827     int i, k;
828     for(i=2; z[i]=='0'; i++){}
829     for(k=i; sqlite3Isxdigit(z[k]); k++){
830       u = u*16 + sqlite3HexToInt(z[k]);
831     }
832     memcpy(pOut, &u, 8);
833     return (z[k]==0 && k-i<=16) ? 0 : 2;
834   }else
835 #endif /* SQLITE_OMIT_HEX_INTEGER */
836   {
837     return sqlite3Atoi64(z, pOut, sqlite3Strlen30(z), SQLITE_UTF8);
838   }
839 }
840 
841 /*
842 ** If zNum represents an integer that will fit in 32-bits, then set
843 ** *pValue to that integer and return true.  Otherwise return false.
844 **
845 ** This routine accepts both decimal and hexadecimal notation for integers.
846 **
847 ** Any non-numeric characters that following zNum are ignored.
848 ** This is different from sqlite3Atoi64() which requires the
849 ** input number to be zero-terminated.
850 */
851 int sqlite3GetInt32(const char *zNum, int *pValue){
852   sqlite_int64 v = 0;
853   int i, c;
854   int neg = 0;
855   if( zNum[0]=='-' ){
856     neg = 1;
857     zNum++;
858   }else if( zNum[0]=='+' ){
859     zNum++;
860   }
861 #ifndef SQLITE_OMIT_HEX_INTEGER
862   else if( zNum[0]=='0'
863         && (zNum[1]=='x' || zNum[1]=='X')
864         && sqlite3Isxdigit(zNum[2])
865   ){
866     u32 u = 0;
867     zNum += 2;
868     while( zNum[0]=='0' ) zNum++;
869     for(i=0; sqlite3Isxdigit(zNum[i]) && i<8; i++){
870       u = u*16 + sqlite3HexToInt(zNum[i]);
871     }
872     if( (u&0x80000000)==0 && sqlite3Isxdigit(zNum[i])==0 ){
873       memcpy(pValue, &u, 4);
874       return 1;
875     }else{
876       return 0;
877     }
878   }
879 #endif
880   if( !sqlite3Isdigit(zNum[0]) ) return 0;
881   while( zNum[0]=='0' ) zNum++;
882   for(i=0; i<11 && (c = zNum[i] - '0')>=0 && c<=9; i++){
883     v = v*10 + c;
884   }
885 
886   /* The longest decimal representation of a 32 bit integer is 10 digits:
887   **
888   **             1234567890
889   **     2^31 -> 2147483648
890   */
891   testcase( i==10 );
892   if( i>10 ){
893     return 0;
894   }
895   testcase( v-neg==2147483647 );
896   if( v-neg>2147483647 ){
897     return 0;
898   }
899   if( neg ){
900     v = -v;
901   }
902   *pValue = (int)v;
903   return 1;
904 }
905 
906 /*
907 ** Return a 32-bit integer value extracted from a string.  If the
908 ** string is not an integer, just return 0.
909 */
910 int sqlite3Atoi(const char *z){
911   int x = 0;
912   sqlite3GetInt32(z, &x);
913   return x;
914 }
915 
916 /*
917 ** Try to convert z into an unsigned 32-bit integer.  Return true on
918 ** success and false if there is an error.
919 **
920 ** Only decimal notation is accepted.
921 */
922 int sqlite3GetUInt32(const char *z, u32 *pI){
923   u64 v = 0;
924   int i;
925   for(i=0; sqlite3Isdigit(z[i]); i++){
926     v = v*10 + z[i] - '0';
927     if( v>4294967296LL ){ *pI = 0; return 0; }
928   }
929   if( i==0 || z[i]!=0 ){ *pI = 0; return 0; }
930   *pI = (u32)v;
931   return 1;
932 }
933 
934 /*
935 ** The variable-length integer encoding is as follows:
936 **
937 ** KEY:
938 **         A = 0xxxxxxx    7 bits of data and one flag bit
939 **         B = 1xxxxxxx    7 bits of data and one flag bit
940 **         C = xxxxxxxx    8 bits of data
941 **
942 **  7 bits - A
943 ** 14 bits - BA
944 ** 21 bits - BBA
945 ** 28 bits - BBBA
946 ** 35 bits - BBBBA
947 ** 42 bits - BBBBBA
948 ** 49 bits - BBBBBBA
949 ** 56 bits - BBBBBBBA
950 ** 64 bits - BBBBBBBBC
951 */
952 
953 /*
954 ** Write a 64-bit variable-length integer to memory starting at p[0].
955 ** The length of data write will be between 1 and 9 bytes.  The number
956 ** of bytes written is returned.
957 **
958 ** A variable-length integer consists of the lower 7 bits of each byte
959 ** for all bytes that have the 8th bit set and one byte with the 8th
960 ** bit clear.  Except, if we get to the 9th byte, it stores the full
961 ** 8 bits and is the last byte.
962 */
963 static int SQLITE_NOINLINE putVarint64(unsigned char *p, u64 v){
964   int i, j, n;
965   u8 buf[10];
966   if( v & (((u64)0xff000000)<<32) ){
967     p[8] = (u8)v;
968     v >>= 8;
969     for(i=7; i>=0; i--){
970       p[i] = (u8)((v & 0x7f) | 0x80);
971       v >>= 7;
972     }
973     return 9;
974   }
975   n = 0;
976   do{
977     buf[n++] = (u8)((v & 0x7f) | 0x80);
978     v >>= 7;
979   }while( v!=0 );
980   buf[0] &= 0x7f;
981   assert( n<=9 );
982   for(i=0, j=n-1; j>=0; j--, i++){
983     p[i] = buf[j];
984   }
985   return n;
986 }
987 int sqlite3PutVarint(unsigned char *p, u64 v){
988   if( v<=0x7f ){
989     p[0] = v&0x7f;
990     return 1;
991   }
992   if( v<=0x3fff ){
993     p[0] = ((v>>7)&0x7f)|0x80;
994     p[1] = v&0x7f;
995     return 2;
996   }
997   return putVarint64(p,v);
998 }
999 
1000 /*
1001 ** Bitmasks used by sqlite3GetVarint().  These precomputed constants
1002 ** are defined here rather than simply putting the constant expressions
1003 ** inline in order to work around bugs in the RVT compiler.
1004 **
1005 ** SLOT_2_0     A mask for  (0x7f<<14) | 0x7f
1006 **
1007 ** SLOT_4_2_0   A mask for  (0x7f<<28) | SLOT_2_0
1008 */
1009 #define SLOT_2_0     0x001fc07f
1010 #define SLOT_4_2_0   0xf01fc07f
1011 
1012 
1013 /*
1014 ** Read a 64-bit variable-length integer from memory starting at p[0].
1015 ** Return the number of bytes read.  The value is stored in *v.
1016 */
1017 u8 sqlite3GetVarint(const unsigned char *p, u64 *v){
1018   u32 a,b,s;
1019 
1020   if( ((signed char*)p)[0]>=0 ){
1021     *v = *p;
1022     return 1;
1023   }
1024   if( ((signed char*)p)[1]>=0 ){
1025     *v = ((u32)(p[0]&0x7f)<<7) | p[1];
1026     return 2;
1027   }
1028 
1029   /* Verify that constants are precomputed correctly */
1030   assert( SLOT_2_0 == ((0x7f<<14) | (0x7f)) );
1031   assert( SLOT_4_2_0 == ((0xfU<<28) | (0x7f<<14) | (0x7f)) );
1032 
1033   a = ((u32)p[0])<<14;
1034   b = p[1];
1035   p += 2;
1036   a |= *p;
1037   /* a: p0<<14 | p2 (unmasked) */
1038   if (!(a&0x80))
1039   {
1040     a &= SLOT_2_0;
1041     b &= 0x7f;
1042     b = b<<7;
1043     a |= b;
1044     *v = a;
1045     return 3;
1046   }
1047 
1048   /* CSE1 from below */
1049   a &= SLOT_2_0;
1050   p++;
1051   b = b<<14;
1052   b |= *p;
1053   /* b: p1<<14 | p3 (unmasked) */
1054   if (!(b&0x80))
1055   {
1056     b &= SLOT_2_0;
1057     /* moved CSE1 up */
1058     /* a &= (0x7f<<14)|(0x7f); */
1059     a = a<<7;
1060     a |= b;
1061     *v = a;
1062     return 4;
1063   }
1064 
1065   /* a: p0<<14 | p2 (masked) */
1066   /* b: p1<<14 | p3 (unmasked) */
1067   /* 1:save off p0<<21 | p1<<14 | p2<<7 | p3 (masked) */
1068   /* moved CSE1 up */
1069   /* a &= (0x7f<<14)|(0x7f); */
1070   b &= SLOT_2_0;
1071   s = a;
1072   /* s: p0<<14 | p2 (masked) */
1073 
1074   p++;
1075   a = a<<14;
1076   a |= *p;
1077   /* a: p0<<28 | p2<<14 | p4 (unmasked) */
1078   if (!(a&0x80))
1079   {
1080     /* we can skip these cause they were (effectively) done above
1081     ** while calculating s */
1082     /* a &= (0x7f<<28)|(0x7f<<14)|(0x7f); */
1083     /* b &= (0x7f<<14)|(0x7f); */
1084     b = b<<7;
1085     a |= b;
1086     s = s>>18;
1087     *v = ((u64)s)<<32 | a;
1088     return 5;
1089   }
1090 
1091   /* 2:save off p0<<21 | p1<<14 | p2<<7 | p3 (masked) */
1092   s = s<<7;
1093   s |= b;
1094   /* s: p0<<21 | p1<<14 | p2<<7 | p3 (masked) */
1095 
1096   p++;
1097   b = b<<14;
1098   b |= *p;
1099   /* b: p1<<28 | p3<<14 | p5 (unmasked) */
1100   if (!(b&0x80))
1101   {
1102     /* we can skip this cause it was (effectively) done above in calc'ing s */
1103     /* b &= (0x7f<<28)|(0x7f<<14)|(0x7f); */
1104     a &= SLOT_2_0;
1105     a = a<<7;
1106     a |= b;
1107     s = s>>18;
1108     *v = ((u64)s)<<32 | a;
1109     return 6;
1110   }
1111 
1112   p++;
1113   a = a<<14;
1114   a |= *p;
1115   /* a: p2<<28 | p4<<14 | p6 (unmasked) */
1116   if (!(a&0x80))
1117   {
1118     a &= SLOT_4_2_0;
1119     b &= SLOT_2_0;
1120     b = b<<7;
1121     a |= b;
1122     s = s>>11;
1123     *v = ((u64)s)<<32 | a;
1124     return 7;
1125   }
1126 
1127   /* CSE2 from below */
1128   a &= SLOT_2_0;
1129   p++;
1130   b = b<<14;
1131   b |= *p;
1132   /* b: p3<<28 | p5<<14 | p7 (unmasked) */
1133   if (!(b&0x80))
1134   {
1135     b &= SLOT_4_2_0;
1136     /* moved CSE2 up */
1137     /* a &= (0x7f<<14)|(0x7f); */
1138     a = a<<7;
1139     a |= b;
1140     s = s>>4;
1141     *v = ((u64)s)<<32 | a;
1142     return 8;
1143   }
1144 
1145   p++;
1146   a = a<<15;
1147   a |= *p;
1148   /* a: p4<<29 | p6<<15 | p8 (unmasked) */
1149 
1150   /* moved CSE2 up */
1151   /* a &= (0x7f<<29)|(0x7f<<15)|(0xff); */
1152   b &= SLOT_2_0;
1153   b = b<<8;
1154   a |= b;
1155 
1156   s = s<<4;
1157   b = p[-4];
1158   b &= 0x7f;
1159   b = b>>3;
1160   s |= b;
1161 
1162   *v = ((u64)s)<<32 | a;
1163 
1164   return 9;
1165 }
1166 
1167 /*
1168 ** Read a 32-bit variable-length integer from memory starting at p[0].
1169 ** Return the number of bytes read.  The value is stored in *v.
1170 **
1171 ** If the varint stored in p[0] is larger than can fit in a 32-bit unsigned
1172 ** integer, then set *v to 0xffffffff.
1173 **
1174 ** A MACRO version, getVarint32, is provided which inlines the
1175 ** single-byte case.  All code should use the MACRO version as
1176 ** this function assumes the single-byte case has already been handled.
1177 */
1178 u8 sqlite3GetVarint32(const unsigned char *p, u32 *v){
1179   u32 a,b;
1180 
1181   /* The 1-byte case.  Overwhelmingly the most common.  Handled inline
1182   ** by the getVarin32() macro */
1183   a = *p;
1184   /* a: p0 (unmasked) */
1185 #ifndef getVarint32
1186   if (!(a&0x80))
1187   {
1188     /* Values between 0 and 127 */
1189     *v = a;
1190     return 1;
1191   }
1192 #endif
1193 
1194   /* The 2-byte case */
1195   p++;
1196   b = *p;
1197   /* b: p1 (unmasked) */
1198   if (!(b&0x80))
1199   {
1200     /* Values between 128 and 16383 */
1201     a &= 0x7f;
1202     a = a<<7;
1203     *v = a | b;
1204     return 2;
1205   }
1206 
1207   /* The 3-byte case */
1208   p++;
1209   a = a<<14;
1210   a |= *p;
1211   /* a: p0<<14 | p2 (unmasked) */
1212   if (!(a&0x80))
1213   {
1214     /* Values between 16384 and 2097151 */
1215     a &= (0x7f<<14)|(0x7f);
1216     b &= 0x7f;
1217     b = b<<7;
1218     *v = a | b;
1219     return 3;
1220   }
1221 
1222   /* A 32-bit varint is used to store size information in btrees.
1223   ** Objects are rarely larger than 2MiB limit of a 3-byte varint.
1224   ** A 3-byte varint is sufficient, for example, to record the size
1225   ** of a 1048569-byte BLOB or string.
1226   **
1227   ** We only unroll the first 1-, 2-, and 3- byte cases.  The very
1228   ** rare larger cases can be handled by the slower 64-bit varint
1229   ** routine.
1230   */
1231 #if 1
1232   {
1233     u64 v64;
1234     u8 n;
1235 
1236     n = sqlite3GetVarint(p-2, &v64);
1237     assert( n>3 && n<=9 );
1238     if( (v64 & SQLITE_MAX_U32)!=v64 ){
1239       *v = 0xffffffff;
1240     }else{
1241       *v = (u32)v64;
1242     }
1243     return n;
1244   }
1245 
1246 #else
1247   /* For following code (kept for historical record only) shows an
1248   ** unrolling for the 3- and 4-byte varint cases.  This code is
1249   ** slightly faster, but it is also larger and much harder to test.
1250   */
1251   p++;
1252   b = b<<14;
1253   b |= *p;
1254   /* b: p1<<14 | p3 (unmasked) */
1255   if (!(b&0x80))
1256   {
1257     /* Values between 2097152 and 268435455 */
1258     b &= (0x7f<<14)|(0x7f);
1259     a &= (0x7f<<14)|(0x7f);
1260     a = a<<7;
1261     *v = a | b;
1262     return 4;
1263   }
1264 
1265   p++;
1266   a = a<<14;
1267   a |= *p;
1268   /* a: p0<<28 | p2<<14 | p4 (unmasked) */
1269   if (!(a&0x80))
1270   {
1271     /* Values  between 268435456 and 34359738367 */
1272     a &= SLOT_4_2_0;
1273     b &= SLOT_4_2_0;
1274     b = b<<7;
1275     *v = a | b;
1276     return 5;
1277   }
1278 
1279   /* We can only reach this point when reading a corrupt database
1280   ** file.  In that case we are not in any hurry.  Use the (relatively
1281   ** slow) general-purpose sqlite3GetVarint() routine to extract the
1282   ** value. */
1283   {
1284     u64 v64;
1285     u8 n;
1286 
1287     p -= 4;
1288     n = sqlite3GetVarint(p, &v64);
1289     assert( n>5 && n<=9 );
1290     *v = (u32)v64;
1291     return n;
1292   }
1293 #endif
1294 }
1295 
1296 /*
1297 ** Return the number of bytes that will be needed to store the given
1298 ** 64-bit integer.
1299 */
1300 int sqlite3VarintLen(u64 v){
1301   int i;
1302   for(i=1; (v >>= 7)!=0; i++){ assert( i<10 ); }
1303   return i;
1304 }
1305 
1306 
1307 /*
1308 ** Read or write a four-byte big-endian integer value.
1309 */
1310 u32 sqlite3Get4byte(const u8 *p){
1311 #if SQLITE_BYTEORDER==4321
1312   u32 x;
1313   memcpy(&x,p,4);
1314   return x;
1315 #elif SQLITE_BYTEORDER==1234 && GCC_VERSION>=4003000
1316   u32 x;
1317   memcpy(&x,p,4);
1318   return __builtin_bswap32(x);
1319 #elif SQLITE_BYTEORDER==1234 && MSVC_VERSION>=1300
1320   u32 x;
1321   memcpy(&x,p,4);
1322   return _byteswap_ulong(x);
1323 #else
1324   testcase( p[0]&0x80 );
1325   return ((unsigned)p[0]<<24) | (p[1]<<16) | (p[2]<<8) | p[3];
1326 #endif
1327 }
1328 void sqlite3Put4byte(unsigned char *p, u32 v){
1329 #if SQLITE_BYTEORDER==4321
1330   memcpy(p,&v,4);
1331 #elif SQLITE_BYTEORDER==1234 && GCC_VERSION>=4003000
1332   u32 x = __builtin_bswap32(v);
1333   memcpy(p,&x,4);
1334 #elif SQLITE_BYTEORDER==1234 && MSVC_VERSION>=1300
1335   u32 x = _byteswap_ulong(v);
1336   memcpy(p,&x,4);
1337 #else
1338   p[0] = (u8)(v>>24);
1339   p[1] = (u8)(v>>16);
1340   p[2] = (u8)(v>>8);
1341   p[3] = (u8)v;
1342 #endif
1343 }
1344 
1345 
1346 
1347 /*
1348 ** Translate a single byte of Hex into an integer.
1349 ** This routine only works if h really is a valid hexadecimal
1350 ** character:  0..9a..fA..F
1351 */
1352 u8 sqlite3HexToInt(int h){
1353   assert( (h>='0' && h<='9') ||  (h>='a' && h<='f') ||  (h>='A' && h<='F') );
1354 #ifdef SQLITE_ASCII
1355   h += 9*(1&(h>>6));
1356 #endif
1357 #ifdef SQLITE_EBCDIC
1358   h += 9*(1&~(h>>4));
1359 #endif
1360   return (u8)(h & 0xf);
1361 }
1362 
1363 #if !defined(SQLITE_OMIT_BLOB_LITERAL)
1364 /*
1365 ** Convert a BLOB literal of the form "x'hhhhhh'" into its binary
1366 ** value.  Return a pointer to its binary value.  Space to hold the
1367 ** binary value has been obtained from malloc and must be freed by
1368 ** the calling routine.
1369 */
1370 void *sqlite3HexToBlob(sqlite3 *db, const char *z, int n){
1371   char *zBlob;
1372   int i;
1373 
1374   zBlob = (char *)sqlite3DbMallocRawNN(db, n/2 + 1);
1375   n--;
1376   if( zBlob ){
1377     for(i=0; i<n; i+=2){
1378       zBlob[i/2] = (sqlite3HexToInt(z[i])<<4) | sqlite3HexToInt(z[i+1]);
1379     }
1380     zBlob[i/2] = 0;
1381   }
1382   return zBlob;
1383 }
1384 #endif /* !SQLITE_OMIT_BLOB_LITERAL */
1385 
1386 /*
1387 ** Log an error that is an API call on a connection pointer that should
1388 ** not have been used.  The "type" of connection pointer is given as the
1389 ** argument.  The zType is a word like "NULL" or "closed" or "invalid".
1390 */
1391 static void logBadConnection(const char *zType){
1392   sqlite3_log(SQLITE_MISUSE,
1393      "API call with %s database connection pointer",
1394      zType
1395   );
1396 }
1397 
1398 /*
1399 ** Check to make sure we have a valid db pointer.  This test is not
1400 ** foolproof but it does provide some measure of protection against
1401 ** misuse of the interface such as passing in db pointers that are
1402 ** NULL or which have been previously closed.  If this routine returns
1403 ** 1 it means that the db pointer is valid and 0 if it should not be
1404 ** dereferenced for any reason.  The calling function should invoke
1405 ** SQLITE_MISUSE immediately.
1406 **
1407 ** sqlite3SafetyCheckOk() requires that the db pointer be valid for
1408 ** use.  sqlite3SafetyCheckSickOrOk() allows a db pointer that failed to
1409 ** open properly and is not fit for general use but which can be
1410 ** used as an argument to sqlite3_errmsg() or sqlite3_close().
1411 */
1412 int sqlite3SafetyCheckOk(sqlite3 *db){
1413   u8 eOpenState;
1414   if( db==0 ){
1415     logBadConnection("NULL");
1416     return 0;
1417   }
1418   eOpenState = db->eOpenState;
1419   if( eOpenState!=SQLITE_STATE_OPEN ){
1420     if( sqlite3SafetyCheckSickOrOk(db) ){
1421       testcase( sqlite3GlobalConfig.xLog!=0 );
1422       logBadConnection("unopened");
1423     }
1424     return 0;
1425   }else{
1426     return 1;
1427   }
1428 }
1429 int sqlite3SafetyCheckSickOrOk(sqlite3 *db){
1430   u8 eOpenState;
1431   eOpenState = db->eOpenState;
1432   if( eOpenState!=SQLITE_STATE_SICK &&
1433       eOpenState!=SQLITE_STATE_OPEN &&
1434       eOpenState!=SQLITE_STATE_BUSY ){
1435     testcase( sqlite3GlobalConfig.xLog!=0 );
1436     logBadConnection("invalid");
1437     return 0;
1438   }else{
1439     return 1;
1440   }
1441 }
1442 
1443 /*
1444 ** Attempt to add, substract, or multiply the 64-bit signed value iB against
1445 ** the other 64-bit signed integer at *pA and store the result in *pA.
1446 ** Return 0 on success.  Or if the operation would have resulted in an
1447 ** overflow, leave *pA unchanged and return 1.
1448 */
1449 int sqlite3AddInt64(i64 *pA, i64 iB){
1450 #if GCC_VERSION>=5004000 && !defined(__INTEL_COMPILER)
1451   return __builtin_add_overflow(*pA, iB, pA);
1452 #else
1453   i64 iA = *pA;
1454   testcase( iA==0 ); testcase( iA==1 );
1455   testcase( iB==-1 ); testcase( iB==0 );
1456   if( iB>=0 ){
1457     testcase( iA>0 && LARGEST_INT64 - iA == iB );
1458     testcase( iA>0 && LARGEST_INT64 - iA == iB - 1 );
1459     if( iA>0 && LARGEST_INT64 - iA < iB ) return 1;
1460   }else{
1461     testcase( iA<0 && -(iA + LARGEST_INT64) == iB + 1 );
1462     testcase( iA<0 && -(iA + LARGEST_INT64) == iB + 2 );
1463     if( iA<0 && -(iA + LARGEST_INT64) > iB + 1 ) return 1;
1464   }
1465   *pA += iB;
1466   return 0;
1467 #endif
1468 }
1469 int sqlite3SubInt64(i64 *pA, i64 iB){
1470 #if GCC_VERSION>=5004000 && !defined(__INTEL_COMPILER)
1471   return __builtin_sub_overflow(*pA, iB, pA);
1472 #else
1473   testcase( iB==SMALLEST_INT64+1 );
1474   if( iB==SMALLEST_INT64 ){
1475     testcase( (*pA)==(-1) ); testcase( (*pA)==0 );
1476     if( (*pA)>=0 ) return 1;
1477     *pA -= iB;
1478     return 0;
1479   }else{
1480     return sqlite3AddInt64(pA, -iB);
1481   }
1482 #endif
1483 }
1484 int sqlite3MulInt64(i64 *pA, i64 iB){
1485 #if GCC_VERSION>=5004000 && !defined(__INTEL_COMPILER)
1486   return __builtin_mul_overflow(*pA, iB, pA);
1487 #else
1488   i64 iA = *pA;
1489   if( iB>0 ){
1490     if( iA>LARGEST_INT64/iB ) return 1;
1491     if( iA<SMALLEST_INT64/iB ) return 1;
1492   }else if( iB<0 ){
1493     if( iA>0 ){
1494       if( iB<SMALLEST_INT64/iA ) return 1;
1495     }else if( iA<0 ){
1496       if( iB==SMALLEST_INT64 ) return 1;
1497       if( iA==SMALLEST_INT64 ) return 1;
1498       if( -iA>LARGEST_INT64/-iB ) return 1;
1499     }
1500   }
1501   *pA = iA*iB;
1502   return 0;
1503 #endif
1504 }
1505 
1506 /*
1507 ** Compute the absolute value of a 32-bit signed integer, of possible.  Or
1508 ** if the integer has a value of -2147483648, return +2147483647
1509 */
1510 int sqlite3AbsInt32(int x){
1511   if( x>=0 ) return x;
1512   if( x==(int)0x80000000 ) return 0x7fffffff;
1513   return -x;
1514 }
1515 
1516 #ifdef SQLITE_ENABLE_8_3_NAMES
1517 /*
1518 ** If SQLITE_ENABLE_8_3_NAMES is set at compile-time and if the database
1519 ** filename in zBaseFilename is a URI with the "8_3_names=1" parameter and
1520 ** if filename in z[] has a suffix (a.k.a. "extension") that is longer than
1521 ** three characters, then shorten the suffix on z[] to be the last three
1522 ** characters of the original suffix.
1523 **
1524 ** If SQLITE_ENABLE_8_3_NAMES is set to 2 at compile-time, then always
1525 ** do the suffix shortening regardless of URI parameter.
1526 **
1527 ** Examples:
1528 **
1529 **     test.db-journal    =>   test.nal
1530 **     test.db-wal        =>   test.wal
1531 **     test.db-shm        =>   test.shm
1532 **     test.db-mj7f3319fa =>   test.9fa
1533 */
1534 void sqlite3FileSuffix3(const char *zBaseFilename, char *z){
1535 #if SQLITE_ENABLE_8_3_NAMES<2
1536   if( sqlite3_uri_boolean(zBaseFilename, "8_3_names", 0) )
1537 #endif
1538   {
1539     int i, sz;
1540     sz = sqlite3Strlen30(z);
1541     for(i=sz-1; i>0 && z[i]!='/' && z[i]!='.'; i--){}
1542     if( z[i]=='.' && ALWAYS(sz>i+4) ) memmove(&z[i+1], &z[sz-3], 4);
1543   }
1544 }
1545 #endif
1546 
1547 /*
1548 ** Find (an approximate) sum of two LogEst values.  This computation is
1549 ** not a simple "+" operator because LogEst is stored as a logarithmic
1550 ** value.
1551 **
1552 */
1553 LogEst sqlite3LogEstAdd(LogEst a, LogEst b){
1554   static const unsigned char x[] = {
1555      10, 10,                         /* 0,1 */
1556       9, 9,                          /* 2,3 */
1557       8, 8,                          /* 4,5 */
1558       7, 7, 7,                       /* 6,7,8 */
1559       6, 6, 6,                       /* 9,10,11 */
1560       5, 5, 5,                       /* 12-14 */
1561       4, 4, 4, 4,                    /* 15-18 */
1562       3, 3, 3, 3, 3, 3,              /* 19-24 */
1563       2, 2, 2, 2, 2, 2, 2,           /* 25-31 */
1564   };
1565   if( a>=b ){
1566     if( a>b+49 ) return a;
1567     if( a>b+31 ) return a+1;
1568     return a+x[a-b];
1569   }else{
1570     if( b>a+49 ) return b;
1571     if( b>a+31 ) return b+1;
1572     return b+x[b-a];
1573   }
1574 }
1575 
1576 /*
1577 ** Convert an integer into a LogEst.  In other words, compute an
1578 ** approximation for 10*log2(x).
1579 */
1580 LogEst sqlite3LogEst(u64 x){
1581   static LogEst a[] = { 0, 2, 3, 5, 6, 7, 8, 9 };
1582   LogEst y = 40;
1583   if( x<8 ){
1584     if( x<2 ) return 0;
1585     while( x<8 ){  y -= 10; x <<= 1; }
1586   }else{
1587 #if GCC_VERSION>=5004000
1588     int i = 60 - __builtin_clzll(x);
1589     y += i*10;
1590     x >>= i;
1591 #else
1592     while( x>255 ){ y += 40; x >>= 4; }  /*OPTIMIZATION-IF-TRUE*/
1593     while( x>15 ){  y += 10; x >>= 1; }
1594 #endif
1595   }
1596   return a[x&7] + y - 10;
1597 }
1598 
1599 #ifndef SQLITE_OMIT_VIRTUALTABLE
1600 /*
1601 ** Convert a double into a LogEst
1602 ** In other words, compute an approximation for 10*log2(x).
1603 */
1604 LogEst sqlite3LogEstFromDouble(double x){
1605   u64 a;
1606   LogEst e;
1607   assert( sizeof(x)==8 && sizeof(a)==8 );
1608   if( x<=1 ) return 0;
1609   if( x<=2000000000 ) return sqlite3LogEst((u64)x);
1610   memcpy(&a, &x, 8);
1611   e = (a>>52) - 1022;
1612   return e*10;
1613 }
1614 #endif /* SQLITE_OMIT_VIRTUALTABLE */
1615 
1616 #if defined(SQLITE_ENABLE_STMT_SCANSTATUS) || \
1617     defined(SQLITE_ENABLE_STAT4) || \
1618     defined(SQLITE_EXPLAIN_ESTIMATED_ROWS)
1619 /*
1620 ** Convert a LogEst into an integer.
1621 **
1622 ** Note that this routine is only used when one or more of various
1623 ** non-standard compile-time options is enabled.
1624 */
1625 u64 sqlite3LogEstToInt(LogEst x){
1626   u64 n;
1627   n = x%10;
1628   x /= 10;
1629   if( n>=5 ) n -= 2;
1630   else if( n>=1 ) n -= 1;
1631 #if defined(SQLITE_ENABLE_STMT_SCANSTATUS) || \
1632     defined(SQLITE_EXPLAIN_ESTIMATED_ROWS)
1633   if( x>60 ) return (u64)LARGEST_INT64;
1634 #else
1635   /* If only SQLITE_ENABLE_STAT4 is on, then the largest input
1636   ** possible to this routine is 310, resulting in a maximum x of 31 */
1637   assert( x<=60 );
1638 #endif
1639   return x>=3 ? (n+8)<<(x-3) : (n+8)>>(3-x);
1640 }
1641 #endif /* defined SCANSTAT or STAT4 or ESTIMATED_ROWS */
1642 
1643 /*
1644 ** Add a new name/number pair to a VList.  This might require that the
1645 ** VList object be reallocated, so return the new VList.  If an OOM
1646 ** error occurs, the original VList returned and the
1647 ** db->mallocFailed flag is set.
1648 **
1649 ** A VList is really just an array of integers.  To destroy a VList,
1650 ** simply pass it to sqlite3DbFree().
1651 **
1652 ** The first integer is the number of integers allocated for the whole
1653 ** VList.  The second integer is the number of integers actually used.
1654 ** Each name/number pair is encoded by subsequent groups of 3 or more
1655 ** integers.
1656 **
1657 ** Each name/number pair starts with two integers which are the numeric
1658 ** value for the pair and the size of the name/number pair, respectively.
1659 ** The text name overlays one or more following integers.  The text name
1660 ** is always zero-terminated.
1661 **
1662 ** Conceptually:
1663 **
1664 **    struct VList {
1665 **      int nAlloc;   // Number of allocated slots
1666 **      int nUsed;    // Number of used slots
1667 **      struct VListEntry {
1668 **        int iValue;    // Value for this entry
1669 **        int nSlot;     // Slots used by this entry
1670 **        // ... variable name goes here
1671 **      } a[0];
1672 **    }
1673 **
1674 ** During code generation, pointers to the variable names within the
1675 ** VList are taken.  When that happens, nAlloc is set to zero as an
1676 ** indication that the VList may never again be enlarged, since the
1677 ** accompanying realloc() would invalidate the pointers.
1678 */
1679 VList *sqlite3VListAdd(
1680   sqlite3 *db,           /* The database connection used for malloc() */
1681   VList *pIn,            /* The input VList.  Might be NULL */
1682   const char *zName,     /* Name of symbol to add */
1683   int nName,             /* Bytes of text in zName */
1684   int iVal               /* Value to associate with zName */
1685 ){
1686   int nInt;              /* number of sizeof(int) objects needed for zName */
1687   char *z;               /* Pointer to where zName will be stored */
1688   int i;                 /* Index in pIn[] where zName is stored */
1689 
1690   nInt = nName/4 + 3;
1691   assert( pIn==0 || pIn[0]>=3 );  /* Verify ok to add new elements */
1692   if( pIn==0 || pIn[1]+nInt > pIn[0] ){
1693     /* Enlarge the allocation */
1694     sqlite3_int64 nAlloc = (pIn ? 2*(sqlite3_int64)pIn[0] : 10) + nInt;
1695     VList *pOut = sqlite3DbRealloc(db, pIn, nAlloc*sizeof(int));
1696     if( pOut==0 ) return pIn;
1697     if( pIn==0 ) pOut[1] = 2;
1698     pIn = pOut;
1699     pIn[0] = nAlloc;
1700   }
1701   i = pIn[1];
1702   pIn[i] = iVal;
1703   pIn[i+1] = nInt;
1704   z = (char*)&pIn[i+2];
1705   pIn[1] = i+nInt;
1706   assert( pIn[1]<=pIn[0] );
1707   memcpy(z, zName, nName);
1708   z[nName] = 0;
1709   return pIn;
1710 }
1711 
1712 /*
1713 ** Return a pointer to the name of a variable in the given VList that
1714 ** has the value iVal.  Or return a NULL if there is no such variable in
1715 ** the list
1716 */
1717 const char *sqlite3VListNumToName(VList *pIn, int iVal){
1718   int i, mx;
1719   if( pIn==0 ) return 0;
1720   mx = pIn[1];
1721   i = 2;
1722   do{
1723     if( pIn[i]==iVal ) return (char*)&pIn[i+2];
1724     i += pIn[i+1];
1725   }while( i<mx );
1726   return 0;
1727 }
1728 
1729 /*
1730 ** Return the number of the variable named zName, if it is in VList.
1731 ** or return 0 if there is no such variable.
1732 */
1733 int sqlite3VListNameToNum(VList *pIn, const char *zName, int nName){
1734   int i, mx;
1735   if( pIn==0 ) return 0;
1736   mx = pIn[1];
1737   i = 2;
1738   do{
1739     const char *z = (const char*)&pIn[i+2];
1740     if( strncmp(z,zName,nName)==0 && z[nName]==0 ) return pIn[i];
1741     i += pIn[i+1];
1742   }while( i<mx );
1743   return 0;
1744 }
1745