File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / sqlite3 / src / global.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 17:04:17 2012 UTC (12 years, 8 months ago) by misho
Branches: sqlite3, MAIN
CVS tags: v3_7_10, HEAD
sqlite3

    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>