From 65e97684bb3bd5d5b8afc32fd254666bd50d7ef5 Mon Sep 17 00:00:00 2001 From: Nick Galbreath Date: Fri, 12 Jul 2013 11:34:27 +0900 Subject: [PATCH] libinjection v3.2.0 --- apache2/libinjection/libinjection.h | 2 +- apache2/libinjection/libinjection_sqli.c | 44 +- apache2/libinjection/libinjection_sqli_data.h | 594 ++++++++++++------ 3 files changed, 439 insertions(+), 201 deletions(-) diff --git a/apache2/libinjection/libinjection.h b/apache2/libinjection/libinjection.h index db03ffb5..f3458a13 100644 --- a/apache2/libinjection/libinjection.h +++ b/apache2/libinjection/libinjection.h @@ -19,7 +19,7 @@ extern "C" { * See python's normalized version * http://www.python.org/dev/peps/pep-0386/#normalizedversion */ -#define LIBINJECTION_VERSION "3.1.0" +#define LIBINJECTION_VERSION "3.2.0" /** * Libinjection's sqli module makes a "normalized" diff --git a/apache2/libinjection/libinjection_sqli.c b/apache2/libinjection/libinjection_sqli.c index 2eac490e..41ad2d8a 100644 --- a/apache2/libinjection/libinjection_sqli.c +++ b/apache2/libinjection/libinjection_sqli.c @@ -1076,6 +1076,7 @@ static size_t parse_number(sfilter * sf) { size_t xlen; size_t start; + const char* digits = NULL; const char *cs = sf->s; const size_t slen = sf->slen; size_t pos = sf->pos; @@ -1083,18 +1084,22 @@ static size_t parse_number(sfilter * sf) /* cs[pos] == '0' has 1/10 chance of being true, * while pos+1< slen is almost always true */ - if (cs[pos] == '0' && pos + 1 < slen && (cs[pos + 1] == 'X' || cs[pos + 1] == 'x')) { - /* - * TBD compare if isxdigit - */ - xlen = - strlenspn(cs + pos + 2, slen - pos - 2, "0123456789ABCDEFabcdef"); - if (xlen == 0) { - st_assign(sf->current, TYPE_BAREWORD, pos, 2, cs + pos); - return pos + 2; - } else { - st_assign(sf->current, TYPE_NUMBER, pos, 2 + xlen, cs + pos); - return pos + 2 + xlen; + if (cs[pos] == '0' && pos + 1 < slen) { + if (cs[pos + 1] == 'X' || cs[pos + 1] == 'x') { + digits = "0123456789ABCDEFabcdef"; + } else if (cs[pos + 1] == 'B' || cs[pos + 1] == 'b') { + digits = "01"; + } + + if (digits) { + xlen = strlenspn(cs + pos + 2, slen - pos - 2, digits); + if (xlen == 0) { + st_assign(sf->current, TYPE_BAREWORD, pos, 2, cs + pos); + return pos + 2; + } else { + st_assign(sf->current, TYPE_NUMBER, pos, 2 + xlen, cs + pos); + return pos + 2 + xlen; + } } } @@ -1297,7 +1302,7 @@ int filter_fold(sfilter * sf) { stoken_t last_comment; - /* POS is the positive of where the NEXT token goes */ + /* POS is the position of where the NEXT token goes */ size_t pos = 0; /* LEFT is a count of how many tokens that are already @@ -1344,7 +1349,7 @@ int filter_fold(sfilter * sf) } FOLD_DEBUG /* did we get 2 tokens? if not then we are done */ - if (pos - left != 2) { + if (pos - left < 2) { left = pos; break; } @@ -1460,11 +1465,10 @@ int filter_fold(sfilter * sf) st_copy(&sf->tokenvec[left], &sf->tokenvec[left+1]); pos -= 1; sf->stats_folds += 1; + left = 0; continue; } - - /* all cases of handing 2 tokens is done and nothing matched. Get one more token */ @@ -1483,7 +1487,7 @@ int filter_fold(sfilter * sf) } /* do we have three tokens? If not then we are done */ - if (pos -left != 3) { + if (pos -left < 3) { left = pos; break; } @@ -1515,7 +1519,7 @@ int filter_fold(sfilter * sf) continue; } else if ((sf->tokenvec[left].type == TYPE_BAREWORD || sf->tokenvec[left].type == TYPE_NUMBER || sf->tokenvec[left].type == TYPE_VARIABLE || sf->tokenvec[left].type == TYPE_STRING) && - sf->tokenvec[left+1].type == TYPE_OPERATOR && + sf->tokenvec[left+1].type == TYPE_OPERATOR && streq(sf->tokenvec[left+1].val, "::") && sf->tokenvec[left+2].type == TYPE_SQLTYPE) { pos -= 2; sf->stats_folds += 2; @@ -1569,7 +1573,9 @@ int filter_fold(sfilter * sf) if (left > 0) { left -= 1; } - pos -=3; + /* pos is >= 3 so this is safe */ + assert(pos >= 3); + pos -= 3; continue; } else if ((sf->tokenvec[left].type == TYPE_BAREWORD || sf->tokenvec[left].type == TYPE_STRING)&& (sf->tokenvec[left+1].type == TYPE_BAREWORD && sf->tokenvec[left+1].val[0] == '.') && diff --git a/apache2/libinjection/libinjection_sqli_data.h b/apache2/libinjection/libinjection_sqli_data.h index e5bde822..d6b448bd 100644 --- a/apache2/libinjection/libinjection_sqli_data.h +++ b/apache2/libinjection/libinjection_sqli_data.h @@ -241,7 +241,6 @@ static const keyword_t sql_keywords[] = { {"0&1OS(", 'F'}, {"0&1OS1", 'F'}, {"0&1OSF", 'F'}, - {"0&1OSN", 'F'}, {"0&1OSO", 'F'}, {"0&1OSU", 'F'}, {"0&1OSV", 'F'}, @@ -286,7 +285,6 @@ static const keyword_t sql_keywords[] = { {"0&NOS(", 'F'}, {"0&NOS1", 'F'}, {"0&NOSF", 'F'}, - {"0&NOSN", 'F'}, {"0&NOSO", 'F'}, {"0&NOSU", 'F'}, {"0&NOSV", 'F'}, @@ -324,7 +322,6 @@ static const keyword_t sql_keywords[] = { {"0&SOS(", 'F'}, {"0&SOS1", 'F'}, {"0&SOSF", 'F'}, - {"0&SOSN", 'F'}, {"0&SOSO", 'F'}, {"0&SOSU", 'F'}, {"0&SOSV", 'F'}, @@ -362,7 +359,6 @@ static const keyword_t sql_keywords[] = { {"0&VOS(", 'F'}, {"0&VOS1", 'F'}, {"0&VOSF", 'F'}, - {"0&VOSN", 'F'}, {"0&VOSO", 'F'}, {"0&VOSU", 'F'}, {"0&VOSV", 'F'}, @@ -499,6 +495,7 @@ static const keyword_t sql_keywords[] = { {"01&EKF", 'F'}, {"01&EKN", 'F'}, {"01&EKS", 'F'}, + {"01&EKU", 'F'}, {"01&EKV", 'F'}, {"01&EN", 'F'}, {"01&EN;", 'F'}, @@ -510,6 +507,7 @@ static const keyword_t sql_keywords[] = { {"01&ESC", 'F'}, {"01&ESK", 'F'}, {"01&ESO", 'F'}, + {"01&EUE", 'F'}, {"01&EV", 'F'}, {"01&EV;", 'F'}, {"01&EVC", 'F'}, @@ -617,10 +615,6 @@ static const keyword_t sql_keywords[] = { {"01&SKN", 'F'}, {"01&SKS", 'F'}, {"01&SKV", 'F'}, - {"01&SN", 'F'}, - {"01&SN;", 'F'}, - {"01&SNC", 'F'}, - {"01&SNO", 'F'}, {"01&SO(", 'F'}, {"01&SO1", 'F'}, {"01&SOF", 'F'}, @@ -833,7 +827,6 @@ static const keyword_t sql_keywords[] = { {"01)BS;", 'F'}, {"01)BSC", 'F'}, {"01)BSK", 'F'}, - {"01)BSN", 'F'}, {"01)BSO", 'F'}, {"01)BSU", 'F'}, {"01)BV", 'F'}, @@ -1520,6 +1513,13 @@ static const keyword_t sql_keywords[] = { {"01KSOV", 'F'}, {"01KSU(", 'F'}, {"01KSUE", 'F'}, + {"01KTO(", 'F'}, + {"01KTO1", 'F'}, + {"01KTOF", 'F'}, + {"01KTON", 'F'}, + {"01KTOS", 'F'}, + {"01KTOV", 'F'}, + {"01KTUE", 'F'}, {"01KUE(", 'F'}, {"01KUE1", 'F'}, {"01KUEF", 'F'}, @@ -1611,7 +1611,6 @@ static const keyword_t sql_keywords[] = { {"01NOS(", 'F'}, {"01NOS1", 'F'}, {"01NOSF", 'F'}, - {"01NOSN", 'F'}, {"01NOSO", 'F'}, {"01NOSU", 'F'}, {"01NOSV", 'F'}, @@ -1639,6 +1638,7 @@ static const keyword_t sql_keywords[] = { {"01O((N", 'F'}, {"01O((O", 'F'}, {"01O((S", 'F'}, + {"01O((T", 'F'}, {"01O((V", 'F'}, {"01O(1&", 'F'}, {"01O(1)", 'F'}, @@ -1667,6 +1667,7 @@ static const keyword_t sql_keywords[] = { {"01O(S)", 'F'}, {"01O(S,", 'F'}, {"01O(SO", 'F'}, + {"01O(T(", 'F'}, {"01O(V&", 'F'}, {"01O(V)", 'F'}, {"01O(V,", 'F'}, @@ -1765,23 +1766,16 @@ static const keyword_t sql_keywords[] = { {"01OSKF", 'F'}, {"01OSKN", 'F'}, {"01OSKS", 'F'}, + {"01OSKT", 'F'}, {"01OSKU", 'F'}, {"01OSKV", 'F'}, - {"01OSN&", 'F'}, - {"01OSN(", 'F'}, - {"01OSN)", 'F'}, - {"01OSN,", 'F'}, - {"01OSN1", 'F'}, - {"01OSNE", 'F'}, - {"01OSNF", 'F'}, - {"01OSNO", 'F'}, - {"01OSNU", 'F'}, {"01OSO(", 'F'}, {"01OSO1", 'F'}, {"01OSOF", 'F'}, {"01OSOK", 'F'}, {"01OSON", 'F'}, {"01OSOS", 'F'}, + {"01OSOT", 'F'}, {"01OSOU", 'F'}, {"01OSOV", 'F'}, {"01OSU", 'F'}, @@ -1801,6 +1795,12 @@ static const keyword_t sql_keywords[] = { {"01OSVO", 'F'}, {"01OSVS", 'F'}, {"01OSVU", 'F'}, + {"01OT((", 'F'}, + {"01OT(1", 'F'}, + {"01OT(F", 'F'}, + {"01OT(N", 'F'}, + {"01OT(S", 'F'}, + {"01OT(V", 'F'}, {"01OU((", 'F'}, {"01OU(E", 'F'}, {"01OUEK", 'F'}, @@ -1863,6 +1863,7 @@ static const keyword_t sql_keywords[] = { {"01OVKF", 'F'}, {"01OVKN", 'F'}, {"01OVKS", 'F'}, + {"01OVKT", 'F'}, {"01OVKU", 'F'}, {"01OVKV", 'F'}, {"01OVO(", 'F'}, @@ -1871,6 +1872,7 @@ static const keyword_t sql_keywords[] = { {"01OVOK", 'F'}, {"01OVON", 'F'}, {"01OVOS", 'F'}, + {"01OVOT", 'F'}, {"01OVOU", 'F'}, {"01OVOV", 'F'}, {"01OVS(", 'F'}, @@ -1898,11 +1900,6 @@ static const keyword_t sql_keywords[] = { {"01SF(N", 'F'}, {"01SF(S", 'F'}, {"01SF(V", 'F'}, - {"01SNC", 'F'}, - {"01SNO(", 'F'}, - {"01SNOF", 'F'}, - {"01SNOS", 'F'}, - {"01SNOV", 'F'}, {"01SUE", 'F'}, {"01SUE;", 'F'}, {"01SUEC", 'F'}, @@ -2022,7 +2019,6 @@ static const keyword_t sql_keywords[] = { {"01UESC", 'F'}, {"01UESF", 'F'}, {"01UESK", 'F'}, - {"01UESN", 'F'}, {"01UESO", 'F'}, {"01UESU", 'F'}, {"01UESV", 'F'}, @@ -2133,7 +2129,6 @@ static const keyword_t sql_keywords[] = { {"01VOS(", 'F'}, {"01VOS1", 'F'}, {"01VOSF", 'F'}, - {"01VOSN", 'F'}, {"01VOSO", 'F'}, {"01VOSU", 'F'}, {"01VOSV", 'F'}, @@ -2191,7 +2186,6 @@ static const keyword_t sql_keywords[] = { {"0E((S,", 'F'}, {"0E((S1", 'F'}, {"0E((SF", 'F'}, - {"0E((SN", 'F'}, {"0E((SO", 'F'}, {"0E((SV", 'F'}, {"0E((V(", 'F'}, @@ -2286,8 +2280,6 @@ static const keyword_t sql_keywords[] = { {"0E(S1)", 'F'}, {"0E(S1O", 'F'}, {"0E(SF(", 'F'}, - {"0E(SN)", 'F'}, - {"0E(SNO", 'F'}, {"0E(SO(", 'F'}, {"0E(SO1", 'F'}, {"0E(SOF", 'F'}, @@ -2406,7 +2398,6 @@ static const keyword_t sql_keywords[] = { {"0E1OS1", 'F'}, {"0E1OSF", 'F'}, {"0E1OSK", 'F'}, - {"0E1OSN", 'F'}, {"0E1OSO", 'F'}, {"0E1OSV", 'F'}, {"0E1OV&", 'F'}, @@ -2430,6 +2421,9 @@ static const keyword_t sql_keywords[] = { {"0E1VON", 'F'}, {"0E1VOS", 'F'}, {"0E1VOV", 'F'}, + {"0ECHO", 'F'}, + {"0ECHO;", 'F'}, + {"0ECHOC", 'F'}, {"0EE(((", 'F'}, {"0EE((F", 'F'}, {"0EE(F(", 'F'}, @@ -2501,7 +2495,6 @@ static const keyword_t sql_keywords[] = { {"0EK(S,", 'F'}, {"0EK(S1", 'F'}, {"0EK(SF", 'F'}, - {"0EK(SN", 'F'}, {"0EK(SO", 'F'}, {"0EK(SV", 'F'}, {"0EK(V(", 'F'}, @@ -2620,12 +2613,6 @@ static const keyword_t sql_keywords[] = { {"0EKSKN", 'F'}, {"0EKSKS", 'F'}, {"0EKSKV", 'F'}, - {"0EKSN", 'F'}, - {"0EKSN;", 'F'}, - {"0EKSNC", 'F'}, - {"0EKSNF", 'F'}, - {"0EKSNK", 'F'}, - {"0EKSNO", 'F'}, {"0EKSO(", 'F'}, {"0EKSO1", 'F'}, {"0EKSOF", 'F'}, @@ -2771,7 +2758,6 @@ static const keyword_t sql_keywords[] = { {"0ENOS1", 'F'}, {"0ENOSF", 'F'}, {"0ENOSK", 'F'}, - {"0ENOSN", 'F'}, {"0ENOSO", 'F'}, {"0ENOSV", 'F'}, {"0ENOV&", 'F'}, @@ -2872,14 +2858,6 @@ static const keyword_t sql_keywords[] = { {"0ESKV)", 'F'}, {"0ESKVK", 'F'}, {"0ESKVO", 'F'}, - {"0ESN;", 'F'}, - {"0ESN;C", 'F'}, - {"0ESNC", 'F'}, - {"0ESNKN", 'F'}, - {"0ESNO(", 'F'}, - {"0ESNOF", 'F'}, - {"0ESNOS", 'F'}, - {"0ESNOV", 'F'}, {"0ESO((", 'F'}, {"0ESO(1", 'F'}, {"0ESO(E", 'F'}, @@ -2913,7 +2891,6 @@ static const keyword_t sql_keywords[] = { {"0ESOS1", 'F'}, {"0ESOSF", 'F'}, {"0ESOSK", 'F'}, - {"0ESOSN", 'F'}, {"0ESOSO", 'F'}, {"0ESOSV", 'F'}, {"0ESOV&", 'F'}, @@ -3050,7 +3027,6 @@ static const keyword_t sql_keywords[] = { {"0EVOS1", 'F'}, {"0EVOSF", 'F'}, {"0EVOSK", 'F'}, - {"0EVOSN", 'F'}, {"0EVOSO", 'F'}, {"0EVOSV", 'F'}, {"0EVOV&", 'F'}, @@ -3183,6 +3159,7 @@ static const keyword_t sql_keywords[] = { {"0F()KF", 'F'}, {"0F()KN", 'F'}, {"0F()KS", 'F'}, + {"0F()KT", 'F'}, {"0F()KU", 'F'}, {"0F()KV", 'F'}, {"0F()N&", 'F'}, @@ -3200,12 +3177,12 @@ static const keyword_t sql_keywords[] = { {"0F()OK", 'F'}, {"0F()ON", 'F'}, {"0F()OS", 'F'}, + {"0F()OT", 'F'}, {"0F()OU", 'F'}, {"0F()OV", 'F'}, {"0F()S(", 'F'}, {"0F()S1", 'F'}, {"0F()SF", 'F'}, - {"0F()SN", 'F'}, {"0F()SO", 'F'}, {"0F()SU", 'F'}, {"0F()SV", 'F'}, @@ -3378,6 +3355,7 @@ static const keyword_t sql_keywords[] = { {"0K((VO", 'F'}, {"0K(1))", 'F'}, {"0K(1),", 'F'}, + {"0K(1)K", 'F'}, {"0K(1)O", 'F'}, {"0K(1O(", 'F'}, {"0K(1OF", 'F'}, @@ -3392,6 +3370,7 @@ static const keyword_t sql_keywords[] = { {"0K(F(V", 'F'}, {"0K(N))", 'F'}, {"0K(N),", 'F'}, + {"0K(N)K", 'F'}, {"0K(N)O", 'F'}, {"0K(NO(", 'F'}, {"0K(NOF", 'F'}, @@ -3399,6 +3378,7 @@ static const keyword_t sql_keywords[] = { {"0K(NOV", 'F'}, {"0K(S))", 'F'}, {"0K(S),", 'F'}, + {"0K(S)K", 'F'}, {"0K(S)O", 'F'}, {"0K(SO(", 'F'}, {"0K(SO1", 'F'}, @@ -3408,6 +3388,7 @@ static const keyword_t sql_keywords[] = { {"0K(SOV", 'F'}, {"0K(V))", 'F'}, {"0K(V),", 'F'}, + {"0K(V)K", 'F'}, {"0K(V)O", 'F'}, {"0K(VO(", 'F'}, {"0K(VO1", 'F'}, @@ -3424,6 +3405,21 @@ static const keyword_t sql_keywords[] = { {"0K1,F(", 'F'}, {"0K1,VC", 'F'}, {"0K1,VO", 'F'}, + {"0K1K((", 'F'}, + {"0K1K(1", 'F'}, + {"0K1K(F", 'F'}, + {"0K1K(N", 'F'}, + {"0K1K(S", 'F'}, + {"0K1K(V", 'F'}, + {"0K1K1O", 'F'}, + {"0K1K1U", 'F'}, + {"0K1KF(", 'F'}, + {"0K1KNU", 'F'}, + {"0K1KSO", 'F'}, + {"0K1KSU", 'F'}, + {"0K1KTO", 'F'}, + {"0K1KVO", 'F'}, + {"0K1KVU", 'F'}, {"0K1O((", 'F'}, {"0K1O(1", 'F'}, {"0K1O(F", 'F'}, @@ -3435,12 +3431,13 @@ static const keyword_t sql_keywords[] = { {"0K1OS,", 'F'}, {"0K1OS1", 'F'}, {"0K1OSF", 'F'}, - {"0K1OSN", 'F'}, + {"0K1OSK", 'F'}, {"0K1OSO", 'F'}, {"0K1OSV", 'F'}, {"0K1OV(", 'F'}, {"0K1OV,", 'F'}, {"0K1OVF", 'F'}, + {"0K1OVK", 'F'}, {"0K1OVO", 'F'}, {"0K1OVS", 'F'}, {"0KF(((", 'F'}, @@ -3452,6 +3449,7 @@ static const keyword_t sql_keywords[] = { {"0KF((V", 'F'}, {"0KF())", 'F'}, {"0KF(),", 'F'}, + {"0KF()K", 'F'}, {"0KF()O", 'F'}, {"0KF(1)", 'F'}, {"0KF(1O", 'F'}, @@ -3471,6 +3469,21 @@ static const keyword_t sql_keywords[] = { {"0KN,F(", 'F'}, {"0KN,VC", 'F'}, {"0KN,VO", 'F'}, + {"0KNK((", 'F'}, + {"0KNK(1", 'F'}, + {"0KNK(F", 'F'}, + {"0KNK(N", 'F'}, + {"0KNK(S", 'F'}, + {"0KNK(V", 'F'}, + {"0KNK1O", 'F'}, + {"0KNK1U", 'F'}, + {"0KNKF(", 'F'}, + {"0KNKNU", 'F'}, + {"0KNKSO", 'F'}, + {"0KNKSU", 'F'}, + {"0KNKTO", 'F'}, + {"0KNKVO", 'F'}, + {"0KNKVU", 'F'}, {"0KS,((", 'F'}, {"0KS,(1", 'F'}, {"0KS,(F", 'F'}, @@ -3480,6 +3493,21 @@ static const keyword_t sql_keywords[] = { {"0KS,F(", 'F'}, {"0KS,VC", 'F'}, {"0KS,VO", 'F'}, + {"0KSK((", 'F'}, + {"0KSK(1", 'F'}, + {"0KSK(F", 'F'}, + {"0KSK(N", 'F'}, + {"0KSK(S", 'F'}, + {"0KSK(V", 'F'}, + {"0KSK1O", 'F'}, + {"0KSK1U", 'F'}, + {"0KSKF(", 'F'}, + {"0KSKNU", 'F'}, + {"0KSKSO", 'F'}, + {"0KSKSU", 'F'}, + {"0KSKTO", 'F'}, + {"0KSKVO", 'F'}, + {"0KSKVU", 'F'}, {"0KSO((", 'F'}, {"0KSO(1", 'F'}, {"0KSO(F", 'F'}, @@ -3489,6 +3517,7 @@ static const keyword_t sql_keywords[] = { {"0KSO1(", 'F'}, {"0KSO1,", 'F'}, {"0KSO1F", 'F'}, + {"0KSO1K", 'F'}, {"0KSO1N", 'F'}, {"0KSO1O", 'F'}, {"0KSO1S", 'F'}, @@ -3498,17 +3527,19 @@ static const keyword_t sql_keywords[] = { {"0KSON,", 'F'}, {"0KSON1", 'F'}, {"0KSONF", 'F'}, + {"0KSONK", 'F'}, {"0KSONO", 'F'}, {"0KSOS(", 'F'}, {"0KSOS,", 'F'}, {"0KSOS1", 'F'}, {"0KSOSF", 'F'}, - {"0KSOSN", 'F'}, + {"0KSOSK", 'F'}, {"0KSOSO", 'F'}, {"0KSOSV", 'F'}, {"0KSOV(", 'F'}, {"0KSOV,", 'F'}, {"0KSOVF", 'F'}, + {"0KSOVK", 'F'}, {"0KSOVO", 'F'}, {"0KSOVS", 'F'}, {"0KV,((", 'F'}, @@ -3526,6 +3557,21 @@ static const keyword_t sql_keywords[] = { {"0KV,SO", 'F'}, {"0KV,VC", 'F'}, {"0KV,VO", 'F'}, + {"0KVK((", 'F'}, + {"0KVK(1", 'F'}, + {"0KVK(F", 'F'}, + {"0KVK(N", 'F'}, + {"0KVK(S", 'F'}, + {"0KVK(V", 'F'}, + {"0KVK1O", 'F'}, + {"0KVK1U", 'F'}, + {"0KVKF(", 'F'}, + {"0KVKNU", 'F'}, + {"0KVKSO", 'F'}, + {"0KVKSU", 'F'}, + {"0KVKTO", 'F'}, + {"0KVKVO", 'F'}, + {"0KVKVU", 'F'}, {"0KVO((", 'F'}, {"0KVO(1", 'F'}, {"0KVO(F", 'F'}, @@ -3535,6 +3581,7 @@ static const keyword_t sql_keywords[] = { {"0KVO1(", 'F'}, {"0KVO1,", 'F'}, {"0KVO1F", 'F'}, + {"0KVO1K", 'F'}, {"0KVO1N", 'F'}, {"0KVO1O", 'F'}, {"0KVO1S", 'F'}, @@ -3544,17 +3591,19 @@ static const keyword_t sql_keywords[] = { {"0KVON,", 'F'}, {"0KVON1", 'F'}, {"0KVONF", 'F'}, + {"0KVONK", 'F'}, {"0KVONO", 'F'}, {"0KVOS(", 'F'}, {"0KVOS,", 'F'}, {"0KVOS1", 'F'}, {"0KVOSF", 'F'}, - {"0KVOSN", 'F'}, + {"0KVOSK", 'F'}, {"0KVOSO", 'F'}, {"0KVOSV", 'F'}, {"0KVOV(", 'F'}, {"0KVOV,", 'F'}, {"0KVOVF", 'F'}, + {"0KVOVK", 'F'}, {"0KVOVO", 'F'}, {"0KVOVS", 'F'}, {"0N&(((", 'F'}, @@ -3765,9 +3814,6 @@ static const keyword_t sql_keywords[] = { {"0N&SKN", 'F'}, {"0N&SKS", 'F'}, {"0N&SKV", 'F'}, - {"0N&SN;", 'F'}, - {"0N&SNC", 'F'}, - {"0N&SNO", 'F'}, {"0N&SO(", 'F'}, {"0N&SO1", 'F'}, {"0N&SOF", 'F'}, @@ -4038,7 +4084,6 @@ static const keyword_t sql_keywords[] = { {"0N)BS;", 'F'}, {"0N)BSC", 'F'}, {"0N)BSK", 'F'}, - {"0N)BSN", 'F'}, {"0N)BSO", 'F'}, {"0N)BSU", 'F'}, {"0N)BV", 'F'}, @@ -4228,7 +4273,6 @@ static const keyword_t sql_keywords[] = { {"0N1OS(", 'F'}, {"0N1OS1", 'F'}, {"0N1OSF", 'F'}, - {"0N1OSN", 'F'}, {"0N1OSO", 'F'}, {"0N1OSU", 'F'}, {"0N1OSV", 'F'}, @@ -4740,6 +4784,13 @@ static const keyword_t sql_keywords[] = { {"0NKSOV", 'F'}, {"0NKSU(", 'F'}, {"0NKSUE", 'F'}, + {"0NKTO(", 'F'}, + {"0NKTO1", 'F'}, + {"0NKTOF", 'F'}, + {"0NKTON", 'F'}, + {"0NKTOS", 'F'}, + {"0NKTOV", 'F'}, + {"0NKTUE", 'F'}, {"0NKUE(", 'F'}, {"0NKUE1", 'F'}, {"0NKUEF", 'F'}, @@ -4787,6 +4838,7 @@ static const keyword_t sql_keywords[] = { {"0NO((N", 'F'}, {"0NO((O", 'F'}, {"0NO((S", 'F'}, + {"0NO((T", 'F'}, {"0NO((V", 'F'}, {"0NO(1&", 'F'}, {"0NO(1)", 'F'}, @@ -4815,6 +4867,7 @@ static const keyword_t sql_keywords[] = { {"0NO(S)", 'F'}, {"0NO(S,", 'F'}, {"0NO(SO", 'F'}, + {"0NO(T(", 'F'}, {"0NO(V&", 'F'}, {"0NO(V)", 'F'}, {"0NO(V,", 'F'}, @@ -4914,23 +4967,16 @@ static const keyword_t sql_keywords[] = { {"0NOSKF", 'F'}, {"0NOSKN", 'F'}, {"0NOSKS", 'F'}, + {"0NOSKT", 'F'}, {"0NOSKU", 'F'}, {"0NOSKV", 'F'}, - {"0NOSN&", 'F'}, - {"0NOSN(", 'F'}, - {"0NOSN)", 'F'}, - {"0NOSN,", 'F'}, - {"0NOSN1", 'F'}, - {"0NOSNE", 'F'}, - {"0NOSNF", 'F'}, - {"0NOSNO", 'F'}, - {"0NOSNU", 'F'}, {"0NOSO(", 'F'}, {"0NOSO1", 'F'}, {"0NOSOF", 'F'}, {"0NOSOK", 'F'}, {"0NOSON", 'F'}, {"0NOSOS", 'F'}, + {"0NOSOT", 'F'}, {"0NOSOU", 'F'}, {"0NOSOV", 'F'}, {"0NOSU", 'F'}, @@ -4950,6 +4996,12 @@ static const keyword_t sql_keywords[] = { {"0NOSVO", 'F'}, {"0NOSVS", 'F'}, {"0NOSVU", 'F'}, + {"0NOT((", 'F'}, + {"0NOT(1", 'F'}, + {"0NOT(F", 'F'}, + {"0NOT(N", 'F'}, + {"0NOT(S", 'F'}, + {"0NOT(V", 'F'}, {"0NOU((", 'F'}, {"0NOU(E", 'F'}, {"0NOUEK", 'F'}, @@ -5011,6 +5063,7 @@ static const keyword_t sql_keywords[] = { {"0NOVKF", 'F'}, {"0NOVKN", 'F'}, {"0NOVKS", 'F'}, + {"0NOVKT", 'F'}, {"0NOVKU", 'F'}, {"0NOVKV", 'F'}, {"0NOVO(", 'F'}, @@ -5019,6 +5072,7 @@ static const keyword_t sql_keywords[] = { {"0NOVOK", 'F'}, {"0NOVON", 'F'}, {"0NOVOS", 'F'}, + {"0NOVOT", 'F'}, {"0NOVOU", 'F'}, {"0NOVOV", 'F'}, {"0NOVS(", 'F'}, @@ -5151,7 +5205,6 @@ static const keyword_t sql_keywords[] = { {"0NUESC", 'F'}, {"0NUESF", 'F'}, {"0NUESK", 'F'}, - {"0NUESN", 'F'}, {"0NUESO", 'F'}, {"0NUESU", 'F'}, {"0NUESV", 'F'}, @@ -5475,9 +5528,6 @@ static const keyword_t sql_keywords[] = { {"0S&SKN", 'F'}, {"0S&SKS", 'F'}, {"0S&SKV", 'F'}, - {"0S&SN;", 'F'}, - {"0S&SNC", 'F'}, - {"0S&SNO", 'F'}, {"0S&SO(", 'F'}, {"0S&SO1", 'F'}, {"0S&SOF", 'F'}, @@ -5690,7 +5740,6 @@ static const keyword_t sql_keywords[] = { {"0S)BS;", 'F'}, {"0S)BSC", 'F'}, {"0S)BSK", 'F'}, - {"0S)BSN", 'F'}, {"0S)BSO", 'F'}, {"0S)BSU", 'F'}, {"0S)BV", 'F'}, @@ -5878,7 +5927,6 @@ static const keyword_t sql_keywords[] = { {"0S1OS(", 'F'}, {"0S1OS1", 'F'}, {"0S1OSF", 'F'}, - {"0S1OSN", 'F'}, {"0S1OSO", 'F'}, {"0S1OSU", 'F'}, {"0S1OSV", 'F'}, @@ -6425,6 +6473,13 @@ static const keyword_t sql_keywords[] = { {"0SKSOV", 'F'}, {"0SKSU(", 'F'}, {"0SKSUE", 'F'}, + {"0SKTO(", 'F'}, + {"0SKTO1", 'F'}, + {"0SKTOF", 'F'}, + {"0SKTON", 'F'}, + {"0SKTOS", 'F'}, + {"0SKTOV", 'F'}, + {"0SKTUE", 'F'}, {"0SKUE(", 'F'}, {"0SKUE1", 'F'}, {"0SKUEF", 'F'}, @@ -6465,85 +6520,6 @@ static const keyword_t sql_keywords[] = { {"0SKVOV", 'F'}, {"0SKVU(", 'F'}, {"0SKVUE", 'F'}, - {"0SN&F(", 'F'}, - {"0SN(((", 'F'}, - {"0SN((1", 'F'}, - {"0SN((F", 'F'}, - {"0SN((N", 'F'}, - {"0SN((S", 'F'}, - {"0SN((V", 'F'}, - {"0SN(1)", 'F'}, - {"0SN(1O", 'F'}, - {"0SN(F(", 'F'}, - {"0SN(S)", 'F'}, - {"0SN(SO", 'F'}, - {"0SN(V)", 'F'}, - {"0SN(VO", 'F'}, - {"0SN)))", 'F'}, - {"0SN))N", 'F'}, - {"0SN))U", 'F'}, - {"0SN)UE", 'F'}, - {"0SN,F(", 'F'}, - {"0SN1;", 'F'}, - {"0SN1;C", 'F'}, - {"0SN1C", 'F'}, - {"0SN1O(", 'F'}, - {"0SN1OF", 'F'}, - {"0SN1OS", 'F'}, - {"0SN1OV", 'F'}, - {"0SNE((", 'F'}, - {"0SNE(1", 'F'}, - {"0SNE(F", 'F'}, - {"0SNE(N", 'F'}, - {"0SNE(S", 'F'}, - {"0SNE(V", 'F'}, - {"0SNE1C", 'F'}, - {"0SNE1O", 'F'}, - {"0SNEF(", 'F'}, - {"0SNENC", 'F'}, - {"0SNENO", 'F'}, - {"0SNESC", 'F'}, - {"0SNESO", 'F'}, - {"0SNEVC", 'F'}, - {"0SNEVO", 'F'}, - {"0SNF((", 'F'}, - {"0SNF()", 'F'}, - {"0SNF(1", 'F'}, - {"0SNF(F", 'F'}, - {"0SNF(N", 'F'}, - {"0SNF(S", 'F'}, - {"0SNF(V", 'F'}, - {"0SNO((", 'F'}, - {"0SNO(1", 'F'}, - {"0SNO(F", 'F'}, - {"0SNO(N", 'F'}, - {"0SNO(S", 'F'}, - {"0SNO(V", 'F'}, - {"0SNOF(", 'F'}, - {"0SNOS(", 'F'}, - {"0SNOS1", 'F'}, - {"0SNOSF", 'F'}, - {"0SNOSN", 'F'}, - {"0SNOSO", 'F'}, - {"0SNOSU", 'F'}, - {"0SNOSV", 'F'}, - {"0SNOV(", 'F'}, - {"0SNOVF", 'F'}, - {"0SNOVO", 'F'}, - {"0SNOVS", 'F'}, - {"0SNOVU", 'F'}, - {"0SNU((", 'F'}, - {"0SNU(E", 'F'}, - {"0SNUE", 'F'}, - {"0SNUE(", 'F'}, - {"0SNUE1", 'F'}, - {"0SNUE;", 'F'}, - {"0SNUEC", 'F'}, - {"0SNUEF", 'F'}, - {"0SNUEK", 'F'}, - {"0SNUEN", 'F'}, - {"0SNUES", 'F'}, - {"0SNUEV", 'F'}, {"0SO(((", 'F'}, {"0SO((1", 'F'}, {"0SO((E", 'F'}, @@ -6551,6 +6527,7 @@ static const keyword_t sql_keywords[] = { {"0SO((N", 'F'}, {"0SO((O", 'F'}, {"0SO((S", 'F'}, + {"0SO((T", 'F'}, {"0SO((V", 'F'}, {"0SO(1&", 'F'}, {"0SO(1)", 'F'}, @@ -6579,6 +6556,7 @@ static const keyword_t sql_keywords[] = { {"0SO(S)", 'F'}, {"0SO(S,", 'F'}, {"0SO(SO", 'F'}, + {"0SO(T(", 'F'}, {"0SO(V&", 'F'}, {"0SO(V)", 'F'}, {"0SO(V,", 'F'}, @@ -6637,6 +6615,7 @@ static const keyword_t sql_keywords[] = { {"0SO1KF", 'F'}, {"0SO1KN", 'F'}, {"0SO1KS", 'F'}, + {"0SO1KT", 'F'}, {"0SO1KU", 'F'}, {"0SO1KV", 'F'}, {"0SO1N&", 'F'}, @@ -6650,11 +6629,11 @@ static const keyword_t sql_keywords[] = { {"0SO1OF", 'F'}, {"0SO1OK", 'F'}, {"0SO1OS", 'F'}, + {"0SO1OT", 'F'}, {"0SO1OU", 'F'}, {"0SO1OV", 'F'}, {"0SO1S(", 'F'}, {"0SO1SF", 'F'}, - {"0SO1SN", 'F'}, {"0SO1SU", 'F'}, {"0SO1SV", 'F'}, {"0SO1U", 'F'}, @@ -6770,12 +6749,14 @@ static const keyword_t sql_keywords[] = { {"0SONKB", 'F'}, {"0SONKF", 'F'}, {"0SONKS", 'F'}, + {"0SONKT", 'F'}, {"0SONKU", 'F'}, {"0SONKV", 'F'}, {"0SONO(", 'F'}, {"0SONOF", 'F'}, {"0SONOK", 'F'}, {"0SONOS", 'F'}, + {"0SONOT", 'F'}, {"0SONOU", 'F'}, {"0SONOV", 'F'}, {"0SONSU", 'F'}, @@ -6853,23 +6834,16 @@ static const keyword_t sql_keywords[] = { {"0SOSKF", 'F'}, {"0SOSKN", 'F'}, {"0SOSKS", 'F'}, + {"0SOSKT", 'F'}, {"0SOSKU", 'F'}, {"0SOSKV", 'F'}, - {"0SOSN&", 'F'}, - {"0SOSN(", 'F'}, - {"0SOSN)", 'F'}, - {"0SOSN,", 'F'}, - {"0SOSN1", 'F'}, - {"0SOSNE", 'F'}, - {"0SOSNF", 'F'}, - {"0SOSNO", 'F'}, - {"0SOSNU", 'F'}, {"0SOSO(", 'F'}, {"0SOSO1", 'F'}, {"0SOSOF", 'F'}, {"0SOSOK", 'F'}, {"0SOSON", 'F'}, {"0SOSOS", 'F'}, + {"0SOSOT", 'F'}, {"0SOSOU", 'F'}, {"0SOSOV", 'F'}, {"0SOSU", 'F'}, @@ -6889,6 +6863,12 @@ static const keyword_t sql_keywords[] = { {"0SOSVO", 'F'}, {"0SOSVS", 'F'}, {"0SOSVU", 'F'}, + {"0SOT((", 'F'}, + {"0SOT(1", 'F'}, + {"0SOT(F", 'F'}, + {"0SOT(N", 'F'}, + {"0SOT(S", 'F'}, + {"0SOT(V", 'F'}, {"0SOU((", 'F'}, {"0SOU(E", 'F'}, {"0SOUEK", 'F'}, @@ -6951,6 +6931,7 @@ static const keyword_t sql_keywords[] = { {"0SOVKF", 'F'}, {"0SOVKN", 'F'}, {"0SOVKS", 'F'}, + {"0SOVKT", 'F'}, {"0SOVKU", 'F'}, {"0SOVKV", 'F'}, {"0SOVO(", 'F'}, @@ -6959,6 +6940,7 @@ static const keyword_t sql_keywords[] = { {"0SOVOK", 'F'}, {"0SOVON", 'F'}, {"0SOVOS", 'F'}, + {"0SOVOT", 'F'}, {"0SOVOU", 'F'}, {"0SOVOV", 'F'}, {"0SOVS(", 'F'}, @@ -7083,7 +7065,6 @@ static const keyword_t sql_keywords[] = { {"0SUESC", 'F'}, {"0SUESF", 'F'}, {"0SUESK", 'F'}, - {"0SUESN", 'F'}, {"0SUESO", 'F'}, {"0SUESU", 'F'}, {"0SUESV", 'F'}, @@ -7194,7 +7175,6 @@ static const keyword_t sql_keywords[] = { {"0SVOS(", 'F'}, {"0SVOS1", 'F'}, {"0SVOSF", 'F'}, - {"0SVOSN", 'F'}, {"0SVOSO", 'F'}, {"0SVOSU", 'F'}, {"0SVOSV", 'F'}, @@ -7235,6 +7215,7 @@ static const keyword_t sql_keywords[] = { {"0T(1))", 'F'}, {"0T(1)F", 'F'}, {"0T(1)O", 'F'}, + {"0T(1)U", 'F'}, {"0T(1O(", 'F'}, {"0T(1OF", 'F'}, {"0T(1OS", 'F'}, @@ -7249,6 +7230,7 @@ static const keyword_t sql_keywords[] = { {"0T(N))", 'F'}, {"0T(N)F", 'F'}, {"0T(N)O", 'F'}, + {"0T(N)U", 'F'}, {"0T(NO(", 'F'}, {"0T(NOF", 'F'}, {"0T(NOS", 'F'}, @@ -7256,6 +7238,7 @@ static const keyword_t sql_keywords[] = { {"0T(S))", 'F'}, {"0T(S)F", 'F'}, {"0T(S)O", 'F'}, + {"0T(S)U", 'F'}, {"0T(SO(", 'F'}, {"0T(SO1", 'F'}, {"0T(SOF", 'F'}, @@ -7265,6 +7248,7 @@ static const keyword_t sql_keywords[] = { {"0T(V))", 'F'}, {"0T(V)F", 'F'}, {"0T(V)O", 'F'}, + {"0T(V)U", 'F'}, {"0T(VO(", 'F'}, {"0T(VO1", 'F'}, {"0T(VOF", 'F'}, @@ -7324,6 +7308,52 @@ static const keyword_t sql_keywords[] = { {"0TNOSO", 'F'}, {"0TNOVF", 'F'}, {"0TNOVO", 'F'}, + {"0TO(((", 'F'}, + {"0TO((1", 'F'}, + {"0TO((F", 'F'}, + {"0TO((N", 'F'}, + {"0TO((S", 'F'}, + {"0TO((V", 'F'}, + {"0TO(1)", 'F'}, + {"0TO(1O", 'F'}, + {"0TO(F(", 'F'}, + {"0TO(N)", 'F'}, + {"0TO(NO", 'F'}, + {"0TO(S)", 'F'}, + {"0TO(SO", 'F'}, + {"0TO(V)", 'F'}, + {"0TO(VO", 'F'}, + {"0TO1O(", 'F'}, + {"0TO1OF", 'F'}, + {"0TO1OS", 'F'}, + {"0TO1OV", 'F'}, + {"0TO1UE", 'F'}, + {"0TOF((", 'F'}, + {"0TOF()", 'F'}, + {"0TOF(1", 'F'}, + {"0TOF(F", 'F'}, + {"0TOF(N", 'F'}, + {"0TOF(S", 'F'}, + {"0TOF(V", 'F'}, + {"0TONO(", 'F'}, + {"0TONOF", 'F'}, + {"0TONOS", 'F'}, + {"0TONOV", 'F'}, + {"0TONUE", 'F'}, + {"0TOSO(", 'F'}, + {"0TOSO1", 'F'}, + {"0TOSOF", 'F'}, + {"0TOSON", 'F'}, + {"0TOSOS", 'F'}, + {"0TOSOV", 'F'}, + {"0TOSUE", 'F'}, + {"0TOVO(", 'F'}, + {"0TOVO1", 'F'}, + {"0TOVOF", 'F'}, + {"0TOVON", 'F'}, + {"0TOVOS", 'F'}, + {"0TOVOV", 'F'}, + {"0TOVUE", 'F'}, {"0TSF((", 'F'}, {"0TSF(1", 'F'}, {"0TSF(F", 'F'}, @@ -7755,10 +7785,6 @@ static const keyword_t sql_keywords[] = { {"0V&SKN", 'F'}, {"0V&SKS", 'F'}, {"0V&SKV", 'F'}, - {"0V&SN", 'F'}, - {"0V&SN;", 'F'}, - {"0V&SNC", 'F'}, - {"0V&SNO", 'F'}, {"0V&SO(", 'F'}, {"0V&SO1", 'F'}, {"0V&SOF", 'F'}, @@ -7971,7 +7997,6 @@ static const keyword_t sql_keywords[] = { {"0V)BS;", 'F'}, {"0V)BSC", 'F'}, {"0V)BSK", 'F'}, - {"0V)BSN", 'F'}, {"0V)BSO", 'F'}, {"0V)BSU", 'F'}, {"0V)BV", 'F'}, @@ -8702,6 +8727,13 @@ static const keyword_t sql_keywords[] = { {"0VKSOV", 'F'}, {"0VKSU(", 'F'}, {"0VKSUE", 'F'}, + {"0VKTO(", 'F'}, + {"0VKTO1", 'F'}, + {"0VKTOF", 'F'}, + {"0VKTON", 'F'}, + {"0VKTOS", 'F'}, + {"0VKTOV", 'F'}, + {"0VKTUE", 'F'}, {"0VKUE(", 'F'}, {"0VKUE1", 'F'}, {"0VKUEF", 'F'}, @@ -8749,6 +8781,7 @@ static const keyword_t sql_keywords[] = { {"0VO((N", 'F'}, {"0VO((O", 'F'}, {"0VO((S", 'F'}, + {"0VO((T", 'F'}, {"0VO((V", 'F'}, {"0VO(1&", 'F'}, {"0VO(1)", 'F'}, @@ -8777,6 +8810,7 @@ static const keyword_t sql_keywords[] = { {"0VO(S)", 'F'}, {"0VO(S,", 'F'}, {"0VO(SO", 'F'}, + {"0VO(T(", 'F'}, {"0VO(V&", 'F'}, {"0VO(V)", 'F'}, {"0VO(V,", 'F'}, @@ -8836,6 +8870,7 @@ static const keyword_t sql_keywords[] = { {"0VO1KF", 'F'}, {"0VO1KN", 'F'}, {"0VO1KS", 'F'}, + {"0VO1KT", 'F'}, {"0VO1KU", 'F'}, {"0VO1KV", 'F'}, {"0VO1N&", 'F'}, @@ -8850,11 +8885,11 @@ static const keyword_t sql_keywords[] = { {"0VO1OF", 'F'}, {"0VO1OK", 'F'}, {"0VO1OS", 'F'}, + {"0VO1OT", 'F'}, {"0VO1OU", 'F'}, {"0VO1OV", 'F'}, {"0VO1S(", 'F'}, {"0VO1SF", 'F'}, - {"0VO1SN", 'F'}, {"0VO1SU", 'F'}, {"0VO1SV", 'F'}, {"0VO1U", 'F'}, @@ -8972,12 +9007,14 @@ static const keyword_t sql_keywords[] = { {"0VONKF", 'F'}, {"0VONKN", 'F'}, {"0VONKS", 'F'}, + {"0VONKT", 'F'}, {"0VONKU", 'F'}, {"0VONKV", 'F'}, {"0VONO(", 'F'}, {"0VONOF", 'F'}, {"0VONOK", 'F'}, {"0VONOS", 'F'}, + {"0VONOT", 'F'}, {"0VONOU", 'F'}, {"0VONOV", 'F'}, {"0VONSU", 'F'}, @@ -9055,23 +9092,16 @@ static const keyword_t sql_keywords[] = { {"0VOSKF", 'F'}, {"0VOSKN", 'F'}, {"0VOSKS", 'F'}, + {"0VOSKT", 'F'}, {"0VOSKU", 'F'}, {"0VOSKV", 'F'}, - {"0VOSN&", 'F'}, - {"0VOSN(", 'F'}, - {"0VOSN)", 'F'}, - {"0VOSN,", 'F'}, - {"0VOSN1", 'F'}, - {"0VOSNE", 'F'}, - {"0VOSNF", 'F'}, - {"0VOSNO", 'F'}, - {"0VOSNU", 'F'}, {"0VOSO(", 'F'}, {"0VOSO1", 'F'}, {"0VOSOF", 'F'}, {"0VOSOK", 'F'}, {"0VOSON", 'F'}, {"0VOSOS", 'F'}, + {"0VOSOT", 'F'}, {"0VOSOU", 'F'}, {"0VOSOV", 'F'}, {"0VOSU", 'F'}, @@ -9091,6 +9121,12 @@ static const keyword_t sql_keywords[] = { {"0VOSVO", 'F'}, {"0VOSVS", 'F'}, {"0VOSVU", 'F'}, + {"0VOT((", 'F'}, + {"0VOT(1", 'F'}, + {"0VOT(F", 'F'}, + {"0VOT(N", 'F'}, + {"0VOT(S", 'F'}, + {"0VOT(V", 'F'}, {"0VOU((", 'F'}, {"0VOU(E", 'F'}, {"0VOUEK", 'F'}, @@ -9153,6 +9189,7 @@ static const keyword_t sql_keywords[] = { {"0VOVKF", 'F'}, {"0VOVKN", 'F'}, {"0VOVKS", 'F'}, + {"0VOVKT", 'F'}, {"0VOVKU", 'F'}, {"0VOVKV", 'F'}, {"0VOVO(", 'F'}, @@ -9161,6 +9198,7 @@ static const keyword_t sql_keywords[] = { {"0VOVOK", 'F'}, {"0VOVON", 'F'}, {"0VOVOS", 'F'}, + {"0VOVOT", 'F'}, {"0VOVOU", 'F'}, {"0VOVOV", 'F'}, {"0VOVS(", 'F'}, @@ -9286,7 +9324,6 @@ static const keyword_t sql_keywords[] = { {"0VUESC", 'F'}, {"0VUESF", 'F'}, {"0VUESK", 'F'}, - {"0VUESN", 'F'}, {"0VUESO", 'F'}, {"0VUESU", 'F'}, {"0VUESV", 'F'}, @@ -9401,6 +9438,8 @@ static const keyword_t sql_keywords[] = { {"APPLOCK_MODE", 'f'}, {"APPLOCK_TEST", 'f'}, {"APP_NAME", 'f'}, + {"ARMSCII8_BIN", 't'}, + {"ARMSCII8_GENERAL_CI", 't'}, {"ARRAY_AGG", 'f'}, {"ARRAY_CAT", 'f'}, {"ARRAY_DIM", 'f'}, @@ -9415,6 +9454,8 @@ static const keyword_t sql_keywords[] = { {"AS", 'k'}, {"ASC", 'k'}, {"ASCII", 'f'}, + {"ASCII_BIN", 't'}, + {"ASCII_GENERAL_CI", 't'}, {"ASENSITIVE", 'k'}, {"ASIN", 'f'}, {"ASSEMBLYPROPERTY", 'f'}, @@ -9429,10 +9470,12 @@ static const keyword_t sql_keywords[] = { {"BEGIN", 'T'}, {"BENCHMARK", 'f'}, {"BETWEEN", 'o'}, + {"BIG5_BIN", 't'}, + {"BIG5_CHINESE_CI", 't'}, {"BIGINT", 't'}, {"BIGSERIAL", 't'}, {"BIN", 'f'}, - {"BINARY", 'k'}, + {"BINARY", 't'}, {"BINARY_DOUBLE_INFINITY", '1'}, {"BINARY_DOUBLE_NAN", '1'}, {"BINARY_FLOAT_INFINITY", '1'}, @@ -9511,6 +9554,29 @@ static const keyword_t sql_keywords[] = { {"COT", 'f'}, {"COUNT", 'f'}, {"COUNT_BIG", 'k'}, + {"CP1250_BIN", 't'}, + {"CP1250_CROATIAN_CI", 't'}, + {"CP1250_CZECH_CS", 't'}, + {"CP1250_GENERAL_CI", 't'}, + {"CP1250_POLISH_CI", 't'}, + {"CP1251_BIN", 't'}, + {"CP1251_BULGARIAN_CI", 't'}, + {"CP1251_GENERAL_CI", 't'}, + {"CP1251_GENERAL_CS", 't'}, + {"CP1251_UKRAINIAN_CI", 't'}, + {"CP1256_BIN", 't'}, + {"CP1256_GENERAL_CI", 't'}, + {"CP1257_BIN", 't'}, + {"CP1257_GENERAL_CI", 't'}, + {"CP1257_LITHUANIAN_CI", 't'}, + {"CP850_BIN", 't'}, + {"CP850_GENERAL_CI", 't'}, + {"CP852_BIN", 't'}, + {"CP852_GENERAL_CI", 't'}, + {"CP866_BIN", 't'}, + {"CP866_GENERAL_CI", 't'}, + {"CP932_BIN", 't'}, + {"CP932_JAPANESE_CI", 't'}, {"CRC32", 'f'}, {"CREATE", 'E'}, {"CREATE OR", 'n'}, @@ -9587,6 +9653,8 @@ static const keyword_t sql_keywords[] = { {"DB_NAME", 'f'}, {"DCOUNT", 'f'}, {"DEC", 'k'}, + {"DEC8_BIN", 't'}, + {"DEC8_SWEDISH_CI", 't'}, {"DECIMAL", 't'}, {"DECLARE", 'T'}, {"DECODE", 'f'}, @@ -9638,6 +9706,10 @@ static const keyword_t sql_keywords[] = { {"EOMONTH", 'f'}, {"EQV", 'o'}, {"ESCAPED", 'k'}, + {"EUCJPMS_BIN", 't'}, + {"EUCJPMS_JAPANESE_CI", 't'}, + {"EUCKR_BIN", 't'}, + {"EUCKR_KOREAN_CI", 't'}, {"EVENTDATA", 'f'}, {"EXCEPT", 'U'}, {"EXEC", 'T'}, @@ -9691,8 +9763,14 @@ static const keyword_t sql_keywords[] = { {"FULLTEXTCATALOGPROPERTY", 'f'}, {"FULLTEXTSERVICEPROPERTY", 'f'}, {"FUNCTION", 'k'}, + {"GB2312_BIN", 't'}, + {"GB2312_CHINESE_CI", 't'}, + {"GBK_BIN", 't'}, + {"GBK_CHINESE_CI", 't'}, {"GENERATE_SERIES", 'f'}, {"GENERATE_SUBSCRIPTS", 'f'}, + {"GEOSTD8_BIN", 't'}, + {"GEOSTD8_GENERAL_CI", 't'}, {"GETATTR", 'f'}, {"GETDATE", 'f'}, {"GETUTCDATE", 'f'}, @@ -9704,6 +9782,8 @@ static const keyword_t sql_keywords[] = { {"GOTO", 'T'}, {"GRANT", 'k'}, {"GREATEST", 'f'}, + {"GREEK_BIN", 't'}, + {"GREEK_GENERAL_CI", 't'}, {"GROUP", 'n'}, {"GROUP BY", 'B'}, {"GROUPING", 'f'}, @@ -9713,6 +9793,8 @@ static const keyword_t sql_keywords[] = { {"HASHBYTES", 'f'}, {"HAS_PERMS_BY_NAME", 'f'}, {"HAVING", 'B'}, + {"HEBREW_BIN", 't'}, + {"HEBREW_GENERAL_CI", 't'}, {"HEX", 'f'}, {"HIGH_PRIORITY", 'k'}, {"HOST_NAME", 'f'}, @@ -9720,6 +9802,8 @@ static const keyword_t sql_keywords[] = { {"HOUR_MICROSECOND", 'k'}, {"HOUR_MINUTE", 'k'}, {"HOUR_SECOND", 'k'}, + {"HP8_BIN", 't'}, + {"HP8_ENGLISH_CI", 't'}, {"IDENTIFY", 'f'}, {"IDENT_CURRENT", 'f'}, {"IDENT_INCR", 'f'}, @@ -9793,15 +9877,40 @@ static const keyword_t sql_keywords[] = { {"JUSTIFY_DAYS", 'f'}, {"JUSTIFY_HOURS", 'f'}, {"JUSTIFY_INTERVAL", 'f'}, + {"KEYBCS2_BIN", 't'}, + {"KEYBCS2_GENERAL_CI", 't'}, {"KEYS", 'k'}, {"KEY_GUID", 'f'}, {"KEY_ID", 'f'}, {"KILL", 'k'}, + {"KOI8R_BIN", 't'}, + {"KOI8R_GENERAL_CI", 't'}, + {"KOI8U_BIN", 't'}, + {"KOI8U_GENERAL_CI", 't'}, {"LAG", 'f'}, {"LASTVAL", 'f'}, {"LAST_INSERT_ID", 'f'}, {"LAST_INSERT_ROWID", 'f'}, {"LAST_VALUE", 'f'}, + {"LATIN1_BIN", 't'}, + {"LATIN1_DANISH_CI", 't'}, + {"LATIN1_GENERAL_CI", 't'}, + {"LATIN1_GENERAL_CS", 't'}, + {"LATIN1_GERMAN1_CI", 't'}, + {"LATIN1_GERMAN2_CI", 't'}, + {"LATIN1_SPANISH_CI", 't'}, + {"LATIN1_SWEDISH_CI", 't'}, + {"LATIN2_BIN", 't'}, + {"LATIN2_CROATIAN_CI", 't'}, + {"LATIN2_CZECH_CS", 't'}, + {"LATIN2_GENERAL_CI", 't'}, + {"LATIN2_HUNGARIAN_CI", 't'}, + {"LATIN5_BIN", 't'}, + {"LATIN5_TURKISH_CI", 't'}, + {"LATIN7_BIN", 't'}, + {"LATIN7_ESTONIAN_CS", 't'}, + {"LATIN7_GENERAL_CI", 't'}, + {"LATIN7_GENERAL_CS", 't'}, {"LCASE", 'f'}, {"LEAD", 'f'}, {"LEADING", 'k'}, @@ -9843,6 +9952,8 @@ static const keyword_t sql_keywords[] = { {"LOW_PRIORITY", 'k'}, {"LPAD", 'f'}, {"LTRIM", 'f'}, + {"MACCE_BIN", 't'}, + {"MACCE_GENERAL_CI", 't'}, {"MAKEDATE", 'f'}, {"MAKE_SET", 'f'}, {"MASKLEN", 'f'}, @@ -10081,6 +10192,8 @@ static const keyword_t sql_keywords[] = { {"SIMILAR", 'k'}, {"SIMILAR TO", 'o'}, {"SIN", 'f'}, + {"SJIS_BIN", 't'}, + {"SJIS_JAPANESE_CI", 't'}, {"SLEEP", 'f'}, {"SMALLDATETIMEFROMPARTS", 'f'}, {"SMALLINT", 't'}, @@ -10166,6 +10279,8 @@ static const keyword_t sql_keywords[] = { {"TINYBLOB", 'k'}, {"TINYINT", 'k'}, {"TINYTEXT", 'k'}, + {"TIS620_BIN", 't'}, + {"TIS620_THAI_CI", 't'}, {"TODATETIMEOFFSET", 'f'}, {"TOP", 'k'}, {"TOTAL", 'f'}, @@ -10195,7 +10310,32 @@ static const keyword_t sql_keywords[] = { {"TYPE_ID", 'f'}, {"TYPE_NAME", 'f'}, {"UCASE", 'f'}, + {"UCS2_BIN", 't'}, + {"UCS2_CZECH_CI", 't'}, + {"UCS2_DANISH_CI", 't'}, + {"UCS2_ESPERANTO_CI", 't'}, + {"UCS2_ESTONIAN_CI", 't'}, + {"UCS2_GENERAL_CI", 't'}, + {"UCS2_GENERAL_MYSQL500_CI", 't'}, + {"UCS2_HUNGARIAN_CI", 't'}, + {"UCS2_ICELANDIC_CI", 't'}, + {"UCS2_LATVIAN_CI", 't'}, + {"UCS2_LITHUANIAN_CI", 't'}, + {"UCS2_PERSIAN_CI", 't'}, + {"UCS2_POLISH_CI", 't'}, + {"UCS2_ROMANIAN_CI", 't'}, + {"UCS2_ROMAN_CI", 't'}, + {"UCS2_SINHALA_CI", 't'}, + {"UCS2_SLOVAK_CI", 't'}, + {"UCS2_SLOVENIAN_CI", 't'}, + {"UCS2_SPANISH2_CI", 't'}, + {"UCS2_SPANISH_CI", 't'}, + {"UCS2_SWEDISH_CI", 't'}, + {"UCS2_TURKISH_CI", 't'}, + {"UCS2_UNICODE_CI", 't'}, {"UESCAPE", 'o'}, + {"UJIS_BIN", 't'}, + {"UJIS_JAPANESE_CI", 't'}, {"UNCOMPRESS", 'f'}, {"UNCOMPRESS_LENGTH", 'f'}, {"UNDO", 'k'}, @@ -10228,6 +10368,98 @@ static const keyword_t sql_keywords[] = { {"UTC_DATE", 'k'}, {"UTC_TIME", 'k'}, {"UTC_TIMESTAMP", 'k'}, + {"UTF16_BIN", 't'}, + {"UTF16_CZECH_CI", 't'}, + {"UTF16_DANISH_CI", 't'}, + {"UTF16_ESPERANTO_CI", 't'}, + {"UTF16_ESTONIAN_CI", 't'}, + {"UTF16_GENERAL_CI", 't'}, + {"UTF16_GENERAL_MYSQL500_CI", 't'}, + {"UTF16_HUNGARIAN_CI", 't'}, + {"UTF16_ICELANDIC_CI", 't'}, + {"UTF16_LATVIAN_CI", 't'}, + {"UTF16_LITHUANIAN_CI", 't'}, + {"UTF16_PERSIAN_CI", 't'}, + {"UTF16_POLISH_CI", 't'}, + {"UTF16_ROMANIAN_CI", 't'}, + {"UTF16_ROMAN_CI", 't'}, + {"UTF16_SINHALA_CI", 't'}, + {"UTF16_SLOVAK_CI", 't'}, + {"UTF16_SLOVENIAN_CI", 't'}, + {"UTF16_SPANISH2_CI", 't'}, + {"UTF16_SPANISH_CI", 't'}, + {"UTF16_SWEDISH_CI", 't'}, + {"UTF16_TURKISH_CI", 't'}, + {"UTF16_UNICODE_CI", 't'}, + {"UTF32_BIN", 't'}, + {"UTF32_CZECH_CI", 't'}, + {"UTF32_DANISH_CI", 't'}, + {"UTF32_ESPERANTO_CI", 't'}, + {"UTF32_ESTONIAN_CI", 't'}, + {"UTF32_GENERAL_CI", 't'}, + {"UTF32_GENERAL_MYSQL500_CI", 't'}, + {"UTF32_HUNGARIAN_CI", 't'}, + {"UTF32_ICELANDIC_CI", 't'}, + {"UTF32_LATVIAN_CI", 't'}, + {"UTF32_LITHUANIAN_CI", 't'}, + {"UTF32_PERSIAN_CI", 't'}, + {"UTF32_POLISH_CI", 't'}, + {"UTF32_ROMANIAN_CI", 't'}, + {"UTF32_ROMAN_CI", 't'}, + {"UTF32_SINHALA_CI", 't'}, + {"UTF32_SLOVAK_CI", 't'}, + {"UTF32_SLOVENIAN_CI", 't'}, + {"UTF32_SPANISH2_CI", 't'}, + {"UTF32_SPANISH_CI", 't'}, + {"UTF32_SWEDISH_CI", 't'}, + {"UTF32_TURKISH_CI", 't'}, + {"UTF32_UNICODE_CI", 't'}, + {"UTF8MB4_BIN", 't'}, + {"UTF8MB4_CZECH_CI", 't'}, + {"UTF8MB4_DANISH_CI", 't'}, + {"UTF8MB4_ESPERANTO_CI", 't'}, + {"UTF8MB4_ESTONIAN_CI", 't'}, + {"UTF8MB4_GENERAL_CI", 't'}, + {"UTF8MB4_GENERAL_MYSQL500_CI", 't'}, + {"UTF8MB4_HUNGARIAN_CI", 't'}, + {"UTF8MB4_ICELANDIC_CI", 't'}, + {"UTF8MB4_LATVIAN_CI", 't'}, + {"UTF8MB4_LITHUANIAN_CI", 't'}, + {"UTF8MB4_PERSIAN_CI", 't'}, + {"UTF8MB4_POLISH_CI", 't'}, + {"UTF8MB4_ROMANIAN_CI", 't'}, + {"UTF8MB4_ROMAN_CI", 't'}, + {"UTF8MB4_SINHALA_CI", 't'}, + {"UTF8MB4_SLOVAK_CI", 't'}, + {"UTF8MB4_SLOVENIAN_CI", 't'}, + {"UTF8MB4_SPANISH2_CI", 't'}, + {"UTF8MB4_SPANISH_CI", 't'}, + {"UTF8MB4_SWEDISH_CI", 't'}, + {"UTF8MB4_TURKISH_CI", 't'}, + {"UTF8MB4_UNICODE_CI", 't'}, + {"UTF8_BIN", 't'}, + {"UTF8_CZECH_CI", 't'}, + {"UTF8_DANISH_CI", 't'}, + {"UTF8_ESPERANTO_CI", 't'}, + {"UTF8_ESTONIAN_CI", 't'}, + {"UTF8_GENERAL_CI", 't'}, + {"UTF8_GENERAL_MYSQL500_CI", 't'}, + {"UTF8_HUNGARIAN_CI", 't'}, + {"UTF8_ICELANDIC_CI", 't'}, + {"UTF8_LATVIAN_CI", 't'}, + {"UTF8_LITHUANIAN_CI", 't'}, + {"UTF8_PERSIAN_CI", 't'}, + {"UTF8_POLISH_CI", 't'}, + {"UTF8_ROMANIAN_CI", 't'}, + {"UTF8_ROMAN_CI", 't'}, + {"UTF8_SINHALA_CI", 't'}, + {"UTF8_SLOVAK_CI", 't'}, + {"UTF8_SLOVENIAN_CI", 't'}, + {"UTF8_SPANISH2_CI", 't'}, + {"UTF8_SPANISH_CI", 't'}, + {"UTF8_SWEDISH_CI", 't'}, + {"UTF8_TURKISH_CI", 't'}, + {"UTF8_UNICODE_CI", 't'}, {"UTL_HTTP.REQUEST", 'f'}, {"UTL_INADDR.GET_HOST_ADDRESS", 'f'}, {"UTL_INADDR.GET_HOST_NAME", 'f'}, @@ -10323,5 +10555,5 @@ static const keyword_t sql_keywords[] = { {"||", '&'}, {"~*", 'o'}, }; -static const size_t sql_keywords_sz = 10156; +static const size_t sql_keywords_sz = 10388; #endif