15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** 2008 June 13
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)**
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** The author disclaims copyright to this source code.  In place of
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** a legal notice, here is a blessing:
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)**
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)**    May you do good and not evil.
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)**    May you find forgiveness for yourself and forgive others.
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)**    May you share freely, never taking more than you give.
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)**
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*************************************************************************
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)**
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** This file contains definitions of global variables and contants.
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sqliteInt.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* An array to map all upper-case characters into their corresponding
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** lower-case character.
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)**
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** SQLite only considers US-ASCII (or EBCDIC) characters.  We do not
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** handle case conversions for the UTF character set since the tables
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** involved are nearly as big or bigger than SQLite itself.
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const unsigned char sqlite3UpperToLower[] = {
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef SQLITE_ASCII
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17,
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 97, 98, 99,100,101,102,103,
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    122, 91, 92, 93, 94, 95, 96, 97, 98, 99,100,101,102,103,104,105,106,107,
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    252,253,254,255
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef SQLITE_EBCDIC
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, /* 0x */
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, /* 1x */
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, /* 2x */
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, /* 3x */
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, /* 4x */
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, /* 5x */
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     96, 97, 66, 67, 68, 69, 70, 71, 72, 73,106,107,108,109,110,111, /* 6x */
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    112, 81, 82, 83, 84, 85, 86, 87, 88, 89,122,123,124,125,126,127, /* 7x */
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, /* 8x */
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    144,145,146,147,148,149,150,151,152,153,154,155,156,157,156,159, /* 9x */
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    160,161,162,163,164,165,166,167,168,169,170,171,140,141,142,175, /* Ax */
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191, /* Bx */
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    192,129,130,131,132,133,134,135,136,137,202,203,204,205,206,207, /* Cx */
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    208,145,146,147,148,149,150,151,152,153,218,219,220,221,222,223, /* Dx */
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    224,225,162,163,164,165,166,167,168,169,232,203,204,205,206,207, /* Ex */
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    239,240,241,242,243,244,245,246,247,248,249,219,220,221,222,255, /* Fx */
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** The following 256 byte lookup table is used to support SQLites built-in
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** equivalents to the following standard library functions:
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)**
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)**   isspace()                        0x01
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)**   isalpha()                        0x02
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)**   isdigit()                        0x04
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)**   isalnum()                        0x06
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)**   isxdigit()                       0x08
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)**   toupper()                        0x20
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)**   SQLite identifier character      0x40
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)**
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** Bit 0x20 is set if the mapped character requires translation to upper
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** case. i.e. if the character is a lower-case ASCII character.
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** If x is a lower-case ASCII character, then its upper-case equivalent
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** is (x - 0x20). Therefore toupper() can be implemented as:
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)**
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)**   (x & ~(map[x]&0x20))
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)**
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** Standard function tolower() is implemented using the sqlite3UpperToLower[]
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** array. tolower() is used more often than toupper() by SQLite.
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)**
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** Bit 0x40 is set if the character non-alphanumeric and can be used in an
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** SQLite identifier.  Identifiers are alphanumerics, "_", "$", and any
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** non-ASCII UTF character. Hence the test for whether or not a character is
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** part of an identifier is 0x46.
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)**
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** SQLite's versions are identical to the standard versions assuming a
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** locale of "C". They are implemented as macros in sqliteInt.h.
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef SQLITE_ASCII
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const unsigned char sqlite3CtypeMap[256] = {
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* 00..07    ........ */
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,  /* 08..0f    ........ */
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* 10..17    ........ */
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* 18..1f    ........ */
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,  /* 20..27     !"#$%&' */
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* 28..2f    ()*+,-./ */
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,  /* 30..37    01234567 */
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* 38..3f    89:;<=>? */
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x00, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x02,  /* 40..47    @ABCDEFG */
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,  /* 48..4f    HIJKLMNO */
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,  /* 50..57    PQRSTUVW */
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x40,  /* 58..5f    XYZ[\]^_ */
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x00, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x22,  /* 60..67    `abcdefg */
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,  /* 68..6f    hijklmno */
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,  /* 70..77    pqrstuvw */
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x22, 0x22, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00,  /* 78..7f    xyz{|}~. */
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,  /* 80..87    ........ */
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,  /* 88..8f    ........ */
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,  /* 90..97    ........ */
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,  /* 98..9f    ........ */
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,  /* a0..a7    ........ */
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,  /* a8..af    ........ */
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,  /* b0..b7    ........ */
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,  /* b8..bf    ........ */
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,  /* c0..c7    ........ */
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,  /* c8..cf    ........ */
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,  /* d0..d7    ........ */
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,  /* d8..df    ........ */
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,  /* e0..e7    ........ */
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,  /* e8..ef    ........ */
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,  /* f0..f7    ........ */
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40   /* f8..ff    ........ */
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** The following singleton contains the global configuration for
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** the SQLite library.
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SQLITE_WSD struct Sqlite3Config sqlite3Config = {
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   SQLITE_DEFAULT_MEMSTATUS,  /* bMemstat */
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   1,                         /* bCoreMutex */
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   SQLITE_THREADSAFE==1,      /* bFullMutex */
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   0x7ffffffe,                /* mxStrlen */
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   100,                       /* szLookaside */
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   500,                       /* nLookaside */
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   {0,0,0,0,0,0,0,0},         /* m */
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   {0,0,0,0,0,0,0,0,0},       /* mutex */
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   {0,0,0,0,0,0,0,0,0,0,0},   /* pcache */
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   (void*)0,                  /* pHeap */
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   0,                         /* nHeap */
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   0, 0,                      /* mnHeap, mxHeap */
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   (void*)0,                  /* pScratch */
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   0,                         /* szScratch */
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   0,                         /* nScratch */
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   (void*)0,                  /* pPage */
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   0,                         /* szPage */
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   0,                         /* nPage */
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   0,                         /* mxParserStack */
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   0,                         /* sharedCacheEnabled */
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   /* All the rest should always be initialized to zero */
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   0,                         /* isInit */
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   0,                         /* inProgress */
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   0,                         /* isMutexInit */
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   0,                         /* isMallocInit */
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   0,                         /* isPCacheInit */
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   0,                         /* pInitMutex */
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   0,                         /* nRefInitMutex */
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   0,                         /* xLog */
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   0,                         /* pLogArg */
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** Hash table for global functions - functions common to all
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** database connections.  After initialization, this table is
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** read-only.
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SQLITE_WSD FuncDefHash sqlite3GlobalFunctions;
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** Constant tokens for values 0 and 1.
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const Token sqlite3IntTokens[] = {
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   { "0", 1 },
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   { "1", 1 }
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** The value of the "pending" byte must be 0x40000000 (1 byte past the
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** 1-gibabyte boundary) in a compatible database.  SQLite never uses
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** the database page that contains the pending byte.  It never attempts
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** to read or write that page.  The pending byte page is set assign
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** for use by the VFS layers as space for managing file locks.
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)**
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** During testing, it is often desirable to move the pending byte to
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** a different position in the file.  This allows code that has to
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** deal with the pending byte to run on files that are much smaller
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** than 1 GiB.  The sqlite3_test_control() interface can be used to
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** move the pending byte.
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)**
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** IMPORTANT:  Changing the pending byte to any value other than
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** 0x40000000 results in an incompatible database file format!
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** Changing the pending byte during operating results in undefined
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** and dileterious behavior.
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef SQLITE_OMIT_WSD
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int sqlite3PendingByte = 0x40000000;
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "opcodes.h"
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** Properties of opcodes.  The OPFLG_INITIALIZER macro is
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** created by mkopcodeh.awk during compilation.  Data is obtained
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** from the comments following the "case OP_xxxx:" statements in
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** the vdbe.c file.
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const unsigned char sqlite3OpcodeProperty[] = OPFLG_INITIALIZER;
218