Annotation of embedaddon/sqlite3/src/global.c, revision 1.1.1.1

1.1       misho       1: /*
                      2: ** 2008 June 13
                      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: **
                     13: ** This file contains definitions of global variables and contants.
                     14: */
                     15: #include "sqliteInt.h"
                     16: 
                     17: /* An array to map all upper-case characters into their corresponding
                     18: ** lower-case character. 
                     19: **
                     20: ** SQLite only considers US-ASCII (or EBCDIC) characters.  We do not
                     21: ** handle case conversions for the UTF character set since the tables
                     22: ** involved are nearly as big or bigger than SQLite itself.
                     23: */
                     24: const unsigned char sqlite3UpperToLower[] = {
                     25: #ifdef SQLITE_ASCII
                     26:       0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17,
                     27:      18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
                     28:      36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
                     29:      54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 97, 98, 99,100,101,102,103,
                     30:     104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,
                     31:     122, 91, 92, 93, 94, 95, 96, 97, 98, 99,100,101,102,103,104,105,106,107,
                     32:     108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,
                     33:     126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
                     34:     144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,
                     35:     162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,
                     36:     180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,
                     37:     198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,
                     38:     216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,
                     39:     234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,
                     40:     252,253,254,255
                     41: #endif
                     42: #ifdef SQLITE_EBCDIC
                     43:       0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, /* 0x */
                     44:      16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, /* 1x */
                     45:      32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, /* 2x */
                     46:      48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, /* 3x */
                     47:      64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, /* 4x */
                     48:      80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, /* 5x */
                     49:      96, 97, 66, 67, 68, 69, 70, 71, 72, 73,106,107,108,109,110,111, /* 6x */
                     50:     112, 81, 82, 83, 84, 85, 86, 87, 88, 89,122,123,124,125,126,127, /* 7x */
                     51:     128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, /* 8x */
                     52:     144,145,146,147,148,149,150,151,152,153,154,155,156,157,156,159, /* 9x */
                     53:     160,161,162,163,164,165,166,167,168,169,170,171,140,141,142,175, /* Ax */
                     54:     176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191, /* Bx */
                     55:     192,129,130,131,132,133,134,135,136,137,202,203,204,205,206,207, /* Cx */
                     56:     208,145,146,147,148,149,150,151,152,153,218,219,220,221,222,223, /* Dx */
                     57:     224,225,162,163,164,165,166,167,168,169,232,203,204,205,206,207, /* Ex */
                     58:     239,240,241,242,243,244,245,246,247,248,249,219,220,221,222,255, /* Fx */
                     59: #endif
                     60: };
                     61: 
                     62: /*
                     63: ** The following 256 byte lookup table is used to support SQLites built-in
                     64: ** equivalents to the following standard library functions:
                     65: **
                     66: **   isspace()                        0x01
                     67: **   isalpha()                        0x02
                     68: **   isdigit()                        0x04
                     69: **   isalnum()                        0x06
                     70: **   isxdigit()                       0x08
                     71: **   toupper()                        0x20
                     72: **   SQLite identifier character      0x40
                     73: **
                     74: ** Bit 0x20 is set if the mapped character requires translation to upper
                     75: ** case. i.e. if the character is a lower-case ASCII character.
                     76: ** If x is a lower-case ASCII character, then its upper-case equivalent
                     77: ** is (x - 0x20). Therefore toupper() can be implemented as:
                     78: **
                     79: **   (x & ~(map[x]&0x20))
                     80: **
                     81: ** Standard function tolower() is implemented using the sqlite3UpperToLower[]
                     82: ** array. tolower() is used more often than toupper() by SQLite.
                     83: **
                     84: ** Bit 0x40 is set if the character non-alphanumeric and can be used in an 
                     85: ** SQLite identifier.  Identifiers are alphanumerics, "_", "$", and any
                     86: ** non-ASCII UTF character. Hence the test for whether or not a character is
                     87: ** part of an identifier is 0x46.
                     88: **
                     89: ** SQLite's versions are identical to the standard versions assuming a
                     90: ** locale of "C". They are implemented as macros in sqliteInt.h.
                     91: */
                     92: #ifdef SQLITE_ASCII
                     93: const unsigned char sqlite3CtypeMap[256] = {
                     94:   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* 00..07    ........ */
                     95:   0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,  /* 08..0f    ........ */
                     96:   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* 10..17    ........ */
                     97:   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* 18..1f    ........ */
                     98:   0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,  /* 20..27     !"#$%&' */
                     99:   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* 28..2f    ()*+,-./ */
                    100:   0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,  /* 30..37    01234567 */
                    101:   0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* 38..3f    89:;<=>? */
                    102: 
                    103:   0x00, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x02,  /* 40..47    @ABCDEFG */
                    104:   0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,  /* 48..4f    HIJKLMNO */
                    105:   0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,  /* 50..57    PQRSTUVW */
                    106:   0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x40,  /* 58..5f    XYZ[\]^_ */
                    107:   0x00, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x22,  /* 60..67    `abcdefg */
                    108:   0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,  /* 68..6f    hijklmno */
                    109:   0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,  /* 70..77    pqrstuvw */
                    110:   0x22, 0x22, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00,  /* 78..7f    xyz{|}~. */
                    111: 
                    112:   0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,  /* 80..87    ........ */
                    113:   0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,  /* 88..8f    ........ */
                    114:   0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,  /* 90..97    ........ */
                    115:   0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,  /* 98..9f    ........ */
                    116:   0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,  /* a0..a7    ........ */
                    117:   0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,  /* a8..af    ........ */
                    118:   0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,  /* b0..b7    ........ */
                    119:   0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,  /* b8..bf    ........ */
                    120: 
                    121:   0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,  /* c0..c7    ........ */
                    122:   0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,  /* c8..cf    ........ */
                    123:   0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,  /* d0..d7    ........ */
                    124:   0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,  /* d8..df    ........ */
                    125:   0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,  /* e0..e7    ........ */
                    126:   0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,  /* e8..ef    ........ */
                    127:   0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,  /* f0..f7    ........ */
                    128:   0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40   /* f8..ff    ........ */
                    129: };
                    130: #endif
                    131: 
                    132: #ifndef SQLITE_USE_URI
                    133: # define  SQLITE_USE_URI 0
                    134: #endif
                    135: 
                    136: /*
                    137: ** The following singleton contains the global configuration for
                    138: ** the SQLite library.
                    139: */
                    140: SQLITE_WSD struct Sqlite3Config sqlite3Config = {
                    141:    SQLITE_DEFAULT_MEMSTATUS,  /* bMemstat */
                    142:    1,                         /* bCoreMutex */
                    143:    SQLITE_THREADSAFE==1,      /* bFullMutex */
                    144:    SQLITE_USE_URI,            /* bOpenUri */
                    145:    0x7ffffffe,                /* mxStrlen */
                    146:    128,                       /* szLookaside */
                    147:    500,                       /* nLookaside */
                    148:    {0,0,0,0,0,0,0,0},         /* m */
                    149:    {0,0,0,0,0,0,0,0,0},       /* mutex */
                    150:    {0,0,0,0,0,0,0,0,0,0,0,0,0},/* pcache2 */
                    151:    (void*)0,                  /* pHeap */
                    152:    0,                         /* nHeap */
                    153:    0, 0,                      /* mnHeap, mxHeap */
                    154:    (void*)0,                  /* pScratch */
                    155:    0,                         /* szScratch */
                    156:    0,                         /* nScratch */
                    157:    (void*)0,                  /* pPage */
                    158:    0,                         /* szPage */
                    159:    0,                         /* nPage */
                    160:    0,                         /* mxParserStack */
                    161:    0,                         /* sharedCacheEnabled */
                    162:    /* All the rest should always be initialized to zero */
                    163:    0,                         /* isInit */
                    164:    0,                         /* inProgress */
                    165:    0,                         /* isMutexInit */
                    166:    0,                         /* isMallocInit */
                    167:    0,                         /* isPCacheInit */
                    168:    0,                         /* pInitMutex */
                    169:    0,                         /* nRefInitMutex */
                    170:    0,                         /* xLog */
                    171:    0,                         /* pLogArg */
                    172:    0,                         /* bLocaltimeFault */
                    173: };
                    174: 
                    175: 
                    176: /*
                    177: ** Hash table for global functions - functions common to all
                    178: ** database connections.  After initialization, this table is
                    179: ** read-only.
                    180: */
                    181: SQLITE_WSD FuncDefHash sqlite3GlobalFunctions;
                    182: 
                    183: /*
                    184: ** Constant tokens for values 0 and 1.
                    185: */
                    186: const Token sqlite3IntTokens[] = {
                    187:    { "0", 1 },
                    188:    { "1", 1 }
                    189: };
                    190: 
                    191: 
                    192: /*
                    193: ** The value of the "pending" byte must be 0x40000000 (1 byte past the
                    194: ** 1-gibabyte boundary) in a compatible database.  SQLite never uses
                    195: ** the database page that contains the pending byte.  It never attempts
                    196: ** to read or write that page.  The pending byte page is set assign
                    197: ** for use by the VFS layers as space for managing file locks.
                    198: **
                    199: ** During testing, it is often desirable to move the pending byte to
                    200: ** a different position in the file.  This allows code that has to
                    201: ** deal with the pending byte to run on files that are much smaller
                    202: ** than 1 GiB.  The sqlite3_test_control() interface can be used to
                    203: ** move the pending byte.
                    204: **
                    205: ** IMPORTANT:  Changing the pending byte to any value other than
                    206: ** 0x40000000 results in an incompatible database file format!
                    207: ** Changing the pending byte during operating results in undefined
                    208: ** and dileterious behavior.
                    209: */
                    210: #ifndef SQLITE_OMIT_WSD
                    211: int sqlite3PendingByte = 0x40000000;
                    212: #endif
                    213: 
                    214: #include "opcodes.h"
                    215: /*
                    216: ** Properties of opcodes.  The OPFLG_INITIALIZER macro is
                    217: ** created by mkopcodeh.awk during compilation.  Data is obtained
                    218: ** from the comments following the "case OP_xxxx:" statements in
                    219: ** the vdbe.c file.  
                    220: */
                    221: const unsigned char sqlite3OpcodeProperty[] = OPFLG_INITIALIZER;

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>