| OLD | NEW | 
 | (Empty) | 
|    1 /***** This file contains automatically generated code ****** |  | 
|    2 ** |  | 
|    3 ** The code in this file has been automatically generated by |  | 
|    4 ** |  | 
|    5 **     $Header: /home/drh/sqlite/trans/cvs/sqlite/sqlite/tool/mkkeywordhash.c,v 
     1.38 2009/06/09 14:27:41 drh Exp $ |  | 
|    6 ** |  | 
|    7 ** The code in this file implements a function that determines whether |  | 
|    8 ** or not a given identifier is really an SQL keyword.  The same thing |  | 
|    9 ** might be implemented more directly using a hand-written hash table. |  | 
|   10 ** But by using this automatically generated code, the size of the code |  | 
|   11 ** is substantially reduced.  This is important for embedded applications |  | 
|   12 ** on platforms with limited memory. |  | 
|   13 */ |  | 
|   14 /* Hash score: 171 */ |  | 
|   15 static int keywordCode(const char *z, int n){ |  | 
|   16   /* zText[] encodes 801 bytes of keywords in 541 bytes */ |  | 
|   17   /*   REINDEXEDESCAPEACHECKEYBEFOREIGNOREGEXPLAINSTEADDATABASELECT       */ |  | 
|   18   /*   ABLEFTHENDEFERRABLELSEXCEPTRANSACTIONATURALTERAISEXCLUSIVE         */ |  | 
|   19   /*   XISTSAVEPOINTERSECTRIGGEREFERENCESCONSTRAINTOFFSETEMPORARY         */ |  | 
|   20   /*   UNIQUERYATTACHAVINGROUPDATEBEGINNERELEASEBETWEENOTNULLIKE          */ |  | 
|   21   /*   CASCADELETECASECOLLATECREATECURRENT_DATEDETACHIMMEDIATEJOIN        */ |  | 
|   22   /*   SERTMATCHPLANALYZEPRAGMABORTVALUESVIRTUALIMITWHENWHERENAME         */ |  | 
|   23   /*   AFTEREPLACEANDEFAULTAUTOINCREMENTCASTCOLUMNCOMMITCONFLICTCROSS     */ |  | 
|   24   /*   CURRENT_TIMESTAMPRIMARYDEFERREDISTINCTDROPFAILFROMFULLGLOBYIF      */ |  | 
|   25   /*   ISNULLORDERESTRICTOUTERIGHTROLLBACKROWUNIONUSINGVACUUMVIEW         */ |  | 
|   26   /*   INITIALLY                                                          */ |  | 
|   27   static const char zText[540] = { |  | 
|   28     'R','E','I','N','D','E','X','E','D','E','S','C','A','P','E','A','C','H', |  | 
|   29     'E','C','K','E','Y','B','E','F','O','R','E','I','G','N','O','R','E','G', |  | 
|   30     'E','X','P','L','A','I','N','S','T','E','A','D','D','A','T','A','B','A', |  | 
|   31     'S','E','L','E','C','T','A','B','L','E','F','T','H','E','N','D','E','F', |  | 
|   32     'E','R','R','A','B','L','E','L','S','E','X','C','E','P','T','R','A','N', |  | 
|   33     'S','A','C','T','I','O','N','A','T','U','R','A','L','T','E','R','A','I', |  | 
|   34     'S','E','X','C','L','U','S','I','V','E','X','I','S','T','S','A','V','E', |  | 
|   35     'P','O','I','N','T','E','R','S','E','C','T','R','I','G','G','E','R','E', |  | 
|   36     'F','E','R','E','N','C','E','S','C','O','N','S','T','R','A','I','N','T', |  | 
|   37     'O','F','F','S','E','T','E','M','P','O','R','A','R','Y','U','N','I','Q', |  | 
|   38     'U','E','R','Y','A','T','T','A','C','H','A','V','I','N','G','R','O','U', |  | 
|   39     'P','D','A','T','E','B','E','G','I','N','N','E','R','E','L','E','A','S', |  | 
|   40     'E','B','E','T','W','E','E','N','O','T','N','U','L','L','I','K','E','C', |  | 
|   41     'A','S','C','A','D','E','L','E','T','E','C','A','S','E','C','O','L','L', |  | 
|   42     'A','T','E','C','R','E','A','T','E','C','U','R','R','E','N','T','_','D', |  | 
|   43     'A','T','E','D','E','T','A','C','H','I','M','M','E','D','I','A','T','E', |  | 
|   44     'J','O','I','N','S','E','R','T','M','A','T','C','H','P','L','A','N','A', |  | 
|   45     'L','Y','Z','E','P','R','A','G','M','A','B','O','R','T','V','A','L','U', |  | 
|   46     'E','S','V','I','R','T','U','A','L','I','M','I','T','W','H','E','N','W', |  | 
|   47     'H','E','R','E','N','A','M','E','A','F','T','E','R','E','P','L','A','C', |  | 
|   48     'E','A','N','D','E','F','A','U','L','T','A','U','T','O','I','N','C','R', |  | 
|   49     'E','M','E','N','T','C','A','S','T','C','O','L','U','M','N','C','O','M', |  | 
|   50     'M','I','T','C','O','N','F','L','I','C','T','C','R','O','S','S','C','U', |  | 
|   51     'R','R','E','N','T','_','T','I','M','E','S','T','A','M','P','R','I','M', |  | 
|   52     'A','R','Y','D','E','F','E','R','R','E','D','I','S','T','I','N','C','T', |  | 
|   53     'D','R','O','P','F','A','I','L','F','R','O','M','F','U','L','L','G','L', |  | 
|   54     'O','B','Y','I','F','I','S','N','U','L','L','O','R','D','E','R','E','S', |  | 
|   55     'T','R','I','C','T','O','U','T','E','R','I','G','H','T','R','O','L','L', |  | 
|   56     'B','A','C','K','R','O','W','U','N','I','O','N','U','S','I','N','G','V', |  | 
|   57     'A','C','U','U','M','V','I','E','W','I','N','I','T','I','A','L','L','Y', |  | 
|   58   }; |  | 
|   59   static const unsigned char aHash[127] = { |  | 
|   60       70,  99, 112,  68,   0,  43,   0,   0,  76,   0,  71,   0,   0, |  | 
|   61       41,  12,  72,  15,   0, 111,  79,  49, 106,   0,  19,   0,   0, |  | 
|   62      116,   0, 114, 109,   0,  22,  87,   0,   9,   0,   0,  64,  65, |  | 
|   63        0,  63,   6,   0,  47,  84,  96,   0, 113,  95,   0,   0,  44, |  | 
|   64        0,  97,  24,   0,  17,   0, 117,  48,  23,   0,   5, 104,  25, |  | 
|   65       90,   0,   0, 119, 100,  55, 118,  52,   7,  50,   0,  85,   0, |  | 
|   66       94,  26,   0,  93,   0,   0,   0,  89,  86,  91,  82, 103,  14, |  | 
|   67       38, 102,   0,  75,   0,  18,  83, 105,  31,   0, 115,  74, 107, |  | 
|   68       57,  45,  78,   0,   0,  88,  39,   0, 110,   0,  35,   0,   0, |  | 
|   69       28,   0,  80,  53,  58,   0,  20,  56,   0,  51, |  | 
|   70   }; |  | 
|   71   static const unsigned char aNext[119] = { |  | 
|   72        0,   0,   0,   0,   4,   0,   0,   0,   0,   0,   0,   0,   0, |  | 
|   73        0,   2,   0,   0,   0,   0,   0,   0,  13,   0,   0,   0,   0, |  | 
|   74        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, |  | 
|   75        0,   0,   0,   0,  32,  21,   0,   0,   0,  42,   3,  46,   0, |  | 
|   76        0,   0,   0,  29,   0,   0,  37,   0,   0,   0,   1,  60,   0, |  | 
|   77        0,  61,   0,  40,   0,   0,   0,   0,   0,   0,   0,  59,   0, |  | 
|   78        0,   0,   0,  30,  54,  16,  33,  10,   0,   0,   0,   0,   0, |  | 
|   79        0,   0,  11,  66,  73,   0,   8,   0,  98,  92,   0, 101,   0, |  | 
|   80       81,   0,  69,   0,   0, 108,  27,  36,  67,  77,   0,  34,  62, |  | 
|   81        0,   0, |  | 
|   82   }; |  | 
|   83   static const unsigned char aLen[119] = { |  | 
|   84        7,   7,   5,   4,   6,   4,   5,   3,   6,   7,   3,   6,   6, |  | 
|   85        7,   7,   3,   8,   2,   6,   5,   4,   4,   3,  10,   4,   6, |  | 
|   86       11,   2,   7,   5,   5,   9,   6,   9,   9,   7,  10,  10,   4, |  | 
|   87        6,   2,   3,   4,   9,   2,   6,   5,   6,   6,   5,   6,   5, |  | 
|   88        5,   7,   7,   7,   3,   4,   4,   7,   3,   6,   4,   7,   6, |  | 
|   89       12,   6,   9,   4,   6,   5,   4,   7,   6,   5,   6,   7,   5, |  | 
|   90        4,   5,   6,   5,   7,   3,   7,  13,   2,   2,   4,   6,   6, |  | 
|   91        8,   5,  17,  12,   7,   8,   8,   2,   4,   4,   4,   4,   4, |  | 
|   92        2,   2,   6,   5,   8,   5,   5,   8,   3,   5,   5,   6,   4, |  | 
|   93        9,   3, |  | 
|   94   }; |  | 
|   95   static const unsigned short int aOffset[119] = { |  | 
|   96        0,   2,   2,   8,   9,  14,  16,  20,  23,  25,  25,  29,  33, |  | 
|   97       36,  41,  46,  48,  53,  54,  59,  62,  65,  67,  69,  78,  81, |  | 
|   98       86,  95,  96, 101, 105, 109, 117, 122, 128, 136, 142, 152, 159, |  | 
|   99      162, 162, 165, 167, 167, 171, 176, 179, 184, 189, 194, 197, 203, |  | 
|  100      206, 210, 217, 223, 223, 226, 229, 233, 234, 238, 244, 248, 255, |  | 
|  101      261, 273, 279, 288, 290, 296, 301, 303, 310, 315, 320, 326, 332, |  | 
|  102      337, 341, 344, 350, 354, 361, 363, 370, 372, 374, 383, 387, 393, |  | 
|  103      399, 407, 412, 412, 428, 435, 442, 443, 450, 454, 458, 462, 466, |  | 
|  104      469, 471, 473, 479, 483, 491, 495, 500, 508, 511, 516, 521, 527, |  | 
|  105      531, 536, |  | 
|  106   }; |  | 
|  107   static const unsigned char aCode[119] = { |  | 
|  108     TK_REINDEX,    TK_INDEXED,    TK_INDEX,      TK_DESC,       TK_ESCAPE,      |  | 
|  109     TK_EACH,       TK_CHECK,      TK_KEY,        TK_BEFORE,     TK_FOREIGN,     |  | 
|  110     TK_FOR,        TK_IGNORE,     TK_LIKE_KW,    TK_EXPLAIN,    TK_INSTEAD,     |  | 
|  111     TK_ADD,        TK_DATABASE,   TK_AS,         TK_SELECT,     TK_TABLE,       |  | 
|  112     TK_JOIN_KW,    TK_THEN,       TK_END,        TK_DEFERRABLE, TK_ELSE,        |  | 
|  113     TK_EXCEPT,     TK_TRANSACTION,TK_ON,         TK_JOIN_KW,    TK_ALTER,       |  | 
|  114     TK_RAISE,      TK_EXCLUSIVE,  TK_EXISTS,     TK_SAVEPOINT,  TK_INTERSECT,   |  | 
|  115     TK_TRIGGER,    TK_REFERENCES, TK_CONSTRAINT, TK_INTO,       TK_OFFSET,      |  | 
|  116     TK_OF,         TK_SET,        TK_TEMP,       TK_TEMP,       TK_OR,          |  | 
|  117     TK_UNIQUE,     TK_QUERY,      TK_ATTACH,     TK_HAVING,     TK_GROUP,       |  | 
|  118     TK_UPDATE,     TK_BEGIN,      TK_JOIN_KW,    TK_RELEASE,    TK_BETWEEN,     |  | 
|  119     TK_NOTNULL,    TK_NOT,        TK_NULL,       TK_LIKE_KW,    TK_CASCADE,     |  | 
|  120     TK_ASC,        TK_DELETE,     TK_CASE,       TK_COLLATE,    TK_CREATE,      |  | 
|  121     TK_CTIME_KW,   TK_DETACH,     TK_IMMEDIATE,  TK_JOIN,       TK_INSERT,      |  | 
|  122     TK_MATCH,      TK_PLAN,       TK_ANALYZE,    TK_PRAGMA,     TK_ABORT,       |  | 
|  123     TK_VALUES,     TK_VIRTUAL,    TK_LIMIT,      TK_WHEN,       TK_WHERE,       |  | 
|  124     TK_RENAME,     TK_AFTER,      TK_REPLACE,    TK_AND,        TK_DEFAULT,     |  | 
|  125     TK_AUTOINCR,   TK_TO,         TK_IN,         TK_CAST,       TK_COLUMNKW,    |  | 
|  126     TK_COMMIT,     TK_CONFLICT,   TK_JOIN_KW,    TK_CTIME_KW,   TK_CTIME_KW,    |  | 
|  127     TK_PRIMARY,    TK_DEFERRED,   TK_DISTINCT,   TK_IS,         TK_DROP,        |  | 
|  128     TK_FAIL,       TK_FROM,       TK_JOIN_KW,    TK_LIKE_KW,    TK_BY,          |  | 
|  129     TK_IF,         TK_ISNULL,     TK_ORDER,      TK_RESTRICT,   TK_JOIN_KW,     |  | 
|  130     TK_JOIN_KW,    TK_ROLLBACK,   TK_ROW,        TK_UNION,      TK_USING,       |  | 
|  131     TK_VACUUM,     TK_VIEW,       TK_INITIALLY,  TK_ALL,         |  | 
|  132   }; |  | 
|  133   int h, i; |  | 
|  134   if( n<2 ) return TK_ID; |  | 
|  135   h = ((charMap(z[0])*4) ^ |  | 
|  136       (charMap(z[n-1])*3) ^ |  | 
|  137       n) % 127; |  | 
|  138   for(i=((int)aHash[h])-1; i>=0; i=((int)aNext[i])-1){ |  | 
|  139     if( aLen[i]==n && sqlite3StrNICmp(&zText[aOffset[i]],z,n)==0 ){ |  | 
|  140       testcase( i==0 ); /* REINDEX */ |  | 
|  141       testcase( i==1 ); /* INDEXED */ |  | 
|  142       testcase( i==2 ); /* INDEX */ |  | 
|  143       testcase( i==3 ); /* DESC */ |  | 
|  144       testcase( i==4 ); /* ESCAPE */ |  | 
|  145       testcase( i==5 ); /* EACH */ |  | 
|  146       testcase( i==6 ); /* CHECK */ |  | 
|  147       testcase( i==7 ); /* KEY */ |  | 
|  148       testcase( i==8 ); /* BEFORE */ |  | 
|  149       testcase( i==9 ); /* FOREIGN */ |  | 
|  150       testcase( i==10 ); /* FOR */ |  | 
|  151       testcase( i==11 ); /* IGNORE */ |  | 
|  152       testcase( i==12 ); /* REGEXP */ |  | 
|  153       testcase( i==13 ); /* EXPLAIN */ |  | 
|  154       testcase( i==14 ); /* INSTEAD */ |  | 
|  155       testcase( i==15 ); /* ADD */ |  | 
|  156       testcase( i==16 ); /* DATABASE */ |  | 
|  157       testcase( i==17 ); /* AS */ |  | 
|  158       testcase( i==18 ); /* SELECT */ |  | 
|  159       testcase( i==19 ); /* TABLE */ |  | 
|  160       testcase( i==20 ); /* LEFT */ |  | 
|  161       testcase( i==21 ); /* THEN */ |  | 
|  162       testcase( i==22 ); /* END */ |  | 
|  163       testcase( i==23 ); /* DEFERRABLE */ |  | 
|  164       testcase( i==24 ); /* ELSE */ |  | 
|  165       testcase( i==25 ); /* EXCEPT */ |  | 
|  166       testcase( i==26 ); /* TRANSACTION */ |  | 
|  167       testcase( i==27 ); /* ON */ |  | 
|  168       testcase( i==28 ); /* NATURAL */ |  | 
|  169       testcase( i==29 ); /* ALTER */ |  | 
|  170       testcase( i==30 ); /* RAISE */ |  | 
|  171       testcase( i==31 ); /* EXCLUSIVE */ |  | 
|  172       testcase( i==32 ); /* EXISTS */ |  | 
|  173       testcase( i==33 ); /* SAVEPOINT */ |  | 
|  174       testcase( i==34 ); /* INTERSECT */ |  | 
|  175       testcase( i==35 ); /* TRIGGER */ |  | 
|  176       testcase( i==36 ); /* REFERENCES */ |  | 
|  177       testcase( i==37 ); /* CONSTRAINT */ |  | 
|  178       testcase( i==38 ); /* INTO */ |  | 
|  179       testcase( i==39 ); /* OFFSET */ |  | 
|  180       testcase( i==40 ); /* OF */ |  | 
|  181       testcase( i==41 ); /* SET */ |  | 
|  182       testcase( i==42 ); /* TEMP */ |  | 
|  183       testcase( i==43 ); /* TEMPORARY */ |  | 
|  184       testcase( i==44 ); /* OR */ |  | 
|  185       testcase( i==45 ); /* UNIQUE */ |  | 
|  186       testcase( i==46 ); /* QUERY */ |  | 
|  187       testcase( i==47 ); /* ATTACH */ |  | 
|  188       testcase( i==48 ); /* HAVING */ |  | 
|  189       testcase( i==49 ); /* GROUP */ |  | 
|  190       testcase( i==50 ); /* UPDATE */ |  | 
|  191       testcase( i==51 ); /* BEGIN */ |  | 
|  192       testcase( i==52 ); /* INNER */ |  | 
|  193       testcase( i==53 ); /* RELEASE */ |  | 
|  194       testcase( i==54 ); /* BETWEEN */ |  | 
|  195       testcase( i==55 ); /* NOTNULL */ |  | 
|  196       testcase( i==56 ); /* NOT */ |  | 
|  197       testcase( i==57 ); /* NULL */ |  | 
|  198       testcase( i==58 ); /* LIKE */ |  | 
|  199       testcase( i==59 ); /* CASCADE */ |  | 
|  200       testcase( i==60 ); /* ASC */ |  | 
|  201       testcase( i==61 ); /* DELETE */ |  | 
|  202       testcase( i==62 ); /* CASE */ |  | 
|  203       testcase( i==63 ); /* COLLATE */ |  | 
|  204       testcase( i==64 ); /* CREATE */ |  | 
|  205       testcase( i==65 ); /* CURRENT_DATE */ |  | 
|  206       testcase( i==66 ); /* DETACH */ |  | 
|  207       testcase( i==67 ); /* IMMEDIATE */ |  | 
|  208       testcase( i==68 ); /* JOIN */ |  | 
|  209       testcase( i==69 ); /* INSERT */ |  | 
|  210       testcase( i==70 ); /* MATCH */ |  | 
|  211       testcase( i==71 ); /* PLAN */ |  | 
|  212       testcase( i==72 ); /* ANALYZE */ |  | 
|  213       testcase( i==73 ); /* PRAGMA */ |  | 
|  214       testcase( i==74 ); /* ABORT */ |  | 
|  215       testcase( i==75 ); /* VALUES */ |  | 
|  216       testcase( i==76 ); /* VIRTUAL */ |  | 
|  217       testcase( i==77 ); /* LIMIT */ |  | 
|  218       testcase( i==78 ); /* WHEN */ |  | 
|  219       testcase( i==79 ); /* WHERE */ |  | 
|  220       testcase( i==80 ); /* RENAME */ |  | 
|  221       testcase( i==81 ); /* AFTER */ |  | 
|  222       testcase( i==82 ); /* REPLACE */ |  | 
|  223       testcase( i==83 ); /* AND */ |  | 
|  224       testcase( i==84 ); /* DEFAULT */ |  | 
|  225       testcase( i==85 ); /* AUTOINCREMENT */ |  | 
|  226       testcase( i==86 ); /* TO */ |  | 
|  227       testcase( i==87 ); /* IN */ |  | 
|  228       testcase( i==88 ); /* CAST */ |  | 
|  229       testcase( i==89 ); /* COLUMN */ |  | 
|  230       testcase( i==90 ); /* COMMIT */ |  | 
|  231       testcase( i==91 ); /* CONFLICT */ |  | 
|  232       testcase( i==92 ); /* CROSS */ |  | 
|  233       testcase( i==93 ); /* CURRENT_TIMESTAMP */ |  | 
|  234       testcase( i==94 ); /* CURRENT_TIME */ |  | 
|  235       testcase( i==95 ); /* PRIMARY */ |  | 
|  236       testcase( i==96 ); /* DEFERRED */ |  | 
|  237       testcase( i==97 ); /* DISTINCT */ |  | 
|  238       testcase( i==98 ); /* IS */ |  | 
|  239       testcase( i==99 ); /* DROP */ |  | 
|  240       testcase( i==100 ); /* FAIL */ |  | 
|  241       testcase( i==101 ); /* FROM */ |  | 
|  242       testcase( i==102 ); /* FULL */ |  | 
|  243       testcase( i==103 ); /* GLOB */ |  | 
|  244       testcase( i==104 ); /* BY */ |  | 
|  245       testcase( i==105 ); /* IF */ |  | 
|  246       testcase( i==106 ); /* ISNULL */ |  | 
|  247       testcase( i==107 ); /* ORDER */ |  | 
|  248       testcase( i==108 ); /* RESTRICT */ |  | 
|  249       testcase( i==109 ); /* OUTER */ |  | 
|  250       testcase( i==110 ); /* RIGHT */ |  | 
|  251       testcase( i==111 ); /* ROLLBACK */ |  | 
|  252       testcase( i==112 ); /* ROW */ |  | 
|  253       testcase( i==113 ); /* UNION */ |  | 
|  254       testcase( i==114 ); /* USING */ |  | 
|  255       testcase( i==115 ); /* VACUUM */ |  | 
|  256       testcase( i==116 ); /* VIEW */ |  | 
|  257       testcase( i==117 ); /* INITIALLY */ |  | 
|  258       testcase( i==118 ); /* ALL */ |  | 
|  259       return aCode[i]; |  | 
|  260     } |  | 
|  261   } |  | 
|  262   return TK_ID; |  | 
|  263 } |  | 
|  264 int sqlite3KeywordCode(const unsigned char *z, int n){ |  | 
|  265   return keywordCode((char*)z, n); |  | 
|  266 } |  | 
| OLD | NEW |