Annotation of embedaddon/sqlite3/src/global.c, revision 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>