2
static int keywordCode(const char *z, int n){
3
static const char zText[510] =
4
"ABORTABLEFTEMPORARYADDATABASELECTHENDEFAULTRANSACTIONATURALTER"
5
"AISEACHECKEYAFTEREFERENCESCAPELSEXCEPTRIGGEREINDEXCLUSIVEXISTS"
6
"TATEMENTANDEFERRABLEXPLAINITIALLYATTACHAVINGLOBEFOREIGNORENAME"
7
"AUTOINCREMENTBEGINNEREPLACEBETWEENOTNULLIKEBYCASCADEFERREDELETE"
8
"CASECOLLATECOLUMNCOMMITCONFLICTCONSTRAINTERSECTCREATECROSSCURRENT_DATE"
9
"CURRENT_TIMESTAMPRAGMATCHDESCDETACHDISTINCTDROPRIMARYFAILIMIT"
10
"FROMFULLGROUPDATEIMMEDIATEINSERTINSTEADINTOFFSETISNULLJOINORDER"
11
"ESTRICTOUTERIGHTROLLBACKROWHENUNIONUNIQUEUSINGVACUUMVALUESVIEW"
13
static const unsigned char aHash[127] = {
14
89, 79, 101, 88, 0, 4, 0, 0, 108, 0, 75, 0, 0,
15
92, 44, 0, 90, 0, 100, 103, 94, 0, 0, 10, 0, 0,
16
107, 0, 104, 98, 0, 11, 47, 0, 41, 0, 0, 63, 69,
17
0, 62, 19, 0, 0, 33, 81, 0, 102, 72, 0, 0, 30,
18
0, 60, 34, 0, 8, 0, 109, 38, 12, 0, 76, 40, 25,
19
64, 0, 0, 37, 80, 52, 36, 49, 20, 86, 0, 31, 0,
20
73, 26, 0, 70, 0, 0, 0, 0, 46, 65, 22, 85, 35,
21
67, 84, 0, 1, 0, 9, 51, 57, 18, 0, 106, 74, 96,
22
53, 6, 83, 0, 0, 48, 91, 0, 99, 0, 68, 0, 0,
23
15, 0, 110, 50, 55, 0, 2, 54, 0, 105,
25
static const unsigned char aNext[110] = {
26
0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
27
0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0,
28
0, 0, 0, 5, 13, 0, 7, 0, 0, 0, 0, 0, 0,
29
0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0,
30
0, 16, 0, 23, 45, 0, 0, 0, 0, 28, 58, 0, 0,
31
0, 0, 0, 0, 0, 0, 71, 42, 0, 0, 24, 59, 21,
32
0, 78, 0, 66, 0, 0, 82, 29, 0, 0, 0, 0, 0,
33
0, 0, 39, 93, 95, 0, 0, 97, 14, 27, 77, 0, 56,
36
static const unsigned char aLen[110] = {
37
5, 5, 4, 4, 9, 2, 3, 8, 2, 6, 4, 3, 7,
38
11, 2, 7, 5, 5, 4, 5, 3, 5, 10, 6, 4, 6,
39
7, 7, 5, 9, 6, 9, 3, 10, 7, 9, 3, 6, 6,
40
4, 6, 3, 7, 6, 6, 13, 2, 2, 5, 5, 7, 7,
41
3, 7, 4, 4, 2, 7, 3, 8, 6, 4, 7, 6, 6,
42
8, 10, 9, 6, 5, 12, 12, 17, 6, 5, 4, 6, 8,
43
2, 4, 7, 4, 5, 4, 4, 5, 6, 9, 6, 7, 4,
44
2, 6, 3, 6, 4, 5, 8, 5, 5, 8, 3, 4, 5,
47
static const unsigned short int aOffset[110] = {
48
0, 4, 7, 10, 10, 14, 19, 21, 26, 27, 32, 34, 36,
49
42, 51, 52, 57, 61, 65, 67, 71, 74, 78, 86, 91, 94,
50
99, 105, 107, 110, 118, 123, 132, 134, 143, 148, 153, 157, 162,
51
167, 170, 172, 172, 176, 180, 186, 188, 190, 199, 202, 206, 213,
52
219, 219, 222, 225, 229, 231, 232, 236, 243, 249, 253, 260, 266,
53
272, 280, 287, 296, 302, 307, 319, 319, 335, 339, 344, 348, 354,
54
355, 362, 365, 372, 375, 380, 384, 388, 391, 397, 406, 412, 419,
55
422, 422, 425, 428, 434, 438, 442, 450, 454, 459, 467, 469, 473,
56
478, 484, 489, 495, 501, 504,
58
static const unsigned char aCode[110] = {
59
TK_ABORT, TK_TABLE, TK_JOIN_KW, TK_TEMP, TK_TEMP,
60
TK_OR, TK_ADD, TK_DATABASE, TK_AS, TK_SELECT,
61
TK_THEN, TK_END, TK_DEFAULT, TK_TRANSACTION,TK_ON,
62
TK_JOIN_KW, TK_ALTER, TK_RAISE, TK_EACH, TK_CHECK,
63
TK_KEY, TK_AFTER, TK_REFERENCES, TK_ESCAPE, TK_ELSE,
64
TK_EXCEPT, TK_TRIGGER, TK_REINDEX, TK_INDEX, TK_EXCLUSIVE,
65
TK_EXISTS, TK_STATEMENT, TK_AND, TK_DEFERRABLE, TK_EXPLAIN,
66
TK_INITIALLY, TK_ALL, TK_ATTACH, TK_HAVING, TK_GLOB,
67
TK_BEFORE, TK_FOR, TK_FOREIGN, TK_IGNORE, TK_RENAME,
68
TK_AUTOINCR, TK_TO, TK_IN, TK_BEGIN, TK_JOIN_KW,
69
TK_REPLACE, TK_BETWEEN, TK_NOT, TK_NOTNULL, TK_NULL,
70
TK_LIKE, TK_BY, TK_CASCADE, TK_ASC, TK_DEFERRED,
71
TK_DELETE, TK_CASE, TK_COLLATE, TK_COLUMNKW, TK_COMMIT,
72
TK_CONFLICT, TK_CONSTRAINT, TK_INTERSECT, TK_CREATE, TK_JOIN_KW,
73
TK_CDATE, TK_CTIME, TK_CTIMESTAMP, TK_PRAGMA, TK_MATCH,
74
TK_DESC, TK_DETACH, TK_DISTINCT, TK_IS, TK_DROP,
75
TK_PRIMARY, TK_FAIL, TK_LIMIT, TK_FROM, TK_JOIN_KW,
76
TK_GROUP, TK_UPDATE, TK_IMMEDIATE, TK_INSERT, TK_INSTEAD,
77
TK_INTO, TK_OF, TK_OFFSET, TK_SET, TK_ISNULL,
78
TK_JOIN, TK_ORDER, TK_RESTRICT, TK_JOIN_KW, TK_JOIN_KW,
79
TK_ROLLBACK, TK_ROW, TK_WHEN, TK_UNION, TK_UNIQUE,
80
TK_USING, TK_VACUUM, TK_VALUES, TK_VIEW, TK_WHERE,
83
if( n<2 ) return TK_ID;
84
h = ((sqlite3UpperToLower[((unsigned char*)z)[0]]*4) ^
85
(sqlite3UpperToLower[((unsigned char*)z)[n-1]]*3) ^
87
for(i=((int)aHash[h])-1; i>=0; i=((int)aNext[i])-1){
88
if( aLen[i]==n && sqlite3StrNICmp(&zText[aOffset[i]],z,n)==0 ){
94
int sqlite3KeywordCode(const char *z, int n){
95
return keywordCode(z, n);