1 module hunt.sql.util.FnvHash;
2 
3 // import hunt.String;
4 import hunt.text;
5 
6 public  class FnvHash {
7     public  enum  long BASIC = 0xcbf29ce484222325L;
8     public  enum  long PRIME = 0x100000001b3L;
9 
10     public static  long fnv1a_64(string input) {
11         if (input is null) {
12             return 0;
13         }
14 
15          long hash = BASIC;
16         for (int i = 0; i < input.length; ++i) {
17             char c = charAt(input, i);
18             hash ^= c;
19             hash *= PRIME;
20         }
21 
22         return hash;
23     }
24 
25     public static  long fnv1a_64(string input, int offset, int end) {
26         if (input is null) {
27             return 0;
28         }
29 
30         if (input.length < end) {
31             end = cast(int)input.length;
32         }
33 
34          long hash = BASIC;
35         for (int i = offset; i < end; ++i) {
36             char c = charAt(input, i);
37             hash ^= c;
38             hash *= PRIME;
39         }
40 
41         return hash;
42     }
43 
44     public static  long fnv1a_64(byte[] input, int offset, int end) {
45         if (input is null) {
46             return 0;
47         }
48 
49         if (input.length < end) {
50             end = cast(int)input.length;
51         }
52 
53          long hash = BASIC;
54         for (int i = offset; i < end; ++i) {
55             byte c = input[i];
56             hash ^= c;
57             hash *= PRIME;
58         }
59 
60         return hash;
61     }
62 
63     public static  long fnv1a_64(char[] chars) {
64         if (chars is null) {
65             return 0;
66         }
67          long hash = BASIC;
68         for (int i = 0; i < chars.length; ++i) {
69             char c = chars[i];
70             hash ^= c;
71             hash *= PRIME;
72         }
73 
74         return hash;
75     }
76 
77     /**
78      * lower and normalized and fnv_1a_64
79      * @param name
80      * @return
81      */
82     public static  long hashCode64(string name) @trusted nothrow{
83         if (name is null) {
84             return 0;
85         }
86 
87         bool quote = false;
88 
89         int len = cast(int)name.length;
90         if (len > 2) {
91             char c0 = charAt(name, 0);
92             char c1 = charAt(name, len - 1);
93             if ((c0 == '`' && c1 == '`')
94                     || (c0 == '"' && c1 == '"')
95                     || (c0 == '\'' && c1 == '\'')
96                     || (c0 == '[' && c1 == ']')) {
97                 quote = true;
98             }
99         }
100         if (quote) {
101             return FnvHash.hashCode64(name, 1, len - 1);
102         } else {
103             return FnvHash.hashCode64(name, 0, len);
104         }
105     }
106 
107     public static  long fnv1a_64_lower(string key) {
108          long hashCode = BASIC;
109         for (int i = 0; i < key.length; ++i) {
110             char ch = charAt(key, i);
111 
112             if (ch >= 'A' && ch <= 'Z') {
113                 ch = cast(char) (ch + 32);
114             }
115 
116             hashCode ^= ch;
117             hashCode *= PRIME;
118         }
119 
120         return hashCode;
121     }
122 
123     public static  long fnv1a_64_lower(StringBuilder key) {
124          long hashCode = BASIC;
125         for (int i = 0; i < key.length; ++i) {
126             char ch = key._buffer.data[i];
127 
128             if (ch >= 'A' && ch <= 'Z') {
129                 ch = cast(char) (ch + 32);
130             }
131 
132             hashCode ^= ch;
133             hashCode *= PRIME;
134         }
135 
136         return hashCode;
137     }
138 
139     public static  long fnv1a_64_lower( long basic, StringBuilder key) {
140          long hashCode = basic;
141         for (int i = 0; i < key.length; ++i) {
142             char ch = key._buffer.data[i];
143 
144             if (ch >= 'A' && ch <= 'Z') {
145                 ch = cast(char) (ch + 32);
146             }
147 
148             hashCode ^= ch;
149             hashCode *= PRIME;
150         }
151 
152         return hashCode;
153     }
154 
155     public static  long hashCode64(string key, int offset, int end) @trusted nothrow {
156         long hashCode = BASIC;
157         for (int i = offset; i < end; ++i) {
158             char ch = charAt(key, i);
159 
160             if (ch >= 'A' && ch <= 'Z') {
161                 ch = cast(char) (ch + 32);
162             }
163 
164             hashCode ^= ch;
165             hashCode *= PRIME;
166         }
167 
168         return hashCode;
169     }
170 
171     public static long hashCode64(long basic, string name)@trusted nothrow {
172         if (name is null) {
173             return basic;
174         }
175 
176         bool quote = false;
177 
178         int len = cast(int)name.length;
179         if (len > 2) {
180             char c0 = charAt(name, 0);
181             char c1 = charAt(name, len - 1);
182             if ((c0 == '`' && c1 == '`')
183                     || (c0 == '"' && c1 == '"')
184                     || (c0 == '\'' && c1 == '\'')
185                     || (c0 == '[' && c1 == ']')) {
186                 quote = true;
187             }
188         }
189         if (quote) {
190             return FnvHash.hashCode64(basic, name, 1, len - 1);
191         } else {
192             return FnvHash.hashCode64(basic, name, 0, len);
193         }
194     }
195 
196     public static long hashCode64(long basic, string key, int offset, int end)@trusted nothrow {
197         long hashCode = basic;
198         for (int i = offset; i < end; ++i) {
199             char ch = charAt(key, i);
200 
201             if (ch >= 'A' && ch <= 'Z') {
202                 ch = cast(char) (ch + 32);
203             }
204 
205             hashCode ^= ch;
206             hashCode *= PRIME;
207         }
208 
209         return hashCode;
210     }
211 
212     public static long fnv_32_lower(string key) {
213         long hashCode = 0x811c9dc5;
214         for (int i = 0; i < key.length; ++i) {
215             char ch = charAt(key, i);
216             if (ch == '_' || ch == '-') {
217                 continue;
218             }
219 
220             if (ch >= 'A' && ch <= 'Z') {
221                 ch = cast(char) (ch + 32);
222             }
223 
224             hashCode ^= ch;
225             hashCode *= 0x01000193;
226         }
227 
228         return hashCode;
229     }
230 
231     public static long[] fnv1a_64_lower(string[] strings, bool sorted) {
232         long[] hashCodes = new long[strings.length];
233         for (int i = 0; i < strings.length; i++) {
234             hashCodes[i] = fnv1a_64_lower(strings[i]);
235         }
236         if (sorted) {
237             import std.algorithm.sorting;
238             sort!("a < b")(hashCodes);
239         }
240         return hashCodes;
241     }
242 
243     /**
244      * normalized and lower and fnv1a_64_hash
245      * @param owner
246      * @param name
247      * @return
248      */
249     public static  long hashCode64(string owner, string name)@trusted nothrow {
250          long hashCode = BASIC;
251 
252         if (owner !is null) {
253             string item = owner;
254 
255             bool quote = false;
256 
257             int len = cast(int)item.length;
258             if (len > 2) {
259                 char c0 = charAt(item, 0);
260                 char c1 = charAt(item, len - 1);
261                 if ((c0 == '`' && c1 == '`')
262                         || (c0 == '"' && c1 == '"')
263                         || (c0 == '\'' && c1 == '\'')
264                         || (c0 == '[' && c1 == ']')) {
265                     quote = true;
266                 }
267             }
268 
269             int start = quote ? 1 : 0;
270             int end   = quote ? len - 1 : len;
271             for (int j = start; j < end; ++j) {
272                 char ch = charAt(item, j);
273 
274                 if (ch >= 'A' && ch <= 'Z') {
275                     ch = cast(char) (ch + 32);
276                 }
277 
278                 hashCode ^= ch;
279                 hashCode *= PRIME;
280             }
281 
282             hashCode ^= '.';
283             hashCode *= PRIME;
284         }
285 
286 
287         if (name !is null) {
288             string item = name;
289 
290             bool quote = false;
291 
292             int len = cast(int)item.length;
293             if (len > 2) {
294                 char c0 = charAt(item, 0);
295                 char c1 = charAt(item, len - 1);
296                 if ((c0 == '`' && c1 == '`')
297                         || (c0 == '"' && c1 == '"')
298                         || (c0 == '\'' && c1 == '\'')
299                         || (c0 == '[' && c1 == ']')) {
300                     quote = true;
301                 }
302             }
303 
304             int start = quote ? 1 : 0;
305             int end   = quote ? len - 1 : len;
306             for (int j = start; j < end; ++j) {
307                 char ch = charAt(item, j);
308 
309                 if (ch >= 'A' && ch <= 'Z') {
310                     ch = cast(char) (ch + 32);
311                 }
312 
313                 hashCode ^= ch;
314                 hashCode *= PRIME;
315             }
316         }
317 
318         return hashCode;
319     }
320 
321     public static interface Constants {
322         enum long HIGH_PRIORITY = fnv1a_64_lower("HIGH_PRIORITY");
323         enum long DISTINCTROW = fnv1a_64_lower("DISTINCTROW");
324         enum long STRAIGHT_JOIN = fnv1a_64_lower("STRAIGHT_JOIN");
325         enum long SQL_SMALL_RESULT = fnv1a_64_lower("SQL_SMALL_RESULT");
326         enum long SQL_BIG_RESULT = fnv1a_64_lower("SQL_BIG_RESULT");
327         enum long SQL_BUFFER_RESULT = fnv1a_64_lower("SQL_BUFFER_RESULT");
328         enum long CACHE = fnv1a_64_lower("CACHE");
329         enum long SQL_CACHE = fnv1a_64_lower("SQL_CACHE");
330         enum long SQL_NO_CACHE = fnv1a_64_lower("SQL_NO_CACHE");
331         enum long SQL_CALC_FOUND_ROWS = fnv1a_64_lower("SQL_CALC_FOUND_ROWS");
332         enum long OUTFILE = fnv1a_64_lower("OUTFILE");
333         enum long SETS = fnv1a_64_lower("SETS");
334         enum long REGEXP = fnv1a_64_lower("REGEXP");
335         enum long RLIKE = fnv1a_64_lower("RLIKE");
336         enum long USING = fnv1a_64_lower("USING");
337         enum long IGNORE = fnv1a_64_lower("IGNORE");
338         enum long FORCE = fnv1a_64_lower("FORCE");
339         enum long CROSS = fnv1a_64_lower("CROSS");
340         enum long NATURAL = fnv1a_64_lower("NATURAL");
341         enum long APPLY = fnv1a_64_lower("APPLY");
342         enum long CONNECT = fnv1a_64_lower("CONNECT");
343         enum long START = fnv1a_64_lower("START");
344         enum long BTREE = fnv1a_64_lower("BTREE");
345         enum long HASH = fnv1a_64_lower("HASH");
346         enum long NO_WAIT = fnv1a_64_lower("NO_WAIT");
347         enum long WAIT = fnv1a_64_lower("WAIT");
348         enum long NOWAIT = fnv1a_64_lower("NOWAIT");
349         enum long ERRORS = fnv1a_64_lower("ERRORS");
350         enum long VALUE = fnv1a_64_lower("VALUE");
351         enum long NEXT = fnv1a_64_lower("NEXT");
352         enum long NEXTVAL = fnv1a_64_lower("NEXTVAL");
353         enum long CURRVAL = fnv1a_64_lower("CURRVAL");
354         enum long PREVVAL = fnv1a_64_lower("PREVVAL");
355         enum long PREVIOUS = fnv1a_64_lower("PREVIOUS");
356         enum long LOW_PRIORITY = fnv1a_64_lower("LOW_PRIORITY");
357         enum long COMMIT_ON_SUCCESS = fnv1a_64_lower("COMMIT_ON_SUCCESS");
358         enum long ROLLBACK_ON_FAIL = fnv1a_64_lower("ROLLBACK_ON_FAIL");
359         enum long QUEUE_ON_PK = fnv1a_64_lower("QUEUE_ON_PK");
360         enum long TARGET_AFFECT_ROW = fnv1a_64_lower("TARGET_AFFECT_ROW");
361         enum long COLLATE = fnv1a_64_lower("COLLATE");
362         enum long BOOLEAN = fnv1a_64_lower("bool");
363         enum long SMALLINT = fnv1a_64_lower("SMALLINT");
364         enum long CHARSET = fnv1a_64_lower("CHARSET");
365         enum long SEMI = fnv1a_64_lower("SEMI");
366         enum long ANTI = fnv1a_64_lower("ANTI");
367         enum long PRIOR = fnv1a_64_lower("PRIOR");
368         enum long NOCYCLE = fnv1a_64_lower("NOCYCLE");
369         enum long CONNECT_BY_ROOT = fnv1a_64_lower("CONNECT_BY_ROOT");
370 
371         enum long DATE = fnv1a_64_lower("DATE");
372         enum long DATETIME = fnv1a_64_lower("DATETIME");
373         enum long TIME = fnv1a_64_lower("TIME");
374         enum long TIMESTAMP = fnv1a_64_lower("TIMESTAMP");
375         enum long CLOB = fnv1a_64_lower("CLOB");
376         enum long NCLOB = fnv1a_64_lower("NCLOB");
377         enum long BLOB = fnv1a_64_lower("BLOB");
378         enum long XMLTYPE = fnv1a_64_lower("XMLTYPE");
379         enum long BFILE = fnv1a_64_lower("BFILE");
380         enum long UROWID = fnv1a_64_lower("UROWID");
381         enum long ROWID = fnv1a_64_lower("ROWID");
382         enum long INTEGER = fnv1a_64_lower("INTEGER");
383         enum long INT = fnv1a_64_lower("INT");
384         enum long BINARY_FLOAT = fnv1a_64_lower("BINARY_FLOAT");
385         enum long BINARY_DOUBLE = fnv1a_64_lower("BINARY_DOUBLE");
386         enum long FLOAT = fnv1a_64_lower("FLOAT");
387         enum long REAL = fnv1a_64_lower("REAL");
388         enum long NUMBER = fnv1a_64_lower("NUMBER");
389         enum long DEC = fnv1a_64_lower("DEC");
390         enum long DECIMAL = fnv1a_64_lower("DECIMAL");
391 
392         enum long CURRENT = fnv1a_64_lower("CURRENT");
393         enum long COUNT = fnv1a_64_lower("COUNT");
394         enum long ROW_NUMBER = fnv1a_64_lower("ROW_NUMBER");
395         enum long WM_CONCAT = fnv1a_64_lower("WM_CONCAT");
396         enum long AVG = fnv1a_64_lower("AVG");
397         enum long MAX = fnv1a_64_lower("MAX");
398         enum long MIN = fnv1a_64_lower("MIN");
399         enum long STDDEV = fnv1a_64_lower("STDDEV");
400         enum long SUM = fnv1a_64_lower("SUM");
401         enum long GROUP_CONCAT = fnv1a_64_lower("GROUP_CONCAT");
402         enum long DEDUPLICATION = fnv1a_64_lower("DEDUPLICATION");
403         enum long CONVERT = fnv1a_64_lower("CONVERT");
404         enum long CHAR = fnv1a_64_lower("CHAR");
405         enum long VARCHAR = fnv1a_64_lower("VARCHAR");
406         enum long VARCHAR2 = fnv1a_64_lower("VARCHAR2");
407         enum long NCHAR = fnv1a_64_lower("NCHAR");
408         enum long NVARCHAR = fnv1a_64_lower("NVARCHAR");
409         enum long NVARCHAR2 = fnv1a_64_lower("NVARCHAR2");
410         enum long NCHAR_VARYING = fnv1a_64_lower("nchar varying");
411         enum long TINYTEXT = fnv1a_64_lower("TINYTEXT");
412         enum long TEXT = fnv1a_64_lower("TEXT");
413         enum long MEDIUMTEXT = fnv1a_64_lower("MEDIUMTEXT");
414         enum long LONGTEXT = fnv1a_64_lower("LONGTEXT");
415         enum long TRIM = fnv1a_64_lower("TRIM");
416         enum long LEADING = fnv1a_64_lower("LEADING");
417         enum long BOTH = fnv1a_64_lower("BOTH");
418         enum long TRAILING = fnv1a_64_lower("TRAILING");
419         enum long MOD = fnv1a_64_lower("MOD");
420         enum long MATCH = fnv1a_64_lower("MATCH");
421         enum long EXTRACT = fnv1a_64_lower("EXTRACT");
422         enum long POSITION = fnv1a_64_lower("POSITION");
423         enum long DUAL = fnv1a_64_lower("DUAL");
424         enum long LEVEL = fnv1a_64_lower("LEVEL");
425         enum long CONNECT_BY_ISCYCLE = fnv1a_64_lower("CONNECT_BY_ISCYCLE");
426         enum long CURRENT_TIMESTAMP = fnv1a_64_lower("CURRENT_TIMESTAMP");
427         enum long CURRENT_USER = fnv1a_64_lower("CURRENT_USER");
428         enum long FALSE = fnv1a_64_lower("FALSE");
429         enum long TRUE = fnv1a_64_lower("TRUE");
430         enum long SET = fnv1a_64_lower("SET");
431         enum long LESS = fnv1a_64_lower("LESS");
432         enum long MAXVALUE = fnv1a_64_lower("MAXVALUE");
433         enum long OFFSET = fnv1a_64_lower("OFFSET");
434         enum long RAW = fnv1a_64_lower("RAW");
435         enum long LONG_RAW = fnv1a_64_lower("LONG RAW");
436         enum long LONG = fnv1a_64_lower("LONG");
437         enum long ROWNUM = fnv1a_64_lower("ROWNUM");
438         enum long SYSDATE = fnv1a_64_lower("SYSDATE");
439         enum long SQLCODE = fnv1a_64_lower("SQLCODE");
440         enum long PRECISION = fnv1a_64_lower("PRECISION");
441         enum long DOUBLE = fnv1a_64_lower("DOUBLE");
442         enum long DOUBLE_PRECISION = fnv1a_64_lower("DOUBLE PRECISION");
443         enum long WITHOUT = fnv1a_64_lower("WITHOUT");
444 
445         enum long DEFINER = fnv1a_64_lower("DEFINER");
446         enum long EVENT = fnv1a_64_lower("EVENT");
447         enum long DETERMINISTIC = fnv1a_64_lower("DETERMINISTIC");
448         enum long CONTAINS = fnv1a_64_lower("CONTAINS");
449         enum long SQL = fnv1a_64_lower("SQL");
450         enum long CALL = fnv1a_64_lower("CALL");
451         enum long CHARACTER = fnv1a_64_lower("CHARACTER");
452 
453         enum long VALIDATE = fnv1a_64_lower("VALIDATE");
454         enum long NOVALIDATE = fnv1a_64_lower("NOVALIDATE");
455         enum long SIMILAR = fnv1a_64_lower("SIMILAR");
456         enum long CASCADE = fnv1a_64_lower("CASCADE");
457         enum long RELY = fnv1a_64_lower("RELY");
458         enum long NORELY = fnv1a_64_lower("NORELY");
459         enum long ROW = fnv1a_64_lower("ROW");
460         enum long ROWS = fnv1a_64_lower("ROWS");
461         enum long RANGE = fnv1a_64_lower("RANGE");
462         enum long PRECEDING = fnv1a_64_lower("PRECEDING");
463         enum long FOLLOWING = fnv1a_64_lower("FOLLOWING");
464         enum long UNBOUNDED = fnv1a_64_lower("UNBOUNDED");
465         enum long SIBLINGS = fnv1a_64_lower("SIBLINGS");
466         enum long RESPECT = fnv1a_64_lower("RESPECT");
467         enum long NULLS = fnv1a_64_lower("NULLS");
468         enum long FIRST = fnv1a_64_lower("FIRST");
469         enum long LAST = fnv1a_64_lower("LAST");
470         enum long AUTO_INCREMENT = fnv1a_64_lower("AUTO_INCREMENT");
471         enum long STORAGE = fnv1a_64_lower("STORAGE");
472         enum long STORED = fnv1a_64_lower("STORED");
473         enum long VIRTUAL = fnv1a_64_lower("VIRTUAL");
474         enum long UNSIGNED = fnv1a_64_lower("UNSIGNED");
475         enum long ZEROFILL = fnv1a_64_lower("ZEROFILL");
476         enum long GLOBAL = fnv1a_64_lower("GLOBAL");
477         enum long SESSION = fnv1a_64_lower("SESSION");
478         enum long NAMES = fnv1a_64_lower("NAMES");
479         enum long PARTIAL = fnv1a_64_lower("PARTIAL");
480         enum long SIMPLE = fnv1a_64_lower("SIMPLE");
481         enum long RESTRICT = fnv1a_64_lower("RESTRICT");
482         enum long ON = fnv1a_64_lower("ON");
483         enum long ACTION = fnv1a_64_lower("ACTION");
484         enum long SEPARATOR = fnv1a_64_lower("SEPARATOR");
485         enum long DATA = fnv1a_64_lower("DATA");
486         enum long MAX_ROWS = fnv1a_64_lower("MAX_ROWS");
487         enum long MIN_ROWS = fnv1a_64_lower("MIN_ROWS");
488         enum long ENGINE = fnv1a_64_lower("ENGINE");
489         enum long SKIP = fnv1a_64_lower("SKIP");
490         enum long RECURSIVE = fnv1a_64_lower("RECURSIVE");
491         enum long ROLLUP = fnv1a_64_lower("ROLLUP");
492         enum long CUBE = fnv1a_64_lower("CUBE");
493 
494         enum long YEAR = fnv1a_64_lower("YEAR");
495         enum long MONTH = fnv1a_64_lower("MONTH");
496         enum long DAY = fnv1a_64_lower("DAY");
497         enum long HOUR = fnv1a_64_lower("HOUR");
498         enum long MINUTE = fnv1a_64_lower("MINUTE");
499         enum long SECOND = fnv1a_64_lower("SECOND");
500 
501         enum long SECONDS = fnv1a_64_lower("SECONDS");
502         enum long MINUTES = fnv1a_64_lower("MINUTES");
503         enum long HOURS = fnv1a_64_lower("HOURS");
504         enum long DAYS = fnv1a_64_lower("DAYS");
505         enum long MONTHS = fnv1a_64_lower("MONTHS");
506         enum long YEARS = fnv1a_64_lower("YEARS");
507 
508         enum long BEFORE = fnv1a_64_lower("BEFORE");
509         enum long AFTER = fnv1a_64_lower("AFTER");
510         enum long INSTEAD = fnv1a_64_lower("INSTEAD");
511 
512         enum long DEFERRABLE = fnv1a_64_lower("DEFERRABLE");
513         enum long AS = fnv1a_64_lower("AS");
514         enum long DELAYED = fnv1a_64_lower("DELAYED");
515         enum long GO = fnv1a_64_lower("GO");
516         enum long WAITFOR = fnv1a_64_lower("WAITFOR");
517         enum long EXEC = fnv1a_64_lower("EXEC");
518         enum long EXECUTE = fnv1a_64_lower("EXECUTE");
519 
520         enum long SOURCE = fnv1a_64_lower("SOURCE");
521 
522         enum long STAR = fnv1a_64_lower("*");
523 
524         enum long TO_CHAR = fnv1a_64_lower("TO_CHAR");
525         enum long SYS_GUID = fnv1a_64_lower("SYS_GUID");
526 
527         enum long STATISTICS = fnv1a_64_lower("STATISTICS");
528         enum long TRANSACTION = fnv1a_64_lower("TRANSACTION");
529         enum long OFF = fnv1a_64_lower("OFF");
530         enum long IDENTITY_INSERT = fnv1a_64_lower("IDENTITY_INSERT");
531         enum long PASSWORD = fnv1a_64_lower("PASSWORD");
532         enum long SOCKET = fnv1a_64_lower("SOCKET");
533         enum long OWNER = fnv1a_64_lower("OWNER");
534         enum long PORT = fnv1a_64_lower("PORT");
535         enum long PUBLIC = fnv1a_64_lower("PUBLIC");
536         enum long SYNONYM = fnv1a_64_lower("SYNONYM");
537         enum long MATERIALIZED = fnv1a_64_lower("MATERIALIZED");
538         enum long BITMAP = fnv1a_64_lower("BITMAP");
539         enum long PACKAGE = fnv1a_64_lower("PACKAGE");
540         enum long TRUNC = fnv1a_64_lower("TRUNC");
541         enum long SYSTIMESTAMP = fnv1a_64_lower("SYSTIMESTAMP");
542         enum long TYPE = fnv1a_64_lower("TYPE");
543         enum long RECORD = fnv1a_64_lower("RECORD");
544         enum long MAP = fnv1a_64_lower("MAP");
545         enum long ONLY = fnv1a_64_lower("ONLY");
546         enum long MEMBER = fnv1a_64_lower("MEMBER");
547         enum long STATIC = fnv1a_64_lower("STATIC");
548         enum long FINAL = fnv1a_64_lower("FINAL");
549         enum long INSTANTIABLE = fnv1a_64_lower("INSTANTIABLE");
550         enum long UNSUPPORTED = fnv1a_64_lower("UNSUPPORTED");
551         enum long VARRAY = fnv1a_64_lower("VARRAY");
552         enum long WRAPPED = fnv1a_64_lower("WRAPPED");
553         enum long AUTHID = fnv1a_64_lower("AUTHID");
554         enum long UNDER = fnv1a_64_lower("UNDER");
555         enum long USERENV = fnv1a_64_lower("USERENV");
556         enum long NUMTODSINTERVAL = fnv1a_64_lower("NUMTODSINTERVAL");
557 
558         enum long LATERAL = fnv1a_64_lower("LATERAL");
559         enum long NONE = fnv1a_64_lower("NONE");
560         enum long PARTITIONING = fnv1a_64_lower("PARTITIONING");
561         enum long VALIDPROC = fnv1a_64_lower("VALIDPROC");
562         enum long COMPRESS = fnv1a_64_lower("COMPRESS");
563         enum long YES = fnv1a_64_lower("YES");
564         enum long WMSYS = fnv1a_64_lower("WMSYS");
565 
566         enum long DEPTH = fnv1a_64_lower("DEPTH");
567         enum long BREADTH = fnv1a_64_lower("BREADTH");
568 
569         enum long SCHEDULE = fnv1a_64_lower("SCHEDULE");
570         enum long COMPLETION = fnv1a_64_lower("COMPLETION");
571         enum long RENAME = fnv1a_64_lower("RENAME");
572         enum long DUMP = fnv1a_64_lower("DUMP");
573         enum long AT = fnv1a_64_lower("AT");
574         enum long LANGUAGE = fnv1a_64_lower("LANGUAGE");
575         enum long LOGFILE = fnv1a_64_lower("LOGFILE");
576         enum long INITIAL_SIZE = fnv1a_64_lower("INITIAL_SIZE");
577         enum long MAX_SIZE = fnv1a_64_lower("MAX_SIZE");
578         enum long NODEGROUP = fnv1a_64_lower("NODEGROUP");
579         enum long EXTENT_SIZE = fnv1a_64_lower("EXTENT_SIZE");
580         enum long AUTOEXTEND_SIZE = fnv1a_64_lower("AUTOEXTEND_SIZE");
581         enum long FILE_BLOCK_SIZE = fnv1a_64_lower("FILE_BLOCK_SIZE");
582         enum long SERVER = fnv1a_64_lower("SERVER");
583         enum long HOST = fnv1a_64_lower("HOST");
584         enum long ADD = fnv1a_64_lower("ADD");
585         enum long ALGORITHM = fnv1a_64_lower("ALGORITHM");
586         enum long EVERY = fnv1a_64_lower("EVERY");
587         enum long STARTS = fnv1a_64_lower("STARTS");
588         enum long ENDS = fnv1a_64_lower("ENDS");
589         enum long BINARY = fnv1a_64_lower("BINARY");
590         enum long ISOPEN = fnv1a_64_lower("ISOPEN");
591         enum long CONFLICT = fnv1a_64_lower("CONFLICT");
592         enum long NOTHING = fnv1a_64_lower("NOTHING");
593         enum long COMMIT = fnv1a_64_lower("COMMIT");
594 
595         enum long RS = fnv1a_64_lower("RS");
596         enum long RR = fnv1a_64_lower("RR");
597         enum long CS = fnv1a_64_lower("CS");
598         enum long UR = fnv1a_64_lower("UR");
599 
600         enum long INT4 = fnv1a_64_lower("INT4");
601         enum long VARBIT = fnv1a_64_lower("VARBIT");
602         enum long CLUSTERED = fnv1a_64_lower("CLUSTERED");
603         enum long SORTED = fnv1a_64_lower("SORTED");
604         enum long LIFECYCLE = fnv1a_64_lower("LIFECYCLE");
605         enum long PARTITIONS = fnv1a_64_lower("PARTITIONS");
606         enum long ARRAY = fnv1a_64_lower("ARRAY");
607         enum long STRUCT = fnv1a_64_lower("STRUCT");
608 
609         enum long ROLLBACK = fnv1a_64_lower("ROLLBACK");
610         enum long SAVEPOINT = fnv1a_64_lower("SAVEPOINT");
611         enum long RELEASE = fnv1a_64_lower("RELEASE");
612         enum long MERGE = fnv1a_64_lower("MERGE");
613         enum long INHERITS = fnv1a_64_lower("INHERITS");
614         enum long DELIMITED = fnv1a_64_lower("DELIMITED");
615         enum long TABLES = fnv1a_64_lower("TABLES");
616         enum long PARALLEL = fnv1a_64_lower("PARALLEL");
617         enum long BUILD = fnv1a_64_lower("BUILD");
618         enum long NOCACHE = fnv1a_64_lower("NOCACHE");
619         enum long NOPARALLEL = fnv1a_64_lower("NOPARALLEL");
620         enum long EXIST = fnv1a_64_lower("EXIST");
621 
622         enum long TBLPROPERTIES = fnv1a_64_lower("TBLPROPERTIES");
623         enum long FULLTEXT = fnv1a_64_lower("FULLTEXT");
624         enum long SPATIAL = fnv1a_64_lower("SPATIAL");
625         enum long NO = fnv1a_64_lower("NO");
626         enum long PATH = fnv1a_64_lower("PATH");
627         enum long COMPRESSION = fnv1a_64_lower("COMPRESSION");
628         enum long KEY_BLOCK_SIZE = fnv1a_64_lower("KEY_BLOCK_SIZE");
629         enum long CHECKSUM = fnv1a_64_lower("CHECKSUM");
630         enum long ROUTINE = fnv1a_64_lower("ROUTINE");
631         enum long DATE_FORMAT = fnv1a_64_lower("DATE_FORMAT");
632         enum long DBPARTITION = fnv1a_64_lower("DBPARTITION");
633         enum long TBPARTITION = fnv1a_64_lower("TBPARTITION");
634         enum long TBPARTITIONS = fnv1a_64_lower("TBPARTITIONS");
635         enum long SOUNDS = fnv1a_64_lower("SOUNDS");
636         enum long WINDOW = fnv1a_64_lower("WINDOW");
637         enum long GENERATED = fnv1a_64_lower("GENERATED");
638         enum long ALWAYS = fnv1a_64_lower("ALWAYS");
639         enum long INCREMENT = fnv1a_64_lower("INCREMENT");
640 
641         enum long OVERWRITE = fnv1a_64_lower("OVERWRITE");
642         enum long FILTER = fnv1a_64_lower("FILTER");
643     }
644 }